diff --git a/asm/include/main_020022C4.inc b/asm/include/main_020022C4.inc index ecb746f6..bb508b53 100644 --- a/asm/include/main_020022C4.inc +++ b/asm/include/main_020022C4.inc @@ -1,45 +1,2 @@ #pragma once -.public _02092464 -.public _020AEF30 -.public _020AEF58 -.public _0229AFC0 -.public _0229AFCC -.public _0229AFE4 -.public _0229B004 -.public _0229B0E0 -.public _0229B0E8 -.public _0229B0F0 -.public _0229B0F8 -.public _0229B110 -.public _0229B114 -.public Card_LockBackup -.public Card_LockRom -.public Card_SetPulledOutCallback -.public Card_UnlockBackup -.public Card_UnlockRom -.public CardPullOut -.public Debug_Print0 -.public GX_DispOff -.public InitMemAllocTable -.public MemAlloc -.public OS_CreateThread -.public OS_DisableScheduler -.public OS_GetLockID -.public OS_GetThreadPriority -.public OS_InitMessageQueue -.public OS_InitMutex -.public OS_LockMutex -.public OS_ReceiveMessage -.public OS_ResetSystem -.public OS_SendMessage -.public OS_SetThreadPriority -.public OS_SleepThread -.public OS_SleepThreadDirect -.public OS_TryLockMutex -.public OS_UnlockMutex -.public OS_WakeupThreadDirect -.public OSi_ThreadInfo .public Rand16Bit -.public sub_02003AD0 -.public sub_020059A8 -.public WaitForInterrupt diff --git a/asm/include/main_020024E4.inc b/asm/include/main_020024E4.inc new file mode 100644 index 00000000..0b4c9e9d --- /dev/null +++ b/asm/include/main_020024E4.inc @@ -0,0 +1,15 @@ +#pragma once +.public OS_CreateThread +.public OS_GetThreadPriority +.public OS_InitMutex +.public OS_LockMutex +.public OS_SetThreadPriority +.public OS_SleepThread +.public OS_SleepThreadDirect +.public OS_UnlockMutex +.public OSi_ThreadInfo +.public _020AEF30 +.public _0229AFC0 +.public _0229AFCC +.public _0229AFE4 +.public _0229B004 diff --git a/asm/include/main_02002910.inc b/asm/include/main_02002910.inc new file mode 100644 index 00000000..01802904 --- /dev/null +++ b/asm/include/main_02002910.inc @@ -0,0 +1,32 @@ +#pragma once +.public Card_LockBackup +.public Card_LockRom +.public Card_UnlockBackup +.public Card_UnlockRom +.public InitMemAllocTable +.public MemAlloc +.public OS_GetLockID +.public OS_GetThreadPriority +.public OS_InitMessageQueue +.public OS_InitMutex +.public OS_LockMutex +.public OS_ReceiveMessage +.public OS_SendMessage +.public OS_SetThreadPriority +.public OS_TryLockMutex +.public OS_UnlockMutex +.public OSi_ThreadInfo +.public _020AEF58 +.public _0229B0E8 +.public _0229B0F0 +.public _0229B0F8 +.public _0229B110 +.public _0229B114 +.public sub_02002580 +.public sub_02002670 +.public sub_020026B8 +.public sub_020027F8 +.public sub_020028B0 +.public sub_020028F8 +.public sub_02002904 +.public sub_020059A8 diff --git a/asm/include/main_02004FF8.inc b/asm/include/main_02004FF8.inc index d12f2680..accf419e 100644 --- a/asm/include/main_02004FF8.inc +++ b/asm/include/main_02004FF8.inc @@ -9,6 +9,7 @@ .public FS_OpenFile .public FS_ReadFile .public FS_SeekFile +.public FileRom_StopDataTransfer .public GXS_BeginLoadBGExtPltt .public GXS_EndLoadBGExtPltt .public GX_BeginLoadBGExtPltt @@ -89,7 +90,6 @@ .public sub_02002C40 .public sub_02002CAC .public sub_02002CB4 -.public sub_02002E10 .public sub_02002E98 .public sub_0200302C .public sub_020030FC diff --git a/asm/include/main_02009648.inc b/asm/include/main_02009648.inc index c7e47fdb..360ff530 100644 --- a/asm/include/main_02009648.inc +++ b/asm/include/main_02009648.inc @@ -1,6 +1,7 @@ #pragma once .public G2x_SetBlendAlpha_ .public G3X_SetClearColor +.public GXS_SetGraphicsMode .public GX_SetBankForBG .public GX_SetBankForBGExtPltt .public GX_SetBankForOBJ @@ -11,7 +12,6 @@ .public GX_SetBankForTex .public GX_SetBankForTexPltt .public GX_SetGraphicsMode -.public GXS_SetGraphicsMode .public sub_02009120 .public sub_020091CC .public sub_020091F8 @@ -20,3 +20,9 @@ .public sub_020092F4 .public sub_02009358 .public sub_02009514 +.public sub_02009BE8 +.public sub_02009C10 +.public sub_02009CA8 +.public sub_02009CD0 +.public sub_02009CF8 +.public sub_02009D20 diff --git a/asm/include/main_0200C5B4.inc b/asm/include/main_0200C5B4.inc index 39a20620..3b60fe27 100644 --- a/asm/include/main_0200C5B4.inc +++ b/asm/include/main_0200C5B4.inc @@ -1,26 +1,12 @@ #pragma once -.public _02094C0C -.public AllInventoriesZInit -.public AllKecleonShopsZInit .public AllocateTemp1024ByteBufferFromPool -.public BAG_ITEMS -.public BAG_ITEMS_PTR_MIRROR -.public DrawTextInWindow .public DUNGEON_RETURN_STATUS_TABLE +.public DrawTextInWindow .public GetDungeonResultMsg -.public GetItemCategoryVeneer .public GetStringFromFileVeneer .public GetWindow -.public LoadItemPspi2n .public MaybeGetColoredFormattedItemName .public PreprocessString -.public RescueInventoryZInit -.public SetActiveInventoryToMain -.public SpecialEpisodeInventoryZInit -.public SpecialEpisodeKecleonShopZInit .public StringFromId -.public sub_0200FD38 -.public sub_0200FD3C -.public sub_02010590 +.public _02094C0C .public sub_020265A8 -.public WipeRecycleShopRecords diff --git a/asm/include/main_02017B70.inc b/asm/include/main_02017B70.inc deleted file mode 100644 index 4cc2db71..00000000 --- a/asm/include/main_02017B70.inc +++ /dev/null @@ -1,15 +0,0 @@ -#pragma once -.public PlayMeById -.public PlaySeByIdVolume -.public StopBgmCommand -.public sub_02017F28 -.public sub_02017F64 -.public sub_02017FBC -.public sub_02018024 -.public sub_020180A0 -.public sub_02018118 -.public sub_02018158 -.public sub_02018194 -.public sub_020181E0 -.public sub_02018278 -.public sub_020182AC diff --git a/asm/include/main_02017C90.inc b/asm/include/main_02017D20.inc similarity index 98% rename from asm/include/main_02017C90.inc rename to asm/include/main_02017D20.inc index a3f5ef3d..74a5411c 100644 --- a/asm/include/main_02017C90.inc +++ b/asm/include/main_02017D20.inc @@ -62,7 +62,6 @@ .public Snd_LockChannel .public Snd_UnlockChannel .public ZInit8 -.public _0209915C .public _0209916C .public _0209918C .public _020991C8 @@ -124,7 +123,6 @@ .public _020AFB6C .public _020AFC28 .public _020AFC30 -.public _022A4BE8 .public _022A4BEC .public _022A4C00 .public _022A4C28 diff --git a/asm/include/main_0201BAC8.inc b/asm/include/main_0201BAC8.inc index 0afc2bee..2813e8ca 100644 --- a/asm/include/main_0201BAC8.inc +++ b/asm/include/main_0201BAC8.inc @@ -1,25 +1,13 @@ #pragma once -.public CopyAttributesToOamWrapper -.public GroupOamAttributesWrapper .public MemAlloc .public MemZero .public OBJ_GRAPHICS_CONTROLS_PTR .public _020AFC28 -.public sub_0200302C -.public sub_020030FC .public sub_0201AB90 .public sub_0201AC10 .public sub_0201AC20 .public sub_0201AD44 -.public sub_0201AD7C -.public sub_0201AD84 -.public sub_0201AEB4 -.public sub_0201AECC .public sub_0201AEF0 .public sub_0201AF18 .public sub_0201AF64 -.public sub_0201AFB8 -.public sub_0201B004 .public sub_0201B198 -.public sub_0201B2A0 -.public sub_0201B2DC diff --git a/asm/include/main_0202598C.inc b/asm/include/main_0202598C.inc index 1986249d..031cf83b 100644 --- a/asm/include/main_0202598C.inc +++ b/asm/include/main_0202598C.inc @@ -1,4 +1,22 @@ #pragma once +.public DrawChar +.public FileRom_HandleRead +.public FileRom_HandleSeek +.public FileRom_InitDataTransfer +.public FileRom_StopDataTransfer +.public GetColorCodePaletteOffset +.public GetHeldButtons +.public GetPressedButtons +.public GetReleasedStylus +.public GetWindow +.public GetWindowRectangle +.public HandleSir0Translation +.public IsTouchScreenNotOff +.public LoadFileFromRom +.public RandInt +.public TBL_TALK_GROUP_STRING_ID_START +.public UnloadFile +.public UpdateWindow .public _0209AB60 .public _0209AB9C .public _0209ABF0 @@ -19,45 +37,13 @@ .public _022A7A64 .public _022A92B4_JP .public _022A92C4 -.public AnalyzeText -.public DrawChar -.public FileRom_HandleRead -.public FileRom_HandleSeek -.public FileRom_InitDataTransfer -.public FileRom_StopDataTransfer -.public GetColorCodePaletteOffset -.public GetHeldButtons -.public GetPressedButtons -.public GetReleasedStylus -.public GetWindow -.public GetWindowRectangle -.public HandleSir0Translation -.public IsTouchScreenNotOff -.public LoadFileFromRom -.public PreprocessStringFromId -.public RandInt .public sprintf .public sub_01FF905C .public sub_01FF9130_JP .public sub_01FF929C .public sub_02006C8C .public sub_02020A9C -.public sub_02020B14 -.public sub_02020B4C -.public sub_02020B60 -.public sub_02020B74 -.public sub_02020B94 -.public sub_02020BB8 -.public sub_02020BC4 -.public sub_02020CCC -.public sub_02020D18 -.public sub_02020D40 -.public sub_02020D54 -.public sub_02020D5C -.public sub_02020D7C -.public sub_02022118 .public sub_02026B1C -.public sub_02026C68 .public sub_02027170 .public sub_02027274 .public sub_02027390 @@ -68,6 +54,3 @@ .public sub_02028324 .public sub_020288DC .public sub_020288FC -.public TBL_TALK_GROUP_STRING_ID_START -.public UnloadFile -.public UpdateWindow diff --git a/asm/include/main_0202614C.inc b/asm/include/main_0202614C.inc new file mode 100644 index 00000000..4921f14e --- /dev/null +++ b/asm/include/main_0202614C.inc @@ -0,0 +1,2 @@ +#pragma once +.public sub_02020B60 diff --git a/asm/include/main_020261F4.inc b/asm/include/main_020261F4.inc new file mode 100644 index 00000000..053173fd --- /dev/null +++ b/asm/include/main_020261F4.inc @@ -0,0 +1,16 @@ +#pragma once +.public AnalyzeText +.public DrawChar +.public GetColorCodePaletteOffset +.public PreprocessStringFromId +.public _020AFD04 +.public sub_02020B4C +.public sub_02020B60 +.public sub_02020B74 +.public sub_02020B94 +.public sub_02020BC4 +.public sub_02020D7C +.public sub_02022118 +.public sub_02025C7C +.public sub_02025E84 +.public sub_02026C68 diff --git a/asm/include/main_0202B530.inc b/asm/include/main_0202B530.inc deleted file mode 100644 index 9a47def6..00000000 --- a/asm/include/main_0202B530.inc +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once -.public GetCurrentPage -.public GetSelectedItemOnPage -.public GetWindowContents diff --git a/asm/include/main_020307B8.inc b/asm/include/main_020307B8.inc deleted file mode 100644 index bc3bf7bb..00000000 --- a/asm/include/main_020307B8.inc +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once -.public GetWindowContents -.public sub_02032984 diff --git a/asm/include/main_02030A50.inc b/asm/include/main_02030A90.inc similarity index 100% rename from asm/include/main_02030A50.inc rename to asm/include/main_02030A90.inc diff --git a/asm/include/main_020325AC.inc b/asm/include/main_020325AC.inc index e4b3bbc6..e6797521 100644 --- a/asm/include/main_020325AC.inc +++ b/asm/include/main_020325AC.inc @@ -1,45 +1,2 @@ #pragma once -.public AppendStandardStringToMission -.public DrawTextInWindow -.public GetCurrentPage -.public GetTotalNumPages -.public MENU_CONTROL_PTR -.public MemAlloc -.public NULL_OVERLAY_LOAD_ENTRY -.public PlaySeVolumeWrapper -.public PreprocessString -.public PreprocessStringFromId -.public UnloadOverlay -.public _0209AFC4 -.public _0209AFDC -.public _0209AFE4 -.public _0209AFEC -.public _0209AFF4 -.public _0209AFFC -.public _0209B004 -.public _0209B00C -.public _0209B014 -.public _0209B01C -.public _0209B024 -.public _0209B02C -.public _0209B034 -.public _0209B03C -.public _0209B044 -.public _0209B04C -.public _0209B054 -.public _0209B05C -.public _0209B064 -.public _0209B06C -.public _0209B074 -.public _0209B07C -.public _0209B084 .public _s32_div_f -.public sub_02006BFC -.public sub_02006C8C -.public sub_02025D50 -.public sub_02026594 -.public sub_020265A8 -.public sub_02031908 -.public sub_02031914 -.public sub_020320C8 -.public sub_020469BC diff --git a/asm/include/main_02032960.inc b/asm/include/main_02032960.inc new file mode 100644 index 00000000..c4cf4ca3 --- /dev/null +++ b/asm/include/main_02032960.inc @@ -0,0 +1,16 @@ +#pragma once +.public InventoryMenuNext10Pages +.public InventoryMenuPrevious10Pages +.public InventoryMenuPreviousPage +.public PlaySeVolumeWrapper +.public _s32_div_f +.public sub_02006BFC +.public sub_02006C8C +.public sub_02031908 +.public sub_02031914 +.public sub_0203330C +.public sub_020333D8 +.public sub_020333FC +.public sub_02033414 +.public sub_02033440 +.public sub_020336FC diff --git a/asm/include/main_02033414.inc b/asm/include/main_02033414.inc new file mode 100644 index 00000000..f9693fc7 --- /dev/null +++ b/asm/include/main_02033414.inc @@ -0,0 +1,57 @@ +#pragma once +.public AppendStandardStringToMission +.public DrawTextInWindow +.public GetCurrentPage +.public GetTotalNumPages +.public InventoryMenuNext10Pages +.public InventoryMenuNextPage +.public InventoryMenuPrevious10Pages +.public InventoryMenuPreviousPage +.public MENU_CONTROL_PTR +.public MemAlloc +.public NULL_OVERLAY_LOAD_ENTRY +.public PlayWindowInputSound +.public PreprocessString +.public PreprocessStringFromId +.public UnloadOverlay +.public _0209AFC4 +.public _0209AFDC +.public _0209AFE4 +.public _0209AFEC +.public _0209AFF4 +.public _0209AFFC +.public _0209B004 +.public _0209B00C +.public _0209B014 +.public _0209B01C +.public _0209B024 +.public _0209B02C +.public _0209B034 +.public _0209B03C +.public _0209B044 +.public _0209B04C +.public _0209B054 +.public _0209B05C +.public _0209B064 +.public _0209B06C +.public _0209B074 +.public _0209B07C +.public _0209B084 +.public sub_02006C8C +.public sub_02025D50 +.public sub_02026594 +.public sub_020265A8 +.public sub_020320C8 +.public sub_020327E4 +.public sub_0203280C +.public sub_0203282C +.public sub_02032864 +.public sub_020328F4 +.public sub_02032918 +.public sub_0203293C +.public sub_02032DE8 +.public sub_0203336C +.public sub_02033390 +.public sub_020333B4 +.public sub_020333D8 +.public sub_020469BC diff --git a/asm/include/main_0203C774.inc b/asm/include/main_0203C774.inc index f7af3277..9b573d35 100644 --- a/asm/include/main_0203C774.inc +++ b/asm/include/main_0203C774.inc @@ -1,267 +1,11 @@ #pragma once -.public AddItemToStorage -.public AddMoneyCarried -.public AppendStandardStringToMission -.public ApplyLevelUpBoostsToGroundMonster -.public Arm9LoadUnkFieldNa0x2029EC8 -.public Arm9StoreUnkFieldNa0x2029ED8 -.public BAG_ITEMS_PTR_MIRROR -.public CanMonsterUseMove -.public ClearBagSelectedItemTable -.public ClearWindow -.public CloseAdvancedMenu -.public CloseAdvancedTextBox -.public CloseCollectionMenu -.public CloseDialogueBox -.public CloseParentMenu -.public ClosePortraitBox -.public CloseScrollBox -.public CloseSimpleMenu -.public CloseTextBox -.public CopyNStringFromId -.public CountNbOfItemsInStorage -.public CreateAdvancedMenu -.public CreateAdvancedTextBox -.public CreateCollectionMenu -.public CreateParentMenuFromStringIds -.public CreatePortraitBox -.public CreateScrollBoxMulti -.public CreateScrollBoxSingle -.public CreateSimpleMenuFromStringIds -.public CreateTextBox -.public DisableIqSkill -.public DrawTextInWindow -.public FormatMoveStringMore -.public GetActiveTeamMember -.public GetActualSellPrice -.public GetAdvancedMenuResult -.public GetAdvancedTextBoxFlags2 -.public GetDexNumber -.public GetDigitInputResult -.public GetDungeonResultString -.public GetEggSpecies -.public GetHeldButtons -.public GetIqSkillStringId -.public GetItemAtIdx -.public GetItemCategory -.public GetKeyboardStatus -.public GetKeyboardStringResult -.public GetLearnableIqSkills -.public GetMaxPp -.public GetMoneyCarried -.public GetMonsterName -.public GetMoveRangeId -.public GetMoveType -.public GetNameRaw -.public GetNameWithGender -.public GetNbItemsInBag -.public GetNextIqSkill -.public GetPpIncrease -.public GetPressedButtons -.public GetRank -.public GetRankUpEntry -.public GetReleasedStylus -.public GetResolvedPerformanceProgressFlag -.public GetSimpleMenuResult__0202AEA4 -.public GetSimpleMenuResult__0202B870 -.public GetSpeciesString -.public GetStringFromFileVeneer -.public GetType -.public GetTypeStringId -.public GetWindowIdPageStart -.public GetWindowIdSelectedMenuItemIdx -.public HidePortraitBox -.public InitMove -.public InitPortraitParams -.public InitPortraitParamsWithMonsterId -.public InitPreprocessorArgs -.public InitUnkStorageStruct0x410 -.public IqSkillFlagTest -.public Is2TurnsMove -.public IsAdvancedMenuActive2 -.public IsAdvancedTextBoxActive -.public IsCollectionMenuActive -.public IsCollectionMenuState3 -.public IsDeoxys -.public IsGummi -.public IsMonsterIllegalForMissions -.public IsNot2TurnsMoveOrSketch -.public IsParentMenuActive -.public IsScrollBoxActive -.public IsShoppableItem -.public IsSimpleMenuActive -.public IsStorableItem -.public IsTextboxState3 -.public IsThrownItem -.public IsTouchScreenNotOff -.public LAST_NEW_MOVE -.public LoadScriptVariableValue -.public MISSION_REWARD_STRUCT_MAIN_PTR -.public MaybeGetColoredFormattedItemName -.public MaybeGetUncoloredFormattedItemName .public MemAlloc -.public MemFree -.public MemZero -.public MemcpySimple -.public PlayAdvancedTextBoxInputSound -.public PlaySeByIdVolumeWrapper -.public PlaySeVolumeWrapper -.public PreprocessString -.public PreprocessStringFromId -.public RandIntSafe -.public RemoveEmptyItemsInBag -.public ResumeAdvancedMenu -.public STATUSES_FULL_DESCRIPTION_STRING_IDS -.public SetAdvancedTextBoxField0x1C2 -.public SetAdvancedTextBoxState5 -.public SetCollectionMenuField0x1BC -.public SetCollectionMenuVoidFn -.public SetCollectionMenuWidth -.public SetEggHatchTimer -.public SetEggSpecies -.public SetPortraitEmotion -.public SetPortraitLayout -.public SetPortraitOffset -.public SetUnkAdvancedTextBoxFn -.public SetUnkAdvancedTextBoxWindowFn -.public ShowKeyboard -.public ShowPortraitInPortraitBox -.public StrcpySimple .public StringFromId -.public StrncpySimple -.public StrncpySimpleNoPadSafe -.public TEAM_MEMBER_TABLE_PTR -.public UNK_STORAGE_STRUCT_0XC .public UpdateWindow .public _0209C60C -.public _0209C7CC -.public _0209C7D4 -.public _0209C7E4 -.public _0209C7F4 -.public _0209C820 -.public _0209C82C -.public _0209C83C -.public _0209C844 -.public _0209C846 -.public _0209C850 -.public _0209C85C -.public _0209C86C -.public _0209C884 -.public _0209C89C -.public _0209C8A8 -.public _0209C8B8 -.public _0209C8C8 -.public _0209C928 -.public _0209C92C -.public _0209C93C -.public _0209C94C -.public _0209C95C -.public _0209C96C -.public _0209C97C -.public _0209C98C -.public _0209C99C -.public _0209C9AC -.public _0209C9B0 -.public _0209C9CC -.public _0209C9D4 -.public _0209C9DC -.public _0209C9E4 -.public _0209C9F4 -.public _0209C9FC -.public _0209CA08 -.public _0209CA18 -.public _0209CA2C -.public _0209E912 .public _020AFE5C .public _020AFE70 -.public _020AFE78 -.public _020AFE7C -.public _020AFE8C -.public _020AFE90 -.public _020AFE98 -.public _022AADFC -.public _022AAE00 -.public _022AAE2A -.public _022AAE2E -.public _022AAE58 -.public _s32_div_f -.public memcpy -.public ov11_023061CC -.public ov11_023061E4 -.public ov11_02306C64 -.public ov11_02306C9C -.public ov11_0230D000 -.public ov11_0230D220 -.public ov11_0230D92C -.public ov11_02310BDC -.public ov11_02310C18 -.public strcat -.public strcpy -.public sub_02001808 -.public sub_020063F4 -.public sub_02006498 -.public sub_02006BFC -.public sub_0200FD48 -.public sub_02013E54 -.public sub_02013F58 -.public sub_02017C50 -.public sub_02017C74 -.public sub_02024D7C -.public sub_02025D50 .public sub_020262E0 .public sub_02027B1C -.public sub_0202810C -.public sub_0202812C -.public sub_02028354 -.public sub_020288DC -.public sub_0202A2A4 -.public sub_0202C1E4 -.public sub_0202C620 -.public sub_0202C75C -.public sub_0202D068 -.public sub_0202D0EC -.public sub_0202D16C -.public sub_0202F954 -.public sub_020307EC -.public sub_020308E4 -.public sub_02030908 -.public sub_02030978 -.public sub_02030A50 -.public sub_02030A64 -.public sub_02030A74 -.public sub_02030A90 -.public sub_02030EF0 -.public sub_02037468 -.public sub_0203909C -.public sub_02039218 -.public sub_0203931C -.public sub_02042B20 -.public sub_02042BE0 -.public sub_0204426C -.public sub_020442CC -.public sub_02044308 -.public sub_0204440C -.public sub_02044474 -.public sub_020444B0 -.public sub_02044568 -.public sub_020445C8 -.public sub_02045FD0 -.public sub_02046028 -.public sub_02046A20 -.public sub_02046B04 -.public sub_02046BA0 -.public sub_02046BE8 -.public sub_02046C78 -.public sub_02046D20 -.public sub_02050C10 -.public sub_02052E2C -.public sub_02053A0C -.public sub_02055D4C -.public sub_02056410 -.public sub_020564B0 -.public sub_02056F60 -.public sub_0205A4B4 -.public sub_0205B028 -.public sub_0205B0A0 -.public sub_0205B0B8 -.public vsprintf +.public sub_0203C984 +.public sub_0203C9A0 diff --git a/asm/include/main_0203CAF0.inc b/asm/include/main_0203CAF0.inc new file mode 100644 index 00000000..c314da23 --- /dev/null +++ b/asm/include/main_0203CAF0.inc @@ -0,0 +1,262 @@ +#pragma once +.public AddItemToStorage +.public AddMoneyCarried +.public AppendStandardStringToMission +.public ApplyLevelUpBoostsToGroundMonster +.public Arm9LoadUnkFieldNa0x2029EC8 +.public Arm9StoreUnkFieldNa0x2029ED8 +.public BAG_ITEMS_PTR_MIRROR +.public CanMonsterUseMove +.public ClearBagSelectedItemTable +.public ClearWindow +.public CloseAdvancedMenu +.public CloseAdvancedTextBox +.public CloseCollectionMenu +.public CloseDialogueBox +.public CloseParentMenu +.public ClosePortraitBox +.public CloseScrollBox +.public CloseSimpleMenu +.public CloseTextBox +.public CopyNStringFromId +.public CountNbOfItemsInStorage +.public CreateAdvancedMenu +.public CreateAdvancedTextBox +.public CreateCollectionMenu +.public CreateParentMenuFromStringIds +.public CreatePortraitBox +.public CreateScrollBoxMulti +.public CreateScrollBoxSingle +.public CreateSimpleMenuFromStringIds +.public CreateTextBox +.public DisableIqSkill +.public DrawTextInWindow +.public FormatMoveStringMore +.public GetActiveTeamMember +.public GetActualSellPrice +.public GetAdvancedMenuResult +.public GetAdvancedTextBoxFlags2 +.public GetDexNumber +.public GetDigitInputResult +.public GetDungeonResultString +.public GetEggSpecies +.public GetHeldButtons +.public GetIqSkillStringId +.public GetItemAtIdx +.public GetItemCategory +.public GetKeyboardStatus +.public GetKeyboardStringResult +.public GetLearnableIqSkills +.public GetMaxPp +.public GetMoneyCarried +.public GetMonsterName +.public GetMoveRangeId +.public GetMoveType +.public GetNameRaw +.public GetNameWithGender +.public GetNbItemsInBag +.public GetNextIqSkill +.public GetPpIncrease +.public GetPressedButtons +.public GetRank +.public GetRankUpEntry +.public GetReleasedStylus +.public GetResolvedPerformanceProgressFlag +.public GetSimpleMenuResult__0202AEA4 +.public GetSimpleMenuResult__0202B870 +.public GetSpeciesString +.public GetStringFromFileVeneer +.public GetType +.public GetTypeStringId +.public GetWindowIdPageStart +.public GetWindowIdSelectedMenuItemIdx +.public HidePortraitBox +.public InitMove +.public InitPortraitParams +.public InitPortraitParamsWithMonsterId +.public InitPreprocessorArgs +.public InitUnkStorageStruct0x410 +.public IqSkillFlagTest +.public Is2TurnsMove +.public IsAdvancedMenuActive2 +.public IsAdvancedTextBoxActive +.public IsCollectionMenuActive +.public IsCollectionMenuState3 +.public IsDeoxys +.public IsGummi +.public IsMonsterIllegalForMissions +.public IsNot2TurnsMoveOrSketch +.public IsParentMenuActive +.public IsScrollBoxActive +.public IsShoppableItem +.public IsSimpleMenuActive +.public IsStorableItem +.public IsTextboxState3 +.public IsThrownItem +.public IsTouchScreenNotOff +.public LAST_NEW_MOVE +.public LoadScriptVariableValue +.public MISSION_REWARD_STRUCT_MAIN_PTR +.public MaybeGetColoredFormattedItemName +.public MaybeGetUncoloredFormattedItemName +.public MemAlloc +.public MemFree +.public MemZero +.public MemcpySimple +.public PlayAdvancedTextBoxInputSound +.public PlaySeByIdVolumeWrapper +.public PlaySeVolumeWrapper +.public PreprocessString +.public PreprocessStringFromId +.public RandIntSafe +.public RemoveEmptyItemsInBag +.public ResumeAdvancedMenu +.public STATUSES_FULL_DESCRIPTION_STRING_IDS +.public SetAdvancedTextBoxField0x1C2 +.public SetAdvancedTextBoxState5 +.public SetCollectionMenuField0x1BC +.public SetCollectionMenuVoidFn +.public SetCollectionMenuWidth +.public SetEggHatchTimer +.public SetEggSpecies +.public SetPortraitEmotion +.public SetPortraitLayout +.public SetPortraitOffset +.public SetUnkAdvancedTextBoxFn +.public SetUnkAdvancedTextBoxWindowFn +.public ShowKeyboard +.public ShowPortraitInPortraitBox +.public StrcpySimple +.public StringFromId +.public StrncpySimple +.public StrncpySimpleNoPadSafe +.public TEAM_MEMBER_TABLE_PTR +.public UNK_STORAGE_STRUCT_0XC +.public UpdateWindow +.public _0209C7CC +.public _0209C7D4 +.public _0209C7E4 +.public _0209C820 +.public _0209C82C +.public _0209C83C +.public _0209C844 +.public _0209C846 +.public _0209C850 +.public _0209C85C +.public _0209C86C +.public _0209C884 +.public _0209C89C +.public _0209C8A8 +.public _0209C8B8 +.public _0209C8C8 +.public _0209C928 +.public _0209C92C +.public _0209C93C +.public _0209C94C +.public _0209C95C +.public _0209C96C +.public _0209C97C +.public _0209C98C +.public _0209C99C +.public _0209C9AC +.public _0209C9B0 +.public _0209C9CC +.public _0209C9D4 +.public _0209C9DC +.public _0209C9E4 +.public _0209C9F4 +.public _0209C9FC +.public _0209CA08 +.public _0209CA18 +.public _0209CA2C +.public _0209E912 +.public _020AFE70 +.public _020AFE78 +.public _020AFE7C +.public _020AFE8C +.public _020AFE90 +.public _020AFE98 +.public _022AADFC +.public _022AAE00 +.public _022AAE2A +.public _022AAE2E +.public _022AAE58 +.public _s32_div_f +.public memcpy +.public ov11_023061CC +.public ov11_023061E4 +.public ov11_02306C64 +.public ov11_02306C9C +.public ov11_0230D000 +.public ov11_0230D220 +.public ov11_0230D92C +.public ov11_02310BDC +.public strcat +.public strcpy +.public sub_02001808 +.public sub_020063F4 +.public sub_02006498 +.public sub_02006BFC +.public sub_0200FD48 +.public sub_02013E54 +.public sub_02013F58 +.public sub_02017C50 +.public sub_02017C74 +.public sub_02024D7C +.public sub_02025D50 +.public sub_02027B1C +.public sub_0202810C +.public sub_0202812C +.public sub_02028354 +.public sub_020288DC +.public sub_0202A2A4 +.public sub_0202C1E4 +.public sub_0202C620 +.public sub_0202C75C +.public sub_0202D068 +.public sub_0202D0EC +.public sub_0202D16C +.public sub_0202F954 +.public sub_020307EC +.public sub_020308E4 +.public sub_02030908 +.public sub_02030978 +.public sub_02030A50 +.public sub_02030A64 +.public sub_02030A74 +.public sub_02030A90 +.public sub_02030EF0 +.public sub_02037468 +.public sub_0203909C +.public sub_02039218 +.public sub_0203931C +.public sub_02042B20 +.public sub_02042BE0 +.public sub_0204426C +.public sub_020442CC +.public sub_02044308 +.public sub_0204440C +.public sub_02044474 +.public sub_020444B0 +.public sub_02044568 +.public sub_020445C8 +.public sub_02045FD0 +.public sub_02046028 +.public sub_02046A20 +.public sub_02046B04 +.public sub_02046BA0 +.public sub_02046BE8 +.public sub_02046C78 +.public sub_02046D20 +.public sub_02050C10 +.public sub_02052E2C +.public sub_02053A0C +.public sub_02055D4C +.public sub_02056410 +.public sub_020564B0 +.public sub_02056F60 +.public sub_0205A4B4 +.public sub_0205B028 +.public sub_0205B0A0 +.public sub_0205B0B8 +.public vsprintf diff --git a/asm/include/main_02042B20.inc b/asm/include/main_02042B20.inc deleted file mode 100644 index f8c6de71..00000000 --- a/asm/include/main_02042B20.inc +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -.public UNK_STORAGE_STRUCT_0XC diff --git a/asm/include/main_0204357C.inc b/asm/include/main_0204357C.inc index d177acef..7857c766 100644 --- a/asm/include/main_0204357C.inc +++ b/asm/include/main_0204357C.inc @@ -2,7 +2,6 @@ .public AppendStandardStringToMission .public Arm9LoadUnkFieldNa0x2029EC8 .public BAG_ITEMS_PTR_MIRROR -.public ClearAdventureLogStruct .public ClearStorageSelectedItemTable .public CloseAdvancedMenu .public CloseAdvancedTextBox @@ -28,7 +27,6 @@ .public CreateTextBox .public CreateTextBoxWithArg .public DUNGEON_PTR -.public DebugPrintEventFlagSize .public DrawTextInWindow .public DrawTileGrid .public FreeUnkStorageStruct0x18c0 @@ -183,16 +181,8 @@ .public sub_02043400 .public sub_02043434 .public sub_02043468 -.public sub_02048B48 -.public sub_02048B74 -.public sub_02048C0C -.public sub_02048C3C -.public sub_02048C4C -.public sub_02048C5C -.public sub_0204F9B8 .public sub_020547C8 .public sub_020547D8 .public sub_02054804 .public sub_02056228 .public sub_02058460 -.public sub_0206637C diff --git a/asm/include/main_02048764.inc b/asm/include/main_02048764.inc index 1e4ccaa4..e7c59624 100644 --- a/asm/include/main_02048764.inc +++ b/asm/include/main_02048764.inc @@ -1,147 +1,36 @@ #pragma once .public ApplyLevelUpBoostsToGroundMonster -.public BitstreamDebug -.public CARD_Init -.public CardBackupError -.public CardPullOutWithStatus -.public Card_GetBackupTotalSize -.public Card_GetCurrentBackupType -.public Card_IdentifyBackup -.public Card_LockBackup -.public Card_UnlockBackup -.public Cardi_RequestStreamCommand -.public ClearCroagunkItems -.public CloseDialogueBox -.public CopyBitsFrom -.public CopyBitsTo -.public CopyFrameTypeOption -.public CopyMenuControlWindowExtraInfo -.public CopyProgressInfoFromScratchFrom -.public CopyProgressInfoFromScratchTo -.public CreateDialogueBox .public DEFAULT_HERO_ID -.public Debug_GetDebugFlag -.public Debug_Print0 -.public DumpScriptVariableValues .public EnableAllLearnableIqSkills -.public EventFlagBackupVeneer -.public GetAdventureLogDungeonFloor .public GetExecuteSpecialEpisodeType .public GetGameMode .public GetHero .public GetHeroMemberIdx .public GetInfoGroundMoveset -.public GetLanguageType .public GetMonsterGenderVeneer .public GetPartner .public GetPartnerMemberIdx -.public GetRngSeed .public GetStringFromFileVeneer .public GetTeamMember -.public GetTime -.public InitBitstreamForRead -.public InitBitstreamForWrite -.public InitMenu -.public InitMenuWithWindowExtraInfo -.public InitOptions -.public InitScriptVariableValues -.public IsDialogueBoxActive .public LearnMoves -.public LoadCroagunkItems .public LoadScriptVariableValue -.public MemAlloc -.public MemFree -.public MemZero -.public MemsetSimple .public NOTIFY_NOTE -.public OS_GetLockID -.public OS_GetMacAddress -.public OS_ReleaseLockId .public PARTNER_TALK_KIND_TABLE .public Rand32Bit -.public RandInt -.public ReadItemsFromSave -.public ReadMonsterInfoFromSave -.public ResetGlobalProgress -.public RestoreScriptVariableValues .public SPECIAL_EPISODE_MAIN_CHARACTERS -.public SaveCroagunkItems .public SaveScriptVariableValue .public SaveScriptVariableValueBytes .public SetBothScreensWindowsColor -.public SetNotifyNote -.public SetRngSeed .public SetTeamSetupHeroAndPartnerOnly -.public ShowStringIdInDialogueBox -.public StoreDefaultTeamData .public StrncpyName -.public WriteItemsToSave -.public WriteMonsterInfoToSave -.public _0209CD4C -.public _0209CD6C -.public _0209CD84 -.public _0209CD94 -.public _0209CDA4 -.public _0209CDB8 -.public _0209CDD0 -.public _0209CDE0 -.public _0209CDF8 -.public _0209CE10 -.public _0209CE40 -.public _0209CE50 -.public _0209CE54 -.public _0209CE58 -.public _0209CE68 -.public _0209CE78 .public _020A281C .public _020A2858 .public _020A286C .public _020A28A8 .public _020AFF00 .public _020AFF14 -.public _020AFF38 -.public _020AFF40 -.public _020AFF4C -.public _020AFF54 -.public _020AFF5C -.public _020AFF64 -.public _020AFF68 -.public _020AFF6C -.public _022AAE70 -.public _022AAE74 -.public _022AAE78 -.public _022AAEA4 -.public _022AAEA8 -.public _022AAEAC -.public _022AB09C -.public _f2d -.public _fsub -.public strncmp -.public strncpy -.public sub_02002580 -.public sub_020027F8 -.public sub_02003B94 -.public sub_02003BC8 -.public sub_0200CABC -.public sub_0202059C -.public sub_020205C0 -.public sub_02027180 -.public sub_02029F88 -.public sub_02029FBC -.public sub_0202F334 -.public sub_02048454 -.public sub_0204E154 -.public sub_0204E19C -.public sub_02050CF8 -.public sub_02050D84 -.public sub_02052C74 +.public sub_02048C0C +.public sub_02048C3C +.public sub_02048C4C .public sub_02053568 .public sub_02055B78 -.public sub_020597B0 -.public sub_02059A74 -.public sub_0205B478 -.public sub_0205BD9C -.public sub_0205BFB0 -.public sub_0205C75C -.public sub_0205FAB0 -.public sub_0205FC20 diff --git a/asm/include/main_02048B74.inc b/asm/include/main_02048B74.inc new file mode 100644 index 00000000..5e43ecb9 --- /dev/null +++ b/asm/include/main_02048B74.inc @@ -0,0 +1,5 @@ +#pragma once +.public Debug_Print0 +.public _0209CD4C +.public _020AFF38 +.public _022AAE70 diff --git a/asm/include/main_02048C5C.inc b/asm/include/main_02048C5C.inc new file mode 100644 index 00000000..bbe607bc --- /dev/null +++ b/asm/include/main_02048C5C.inc @@ -0,0 +1,5 @@ +#pragma once +.public MemsetSimple +.public ReadStringSave +.public _022AAE74 +.public _022AAE78 diff --git a/asm/include/main_02048CF8.inc b/asm/include/main_02048CF8.inc new file mode 100644 index 00000000..23423d05 --- /dev/null +++ b/asm/include/main_02048CF8.inc @@ -0,0 +1,106 @@ +#pragma once +.public BitstreamDebug +.public CARD_Init +.public CardBackupError +.public CardPullOutWithStatus +.public Card_GetBackupTotalSize +.public Card_GetCurrentBackupType +.public Card_IdentifyBackup +.public Card_LockBackup +.public Card_UnlockBackup +.public Cardi_RequestStreamCommand +.public CheckStringSave +.public CloseDialogueBox +.public CopyBitsFrom +.public CopyBitsTo +.public CopyFrameTypeOption +.public CopyMenuControlWindowExtraInfo +.public CopyProgressInfoFromScratchFrom +.public CopyProgressInfoFromScratchTo +.public CreateDialogueBox +.public Debug_Print0 +.public DumpScriptVariableValues +.public EventFlagBackupVeneer +.public GetAdventureLogDungeonFloor +.public GetLanguageType +.public GetRngSeed +.public GetTime +.public InitBitstreamForRead +.public InitBitstreamForWrite +.public InitMenu +.public InitMenuWithWindowExtraInfo +.public IsDialogueBoxActive +.public LoadCroagunkItems +.public MemAlloc +.public MemFree +.public MemZero +.public OS_GetLockID +.public OS_GetMacAddress +.public OS_ReleaseLockId +.public RandInt +.public ReadItemsFromSave +.public ReadMonsterInfoFromSave +.public ReadStringSave +.public RestoreScriptVariableValues +.public SaveCroagunkItems +.public SetNotifyNote +.public SetRngSeed +.public ShowStringIdInDialogueBox +.public WriteItemsToSave +.public WriteMonsterInfoToSave +.public _0209CD6C +.public _0209CD84 +.public _0209CD94 +.public _0209CDA4 +.public _0209CDB8 +.public _0209CDD0 +.public _0209CDE0 +.public _0209CDF8 +.public _0209CE10 +.public _0209CE40 +.public _0209CE50 +.public _0209CE54 +.public _0209CE58 +.public _0209CE68 +.public _0209CE78 +.public _020AFF40 +.public _020AFF4C +.public _020AFF54 +.public _020AFF5C +.public _020AFF64 +.public _020AFF68 +.public _020AFF6C +.public _022AAE74 +.public _022AAEA4 +.public _022AAEA8 +.public _022AAEAC +.public _022AB09C +.public _f2d +.public _fsub +.public sub_02002580 +.public sub_020027F8 +.public sub_02003B94 +.public sub_02003BC8 +.public sub_0202059C +.public sub_020205C0 +.public sub_02027180 +.public sub_02029F88 +.public sub_02029FBC +.public sub_0202F334 +.public sub_02048454 +.public sub_02048BFC +.public sub_02048C0C +.public sub_02048C3C +.public sub_02048C4C +.public sub_02048C5C +.public sub_02048CB8 +.public sub_0204E154 +.public sub_0204E19C +.public sub_02050CF8 +.public sub_02050D84 +.public sub_020597B0 +.public sub_02059A74 +.public sub_0205BD9C +.public sub_0205BFB0 +.public sub_0205FAB0 +.public sub_0205FC20 diff --git a/asm/include/main_0204CF9C.inc b/asm/include/main_0204CF9C.inc index 6a06e223..d3b8f605 100644 --- a/asm/include/main_0204CF9C.inc +++ b/asm/include/main_0204CF9C.inc @@ -1,27 +1,6 @@ #pragma once -.public _0209E010 -.public _0209E011 -.public ARM9_UNKNOWN_TABLE__NA_209E164 -.public BitstreamDebug -.public CopyBitsFrom -.public CopyBitsTo -.public FemaleToMaleForm -.public FileClose -.public FileRom_HandleOpen -.public FileRom_HandleRead -.public FileRom_HandleSeek -.public FileRom_InitDataTransfer -.public FileRom_StopDataTransfer -.public FileRom_Veneer_FileInit -.public GetDexNumber .public GLOBAL_PROGRESS_PTR -.public InitBitstreamForRead -.public InitBitstreamForWrite -.public KAOMADO_FILEPATH -.public KAOMADO_STREAM .public LoadScriptVariableValueAtIndex .public MemAlloc .public MemZero -.public PORTRAIT_LAYOUTS .public SaveScriptVariableValueAtIndex -.public VERSION_EXCLUSIVE_MONSTERS diff --git a/asm/include/main_0204D368.inc b/asm/include/main_0204D368.inc new file mode 100644 index 00000000..d3035635 --- /dev/null +++ b/asm/include/main_0204D368.inc @@ -0,0 +1,29 @@ +#pragma once +.public ARM9_UNKNOWN_TABLE__NA_209E164 +.public BitstreamDebug +.public CopyBitsFrom +.public CopyBitsTo +.public FileClose +.public FileRom_HandleOpen +.public FileRom_HandleRead +.public FileRom_HandleSeek +.public FileRom_InitDataTransfer +.public FileRom_StopDataTransfer +.public FileRom_Veneer_FileInit +.public GLOBAL_PROGRESS_PTR +.public GetDexNumber +.public GetDungeonTipShown +.public GetMonsterFlag1 +.public HasMonsterBeenAttackedInDungeons +.public InitBitstreamForRead +.public InitBitstreamForWrite +.public KAOMADO_FILEPATH +.public KAOMADO_STREAM +.public MemZero +.public PORTRAIT_LAYOUTS +.public SetDungeonTipShown +.public SetMonsterFlag1 +.public SetMonsterFlag2 +.public VERSION_EXCLUSIVE_MONSTERS +.public _0209E010 +.public _0209E011 diff --git a/asm/include/main_0204F0A0.inc b/asm/include/main_0204F0A0.inc index c60e0f52..15dc01c5 100644 --- a/asm/include/main_0204F0A0.inc +++ b/asm/include/main_0204F0A0.inc @@ -13,7 +13,6 @@ .public GetNameString .public GetNbItemsInBag .public GetPartyMembers -.public GetPlayTimeSeconds .public GetResolvedPerformanceProgressFlag .public GuestMonsterToGroundMonster .public IsLevelResetDungeon @@ -23,9 +22,6 @@ .public MISSION_FLOOR_RANKS_PTRS .public OUTLAW_LEVEL_TABLE .public OUTLAW_MINION_LEVEL_TABLE -.public PLAY_TIME_SECONDS -.public PlayTimerTick -.public ResetPlayTimer .public SECONDARY_TERRAIN_TYPES .public StrncpyName .public TEAM_MEMBER_TABLE_PTR @@ -35,6 +31,4 @@ .public _022AB4F8 .public _022AB5AC .public sub_0204CEE0 -.public sub_02050E5C -.public sub_02050E8C .public sub_0205EE40 diff --git a/asm/include/main_02051788.inc b/asm/include/main_02051788.inc deleted file mode 100644 index abf11829..00000000 --- a/asm/include/main_02051788.inc +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once -.public _020A20B1 -.public ARM9_UNKNOWN_TABLE__NA_20A20B0 diff --git a/asm/include/main_02058C4C.inc b/asm/include/main_02058C4C.inc deleted file mode 100644 index ccf8ec4d..00000000 --- a/asm/include/main_02058C4C.inc +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -.public TACTICS_UNLOCK_LEVEL_TABLE diff --git a/asm/include/main_02058D04.inc b/asm/include/main_02058D04.inc deleted file mode 100644 index 2e2dac5e..00000000 --- a/asm/include/main_02058D04.inc +++ /dev/null @@ -1,5 +0,0 @@ -#pragma once -.public CanLearnIqSkill -.public GetIqGroup -.public GetResolvedPerformanceProgressFlag -.public IQ_GROUP_SKILLS diff --git a/asm/include/main_02058E8C.inc b/asm/include/main_02058E8C.inc deleted file mode 100644 index 17dc6634..00000000 --- a/asm/include/main_02058E8C.inc +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once -.public EnableIqSkill -.public GetLearnableIqSkills diff --git a/asm/include/main_0205EC38.inc b/asm/include/main_0205EC38.inc deleted file mode 100644 index 472141e4..00000000 --- a/asm/include/main_0205EC38.inc +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -.public MISSION_DELIVER_LIST_PTR diff --git a/asm/include/main_02065BD8.inc b/asm/include/main_02065BD8.inc deleted file mode 100644 index 901b5ada..00000000 --- a/asm/include/main_02065BD8.inc +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once -.public StrncpySimple -.public StrncpySimpleNoPadSafe -.public _022B7310 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_0206A750.inc b/asm/include/main_0206A750.inc deleted file mode 100644 index a48baebe..00000000 --- a/asm/include/main_0206A750.inc +++ /dev/null @@ -1,6 +0,0 @@ -#pragma once -.public GetExecuteSpecialEpisodeType -.public LoadScriptVariableValue -.public sub_0204E6FC -.public sub_0204E770 -.public sub_0204E780 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_022DB2F8.inc b/asm/include/overlay_00_022DB2F8.inc new file mode 100644 index 00000000..938f2d03 --- /dev/null +++ b/asm/include/overlay_00_022DB2F8.inc @@ -0,0 +1,979 @@ +#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 Dwc_GetFriendDataType +.public Dwc_IsBuddyFriendData +.public Dwci_Acc_GetFlag_DataType +.public Dwci_Acc_GetFlags +.public Dwci_Acc_GetFriendKey +.public Dwci_Acc_GetGsProfileId +.public Dwci_Acc_GetPlayerId +.public Dwci_Acc_GetUserId +.public Dwci_Acc_SetFlag_DataType +.public Dwci_Acc_SetFlags +.public Dwci_Acc_SetFriendKey +.public Dwci_Acc_SetGsProfileId +.public Dwci_Acc_SetPlayerId +.public Dwci_Acc_SetUserId +.public Dwci_IsBuddyFriendData +.public Dwci_IsBuddyMsgAlreadySent +.public Dwci_IsReverseBuddyFriendData +.public Dwci_SetBuddyFriendData +.public Dwci_SetReverseBuddyFlag +.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_00_0230D398.inc b/asm/include/overlay_00_0230D398.inc index e6b5beed..b86cad4d 100644 --- a/asm/include/overlay_00_0230D398.inc +++ b/asm/include/overlay_00_0230D398.inc @@ -1,286 +1,37 @@ #pragma once -.public _020AECB0 -.public _020AEDB0 -.public _msl_strnicmp__0208E248 -.public _s32_div_f -.public _u32_div_f -.public abs .public ArrayAppend_Gsi -.public ArrayClear_Gsi -.public ArrayDeleteAt_Gsi .public ArrayFree_Gsi -.public ArrayInsertSorted_Gsi .public ArrayLength_Gsi -.public ArrayNew_Gsi .public ArrayNth_Gsi -.public ArrayRemoveAt_Gsi -.public atoi -.public BucketAdd_Gsi -.public BucketAvg_Gsi -.public BucketConcat_Gsi -.public BucketDiv_Gsi -.public BucketMult_Gsi -.public BucketSet -.public BucketSub_Gsi -.public CanReceiveOnSocket -.public CanSendOnSocket -.public current_time_gsi -.public getlocalhost_gsi -.public getsockname_gsi -.public GoaGetLastError -.public goastrdup -.public GsDebugAssert -.public gsifree -.public gsimalloc -.public Gti2AllocateBuffer -.public Gti2CheckResponse -.public Gti2GetBufferFreeSpace +.public Gt2StringToAddress +.public Gti2CloseSocket +.public Gti2CreateSocket +.public Gti2FreeClosedConnections +.public Gti2FreeSocketConnection .public Gti2GetChallenge .public Gti2GetResponse -.public inet_addr_gsi -.public IsPrivateIP -.public memcmp +.public Gti2Listen +.public Gti2MessageCheck +.public Gti2NewSocketConnection +.public Gti2ReceiveMessages +.public Gti2ResendMessage +.public Gti2Send +.public Gti2SendAccept +.public Gti2SendAck +.public Gti2SendClientChallenge +.public Gti2SendClose +.public Gti2SendClosed +.public Gti2SendKeepAlive +.public Gti2SendReject +.public Gti2SocketConnectionsThink +.public Gti2SocketSend +.public TableMap_Gsi +.public TableRemove_Gsi +.public current_time_gsi +.public gsifree +.public gsimalloc .public memcpy .public memmove -.public memset .public msleep_gsi -.public OS_SnPrintf -.public OS_VsPrintf -.public ov00_02317FC0 -.public ov00_02317FD4 -.public ov00_02317FE8 -.public ov00_02317FFC -.public ov00_02318010 -.public ov00_02318024 -.public ov00_02318038 -.public ov00_02318138 -.public ov00_02318760 -.public ov00_02318768 -.public ov00_02318780 -.public ov00_02318830 -.public ov00_023188C4 -.public ov00_023188C8 -.public ov00_023188EC -.public ov00_023188F4 -.public ov00_02318900 -.public ov00_0231890C -.public ov00_02318B00 -.public ov00_02318B1C -.public ov00_02318B2C -.public ov00_02318B3C -.public ov00_02318B58 -.public ov00_02318BE4 -.public ov00_02319088 -.public ov00_02319238 -.public ov00_0231923C -.public ov00_02319240 -.public ov00_02319244 -.public ov00_02319248 -.public ov00_0231924C -.public ov00_02319250 -.public ov00_02319254 -.public ov00_02319258 -.public ov00_0231925C -.public ov00_02319260 -.public ov00_02319264 -.public ov00_02319354 -.public ov00_02319398 -.public ov00_0231939C -.public ov00_023193B0 -.public ov00_023193E4 -.public ov00_023194E4 -.public ov00_023194E8 -.public ov00_023194FC -.public ov00_02319534 -.public ov00_02319634 -.public ov00_02319638 -.public ov00_0231964C -.public ov00_0231969C -.public ov00_0231971C -.public ov00_02319720 -.public ov00_02319734 -.public ov00_02319760 -.public ov00_023197E0 -.public ov00_023197E4 -.public ov00_023197F8 -.public ov00_02319848 -.public ov00_023198C8 -.public ov00_023198CC -.public ov00_023198E0 -.public ov00_02319960 -.public ov00_023199E8 -.public ov00_023199EC -.public ov00_02319A00 -.public ov00_02319A80 -.public ov00_02319B00 -.public ov00_02319B04 -.public ov00_02319B18 -.public ov00_02319B98 -.public ov00_02319C2C -.public ov00_02319C30 -.public ov00_02319C44 -.public ov00_02319CE0 -.public ov00_02319DE0 -.public ov00_02319DE4 -.public ov00_02319DF8 -.public ov00_02319E3C -.public ov00_02319EBC -.public ov00_02319EC0 -.public ov00_02319ED4 -.public ov00_02319F18 -.public ov00_02319F98 -.public ov00_02319F9C -.public ov00_02319FB0 -.public ov00_02319FE0 -.public ov00_0231A44C -.public ov00_0231A450 -.public ov00_0231A464 -.public ov00_0231A4B4 -.public ov00_0231BE28 -.public ov00_0231BEF8 -.public ov00_0231BF00 -.public ov00_0231BF04 -.public ov00_0231BF0C -.public ov00_0231BF10 -.public ov00_0231BF14 -.public ov00_0231BF18 -.public ov00_0231BF24 -.public ov00_0231BF2C -.public ov00_0231BF34 -.public ov00_0231BF50 -.public ov00_0231BF6C -.public ov00_0231BF88 -.public ov00_0231BF8C -.public ov00_0231CD20 -.public ov00_0231CD40 -.public ov00_0231CD78 -.public ov00_0231CD7C -.public ov00_0231CD8C -.public ov00_0231CD98 -.public ov00_0231CDA0 -.public ov00_0231CDA4 -.public ov00_0231CDB0 -.public ov00_0231CDB8 -.public ov00_0231CDC4 -.public ov00_0231CDD0 -.public ov00_0231CDD8 -.public ov00_0231CDDC -.public ov00_0231CDE0 -.public ov00_0231CDF0 -.public ov00_0231CDFC -.public ov00_0231CE08 -.public ov00_0231CE14 -.public ov00_0231CE18 -.public ov00_0231CE20 -.public ov00_0231CE28 -.public ov00_0231CE30 -.public ov00_0231CE38 -.public ov00_0231CE40 -.public ov00_0231CE48 -.public ov00_0231CE50 -.public ov00_0231CE58 -.public ov00_0231CE60 -.public ov00_0231CE68 -.public ov00_0231CE70 -.public ov00_0231CE78 -.public ov00_0231CE80 -.public ov00_0231CE88 -.public ov00_0231CE94 -.public ov00_0231CEA0 -.public ov00_0231CEAC -.public ov00_0231CEB8 -.public ov00_0231CEC4 -.public ov00_0231CED0 -.public ov00_0231CEDC -.public ov00_0231CEE8 -.public ov00_0231CEF4 -.public ov00_0231CF00 -.public ov00_0231CF0C -.public ov00_0231CF18 -.public ov00_0231CF24 -.public ov00_0231CF30 -.public ov00_0231CF3C -.public ov00_0231CF48 -.public ov00_0231CF58 -.public ov00_0231CF68 -.public ov00_0231D360 -.public ov00_0231D370 -.public ov00_0231D37C -.public ov00_0231D388 -.public ov00_0231D390 -.public ov00_0231D398 -.public ov00_0231D3A0 -.public ov00_0231D3A4 -.public ov00_0231D3AC -.public ov00_0231D3B0 -.public ov00_0231D3B8 -.public ov00_0231D3C4 -.public ov00_0231D3C8 -.public ov00_0231D3CC -.public ov00_0231D3DC -.public ov00_0231D3E0 -.public ov00_0231D3FC -.public ov00_02328800 -.public ov00_02328804 .public ov00_02328E18 -.public ov00_02328E1C -.public ov00_02328E20 -.public ov00_02328E4C -.public ov00_02328E98 -.public ov00_02329098 -.public ov00_023290A0 -.public ov00_023290C4 -.public ov00_0232919C -.public ov00_0232939C -.public ov00_023293A0 -.public ov00_023293B4 -.public ov00_023293F4 -.public ov00_023294F4 -.public ov00_023294FC -.public ov00_02329500 -.public ov08_0233E230 -.public ov08_0233E2BC -.public ov08_0233E7D8 -.public ov09_0233CA80 -.public ov09_0233CBC8 -.public ov09_0233CBF8 -.public PlayerOpFloat -.public PlayerOpInt -.public PlayerOpString -.public rand -.public ServerOpFloat -.public ServerOpInt -.public ServerOpString -.public Soc_GetHostByName -.public Soc_InetNtoA -.public SocketBind -.public SocketClose -.public SocketConnect -.public SocketCreate -.public SocketRecv -.public SocketRecvFrom -.public SocketSend -.public SocketSendTo -.public SocketShutDown_Gsi -.public SocketStartUp_Ghi -.public srand -.public Std_TsScanf -.public strcasecmp -.public strchr -.public strcmp -.public strcpy .public strlen -.public strncmp -.public strstr -.public TableCount_Gsi -.public TableEnter_Gsi -.public TableFree_Gsi -.public TableLookup_Gsi -.public TableMap_Gsi -.public TableMapSafe2_Gsi -.public TableNew2_Gsi -.public TableRemove_Gsi -.public TeamOpFloat -.public TeamOpInt -.public TeamOpString -.public Util_RandSeed diff --git a/asm/include/overlay_00_0230E460.inc b/asm/include/overlay_00_0230E460.inc new file mode 100644 index 00000000..b0b32aa5 --- /dev/null +++ b/asm/include/overlay_00_0230E460.inc @@ -0,0 +1,302 @@ +#pragma once +.public ArrayAppend_Gsi +.public ArrayClear_Gsi +.public ArrayDeleteAt_Gsi +.public ArrayFree_Gsi +.public ArrayInsertSorted_Gsi +.public ArrayLength_Gsi +.public ArrayNew_Gsi +.public ArrayNth_Gsi +.public ArrayRemoveAt_Gsi +.public BucketAdd_Gsi +.public BucketAvg_Gsi +.public BucketConcat_Gsi +.public BucketDiv_Gsi +.public BucketMult_Gsi +.public BucketSet +.public BucketSub_Gsi +.public CanReceiveOnSocket +.public CanSendOnSocket +.public GoaGetLastError +.public GsDebugAssert +.public Gt2CloseAllConnectionsHard +.public Gti2AllocateBuffer +.public Gti2BufferShorten +.public Gti2BufferWriteByte +.public Gti2BufferWriteData +.public Gti2BufferWriteUShort +.public Gti2CheckResponse +.public Gti2ClosedCallback +.public Gti2ConnectAttemptCallback +.public Gti2ConnectedCallback +.public Gti2ConnectionCleanup +.public Gti2ConnectionClosed +.public Gti2ConnectionSendData +.public Gti2ConnectionThink +.public Gti2DumpCallback +.public Gti2GetBufferFreeSpace +.public Gti2GetChallenge +.public Gti2GetResponse +.public Gti2NewIncomingConnection +.public Gti2PingCallback +.public Gti2ReceiveFilterCallback +.public Gti2ReceivedCallback +.public Gti2SocketErrorCallback +.public Gti2UnrecognizedMessageCallback +.public IsPrivateIP +.public OS_SnPrintf +.public OS_VsPrintf +.public PlayerOpFloat +.public PlayerOpInt +.public PlayerOpString +.public ServerOpFloat +.public ServerOpInt +.public ServerOpString +.public Soc_GetHostByName +.public Soc_InetNtoA +.public SocketBind +.public SocketClose +.public SocketConnect +.public SocketCreate +.public SocketRecv +.public SocketRecvFrom +.public SocketSend +.public SocketSendTo +.public SocketShutDown_Gsi +.public SocketStartUp_Ghi +.public Std_TsScanf +.public TableCount_Gsi +.public TableEnter_Gsi +.public TableFree_Gsi +.public TableLookup_Gsi +.public TableMapSafe2_Gsi +.public TableNew2_Gsi +.public TableRemove_Gsi +.public TeamOpFloat +.public TeamOpInt +.public TeamOpString +.public _020AECB0 +.public _020AEDB0 +.public _msl_strnicmp__0208E248 +.public _s32_div_f +.public _u32_div_f +.public abs +.public atoi +.public current_time_gsi +.public getlocalhost_gsi +.public getsockname_gsi +.public goastrdup +.public gsifree +.public gsimalloc +.public inet_addr_gsi +.public memcmp +.public memcpy +.public memmove +.public memset +.public msleep_gsi +.public ov00_02317FC0 +.public ov00_02317FD4 +.public ov00_02317FE8 +.public ov00_02317FFC +.public ov00_02318010 +.public ov00_02318024 +.public ov00_02318038 +.public ov00_02318138 +.public ov00_02318760 +.public ov00_02318768 +.public ov00_02318780 +.public ov00_02318830 +.public ov00_023188C4 +.public ov00_023188C8 +.public ov00_023188EC +.public ov00_023188F4 +.public ov00_02318900 +.public ov00_0231890C +.public ov00_02318B00 +.public ov00_02318B1C +.public ov00_02318B2C +.public ov00_02318B3C +.public ov00_02318B58 +.public ov00_02318BE4 +.public ov00_02319088 +.public ov00_02319238 +.public ov00_0231923C +.public ov00_02319240 +.public ov00_02319244 +.public ov00_02319248 +.public ov00_0231924C +.public ov00_02319250 +.public ov00_02319254 +.public ov00_02319258 +.public ov00_0231925C +.public ov00_02319260 +.public ov00_02319264 +.public ov00_02319354 +.public ov00_02319398 +.public ov00_0231939C +.public ov00_023193B0 +.public ov00_023193E4 +.public ov00_023194E4 +.public ov00_023194E8 +.public ov00_023194FC +.public ov00_02319534 +.public ov00_02319634 +.public ov00_02319638 +.public ov00_0231964C +.public ov00_0231969C +.public ov00_0231971C +.public ov00_02319720 +.public ov00_02319734 +.public ov00_02319760 +.public ov00_023197E0 +.public ov00_023197E4 +.public ov00_023197F8 +.public ov00_02319848 +.public ov00_023198C8 +.public ov00_023198CC +.public ov00_023198E0 +.public ov00_02319960 +.public ov00_023199E8 +.public ov00_023199EC +.public ov00_02319A00 +.public ov00_02319A80 +.public ov00_02319B00 +.public ov00_02319B04 +.public ov00_02319B18 +.public ov00_02319B98 +.public ov00_02319C2C +.public ov00_02319C30 +.public ov00_02319C44 +.public ov00_02319CE0 +.public ov00_02319DE0 +.public ov00_02319DE4 +.public ov00_02319DF8 +.public ov00_02319E3C +.public ov00_02319EBC +.public ov00_02319EC0 +.public ov00_02319ED4 +.public ov00_02319F18 +.public ov00_02319F98 +.public ov00_02319F9C +.public ov00_02319FB0 +.public ov00_02319FE0 +.public ov00_0231A44C +.public ov00_0231A450 +.public ov00_0231A464 +.public ov00_0231A4B4 +.public ov00_0231BE28 +.public ov00_0231BEF8 +.public ov00_0231BF00 +.public ov00_0231BF04 +.public ov00_0231BF0C +.public ov00_0231BF10 +.public ov00_0231BF14 +.public ov00_0231BF18 +.public ov00_0231BF24 +.public ov00_0231BF2C +.public ov00_0231BF34 +.public ov00_0231BF50 +.public ov00_0231BF6C +.public ov00_0231BF88 +.public ov00_0231BF8C +.public ov00_0231CD20 +.public ov00_0231CD40 +.public ov00_0231CD78 +.public ov00_0231CD7C +.public ov00_0231CD8C +.public ov00_0231CD98 +.public ov00_0231CDA0 +.public ov00_0231CDA4 +.public ov00_0231CDB0 +.public ov00_0231CDB8 +.public ov00_0231CDC4 +.public ov00_0231CDD0 +.public ov00_0231CDD8 +.public ov00_0231CDDC +.public ov00_0231CDE0 +.public ov00_0231CDF0 +.public ov00_0231CDFC +.public ov00_0231CE08 +.public ov00_0231CE14 +.public ov00_0231CE18 +.public ov00_0231CE20 +.public ov00_0231CE28 +.public ov00_0231CE30 +.public ov00_0231CE38 +.public ov00_0231CE40 +.public ov00_0231CE48 +.public ov00_0231CE50 +.public ov00_0231CE58 +.public ov00_0231CE60 +.public ov00_0231CE68 +.public ov00_0231CE70 +.public ov00_0231CE78 +.public ov00_0231CE80 +.public ov00_0231CE88 +.public ov00_0231CE94 +.public ov00_0231CEA0 +.public ov00_0231CEAC +.public ov00_0231CEB8 +.public ov00_0231CEC4 +.public ov00_0231CED0 +.public ov00_0231CEDC +.public ov00_0231CEE8 +.public ov00_0231CEF4 +.public ov00_0231CF00 +.public ov00_0231CF0C +.public ov00_0231CF18 +.public ov00_0231CF24 +.public ov00_0231CF30 +.public ov00_0231CF3C +.public ov00_0231CF48 +.public ov00_0231CF58 +.public ov00_0231CF68 +.public ov00_0231D360 +.public ov00_0231D370 +.public ov00_0231D37C +.public ov00_0231D388 +.public ov00_0231D390 +.public ov00_0231D398 +.public ov00_0231D3A0 +.public ov00_0231D3A4 +.public ov00_0231D3AC +.public ov00_0231D3B0 +.public ov00_0231D3B8 +.public ov00_0231D3C4 +.public ov00_0231D3C8 +.public ov00_0231D3CC +.public ov00_0231D3DC +.public ov00_0231D3E0 +.public ov00_0231D3FC +.public ov00_02328800 +.public ov00_02328804 +.public ov00_02328E1C +.public ov00_02328E20 +.public ov00_02328E4C +.public ov00_02328E98 +.public ov00_02329098 +.public ov00_023290A0 +.public ov00_023290C4 +.public ov00_0232919C +.public ov00_0232939C +.public ov00_023293A0 +.public ov00_023293B4 +.public ov00_023293F4 +.public ov00_023294F4 +.public ov00_023294FC +.public ov00_02329500 +.public ov08_0233E230 +.public ov08_0233E2BC +.public ov08_0233E7D8 +.public ov09_0233CA80 +.public ov09_0233CBC8 +.public ov09_0233CBF8 +.public rand +.public srand +.public strcasecmp +.public strchr +.public strcmp +.public strcpy +.public strlen +.public strncmp +.public strstr diff --git a/asm/include/overlay_01.inc b/asm/include/overlay_01.inc index 845dd00f..76ad2630 100644 --- a/asm/include/overlay_01.inc +++ b/asm/include/overlay_01.inc @@ -1,14 +1,10 @@ #pragma once -.public _020B0A5C -.public _ll_udiv -.public _s32_div_f -.public _u32_div_f -.public _ull_mod .public AllocateTemp1024ByteBufferFromPool .public AppendStandardStringToMission .public BAG_ITEMS_PTR_MIRROR .public BitstreamDebug -.public CardBackupError +.public CLEAR_MARK_PERFORMANCE_PROGRESS_FLAGS +.public CONTINUE_CHOICE .public CheckParentMenuField0x1A0 .public CheckSimpleMenuField0x1A0 .public CloseAdvancedMenu @@ -38,9 +34,6 @@ .public DisplayAndSwitchAnimationControlCurrentFrame .public DrawChar .public DrawTextInWindow -.public Dwc_ProcessFriendsMatch -.public Dwc_ShutdownFriendsMatch -.public Dwci_RankingSessionGetResponse .public EnableIrqFlag .public FemaleToMaleForm .public FillOamAttributeInfo @@ -85,7 +78,6 @@ .public GetTeamMember .public GetVictoriesOnOneFloor .public GetWindowIdSelectedItemOnPage -.public InitAnimationControl .public InitAnimationControlWithSet__0201C0B0 .public InitBitstreamForRead .public InitBitstreamForWrite @@ -112,99 +104,28 @@ .public LoadScriptVariableValueAtIndex .public LoadWanTableEntry .public LoadWanTableEntryFromPack +.public MAIN_DEBUG_MENU_ITEMS_1 +.public MAIN_DEBUG_MENU_ITEMS_2 +.public MAIN_MENU +.public MAIN_MENU_ITEMS_CONFIRM +.public MAIN_MENU_WINDOW_PARAMS_1 +.public MAIN_MENU_WINDOW_PARAMS_10 +.public MAIN_MENU_WINDOW_PARAMS_2 +.public MAIN_MENU_WINDOW_PARAMS_3 +.public MAIN_MENU_WINDOW_PARAMS_4 +.public MAIN_MENU_WINDOW_PARAMS_5 +.public MAIN_MENU_WINDOW_PARAMS_6 +.public MAIN_MENU_WINDOW_PARAMS_7 +.public MAIN_MENU_WINDOW_PARAMS_8 +.public MAIN_MENU_WINDOW_PARAMS_9 +.public MTi_CpuCopy32 .public MaybeGetFormattedItemName .public MemAlloc -.public MemcpySimple .public MemFree -.public MemsetSimple .public MemZero -.public MTi_CpuCopy32 -.public NoteSaveBase -.public ov00_022BCA80 -.public ov00_022BCBAC -.public ov00_022BCC30 -.public ov00_022BCC90 -.public ov00_022BCCAC -.public ov00_022BCCC8 -.public ov00_022BCCF4 -.public ov00_022BCD10 -.public ov00_022BCD2C -.public ov00_022BD0A0 -.public ov00_022BD13C -.public ov00_022BD170 -.public ov00_022BD1A0 -.public ov00_022BD1D4 -.public ov00_022BD21C -.public ov00_022BD264 -.public ov00_022BD274 -.public ov00_022BD284 -.public ov00_022BD2C0 -.public ov00_022BD3F4 -.public ov00_022BD480 -.public ov00_022BD4DC -.public ov00_022BD4EC -.public ov00_022BD5C8 -.public ov00_022BD5EC -.public ov00_022BD660 -.public ov00_022BD690 -.public ov00_022BD6E0 -.public ov00_022BD6F4 -.public ov00_022BD708 -.public ov00_022BD71C -.public ov00_022BD780 -.public ov00_022BD798 -.public ov00_022BD7B8 -.public ov00_022BD7D8 -.public ov00_022BD7E8 -.public ov00_022BD870 -.public ov00_022BD8FC -.public ov00_022BD908 -.public ov00_022BD918 -.public ov00_022BD95C -.public ov00_022BD968 -.public ov00_022BD980 -.public ov00_022BD99C -.public ov00_022BD9E8 -.public ov00_022BDA68 -.public ov00_022BDA74 -.public ov00_022BDA94 -.public ov00_022BDACC -.public ov00_022BDADC -.public ov00_022BDB04 -.public ov00_022BDB38 -.public ov00_022BDB6C -.public ov00_022BDBA8 -.public ov00_022BDBE4 -.public ov00_022BDC6C -.public ov00_022BDCB8 -.public ov00_022BDE24 -.public ov00_022BE094 -.public ov00_022BE0B4 -.public ov00_022BE4A8 -.public ov00_022BE618 -.public ov00_022BE630 -.public ov00_022BE64C -.public ov00_022BE6AC -.public ov00_022BE6C0 -.public ov03_0233CB08 -.public ov03_0233CB94 -.public ov03_0233CF9C -.public ov04_0233CBB8 -.public ov04_0233CC4C -.public ov04_0233D1A0 -.public ov05_0233CB9C -.public ov05_0233CC10 -.public ov05_0233D398 -.public ov06_0233D51C -.public ov06_0233D5A4 -.public ov06_0233DCC0 -.public ov06_0233E958 -.public ov06_0233EA1C -.public ov06_0233ECCC -.public ov07_0233F6E0 -.public ov07_0233F758 -.public ov07_0233FCD8 -.public ov09_0233D964 +.public MemcpySimple +.public MemsetSimple +.public PRINTS_STRUCT .public PlaySeVolumeWrapper .public PreprocessString .public PreprocessStringFromId @@ -213,6 +134,7 @@ .public RandInt .public ResumeAdvancedMenu .public ResumeParentMenu +.public SUBMENU .public SetAdvancedTextBoxState5 .public SetAnimationForAnimationControl .public SetDebugSpecialEpisodeNumber @@ -223,133 +145,14 @@ .public ShowKeyboard .public ShowStringIdInDialogueBox .public ShowStringInDialogueBox -.public sprintf -.public strcmp -.public strcpy .public StrcpyName .public StrcpySimple .public StringFromId .public StrncmpSimple .public StrncpyName .public StrncpySimpleNoPadSafe -.public sub_02002448 -.public sub_02003B5C -.public sub_02003B94 -.public sub_02003BC8 -.public sub_020062FC -.public sub_020063F4 -.public sub_02006C8C -.public sub_02008F64 -.public sub_02009194 -.public sub_020091B0 -.public sub_0200D214 -.public sub_0200DFBC -.public sub_0200DFE4 -.public sub_0200EB64 -.public sub_0201C138 -.public sub_0201D12C -.public sub_0202065C -.public sub_0202380C_EU -.public sub_020245D0 -.public sub_020253E0_JP -.public sub_02025404 -.public sub_0202544C -.public sub_02025480 -.public sub_02025D50 -.public sub_0202737C -.public sub_02027B1C -.public sub_020288FC -.public sub_02029F88 -.public sub_02029FBC -.public sub_0202A2A4 -.public sub_0202B0A4 -.public sub_0202BC28 -.public sub_0202BC60 -.public sub_0202BD48 -.public sub_0202C38C -.public sub_0202F334 -.public sub_0202F954 -.public sub_02030978 -.public sub_02031914 -.public sub_02035CE4 -.public sub_02036324 -.public sub_0203656C -.public sub_02037468 -.public sub_0203909C -.public sub_02039218 -.public sub_02039304 -.public sub_0203931C -.public sub_020467F0 -.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_02046D44 -.public sub_02048454 -.public sub_02048480 -.public sub_020484C0 -.public sub_020485EC -.public sub_02048C3C -.public sub_0204964C -.public sub_02049D4C -.public sub_0204a1cc -.public sub_0204A1CC -.public sub_0204DF54 -.public sub_0204DFB0 -.public sub_0204E02C -.public sub_0204E0A0 -.public sub_0204E210 -.public sub_0204E2DC -.public sub_0204E3C8 -.public sub_0204E40C -.public sub_0204E464 -.public sub_0204E4BC -.public sub_0204E4EC -.public sub_0204E530 -.public sub_0204E644 -.public sub_0204E6A4 -.public sub_0204F9E0 -.public sub_02050CD0 -.public sub_02052060 -.public sub_020547C8 -.public sub_020547D8 -.public sub_02054824 -.public sub_02055E14 -.public sub_02057030 -.public sub_020590DC -.public sub_02059AE8 -.public sub_02059AF8 -.public sub_0205B554 -.public sub_0205B5A8 -.public sub_0205B77C -.public sub_0205B80C -.public sub_0205BBA4 -.public sub_020851AC .public UpdateWindow -.public vsprintf .public WAN_TABLE -.public Wbt_AidbitmapToAid -.public Wbt_CancelCurrentCommand -.public Wbt_End -.public Wbt_GetBlock -.public Wbt_GetBlockInfo -.public Wbt_InitChild -.public Wbt_InitParent -.public Wbt_MpChildRecvHook -.public Wbt_MpChildSendHook -.public Wbt_MpParentRecvHook -.public Wbt_MpParentSendHook -.public Wbt_PrintBtList -.public Wbt_PutUserData -.public Wbt_RegisterBlock -.public Wbt_RequestSync -.public Wbt_SetOwnAid -.public Wbt_UnregisterBlock .public WM_Disable .public WM_Enable .public WM_EndDataSharing__022C1278 @@ -376,3 +179,232 @@ .public WM_StartMP .public WM_StartParent .public WM_StartScan +.public Wbt_AidbitmapToAid +.public Wbt_CancelCurrentCommand +.public Wbt_End +.public Wbt_GetBlock +.public Wbt_GetBlockInfo +.public Wbt_InitChild +.public Wbt_InitParent +.public Wbt_MpChildRecvHook +.public Wbt_MpChildSendHook +.public Wbt_MpParentRecvHook +.public Wbt_MpParentSendHook +.public Wbt_PrintBtList +.public Wbt_PutUserData +.public Wbt_RegisterBlock +.public Wbt_RequestSync +.public Wbt_SetOwnAid +.public Wbt_UnregisterBlock +.public _020B0A5C +.public _ll_udiv +.public _s32_div_f +.public _u32_div_f +.public _ull_mod +.public ov00_022BCA80 +.public ov00_022BCBAC +.public ov00_022BCCC8 +.public ov00_022BCCF4 +.public ov00_022BD13C +.public ov00_022BD284 +.public ov00_022BD2C0 +.public ov00_022BD5C8 +.public ov00_022BD5EC +.public ov00_022BD660 +.public ov00_022BD690 +.public ov00_022BD6E0 +.public ov00_022BD6F4 +.public ov00_022BD708 +.public ov00_022BD71C +.public ov00_022BE094 +.public ov00_022BE0B4 +.public ov00_022BE4A8 +.public ov00_022BE618 +.public ov00_022BE630 +.public ov00_022BE64C +.public ov00_022BE6AC +.public ov00_022BE6C0 +.public ov01_0233755C +.public ov01_0233758C +.public ov01_023375A0 +.public ov01_023375E0 +.public ov01_023375F4 +.public ov01_02337634 +.public ov01_02337668 +.public ov01_02337914 +.public ov01_0233AE78 +.public ov01_0233AEF8 +.public ov01_0233AF10 +.public ov01_0233AF14 +.public ov01_0233AF3C +.public ov01_0233AF64 +.public ov01_0233AF88 +.public ov01_0233AFAC +.public ov01_0233AFD0 +.public ov01_0233AFEC +.public ov01_0233AFFC +.public ov01_0233B020 +.public ov01_0233B034 +.public ov01_0233B058 +.public ov01_0233B06C +.public ov01_0233B090 +.public ov01_0233B0E0 +.public ov01_0233B104 +.public ov01_0233B118 +.public ov01_0233B318 +.public ov01_0233B504 +.public ov01_0233B558 +.public ov01_0233B670 +.public ov01_0233B678 +.public ov01_0233B6A4 +.public ov01_0233B6B0 +.public ov01_0233B6BC +.public ov01_0233B700 +.public ov01_0233B70C +.public ov01_0233B798 +.public ov01_0233B7BC +.public ov01_0233B7C4 +.public ov01_0233B7E0 +.public ov01_0233B800 +.public ov01_0233B880 +.public ov01_0233B8C8 +.public ov01_0233B8D8 +.public ov01_0233B8E8 +.public ov01_0233BAF0 +.public ov01_0233BAF4 +.public ov01_0233BB04 +.public ov01_0233BB0C +.public ov01_0233BB14 +.public ov01_0233BB18 +.public ov01_0233BB28 +.public ov01_0233BB38 +.public ov01_0233BB48 +.public ov01_0233BB58 +.public ov01_0233BB68 +.public ov01_0233BB78 +.public ov01_0233BB88 +.public ov01_0233BB9E +.public ov01_0233BBB4 +.public ov01_0233BBCA +.public ov01_0233BBE4 +.public ov01_0233BC14 +.public ov01_0233BC44 +.public ov01_0233BC74 +.public ov01_0233BCA4 +.public ov01_0233BCAC +.public ov01_0233C0C0 +.public ov01_0233C0D8 +.public ov01_0233C0E0 +.public ov01_0233C100 +.public ov01_0233C140 +.public ov01_0233C144 +.public ov01_0233C148 +.public ov01_0233C14C +.public ov01_0233C150 +.public ov01_0233C158 +.public ov01_0233C15C +.public ov01_0233C160 +.public ov01_0233C164 +.public ov01_0233C168 +.public ov01_0233C174 +.public ov01_0233C178 +.public ov01_0233C184 +.public ov01_0233C188 +.public ov01_0233C190 +.public ov01_0233C198 +.public ov01_0233C1A0 +.public ov01_0233C1A8 +.public ov01_0233C1AC +.public ov01_0233C240 +.public ov01_0233C2C0 +.public ov01_0233C300 +.public ov01_0233C380 +.public ov01_0233C580 +.public ov01_0233C780 +.public ov01_0233C784 +.public ov01_0233C800 +.public ov01_0233C87C +.public ov01_0233C880 +.public ov01_0233C8FC +.public ov01_0233C978 +.public ov01_0233C9F4 +.public ov01_0233CA70 +.public ov01_0233CA78 +.public ov09_0233D964 +.public sprintf +.public strcmp +.public strcpy +.public sub_02002448 +.public sub_020062FC +.public sub_020063F4 +.public sub_02008F64 +.public sub_02009194 +.public sub_020091B0 +.public sub_0200D214 +.public sub_0200DFBC +.public sub_0200DFE4 +.public sub_0200EB64 +.public sub_0201C138 +.public sub_0201D12C +.public sub_0202065C +.public sub_0202380C_EU +.public sub_020245D0 +.public sub_020253E0_JP +.public sub_02025404 +.public sub_0202544C +.public sub_02025480 +.public sub_02025D50 +.public sub_0202737C +.public sub_02027B1C +.public sub_020288FC +.public sub_0202A2A4 +.public sub_0202B0A4 +.public sub_0202BC28 +.public sub_0202BC60 +.public sub_0202BD48 +.public sub_0202C38C +.public sub_0202F334 +.public sub_0202F954 +.public sub_02030978 +.public sub_02031914 +.public sub_02035CE4 +.public sub_02036324 +.public sub_0203656C +.public sub_02037468 +.public sub_0203909C +.public sub_02039218 +.public sub_02039304 +.public sub_0203931C +.public sub_02048454 +.public sub_02048480 +.public sub_020484C0 +.public sub_020485EC +.public sub_02048C3C +.public sub_0204964C +.public sub_02049D4C +.public sub_0204A1CC +.public sub_0204E210 +.public sub_0204E2DC +.public sub_0204E3C8 +.public sub_0204E40C +.public sub_0204E464 +.public sub_0204E4BC +.public sub_0204E4EC +.public sub_0204E530 +.public sub_0204E644 +.public sub_0204E6A4 +.public sub_0204F9E0 +.public sub_02050CD0 +.public sub_02052060 +.public sub_020547C8 +.public sub_020547D8 +.public sub_02054824 +.public sub_02055E14 +.public sub_02057030 +.public sub_02059AE8 +.public sub_02059AF8 +.public sub_0205B554 +.public sub_0205B5A8 +.public sub_0205BBA4 +.public sub_020851AC +.public vsprintf diff --git a/asm/include/overlay_01_02337634.inc b/asm/include/overlay_01_02337634.inc new file mode 100644 index 00000000..eee235f4 --- /dev/null +++ b/asm/include/overlay_01_02337634.inc @@ -0,0 +1,318 @@ +#pragma once +.public CardBackupError +.public CreateMainMenus +.public Debug_Print0 +.public GetHeldButtons +.public GetMainTeamNameWithCheck +.public GetPressedButtons +.public GetReleasedStylus +.public InitMenu +.public InitPreprocessorArgs +.public IsTouchScreenNotOff +.public MemAlloc +.public MemFree +.public MemZero +.public MemcpySimple +.public NoteSaveBase +.public PRINTS_STRINGS +.public StrcpyName +.public _s32_div_f +.public ov00_022BCA80 +.public ov00_022BCBAC +.public ov00_022BCC30 +.public ov00_022BCC90 +.public ov00_022BCCAC +.public ov00_022BCCC8 +.public ov00_022BCCF4 +.public ov00_022BCD10 +.public ov00_022BCD2C +.public ov00_022BD0A0 +.public ov00_022BD170 +.public ov00_022BD1A0 +.public ov00_022BD1D4 +.public ov00_022BD21C +.public ov00_022BD264 +.public ov00_022BD274 +.public ov00_022BD2C0 +.public ov00_022BD3F4 +.public ov00_022BD480 +.public ov00_022BD4DC +.public ov00_022BD4EC +.public ov00_022BD780 +.public ov00_022BD798 +.public ov00_022BD7B8 +.public ov00_022BD7D8 +.public ov00_022BD7E8 +.public ov00_022BD870 +.public ov00_022BD8FC +.public ov00_022BD908 +.public ov00_022BD918 +.public ov00_022BD95C +.public ov00_022BD968 +.public ov00_022BD980 +.public ov00_022BD99C +.public ov00_022BD9E8 +.public ov00_022BDA68 +.public ov00_022BDA74 +.public ov00_022BDA94 +.public ov00_022BDACC +.public ov00_022BDADC +.public ov00_022BDB04 +.public ov00_022BDB38 +.public ov00_022BDB6C +.public ov00_022BDBA8 +.public ov00_022BDBE4 +.public ov00_022BDC6C +.public ov00_022BDCB8 +.public ov00_022BDE24 +.public ov00_022BE4A8 +.public ov01_0232ADC0 +.public ov01_0232AED4 +.public ov01_0232AF4C +.public ov01_0232AFB0 +.public ov01_0232AFC4 +.public ov01_0232B00C +.public ov01_0232B020 +.public ov01_0232B040 +.public ov01_0232B068 +.public ov01_0232B080 +.public ov01_0232B124 +.public ov01_0232B18C +.public ov01_0232B210 +.public ov01_0232B2CC +.public ov01_0232B420 +.public ov01_0232B540 +.public ov01_0232B5D0 +.public ov01_0232BDDC +.public ov01_0232BDF0 +.public ov01_0232BE08 +.public ov01_0232BE4C +.public ov01_0232C008 +.public ov01_0232C024 +.public ov01_0232C040 +.public ov01_0232C0CC +.public ov01_0232C10C +.public ov01_0232C148 +.public ov01_0232C1D8 +.public ov01_0232C2E4 +.public ov01_0232C370 +.public ov01_0232C3AC +.public ov01_0232C454 +.public ov01_0232C540 +.public ov01_0232C578 +.public ov01_0232C5AC +.public ov01_0232EDC0 +.public ov01_0232EDEC +.public ov01_0232EE34 +.public ov01_0232EE58 +.public ov01_0232EF28 +.public ov01_0232EF4C +.public ov01_0232EFE8 +.public ov01_0232F038 +.public ov01_0232F0C0 +.public ov01_0232F0E0 +.public ov01_0232F28C +.public ov01_0232F338 +.public ov01_0232F384 +.public ov01_0232F41C +.public ov01_0232F478 +.public ov01_0232F538 +.public ov01_0232F558 +.public ov01_0232F55C +.public ov01_0232F73C +.public ov01_0232F7BC +.public ov01_0232F7EC +.public ov01_0232F924 +.public ov01_0232F980 +.public ov01_0232FA30 +.public ov01_0232FA50 +.public ov01_0232FA54 +.public ov01_0232FC28 +.public ov01_0232FD00 +.public ov01_0232FD30 +.public ov01_0232FDC0 +.public ov01_0232FE1C +.public ov01_0232FECC +.public ov01_0232FEEC +.public ov01_0232FEF0 +.public ov01_023300C4 +.public ov01_0233019C +.public ov01_023301CC +.public ov01_02330224 +.public ov01_02330594 +.public ov01_023306DC +.public ov01_023306FC +.public ov01_02330700 +.public ov01_023309F4 +.public ov01_02330ACC +.public ov01_02330D58 +.public ov01_023316CC +.public ov01_02331784 +.public ov01_023329F8 +.public ov01_02332ACC +.public ov01_023336A0 +.public ov01_02333768 +.public ov01_02333794 +.public ov01_02333994 +.public ov01_023339F8 +.public ov01_02333A34 +.public ov01_02333C20 +.public ov01_02333C7C +.public ov01_02333CB8 +.public ov01_023371DC +.public ov01_02337210 +.public ov01_0233723C +.public ov01_0233AFD8 +.public ov01_0233B0A4 +.public ov01_0233B0B8 +.public ov01_0233B0CC +.public ov01_0233B134 +.public ov01_0233B13C +.public ov01_0233B144 +.public ov01_0233B14C +.public ov01_0233B154 +.public ov01_0233B15C +.public ov01_0233B164 +.public ov01_0233B16C +.public ov01_0233B174 +.public ov01_0233B17C +.public ov01_0233B184 +.public ov01_0233B18C +.public ov01_0233B194 +.public ov01_0233B19C +.public ov01_0233B1A4 +.public ov01_0233B1AC +.public ov01_0233B1B4 +.public ov01_0233B1BC +.public ov01_0233B1C4 +.public ov01_0233B1CC +.public ov01_0233B1D4 +.public ov01_0233B1DC +.public ov01_0233B1E4 +.public ov01_0233B1EC +.public ov01_0233B1F4 +.public ov01_0233B1FC +.public ov01_0233B204 +.public ov01_0233B20C +.public ov01_0233B214 +.public ov01_0233B21C +.public ov01_0233B224 +.public ov01_0233B22C +.public ov01_0233B234 +.public ov01_0233B23C +.public ov01_0233B244 +.public ov01_0233B24C +.public ov01_0233B254 +.public ov01_0233B25C +.public ov01_0233B264 +.public ov01_0233B26C +.public ov01_0233B274 +.public ov01_0233B27C +.public ov01_0233B284 +.public ov01_0233B28C +.public ov01_0233B294 +.public ov01_0233B29C +.public ov01_0233B2A4 +.public ov01_0233B2AC +.public ov01_0233B2B4 +.public ov01_0233B2BC +.public ov01_0233B2C4 +.public ov01_0233B2CC +.public ov01_0233B2D4 +.public ov01_0233B2DC +.public ov01_0233B2E4 +.public ov01_0233B2EC +.public ov01_0233B2F4 +.public ov01_0233B2FC +.public ov01_0233B304 +.public ov01_0233B30C +.public ov01_0233B8F8 +.public ov01_0233BCEC +.public ov01_0233BCFC +.public ov01_0233BD0C +.public ov01_0233BD1C +.public ov01_0233BD34 +.public ov01_0233BD48 +.public ov01_0233BD5C +.public ov01_0233BD70 +.public ov01_0233BD90 +.public ov01_0233BDAC +.public ov01_0233BDC8 +.public ov01_0233BDDC +.public ov01_0233BDF4 +.public ov01_0233BE0C +.public ov01_0233BE24 +.public ov01_0233BE48 +.public ov01_0233BE70 +.public ov01_0233BE88 +.public ov01_0233BEA4 +.public ov01_0233BEC4 +.public ov01_0233BEE0 +.public ov01_0233BEFC +.public ov01_0233BF18 +.public ov01_0233BF38 +.public ov01_0233BF54 +.public ov01_0233BF74 +.public ov01_0233BF94 +.public ov01_0233BFB0 +.public ov01_0233BFC8 +.public ov01_0233BFE0 +.public ov01_0233BFF8 +.public ov01_0233C01C +.public ov01_0233C030 +.public ov01_0233C03C +.public ov01_0233C050 +.public ov01_0233C068 +.public ov01_0233C088 +.public ov01_0233C0A4 +.public ov01_0233C1E0 +.public ov01_0233C1E8 +.public ov01_0233C1F4 +.public ov01_0233C1F8 +.public ov01_0233C210 +.public ov01_0233C21C +.public ov01_0233CA7C +.public ov03_0233CB08 +.public ov03_0233CB94 +.public ov03_0233CF9C +.public ov04_0233CBB8 +.public ov04_0233CC4C +.public ov04_0233D1A0 +.public ov05_0233CB9C +.public ov05_0233CC10 +.public ov05_0233D398 +.public ov06_0233D51C +.public ov06_0233D5A4 +.public ov06_0233DCC0 +.public ov06_0233E958 +.public ov06_0233EA1C +.public ov06_0233ECCC +.public ov07_0233F6E0 +.public ov07_0233F758 +.public ov07_0233FCD8 +.public sub_02003B5C +.public sub_02003B94 +.public sub_02003BC8 +.public sub_02006C8C +.public sub_02025404 +.public sub_02029F88 +.public sub_02029FBC +.public sub_020467F0 +.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_02046D44 +.public sub_0204A1CC +.public sub_0204DF54 +.public sub_0204DFB0 +.public sub_0204E02C +.public sub_0204E0A0 +.public sub_020590DC +.public sub_0205B77C +.public sub_0205B80C diff --git a/asm/include/overlay_04.inc b/asm/include/overlay_04_0233CAF8.inc similarity index 80% rename from asm/include/overlay_04.inc rename to asm/include/overlay_04_0233CAF8.inc index 8116b19c..50b8581a 100644 --- a/asm/include/overlay_04.inc +++ b/asm/include/overlay_04_0233CAF8.inc @@ -16,7 +16,6 @@ .public GetLanguageType .public GetMainTeamNameWithCheck .public GetPressedButtons -.public GetRankStorageSize .public GetStringFromFileVeneer .public IncrementNbSkyGiftsSent .public InitPreprocessorArgs @@ -33,6 +32,12 @@ .public MemFree .public MemZero .public NoteSaveBase +.public PlaySeVolumeWrapper +.public RandInt +.public RemoveItemAtIdxInStorage +.public StrncpySimpleNoPadSafe +.public UnloadFile +.public ZeroInitMissionRewardDataStruct .public ov01_0232B540 .public ov01_0232B5D0 .public ov01_0232E94C @@ -51,10 +56,30 @@ .public ov01_02337DD0 .public ov01_02337E0C .public ov01_0233C1DC -.public PlaySeVolumeWrapper -.public RandInt -.public RemoveItemAtIdxInStorage -.public StrncpySimpleNoPadSafe +.public ov04_0233CA80 +.public ov04_0233CA98 +.public ov04_0233CAA8 +.public ov04_0233CAB8 +.public ov04_0233CAC8 +.public ov04_0233CAD8 +.public ov04_0233CAE8 +.public ov04_0233F568 +.public ov04_0233F56C +.public ov04_0233F580 +.public ov04_0233F584 +.public ov04_0233F598 +.public ov04_0233F59C +.public ov04_0233F5B8 +.public ov04_0233F5BC +.public ov04_0233F5D8 +.public ov04_0233F5DC +.public ov04_0233F5F8 +.public ov04_0233F604 +.public ov04_0233F614 +.public ov04_0233F624 +.public ov04_0233F640 +.public ov04_0233F644 +.public ov04_0233F670 .public sub_02003B5C .public sub_02003B94 .public sub_02003BC8 @@ -87,5 +112,3 @@ .public sub_02046C78 .public sub_02046D20 .public sub_0204A018 -.public UnloadFile -.public ZeroInitMissionRewardDataStruct diff --git a/asm/include/overlay_06.inc b/asm/include/overlay_06_0233CAB8.inc similarity index 80% rename from asm/include/overlay_06.inc rename to asm/include/overlay_06_0233CAB8.inc index 87c63365..1c85af08 100644 --- a/asm/include/overlay_06.inc +++ b/asm/include/overlay_06_0233CAB8.inc @@ -20,10 +20,13 @@ .public IsSpecialEpisodeOpen .public IsTouchScreenNotOff .public MemAlloc -.public MemcpySimple .public MemFree .public MemZero +.public MemcpySimple .public NoteSaveBase +.public SetSpecialEpisodeOpen +.public ShowKeyboard +.public WonderMailPasswordToMission .public ov00_022BCA80 .public ov00_022BCBAC .public ov00_022BD264 @@ -53,8 +56,30 @@ .public ov01_02338EC4 .public ov01_02339888 .public ov01_023398A4 -.public SetSpecialEpisodeOpen -.public ShowKeyboard +.public ov06_0233CA80 +.public ov06_0233CA98 +.public ov06_0233CAA8 +.public ov06_0233ED04 +.public ov06_0233ED1C +.public ov06_0233ED34 +.public ov06_0233ED4C +.public ov06_0233ED64 +.public ov06_0233ED68 +.public ov06_0233ED84 +.public ov06_0233EDA4 +.public ov06_0233EDCC +.public ov06_0233EDD0 +.public ov06_0233EDD4 +.public ov06_0233EDFC +.public ov06_0233EE24 +.public ov06_0233EE4C +.public ov06_0233EE84 +.public ov06_0233EEC0 +.public ov06_0233EEC4 +.public ov06_0233EEC8 +.public ov06_0233EEE0 +.public ov06_0233EEEC +.public ov06_0233EEF0 .public sub_02003B94 .public sub_02003BC8 .public sub_02003BFC @@ -91,4 +116,3 @@ .public sub_02069D40 .public sub_02069D94 .public sub_02069DC0 -.public WonderMailPasswordToMission diff --git a/asm/include/overlay_10_022BCC7C.inc b/asm/include/overlay_10_022BCDF4.inc similarity index 54% rename from asm/include/overlay_10_022BCC7C.inc rename to asm/include/overlay_10_022BCDF4.inc index db130f5f..b47df376 100644 --- a/asm/include/overlay_10_022BCC7C.inc +++ b/asm/include/overlay_10_022BCDF4.inc @@ -1,48 +1,59 @@ #pragma once -.public _s32_div_f -.public abs -.public ClearWindow -.public ClosePortraitBox -.public CloseTextBox -.public CloseTextBox2 -.public CopyColorToPaletteDataRgba .public CreateInventoryMenu -.public CreatePortraitBox -.public CreateTextBox .public Debug_Print0 .public DeleteWanTableEntryVeneer -.public DeleteWindow .public DirectoryFileMngr_GetDirectoryFileSize .public DisplayAndSwitchAnimationControlCurrentFrame -.public DrawTextInWindow -.public EFFECT_ANIMATION_INFO .public FillOamAttributeInfo .public FillPaletteInitInfo -.public GendersEqual -.public GetBgRegionArea -.public GetBodySize .public GetCurrentBagCapacity -.public GetGameMode +.public GetEffectAnimation +.public GetItemAnimation1 +.public GetItemAnimation2 .public GetItemAtIdx -.public GetMonsterGenderVeneer +.public GetMoveAnimation +.public GetSpecialMonsterMoveAnimation +.public GetTrapAnimation .public GetWindowContents -.public HidePortraitBox .public InitAnimationControlWithSet__0201C0B0 -.public InitPortraitParams -.public InitPortraitParamsWithMonsterId -.public InitPreprocessorArgs -.public ITEM_ANIMATION_INFO .public LoadObjPalette .public LoadWanTableEntryFromPack -.public MarkPaletteDataAsNeedingUpdate .public MaybeGetFormattedItemName .public MemAlloc -.public Memcpy32 .public MemFree .public MemZero -.public MOVE_ANIMATION_INFO -.public MultiplyByFixedPoint .public OBJ_GRAPHICS_CONTROLS_PTR +.public PlaySeByIdVolumeWrapper +.public SetAnimationControlPausedFlag +.public SetAnimationForAnimationControl +.public SetSpriteIdForAnimationControl +.public SwitchAnimationControlToNextFrame +.public TEAM_MEMBER_TABLE_PTR +.public UnkMapRelatedFunc +.public UpdateWindow +.public WAN_TABLE +.public _s32_div_f +.public abs +.public ov10_022BCCB0 +.public ov10_022BFE3C +.public ov10_022BFE54 +.public ov10_022BFE6C +.public ov10_022BFF30 +.public ov10_022BFF78 +.public ov10_022BFFA4 +.public ov10_022C0114 +.public ov10_022C01FC +.public ov10_022C0280 +.public ov10_022C039C +.public ov10_022C03F4 +.public ov10_022C0450 +.public ov10_022C04CC +.public ov10_022C04D8 +.public ov10_022C055C +.public ov10_022C0588 +.public ov10_022C05E0 +.public ov10_022C07D0 +.public ov10_022C07E8 .public ov10_022C43A4 .public ov10_022C43B0 .public ov10_022C43C0 @@ -63,76 +74,25 @@ .public ov10_022C79AC .public ov10_022C79D8 .public ov10_022C7A18 -.public ov10_022C7A86 -.public ov10_022C9070 -.public ov10_022DBFB0 -.public ov10_022DBFB2 -.public ov10_022DBFB6 -.public ov10_022DBFBA -.public ov10_022DBFBE -.public ov10_022DBFCC -.public ov10_022DBFDC -.public ov10_022DBFEC -.public ov10_022DBFFC -.public ov10_022DC00C -.public ov10_022DC014 -.public ov10_022DC02C -.public ov10_022DC058 -.public ov10_022DC06C -.public ov10_022DC080 .public ov10_022DC1C0 -.public ov10_022DC1C4 -.public ov10_022DC1C8 -.public ov10_022DC1CC -.public ov10_022DC1D0 -.public ov10_022DC1D4 -.public ov10_022DC214 .public ov10_022DC220 -.public ov10_022DD718_JP -.public ov10_022DD71C_JP .public ov11_023061CC .public ov11_02306C64 .public ov11_02306C9C -.public ov29_022DD83C -.public ov29_0234C584 -.public ov29_0234C5EC -.public PlaySeByIdVolumeWrapper -.public PreprocessString -.public Rand16Bit -.public SetAndPlayAnimationForAnimationControl -.public SetAnimationControlPausedFlag -.public SetAnimationForAnimationControl -.public SetPortraitEmotion -.public SetPortraitLayout -.public SetPortraitOffset -.public SetSpriteIdForAnimationControl -.public ShowPortraitInPortraitBox -.public SPECIAL_MONSTER_MOVE_ANIMATION_INFO -.public StartFadeDungeonWrapper -.public strcmp .public strcpy .public sub_02001808 -.public sub_0200B330 -.public sub_0200B3FC .public sub_0201C108 -.public sub_0201C138 -.public sub_0201CF80 -.public sub_0201D034 .public sub_0201D0F8 -.public sub_0201D12C .public sub_0201D1B0 .public sub_0201D9C8 .public sub_0201DA20 .public sub_0201DBB8 .public sub_0201E184 -.public sub_02025010_EU .public sub_020263C8 .public sub_02027B1C .public sub_0202810C .public sub_0202812C .public sub_0202830C -.public sub_0202836C -.public sub_02028770 .public sub_020287C4 .public sub_02028980 .public sub_0202A0B0 @@ -146,14 +106,8 @@ .public sub_020330EC .public sub_02033350 .public sub_020333D8 -.public sub_020333FC .public sub_02033414 .public sub_02033F30 -.public sub_02051DFC -.public sub_02051ED4 -.public sub_02051FB4 -.public sub_020522F0 -.public sub_02052334 .public sub_020534BC .public sub_02055CCC .public sub_020562B8 @@ -163,20 +117,10 @@ .public sub_02063A0C .public sub_02063DE4 .public sub_02063E44 -.public sub_02063FC8 -.public sub_02063FF4 -.public sub_02064014 -.public sub_0206409C .public sub_020640BC .public sub_020640CC .public sub_020640D4 .public sub_020640DC .public sub_0206423C .public sub_020642A8 -.public SwitchAnimationControlToNextFrame -.public TEAM_MEMBER_TABLE_PTR -.public TRAP_ANIMATION_INFO -.public UnkMapRelatedFunc -.public UpdateWindow .public vsprintf -.public WAN_TABLE diff --git a/asm/include/overlay_10_022BFF78.inc b/asm/include/overlay_10_022BFF78.inc new file mode 100644 index 00000000..a61e269c --- /dev/null +++ b/asm/include/overlay_10_022BFF78.inc @@ -0,0 +1,96 @@ +#pragma once +.public ClearWindow +.public ClosePortraitBox +.public CloseTextBox +.public CloseTextBox2 +.public CopyColorToPaletteDataRgba +.public CreatePortraitBox +.public CreateTextBox +.public DeleteWanTableEntryVeneer +.public DisplayAndSwitchAnimationControlCurrentFrame +.public DrawTextInWindow +.public GendersEqual +.public GetBgRegionArea +.public GetBodySize +.public GetGameMode +.public GetMonsterGenderVeneer +.public HidePortraitBox +.public InitAnimationControlWithSet__0201C0B0 +.public InitPortraitParams +.public InitPortraitParamsWithMonsterId +.public InitPreprocessorArgs +.public LoadWanTableEntryFromPack +.public MarkPaletteDataAsNeedingUpdate +.public MemAlloc +.public MemFree +.public MemZero +.public Memcpy32 +.public MultiplyByFixedPoint +.public PreprocessString +.public Rand16Bit +.public SetAndPlayAnimationForAnimationControl +.public SetPortraitEmotion +.public SetPortraitLayout +.public SetPortraitOffset +.public SetSpriteIdForAnimationControl +.public ShowPortraitInPortraitBox +.public StartFadeDungeonWrapper +.public SwitchAnimationControlToNextFrame +.public UnkMapRelatedFunc +.public UpdateWindow +.public WAN_TABLE +.public abs +.public ov10_022BD744 +.public ov10_022BDCA4 +.public ov10_022BFE0C +.public ov10_022BFE18 +.public ov10_022BFE28 +.public ov10_022DBFB0 +.public ov10_022DBFB2 +.public ov10_022DBFB6 +.public ov10_022DBFBA +.public ov10_022DBFBE +.public ov10_022DBFCC +.public ov10_022DBFDC +.public ov10_022DBFEC +.public ov10_022DBFFC +.public ov10_022DC00C +.public ov10_022DC014 +.public ov10_022DC02C +.public ov10_022DC058 +.public ov10_022DC06C +.public ov10_022DC080 +.public ov10_022DC1C4 +.public ov10_022DC1C8 +.public ov10_022DC1CC +.public ov10_022DC1D0 +.public ov10_022DC1D4 +.public ov10_022DC214 +.public ov10_022DD718_JP +.public ov10_022DD71C_JP +.public ov29_022DD83C +.public ov29_0234C584 +.public ov29_0234C5EC +.public strcmp +.public strcpy +.public sub_0200B330 +.public sub_0200B3FC +.public sub_0201C138 +.public sub_0201CF80 +.public sub_0201D034 +.public sub_0201D12C +.public sub_0201D1B0 +.public sub_02025010_EU +.public sub_02027B1C +.public sub_0202836C +.public sub_02028770 +.public sub_02051DFC +.public sub_02051ED4 +.public sub_02051FB4 +.public sub_020522F0 +.public sub_02052334 +.public sub_02063FC8 +.public sub_02063FF4 +.public sub_02064014 +.public sub_0206409C +.public vsprintf diff --git a/asm/include/overlay_11.inc b/asm/include/overlay_11.inc index 3c697bb9..5510a7eb 100644 --- a/asm/include/overlay_11.inc +++ b/asm/include/overlay_11.inc @@ -1,198 +1,85 @@ #pragma once -.public AddBulkItemToStorage -.public AddMissionToJobList -.public AllocAndInitPartnerFollowDataAndLiveActorList -.public C_ROUTINES .public CalcAndUpdateScriptVarWithOtherScriptVar .public CalcAndUpdateScriptVarWithOtherValue .public CalcScriptVariablesVeneer .public CheckMissionRestrictions .public ClampComponentAbs -.public CloseDialogueBox -.public ClosePortraitBox .public CompareScriptVariablesVeneer -.public ComputeSpecialCounters -.public CountItemTypeInBag -.public CountItemTypeInStorage -.public CountNbItemsOfTypeInBag -.public CreateDialogueBox -.public CreateMemArena -.public CreatePortraitBox .public Debug_FatalError .public Debug_GetDebugFlag .public Debug_GetLogFlag .public Debug_Print -.public Debug_Print0 -.public DecrementEggHatchTimer .public DefaultInitScriptVariable .public DrawTeamStats -.public DungeonRequestsDoneWrapper .public DungeonSwapIdxToId .public EnableAllLearnableIqSkills .public EuclideanNorm__02005050 -.public FileClose -.public FileRom_HandleOpen -.public FileRom_HandleRead -.public FileRom_HandleSeek -.public FileRom_InitDataTransfer -.public FileRom_StopDataTransfer -.public FileRom_Veneer_FileInit -.public FreeMissionRewardStructMain .public FreeTeamStats -.public G3X_Reset -.public GROUND_MEMORY_ARENA_1 -.public GenerateCroagunkItems -.public GenerateDailyMissions -.public GenerateKecleonItems1 -.public GenerateKecleonItems2 -.public GetAcceptedMission .public GetActiveTeamMember .public GetActorMatchingStorageId +.public GetCoroutineInfo .public GetDungeonMode -.public GetDungeonModeSpecial -.public GetExecuteSpecialEpisodeType -.public GetFirstUnequippedItemOfType .public GetGameMode -.public GetHeldButtons .public GetHero .public GetHpBoostFromExclusiveItems -.public GetItemAtIdx -.public GetLanguage .public GetLiveActorIdxFromScriptEntityId -.public GetMainCharacter1MemberIdx -.public GetMainCharacter2MemberIdx -.public GetNameRaw -.public GetPartner -.public GetPartyMembers -.public GetPressedButtons -.public GetRank .public GetRecoloredTeamMemberName -.public GetRecruitMentryIdBySpecies -.public GetReleasedStylus .public GetResolvedPerformanceProgressFlag -.public GetScenarioBalance .public GetScriptEntityMonsterId -.public GetSosMailCount -.public GetStringFromFileVeneer .public GetTalkLine -.public GetTeamMember .public GetType -.public GetUnitNpcIds -.public GroupOamAttributesBothScreens -.public HandleMenus -.public IncrementNbBigTreasureWins -.public IncrementNbDungeonsCleared -.public IncrementNbSkyGiftsSent .public InitBulkItem -.public InitMainTeamAfterQuiz .public InitPartnerFollowDataAndLiveActorList .public InitPortraitParams .public InitPortraitParamsWithMonsterId .public InitPreprocessorArgs -.public InitSpecialEpisodeExtraPartner -.public InitSpecialEpisodePartners -.public InitStandardItem .public IqSkillFlagTest -.public IsBagFull -.public IsDialogueBoxActive .public IsMePlaying -.public IsMonsterOnTeam .public IsScreenFadeInProgress -.public IsStorageFull .public IsStoryAfterPoint .public IsStoryAtOrAfterPoint .public IsStoryAtPoint .public IsStoryBeforeOrAtPoint .public IsStoryBeforePoint -.public IsTouchScreenNotOff .public ItemAtTableIdx -.public KeyWaitInit .public LOCK_NOTIFY_ARRAY .public LoadAndCompareScriptVarAndValue .public LoadAndCompareScriptVars -.public LoadChanseyDaycareOverlay -.public LoadChimechoAssemblyOverlay -.public LoadCroagunkSwapShopOverlay -.public LoadDuskullBankOverlay -.public LoadElectivireLinkShopOverlay .public LoadFileFromRom -.public LoadKangaskhanOverlay -.public LoadKecleonShopOverlay -.public LoadLuminousSpringOverlay -.public LoadOverlay -.public LoadRecycleShopOverlay -.public LoadRecycleShopOverlayInit -.public LoadRecycleShopOverlayResume -.public LoadRuleDungeonEffectsOverlay -.public LoadScriptVarValuePair .public LoadScriptVariableValue .public LoadScriptVariableValueAtIndex .public LoadScriptVariableValueSum -.public LoadSpecialEpisodeDiscardOverlay1 -.public LoadSpecialEpisodeDiscardOverlay2 -.public LoadSpindaCafeOverlayInit -.public LoadSpindaCafeOverlayResume -.public LoadXatuAppraisalOverlay .public MemAlloc -.public MemArenaAlloc .public MemFree -.public MemZero -.public MemsetSimple -.public MissionRewardValidateDungeonId .public OVERLAY11_DEBUG_STRINGS .public PlayBgmByIdVeneer .public PlayBgmByIdVolumeVeneer .public PlaySeByIdVolumeWrapper .public PreprocessString -.public PreprocessStringFromId -.public RECRUITMENT_TABLE_LEVELS -.public RECRUITMENT_TABLE_LOCATIONS -.public RECRUITMENT_TABLE_SPECIES .public RandInt -.public RandomizeDemoActors -.public RemoveBulkItemInStorage -.public RemoveItemNoHole -.public RollRandomItemReward .public SCRIPT_COMMAND_PARSING_DATA .public SCRIPT_OP_CODES .public SaveScriptVariableValue .public SaveScriptVariableValueAtIndex +.public ScriptParamToFixedPoint16 +.public ScriptParamToInt .public ScriptSpecialProcess0x16 -.public SetActorTalkMain -.public SetActorTalkSub +.public ScriptSpecialProcessCall .public SetAdventureLogCompleted -.public SetBaseStatsMovesGroundMonster -.public SetDungeonConquest .public SetEnterDungeon -.public SetMemAllocatorParams -.public SetNewFriendActor .public SetPortraitEmotion .public SetPortraitLayout .public SetPortraitOffset -.public SetRandomRequestNpcs1And2 .public SetResolvedPerformanceProgressFlag .public SetScenarioProgressScriptVar .public SetSpecialEpisodeBeaten -.public SetTeamSetupHeroAndPartnerOnly -.public SetTeamSetupHeroOnly .public SetWorldMapLevel -.public SetupAndShowKeyboard -.public ShowPortraitInPortraitBox -.public ShowStringIdInDialogueBox -.public SpecialProcAddItemToBag -.public StatusUpdate -.public StrcpyName -.public StrncpyName -.public UNIONALL_RAM_ADDRESS .public UnloadFile -.public UnloadOverlay .public UnlockActorRoutines .public UnlockMainRoutine .public UnlockObjectRoutines .public UnlockPerformerRoutines -.public UpdateRecycleShop .public UpdateTeamStats -.public WasMissionCompletedToday .public WorldMapSetCamera .public WorldMapSetMode .public ZeroInitScriptVariable @@ -202,7 +89,6 @@ .public _fdiv .public _ffix .public _fflt -.public ov10_022BF7D4 .public ov10_022C0814 .public ov10_022C096C .public ov10_022C0998 @@ -211,12 +97,54 @@ .public ov10_022C1D40 .public ov10_022C1D78 .public ov10_022C2300 +.public ov11_022E45C4 +.public ov11_022E45DC +.public ov11_022E45F4 +.public ov11_022E4600 +.public ov11_022E490C +.public ov11_022E4984 +.public ov11_022E4A4C +.public ov11_022E4B00 +.public ov11_022E4B88 +.public ov11_022E5148 +.public ov11_022E5188 +.public ov11_022E5258 +.public ov11_022E5314 +.public ov11_022E59E8 +.public ov11_022E5A10 +.public ov11_022E5A38 +.public ov11_022E5A50 +.public ov11_022E5A98 +.public ov11_022E5AD4 +.public ov11_022E5B10 +.public ov11_022E5B40 +.public ov11_022E5B7C +.public ov11_022E5BB8 +.public ov11_022E5D14 +.public ov11_022E5EFC +.public ov11_022E6094 +.public ov11_022E60A8 +.public ov11_022E60BC +.public ov11_022E68E4 +.public ov11_022E6FD8 +.public ov11_022E7110 +.public ov11_022E7114 +.public ov11_022E7ADC +.public ov11_022E7AE0 +.public ov11_022E7AE4 +.public ov11_022E7B70 +.public ov11_022E7E84 +.public ov11_022E7F28 +.public ov11_022E7F34 +.public ov11_022E7F80 +.public ov11_022E8024 +.public ov11_022E8038 +.public ov11_022E811C +.public ov11_022E8120 +.public ov11_022E94D0 +.public ov11_022E9558 +.public ov11_022E958C .public ov11_022E9710 -.public ov11_022E9720 -.public ov11_022E9848 -.public ov11_022E98CC -.public ov11_022E9AD8 -.public ov11_022E9AF0 .public ov11_022E9B0C .public ov11_022E9B24 .public ov11_022E9B40 @@ -235,16 +163,8 @@ .public ov11_022E9DBC .public ov11_022E9EFC .public ov11_022E9F48 -.public ov11_022E9FC8 .public ov11_022E9FF4 .public ov11_022EA004 -.public ov11_022EA024 -.public ov11_022EA0BC -.public ov11_022EA908 -.public ov11_022EA91C -.public ov11_022EAF70 -.public ov11_022EAFD4 -.public ov11_022EAFF4 .public ov11_022EAFF8 .public ov11_022EB084 .public ov11_022EB0E4 @@ -256,16 +176,8 @@ .public ov11_022EB238 .public ov11_022EB274 .public ov11_022EB2CC -.public ov11_022EB3F0 -.public ov11_022EB848 -.public ov11_022EB9A4 -.public ov11_022EBA44 .public ov11_022EF594 .public ov11_022EF700 -.public ov11_022EFC54 -.public ov11_022EFCE4 -.public ov11_022F11DC -.public ov11_022F1214 .public ov11_022F1244 .public ov11_022F12C0 .public ov11_022F1710 @@ -274,10 +186,6 @@ .public ov11_022F1E44 .public ov11_022F1EAC .public ov11_022F1ECC -.public ov11_022F2178 -.public ov11_022F2188 -.public ov11_022F2194 -.public ov11_022F2244 .public ov11_022F22F4 .public ov11_022F25A4 .public ov11_022F26DC @@ -289,17 +197,8 @@ .public ov11_022F3054 .public ov11_022F308C .public ov11_022F30D4 -.public ov11_022F4518 -.public ov11_022F468C .public ov11_022F46B4 .public ov11_022F4734 -.public ov11_022F47F4 -.public ov11_022F5274 -.public ov11_022F5B70 -.public ov11_022F709C -.public ov11_022F70D0 -.public ov11_022F7104 -.public ov11_022F7140 .public ov11_022F7188 .public ov11_022F71E4 .public ov11_022F722C @@ -307,98 +206,36 @@ .public ov11_022F7354 .public ov11_022F7408 .public ov11_022F7500 -.public ov11_022F7594 .public ov11_022F75F0 -.public ov11_022F7628 -.public ov11_022F766C -.public ov11_022F7BC4 -.public ov11_022F7DD4 -.public ov11_022F7E78 -.public ov11_022F8408 -.public ov11_022F85C0 -.public ov11_022F881C .public ov11_022F8874 .public ov11_022F88A0 .public ov11_022F8920 .public ov11_022F8990 -.public ov11_022F8C18 -.public ov11_022F8E70 .public ov11_022F8FC4 .public ov11_022F90B4 .public ov11_022F90F4 .public ov11_022F9148 -.public ov11_022FAE58 -.public ov11_022FBDBC .public ov11_022FBE04 -.public ov11_022FBE4C -.public ov11_022FBEC4 -.public ov11_022FC2DC -.public ov11_022FC494 .public ov11_022FC67C .public ov11_022FC6E4 .public ov11_022FC74C .public ov11_022FC7BC -.public ov11_022FC8C4 -.public ov11_022FCA9C .public ov11_022FCBF0 -.public ov11_022FD47C -.public ov11_022FD624 .public ov11_022FD66C -.public ov11_022FD6B4 .public ov11_022FD6DC -.public ov11_022FD72C -.public ov11_022FDA7C -.public ov11_022FDC34 .public ov11_022FDE1C .public ov11_022FDE84 .public ov11_022FDEEC .public ov11_022FDF54 -.public ov11_022FDFD4 -.public ov11_022FE1AC .public ov11_022FE300 -.public ov11_022FE838 -.public ov11_022FE9E0 .public ov11_022FEA28 -.public ov11_022FEA70 -.public ov11_022FEA98 -.public ov11_022FEBFC -.public ov11_022FEC9C -.public ov11_022FEE90 -.public ov11_022FF1D4 -.public ov11_022FF460 -.public ov11_022FF490 -.public ov11_022FFA5C .public ov11_022FFAAC .public ov11_0230067C .public ov11_023006DC .public ov11_02300728 .public ov11_02300A60 .public ov11_02300ACC -.public ov11_023025E8 -.public ov11_02302CE0 -.public ov11_02303208 -.public ov11_023039AC -.public ov11_023043A8 -.public ov11_02304514 -.public ov11_02304664 -.public ov11_0230CB88 -.public ov11_0230CDF4 -.public ov11_0230CE08 -.public ov11_0230CE1C -.public ov11_0230CE78 -.public ov11_0230CED4 -.public ov11_0230CF00 -.public ov11_0230CFF4 -.public ov11_0230D000 -.public ov11_0230D170 .public ov11_0230D220 -.public ov11_0230D318 -.public ov11_0230D340 -.public ov11_0230D570 -.public ov11_0230D6C4 -.public ov11_0230D6F0 -.public ov11_0230D92C -.public ov11_0230E964 .public ov11_0230F050 .public ov11_0230F08C .public ov11_0230F0EC @@ -406,27 +243,14 @@ .public ov11_0230F1B4 .public ov11_0230F1EC .public ov11_0230F21C -.public ov11_02310BDC -.public ov11_02310C40 .public ov11_02310D64 .public ov11_02310DA0 .public ov11_02310DC0 -.public ov11_0231136C .public ov11_0231145C -.public ov11_0231186C .public ov11_0231195C -.public ov11_02311D6C -.public ov11_02312250 .public ov11_02312C58 .public ov11_02312C90 .public ov11_02312CD8 -.public ov11_02313908 -.public ov11_02314670 -.public ov11_023146F8 -.public ov11_0231474C -.public ov11_0231598C -.public ov11_023159CC -.public ov11_023159E8 .public ov11_02316A3C .public ov11_02316A44 .public ov11_02316A60 @@ -474,101 +298,14 @@ .public ov11_02319640 .public ov11_02319658 .public ov11_02319674 -.public ov11_0231968C -.public ov11_02319694 -.public ov11_023196B0 -.public ov11_023196C4 -.public ov11_023196D8 -.public ov11_023196EC -.public ov11_02319714 -.public ov11_02319730 -.public ov11_02319744 -.public ov11_0231975C -.public ov11_02319774 -.public ov11_0231978C -.public ov11_023197B4 -.public ov11_023197D8 -.public ov11_02319800 -.public ov11_02319828 -.public ov11_0231984C -.public ov11_0231986C -.public ov11_02319888 -.public ov11_023198AC -.public ov11_023198D0 -.public ov11_023198F0 -.public ov11_02319908 -.public ov11_02319924 -.public ov11_0231993C -.public ov11_02319960 -.public ov11_023199B4 -.public ov11_023199D4 -.public ov11_02319A20 -.public ov11_02319A38 -.public ov11_02319A48 -.public ov11_02319A68 -.public ov11_02319A90 -.public ov11_02319A98 -.public ov11_02319AB4 -.public ov11_02319AD0 -.public ov11_02320904 -.public ov11_023209B0 -.public ov11_023209CC -.public ov11_023209EC -.public ov11_02320A08 -.public ov11_02320A28 -.public ov11_02320A44 -.public ov11_02320A60 -.public ov11_02320A70 -.public ov11_02320A7C -.public ov11_02320A94 -.public ov11_02320AAC -.public ov11_02320AB8 -.public ov11_02320AC8 -.public ov11_02320AD4 -.public ov11_02320AEC -.public ov11_02320B10 -.public ov11_02320B34 -.public ov11_02320B58 -.public ov11_02320B78 -.public ov11_02320B9C .public ov11_02324C60 .public ov11_02324C64 -.public ov11_02324C6C -.public ov11_02324C74 -.public ov11_02324C7C -.public ov11_02324C84 -.public ov11_02324C8C -.public ov11_02324C94 -.public ov11_02324C9C -.public ov11_02324CA0 -.public ov11_02324CAC -.public ov11_02324CB0 .public ov11_02324E80 .public ov11_02324E94 .public ov11_02324EA4 .public ov11_02324ECC .public ov11_02324F1C -.public ov11_02324F70 -.public ov11_02324F74 -.public ov11_02324F82 -.public ov11_02324F8A -.public ov11_02324F94 -.public ov11_02324F98 -.public ov11_02324F9C -.public ov11_02324FA0 -.public ov28_0238A140 -.public ov28_0238A468 .public sprintf -.public sub_020012D8 -.public sub_020017B4 -.public sub_0200238C -.public sub_020023F8 -.public sub_0200383C -.public sub_020038D8 -.public sub_020038E8 -.public sub_02003990 -.public sub_020039E4 -.public sub_02003A40 .public sub_0200514C .public sub_020051A0 .public sub_02005344 @@ -576,18 +313,8 @@ .public sub_020055C8 .public sub_020057A8 .public sub_020058A8 -.public sub_02006BFC -.public sub_02006C8C -.public sub_02006E14 -.public sub_02008BA8 -.public sub_02008C18 -.public sub_02008ED0 -.public sub_02008F84 -.public sub_02008F88 .public sub_0200B3C0 .public sub_02011220 -.public sub_02017A68 -.public sub_02017A80 .public sub_02017AB0 .public sub_02017ACC .public sub_02017B18 @@ -610,21 +337,6 @@ .public sub_02017CB4 .public sub_02017CC0 .public sub_02017FB0 -.public sub_0201BE28 -.public sub_0201BE84 -.public sub_0201BF4C -.public sub_0201BF64 -.public sub_0201DDFC -.public sub_0201DE10 -.public sub_0201F464 -.public sub_02025304_JP -.public sub_02028848 -.public sub_02028A64 -.public sub_02028E2C -.public sub_02028E40 -.public sub_02028E88 -.public sub_02034710 -.public sub_02034840 .public sub_02034CA4 .public sub_02034D0C .public sub_02034DA8 @@ -636,67 +348,13 @@ .public sub_02034F98 .public sub_02035024 .public sub_02035098 -.public sub_0203D438 -.public sub_0203D538 -.public sub_02046D20 -.public sub_02047FFC -.public sub_0204804C -.public sub_02048614 -.public sub_02049338 -.public sub_0204964C .public sub_0204CE48 .public sub_0204D018 -.public sub_0204E6FC .public sub_0204E70C .public sub_0204E760 -.public sub_0204E770 .public sub_0204E8EC -.public sub_0204E974 -.public sub_0204F024 -.public sub_0204F034 -.public sub_0204F050 -.public sub_0204F1B4 -.public sub_0204F1F0 -.public sub_0204F244 -.public sub_0204F488 -.public sub_0204F9CC .public sub_02055410 .public sub_02055474 -.public sub_02055CCC -.public sub_02056410 -.public sub_020564B0 -.public sub_02056EB8 -.public sub_0205730C -.public sub_020573A0 -.public sub_020582E0 -.public sub_0205B584 -.public sub_0205B77C -.public sub_0205BB7C -.public sub_0205EBD8 -.public sub_0205EBF0 -.public sub_0205EC18 -.public sub_0205EC38 -.public sub_0205EC50 -.public sub_0205EC78 -.public sub_0205F2B8 -.public sub_0205F464 -.public sub_0205F504 -.public sub_0205F5A8 -.public sub_0205F710 -.public sub_02062DC4 -.public sub_0206309C -.public sub_02064FFC -.public sub_02065050 -.public sub_02065BD8 -.public sub_02065C08 .public sub_02065CB0 .public sub_02065CB4 -.public sub_02065CD8 -.public sub_0206C0D8 .public sub_0206C0EC -.public sub_0206C0FC -.public sub_0206C110 -.public sub_0206C120 -.public sub_0206C134 -.public sub_0206C144 -.public sub_0206C164 diff --git a/asm/include/overlay_11_022E46FC.inc b/asm/include/overlay_11_022E46FC.inc new file mode 100644 index 00000000..7e8d3981 --- /dev/null +++ b/asm/include/overlay_11_022E46FC.inc @@ -0,0 +1,267 @@ +#pragma once +.public AcceptRandomNpcJob +.public AddBulkItemToStorage +.public CountItemTypeInBag +.public CountItemTypeInStorage +.public CountNbItemsOfTypeInBag +.public Debug_GetLogFlag +.public Debug_Print +.public Debug_Print0 +.public DungeonRequestsDoneWrapper +.public DungeonSwapIdxToId +.public FileClose +.public FileRom_HandleOpen +.public FileRom_HandleRead +.public FileRom_HandleSeek +.public FileRom_InitDataTransfer +.public FileRom_StopDataTransfer +.public FileRom_Veneer_FileInit +.public GetAcceptedMission +.public GetExecuteSpecialEpisodeType +.public GetFirstUnequippedItemOfType +.public GetGameMode +.public GetHeldButtons +.public GetHero +.public GetItemAtIdx +.public GetLanguage +.public GetLiveActorIdxFromScriptEntityId +.public GetMainCharacter1MemberIdx +.public GetMainCharacter2MemberIdx +.public GetPartner +.public GetPartyMembers +.public GetPressedButtons +.public GetRandomNpcJobStillAvailable +.public GetRandomNpcJobSubtype +.public GetRandomNpcJobType +.public GetRank +.public GetRecruitMentryIdBySpecies +.public GetReleasedStylus +.public GetSosMailCount +.public GetSpecialRecruitmentSpecies +.public GetStringFromFileVeneer +.public GetTeamMember +.public GetUnitNpcIds +.public GroundMainNextDay +.public GroundMainReturnDungeon +.public IncrementNbBigTreasureWins +.public IncrementNbDungeonsCleared +.public IncrementNbSkyGiftsSent +.public InitMainTeamAfterQuiz +.public InitPartnerFollowDataAndLiveActorList +.public InitPreprocessorArgs +.public InitRandomNpcJobs +.public InitSpecialEpisodeExtraPartner +.public InitSpecialEpisodePartners +.public IsBagFull +.public IsMonsterOnTeam +.public IsStorageFull +.public IsTouchScreenNotOff +.public ItemAtTableIdx +.public JumpToTitleScreen +.public KeyWaitInit +.public LoadChanseyDaycareOverlay +.public LoadChimechoAssemblyOverlay +.public LoadCroagunkSwapShopOverlay +.public LoadDuskullBankOverlay +.public LoadElectivireLinkShopOverlay +.public LoadKangaskhanOverlay +.public LoadKecleonShopOverlay +.public LoadLuminousSpringOverlay +.public LoadOverlay +.public LoadRecycleShopOverlay +.public LoadRecycleShopOverlayInit +.public LoadRecycleShopOverlayResume +.public LoadRuleDungeonEffectsOverlay +.public LoadScriptVarValuePair +.public LoadScriptVariableValue +.public LoadSpecialEpisodeDiscardOverlay1 +.public LoadSpecialEpisodeDiscardOverlay2 +.public LoadSpindaCafeOverlayInit +.public LoadSpindaCafeOverlayResume +.public LoadXatuAppraisalOverlay +.public MemAlloc +.public MemFree +.public MemZero +.public MissionRewardValidateDungeonId +.public PrepareMenuAcceptTeamMember +.public PreprocessStringFromId +.public RandomizeDemoActors +.public RemoveBulkItemInStorage +.public RemoveItemNoHole +.public ReturnToTitleScreen +.public SaveScriptVariableValue +.public ScriptSpecialProcess0x16 +.public SetActorTalkMain +.public SetActorTalkSub +.public SetNewFriendActor +.public SetRandomRequestNpcs1And2 +.public SetScenarioProgressScriptVar +.public SetTeamSetupHeroAndPartnerOnly +.public SetTeamSetupHeroOnly +.public SetupAndShowKeyboard +.public SpecialProcAddItemToBag +.public StatusUpdate +.public StrcpyName +.public UnloadOverlay +.public WasMissionCompletedToday +.public ZeroInitScriptVariable +.public ov11_022DC89C +.public ov11_022DCB28 +.public ov11_022E45F4 +.public ov11_022E465C +.public ov11_022E466C +.public ov11_022E469C +.public ov11_022E8050 +.public ov11_022E8090 +.public ov11_022EAF70 +.public ov11_022EAFF8 +.public ov11_022F7188 +.public ov11_022F7354 +.public ov11_022F7594 +.public ov11_022F7E78 +.public ov11_022F8408 +.public ov11_022F85C0 +.public ov11_022F881C +.public ov11_022F8C18 +.public ov11_022F8E70 +.public ov11_022F90B4 +.public ov11_022F90F4 +.public ov11_022FBE04 +.public ov11_022FBEC4 +.public ov11_022FC2DC +.public ov11_022FC494 +.public ov11_022FC8C4 +.public ov11_022FCA9C +.public ov11_022FD66C +.public ov11_022FD72C +.public ov11_022FDA7C +.public ov11_022FDC34 +.public ov11_022FDFD4 +.public ov11_022FE1AC +.public ov11_022FEA28 +.public ov11_022FEA98 +.public ov11_022FEBFC +.public ov11_022FEC9C +.public ov11_022FF1D4 +.public ov11_022FF460 +.public ov11_022FF490 +.public ov11_022FFA5C +.public ov11_023025E8 +.public ov11_02302CE0 +.public ov11_02303208 +.public ov11_023039AC +.public ov11_023043A8 +.public ov11_02304514 +.public ov11_02304664 +.public ov11_0230CB88 +.public ov11_0230CDF4 +.public ov11_0230CE08 +.public ov11_0230CE1C +.public ov11_0230CFF4 +.public ov11_0230D000 +.public ov11_0230D92C +.public ov11_0230E964 +.public ov11_02310BDC +.public ov11_02310C40 +.public ov11_0231136C +.public ov11_0231186C +.public ov11_02311D6C +.public ov11_02312250 +.public ov11_02313908 +.public ov11_02314670 +.public ov11_023146F8 +.public ov11_0231474C +.public ov11_0231598C +.public ov11_023159CC +.public ov11_023159E8 +.public ov11_02319694 +.public ov11_023196B0 +.public ov11_023196C4 +.public ov11_023196D8 +.public ov11_023196EC +.public ov11_02319714 +.public ov11_02319730 +.public ov11_02319744 +.public ov11_0231975C +.public ov11_02319774 +.public ov11_0231978C +.public ov11_023197B4 +.public ov11_023197D8 +.public ov11_02319800 +.public ov11_02319828 +.public ov11_0231984C +.public ov11_0231986C +.public ov11_02319888 +.public ov11_023198AC +.public ov11_023198D0 +.public ov11_023198F0 +.public ov11_02319908 +.public ov11_02319924 +.public ov11_0231993C +.public ov11_02319960 +.public ov11_023199B4 +.public ov11_023199D4 +.public ov11_02319A20 +.public ov11_02319A38 +.public ov11_02319A48 +.public ov11_02319A68 +.public ov11_02319A90 +.public ov11_02319A98 +.public ov11_02324C6C +.public ov11_02324C74 +.public ov11_02324C7C +.public ov11_02324C84 +.public ov11_02324C8C +.public ov11_02324C94 +.public ov11_02324C9C +.public ov11_02324CA0 +.public ov11_02324F70 +.public ov11_02324F74 +.public ov11_02324F82 +.public ov11_02324F8A +.public ov11_02324F94 +.public ov28_0238A140 +.public ov28_0238A468 +.public sprintf +.public sub_020051A0 +.public sub_02005494 +.public sub_020057A8 +.public sub_020058A8 +.public sub_02006BFC +.public sub_02006C8C +.public sub_02008BA8 +.public sub_02008C18 +.public sub_02025304_JP +.public sub_02048614 +.public sub_02049338 +.public sub_0204964C +.public sub_0204E70C +.public sub_0204E770 +.public sub_0204E974 +.public sub_0204F1B4 +.public sub_0204F1F0 +.public sub_0204F244 +.public sub_0204F488 +.public sub_02055CCC +.public sub_02056410 +.public sub_020564B0 +.public sub_02056EB8 +.public sub_0205730C +.public sub_020573A0 +.public sub_020582E0 +.public sub_0205B77C +.public sub_0205BB7C +.public sub_0205F2B8 +.public sub_0205F464 +.public sub_0205F504 +.public sub_02064FFC +.public sub_02065050 +.public sub_02065BD8 +.public sub_02065C08 +.public sub_02065CD8 +.public sub_0206C0FC +.public sub_0206C110 +.public sub_0206C120 +.public sub_0206C134 +.public sub_0206C144 +.public sub_0206C164 diff --git a/asm/include/overlay_11_022E7FB8.inc b/asm/include/overlay_11_022E7FB8.inc new file mode 100644 index 00000000..f0972062 --- /dev/null +++ b/asm/include/overlay_11_022E7FB8.inc @@ -0,0 +1,3 @@ +#pragma once +.public UNIONALL_RAM_ADDRESS +.public ov11_022DC89C diff --git a/asm/include/overlay_11_022E8090.inc b/asm/include/overlay_11_022E8090.inc new file mode 100644 index 00000000..a8ab8b7d --- /dev/null +++ b/asm/include/overlay_11_022E8090.inc @@ -0,0 +1,212 @@ +#pragma once +.public AddMissionToJobList +.public AllocAndInitPartnerFollowDataAndLiveActorList +.public CalcAndUpdateScriptVarWithOtherValue +.public CloseDialogueBox +.public ClosePortraitBox +.public ComputeSpecialCounters +.public CreateDialogueBox +.public CreateMemArena +.public CreatePortraitBox +.public Debug_Print +.public Debug_Print0 +.public DecrementEggHatchTimer +.public FreeMissionRewardStructMain +.public G3X_Reset +.public GROUND_MEMORY_ARENA_1 +.public GenerateCroagunkItems +.public GenerateDailyMissions +.public GenerateKecleonItems1 +.public GenerateKecleonItems2 +.public GetDungeonModeSpecial +.public GetGameMode +.public GetNameRaw +.public GetPressedButtons +.public GetReleasedStylus +.public GetResolvedPerformanceProgressFlag +.public GetScenarioBalance +.public GroupOamAttributesBothScreens +.public HandleMenus +.public HandleUnlocks +.public InitPartnerFollowDataAndLiveActorList +.public InitPortraitParams +.public InitPortraitParamsWithMonsterId +.public InitStandardItem +.public IsDialogueBoxActive +.public IsTouchScreenNotOff +.public LoadScriptVariableValue +.public MemAlloc +.public MemArenaAlloc +.public MemFree +.public MemsetSimple +.public RECRUITMENT_TABLE_LEVELS +.public RECRUITMENT_TABLE_LOCATIONS +.public RECRUITMENT_TABLE_SPECIES +.public RollRandomItemReward +.public SaveScriptVariableValue +.public SetBaseStatsMovesGroundMonster +.public SetDungeonConquest +.public SetMemAllocatorParams +.public SetPortraitLayout +.public SetRandomRequestNpcs1And2 +.public ShowPortraitInPortraitBox +.public ShowStringIdInDialogueBox +.public StrncpyName +.public UpdateRecycleShop +.public WasMissionCompletedToday +.public ZeroInitScriptVariable +.public ov10_022BF7D4 +.public ov11_022DC6C4 +.public ov11_022DC718 +.public ov11_022DC7A0 +.public ov11_022DC808 +.public ov11_022DC81C +.public ov11_022E9720 +.public ov11_022E9848 +.public ov11_022E98CC +.public ov11_022E9AD8 +.public ov11_022E9AF0 +.public ov11_022E9B24 +.public ov11_022E9B84 +.public ov11_022E9EFC +.public ov11_022E9FC8 +.public ov11_022EA024 +.public ov11_022EA0BC +.public ov11_022EA908 +.public ov11_022EA91C +.public ov11_022EAFD4 +.public ov11_022EAFF4 +.public ov11_022EAFF8 +.public ov11_022EB3F0 +.public ov11_022EB848 +.public ov11_022EB9A4 +.public ov11_022EBA44 +.public ov11_022EFC54 +.public ov11_022EFCE4 +.public ov11_022F11DC +.public ov11_022F1214 +.public ov11_022F1244 +.public ov11_022F2178 +.public ov11_022F2188 +.public ov11_022F2194 +.public ov11_022F2244 +.public ov11_022F4518 +.public ov11_022F468C +.public ov11_022F47F4 +.public ov11_022F5274 +.public ov11_022F5B70 +.public ov11_022F709C +.public ov11_022F70D0 +.public ov11_022F7104 +.public ov11_022F7140 +.public ov11_022F7188 +.public ov11_022F7628 +.public ov11_022F766C +.public ov11_022F7BC4 +.public ov11_022F7DD4 +.public ov11_022FAE58 +.public ov11_022FBDBC +.public ov11_022FBE04 +.public ov11_022FBE4C +.public ov11_022FD47C +.public ov11_022FD624 +.public ov11_022FD66C +.public ov11_022FD6B4 +.public ov11_022FE838 +.public ov11_022FE9E0 +.public ov11_022FEA28 +.public ov11_022FEA70 +.public ov11_022FEE90 +.public ov11_0230CE78 +.public ov11_0230CED4 +.public ov11_0230CF00 +.public ov11_0230CFF4 +.public ov11_0230D170 +.public ov11_0230D340 +.public ov11_0230D570 +.public ov11_0230D6C4 +.public ov11_0230D6F0 +.public ov11_023209B0 +.public ov11_023209CC +.public ov11_023209EC +.public ov11_02320A08 +.public ov11_02320A28 +.public ov11_02320A44 +.public ov11_02320A60 +.public ov11_02320A70 +.public ov11_02320A7C +.public ov11_02320A94 +.public ov11_02320AAC +.public ov11_02320AB8 +.public ov11_02320AC8 +.public ov11_02320AD4 +.public ov11_02320AEC +.public ov11_02320B10 +.public ov11_02320B34 +.public ov11_02320B58 +.public ov11_02320B78 +.public ov11_02320B9C +.public ov11_02324CAC +.public ov11_02324CB0 +.public ov11_02324F98 +.public ov11_02324F9C +.public ov11_02324FA0 +.public sub_020012D8 +.public sub_020017B4 +.public sub_0200383C +.public sub_020038D8 +.public sub_020038E8 +.public sub_02003990 +.public sub_020039E4 +.public sub_02003A40 +.public sub_02006BFC +.public sub_02006C8C +.public sub_02006E14 +.public sub_02008ED0 +.public sub_02008F84 +.public sub_02008F88 +.public sub_02017A68 +.public sub_02017A80 +.public sub_02017ACC +.public sub_0201BE28 +.public sub_0201BE84 +.public sub_0201BF4C +.public sub_0201BF64 +.public sub_0201DDFC +.public sub_0201DE10 +.public sub_0201F464 +.public sub_02028848 +.public sub_02028A64 +.public sub_02028E2C +.public sub_02028E40 +.public sub_02028E88 +.public sub_02034710 +.public sub_02034840 +.public sub_02034D0C +.public sub_0203D438 +.public sub_0203D538 +.public sub_02046D20 +.public sub_02047FFC +.public sub_0204804C +.public sub_02049338 +.public sub_0204E6FC +.public sub_0204E70C +.public sub_0204E760 +.public sub_0204F024 +.public sub_0204F034 +.public sub_0204F050 +.public sub_0204F1B4 +.public sub_0204F9CC +.public sub_0205B584 +.public sub_0205B77C +.public sub_0205EBD8 +.public sub_0205EBF0 +.public sub_0205EC18 +.public sub_0205EC38 +.public sub_0205EC50 +.public sub_0205EC78 +.public sub_0205F5A8 +.public sub_0205F710 +.public sub_02062DC4 +.public sub_0206309C +.public sub_0206C0D8 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_022EA024.inc b/asm/include/overlay_11_022EA024.inc new file mode 100644 index 00000000..b626b5cb --- /dev/null +++ b/asm/include/overlay_11_022EA024.inc @@ -0,0 +1,1505 @@ +#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_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_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..4c7aa157 100644 --- a/asm/include/overlay_11_022EE5E4.inc +++ b/asm/include/overlay_11_022EE5E4.inc @@ -1,195 +1,62 @@ #pragma once -.public _fdiv -.public _ffix -.public _fflt -.public _s32_div_f -.public abs .public ACTOR_FUNCTION_TABLE -.public AddItemToBagNoHeld .public AnimationControlGetAllocForMaxFrame -.public AnyDungeonRequestsDone -.public AppendStandardStringToMission -.public ApplyGummiBoostsToGroundMonster -.public ApplyGummiBoostsToTeamMember -.public ApplyLevelUpBoostsToGroundMonster -.public BAG_ITEMS_PTR_MIRROR -.public C_ROUTINES -.public CheckInventoryMenuField0x1A0 -.public CheckParentMenuField0x1A0 -.public CheckTeamMemberIdx -.public ClampComponentAbs -.public CloseAdvancedMenu -.public CloseAdvancedTextBox -.public CloseAreaNameBox -.public CloseCollectionMenu -.public CloseControlsChart -.public CloseDialogueBox -.public CloseInventoryMenu -.public CloseParentMenu -.public CloseScrollBox -.public CloseSimpleMenu -.public CloseSynthBin -.public CloseTextBox -.public CloseTextBox2 .public CopyColorToPaletteDataRgba -.public CopyItemAtIdx -.public CopyMenuControlWindowExtraInfo -.public CopyOrInitPreprocessorArgs -.public CountNbItemsOfTypeInBag -.public CountNbItemsOfTypeInStorage -.public CreateAdvancedMenu -.public CreateAdvancedTextBox -.public CreateAreaNameBox -.public CreateCollectionMenu -.public CreateControlsChart -.public CreateDialogueBox -.public CreateInventoryMenuOuter -.public CreateJobSummary -.public CreateMonsterSummaryFromTeamMember -.public CreateParentMenu -.public CreateParentMenuFromStringIds -.public CreateScrollBoxSingle -.public CreateSimpleMenu -.public CreateSimpleMenuFromStringIds -.public CreateTextBox .public Debug_FatalError .public Debug_GetLogFlag .public Debug_Print .public Debug_Print0 .public DelayWteFree .public DeleteWanTableEntryVeneer -.public DeleteWindow -.public DigitInputMenuInit -.public DigitInputMenuReturn .public DisplayAndSwitchAnimationControlCurrentFrame -.public DrawTextInWindow -.public DungeonMoveToGroundMove -.public DungeonSwapIdxToId -.public EnableIqSkill .public ENTITIES -.public EntryOverlay13 -.public EuclideanNorm__020050B0 .public EVENTS -.public EXCLUSIVE_ITEM_REQUIREMENTS_PTR .public FemaleToMaleForm .public FillOamAttributeInfo .public FillPaletteDataRgba -.public FreeMissionRewardStructMain .public FuncThatCallsRunNextOpcode -.public FX_Atan2Idx -.public GetAcceptedMission -.public GetActiveRosterIndex -.public GetActiveTeamMember -.public GetActorMatchingStorageId -.public GetAdvancedMenuCurrentOption -.public GetAdvancedMenuResult -.public GetCoroutineInfo -.public GetCroagunkItemTemplates -.public GetCurrentBagCapacity -.public GetDexNumber -.public GetDungeonMode -.public GetExclusiveItemType -.public GetExecuteSpecialEpisodeType -.public GetFirstEmptyMemberIdx -.public GetFirstMatchingMemberIdx -.public GetGameMode -.public GetHero -.public GetInfoMoveGround -.public GetItemAtIdx -.public GetItemCategoryVeneer -.public GetItemMoveId16 -.public GetKeyboardStatus -.public GetKeyboardStringResult -.public GetLanguage -.public GetLearnableIqSkills -.public GetMainCharacter1 -.public GetMaxReachedFloor -.public GetMissionRankWithCapAndModifiersAndCap -.public GetMoneyCarried -.public GetNameRaw -.public GetNameWithGender -.public GetNbItemsInBag -.public GetPartner -.public GetPressedButtons -.public GetRank -.public GetRankupPoints -.public GetResolvedPerformanceProgressFlag -.public GetSimpleMenuResult__0202AEA4 -.public GetSimpleMenuResult__0202B870 -.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 GetCollidingEventId +.public GetCollidingObjectId +.public GetCoroutineInfo +.public GetSpriteIndex__02052724 .public GroundBg_FreeAll .public GroundBg_Init .public InitAnimationControlWithSet__0201C0B0 -.public InitMenu -.public InitMenuWithWindowExtraInfo -.public InitMove .public InitOamAdjustmentInfo -.public InitPortraitParams -.public InitPreprocessorArgs +.public InitPartnerFollowData .public InitRender3dElement64 .public InitScriptRoutine -.public IsAcceptedMissionSlotEmpty -.public IsAdvancedMenuActive -.public IsAdvancedMenuActive2 -.public IsAdvancedTextBoxActive -.public IsAreaNameBoxActive -.public IsBagFull -.public IsCollectionMenuActive -.public IsCollectionMenuState3 -.public IsControlsChartActive -.public IsDialogueBoxActive -.public IsGummi -.public IsHM -.public IsInventoryMenuActive -.public IsInventoryMenuState3 -.public IsMonsterOnTeam -.public IsParentMenuActive -.public IsScreenFadeInProgress -.public IsScrollBoxActive -.public IsSimpleMenuActive -.public ItemZInit .public KeyWaitInit .public LEVEL_TILEMAP_LIST -.public LoadFileFromRomVeneer .public LoadMapType10 .public LoadMapType11 .public LoadScriptVariableValue -.public LoadSynthBin .public LoadWanTableEntry .public LoadWanTableEntryFromPack .public LoadWteFromRom .public MarkPaletteDataAsNeedingUpdate -.public MaybeGetColoredFormattedItemName -.public MaybeGetFormattedItemName -.public MaybeGetUncoloredFormattedItemName .public MemAlloc -.public memcpy -.public Memcpy32 -.public MemcpySimple .public MemFree .public MemZero -.public NewWindowScreenCheck -.public OBJECT_FUNCTION_TABLE +.public Memcpy32 .public OBJECTS -.public ov10_022BCC60 -.public ov10_022BCC7C -.public ov10_022BCCB0 -.public ov10_022BCD10 -.public ov10_022BCDA8 -.public ov10_022BCDBC -.public ov10_022BCDF4 -.public ov10_022BD394 +.public PlaySeVolumeWrapper +.public RandInt +.public Render3dElement64 +.public SETANIMATION_TABLE +.public ScriptStationLoadTalk +.public SetActorTalkMain +.public SetActorTalkMainAndActorTalkSub +.public SetActorTalkSub +.public SetAnimationForAnimationControl +.public SetSpriteIdForAnimationControl +.public SwitchAnimationControlToNextFrame +.public UnlockRoutine +.public WAN_TABLE +.public _s32_div_f .public ov10_022BDA84 .public ov10_022BDB80 .public ov10_022BDC0C @@ -212,18 +79,9 @@ .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 .public ov11_022DC958 -.public ov11_022DC9A0 .public ov11_022DC9C8 .public ov11_022DCA58 .public ov11_022DCA70 @@ -235,10 +93,6 @@ .public ov11_022DCFC4 .public ov11_022DD080 .public ov11_022DD2C0 -.public ov11_022E45F4 -.public ov11_022E4600 -.public ov11_022E4630 -.public ov11_022E465C .public ov11_022E466C .public ov11_022E5148 .public ov11_022E5188 @@ -252,44 +106,24 @@ .public ov11_022E5BF4 .public ov11_022E5C84 .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,7 +135,29 @@ .public ov11_022EE230 .public ov11_022EE268 .public ov11_022EE2D0 -.public ov11_02320858 +.public ov11_022FBA68 +.public ov11_022FC83C +.public ov11_022FCCA0 +.public ov11_022FCCC4 +.public ov11_022FD510 +.public ov11_022FE8CC +.public ov11_022FED74 +.public ov11_02300D5C +.public ov11_0230D318 +.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_02320BE4 .public ov11_02320BF4 .public ov11_02320C10 @@ -351,7 +207,6 @@ .public ov11_02321644 .public ov11_02321664 .public ov11_02321684 -.public ov11_023217EC .public ov11_023217F8 .public ov11_02321818 .public ov11_02321838 @@ -381,296 +236,6 @@ .public ov11_02321D30 .public ov11_02321D48 .public ov11_02321D6C -.public ov11_02321D88 -.public ov11_02321DC8 -.public ov11_02321E4C -.public ov11_02321E98 -.public ov11_02321EC4 -.public ov11_02321EF0 -.public ov11_02321F10 -.public ov11_02321F2C -.public ov11_02321F58 -.public ov11_02321FA0 -.public ov11_02321FE0 -.public ov11_02321FF4 -.public ov11_02322034 -.public ov11_02322074 -.public ov11_023220B4 -.public ov11_023220DC -.public ov11_02322160 -.public ov11_023221A8 -.public ov11_023221D8 -.public ov11_02322204 -.public ov11_02322224 -.public ov11_02322244 -.public ov11_02322288 -.public ov11_0232229C -.public ov11_023222E0 -.public ov11_02322324 -.public ov11_02322368 -.public ov11_023223A4 -.public ov11_023223C0 -.public ov11_023223EC -.public ov11_02322418 -.public ov11_0232246C -.public ov11_0232247C -.public ov11_0232248C -.public ov11_0232249C -.public ov11_023224AC -.public ov11_023224BC -.public ov11_023224D0 -.public ov11_023224DC -.public ov11_023224EA -.public ov11_023224FC -.public ov11_0232250C -.public ov11_0232251C -.public ov11_02322530 -.public ov11_02322548 -.public ov11_0232256C -.public ov11_02322574 -.public ov11_02322580 -.public ov11_0232258C -.public ov11_02322598 -.public ov11_023225BC -.public ov11_023225CC -.public ov11_023225DC -.public ov11_023225EC -.public ov11_023225FC -.public ov11_0232260C -.public ov11_0232261C -.public ov11_0232262C -.public ov11_02322654 -.public ov11_02322684 -.public ov11_023226B4 -.public ov11_023226C4 -.public ov11_023226D4 -.public ov11_023226F4 -.public ov11_023226FC -.public ov11_0232270C -.public ov11_0232271C -.public ov11_02322734 -.public ov11_02322740 -.public ov11_02322750 -.public ov11_02322760 -.public ov11_02322770 -.public ov11_02322780 -.public ov11_02322798 -.public ov11_023227B0 -.public ov11_023227B8 -.public ov11_023227C8 -.public ov11_023227D8 -.public ov11_023227E8 -.public ov11_02322808 -.public ov11_02322828 -.public ov11_02322850 -.public ov11_0232287C -.public ov11_02322894 -.public ov11_023228BC -.public ov11_023228D0 -.public ov11_023228E0 -.public ov11_023228F0 -.public ov11_02322910 -.public ov11_02322930 -.public ov11_02322978 -.public ov11_023229B8 -.public ov11_023229DC -.public ov11_023229EC -.public ov11_023229FC -.public ov11_02322A0C -.public ov11_02322AB4 -.public ov11_02322AC4 -.public ov11_02322B6C -.public ov11_02322B7C -.public ov11_02322B8C -.public ov11_02322B98 -.public ov11_02322BA8 -.public ov11_02322BB8 -.public ov11_02322BC8 -.public ov11_02322BE0 -.public ov11_02322C00 -.public ov11_02322C10 -.public ov11_02322C20 -.public ov11_02322C38 -.public ov11_02322C50 -.public ov11_02322C78 -.public ov11_02322C88 -.public ov11_02322C98 -.public ov11_02322CA8 -.public ov11_02322CB8 -.public ov11_02322CC8 -.public ov11_02322CD8 -.public ov11_02322CF0 -.public ov11_02322D10 -.public ov11_02322D38 -.public ov11_02322D60 -.public ov11_02322D88 -.public ov11_02322DB0 -.public ov11_02322DB8 -.public ov11_02322DC8 -.public ov11_02322DD0 -.public ov11_02322DE0 -.public ov11_02322DF0 -.public ov11_02322E00 -.public ov11_02322E28 -.public ov11_02322E58 -.public ov11_02322E7C -.public ov11_02322EA0 -.public ov11_02322EAC -.public ov11_02322EBC -.public ov11_02322ECC -.public ov11_02322EDC -.public ov11_02322F24 -.public ov11_02322F30 -.public ov11_02322F40 -.public ov11_02322F58 -.public ov11_02322F5C -.public ov11_02322F80 -.public ov11_02322F84 -.public ov11_02322F98 -.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 @@ -679,51 +244,6 @@ .public ov11_02324CE8 .public ov11_02324CF0 .public ov11_02324CF8 -.public ov11_02324D00 -.public ov11_02324D04 -.public ov11_02324D08 -.public ov11_02324D0C -.public ov11_02324D14 -.public ov11_02324D1C -.public ov11_02324D24 -.public ov11_02324D2C -.public ov11_02324D34 -.public ov11_02324D40 -.public ov11_02324D48 -.public ov11_02324D4C -.public ov11_02324D54 -.public ov11_02324D58 -.public ov11_02324D60 -.public ov11_02324D6C -.public ov11_02324D70 -.public ov11_02324D74 -.public ov11_02324D78 -.public ov11_02324D7C -.public ov11_02324D80 -.public ov11_02324D84 -.public ov11_02324D88 -.public ov11_02324D8C -.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 @@ -732,89 +252,13 @@ .public ov11_0238A050 .public ov11_0238A05C .public ov11_0238A068 -.public ov11_0238A074 -.public ov11_0238A078 -.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 @@ -830,13 +274,7 @@ .public sub_0200B33C .public sub_0200B340 .public sub_0200B3C0 -.public sub_0200CF6C -.public sub_0200FD48 -.public sub_02010044 -.public sub_02011420 .public sub_020163AC -.public sub_02017C50 -.public sub_02017C74 .public sub_0201C108 .public sub_0201CF90 .public sub_0201D100 @@ -846,151 +284,13 @@ .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 -.public sub_02027B1C -.public sub_0202810C -.public sub_0202812C -.public sub_020282F4 -.public sub_02028354 -.public sub_0202836C -.public sub_0202A03C -.public sub_0202B030 -.public sub_0202C620 -.public sub_0202C75C -.public sub_0202D07C -.public sub_0202D0EC -.public sub_0202F16C -.public sub_0202F190 -.public sub_0202F2C4 -.public sub_0202F334 -.public sub_0202F3F8 -.public sub_0202F954 -.public sub_020307EC -.public sub_02034840 -.public sub_0203559C -.public sub_02035CE4 -.public sub_02037468 -.public sub_0203909C -.public sub_02039218 -.public sub_0203931C -.public sub_02039C2C -.public sub_0203A51C -.public sub_0203A5A8 -.public sub_0203A5F0 -.public sub_0203A638 -.public sub_0203A9EC -.public sub_0203AA20 -.public sub_0203AAB0 -.public sub_0203AF0C -.public sub_0203D438 -.public sub_0203D538 -.public sub_0203F150 -.public sub_0203F398 -.public sub_0203F974 -.public sub_0203F990 -.public sub_0203FA64 -.public sub_0203FBD4 -.public sub_0203FD14 -.public sub_0203FD2C -.public sub_0203FD38 -.public sub_0203FD80 -.public sub_0203FDEC -.public sub_0204018C -.public sub_0204019C -.public sub_020407C0 -.public sub_020407EC -.public sub_02041094 -.public sub_020410A4 -.public sub_02041154 -.public sub_02041364 -.public sub_02041394 -.public sub_02041484 -.public sub_020415BC -.public sub_02041614 -.public sub_020416FC -.public sub_020417A8 -.public sub_02041A00 -.public sub_02041A18 -.public sub_02041B7C -.public sub_020420F4 -.public sub_02044688 -.public sub_02044800 -.public sub_020448EC -.public sub_02046A20 -.public sub_02046B04 -.public sub_02046BA0 -.public sub_02046BE8 -.public sub_02046C30 -.public sub_02046C78 -.public sub_02046D20 -.public sub_0204707C -.public sub_020470D0 -.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 -.public sub_02053A0C -.public sub_02053CA0 -.public sub_02053D1C -.public sub_020546E8 -.public sub_02055894 -.public sub_02055B20 -.public sub_02055D4C -.public sub_02055DD0 -.public sub_02055FCC -.public sub_02056094 -.public sub_0205633C -.public sub_020564B0 -.public sub_02057180 -.public sub_020572EC -.public sub_020582E0 -.public sub_020586F0 -.public sub_02058794 .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 .public sub_02065050 .public sub_0206549C -.public sub_02065C08 -.public sub_020664B8 -.public sub_02066510 -.public sub_02066888 -.public sub_020668B4 -.public sub_02066A44 -.public sub_020674CC -.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 @@ -998,27 +298,3 @@ .public sub_0206ADB8 .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_022FAC54.inc b/asm/include/overlay_11_022FAC54.inc new file mode 100644 index 00000000..c9be52ee --- /dev/null +++ b/asm/include/overlay_11_022FAC54.inc @@ -0,0 +1,67 @@ +#pragma once +.public ChangeActorAnimation +.public Debug_Print +.public DeleteLiveActor +.public FuncThatCallsRunNextOpcode +.public GetCollidingActorId +.public InitScriptRoutine +.public LoadObjectAnimData +.public MemAlloc +.public MemFree +.public OBJECTS +.public OBJECT_FUNCTION_TABLE +.public SetActorTalkSub +.public SetAnimDataFields2 +.public SetAnimDataFieldsWrapper +.public SetAttributeBitfieldLiveActor +.public SetPositionLiveActor +.public UnlockRoutine +.public abs +.public ov11_022DC934 +.public ov11_022DC958 +.public ov11_022DC9A0 +.public ov11_022DC9C8 +.public ov11_022DCA58 +.public ov11_022DCAE0 +.public ov11_022DCB00 +.public ov11_022DCCEC +.public ov11_022DCFC4 +.public ov11_022DD080 +.public ov11_022E5EFC +.public ov11_022EAA24 +.public ov11_022EAF60 +.public ov11_022EB3C8 +.public ov11_022F1F08 +.public ov11_022F204C +.public ov11_022F4974 +.public ov11_022F4984 +.public ov11_022F4A14 +.public ov11_022F5C48 +.public ov11_022F5C94 +.public ov11_022F5FE8_JP +.public ov11_022F6EFC +.public ov11_022F74A0 +.public ov11_022F9074 +.public ov11_022F921C +.public ov11_022F9F90 +.public ov11_022FA1DC +.public ov11_02321684 +.public ov11_023217EC +.public ov11_02321D88 +.public ov11_02321E4C +.public ov11_02321E98 +.public ov11_02321EC4 +.public ov11_02321EF0 +.public ov11_02321F10 +.public ov11_02321F2C +.public ov11_02321F58 +.public ov11_02321FA0 +.public ov11_02321FE0 +.public ov11_02321FF4 +.public ov11_02322034 +.public ov11_02322074 +.public ov11_02324CF8 +.public ov11_02324D00 +.public sub_02005430 +.public sub_020054C0 +.public sub_02006DC8 diff --git a/asm/include/overlay_11_022FD308.inc b/asm/include/overlay_11_022FD308.inc new file mode 100644 index 00000000..48bf6662 --- /dev/null +++ b/asm/include/overlay_11_022FD308.inc @@ -0,0 +1,45 @@ +#pragma once +.public AnimRelatedFunction__022F6F14 +.public Debug_Print +.public DeleteLiveObject +.public FuncThatCallsRunNextOpcode +.public InitScriptRoutine +.public MemAlloc +.public MemFree +.public PERFORMER_FUNCTION_TABLE +.public SetAnimDataFields2 +.public SetAnimDataFieldsWrapper +.public UnlockRoutine +.public ov11_022DC934 +.public ov11_022DC958 +.public ov11_022DC9A0 +.public ov11_022DC9C8 +.public ov11_022DCA58 +.public ov11_022DCAE0 +.public ov11_022DCB00 +.public ov11_022DCCEC +.public ov11_022DCFC4 +.public ov11_022DD080 +.public ov11_022E5EFC +.public ov11_022F1F08 +.public ov11_022F4984 +.public ov11_022F4A14 +.public ov11_022F5408 +.public ov11_022F5FE8_JP +.public ov11_022F6F4C +.public ov11_022F6F9C +.public ov11_022FCE48 +.public ov11_02320858 +.public ov11_02321D88 +.public ov11_02322160 +.public ov11_023221A8 +.public ov11_023221D8 +.public ov11_02322204 +.public ov11_02322224 +.public ov11_02322244 +.public ov11_02322288 +.public ov11_0232229C +.public ov11_023222E0 +.public ov11_02322324 +.public ov11_02324D00 +.public ov11_02324D04 diff --git a/asm/include/overlay_29_022E1618.inc b/asm/include/overlay_11_022FE4AC.inc similarity index 92% rename from asm/include/overlay_29_022E1618.inc rename to asm/include/overlay_11_022FE4AC.inc index 3f59c932..6f70f09b 100644 --- a/asm/include/overlay_29_022E1618.inc +++ b/asm/include/overlay_11_022FE4AC.inc @@ -1,2 +1 @@ #pragma once - diff --git a/asm/include/overlay_11_022FE5F8.inc b/asm/include/overlay_11_022FE5F8.inc new file mode 100644 index 00000000..a173597c --- /dev/null +++ b/asm/include/overlay_11_022FE5F8.inc @@ -0,0 +1,515 @@ +#pragma once +.public AddItemToBagNoHeld +.public AnyDungeonRequestsDone +.public AppendStandardStringToMission +.public ApplyGummiBoostsToGroundMonster +.public ApplyGummiBoostsToTeamMember +.public ApplyLevelUpBoostsToGroundMonster +.public BAG_ITEMS_PTR_MIRROR +.public C_ROUTINES +.public CheckInventoryMenuField0x1A0 +.public CheckParentMenuField0x1A0 +.public CheckTeamMemberIdx +.public CloseAdvancedMenu +.public CloseAdvancedTextBox +.public CloseAreaNameBox +.public CloseCollectionMenu +.public CloseDialogueBox +.public CloseInventoryMenu +.public CloseParentMenu +.public CloseScrollBox +.public CloseSimpleMenu +.public CloseSynthBin +.public CloseTextBox +.public CloseTextBox2 +.public CopyItemAtIdx +.public CopyMenuControlWindowExtraInfo +.public CopyOrInitPreprocessorArgs +.public CountNbItemsOfTypeInBag +.public CountNbItemsOfTypeInStorage +.public CreateAdvancedMenu +.public CreateAdvancedTextBox +.public CreateAreaNameBox +.public CreateCollectionMenu +.public CreateDialogueBox +.public CreateInventoryMenuOuter +.public CreateMonsterSummaryFromTeamMember +.public CreateParentMenu +.public CreateParentMenuFromStringIds +.public CreateScrollBoxSingle +.public CreateSimpleMenu +.public CreateSimpleMenuFromStringIds +.public CreateTextBox +.public Debug_Print +.public Debug_Print0 +.public DeleteLivePerformer +.public DeleteWindow +.public DigitInputMenuInit +.public DigitInputMenuReturn +.public DrawTextInWindow +.public DungeonMoveToGroundMove +.public DungeonSwapIdxToId +.public EVENTS +.public EXCLUSIVE_ITEM_REQUIREMENTS_PTR +.public EnableIqSkill +.public FreeMissionRewardStructMain +.public FuncThatCallsRunNextOpcode +.public GetActiveRosterIndex +.public GetActiveTeamMember +.public GetActorMatchingStorageId +.public GetAdvancedMenuCurrentOption +.public GetAdvancedMenuResult +.public GetCroagunkItemTemplates +.public GetCurrentBagCapacity +.public GetDexNumber +.public GetDungeonMode +.public GetExclusiveItemType +.public GetExecuteSpecialEpisodeType +.public GetFirstEmptyMemberIdx +.public GetFirstMatchingMemberIdx +.public GetGameMode +.public GetHero +.public GetInfoMoveGround +.public GetItemAtIdx +.public GetItemCategoryVeneer +.public GetItemMoveId16 +.public GetKeyboardStatus +.public GetKeyboardStringResult +.public GetLearnableIqSkills +.public GetMaxReachedFloor +.public GetMoneyCarried +.public GetNameRaw +.public GetNameWithGender +.public GetNbItemsInBag +.public GetPartner +.public GetPressedButtons +.public GetRank +.public GetRankupPoints +.public GetResolvedPerformanceProgressFlag +.public GetSimpleMenuResult__0202AEA4 +.public GetSimpleMenuResult__0202B870 +.public GetStringFromFileVeneer +.public GetTeamMember +.public GetWindowContents +.public GetWindowIdPageStart +.public GetWindowIdSelectedItemOnPage +.public GetWindowIdSelectedMenuItemIdx +.public InitMenu +.public InitMove +.public InitPortraitParams +.public InitPreprocessorArgs +.public IsAdvancedMenuActive +.public IsAdvancedMenuActive2 +.public IsAdvancedTextBoxActive +.public IsAreaNameBoxActive +.public IsBagFull +.public IsCollectionMenuActive +.public IsCollectionMenuState3 +.public IsDialogueBoxActive +.public IsGummi +.public IsHM +.public IsInventoryMenuActive +.public IsInventoryMenuState3 +.public IsMonsterOnTeam +.public IsParentMenuActive +.public IsScrollBoxActive +.public IsSimpleMenuActive +.public ItemZInit +.public LoadFileFromRomVeneer +.public LoadScriptVariableValue +.public LoadSynthBin +.public MaybeGetColoredFormattedItemName +.public MaybeGetFormattedItemName +.public MaybeGetUncoloredFormattedItemName +.public MemAlloc +.public MemFree +.public MemZero +.public MemcpySimple +.public NewWindowScreenCheck +.public PlaySeVolumeWrapper +.public PopInventoryMenuField0x1A3 +.public PreprocessString +.public PreprocessStringFromId +.public PrintBadgeMark +.public PrintIqSkillsMenu +.public RecolorNameString +.public RemoveItemNoHole +.public RemoveItemNoHoleCheck +.public ResetAttributeBitfieldLivePerformer +.public ResumeAdvancedMenu +.public ResumeParentMenu +.public ReturnScriptMenuResult +.public ReturnScriptMenuResultZero +.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 SetAnimDataFields2 +.public SetAreaNameBoxState3 +.public SetAttributeBitfieldLivePerformer +.public SetCollectionMenuField0x1A4 +.public SetCollectionMenuField0x1C8 +.public SetInventoryMenuState0 +.public SetInventoryMenuState6 +.public SetItemAcquired +.public SetNewFriendActor +.public SetParentMenuState7 +.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 TEAM_INFO_BOX_DEFAULT_WINDOW_PARAMS +.public TEAM_MEMBER_TABLE_PTR +.public UnloadFile +.public UpdateWindow +.public ValidateTeamMembers +.public WorldMapSetCamera +.public WorldMapSetMode +.public ZeroInitMissionRewardDataStruct +.public memcpy +.public ov10_022BCC60 +.public ov10_022BCC7C +.public ov10_022BCCB0 +.public ov10_022BCD10 +.public ov10_022BCDA8 +.public ov10_022BCDBC +.public ov10_022BCDF4 +.public ov10_022BD394 +.public ov11_022DC504 +.public ov11_022E45F4 +.public ov11_022E4600 +.public ov11_022E4630 +.public ov11_022E465C +.public ov11_022E466C +.public ov11_022E6EE8 +.public ov11_022E7FA8 +.public ov11_022E8340 +.public ov11_022E83F8 +.public ov11_022E84AC +.public ov11_022E9B84 +.public ov11_022E9BD0 +.public ov11_022E9F48 +.public ov11_022F4984 +.public ov11_022F4990 +.public ov11_022F49B0 +.public ov11_022F5408 +.public ov11_022F5FE8_JP +.public ov11_022F6FA8 +.public ov11_022F7188 +.public ov11_022F74A0 +.public ov11_0230CFF4 +.public ov11_0230D000 +.public ov11_0230D220 +.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_023220B4 +.public ov11_023220DC +.public ov11_02322368 +.public ov11_023223A4 +.public ov11_023223C0 +.public ov11_023223EC +.public ov11_02322418 +.public ov11_0232246C +.public ov11_0232247C +.public ov11_0232248C +.public ov11_0232249C +.public ov11_023224AC +.public ov11_023224BC +.public ov11_023224D0 +.public ov11_023224DC +.public ov11_023224EA +.public ov11_023224FC +.public ov11_0232250C +.public ov11_0232251C +.public ov11_02322530 +.public ov11_02322548 +.public ov11_0232256C +.public ov11_02322574 +.public ov11_02322580 +.public ov11_0232258C +.public ov11_02322598 +.public ov11_023225BC +.public ov11_023225CC +.public ov11_023225DC +.public ov11_023225EC +.public ov11_023225FC +.public ov11_0232260C +.public ov11_0232261C +.public ov11_0232262C +.public ov11_02322654 +.public ov11_02322684 +.public ov11_023226B4 +.public ov11_023226C4 +.public ov11_023226D4 +.public ov11_023226F4 +.public ov11_023226FC +.public ov11_0232270C +.public ov11_0232271C +.public ov11_02322734 +.public ov11_02322740 +.public ov11_02322750 +.public ov11_02322760 +.public ov11_02322770 +.public ov11_02322780 +.public ov11_02322798 +.public ov11_023227B0 +.public ov11_023227B8 +.public ov11_023227C8 +.public ov11_023227D8 +.public ov11_023227E8 +.public ov11_02322808 +.public ov11_02322828 +.public ov11_02322850 +.public ov11_0232287C +.public ov11_02322894 +.public ov11_023228BC +.public ov11_023228D0 +.public ov11_023228E0 +.public ov11_023228F0 +.public ov11_02322910 +.public ov11_02322930 +.public ov11_02322978 +.public ov11_023229B8 +.public ov11_023229DC +.public ov11_023229EC +.public ov11_023229FC +.public ov11_02322A0C +.public ov11_02322AB4 +.public ov11_02322AC4 +.public ov11_02322B6C +.public ov11_02322B7C +.public ov11_02322B8C +.public ov11_02322B98 +.public ov11_02322BA8 +.public ov11_02322BB8 +.public ov11_02322BC8 +.public ov11_02322BE0 +.public ov11_02322C00 +.public ov11_02322C10 +.public ov11_02322C20 +.public ov11_02322C38 +.public ov11_02322C50 +.public ov11_02322C78 +.public ov11_02322C88 +.public ov11_02322C98 +.public ov11_02322CA8 +.public ov11_02322CB8 +.public ov11_02322CC8 +.public ov11_02322CD8 +.public ov11_02322CF0 +.public ov11_02322D10 +.public ov11_02322D38 +.public ov11_02322D60 +.public ov11_02322D88 +.public ov11_02322DB0 +.public ov11_02322DB8 +.public ov11_02322DC8 +.public ov11_02322DD0 +.public ov11_02322DE0 +.public ov11_02322DF0 +.public ov11_02322E00 +.public ov11_02322E28 +.public ov11_02322E58 +.public ov11_02322E7C +.public ov11_02322EA0 +.public ov11_02322EAC +.public ov11_02322EBC +.public ov11_02322ECC +.public ov11_02322EDC +.public ov11_02322F24 +.public ov11_02322F30 +.public ov11_02322F40 +.public ov11_02322F58 +.public ov11_02322F5C +.public ov11_02322F80 +.public ov11_02322F84 +.public ov11_02322F98 +.public ov11_02322FD4 +.public ov11_02322FE4 +.public ov11_02322FF4 +.public ov11_02324D04 +.public ov11_02324D08 +.public ov11_02324D0C +.public ov11_02324D14 +.public ov11_02324D1C +.public ov11_02324D24 +.public ov11_02324D2C +.public ov11_02324D34 +.public ov11_02324D40 +.public ov11_02324D48 +.public ov11_02324D4C +.public ov11_02324D54 +.public ov11_02324D58 +.public ov11_02324D60 +.public ov11_02324D6C +.public ov11_02324D70 +.public ov11_02324D74 +.public ov11_02324D78 +.public ov11_02324D7C +.public ov11_02324D80 +.public ov11_02324D84 +.public ov11_02324D88 +.public ov11_02324D8C +.public ov11_02324D90 +.public ov11_02324D94 +.public ov11_02324D98 +.public ov11_0238A074 +.public ov11_0238A078 +.public ov11_0238A080 +.public ov11_0238A084 +.public ov11_0238A088 +.public sprintf +.public strcat +.public strcpy +.public sub_020037A4 +.public sub_02008BA8 +.public sub_0200CF6C +.public sub_0200FD48 +.public sub_02010044 +.public sub_02011420 +.public sub_02017C50 +.public sub_02017C74 +.public sub_02025304_JP +.public sub_020262E0 +.public sub_020265A8 +.public sub_02027B1C +.public sub_0202810C +.public sub_0202812C +.public sub_020282F4 +.public sub_02028354 +.public sub_0202836C +.public sub_0202A03C +.public sub_0202B030 +.public sub_0202C620 +.public sub_0202C75C +.public sub_0202D07C +.public sub_0202D0EC +.public sub_0202F16C +.public sub_0202F190 +.public sub_0202F2C4 +.public sub_0202F334 +.public sub_0202F3F8 +.public sub_0202F954 +.public sub_020307EC +.public sub_02034840 +.public sub_0203559C +.public sub_02035CE4 +.public sub_02037468 +.public sub_0203909C +.public sub_02039218 +.public sub_0203931C +.public sub_02039C2C +.public sub_0203A51C +.public sub_0203A5A8 +.public sub_0203A5F0 +.public sub_0203A638 +.public sub_0203A9EC +.public sub_0203AA20 +.public sub_0203AAB0 +.public sub_0203AF0C +.public sub_0203D438 +.public sub_0203D538 +.public sub_0203F150 +.public sub_0203F398 +.public sub_0203F974 +.public sub_0203F990 +.public sub_0203FA64 +.public sub_0203FBD4 +.public sub_0203FD14 +.public sub_0203FD2C +.public sub_0203FD38 +.public sub_0203FD80 +.public sub_0203FDEC +.public sub_0204018C +.public sub_0204019C +.public sub_020407C0 +.public sub_020407EC +.public sub_02041094 +.public sub_020410A4 +.public sub_02041154 +.public sub_02041364 +.public sub_02041394 +.public sub_02041484 +.public sub_020415BC +.public sub_02041614 +.public sub_020416FC +.public sub_020417A8 +.public sub_02041A00 +.public sub_02041A18 +.public sub_02041B7C +.public sub_020420F4 +.public sub_02044688 +.public sub_02044800 +.public sub_020448EC +.public sub_02046A20 +.public sub_02046B04 +.public sub_02046BA0 +.public sub_02046BE8 +.public sub_02046C30 +.public sub_02046C78 +.public sub_02046D20 +.public sub_0204707C +.public sub_020470D0 +.public sub_02047148 +.public sub_02047150 +.public sub_02047188 +.public sub_02048764 +.public sub_02048794 +.public sub_0204CF0C +.public sub_0204E210 +.public sub_02052E2C +.public sub_02053A0C +.public sub_02053CA0 +.public sub_02053D1C +.public sub_020546E8 +.public sub_02055894 +.public sub_02055B20 +.public sub_02055D4C +.public sub_02055DD0 +.public sub_02055FCC +.public sub_02056094 +.public sub_0205633C +.public sub_020564B0 +.public sub_02057180 +.public sub_020572EC +.public sub_020582E0 +.public sub_020586F0 +.public sub_02058794 +.public sub_0205B028 +.public sub_02064FFC +.public sub_02065C08 +.public sub_020664B8 +.public sub_02066510 +.public sub_02066888 +.public sub_020668B4 +.public sub_02066A44 +.public sub_020674CC +.public sub_02067584 +.public sub_02067664 +.public sub_0206A84C +.public sub_0206C110 +.public vsprintf diff --git a/asm/include/overlay_11_0230CE30.inc b/asm/include/overlay_11_0230CE30.inc new file mode 100644 index 00000000..4920335c --- /dev/null +++ b/asm/include/overlay_11_0230CE30.inc @@ -0,0 +1,274 @@ +#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 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_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 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/include/overlay_16.inc b/asm/include/overlay_16.inc index 0519a51d..fee0d212 100644 --- a/asm/include/overlay_16.inc +++ b/asm/include/overlay_16.inc @@ -1,5 +1,4 @@ #pragma once -.public _s32_div_f .public CloseAdvancedMenu .public CloseDialogueBox .public ClosePortraitBox @@ -12,6 +11,12 @@ .public EVOLUTION_HP_BONUS .public EVOLUTION_PHYSICAL_STAT_BONUSES .public EVOLUTION_SPECIAL_STAT_BONUSES +.public EVO_MAIN_MENU_ITEMS +.public EVO_MENU_ITEMS_CONFIRM +.public EVO_SUBMENU_ITEMS +.public EVO_WINDOW_PARAMS_4 +.public EVO_WINDOW_PARAMS_5 +.public EVO_WINDOW_PARAMS_6 .public GetActiveTeamMember .public GetAdvancedMenuResult .public GetEvolutionPossibilities @@ -39,8 +44,7 @@ .public IsValidTeamMember .public MemAlloc .public MemFree -.public ov11_0230D220 -.public ov11_02310BDC +.public OVERLAY16_UNKNOWN_POINTER__NA_238CE40 .public PreprocessString .public Rand16Bit .public RemoveItemInStorage @@ -59,6 +63,12 @@ .public StrncpyName .public StrncpySimple .public StrncpySimpleNoPadSafe +.public TEAM_MEMBER_TABLE_PTR +.public _s32_div_f +.public ov11_0230D220 +.public ov11_02310BDC +.public ov16_0238CE04 +.public ov16_0238CE28 .public sub_02017C50 .public sub_02017C74 .public sub_02017CB4 @@ -92,4 +102,3 @@ .public sub_020582E0 .public sub_02059B08 .public sub_0205B008 -.public TEAM_MEMBER_TABLE_PTR diff --git a/asm/include/overlay_16_0238CD08.inc b/asm/include/overlay_16_0238CD08.inc new file mode 100644 index 00000000..6f70f09b --- /dev/null +++ b/asm/include/overlay_16_0238CD08.inc @@ -0,0 +1 @@ +#pragma once diff --git a/asm/include/overlay_17_0238A754.inc b/asm/include/overlay_17_0238A754.inc index a69d9684..25316035 100644 --- a/asm/include/overlay_17_0238A754.inc +++ b/asm/include/overlay_17_0238A754.inc @@ -17,75 +17,37 @@ .public CreateDialogueBox .public CreatePortraitBox .public CreateSimpleMenuFromStringIds -.public GetActiveRosterIndex .public GetGameMode .public GetMainCharacter1MemberIdx .public GetPartnerMemberIdx -.public GetPressedButtons .public GetResolvedPerformanceProgressFlag -.public GetSimpleMenuResult__0202B870 .public GetTeamMember .public InitPortraitParamsWithMonsterId .public IsDialogueBoxActive .public IsMainCharacter -.public IsMePlaying -.public IsSimpleMenuActive -.public ov11_022DC504 -.public ov17_0238A278 -.public ov17_0238A364 .public OVERLAY17_FUNCTION_POINTER_TABLE .public OVERLAY17_UNKNOWN_POINTER__NA_238BE00 -.public PlaySeVolumeWrapper -.public PrintIqSkillsMenu .public ReturnScriptMenuResultZero .public SetPortraitEmotion .public SetPortraitLayout .public ShowDialogueBox .public ShowPortraitInPortraitBox .public ShowStringIdInDialogueBox -.public sub_02017C50 -.public sub_020307EC +.public ov17_0238A278 +.public ov17_0238A364 .public sub_02039C3C -.public sub_0203A51C -.public sub_0203A5A8 -.public sub_0203A5F0 -.public sub_0203A638 .public sub_0203A998 -.public sub_0203A9EC -.public sub_0203AA20 -.public sub_0203AAB0 -.public sub_0203AF0C .public sub_0203C7E4 .public sub_0203C874 .public sub_0203C8E0 .public sub_0203C910 .public sub_0203C940 -.public sub_0203C9C4 .public sub_0203C9E4 .public sub_0203F150 -.public sub_0203F398 -.public sub_0203F990 -.public sub_0203FA64 -.public sub_0203FD38 -.public sub_0203FD80 .public sub_0204018C -.public sub_020407EC -.public sub_02041094 .public sub_02041178 .public sub_020417A8 -.public sub_02041A18 -.public sub_02041B7C -.public sub_020420F4 -.public sub_02055B20 .public sub_02056410 .public sub_020564B0 -.public sub_02056554 -.public sub_020566C4 .public sub_02056F60 -.public sub_02057180 -.public sub_020572EC -.public sub_02057444 -.public sub_02058138 .public sub_0205B028 -.public TEAM_MEMBER_TABLE_PTR -.public TryAddMonsterToActiveTeam diff --git a/asm/include/overlay_17_0238B2B4.inc b/asm/include/overlay_17_0238B2B4.inc new file mode 100644 index 00000000..ad290da5 --- /dev/null +++ b/asm/include/overlay_17_0238B2B4.inc @@ -0,0 +1,55 @@ +#pragma once +.public GetActiveRosterIndex +.public GetPressedButtons +.public GetSimpleMenuResult__0202B870 +.public IsMePlaying +.public IsSimpleMenuActive +.public OVERLAY17_UNKNOWN_POINTER__NA_238BE00 +.public PlaySeVolumeWrapper +.public PrintIqSkillsMenu +.public TEAM_MEMBER_TABLE_PTR +.public TryAddMonsterToActiveTeam +.public ov11_022DC504 +.public ov17_0238B028 +.public ov17_0238B048 +.public ov17_0238B07C +.public ov17_0238B0B4 +.public ov17_0238B10C +.public ov17_0238B194 +.public ov17_0238B1B8 +.public ov17_0238B1E8 +.public ov17_0238B20C +.public ov17_0238B224 +.public ov17_0238B23C +.public ov17_0238B260 +.public ov17_0238B278 +.public ov17_0238B290 +.public sub_02017C50 +.public sub_020307EC +.public sub_0203A51C +.public sub_0203A5A8 +.public sub_0203A5F0 +.public sub_0203A638 +.public sub_0203A9EC +.public sub_0203AA20 +.public sub_0203AAB0 +.public sub_0203AF0C +.public sub_0203C9C4 +.public sub_0203F398 +.public sub_0203F990 +.public sub_0203FA64 +.public sub_0203FD38 +.public sub_0203FD80 +.public sub_020407EC +.public sub_02041094 +.public sub_02041A18 +.public sub_02041B7C +.public sub_020420F4 +.public sub_02055B20 +.public sub_02056410 +.public sub_02056554 +.public sub_020566C4 +.public sub_02057180 +.public sub_020572EC +.public sub_02057444 +.public sub_02058138 diff --git a/asm/include/overlay_18.inc b/asm/include/overlay_18.inc index 6f119dba..bd2521cc 100644 --- a/asm/include/overlay_18.inc +++ b/asm/include/overlay_18.inc @@ -14,14 +14,11 @@ .public CreateSimpleMenuFromStringIds .public CreateTextBox .public DrawTextInWindow -.public GetAdvancedMenuCurrentOption -.public GetAdvancedMenuResult .public GetEncodedHalfword .public GetEvoFamily .public GetMoneyCarried .public GetMoveName .public GetMovesetLevelUpPtr -.public GetPressedButtons .public GetSimpleMenuResult__0202B870 .public HidePortraitBox .public InitPortraitParamsWithMonsterId @@ -32,16 +29,32 @@ .public IsScrollBoxActive .public IsSimpleMenuActive .public IsTextBoxActive +.public LINK_SHOP_MAIN_MENU_ITEMS +.public LINK_SHOP_MENU_ITEMS_CONFIRM +.public LINK_SHOP_PTR +.public LINK_SHOP_SUBMENU_ITEMS_1 +.public LINK_SHOP_SUBMENU_ITEMS_2 +.public LINK_SHOP_SUBMENU_ITEMS_3 +.public LINK_SHOP_SUBMENU_ITEMS_4 +.public LINK_SHOP_SUBMENU_ITEMS_5 +.public LINK_SHOP_SUBMENU_ITEMS_6 +.public LINK_SHOP_SUBMENU_ITEMS_7 +.public LINK_SHOP_WINDOW_PARAMS_1 +.public LINK_SHOP_WINDOW_PARAMS_10 +.public LINK_SHOP_WINDOW_PARAMS_11 +.public LINK_SHOP_WINDOW_PARAMS_2 +.public LINK_SHOP_WINDOW_PARAMS_3 +.public LINK_SHOP_WINDOW_PARAMS_4 +.public LINK_SHOP_WINDOW_PARAMS_5 +.public LINK_SHOP_WINDOW_PARAMS_6 +.public LINK_SHOP_WINDOW_PARAMS_7 +.public LINK_SHOP_WINDOW_PARAMS_8 +.public LINK_SHOP_WINDOW_PARAMS_9 .public MemAlloc -.public memcpy .public MemFree -.public ov11_0238A090 -.public PlaySeByIdVolumeWrapper -.public PlaySeVolumeWrapper +.public OVERLAY18_FUNCTION_POINTER_TABLE .public PortraitBoxNeedsUpdate .public PreprocessString -.public PrintIqSkillsMenu -.public ResumeAdvancedMenu .public ReturnScriptMenuResultZero .public SetAdvancedTextBoxState5 .public SetPortraitEmotion @@ -51,65 +64,37 @@ .public ShowPortraitInPortraitBox .public ShowStringIdInDialogueBox .public StrncpySimpleNoPadSafe -.public sub_02017C74 +.public TEAM_MEMBER_TABLE_PTR +.public UpdateWindow +.public ov11_0238A090 +.public ov18_0238D5F8 +.public ov18_0238D608 .public sub_02027B1C .public sub_0202BC60 -.public sub_0202C1E4 .public sub_0202F334 .public sub_0202F954 -.public sub_020307EC .public sub_02039C2C .public sub_0203A51C -.public sub_0203A5A8 -.public sub_0203A5F0 .public sub_0203A618 -.public sub_0203A638 .public sub_0203A998 .public sub_0203A9B8 -.public sub_0203A9EC -.public sub_0203AA20 -.public sub_0203AAB0 .public sub_0203F150 -.public sub_0203F398 -.public sub_0203F990 -.public sub_0203FA64 -.public sub_0203FD14 -.public sub_0203FD2C .public sub_0203FD38 -.public sub_0203FD80 .public sub_0204018C .public sub_020407C0 -.public sub_020407EC .public sub_02040FA8 -.public sub_02041000 .public sub_02041094 -.public sub_020410A4 -.public sub_02041154 .public sub_02041178 .public sub_02041194 -.public sub_020412B0 .public sub_02041364 -.public sub_02041394 .public sub_02041400 .public sub_02041414 -.public sub_02041424 -.public sub_02041484 -.public sub_0204159C -.public sub_020415BC -.public sub_02041614 -.public sub_020416BC -.public sub_020416DC .public sub_020417A8 .public sub_02041860 .public sub_02041A00 -.public sub_02041A18 -.public sub_02041B7C -.public sub_020420F4 .public sub_02053880 .public sub_020564B0 .public sub_020572EC .public sub_020573A0 .public sub_0205B028 -.public TEAM_MEMBER_TABLE_PTR -.public UpdateWindow .public vsprintf diff --git a/asm/include/overlay_18_0238C114.inc b/asm/include/overlay_18_0238C114.inc new file mode 100644 index 00000000..bb089643 --- /dev/null +++ b/asm/include/overlay_18_0238C114.inc @@ -0,0 +1,43 @@ +#pragma once +.public GetMoneyCarried +.public GetPressedButtons +.public GetSimpleMenuResult__0202B870 +.public IsSimpleMenuActive +.public LINK_SHOP_PTR +.public PlaySeByIdVolumeWrapper +.public PlaySeVolumeWrapper +.public PrintIqSkillsMenu +.public TEAM_MEMBER_TABLE_PTR +.public ov18_0238BE28 +.public sub_02017C74 +.public sub_020307EC +.public sub_0203A51C +.public sub_0203A5A8 +.public sub_0203A5F0 +.public sub_0203A638 +.public sub_0203A9EC +.public sub_0203AA20 +.public sub_0203AAB0 +.public sub_0203F398 +.public sub_0203F990 +.public sub_0203FA64 +.public sub_0203FD38 +.public sub_0203FD80 +.public sub_020407EC +.public sub_02041000 +.public sub_02041094 +.public sub_020410A4 +.public sub_02041154 +.public sub_02041194 +.public sub_020412B0 +.public sub_02041364 +.public sub_02041394 +.public sub_02041414 +.public sub_02041424 +.public sub_02041484 +.public sub_020416BC +.public sub_020416DC +.public sub_02041A18 +.public sub_02041B7C +.public sub_020420F4 +.public sub_020572EC diff --git a/asm/include/overlay_18_0238CAB0.inc b/asm/include/overlay_18_0238CAB0.inc new file mode 100644 index 00000000..a0be1d53 --- /dev/null +++ b/asm/include/overlay_18_0238CAB0.inc @@ -0,0 +1,80 @@ +#pragma once +.public GetAdvancedMenuCurrentOption +.public GetAdvancedMenuResult +.public GetPressedButtons +.public GetSimpleMenuResult__0202B870 +.public IsAdvancedMenuActive2 +.public IsSimpleMenuActive +.public LINK_SHOP_PTR +.public ResumeAdvancedMenu +.public memcpy +.public ov18_0238ADA8 +.public ov18_0238BE28 +.public ov18_0238BE48 +.public ov18_0238BE6C +.public ov18_0238BE90 +.public ov18_0238BF0C +.public ov18_0238BF30 +.public ov18_0238BF60 +.public ov18_0238BF84 +.public ov18_0238BFA8 +.public ov18_0238C03C +.public ov18_0238C060 +.public ov18_0238C078 +.public ov18_0238C09C +.public ov18_0238C0C0 +.public ov18_0238C0D8 +.public ov18_0238C0FC +.public ov18_0238C114 +.public ov18_0238C13C +.public ov18_0238C164 +.public ov18_0238C21C +.public ov18_0238C240 +.public ov18_0238C258 +.public ov18_0238C27C +.public ov18_0238C340 +.public ov18_0238C364 +.public ov18_0238C398 +.public ov18_0238C3C0 +.public ov18_0238C428 +.public ov18_0238C47C +.public ov18_0238C4A0 +.public ov18_0238C4E8 +.public ov18_0238C504 +.public ov18_0238C528 +.public ov18_0238C720 +.public ov18_0238C78C +.public ov18_0238C7B0 +.public ov18_0238C7C0 +.public ov18_0238C7E4 +.public ov18_0238C808 +.public ov18_0238C888 +.public ov18_0238C8AC +.public ov18_0238C8D0 +.public ov18_0238C950 +.public ov18_0238C974 +.public ov18_0238C984 +.public ov18_0238C9A8 +.public ov18_0238C9B8 +.public ov18_0238CA18 +.public ov18_0238CA3C +.public ov18_0238CA4C +.public ov18_0238CA70 +.public ov18_0238CA80 +.public ov18_0238D208 +.public ov18_0238D22C +.public ov18_0238D23C +.public ov18_0238D260 +.public sub_0202C1E4 +.public sub_0203FD14 +.public sub_0203FD2C +.public sub_0203FD38 +.public sub_0203FD80 +.public sub_020407EC +.public sub_02041094 +.public sub_02041154 +.public sub_02041364 +.public sub_02041484 +.public sub_020415BC +.public sub_02041614 +.public sub_02041A18 diff --git a/asm/include/overlay_29_022DC65C.inc b/asm/include/overlay_29_022DC65C.inc deleted file mode 100644 index 327aba51..00000000 --- a/asm/include/overlay_29_022DC65C.inc +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once -.public ov29_022DC2B8 -.public ov29_022DC33C -.public ov29_023538B4 diff --git a/asm/include/overlay_29_022DC694.inc b/asm/include/overlay_29_022DC7E4.inc similarity index 85% rename from asm/include/overlay_29_022DC694.inc rename to asm/include/overlay_29_022DC7E4.inc index 1a31129e..4602935f 100644 --- a/asm/include/overlay_29_022DC694.inc +++ b/asm/include/overlay_29_022DC7E4.inc @@ -3,10 +3,7 @@ .public ChangeSimpleObjTexture .public DUNGEON_PTR .public DirectoryFileMngr_OpenDirectoryFile -.public DrawTeamStats .public FillPaletteInitInfo -.public FreeMapAndTeam -.public FreeTeamStats .public GetDefaultTileTextureId .public HandleSir0Translation .public IsBackgroundTileset @@ -16,15 +13,8 @@ .public MemZero .public OBJ_GRAPHICS_CONTROLS_PTR .public UnloadFile -.public UpdateTeamStats .public _s32_div_f -.public ov10_022C0814 -.public ov10_022C096C -.public ov10_022C0F6C -.public ov10_022C11D8 -.public ov10_022C14D0 -.public ov10_022C159C -.public ov10_022C22A0 +.public ov29_022DC78C .public ov29_02350F88 .public ov29_02350F8C .public ov29_02350F90 diff --git a/asm/include/overlay_29_022E28D4.inc b/asm/include/overlay_29_022E28D4.inc deleted file mode 100644 index 47350e70..00000000 --- a/asm/include/overlay_29_022E28D4.inc +++ /dev/null @@ -1,4 +0,0 @@ -#pragma once -.public EntityIsValid__022E1A1C -.public HasDropeyeStatus -.public IsPositionActuallyInSight diff --git a/asm/include/overlay_29_022E4714.inc b/asm/include/overlay_29_022E4868.inc similarity index 84% rename from asm/include/overlay_29_022E4714.inc rename to asm/include/overlay_29_022E4868.inc index aa03e10e..ddb30d5a 100644 --- a/asm/include/overlay_29_022E4714.inc +++ b/asm/include/overlay_29_022E4868.inc @@ -1,5 +1,4 @@ #pragma once .public GetEffectAnimationField0x19 -.public MonsterIsType .public PlayEffectAnimationEntity .public PlaySeByIdIfShouldDisplayEntity diff --git a/asm/include/overlay_29_022E66D8.inc b/asm/include/overlay_29_022E66D8.inc deleted file mode 100644 index 264700b1..00000000 --- a/asm/include/overlay_29_022E66D8.inc +++ /dev/null @@ -1,3 +0,0 @@ -#pragma once -.public GetEffectAnimationField0x19 -.public PlayEffectAnimationEntity diff --git a/asm/include/overlay_29_022F05B4.inc b/asm/include/overlay_29_022F0654.inc similarity index 96% rename from asm/include/overlay_29_022F05B4.inc rename to asm/include/overlay_29_022F0654.inc index 25d55df0..c415fa62 100644 --- a/asm/include/overlay_29_022F05B4.inc +++ b/asm/include/overlay_29_022F0654.inc @@ -11,7 +11,6 @@ .public DrawTextInWindow .public EntityIsValid__022F0590 .public ExecuteMoveEffect -.public FreezeAnim .public GetBottomScreenOption .public GetDirectionTowardsPosition .public GetLeader @@ -34,7 +33,6 @@ .public SetTopScreenOption .public SubstitutePlaceholderStringTags .public TryPointCameraToMonster -.public UnfreezeAnim .public UnkMapRelatedFunc .public UpdateAiTargetPos .public UpdateMinimap @@ -59,7 +57,6 @@ .public ov29_0234D65C .public ov29_0234D668 .public ov29_0234D690 -.public ov29_0234D838 .public ov29_0234D860 .public ov29_0234D878 .public ov29_0234D88C diff --git a/asm/include/overlay_29_02300D50.inc b/asm/include/overlay_29_02300D50.inc deleted file mode 100644 index d7b0028f..00000000 --- a/asm/include/overlay_29_02300D50.inc +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -.public CheckVariousStatuses__023016DC diff --git a/asm/include/overlay_29_0232124C.inc b/asm/include/overlay_29_0232124C.inc deleted file mode 100644 index 9e00281a..00000000 --- a/asm/include/overlay_29_0232124C.inc +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -.public ov29_0232119C diff --git a/asm/include/overlay_29_02343980.inc b/asm/include/overlay_29_02343980.inc index 8b865122..06b51b74 100644 --- a/asm/include/overlay_29_02343980.inc +++ b/asm/include/overlay_29_02343980.inc @@ -26,10 +26,6 @@ .public UpdateMinimap .public UpdateTrapsVisibility .public ZInit8 -.public ov10_022C6C75 -.public ov10_022C6C77 -.public ov10_022C6C78 -.public ov10_022C6C79 .public ov29_022EA370 .public ov29_02336694 .public ov29_02342BEC diff --git a/asm/include/overlay_29_02344B1C.inc b/asm/include/overlay_29_02344B1C.inc deleted file mode 100644 index 51f7144c..00000000 --- a/asm/include/overlay_29_02344B1C.inc +++ /dev/null @@ -1,7 +0,0 @@ -#pragma once -.public GenerateItem -.public SetPreprocessorArgsIdVal -.public SubstitutePlaceholderItemTags -.public ov29_023531A4 -.public ov29_023531BC -.public ov29_023537B0 diff --git a/asm/include/overlay_29_02344BA8.inc b/asm/include/overlay_29_02344BA8.inc new file mode 100644 index 00000000..c0f46f94 --- /dev/null +++ b/asm/include/overlay_29_02344BA8.inc @@ -0,0 +1,3 @@ +#pragma once +.public SubstitutePlaceholderItemTags +.public ov29_023531BC diff --git a/asm/include/overlay_29_0234921C.inc b/asm/include/overlay_29_0234921C.inc deleted file mode 100644 index a00f434c..00000000 --- a/asm/include/overlay_29_0234921C.inc +++ /dev/null @@ -1,2 +0,0 @@ -#pragma once -.public DUNGEON_PTR diff --git a/asm/include/overlay_29_0234B4CC.inc b/asm/include/overlay_29_0234B4CC.inc index 9ca1b363..b2c45872 100644 --- a/asm/include/overlay_29_0234B4CC.inc +++ b/asm/include/overlay_29_0234B4CC.inc @@ -1,21 +1,17 @@ #pragma once .public AddMessageToAlertBox .public AdvanceFrame -.public AllowPortraitDefault .public CloseAlertBox .public CreateAlertBox -.public DUNGEON_BUTTON_INPUT .public DUNGEON_PTR -.public InitPortraitParams .public IsAlertBoxActive .public MESSAGE_LOG_INFO .public PreprocessString .public StringFromId .public UnkMapRelatedFunc .public ov10_022BFD20 -.public ov29_022E0B60 .public ov29_022F2FE4 -.public ov29_0233A248 +.public ov29_0234BB44 .public ov29_02353214 .public strlen .public strncmp @@ -23,11 +19,3 @@ .public sub_02001808 .public sub_0202836C .public sub_02030214 -.public sub_02047FFC -.public sub_0204804C -.public sub_020480CC -.public sub_02048134 -.public sub_02048150 -.public sub_02048240 -.public sub_0204833C -.public sub_02048360 diff --git a/asm/main_020022C4.s b/asm/main_020022C4.s index 1d69c42f..da40ad4f 100644 --- a/asm/main_020022C4.s +++ b/asm/main_020022C4.s @@ -76,1286 +76,3 @@ _02002378: bne _0200236C mov r0, #0 bx lr - - arm_func_start sub_0200238C -sub_0200238C: ; 0x0200238C - cmp r0, #0x41 - bxlt lr - cmp r0, #0x5a - addle r0, r0, #0x20 - movle r0, r0, lsl #0x18 - movle r0, r0, asr #0x18 - bx lr - arm_func_end sub_0200238C - - arm_func_start sub_020023A8 -sub_020023A8: ; 0x020023A8 - mov ip, #0 - b _020023E4 -_020023B0: - ldrsb r3, [r1] - cmp r3, #0 - bne _020023D8 - mov r1, #0x20 - b _020023CC -_020023C4: - strb r1, [r0], #1 - add ip, ip, #1 -_020023CC: - cmp ip, r2 - blt _020023C4 - b _020023EC -_020023D8: - add r1, r1, #1 - strb r3, [r0], #1 - add ip, ip, #1 -_020023E4: - cmp ip, r2 - blt _020023B0 -_020023EC: - mov r1, #0 - strb r1, [r0] - bx lr - arm_func_end sub_020023A8 - - arm_func_start sub_020023F8 -sub_020023F8: ; 0x020023F8 - stmdb sp!, {r3, lr} - mov lr, #0 - b _02002428 -_02002404: - ldrsb ip, [r0], #1 - ldrsb r3, [r1], #1 - cmp r3, ip - movne r0, #0 - ldmneia sp!, {r3, pc} - cmp ip, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - add lr, lr, #1 -_02002428: - cmp lr, r2 - blt _02002404 - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end sub_020023F8 - - arm_func_start WaitForever -WaitForever: ; 0x02002438 - stmdb sp!, {r3, lr} - bl OS_DisableScheduler -_02002440: - bl WaitForInterrupt - b _02002440 - arm_func_end WaitForever - - arm_func_start sub_02002448 -sub_02002448: ; 0x02002448 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_02003AD0 - bl sub_02002580 - mov r1, #1 - bl sub_020027F8 - bl OS_DisableScheduler - bl GX_DispOff - ldr r3, _02002498 ; =0x04001000 - ldr r0, _0200249C ; =_02092464 - ldr r2, [r3] - mov r1, r4 - bic r2, r2, #0x10000 - str r2, [r3] - bl Debug_Print0 - mov r0, r4 - bl OS_ResetSystem - bl OS_DisableScheduler -_02002490: - bl WaitForInterrupt - b _02002490 - .align 2, 0 -_02002498: .word 0x04001000 -_0200249C: .word _02092464 - arm_func_end sub_02002448 - - arm_func_start sub_020024A0 -sub_020024A0: ; 0x020024A0 - ldr r0, _020024AC ; =0x027FFC20 - ldr r0, [r0] - bx lr - .align 2, 0 -_020024AC: .word 0x027FFC20 - arm_func_end sub_020024A0 - - arm_func_start sub_020024B0 -sub_020024B0: ; 0x020024B0 - ldr ip, _020024BC ; =Card_SetPulledOutCallback - mov r0, #0 - bx ip - .align 2, 0 -_020024BC: .word Card_SetPulledOutCallback - arm_func_end sub_020024B0 - - arm_func_start sub_020024C0 -sub_020024C0: ; 0x020024C0 - ldr ip, _020024CC ; =Card_SetPulledOutCallback - ldr r0, _020024D0 ; =sub_020024D4 - bx ip - .align 2, 0 -_020024CC: .word Card_SetPulledOutCallback -_020024D0: .word sub_020024D4 - arm_func_end sub_020024C0 - - arm_func_start sub_020024D4 -sub_020024D4: ; 0x020024D4 - stmdb sp!, {r3, lr} - bl CardPullOut - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end sub_020024D4 - - arm_func_start sub_020024E4 -sub_020024E4: ; 0x020024E4 - stmdb sp!, {r3, lr} - ldr r0, _0200256C ; =_0229AFCC - bl OS_InitMutex - ldr r0, _0200256C ; =_0229AFCC - bl OS_LockMutex - mov r1, #0 - ldr r0, _02002570 ; =_0229AFE4 - mov r2, r1 -_02002504: - add r1, r1, #1 - cmp r1, #8 - str r2, [r0], #4 - blt _02002504 - ldr r1, _02002574 ; =_0229AFC0 - ldr r0, _0200256C ; =_0229AFCC - str r2, [r1] - str r2, [r1, #4] - str r2, [r1, #8] - bl OS_UnlockMutex - ldr r1, _02002578 ; =OSi_ThreadInfo - ldr r0, _0200257C ; =_0229B004 - ldr r1, [r1, #4] - mov r2, #0 - stmia r0, {r1, r2} - str r2, [r0, #8] - str r2, [r0, #0xc] - mov r1, #7 - str r1, [r0, #0x10] - str r2, [r0, #0x14] - bl sub_020026E4 - ldr r0, _02002578 ; =OSi_ThreadInfo - mov r1, #7 - ldr r0, [r0, #4] - bl OS_SetThreadPriority - ldmia sp!, {r3, pc} - .align 2, 0 -_0200256C: .word _0229AFCC -_02002570: .word _0229AFE4 -_02002574: .word _0229AFC0 -_02002578: .word OSi_ThreadInfo -_0200257C: .word _0229B004 - arm_func_end sub_020024E4 - - arm_func_start sub_02002580 -sub_02002580: ; 0x02002580 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _020025E8 ; =OSi_ThreadInfo - ldr r0, _020025EC ; =_0229AFCC - ldr r4, [r1, #4] - bl OS_LockMutex - ldr r0, _020025F0 ; =_0229AFC0 - mov r1, #0 - ldr r3, [r0] - ldr r2, _020025F4 ; =_0229AFE4 - b _020025CC -_020025A8: - ldr r5, [r2] - ldr r0, [r5] - cmp r0, r4 - bne _020025C4 - ldr r0, _020025EC ; =_0229AFCC - bl OS_UnlockMutex - b _020025E0 -_020025C4: - add r1, r1, #1 - add r2, r2, #4 -_020025CC: - cmp r1, r3 - blt _020025A8 - ldr r0, _020025EC ; =_0229AFCC - bl OS_UnlockMutex - mov r5, #0 -_020025E0: - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020025E8: .word OSi_ThreadInfo -_020025EC: .word _0229AFCC -_020025F0: .word _0229AFC0 -_020025F4: .word _0229AFE4 - arm_func_end sub_02002580 - -; https://decomp.me/scratch/Gairr - arm_func_start sub_020025F8 -sub_020025F8: ; 0x020025F8 - stmdb sp!, {r4, lr} - cmp r0, #0 - beq _02002614 - ldr r0, [r0] - mov r1, #0 - bl OS_SleepThreadDirect - ldmia sp!, {r4, pc} -_02002614: - mov r4, #0 -_02002618: - mov r0, r4 - bl OS_SleepThread - b _02002618 - arm_func_end sub_020025F8 - - arm_func_start sub_02002624 -sub_02002624: ; 0x02002624 - ldmia sp!, {r4, pc} - arm_func_end sub_02002624 - - arm_func_start sub_02002628 -sub_02002628: ; 0x02002628 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _02002658 ; =OSi_ThreadInfo - mov r5, r0 - ldr r0, [r2, #4] - mov r4, r1 - str r0, [r5] - bl OS_GetThreadPriority - str r0, [r5, #4] - ldr r0, [r5] - mov r1, r4 - bl OS_SetThreadPriority - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02002658: .word OSi_ThreadInfo - arm_func_end sub_02002628 - - arm_func_start sub_0200265C -sub_0200265C: ; 0x0200265C - ldr ip, _0200266C ; =OS_SetThreadPriority - mov r1, r0 - ldmia r1, {r0, r1} - bx ip - .align 2, 0 -_0200266C: .word OS_SetThreadPriority - arm_func_end sub_0200265C - - arm_func_start sub_02002670 -sub_02002670: ; 0x02002670 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _020026AC ; =OSi_ThreadInfo - ldr r5, [r0, #4] - mov r0, r5 - bl OS_GetThreadPriority - mov r4, r0 - mov r0, r5 - mov r1, #7 - bl OS_SetThreadPriority - ldr r0, _020026B0 ; =_0229AFCC - bl OS_LockMutex - ldr r0, _020026B4 ; =_020AEF30 - str r5, [r0] - str r4, [r0, #4] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020026AC: .word OSi_ThreadInfo -_020026B0: .word _0229AFCC -_020026B4: .word _020AEF30 - arm_func_end sub_02002670 - - arm_func_start sub_020026B8 -sub_020026B8: ; 0x020026B8 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _020026DC ; =_020AEF30 - ldr r0, _020026E0 ; =_0229AFCC - ldmia r1, {r4, r5} - bl OS_UnlockMutex - mov r0, r4 - mov r1, r5 - bl OS_SetThreadPriority - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020026DC: .word _020AEF30 -_020026E0: .word _0229AFCC - arm_func_end sub_020026B8 - - arm_func_start sub_020026E4 -sub_020026E4: ; 0x020026E4 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _02002768 ; =OSi_ThreadInfo - mov r6, r0 - ldr r5, [r1, #4] - mov r0, r5 - bl OS_GetThreadPriority - mov r4, r0 - mov r0, r5 - mov r1, #7 - bl OS_SetThreadPriority - ldr r0, _0200276C ; =_0229AFCC - bl OS_LockMutex - ldr r0, _02002770 ; =_0229AFC0 - ldr r3, [r0] - cmp r3, #8 - bge _02002750 - add r1, r3, #1 - ldr r2, _02002774 ; =_0229AFE4 - str r1, [r0] - ldr r1, [r0] - str r6, [r2, r3, lsl #2] - str r1, [r0, #4] - ldr r2, [r0, #4] - ldr r1, [r0, #8] - cmp r2, r1 - ldrgt r1, [r0, #4] - strgt r1, [r0, #8] -_02002750: - ldr r0, _0200276C ; =_0229AFCC - bl OS_UnlockMutex - mov r0, r5 - mov r1, r4 - bl OS_SetThreadPriority - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02002768: .word OSi_ThreadInfo -_0200276C: .word _0229AFCC -_02002770: .word _0229AFC0 -_02002774: .word _0229AFE4 - arm_func_end sub_020026E4 - - arm_func_start sub_02002778 -sub_02002778: ; 0x02002778 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r4, r0 - mov ip, r1 - add r0, r4, #0x1c - mov r5, ip - str r0, [r4] - mov r6, r2 - ldmia r5!, {r0, r1, r2, r3} - add lr, r4, #4 - stmia lr!, {r0, r1, r2, r3} - ldr r0, [r5] - mov r2, r6 - str r0, [lr] - str r6, [r4, #0x18] - ldr r1, [ip, #8] - str r1, [sp] - ldr r0, [ip, #0xc] - bic r3, r1, #7 - str r0, [sp, #4] - ldmia ip, {r1, lr} - ldr r0, [r4] - add r3, lr, r3 - bl OS_CreateThread - mov r0, r4 - bl sub_020026E4 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_02002778 - - arm_func_start sub_020027E8 -sub_020027E8: ; 0x020027E8 - ldr ip, _020027F4 ; =OS_WakeupThreadDirect - ldr r0, [r0] - bx ip - .align 2, 0 -_020027F4: .word OS_WakeupThreadDirect - arm_func_end sub_020027E8 - - arm_func_start sub_020027F8 -sub_020027F8: ; 0x020027F8 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r0, [r6] - mov r5, r1 - bl OS_GetThreadPriority - mov r4, r0 - ldr r0, [r6] - mov r1, r5 - bl OS_SetThreadPriority - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_020027F8 - - arm_func_start sub_02002824 -sub_02002824: ; 0x02002824 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _02002854 ; =OSi_ThreadInfo - mov r6, r0 - ldr r5, [r1, #4] - mov r0, r5 - bl OS_GetThreadPriority - mov r4, r0 - mov r0, r5 - mov r1, r6 - bl OS_SetThreadPriority - mov r0, r4 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02002854: .word OSi_ThreadInfo - arm_func_end sub_02002824 - - arm_func_start sub_02002858 -sub_02002858: ; 0x02002858 - str r1, [r0, #0x14] - bx lr - arm_func_end sub_02002858 - - arm_func_start sub_02002860 -sub_02002860: ; 0x02002860 - cmp r0, #0 - ldrne r1, [r0] - cmpne r1, #0 - ldrne r0, [r0, #0x14] - moveq r0, #0 - bx lr - arm_func_end sub_02002860 - - arm_func_start sub_02002878 -sub_02002878: ; 0x02002878 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_02002580 - cmp r0, #0 - beq _020028A4 - ldr r0, [r0, #0x14] - cmp r0, r4 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} -_020028A4: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end sub_02002878 - - arm_func_start sub_020028AC -sub_020028AC: ; 0x020028AC - bx lr - arm_func_end sub_020028AC - - arm_func_start sub_020028B0 -sub_020028B0: ; 0x020028B0 - stmdb sp!, {r4, lr} - mov r4, r0 - bl OS_InitMutex - mov r0, r4 - bl OS_LockMutex - bl sub_02002670 - ldr r0, _020028F4 ; =_0229B0E0 - ldr r1, [r0] - add r1, r1, #1 - str r1, [r0] - ldr r2, [r0] - ldr r1, [r0, #4] - cmp r2, r1 - ldrgt r1, [r0] - strgt r1, [r0, #4] - bl sub_020026B8 - ldmia sp!, {r4, pc} - .align 2, 0 -_020028F4: .word _0229B0E0 - arm_func_end sub_020028B0 - - arm_func_start sub_020028F8 -sub_020028F8: ; 0x020028F8 - ldr ip, _02002900 ; =OS_UnlockMutex - bx ip - .align 2, 0 -_02002900: .word OS_UnlockMutex - arm_func_end sub_020028F8 - - arm_func_start sub_02002904 -sub_02002904: ; 0x02002904 - ldr ip, _0200290C ; =OS_LockMutex - bx ip - .align 2, 0 -_0200290C: .word OS_LockMutex - arm_func_end sub_02002904 - - arm_func_start sub_02002910 -sub_02002910: ; 0x02002910 - stmdb sp!, {r4, lr} - mov r4, r0 - bl OS_TryLockMutex - tst r0, #0xff - beq _02002944 - ldr r0, [r4, #0xc] - cmp r0, #1 - movle r0, #1 - ldmleia sp!, {r4, pc} - mov r0, r4 - bl OS_UnlockMutex - mov r0, #0 - ldmia sp!, {r4, pc} -_02002944: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end sub_02002910 - - arm_func_start sub_0200294C -sub_0200294C: ; 0x0200294C - bx lr - arm_func_end sub_0200294C - - arm_func_start sub_02002950 -sub_02002950: ; 0x02002950 - stmdb sp!, {r3, lr} - mov r3, r0 - add r1, r3, #4 - add r0, r3, #8 - mov r2, #1 - str r1, [r3] - bl OS_InitMessageQueue - bl sub_02002670 - ldr r0, _0200299C ; =_0229B0E8 - ldr r1, [r0] - add r1, r1, #1 - str r1, [r0] - ldr r2, [r0] - ldr r1, [r0, #4] - cmp r2, r1 - ldrgt r1, [r0] - strgt r1, [r0, #4] - bl sub_020026B8 - ldmia sp!, {r3, pc} - .align 2, 0 -_0200299C: .word _0229B0E8 - arm_func_end sub_02002950 - - arm_func_start sub_020029A0 -sub_020029A0: ; 0x020029A0 - ldr ip, _020029B4 ; =OS_SendMessage - mov r1, #0 - mov r2, r1 - add r0, r0, #8 - bx ip - .align 2, 0 -_020029B4: .word OS_SendMessage - arm_func_end sub_020029A0 - - arm_func_start sub_020029B8 -sub_020029B8: ; 0x020029B8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r1, _02002A40 ; =OSi_ThreadInfo - mov r4, r0 - ldr sb, [r1, #4] - mov r7, #0 - mov r0, sb - bl OS_GetThreadPriority - mov r8, r0 - mov r0, sb - mov r1, #7 - bl OS_SetThreadPriority - mov r5, r7 - b _020029F0 -_020029EC: - add r7, r7, #1 -_020029F0: - mov r1, r5 - mov r2, r5 - add r0, r4, #8 - bl OS_SendMessage - cmp r0, #0 - bne _020029EC - add r6, sp, #0 - mov r5, #0 -_02002A10: - mov r1, r6 - mov r2, r5 - add r0, r4, #8 - bl OS_ReceiveMessage - cmp r0, #0 - subne r7, r7, #1 - bne _02002A10 - mov r0, sb - mov r1, r8 - bl OS_SetThreadPriority - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02002A40: .word OSi_ThreadInfo - arm_func_end sub_020029B8 - - arm_func_start sub_02002A44 -sub_02002A44: ; 0x02002A44 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r1, _02002A94 ; =OSi_ThreadInfo - mov r6, r0 - ldr r5, [r1, #4] - mov r0, r5 - bl OS_GetThreadPriority - mov r4, r0 - mov r0, r5 - mov r1, #6 - bl OS_SetThreadPriority - add r1, sp, #0 - add r0, r6, #8 - mov r2, #1 - bl OS_ReceiveMessage - mov r0, r5 - mov r1, r4 - bl OS_SetThreadPriority - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02002A94: .word OSi_ThreadInfo - arm_func_end sub_02002A44 - - arm_func_start sub_02002A98 -sub_02002A98: ; 0x02002A98 - bx lr - arm_func_end sub_02002A98 - - arm_func_start sub_02002A9C -sub_02002A9C: ; 0x02002A9C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - str r1, [r6, #0xa4] - add r1, r6, #4 - str r2, [r6, #0xa8] - str r1, [r6] - ldr r2, [r6, #0xa4] - add r0, r6, #0x84 - bl OS_InitMessageQueue - mov r5, #0 - mov r4, r5 - b _02002AE0 -_02002ACC: - mov r1, r4 - mov r2, r4 - add r0, r6, #0x84 - bl OS_SendMessage - add r5, r5, #1 -_02002AE0: - ldr r0, [r6, #0xa8] - cmp r5, r0 - blt _02002ACC - bl sub_02002670 - ldr r0, _02002B1C ; =_0229B0F0 - ldr r1, [r0] - add r1, r1, #1 - str r1, [r0] - ldr r2, [r0] - ldr r1, [r0, #4] - cmp r2, r1 - ldrgt r1, [r0] - strgt r1, [r0, #4] - bl sub_020026B8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02002B1C: .word _0229B0F0 - arm_func_end sub_02002A9C - - arm_func_start sub_02002B20 -sub_02002B20: ; 0x02002B20 - ldr ip, _02002B34 ; =OS_SendMessage - mov r1, #0 - mov r2, r1 - add r0, r0, #0x84 - bx ip - .align 2, 0 -_02002B34: .word OS_SendMessage - arm_func_end sub_02002B20 - - arm_func_start sub_02002B38 -sub_02002B38: ; 0x02002B38 - ldr ip, _02002B4C ; =OS_SendMessage - mov r1, #0 - mov r2, r1 - add r0, r0, #0x84 - bx ip - .align 2, 0 -_02002B4C: .word OS_SendMessage - arm_func_end sub_02002B38 - - arm_func_start sub_02002B50 -sub_02002B50: ; 0x02002B50 - stmdb sp!, {r3, lr} - ldr r1, [r0, #0x98] - cmp r1, #0 - movne r0, #0 - ldmneia sp!, {r3, pc} - mov r1, #0 - mov r2, r1 - add r0, r0, #0x84 - bl OS_SendMessage - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end sub_02002B50 - - arm_func_start sub_02002B7C -sub_02002B7C: ; 0x02002B7C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r1, _02002BCC ; =OSi_ThreadInfo - mov r6, r0 - ldr r5, [r1, #4] - mov r0, r5 - bl OS_GetThreadPriority - mov r4, r0 - mov r0, r5 - mov r1, #6 - bl OS_SetThreadPriority - add r1, sp, #0 - add r0, r6, #0x84 - mov r2, #1 - bl OS_ReceiveMessage - mov r0, r5 - mov r1, r4 - bl OS_SetThreadPriority - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02002BCC: .word OSi_ThreadInfo - arm_func_end sub_02002B7C - - arm_func_start sub_02002BD0 -sub_02002BD0: ; 0x02002BD0 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r1, _02002C28 ; =OSi_ThreadInfo - mov r5, r0 - ldr r6, [r1, #4] - mov r0, r6 - bl OS_GetThreadPriority - mov r4, r0 - mov r0, r6 - mov r1, #6 - bl OS_SetThreadPriority - add r1, sp, #0 - add r0, r5, #0x84 - mov r2, #0 - bl OS_ReceiveMessage - and r5, r0, #0xff - mov r0, r6 - mov r1, r4 - bl OS_SetThreadPriority - mov r0, r5 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02002C28: .word OSi_ThreadInfo - arm_func_end sub_02002BD0 - - arm_func_start sub_02002C2C -sub_02002C2C: ; 0x02002C2C - ldr ip, _02002C38 ; =OS_InitMutex - ldr r0, _02002C3C ; =_0229B0F8 - bx ip - .align 2, 0 -_02002C38: .word OS_InitMutex -_02002C3C: .word _0229B0F8 - arm_func_end sub_02002C2C - - arm_func_start sub_02002C40 -sub_02002C40: ; 0x02002C40 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _02002CA4 ; =OSi_ThreadInfo - mov r6, r0 - ldr r5, [r1, #4] - mov r0, r5 - bl OS_GetThreadPriority - mov r4, r0 - mov r0, r5 - mov r1, #7 - bl OS_SetThreadPriority - ldr r0, _02002CA8 ; =_0229B0F8 - bl OS_LockMutex - mov r0, r6 - bl sub_020028B0 - bl sub_02002580 - str r0, [r6, #0x18] - mov r0, #0 - str r0, [r6, #0x20] - str r0, [r6, #0x1c] - ldr r0, _02002CA8 ; =_0229B0F8 - bl OS_UnlockMutex - mov r0, r5 - mov r1, r4 - bl OS_SetThreadPriority - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02002CA4: .word OSi_ThreadInfo -_02002CA8: .word _0229B0F8 - arm_func_end sub_02002C40 - - arm_func_start sub_02002CAC -sub_02002CAC: ; 0x02002CAC - str r1, [r0, #0x20] - bx lr - arm_func_end sub_02002CAC - - arm_func_start sub_02002CB4 -sub_02002CB4: ; 0x02002CB4 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _02002D10 ; =OSi_ThreadInfo - mov r6, r0 - ldr r5, [r1, #4] - mov r0, r5 - bl OS_GetThreadPriority - ldr r1, [r6, #0x20] - mov r4, r0 - cmp r1, #0 - beq _02002CF4 - cmp r1, r4 - movhs r4, #0 - bhs _02002CF8 - mov r0, r5 - bl OS_SetThreadPriority - b _02002CF8 -_02002CF4: - mov r4, #0 -_02002CF8: - mov r0, r6 - bl sub_02002904 - str r4, [r6, #0x1c] - bl sub_02002580 - str r0, [r6, #0x18] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02002D10: .word OSi_ThreadInfo - arm_func_end sub_02002CB4 - - arm_func_start sub_02002D14 -sub_02002D14: ; 0x02002D14 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r2, _02002D7C ; =OSi_ThreadInfo - mov r7, r0 - ldr r5, [r2, #4] - mov r6, r1 - mov r0, r5 - bl OS_GetThreadPriority - ldr r1, [r7, #0x20] - mov r4, r0 - cmp r1, #0 - beq _02002D58 - cmp r1, r4 - movhs r4, #0 - bhs _02002D5C - mov r0, r5 - bl OS_SetThreadPriority - b _02002D5C -_02002D58: - mov r4, #0 -_02002D5C: - mov r0, r6 - bl sub_02002B7C - mov r0, r7 - bl sub_02002904 - str r4, [r7, #0x1c] - bl sub_02002580 - str r0, [r7, #0x18] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02002D7C: .word OSi_ThreadInfo - arm_func_end sub_02002D14 - - arm_func_start sub_02002D80 -sub_02002D80: ; 0x02002D80 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - bl sub_02002580 - mov r4, r0 - ldr r0, [r4] - bl OS_GetThreadPriority - ldr r1, [r7, #0x20] - mov r5, r0 - cmp r1, #0 - beq _02002DC4 - cmp r1, r5 - movhs r5, #0 - bhs _02002DC8 - ldr r0, [r4] - bl OS_SetThreadPriority - b _02002DC8 -_02002DC4: - mov r5, #0 -_02002DC8: - mov r0, r6 - bl sub_02002BD0 - cmp r0, #0 - beq _02002DF4 - mov r0, r7 - bl sub_02002904 - str r5, [r7, #0x1c] - bl sub_02002580 - str r0, [r7, #0x18] - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02002DF4: - cmp r5, #0 - beq _02002E08 - mov r0, r4 - mov r1, r5 - bl sub_020027F8 -_02002E08: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_02002D80 - - arm_func_start sub_02002E10 -sub_02002E10: ; 0x02002E10 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _02002E94 ; =OSi_ThreadInfo - mov r6, r0 - ldr r5, [r1, #4] - mov r0, r5 - bl OS_GetThreadPriority - ldr r1, [r6, #0x20] - mov r4, r0 - cmp r1, #0 - beq _02002E50 - cmp r1, r4 - movhs r4, #0 - bhs _02002E54 - mov r0, r5 - bl OS_SetThreadPriority - b _02002E54 -_02002E50: - mov r4, #0 -_02002E54: - mov r0, r6 - bl sub_02002910 - cmp r0, #0 - beq _02002E78 - str r4, [r6, #0x1c] - bl sub_02002580 - str r0, [r6, #0x18] - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_02002E78: - cmp r4, #0 - beq _02002E8C - mov r0, r5 - mov r1, r4 - bl OS_SetThreadPriority -_02002E8C: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02002E94: .word OSi_ThreadInfo - arm_func_end sub_02002E10 - - arm_func_start sub_02002E98 -sub_02002E98: ; 0x02002E98 - stmdb sp!, {r3, r4, r5, lr} - ldr r4, [r0, #0x1c] - ldr r5, [r0, #0x18] - mov r1, #0 - str r1, [r0, #0x1c] - str r1, [r0, #0x18] - bl sub_020028F8 - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl sub_020027F8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_02002E98 - - arm_func_start sub_02002ECC -sub_02002ECC: ; 0x02002ECC - stmdb sp!, {r4, r5, r6, lr} - ldr r4, [r0, #0x1c] - ldr r5, [r0, #0x18] - mov r2, #0 - str r2, [r0, #0x18] - mov r6, r1 - str r2, [r0, #0x1c] - bl sub_020028F8 - mov r0, r6 - bl sub_02002B20 - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r5 - mov r1, r4 - bl sub_020027F8 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end sub_02002ECC - - arm_func_start sub_02002F0C -sub_02002F0C: ; 0x02002F0C - stmdb sp!, {r3, lr} - ldr r0, _02002F30 ; =_020AEF58 - bl sub_02002C40 - ldr r0, _02002F30 ; =_020AEF58 - mov r1, #7 - bl sub_02002CAC - ldr r0, _02002F30 ; =_020AEF58 - bl sub_02002E98 - ldmia sp!, {r3, pc} - .align 2, 0 -_02002F30: .word _020AEF58 - arm_func_end sub_02002F0C - - arm_func_start sub_02002F34 -sub_02002F34: ; 0x02002F34 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, _02002F78 ; =_020AEF58 - mov r4, r1 - bl sub_02002CB4 - mov r0, r4, lsl #2 - mov r1, #1 - bl MemAlloc - str r0, [r5, #0x20] - str r4, [r5, #0x24] - ldr r1, [r5, #0x20] - mov r0, r5 - mov r2, r4 - bl OS_InitMessageQueue - ldr r0, _02002F78 ; =_020AEF58 - bl sub_02002E98 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02002F78: .word _020AEF58 - arm_func_end sub_02002F34 - - arm_func_start sub_02002F7C -sub_02002F7C: ; 0x02002F7C - stmdb sp!, {r3, lr} - cmp r2, #0 - movne r2, #1 - moveq r2, #0 - bl OS_SendMessage - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end sub_02002F7C - - arm_func_start sub_02002F98 -sub_02002F98: ; 0x02002F98 - stmdb sp!, {r3, lr} - cmp r2, #0 - movne r2, #1 - moveq r2, #0 - bl OS_ReceiveMessage - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end sub_02002F98 - - arm_func_start sub_02002FB4 -sub_02002FB4: ; 0x02002FB4 - bx lr - arm_func_end sub_02002FB4 - - arm_func_start sub_02002FB8 -sub_02002FB8: ; 0x02002FB8 - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _02003024 ; =_0229B110 - mov r6, #0 - strh r6, [r0] - cmp r6, #6 - ldr r5, _02003028 ; =_0229B114 - bge _0200301C - mov r4, r6 - b _02003014 -_02002FDC: - mov r0, r5 - bl sub_02002C40 - cmp r6, #4 - str r4, [r5, #0x24] - cmpne r6, #5 - bne _02003000 - bl OS_GetLockID - strh r0, [r5, #0x28] - b _02003004 -_02003000: - strh r4, [r5, #0x28] -_02003004: - mov r0, r5 - bl sub_02002E98 - add r6, r6, #1 - add r5, r5, #0x2c -_02003014: - cmp r6, #6 - blt _02002FDC -_0200301C: - bl sub_020059A8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02003024: .word _0229B110 -_02003028: .word _0229B114 - arm_func_end sub_02002FB8 - - arm_func_start sub_0200302C -sub_0200302C: ; 0x0200302C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - movs r8, r0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - bl sub_02002580 - mov r7, r0 - mov r6, #0 - ldr r5, _020030C4 ; =_0229B114 - mov r4, #1 - ldr sl, _020030C8 ; =_0229B110 - b _020030B8 -_02003054: - mov r0, r4, lsl r6 - mov sb, r0, lsl #0x10 - tst r8, sb, lsr #16 - beq _020030B0 - mov r0, r5 - bl sub_02002CB4 - bl InterruptMasterDisable - ldrh r0, [sl] - ldrh r0, [sl] - str r7, [r5, #0x24] - orr r0, r0, sb, lsr #16 - strh r0, [sl] - bl InterruptMasterEnable - cmp r6, #4 - beq _0200309C - cmp r6, #5 - beq _020030A8 - b _020030B0 -_0200309C: - ldrh r0, [r5, #0x28] - bl Card_LockRom - b _020030B0 -_020030A8: - ldrh r0, [r5, #0x28] - bl Card_LockBackup -_020030B0: - add r6, r6, #1 - add r5, r5, #0x2c -_020030B8: - cmp r6, #6 - blt _02003054 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_020030C4: .word _0229B114 -_020030C8: .word _0229B110 - arm_func_end sub_0200302C - - arm_func_start InterruptMasterDisable -InterruptMasterDisable: ; 0x020030CC - ldr r2, _020030E0 ; =0x04000208 - mov r1, #0 - ldrh r0, [r2] - strh r1, [r2] - bx lr - .align 2, 0 -_020030E0: .word 0x04000208 - arm_func_end InterruptMasterDisable - - arm_func_start InterruptMasterEnable -InterruptMasterEnable: ; 0x020030E4 - ldr r2, _020030F8 ; =0x04000208 - mov r1, #1 - ldrh r0, [r2] - strh r1, [r2] - bx lr - .align 2, 0 -_020030F8: .word 0x04000208 - arm_func_end InterruptMasterEnable - - arm_func_start sub_020030FC -sub_020030FC: ; 0x020030FC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - movs sl, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - bl sub_02002580 - mov r1, #7 - mov r8, r0 - bl sub_020027F8 - mov sb, r0 - mov r7, #0 - ldr r6, _020031B8 ; =_0229B114 - mov fp, #1 - ldr r5, _020031BC ; =_0229B110 - b _020031A0 -_02003130: - mov r0, fp, lsl r7 - mov r4, r0, lsl #0x10 - tst sl, r4, lsr #16 - beq _02003198 - cmp r7, #4 - beq _02003154 - cmp r7, #5 - beq _02003160 - b _02003168 -_02003154: - ldrh r0, [r6, #0x28] - bl Card_UnlockRom - b _02003168 -_02003160: - ldrh r0, [r6, #0x28] - bl Card_UnlockBackup -_02003168: - bl InterruptMasterDisable - ldrh r0, [r5] - mvn r1, r4, lsr #16 - ldrh r0, [r5] - ldrh r2, [r5] - mov r0, #0 - str r0, [r6, #0x24] - and r0, r2, r1 - strh r0, [r5] - bl InterruptMasterEnable - mov r0, r6 - bl sub_02002E98 -_02003198: - add r7, r7, #1 - add r6, r6, #0x2c -_020031A0: - cmp r7, #6 - blt _02003130 - mov r0, r8 - mov r1, sb - bl sub_020027F8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020031B8: .word _0229B114 -_020031BC: .word _0229B110 - arm_func_end sub_020030FC - - arm_func_start sub_020031C0 -sub_020031C0: ; 0x020031C0 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - bl sub_02002580 - mov r5, #0 - mov lr, r5 - cmp r5, #6 - ldr ip, _02003218 ; =_0229B114 - bge _02003210 - mov r3, #1 - b _02003208 -_020031E8: - mov r1, r3, lsl lr - mov r1, r1, lsl #0x10 - tst r4, r1, lsr #16 - ldrne r2, [ip, #0x24] - add lr, lr, #1 - cmpne r2, r0 - orrne r5, r5, r1, lsr #16 - add ip, ip, #0x2c -_02003208: - cmp lr, #6 - blt _020031E8 -_02003210: - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02003218: .word _0229B114 - arm_func_end sub_020031C0 - - arm_func_start InitMemAllocTableVeneer -InitMemAllocTableVeneer: ; 0x0200321C - ldr ip, _02003224 ; =InitMemAllocTable - bx ip - .align 2, 0 -_02003224: .word InitMemAllocTable - arm_func_end InitMemAllocTableVeneer diff --git a/asm/main_020024E4.s b/asm/main_020024E4.s new file mode 100644 index 00000000..7dbd8015 --- /dev/null +++ b/asm/main_020024E4.s @@ -0,0 +1,253 @@ + .include "asm/macros.inc" + .include "main_020024E4.inc" + + .text + + arm_func_start sub_020024E4 +sub_020024E4: ; 0x020024E4 + stmdb sp!, {r3, lr} + ldr r0, _0200256C ; =_0229AFCC + bl OS_InitMutex + ldr r0, _0200256C ; =_0229AFCC + bl OS_LockMutex + mov r1, #0 + ldr r0, _02002570 ; =_0229AFE4 + mov r2, r1 +_02002504: + add r1, r1, #1 + cmp r1, #8 + str r2, [r0], #4 + blt _02002504 + ldr r1, _02002574 ; =_0229AFC0 + ldr r0, _0200256C ; =_0229AFCC + str r2, [r1] + str r2, [r1, #4] + str r2, [r1, #8] + bl OS_UnlockMutex + ldr r1, _02002578 ; =OSi_ThreadInfo + ldr r0, _0200257C ; =_0229B004 + ldr r1, [r1, #4] + mov r2, #0 + stmia r0, {r1, r2} + str r2, [r0, #8] + str r2, [r0, #0xc] + mov r1, #7 + str r1, [r0, #0x10] + str r2, [r0, #0x14] + bl sub_020026E4 + ldr r0, _02002578 ; =OSi_ThreadInfo + mov r1, #7 + ldr r0, [r0, #4] + bl OS_SetThreadPriority + ldmia sp!, {r3, pc} + .align 2, 0 +_0200256C: .word _0229AFCC +_02002570: .word _0229AFE4 +_02002574: .word _0229AFC0 +_02002578: .word OSi_ThreadInfo +_0200257C: .word _0229B004 + arm_func_end sub_020024E4 + + arm_func_start sub_02002580 +sub_02002580: ; 0x02002580 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _020025E8 ; =OSi_ThreadInfo + ldr r0, _020025EC ; =_0229AFCC + ldr r4, [r1, #4] + bl OS_LockMutex + ldr r0, _020025F0 ; =_0229AFC0 + mov r1, #0 + ldr r3, [r0] + ldr r2, _020025F4 ; =_0229AFE4 + b _020025CC +_020025A8: + ldr r5, [r2] + ldr r0, [r5] + cmp r0, r4 + bne _020025C4 + ldr r0, _020025EC ; =_0229AFCC + bl OS_UnlockMutex + b _020025E0 +_020025C4: + add r1, r1, #1 + add r2, r2, #4 +_020025CC: + cmp r1, r3 + blt _020025A8 + ldr r0, _020025EC ; =_0229AFCC + bl OS_UnlockMutex + mov r5, #0 +_020025E0: + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_020025E8: .word OSi_ThreadInfo +_020025EC: .word _0229AFCC +_020025F0: .word _0229AFC0 +_020025F4: .word _0229AFE4 + arm_func_end sub_02002580 + +; https://decomp.me/scratch/Gairr + arm_func_start sub_020025F8 +sub_020025F8: ; 0x020025F8 + stmdb sp!, {r4, lr} + cmp r0, #0 + beq _02002614 + ldr r0, [r0] + mov r1, #0 + bl OS_SleepThreadDirect + ldmia sp!, {r4, pc} +_02002614: + mov r4, #0 +_02002618: + mov r0, r4 + bl OS_SleepThread + b _02002618 + arm_func_end sub_020025F8 + + arm_func_start sub_02002624 +sub_02002624: ; 0x02002624 + ldmia sp!, {r4, pc} + arm_func_end sub_02002624 + + arm_func_start sub_02002628 +sub_02002628: ; 0x02002628 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _02002658 ; =OSi_ThreadInfo + mov r5, r0 + ldr r0, [r2, #4] + mov r4, r1 + str r0, [r5] + bl OS_GetThreadPriority + str r0, [r5, #4] + ldr r0, [r5] + mov r1, r4 + bl OS_SetThreadPriority + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02002658: .word OSi_ThreadInfo + arm_func_end sub_02002628 + + arm_func_start sub_0200265C +sub_0200265C: ; 0x0200265C + ldr ip, _0200266C ; =OS_SetThreadPriority + mov r1, r0 + ldmia r1, {r0, r1} + bx ip + .align 2, 0 +_0200266C: .word OS_SetThreadPriority + arm_func_end sub_0200265C + + arm_func_start sub_02002670 +sub_02002670: ; 0x02002670 + stmdb sp!, {r3, r4, r5, lr} + ldr r0, _020026AC ; =OSi_ThreadInfo + ldr r5, [r0, #4] + mov r0, r5 + bl OS_GetThreadPriority + mov r4, r0 + mov r0, r5 + mov r1, #7 + bl OS_SetThreadPriority + ldr r0, _020026B0 ; =_0229AFCC + bl OS_LockMutex + ldr r0, _020026B4 ; =_020AEF30 + str r5, [r0] + str r4, [r0, #4] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_020026AC: .word OSi_ThreadInfo +_020026B0: .word _0229AFCC +_020026B4: .word _020AEF30 + arm_func_end sub_02002670 + + arm_func_start sub_020026B8 +sub_020026B8: ; 0x020026B8 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _020026DC ; =_020AEF30 + ldr r0, _020026E0 ; =_0229AFCC + ldmia r1, {r4, r5} + bl OS_UnlockMutex + mov r0, r4 + mov r1, r5 + bl OS_SetThreadPriority + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_020026DC: .word _020AEF30 +_020026E0: .word _0229AFCC + arm_func_end sub_020026B8 + + arm_func_start sub_020026E4 +sub_020026E4: ; 0x020026E4 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _02002768 ; =OSi_ThreadInfo + mov r6, r0 + ldr r5, [r1, #4] + mov r0, r5 + bl OS_GetThreadPriority + mov r4, r0 + mov r0, r5 + mov r1, #7 + bl OS_SetThreadPriority + ldr r0, _0200276C ; =_0229AFCC + bl OS_LockMutex + ldr r0, _02002770 ; =_0229AFC0 + ldr r3, [r0] + cmp r3, #8 + bge _02002750 + add r1, r3, #1 + ldr r2, _02002774 ; =_0229AFE4 + str r1, [r0] + ldr r1, [r0] + str r6, [r2, r3, lsl #2] + str r1, [r0, #4] + ldr r2, [r0, #4] + ldr r1, [r0, #8] + cmp r2, r1 + ldrgt r1, [r0, #4] + strgt r1, [r0, #8] +_02002750: + ldr r0, _0200276C ; =_0229AFCC + bl OS_UnlockMutex + mov r0, r5 + mov r1, r4 + bl OS_SetThreadPriority + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02002768: .word OSi_ThreadInfo +_0200276C: .word _0229AFCC +_02002770: .word _0229AFC0 +_02002774: .word _0229AFE4 + arm_func_end sub_020026E4 + + arm_func_start sub_02002778 +sub_02002778: ; 0x02002778 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r4, r0 + mov ip, r1 + add r0, r4, #0x1c + mov r5, ip + str r0, [r4] + mov r6, r2 + ldmia r5!, {r0, r1, r2, r3} + add lr, r4, #4 + stmia lr!, {r0, r1, r2, r3} + ldr r0, [r5] + mov r2, r6 + str r0, [lr] + str r6, [r4, #0x18] + ldr r1, [ip, #8] + str r1, [sp] + ldr r0, [ip, #0xc] + bic r3, r1, #7 + str r0, [sp, #4] + ldmia ip, {r1, lr} + ldr r0, [r4] + add r3, lr, r3 + bl OS_CreateThread + mov r0, r4 + bl sub_020026E4 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end sub_02002778 diff --git a/asm/main_02002910.s b/asm/main_02002910.s new file mode 100644 index 00000000..d4ac7e4b --- /dev/null +++ b/asm/main_02002910.s @@ -0,0 +1,782 @@ + .include "asm/macros.inc" + .include "main_02002910.inc" + + .text + + arm_func_start sub_02002910 +sub_02002910: ; 0x02002910 + stmdb sp!, {r4, lr} + mov r4, r0 + bl OS_TryLockMutex + tst r0, #0xff + beq _02002944 + ldr r0, [r4, #0xc] + cmp r0, #1 + movle r0, #1 + ldmleia sp!, {r4, pc} + mov r0, r4 + bl OS_UnlockMutex + mov r0, #0 + ldmia sp!, {r4, pc} +_02002944: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end sub_02002910 + + arm_func_start sub_0200294C +sub_0200294C: ; 0x0200294C + bx lr + arm_func_end sub_0200294C + + arm_func_start sub_02002950 +sub_02002950: ; 0x02002950 + stmdb sp!, {r3, lr} + mov r3, r0 + add r1, r3, #4 + add r0, r3, #8 + mov r2, #1 + str r1, [r3] + bl OS_InitMessageQueue + bl sub_02002670 + ldr r0, _0200299C ; =_0229B0E8 + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + ldr r2, [r0] + ldr r1, [r0, #4] + cmp r2, r1 + ldrgt r1, [r0] + strgt r1, [r0, #4] + bl sub_020026B8 + ldmia sp!, {r3, pc} + .align 2, 0 +_0200299C: .word _0229B0E8 + arm_func_end sub_02002950 + + arm_func_start sub_020029A0 +sub_020029A0: ; 0x020029A0 + ldr ip, _020029B4 ; =OS_SendMessage + mov r1, #0 + mov r2, r1 + add r0, r0, #8 + bx ip + .align 2, 0 +_020029B4: .word OS_SendMessage + arm_func_end sub_020029A0 + + arm_func_start sub_020029B8 +sub_020029B8: ; 0x020029B8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r1, _02002A40 ; =OSi_ThreadInfo + mov r4, r0 + ldr sb, [r1, #4] + mov r7, #0 + mov r0, sb + bl OS_GetThreadPriority + mov r8, r0 + mov r0, sb + mov r1, #7 + bl OS_SetThreadPriority + mov r5, r7 + b _020029F0 +_020029EC: + add r7, r7, #1 +_020029F0: + mov r1, r5 + mov r2, r5 + add r0, r4, #8 + bl OS_SendMessage + cmp r0, #0 + bne _020029EC + add r6, sp, #0 + mov r5, #0 +_02002A10: + mov r1, r6 + mov r2, r5 + add r0, r4, #8 + bl OS_ReceiveMessage + cmp r0, #0 + subne r7, r7, #1 + bne _02002A10 + mov r0, sb + mov r1, r8 + bl OS_SetThreadPriority + mov r0, r7 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02002A40: .word OSi_ThreadInfo + arm_func_end sub_020029B8 + + arm_func_start sub_02002A44 +sub_02002A44: ; 0x02002A44 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr r1, _02002A94 ; =OSi_ThreadInfo + mov r6, r0 + ldr r5, [r1, #4] + mov r0, r5 + bl OS_GetThreadPriority + mov r4, r0 + mov r0, r5 + mov r1, #6 + bl OS_SetThreadPriority + add r1, sp, #0 + add r0, r6, #8 + mov r2, #1 + bl OS_ReceiveMessage + mov r0, r5 + mov r1, r4 + bl OS_SetThreadPriority + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02002A94: .word OSi_ThreadInfo + arm_func_end sub_02002A44 + + arm_func_start sub_02002A98 +sub_02002A98: ; 0x02002A98 + bx lr + arm_func_end sub_02002A98 + + arm_func_start sub_02002A9C +sub_02002A9C: ; 0x02002A9C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + str r1, [r6, #0xa4] + add r1, r6, #4 + str r2, [r6, #0xa8] + str r1, [r6] + ldr r2, [r6, #0xa4] + add r0, r6, #0x84 + bl OS_InitMessageQueue + mov r5, #0 + mov r4, r5 + b _02002AE0 +_02002ACC: + mov r1, r4 + mov r2, r4 + add r0, r6, #0x84 + bl OS_SendMessage + add r5, r5, #1 +_02002AE0: + ldr r0, [r6, #0xa8] + cmp r5, r0 + blt _02002ACC + bl sub_02002670 + ldr r0, _02002B1C ; =_0229B0F0 + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + ldr r2, [r0] + ldr r1, [r0, #4] + cmp r2, r1 + ldrgt r1, [r0] + strgt r1, [r0, #4] + bl sub_020026B8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02002B1C: .word _0229B0F0 + arm_func_end sub_02002A9C + + arm_func_start sub_02002B20 +sub_02002B20: ; 0x02002B20 + ldr ip, _02002B34 ; =OS_SendMessage + mov r1, #0 + mov r2, r1 + add r0, r0, #0x84 + bx ip + .align 2, 0 +_02002B34: .word OS_SendMessage + arm_func_end sub_02002B20 + + arm_func_start sub_02002B38 +sub_02002B38: ; 0x02002B38 + ldr ip, _02002B4C ; =OS_SendMessage + mov r1, #0 + mov r2, r1 + add r0, r0, #0x84 + bx ip + .align 2, 0 +_02002B4C: .word OS_SendMessage + arm_func_end sub_02002B38 + + arm_func_start sub_02002B50 +sub_02002B50: ; 0x02002B50 + stmdb sp!, {r3, lr} + ldr r1, [r0, #0x98] + cmp r1, #0 + movne r0, #0 + ldmneia sp!, {r3, pc} + mov r1, #0 + mov r2, r1 + add r0, r0, #0x84 + bl OS_SendMessage + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end sub_02002B50 + + arm_func_start sub_02002B7C +sub_02002B7C: ; 0x02002B7C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr r1, _02002BCC ; =OSi_ThreadInfo + mov r6, r0 + ldr r5, [r1, #4] + mov r0, r5 + bl OS_GetThreadPriority + mov r4, r0 + mov r0, r5 + mov r1, #6 + bl OS_SetThreadPriority + add r1, sp, #0 + add r0, r6, #0x84 + mov r2, #1 + bl OS_ReceiveMessage + mov r0, r5 + mov r1, r4 + bl OS_SetThreadPriority + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02002BCC: .word OSi_ThreadInfo + arm_func_end sub_02002B7C + + arm_func_start sub_02002BD0 +sub_02002BD0: ; 0x02002BD0 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr r1, _02002C28 ; =OSi_ThreadInfo + mov r5, r0 + ldr r6, [r1, #4] + mov r0, r6 + bl OS_GetThreadPriority + mov r4, r0 + mov r0, r6 + mov r1, #6 + bl OS_SetThreadPriority + add r1, sp, #0 + add r0, r5, #0x84 + mov r2, #0 + bl OS_ReceiveMessage + and r5, r0, #0xff + mov r0, r6 + mov r1, r4 + bl OS_SetThreadPriority + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02002C28: .word OSi_ThreadInfo + arm_func_end sub_02002BD0 + + arm_func_start sub_02002C2C +sub_02002C2C: ; 0x02002C2C + ldr ip, _02002C38 ; =OS_InitMutex + ldr r0, _02002C3C ; =_0229B0F8 + bx ip + .align 2, 0 +_02002C38: .word OS_InitMutex +_02002C3C: .word _0229B0F8 + arm_func_end sub_02002C2C + + arm_func_start sub_02002C40 +sub_02002C40: ; 0x02002C40 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _02002CA4 ; =OSi_ThreadInfo + mov r6, r0 + ldr r5, [r1, #4] + mov r0, r5 + bl OS_GetThreadPriority + mov r4, r0 + mov r0, r5 + mov r1, #7 + bl OS_SetThreadPriority + ldr r0, _02002CA8 ; =_0229B0F8 + bl OS_LockMutex + mov r0, r6 + bl sub_020028B0 + bl sub_02002580 + str r0, [r6, #0x18] + mov r0, #0 + str r0, [r6, #0x20] + str r0, [r6, #0x1c] + ldr r0, _02002CA8 ; =_0229B0F8 + bl OS_UnlockMutex + mov r0, r5 + mov r1, r4 + bl OS_SetThreadPriority + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02002CA4: .word OSi_ThreadInfo +_02002CA8: .word _0229B0F8 + arm_func_end sub_02002C40 + + arm_func_start sub_02002CAC +sub_02002CAC: ; 0x02002CAC + str r1, [r0, #0x20] + bx lr + arm_func_end sub_02002CAC + + arm_func_start sub_02002CB4 +sub_02002CB4: ; 0x02002CB4 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _02002D10 ; =OSi_ThreadInfo + mov r6, r0 + ldr r5, [r1, #4] + mov r0, r5 + bl OS_GetThreadPriority + ldr r1, [r6, #0x20] + mov r4, r0 + cmp r1, #0 + beq _02002CF4 + cmp r1, r4 + movhs r4, #0 + bhs _02002CF8 + mov r0, r5 + bl OS_SetThreadPriority + b _02002CF8 +_02002CF4: + mov r4, #0 +_02002CF8: + mov r0, r6 + bl sub_02002904 + str r4, [r6, #0x1c] + bl sub_02002580 + str r0, [r6, #0x18] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02002D10: .word OSi_ThreadInfo + arm_func_end sub_02002CB4 + + arm_func_start sub_02002D14 +sub_02002D14: ; 0x02002D14 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r2, _02002D7C ; =OSi_ThreadInfo + mov r7, r0 + ldr r5, [r2, #4] + mov r6, r1 + mov r0, r5 + bl OS_GetThreadPriority + ldr r1, [r7, #0x20] + mov r4, r0 + cmp r1, #0 + beq _02002D58 + cmp r1, r4 + movhs r4, #0 + bhs _02002D5C + mov r0, r5 + bl OS_SetThreadPriority + b _02002D5C +_02002D58: + mov r4, #0 +_02002D5C: + mov r0, r6 + bl sub_02002B7C + mov r0, r7 + bl sub_02002904 + str r4, [r7, #0x1c] + bl sub_02002580 + str r0, [r7, #0x18] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02002D7C: .word OSi_ThreadInfo + arm_func_end sub_02002D14 + + arm_func_start sub_02002D80 +sub_02002D80: ; 0x02002D80 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + bl sub_02002580 + mov r4, r0 + ldr r0, [r4] + bl OS_GetThreadPriority + ldr r1, [r7, #0x20] + mov r5, r0 + cmp r1, #0 + beq _02002DC4 + cmp r1, r5 + movhs r5, #0 + bhs _02002DC8 + ldr r0, [r4] + bl OS_SetThreadPriority + b _02002DC8 +_02002DC4: + mov r5, #0 +_02002DC8: + mov r0, r6 + bl sub_02002BD0 + cmp r0, #0 + beq _02002DF4 + mov r0, r7 + bl sub_02002904 + str r5, [r7, #0x1c] + bl sub_02002580 + str r0, [r7, #0x18] + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02002DF4: + cmp r5, #0 + beq _02002E08 + mov r0, r4 + mov r1, r5 + bl sub_020027F8 +_02002E08: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_02002D80 + + arm_func_start sub_02002E10 +sub_02002E10: ; 0x02002E10 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _02002E94 ; =OSi_ThreadInfo + mov r6, r0 + ldr r5, [r1, #4] + mov r0, r5 + bl OS_GetThreadPriority + ldr r1, [r6, #0x20] + mov r4, r0 + cmp r1, #0 + beq _02002E50 + cmp r1, r4 + movhs r4, #0 + bhs _02002E54 + mov r0, r5 + bl OS_SetThreadPriority + b _02002E54 +_02002E50: + mov r4, #0 +_02002E54: + mov r0, r6 + bl sub_02002910 + cmp r0, #0 + beq _02002E78 + str r4, [r6, #0x1c] + bl sub_02002580 + str r0, [r6, #0x18] + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_02002E78: + cmp r4, #0 + beq _02002E8C + mov r0, r5 + mov r1, r4 + bl OS_SetThreadPriority +_02002E8C: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02002E94: .word OSi_ThreadInfo + arm_func_end sub_02002E10 + + arm_func_start sub_02002E98 +sub_02002E98: ; 0x02002E98 + stmdb sp!, {r3, r4, r5, lr} + ldr r4, [r0, #0x1c] + ldr r5, [r0, #0x18] + mov r1, #0 + str r1, [r0, #0x1c] + str r1, [r0, #0x18] + bl sub_020028F8 + cmp r4, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl sub_020027F8 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_02002E98 + + arm_func_start sub_02002ECC +sub_02002ECC: ; 0x02002ECC + stmdb sp!, {r4, r5, r6, lr} + ldr r4, [r0, #0x1c] + ldr r5, [r0, #0x18] + mov r2, #0 + str r2, [r0, #0x18] + mov r6, r1 + str r2, [r0, #0x1c] + bl sub_020028F8 + mov r0, r6 + bl sub_02002B20 + cmp r4, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r5 + mov r1, r4 + bl sub_020027F8 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end sub_02002ECC + + arm_func_start sub_02002F0C +sub_02002F0C: ; 0x02002F0C + stmdb sp!, {r3, lr} + ldr r0, _02002F30 ; =_020AEF58 + bl sub_02002C40 + ldr r0, _02002F30 ; =_020AEF58 + mov r1, #7 + bl sub_02002CAC + ldr r0, _02002F30 ; =_020AEF58 + bl sub_02002E98 + ldmia sp!, {r3, pc} + .align 2, 0 +_02002F30: .word _020AEF58 + arm_func_end sub_02002F0C + + arm_func_start sub_02002F34 +sub_02002F34: ; 0x02002F34 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, _02002F78 ; =_020AEF58 + mov r4, r1 + bl sub_02002CB4 + mov r0, r4, lsl #2 + mov r1, #1 + bl MemAlloc + str r0, [r5, #0x20] + str r4, [r5, #0x24] + ldr r1, [r5, #0x20] + mov r0, r5 + mov r2, r4 + bl OS_InitMessageQueue + ldr r0, _02002F78 ; =_020AEF58 + bl sub_02002E98 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02002F78: .word _020AEF58 + arm_func_end sub_02002F34 + + arm_func_start sub_02002F7C +sub_02002F7C: ; 0x02002F7C + stmdb sp!, {r3, lr} + cmp r2, #0 + movne r2, #1 + moveq r2, #0 + bl OS_SendMessage + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end sub_02002F7C + + arm_func_start sub_02002F98 +sub_02002F98: ; 0x02002F98 + stmdb sp!, {r3, lr} + cmp r2, #0 + movne r2, #1 + moveq r2, #0 + bl OS_ReceiveMessage + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end sub_02002F98 + + arm_func_start sub_02002FB4 +sub_02002FB4: ; 0x02002FB4 + bx lr + arm_func_end sub_02002FB4 + + arm_func_start sub_02002FB8 +sub_02002FB8: ; 0x02002FB8 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _02003024 ; =_0229B110 + mov r6, #0 + strh r6, [r0] + cmp r6, #6 + ldr r5, _02003028 ; =_0229B114 + bge _0200301C + mov r4, r6 + b _02003014 +_02002FDC: + mov r0, r5 + bl sub_02002C40 + cmp r6, #4 + str r4, [r5, #0x24] + cmpne r6, #5 + bne _02003000 + bl OS_GetLockID + strh r0, [r5, #0x28] + b _02003004 +_02003000: + strh r4, [r5, #0x28] +_02003004: + mov r0, r5 + bl sub_02002E98 + add r6, r6, #1 + add r5, r5, #0x2c +_02003014: + cmp r6, #6 + blt _02002FDC +_0200301C: + bl sub_020059A8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02003024: .word _0229B110 +_02003028: .word _0229B114 + arm_func_end sub_02002FB8 + + arm_func_start sub_0200302C +sub_0200302C: ; 0x0200302C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + movs r8, r0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + bl sub_02002580 + mov r7, r0 + mov r6, #0 + ldr r5, _020030C4 ; =_0229B114 + mov r4, #1 + ldr sl, _020030C8 ; =_0229B110 + b _020030B8 +_02003054: + mov r0, r4, lsl r6 + mov sb, r0, lsl #0x10 + tst r8, sb, lsr #16 + beq _020030B0 + mov r0, r5 + bl sub_02002CB4 + bl InterruptMasterDisable + ldrh r0, [sl] + ldrh r0, [sl] + str r7, [r5, #0x24] + orr r0, r0, sb, lsr #16 + strh r0, [sl] + bl InterruptMasterEnable + cmp r6, #4 + beq _0200309C + cmp r6, #5 + beq _020030A8 + b _020030B0 +_0200309C: + ldrh r0, [r5, #0x28] + bl Card_LockRom + b _020030B0 +_020030A8: + ldrh r0, [r5, #0x28] + bl Card_LockBackup +_020030B0: + add r6, r6, #1 + add r5, r5, #0x2c +_020030B8: + cmp r6, #6 + blt _02003054 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_020030C4: .word _0229B114 +_020030C8: .word _0229B110 + arm_func_end sub_0200302C + + arm_func_start InterruptMasterDisable +InterruptMasterDisable: ; 0x020030CC + ldr r2, _020030E0 ; =0x04000208 + mov r1, #0 + ldrh r0, [r2] + strh r1, [r2] + bx lr + .align 2, 0 +_020030E0: .word 0x04000208 + arm_func_end InterruptMasterDisable + + arm_func_start InterruptMasterEnable +InterruptMasterEnable: ; 0x020030E4 + ldr r2, _020030F8 ; =0x04000208 + mov r1, #1 + ldrh r0, [r2] + strh r1, [r2] + bx lr + .align 2, 0 +_020030F8: .word 0x04000208 + arm_func_end InterruptMasterEnable + + arm_func_start sub_020030FC +sub_020030FC: ; 0x020030FC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + movs sl, r0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + bl sub_02002580 + mov r1, #7 + mov r8, r0 + bl sub_020027F8 + mov sb, r0 + mov r7, #0 + ldr r6, _020031B8 ; =_0229B114 + mov fp, #1 + ldr r5, _020031BC ; =_0229B110 + b _020031A0 +_02003130: + mov r0, fp, lsl r7 + mov r4, r0, lsl #0x10 + tst sl, r4, lsr #16 + beq _02003198 + cmp r7, #4 + beq _02003154 + cmp r7, #5 + beq _02003160 + b _02003168 +_02003154: + ldrh r0, [r6, #0x28] + bl Card_UnlockRom + b _02003168 +_02003160: + ldrh r0, [r6, #0x28] + bl Card_UnlockBackup +_02003168: + bl InterruptMasterDisable + ldrh r0, [r5] + mvn r1, r4, lsr #16 + ldrh r0, [r5] + ldrh r2, [r5] + mov r0, #0 + str r0, [r6, #0x24] + and r0, r2, r1 + strh r0, [r5] + bl InterruptMasterEnable + mov r0, r6 + bl sub_02002E98 +_02003198: + add r7, r7, #1 + add r6, r6, #0x2c +_020031A0: + cmp r7, #6 + blt _02003130 + mov r0, r8 + mov r1, sb + bl sub_020027F8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_020031B8: .word _0229B114 +_020031BC: .word _0229B110 + arm_func_end sub_020030FC + + arm_func_start sub_020031C0 +sub_020031C0: ; 0x020031C0 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + bl sub_02002580 + mov r5, #0 + mov lr, r5 + cmp r5, #6 + ldr ip, _02003218 ; =_0229B114 + bge _02003210 + mov r3, #1 + b _02003208 +_020031E8: + mov r1, r3, lsl lr + mov r1, r1, lsl #0x10 + tst r4, r1, lsr #16 + ldrne r2, [ip, #0x24] + add lr, lr, #1 + cmpne r2, r0 + orrne r5, r5, r1, lsr #16 + add ip, ip, #0x2c +_02003208: + cmp lr, #6 + blt _020031E8 +_02003210: + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02003218: .word _0229B114 + arm_func_end sub_020031C0 + + arm_func_start InitMemAllocTableVeneer +InitMemAllocTableVeneer: ; 0x0200321C + ldr ip, _02003224 ; =InitMemAllocTable + bx ip + .align 2, 0 +_02003224: .word InitMemAllocTable + arm_func_end InitMemAllocTableVeneer diff --git a/asm/main_02004FF8.s b/asm/main_02004FF8.s index 47b66c7d..a99b3a10 100644 --- a/asm/main_02004FF8.s +++ b/asm/main_02004FF8.s @@ -3841,59 +3841,3 @@ FileRom_InitDataTransfer: ; 0x02008168 _0200818C: .word _020AF368 _02008190: .word _020AF360 arm_func_end FileRom_InitDataTransfer - - arm_func_start FileRom_StopDataTransfer -FileRom_StopDataTransfer: ; 0x02008194 - stmdb sp!, {r4, lr} - ldr r1, _020081C0 ; =_020AF360 - ldr r0, _020081C4 ; =_020AF368 - ldr r4, [r1, #4] - mov r2, #0 - str r2, [r1, #4] - bl sub_02002E98 - bl sub_02002580 - mov r1, r4 - bl sub_020027F8 - ldmia sp!, {r4, pc} - .align 2, 0 -_020081C0: .word _020AF360 -_020081C4: .word _020AF368 - arm_func_end FileRom_StopDataTransfer - - arm_func_start sub_020081C8 -sub_020081C8: ; 0x020081C8 - ldr ip, _020081D4 ; =sub_02002CB4 - ldr r0, _020081D8 ; =_020AF368 - bx ip - .align 2, 0 -_020081D4: .word sub_02002CB4 -_020081D8: .word _020AF368 - arm_func_end sub_020081C8 - - arm_func_start sub_020081DC -sub_020081DC: ; 0x020081DC - ldr ip, _020081E8 ; =sub_02002E98 - ldr r0, _020081EC ; =_020AF368 - bx ip - .align 2, 0 -_020081E8: .word sub_02002E98 -_020081EC: .word _020AF368 - arm_func_end sub_020081DC - - arm_func_start sub_020081F0 -sub_020081F0: ; 0x020081F0 - ldr ip, _020081FC ; =sub_02002E10 - ldr r0, _02008200 ; =_020AF368 - bx ip - .align 2, 0 -_020081FC: .word sub_02002E10 -_02008200: .word _020AF368 - arm_func_end sub_020081F0 - - arm_func_start FileRom_Veneer_FileInit -FileRom_Veneer_FileInit: ; 0x02008204 - ldr ip, _0200820C ; =FileInit - bx ip - .align 2, 0 -_0200820C: .word FS_InitFile - arm_func_end FileRom_Veneer_FileInit diff --git a/asm/main_02009648.s b/asm/main_02009648.s index 6b3e113b..37db4da5 100644 --- a/asm/main_02009648.s +++ b/asm/main_02009648.s @@ -377,141 +377,3 @@ sub_02009BC0: ; 0x02009BC0 .align 2, 0 _02009BE4: .word 0x04000048 arm_func_end sub_02009BC0 - - arm_func_start sub_02009BE8 -sub_02009BE8: ; 0x02009BE8 - ldr r2, _02009C0C ; =0x0400004A - cmp r1, #0 - ldrh r1, [r2] - bic r1, r1, #0x3f00 - orr r1, r1, r0, lsl #8 - ldr r0, _02009C0C ; =0x0400004A - orrne r1, r1, #0x2000 - strh r1, [r0] - bx lr - .align 2, 0 -_02009C0C: .word 0x0400004A - arm_func_end sub_02009BE8 - - arm_func_start sub_02009C10 -sub_02009C10: ; 0x02009C10 - ldr r2, _02009C34 ; =0x0400004A - cmp r1, #0 - ldrh r1, [r2] - bic r1, r1, #0x3f - orr r1, r1, r0 - ldr r0, _02009C34 ; =0x0400004A - orrne r1, r1, #0x20 - strh r1, [r0] - bx lr - .align 2, 0 -_02009C34: .word 0x0400004A - arm_func_end sub_02009C10 - - arm_func_start sub_02009C38 -sub_02009C38: ; 0x02009C38 - ldr r2, _02009C50 ; =0x0400000A - ldrh r1, [r2] - bic r1, r1, #3 - orr r0, r1, r0 - strh r0, [r2] - bx lr - .align 2, 0 -_02009C50: .word 0x0400000A - arm_func_end sub_02009C38 - - arm_func_start sub_02009C54 -sub_02009C54: ; 0x02009C54 - ldr r2, _02009C6C ; =0x04000008 - ldrh r1, [r2] - bic r1, r1, #3 - orr r0, r1, r0 - strh r0, [r2] - bx lr - .align 2, 0 -_02009C6C: .word 0x04000008 - arm_func_end sub_02009C54 - - arm_func_start sub_02009C70 -sub_02009C70: ; 0x02009C70 - ldr r2, _02009C88 ; =0x0400000C - ldrh r1, [r2] - bic r1, r1, #3 - orr r0, r1, r0 - strh r0, [r2] - bx lr - .align 2, 0 -_02009C88: .word 0x0400000C - arm_func_end sub_02009C70 - - arm_func_start sub_02009C8C -sub_02009C8C: ; 0x02009C8C - ldr r2, _02009CA4 ; =0x0400000E - ldrh r1, [r2] - bic r1, r1, #3 - orr r0, r1, r0 - strh r0, [r2] - bx lr - .align 2, 0 -_02009CA4: .word 0x0400000E - arm_func_end sub_02009C8C - - arm_func_start sub_02009CA8 -sub_02009CA8: ; 0x02009CA8 - ldr r2, _02009CCC ; =0x04001048 - cmp r1, #0 - ldrh r1, [r2] - bic r1, r1, #0x3f - orr r1, r1, r0 - ldr r0, _02009CCC ; =0x04001048 - orrne r1, r1, #0x20 - strh r1, [r0] - bx lr - .align 2, 0 -_02009CCC: .word 0x04001048 - arm_func_end sub_02009CA8 - - arm_func_start sub_02009CD0 -sub_02009CD0: ; 0x02009CD0 - ldr r2, _02009CF4 ; =0x04001048 - cmp r1, #0 - ldrh r1, [r2] - bic r1, r1, #0x3f00 - orr r1, r1, r0, lsl #8 - ldr r0, _02009CF4 ; =0x04001048 - orrne r1, r1, #0x2000 - strh r1, [r0] - bx lr - .align 2, 0 -_02009CF4: .word 0x04001048 - arm_func_end sub_02009CD0 - - arm_func_start sub_02009CF8 -sub_02009CF8: ; 0x02009CF8 - ldr r2, _02009D1C ; =0x0400104A - cmp r1, #0 - ldrh r1, [r2] - bic r1, r1, #0x3f00 - orr r1, r1, r0, lsl #8 - ldr r0, _02009D1C ; =0x0400104A - orrne r1, r1, #0x2000 - strh r1, [r0] - bx lr - .align 2, 0 -_02009D1C: .word 0x0400104A - arm_func_end sub_02009CF8 - - arm_func_start sub_02009D20 -sub_02009D20: ; 0x02009D20 - ldr r2, _02009D44 ; =0x0400104A - cmp r1, #0 - ldrh r1, [r2] - bic r1, r1, #0x3f - orr r1, r1, r0 - ldr r0, _02009D44 ; =0x0400104A - orrne r1, r1, #0x20 - strh r1, [r0] - bx lr - .align 2, 0 -_02009D44: .word 0x0400104A - arm_func_end sub_02009D20 diff --git a/asm/main_0200C5B4.s b/asm/main_0200C5B4.s index f28a2d37..a3937273 100644 --- a/asm/main_0200C5B4.s +++ b/asm/main_0200C5B4.s @@ -345,66 +345,3 @@ _0200CA48: .word _02094C0C _0200CA4C: .word 0x000009DA + SUB_0200C5DC_OFFSET _0200CA50: .word 0x000009D9 + SUB_0200C5DC_OFFSET arm_func_end sub_0200C5DC - - arm_func_start GetDamageSource -GetDamageSource: ; 0x0200CA54 - stmdb sp!, {r3, lr} - cmp r1, #0 - beq _0200CA78 - mov r0, r1 - bl GetItemCategoryVeneer - cmp r0, #9 - ldreq r0, _0200CA84 ; =0x00000262 - ldrne r0, _0200CA88 ; =0x00000263 - ldmia sp!, {r3, pc} -_0200CA78: - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - ldmia sp!, {r3, pc} - .align 2, 0 -_0200CA84: .word 0x00000262 -_0200CA88: .word 0x00000263 - arm_func_end GetDamageSource - - arm_func_start sub_0200CA8C -sub_0200CA8C: ; 0x0200CA8C - stmdb sp!, {r3, lr} - ldr r1, _0200CAB4 ; =BAG_ITEMS - ldr r0, _0200CAB8 ; =BAG_ITEMS_PTR_MIRROR - str r1, [r0] - bl LoadItemPspi2n - bl SetActiveInventoryToMain - bl sub_0200FD38 - bl sub_02010590 - bl WipeRecycleShopRecords - ldmia sp!, {r3, pc} - .align 2, 0 -_0200CAB4: .word BAG_ITEMS -_0200CAB8: .word BAG_ITEMS_PTR_MIRROR - arm_func_end sub_0200CA8C - - arm_func_start sub_0200CABC -sub_0200CABC: ; 0x0200CABC - stmdb sp!, {r3, lr} - bl AllInventoriesZInit - bl sub_0200FD3C - bl AllKecleonShopsZInit - bl WipeRecycleShopRecords - ldmia sp!, {r3, pc} - arm_func_end sub_0200CABC - - arm_func_start sub_0200CAD4 -sub_0200CAD4: ; 0x0200CAD4 - stmdb sp!, {r3, lr} - bl SpecialEpisodeInventoryZInit - bl SpecialEpisodeKecleonShopZInit - ldmia sp!, {r3, pc} - arm_func_end sub_0200CAD4 - - arm_func_start sub_0200CAE4 -sub_0200CAE4: ; 0x0200CAE4 - ldr ip, _0200CAEC ; =RescueInventoryZInit - bx ip - .align 2, 0 -_0200CAEC: .word RescueInventoryZInit - arm_func_end sub_0200CAE4 diff --git a/asm/main_02017B70.s b/asm/main_02017B70.s deleted file mode 100644 index 8e5198c3..00000000 --- a/asm/main_02017B70.s +++ /dev/null @@ -1,146 +0,0 @@ - .include "asm/macros.inc" - .include "main_02017B70.inc" - - .text - - arm_func_start sub_02017B70 -sub_02017B70: ; 0x02017B70 - ldr ip, _02017B78 ; =StopBgmCommand - bx ip - .align 2, 0 -_02017B78: .word StopBgmCommand - arm_func_end sub_02017B70 - - arm_func_start sub_02017B7C -sub_02017B7C: ; 0x02017B7C - ldr ip, _02017B84 ; =sub_02017F28 - bx ip - .align 2, 0 -_02017B84: .word sub_02017F28 - arm_func_end sub_02017B7C - - arm_func_start sub_02017B88 -sub_02017B88: ; 0x02017B88 - ldr ip, _02017B90 ; =sub_02017F64 - bx ip - .align 2, 0 -_02017B90: .word sub_02017F64 - arm_func_end sub_02017B88 - - arm_func_start sub_02017B94 -sub_02017B94: ; 0x02017B94 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_02017FBC - ldr r1, _02017BD0 ; =0x000003E7 - cmp r4, r1 - bne _02017BBC - cmp r0, r1 - movne r0, #1 - moveq r0, #0 - b _02017BC8 -_02017BBC: - cmp r0, r4 - moveq r0, #1 - movne r0, #0 -_02017BC8: - and r0, r0, #0xff - ldmia sp!, {r4, pc} - .align 2, 0 -_02017BD0: .word 0x000003E7 - arm_func_end sub_02017B94 - - arm_func_start sub_02017BD4 -sub_02017BD4: ; 0x02017BD4 - ldr ip, _02017BDC ; =sub_02018024 - bx ip - .align 2, 0 -_02017BDC: .word sub_02018024 - arm_func_end sub_02017BD4 - - arm_func_start sub_02017BE0 -sub_02017BE0: ; 0x02017BE0 - ldr ip, _02017BE8 ; =sub_020180A0 - bx ip - .align 2, 0 -_02017BE8: .word sub_020180A0 - arm_func_end sub_02017BE0 - - arm_func_start sub_02017BEC -sub_02017BEC: ; 0x02017BEC - ldr ip, _02017BF4 ; =sub_02018118 - bx ip - .align 2, 0 -_02017BF4: .word sub_02018118 - arm_func_end sub_02017BEC - - arm_func_start sub_02017BF8 -sub_02017BF8: ; 0x02017BF8 - ldr ip, _02017C00 ; =sub_02018158 - bx ip - .align 2, 0 -_02017C00: .word sub_02018158 - arm_func_end sub_02017BF8 - - arm_func_start sub_02017C04 -sub_02017C04: ; 0x02017C04 - ldr ip, _02017C0C ; =sub_02018194 - bx ip - .align 2, 0 -_02017C0C: .word sub_02018194 - arm_func_end sub_02017C04 - - arm_func_start IsMePlaying -IsMePlaying: ; 0x02017C10 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_020181E0 - ldr r1, _02017C4C ; =0x000003E6 - cmp r4, r1 - bne _02017C38 - cmp r0, r1 - movne r0, #1 - moveq r0, #0 - b _02017C44 -_02017C38: - cmp r0, r4 - moveq r0, #1 - movne r0, #0 -_02017C44: - and r0, r0, #0xff - ldmia sp!, {r4, pc} - .align 2, 0 -_02017C4C: .word 0x000003E6 - arm_func_end IsMePlaying - - arm_func_start sub_02017C50 -sub_02017C50: ; 0x02017C50 - ldr ip, _02017C58 ; =PlayMeById - bx ip - .align 2, 0 -_02017C58: .word PlayMeById - arm_func_end sub_02017C50 - - arm_func_start sub_02017C5C -sub_02017C5C: ; 0x02017C5C - ldr ip, _02017C64 ; =sub_02018278 - bx ip - .align 2, 0 -_02017C64: .word sub_02018278 - arm_func_end sub_02017C5C - - arm_func_start sub_02017C68 -sub_02017C68: ; 0x02017C68 - ldr ip, _02017C70 ; =sub_020182AC - bx ip - .align 2, 0 -_02017C70: .word sub_020182AC - arm_func_end sub_02017C68 - - arm_func_start sub_02017C74 -sub_02017C74: ; 0x02017C74 - ldr ip, _02017C7C ; =PlaySeByIdVolume - bx ip - .align 2, 0 -_02017C7C: .word PlaySeByIdVolume - arm_func_end sub_02017C74 diff --git a/asm/main_02017C90.s b/asm/main_02017D20.s similarity index 98% rename from asm/main_02017C90.s rename to asm/main_02017D20.s index 694fb204..ac442e11 100644 --- a/asm/main_02017C90.s +++ b/asm/main_02017D20.s @@ -1,79 +1,8 @@ .include "asm/macros.inc" - .include "main_02017C90.inc" + .include "main_02017D20.inc" .text - arm_func_start sub_02017C90 -sub_02017C90: ; 0x02017C90 - ldr ip, _02017C98 ; =sub_0201831C - bx ip - .align 2, 0 -_02017C98: .word sub_0201831C - arm_func_end sub_02017C90 - - arm_func_start sub_02017C9C -sub_02017C9C: ; 0x02017C9C - ldr ip, _02017CA4 ; =sub_020183A0 - bx ip - .align 2, 0 -_02017CA4: .word sub_020183A0 - arm_func_end sub_02017C9C - - arm_func_start sub_02017CA8 -sub_02017CA8: ; 0x02017CA8 - ldr ip, _02017CB0 ; =sub_020183E4 - bx ip - .align 2, 0 -_02017CB0: .word sub_020183E4 - arm_func_end sub_02017CA8 - - arm_func_start sub_02017CB4 -sub_02017CB4: ; 0x02017CB4 - ldr ip, _02017CBC ; =sub_02018428 - bx ip - .align 2, 0 -_02017CBC: .word sub_02018428 - arm_func_end sub_02017CB4 - - arm_func_start sub_02017CC0 -sub_02017CC0: ; 0x02017CC0 - ldr ip, _02017CC8 ; =sub_02018460 - bx ip - .align 2, 0 -_02017CC8: .word sub_02018460 - arm_func_end sub_02017CC0 - - arm_func_start PlaySeVolumeWrapper -PlaySeVolumeWrapper: ; 0x02017CCC - ldr r1, _02017CE4 ; =_0209915C - mov r0, r0, lsl #1 - ldrh r0, [r1, r0] - ldr ip, _02017CE8 ; =PlaySeByIdVolume - mov r1, #0x100 - bx ip - .align 2, 0 -_02017CE4: .word _0209915C -_02017CE8: .word PlaySeByIdVolume - arm_func_end PlaySeVolumeWrapper - - arm_func_start sub_02017CEC -sub_02017CEC: ; 0x02017CEC - stmdb sp!, {r3, lr} - ldr r2, _02017D18 ; =_022A4BE8 - ldrsh r0, [r2] - cmp r0, #0 - ldmgtia sp!, {r3, pc} - ldr r0, _02017D1C ; =0x00003F05 - mov r3, #3 - mov r1, #0x100 - strh r3, [r2] - bl PlaySeByIdVolume - ldmia sp!, {r3, pc} - .align 2, 0 -_02017D18: .word _022A4BE8 -_02017D1C: .word 0x00003F05 - arm_func_end sub_02017CEC - arm_func_start sub_02017D20 sub_02017D20: ; 0x02017D20 stmdb sp!, {r3, lr} diff --git a/asm/main_0201BAC8.s b/asm/main_0201BAC8.s index c470977e..edb1e52d 100644 --- a/asm/main_0201BAC8.s +++ b/asm/main_0201BAC8.s @@ -145,278 +145,3 @@ _0201BCC0: .word 0x05000200 _0201BCC4: .word 0x06894000 _0201BCC8: .word 0x05000600 arm_func_end InitObjGraphicsControls - - arm_func_start sub_0201BCCC -sub_0201BCCC: ; 0x0201BCCC - ldr r1, _0201BCEC ; =OBJ_GRAPHICS_CONTROLS_PTR - mov r2, #0x9c - ldr r1, [r1] - ldr ip, _0201BCF0 ; =sub_0201AD7C - add r1, r1, #0x1c8 - add r1, r1, #0x1c00 - mla r0, r2, r0, r1 - bx ip - .align 2, 0 -_0201BCEC: .word OBJ_GRAPHICS_CONTROLS_PTR -_0201BCF0: .word sub_0201AD7C - arm_func_end sub_0201BCCC - - arm_func_start sub_0201BCF4 -sub_0201BCF4: ; 0x0201BCF4 - ldr r1, _0201BD14 ; =OBJ_GRAPHICS_CONTROLS_PTR - mov r2, #0x9c - ldr r1, [r1] - ldr ip, _0201BD18 ; =sub_0201AD84 - add r1, r1, #0x1c8 - add r1, r1, #0x1c00 - mla r0, r2, r0, r1 - bx ip - .align 2, 0 -_0201BD14: .word OBJ_GRAPHICS_CONTROLS_PTR -_0201BD18: .word sub_0201AD84 - arm_func_end sub_0201BCF4 - - arm_func_start sub_0201BD1C -sub_0201BD1C: ; 0x0201BD1C - ldr r3, _0201BD4C ; =OBJ_GRAPHICS_CONTROLS_PTR - mov r2, #0x9c - ldr ip, [r3] - and r3, r0, #1 - add r0, ip, #0x1c8 - add r0, r0, #0x1c00 - mla r2, r1, r2, r0 - ldrb r0, [r2, #0x78] - bic r0, r0, #1 - orr r0, r0, r3 - strb r0, [r2, #0x78] - bx lr - .align 2, 0 -_0201BD4C: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BD1C - - arm_func_start sub_0201BD50 -sub_0201BD50: ; 0x0201BD50 - stmdb sp!, {r3, lr} - ldr r3, _0201BD7C ; =OBJ_GRAPHICS_CONTROLS_PTR - mov r2, #0x9c - ldr r3, [r3] - mov ip, r0 - add r0, r3, #0x1c8 - add r0, r0, #0x1c00 - mla r0, r1, r2, r0 - mov r1, ip - bl sub_0201AEB4 - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BD7C: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BD50 - - arm_func_start sub_0201BD80 -sub_0201BD80: ; 0x0201BD80 - stmdb sp!, {r3, lr} - ldr ip, _0201BDB0 ; =OBJ_GRAPHICS_CONTROLS_PTR - mov lr, r0 - ldr ip, [ip] - mov r3, #0x9c - add r0, ip, #0x1c8 - add r0, r0, #0x1c00 - mla r0, r2, r3, r0 - mov r2, r1 - mov r1, lr - bl sub_0201AECC - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BDB0: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BD80 - - arm_func_start CopyAttributesToOamBothScreens -CopyAttributesToOamBothScreens: ; 0x0201BDB4 - stmdb sp!, {r3, lr} - mov r0, #8 - bl sub_0200302C - ldr r0, _0201BDE8 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - bl CopyAttributesToOamWrapper - ldr r0, _0201BDE8 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x70 - bl CopyAttributesToOamWrapper - mov r0, #8 - bl sub_020030FC - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BDE8: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end CopyAttributesToOamBothScreens - - arm_func_start sub_0201BDEC -sub_0201BDEC: ; 0x0201BDEC - stmdb sp!, {r3, lr} - mov r0, #8 - bl sub_0200302C - ldr r0, _0201BE24 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0xe0 - bl CopyAttributesToOamWrapper - ldr r0, _0201BE24 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x150 - bl CopyAttributesToOamWrapper - mov r0, #8 - bl sub_020030FC - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BE24: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BDEC - - arm_func_start sub_0201BE28 -sub_0201BE28: ; 0x0201BE28 - stmdb sp!, {r3, lr} - ldr r0, _0201BE58 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x1c8 - add r0, r0, #0x1c00 - bl sub_0201AFB8 - ldr r0, _0201BE58 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x264 - add r0, r0, #0x1c00 - bl sub_0201AFB8 - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BE58: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BE28 - - arm_func_start GroupOamAttributesBothScreens -GroupOamAttributesBothScreens: ; 0x0201BE5C - stmdb sp!, {r3, lr} - ldr r0, _0201BE80 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - bl GroupOamAttributesWrapper - ldr r0, _0201BE80 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x70 - bl GroupOamAttributesWrapper - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BE80: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end GroupOamAttributesBothScreens - - arm_func_start sub_0201BE84 -sub_0201BE84: ; 0x0201BE84 - stmdb sp!, {r3, lr} - ldr r0, _0201BEAC ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0xe0 - bl GroupOamAttributesWrapper - ldr r0, _0201BEAC ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x150 - bl GroupOamAttributesWrapper - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BEAC: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BE84 - - arm_func_start sub_0201BEB0 -sub_0201BEB0: ; 0x0201BEB0 - stmdb sp!, {r3, lr} - mov r0, #8 - bl sub_0200302C - ldr r0, _0201BF0C ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x1c8 - add r0, r0, #0x1c00 - bl sub_0201B004 - ldr r0, _0201BF0C ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x264 - add r0, r0, #0x1c00 - bl sub_0201B004 - ldr r0, _0201BF0C ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - bl sub_0201BB20 - ldr r0, _0201BF0C ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x70 - bl sub_0201BB20 - mov r0, #8 - bl sub_020030FC - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BF0C: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BEB0 - - arm_func_start sub_0201BF10 -sub_0201BF10: ; 0x0201BF10 - stmdb sp!, {r3, lr} - mov r0, #8 - bl sub_0200302C - ldr r0, _0201BF48 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0xe0 - bl sub_0201BB20 - ldr r0, _0201BF48 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x150 - bl sub_0201BB20 - mov r0, #8 - bl sub_020030FC - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BF48: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BF10 - - arm_func_start sub_0201BF4C -sub_0201BF4C: ; 0x0201BF4C - stmdb sp!, {r3, lr} - bl sub_0201BEB0 - bl sub_0201BF10 - bl CopyAttributesToOamBothScreens - bl sub_0201BDEC - ldmia sp!, {r3, pc} - arm_func_end sub_0201BF4C - - arm_func_start sub_0201BF64 -sub_0201BF64: ; 0x0201BF64 - stmdb sp!, {r3, lr} - ldr r0, _0201BFA8 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - bl sub_0201B2A0 - ldr r0, _0201BFA8 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x70 - bl sub_0201B2A0 - ldr r0, _0201BFA8 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0xe0 - bl sub_0201B2A0 - ldr r0, _0201BFA8 ; =OBJ_GRAPHICS_CONTROLS_PTR - ldr r0, [r0] - add r0, r0, #0x150 - bl sub_0201B2A0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0201BFA8: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BF64 - - arm_func_start sub_0201BFAC -sub_0201BFAC: ; 0x0201BFAC - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr ip, _0201BFEC ; =OBJ_GRAPHICS_CONTROLS_PTR - str r3, [sp] - ldr lr, [ip] - ldr ip, [sp, #0x10] - mov r3, #0x70 - mov r4, r0 - mla r0, ip, r3, lr - mov ip, r1 - mov r3, r2 - mov r1, r4 - mov r2, ip - bl sub_0201B2DC - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_0201BFEC: .word OBJ_GRAPHICS_CONTROLS_PTR - arm_func_end sub_0201BFAC diff --git a/asm/main_0202598C.s b/asm/main_0202598C.s index 9434bdb3..92127da6 100644 --- a/asm/main_0202598C.s +++ b/asm/main_0202598C.s @@ -951,429 +951,3 @@ _02026134: add sp, sp, #0x10 ldmia sp!, {r4, r5, r6, pc} arm_func_end sub_020260C4 - - arm_func_start sub_0202613C -sub_0202613C: ; 0x0202613C - ldr ip, _02026148 ; =sub_02020B14 - add r0, r0, #4 - bx ip - .align 2, 0 -_02026148: .word sub_02020B14 - arm_func_end sub_0202613C - - arm_func_start sub_0202614C -sub_0202614C: ; 0x0202614C - stmdb sp!, {r3, lr} - sub sp, sp, #8 - add r3, sp, #0 - str r1, [sp] - mov r1, r3 - add r0, r0, #4 - str r2, [sp, #4] - bl sub_02020B60 - add sp, sp, #8 - ldmia sp!, {r3, pc} - arm_func_end sub_0202614C - - arm_func_start sub_02026174 -sub_02026174: ; 0x02026174 - ldr ip, _02026180 ; =sub_02020B74 - add r0, r0, #4 - bx ip - .align 2, 0 -_02026180: .word sub_02020B74 - arm_func_end sub_02026174 - - arm_func_start sub_02026184 -sub_02026184: ; 0x02026184 - ldr ip, _02026190 ; =sub_02020BB8 - add r0, r0, #4 - bx ip - .align 2, 0 -_02026190: .word sub_02020BB8 - arm_func_end sub_02026184 - - arm_func_start sub_02026194 -sub_02026194: ; 0x02026194 - ldr ip, _020261A0 ; =sub_02020BC4 - add r0, r0, #4 - bx ip - .align 2, 0 -_020261A0: .word sub_02020BC4 - arm_func_end sub_02026194 - - arm_func_start sub_020261A4 -sub_020261A4: ; 0x020261A4 - ldr ip, _020261B0 ; =sub_02020CCC - add r0, r0, #4 - bx ip - .align 2, 0 -_020261B0: .word sub_02020CCC - arm_func_end sub_020261A4 - - arm_func_start sub_020261B4 -sub_020261B4: ; 0x020261B4 - ldr ip, _020261C0 ; =sub_02020D18 - add r0, r0, #4 - bx ip - .align 2, 0 -_020261C0: .word sub_02020D18 - arm_func_end sub_020261B4 - - arm_func_start sub_020261C4 -sub_020261C4: ; 0x020261C4 - ldr ip, _020261D0 ; =sub_02020D40 - add r0, r0, #4 - bx ip - .align 2, 0 -_020261D0: .word sub_02020D40 - arm_func_end sub_020261C4 - - arm_func_start sub_020261D4 -sub_020261D4: ; 0x020261D4 - ldr ip, _020261E0 ; =sub_02020D54 - add r0, r0, #4 - bx ip - .align 2, 0 -_020261E0: .word sub_02020D54 - arm_func_end sub_020261D4 - - arm_func_start sub_020261E4 -sub_020261E4: ; 0x020261E4 - ldr ip, _020261F0 ; =sub_02020D5C - add r0, r0, #4 - bx ip - .align 2, 0 -_020261F0: .word sub_02020D5C - arm_func_end sub_020261E4 - - arm_func_start sub_020261F4 -sub_020261F4: ; 0x020261F4 - ldr ip, _02026200 ; =sub_02020D7C - add r0, r0, #4 - bx ip - .align 2, 0 -_02026200: .word sub_02020D7C - arm_func_end sub_020261F4 - - arm_func_start sub_02026204 -sub_02026204: ; 0x02026204 - ldr ip, _02026210 ; =AnalyzeText - add r0, r0, #4 - bx ip - .align 2, 0 -_02026210: .word AnalyzeText - arm_func_end sub_02026204 - - arm_func_start DrawTextInWindow -DrawTextInWindow: ; 0x02026214 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x124 - mov r4, r0 - str r1, [sp] - mov r1, r4 - add r0, sp, #8 - mov r4, r3 - str r2, [sp, #4] - bl sub_02025E84 - add r0, sp, #0xc - add r1, sp, #0 - bl sub_02020B60 - ldr r1, _02026264 ; =0x0000C402 - add r0, sp, #0xc - mov r2, r4 - bl sub_02020BC4 - add r0, sp, #0xc - bl AnalyzeText - add sp, sp, #0x124 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_02026264: .word 0x0000C402 - arm_func_end DrawTextInWindow - - arm_func_start AppendStandardStringToMission -AppendStandardStringToMission: ; 0x02026268 - stmdb sp!, {r4, lr} - sub sp, sp, #0x128 - sub sp, sp, #0x400 - str r2, [sp, #8] - mov r2, r3 - mov r4, r0 - str r1, [sp, #4] - mov ip, #0 - ldr r3, _020262DC ; =0x0000C402 - add r0, sp, #0xc - mov r1, #0x400 - str ip, [sp] - bl PreprocessStringFromId - add r0, sp, #0x400 - add r0, r0, #0xc - mov r1, r4 - bl sub_02025E84 - add r0, sp, #0x410 - add r1, sp, #4 - bl sub_02020B60 - ldr r1, _020262DC ; =0x0000C402 - add r0, sp, #0x410 - add r2, sp, #0xc - bl sub_02020BC4 - add r0, sp, #0x410 - bl AnalyzeText - add sp, sp, #0x128 - add sp, sp, #0x400 - ldmia sp!, {r4, pc} - .align 2, 0 -_020262DC: .word 0x0000C402 - arm_func_end AppendStandardStringToMission - - arm_func_start sub_020262E0 -sub_020262E0: ; 0x020262E0 - stmdb sp!, {r4, lr} - sub sp, sp, #0x128 - sub sp, sp, #0x400 - str r2, [sp, #8] - mov r2, r3 - mov r4, r0 - str r1, [sp, #4] - ldr ip, [sp, #0x530] - ldr r3, _02026354 ; =0x0000C402 - add r0, sp, #0xc - mov r1, #0x400 - str ip, [sp] - bl PreprocessStringFromId - add r0, sp, #0x400 - add r0, r0, #0xc - mov r1, r4 - bl sub_02025E84 - add r0, sp, #0x410 - add r1, sp, #4 - bl sub_02020B60 - ldr r1, _02026354 ; =0x0000C402 - add r0, sp, #0x410 - add r2, sp, #0xc - bl sub_02020BC4 - add r0, sp, #0x410 - bl AnalyzeText - add sp, sp, #0x128 - add sp, sp, #0x400 - ldmia sp!, {r4, pc} - .align 2, 0 -_02026354: .word 0x0000C402 - arm_func_end sub_020262E0 - - arm_func_start sub_02026358 -sub_02026358: ; 0x02026358 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x12c - mov r4, r0 - ldr lr, [sp, #0x138] - ldr ip, [sp, #0x13c] - str r1, [sp] - mov r1, r4 - add r0, sp, #0x10 - mov r4, r3 - str lr, [sp, #8] - str ip, [sp, #0xc] - str r2, [sp, #4] - bl sub_02025E84 - add r0, sp, #0x14 - add r1, sp, #8 - bl sub_02020B4C - add r0, sp, #0x14 - add r1, sp, #0 - bl sub_02020B60 - ldr r1, _020263C4 ; =0x0000C402 - add r0, sp, #0x14 - mov r2, r4 - bl sub_02020BC4 - add r0, sp, #0x14 - bl AnalyzeText - add sp, sp, #0x12c - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_020263C4: .word 0x0000C402 - arm_func_end sub_02026358 - - arm_func_start sub_020263C8 -sub_020263C8: ; 0x020263C8 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x124 - mov r4, r0 - str r1, [sp] - mov r1, r4 - add r0, sp, #8 - mov r4, r3 - str r2, [sp, #4] - bl sub_02025E84 - add r0, sp, #0xc - add r1, sp, #0 - bl sub_02020B60 - ldr r1, _02026424 ; =0x0000C402 - add r0, sp, #0xc - mov r2, r4 - bl sub_02020BC4 - ldrb r1, [sp, #0x130] - add r0, sp, #0xc - bl sub_02020B74 - add r0, sp, #0xc - bl AnalyzeText - add sp, sp, #0x124 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_02026424: .word 0x0000C402 - arm_func_end sub_020263C8 - - arm_func_start sub_02026428 -sub_02026428: ; 0x02026428 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x12c - mov r4, r0 - ldr lr, [sp, #0x13c] - ldr ip, [sp, #0x140] - str r1, [sp] - mov r1, r4 - add r0, sp, #0x10 - mov r4, r3 - str lr, [sp, #8] - str ip, [sp, #0xc] - str r2, [sp, #4] - bl sub_02025E84 - add r0, sp, #0x14 - add r1, sp, #8 - bl sub_02020B4C - add r0, sp, #0x14 - add r1, sp, #0 - bl sub_02020B60 - ldr r1, _020264A0 ; =0x0000C402 - add r0, sp, #0x14 - mov r2, r4 - bl sub_02020BC4 - ldrb r1, [sp, #0x138] - add r0, sp, #0x14 - bl sub_02020B94 - add r0, sp, #0x14 - bl AnalyzeText - add sp, sp, #0x12c - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_020264A0: .word 0x0000C402 - arm_func_end sub_02026428 - - arm_func_start sub_020264A4 -sub_020264A4: ; 0x020264A4 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x124 - mov r4, r0 - str r1, [sp] - mov r1, r4 - add r0, sp, #8 - mov r4, r3 - str r2, [sp, #4] - bl sub_02025E84 - add r0, sp, #0xc - add r1, sp, #0 - bl sub_02020B60 - ldr r1, _020264F4 ; =0x0000C403 - add r0, sp, #0xc - mov r2, r4 - bl sub_02020BC4 - add r0, sp, #0xc - bl AnalyzeText - add sp, sp, #0x124 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_020264F4: .word 0x0000C403 - arm_func_end sub_020264A4 - - arm_func_start sub_020264F8 -sub_020264F8: ; 0x020264F8 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r3 - mov r7, r0 - mov r0, r4 - mov r6, r1 - mov r5, r2 - bl sub_02025C7C -#ifdef JAPAN - ldrsh r0, [r0, #6] - cmp r0, #0xc - rsblt r0, r0, #0xc - addlt r0, r0, r0, lsr #31 - addlt r6, r6, r0, asr #1 -#else - ldrb r0, [r0, #2] - cmp r0, #0xc - rsblo r0, r0, #0xc - addlo r0, r0, r0, lsr #31 - addlo r6, r6, r0, asr #1 -#endif - ldrb r0, [sp, #0x18] - bl GetColorCodePaletteOffset - str r0, [sp] - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl DrawChar - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_020264F8 - - arm_func_start GetCharWidth -GetCharWidth: ; 0x0202654C - stmdb sp!, {r3, lr} - ldr r1, _02026590 ; =_020AFD04 - mov r3, r0 -#ifdef NORTH_AMERICA - ldr r1, [r1, #8] -#else - ldr r1, [r1, #4] -#endif - cmp r1, #2 - blt _0202657C - mov r1, #0 - mov r2, r1 - sub r0, r1, #2 - str r1, [sp] - bl sub_02026C68 - ldmia sp!, {r3, pc} -_0202657C: - bl sub_02025C7C - cmp r0, #0 -#ifdef JAPAN - ldrnesh r0, [r0, #6] -#else - ldrneb r0, [r0, #2] -#endif - moveq r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02026590: .word _020AFD04 - arm_func_end GetCharWidth - - arm_func_start sub_02026594 -sub_02026594: ; 0x02026594 - ldr r1, _020265A4 ; =_020AFD04 -#if defined(EUROPE) - ldr r1, [r1, #8] -#elif defined(JAPAN) - ldr r1, [r1] -#else - ldr r1, [r1, #0xc] -#endif - ldrb r0, [r1, r0, lsl #2] - bx lr - .align 2, 0 -_020265A4: .word _020AFD04 - arm_func_end sub_02026594 - - arm_func_start sub_020265A8 -sub_020265A8: ; 0x020265A8 - ldr ip, _020265B8 ; =sub_02022118 - ldr r1, _020265BC ; =GetCharWidth - ldr r2, _020265C0 ; =sub_02026594 - bx ip - .align 2, 0 -_020265B8: .word sub_02022118 -_020265BC: .word GetCharWidth -_020265C0: .word sub_02026594 - arm_func_end sub_020265A8 diff --git a/asm/main_0202614C.s b/asm/main_0202614C.s new file mode 100644 index 00000000..b777f6c5 --- /dev/null +++ b/asm/main_0202614C.s @@ -0,0 +1,18 @@ + .include "asm/macros.inc" + .include "main_0202614C.inc" + + .text + + arm_func_start sub_0202614C +sub_0202614C: ; 0x0202614C + stmdb sp!, {r3, lr} + sub sp, sp, #8 + add r3, sp, #0 + str r1, [sp] + mov r1, r3 + add r0, r0, #4 + str r2, [sp, #4] + bl sub_02020B60 + add sp, sp, #8 + ldmia sp!, {r3, pc} + arm_func_end sub_0202614C diff --git a/asm/main_020261F4.s b/asm/main_020261F4.s new file mode 100644 index 00000000..8b7f0812 --- /dev/null +++ b/asm/main_020261F4.s @@ -0,0 +1,335 @@ + .include "asm/macros.inc" + .include "main_020261F4.inc" + + .text + + arm_func_start sub_020261F4 +sub_020261F4: ; 0x020261F4 + ldr ip, _02026200 ; =sub_02020D7C + add r0, r0, #4 + bx ip + .align 2, 0 +_02026200: .word sub_02020D7C + arm_func_end sub_020261F4 + + arm_func_start sub_02026204 +sub_02026204: ; 0x02026204 + ldr ip, _02026210 ; =AnalyzeText + add r0, r0, #4 + bx ip + .align 2, 0 +_02026210: .word AnalyzeText + arm_func_end sub_02026204 + + arm_func_start DrawTextInWindow +DrawTextInWindow: ; 0x02026214 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x124 + mov r4, r0 + str r1, [sp] + mov r1, r4 + add r0, sp, #8 + mov r4, r3 + str r2, [sp, #4] + bl sub_02025E84 + add r0, sp, #0xc + add r1, sp, #0 + bl sub_02020B60 + ldr r1, _02026264 ; =0x0000C402 + add r0, sp, #0xc + mov r2, r4 + bl sub_02020BC4 + add r0, sp, #0xc + bl AnalyzeText + add sp, sp, #0x124 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_02026264: .word 0x0000C402 + arm_func_end DrawTextInWindow + + arm_func_start AppendStandardStringToMission +AppendStandardStringToMission: ; 0x02026268 + stmdb sp!, {r4, lr} + sub sp, sp, #0x128 + sub sp, sp, #0x400 + str r2, [sp, #8] + mov r2, r3 + mov r4, r0 + str r1, [sp, #4] + mov ip, #0 + ldr r3, _020262DC ; =0x0000C402 + add r0, sp, #0xc + mov r1, #0x400 + str ip, [sp] + bl PreprocessStringFromId + add r0, sp, #0x400 + add r0, r0, #0xc + mov r1, r4 + bl sub_02025E84 + add r0, sp, #0x410 + add r1, sp, #4 + bl sub_02020B60 + ldr r1, _020262DC ; =0x0000C402 + add r0, sp, #0x410 + add r2, sp, #0xc + bl sub_02020BC4 + add r0, sp, #0x410 + bl AnalyzeText + add sp, sp, #0x128 + add sp, sp, #0x400 + ldmia sp!, {r4, pc} + .align 2, 0 +_020262DC: .word 0x0000C402 + arm_func_end AppendStandardStringToMission + + arm_func_start sub_020262E0 +sub_020262E0: ; 0x020262E0 + stmdb sp!, {r4, lr} + sub sp, sp, #0x128 + sub sp, sp, #0x400 + str r2, [sp, #8] + mov r2, r3 + mov r4, r0 + str r1, [sp, #4] + ldr ip, [sp, #0x530] + ldr r3, _02026354 ; =0x0000C402 + add r0, sp, #0xc + mov r1, #0x400 + str ip, [sp] + bl PreprocessStringFromId + add r0, sp, #0x400 + add r0, r0, #0xc + mov r1, r4 + bl sub_02025E84 + add r0, sp, #0x410 + add r1, sp, #4 + bl sub_02020B60 + ldr r1, _02026354 ; =0x0000C402 + add r0, sp, #0x410 + add r2, sp, #0xc + bl sub_02020BC4 + add r0, sp, #0x410 + bl AnalyzeText + add sp, sp, #0x128 + add sp, sp, #0x400 + ldmia sp!, {r4, pc} + .align 2, 0 +_02026354: .word 0x0000C402 + arm_func_end sub_020262E0 + + arm_func_start sub_02026358 +sub_02026358: ; 0x02026358 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x12c + mov r4, r0 + ldr lr, [sp, #0x138] + ldr ip, [sp, #0x13c] + str r1, [sp] + mov r1, r4 + add r0, sp, #0x10 + mov r4, r3 + str lr, [sp, #8] + str ip, [sp, #0xc] + str r2, [sp, #4] + bl sub_02025E84 + add r0, sp, #0x14 + add r1, sp, #8 + bl sub_02020B4C + add r0, sp, #0x14 + add r1, sp, #0 + bl sub_02020B60 + ldr r1, _020263C4 ; =0x0000C402 + add r0, sp, #0x14 + mov r2, r4 + bl sub_02020BC4 + add r0, sp, #0x14 + bl AnalyzeText + add sp, sp, #0x12c + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_020263C4: .word 0x0000C402 + arm_func_end sub_02026358 + + arm_func_start sub_020263C8 +sub_020263C8: ; 0x020263C8 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x124 + mov r4, r0 + str r1, [sp] + mov r1, r4 + add r0, sp, #8 + mov r4, r3 + str r2, [sp, #4] + bl sub_02025E84 + add r0, sp, #0xc + add r1, sp, #0 + bl sub_02020B60 + ldr r1, _02026424 ; =0x0000C402 + add r0, sp, #0xc + mov r2, r4 + bl sub_02020BC4 + ldrb r1, [sp, #0x130] + add r0, sp, #0xc + bl sub_02020B74 + add r0, sp, #0xc + bl AnalyzeText + add sp, sp, #0x124 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_02026424: .word 0x0000C402 + arm_func_end sub_020263C8 + + arm_func_start sub_02026428 +sub_02026428: ; 0x02026428 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x12c + mov r4, r0 + ldr lr, [sp, #0x13c] + ldr ip, [sp, #0x140] + str r1, [sp] + mov r1, r4 + add r0, sp, #0x10 + mov r4, r3 + str lr, [sp, #8] + str ip, [sp, #0xc] + str r2, [sp, #4] + bl sub_02025E84 + add r0, sp, #0x14 + add r1, sp, #8 + bl sub_02020B4C + add r0, sp, #0x14 + add r1, sp, #0 + bl sub_02020B60 + ldr r1, _020264A0 ; =0x0000C402 + add r0, sp, #0x14 + mov r2, r4 + bl sub_02020BC4 + ldrb r1, [sp, #0x138] + add r0, sp, #0x14 + bl sub_02020B94 + add r0, sp, #0x14 + bl AnalyzeText + add sp, sp, #0x12c + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_020264A0: .word 0x0000C402 + arm_func_end sub_02026428 + + arm_func_start sub_020264A4 +sub_020264A4: ; 0x020264A4 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x124 + mov r4, r0 + str r1, [sp] + mov r1, r4 + add r0, sp, #8 + mov r4, r3 + str r2, [sp, #4] + bl sub_02025E84 + add r0, sp, #0xc + add r1, sp, #0 + bl sub_02020B60 + ldr r1, _020264F4 ; =0x0000C403 + add r0, sp, #0xc + mov r2, r4 + bl sub_02020BC4 + add r0, sp, #0xc + bl AnalyzeText + add sp, sp, #0x124 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_020264F4: .word 0x0000C403 + arm_func_end sub_020264A4 + + arm_func_start sub_020264F8 +sub_020264F8: ; 0x020264F8 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r3 + mov r7, r0 + mov r0, r4 + mov r6, r1 + mov r5, r2 + bl sub_02025C7C +#ifdef JAPAN + ldrsh r0, [r0, #6] + cmp r0, #0xc + rsblt r0, r0, #0xc + addlt r0, r0, r0, lsr #31 + addlt r6, r6, r0, asr #1 +#else + ldrb r0, [r0, #2] + cmp r0, #0xc + rsblo r0, r0, #0xc + addlo r0, r0, r0, lsr #31 + addlo r6, r6, r0, asr #1 +#endif + ldrb r0, [sp, #0x18] + bl GetColorCodePaletteOffset + str r0, [sp] + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl DrawChar + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_020264F8 + + arm_func_start GetCharWidth +GetCharWidth: ; 0x0202654C + stmdb sp!, {r3, lr} + ldr r1, _02026590 ; =_020AFD04 + mov r3, r0 +#ifdef NORTH_AMERICA + ldr r1, [r1, #8] +#else + ldr r1, [r1, #4] +#endif + cmp r1, #2 + blt _0202657C + mov r1, #0 + mov r2, r1 + sub r0, r1, #2 + str r1, [sp] + bl sub_02026C68 + ldmia sp!, {r3, pc} +_0202657C: + bl sub_02025C7C + cmp r0, #0 +#ifdef JAPAN + ldrnesh r0, [r0, #6] +#else + ldrneb r0, [r0, #2] +#endif + moveq r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02026590: .word _020AFD04 + arm_func_end GetCharWidth + + arm_func_start sub_02026594 +sub_02026594: ; 0x02026594 + ldr r1, _020265A4 ; =_020AFD04 +#if defined(EUROPE) + ldr r1, [r1, #8] +#elif defined(JAPAN) + ldr r1, [r1] +#else + ldr r1, [r1, #0xc] +#endif + ldrb r0, [r1, r0, lsl #2] + bx lr + .align 2, 0 +_020265A4: .word _020AFD04 + arm_func_end sub_02026594 + + arm_func_start sub_020265A8 +sub_020265A8: ; 0x020265A8 + ldr ip, _020265B8 ; =sub_02022118 + ldr r1, _020265BC ; =GetCharWidth + ldr r2, _020265C0 ; =sub_02026594 + bx ip + .align 2, 0 +_020265B8: .word sub_02022118 +_020265BC: .word GetCharWidth +_020265C0: .word sub_02026594 + arm_func_end sub_020265A8 diff --git a/asm/main_0202B530.s b/asm/main_0202B530.s deleted file mode 100644 index a3c33089..00000000 --- a/asm/main_0202B530.s +++ /dev/null @@ -1,22 +0,0 @@ - .include "asm/macros.inc" - .include "main_0202B530.inc" - - .text - - arm_func_start sub_0202B530 -sub_0202B530: ; 0x0202B530 - stmdb sp!, {r3, lr} - bl GetWindowContents - add r0, r0, #4 - bl GetSelectedItemOnPage - ldmia sp!, {r3, pc} - arm_func_end sub_0202B530 - - arm_func_start sub_0202B544 -sub_0202B544: ; 0x0202B544 - stmdb sp!, {r3, lr} - bl GetWindowContents - add r0, r0, #4 - bl GetCurrentPage - ldmia sp!, {r3, pc} - arm_func_end sub_0202B544 diff --git a/asm/main_020307B8.s b/asm/main_020307B8.s deleted file mode 100644 index 0ac2c021..00000000 --- a/asm/main_020307B8.s +++ /dev/null @@ -1,46 +0,0 @@ - .include "asm/macros.inc" - .include "main_020307B8.inc" - - .text - - arm_func_start sub_020307B8 -sub_020307B8: ; 0x020307B8 - stmdb sp!, {r3, lr} - bl GetWindowContents - mov r1, #1 - str r1, [r0, #0x1bc] - mov r1, #0 - strb r1, [r0, #0x1c0] - strb r1, [r0, #0x1c1] - ldr r1, [r0, #0x104] - bic r1, r1, #0x800000 - str r1, [r0, #0x104] - add r0, r0, #4 - bl sub_02032984 - ldmia sp!, {r3, pc} - arm_func_end sub_020307B8 - - arm_func_start sub_020307EC -sub_020307EC: ; 0x020307EC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl GetWindowContents - mov r4, r0 - mov r0, r5 - bl GetWindowContents - ldr r0, [r0, #0x1bc] - cmp r0, #7 - moveq r0, #1 - movne r0, #0 - tst r0, #0xff - beq _02030828 - mov r0, r5 - bl sub_020307B8 - ldmia sp!, {r3, r4, r5, pc} -_02030828: - ldr r0, [r4, #0x1bc] - cmp r0, #6 - moveq r0, #0 - streq r0, [r4, #0x1bc] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_020307EC diff --git a/asm/main_02030A50.s b/asm/main_02030A90.s similarity index 98% rename from asm/main_02030A50.s rename to asm/main_02030A90.s index 4c04561a..76e3067c 100644 --- a/asm/main_02030A50.s +++ b/asm/main_02030A90.s @@ -1,36 +1,8 @@ .include "asm/macros.inc" - .include "main_02030A50.inc" + .include "main_02030A90.inc" .text - arm_func_start sub_02030A50 -sub_02030A50: ; 0x02030A50 - stmdb sp!, {r4, lr} - mov r4, r1 - bl GetWindowContents - str r4, [r0, #0xc0] - ldmia sp!, {r4, pc} - arm_func_end sub_02030A50 - - arm_func_start sub_02030A64 -sub_02030A64: ; 0x02030A64 - stmdb sp!, {r3, lr} - bl GetWindowContents - ldr r0, [r0, #0xc0] - ldmia sp!, {r3, pc} - arm_func_end sub_02030A64 - - arm_func_start sub_02030A74 -sub_02030A74: ; 0x02030A74 - stmdb sp!, {r4, lr} - mov r4, r1 - bl GetWindowContents - mov r1, r4 - add r0, r0, #4 - bl sub_02031C74 - ldmia sp!, {r4, pc} - arm_func_end sub_02030A74 - arm_func_start sub_02030A90 sub_02030A90: ; 0x02030A90 stmdb sp!, {r4, lr} diff --git a/asm/main_020325AC.s b/asm/main_020325AC.s index 58a32130..74f8e649 100644 --- a/asm/main_020325AC.s +++ b/asm/main_020325AC.s @@ -171,2496 +171,3 @@ sub_02032754: ; 0x02032754 strgt r1, [r4, #0xbc] ldmia sp!, {r4, pc} arm_func_end sub_02032754 - - arm_func_start sub_020327CC -sub_020327CC: ; 0x020327CC - str r1, [r0, #0xd0] - str r2, [r0, #0xc4] - mov r1, #0 - str r1, [r0, #0xbc] - str r1, [r0, #0xc8] - bx lr - arm_func_end sub_020327CC - - arm_func_start sub_020327E4 -sub_020327E4: ; 0x020327E4 - ldr r1, [r0, #0xcc] - ldr r2, [r0, #0xc8] - sub r1, r1, #1 - cmp r2, r1 - movge r1, #0 - addlt r1, r2, #1 - ldr ip, _02032808 ; =sub_02032754 - str r1, [r0, #0xc8] - bx ip - .align 2, 0 -_02032808: .word sub_02032754 - arm_func_end sub_020327E4 - - arm_func_start sub_0203280C -sub_0203280C: ; 0x0203280C - ldr r1, [r0, #0xc8] - ldr ip, _02032828 ; =sub_02032754 - cmp r1, #0 - ldrle r1, [r0, #0xcc] - sub r1, r1, #1 - str r1, [r0, #0xc8] - bx ip - .align 2, 0 -_02032828: .word sub_02032754 - arm_func_end sub_0203280C - - arm_func_start sub_0203282C -sub_0203282C: ; 0x0203282C - ldr r2, [r0, #0xcc] - ldr r1, [r0, #0xc8] - sub r2, r2, #1 - cmp r1, r2 - movge r1, #0 - strge r1, [r0, #0xc8] - bge _02032858 - add r1, r1, #0xa - cmp r1, r2 - movle r2, r1 - str r2, [r0, #0xc8] -_02032858: - ldr ip, _02032860 ; =sub_02032754 - bx ip - .align 2, 0 -_02032860: .word sub_02032754 - arm_func_end sub_0203282C - - arm_func_start sub_02032864 -sub_02032864: ; 0x02032864 - ldr r1, [r0, #0xc8] - cmp r1, #0 - ldrle r1, [r0, #0xcc] - suble r1, r1, #1 - strle r1, [r0, #0xc8] - ble _02032888 - subs r1, r1, #0xa - movmi r1, #0 - str r1, [r0, #0xc8] -_02032888: - ldr ip, _02032890 ; =sub_02032754 - bx ip - .align 2, 0 -_02032890: .word sub_02032754 - arm_func_end sub_02032864 - - arm_func_start sub_02032894 -sub_02032894: ; 0x02032894 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r1, #0 - ble _020328B4 - mov r0, r1, lsl #8 - ldr r1, [r4, #0xc4] - bl _s32_div_f - b _020328D0 -_020328B4: - ldr r0, [r4, #0xb4] - ldmia r4, {r1, r2} - sub r1, r2, r1 - sub r0, r1, r0 - ldr r1, [r4, #0xc4] - mov r0, r0, lsl #8 - bl _s32_div_f -_020328D0: - str r0, [r4, #0xb8] - ldmia sp!, {r4, pc} - arm_func_end sub_02032894 - - arm_func_start GetPageItemYOffset -GetPageItemYOffset: ; 0x020328D8 - ldr r2, [r0, #0xb8] - ldr r3, [r0, #0xb4] - mul r2, r1, r2 - mov r0, r2, asr #7 - add r0, r2, r0, lsr #24 - add r0, r3, r0, asr #8 - bx lr - arm_func_end GetPageItemYOffset - - arm_func_start sub_020328F4 -sub_020328F4: ; 0x020328F4 - ldr r1, [r0, #0x10] - tst r1, #0x8000 - beq _02032910 - ldr r0, [r0, #0xcc] - cmp r0, #1 - movgt r0, #1 - bxgt lr -_02032910: - mov r0, #0 - bx lr - arm_func_end sub_020328F4 - - arm_func_start sub_02032918 -sub_02032918: ; 0x02032918 - ldr r1, [r0, #0x10] - tst r1, #0x8000 - beq _02032934 - ldr r0, [r0, #0xcc] - cmp r0, #1 - movgt r0, #1 - bxgt lr -_02032934: - mov r0, #0 - bx lr - arm_func_end sub_02032918 - - arm_func_start sub_0203293C -sub_0203293C: ; 0x0203293C - ldr r1, [r0, #0x10] - tst r1, #0x8000 - beq _02032958 - ldr r0, [r0, #0xcc] - cmp r0, #1 - movgt r0, #1 - bxgt lr -_02032958: - mov r0, #0 - bx lr - arm_func_end sub_0203293C - - arm_func_start PlayWindowInputSound -PlayWindowInputSound: ; 0x02032960 - stmdb sp!, {r3, lr} - ldr r0, [r0, #0x10] - tst r0, #0x10 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, r1 - bl PlaySeVolumeWrapper - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end PlayWindowInputSound - - arm_func_start sub_02032984 -sub_02032984: ; 0x02032984 - mvn r1, #0 - str r1, [r0, #0xe8] - str r1, [r0, #0xf0] - str r1, [r0, #0xe4] - str r1, [r0, #0xec] - bx lr - arm_func_end sub_02032984 - - arm_func_start sub_0203299C -sub_0203299C: ; 0x0203299C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl sub_02033440 - mov r4, r0 - mov r0, r7 - mov r1, r6 - bl sub_020336FC - cmp r4, r5 - movgt r5, r4 - cmp r0, r5 - movgt r5, r0 - add r1, r5, #7 - mov r0, r1, asr #2 - add r0, r1, r0, lsr #29 - mov r0, r0, asr #3 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_0203299C - - arm_func_start CalcMenuHeightDiv8__020329E4 -CalcMenuHeightDiv8__020329E4: ; 0x020329E4 - tst r0, #0x40000 - bne _020329FC - ldr ip, [r2] - ldr r2, [r3] - cmp r2, ip - strgt ip, [r3] -_020329FC: - tst r0, #0x400 - ldrne ip, [r1, #4] - ldr r2, [r3] - moveq ip, #0xe - mul r3, r2, ip - tst r0, #0x800 - ldrne r1, [r1, #0xc] - addne r3, r3, r1 - tst r0, #0x1000 - addne r3, r3, #0x10 - add r1, r3, #7 - mov r0, r1, asr #2 - add r0, r1, r0, lsr #29 - mov r0, r0, asr #3 - bx lr - arm_func_end CalcMenuHeightDiv8__020329E4 - - arm_func_start InitInventoryMenuInput -InitInventoryMenuInput: ; 0x02032A38 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r1 - mov r6, r2 - tst sb, #0x400 - ldrne r4, [r6, #4] - mov r7, r0 - mov r5, r3 - moveq r4, #0xe - mov r8, r6 - str sb, [r7, #0x10] - add lr, r7, #0x14 - mov ip, #9 -_02032A68: - ldmia r8!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _02032A68 - ldmia r8, {r0, r1} - stmia lr, {r0, r1} - ldmia r5, {r0, r1, r2, r3} - stmia r7, {r0, r1, r2, r3} - mov r0, #0 - str r0, [r7, #0xbc] - str r0, [r7, #0xc8] - tst sb, #0x200 - ldrne r0, [r6, #0x60] - ldr r1, [sp, #0x20] - str r0, [r7, #0xac] - ldrb r0, [sp, #0x28] - str r1, [r7, #0xd0] - strb r0, [r7, #0xd5] - ldr r0, [r7, #0x10] - tst r0, #0x8000 - beq _02032AD8 - ldr r0, [sp, #0x24] - cmp r0, #0 - movle r0, #1 - str r0, [r7, #0xc4] - mov r0, #1 - str r0, [r7, #0xcc] - b _02032AE0 -_02032AD8: - str r1, [r7, #0xc0] - str r1, [r7, #0xc4] -_02032AE0: - mov r0, r7 - bl sub_020331D4 - ldr r0, [r7, #0xcc] - mov r3, #0 - cmp r0, #0xa - ldrge r0, [r7, #0x10] - orrge r0, r0, #0x10000 - strge r0, [r7, #0x10] - str r3, [r7, #0xb0] - ldr r0, [r7, #0x10] - tst r0, #0x800 - ldrne r3, [r6, #0xc] - str r3, [r7, #0xb4] - ldmia r5, {r1, r2} - ldr r0, [r7, #0x10] - sub r1, r2, r1 - sub r1, r1, r3 - mov r3, #0 - tst r0, #0x1000 - subne r1, r1, #0x10 - strb r3, [r7, #0xd4] - cmp r4, #0 - ble _02032B74 - ldr r0, [r7, #0x10] - tst r0, #0x80000 - bne _02032B68 - ldr r0, [r7, #0xc4] - ldr r2, [r7, #0xb4] - mul r0, r4, r0 - sub r0, r1, r0 - add r0, r0, r0, lsr #31 - adds r0, r2, r0, asr #1 - str r0, [r7, #0xb4] - strmi r3, [r7, #0xb4] -_02032B68: - mov r0, r4, lsl #8 - str r0, [r7, #0xb8] - b _02032B7C -_02032B74: - mov r0, r7 - bl sub_0203330C -_02032B7C: - ldr r0, [r7, #0x10] - tst r0, #0x20 - beq _02032B94 - ldr r1, [r6] - mov r0, r7 - bl sub_020330EC -_02032B94: - bl sub_02031908 - mov r1, #0 - str r1, [r7, #0xd8] - sub r0, r1, #1 - str r0, [r7, #0xdc] - mov r0, r7 - str r1, [r7, #0xe0] - bl sub_020333FC - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end InitInventoryMenuInput - - arm_func_start sub_02032BB8 -sub_02032BB8: ; 0x02032BB8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x24 - mov sb, r0 - mov r6, r3 - mov r8, r1 - mov r7, r2 - ldr r4, [sb, #0xc8] - ldr r5, [sb, #0xbc] - bl sub_02033414 - mov sl, r0 - cmp r6, #0 - add r0, sp, #0 - beq _02032D04 - ldr r1, [sb, #0x10] - bl sub_02031914 - ldr r1, [sb, #0x10] - mov r6, r0 - tst r1, #0x8000 - beq _02032C44 - tst r1, #0x20000 - beq _02032C44 - tst r1, #0x2000000 - bne _02032C44 - tst r6, #8 - beq _02032C44 - tst r6, #0x10 - beq _02032C30 - mov r0, sb - bl InventoryMenuPreviousPage - b _02032C74 -_02032C30: - tst r6, #0x20 - beq _02032C74 - mov r0, sb - bl InventoryMenuNextPage - b _02032C74 -_02032C44: - tst r1, #0x1000000 - cmpeq sl, #0 - bne _02032C74 - tst r6, #0x10 - beq _02032C64 - mov r0, sb - bl sub_020330B4 - b _02032C74 -_02032C64: - tst r6, #0x20 - beq _02032C74 - mov r0, sb - bl sub_02033078 -_02032C74: - ldr r0, [sb, #0x10] - tst r0, #0x8000 - beq _02032CEC - tst r0, #0x20000 - bne _02032CEC - tst r0, #0x2000000 - bne _02032CEC - tst r0, #0x10000 - beq _02032CC8 - tst r6, #8 - beq _02032CC8 - tst r6, #0x40 - beq _02032CB4 - mov r0, sb - bl InventoryMenuPrevious10Pages - b _02032CEC -_02032CB4: - tst r6, #0x80 - beq _02032CEC - mov r0, sb - bl InventoryMenuNext10Pages - b _02032CEC -_02032CC8: - tst r6, #0x40 - beq _02032CDC - mov r0, sb - bl InventoryMenuPreviousPage - b _02032CEC -_02032CDC: - tst r6, #0x80 - beq _02032CEC - mov r0, sb - bl InventoryMenuNextPage -_02032CEC: - ldr r0, [sb, #0x10] - tst r0, #1 - biceq r6, r6, #1 - tst r0, #2 - biceq r6, r6, #2 - b _02032D0C -_02032D04: - mov r6, #0 - bl sub_02006BFC -_02032D0C: - cmp r8, #0 - strne r6, [r8] - cmp r7, #0 - beq _02032D3C - add r8, sp, #0 - mov r6, #2 -_02032D24: - ldmia r8!, {r0, r1, r2, r3} - stmia r7!, {r0, r1, r2, r3} - subs r6, r6, #1 - bne _02032D24 - ldr r0, [r8] - str r0, [r7] -_02032D3C: - ldr r0, [sb, #0xc8] - cmp r4, r0 - beq _02032D5C - mov r0, sb - mov r1, #4 - bl sub_020333D8 - mov r0, #1 - b _02032DA8 -_02032D5C: - ldr r0, [sb, #0xbc] - cmp r5, r0 - beq _02032D74 - mov r0, sb - mov r1, #3 - bl sub_020333D8 -_02032D74: - ldr r0, [sb, #0xd8] - cmp r0, #0 - ble _02032DA4 - subs r0, r0, #1 - str r0, [sb, #0xd8] - bne _02032DA4 - mvn r0, #0 - str r0, [sb, #0xdc] - mov r0, #0 - str r0, [sb, #0xe0] - mov r0, #1 - b _02032DA8 -_02032DA4: - mov r0, #0 -_02032DA8: - add sp, sp, #0x24 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end sub_02032BB8 - - arm_func_start sub_02032DB0 -sub_02032DB0: ; 0x02032DB0 - ldr r1, [r0, #0xd8] - cmp r1, #0 - ble _02032DE0 - subs r1, r1, #1 - str r1, [r0, #0xd8] - mvneq r1, #0 - streq r1, [r0, #0xdc] - moveq r1, #0 - streq r1, [r0, #0xe0] - beq _02032DE0 - mov r0, #1 - bx lr -_02032DE0: - mov r0, #0 - bx lr - arm_func_end sub_02032DB0 - - arm_func_start sub_02032DE8 -sub_02032DE8: ; 0x02032DE8 - mov r2, #6 - str r2, [r0, #0xd8] - sub r2, r2, #7 - str r1, [r0, #0xe0] - str r2, [r0, #0xe8] - str r2, [r0, #0xe4] - str r2, [r0, #0xf0] - str r2, [r0, #0xec] - bx lr - arm_func_end sub_02032DE8 - - arm_func_start sub_02032E0C -sub_02032E0C: ; 0x02032E0C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x10 - mov r8, r1 - ldrh r1, [r8] - mov r7, r2 - mov sb, r0 - tst r1, r7 - beq _02032F50 - cmp r3, #0 - ldrge r0, [sb, #8] - ldr r5, [sb, #0xc0] - ldrlt r0, [sb, #0xc] - ldr r1, [sp, #0x30] - add r0, r0, r3 - str r0, [sp, #8] - cmp r1, #0 - ldrgt r0, [sb, #8] - mov r6, #0 - ldrle r0, [sb, #0xc] - add r4, sp, #0 - add r0, r0, r1 - str r0, [sp, #0xc] - b _02032F48 -_02032E68: - ldr r0, [sb, #0xb8] - ldr r2, [sb, #0xb4] - mul r1, r6, r0 - mov r0, r1, asr #7 - add r0, r1, r0, lsr #24 - ldr r1, [sb] - add r0, r2, r0, asr #8 - add r0, r1, r0 - str r0, [sp] - ldr r0, [sb, #0xb8] - add r1, r6, #1 - mul r2, r1, r0 - mov r0, r2, asr #7 - ldr r1, [sb, #0xb4] - add r0, r2, r0, lsr #24 - ldr r2, [sb] - add r0, r1, r0, asr #8 - add r0, r2, r0 - sub r3, r0, #2 - mov r0, r8 - mov r1, r7 - mov r2, r4 - str r3, [sp, #4] - bl sub_02006C8C - cmp r0, #0 - beq _02032F44 - ldrb r0, [sp, #0x34] - cmp r0, #0 - beq _02032F34 - mov r0, #6 - str r0, [sb, #0xd8] - sub r0, r0, #7 - str r0, [sb, #0xdc] - mov r0, #0 - str r0, [sb, #0xe0] - ldr r1, [sp, #8] - ldr r0, [sb, #8] - sub r0, r1, r0 - str r0, [sb, #0xec] - ldr r1, [sp, #0xc] - ldr r0, [sb, #8] - sub r0, r1, r0 - str r0, [sb, #0xf0] - ldr r1, [sp] - ldr r0, [sb] - sub r0, r1, r0 - str r0, [sb, #0xe4] - ldr r1, [sp, #4] - ldr r0, [sb] - sub r0, r1, r0 - str r0, [sb, #0xe8] -_02032F34: - ldr r1, [sb, #0xc8] - ldr r0, [sb, #0xc4] - mla r0, r1, r0, r6 - b _02032F54 -_02032F44: - add r6, r6, #1 -_02032F48: - cmp r6, r5 - blt _02032E68 -_02032F50: - mvn r0, #0 -_02032F54: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end sub_02032E0C - - arm_func_start sub_02032F5C -sub_02032F5C: ; 0x02032F5C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r1 - mov r4, r0 - mov r6, r2 - mov r5, r3 - tst r7, #0x2000 - mov r0, #0 - beq _02032FA4 - ldr r1, [r4, #0x10] - tst r1, #0x40 - ldrne r3, [r4, #0x78] - cmpne r3, #0 - beq _02032FA4 - ldr r0, [r4, #0x7c] - mov r1, r6 - mov r2, r5 - blx r3 - mov r0, #1 -_02032FA4: - tst r7, #0x1000 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r4, #0x10] - tst r1, #0x80 - ldrne r3, [r4, #0x80] - cmpne r3, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r4, #0x84] - mov r1, r6 - mov r2, r5 - blx r3 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end sub_02032F5C - - arm_func_start sub_02032FD8 -sub_02032FD8: ; 0x02032FD8 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r1, [r4, #0x10] - tst r1, #1 - beq _0203304C - tst r1, #0x8000000 - bne _0203304C - tst r1, #0x200 - beq _02033044 - bl sub_02033414 - cmp r0, #0 - bne _02033028 - mov r0, r4 - bl sub_02033064 - ldr r1, [r4, #0xac] - ldrb r0, [r1, r0] - tst r0, #1 - bne _0203304C - mov r0, #1 - ldmia sp!, {r4, pc} -_02033028: - ldr r0, [r4, #0xac] - ldrb r0, [r0, #0x7f] - tst r0, #1 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} -_02033044: - mov r0, #1 - ldmia sp!, {r4, pc} -_0203304C: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end sub_02032FD8 - - arm_func_start sub_02033054 -sub_02033054: ; 0x02033054 - ldr r1, [r0, #0xc8] - ldr r0, [r0, #0xc4] - mul r0, r1, r0 - bx lr - arm_func_end sub_02033054 - - arm_func_start sub_02033064 -sub_02033064: ; 0x02033064 - ldr r2, [r0, #0xbc] - ldr r1, [r0, #0xc8] - ldr r0, [r0, #0xc4] - mla r0, r1, r0, r2 - bx lr - arm_func_end sub_02033064 - - arm_func_start sub_02033078 -sub_02033078: ; 0x02033078 - mov r1, #1 - strb r1, [r0, #0xd4] - ldr r1, [r0, #0xc0] - cmp r1, #0 - movle r1, #0 - strle r1, [r0, #0xbc] - bxle lr - ldr r1, [r0, #0xbc] - add r2, r1, #1 - str r2, [r0, #0xbc] - ldr r1, [r0, #0xc0] - cmp r2, r1 - movge r1, #0 - strge r1, [r0, #0xbc] - bx lr - arm_func_end sub_02033078 - - arm_func_start sub_020330B4 -sub_020330B4: ; 0x020330B4 - mov r1, #1 - strb r1, [r0, #0xd4] - ldr r1, [r0, #0xc0] - cmp r1, #0 - movle r1, #0 - strle r1, [r0, #0xbc] - bxle lr - ldr r1, [r0, #0xbc] - subs r1, r1, #1 - str r1, [r0, #0xbc] - ldrmi r1, [r0, #0xc0] - submi r1, r1, #1 - strmi r1, [r0, #0xbc] - bx lr - arm_func_end sub_020330B4 - - arm_func_start sub_020330EC -sub_020330EC: ; 0x020330EC - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r0, #1 - strb r0, [r4, #0xd4] - movs r5, r1 - ldr r0, [r4, #0x10] - movmi r5, #0 - tst r0, #0x8000 - beq _02033194 - ldr r1, [r4, #0xd0] - cmp r5, r1 - blt _02033168 - ldrb r0, [r4, #0xd5] - cmp r0, #0 - beq _02033140 - ldr r1, [r4, #0xcc] - mov r0, #0 - sub r1, r1, #1 - str r1, [r4, #0xc8] - str r0, [r4, #0xbc] - b _02033188 -_02033140: - sub r5, r1, #1 - ldr r1, [r4, #0xc4] - mov r0, r5 - bl _s32_div_f - str r0, [r4, #0xc8] - ldr r1, [r4, #0xc4] - mov r0, r5 - bl _s32_div_f - str r1, [r4, #0xbc] - b _02033188 -_02033168: - ldr r1, [r4, #0xc4] - mov r0, r5 - bl _s32_div_f - str r0, [r4, #0xc8] - ldr r1, [r4, #0xc4] - mov r0, r5 - bl _s32_div_f - str r1, [r4, #0xbc] -_02033188: - mov r0, r4 - bl sub_020331D4 - ldmia sp!, {r3, r4, r5, pc} -_02033194: - ldr r0, [r4, #0xc0] - cmp r5, r0 - subge r0, r0, #1 - strge r0, [r4, #0xbc] - strlt r5, [r4, #0xbc] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end sub_020330EC - - arm_func_start sub_020331AC -sub_020331AC: ; 0x020331AC - stmdb sp!, {r4, lr} - mov r4, r0 - str r1, [r4, #0xd0] - bl sub_020331D4 - mov r0, r4 - bl sub_02033064 - mov r1, r0 - mov r0, r4 - bl sub_020330EC - ldmia sp!, {r4, pc} - arm_func_end sub_020331AC - - arm_func_start sub_020331D4 -sub_020331D4: ; 0x020331D4 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x10] - tst r0, #0x8000 - ldmeqia sp!, {r4, pc} - ldr r1, [r4, #0xc4] - ldr r0, [r4, #0xd0] - add r0, r0, r1 - sub r0, r0, #1 - bl _s32_div_f - str r0, [r4, #0xcc] - ldrb r0, [r4, #0xd5] - cmp r0, #0 - ldrne r0, [r4, #0xcc] - addne r0, r0, #1 - strne r0, [r4, #0xcc] - ldr r1, [r4, #0xcc] - ldr r0, [r4, #0xc8] - sub r1, r1, #1 - cmp r0, r1 - strge r1, [r4, #0xc8] - ldr r1, [r4, #0xc8] - ldr r0, [r4, #0xc4] - ldr r2, [r4, #0xd0] - mul r0, r1, r0 - sub r1, r2, r0 - str r1, [r4, #0xc0] - ldr r0, [r4, #0xc4] - cmp r1, r0 - strgt r0, [r4, #0xc0] - mov r0, r4 - bl sub_02033414 - cmp r0, #0 - movne r0, #0 - strne r0, [r4, #0xbc] - movne r0, #1 - strne r0, [r4, #0xc0] - ldmneia sp!, {r4, pc} - ldr r1, [r4, #0xc0] - ldr r0, [r4, #0xbc] - sub r1, r1, #1 - cmp r0, r1 - strgt r1, [r4, #0xbc] - ldmia sp!, {r4, pc} - arm_func_end sub_020331D4 - - arm_func_start InventoryMenuNextPage -InventoryMenuNextPage: ; 0x02033284 - ldr r1, [r0, #0xcc] - ldr r2, [r0, #0xc8] - sub r1, r1, #1 - cmp r2, r1 - movge r1, #0 - addlt r1, r2, #1 - ldr ip, _020332A8 ; =sub_020331D4 - str r1, [r0, #0xc8] - bx ip - .align 2, 0 -_020332A8: .word sub_020331D4 - arm_func_end InventoryMenuNextPage - - arm_func_start InventoryMenuPreviousPage -InventoryMenuPreviousPage: ; 0x020332AC - ldr r1, [r0, #0xc8] - ldr ip, _020332C8 ; =sub_020331D4 - cmp r1, #0 - ldrle r1, [r0, #0xcc] - sub r1, r1, #1 - str r1, [r0, #0xc8] - bx ip - .align 2, 0 -_020332C8: .word sub_020331D4 - arm_func_end InventoryMenuPreviousPage - - arm_func_start InventoryMenuNext10Pages -InventoryMenuNext10Pages: ; 0x020332CC - ldr r2, [r0, #0xc8] - ldr r1, [r0, #0xcc] - add r2, r2, #0xa - cmp r2, r1 - subge r2, r1, #1 - ldr ip, _020332EC ; =sub_020331D4 - str r2, [r0, #0xc8] - bx ip - .align 2, 0 -_020332EC: .word sub_020331D4 - arm_func_end InventoryMenuNext10Pages - - arm_func_start InventoryMenuPrevious10Pages -InventoryMenuPrevious10Pages: ; 0x020332F0 - ldr r1, [r0, #0xc8] - ldr ip, _02033308 ; =sub_020331D4 - subs r1, r1, #0xa - movmi r1, #0 - str r1, [r0, #0xc8] - bx ip - .align 2, 0 -_02033308: .word sub_020331D4 - arm_func_end InventoryMenuPrevious10Pages - - arm_func_start sub_0203330C -sub_0203330C: ; 0x0203330C - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r1, #0 - ble _0203332C - mov r0, r1, lsl #8 - ldr r1, [r4, #0xc4] - bl _s32_div_f - b _02033348 -_0203332C: - ldr r0, [r4, #0xb4] - ldmia r4, {r1, r2} - sub r1, r2, r1 - sub r0, r1, r0 - ldr r1, [r4, #0xc4] - mov r0, r0, lsl #8 - bl _s32_div_f -_02033348: - str r0, [r4, #0xb8] - ldmia sp!, {r4, pc} - arm_func_end sub_0203330C - - arm_func_start sub_02033350 -sub_02033350: ; 0x02033350 - ldr r2, [r0, #0xb8] - ldr r3, [r0, #0xb4] - mul r2, r1, r2 - mov r0, r2, asr #7 - add r0, r2, r0, lsr #24 - add r0, r3, r0, asr #8 - bx lr - arm_func_end sub_02033350 - - arm_func_start sub_0203336C -sub_0203336C: ; 0x0203336C - ldr r1, [r0, #0x10] - tst r1, #0x8000 - beq _02033388 - ldr r0, [r0, #0xcc] - cmp r0, #1 - movgt r0, #1 - bxgt lr -_02033388: - mov r0, #0 - bx lr - arm_func_end sub_0203336C - - arm_func_start sub_02033390 -sub_02033390: ; 0x02033390 - ldr r1, [r0, #0x10] - tst r1, #0x8000 - beq _020333AC - ldr r0, [r0, #0xcc] - cmp r0, #1 - movgt r0, #1 - bxgt lr -_020333AC: - mov r0, #0 - bx lr - arm_func_end sub_02033390 - - arm_func_start sub_020333B4 -sub_020333B4: ; 0x020333B4 - ldr r1, [r0, #0x10] - tst r1, #0x8000 - beq _020333D0 - ldr r0, [r0, #0xcc] - cmp r0, #1 - movgt r0, #1 - bxgt lr -_020333D0: - mov r0, #0 - bx lr - arm_func_end sub_020333B4 - - arm_func_start sub_020333D8 -sub_020333D8: ; 0x020333D8 - stmdb sp!, {r3, lr} - ldr r0, [r0, #0x10] - tst r0, #0x10 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, r1 - bl PlaySeVolumeWrapper - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end sub_020333D8 - - arm_func_start sub_020333FC -sub_020333FC: ; 0x020333FC - mvn r1, #0 - str r1, [r0, #0xe8] - str r1, [r0, #0xf0] - str r1, [r0, #0xe4] - str r1, [r0, #0xec] - bx lr - arm_func_end sub_020333FC - - arm_func_start sub_02033414 -sub_02033414: ; 0x02033414 - ldrb r1, [r0, #0xd5] - cmp r1, #0 - beq _02033438 - ldr r1, [r0, #0xc8] - ldr r2, [r0, #0xcc] - add r0, r1, #1 - cmp r2, r0 - moveq r0, #1 - bxeq lr -_02033438: - mov r0, #0 - bx lr - arm_func_end sub_02033414 - - arm_func_start sub_02033440 -sub_02033440: ; 0x02033440 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x104 - mov r5, r0 - tst r5, #0x800 - mov r4, #0 - beq _02033498 - ldrh r2, [r1, #8] - cmp r2, #0 - moveq r0, r4 - beq _02033488 - ldr r3, _020334A4 ; =0x0000C402 - add ip, r1, #0x10 - add r0, sp, #4 - mov r1, #0x100 - str ip, [sp] - bl PreprocessStringFromId - add r0, sp, #4 - bl sub_020265A8 -_02033488: - tst r5, #0x8000 - addne r0, r0, #0x40 - cmp r0, #0 - movgt r4, r0 -_02033498: - mov r0, r4 - add sp, sp, #0x104 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_020334A4: .word 0x0000C402 - arm_func_end sub_02033440 - - arm_func_start sub_020334A8 -sub_020334A8: ; 0x020334A8 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x154 - mov r5, r0 - ldr r0, [r5, #0x10] - mov r4, r1 - tst r0, #0x800 - beq _02033598 - ldrh r2, [r5, #0x1c] - cmp r2, #0 - beq _020334FC - ldr r3, _020335A0 ; =0x0000C402 - add ip, r5, #0x24 - add r0, sp, #0x54 - mov r1, #0x100 - str ip, [sp] - bl PreprocessStringFromId - add r3, sp, #0x54 - mov r0, r4 - mov r1, #8 - mov r2, #0 - bl DrawTextInWindow -_020334FC: - mov r0, #0x17 - str r0, [sp] - ldr r2, [r5, #0xc] - ldr r1, [r5, #8] - mov r0, r4 - sub r1, r2, r1 - sub r3, r1, #4 - mov r1, #2 - mov r2, #0xd - bl sub_02025D50 - mov r0, r5 - bl sub_020328F4 - cmp r0, #0 - beq _02033598 - mov r0, r5 - bl GetCurrentPage - add r1, r0, #1 - mov r0, r5 - str r1, [sp, #0x28] - bl GetTotalNumPages - str r0, [sp, #0x2c] - add r1, sp, #4 - str r1, [sp] - ldr r2, _020335A4 ; =_0209AFC4 - ldr r3, _020335A0 ; =0x0000C402 - add r0, sp, #0x54 - mov r1, #0x100 - bl PreprocessString - add r0, sp, #0x54 - bl sub_020265A8 - mov ip, r0 - ldr r3, [r5, #0xc] - ldr r1, [r5, #8] - mov r0, r4 - sub r1, r3, r1 - mov r2, #0 - sub r1, r1, ip - add r3, sp, #0x54 - bl DrawTextInWindow -_02033598: - add sp, sp, #0x154 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_020335A0: .word 0x0000C402 -_020335A4: .word _0209AFC4 - arm_func_end sub_020334A8 - - arm_func_start sub_020335A8 -sub_020335A8: ; 0x020335A8 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x154 - mov r5, r0 - ldr r2, [r5, #0x10] - mov r4, r1 - tst r2, #0x800 - beq _020336E8 - bl sub_02033414 - cmp r0, #0 - beq _02033610 - ldr r3, _020336F0 ; =0x000008E3 - mov r0, r4 - mov r1, #8 - mov r2, #0 - bl AppendStandardStringToMission - mov r0, #0x17 - str r0, [sp] - ldr r2, [r5, #0xc] - ldr r1, [r5, #8] - mov r0, r4 - sub r1, r2, r1 - sub r3, r1, #4 - mov r1, #2 - mov r2, #0xd - bl sub_02025D50 - b _020336E8 -_02033610: - add r0, r5, #0x24 - str r0, [sp] - ldrh r2, [r5, #0x1c] - ldr r3, _020336F4 ; =0x0000C402 - add r0, sp, #0x54 - mov r1, #0x100 - bl PreprocessStringFromId - add r3, sp, #0x54 - mov r0, r4 - mov r1, #8 - mov r2, #0 - bl DrawTextInWindow - mov r0, #0x17 - str r0, [sp] - ldr r2, [r5, #0xc] - ldr r1, [r5, #8] - mov r0, r4 - sub r1, r2, r1 - sub r3, r1, #4 - mov r1, #2 - mov r2, #0xd - bl sub_02025D50 - mov r0, r5 - bl sub_0203336C - cmp r0, #0 - beq _020336E8 - ldr r0, [r5, #0xc8] - ldr r2, _020336F8 ; =_0209AFC4 - add r0, r0, #1 - str r0, [sp, #0x28] - ldrb r0, [r5, #0xd5] - ldr r3, _020336F4 ; =0x0000C402 - add ip, sp, #4 - cmp r0, #0 - movne r1, #1 - ldr r0, [r5, #0xcc] - moveq r1, #0 - sub r0, r0, r1 - str r0, [sp, #0x2c] - add r0, sp, #0x54 - mov r1, #0x100 - str ip, [sp] - bl PreprocessString - add r0, sp, #0x54 - bl sub_020265A8 - mov r2, r0 - ldr r1, [r5, #0xc] - ldr r0, [r5, #8] - add r3, sp, #0x54 - sub r1, r1, r0 - sub r1, r1, r2 - mov r0, r4 - mov r2, #0 - bl DrawTextInWindow -_020336E8: - add sp, sp, #0x154 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -#ifdef JAPAN -_020336F0: .word 0x00001D3B -#else -_020336F0: .word 0x000008E3 -#endif -_020336F4: .word 0x0000C402 -_020336F8: .word _0209AFC4 - arm_func_end sub_020335A8 - - arm_func_start sub_020336FC -sub_020336FC: ; 0x020336FC - tst r0, #0x1000 - mov r1, #0 - beq _02033750 - mov r2, #4 - tst r0, #0x2000 - addne r2, r2, #0x12 - tst r0, #0x4000 - addne r2, r2, #0x14 - tst r0, #0x20000 - addne r2, r2, #0x1f - bne _02033738 - tst r0, #0x8000 - addne r2, r2, #0x3e - tst r0, #8 - addne r2, r2, #0x1f -_02033738: - tst r0, #4 - addne r2, r2, #0x12 - tst r0, #2 - addne r2, r2, #0x12 - cmp r2, #0 - movgt r1, r2 -_02033750: - mov r0, r1 - bx lr - arm_func_end sub_020336FC - - arm_func_start sub_02033758 -sub_02033758: ; 0x02033758 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x10 - mov sb, r0 - ldrb r0, [sb, #0xf4] - mov r8, r1 - ldr r1, [sb, #0x10] - cmp r0, #0 - ldrne r0, _02033BBC ; =0x00001002 - mov r7, r2 - moveq r0, #2 - mov r0, r0, lsl #0x10 - mov r4, #0 - tst r1, #0x1000 - mov r5, r0, lsr #0x10 - beq _02033B98 - ldrh r0, [r7] - tst r0, r5 - beq _02033B98 - ldmib sb, {r0, r1} - sub r0, r0, #0xf - str r0, [sp] - ldr r0, [sb, #4] - add r6, r1, #4 - sub r0, r0, #2 - str r0, [sp, #4] - ldr r0, [sb, #0x10] - tst r0, #0x2000 - beq _0203380C - mov r0, #0x12 - str r6, [sp, #8] - bl sub_02026594 - add r0, r6, r0 - sub r3, r0, #1 - add r2, sp, #0 - mov r0, r7 - mov r1, r5 - str r3, [sp, #0xc] - bl sub_02006C8C - cmp r0, #0 - ldrne r0, [r8] - movne r4, #1 - orrne r0, r0, #0x1000 - orrne r0, r0, #0x1000000 - strne r0, [r8] - add r6, r6, #0x12 -_0203380C: - ldr r0, [sb, #0x10] - tst r0, #0x4000 - beq _0203385C - mov r0, #0x13 - str r6, [sp, #8] - bl sub_02026594 - add r0, r6, r0 - sub r3, r0, #1 - add r2, sp, #0 - mov r0, r7 - mov r1, r5 - str r3, [sp, #0xc] - bl sub_02006C8C - cmp r0, #0 - ldrne r0, [r8] - movne r4, #1 - orrne r0, r0, #0x2000 - orrne r0, r0, #0x2000000 - strne r0, [r8] - add r6, r6, #0x14 -_0203385C: - ldr r0, [sb, #0x10] - tst r0, #0x8000 - beq _020339C8 - tst r0, #0x20000 - bne _020339C8 - mov r0, sb - bl sub_020328F4 - cmp r0, #0 - beq _020339C4 - add r0, r6, #0xb - str r6, [sp, #8] - str r0, [sp, #0xc] - ldr r0, [sb, #0x10] - tst r0, #0x10000 - beq _020338D4 - add r2, sp, #0 - mov r0, r7 - mov r1, r5 - bl sub_02006C8C - cmp r0, #0 - beq _020338D4 - mov r0, sb - bl sub_02032864 - mov r0, sb - mov r1, #4 - bl PlayWindowInputSound - ldr r0, [r8] - mov r4, #1 - orr r0, r0, #0x400000 - str r0, [r8] -_020338D4: - add r1, r6, #0xe - add r0, r6, #0x19 - str r1, [sp, #8] - str r0, [sp, #0xc] - ldr r0, [sb, #0x10] - tst r0, #0x10000 - beq _0203392C - add r2, sp, #0 - mov r0, r7 - mov r1, r5 - bl sub_02006C8C - cmp r0, #0 - beq _0203392C - mov r0, sb - bl sub_0203282C - mov r0, sb - mov r1, #4 - bl PlayWindowInputSound - ldr r0, [r8] - mov r4, #1 - orr r0, r0, #0x800000 - str r0, [r8] -_0203392C: - add ip, r6, #0x1f - add r3, r6, #0x2a - add r2, sp, #0 - mov r0, r7 - mov r1, r5 - str ip, [sp, #8] - str r3, [sp, #0xc] - bl sub_02006C8C - cmp r0, #0 - beq _02033978 - mov r0, sb - bl sub_0203280C - mov r0, sb - mov r1, #4 - bl PlayWindowInputSound - ldr r0, [r8] - mov r4, #1 - orr r0, r0, #0x100000 - str r0, [r8] -_02033978: - add ip, r6, #0x2d - add r3, r6, #0x38 - add r2, sp, #0 - mov r0, r7 - mov r1, r5 - str ip, [sp, #8] - str r3, [sp, #0xc] - bl sub_02006C8C - cmp r0, #0 - beq _020339C4 - mov r0, sb - bl sub_020327E4 - mov r0, sb - mov r1, #4 - bl PlayWindowInputSound - ldr r0, [r8] - mov r4, #1 - orr r0, r0, #0x200000 - str r0, [r8] -_020339C4: - add r6, r6, #0x3e -_020339C8: - ldr r0, [sb, #0x10] - tst r0, #8 - bne _020339EC - tst r0, #0x20000 - beq _02033AE0 - mov r0, sb - bl sub_020328F4 - cmp r0, #0 - beq _02033AE0 -_020339EC: - add r0, r6, #0xb - str r6, [sp, #8] - str r0, [sp, #0xc] - ldr r0, [sb, #0x10] - tst r0, #0x20000000 - bne _02033A64 - add r2, sp, #0 - mov r0, r7 - mov r1, r5 - bl sub_02006C8C - cmp r0, #0 - beq _02033A64 - ldr r0, [r8] - orr r0, r0, #0x40000 - str r0, [r8] - ldr r0, [sb, #0x10] - tst r0, #0x20000 - mov r0, sb - beq _02033A58 - bl sub_020327E4 - mov r0, sb - mov r1, #4 - bl PlayWindowInputSound - ldr r0, [r8] - orr r0, r0, #0x4000 - str r0, [r8] - b _02033A60 -_02033A58: - mov r1, #0 - bl PlayWindowInputSound -_02033A60: - mov r4, #1 -_02033A64: - add r1, r6, #0xe - add r0, r6, #0x19 - str r1, [sp, #8] - str r0, [sp, #0xc] - ldr r0, [sb, #0x10] - tst r0, #0x40000000 - bne _02033AE0 - add r2, sp, #0 - mov r0, r7 - mov r1, r5 - bl sub_02006C8C - cmp r0, #0 - beq _02033AE0 - ldr r0, [r8] - orr r0, r0, #0x80000 - str r0, [r8] - ldr r0, [sb, #0x10] - tst r0, #0x20000 - mov r0, sb - beq _02033AD4 - bl sub_0203280C - mov r0, sb - mov r1, #4 - bl PlayWindowInputSound - ldr r0, [r8] - orr r0, r0, #0x8000 - str r0, [r8] - b _02033ADC -_02033AD4: - mov r1, #0 - bl PlayWindowInputSound -_02033ADC: - mov r4, #1 -_02033AE0: - ldr r1, [sb, #0xc] - ldr r0, [sb, #0x10] - add r6, r1, #4 - tst r0, #2 - beq _02033B2C - sub r6, r6, #0x12 - add r3, r6, #0xb - add r2, sp, #0 - mov r0, r7 - mov r1, r5 - str r6, [sp, #8] - str r3, [sp, #0xc] - bl sub_02006C8C - cmp r0, #0 - ldrne r0, [r8] - movne r4, #1 - orrne r0, r0, #2 - orrne r0, r0, #0x20000 - strne r0, [r8] -_02033B2C: - ldr r0, [sb, #0x10] - tst r0, #4 - beq _02033B98 - sub ip, r6, #0x12 - sub r3, r6, #7 - add r2, sp, #0 - mov r0, r7 - mov r1, r5 - str ip, [sp, #8] - str r3, [sp, #0xc] - bl sub_02006C8C - cmp r0, #0 - beq _02033B98 - ldr r0, [sb, #0x10] - tst r0, #0x18000000 - ldreq r0, [r8] - orreq r0, r0, #1 - orreq r0, r0, #0x10000 - streq r0, [r8] - beq _02033B94 - ldr r1, [r8] - mov r0, sb - orr r2, r1, #0x10000 - mov r1, #2 - str r2, [r8] - bl PlayWindowInputSound -_02033B94: - mov r4, #1 -_02033B98: - ldr r1, [r8] - cmp r1, #0 - beq _02033BB0 - mov r0, sb - bl sub_020320C8 - mov r4, #1 -_02033BB0: - mov r0, r4 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02033BBC: .word 0x00001002 - arm_func_end sub_02033758 - - arm_func_start sub_02033BC0 -sub_02033BC0: ; 0x02033BC0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, r0 - ldr r0, [r8, #0x10] - mov r7, r1 - tst r0, #0x1000 - ldr r4, [r8, #0xe0] - beq _02033ECC - ldmia r8, {r1, r2} - mov r0, #0x17 - str r0, [sp] - sub r0, r2, r1 - sub r5, r0, #0x10 - ldr r2, [r8, #0xc] - ldr r1, [r8, #8] - mov r0, r7 - sub r1, r2, r1 - sub r3, r1, #4 - mov r2, r5 - mov r1, #2 - mov r6, #4 - bl sub_02025D50 - ldr r0, [r8, #0x10] - tst r0, #0x2000 - beq _02033C44 - tst r4, #0x1000000 - ldrne r3, _02033ED4 ; =_0209AFDC - mov r0, r7 - ldreq r3, _02033ED8 ; =_0209AFE4 - add r2, r5, #3 - mov r1, #4 - bl DrawTextInWindow - add r6, r6, #0x12 -_02033C44: - ldr r0, [r8, #0x10] - tst r0, #0x4000 - beq _02033C70 - tst r4, #0x2000000 - ldrne r3, _02033EDC ; =_0209AFEC - mov r0, r7 - ldreq r3, _02033EE0 ; =_0209AFF4 - mov r1, r6 - add r2, r5, #3 - bl DrawTextInWindow - add r6, r6, #0x14 -_02033C70: - ldr r0, [r8, #0x10] - tst r0, #0x8000 - beq _02033D74 - tst r0, #0x20000 - bne _02033D74 - mov r0, r8 - bl sub_020328F4 - cmp r0, #0 - beq _02033D70 - ldr r0, [r8, #0x10] - tst r0, #0x10000 - beq _02033D08 - mov r0, r8 - bl sub_02032918 - cmp r0, #0 - bne _02033CB8 - tst r4, #0x400000 - beq _02033CD4 -_02033CB8: - tst r4, #0x400000 - ldrne r3, _02033EE4 ; =_0209AFFC - mov r0, r7 - ldreq r3, _02033EE8 ; =_0209B004 - mov r1, r6 - add r2, r5, #3 - bl DrawTextInWindow -_02033CD4: - mov r0, r8 - bl sub_0203293C - cmp r0, #0 - bne _02033CEC - tst r4, #0x800000 - beq _02033D08 -_02033CEC: - tst r4, #0x800000 - ldrne r3, _02033EEC ; =_0209B00C - mov r0, r7 - ldreq r3, _02033EF0 ; =_0209B014 - add r1, r6, #0xe - add r2, r5, #3 - bl DrawTextInWindow -_02033D08: - mov r0, r8 - bl sub_02032918 - cmp r0, #0 - bne _02033D20 - tst r4, #0x100000 - beq _02033D3C -_02033D20: - tst r4, #0x100000 - ldrne r3, _02033EF4 ; =_0209B01C - mov r0, r7 - ldreq r3, _02033EF8 ; =_0209B024 - add r1, r6, #0x1f - add r2, r5, #3 - bl DrawTextInWindow -_02033D3C: - mov r0, r8 - bl sub_0203293C - cmp r0, #0 - bne _02033D54 - tst r4, #0x200000 - beq _02033D70 -_02033D54: - tst r4, #0x200000 - ldrne r3, _02033EFC ; =_0209B02C - mov r0, r7 - ldreq r3, _02033F00 ; =_0209B034 - add r1, r6, #0x2d - add r2, r5, #3 - bl DrawTextInWindow -_02033D70: - add r6, r6, #0x3e -_02033D74: - ldr r1, [r8, #0x10] - ldr r0, _02033F04 ; =0x00020008 - tst r1, r0 - beq _02033E40 - tst r4, #0x40000 - beq _02033DA4 - ldr r3, _02033F08 ; =_0209B03C - mov r0, r7 - mov r1, r6 - add r2, r5, #3 - bl DrawTextInWindow - b _02033DE0 -_02033DA4: - tst r1, #0x20000000 - bne _02033DE0 - tst r1, #8 - bne _02033DCC - tst r1, #0x20000 - beq _02033DE0 - mov r0, r8 - bl sub_02032918 - cmp r0, #0 - beq _02033DE0 -_02033DCC: - ldr r3, _02033F0C ; =_0209B044 - mov r0, r7 - mov r1, r6 - add r2, r5, #3 - bl DrawTextInWindow -_02033DE0: - tst r4, #0x80000 - beq _02033E00 - ldr r3, _02033F10 ; =_0209B04C - mov r0, r7 - add r1, r6, #0xe - add r2, r5, #3 - bl DrawTextInWindow - b _02033E40 -_02033E00: - ldr r0, [r8, #0x10] - tst r0, #0x40000000 - bne _02033E40 - tst r0, #8 - bne _02033E2C - tst r0, #0x20000 - beq _02033E40 - mov r0, r8 - bl sub_0203293C - cmp r0, #0 - beq _02033E40 -_02033E2C: - ldr r3, _02033F14 ; =_0209B054 - mov r0, r7 - add r1, r6, #0xe - add r2, r5, #3 - bl DrawTextInWindow -_02033E40: - ldr r2, [r8, #0xc] - ldr r1, [r8, #8] - ldr r0, [r8, #0x10] - sub r1, r2, r1 - tst r0, #2 - add r6, r1, #4 - beq _02033E7C - tst r4, #0x20000 - ldrne r3, _02033F18 ; =_0209B05C - sub r6, r6, #0x12 - ldreq r3, _02033F1C ; =_0209B064 - mov r0, r7 - mov r1, r6 - add r2, r5, #3 - bl DrawTextInWindow -_02033E7C: - ldr r0, [r8, #0x10] - tst r0, #4 - beq _02033ECC - tst r0, #0x18000000 - beq _02033EB0 - tst r4, #0x10000 - ldrne r3, _02033F20 ; =_0209B06C - mov r0, r7 - ldreq r3, _02033F24 ; =_0209B074 - sub r1, r6, #0x12 - add r2, r5, #3 - bl DrawTextInWindow - b _02033ECC -_02033EB0: - tst r4, #0x10000 - ldrne r3, _02033F28 ; =_0209B07C - mov r0, r7 - ldreq r3, _02033F2C ; =_0209B084 - sub r1, r6, #0x12 - add r2, r5, #3 - bl DrawTextInWindow -_02033ECC: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02033ED4: .word _0209AFDC -_02033ED8: .word _0209AFE4 -_02033EDC: .word _0209AFEC -_02033EE0: .word _0209AFF4 -_02033EE4: .word _0209AFFC -_02033EE8: .word _0209B004 -_02033EEC: .word _0209B00C -_02033EF0: .word _0209B014 -_02033EF4: .word _0209B01C -_02033EF8: .word _0209B024 -_02033EFC: .word _0209B02C -_02033F00: .word _0209B034 -_02033F04: .word 0x00020008 -_02033F08: .word _0209B03C -_02033F0C: .word _0209B044 -_02033F10: .word _0209B04C -_02033F14: .word _0209B054 -_02033F18: .word _0209B05C -_02033F1C: .word _0209B064 -_02033F20: .word _0209B06C -_02033F24: .word _0209B074 -_02033F28: .word _0209B07C -_02033F2C: .word _0209B084 - arm_func_end sub_02033BC0 - - arm_func_start sub_02033F30 -sub_02033F30: ; 0x02033F30 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x10 - mov r8, r0 - ldr r0, [r8, #0x10] - mov r7, r1 - mov r6, r2 - tst r0, #0x1000 - mov r4, #0 - beq _0203433C - ldrh r0, [r6] - tst r0, #2 - beq _0203433C - ldmib r8, {r0, r1} - sub r0, r0, #0xf - str r0, [sp] - ldr r0, [r8, #4] - add r5, r1, #4 - sub r0, r0, #2 - str r0, [sp, #4] - ldr r0, [r8, #0x10] - tst r0, #0x2000 - beq _02033FC8 - mov r0, #0x12 - str r5, [sp, #8] - bl sub_02026594 - add r0, r5, r0 - sub r3, r0, #1 - add r2, sp, #0 - mov r0, r6 - mov r1, #2 - str r3, [sp, #0xc] - bl sub_02006C8C - cmp r0, #0 - ldrne r0, [r7] - movne r4, #1 - orrne r0, r0, #0x1000 - orrne r0, r0, #0x1000000 - strne r0, [r7] -_02033FC8: - ldr r0, [r8, #0x10] - tst r0, #0x4000 - beq _0203401C - add r1, r5, #0x12 - mov r0, #0x13 - str r1, [sp, #8] - bl sub_02026594 - add r1, r5, #0x12 - add r0, r1, r0 - sub r3, r0, #1 - add r2, sp, #0 - mov r0, r6 - mov r1, #2 - str r3, [sp, #0xc] - bl sub_02006C8C - cmp r0, #0 - ldrne r0, [r7] - movne r4, #1 - orrne r0, r0, #0x2000 - orrne r0, r0, #0x2000000 - strne r0, [r7] -_0203401C: - ldr r0, [r8, #0x10] - add r5, r5, #0x26 - tst r0, #0x8000 - beq _0203418C - tst r0, #0x20000 - bne _0203418C - mov r0, r8 - bl sub_0203336C - cmp r0, #0 - beq _02034188 - add r0, r5, #0xb - str r5, [sp, #8] - str r0, [sp, #0xc] - ldr r0, [r8, #0x10] - tst r0, #0x10000 - beq _02034098 - add r2, sp, #0 - mov r0, r6 - mov r1, #2 - bl sub_02006C8C - cmp r0, #0 - beq _02034098 - mov r0, r8 - bl InventoryMenuPrevious10Pages - mov r0, r8 - mov r1, #4 - bl sub_020333D8 - ldr r0, [r7] - mov r4, #1 - orr r0, r0, #0x400000 - str r0, [r7] -_02034098: - add r1, r5, #0xe - add r0, r5, #0x19 - str r1, [sp, #8] - str r0, [sp, #0xc] - ldr r0, [r8, #0x10] - tst r0, #0x10000 - beq _020340F0 - add r2, sp, #0 - mov r0, r6 - mov r1, #2 - bl sub_02006C8C - cmp r0, #0 - beq _020340F0 - mov r0, r8 - bl InventoryMenuNext10Pages - mov r0, r8 - mov r1, #4 - bl sub_020333D8 - ldr r0, [r7] - mov r4, #1 - orr r0, r0, #0x800000 - str r0, [r7] -_020340F0: - add ip, r5, #0x1f - add r3, r5, #0x2a - add r2, sp, #0 - mov r0, r6 - mov r1, #2 - str ip, [sp, #8] - str r3, [sp, #0xc] - bl sub_02006C8C - cmp r0, #0 - beq _0203413C - mov r0, r8 - bl InventoryMenuPreviousPage - mov r0, r8 - mov r1, #4 - bl sub_020333D8 - ldr r0, [r7] - mov r4, #1 - orr r0, r0, #0x100000 - str r0, [r7] -_0203413C: - add ip, r5, #0x2d - add r3, r5, #0x38 - add r2, sp, #0 - mov r0, r6 - mov r1, #2 - str ip, [sp, #8] - str r3, [sp, #0xc] - bl sub_02006C8C - cmp r0, #0 - beq _02034188 - mov r0, r8 - bl InventoryMenuNextPage - mov r0, r8 - mov r1, #4 - bl sub_020333D8 - ldr r0, [r7] - mov r4, #1 - orr r0, r0, #0x200000 - str r0, [r7] -_02034188: - add r5, r5, #0x3e -_0203418C: - ldr r1, [r8, #0x10] - ands r0, r1, #8 - beq _020342AC - cmp r0, #0 - bne _020341B8 - tst r1, #0x20000 - beq _020342AC - mov r0, r8 - bl sub_0203336C - cmp r0, #0 - beq _020342AC -_020341B8: - add r0, r5, #0xb - str r5, [sp, #8] - str r0, [sp, #0xc] - ldr r0, [r8, #0x10] - tst r0, #0x40000000 - bne _02034230 - add r2, sp, #0 - mov r0, r6 - mov r1, #2 - bl sub_02006C8C - cmp r0, #0 - beq _02034230 - ldr r0, [r7] - orr r0, r0, #0x40000 - str r0, [r7] - ldr r0, [r8, #0x10] - tst r0, #0x20000 - mov r0, r8 - beq _02034224 - bl InventoryMenuPreviousPage - mov r0, r8 - mov r1, #4 - bl sub_020333D8 - ldr r0, [r7] - orr r0, r0, #0x4000 - str r0, [r7] - b _0203422C -_02034224: - mov r1, #0 - bl sub_020333D8 -_0203422C: - mov r4, #1 -_02034230: - add r1, r5, #0xe - add r0, r5, #0x19 - str r1, [sp, #8] - str r0, [sp, #0xc] - ldr r0, [r8, #0x10] - tst r0, #0x20000000 - bne _020342AC - add r2, sp, #0 - mov r0, r6 - mov r1, #2 - bl sub_02006C8C - cmp r0, #0 - beq _020342AC - ldr r0, [r7] - orr r0, r0, #0x80000 - str r0, [r7] - ldr r0, [r8, #0x10] - tst r0, #0x20000 - mov r0, r8 - beq _020342A0 - bl InventoryMenuNextPage - mov r0, r8 - mov r1, #4 - bl sub_020333D8 - ldr r0, [r7] - orr r0, r0, #0x8000 - str r0, [r7] - b _020342A8 -_020342A0: - mov r1, #0 - bl sub_020333D8 -_020342A8: - mov r4, #1 -_020342AC: - ldr r1, [r8, #0xc] - ldr r0, [r8, #0x10] - add r5, r1, #4 - tst r0, #2 - beq _020342F8 - sub r5, r5, #0x12 - add r3, r5, #0xb - add r2, sp, #0 - mov r0, r6 - mov r1, #2 - str r5, [sp, #8] - str r3, [sp, #0xc] - bl sub_02006C8C - cmp r0, #0 - ldrne r0, [r7] - movne r4, #1 - orrne r0, r0, #2 - orrne r0, r0, #0x20000 - strne r0, [r7] -_020342F8: - ldr r0, [r8, #0x10] - tst r0, #4 - beq _0203433C - sub ip, r5, #0x12 - sub r3, r5, #7 - add r2, sp, #0 - mov r0, r6 - mov r1, #2 - str ip, [sp, #8] - str r3, [sp, #0xc] - bl sub_02006C8C - cmp r0, #0 - ldrne r0, [r7] - movne r4, #1 - orrne r0, r0, #1 - orrne r0, r0, #0x10000 - strne r0, [r7] -_0203433C: - ldr r1, [r7] - cmp r1, #0 - beq _02034354 - mov r0, r8 - bl sub_02032DE8 - mov r4, #1 -_02034354: - mov r0, r4 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end sub_02033F30 - - arm_func_start sub_02034360 -sub_02034360: ; 0x02034360 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r8, r0 - ldr r0, [r8, #0x10] - mov r7, r1 - tst r0, #0x1000 - ldr r4, [r8, #0xe0] - beq _02034660 - ldmia r8, {r1, r2} - mov r0, #0x17 - str r0, [sp] - sub r0, r2, r1 - sub r5, r0, #0x10 - ldr r2, [r8, #0xc] - ldr r1, [r8, #8] - mov r0, r7 - sub r1, r2, r1 - sub r3, r1, #4 - mov r2, r5 - mov r1, #2 - mov r6, #4 - bl sub_02025D50 - ldr r0, [r8, #0x10] - tst r0, #0x2000 - beq _020343E0 - tst r4, #0x1000000 - ldrne r3, _02034668 ; =_0209AFDC - mov r0, r7 - ldreq r3, _0203466C ; =_0209AFE4 - add r2, r5, #3 - mov r1, #4 - bl DrawTextInWindow -_020343E0: - ldr r0, [r8, #0x10] - tst r0, #0x4000 - beq _02034408 - tst r4, #0x2000000 - ldrne r3, _02034670 ; =_0209AFEC - mov r0, r7 - ldreq r3, _02034674 ; =_0209AFF4 - add r2, r5, #3 - mov r1, #0x16 - bl DrawTextInWindow -_02034408: - ldr r0, [r8, #0x10] - add r6, r6, #0x26 - tst r0, #0x8000 - beq _02034510 - tst r0, #0x20000 - bne _02034510 - mov r0, r8 - bl sub_0203336C - cmp r0, #0 - beq _0203450C - ldr r0, [r8, #0x10] - tst r0, #0x10000 - beq _020344A4 - mov r0, r8 - bl sub_02033390 - cmp r0, #0 - bne _02034454 - tst r4, #0x400000 - beq _02034470 -_02034454: - tst r4, #0x400000 - ldrne r3, _02034678 ; =_0209AFFC - mov r0, r7 - ldreq r3, _0203467C ; =_0209B004 - mov r1, r6 - add r2, r5, #3 - bl DrawTextInWindow -_02034470: - mov r0, r8 - bl sub_020333B4 - cmp r0, #0 - bne _02034488 - tst r4, #0x800000 - beq _020344A4 -_02034488: - tst r4, #0x800000 - ldrne r3, _02034680 ; =_0209B00C - mov r0, r7 - ldreq r3, _02034684 ; =_0209B014 - add r1, r6, #0xe - add r2, r5, #3 - bl DrawTextInWindow -_020344A4: - mov r0, r8 - bl sub_02033390 - cmp r0, #0 - bne _020344BC - tst r4, #0x100000 - beq _020344D8 -_020344BC: - tst r4, #0x100000 - ldrne r3, _02034688 ; =_0209B01C - mov r0, r7 - ldreq r3, _0203468C ; =_0209B024 - add r1, r6, #0x1f - add r2, r5, #3 - bl DrawTextInWindow -_020344D8: - mov r0, r8 - bl sub_020333B4 - cmp r0, #0 - bne _020344F0 - tst r4, #0x200000 - beq _0203450C -_020344F0: - tst r4, #0x200000 - ldrne r3, _02034690 ; =_0209B02C - mov r0, r7 - ldreq r3, _02034694 ; =_0209B034 - add r1, r6, #0x2d - add r2, r5, #3 - bl DrawTextInWindow -_0203450C: - add r6, r6, #0x3e -_02034510: - ldr r1, [r8, #0x10] - ldr r0, _02034698 ; =0x00020008 - tst r1, r0 - beq _020345DC - tst r4, #0x40000 - beq _02034540 - ldr r3, _0203469C ; =_0209B03C - mov r0, r7 - mov r1, r6 - add r2, r5, #3 - bl DrawTextInWindow - b _0203457C -_02034540: - tst r1, #0x20000000 - bne _0203457C - tst r1, #8 - bne _02034568 - tst r1, #0x20000 - beq _0203457C - mov r0, r8 - bl sub_02033390 - cmp r0, #0 - beq _0203457C -_02034568: - ldr r3, _020346A0 ; =_0209B044 - mov r0, r7 - mov r1, r6 - add r2, r5, #3 - bl DrawTextInWindow -_0203457C: - tst r4, #0x80000 - beq _0203459C - ldr r3, _020346A4 ; =_0209B04C - mov r0, r7 - add r1, r6, #0xe - add r2, r5, #3 - bl DrawTextInWindow - b _020345DC -_0203459C: - ldr r0, [r8, #0x10] - tst r0, #0x40000000 - bne _020345DC - tst r0, #8 - bne _020345C8 - tst r0, #0x20000 - beq _020345DC - mov r0, r8 - bl sub_020333B4 - cmp r0, #0 - beq _020345DC -_020345C8: - ldr r3, _020346A8 ; =_0209B054 - mov r0, r7 - add r1, r6, #0xe - add r2, r5, #3 - bl DrawTextInWindow -_020345DC: - ldr r2, [r8, #0xc] - ldr r1, [r8, #8] - ldr r0, [r8, #0x10] - sub r1, r2, r1 - tst r0, #2 - add r6, r1, #4 - beq _02034618 - tst r4, #0x20000 - ldrne r3, _020346AC ; =_0209B05C - sub r6, r6, #0x12 - ldreq r3, _020346B0 ; =_0209B064 - mov r0, r7 - mov r1, r6 - add r2, r5, #3 - bl DrawTextInWindow -_02034618: - ldr r0, [r8, #0x10] - tst r0, #4 - beq _02034660 - tst r0, #0x18000000 - beq _02034644 - ldr r3, _020346B4 ; =_0209B074 - mov r0, r7 - sub r1, r6, #0x12 - add r2, r5, #3 - bl DrawTextInWindow - b _02034660 -_02034644: - tst r4, #0x10000 - ldrne r3, _020346B8 ; =_0209B07C - mov r0, r7 - ldreq r3, _020346BC ; =_0209B084 - sub r1, r6, #0x12 - add r2, r5, #3 - bl DrawTextInWindow -_02034660: - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02034668: .word _0209AFDC -_0203466C: .word _0209AFE4 -_02034670: .word _0209AFEC -_02034674: .word _0209AFF4 -_02034678: .word _0209AFFC -_0203467C: .word _0209B004 -_02034680: .word _0209B00C -_02034684: .word _0209B014 -_02034688: .word _0209B01C -_0203468C: .word _0209B024 -_02034690: .word _0209B02C -_02034694: .word _0209B034 -_02034698: .word 0x00020008 -_0203469C: .word _0209B03C -_020346A0: .word _0209B044 -_020346A4: .word _0209B04C -_020346A8: .word _0209B054 -_020346AC: .word _0209B05C -_020346B0: .word _0209B064 -_020346B4: .word _0209B074 -_020346B8: .word _0209B07C -_020346BC: .word _0209B084 - arm_func_end sub_02034360 - - arm_func_start sub_020346C0 -sub_020346C0: ; 0x020346C0 - stmdb sp!, {r4, lr} - mov r0, #0xdc - mov r1, #1 - bl MemAlloc - mov r4, r0 - ldr ip, _02034708 ; =MENU_CONTROL_PTR - ldr r0, _0203470C ; =NULL_OVERLAY_LOAD_ENTRY - str r4, [ip] - add lr, r4, #0xc4 - ldmia r0, {r0, r1, r2, r3} - stmia lr, {r0, r1, r2, r3} - mov r1, #0 - str r1, [r4, #0xd4] - ldr r0, [ip] - strb r1, [r0, #0xd8] - bl sub_02034710 - bl sub_020469BC - ldmia sp!, {r4, pc} - .align 2, 0 -_02034708: .word MENU_CONTROL_PTR -_0203470C: .word NULL_OVERLAY_LOAD_ENTRY - arm_func_end sub_020346C0 - - arm_func_start sub_02034710 -sub_02034710: ; 0x02034710 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - ldr r1, _02034798 ; =MENU_CONTROL_PTR - ldr r0, _0203479C ; =NULL_OVERLAY_LOAD_ENTRY - ldr r1, [r1] - add r4, r1, #0xc4 - mov r1, r4 - bl OverlayLoadEntriesEqual - cmp r0, #0 - bne _0203473C - bl FreeActiveMenu -_0203473C: - ldr r0, _0203479C ; =NULL_OVERLAY_LOAD_ENTRY - add r7, sp, #0 - ldmia r0, {r0, r1, r2, r3} - stmia r7, {r0, r1, r2, r3} - ldr ip, _02034798 ; =MENU_CONTROL_PTR - ldmia r7, {r0, r1, r2, r3} - ldr r5, [ip] - mov r6, #0 - stmia r5, {r0, r1, r2, r3} - strb r6, [r5, #0x10] - ldr r5, [ip] - ldmia r7, {r0, r1, r2, r3} - add lr, r5, #0x14 - stmia lr, {r0, r1, r2, r3} - str r6, [r5, #0x24] - ldr r0, [ip] - strb r6, [r0, #0xc0] - ldmia r7, {r0, r1, r2, r3} - stmia r4, {r0, r1, r2, r3} - ldr r0, [ip] - str r6, [r0, #0xd4] - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02034798: .word MENU_CONTROL_PTR -_0203479C: .word NULL_OVERLAY_LOAD_ENTRY - arm_func_end sub_02034710 - - arm_func_start OverlayLoadEntriesEqual -OverlayLoadEntriesEqual: ; 0x020347A0 - cmp r0, #0 - ldreq r0, _020347EC ; =NULL_OVERLAY_LOAD_ENTRY - cmp r1, #0 - ldreq r1, _020347EC ; =NULL_OVERLAY_LOAD_ENTRY - 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 r2, [r0, #0xc] - ldreq r0, [r1, #0xc] - cmpeq r2, r0 - moveq r0, #1 - movne r0, #0 - bx lr - .align 2, 0 -_020347EC: .word NULL_OVERLAY_LOAD_ENTRY - arm_func_end OverlayLoadEntriesEqual - - arm_func_start FreeActiveMenu -FreeActiveMenu: ; 0x020347F0 - stmdb sp!, {r4, lr} - ldr r0, _0203483C ; =MENU_CONTROL_PTR - ldr r4, [r0] - ldr r0, [r4, #0xcc] - cmp r0, #0 - beq _0203480C - blx r0 -_0203480C: - ldr r0, _0203483C ; =MENU_CONTROL_PTR - ldr r0, [r0] - ldrb r0, [r0, #0xd8] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0xc4] - bl UnloadOverlay - ldr r0, _0203483C ; =MENU_CONTROL_PTR - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #0xd8] - ldmia sp!, {r4, pc} - .align 2, 0 -_0203483C: .word MENU_CONTROL_PTR - arm_func_end FreeActiveMenu - - arm_func_start sub_02034840 -sub_02034840: ; 0x02034840 - stmdb sp!, {r4, lr} - ldr r1, _020348DC ; =MENU_CONTROL_PTR - mov r4, r0 - ldr r2, [r1] - ldrb r1, [r2, #0x10] - cmp r1, #0 - beq _02034894 - cmp r4, #0 - beq _0203487C - add r1, r2, #0x14 - bl OverlayLoadEntriesEqual - cmp r0, #0 - beq _02034894 - mov r0, #1 - ldmia sp!, {r4, pc} -_0203487C: - ldr r0, _020348E0 ; =NULL_OVERLAY_LOAD_ENTRY - add r1, r2, #0x14 - bl OverlayLoadEntriesEqual - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r4, pc} -_02034894: - cmp r4, #0 - beq _020348B4 - ldr r1, _020348DC ; =MENU_CONTROL_PTR - mov r0, r4 - ldr r1, [r1] - add r1, r1, #0xc4 - bl OverlayLoadEntriesEqual - ldmia sp!, {r4, pc} -_020348B4: - ldr r1, _020348DC ; =MENU_CONTROL_PTR - ldr r0, _020348E0 ; =NULL_OVERLAY_LOAD_ENTRY - ldr r1, [r1] - add r1, r1, #0x14 - bl OverlayLoadEntriesEqual - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r4, pc} - .align 2, 0 -_020348DC: .word MENU_CONTROL_PTR -_020348E0: .word NULL_OVERLAY_LOAD_ENTRY - arm_func_end sub_02034840 diff --git a/asm/main_02032960.s b/asm/main_02032960.s new file mode 100644 index 00000000..4bc77808 --- /dev/null +++ b/asm/main_02032960.s @@ -0,0 +1,715 @@ + .include "asm/macros.inc" + .include "main_02032960.inc" + + .text + + arm_func_start PlayWindowInputSound +PlayWindowInputSound: ; 0x02032960 + stmdb sp!, {r3, lr} + ldr r0, [r0, #0x10] + tst r0, #0x10 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + mov r0, r1 + bl PlaySeVolumeWrapper + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end PlayWindowInputSound + + arm_func_start sub_02032984 +sub_02032984: ; 0x02032984 + mvn r1, #0 + str r1, [r0, #0xe8] + str r1, [r0, #0xf0] + str r1, [r0, #0xe4] + str r1, [r0, #0xec] + bx lr + arm_func_end sub_02032984 + + arm_func_start sub_0203299C +sub_0203299C: ; 0x0203299C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl sub_02033440 + mov r4, r0 + mov r0, r7 + mov r1, r6 + bl sub_020336FC + cmp r4, r5 + movgt r5, r4 + cmp r0, r5 + movgt r5, r0 + add r1, r5, #7 + mov r0, r1, asr #2 + add r0, r1, r0, lsr #29 + mov r0, r0, asr #3 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_0203299C + + arm_func_start CalcMenuHeightDiv8__020329E4 +CalcMenuHeightDiv8__020329E4: ; 0x020329E4 + tst r0, #0x40000 + bne _020329FC + ldr ip, [r2] + ldr r2, [r3] + cmp r2, ip + strgt ip, [r3] +_020329FC: + tst r0, #0x400 + ldrne ip, [r1, #4] + ldr r2, [r3] + moveq ip, #0xe + mul r3, r2, ip + tst r0, #0x800 + ldrne r1, [r1, #0xc] + addne r3, r3, r1 + tst r0, #0x1000 + addne r3, r3, #0x10 + add r1, r3, #7 + mov r0, r1, asr #2 + add r0, r1, r0, lsr #29 + mov r0, r0, asr #3 + bx lr + arm_func_end CalcMenuHeightDiv8__020329E4 + + arm_func_start InitInventoryMenuInput +InitInventoryMenuInput: ; 0x02032A38 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r1 + mov r6, r2 + tst sb, #0x400 + ldrne r4, [r6, #4] + mov r7, r0 + mov r5, r3 + moveq r4, #0xe + mov r8, r6 + str sb, [r7, #0x10] + add lr, r7, #0x14 + mov ip, #9 +_02032A68: + ldmia r8!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _02032A68 + ldmia r8, {r0, r1} + stmia lr, {r0, r1} + ldmia r5, {r0, r1, r2, r3} + stmia r7, {r0, r1, r2, r3} + mov r0, #0 + str r0, [r7, #0xbc] + str r0, [r7, #0xc8] + tst sb, #0x200 + ldrne r0, [r6, #0x60] + ldr r1, [sp, #0x20] + str r0, [r7, #0xac] + ldrb r0, [sp, #0x28] + str r1, [r7, #0xd0] + strb r0, [r7, #0xd5] + ldr r0, [r7, #0x10] + tst r0, #0x8000 + beq _02032AD8 + ldr r0, [sp, #0x24] + cmp r0, #0 + movle r0, #1 + str r0, [r7, #0xc4] + mov r0, #1 + str r0, [r7, #0xcc] + b _02032AE0 +_02032AD8: + str r1, [r7, #0xc0] + str r1, [r7, #0xc4] +_02032AE0: + mov r0, r7 + bl sub_020331D4 + ldr r0, [r7, #0xcc] + mov r3, #0 + cmp r0, #0xa + ldrge r0, [r7, #0x10] + orrge r0, r0, #0x10000 + strge r0, [r7, #0x10] + str r3, [r7, #0xb0] + ldr r0, [r7, #0x10] + tst r0, #0x800 + ldrne r3, [r6, #0xc] + str r3, [r7, #0xb4] + ldmia r5, {r1, r2} + ldr r0, [r7, #0x10] + sub r1, r2, r1 + sub r1, r1, r3 + mov r3, #0 + tst r0, #0x1000 + subne r1, r1, #0x10 + strb r3, [r7, #0xd4] + cmp r4, #0 + ble _02032B74 + ldr r0, [r7, #0x10] + tst r0, #0x80000 + bne _02032B68 + ldr r0, [r7, #0xc4] + ldr r2, [r7, #0xb4] + mul r0, r4, r0 + sub r0, r1, r0 + add r0, r0, r0, lsr #31 + adds r0, r2, r0, asr #1 + str r0, [r7, #0xb4] + strmi r3, [r7, #0xb4] +_02032B68: + mov r0, r4, lsl #8 + str r0, [r7, #0xb8] + b _02032B7C +_02032B74: + mov r0, r7 + bl sub_0203330C +_02032B7C: + ldr r0, [r7, #0x10] + tst r0, #0x20 + beq _02032B94 + ldr r1, [r6] + mov r0, r7 + bl sub_020330EC +_02032B94: + bl sub_02031908 + mov r1, #0 + str r1, [r7, #0xd8] + sub r0, r1, #1 + str r0, [r7, #0xdc] + mov r0, r7 + str r1, [r7, #0xe0] + bl sub_020333FC + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end InitInventoryMenuInput + + arm_func_start sub_02032BB8 +sub_02032BB8: ; 0x02032BB8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x24 + mov sb, r0 + mov r6, r3 + mov r8, r1 + mov r7, r2 + ldr r4, [sb, #0xc8] + ldr r5, [sb, #0xbc] + bl sub_02033414 + mov sl, r0 + cmp r6, #0 + add r0, sp, #0 + beq _02032D04 + ldr r1, [sb, #0x10] + bl sub_02031914 + ldr r1, [sb, #0x10] + mov r6, r0 + tst r1, #0x8000 + beq _02032C44 + tst r1, #0x20000 + beq _02032C44 + tst r1, #0x2000000 + bne _02032C44 + tst r6, #8 + beq _02032C44 + tst r6, #0x10 + beq _02032C30 + mov r0, sb + bl InventoryMenuPreviousPage + b _02032C74 +_02032C30: + tst r6, #0x20 + beq _02032C74 + mov r0, sb + bl InventoryMenuNextPage + b _02032C74 +_02032C44: + tst r1, #0x1000000 + cmpeq sl, #0 + bne _02032C74 + tst r6, #0x10 + beq _02032C64 + mov r0, sb + bl sub_020330B4 + b _02032C74 +_02032C64: + tst r6, #0x20 + beq _02032C74 + mov r0, sb + bl sub_02033078 +_02032C74: + ldr r0, [sb, #0x10] + tst r0, #0x8000 + beq _02032CEC + tst r0, #0x20000 + bne _02032CEC + tst r0, #0x2000000 + bne _02032CEC + tst r0, #0x10000 + beq _02032CC8 + tst r6, #8 + beq _02032CC8 + tst r6, #0x40 + beq _02032CB4 + mov r0, sb + bl InventoryMenuPrevious10Pages + b _02032CEC +_02032CB4: + tst r6, #0x80 + beq _02032CEC + mov r0, sb + bl InventoryMenuNext10Pages + b _02032CEC +_02032CC8: + tst r6, #0x40 + beq _02032CDC + mov r0, sb + bl InventoryMenuPreviousPage + b _02032CEC +_02032CDC: + tst r6, #0x80 + beq _02032CEC + mov r0, sb + bl InventoryMenuNextPage +_02032CEC: + ldr r0, [sb, #0x10] + tst r0, #1 + biceq r6, r6, #1 + tst r0, #2 + biceq r6, r6, #2 + b _02032D0C +_02032D04: + mov r6, #0 + bl sub_02006BFC +_02032D0C: + cmp r8, #0 + strne r6, [r8] + cmp r7, #0 + beq _02032D3C + add r8, sp, #0 + mov r6, #2 +_02032D24: + ldmia r8!, {r0, r1, r2, r3} + stmia r7!, {r0, r1, r2, r3} + subs r6, r6, #1 + bne _02032D24 + ldr r0, [r8] + str r0, [r7] +_02032D3C: + ldr r0, [sb, #0xc8] + cmp r4, r0 + beq _02032D5C + mov r0, sb + mov r1, #4 + bl sub_020333D8 + mov r0, #1 + b _02032DA8 +_02032D5C: + ldr r0, [sb, #0xbc] + cmp r5, r0 + beq _02032D74 + mov r0, sb + mov r1, #3 + bl sub_020333D8 +_02032D74: + ldr r0, [sb, #0xd8] + cmp r0, #0 + ble _02032DA4 + subs r0, r0, #1 + str r0, [sb, #0xd8] + bne _02032DA4 + mvn r0, #0 + str r0, [sb, #0xdc] + mov r0, #0 + str r0, [sb, #0xe0] + mov r0, #1 + b _02032DA8 +_02032DA4: + mov r0, #0 +_02032DA8: + add sp, sp, #0x24 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end sub_02032BB8 + + arm_func_start sub_02032DB0 +sub_02032DB0: ; 0x02032DB0 + ldr r1, [r0, #0xd8] + cmp r1, #0 + ble _02032DE0 + subs r1, r1, #1 + str r1, [r0, #0xd8] + mvneq r1, #0 + streq r1, [r0, #0xdc] + moveq r1, #0 + streq r1, [r0, #0xe0] + beq _02032DE0 + mov r0, #1 + bx lr +_02032DE0: + mov r0, #0 + bx lr + arm_func_end sub_02032DB0 + + arm_func_start sub_02032DE8 +sub_02032DE8: ; 0x02032DE8 + mov r2, #6 + str r2, [r0, #0xd8] + sub r2, r2, #7 + str r1, [r0, #0xe0] + str r2, [r0, #0xe8] + str r2, [r0, #0xe4] + str r2, [r0, #0xf0] + str r2, [r0, #0xec] + bx lr + arm_func_end sub_02032DE8 + + arm_func_start sub_02032E0C +sub_02032E0C: ; 0x02032E0C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x10 + mov r8, r1 + ldrh r1, [r8] + mov r7, r2 + mov sb, r0 + tst r1, r7 + beq _02032F50 + cmp r3, #0 + ldrge r0, [sb, #8] + ldr r5, [sb, #0xc0] + ldrlt r0, [sb, #0xc] + ldr r1, [sp, #0x30] + add r0, r0, r3 + str r0, [sp, #8] + cmp r1, #0 + ldrgt r0, [sb, #8] + mov r6, #0 + ldrle r0, [sb, #0xc] + add r4, sp, #0 + add r0, r0, r1 + str r0, [sp, #0xc] + b _02032F48 +_02032E68: + ldr r0, [sb, #0xb8] + ldr r2, [sb, #0xb4] + mul r1, r6, r0 + mov r0, r1, asr #7 + add r0, r1, r0, lsr #24 + ldr r1, [sb] + add r0, r2, r0, asr #8 + add r0, r1, r0 + str r0, [sp] + ldr r0, [sb, #0xb8] + add r1, r6, #1 + mul r2, r1, r0 + mov r0, r2, asr #7 + ldr r1, [sb, #0xb4] + add r0, r2, r0, lsr #24 + ldr r2, [sb] + add r0, r1, r0, asr #8 + add r0, r2, r0 + sub r3, r0, #2 + mov r0, r8 + mov r1, r7 + mov r2, r4 + str r3, [sp, #4] + bl sub_02006C8C + cmp r0, #0 + beq _02032F44 + ldrb r0, [sp, #0x34] + cmp r0, #0 + beq _02032F34 + mov r0, #6 + str r0, [sb, #0xd8] + sub r0, r0, #7 + str r0, [sb, #0xdc] + mov r0, #0 + str r0, [sb, #0xe0] + ldr r1, [sp, #8] + ldr r0, [sb, #8] + sub r0, r1, r0 + str r0, [sb, #0xec] + ldr r1, [sp, #0xc] + ldr r0, [sb, #8] + sub r0, r1, r0 + str r0, [sb, #0xf0] + ldr r1, [sp] + ldr r0, [sb] + sub r0, r1, r0 + str r0, [sb, #0xe4] + ldr r1, [sp, #4] + ldr r0, [sb] + sub r0, r1, r0 + str r0, [sb, #0xe8] +_02032F34: + ldr r1, [sb, #0xc8] + ldr r0, [sb, #0xc4] + mla r0, r1, r0, r6 + b _02032F54 +_02032F44: + add r6, r6, #1 +_02032F48: + cmp r6, r5 + blt _02032E68 +_02032F50: + mvn r0, #0 +_02032F54: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end sub_02032E0C + + arm_func_start sub_02032F5C +sub_02032F5C: ; 0x02032F5C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r1 + mov r4, r0 + mov r6, r2 + mov r5, r3 + tst r7, #0x2000 + mov r0, #0 + beq _02032FA4 + ldr r1, [r4, #0x10] + tst r1, #0x40 + ldrne r3, [r4, #0x78] + cmpne r3, #0 + beq _02032FA4 + ldr r0, [r4, #0x7c] + mov r1, r6 + mov r2, r5 + blx r3 + mov r0, #1 +_02032FA4: + tst r7, #0x1000 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, [r4, #0x10] + tst r1, #0x80 + ldrne r3, [r4, #0x80] + cmpne r3, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r4, #0x84] + mov r1, r6 + mov r2, r5 + blx r3 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end sub_02032F5C + + arm_func_start sub_02032FD8 +sub_02032FD8: ; 0x02032FD8 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, [r4, #0x10] + tst r1, #1 + beq _0203304C + tst r1, #0x8000000 + bne _0203304C + tst r1, #0x200 + beq _02033044 + bl sub_02033414 + cmp r0, #0 + bne _02033028 + mov r0, r4 + bl sub_02033064 + ldr r1, [r4, #0xac] + ldrb r0, [r1, r0] + tst r0, #1 + bne _0203304C + mov r0, #1 + ldmia sp!, {r4, pc} +_02033028: + ldr r0, [r4, #0xac] + ldrb r0, [r0, #0x7f] + tst r0, #1 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, pc} +_02033044: + mov r0, #1 + ldmia sp!, {r4, pc} +_0203304C: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end sub_02032FD8 + + arm_func_start sub_02033054 +sub_02033054: ; 0x02033054 + ldr r1, [r0, #0xc8] + ldr r0, [r0, #0xc4] + mul r0, r1, r0 + bx lr + arm_func_end sub_02033054 + + arm_func_start sub_02033064 +sub_02033064: ; 0x02033064 + ldr r2, [r0, #0xbc] + ldr r1, [r0, #0xc8] + ldr r0, [r0, #0xc4] + mla r0, r1, r0, r2 + bx lr + arm_func_end sub_02033064 + + arm_func_start sub_02033078 +sub_02033078: ; 0x02033078 + mov r1, #1 + strb r1, [r0, #0xd4] + ldr r1, [r0, #0xc0] + cmp r1, #0 + movle r1, #0 + strle r1, [r0, #0xbc] + bxle lr + ldr r1, [r0, #0xbc] + add r2, r1, #1 + str r2, [r0, #0xbc] + ldr r1, [r0, #0xc0] + cmp r2, r1 + movge r1, #0 + strge r1, [r0, #0xbc] + bx lr + arm_func_end sub_02033078 + + arm_func_start sub_020330B4 +sub_020330B4: ; 0x020330B4 + mov r1, #1 + strb r1, [r0, #0xd4] + ldr r1, [r0, #0xc0] + cmp r1, #0 + movle r1, #0 + strle r1, [r0, #0xbc] + bxle lr + ldr r1, [r0, #0xbc] + subs r1, r1, #1 + str r1, [r0, #0xbc] + ldrmi r1, [r0, #0xc0] + submi r1, r1, #1 + strmi r1, [r0, #0xbc] + bx lr + arm_func_end sub_020330B4 + + arm_func_start sub_020330EC +sub_020330EC: ; 0x020330EC + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + mov r0, #1 + strb r0, [r4, #0xd4] + movs r5, r1 + ldr r0, [r4, #0x10] + movmi r5, #0 + tst r0, #0x8000 + beq _02033194 + ldr r1, [r4, #0xd0] + cmp r5, r1 + blt _02033168 + ldrb r0, [r4, #0xd5] + cmp r0, #0 + beq _02033140 + ldr r1, [r4, #0xcc] + mov r0, #0 + sub r1, r1, #1 + str r1, [r4, #0xc8] + str r0, [r4, #0xbc] + b _02033188 +_02033140: + sub r5, r1, #1 + ldr r1, [r4, #0xc4] + mov r0, r5 + bl _s32_div_f + str r0, [r4, #0xc8] + ldr r1, [r4, #0xc4] + mov r0, r5 + bl _s32_div_f + str r1, [r4, #0xbc] + b _02033188 +_02033168: + ldr r1, [r4, #0xc4] + mov r0, r5 + bl _s32_div_f + str r0, [r4, #0xc8] + ldr r1, [r4, #0xc4] + mov r0, r5 + bl _s32_div_f + str r1, [r4, #0xbc] +_02033188: + mov r0, r4 + bl sub_020331D4 + ldmia sp!, {r3, r4, r5, pc} +_02033194: + ldr r0, [r4, #0xc0] + cmp r5, r0 + subge r0, r0, #1 + strge r0, [r4, #0xbc] + strlt r5, [r4, #0xbc] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end sub_020330EC + + arm_func_start sub_020331AC +sub_020331AC: ; 0x020331AC + stmdb sp!, {r4, lr} + mov r4, r0 + str r1, [r4, #0xd0] + bl sub_020331D4 + mov r0, r4 + bl sub_02033064 + mov r1, r0 + mov r0, r4 + bl sub_020330EC + ldmia sp!, {r4, pc} + arm_func_end sub_020331AC + + arm_func_start sub_020331D4 +sub_020331D4: ; 0x020331D4 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x10] + tst r0, #0x8000 + ldmeqia sp!, {r4, pc} + ldr r1, [r4, #0xc4] + ldr r0, [r4, #0xd0] + add r0, r0, r1 + sub r0, r0, #1 + bl _s32_div_f + str r0, [r4, #0xcc] + ldrb r0, [r4, #0xd5] + cmp r0, #0 + ldrne r0, [r4, #0xcc] + addne r0, r0, #1 + strne r0, [r4, #0xcc] + ldr r1, [r4, #0xcc] + ldr r0, [r4, #0xc8] + sub r1, r1, #1 + cmp r0, r1 + strge r1, [r4, #0xc8] + ldr r1, [r4, #0xc8] + ldr r0, [r4, #0xc4] + ldr r2, [r4, #0xd0] + mul r0, r1, r0 + sub r1, r2, r0 + str r1, [r4, #0xc0] + ldr r0, [r4, #0xc4] + cmp r1, r0 + strgt r0, [r4, #0xc0] + mov r0, r4 + bl sub_02033414 + cmp r0, #0 + movne r0, #0 + strne r0, [r4, #0xbc] + movne r0, #1 + strne r0, [r4, #0xc0] + ldmneia sp!, {r4, pc} + ldr r1, [r4, #0xc0] + ldr r0, [r4, #0xbc] + sub r1, r1, #1 + cmp r0, r1 + strgt r1, [r4, #0xbc] + ldmia sp!, {r4, pc} + arm_func_end sub_020331D4 + + arm_func_start InventoryMenuNextPage +InventoryMenuNextPage: ; 0x02033284 + ldr r1, [r0, #0xcc] + ldr r2, [r0, #0xc8] + sub r1, r1, #1 + cmp r2, r1 + movge r1, #0 + addlt r1, r2, #1 + ldr ip, _020332A8 ; =sub_020331D4 + str r1, [r0, #0xc8] + bx ip + .align 2, 0 +_020332A8: .word sub_020331D4 + arm_func_end InventoryMenuNextPage diff --git a/asm/main_02033414.s b/asm/main_02033414.s new file mode 100644 index 00000000..1b691d16 --- /dev/null +++ b/asm/main_02033414.s @@ -0,0 +1,1496 @@ + .include "asm/macros.inc" + .include "main_02033414.inc" + + .text + + arm_func_start sub_02033414 +sub_02033414: ; 0x02033414 + ldrb r1, [r0, #0xd5] + cmp r1, #0 + beq _02033438 + ldr r1, [r0, #0xc8] + ldr r2, [r0, #0xcc] + add r0, r1, #1 + cmp r2, r0 + moveq r0, #1 + bxeq lr +_02033438: + mov r0, #0 + bx lr + arm_func_end sub_02033414 + + arm_func_start sub_02033440 +sub_02033440: ; 0x02033440 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x104 + mov r5, r0 + tst r5, #0x800 + mov r4, #0 + beq _02033498 + ldrh r2, [r1, #8] + cmp r2, #0 + moveq r0, r4 + beq _02033488 + ldr r3, _020334A4 ; =0x0000C402 + add ip, r1, #0x10 + add r0, sp, #4 + mov r1, #0x100 + str ip, [sp] + bl PreprocessStringFromId + add r0, sp, #4 + bl sub_020265A8 +_02033488: + tst r5, #0x8000 + addne r0, r0, #0x40 + cmp r0, #0 + movgt r4, r0 +_02033498: + mov r0, r4 + add sp, sp, #0x104 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_020334A4: .word 0x0000C402 + arm_func_end sub_02033440 + + arm_func_start sub_020334A8 +sub_020334A8: ; 0x020334A8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x154 + mov r5, r0 + ldr r0, [r5, #0x10] + mov r4, r1 + tst r0, #0x800 + beq _02033598 + ldrh r2, [r5, #0x1c] + cmp r2, #0 + beq _020334FC + ldr r3, _020335A0 ; =0x0000C402 + add ip, r5, #0x24 + add r0, sp, #0x54 + mov r1, #0x100 + str ip, [sp] + bl PreprocessStringFromId + add r3, sp, #0x54 + mov r0, r4 + mov r1, #8 + mov r2, #0 + bl DrawTextInWindow +_020334FC: + mov r0, #0x17 + str r0, [sp] + ldr r2, [r5, #0xc] + ldr r1, [r5, #8] + mov r0, r4 + sub r1, r2, r1 + sub r3, r1, #4 + mov r1, #2 + mov r2, #0xd + bl sub_02025D50 + mov r0, r5 + bl sub_020328F4 + cmp r0, #0 + beq _02033598 + mov r0, r5 + bl GetCurrentPage + add r1, r0, #1 + mov r0, r5 + str r1, [sp, #0x28] + bl GetTotalNumPages + str r0, [sp, #0x2c] + add r1, sp, #4 + str r1, [sp] + ldr r2, _020335A4 ; =_0209AFC4 + ldr r3, _020335A0 ; =0x0000C402 + add r0, sp, #0x54 + mov r1, #0x100 + bl PreprocessString + add r0, sp, #0x54 + bl sub_020265A8 + mov ip, r0 + ldr r3, [r5, #0xc] + ldr r1, [r5, #8] + mov r0, r4 + sub r1, r3, r1 + mov r2, #0 + sub r1, r1, ip + add r3, sp, #0x54 + bl DrawTextInWindow +_02033598: + add sp, sp, #0x154 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_020335A0: .word 0x0000C402 +_020335A4: .word _0209AFC4 + arm_func_end sub_020334A8 + + arm_func_start sub_020335A8 +sub_020335A8: ; 0x020335A8 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x154 + mov r5, r0 + ldr r2, [r5, #0x10] + mov r4, r1 + tst r2, #0x800 + beq _020336E8 + bl sub_02033414 + cmp r0, #0 + beq _02033610 + ldr r3, _020336F0 ; =0x000008E3 + mov r0, r4 + mov r1, #8 + mov r2, #0 + bl AppendStandardStringToMission + mov r0, #0x17 + str r0, [sp] + ldr r2, [r5, #0xc] + ldr r1, [r5, #8] + mov r0, r4 + sub r1, r2, r1 + sub r3, r1, #4 + mov r1, #2 + mov r2, #0xd + bl sub_02025D50 + b _020336E8 +_02033610: + add r0, r5, #0x24 + str r0, [sp] + ldrh r2, [r5, #0x1c] + ldr r3, _020336F4 ; =0x0000C402 + add r0, sp, #0x54 + mov r1, #0x100 + bl PreprocessStringFromId + add r3, sp, #0x54 + mov r0, r4 + mov r1, #8 + mov r2, #0 + bl DrawTextInWindow + mov r0, #0x17 + str r0, [sp] + ldr r2, [r5, #0xc] + ldr r1, [r5, #8] + mov r0, r4 + sub r1, r2, r1 + sub r3, r1, #4 + mov r1, #2 + mov r2, #0xd + bl sub_02025D50 + mov r0, r5 + bl sub_0203336C + cmp r0, #0 + beq _020336E8 + ldr r0, [r5, #0xc8] + ldr r2, _020336F8 ; =_0209AFC4 + add r0, r0, #1 + str r0, [sp, #0x28] + ldrb r0, [r5, #0xd5] + ldr r3, _020336F4 ; =0x0000C402 + add ip, sp, #4 + cmp r0, #0 + movne r1, #1 + ldr r0, [r5, #0xcc] + moveq r1, #0 + sub r0, r0, r1 + str r0, [sp, #0x2c] + add r0, sp, #0x54 + mov r1, #0x100 + str ip, [sp] + bl PreprocessString + add r0, sp, #0x54 + bl sub_020265A8 + mov r2, r0 + ldr r1, [r5, #0xc] + ldr r0, [r5, #8] + add r3, sp, #0x54 + sub r1, r1, r0 + sub r1, r1, r2 + mov r0, r4 + mov r2, #0 + bl DrawTextInWindow +_020336E8: + add sp, sp, #0x154 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +#ifdef JAPAN +_020336F0: .word 0x00001D3B +#else +_020336F0: .word 0x000008E3 +#endif +_020336F4: .word 0x0000C402 +_020336F8: .word _0209AFC4 + arm_func_end sub_020335A8 + + arm_func_start sub_020336FC +sub_020336FC: ; 0x020336FC + tst r0, #0x1000 + mov r1, #0 + beq _02033750 + mov r2, #4 + tst r0, #0x2000 + addne r2, r2, #0x12 + tst r0, #0x4000 + addne r2, r2, #0x14 + tst r0, #0x20000 + addne r2, r2, #0x1f + bne _02033738 + tst r0, #0x8000 + addne r2, r2, #0x3e + tst r0, #8 + addne r2, r2, #0x1f +_02033738: + tst r0, #4 + addne r2, r2, #0x12 + tst r0, #2 + addne r2, r2, #0x12 + cmp r2, #0 + movgt r1, r2 +_02033750: + mov r0, r1 + bx lr + arm_func_end sub_020336FC + + arm_func_start sub_02033758 +sub_02033758: ; 0x02033758 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x10 + mov sb, r0 + ldrb r0, [sb, #0xf4] + mov r8, r1 + ldr r1, [sb, #0x10] + cmp r0, #0 + ldrne r0, _02033BBC ; =0x00001002 + mov r7, r2 + moveq r0, #2 + mov r0, r0, lsl #0x10 + mov r4, #0 + tst r1, #0x1000 + mov r5, r0, lsr #0x10 + beq _02033B98 + ldrh r0, [r7] + tst r0, r5 + beq _02033B98 + ldmib sb, {r0, r1} + sub r0, r0, #0xf + str r0, [sp] + ldr r0, [sb, #4] + add r6, r1, #4 + sub r0, r0, #2 + str r0, [sp, #4] + ldr r0, [sb, #0x10] + tst r0, #0x2000 + beq _0203380C + mov r0, #0x12 + str r6, [sp, #8] + bl sub_02026594 + add r0, r6, r0 + sub r3, r0, #1 + add r2, sp, #0 + mov r0, r7 + mov r1, r5 + str r3, [sp, #0xc] + bl sub_02006C8C + cmp r0, #0 + ldrne r0, [r8] + movne r4, #1 + orrne r0, r0, #0x1000 + orrne r0, r0, #0x1000000 + strne r0, [r8] + add r6, r6, #0x12 +_0203380C: + ldr r0, [sb, #0x10] + tst r0, #0x4000 + beq _0203385C + mov r0, #0x13 + str r6, [sp, #8] + bl sub_02026594 + add r0, r6, r0 + sub r3, r0, #1 + add r2, sp, #0 + mov r0, r7 + mov r1, r5 + str r3, [sp, #0xc] + bl sub_02006C8C + cmp r0, #0 + ldrne r0, [r8] + movne r4, #1 + orrne r0, r0, #0x2000 + orrne r0, r0, #0x2000000 + strne r0, [r8] + add r6, r6, #0x14 +_0203385C: + ldr r0, [sb, #0x10] + tst r0, #0x8000 + beq _020339C8 + tst r0, #0x20000 + bne _020339C8 + mov r0, sb + bl sub_020328F4 + cmp r0, #0 + beq _020339C4 + add r0, r6, #0xb + str r6, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sb, #0x10] + tst r0, #0x10000 + beq _020338D4 + add r2, sp, #0 + mov r0, r7 + mov r1, r5 + bl sub_02006C8C + cmp r0, #0 + beq _020338D4 + mov r0, sb + bl sub_02032864 + mov r0, sb + mov r1, #4 + bl PlayWindowInputSound + ldr r0, [r8] + mov r4, #1 + orr r0, r0, #0x400000 + str r0, [r8] +_020338D4: + add r1, r6, #0xe + add r0, r6, #0x19 + str r1, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sb, #0x10] + tst r0, #0x10000 + beq _0203392C + add r2, sp, #0 + mov r0, r7 + mov r1, r5 + bl sub_02006C8C + cmp r0, #0 + beq _0203392C + mov r0, sb + bl sub_0203282C + mov r0, sb + mov r1, #4 + bl PlayWindowInputSound + ldr r0, [r8] + mov r4, #1 + orr r0, r0, #0x800000 + str r0, [r8] +_0203392C: + add ip, r6, #0x1f + add r3, r6, #0x2a + add r2, sp, #0 + mov r0, r7 + mov r1, r5 + str ip, [sp, #8] + str r3, [sp, #0xc] + bl sub_02006C8C + cmp r0, #0 + beq _02033978 + mov r0, sb + bl sub_0203280C + mov r0, sb + mov r1, #4 + bl PlayWindowInputSound + ldr r0, [r8] + mov r4, #1 + orr r0, r0, #0x100000 + str r0, [r8] +_02033978: + add ip, r6, #0x2d + add r3, r6, #0x38 + add r2, sp, #0 + mov r0, r7 + mov r1, r5 + str ip, [sp, #8] + str r3, [sp, #0xc] + bl sub_02006C8C + cmp r0, #0 + beq _020339C4 + mov r0, sb + bl sub_020327E4 + mov r0, sb + mov r1, #4 + bl PlayWindowInputSound + ldr r0, [r8] + mov r4, #1 + orr r0, r0, #0x200000 + str r0, [r8] +_020339C4: + add r6, r6, #0x3e +_020339C8: + ldr r0, [sb, #0x10] + tst r0, #8 + bne _020339EC + tst r0, #0x20000 + beq _02033AE0 + mov r0, sb + bl sub_020328F4 + cmp r0, #0 + beq _02033AE0 +_020339EC: + add r0, r6, #0xb + str r6, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sb, #0x10] + tst r0, #0x20000000 + bne _02033A64 + add r2, sp, #0 + mov r0, r7 + mov r1, r5 + bl sub_02006C8C + cmp r0, #0 + beq _02033A64 + ldr r0, [r8] + orr r0, r0, #0x40000 + str r0, [r8] + ldr r0, [sb, #0x10] + tst r0, #0x20000 + mov r0, sb + beq _02033A58 + bl sub_020327E4 + mov r0, sb + mov r1, #4 + bl PlayWindowInputSound + ldr r0, [r8] + orr r0, r0, #0x4000 + str r0, [r8] + b _02033A60 +_02033A58: + mov r1, #0 + bl PlayWindowInputSound +_02033A60: + mov r4, #1 +_02033A64: + add r1, r6, #0xe + add r0, r6, #0x19 + str r1, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sb, #0x10] + tst r0, #0x40000000 + bne _02033AE0 + add r2, sp, #0 + mov r0, r7 + mov r1, r5 + bl sub_02006C8C + cmp r0, #0 + beq _02033AE0 + ldr r0, [r8] + orr r0, r0, #0x80000 + str r0, [r8] + ldr r0, [sb, #0x10] + tst r0, #0x20000 + mov r0, sb + beq _02033AD4 + bl sub_0203280C + mov r0, sb + mov r1, #4 + bl PlayWindowInputSound + ldr r0, [r8] + orr r0, r0, #0x8000 + str r0, [r8] + b _02033ADC +_02033AD4: + mov r1, #0 + bl PlayWindowInputSound +_02033ADC: + mov r4, #1 +_02033AE0: + ldr r1, [sb, #0xc] + ldr r0, [sb, #0x10] + add r6, r1, #4 + tst r0, #2 + beq _02033B2C + sub r6, r6, #0x12 + add r3, r6, #0xb + add r2, sp, #0 + mov r0, r7 + mov r1, r5 + str r6, [sp, #8] + str r3, [sp, #0xc] + bl sub_02006C8C + cmp r0, #0 + ldrne r0, [r8] + movne r4, #1 + orrne r0, r0, #2 + orrne r0, r0, #0x20000 + strne r0, [r8] +_02033B2C: + ldr r0, [sb, #0x10] + tst r0, #4 + beq _02033B98 + sub ip, r6, #0x12 + sub r3, r6, #7 + add r2, sp, #0 + mov r0, r7 + mov r1, r5 + str ip, [sp, #8] + str r3, [sp, #0xc] + bl sub_02006C8C + cmp r0, #0 + beq _02033B98 + ldr r0, [sb, #0x10] + tst r0, #0x18000000 + ldreq r0, [r8] + orreq r0, r0, #1 + orreq r0, r0, #0x10000 + streq r0, [r8] + beq _02033B94 + ldr r1, [r8] + mov r0, sb + orr r2, r1, #0x10000 + mov r1, #2 + str r2, [r8] + bl PlayWindowInputSound +_02033B94: + mov r4, #1 +_02033B98: + ldr r1, [r8] + cmp r1, #0 + beq _02033BB0 + mov r0, sb + bl sub_020320C8 + mov r4, #1 +_02033BB0: + mov r0, r4 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02033BBC: .word 0x00001002 + arm_func_end sub_02033758 + + arm_func_start sub_02033BC0 +sub_02033BC0: ; 0x02033BC0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r8, r0 + ldr r0, [r8, #0x10] + mov r7, r1 + tst r0, #0x1000 + ldr r4, [r8, #0xe0] + beq _02033ECC + ldmia r8, {r1, r2} + mov r0, #0x17 + str r0, [sp] + sub r0, r2, r1 + sub r5, r0, #0x10 + ldr r2, [r8, #0xc] + ldr r1, [r8, #8] + mov r0, r7 + sub r1, r2, r1 + sub r3, r1, #4 + mov r2, r5 + mov r1, #2 + mov r6, #4 + bl sub_02025D50 + ldr r0, [r8, #0x10] + tst r0, #0x2000 + beq _02033C44 + tst r4, #0x1000000 + ldrne r3, _02033ED4 ; =_0209AFDC + mov r0, r7 + ldreq r3, _02033ED8 ; =_0209AFE4 + add r2, r5, #3 + mov r1, #4 + bl DrawTextInWindow + add r6, r6, #0x12 +_02033C44: + ldr r0, [r8, #0x10] + tst r0, #0x4000 + beq _02033C70 + tst r4, #0x2000000 + ldrne r3, _02033EDC ; =_0209AFEC + mov r0, r7 + ldreq r3, _02033EE0 ; =_0209AFF4 + mov r1, r6 + add r2, r5, #3 + bl DrawTextInWindow + add r6, r6, #0x14 +_02033C70: + ldr r0, [r8, #0x10] + tst r0, #0x8000 + beq _02033D74 + tst r0, #0x20000 + bne _02033D74 + mov r0, r8 + bl sub_020328F4 + cmp r0, #0 + beq _02033D70 + ldr r0, [r8, #0x10] + tst r0, #0x10000 + beq _02033D08 + mov r0, r8 + bl sub_02032918 + cmp r0, #0 + bne _02033CB8 + tst r4, #0x400000 + beq _02033CD4 +_02033CB8: + tst r4, #0x400000 + ldrne r3, _02033EE4 ; =_0209AFFC + mov r0, r7 + ldreq r3, _02033EE8 ; =_0209B004 + mov r1, r6 + add r2, r5, #3 + bl DrawTextInWindow +_02033CD4: + mov r0, r8 + bl sub_0203293C + cmp r0, #0 + bne _02033CEC + tst r4, #0x800000 + beq _02033D08 +_02033CEC: + tst r4, #0x800000 + ldrne r3, _02033EEC ; =_0209B00C + mov r0, r7 + ldreq r3, _02033EF0 ; =_0209B014 + add r1, r6, #0xe + add r2, r5, #3 + bl DrawTextInWindow +_02033D08: + mov r0, r8 + bl sub_02032918 + cmp r0, #0 + bne _02033D20 + tst r4, #0x100000 + beq _02033D3C +_02033D20: + tst r4, #0x100000 + ldrne r3, _02033EF4 ; =_0209B01C + mov r0, r7 + ldreq r3, _02033EF8 ; =_0209B024 + add r1, r6, #0x1f + add r2, r5, #3 + bl DrawTextInWindow +_02033D3C: + mov r0, r8 + bl sub_0203293C + cmp r0, #0 + bne _02033D54 + tst r4, #0x200000 + beq _02033D70 +_02033D54: + tst r4, #0x200000 + ldrne r3, _02033EFC ; =_0209B02C + mov r0, r7 + ldreq r3, _02033F00 ; =_0209B034 + add r1, r6, #0x2d + add r2, r5, #3 + bl DrawTextInWindow +_02033D70: + add r6, r6, #0x3e +_02033D74: + ldr r1, [r8, #0x10] + ldr r0, _02033F04 ; =0x00020008 + tst r1, r0 + beq _02033E40 + tst r4, #0x40000 + beq _02033DA4 + ldr r3, _02033F08 ; =_0209B03C + mov r0, r7 + mov r1, r6 + add r2, r5, #3 + bl DrawTextInWindow + b _02033DE0 +_02033DA4: + tst r1, #0x20000000 + bne _02033DE0 + tst r1, #8 + bne _02033DCC + tst r1, #0x20000 + beq _02033DE0 + mov r0, r8 + bl sub_02032918 + cmp r0, #0 + beq _02033DE0 +_02033DCC: + ldr r3, _02033F0C ; =_0209B044 + mov r0, r7 + mov r1, r6 + add r2, r5, #3 + bl DrawTextInWindow +_02033DE0: + tst r4, #0x80000 + beq _02033E00 + ldr r3, _02033F10 ; =_0209B04C + mov r0, r7 + add r1, r6, #0xe + add r2, r5, #3 + bl DrawTextInWindow + b _02033E40 +_02033E00: + ldr r0, [r8, #0x10] + tst r0, #0x40000000 + bne _02033E40 + tst r0, #8 + bne _02033E2C + tst r0, #0x20000 + beq _02033E40 + mov r0, r8 + bl sub_0203293C + cmp r0, #0 + beq _02033E40 +_02033E2C: + ldr r3, _02033F14 ; =_0209B054 + mov r0, r7 + add r1, r6, #0xe + add r2, r5, #3 + bl DrawTextInWindow +_02033E40: + ldr r2, [r8, #0xc] + ldr r1, [r8, #8] + ldr r0, [r8, #0x10] + sub r1, r2, r1 + tst r0, #2 + add r6, r1, #4 + beq _02033E7C + tst r4, #0x20000 + ldrne r3, _02033F18 ; =_0209B05C + sub r6, r6, #0x12 + ldreq r3, _02033F1C ; =_0209B064 + mov r0, r7 + mov r1, r6 + add r2, r5, #3 + bl DrawTextInWindow +_02033E7C: + ldr r0, [r8, #0x10] + tst r0, #4 + beq _02033ECC + tst r0, #0x18000000 + beq _02033EB0 + tst r4, #0x10000 + ldrne r3, _02033F20 ; =_0209B06C + mov r0, r7 + ldreq r3, _02033F24 ; =_0209B074 + sub r1, r6, #0x12 + add r2, r5, #3 + bl DrawTextInWindow + b _02033ECC +_02033EB0: + tst r4, #0x10000 + ldrne r3, _02033F28 ; =_0209B07C + mov r0, r7 + ldreq r3, _02033F2C ; =_0209B084 + sub r1, r6, #0x12 + add r2, r5, #3 + bl DrawTextInWindow +_02033ECC: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02033ED4: .word _0209AFDC +_02033ED8: .word _0209AFE4 +_02033EDC: .word _0209AFEC +_02033EE0: .word _0209AFF4 +_02033EE4: .word _0209AFFC +_02033EE8: .word _0209B004 +_02033EEC: .word _0209B00C +_02033EF0: .word _0209B014 +_02033EF4: .word _0209B01C +_02033EF8: .word _0209B024 +_02033EFC: .word _0209B02C +_02033F00: .word _0209B034 +_02033F04: .word 0x00020008 +_02033F08: .word _0209B03C +_02033F0C: .word _0209B044 +_02033F10: .word _0209B04C +_02033F14: .word _0209B054 +_02033F18: .word _0209B05C +_02033F1C: .word _0209B064 +_02033F20: .word _0209B06C +_02033F24: .word _0209B074 +_02033F28: .word _0209B07C +_02033F2C: .word _0209B084 + arm_func_end sub_02033BC0 + + arm_func_start sub_02033F30 +sub_02033F30: ; 0x02033F30 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r8, r0 + ldr r0, [r8, #0x10] + mov r7, r1 + mov r6, r2 + tst r0, #0x1000 + mov r4, #0 + beq _0203433C + ldrh r0, [r6] + tst r0, #2 + beq _0203433C + ldmib r8, {r0, r1} + sub r0, r0, #0xf + str r0, [sp] + ldr r0, [r8, #4] + add r5, r1, #4 + sub r0, r0, #2 + str r0, [sp, #4] + ldr r0, [r8, #0x10] + tst r0, #0x2000 + beq _02033FC8 + mov r0, #0x12 + str r5, [sp, #8] + bl sub_02026594 + add r0, r5, r0 + sub r3, r0, #1 + add r2, sp, #0 + mov r0, r6 + mov r1, #2 + str r3, [sp, #0xc] + bl sub_02006C8C + cmp r0, #0 + ldrne r0, [r7] + movne r4, #1 + orrne r0, r0, #0x1000 + orrne r0, r0, #0x1000000 + strne r0, [r7] +_02033FC8: + ldr r0, [r8, #0x10] + tst r0, #0x4000 + beq _0203401C + add r1, r5, #0x12 + mov r0, #0x13 + str r1, [sp, #8] + bl sub_02026594 + add r1, r5, #0x12 + add r0, r1, r0 + sub r3, r0, #1 + add r2, sp, #0 + mov r0, r6 + mov r1, #2 + str r3, [sp, #0xc] + bl sub_02006C8C + cmp r0, #0 + ldrne r0, [r7] + movne r4, #1 + orrne r0, r0, #0x2000 + orrne r0, r0, #0x2000000 + strne r0, [r7] +_0203401C: + ldr r0, [r8, #0x10] + add r5, r5, #0x26 + tst r0, #0x8000 + beq _0203418C + tst r0, #0x20000 + bne _0203418C + mov r0, r8 + bl sub_0203336C + cmp r0, #0 + beq _02034188 + add r0, r5, #0xb + str r5, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r8, #0x10] + tst r0, #0x10000 + beq _02034098 + add r2, sp, #0 + mov r0, r6 + mov r1, #2 + bl sub_02006C8C + cmp r0, #0 + beq _02034098 + mov r0, r8 + bl InventoryMenuPrevious10Pages + mov r0, r8 + mov r1, #4 + bl sub_020333D8 + ldr r0, [r7] + mov r4, #1 + orr r0, r0, #0x400000 + str r0, [r7] +_02034098: + add r1, r5, #0xe + add r0, r5, #0x19 + str r1, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r8, #0x10] + tst r0, #0x10000 + beq _020340F0 + add r2, sp, #0 + mov r0, r6 + mov r1, #2 + bl sub_02006C8C + cmp r0, #0 + beq _020340F0 + mov r0, r8 + bl InventoryMenuNext10Pages + mov r0, r8 + mov r1, #4 + bl sub_020333D8 + ldr r0, [r7] + mov r4, #1 + orr r0, r0, #0x800000 + str r0, [r7] +_020340F0: + add ip, r5, #0x1f + add r3, r5, #0x2a + add r2, sp, #0 + mov r0, r6 + mov r1, #2 + str ip, [sp, #8] + str r3, [sp, #0xc] + bl sub_02006C8C + cmp r0, #0 + beq _0203413C + mov r0, r8 + bl InventoryMenuPreviousPage + mov r0, r8 + mov r1, #4 + bl sub_020333D8 + ldr r0, [r7] + mov r4, #1 + orr r0, r0, #0x100000 + str r0, [r7] +_0203413C: + add ip, r5, #0x2d + add r3, r5, #0x38 + add r2, sp, #0 + mov r0, r6 + mov r1, #2 + str ip, [sp, #8] + str r3, [sp, #0xc] + bl sub_02006C8C + cmp r0, #0 + beq _02034188 + mov r0, r8 + bl InventoryMenuNextPage + mov r0, r8 + mov r1, #4 + bl sub_020333D8 + ldr r0, [r7] + mov r4, #1 + orr r0, r0, #0x200000 + str r0, [r7] +_02034188: + add r5, r5, #0x3e +_0203418C: + ldr r1, [r8, #0x10] + ands r0, r1, #8 + beq _020342AC + cmp r0, #0 + bne _020341B8 + tst r1, #0x20000 + beq _020342AC + mov r0, r8 + bl sub_0203336C + cmp r0, #0 + beq _020342AC +_020341B8: + add r0, r5, #0xb + str r5, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r8, #0x10] + tst r0, #0x40000000 + bne _02034230 + add r2, sp, #0 + mov r0, r6 + mov r1, #2 + bl sub_02006C8C + cmp r0, #0 + beq _02034230 + ldr r0, [r7] + orr r0, r0, #0x40000 + str r0, [r7] + ldr r0, [r8, #0x10] + tst r0, #0x20000 + mov r0, r8 + beq _02034224 + bl InventoryMenuPreviousPage + mov r0, r8 + mov r1, #4 + bl sub_020333D8 + ldr r0, [r7] + orr r0, r0, #0x4000 + str r0, [r7] + b _0203422C +_02034224: + mov r1, #0 + bl sub_020333D8 +_0203422C: + mov r4, #1 +_02034230: + add r1, r5, #0xe + add r0, r5, #0x19 + str r1, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [r8, #0x10] + tst r0, #0x20000000 + bne _020342AC + add r2, sp, #0 + mov r0, r6 + mov r1, #2 + bl sub_02006C8C + cmp r0, #0 + beq _020342AC + ldr r0, [r7] + orr r0, r0, #0x80000 + str r0, [r7] + ldr r0, [r8, #0x10] + tst r0, #0x20000 + mov r0, r8 + beq _020342A0 + bl InventoryMenuNextPage + mov r0, r8 + mov r1, #4 + bl sub_020333D8 + ldr r0, [r7] + orr r0, r0, #0x8000 + str r0, [r7] + b _020342A8 +_020342A0: + mov r1, #0 + bl sub_020333D8 +_020342A8: + mov r4, #1 +_020342AC: + ldr r1, [r8, #0xc] + ldr r0, [r8, #0x10] + add r5, r1, #4 + tst r0, #2 + beq _020342F8 + sub r5, r5, #0x12 + add r3, r5, #0xb + add r2, sp, #0 + mov r0, r6 + mov r1, #2 + str r5, [sp, #8] + str r3, [sp, #0xc] + bl sub_02006C8C + cmp r0, #0 + ldrne r0, [r7] + movne r4, #1 + orrne r0, r0, #2 + orrne r0, r0, #0x20000 + strne r0, [r7] +_020342F8: + ldr r0, [r8, #0x10] + tst r0, #4 + beq _0203433C + sub ip, r5, #0x12 + sub r3, r5, #7 + add r2, sp, #0 + mov r0, r6 + mov r1, #2 + str ip, [sp, #8] + str r3, [sp, #0xc] + bl sub_02006C8C + cmp r0, #0 + ldrne r0, [r7] + movne r4, #1 + orrne r0, r0, #1 + orrne r0, r0, #0x10000 + strne r0, [r7] +_0203433C: + ldr r1, [r7] + cmp r1, #0 + beq _02034354 + mov r0, r8 + bl sub_02032DE8 + mov r4, #1 +_02034354: + mov r0, r4 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end sub_02033F30 + + arm_func_start sub_02034360 +sub_02034360: ; 0x02034360 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r8, r0 + ldr r0, [r8, #0x10] + mov r7, r1 + tst r0, #0x1000 + ldr r4, [r8, #0xe0] + beq _02034660 + ldmia r8, {r1, r2} + mov r0, #0x17 + str r0, [sp] + sub r0, r2, r1 + sub r5, r0, #0x10 + ldr r2, [r8, #0xc] + ldr r1, [r8, #8] + mov r0, r7 + sub r1, r2, r1 + sub r3, r1, #4 + mov r2, r5 + mov r1, #2 + mov r6, #4 + bl sub_02025D50 + ldr r0, [r8, #0x10] + tst r0, #0x2000 + beq _020343E0 + tst r4, #0x1000000 + ldrne r3, _02034668 ; =_0209AFDC + mov r0, r7 + ldreq r3, _0203466C ; =_0209AFE4 + add r2, r5, #3 + mov r1, #4 + bl DrawTextInWindow +_020343E0: + ldr r0, [r8, #0x10] + tst r0, #0x4000 + beq _02034408 + tst r4, #0x2000000 + ldrne r3, _02034670 ; =_0209AFEC + mov r0, r7 + ldreq r3, _02034674 ; =_0209AFF4 + add r2, r5, #3 + mov r1, #0x16 + bl DrawTextInWindow +_02034408: + ldr r0, [r8, #0x10] + add r6, r6, #0x26 + tst r0, #0x8000 + beq _02034510 + tst r0, #0x20000 + bne _02034510 + mov r0, r8 + bl sub_0203336C + cmp r0, #0 + beq _0203450C + ldr r0, [r8, #0x10] + tst r0, #0x10000 + beq _020344A4 + mov r0, r8 + bl sub_02033390 + cmp r0, #0 + bne _02034454 + tst r4, #0x400000 + beq _02034470 +_02034454: + tst r4, #0x400000 + ldrne r3, _02034678 ; =_0209AFFC + mov r0, r7 + ldreq r3, _0203467C ; =_0209B004 + mov r1, r6 + add r2, r5, #3 + bl DrawTextInWindow +_02034470: + mov r0, r8 + bl sub_020333B4 + cmp r0, #0 + bne _02034488 + tst r4, #0x800000 + beq _020344A4 +_02034488: + tst r4, #0x800000 + ldrne r3, _02034680 ; =_0209B00C + mov r0, r7 + ldreq r3, _02034684 ; =_0209B014 + add r1, r6, #0xe + add r2, r5, #3 + bl DrawTextInWindow +_020344A4: + mov r0, r8 + bl sub_02033390 + cmp r0, #0 + bne _020344BC + tst r4, #0x100000 + beq _020344D8 +_020344BC: + tst r4, #0x100000 + ldrne r3, _02034688 ; =_0209B01C + mov r0, r7 + ldreq r3, _0203468C ; =_0209B024 + add r1, r6, #0x1f + add r2, r5, #3 + bl DrawTextInWindow +_020344D8: + mov r0, r8 + bl sub_020333B4 + cmp r0, #0 + bne _020344F0 + tst r4, #0x200000 + beq _0203450C +_020344F0: + tst r4, #0x200000 + ldrne r3, _02034690 ; =_0209B02C + mov r0, r7 + ldreq r3, _02034694 ; =_0209B034 + add r1, r6, #0x2d + add r2, r5, #3 + bl DrawTextInWindow +_0203450C: + add r6, r6, #0x3e +_02034510: + ldr r1, [r8, #0x10] + ldr r0, _02034698 ; =0x00020008 + tst r1, r0 + beq _020345DC + tst r4, #0x40000 + beq _02034540 + ldr r3, _0203469C ; =_0209B03C + mov r0, r7 + mov r1, r6 + add r2, r5, #3 + bl DrawTextInWindow + b _0203457C +_02034540: + tst r1, #0x20000000 + bne _0203457C + tst r1, #8 + bne _02034568 + tst r1, #0x20000 + beq _0203457C + mov r0, r8 + bl sub_02033390 + cmp r0, #0 + beq _0203457C +_02034568: + ldr r3, _020346A0 ; =_0209B044 + mov r0, r7 + mov r1, r6 + add r2, r5, #3 + bl DrawTextInWindow +_0203457C: + tst r4, #0x80000 + beq _0203459C + ldr r3, _020346A4 ; =_0209B04C + mov r0, r7 + add r1, r6, #0xe + add r2, r5, #3 + bl DrawTextInWindow + b _020345DC +_0203459C: + ldr r0, [r8, #0x10] + tst r0, #0x40000000 + bne _020345DC + tst r0, #8 + bne _020345C8 + tst r0, #0x20000 + beq _020345DC + mov r0, r8 + bl sub_020333B4 + cmp r0, #0 + beq _020345DC +_020345C8: + ldr r3, _020346A8 ; =_0209B054 + mov r0, r7 + add r1, r6, #0xe + add r2, r5, #3 + bl DrawTextInWindow +_020345DC: + ldr r2, [r8, #0xc] + ldr r1, [r8, #8] + ldr r0, [r8, #0x10] + sub r1, r2, r1 + tst r0, #2 + add r6, r1, #4 + beq _02034618 + tst r4, #0x20000 + ldrne r3, _020346AC ; =_0209B05C + sub r6, r6, #0x12 + ldreq r3, _020346B0 ; =_0209B064 + mov r0, r7 + mov r1, r6 + add r2, r5, #3 + bl DrawTextInWindow +_02034618: + ldr r0, [r8, #0x10] + tst r0, #4 + beq _02034660 + tst r0, #0x18000000 + beq _02034644 + ldr r3, _020346B4 ; =_0209B074 + mov r0, r7 + sub r1, r6, #0x12 + add r2, r5, #3 + bl DrawTextInWindow + b _02034660 +_02034644: + tst r4, #0x10000 + ldrne r3, _020346B8 ; =_0209B07C + mov r0, r7 + ldreq r3, _020346BC ; =_0209B084 + sub r1, r6, #0x12 + add r2, r5, #3 + bl DrawTextInWindow +_02034660: + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02034668: .word _0209AFDC +_0203466C: .word _0209AFE4 +_02034670: .word _0209AFEC +_02034674: .word _0209AFF4 +_02034678: .word _0209AFFC +_0203467C: .word _0209B004 +_02034680: .word _0209B00C +_02034684: .word _0209B014 +_02034688: .word _0209B01C +_0203468C: .word _0209B024 +_02034690: .word _0209B02C +_02034694: .word _0209B034 +_02034698: .word 0x00020008 +_0203469C: .word _0209B03C +_020346A0: .word _0209B044 +_020346A4: .word _0209B04C +_020346A8: .word _0209B054 +_020346AC: .word _0209B05C +_020346B0: .word _0209B064 +_020346B4: .word _0209B074 +_020346B8: .word _0209B07C +_020346BC: .word _0209B084 + arm_func_end sub_02034360 + + arm_func_start sub_020346C0 +sub_020346C0: ; 0x020346C0 + stmdb sp!, {r4, lr} + mov r0, #0xdc + mov r1, #1 + bl MemAlloc + mov r4, r0 + ldr ip, _02034708 ; =MENU_CONTROL_PTR + ldr r0, _0203470C ; =NULL_OVERLAY_LOAD_ENTRY + str r4, [ip] + add lr, r4, #0xc4 + ldmia r0, {r0, r1, r2, r3} + stmia lr, {r0, r1, r2, r3} + mov r1, #0 + str r1, [r4, #0xd4] + ldr r0, [ip] + strb r1, [r0, #0xd8] + bl sub_02034710 + bl sub_020469BC + ldmia sp!, {r4, pc} + .align 2, 0 +_02034708: .word MENU_CONTROL_PTR +_0203470C: .word NULL_OVERLAY_LOAD_ENTRY + arm_func_end sub_020346C0 + + arm_func_start sub_02034710 +sub_02034710: ; 0x02034710 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x10 + ldr r1, _02034798 ; =MENU_CONTROL_PTR + ldr r0, _0203479C ; =NULL_OVERLAY_LOAD_ENTRY + ldr r1, [r1] + add r4, r1, #0xc4 + mov r1, r4 + bl OverlayLoadEntriesEqual + cmp r0, #0 + bne _0203473C + bl FreeActiveMenu +_0203473C: + ldr r0, _0203479C ; =NULL_OVERLAY_LOAD_ENTRY + add r7, sp, #0 + ldmia r0, {r0, r1, r2, r3} + stmia r7, {r0, r1, r2, r3} + ldr ip, _02034798 ; =MENU_CONTROL_PTR + ldmia r7, {r0, r1, r2, r3} + ldr r5, [ip] + mov r6, #0 + stmia r5, {r0, r1, r2, r3} + strb r6, [r5, #0x10] + ldr r5, [ip] + ldmia r7, {r0, r1, r2, r3} + add lr, r5, #0x14 + stmia lr, {r0, r1, r2, r3} + str r6, [r5, #0x24] + ldr r0, [ip] + strb r6, [r0, #0xc0] + ldmia r7, {r0, r1, r2, r3} + stmia r4, {r0, r1, r2, r3} + ldr r0, [ip] + str r6, [r0, #0xd4] + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02034798: .word MENU_CONTROL_PTR +_0203479C: .word NULL_OVERLAY_LOAD_ENTRY + arm_func_end sub_02034710 + + arm_func_start OverlayLoadEntriesEqual +OverlayLoadEntriesEqual: ; 0x020347A0 + cmp r0, #0 + ldreq r0, _020347EC ; =NULL_OVERLAY_LOAD_ENTRY + cmp r1, #0 + ldreq r1, _020347EC ; =NULL_OVERLAY_LOAD_ENTRY + 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 r2, [r0, #0xc] + ldreq r0, [r1, #0xc] + cmpeq r2, r0 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_020347EC: .word NULL_OVERLAY_LOAD_ENTRY + arm_func_end OverlayLoadEntriesEqual + + arm_func_start FreeActiveMenu +FreeActiveMenu: ; 0x020347F0 + stmdb sp!, {r4, lr} + ldr r0, _0203483C ; =MENU_CONTROL_PTR + ldr r4, [r0] + ldr r0, [r4, #0xcc] + cmp r0, #0 + beq _0203480C + blx r0 +_0203480C: + ldr r0, _0203483C ; =MENU_CONTROL_PTR + ldr r0, [r0] + ldrb r0, [r0, #0xd8] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0xc4] + bl UnloadOverlay + ldr r0, _0203483C ; =MENU_CONTROL_PTR + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0xd8] + ldmia sp!, {r4, pc} + .align 2, 0 +_0203483C: .word MENU_CONTROL_PTR + arm_func_end FreeActiveMenu + + arm_func_start sub_02034840 +sub_02034840: ; 0x02034840 + stmdb sp!, {r4, lr} + ldr r1, _020348DC ; =MENU_CONTROL_PTR + mov r4, r0 + ldr r2, [r1] + ldrb r1, [r2, #0x10] + cmp r1, #0 + beq _02034894 + cmp r4, #0 + beq _0203487C + add r1, r2, #0x14 + bl OverlayLoadEntriesEqual + cmp r0, #0 + beq _02034894 + mov r0, #1 + ldmia sp!, {r4, pc} +_0203487C: + ldr r0, _020348E0 ; =NULL_OVERLAY_LOAD_ENTRY + add r1, r2, #0x14 + bl OverlayLoadEntriesEqual + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r4, pc} +_02034894: + cmp r4, #0 + beq _020348B4 + ldr r1, _020348DC ; =MENU_CONTROL_PTR + mov r0, r4 + ldr r1, [r1] + add r1, r1, #0xc4 + bl OverlayLoadEntriesEqual + ldmia sp!, {r4, pc} +_020348B4: + ldr r1, _020348DC ; =MENU_CONTROL_PTR + ldr r0, _020348E0 ; =NULL_OVERLAY_LOAD_ENTRY + ldr r1, [r1] + add r1, r1, #0x14 + bl OverlayLoadEntriesEqual + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r4, pc} + .align 2, 0 +_020348DC: .word MENU_CONTROL_PTR +_020348E0: .word NULL_OVERLAY_LOAD_ENTRY + arm_func_end sub_02034840 diff --git a/asm/main_0203C774.s b/asm/main_0203C774.s index 4a233fac..b300053c 100644 --- a/asm/main_0203C774.s +++ b/asm/main_0203C774.s @@ -143,7410 +143,3 @@ sub_0203C8E0: ; 0x0203C8E0 .align 2, 0 _0203C90C: .word _020AFE70 arm_func_end sub_0203C8E0 - - arm_func_start sub_0203C910 -sub_0203C910: ; 0x0203C910 - ldr r0, _0203C93C ; =_020AFE70 - ldr r0, [r0] - cmp r0, #0 - moveq r0, #0 - bxeq lr - ldr r0, [r0, #0xc] - cmp r0, #4 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_0203C93C: .word _020AFE70 - arm_func_end sub_0203C910 - - arm_func_start sub_0203C940 -sub_0203C940: ; 0x0203C940 - stmdb sp!, {r3, lr} - ldr r0, _0203C980 ; =_020AFE70 - ldr r0, [r0] - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - ldr r1, [r0, #0xc] - cmp r1, #0xa - movne r0, #0 - ldmneia sp!, {r3, pc} - bl MemFree - ldr r0, _0203C980 ; =_020AFE70 - mov r1, #0 - str r1, [r0] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0203C980: .word _020AFE70 - arm_func_end sub_0203C940 - - arm_func_start sub_0203C984 -sub_0203C984: ; 0x0203C984 - ldr r0, _0203C99C ; =_020AFE70 - ldr r1, [r0] - cmp r1, #0 - movne r0, #0 - strneh r0, [r1, #8] - bx lr - .align 2, 0 -_0203C99C: .word _020AFE70 - arm_func_end sub_0203C984 - - arm_func_start sub_0203C9A0 -sub_0203C9A0: ; 0x0203C9A0 - ldr r1, _0203C9C0 ; =_020AFE70 - ldr r2, [r1] - ldrsh r1, [r2, #4] - cmp r0, r1 - moveq r0, #0 - strneh r0, [r2, #4] - movne r0, #1 - bx lr - .align 2, 0 -_0203C9C0: .word _020AFE70 - arm_func_end sub_0203C9A0 - - arm_func_start sub_0203C9C4 -sub_0203C9C4: ; 0x0203C9C4 - ldr r0, _0203C9E0 ; =_020AFE70 - mvn r2, #0 - ldr r1, [r0] - strh r2, [r1, #6] - ldr r0, [r0] - strh r2, [r0, #4] - bx lr - .align 2, 0 -_0203C9E0: .word _020AFE70 - arm_func_end sub_0203C9C4 - - arm_func_start sub_0203C9E4 -sub_0203C9E4: ; 0x0203C9E4 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x2c - ldr r0, _0203CA38 ; =_020AFE70 - ldr r5, [r0] - cmp r5, #0 - beq _0203CA30 - ldr r4, _0203CA3C ; =_0209C7F4 - add lr, sp, #0 - mov ip, #2 -_0203CA08: - ldmia r4!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0203CA08 - ldmia r4, {r0, r1, r2} - stmia lr, {r0, r1, r2} - ldr r1, [r5, #0xc] - add r0, sp, #0 - ldr r0, [r0, r1, lsl #2] - blx r0 -_0203CA30: - add sp, sp, #0x2c - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_0203CA38: .word _020AFE70 -_0203CA3C: .word _0209C7F4 - arm_func_end sub_0203C9E4 - - arm_func_start sub_0203CA40 -sub_0203CA40: ; 0x0203CA40 - stmdb sp!, {r3, lr} - bl ov11_0230D220 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov11_0230D92C - ldr r0, _0203CA68 ; =_020AFE70 - mov r1, #1 - ldr r0, [r0] - str r1, [r0, #0xc] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203CA68: .word _020AFE70 - arm_func_end sub_0203CA40 - - arm_func_start sub_0203CA6C -sub_0203CA6C: ; 0x0203CA6C - stmdb sp!, {r3, lr} - bl ov11_0230D220 - cmp r0, #0 - ldreq r0, _0203CA8C ; =_020AFE70 - moveq r1, #2 - ldreq r0, [r0] - streq r1, [r0, #0xc] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203CA8C: .word _020AFE70 - arm_func_end sub_0203CA6C - - arm_func_start sub_0203CA90 -sub_0203CA90: ; 0x0203CA90 - stmdb sp!, {r3, lr} - bl ov11_0230D220 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0203CAC8 ; =_020AFE70 - ldr r0, [r0] - ldrsh r0, [r0, #4] - bl sub_0203CCD8 - bl ov11_02310C18 - ldr r0, _0203CAC8 ; =_020AFE70 - mov r1, #3 - ldr r0, [r0] - str r1, [r0, #0xc] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203CAC8: .word _020AFE70 - arm_func_end sub_0203CA90 - - arm_func_start sub_0203CACC -sub_0203CACC: ; 0x0203CACC - stmdb sp!, {r3, lr} - bl ov11_0230D220 - cmp r0, #0 - ldreq r0, _0203CAEC ; =_020AFE70 - moveq r1, #4 - ldreq r0, [r0] - streq r1, [r0, #0xc] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203CAEC: .word _020AFE70 - arm_func_end sub_0203CACC - - arm_func_start sub_0203CAF0 -sub_0203CAF0: ; 0x0203CAF0 - stmdb sp!, {r3, lr} - ldr r0, _0203CB54 ; =_020AFE70 - ldr r2, [r0] - ldrb r1, [r2, #0xa] - cmp r1, #0 - movne r0, #5 - strne r0, [r2, #0xc] - ldmneia sp!, {r3, pc} - ldrh r1, [r2, #8] - add r1, r1, #1 - strh r1, [r2, #8] - ldr r3, [r0] - ldrh r1, [r3, #8] - cmp r1, #0x1e - ldmloia sp!, {r3, pc} - ldrsh r2, [r3, #4] - ldrsh r1, [r3, #6] - cmp r2, r1 - ldmeqia sp!, {r3, pc} - mov r1, #0 - strh r1, [r3, #8] - ldr r0, [r0] - ldrsh r0, [r0, #4] - bl sub_0203CCD8 - ldmia sp!, {r3, pc} - .align 2, 0 -_0203CB54: .word _020AFE70 - arm_func_end sub_0203CAF0 - - arm_func_start sub_0203CB58 -sub_0203CB58: ; 0x0203CB58 - stmdb sp!, {r3, lr} - bl ov11_0230D220 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov11_0230D92C - ldr r0, _0203CB80 ; =_020AFE70 - mov r1, #6 - ldr r0, [r0] - str r1, [r0, #0xc] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203CB80: .word _020AFE70 - arm_func_end sub_0203CB58 - - arm_func_start sub_0203CB84 -sub_0203CB84: ; 0x0203CB84 - stmdb sp!, {r3, lr} - bl ov11_0230D220 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0203CC5C ; =_020AFE70 - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0] - cmp r0, r1 - beq _0203CBD0 - bl HidePortraitBox - ldr r0, _0203CC5C ; =_020AFE70 - ldr r0, [r0] - ldrsb r0, [r0] - bl ClosePortraitBox - ldr r0, _0203CC5C ; =_020AFE70 - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0] -_0203CBD0: - ldr r0, _0203CC5C ; =_020AFE70 - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #2] - cmp r0, r1 - beq _0203CC0C - bl sub_0202F954 - ldr r0, _0203CC5C ; =_020AFE70 - ldr r0, [r0] - ldrsb r0, [r0, #2] - bl CloseTextBox - ldr r0, _0203CC5C ; =_020AFE70 - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #2] -_0203CC0C: - ldr r0, _0203CC5C ; =_020AFE70 - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #1] - cmp r0, r1 - beq _0203CC48 - bl sub_0202F954 - ldr r0, _0203CC5C ; =_020AFE70 - ldr r0, [r0] - ldrsb r0, [r0, #1] - bl CloseTextBox - ldr r0, _0203CC5C ; =_020AFE70 - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #1] -_0203CC48: - ldr r0, _0203CC5C ; =_020AFE70 - mov r1, #0xa - ldr r0, [r0] - str r1, [r0, #0xc] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203CC5C: .word _020AFE70 - arm_func_end sub_0203CB84 - - arm_func_start sub_0203CC60 -sub_0203CC60: ; 0x0203CC60 - stmdb sp!, {r3, lr} - bl ov11_0230D220 - cmp r0, #0 - ldreq r0, _0203CC80 ; =_020AFE70 - moveq r1, #0xa - ldreq r0, [r0] - streq r1, [r0, #0xc] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203CC80: .word _020AFE70 - arm_func_end sub_0203CC60 - - arm_func_start sub_0203CC84 -sub_0203CC84: ; 0x0203CC84 - stmdb sp!, {r3, lr} - bl ov11_0230D220 - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl ov11_0230D000 - ldr r0, _0203CCAC ; =_020AFE70 - mov r1, #9 - ldr r0, [r0] - str r1, [r0, #0xc] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203CCAC: .word _020AFE70 - arm_func_end sub_0203CC84 - - arm_func_start sub_0203CCB0 -sub_0203CCB0: ; 0x0203CCB0 - stmdb sp!, {r3, lr} - bl ov11_0230D220 - cmp r0, #0 - ldreq r0, _0203CCD0 ; =_020AFE70 - moveq r1, #0xa - ldreq r0, [r0] - streq r1, [r0, #0xc] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203CCD0: .word _020AFE70 - arm_func_end sub_0203CCB0 - - arm_func_start sub_0203CCD4 -sub_0203CCD4: ; 0x0203CCD4 - bx lr - arm_func_end sub_0203CCD4 - - arm_func_start sub_0203CCD8 -sub_0203CCD8: ; 0x0203CCD8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r1, _0203CE00 ; =TEAM_MEMBER_TABLE_PTR - ldr r2, _0203CE04 ; =_020AFE70 - ldr r4, [r1] - ldr r3, [r2] - mov r1, #0x44 - strh r0, [r3, #6] - ldr r3, [r2] - sub r2, r1, #0x46 - ldrsb r3, [r3] - smlabb r4, r0, r1, r4 - cmp r3, r2 - bne _0203CD2C - mov r0, #1 - mov r1, #3 - mov r2, #0 - bl CreatePortraitBox - ldr r1, _0203CE04 ; =_020AFE70 - ldr r1, [r1] - strb r0, [r1] -_0203CD2C: - ldr r1, _0203CE04 ; =_020AFE70 - mvn r0, #1 - ldr r1, [r1] - ldrsb r1, [r1, #1] - cmp r1, r0 - bne _0203CD5C - ldr r0, _0203CE08 ; =_0209C7E4 - ldr r1, _0203CE0C ; =sub_0203CE1C - bl CreateTextBox - ldr r1, _0203CE04 ; =_020AFE70 - ldr r1, [r1] - strb r0, [r1, #1] -_0203CD5C: - ldr r1, _0203CE04 ; =_020AFE70 - mvn r0, #1 - ldr r1, [r1] - ldrsb r1, [r1, #2] - cmp r1, r0 - bne _0203CD8C - ldr r0, _0203CE10 ; =_0209C7D4 - ldr r1, _0203CE14 ; =sub_0203CFCC - bl CreateTextBox - ldr r1, _0203CE04 ; =_020AFE70 - ldr r1, [r1] - strb r0, [r1, #2] -_0203CD8C: - add r0, sp, #0 - bl InitPortraitParams - ldrsh r1, [r4, #4] - add r0, sp, #0 - bl InitPortraitParamsWithMonsterId - add r0, sp, #0 - mov r1, #2 - bl SetPortraitLayout - ldr r1, _0203CE18 ; =_0209C7CC - add r0, sp, #0 - bl SetPortraitOffset - add r0, sp, #0 - mov r1, #0 - bl SetPortraitEmotion - ldr r0, _0203CE04 ; =_020AFE70 - add r1, sp, #0 - ldr r0, [r0] - ldrsb r0, [r0] - bl ShowPortraitInPortraitBox - ldr r0, _0203CE04 ; =_020AFE70 - ldr r0, [r0] - ldrsb r0, [r0, #1] - bl IsTextboxState3 - ldr r0, _0203CE04 ; =_020AFE70 - ldr r0, [r0] - ldrsb r0, [r0, #2] - bl IsTextboxState3 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_0203CE00: .word TEAM_MEMBER_TABLE_PTR -_0203CE04: .word _020AFE70 -_0203CE08: .word _0209C7E4 -_0203CE0C: .word sub_0203CE1C -_0203CE10: .word _0209C7D4 -_0203CE14: .word sub_0203CFCC -_0203CE18: .word _0209C7CC - arm_func_end sub_0203CCD8 - - arm_func_start sub_0203CE1C -sub_0203CE1C: ; 0x0203CE1C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x1d4 - mov r5, r0 - mvn r1, #1 - cmp r5, r1 - beq _0203CF84 - ldr r1, _0203CF8C ; =_020AFE70 - ldr r2, _0203CF90 ; =TEAM_MEMBER_TABLE_PTR - ldr r1, [r1] - ldr r3, [r2] - ldrsh r2, [r1, #6] - mov r1, #0x44 - smlabb r4, r2, r1, r3 - bl ClearWindow - ldrsh r0, [r4, #4] - bl GetDexNumber - str r0, [sp, #0xa8] - add r1, sp, #0x84 - str r1, [sp] - ldr r2, _0203CF94 ; =_0209C820 - ldr r3, _0203CF98 ; =0x0000C402 - add r0, sp, #0xd4 - mov r1, #0x100 - bl PreprocessString - mov r0, r5 - mov r1, #0x20 - mov r2, #0 - add r3, sp, #0xd4 - bl DrawTextInWindow - ldr r0, _0203CF8C ; =_020AFE70 - ldr r0, [r0] - ldrsh r0, [r0, #6] - bl sub_02056410 - cmp r0, #0 - beq _0203CEC8 - ldr r0, _0203CF8C ; =_020AFE70 - ldr r0, [r0] - ldrsh r0, [r0, #6] - bl sub_020564B0 - cmp r0, #0 - movne r0, #0x59 - moveq r0, #0x46 - b _0203CEE4 -_0203CEC8: - ldr r0, _0203CF8C ; =_020AFE70 - ldr r0, [r0] - ldrsh r0, [r0, #6] - bl sub_02056F60 - cmp r0, #0 - movne r0, #0x44 - moveq r0, #0x57 -_0203CEE4: - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - add r0, sp, #0xd4 - add r1, r4, #0x3a - mov r2, #0xa - bl StrncpySimpleNoPadSafe - ldr r1, _0203CF9C ; =_0209C82C - add r0, sp, #0x44 - add r3, sp, #0xd4 - mov r2, r6 - bl SprintfStatic__0203CFA4 - ldrsh r1, [r4, #4] - add r0, sp, #0xd4 - bl GetSpeciesString - ldr r1, _0203CF9C ; =_0209C82C - add r0, sp, #4 - mov r2, #0x4b - add r3, sp, #0xd4 - bl SprintfStatic__0203CFA4 - ldr r1, _0203CFA0 ; =_0209C83C - add r0, sp, #0xd4 - add r2, sp, #0x44 - add r3, sp, #4 - bl SprintfStatic__0203CFA4 - mov r0, r5 - mov r1, #0x4c - mov r2, #0 - add r3, sp, #0xd4 - bl DrawTextInWindow - ldrsh r1, [r4, #4] - add r0, sp, #0xd4 - orr r1, r1, #0x10000 - bl sub_02024D7C - mov r0, r5 - mov r1, #0xd0 - mov r2, #0 - add r3, sp, #0xd4 - bl DrawTextInWindow - mov r0, r5 - bl UpdateWindow -_0203CF84: - add sp, sp, #0x1d4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_0203CF8C: .word _020AFE70 -_0203CF90: .word TEAM_MEMBER_TABLE_PTR -_0203CF94: .word _0209C820 -_0203CF98: .word 0x0000C402 -_0203CF9C: .word _0209C82C -_0203CFA0: .word _0209C83C - arm_func_end sub_0203CE1C - - arm_func_start SprintfStatic__0203CFA4 -SprintfStatic__0203CFA4: ; 0x0203CFA4 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r2, sp, #0xc - bic r2, r2, #3 - ldr r1, [sp, #0xc] - add r2, r2, #4 - bl vsprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SprintfStatic__0203CFA4 - - arm_func_start sub_0203CFCC -sub_0203CFCC: ; 0x0203CFCC - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xcc - sub sp, sp, #0x400 - mov r5, #4 - mov r6, r0 - sub r0, r5, #6 - cmp r6, r0 - beq _0203D3F4 - ldr r1, _0203D400 ; =_020AFE70 - add r0, sp, #4 - ldr r1, [r1] - ldrsh r1, [r1, #6] - bl sub_0205B028 - ldr r0, _0203D400 ; =_020AFE70 - ldr r1, _0203D404 ; =TEAM_MEMBER_TABLE_PTR - ldr r0, [r0] - ldr r3, [r1] - ldrsh r2, [r0, #6] - mov r1, #0x44 - mov r0, r6 - smlabb r4, r2, r1, r3 - bl ClearWindow - ldrsh r0, [sp, #4] - mov r1, #0 - bl GetType - mov r8, r0 - ldrsh r0, [sp, #4] - mov r1, #1 - bl GetType - mov r1, r5 - mov r7, r0 - ldr r3, _0203D408 ; =0x00000976 - mov r0, r6 - mov r2, r1 - bl AppendStandardStringToMission - mov r0, r8 - bl GetTypeStringId - mov r3, r0 - mov r0, r6 - mov r1, #0x38 - mov r2, r5 - bl AppendStandardStringToMission - cmp r7, #0 - beq _0203D098 - mov r0, r7 - bl GetTypeStringId - mov r3, r0 - mov r0, r6 - mov r1, #0x68 - mov r2, r5 - bl AppendStandardStringToMission -_0203D098: - add r0, r5, #0xc - mov r1, r0, lsl #0x10 - ldr r2, [sp, #0x30] - ldr r0, _0203D40C ; =0x00000977 - str r2, [sp, #0xa0] - mov r5, r1, asr #0x10 - bl StringFromId - mov r2, r0 - add ip, sp, #0x7c - add r0, sp, #0xcc - mov r1, #0x400 - mov r3, #0 - str ip, [sp] - bl PreprocessString - add r3, sp, #0xcc - mov r0, r6 - mov r1, #4 - mov r2, r5 - bl DrawTextInWindow - add r0, r5, #0xc - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - ldr r0, [sp, #0x2c] - ldr r1, [sp, #0x28] - str r0, [sp, #0xa4] - ldr r0, _0203D410 ; =0x00000978 - str r1, [sp, #0xa0] - bl StringFromId - add r1, sp, #0x7c - mov r2, r0 - str r1, [sp] - add r0, sp, #0xcc - mov r1, #0x400 - mov r3, #0 - bl PreprocessString - mov r0, r6 - mov r1, #4 - mov r2, r5 - add r3, sp, #0xcc - bl DrawTextInWindow - add r0, r5, #0xc - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - ldr r0, _0203D414 ; =0x00000979 - bl StringFromId - add r1, sp, #0x7c - mov r2, r0 - str r1, [sp] - add r0, sp, #0xcc - mov r1, #0x400 - mov r3, #0 - bl PreprocessString - mov r0, r6 - mov r1, #4 - mov r2, r5 - add r3, sp, #0xcc - bl DrawTextInWindow - ldrb r2, [sp, #0x38] - ldrb r1, [sp, #0x3d] - ldr r0, _0203D418 ; =0x0000097B - str r2, [sp, #0xa0] - cmp r1, #0 - addne r1, r2, r1 - addne r0, r0, #1 - strne r1, [sp, #0xa0] - bl StringFromId - mov r2, r0 - add ip, sp, #0x7c - add r0, sp, #0xcc - mov r1, #0x400 - mov r3, #0 - str ip, [sp] - bl PreprocessString - add r3, sp, #0xcc - mov r0, r6 - mov r2, r5 - mov r1, #4 - bl DrawTextInWindow - ldrb r2, [sp, #0x3a] - ldrb r1, [sp, #0x3f] - ldr r0, _0203D41C ; =0x0000097F - str r2, [sp, #0xa0] - cmp r1, #0 -#ifdef JAPAN - addne r1, r2, r1 - strne r1, [sp, #0xa0] - addne r0, r0, #1 -#else - addne r0, r2, r1 - strne r0, [sp, #0xa0] - movne r0, #0x980 -#endif - bl StringFromId - mov r2, r0 - add ip, sp, #0x7c - add r0, sp, #0xcc - mov r1, #0x400 - mov r3, #0 - str ip, [sp] - bl PreprocessString - add r3, sp, #0xcc - mov r0, r6 - mov r2, r5 - mov r1, #4 - bl DrawTextInWindow - add r0, r5, #0xc - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - ldr r0, _0203D420 ; =0x0000097A - bl StringFromId - add r1, sp, #0x7c - mov r2, r0 - str r1, [sp] - add r0, sp, #0xcc - mov r1, #0x400 - mov r3, #0 - bl PreprocessString - mov r0, r6 - mov r1, #4 - mov r2, r5 - add r3, sp, #0xcc - bl DrawTextInWindow - ldrb r2, [sp, #0x39] - ldrb r1, [sp, #0x3e] - ldr r0, _0203D424 ; =0x0000097D - str r2, [sp, #0xa0] - cmp r1, #0 - addne r1, r2, r1 - addne r0, r0, #1 - strne r1, [sp, #0xa0] - bl StringFromId - mov r2, r0 - add ip, sp, #0x7c - add r0, sp, #0xcc - mov r1, #0x400 - mov r3, #0 - str ip, [sp] - bl PreprocessString - add r3, sp, #0xcc - mov r0, r6 - mov r2, r5 - mov r1, #4 - bl DrawTextInWindow - ldrb r2, [sp, #0x3b] - ldrb r1, [sp, #0x40] - ldr r0, _0203D428 ; =0x00000981 - str r2, [sp, #0xa0] - cmp r1, #0 - addne r1, r2, r1 - addne r0, r0, #1 - strne r1, [sp, #0xa0] - bl StringFromId - mov r2, r0 - add ip, sp, #0x7c - add r0, sp, #0xcc - mov r1, #0x400 - mov r3, #0 - str ip, [sp] - bl PreprocessString - add r3, sp, #0xcc - mov r0, r6 - mov r2, r5 - mov r1, #4 - bl DrawTextInWindow - ldrsh r0, [sp, #0x42] - mov r1, #0xa - str r0, [sp, #0xa0] - bl _s32_div_f - mov r0, r0, lsl #0x10 - movs r0, r0, asr #0x10 - movmi r0, #0 - bmi _0203D338 - cmp r0, #0x63 - movge r0, #0x63 -_0203D338: - bl sub_0205B0A0 - str r0, [sp, #0xb4] - ldr r0, _0203D42C ; =0x00000983 - bl StringFromId - add r1, sp, #0x7c - mov r2, r0 - str r1, [sp] - add r0, sp, #0xcc - mov r1, #0x400 - mov r3, #0 - bl PreprocessString - add r0, r5, #0xc - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - mov r0, r6 - mov r1, #4 - mov r2, r5 - add r3, sp, #0xcc - bl DrawTextInWindow - ldrsh r0, [r4, #4] - ldrsh r1, [sp, #0x42] - bl GetNextIqSkill - cmp r0, #0 - add r4, sp, #0x7c - mov r1, #0x400 - bne _0203D3B8 - ldr r2, _0203D430 ; =0x00000986 - add r0, sp, #0xcc - mov r3, #0 - str r4, [sp] - bl PreprocessStringFromId - b _0203D3D0 -_0203D3B8: - ldr r2, _0203D434 ; =0x00000985 - str r0, [sp, #0x8c] - add r0, sp, #0xcc - mov r3, #0 - str r4, [sp] - bl PreprocessStringFromId -_0203D3D0: - add r0, r5, #0xc - mov r1, r0, lsl #0x10 - mov r2, r1, asr #0x10 - add r3, sp, #0xcc - mov r0, r6 - mov r1, #4 - bl DrawTextInWindow - mov r0, r6 - bl UpdateWindow -_0203D3F4: - add sp, sp, #0xcc - add sp, sp, #0x400 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -#ifdef JAPAN -#define SUB_0203CFCC_OFFSET 0x19D0 -#else -#define SUB_0203CFCC_OFFSET 0 -#endif -_0203D400: .word _020AFE70 -_0203D404: .word TEAM_MEMBER_TABLE_PTR -_0203D408: .word 0x00000976 + SUB_0203CFCC_OFFSET -_0203D40C: .word 0x00000977 + SUB_0203CFCC_OFFSET -_0203D410: .word 0x00000978 + SUB_0203CFCC_OFFSET -_0203D414: .word 0x00000979 + SUB_0203CFCC_OFFSET -_0203D418: .word 0x0000097B + SUB_0203CFCC_OFFSET -_0203D41C: .word 0x0000097F + SUB_0203CFCC_OFFSET -_0203D420: .word 0x0000097A + SUB_0203CFCC_OFFSET -_0203D424: .word 0x0000097D + SUB_0203CFCC_OFFSET -_0203D428: .word 0x00000981 + SUB_0203CFCC_OFFSET -_0203D42C: .word 0x00000983 + SUB_0203CFCC_OFFSET -_0203D430: .word 0x00000986 + SUB_0203CFCC_OFFSET -_0203D434: .word 0x00000985 + SUB_0203CFCC_OFFSET - arm_func_end sub_0203CFCC - - arm_func_start sub_0203D438 -sub_0203D438: ; 0x0203D438 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - mov r5, r1 - mov r0, #0x3c0 - mov r1, #8 - mov r4, r2 - bl MemAlloc - ldr r2, _0203D534 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x3c0 - str r0, [r2] - bl MemZero - ldr r0, _0203D534 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov ip, #2 - ldr r7, [r0] - add lr, r7, #0x14 -_0203D474: - ldmia r6!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0203D474 - ldmia r6, {r0, r1, r2} - stmia lr, {r0, r1, r2} - mov r1, #0 - ldr r0, _0203D534 ; =MISSION_REWARD_STRUCT_MAIN_PTR - str r1, [r7, #0x10] - ldr r1, [r0] - str r5, [r1, #8] - ldr r1, [r0] - str r4, [r1, #0xe4] - ldr r0, [r0] - add r0, r0, #0x8c - bl InitPreprocessorArgs - ldr r0, _0203D534 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r2, #0x70000 - ldr r1, [r0] - str r2, [r1, #0xd8] - ldr r2, [r0] - ldrsh r1, [r2, #0x14] - str r1, [r2, #0x8c] - ldr r0, [r0] - add r0, r0, #0x190 - bl InitPortraitParams - ldr r0, _0203D534 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - ldrsh r1, [r0, #0x14] - cmp r1, #0 - beq _0203D4F8 - add r0, r0, #0x190 - bl InitPortraitParamsWithMonsterId -_0203D4F8: - ldr r1, _0203D534 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mvn r4, #1 - ldr r0, [r1] - mov r3, #0 - strb r4, [r0, #4] - ldr r2, [r1] - mov r0, #1 - strb r4, [r2, #5] - ldr r2, [r1] - strb r4, [r2, #6] - ldr r2, [r1] - str r3, [r2] - ldr r1, [r1] - strb r4, [r1, #0x1a0] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0203D534: .word MISSION_REWARD_STRUCT_MAIN_PTR - arm_func_end sub_0203D438 - - arm_func_start sub_0203D538 -sub_0203D538: ; 0x0203D538 -#ifdef JAPAN -#define SUB_0203D538_STACK_OFFSET -6 -#define SUB_0203D538_STACK_OFFSET_2 -8 -#else -#define SUB_0203D538_STACK_OFFSET 0 -#define SUB_0203D538_STACK_OFFSET_2 0 -#endif - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x11c + SUB_0203D538_STACK_OFFSET_2 - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r4, [r1] - ldr r0, [r4] - cmp r0, #0x4c - addls pc, pc, r0, lsl #2 - b _0203EF9C -_0203D558: ; jump table - b _0203D68C ; case 0 - b _0203D7D4 ; case 1 - b _0203D89C ; case 2 - b _0203D8CC ; case 3 - b _0203D8EC ; case 4 - b _0203D954 ; case 5 - b _0203D984 ; case 6 - b _0203D9A4 ; case 7 - b _0203DA64 ; case 8 - b _0203DAA0 ; case 9 - b _0203DAEC ; case 10 - b _0203DB20 ; case 11 - b _0203DBB0 ; case 12 - b _0203DC68 ; case 13 - b _0203DC98 ; case 14 - b _0203DCB8 ; case 15 - b _0203DD68 ; case 16 - b _0203DDAC ; case 17 - b _0203DE38 ; case 18 - b _0203DE50 ; case 19 - b _0203DE6C ; case 20 - b _0203DEA0 ; case 21 - b _0203DEBC ; case 22 - b _0203DF1C ; case 23 - b _0203DF40 ; case 24 - b _0203DF5C ; case 25 - b _0203DF74 ; case 26 - b _0203DF90 ; case 27 - b _0203DFB0 ; case 28 - b _0203DFD8 ; case 29 - b _0203E10C ; case 30 - b _0203E150 ; case 31 - b _0203E038 ; case 32 - b _0203E0BC ; case 33 - b _0203E0EC ; case 34 - b _0203E198 ; case 35 - b _0203E1DC ; case 36 - b _0203E20C ; case 37 - b _0203E22C ; case 38 - b _0203E274 ; case 39 - b _0203E2A4 ; case 40 - b _0203E2C4 ; case 41 - b _0203E460 ; case 42 - b _0203E490 ; case 43 - b _0203E518 ; case 44 - b _0203E8E8 ; case 45 - b _0203E934 ; case 46 - b _0203E964 ; case 47 - b _0203E984 ; case 48 - b _0203E9A8 ; case 49 - b _0203E9D8 ; case 50 - b _0203E9F8 ; case 51 - b _0203E5B4 ; case 52 - b _0203E61C ; case 53 - b _0203E6B8 ; case 54 - b _0203E6D8 ; case 55 - b _0203E7EC ; case 56 - b _0203E80C ; case 57 - b _0203EA24 ; case 58 - b _0203EAB8 ; case 59 - b _0203EAE8 ; case 60 - b _0203EB08 ; case 61 - b _0203EB64 ; case 62 - b _0203EB94 ; case 63 - b _0203EBB4 ; case 64 - b _0203EC28 ; case 65 - b _0203EC5C ; case 66 - b _0203ECA8 ; case 67 - b _0203ECC4 ; case 68 - b _0203ED34 ; case 69 - b _0203ED50 ; case 70 - b _0203EE14 ; case 71 - b _0203EE30 ; case 72 - b _0203EE68 ; case 73 - b _0203EEBC ; case 74 - b _0203EF78 ; case 75 - b _0203EF94 ; case 76 -_0203D68C: - ldrb r0, [r4, #0x36] - cmp r0, #0 - beq _0203D6E4 - bl GetEggSpecies - cmp r0, #0 - bne _0203D6B4 - mov r0, #0x1e - bl GetResolvedPerformanceProgressFlag - cmp r0, #0 - bne _0203D73C -_0203D6B4: - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mvn r0, #0 - ldr r4, [r1] - mov r2, #0 - ldr r3, [r4, #0x1c] - mul r0, r3, r0 - str r0, [r4, #0x1c] - ldr r0, [r1] - strb r2, [r0, #0x36] - ldr r0, [r1] - strh r2, [r0, #0x38] - b _0203D73C -_0203D6E4: - ldrsh r0, [r4, #0x38] - cmp r0, #0 - beq _0203D73C - mov r0, #0x1d - bl GetResolvedPerformanceProgressFlag - cmp r0, #0 - beq _0203D718 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - ldrsh r0, [r0, #0x38] - bl IsMonsterIllegalForMissions - cmp r0, #0 - beq _0203D73C -_0203D718: - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r3, #0 - ldr r2, [r1] - sub r0, r3, #1 - strh r3, [r2, #0x38] - ldr r2, [r1] - ldr r1, [r2, #0x1c] - mul r0, r1, r0 - str r0, [r2, #0x1c] -_0203D73C: - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - ldr r0, [r0, #0xe4] - tst r0, #0x10 - bne _0203D7C0 - mov r0, #0x1f - bl GetResolvedPerformanceProgressFlag - cmp r0, #0 - bne _0203D7C0 - mov r5, #0 - mov r4, r5 - ldr sb, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mvn r7, #0 - mov r8, #6 - b _0203D7B0 -_0203D778: - mul r6, r5, r8 - add r0, r1, r6 - ldrsh r0, [r0, #0x28] - bl GetItemCategory - cmp r0, #0xf - bne _0203D7AC - ldr r0, [sb] - add r0, r0, r6 - strh r4, [r0, #0x28] - ldr r2, [sb] - ldr r0, [r2, #0x1c] - mul r1, r0, r7 - str r1, [r2, #0x1c] -_0203D7AC: - add r5, r5, #1 -_0203D7B0: - ldr r1, [sb] - ldr r0, [r1, #0x20] - cmp r5, r0 - blt _0203D778 -_0203D7C0: - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #1 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203D7D4: - ldr r0, [r4, #0x1c] - cmp r0, #0 - movle r0, #7 - strle r0, [r4] - ble _0203EF9C - str r0, [r4, #0xb0] -#ifdef JAPAN - ldr r3, [r1] - mov r0, #0xa - ldr r2, [r3, #0x1c] - mul r0, r2, r0 - str r0, [r3, #0xb4] - ldr r1, [r1] - ldr r0, [r1, #8] - cmp r0, #0 - beq _0203D890 - cmp r0, #2 - bne _0203DC0C - ldr r4, _0203E4B4 ; =0x0000245D - bl sub_0203F00C - b _0203D864 -_0203DC0C: - cmp r0, #3 - bne _0203DC20 - ldr r4, _0203E89C ; =0x0000245E - bl sub_0203F00C - b _0203D864 -_0203DC20: - cmp r0, #4 - ldrne r4, _0203E8A0 ; =0x0000245C -#else - ldr r4, [r1] - mov r0, #0xa - ldr r2, [r4, #0x1c] - mul r3, r2, r0 - str r3, [r4, #0xb4] - ldr r2, [r1] - ldr r1, [r2, #8] - cmp r1, #0 - beq _0203D890 - cmp r1, #2 - bne _0203D824 - ldr r4, _0203E4B4 ; =0x00000289 - bl sub_0203F00C - b _0203D864 -_0203D824: - cmp r1, #3 - bne _0203D838 - add r4, r0, #0x280 - bl sub_0203F00C - b _0203D864 -_0203D838: - cmp r1, #4 - movne r4, #0x288 -#endif - bne _0203D864 - mov r0, #0 - mov r1, #0x69 - bl LoadScriptVariableValue -#ifdef JAPAN - add r0, r0, #0x5f - add r0, r0, #0x2400 -#else - add r0, r0, #0x8b - add r0, r0, #0x200 -#endif - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - bl sub_0203F00C -_0203D864: - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, _0203E4B8 ; =0x0000101C - ldr r2, [r1] - mov r1, r4 - add r2, r2, #0x8c - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #2 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203D890: - mov r0, #4 -#ifdef JAPAN - str r0, [r1] -#else - str r0, [r2] -#endif - b _0203EF9C -_0203D89C: - bl sub_02046C78 - cmp r0, #0 - beq _0203EF9C - bl MissionRewardCloseAllBoxes - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r3, #0xa - ldr r2, [r0] - mov r1, #3 - str r3, [r2, #0x188] - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203D8CC: - ldr r2, [r4, #0x188] - sub r0, r2, #1 - str r0, [r4, #0x188] - cmp r2, #0 - ldrle r0, [r1] - movle r1, #4 - strle r1, [r0] - b _0203EF9C -_0203D8EC: - mov r0, #4 - bl sub_02017C50 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - ldr r0, [r0, #0x1c] - bl AddMoneyCarried - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r2, [r0] - ldr r0, [r2, #8] - cmp r0, #2 - ldreq r1, _0203E4BC ; =0x0000026F - beq _0203D934 - cmp r0, #3 -#ifdef JAPAN - ldreq r1, _0203E8AC ; =0x00002444 -#else - moveq r1, #0x270 -#endif - beq _0203D934 - cmp r0, #4 - ldreq r1, _0203E4C0 ; =0x00000271 - ldrne r1, _0203E4C4 ; =0x0000026E -_0203D934: - ldr r0, _0203E4B8 ; =0x0000101C - add r2, r2, #0x8c - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #5 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203D954: - bl sub_02046C78 - cmp r0, #0 - beq _0203EF9C - bl MissionRewardCloseAllBoxes - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r3, #0xa - ldr r2, [r0] - mov r1, #6 - str r3, [r2, #0x188] - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203D984: - ldr r2, [r4, #0x188] - sub r0, r2, #1 - str r0, [r4, #0x188] - cmp r2, #0 - ldrle r0, [r1] - movle r1, #7 - strle r1, [r0] - b _0203EF9C -_0203D9A4: - ldrsh r0, [r4, #0x38] - cmp r0, #0 - beq _0203D9BC - ldrb r0, [r4, #0x36] - cmp r0, #0 - beq _0203D9C8 -_0203D9BC: - mov r0, #0x29 - str r0, [r4] - b _0203EF9C -_0203D9C8: - ldrsh r0, [r4, #0x14] - str r0, [r4, #0x8c] - ldr r2, [r1] - ldrsh r0, [r2, #0x38] - str r0, [r2, #0x90] - ldr r1, [r1] - ldr r0, [r1, #8] - cmp r0, #0 - beq _0203DA58 - cmp r0, #2 - bne _0203DA00 - ldr r4, _0203E4C8 ; =0x0000029A - bl sub_0203F00C - b _0203DA2C -_0203DA00: - cmp r0, #4 - ldrne r4, _0203E4CC ; =0x00000299 - bne _0203DA2C - mov r0, #0 - mov r1, #0x69 - bl LoadScriptVariableValue -#ifdef JAPAN - add r0, r0, #0x6f - add r0, r0, #0x2400 -#else - add r0, r0, #0x9b - add r0, r0, #0x200 -#endif - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 - bl sub_0203F00C -_0203DA2C: - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, _0203E4D0 ; =0x00003008 - ldr r2, [r1] - mov r1, r4 - add r2, r2, #0x8c - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #8 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203DA58: - mov r0, #0xb - str r0, [r1] - b _0203EF9C -_0203DA64: - bl sub_02046C78 - cmp r0, #0 - beq _0203EF9C - mov r0, #0 - ldr r3, _0203E4D4 ; =_0209C884 - mov r2, r0 - mov r1, #0x11 - bl CreateParentMenuFromStringIds - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r2, #9 - ldr r3, [r1] - strb r0, [r3, #4] - ldr r0, [r1] - str r2, [r0] - b _0203EF9C -_0203DAA0: - ldrsb r0, [r4, #4] - bl IsParentMenuActive - cmp r0, #0 - bne _0203EF9C - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl GetSimpleMenuResult__0202AEA4 - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r1, [r1] - str r0, [r1, #0x18c] - bl MissionRewardCloseAllBoxes - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r2, #0xa - ldr r1, [r0] - str r2, [r1, #0x188] - ldr r0, [r0] - str r2, [r0] - b _0203EF9C -_0203DAEC: - ldr r2, [r4, #0x188] - sub r0, r2, #1 - str r0, [r4, #0x188] - cmp r2, #0 - bgt _0203EF9C - ldr r1, [r1] - ldr r0, [r1, #0x18c] - cmp r0, #0 - moveq r0, #0xb - streq r0, [r1] - movne r0, #0x23 - strne r0, [r1] - b _0203EF9C -_0203DB20: - ldr r3, _0203E4D8 ; =_0209C846 - add r2, sp, #0x22 + SUB_0203D538_STACK_OFFSET - mov r1, #4 -_0203DB2C: - ldrh r0, [r3], #2 - subs r1, r1, #1 - strh r0, [r2], #2 - bne _0203DB2C - ldrsh r1, [r4, #0x38] - add r0, sp, #0x22 + SUB_0203D538_STACK_OFFSET - mov r2, #1 - mov r3, #0 - bl sub_02053A0C - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - add r1, sp, #0x22 + SUB_0203D538_STACK_OFFSET - ldr r0, [r0] - ldr r3, _0203E4DC ; =_0209C844 - str r1, [sp] - ldrsh r1, [r0, #0x38] - add r0, r0, #0x40 - mov r2, #0 - bl sub_02052E2C - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - add r0, r0, #0x40 - bl sub_02055D4C - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r2, [r1] - str r0, [r2, #0x3b8] - ldr r1, [r1] - ldr r0, [r1, #0x3b8] - cmp r0, #0 - movne r0, #0xc - strne r0, [r1] - moveq r0, #0x1e - streq r0, [r1] - b _0203EF9C -_0203DBB0: - ldr r0, [r4, #0x18] - cmp r0, #1 - ble _0203DBD0 - mov r1, r0, lsl #0x10 - ldr r0, [r4, #0x3b8] - mov r1, r1, asr #0x10 - mov r2, #1 - bl ApplyLevelUpBoostsToGroundMonster -_0203DBD0: - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r2, [r0] - ldrsh r1, [r2, #0x38] - str r1, [r2, #0x8c] - ldr r4, [r0] - ldr r0, [r4, #8] - cmp r0, #2 - bne _0203DC18 - ldr r0, _0203E4B8 ; =0x0000101C - ldr r1, _0203E4E0 ; =0x0000027A - add r2, r4, #0x8c - bl sub_02046BE8 - bl sub_0203F00C - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0xd - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203DC18: - cmp r0, #4 - movne r0, #0xf - strne r0, [r4] - bne _0203EF9C - mov r0, #0 - mov r1, #0x69 - bl LoadScriptVariableValue -#ifdef JAPAN - add r0, r0, #0x4f - add r0, r0, #0x2400 -#else - add r0, r0, #0x7b - add r0, r0, #0x200 -#endif - mov r1, r0, lsl #0x10 - ldr r0, _0203E4B8 ; =0x0000101C - mov r1, r1, lsr #0x10 - add r2, r4, #0x8c - bl sub_02046BE8 - bl sub_0203F00C - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0xd - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203DC68: - bl sub_02046C78 - cmp r0, #0 - beq _0203EF9C - bl MissionRewardCloseAllBoxes - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r3, #0xa - ldr r2, [r0] - mov r1, #0xe - str r3, [r2, #0x188] - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203DC98: - ldr r2, [r4, #0x188] - sub r0, r2, #1 - str r0, [r4, #0x188] - cmp r2, #0 - ldrle r0, [r1] - movle r1, #0xf - strle r1, [r0] - b _0203EF9C -_0203DCB8: - ldrsh r1, [r4, #0x38] - add r0, r4, #0xb5 - add r0, r0, #0x200 - mov r2, #0x4e - bl GetNameWithGender - ldr r3, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, _0203E4E4 ; =0x0000100C - ldr r4, [r3] - ldr r1, _0203E4E8 ; =0x000002A6 - add r2, r4, #0xb5 - add r2, r2, #0x200 - str r2, [r4, #0xc4] - ldr r2, [r3] - add r2, r2, #0x8c - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR -#ifndef JAPAN - mov r2, #0xa -#endif - ldr r0, [r0] - ldr r1, [r0, #0x3b8] - add r0, r0, #0xa1 - add r0, r0, #0x100 - add r1, r1, #0x3a -#ifdef JAPAN - bl StrcpySimple -#else - bl StrncpySimple -#endif - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r2, #0xa - ldr r0, [r0] - ldr r1, [r0, #0x3b8] - add r0, r0, #0xab - add r0, r0, #0x100 - add r1, r1, #0x3a - bl MemcpySimple - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r2, #0xa - ldr r1, [r0] - add r0, r1, #0xb5 - add r0, r0, #0x100 - add r1, r1, #0xab - add r1, r1, #0x100 - bl StrncpySimpleNoPadSafe - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x10 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203DD68: - bl sub_02046C78 - cmp r0, #0 - beq _0203EF9C - ldr r0, _0203E4EC ; =_0209C85C - mov r4, #2 - ldr r1, _0203E4F0 ; =0x00300011 - ldr r3, _0203E4F4 ; =_0209C86C - mov r2, #0 - str r4, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r2, #0x11 - ldr r3, [r1] - strb r0, [r3, #0x1a0] - ldr r0, [r1] - str r2, [r0] - b _0203EF9C -_0203DDAC: - add r0, r4, #0x100 - ldrsb r0, [r0, #0xa0] - bl IsSimpleMenuActive - cmp r0, #0 - bne _0203EF9C - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - add r0, r0, #0x100 - ldrsb r0, [r0, #0xa0] - bl GetSimpleMenuResult__0202B870 - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r4, r0 - ldr r0, [r1] - add r0, r0, #0x100 - ldrsb r0, [r0, #0xa0] - bl CloseSimpleMenu - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x1a0] - bl sub_02046D20 - cmp r4, #0 - beq _0203DE10 - cmp r4, #1 - b _0203DE24 -_0203DE10: - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x12 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203DE24: - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x20 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203DE38: - bl ov11_0230D92C - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x13 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203DE50: - bl ov11_0230D220 - cmp r0, #0 - ldreq r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - moveq r1, #0x14 - ldreq r0, [r0] - streq r1, [r0] - b _0203EF9C -_0203DE6C: - add r0, r4, #0xab - add r2, r4, #0xa1 - add r1, r0, #0x100 - add r3, r2, #0x100 - mov r0, #2 - mov r2, #0 - bl ShowKeyboard - bl ov11_02310BDC - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x15 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203DEA0: - bl ov11_0230D220 - cmp r0, #0 - ldreq r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - moveq r1, #0x16 - ldreq r0, [r0] - streq r1, [r0] - b _0203EF9C -_0203DEBC: - bl GetKeyboardStatus - cmp r0, #3 - bne _0203EF9C - bl GetKeyboardStringResult - ldr r2, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, r0 - ldr r0, [r2] - mov r2, #0xa - add r0, r0, #0xab - add r0, r0, #0x100 - bl MemcpySimple - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r2, #0xa - ldr r1, [r0] - add r0, r1, #0xb5 - add r1, r1, #0xab - add r0, r0, #0x100 - add r1, r1, #0x100 - bl StrncpySimpleNoPadSafe - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x17 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203DF1C: - bl sub_02037468 - cmp r0, #0 - beq _0203EF9C - bl ov11_0230D92C - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x18 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203DF40: - bl ov11_0230D220 - cmp r0, #0 - ldreq r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - moveq r1, #0x19 - ldreq r0, [r0] - streq r1, [r0] - b _0203EF9C -_0203DF5C: - bl ov11_0230D92C - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x1a - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203DF74: - bl ov11_0230D220 - cmp r0, #0 - ldreq r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - moveq r1, #0x1b - ldreq r0, [r0] - streq r1, [r0] - b _0203EF9C -_0203DF90: - add r0, r4, #0xb5 - add r0, r0, #0x100 - bl sub_0203909C - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x1c - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203DFB0: - bl sub_0203931C - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r2, [r1] - str r0, [r2, #0x3bc] - ldr r1, [r1] - ldr r0, [r1, #0x3bc] - cmp r0, #0 - movge r0, #0x1d - strge r0, [r1] - b _0203EF9C -_0203DFD8: - bl sub_02039218 - cmp r0, #0 - beq _0203EF9C - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r1, [r0] - ldr r0, [r1, #0x3bc] - cmp r0, #0 - beq _0203E000 - cmp r0, #1 - b _0203E02C -_0203E000: - ldr r0, [r1, #0x3b8] - add r1, r1, #0xab - add r0, r0, #0x3a - add r1, r1, #0x100 - mov r2, #0xa - bl MemcpySimple - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x20 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E02C: - mov r0, #0x12 - str r0, [r1] - b _0203EF9C -_0203E038: - ldrsh r0, [r4, #0x38] - mov r2, #0xa - orr r0, r0, #0x80000 - str r0, [r4, #0x8c] - ldr r1, [r1] - add r0, r1, #0xb5 - add r1, r1, #0xab - add r0, r0, #0x100 - add r1, r1, #0x100 - bl StrncpySimpleNoPadSafe - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r2, [r1] - add r0, r2, #0xb5 - add r0, r0, #0x100 - str r0, [r2, #0xc4] - ldr r0, [r1] - ldr r0, [r0, #8] - cmp r0, #2 - ldreq r4, _0203E4F8 ; =0x00000283 - mov r0, #5 - ldrne r4, _0203E4FC ; =0x00000281 - bl sub_02017C50 - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, _0203E4B8 ; =0x0000101C - ldr r2, [r1] - mov r1, r4 - add r2, r2, #0x8c - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x21 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E0BC: - bl sub_02046C78 - cmp r0, #0 - beq _0203EF9C - bl MissionRewardCloseAllBoxes - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r3, #0xa - ldr r2, [r0] - mov r1, #0x22 - str r3, [r2, #0x188] - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E0EC: - ldr r2, [r4, #0x188] - sub r0, r2, #1 - str r0, [r4, #0x188] - cmp r2, #0 - ldrle r0, [r1] - movle r1, #0x29 - strle r1, [r0] - b _0203EF9C -_0203E10C: - bl sub_02046D20 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r1, [r0] - ldr r0, [r1, #8] - sub r0, r0, #2 - cmp r0, #1 - add r0, r1, #0x40 - bhi _0203E138 - mov r1, #1 - bl ov11_023061E4 - b _0203E13C -_0203E138: - bl ov11_023061CC -_0203E13C: - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x1f - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E150: - bl ov11_02306C9C - cmp r0, #3 - cmpne r0, #4 - bne _0203EF9C - bl ov11_02306C64 - cmp r0, #0 - ldreq r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - moveq r1, #0x23 - ldreq r0, [r0] - streq r1, [r0] - beq _0203EF9C - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r2, #0xc - ldr r3, [r1] - str r0, [r3, #0x3b8] - ldr r0, [r1] - str r2, [r0] - b _0203EF9C -_0203E198: - ldrsh r1, [r4, #0x38] - add r0, r4, #0xe8 - bl GetNameRaw - ldr r2, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, _0203E4B8 ; =0x0000101C - ldr r4, [r2] -#ifdef JAPAN - ldr r1, _0203E8F0 ; =0x00002458 -#else - mov r1, #0x284 -#endif - add r3, r4, #0xe8 - str r3, [r4, #0xc4] - ldr r2, [r2] - add r2, r2, #0x8c - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x24 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E1DC: - bl sub_02046C78 - cmp r0, #0 - beq _0203EF9C - bl MissionRewardCloseAllBoxes - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r3, #0xa - ldr r2, [r0] - mov r1, #0x25 - str r3, [r2, #0x188] - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E20C: - ldr r2, [r4, #0x188] - sub r0, r2, #1 - str r0, [r4, #0x188] - cmp r2, #0 - ldrle r0, [r1] - movle r1, #0x26 - strle r1, [r0] - b _0203EF9C -_0203E22C: - mov r0, #4 - bl sub_02017C50 - mov r0, #0x3e8 - bl AddMoneyCarried - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r3, #0x3e8 - ldr r2, [r1] - ldr r0, _0203E4B8 ; =0x0000101C - str r3, [r2, #0xb0] - ldr r2, [r1] - ldr r1, _0203E500 ; =0x00000285 - add r2, r2, #0x8c - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x27 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E274: - bl sub_02046C78 - cmp r0, #0 - beq _0203EF9C - bl MissionRewardCloseAllBoxes - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r3, #0xa - ldr r2, [r0] - mov r1, #0x28 - str r3, [r2, #0x188] - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E2A4: - ldr r2, [r4, #0x188] - sub r0, r2, #1 - str r0, [r4, #0x188] - cmp r2, #0 - ldrle r0, [r1] - movle r1, #0x29 - strle r1, [r0] - b _0203EF9C -_0203E2C4: - ldr r1, [r4, #0x10] - ldr r0, [r4, #0x20] - cmp r1, r0 - movge r0, #0x3a - strge r0, [r4] - bge _0203EF9C - mov r0, #6 - mla r0, r1, r0, r4 - ldrsh r0, [r0, #0x28] - mov r1, #0 - strh r0, [sp, #0x20 + SUB_0203D538_STACK_OFFSET] - strb r1, [sp, #0x1c + SUB_0203D538_STACK_OFFSET] - bl IsStorableItem - cmp r0, #0 - beq _0203E44C - ldrsh r0, [sp, #0x20 + SUB_0203D538_STACK_OFFSET] - bl IsThrownItem - cmp r0, #0 - bne _0203E328 - ldrsh r1, [sp, #0x20 + SUB_0203D538_STACK_OFFSET] - cmp r1, #0x16c - blt _0203E348 - ldr r0, _0203E504 ; =0x0000018F - cmp r1, r0 - bgt _0203E348 -_0203E328: - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r0, #6 - ldr r2, [r1] - ldr r1, [r2, #0x10] - mla r0, r1, r0, r2 - ldrh r0, [r0, #0x26] - strh r0, [sp, #0x1e + SUB_0203D538_STACK_OFFSET] - b _0203E350 -_0203E348: - mov r0, #0 - strh r0, [sp, #0x1e + SUB_0203D538_STACK_OFFSET] -_0203E350: - ldr r3, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r0, #1 - ldr r6, [r3] - strb r0, [sp, #0x1c + SUB_0203D538_STACK_OFFSET] - ldr r1, [r6, #0x10] - mov r0, #6 - mla r5, r1, r0, r6 - ldrh r0, [sp, #0x1c + SUB_0203D538_STACK_OFFSET] - mov r4, #0 - ldr r2, _0203E508 ; =_0209C850 - strh r0, [r5, #0x24] - ldrh r0, [sp, #0x1e + SUB_0203D538_STACK_OFFSET] - add r1, sp, #0x1c + SUB_0203D538_STACK_OFFSET - strh r0, [r5, #0x26] - ldrh r0, [sp, #0x20 + SUB_0203D538_STACK_OFFSET] - strh r0, [r5, #0x28] - ldrsh r0, [sp, #0x20 + SUB_0203D538_STACK_OFFSET] - str r0, [r6, #0x9c] - ldr r0, [r3] - str r4, [r0, #0xb0] - ldr r0, [r3] - add r0, r0, #0xe8 - bl MaybeGetColoredFormattedItemName - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r2, [r0] - add r1, r2, #0xe8 - str r1, [r2, #0xc4] - ldr r2, [r0] - ldrsh r1, [r2, #0x14] - str r1, [r2, #0x8c] - ldr r1, [r0] - ldr r0, [r1, #8] - cmp r0, #0 - beq _0203E440 - cmp r0, #2 - bne _0203E3EC - ldr r4, _0203E50C ; =0x00000296 - bl sub_0203F00C - b _0203E414 -_0203E3EC: - cmp r0, #3 - bne _0203E400 - ldr r4, _0203E510 ; =0x00000297 - bl sub_0203F00C - b _0203E414 -_0203E400: - cmp r0, #4 - ldrne r4, _0203E514 ; =0x00000295 - bne _0203E414 -#ifdef JAPAN - ldr r4, _0203E90C ; =0x0000246C -#else - mov r4, #0x298 -#endif - bl sub_0203F00C -_0203E414: - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, _0203E4B8 ; =0x0000101C - ldr r2, [r1] - mov r1, r4 - add r2, r2, #0x8c - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x2a - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E440: - mov r0, #0x2c - str r0, [r1] - b _0203EF9C -_0203E44C: - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x33 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E460: - bl sub_02046C78 - cmp r0, #0 - beq _0203EF9C - bl MissionRewardCloseAllBoxes - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r3, #0xa - ldr r2, [r0] - mov r1, #0x2b - str r3, [r2, #0x188] - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E490: - ldr r2, [r4, #0x188] - sub r0, r2, #1 - str r0, [r4, #0x188] - cmp r2, #0 - ldrle r0, [r1] - movle r1, #0x2c - strle r1, [r0] - b _0203EF9C - .align 2, 0 -#ifdef JAPAN -#define SUB_0203D538_DATA_OFFSET 0x21D4 -#else -#define SUB_0203D538_DATA_OFFSET 0 -#endif -_0203E4B0: .word MISSION_REWARD_STRUCT_MAIN_PTR -_0203E4B4: .word 0x00000289 + SUB_0203D538_DATA_OFFSET -#ifdef JAPAN -_0203E89C: .word 0x0000245E -_0203E8A0: .word 0x0000245C -#endif -_0203E4B8: .word 0x0000101C -_0203E4BC: .word 0x0000026F + SUB_0203D538_DATA_OFFSET -#ifdef JAPAN -_0203E8AC: .word 0x00002444 -#endif -_0203E4C0: .word 0x00000271 + SUB_0203D538_DATA_OFFSET -_0203E4C4: .word 0x0000026E + SUB_0203D538_DATA_OFFSET -_0203E4C8: .word 0x0000029A + SUB_0203D538_DATA_OFFSET -_0203E4CC: .word 0x00000299 + SUB_0203D538_DATA_OFFSET -_0203E4D0: .word 0x00003008 -_0203E4D4: .word _0209C884 -_0203E4D8: .word _0209C846 -_0203E4DC: .word _0209C844 -_0203E4E0: .word 0x0000027A + SUB_0203D538_DATA_OFFSET -_0203E4E4: .word 0x0000100C -_0203E4E8: .word 0x000002A6 + SUB_0203D538_DATA_OFFSET -_0203E4EC: .word _0209C85C -_0203E4F0: .word 0x00300011 -_0203E4F4: .word _0209C86C -_0203E4F8: .word 0x00000283 + SUB_0203D538_DATA_OFFSET -_0203E4FC: .word 0x00000281 + SUB_0203D538_DATA_OFFSET -#ifdef JAPAN -_0203E8F0: .word 0x00002458 -#endif -_0203E500: .word 0x00000285 + SUB_0203D538_DATA_OFFSET -_0203E504: .word 0x0000018F -_0203E508: .word _0209C850 -_0203E50C: .word 0x00000296 + SUB_0203D538_DATA_OFFSET -_0203E510: .word 0x00000297 + SUB_0203D538_DATA_OFFSET -_0203E514: .word 0x00000295 + SUB_0203D538_DATA_OFFSET -#ifdef JAPAN -_0203E90C: .word 0x0000246C -#endif -_0203E518: - ldr r1, [r4, #0x10] - add r2, r4, #0x24 - mov r0, #6 - mla r0, r1, r0, r2 - bl AddItemToStorage - cmp r0, #0 - beq _0203E5A0 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - ldr r0, [r0, #0xe4] - tst r0, #2 - bne _0203E550 - mov r0, #4 - bl sub_02017C50 -_0203E550: - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r2, [r0] - ldr r0, [r2, #0xe4] - tst r0, #4 - bne _0203E588 - ldr r1, _0203EFA8 ; =0x00000273 - add r2, r2, #0x8c - mov r0, #0x1c - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x2e - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E588: - tst r0, #8 - movne r0, #0x30 - strne r0, [r2] - moveq r0, #0x33 - streq r0, [r2] - b _0203EF9C -_0203E5A0: - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x34 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E5B4: - ldr r2, [r4, #0x10] - mov r0, #6 - mla r1, r2, r0, r4 - ldrsh r2, [r1, #0x28] - mov r1, #0 - strh r2, [sp, #0x1a + SUB_0203D538_STACK_OFFSET] - ldr r2, [r4, #0x10] - mla r0, r2, r0, r4 - ldrh r0, [r0, #0x26] - strh r0, [sp, #0x18 + SUB_0203D538_STACK_OFFSET] - strb r1, [sp, #0x16 + SUB_0203D538_STACK_OFFSET] - bl sub_02046D20 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - ldr r0, [r0, #0xe4] - tst r0, #1 - moveq r1, #1 - movne r1, #0 - add r0, sp, #0x16 + SUB_0203D538_STACK_OFFSET - and r1, r1, #0xff - bl InitUnkStorageStruct0x410 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x35 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E61C: - bl sub_02046028 - cmp r0, #2 - beq _0203E658 - cmp r0, #3 - beq _0203E688 - cmp r0, #4 - bne _0203EF9C - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r3, #0xa - ldr r2, [r0] - mov r1, #0x2d - str r3, [r2, #0x188] - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E658: - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - add r0, r0, #0xde - bl sub_02045FD0 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r3, #0xa - ldr r2, [r0] - mov r1, #0x36 - str r3, [r2, #0x188] - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E688: - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - add r0, r0, #0xde - bl sub_02045FD0 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r3, #0xa - ldr r2, [r0] - mov r1, #0x38 - str r3, [r2, #0x188] - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E6B8: - ldr r2, [r4, #0x188] - sub r0, r2, #1 - str r0, [r4, #0x188] - cmp r2, #0 - ldrle r0, [r1] - movle r1, #0x37 - strle r1, [r0] - b _0203EF9C -_0203E6D8: - ldr r1, [r4, #0x10] - add r2, r4, #0x24 - mov r0, #6 - mla r0, r1, r0, r2 - bl AddItemToStorage - cmp r0, #0 - beq _0203E7D8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - ldr r0, [r0, #0xe4] - tst r0, #2 - bne _0203E710 - mov r0, #4 - bl sub_02017C50 -_0203E710: - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #6 - ldr r5, [r0] - mov r6, #0 - ldr r4, [r5, #0x10] - ldr r2, _0203E508 ; =_0209C850 - mla r3, r4, r1, r5 - ldrsh r3, [r3, #0x28] - str r3, [r5, #0x9c] - ldr r3, [r0] - str r6, [r3, #0xb0] - ldr r4, [r0] - ldrsh r3, [r4, #0xdc] - str r3, [r4, #0xa4] - ldr r3, [r0] - str r6, [r3, #0xb8] - ldr r5, [r0] - ldrsh r3, [r5, #0xe2] - add r4, r5, #0x24 - add r0, r5, #0xe8 - strh r3, [sp, #0x14 + SUB_0203D538_STACK_OFFSET] - ldrh r3, [r5, #0xe0] - strb r6, [sp, #0x10 + SUB_0203D538_STACK_OFFSET] - strh r3, [sp, #0x12 + SUB_0203D538_STACK_OFFSET] - ldr r3, [r5, #0x10] - mla r1, r3, r1, r4 - bl MaybeGetColoredFormattedItemName - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r2, _0203E508 ; =_0209C850 - ldr r0, [r0] - add r1, sp, #0x10 + SUB_0203D538_STACK_OFFSET - add r0, r0, #0x138 - bl MaybeGetColoredFormattedItemName - ldr r2, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, _0203E4B8 ; =0x0000101C - ldr r4, [r2] - ldr r1, _0203EFAC ; =0x00000275 - add r3, r4, #0x138 - str r3, [r4, #0xcc] - ldr r4, [r2] - add r3, r4, #0xe8 - str r3, [r4, #0xc4] - ldr r2, [r2] - add r2, r2, #0x8c - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x2e - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E7D8: - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x34 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E7EC: - ldr r2, [r4, #0x188] - sub r0, r2, #1 - str r0, [r4, #0x188] - cmp r2, #0 - ldrle r0, [r1] - movle r1, #0x39 - strle r1, [r0] - b _0203EF9C -_0203E80C: - ldr r1, [r4, #0x10] - add r2, r4, #0x24 - mov r0, #6 - mla r0, r1, r0, r2 - bl AddItemToStorage - cmp r0, #0 - beq _0203E8D4 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - ldr r0, [r0, #0xe4] - tst r0, #2 - bne _0203E844 - mov r0, #4 - bl sub_02017C50 -_0203E844: - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r0, #6 - ldr r6, [r1] - mov r5, #0 - ldr r4, [r6, #0x10] - ldr r2, _0203E508 ; =_0209C850 - mla r3, r4, r0, r6 - ldrsh r3, [r3, #0x28] - str r3, [r6, #0x9c] - ldr r3, [r1] - str r5, [r3, #0xb0] - ldr r4, [r1] - ldrsh r3, [r4, #0xdc] - str r3, [r4, #0xa4] - ldr r3, [r1] - str r5, [r3, #0xb8] - ldr r4, [r1] - ldr r3, [r4, #0x10] - add r1, r4, #0x24 - mla r1, r3, r0, r1 - add r0, r4, #0xe8 - bl MaybeGetColoredFormattedItemName - ldr r2, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, _0203E4B8 ; =0x0000101C - ldr r4, [r2] - ldr r1, _0203EFB0 ; =0x00000277 - add r3, r4, #0xe8 - str r3, [r4, #0xc4] - ldr r2, [r2] - add r2, r2, #0x8c - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x2e - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E8D4: - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x34 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E8E8: - ldr r2, [r4, #0x188] - sub r0, r2, #1 - str r0, [r4, #0x188] - cmp r2, #0 - bgt _0203EF9C - ldr r2, [r1] - ldr r0, _0203E4B8 ; =0x0000101C - ldr r1, _0203EFB4 ; =0x00000286 - add r2, r2, #0x8c - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - add r0, r0, #0xde - bl sub_02045FD0 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x2e - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E934: - bl sub_02046C78 - cmp r0, #0 - beq _0203EF9C - bl MissionRewardCloseAllBoxes - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r3, #0xa - ldr r2, [r0] - mov r1, #0x2f - str r3, [r2, #0x188] - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E964: - ldr r2, [r4, #0x188] - sub r0, r2, #1 - str r0, [r4, #0x188] - cmp r2, #0 - ldrle r0, [r1] - movle r1, #0x33 - strle r1, [r0] - b _0203EF9C -_0203E984: - ldr r0, _0203E4B8 ; =0x0000101C -#ifdef JAPAN - ldr r1, _0203F34C_JP ; =0x00002FEC - add r2, r4, #0x8c -#else - add r2, r4, #0x8c - mov r1, #0x2cc -#endif - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x31 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E9A8: - bl sub_02046C78 - cmp r0, #0 - beq _0203EF9C - bl MissionRewardCloseAllBoxes - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r3, #0xa - ldr r2, [r0] - mov r1, #0x32 - str r3, [r2, #0x188] - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203E9D8: - ldr r2, [r4, #0x188] - sub r0, r2, #1 - str r0, [r4, #0x188] - cmp r2, #0 - ldrle r0, [r1] - movle r1, #0x33 - strle r1, [r0] - b _0203EF9C -_0203E9F8: - ldr r0, [r4, #0x10] - add r0, r0, #1 - str r0, [r4, #0x10] - ldr r1, [r1] - ldr r0, [r1, #0x10] - cmp r0, #3 - movlt r0, #0x29 - strlt r0, [r1] - movge r0, #0x3a - strge r0, [r1] - b _0203EF9C -_0203EA24: - ldrb r0, [r4, #0x36] - cmp r0, #0 - moveq r0, #0x40 - streq r0, [r4] - beq _0203EF9C - ldr r0, [r4, #8] - cmp r0, #0 - beq _0203EAAC - cmp r0, #2 - bne _0203EA58 - ldr r4, _0203EFB8 ; =0x00000292 - bl sub_0203F00C - b _0203EA80 -_0203EA58: - cmp r0, #3 - bne _0203EA6C - ldr r4, _0203EFBC ; =0x00000293 - bl sub_0203F00C - b _0203EA80 -_0203EA6C: - cmp r0, #4 - ldrne r4, _0203EFC0 ; =0x00000291 - bne _0203EA80 -#ifdef JAPAN - ldr r4, _0203F35C_JP ; =0x00002468 -#else - mov r4, #0x294 -#endif - bl sub_0203F00C -_0203EA80: - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, _0203E4B8 ; =0x0000101C - ldr r2, [r1] - mov r1, r4 - add r2, r2, #0x8c - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x3b - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203EAAC: - mov r0, #0x3d - str r0, [r4] - b _0203EF9C -_0203EAB8: - bl sub_02046C78 - cmp r0, #0 - beq _0203EF9C - bl MissionRewardCloseAllBoxes - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r3, #0xa - ldr r2, [r0] - mov r1, #0x3c - str r3, [r2, #0x188] - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203EAE8: - ldr r2, [r4, #0x188] - sub r0, r2, #1 - str r0, [r4, #0x188] - cmp r2, #0 - ldrle r0, [r1] - movle r1, #0x3d - strle r1, [r0] - b _0203EF9C -_0203EB08: - mov r0, #5 - bl sub_02017C50 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - ldrsh r0, [r0, #0x38] - bl SetEggSpecies - mov r0, #4 - bl RandIntSafe - add r0, r0, #6 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SetEggHatchTimer - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, _0203E4B8 ; =0x0000101C - ldr r2, [r1] - ldr r1, _0203EFC4 ; =0x00000272 - add r2, r2, #0x8c - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x3e - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203EB64: - bl sub_02046C78 - cmp r0, #0 - beq _0203EF9C - bl MissionRewardCloseAllBoxes - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r3, #0xa - ldr r2, [r0] - mov r1, #0x3f - str r3, [r2, #0x188] - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203EB94: - ldr r2, [r4, #0x188] - sub r0, r2, #1 - str r0, [r4, #0x188] - cmp r2, #0 - ldrle r0, [r1] - movle r1, #0x40 - strle r1, [r0] - b _0203EF9C -_0203EBB4: - ldr r0, [r4, #0x3c] - cmp r0, #0 - moveq r0, #0x4c - streq r0, [r4] - beq _0203EF9C - add r0, sp, #0xcc + SUB_0203D538_STACK_OFFSET_2 - bl InitPreprocessorArgs - bl GetRank - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r2, [r1] - strb r0, [r2, #0xc] - ldr r0, [r1] - ldr r0, [r0, #0x3c] - bl sub_02050C10 - mov r0, #4 - bl sub_02017C50 - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, _0203E4B8 ; =0x0000101C - ldr r2, [r1] - ldr r1, _0203EFC8 ; =0x000002A1 - ldr r3, [r2, #0x3c] - add r2, sp, #0xcc + SUB_0203D538_STACK_OFFSET_2 - str r3, [sp, #0xf0 + SUB_0203D538_STACK_OFFSET_2] - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x41 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203EC28: - bl sub_02046C78 - cmp r0, #0 - beq _0203EF9C - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r4, [r0] - bl GetRank - ldrb r1, [r4, #0xc] - cmp r1, r0 - movne r0, #0x42 - strne r0, [r4] - moveq r0, #0x4c - streq r0, [r4] - b _0203EF9C -_0203EC5C: - mov r0, #2 - bl sub_02017C50 - add r0, sp, #0x7c + SUB_0203D538_STACK_OFFSET_2 - bl InitPreprocessorArgs - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - ldrb r0, [r0, #0xc] - str r0, [sp, #0x94 + SUB_0203D538_STACK_OFFSET_2] - bl GetRank - str r0, [sp, #0x98 + SUB_0203D538_STACK_OFFSET_2] - ldr r0, _0203E4B8 ; =0x0000101C - ldr r1, _0203EFCC ; =0x000002A2 - add r2, sp, #0x7c + SUB_0203D538_STACK_OFFSET_2 - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x43 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203ECA8: - bl sub_02046C78 - cmp r0, #0 - ldrne r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - movne r1, #0x44 - ldrne r0, [r0] - strne r1, [r0] - b _0203EF9C -_0203ECC4: - add r0, sp, #0x2c + SUB_0203D538_STACK_OFFSET_2 - bl InitPreprocessorArgs - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - ldrb r0, [r0, #0xc] - bl GetRankUpEntry - ldr r0, [r0, #8] - str r0, [sp, #0x50 + SUB_0203D538_STACK_OFFSET_2] - bl GetRank - bl GetRankUpEntry - ldr r1, [r0, #8] - ldr r0, [sp, #0x50 + SUB_0203D538_STACK_OFFSET_2] - str r1, [sp, #0x54 + SUB_0203D538_STACK_OFFSET_2] - cmp r0, r1 - ldreq r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - moveq r1, #0x46 - ldreq r0, [r0] - streq r1, [r0] - beq _0203EF9C - ldr r0, _0203E4B8 ; =0x0000101C - ldr r1, _0203EFD0 ; =0x000002A3 - add r2, sp, #0x2c + SUB_0203D538_STACK_OFFSET_2 - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x45 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203ED34: - bl sub_02046C78 - cmp r0, #0 - ldrne r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - movne r1, #0x46 - ldrne r0, [r0] - strne r1, [r0] - b _0203EF9C -_0203ED50: - bl GetRank - bl GetRankUpEntry - ldrsh r0, [r0, #0xc] - strh r0, [r4, #0x88] - cmp r0, #0 - bne _0203ED80 - bl sub_02046D20 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x4c - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203ED80: - bl IsStorableItem - cmp r0, #0 - beq _0203EDFC - ldrsh r0, [r4, #0x88] - bl IsThrownItem - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - strh r0, [r4, #0x86] - mov r0, #1 - strb r0, [r4, #0x84] - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldrsh r3, [r4, #0x88] - ldr r1, [r0] - mov r2, #0 - str r3, [r1, #0x9c] - ldr r1, [r0] - mov r0, #4 - str r2, [r1, #0xb0] - bl sub_02017C50 - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, _0203E4B8 ; =0x0000101C - ldr r2, [r1] -#ifdef JAPAN - ldr r1, _0203F370 ; =0x00002478 -#else - mov r1, #0x2a4 -#endif - add r2, r2, #0x8c - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x47 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203EDFC: - bl sub_02046D20 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x4c - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203EE14: - bl sub_02046C78 - cmp r0, #0 - ldrne r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - movne r1, #0x48 - ldrne r0, [r0] - strne r1, [r0] - b _0203EF9C -_0203EE30: - add r0, r4, #0x84 - bl AddItemToStorage - cmp r0, #0 - ldreq r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - moveq r1, #0x49 - ldreq r0, [r0] - streq r1, [r0] - beq _0203EF9C - bl sub_02046D20 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x4c - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203EE68: - ldrsh r1, [r4, #0x88] - mov r0, #0 - strh r1, [sp, #0xe + SUB_0203D538_STACK_OFFSET] - ldrh r1, [r4, #0x86] - strh r1, [sp, #0xc + SUB_0203D538_STACK_OFFSET] - strb r0, [sp, #0xa + SUB_0203D538_STACK_OFFSET] - bl sub_02046D20 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - ldr r0, [r0, #0xe4] - tst r0, #1 - moveq r1, #1 - movne r1, #0 - add r0, sp, #0xa + SUB_0203D538_STACK_OFFSET - and r1, r1, #0xff - bl InitUnkStorageStruct0x410 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x4a - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203EEBC: - bl sub_02046028 -#ifdef JAPAN - cmp r0, #2 - cmpne r0, #3 - beq _0203EF64 - cmp r0, #4 - bne _0203EF9C - ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, _0203E4B8 ; =0x0000101C - ldr r2, [r1] - ldr r1, _0203EFB4 ; =0x0000245A -#else - mov r4, r0 - cmp r4, #1 - beq _0203EF9C - add r0, sp, #4 - bl sub_02045FD0 - ldrsh r0, [sp, #8] - cmp r0, #0 - bne _0203EF00 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r1, [r0] - ldrh r0, [r1, #0x84] - strh r0, [sp, #4] - ldrh r0, [r1, #0x86] - strh r0, [sp, #6] - ldrh r0, [r1, #0x88] - strh r0, [sp, #8] -_0203EF00: - cmp r4, #2 - cmpne r4, #3 - beq _0203EF64 - cmp r4, #4 - bne _0203EF9C - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r2, _0203E508 ; =_0209C850 - ldr r0, [r0] - add r1, sp, #4 - add r0, r0, #0xe8 - bl MaybeGetColoredFormattedItemName - ldr r2, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, _0203E4B8 ; =0x0000101C - ldr r4, [r2] - ldr r1, _0203EFB4 ; =0x00000286 - add r3, r4, #0xe8 - str r3, [r4, #0xc4] - ldr r2, [r2] -#endif - add r2, r2, #0x8c - bl sub_02046BE8 - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x4b - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203EF64: - ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0x48 - ldr r0, [r0] - str r1, [r0] - b _0203EF9C -_0203EF78: - bl sub_02046C78 - cmp r0, #0 - ldrne r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR - movne r1, #0x4c - ldrne r0, [r0] - strne r1, [r0] - b _0203EF9C -_0203EF94: - mov r0, #1 - b _0203EFA0 -_0203EF9C: - mov r0, #0 -_0203EFA0: - add sp, sp, #0x11c + SUB_0203D538_STACK_OFFSET_2 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0203EFA8: .word 0x00000273 + SUB_0203D538_DATA_OFFSET -_0203EFAC: .word 0x00000275 + SUB_0203D538_DATA_OFFSET -_0203EFB0: .word 0x00000277 + SUB_0203D538_DATA_OFFSET -_0203EFB4: .word 0x00000286 + SUB_0203D538_DATA_OFFSET -#ifdef JAPAN -_0203F34C_JP: .word 0x00002FEC -#endif -_0203EFB8: .word 0x00000292 + SUB_0203D538_DATA_OFFSET -_0203EFBC: .word 0x00000293 + SUB_0203D538_DATA_OFFSET -_0203EFC0: .word 0x00000291 + SUB_0203D538_DATA_OFFSET -#ifdef JAPAN -_0203F35C_JP: .word 0x00002468 -#endif -_0203EFC4: .word 0x00000272 + SUB_0203D538_DATA_OFFSET -_0203EFC8: .word 0x000002A1 + SUB_0203D538_DATA_OFFSET -_0203EFCC: .word 0x000002A2 + SUB_0203D538_DATA_OFFSET -_0203EFD0: .word 0x000002A3 + SUB_0203D538_DATA_OFFSET -#ifdef JAPAN -_0203F370: .word 0x00002478 -#endif - arm_func_end sub_0203D538 - - arm_func_start FreeMissionRewardStructMain -FreeMissionRewardStructMain: ; 0x0203EFD4 - stmdb sp!, {r3, lr} - ldr r0, _0203F008 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MissionRewardCloseAllBoxes - ldr r0, _0203F008 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r0, [r0] - bl MemFree - ldr r0, _0203F008 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203F008: .word MISSION_REWARD_STRUCT_MAIN_PTR - arm_func_end FreeMissionRewardStructMain - - arm_func_start sub_0203F00C -sub_0203F00C: ; 0x0203F00C - stmdb sp!, {r3, lr} - ldr r1, _0203F058 ; =MISSION_REWARD_STRUCT_MAIN_PTR - mvn r0, #1 - ldr r1, [r1] - ldrsb r1, [r1, #6] - cmp r1, r0 - ldmneia sp!, {r3, pc} - mov r0, #0 - mov r1, #3 - mov r2, #1 - bl CreatePortraitBox - ldr r1, _0203F058 ; =MISSION_REWARD_STRUCT_MAIN_PTR - ldr r2, [r1] - strb r0, [r2, #6] - ldr r1, [r1] - ldrsb r0, [r1, #6] - add r1, r1, #0x190 - bl ShowPortraitInPortraitBox - ldmia sp!, {r3, pc} - .align 2, 0 -_0203F058: .word MISSION_REWARD_STRUCT_MAIN_PTR - arm_func_end sub_0203F00C - - arm_func_start MissionRewardCloseAllBoxes -MissionRewardCloseAllBoxes: ; 0x0203F05C - stmdb sp!, {r3, lr} - ldr r0, _0203F0EC ; =MISSION_REWARD_STRUCT_MAIN_PTR - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #4] - cmp r0, r1 - beq _0203F08C - bl CloseParentMenu - ldr r0, _0203F0EC ; =MISSION_REWARD_STRUCT_MAIN_PTR - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #4] -_0203F08C: - ldr r0, _0203F0EC ; =MISSION_REWARD_STRUCT_MAIN_PTR - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #5] - cmp r0, r1 - beq _0203F0B8 - bl CloseDialogueBox - ldr r0, _0203F0EC ; =MISSION_REWARD_STRUCT_MAIN_PTR - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #5] -_0203F0B8: - ldr r0, _0203F0EC ; =MISSION_REWARD_STRUCT_MAIN_PTR - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #6] - cmp r0, r1 - beq _0203F0E4 - bl ClosePortraitBox - ldr r0, _0203F0EC ; =MISSION_REWARD_STRUCT_MAIN_PTR - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #6] -_0203F0E4: - bl sub_02046D20 - ldmia sp!, {r3, pc} - .align 2, 0 -_0203F0EC: .word MISSION_REWARD_STRUCT_MAIN_PTR - arm_func_end MissionRewardCloseAllBoxes - - arm_func_start sub_0203F0F0 -sub_0203F0F0: ; 0x0203F0F0 - stmdb sp!, {r4, lr} - ldr r1, _0203F148 ; =_020AFE78 - ldr r2, _0203F14C ; =_0209C89C - ldr r3, [r1] - mov r4, r0 - ldrsh r1, [r3, #0xc] - add r0, r3, #0xdc - add r1, r3, r1, lsl #2 - ldr r1, [r1, #0x14] - mov r1, r1, lsl #1 - ldrh r1, [r2, r1] - bl GetStringFromFileVeneer - ldr r0, _0203F148 ; =_020AFE78 - mov r3, r4 - ldr r4, [r0] - ldrsh r0, [r4, #0xc] - add r1, r4, #0x64 - add r2, r4, #0x30 - add r0, r4, r0, lsl #2 - ldr r0, [r0, #0x14] - bl sub_0205A4B4 - ldmia sp!, {r4, pc} - .align 2, 0 -_0203F148: .word _020AFE78 -_0203F14C: .word _0209C89C - arm_func_end sub_0203F0F0 - - arm_func_start sub_0203F150 -sub_0203F150: ; 0x0203F150 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0xa0 - mov r6, r0 - mov r5, r1 - mov r0, #0xfc - mov r1, #8 - bl MemAlloc - ldr r2, _0203F340 ; =_020AFE78 - mvn r1, #1 - str r0, [r2] - mov ip, #0 - strb r1, [r0] - mov r0, ip -_0203F184: - add r1, ip, #1 - ldr r3, [r2] - mov r1, r1, lsl #0x10 - add r3, r3, ip, lsl #2 - mov ip, r1, asr #0x10 - str r0, [r3, #0x14] - cmp ip, #6 - blt _0203F184 - ldr r3, _0203F344 ; =_0209C8C8 - ldr r2, _0203F340 ; =_020AFE78 - mov r1, #0x18 - ldr ip, [r2] - mla r1, r5, r1, r3 - strh r0, [ip, #0xe] - b _0203F1E0 -_0203F1C0: - ldr r0, [r2] - ldr r3, [r1, lr, lsl #2] - add r0, r0, lr, lsl #2 - str r3, [r0, #0x14] - ldr r3, [r2] - ldrsh r0, [r3, #0xe] - add r0, r0, #1 - strh r0, [r3, #0xe] -_0203F1E0: - ldr ip, [r2] - ldrsh lr, [ip, #0xe] - cmp lr, #6 - bge _0203F1FC - ldr r0, [r1, lr, lsl #2] - cmp r0, #0 - bne _0203F1C0 -_0203F1FC: - mov r3, #0 - strh r3, [ip, #0xc] - ldr r0, _0203F340 ; =_020AFE78 - sub r2, r3, #1 - ldr r1, [r0] - mov ip, #1 - strh r2, [r1, #0x10] - ldr r1, [r0] - strh r3, [r1, #0x12] - ldr r2, [r0] - mov r1, r6 - strb ip, [r2, #0x2c] - ldr r3, [r0] - mov r2, #0x78 - str r5, [r3, #4] - ldr r3, [r0] - str ip, [r3, #8] - ldr r0, [r0] - add r0, r0, #0x64 - bl memcpy - ldr r0, _0203F340 ; =_020AFE78 - ldr r1, _0203F348 ; =0x00000975 - ldr r3, [r0] - mov r0, #0x10 - str r0, [sp, #0x14] - strh r1, [sp, #0x10] - ldrsh r2, [r3, #0xc] - add r0, r3, #0xdc - mov r1, #0xc - str r1, [sp, #0xc] - str r0, [sp, #0x50] - str r2, [sp, #8] - ldrsh r2, [r3, #0xc] - ldr r1, _0203F34C ; =_0209C89C - add r2, r3, r2, lsl #2 - ldr r2, [r2, #0x14] - mov r2, r2, lsl #1 - ldrh r1, [r1, r2] - bl GetStringFromFileVeneer - ldr r0, _0203F340 ; =_020AFE78 - ldr r2, [r0] - ldr r0, [r2, #4] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _0203F324 -_0203F2B0: ; jump table - b _0203F2C0 ; case 0 - b _0203F2C0 ; case 1 - b _0203F2FC ; case 2 - b _0203F2FC ; case 3 -_0203F2C0: - cmp r0, #1 - ldrsh r4, [r2, #0xe] - ldreq r1, _0203F350 ; =0x60481C3B - ldr r0, _0203F354 ; =_0209C8A8 - str r4, [sp] - mov r4, #1 - ldrne r1, _0203F358 ; =0x60489C3B - ldr r3, _0203F35C ; =sub_0203F0F0 - add r2, sp, #8 - str r4, [sp, #4] - bl CreateAdvancedTextBox - ldr r1, _0203F360 ; =sub_0203F928 - mov r4, r0 - bl SetUnkAdvancedTextBoxWindowFn - b _0203F324 -_0203F2FC: - ldrsh r4, [r2, #0xe] - ldr r0, _0203F354 ; =_0209C8A8 - ldr r1, _0203F364 ; =0x60089C3B - str r4, [sp] - mov r4, #1 - ldr r3, _0203F35C ; =sub_0203F0F0 - add r2, sp, #8 - str r4, [sp, #4] - bl CreateAdvancedTextBox - mov r4, r0 -_0203F324: - ldr r0, _0203F340 ; =_020AFE78 - ldr r1, [r0] - strb r4, [r1] - ldr r0, [r0] - ldrsb r0, [r0] - add sp, sp, #0xa0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0203F340: .word _020AFE78 -_0203F344: .word _0209C8C8 -#ifdef JAPAN -_0203F348: .word 0x00002345 -#else -_0203F348: .word 0x00000975 -#endif -_0203F34C: .word _0209C89C -_0203F350: .word 0x60481C3B -_0203F354: .word _0209C8A8 -_0203F358: .word 0x60489C3B -_0203F35C: .word sub_0203F0F0 -_0203F360: .word sub_0203F928 -_0203F364: .word 0x60089C3B - arm_func_end sub_0203F150 - - arm_func_start sub_0203F368 -sub_0203F368: ; 0x0203F368 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _0203F394 ; =_020AFE78 - mov r5, r0 - ldr r0, [r2] - mov r4, r1 - add r0, r0, #0x64 - bl sub_0205B0B8 - str r0, [r5] - mov r0, #0xc - str r0, [r4] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0203F394: .word _020AFE78 - arm_func_end sub_0203F368 - - arm_func_start sub_0203F398 -sub_0203F398: ; 0x0203F398 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r4, [r0] - cmp r4, #0 - moveq r0, #1 - beq _0203F8CC - ldr r0, [r4, #8] - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _0203F8C8 -_0203F3C4: ; jump table - b _0203F3D8 ; case 0 - b _0203F404 ; case 1 - b _0203F8C8 ; case 2 - b _0203F83C ; case 3 - b _0203F898 ; case 4 -_0203F3D8: - ldrsb r0, [r4] - bl sub_020307EC - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_0202810C - ldr r0, _0203F8D4 ; =_020AFE78 - mov r1, #1 - ldr r0, [r0] - str r1, [r0, #8] - b _0203F8C8 -_0203F404: - ldrsb r0, [r4] - mov r1, #0 - bl SetUnkAdvancedTextBoxFn - ldr r0, _0203F8D4 ; =_020AFE78 -#ifdef JAPAN - ldr r1, [r0] - ldrb r0, [r1, #0x2c] - cmp r0, #0 - beq _0203F464 - ldrsb r0, [r1] - ldrsh r1, [r1, #0x12] -#else - ldr r2, [r0] - ldrb r0, [r2, #0x2c] - cmp r0, #0 - beq _0203F464 - ldrsh r0, [r2, #0xc] - add r0, r2, r0, lsl #2 - ldr r0, [r0, #0x14] - cmp r0, #1 - ldreqsh r1, [r2, #0x12] - ldrsb r0, [r2] - movne r1, #0 -#endif - bl sub_02030A50 - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r0, [r0] - ldrsb r0, [r0] - bl SetAdvancedTextBoxField0x1C2 - ldr r0, _0203F8D4 ; =_020AFE78 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #0x2c] -_0203F464: - add r1, sp, #0xc - mov r0, #0 - bl sub_02006498 - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r0, [r0] - ldrsb r0, [r0] - bl GetWindowIdPageStart - ldr r1, _0203F8D4 ; =_020AFE78 - ldr r2, [r1] - strh r0, [r2, #0xc] - ldr r3, [r1] - ldrsh r2, [r3, #0xc] - ldrsh r0, [r3, #0x10] - cmp r0, r2 - strneh r2, [r3, #0x10] - ldrne r0, [r1] - movne r1, #1 - strneb r1, [r0, #0x2c] - bne _0203F8C8 - add r0, r3, r2, lsl #2 - ldr r0, [r0, #0x14] - cmp r0, #1 - ldrsb r0, [r3] - bne _0203F7EC - ldr r1, _0203F8D8 ; =sub_0203F368 - bl SetUnkAdvancedTextBoxFn - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r0, [r0] - ldrsb r0, [r0] - bl GetAdvancedTextBoxFlags2 - ldr r1, _0203F8D4 ; =_020AFE78 - mov r4, r0 - ldr r0, [r1] - ldrsb r0, [r0] - bl sub_02028354 - cmp r0, #3 - beq _0203F508 - bl sub_0203F8EC - cmp r0, #0 - movne r1, #1 - bne _0203F50C -_0203F508: - mov r1, #0 -_0203F50C: - ldr r0, _0203F8D4 ; =_020AFE78 - and r5, r1, #0xff - ldr r0, [r0] - ldrsb r0, [r0] - bl IsAdvancedTextBoxActive - cmp r0, #0 - bne _0203F588 - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_02030908 - cmp r0, #0 - blt _0203F558 - bl sub_0203F8EC - cmp r0, #0 - beq _0203F558 - bl sub_02001808 - cmp r0, #0xa000 - bge _0203F560 -_0203F558: - mov r0, #1 - b _0203F8CC -_0203F560: - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_0202812C - ldr r0, _0203F8D4 ; =_020AFE78 - mov r1, #3 - ldr r0, [r0] - mov r5, #0 - str r1, [r0, #8] - b _0203F748 -_0203F588: - ldrh r0, [sp, #0xc] - tst r0, #8 - cmpne r5, #0 - beq _0203F5FC - bl sub_0203F8EC - cmp r0, #0 - beq _0203F748 - ldr r0, _0203F8D4 ; =_020AFE78 - mov r1, #0 - ldr r0, [r0] - ldrsb r0, [r0] - bl PlayAdvancedTextBoxInputSound - bl sub_02001808 - cmp r0, #0xa000 - blt _0203F748 - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_02030EF0 - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_0202812C - ldr r0, _0203F8D4 ; =_020AFE78 - mov r1, #3 - ldr r0, [r0] - mov r5, #0 - str r1, [r0, #8] - b _0203F748 -_0203F5FC: - tst r0, #0x40 - bne _0203F60C - tst r4, #0x40000 - beq _0203F698 -_0203F60C: - cmp r5, #0 - beq _0203F698 - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r2, [r0] - ldrsh r1, [r2, #0x12] - cmp r1, #0 - bne _0203F660 - ldrsh r1, [r2, #0xba] - cmp r1, #0 - beq _0203F748 - sub r1, r1, #1 - strh r1, [r2, #0xba] - ldr r0, [r0] - mov r1, #1 - strb r1, [r0, #0x2c] - ldrh r0, [sp, #0xc] - tst r0, #0x40 - beq _0203F748 - mov r0, #3 - bl PlaySeVolumeWrapper - b _0203F748 -_0203F660: - ldrsb r0, [r2] - bl sub_02030A64 - cmp r0, #0 - bne _0203F680 - tst r4, #0x40000 - bne _0203F680 - mov r0, #3 - bl PlaySeVolumeWrapper -_0203F680: - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r1, [r0] - ldrsh r0, [r1, #0x12] - sub r0, r0, #1 - strh r0, [r1, #0x12] - b _0203F748 -_0203F698: - tst r0, #0x80 - bne _0203F6A8 - tst r4, #0x80000 - beq _0203F748 -_0203F6A8: - cmp r5, #0 - beq _0203F748 - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r3, [r0] - ldrsh r1, [r3, #0x12] - cmp r1, #8 - bne _0203F708 - ldrsh r2, [r3, #0xba] - add r1, r2, #9 - add r1, r3, r1 - ldrb r1, [r1, #0xbc] - cmp r1, #0 - beq _0203F748 - add r1, r2, #1 - strh r1, [r3, #0xba] - ldr r0, [r0] - mov r1, #1 - strb r1, [r0, #0x2c] - ldrh r0, [sp, #0xc] - tst r0, #0x80 - beq _0203F748 - mov r0, #3 - bl PlaySeVolumeWrapper - b _0203F748 -_0203F708: - ldrsb r0, [r3] - bl sub_02030A64 - cmp r0, #8 - bne _0203F728 - tst r4, #0x80000 - bne _0203F728 - mov r0, #3 - bl PlaySeVolumeWrapper -_0203F728: - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r2, [r0] - ldrsh r0, [r2, #0x12] - add r1, r0, #1 - add r0, r2, r1 - ldrb r0, [r0, #0xbc] - cmp r0, #0 - strneh r1, [r2, #0x12] -_0203F748: - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r1, [r0] - ldrsh r0, [r1, #0xba] - add r0, r0, #9 - add r0, r1, r0 - ldrb r0, [r0, #0xbc] - cmp r0, #0 - ldrsb r0, [r1] - mov r1, #0x40000000 - beq _0203F778 - bl sub_02030A90 - b _0203F77C -_0203F778: - bl sub_02030A74 -_0203F77C: - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r1, [r0] - ldrsh r0, [r1, #0xba] - cmp r0, #0 - ldrsb r0, [r1] - mov r1, #0x20000000 - bne _0203F7A0 - bl sub_02030A74 - b _0203F7A4 -_0203F7A0: - bl sub_02030A90 -_0203F7A4: - cmp r5, #0 - beq _0203F7D8 - ldr r0, _0203F8D4 ; =_020AFE78 - mov r3, #0xc - ldr r0, [r0] - mov r1, #1 - ldrsh r4, [r0, #0x12] - ldrsb r0, [r0] - mov r2, #3 - smulbb r3, r4, r3 - add r3, r3, #0x11 - bl sub_02030978 - b _0203F8C8 -_0203F7D8: - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_020288DC - b _0203F8C8 -_0203F7EC: - mov r1, #0x20000000 - bl sub_02030A74 - ldr r0, _0203F8D4 ; =_020AFE78 - mov r1, #0x40000000 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_02030A74 - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r0, [r0] - ldrsb r0, [r0] - bl IsAdvancedTextBoxActive - cmp r0, #0 - beq _0203F834 - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_020288DC - b _0203F8C8 -_0203F834: - mov r0, #1 - b _0203F8CC -_0203F83C: - ldrsh r2, [r4, #0xba] - ldrsh r0, [r4, #0x12] - ldr r3, _0203F8DC ; =_0209E912 - ldr r1, _0203F8E0 ; =STATUSES_FULL_DESCRIPTION_STRING_IDS - add r0, r2, r0 - add r0, r4, r0 - ldrb r4, [r0, #0xbc] - mov r2, #0 - ldr r0, _0203F8E4 ; =_0209C8B8 - mov r5, r4, lsl #2 - ldrh r4, [r3, r5] - ldrh r3, [r1, r5] - ldr r1, _0203F8E8 ; =0x00001013 - stmia sp, {r2, r4} - str r2, [sp, #8] - bl CreateScrollBoxSingle - ldr r1, _0203F8D4 ; =_020AFE78 - mov r2, #4 - ldr r3, [r1] - strb r0, [r3, #1] - ldr r0, [r1] - str r2, [r0, #8] - b _0203F8C8 -_0203F898: - ldrsb r0, [r4, #1] - bl IsScrollBoxActive - cmp r0, #0 - bne _0203F8C8 - ldr r0, _0203F8D4 ; =_020AFE78 - ldr r0, [r0] - ldrsb r0, [r0, #1] - bl CloseScrollBox - ldr r0, _0203F8D4 ; =_020AFE78 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #8] -_0203F8C8: - mov r0, #0 -_0203F8CC: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0203F8D4: .word _020AFE78 -_0203F8D8: .word sub_0203F368 -_0203F8DC: .word _0209E912 -_0203F8E0: .word STATUSES_FULL_DESCRIPTION_STRING_IDS -_0203F8E4: .word _0209C8B8 -_0203F8E8: .word 0x00001013 - arm_func_end sub_0203F398 - - arm_func_start sub_0203F8EC -sub_0203F8EC: ; 0x0203F8EC - ldr r0, _0203F924 ; =_020AFE78 - mov r1, #0 - ldr r2, [r0] - b _0203F914 -_0203F8FC: - add r0, r2, r1 - ldrb r0, [r0, #0xbc] - cmp r0, #0 - movne r0, #1 - bxne lr - add r1, r1, #1 -_0203F914: - cmp r1, #0x1e - blt _0203F8FC - mov r0, #0 - bx lr - .align 2, 0 -_0203F924: .word _020AFE78 - arm_func_end sub_0203F8EC - - arm_func_start sub_0203F928 -sub_0203F928: ; 0x0203F928 - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r1, #0 - ldmeqia sp!, {r4, pc} - bl sub_02030908 - ldr r2, _0203F970 ; =_020AFE78 - mov r3, #0xc - ldr ip, [r2] - mov r1, #1 - strh r0, [ip, #0x12] - ldr r2, [r2] - mov r0, r4 - ldrsh ip, [r2, #0x12] - mov r2, #3 - smulbb r3, ip, r3 - add r3, r3, #0x11 - bl sub_02030978 - ldmia sp!, {r4, pc} - .align 2, 0 -_0203F970: .word _020AFE78 - arm_func_end sub_0203F928 - - arm_func_start sub_0203F974 -sub_0203F974: ; 0x0203F974 - ldr r0, _0203F988 ; =_020AFE78 - ldr ip, _0203F98C ; =SetAdvancedTextBoxState5 - ldr r0, [r0] - ldrsb r0, [r0] - bx ip - .align 2, 0 -_0203F988: .word _020AFE78 -_0203F98C: .word SetAdvancedTextBoxState5 - arm_func_end sub_0203F974 - - arm_func_start sub_0203F990 -sub_0203F990: ; 0x0203F990 - stmdb sp!, {r3, lr} - ldr r0, _0203F9C8 ; =_020AFE78 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r0, [r0] - bl CloseAdvancedTextBox - ldr r0, _0203F9C8 ; =_020AFE78 - ldr r0, [r0] - bl MemFree - ldr r0, _0203F9C8 ; =_020AFE78 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0203F9C8: .word _020AFE78 - arm_func_end sub_0203F990 - - arm_func_start sub_0203F9CC -sub_0203F9CC: ; 0x0203F9CC - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _0203FA50 ; =_022AADFC - mov r2, #0 - mov r5, r0 - str r2, [r1] - ldr r4, [r5, #0xb4] - ldr r0, _0203FA54 ; =_022AAE00 - mov r1, r4 - bl GetMonsterName - ldr r0, _0203FA58 ; =_022AAE2A -#ifdef JAPAN - add r1, r4, #0x120 -#else - add r1, r4, #0x124 -#endif - mov r2, #0x22 - bl memcpy - ldrb r2, [r4, #7] - ldr r1, _0203FA50 ; =_022AADFC - mov r0, #0 - strb r2, [r1, #0x2c] - str r5, [r1] - strb r0, [r1, #0x58] - ldrsh r2, [r4, #4] - ldr r0, _0203FA5C ; =0x000001A2 - ldr r3, _0203FA60 ; =_022AAE58 - cmp r2, r0 - moveq r0, #1 - streqb r0, [r1, #0x58] - ldrsh r1, [r4, #2] - ldr r0, _0203FA50 ; =_022AADFC - strh r1, [r0, #0x5a] - add r0, r4, #0x9c - ldmia r0, {r0, r1, r2} - stmia r3, {r0, r1, r2} - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0203FA50: .word _022AADFC -_0203FA54: .word _022AAE00 -_0203FA58: .word _022AAE2A -_0203FA5C: .word 0x000001A2 -_0203FA60: .word _022AAE58 - arm_func_end sub_0203F9CC - - arm_func_start sub_0203FA64 -sub_0203FA64: ; 0x0203FA64 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - ldr r1, _0203FBBC ; =TEAM_MEMBER_TABLE_PTR - mov sl, r0 - mov r0, #0x44 - smulbb r2, sl, r0 - ldr r1, [r1] - mov r4, #0x46 - ldrb r0, [r1, r2] - add r8, r1, r2 - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - moveq r0, #0 - beq _0203FBB4 - ldr r1, _0203FBC0 ; =_022AADFC - mov r2, #0 - mov r0, sl - str r2, [r1] - bl sub_02056410 - cmp r0, #0 - mov r0, sl - beq _0203FAD4 - bl sub_020564B0 - cmp r0, #0 - movne r4, #0x59 - b _0203FAE4 -_0203FAD4: - bl sub_02056F60 - cmp r0, #0 - movne r4, #0x44 - moveq r4, #0x57 -_0203FAE4: - add r0, sp, #0 - add r1, r8, #0x3a - mov r2, #0xa - bl StrncpySimpleNoPadSafe - ldr r0, _0203FBC4 ; =_022AAE00 - ldr r1, _0203FBC8 ; =_0209C96C - add r3, sp, #0 - and r2, r4, #0xff - bl SprintfStatic__0204174C - ldrsh r1, [r8, #4] - ldr r0, _0203FBC0 ; =_022AADFC - ldr r3, _0203FBCC ; =_022AAE58 - strh r1, [r0, #0x5a] - add r4, r8, #0x14 - ldmia r4, {r0, r1, r2} - stmia r3, {r0, r1, r2} - ldrsh r0, [r8, #4] - mov r1, r4 - bl GetPpIncrease - mov r6, #0 - ldr r5, _0203FBD0 ; =_022AAE2A - ldr r4, _0203FBC0 ; =_022AADFC - mov r7, r0 - mov fp, r6 -_0203FB44: - mov r0, #6 - mla sb, r6, r0, r8 - ldrh r1, [sb, #0x24] - add r0, r5, r6, lsl #3 - bl InitMove - ldrb r1, [sb, #0x22] - add r2, r4, r6, lsl #3 - add r0, r5, r6, lsl #3 - strb r1, [r2, #0x2e] - strh r7, [r2, #0x30] - strb fp, [r2, #0x34] - ldrb r1, [sb, #0x26] - strb r1, [r2, #0x35] - bl GetMaxPp - add r1, r6, #1 - add r2, r4, r6, lsl #3 - mov r1, r1, lsl #0x10 - mov r6, r1, lsr #0x10 - strb r0, [r2, #0x34] - cmp r6, #4 - blo _0203FB44 - mov r0, sl - bl sub_020564B0 - ldr r1, _0203FBC0 ; =_022AADFC - strb r0, [r1, #0x2c] - ldrsh r0, [r8, #4] - bl sub_02041724 - mov r0, #1 -_0203FBB4: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0203FBBC: .word TEAM_MEMBER_TABLE_PTR -_0203FBC0: .word _022AADFC -_0203FBC4: .word _022AAE00 -_0203FBC8: .word _0209C96C -_0203FBCC: .word _022AAE58 -_0203FBD0: .word _022AAE2A - arm_func_end sub_0203FA64 - - arm_func_start sub_0203FBD4 -sub_0203FBD4: ; 0x0203FBD4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x14 - ldr r1, _0203FCFC ; =TEAM_MEMBER_TABLE_PTR - mov r2, #0x68 - ldr r1, [r1] - ldr r3, _0203FD00 ; =_022AADFC - add r1, r1, #0x9000 - ldr r1, [r1, #0x84c] - mov r4, #0 - smlabb r8, r0, r2, r1 - str r4, [r3] - ldrsh r0, [r8, #8] - sub r1, r4, #1 - cmp r0, r1 - streqb r4, [r3, #0x2c] - beq _0203FC20 - bl sub_020564B0 - ldr r1, _0203FD00 ; =_022AADFC - strb r0, [r1, #0x2c] -_0203FC20: - ldr r0, _0203FD00 ; =_022AADFC - add r1, r8, #0x5e - ldrb r0, [r0, #0x2c] - mov r2, #0xa - cmp r0, #0 - movne r4, #0x59 - add r0, sp, #0 - moveq r4, #0x46 - bl StrncpySimpleNoPadSafe - ldr r0, _0203FD04 ; =_022AAE00 - ldr r1, _0203FD08 ; =_0209C96C - add r3, sp, #0 - and r2, r4, #0xff - bl SprintfStatic__0204174C - ldrsh r0, [r8, #0xc] - add r1, r8, #0x4c - bl GetPpIncrease - ldr r5, _0203FD0C ; =_022AAE2A - ldr r4, _0203FD00 ; =_022AADFC - mov r7, r0 - mov r6, #0 -_0203FC74: - add r0, r8, r6, lsl #3 - ldrh r1, [r0, #0x20] - add r0, r5, r6, lsl #3 - bl InitMove - add r3, r8, r6, lsl #3 - ldrb r1, [r3, #0x1c] - add r2, r4, r6, lsl #3 - add r0, r5, r6, lsl #3 - strb r1, [r2, #0x2e] - strh r7, [r2, #0x30] - ldrb r1, [r3, #0x22] - strb r1, [r2, #0x34] - ldrb r1, [r3, #0x23] - strb r1, [r2, #0x35] - bl GetMaxPp - add r1, r6, #1 - add r2, r4, r6, lsl #3 - mov r1, r1, lsl #0x10 - mov r6, r1, lsr #0x10 - strb r0, [r2, #0x34] - cmp r6, #4 - blo _0203FC74 - ldrsh r0, [r8, #0xc] - bl sub_02041724 - ldrsh r1, [r8, #0xc] - ldr r0, _0203FD00 ; =_022AADFC - ldr r3, _0203FD10 ; =_022AAE58 - strh r1, [r0, #0x5a] - add r0, r8, #0x4c - ldmia r0, {r0, r1, r2} - stmia r3, {r0, r1, r2} - mov r0, #1 - add sp, sp, #0x14 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0203FCFC: .word TEAM_MEMBER_TABLE_PTR -_0203FD00: .word _022AADFC -_0203FD04: .word _022AAE00 -_0203FD08: .word _0209C96C -_0203FD0C: .word _022AAE2A -_0203FD10: .word _022AAE58 - arm_func_end sub_0203FBD4 - - arm_func_start sub_0203FD14 -sub_0203FD14: ; 0x0203FD14 - ldr ip, _0203FD24 ; =InitMove - mov r1, r0 - ldr r0, _0203FD28 ; =LAST_NEW_MOVE - bx ip - .align 2, 0 -_0203FD24: .word InitMove -_0203FD28: .word LAST_NEW_MOVE - arm_func_end sub_0203FD14 - - arm_func_start sub_0203FD2C -sub_0203FD2C: ; 0x0203FD2C - ldr r0, _0203FD34 ; =LAST_NEW_MOVE - bx lr - .align 2, 0 -_0203FD34: .word LAST_NEW_MOVE - arm_func_end sub_0203FD2C - - arm_func_start sub_0203FD38 -sub_0203FD38: ; 0x0203FD38 - ldr r0, _0203FD40 ; =_022AAE2A - bx lr - .align 2, 0 -_0203FD40: .word _022AAE2A - arm_func_end sub_0203FD38 - - arm_func_start sub_0203FD44 -sub_0203FD44: ; 0x0203FD44 - stmdb sp!, {r4, lr} - ldr r4, [r0, #0xb4] - ldr r1, _0203FD74 ; =_022AAE2A -#ifdef JAPAN - add r0, r4, #0x120 -#else - add r0, r4, #0x124 -#endif - mov r2, #0x22 - bl memcpy - ldr r1, _0203FD78 ; =_022AADFC - ldr r0, _0203FD7C ; =_020AFE7C - ldrb r1, [r1, #0x2c] - strb r1, [r4, #7] - ldrsh r0, [r0, #2] - ldmia sp!, {r4, pc} - .align 2, 0 -_0203FD74: .word _022AAE2A -_0203FD78: .word _022AADFC -_0203FD7C: .word _020AFE7C - arm_func_end sub_0203FD44 - - arm_func_start sub_0203FD80 -sub_0203FD80: ; 0x0203FD80 - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _0203FDE0 ; =TEAM_MEMBER_TABLE_PTR - mov r1, #0x44 - ldr r2, [r2] - ldr ip, _0203FDE4 ; =_022AADFC - mla r5, r0, r1, r2 - mov r4, #0 - mov r0, #6 -_0203FDA0: - mla lr, r4, r0, r5 - add r3, ip, r4, lsl #3 - ldrb r2, [r3, #0x2e] - add r1, r4, #1 - mov r1, r1, lsl #0x10 - strb r2, [lr, #0x22] - ldrh r2, [r3, #0x32] - mov r4, r1, lsr #0x10 - cmp r4, #4 - strh r2, [lr, #0x24] - ldrb r1, [r3, #0x35] - strb r1, [lr, #0x26] - blo _0203FDA0 - ldr r0, _0203FDE8 ; =_020AFE7C - ldrsh r0, [r0, #2] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0203FDE0: .word TEAM_MEMBER_TABLE_PTR -_0203FDE4: .word _022AADFC -_0203FDE8: .word _020AFE7C - arm_func_end sub_0203FD80 - - arm_func_start sub_0203FDEC -sub_0203FDEC: ; 0x0203FDEC - stmdb sp!, {r4, lr} - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetActiveTeamMember - ldr lr, _0203FE54 ; =_022AADFC - mov r4, #0 -_0203FE04: - add ip, lr, r4, lsl #3 - ldrb r2, [ip, #0x2e] - add r3, r0, r4, lsl #3 - add r1, r4, #1 - strb r2, [r3, #0x1c] - ldrh r2, [ip, #0x30] - mov r1, r1, lsl #0x10 - mov r4, r1, lsr #0x10 - strh r2, [r3, #0x1e] - ldrh r1, [ip, #0x32] - cmp r4, #4 - strh r1, [r3, #0x20] - ldrb r1, [ip, #0x34] - strb r1, [r3, #0x22] - ldrb r1, [ip, #0x35] - strb r1, [r3, #0x23] - blo _0203FE04 - ldr r0, _0203FE58 ; =_020AFE7C - ldrsh r0, [r0, #2] - ldmia sp!, {r4, pc} - .align 2, 0 -_0203FE54: .word _022AADFC -_0203FE58: .word _020AFE7C - arm_func_end sub_0203FDEC - - arm_func_start sub_0203FE5C -sub_0203FE5C: ; 0x0203FE5C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #8 - mov r7, r0 - mov r6, r1 - mov r0, #0x3fc - mov r1, #8 - mov r5, r2 - mov r4, r3 - bl MemAlloc - ldr r1, _02040154 ; =_020AFE7C - mvn r2, #1 - str r0, [r1, #8] - strb r2, [r0] - ldr r0, [r1, #0xc] - ldr r2, _02040154 ; =_020AFE7C - cmp r0, r7 - strne r7, [r1, #0xc] - movne r0, #0 - strneh r0, [r1, #2] - ldr r0, _02040154 ; =_020AFE7C - ldr r3, _02040158 ; =0x00000A3E - ldrsh r1, [r0, #4] - mov r7, #0x17 - cmp r1, r6 - strneh r6, [r0, #4] - movne r1, #0 - strneh r1, [r0, #2] - ldr r0, [r2, #8] - mov r1, #0x10 - str r1, [r0, #0x10] - ldr r0, [r2, #8] - str r1, [r0, #8] - ldr r0, [r2, #8] - mov r1, #0 - strh r3, [r0, #0xc] - ldr r0, [r2, #8] - ldr r3, _0204015C ; =_022AAE00 - str r7, [r0, #0x98] - ldr r0, [r2, #8] - str r1, [r0, #0x64] - ldr r0, [r2, #8] - str r3, [r0, #0x4c] - ldr r0, [r2, #8] - strb r1, [r0, #0x3f8] - ldr r0, [r2, #8] - str r4, [r0, #0x3f4] - ldr r0, [r2, #0xc] - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _0203FF44 -_0203FF24: ; jump table - b _02040084 ; case 0 - b _0203FF44 ; case 1 - b _0203FFAC ; case 2 - b _0204003C ; case 3 - b _0203FF44 ; case 4 - b _0203FF44 ; case 5 - b _0203FFF4 ; case 6 - b _0203FF7C ; case 7 -_0203FF44: - mov r1, #0 - str r1, [sp] - ldr r0, _02040154 ; =_020AFE7C - str r1, [sp, #4] - ldr r2, [r0, #8] - ldr r0, _02040160 ; =_0209C93C - ldr r1, _02040164 ; =0x00401803 - ldr r3, _02040168 ; =sub_020401A8 - add r2, r2, #4 - bl CreateAdvancedTextBox - ldr r1, _02040154 ; =_020AFE7C - ldr r1, [r1, #8] - strb r0, [r1] - b _020400FC -_0203FF7C: - str r1, [sp] - str r1, [sp, #4] - ldr r2, [r2, #8] - ldr r0, _0204016C ; =_0209C94C - ldr r1, _02040170 ; =0x00400800 - ldr r3, _02040168 ; =sub_020401A8 - add r2, r2, #4 - bl CreateAdvancedTextBox - ldr r1, _02040154 ; =_020AFE7C - ldr r1, [r1, #8] - strb r0, [r1] - b _020400FC -_0203FFAC: - ldr r0, [r2, #8] - mov r3, #1 - strb r3, [r0, #0x3f8] - ldr r4, [r2, #8] - ldr r0, _02040174 ; =_0209C92C - add r3, r4, #0x3e0 - str r3, [r4, #0x64] - str r1, [sp] - str r1, [sp, #4] - ldr r2, [r2, #8] - ldr r1, _02040164 ; =0x00401803 - ldr r3, _02040168 ; =sub_020401A8 - add r2, r2, #4 - bl CreateAdvancedTextBox - ldr r1, _02040154 ; =_020AFE7C - ldr r1, [r1, #8] - strb r0, [r1] - b _020400FC -_0203FFF4: - ldr r0, [r2, #8] - mov r3, #1 - strb r3, [r0, #0x3f8] - ldr r4, [r2, #8] - ldr r0, _02040174 ; =_0209C92C - add r3, r4, #0x3e0 - str r3, [r4, #0x64] - str r1, [sp] - str r1, [sp, #4] - ldr r2, [r2, #8] - ldr r1, _02040178 ; =0x00401A03 - ldr r3, _02040168 ; =sub_020401A8 - add r2, r2, #4 - bl CreateAdvancedTextBox - ldr r1, _02040154 ; =_020AFE7C - ldr r1, [r1, #8] - strb r0, [r1] - b _020400FC -_0204003C: - ldr r0, [r2, #8] - mov r3, #1 - strb r3, [r0, #0x3f8] - ldr r4, [r2, #8] - ldr r0, _0204017C ; =_0209C95C - add r3, r4, #0x3e0 - str r3, [r4, #0x64] - str r1, [sp] - str r1, [sp, #4] - ldr r2, [r2, #8] - ldr r1, _02040180 ; =0x00400A00 - ldr r3, _02040168 ; =sub_020401A8 - add r2, r2, #4 - bl CreateAdvancedTextBox - ldr r1, _02040154 ; =_020AFE7C - ldr r1, [r1, #8] - strb r0, [r1] - b _020400FC -_02040084: - cmp r6, #1 - ble _020400C8 - ldr r1, [r2, #8] - mov r0, #1 - str r5, [r1, #4] - str r6, [sp] - str r0, [sp, #4] - ldr r2, [r2, #8] - ldr r0, _02040160 ; =_0209C93C - ldr r1, _02040184 ; =0x00409823 - ldr r3, _02040168 ; =sub_020401A8 - add r2, r2, #4 - bl CreateAdvancedTextBox - ldr r1, _02040154 ; =_020AFE7C - ldr r1, [r1, #8] - strb r0, [r1] - b _020400FC -_020400C8: - ldr r3, [r2, #8] - ldr r0, _02040160 ; =_0209C93C - str r1, [r3, #4] - str r1, [sp] - str r1, [sp, #4] - ldr r2, [r2, #8] - ldr r1, _02040188 ; =0x00401823 - ldr r3, _02040168 ; =sub_020401A8 - add r2, r2, #4 - bl CreateAdvancedTextBox - ldr r1, _02040154 ; =_020AFE7C - ldr r1, [r1, #8] - strb r0, [r1] -_020400FC: - ldr r0, _02040154 ; =_020AFE7C - ldr r0, [r0, #8] - ldrsb r0, [r0] - bl GetWindowIdPageStart - ldr r1, _02040154 ; =_020AFE7C - ldr r1, [r1, #8] - add r1, r1, #0x300 - strh r0, [r1, #0xe8] - mov r0, #1 - bl sub_0204027C - bl PrintMoveOptionMenu - ldr r1, _02040154 ; =_020AFE7C - mov r2, #0 - ldr r0, [r1, #8] - strb r2, [r0, #0x3e5] - ldr r0, [r1, #8] - add r0, r0, #0x300 - strh r2, [r0, #0xe6] - ldr r0, [r1, #8] - ldrsb r0, [r0] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02040154: .word _020AFE7C -#ifdef JAPAN -_02040158: .word 0x00000879 -#else -_02040158: .word 0x00000A3E -#endif -_0204015C: .word _022AAE00 -_02040160: .word _0209C93C -_02040164: .word 0x00401803 -_02040168: .word sub_020401A8 -_0204016C: .word _0209C94C -_02040170: .word 0x00400800 -_02040174: .word _0209C92C -_02040178: .word 0x00401A03 -_0204017C: .word _0209C95C -_02040180: .word 0x00400A00 -_02040184: .word 0x00409823 -_02040188: .word 0x00401823 - arm_func_end sub_0203FE5C - - arm_func_start sub_0204018C -sub_0204018C: ; 0x0204018C - ldr ip, _02040198 ; =sub_0203FE5C - mov r3, #0 - bx ip - .align 2, 0 -_02040198: .word sub_0203FE5C - arm_func_end sub_0204018C - - arm_func_start sub_0204019C -sub_0204019C: ; 0x0204019C - ldr ip, _020401A4 ; =sub_0203FE5C - bx ip - .align 2, 0 -_020401A4: .word sub_0203FE5C - arm_func_end sub_0204019C - - arm_func_start sub_020401A8 -sub_020401A8: ; 0x020401A8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - bl sub_02027B1C - ldr r4, _02040274 ; =_020AFE7C - mov sb, #0 - ldr r0, [r4, #8] - ldr r7, _02040278 ; =_022AADFC - ldr r0, [r0, #0x10] - mov fp, #8 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - mov r6, #0xd - mov r5, #0x17 - b _02040250 -_020401E0: - add r0, r7, sb, lsl #3 - ldrb r0, [r0, #0x2e] - tst r0, #2 - add r0, r2, sb, lsl #3 - movne r1, r6 - ldr r3, [r0, #0xa8] - moveq r1, fp - mov r0, sl - add r2, r8, #2 - bl DrawTextInWindow - cmp sb, #0 - ble _02040238 - add r0, r7, sb, lsl #3 - ldrb r0, [r0, #0x2e] - tst r0, #2 - bne _02040238 - mov r0, sl - mov r1, #0x10 - mov r2, r8 - mov r3, #0x7e - str r5, [sp] - bl sub_02025D50 -_02040238: - add r0, r8, #0x10 - add r1, sb, #1 - mov r0, r0, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r8, r0, asr #0x10 - mov sb, r1, asr #0x10 -_02040250: - ldr r2, [r4, #8] - ldrsh r0, [r2, #0xa4] - cmp sb, r0 - blt _020401E0 - mov r0, #1 - bl sub_0204027C - mov r0, sl - bl UpdateWindow - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02040274: .word _020AFE7C -_02040278: .word _022AADFC - arm_func_end sub_020401A8 - - arm_func_start sub_0204027C -sub_0204027C: ; 0x0204027C - cmp r0, #0 - ldrne r0, _020402BC ; =_020AFE7C - movne r3, #2 - ldrne r2, [r0, #8] - ldreq r0, _020402BC ; =_020AFE7C - moveq r3, #1 - ldreq r2, [r0, #8] - movne r1, #1 - str r3, [r2, #0x3ec] - ldr r0, [r0, #8] - moveq r1, #2 - str r1, [r0, #0x3f0] - ldr r0, _020402BC ; =_020AFE7C - ldr r0, [r0, #0xc] - cmp r0, #7 - bx lr - .align 2, 0 -_020402BC: .word _020AFE7C - arm_func_end sub_0204027C - - arm_func_start PrintMoveOptionMenu -PrintMoveOptionMenu: ; 0x020402C0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x5c - ldr r0, _020407AC ; =_020AFE7C - ldr r2, _020407B0 ; =_022AAE00 - ldr r1, [r0, #8] - str r2, [r1, #0x4c] - ldr r1, [r0, #0xc] - cmp r1, #2 - cmpne r1, #3 - cmpne r1, #6 - beq _020402FC - ldrsh r1, [r0, #2] - cmp r1, #4 - movge r1, #0 - strgeh r1, [r0, #2] -_020402FC: - ldr r0, _020407AC ; =_020AFE7C - ldrsh r0, [r0, #2] - bl sub_020410A4 - ldr r1, _020407AC ; =_020AFE7C - mov r0, #0 - ldr r1, [r1, #8] - strh r0, [r1, #0xa4] -_02040318: - ldr r1, _020407AC ; =_020AFE7C - ldr r2, _020407B4 ; =_022AAE2A - ldr r1, [r1, #8] - mov r3, #0 - add r1, r1, r0 - strb r3, [r1, #0x3e0] - ldrb r1, [r2, r0, lsl #3] - add r4, r2, r0, lsl #3 - tst r1, #1 - movne r3, #1 - tst r3, #0xff - beq _020403B4 - ldr r1, _020407AC ; =_020AFE7C - ldr r3, [r1, #8] - ldrsh r2, [r3, #0xa4] - add r2, r2, #1 - strh r2, [r3, #0xa4] - ldr r5, [r1, #8] - ldrb r1, [r5, #0x3f8] - cmp r1, #0 - ldrne r2, [r5, #0x3f4] - cmpne r2, #0 - beq _020403C8 - ldrh r1, [r4, #4] - b _02040388 -_0204037C: - cmp r3, r1 - beq _02040394 - add r2, r2, #2 -_02040388: - ldrh r3, [r2] - cmp r3, #0 - bne _0204037C -_02040394: - cmp r3, #0 - movne r1, #1 - moveq r1, #0 - tst r1, #0xff - addne r1, r5, r0 - movne r2, #3 - strneb r2, [r1, #0x3e0] - b _020403C8 -_020403B4: - ldr r1, _020407AC ; =_020AFE7C - ldrsh r2, [r1, #2] - cmp r0, r2 - moveq r2, #0 - streqh r2, [r1, #2] -_020403C8: - add r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - cmp r0, #4 - blt _02040318 - ldr r1, _020407AC ; =_020AFE7C - mov r0, #0 - ldr r2, [r1, #8] - strb r0, [r2, #0x3e4] - ldr r2, [r1, #8] - ldrb r1, [r2, #0x3f8] - cmp r1, #0 - ldrne r1, [r2, #0x3f4] - cmpne r1, #0 - beq _020404B4 -_02040404: - ldr r1, _020407AC ; =_020AFE7C - ldr r3, _020407B4 ; =_022AAE2A - ldr r2, [r1, #8] - add r2, r2, r0 - ldrb r2, [r2, #0x3e0] - tst r2, #1 - beq _020404A0 - ldrb r2, [r3, r0, lsl #3] - tst r2, #2 - beq _02040464 - sub r6, r0, #1 - mov r5, #3 - ldr r3, _020407B8 ; =_022AADFC - b _0204045C -_0204043C: - ldr r4, [r1, #8] - add r2, r3, r6, lsl #3 - add r4, r4, r6 - strb r5, [r4, #0x3e0] - ldrb r2, [r2, #0x2e] - tst r2, #2 - beq _02040464 - sub r6, r6, #1 -_0204045C: - cmp r6, #0 - bge _0204043C -_02040464: - add r5, r0, #1 - ldr r4, _020407B8 ; =_022AADFC - mov r3, #3 - ldr r1, _020407AC ; =_020AFE7C - b _02040498 -_02040478: - add r2, r4, r5, lsl #3 - ldrb r2, [r2, #0x2e] - tst r2, #2 - beq _020404A0 - ldr r2, [r1, #8] - add r2, r2, r5 - strb r3, [r2, #0x3e0] - add r5, r5, #1 -_02040498: - cmp r5, #4 - blt _02040478 -_020404A0: - add r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - cmp r0, #4 - blt _02040404 -_020404B4: - ldr r0, _020407AC ; =_020AFE7C - mov r8, #0 - ldr r0, [r0, #0xc] - ldr fp, _020407B4 ; =_022AAE2A - cmp r0, #2 - cmpne r0, #3 - cmpne r0, #6 - ldreq r0, _020407AC ; =_020AFE7C - ldr r5, _020407B8 ; =_022AADFC - ldreq r1, [r0, #8] - ldr r4, _020407AC ; =_020AFE7C - ldreqsh r0, [r1, #0xa4] - mov sb, r8 - mov r7, r8 - addeq r0, r0, #1 - streqh r0, [r1, #0xa4] - mov r6, #0x6a -_020404F8: - ldrb r0, [fp, sb, lsl #3] - str r7, [sp] - str r6, [sp, #4] - tst r0, #1 - movne r0, #1 - moveq r0, r7 - strb r7, [sp, #8] - strb r7, [sp, #9] - add sl, fp, sb, lsl #3 - tst r0, #0xff - beq _02040634 - ldrb r0, [r5, #0x2c] - cmp r0, #0 - movne r0, #2 - strne r0, [sp] - moveq r0, #4 - streq r0, [sp] - ldr r0, [r4, #0xc] - cmp r0, #1 - cmpne r0, #5 - bne _02040574 - ldrh r0, [sl, #4] - bl Is2TurnsMove - cmp r0, #0 - movne r0, #1 - strneb r0, [sp, #9] - bne _02040574 - ldrh r0, [sl, #4] - cmp r0, #0x8a - moveq r0, #1 - streqb r0, [sp, #8] -_02040574: - ldr r0, [r4, #0xc] - cmp r0, #0 - cmpne r0, #1 - bne _020405A4 - ldr r0, [r5] - mov r1, sl - mov r2, #1 - bl CanMonsterUseMove - cmp r0, #0 - moveq r0, #1 - streqb r0, [sp, #8] - b _020405B4 -_020405A4: - ldrb r0, [sl, #6] - cmp r0, #0 - moveq r0, #1 - streqb r0, [sp, #8] -_020405B4: - ldr r1, [r4, #8] - ldrb r0, [r1, #0x3f8] - cmp r0, #0 - beq _020405D8 - add r0, r1, sb - ldrb r0, [r0, #0x3e0] - tst r0, #2 - movne r0, #1 - strneb r0, [sp, #8] -_020405D8: - mov r2, sl - add r0, sp, #0xc - mov r1, #0 - add r3, sp, #0 - bl FormatMoveStringMore - mov r0, #0 - bl GetDungeonResultString - mov r1, r0 - ldr r0, [r4, #8] - add r0, r0, #0xe0 - add r0, r0, r8, lsl #7 - bl strcpy - ldr r3, [r4, #8] - add r0, r8, #1 - add r1, r3, #0xe0 - add r2, r1, r8, lsl #7 - add r1, r3, r8, lsl #3 - str r2, [r1, #0xa8] - ldr r1, [r4, #8] - mov r0, r0, lsl #0x10 - add r1, r1, r8, lsl #3 - str r8, [r1, #0xac] - mov r8, r0, asr #0x10 -_02040634: - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 - cmp sb, #4 - blt _020404F8 - cmp r8, #4 - bne _02040710 - ldr r0, _020407AC ; =_020AFE7C - ldr r0, [r0, #0xc] - cmp r0, #2 - cmpne r0, #3 - cmpne r0, #6 - bne _02040710 - ldr r0, _020407B8 ; =_022AADFC - mov r2, #0 - ldrb r0, [r0, #0x2c] - str r2, [sp] - strb r2, [sp, #8] - strb r2, [sp, #9] - ldr r2, _020407BC ; =LAST_NEW_MOVE - cmp r0, #0 - ldrb r0, [r2] - mov r1, #0x6a - str r1, [sp, #4] - movne r1, #2 - bicne r0, r0, #8 - strne r1, [sp] - moveq r1, #4 - biceq r0, r0, #4 - streq r1, [sp] - strb r0, [r2] - add r0, sp, #0xc - add r3, sp, #0 - mov r1, #0 - bl FormatMoveStringMore - mov r0, #0 - bl GetDungeonResultString - ldr r2, _020407AC ; =_020AFE7C - mov r1, r0 - ldr r0, [r2, #8] - add r0, r0, #0xe0 - add r0, r0, r8, lsl #7 - bl strcpy - ldr r1, _020407AC ; =_020AFE7C - add r0, r8, #1 - ldr r4, [r1, #8] - mov r0, r0, lsl #0x10 - add r2, r4, #0xe0 - add r3, r2, r8, lsl #7 - add r2, r4, r8, lsl #3 - str r3, [r2, #0xa8] - ldr r1, [r1, #8] - add r1, r1, r8, lsl #3 - str r8, [r1, #0xac] - mov r8, r0, asr #0x10 -_02040710: - ldr r0, _020407AC ; =_020AFE7C - mov r4, #0 - ldr r1, [r0, #8] - sub r3, r4, #1 - add r1, r1, r8, lsl #3 - str r4, [r1, #0xa8] - ldr r2, [r0, #8] - sub r1, r4, #2 - add r2, r2, r8, lsl #3 - str r3, [r2, #0xac] - ldr r0, [r0, #8] - ldrsb r0, [r0] - cmp r0, r1 - beq _0204075C - bl sub_020307EC - ldr r0, _020407AC ; =_020AFE7C - ldr r0, [r0, #8] - ldrsb r0, [r0] - bl SetAdvancedTextBoxField0x1C2 -_0204075C: - ldr r0, _020407AC ; =_020AFE7C - ldr r1, [r0, #0xc] - cmp r1, #7 - ldrne r3, [r0, #8] - ldrne r2, [r3, #0x3ec] - ldrne r1, [r3, #0x3f0] - cmpne r2, r1 - beq _020407A4 - str r1, [r3, #0x3ec] - ldr r3, [r0, #8] - ldrsh r1, [r0, #2] - ldr r2, [r3, #0x10] - ldrsb r0, [r3] - add r2, r2, r1, lsl #4 - ldr r1, [r3, #0x3ec] - add r3, r2, #4 - mov r2, #0 - bl sub_02030978 -_020407A4: - add sp, sp, #0x5c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_020407AC: .word _020AFE7C -_020407B0: .word _022AAE00 -_020407B4: .word _022AAE2A -_020407B8: .word _022AADFC -_020407BC: .word LAST_NEW_MOVE - arm_func_end PrintMoveOptionMenu - - arm_func_start sub_020407C0 -sub_020407C0: ; 0x020407C0 - stmdb sp!, {r3, lr} - ldr r0, _020407E8 ; =_020AFE7C - ldr r0, [r0, #8] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _020407E8 ; =_020AFE7C - mov r1, #0 - str r1, [r0, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_020407E8: .word _020AFE7C - arm_func_end sub_020407C0 - - arm_func_start sub_020407EC -sub_020407EC: ; 0x020407EC - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x34 - add r1, sp, #0xc - mov r0, #0 - bl GetHeldButtons - add r1, sp, #0xa - mov r0, #0 - bl GetPressedButtons - add r1, sp, #8 - mov r0, #0 - bl sub_020063F4 - ldrh r0, [sp, #0xc] - ldr r5, _02040F90 ; =_022AAE2A - tst r0, #0x200 - movne r1, #1 - moveq r1, #0 - and r6, r1, #0xff - ldr r1, _02040F94 ; =_020AFE7C - tst r0, #0x100 - movne r0, #1 - moveq r0, #0 - ldr r3, [r1, #8] - and r7, r0, #0xff - add r0, r3, #0x300 - ldrsh r2, [r0, #0xe6] - cmp r2, #0 - ble _0204087C - sub r2, r2, #1 - strh r2, [r0, #0xe6] - ldr r0, [r1, #8] - add r0, r0, #0x300 - ldrsh r0, [r0, #0xe6] - cmp r0, #0 - moveq r0, #2 - movne r0, #0 - b _02040F88 -_0204087C: - ldrsb r0, [r3] - bl IsAdvancedTextBoxActive - cmp r0, #0 - bne _020408B8 - ldr r0, _02040F94 ; =_020AFE7C - ldr r0, [r0, #8] - ldrsb r0, [r0] - bl GetDigitInputResult - mvn r1, #0 - cmp r0, r1 - bne _020408B8 - mov r0, #1 - bl PlaySeVolumeWrapper - mov r0, #1 - b _02040F88 -_020408B8: - ldr r0, _02040F94 ; =_020AFE7C - ldr r0, [r0, #0xc] - cmp r0, #9 - addls pc, pc, r0, lsl #2 - b _02040958 -_020408CC: ; jump table - b _02040958 ; case 0 - b _0204094C ; case 1 - b _0204090C ; case 2 - b _020408F4 ; case 3 - b _02040958 ; case 4 - b _02040958 ; case 5 - b _0204090C ; case 6 - b _0204093C ; case 7 - b _02040924 ; case 8 - b _0204090C ; case 9 -_020408F4: - ldrh r0, [sp, #0xa] - mov r6, #0 - mov r7, r6 - bic r0, r0, #6 - strh r0, [sp, #0xa] - b _02040958 -_0204090C: - ldrh r0, [sp, #0xa] - mov r6, #0 - mov r7, r6 - bic r0, r0, #4 - strh r0, [sp, #0xa] - b _02040958 -_02040924: - ldrh r0, [sp, #0xa] - mov r6, #0 - mov r7, r6 - bic r0, r0, #4 - strh r0, [sp, #0xa] - b _02040958 -_0204093C: - mov r6, #0 - mov r7, r6 - strh r6, [sp, #0xa] - b _02040958 -_0204094C: - ldrh r0, [sp, #8] - bic r0, r0, #0x30 - strh r0, [sp, #8] -_02040958: - ldr r0, _02040F94 ; =_020AFE7C - ldr r0, [r0, #8] - ldrb r0, [r0, #0x3e5] - cmp r0, #0 - beq _02040980 - bl PrintMoveOptionMenu - ldr r0, _02040F94 ; =_020AFE7C - mov r1, #0 - ldr r0, [r0, #8] - strb r1, [r0, #0x3e5] -_02040980: - ldrh r0, [sp, #8] - tst r0, #0x80 - beq _02040A44 - bl sub_02041178 - cmp r7, #0 - beq _020409E4 - ldr r1, _02040F94 ; =_020AFE7C - ldr r0, _02040F90 ; =_022AAE2A - ldrsh r1, [r1, #2] - bl sub_02013E54 - ldr r1, _02040F94 ; =_020AFE7C - mov r0, r0, lsl #0x10 - ldrsh r1, [r1, #2] - mov r4, r0, asr #0x10 - cmp r1, r0, asr #16 - beq _020409D8 - mov r0, #3 - bl PlaySeVolumeWrapper - ldr r1, _02040F94 ; =_020AFE7C - mov r0, #3 - strh r4, [r1, #2] - b _02040F88 -_020409D8: - mov r0, #2 - bl PlaySeVolumeWrapper - b _02040A44 -_020409E4: - mov r0, #3 - bl PlaySeVolumeWrapper - ldr r0, _02040F94 ; =_020AFE7C - ldr r1, [r0, #8] - ldrsh r2, [r0, #2] - ldrsh r1, [r1, #0xa4] - add r0, r2, #1 - mov r0, r0, lsl #0x10 - mov r3, r0, asr #0x10 - b _02040A24 -_02040A0C: - ldrb r0, [r5, r3, lsl #3] - tst r0, #2 - beq _02040A2C - add r0, r3, #1 - mov r0, r0, lsl #0x10 - mov r3, r0, asr #0x10 -_02040A24: - cmp r2, r1 - blt _02040A0C -_02040A2C: - cmp r3, r1 - ldr r1, _02040F94 ; =_020AFE7C - movge r3, #0 - mov r0, #9 - strh r3, [r1, #2] - b _02040F88 -_02040A44: - ldrh r0, [sp, #8] - tst r0, #0x40 - beq _02040B10 - bl sub_02041178 - cmp r7, #0 - beq _02040AA8 - ldr r1, _02040F94 ; =_020AFE7C - ldr r0, _02040F90 ; =_022AAE2A - ldrsh r1, [r1, #2] - bl sub_02013F58 - ldr r1, _02040F94 ; =_020AFE7C - mov r0, r0, lsl #0x10 - ldrsh r1, [r1, #2] - mov r4, r0, asr #0x10 - cmp r1, r0, asr #16 - beq _02040A9C - mov r0, #3 - bl PlaySeVolumeWrapper - ldr r1, _02040F94 ; =_020AFE7C - mov r0, #4 - strh r4, [r1, #2] - b _02040F88 -_02040A9C: - mov r0, #2 - bl PlaySeVolumeWrapper - b _02040B10 -_02040AA8: - mov r0, #3 - bl PlaySeVolumeWrapper - ldr r0, _02040F94 ; =_020AFE7C - ldrsh r1, [r0, #2] - cmp r1, #0 - subgt r0, r1, #1 - ldrle r0, [r0, #8] - ldrlesh r0, [r0, #0xa4] - suble r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r2, r0, asr #0x10 - b _02040AF0 -_02040AD8: - ldrb r0, [r5, r2, lsl #3] - tst r0, #2 - beq _02040AF8 - sub r0, r2, #1 - mov r0, r0, lsl #0x10 - mov r2, r0, asr #0x10 -_02040AF0: - cmp r1, #0 - bge _02040AD8 -_02040AF8: - ldr r1, _02040F94 ; =_020AFE7C - cmp r2, #0 - movlt r2, #0 - mov r0, #9 - strh r2, [r1, #2] - b _02040F88 -_02040B10: - mov r4, #0 - bl IsTouchScreenNotOff - cmp r0, #0 - add r0, sp, #0x10 - beq _02040B2C - bl GetReleasedStylus - b _02040B30 -_02040B2C: - bl sub_02006BFC -_02040B30: - ldrh r0, [sp, #0x10] - tst r0, #0x40 - beq _02040C38 - tst r0, #2 - ldrne r0, _02040F94 ; =_020AFE7C - ldrne r0, [r0, #0xc] - cmpne r0, #7 - beq _02040C38 - cmp r0, #2 - cmpne r0, #3 - cmpne r0, #6 - bne _02040B68 - mov r1, #0x70 - b _02040B6C -_02040B68: - mov r1, #0x60 -_02040B6C: - ldr r0, [sp, #0x14] - cmp r0, #0x10 - blt _02040C38 - cmp r0, #0xa0 - bge _02040C38 - ldr r0, [sp, #0x18] - cmp r0, #0x20 - blt _02040C38 - cmp r0, r1 - bge _02040C38 - sub r1, r0, #0x20 - mov r0, r1, asr #3 - add r0, r1, r0, lsr #28 - mov r0, r0, lsl #0xc - ldr r2, _02040F94 ; =_020AFE7C - mov r1, r0, asr #0x10 - ldr r5, [r2, #8] - add r7, r1, #1 - mov r3, #0 - mvn r2, #0 - b _02040BDC -_02040BC0: - add r0, r5, r3, lsl #3 - ldr r0, [r0, #0xac] - cmp r0, r2 - beq _02040BE4 - add r0, r3, #1 - mov r0, r0, lsl #0x10 - mov r3, r0, asr #0x10 -_02040BDC: - cmp r3, r7 - blt _02040BC0 -_02040BE4: - cmp r3, r1 - ble _02040C38 - ldr r0, _02040F90 ; =_022AAE2A - ldrb r0, [r0, r1, lsl #3] - tst r0, #2 - bne _02040C38 - mov r0, r1, lsl #4 - ldr r3, _02040F94 ; =_020AFE7C - add r0, r0, #0x20 - mov r2, r0, lsl #0x10 - mov r0, #0x10 - ldr r4, _02040F98 ; =_0209C928 - strh r1, [r3, #2] - mov r3, r0 - str r4, [sp] - mov r4, #0x40 - mov r1, r2, asr #0x10 - mov r2, #0x90 - str r4, [sp, #4] - mov r4, #1 - bl sub_0202A2A4 -_02040C38: - ldr r0, _02040F94 ; =_020AFE7C - ldr r5, [r0, #8] - ldrsb r0, [r5] - bl GetWindowIdPageStart - add r1, r5, #0x300 - ldrsh r1, [r1, #0xe8] - cmp r1, r0 - beq _02040C90 - mov r0, #4 - bl PlaySeVolumeWrapper - ldr r0, _02040F94 ; =_020AFE7C - mov r1, #0 - strh r1, [r0, #2] - ldr r0, [r0, #8] - ldrsb r0, [r0] - bl GetWindowIdPageStart - ldr r1, _02040F94 ; =_020AFE7C - ldr r1, [r1, #8] - add r1, r1, #0x300 - strh r0, [r1, #0xe8] - mov r0, #5 - b _02040F88 -_02040C90: - ldrh r0, [sp, #0xa] - tst r0, #2 - beq _02040CAC - mov r0, #1 - bl PlaySeVolumeWrapper - mov r0, #1 - b _02040F88 -_02040CAC: - tst r0, #4 - beq _02040D0C - ldr r0, _02040F9C ; =0x00003F07 - mov r1, #0x100 - bl sub_02017C74 - ldr r0, _02040F94 ; =_020AFE7C - ldr r1, [r0, #0xc] - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _02040CF4 -_02040CD4: ; jump table - b _02040CE4 ; case 0 - b _02040CE4 ; case 1 - b _02040CE4 ; case 2 - b _02040CE4 ; case 3 -_02040CE4: - ldr r0, [r0, #8] - ldrsb r0, [r0] - bl sub_02030EF0 - b _02040D04 -_02040CF4: - bl sub_02041178 - ldr r0, _02040F94 ; =_020AFE7C - ldrsh r0, [r0, #2] - bl sub_02041000 -_02040D04: - mov r0, #6 - b _02040F88 -_02040D0C: - tst r0, #8 - beq _02040D28 - ldr r0, _02040FA0 ; =0x00003F04 - mov r1, #0x100 - bl sub_02017C74 - mov r0, #7 - b _02040F88 -_02040D28: -#ifndef JAPAN - ldrsb r0, [r5] - bl sub_020308E4 - cmp r0, #0 - bne _02040F84 - ldrh r0, [sp, #0xa] -#endif - tst r0, #0x400 - bne _02040D50 - tst r0, #1 - cmpeq r4, #0 - beq _02040F84 -_02040D50: -#ifdef JAPAN - ldrb r0, [r5, #0x3f8] - cmp r0, #0 - beq _020410EC - ldr r0, _02040F94 ; =_020AFE7C - ldrsh r0, [r0, #2] - add r0, r5, r0 - ldrb r0, [r0, #0x3e0] - tst r0, #1 - bne _02040F70 -_020410EC: - cmp r4, #0 - addne r0, r5, #0x300 -#else - ldr r0, _02040F94 ; =_020AFE7C - mov r2, #0 - ldr r3, [r0, #8] - ldrb r1, [r3, #0x3f8] - cmp r1, #0 - beq _02040D7C - ldrsh r0, [r0, #2] - add r0, r3, r0 - ldrb r0, [r0, #0x3e0] - tst r0, #1 - movne r2, #1 -_02040D7C: - cmp r2, #0 - bne _02040F70 - cmp r4, #0 - addne r0, r3, #0x300 -#endif - movne r1, #6 - strneh r1, [r0, #0xe6] - cmp r6, #0 - beq _02040EC8 - ldr r0, _02040F94 ; =_020AFE7C - ldr r0, [r0, #0xc] - cmp r0, #1 - cmpne r0, #5 - bne _02040EC8 - cmp r4, #0 - ldrne r0, _02040F94 ; =_020AFE7C - movne r1, #0 - ldrne r0, [r0, #8] - addne r0, r0, #0x300 - strneh r1, [r0, #0xe6] - ldr r0, _02040F94 ; =_020AFE7C - ldr r1, [r0, #0xc] - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _02040E34 -_02040DDC: ; jump table - b _02040DEC ; case 0 - b _02040DEC ; case 1 - b _02040DEC ; case 2 - b _02040DEC ; case 3 -_02040DEC: - ldrsh r0, [r0, #2] - bl sub_02041194 - cmp r0, #0 - bne _02040E10 - ldr r0, _02040F94 ; =_020AFE7C - ldrsh r0, [r0, #2] - bl sub_02041364 - cmp r0, #0 - beq _02040E34 -_02040E10: - ldr r0, _02040F9C ; =0x00003F07 - mov r1, #0x100 - bl sub_02017C74 - ldr r0, _02040F94 ; =_020AFE7C - ldr r0, [r0, #8] - ldrsb r0, [r0] - bl sub_02030EF0 - mov r0, #8 - b _02040F88 -_02040E34: - ldr r0, _02040F94 ; =_020AFE7C - ldrsh r0, [r0, #2] - bl sub_02041194 - cmp r0, #0 - beq _02040E88 - ldr r0, _02040F94 ; =_020AFE7C - ldr r1, [r0, #0xc] - cmp r1, #5 - ldreqb r0, [r0] - cmpeq r0, #0 - bne _02040E6C - ldr r0, _02040FA4 ; =0x00001308 - bl PlaySeByIdVolumeWrapper - b _02040E78 -_02040E6C: - ldr r0, _02040F9C ; =0x00003F07 - mov r1, #0x100 - bl sub_02017C74 -_02040E78: - ldr r0, _02040F94 ; =_020AFE7C - ldrsh r0, [r0, #2] - bl sub_020412B0 - b _02040EC0 -_02040E88: - ldr r0, _02040F94 ; =_020AFE7C - ldrsh r0, [r0, #2] - bl sub_02041364 - cmp r0, #0 - beq _02040EB8 - ldr r0, _02040F9C ; =0x00003F07 - mov r1, #0x100 - bl sub_02017C74 - ldr r0, _02040F94 ; =_020AFE7C - ldrsh r0, [r0, #2] - bl sub_02041394 - b _02040EC0 -_02040EB8: - mov r0, #2 - bl PlaySeVolumeWrapper -_02040EC0: - bl sub_02041178 - b _02040F84 -_02040EC8: - cmp r4, #0 - beq _02040EEC - mov r0, #0 - bl PlaySeVolumeWrapper - ldr r0, _02040F94 ; =_020AFE7C - ldr r0, [r0, #8] - ldrsb r0, [r0] - bl sub_02030EF0 - b _02040F18 -_02040EEC: - ldrh r0, [sp, #0xa] - tst r0, #0x400 - mov r0, #0 - beq _02040F14 - bl PlaySeVolumeWrapper - ldr r0, _02040F94 ; =_020AFE7C - ldr r0, [r0, #8] - ldrsb r0, [r0] - bl sub_02030EF0 - b _02040F18 -_02040F14: - bl PlaySeVolumeWrapper -_02040F18: - ldr r0, _02040F94 ; =_020AFE7C - mov r1, #2 - ldr r3, [r0, #8] - mov r2, #0 - str r1, [r3, #0x3ec] - ldr r3, [r0, #8] - str r1, [r3, #0x3f0] - ldr r6, [r0, #8] - ldrsh r3, [r0, #2] - ldr r5, [r6, #0x10] - ldrsb r0, [r6] - add r3, r5, r3, lsl #4 - add r3, r3, #4 - bl sub_02030978 - ldr r0, _02040F94 ; =_020AFE7C - ldr r0, [r0, #8] - ldrsb r0, [r0] - bl UpdateWindow - cmp r4, #0 - bne _02040F84 - mov r0, #2 - b _02040F88 -_02040F70: - mov r0, #2 - bl PlaySeVolumeWrapper - cmp r4, #0 - beq _02040F84 - bl sub_02041178 -_02040F84: - mov r0, #0 -_02040F88: - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_02040F90: .word _022AAE2A -_02040F94: .word _020AFE7C -_02040F98: .word _0209C928 -_02040F9C: .word 0x00003F07 -_02040FA0: .word 0x00003F04 -_02040FA4: .word 0x00001308 - arm_func_end sub_020407EC - - arm_func_start sub_02040FA8 -sub_02040FA8: ; 0x02040FA8 - ldr r0, _02040FF4 ; =_022AADFC - ldrb r0, [r0, #0x2c] - cmp r0, #0 - beq _02040FD0 - ldr r0, _02040FF8 ; =_020AFE7C - ldr r1, _02040FFC ; =_022AAE2A - ldrsh r0, [r0, #2] - ldrb r0, [r1, r0, lsl #3] - tst r0, #8 - b _02040FE4 -_02040FD0: - ldr r0, _02040FF8 ; =_020AFE7C - ldr r1, _02040FFC ; =_022AAE2A - ldrsh r0, [r0, #2] - ldrb r0, [r1, r0, lsl #3] - tst r0, #4 -_02040FE4: - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02040FF4: .word _022AADFC -_02040FF8: .word _020AFE7C -_02040FFC: .word _022AAE2A - arm_func_end sub_02040FA8 - - arm_func_start sub_02041000 -sub_02041000: ; 0x02041000 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_02041178 - ldr r2, _0204108C ; =_022AADFC - ldrb r0, [r2, #0x2c] - cmp r0, #0 - beq _02041078 - ldr r1, _02041090 ; =_022AAE2A - ldrb r0, [r1, r4, lsl #3] - tst r0, #8 - eorne r0, r0, #8 - strneb r0, [r1, r4, lsl #3] - ldmneia sp!, {r4, pc} - mov r3, #0 -_02041038: - add r0, r2, r3, lsl #3 - ldrb r0, [r0, #0x2e] - tst r0, #8 - bne _02041050 - cmp r3, r4 - bne _02041060 -_02041050: - add r1, r2, r3, lsl #3 - ldrb r0, [r1, #0x2e] - eor r0, r0, #8 - strb r0, [r1, #0x2e] -_02041060: - add r0, r3, #1 - mov r0, r0, lsl #0x10 - mov r3, r0, asr #0x10 - cmp r3, #4 - blt _02041038 - ldmia sp!, {r4, pc} -_02041078: - ldr r1, _02041090 ; =_022AAE2A - ldrb r0, [r1, r4, lsl #3] - eor r0, r0, #4 - strb r0, [r1, r4, lsl #3] - ldmia sp!, {r4, pc} - .align 2, 0 -_0204108C: .word _022AADFC -_02041090: .word _022AAE2A - arm_func_end sub_02041000 - - arm_func_start sub_02041094 -sub_02041094: ; 0x02041094 - ldr r0, _020410A0 ; =_020AFE7C - ldrsh r0, [r0, #2] - bx lr - .align 2, 0 -_020410A0: .word _020AFE7C - arm_func_end sub_02041094 - - arm_func_start sub_020410A4 -sub_020410A4: ; 0x020410A4 - ldr r1, _0204114C ; =_020AFE7C - cmp r0, #0 - strh r0, [r1, #2] - movlt r0, #0 - strlth r0, [r1, #2] - ldr r0, _0204114C ; =_020AFE7C - ldrsh r2, [r0, #2] - cmp r2, #4 - blt _02041100 - ldr r1, [r0, #0xc] - cmp r1, #2 - cmpne r1, #3 - arm_func_end sub_020410A4 - - arm_func_start sub_020410D4 -sub_020410D4: ; 0x020410D4 - cmpne r1, #6 - arm_func_end sub_020410D4 - - arm_func_start sub_020410D8 -sub_020410D8: ; 0x020410D8 - bne _020410F8 - arm_func_end sub_020410D8 - - arm_func_start sub_020410DC -sub_020410DC: ; 0x020410DC - cmp r2, #4 - ldreq r0, _0204114C ; =_020AFE7C - moveq r1, #4 - ldrne r0, _0204114C ; =_020AFE7C - movne r1, #0 - strh r1, [r0, #2] - bx lr -_020410F8: - mov r1, #3 - strh r1, [r0, #2] -_02041100: - ldr r2, _02041150 ; =_022AADFC - ldr r0, _0204114C ; =_020AFE7C -_02041108: - ldrsh r1, [r0, #2] - cmp r1, #0 - ldrlt r0, _0204114C ; =_020AFE7C - movlt r1, #0 - strlth r1, [r0, #2] - bxlt lr - add r1, r2, r1, lsl #3 - ldrb r1, [r1, #0x2e] - tst r1, #1 - beq _02041138 - tst r1, #2 - bxeq lr -_02041138: - ldrsh r1, [r0, #2] - sub r1, r1, #1 - strh r1, [r0, #2] - b _02041108 -_02041148: - bx lr - .align 2, 0 -_0204114C: .word _020AFE7C -_02041150: .word _022AADFC - arm_func_end sub_020410DC - - arm_func_start sub_02041154 -sub_02041154: ; 0x02041154 - cmp r0, #4 - ldreq r0, _02041170 ; =_022AADFC - ldrne r1, _02041174 ; =_022AAE2E - ldreqh r0, [r0, #0x54] - movne r0, r0, lsl #3 - ldrneh r0, [r1, r0] - bx lr - .align 2, 0 -_02041170: .word _022AADFC -_02041174: .word _022AAE2E - arm_func_end sub_02041154 - - arm_func_start sub_02041178 -sub_02041178: ; 0x02041178 - ldr r0, _02041190 ; =_020AFE7C - ldr r1, [r0, #8] - cmp r1, #0 - movne r0, #1 - strneb r0, [r1, #0x3e5] - bx lr - .align 2, 0 -_02041190: .word _020AFE7C - arm_func_end sub_02041178 - - arm_func_start sub_02041194 -sub_02041194: ; 0x02041194 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r4, _020412AC ; =_022AAE2A - mov r6, r0 - add r0, r4, r6, lsl #3 - ldrh r0, [r0, #4] - bl IsNot2TurnsMoveOrSketch - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - add r5, r6, #1 - mov r7, #0 - mov r8, #1 - b _0204129C -_020411C8: - ldrb r0, [r4, r5, lsl #3] - tst r0, #1 - movne r0, r8 - moveq r0, r7 - tst r0, #0xff - beq _020412A4 - add r0, r4, r5, lsl #3 - ldrh r0, [r0, #4] - bl IsNot2TurnsMoveOrSketch - cmp r0, #0 - beq _020412A4 - ldrb r0, [r4, r5, lsl #3] - tst r0, #2 - bne _02041298 - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - b _02041228 -_02041210: - ldrb r1, [r4, r0, lsl #3] - tst r1, #2 - beq _02041230 - add r0, r0, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 -_02041228: - cmp r0, #4 - blt _02041210 -_02041230: - mov r1, r6, lsl #0x10 - mov r5, r1, asr #0x10 - b _02041288 -_0204123C: - add r1, r5, #1 - mov r1, r1, lsl #0x10 - mov r3, r1, asr #0x10 - add r1, r4, r5, lsl #3 - ldrh r2, [r1, #4] - b _02041274 -_02041254: - add r1, r4, r3, lsl #3 - ldrh r1, [r1, #4] - cmp r2, r1 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - add r1, r3, #1 - mov r1, r1, lsl #0x10 - mov r3, r1, asr #0x10 -_02041274: - cmp r3, r0 - blt _02041254 - add r1, r5, #1 - mov r1, r1, lsl #0x10 - mov r5, r1, asr #0x10 -_02041288: - cmp r5, r0 - blt _0204123C - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02041298: - add r5, r5, #1 -_0204129C: - cmp r5, #4 - blt _020411C8 -_020412A4: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_020412AC: .word _022AAE2A - arm_func_end sub_02041194 - - arm_func_start sub_020412B0 -sub_020412B0: ; 0x020412B0 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_02041194 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - add r1, r4, #1 - ldr r0, _02041358 ; =_022AAE2A - mov r3, #0 - mov ip, #1 - b _0204133C -_020412D8: - ldrb r2, [r0, r1, lsl #3] - tst r2, #1 - movne r2, ip - moveq r2, r3 - tst r2, #0xff - beq _02041344 - ldrb r2, [r0, r1, lsl #3] - tst r2, #2 - bne _02041338 - ldr r2, _0204135C ; =_022AADFC - ldr lr, _02041358 ; =_022AAE2A - ldrb r2, [r2, #0x2c] - cmp r2, #0 - ldrne r3, _02041358 ; =_022AAE2A - ldrneb r2, [r3, r1, lsl #3] - bicne r2, r2, #8 - strneb r2, [r3, r1, lsl #3] - ldrb ip, [lr, r1, lsl #3] - ldr r2, _02041360 ; =_020AFE7C - mov r3, #1 - strb r3, [r2] - bic r2, ip, #4 - strb r2, [lr, r1, lsl #3] - b _02041344 -_02041338: - add r1, r1, #1 -_0204133C: - cmp r1, #4 - blt _020412D8 -_02041344: - ldrb r2, [r0, r1, lsl #3] - orr r2, r2, #2 - strb r2, [r0, r1, lsl #3] - bl sub_02041178 - ldmia sp!, {r4, pc} - .align 2, 0 -_02041358: .word _022AAE2A -_0204135C: .word _022AADFC -_02041360: .word _020AFE7C - arm_func_end sub_020412B0 - - arm_func_start sub_02041364 -sub_02041364: ; 0x02041364 - cmp r0, #3 - ldr r1, _02041390 ; =_022AAE2A - moveq r0, #0 - bxeq lr - add r0, r0, #1 - ldrb r0, [r1, r0, lsl #3] - tst r0, #2 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02041390: .word _022AAE2A - arm_func_end sub_02041364 - - arm_func_start sub_02041394 -sub_02041394: ; 0x02041394 - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_02041364 - cmp r0, #0 - ldmeqia sp!, {r4, pc} - add ip, r4, #1 - ldr r3, _020413FC ; =_022AAE2A - mov r1, #0 - mov r2, #1 - b _020413EC -_020413BC: - ldrb r0, [r3, ip, lsl #3] - tst r0, #1 - movne r0, r2 - moveq r0, r1 - tst r0, #0xff - beq _020413F4 - ldrb r0, [r3, ip, lsl #3] - tst r0, #2 - beq _020413F4 - eor r0, r0, #2 - strb r0, [r3, ip, lsl #3] - add ip, ip, #1 -_020413EC: - cmp ip, #4 - blt _020413BC -_020413F4: - bl sub_02041178 - ldmia sp!, {r4, pc} - .align 2, 0 -_020413FC: .word _022AAE2A - arm_func_end sub_02041394 - - arm_func_start sub_02041400 -sub_02041400: ; 0x02041400 - ldr r0, _02041410 ; =_020AFE7C - mov r1, #0 - strb r1, [r0] - bx lr - .align 2, 0 -_02041410: .word _020AFE7C - arm_func_end sub_02041400 - - arm_func_start sub_02041414 -sub_02041414: ; 0x02041414 - ldr r0, _02041420 ; =_020AFE7C - ldrb r0, [r0] - bx lr - .align 2, 0 -_02041420: .word _020AFE7C - arm_func_end sub_02041414 - - arm_func_start sub_02041424 -sub_02041424: ; 0x02041424 - cmp r0, #0 - movgt r0, #1 - bxgt lr - mov ip, #1 - ldr r3, _02041480 ; =_022AAE2A - mov r1, #0 - mov r2, ip - b _02041470 -_02041444: - ldrb r0, [r3, ip, lsl #3] - tst r0, #1 - movne r0, r2 - moveq r0, r1 - tst r0, #0xff - beq _02041478 - ldrb r0, [r3, ip, lsl #3] - tst r0, #2 - moveq r0, #1 - bxeq lr - add ip, ip, #1 -_02041470: - cmp ip, #4 - blt _02041444 -_02041478: - mov r0, #0 - bx lr - .align 2, 0 -_02041480: .word _022AAE2A - arm_func_end sub_02041424 - - arm_func_start sub_02041484 -sub_02041484: ; 0x02041484 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x20 - ldr r1, _02041594 ; =_020AFE7C - ldr r0, _02041598 ; =_022AAE2A - ldrsh r2, [r1, #2] - mov r1, #0 - mov r3, r1 - strb r1, [r0, r2, lsl #3] - add r5, r2, #1 - mov r4, #1 - b _020414DC -_020414B0: - ldrb r2, [r0, r5, lsl #3] - tst r2, #1 - movne r2, r4 - moveq r2, r3 - tst r2, #0xff - beq _020414E4 - ldrb r2, [r0, r5, lsl #3] - tst r2, #2 - beq _020414E4 - strb r1, [r0, r5, lsl #3] - add r5, r5, #1 -_020414DC: - cmp r5, #4 - blt _020414B0 -_020414E4: - mov r6, #0 - mov r7, r6 - mov r4, r6 - mov r5, #1 - add lr, sp, #0 -_020414F8: - ldrb r1, [r0, r7, lsl #3] - tst r1, #1 - movne r1, r5 - moveq r1, r4 - tst r1, #0xff - beq _02041530 - add ip, r0, r7, lsl #3 - add r3, lr, r6, lsl #3 - mov r2, #4 -_0204151C: - ldrh r1, [ip], #2 - subs r2, r2, #1 - strh r1, [r3], #2 - bne _0204151C - add r6, r6, #1 -_02041530: - add r7, r7, #1 - cmp r7, #4 - blt _020414F8 - mov r2, #0 - add r1, sp, #0 - b _02041550 -_02041548: - strb r2, [r1, r6, lsl #3] - add r6, r6, #1 -_02041550: - cmp r6, #4 - blt _02041548 - mov r4, #0 - add lr, sp, #0 -_02041560: - add ip, lr, r4, lsl #3 - add r3, r0, r4, lsl #3 - mov r2, #4 -_0204156C: - ldrh r1, [ip], #2 - subs r2, r2, #1 - strh r1, [r3], #2 - bne _0204156C - add r4, r4, #1 - cmp r4, #4 - blt _02041560 - bl sub_02041178 - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02041594: .word _020AFE7C -_02041598: .word _022AAE2A - arm_func_end sub_02041484 - - arm_func_start sub_0204159C -sub_0204159C: ; 0x0204159C - ldr r0, _020415B8 ; =_022AADFC - ldrb r0, [r0, #0x58] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_020415B8: .word _022AADFC - arm_func_end sub_0204159C - - arm_func_start sub_020415BC -sub_020415BC: ; 0x020415BC - mov r3, #0 - ldr ip, _02041610 ; =_022AAE2A - mov r1, r3 - mov r2, #1 - b _020415F4 -_020415D0: - ldrb r0, [ip, r3, lsl #3] - tst r0, #1 - movne r0, r2 - moveq r0, r1 - tst r0, #0xff - beq _020415FC - add r0, r3, #1 - mov r0, r0, lsl #0x10 - mov r3, r0, asr #0x10 -_020415F4: - cmp r3, #4 - blt _020415D0 -_020415FC: - cmp r3, #4 - movge r0, #1 - movlt r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02041610: .word _022AAE2A - arm_func_end sub_020415BC - - arm_func_start sub_02041614 -sub_02041614: ; 0x02041614 - stmdb sp!, {r3, r4, r5, lr} - mov r5, #0 - ldr r4, _020416B0 ; =_022AAE2A - mov r2, r5 - mov r3, #1 - b _02041694 -_0204162C: - ldrb r1, [r4, r5, lsl #3] - tst r1, #1 - movne r1, r3 - moveq r1, r2 - tst r1, #0xff - bne _02041688 - mov r1, #5 - strb r1, [r4, r5, lsl #3] - add r2, r4, r5, lsl #3 - strh r0, [r2, #4] - mov r1, #0 - ldr r0, _020416B4 ; =_022AADFC - strb r1, [r2, #7] - ldrsh r0, [r0, #0x5a] - ldr r1, _020416B8 ; =_022AAE58 - bl GetPpIncrease - add r1, r4, r5, lsl #3 - strh r0, [r1, #2] - mov r0, r1 - bl GetMaxPp - add r1, r4, r5, lsl #3 - strb r0, [r1, #6] - b _0204169C -_02041688: - add r1, r5, #1 - mov r1, r1, lsl #0x10 - mov r5, r1, asr #0x10 -_02041694: - cmp r5, #4 - blt _0204162C -_0204169C: - cmp r5, #4 - mvnge r5, #0 - mov r0, r5, lsl #0x10 - mov r0, r0, asr #0x10 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_020416B0: .word _022AAE2A -_020416B4: .word _022AADFC -_020416B8: .word _022AAE58 - arm_func_end sub_02041614 - - arm_func_start sub_020416BC -sub_020416BC: ; 0x020416BC - stmdb sp!, {r3, lr} - mov r1, r0 - ldr r0, _020416D8 ; =_022AAE2A - bl sub_02013F58 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - ldmia sp!, {r3, pc} - .align 2, 0 -_020416D8: .word _022AAE2A - arm_func_end sub_020416BC - - arm_func_start sub_020416DC -sub_020416DC: ; 0x020416DC - stmdb sp!, {r3, lr} - mov r1, r0 - ldr r0, _020416F8 ; =_022AAE2A - bl sub_02013E54 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - ldmia sp!, {r3, pc} - .align 2, 0 -_020416F8: .word _022AAE2A - arm_func_end sub_020416DC - - arm_func_start sub_020416FC -sub_020416FC: ; 0x020416FC - stmdb sp!, {r3, lr} - ldr r0, _02041720 ; =_020AFE7C - ldr r0, [r0, #8] - ldrsb r0, [r0] - bl sub_020307EC - mov r0, #1 - bl sub_0204027C - bl sub_02041178 - ldmia sp!, {r3, pc} - .align 2, 0 -_02041720: .word _020AFE7C - arm_func_end sub_020416FC - - arm_func_start sub_02041724 -sub_02041724: ; 0x02041724 - stmdb sp!, {r3, lr} - bl IsDeoxys - cmp r0, #0 - ldrne r0, _02041748 ; =_022AADFC - movne r1, #1 - ldreq r0, _02041748 ; =_022AADFC - moveq r1, #0 - strb r1, [r0, #0x58] - ldmia sp!, {r3, pc} - .align 2, 0 -_02041748: .word _022AADFC - arm_func_end sub_02041724 - - arm_func_start SprintfStatic__0204174C -SprintfStatic__0204174C: ; 0x0204174C - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r2, sp, #0xc - bic r2, r2, #3 - ldr r1, [sp, #0xc] - add r2, r2, #4 - bl vsprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SprintfStatic__0204174C - - arm_func_start sub_02041774 -sub_02041774: ; 0x02041774 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x2bc - mov r1, #8 - bl MemAlloc - ldr r1, _020417A4 ; =_020AFE8C - mvn r2, #1 - str r0, [r1] - str r4, [r0, #4] - ldr r0, [r1] - strb r2, [r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_020417A4: .word _020AFE8C - arm_func_end sub_02041774 - - arm_func_start sub_020417A8 -sub_020417A8: ; 0x020417A8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r6, r1 - mov r4, r2 - mov r7, r0 - cmp r4, r6 - mvnge r0, #1 - ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrb r0, [r7, r4, lsl #3] - tst r0, #1 - mvneq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, r3 - bl sub_02041774 - ldr r0, _0204185C ; =_020AFE8C - add r1, r7, r4, lsl #3 - ldr r0, [r0] - mov r2, #8 - add r0, r0, #8 - bl memcpy - add r5, r4, #1 - mov r4, #1 - mov sb, #8 - ldr r8, _0204185C ; =_020AFE8C - b _02041840 -_02041808: - ldrb r0, [r7, r5, lsl #3] - mov r1, r5, lsl #3 - tst r0, #1 - beq _0204183C - tst r0, #2 - beq _02041848 - ldr r0, [r8] - mov r2, sb - add r0, r0, #8 - add r0, r0, r4, lsl #3 - add r1, r7, r1 - bl memcpy - add r4, r4, #1 -_0204183C: - add r5, r5, #1 -_02041840: - cmp r5, r6 - blt _02041808 -_02041848: - ldr r0, _0204185C ; =_020AFE8C - ldr r0, [r0] - strh r4, [r0, #0x28] - bl sub_020418A4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0204185C: .word _020AFE8C - arm_func_end sub_020417A8 - - arm_func_start sub_02041860 -sub_02041860: ; 0x02041860 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, r1 - bl sub_02041774 - ldr r0, _020418A0 ; =_020AFE8C - mov r1, r4 - ldr r0, [r0] - mov r2, #8 - add r0, r0, #8 - bl memcpy - ldr r0, _020418A0 ; =_020AFE8C - mov r1, #1 - ldr r0, [r0] - strh r1, [r0, #0x28] - bl sub_020418A4 - ldmia sp!, {r4, pc} - .align 2, 0 -_020418A0: .word _020AFE8C - arm_func_end sub_02041860 - - arm_func_start sub_020418A4 -sub_020418A4: ; 0x020418A4 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x10 - mov r7, #0 - ldr r6, _020419F0 ; =0x000008D4 - ldr r5, _020419F4 ; =_020AFE8C - mov r4, #0x50 - b _02041950 -_020418C0: - ldr r1, [r5] - mul r8, r7, r4 - add r0, r1, r7, lsl #3 - ldrh r0, [r0, #0xc] - add r1, r1, r7, lsl #1 - add r1, r1, #0x200 - strh r6, [r1, #0xac] - ldr r2, [r5] -#if defined(EUROPE) - add r1, r0, #0x3a4 -#elif defined(JAPAN) - add r1, r0, #0x9f -#else - add r1, r0, #0xa2 -#endif - add r2, r2, r8 - str r0, [r2, #0x3c] - ldr r2, [r5] -#if defined(EUROPE) - add r3, r1, #0x2400 -#elif defined(JAPAN) - add r3, r1, #0x3f00 -#else - add r3, r1, #0x2700 -#endif - add r1, r2, r7, lsl #1 - add r1, r1, #0x200 - strh r3, [r1, #0xb4] - ldr r1, [r5] - add r1, r1, r8 - str r0, [r1, #0x17c] - ldr r0, [r5] - add r0, r0, #8 - add r0, r0, r7, lsl #3 - bl GetMoveRangeId - ldr r1, [r5] - add r1, r1, r8 - str r0, [r1, #0x180] - ldr r0, [r5] - add r0, r0, #8 - add r0, r0, r7, lsl #3 - bl GetMoveType - ldr r2, [r5] - add r1, r7, #1 - add r2, r2, r8 - mov r1, r1, lsl #0x10 - str r0, [r2, #0x184] - mov r7, r1, asr #0x10 -_02041950: - ldr r2, [r5] - ldrsh r3, [r2, #0x28] - cmp r7, r3 - blt _020418C0 - cmp r3, #1 - ble _020419A0 - add r0, r2, #0x2ac - str r0, [sp] - add r0, r2, #0x2c - str r0, [sp, #4] - add r4, r2, #0x2b4 - str r4, [sp, #8] - add r4, r2, #0x16c - ldr r0, _020419F8 ; =_0209C97C - ldr r1, _020419FC ; =0x00001013 - mov r2, #0 - str r4, [sp, #0xc] - bl CreateScrollBoxMulti - ldr r1, _020419F4 ; =_020AFE8C - b _020419D4 -_020419A0: - add r0, r2, #0x2c - str r0, [sp] - add r1, r2, #0x200 - ldrh r3, [r1, #0xb4] - add r2, r2, #0x16c - ldr r0, _020419F8 ; =_0209C97C - str r3, [sp, #4] - str r2, [sp, #8] - ldrh r3, [r1, #0xac] - ldr r1, _020419FC ; =0x00001013 - mov r2, #0 - bl CreateScrollBoxSingle - ldr r1, _020419F4 ; =_020AFE8C -_020419D4: - ldr r1, [r1] - strb r0, [r1] - ldr r0, _020419F4 ; =_020AFE8C - ldr r0, [r0] - ldrsb r0, [r0] - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -#ifdef JAPAN -_020419F0: .word 0x00001D2C -#else -_020419F0: .word 0x000008D4 -#endif -_020419F4: .word _020AFE8C -_020419F8: .word _0209C97C -_020419FC: .word 0x00001013 - arm_func_end sub_020418A4 - - arm_func_start sub_02041A00 -sub_02041A00: ; 0x02041A00 - ldr r0, _02041A10 ; =_020AFE8C - ldr ip, _02041A14 ; =MemFree - ldr r0, [r0] - bx ip - .align 2, 0 -_02041A10: .word _020AFE8C -_02041A14: .word MemFree - arm_func_end sub_02041A00 - - arm_func_start sub_02041A18 -sub_02041A18: ; 0x02041A18 - stmdb sp!, {r3, lr} - ldr r0, _02041A3C ; =_020AFE8C - ldr r0, [r0] - ldrsb r0, [r0] - bl IsScrollBoxActive - cmp r0, #0 - movne r0, #0 - moveq r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02041A3C: .word _020AFE8C - arm_func_end sub_02041A18 - - arm_func_start PrintIqSkillsMenu -PrintIqSkillsMenu: ; 0x02041A40 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0xa0 - mov r7, r0 - mov r6, r1 - add r0, sp, #8 - mov r1, #0x98 - mov r5, r2 - mov r4, r3 - bl MemZero - mov r1, #0xd -#ifdef JAPAN - ldr r0, _02041ED4 ; =0x00001586 -#else - rsb r0, r1, #0xa80 -#endif - str r1, [sp, #0xc] - mov r1, #0 - str r1, [sp, #8] - mov r1, #0x10 - strh r0, [sp, #0x10] - str r1, [sp, #0x14] - mov r0, #0x840 - mov r1, #8 - bl MemAlloc - ldr r2, _02041B6C ; =_020AFE90 - mov r1, #0x840 - str r0, [r2, #4] - bl MemZero - ldr r3, _02041B6C ; =_020AFE90 - mov r1, r7 - ldr r0, [r3, #4] - mov r2, r5 - str r6, [r0, #0x790] - ldr r0, [r3, #4] - add r0, r0, #0x700 - strh r7, [r0, #0x94] - ldr r0, [r3, #4] - str r5, [r0, #0x798] - ldr r0, [r3, #4] - add r0, r0, #0x64 - bl GetLearnableIqSkills - ldr r3, _02041B6C ; =_020AFE90 - ldr r1, _02041B70 ; =0x80401C33 - ldr r2, [r3, #4] - mov r5, #8 - add r2, r2, #0x700 - strh r0, [r2, #0x8c] - ldr r2, [r3, #4] - ldr r0, _02041B74 ; =_0209C98C - add r2, r2, #0x700 - ldrsh r6, [r2, #0x8c] - ldr r3, _02041B78 ; =GetCheckIqMenuSkillString - add r2, sp, #8 - str r6, [sp] - str r5, [sp, #4] - bl CreateAdvancedMenu - ldr r1, _02041B6C ; =_020AFE90 - mov r2, #0 - ldr r3, [r1, #4] - strb r0, [r3] - ldr r0, [r1, #4] - str r2, [r0, #0x6f0] - ldr r0, [r1, #4] - str r2, [r0, #0x6ec] - ldr r0, [r1, #4] - strb r4, [r0, #0x83c] - ldr r0, [r1, #4] - add r0, r0, #0x700 - strh r2, [r0, #0x8e] - ldr r0, [r1, #4] - add r0, r0, #0x14 - bl InitPreprocessorArgs - ldr r0, _02041B6C ; =_020AFE90 - ldr r1, [r0, #4] - add r0, r1, #0x34 - add r0, r0, #0x800 - str r0, [r1, #0x7fc] - add sp, sp, #0xa0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -#ifdef JAPAN -_02041ED4: .word 0x00001586 -#endif -_02041B6C: .word _020AFE90 -_02041B70: .word 0x80401C33 -_02041B74: .word _0209C98C -_02041B78: .word GetCheckIqMenuSkillString - arm_func_end PrintIqSkillsMenu - - arm_func_start sub_02041B7C -sub_02041B7C: ; 0x02041B7C - stmdb sp!, {r4, lr} - sub sp, sp, #0xf8 - ldr r1, _020420BC ; =_020AFE90 - ldr r3, [r1, #4] - ldr r0, [r3, #0x6f0] - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _020420B0 -_02041B9C: ; jump table - b _02041BC0 ; case 0 - b _02041DB0 ; case 1 - b _02041E40 ; case 2 - b _02041EBC ; case 3 - b _02041F30 ; case 4 - b _02041EE4 ; case 5 - b _02041FA4 ; case 6 - b _02041FE8 ; case 7 - b _020420A0 ; case 8 -_02041BC0: - ldrsb r0, [r3] - bl IsAdvancedMenuActive2 - cmp r0, #0 - bne _02041CF8 - ldr r0, _020420BC ; =_020AFE90 - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl GetAdvancedMenuResult - ldr r2, _020420BC ; =_020AFE90 - mvn r1, #0 - ldr r3, [r2, #4] - str r0, [r3, #0x838] - ldr r2, [r2, #4] - ldr r0, [r2, #0x838] - cmp r0, r1 - moveq r0, #8 - streq r0, [r2, #0x6f0] - beq _020420B0 - mov r0, #0 - bl PlaySeVolumeWrapper - ldr r0, _020420BC ; =_020AFE90 - ldr r2, _020420C0 ; =_0209C9B0 - ldrsb r3, [r0] - ldr r1, [r0, #4] - ldr r2, [r2, r3, lsl #3] - str r2, [r1, #0x79c] - ldr r3, [r0, #4] - ldr r2, [r3, #0x838] - ldrb r1, [r3, #0x83c] - add r2, r3, r2 - ldrb r2, [r2, #0x64] - cmp r1, #0 - bne _02041C60 - cmp r2, #0x18 - cmpne r2, #0x1b - beq _02041C60 - add r1, r2, #0xc8 - and r1, r1, #0xff - cmp r1, #1 - bhi _02041C7C -_02041C60: - mov r1, #3 - ldr r0, _020420BC ; =_020AFE90 - strb r1, [r3, #0x834] - ldr r0, [r0, #4] - mov r1, #0 - strb r1, [r0, #0x835] - b _02041C8C -_02041C7C: - mov r1, #0 - strb r1, [r3, #0x834] - ldr r0, [r0, #4] - strb r1, [r0, #0x835] -_02041C8C: - ldr r0, _020420BC ; =_020AFE90 - mov r1, #0x98 - ldr r0, [r0, #4] - add r0, r0, #0x39c - add r0, r0, #0x400 - bl MemZero - ldr r2, _020420BC ; =_020AFE90 - ldr r3, _020420C4 ; =_0209C9AC - ldr r4, [r2, #4] - mov r1, #0 - add r0, r4, #0x34 - add r0, r0, #0x800 - str r0, [r4, #0x7fc] - str r3, [sp] - str r1, [sp, #4] - str r1, [sp, #8] - ldr r2, [r2, #4] - ldr r0, _020420C8 ; =_0209C99C - add r3, r2, #0x39c - ldr r2, _020420CC ; =0x80000233 - add r3, r3, #0x400 - bl sub_02046A20 - ldr r0, _020420BC ; =_020AFE90 - mov r1, #1 - ldr r0, [r0, #4] - str r1, [r0, #0x6f0] - b _020420B0 -_02041CF8: - add r1, sp, #0xc - mov r0, #0 - bl GetPressedButtons - ldrh r0, [sp, #0xc] - tst r0, #8 - beq _02041D54 - ldr r0, _020420D0 ; =0x00003F04 - bl PlaySeByIdVolumeWrapper - ldr r0, _020420BC ; =_020AFE90 - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl sub_0202C1E4 - ldr r0, _020420BC ; =_020AFE90 - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl GetAdvancedMenuResult - ldr r1, _020420BC ; =_020AFE90 - mov r2, #3 - ldr r3, [r1, #4] - str r0, [r3, #0x838] - ldr r0, [r1, #4] - str r2, [r0, #0x6f0] - b _020420B0 -_02041D54: - tst r0, #4 - beq _020420B0 - ldr r0, _020420BC ; =_020AFE90 - ldr r1, [r0, #4] - ldrb r0, [r1, #0x83c] - cmp r0, #0 - beq _02041D7C - ldr r0, _020420D4 ; =0x00003F03 - bl PlaySeByIdVolumeWrapper - b _020420B0 -_02041D7C: - ldrsb r0, [r1] - bl sub_0202C1E4 - ldr r0, _020420BC ; =_020AFE90 - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl GetAdvancedMenuResult - ldr r1, _020420BC ; =_020AFE90 - mov r2, #2 - ldr r3, [r1, #4] - str r0, [r3, #0x838] - ldr r0, [r1, #4] - str r2, [r0, #0x6f0] - b _020420B0 -_02041DB0: - bl sub_02046B04 - mov r4, r0 - bl sub_02046BA0 - ldr r1, _020420BC ; =_020AFE90 - add r2, r4, #2 - strb r0, [r1] - cmp r2, #4 - addls pc, pc, r2, lsl #2 - b _020420B0 -_02041DD4: ; jump table - b _02041DF0 ; case 0 - b _020420B0 ; case 1 - b _02041E14 ; case 2 - b _02041E24 ; case 3 - b _02041DE8 ; case 4 -_02041DE8: - mov r0, #0 - bl PlaySeVolumeWrapper -_02041DF0: - ldr r0, _020420BC ; =_020AFE90 - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl ResumeAdvancedMenu - ldr r0, _020420BC ; =_020AFE90 - mov r1, #0 - ldr r0, [r0, #4] - str r1, [r0, #0x6f0] - b _020420B0 -_02041E14: - ldr r0, [r1, #4] - mov r1, #2 - str r1, [r0, #0x6f0] - b _020420B0 -_02041E24: - mov r0, #0 - bl PlaySeVolumeWrapper - ldr r0, _020420BC ; =_020AFE90 - mov r1, #3 - ldr r0, [r0, #4] - str r1, [r0, #0x6f0] - b _020420B0 -_02041E40: - ldr r1, [r3, #0x838] - add r2, r3, #0x64 - ldrb r0, [r2, r1] - cmp r0, #0x18 - bne _02041E60 - mov r0, #2 - bl PlaySeVolumeWrapper - b _02041E98 -_02041E60: - cmp r0, #0x1b - beq _02041E78 - add r0, r0, #0xc8 - and r0, r0, #0xff - cmp r0, #1 - bhi _02041E84 -_02041E78: - mov r0, #2 - bl PlaySeVolumeWrapper - b _02041E98 -_02041E84: - ldrb r1, [r2, r1] - ldr r0, [r3, #0x790] - bl DisableIqSkill - ldr r0, _020420D8 ; =0x00003F07 - bl PlaySeByIdVolumeWrapper -_02041E98: - ldr r0, _020420BC ; =_020AFE90 - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl ResumeAdvancedMenu - ldr r0, _020420BC ; =_020AFE90 - mov r1, #0 - ldr r0, [r0, #4] - str r1, [r0, #0x6f0] - b _020420B0 -_02041EBC: - ldrsb r0, [r3] - bl sub_0202812C - ldr r1, _020420BC ; =_020AFE90 - mov r2, #5 - ldr r0, [r1, #4] - add r0, r0, #0x700 - strh r2, [r0, #0x8e] - ldr r0, [r1, #4] - str r2, [r0, #0x6f0] - b _020420B0 -_02041EE4: - add r0, r3, #0x700 - ldrsh r2, [r0, #0x8e] - sub r2, r2, #1 - strh r2, [r0, #0x8e] - ldr r2, [r1, #4] - add r0, r2, #0x700 - ldrsh r0, [r0, #0x8e] - cmp r0, #0 - bge _020420B0 - mov r0, #4 - str r0, [r2, #0x6f0] - ldr r0, [r1, #4] - ldrsb r0, [r0] - bl CloseAdvancedMenu - ldr r0, _020420BC ; =_020AFE90 - mvn r1, #1 - ldr r0, [r0, #4] - strb r1, [r0] - b _020420B0 -_02041F30: - add r0, sp, #0xa8 - bl InitPreprocessorArgs - ldr r0, _020420BC ; =_020AFE90 - add ip, sp, #0xa8 - ldr r3, [r0, #4] - ldr r0, _020420DC ; =_020AFE98 - ldr r2, [r3, #0x838] - ldr r1, _020420E0 ; =0x00001013 - add r2, r3, r2 - ldrb lr, [r2, #0x64] - ldr r3, _020420E4 ; =0x00000A77 - mov r2, #0 - str lr, [sp, #0xb8] - str ip, [sp] - ldr ip, [sp, #0xb8] -#if defined(EUROPE) - add ip, ip, #0x32c - add ip, ip, #0x2400 -#elif defined(JAPAN) - add ip, ip, #0x358 - add ip, ip, #0x3c00 -#else - add ip, ip, #0x2a - add ip, ip, #0x2700 -#endif - mov ip, ip, lsl #0x10 - mov ip, ip, lsr #0x10 - str ip, [sp, #4] - str r2, [sp, #8] - bl CreateScrollBoxSingle - ldr r1, _020420BC ; =_020AFE90 - mov r2, #6 - ldr r3, [r1, #4] - strb r0, [r3, #1] - ldr r0, [r1, #4] - str r2, [r0, #0x6f0] - b _020420B0 -_02041FA4: - ldrsb r0, [r3, #1] - bl IsScrollBoxActive - cmp r0, #0 - bne _020420B0 - ldr r0, _020420BC ; =_020AFE90 - ldr r0, [r0, #4] - ldrsb r0, [r0, #1] - bl CloseScrollBox - ldr r0, _020420BC ; =_020AFE90 - mov r3, #7 - ldr r2, [r0, #4] - mov r1, #8 - str r3, [r2, #0x6f0] - ldr r0, [r0, #4] - add r0, r0, #0x700 - strh r1, [r0, #0x8e] - b _020420B0 -_02041FE8: - add r0, r3, #0x700 - ldrsh r2, [r0, #0x8e] - sub r2, r2, #1 - strh r2, [r0, #0x8e] - ldr r0, [r1, #4] - add r0, r0, #0x700 - ldrsh r2, [r0, #0x8e] - cmp r2, #0 - bge _020420B0 - mov r3, #0 - strh r3, [r0, #0x8e] - ldr r2, [r1, #4] - mov r0, #0xd - str r3, [r2, #0x6f0] - ldr r3, [r1, #4] - str r0, [sp, #0x14] - ldr r2, [r3, #0x838] -#ifdef JAPAN - ldr r1, _02042454 ; =0x00001586 -#else - rsb r1, r0, #0xa80 -#endif - mov r0, #0x10 - str r0, [sp, #0x1c] - str r2, [sp, #0x10] - strh r1, [sp, #0x18] - add r0, r3, #0x700 - ldrsh r1, [r0, #0x94] - ldr r2, [r3, #0x798] - add r0, r3, #0x64 - bl GetLearnableIqSkills - ldr ip, _020420BC ; =_020AFE90 - ldr r1, _020420E8 ; =0x80401C33 - ldr r3, [ip, #4] - add r2, sp, #0x10 - add r3, r3, #0x700 - strh r0, [r3, #0x8c] - ldr r3, [ip, #4] - ldr r0, _020420EC ; =_0209C98C - add r3, r3, #0x700 - ldrsh lr, [r3, #0x8c] - ldr r3, _020420F0 ; =GetCheckIqMenuSkillString - mov ip, #8 - str lr, [sp] - str ip, [sp, #4] - bl CreateAdvancedMenu - ldr r1, _020420BC ; =_020AFE90 - ldr r1, [r1, #4] - strb r0, [r1] - b _020420B0 -_020420A0: - mov r0, #9 - str r0, [r3, #0x6f0] - mov r0, #1 - b _020420B4 -_020420B0: - mov r0, #0 -_020420B4: - add sp, sp, #0xf8 - ldmia sp!, {r4, pc} - .align 2, 0 -_020420BC: .word _020AFE90 -_020420C0: .word _0209C9B0 -_020420C4: .word _0209C9AC -_020420C8: .word _0209C99C -_020420CC: .word 0x80000233 -_020420D0: .word 0x00003F04 -_020420D4: .word 0x00003F03 -_020420D8: .word 0x00003F07 -_020420DC: .word _020AFE98 -_020420E0: .word 0x00001013 -#ifdef JAPAN -_020420E4: .word 0x0000158A -_02042454: .word 0x00001586 -#else -_020420E4: .word 0x00000A77 -#endif -_020420E8: .word 0x80401C33 -_020420EC: .word _0209C98C -_020420F0: .word GetCheckIqMenuSkillString - arm_func_end sub_02041B7C - - arm_func_start sub_020420F4 -sub_020420F4: ; 0x020420F4 - stmdb sp!, {r3, lr} - ldr r0, _02042138 ; =_020AFE90 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r0, [r0] - mvn r1, #1 - cmp r0, r1 - beq _0204211C - bl CloseAdvancedMenu -_0204211C: - ldr r0, _02042138 ; =_020AFE90 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _02042138 ; =_020AFE90 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02042138: .word _020AFE90 - arm_func_end sub_020420F4 - - arm_func_start GetCheckIqMenuSkillString -GetCheckIqMenuSkillString: ; 0x0204213C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x84 - ldr r2, _02042248 ; =_020AFE90 - mov r4, r0 - ldr r2, [r2, #4] - mov r6, #0 - add r0, r2, r1 - ldrb r5, [r0, #0x64] - ldr r0, [r2, #0x790] - cmp r5, #0x18 - bne _02042174 - mov r0, #3 - bl GetResolvedPerformanceProgressFlag - b _0204217C -_02042174: - mov r1, r5 - bl IqSkillFlagTest -_0204217C: - cmp r0, #0 - movne r6, #1 - cmp r6, #0 - beq _020421DC - cmp r5, #0x38 - bgt _020421B4 - bge _020421BC - cmp r5, #0x1b - bgt _020421CC - cmp r5, #0x18 - blt _020421CC - cmpne r5, #0x1b - beq _020421BC - b _020421CC -_020421B4: - cmp r5, #0x39 - bne _020421CC -_020421BC: - ldr r1, _0204224C ; =_0209C9CC - add r0, sp, #0x44 - bl strcpy - b _020421E8 -_020421CC: - ldr r1, _02042250 ; =_0209C9D4 - add r0, sp, #0x44 - bl strcpy - b _020421E8 -_020421DC: - ldr r1, _02042254 ; =_0209C9DC - add r0, sp, #0x44 - bl strcpy -_020421E8: - ldr r1, _02042248 ; =_020AFE90 - mov r0, r5 - ldr r1, [r1, #4] - str r5, [r1, #0x24] - bl GetIqSkillStringId - mov r1, r0 - add r0, sp, #4 - mov r2, #0x40 - bl CopyNStringFromId - add r0, sp, #0x44 - add r1, sp, #4 - bl strcat - ldr r1, _02042248 ; =_020AFE90 - mov r0, r4 - ldr r2, [r1, #4] - mov r1, #0x40 - add r2, r2, #0x14 - str r2, [sp] - add r2, sp, #0x44 - mov r3, #0 - bl PreprocessString - mov r0, r4 - add sp, sp, #0x84 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02042248: .word _020AFE90 -_0204224C: .word _0209C9CC -_02042250: .word _0209C9D4 -_02042254: .word _0209C9DC - arm_func_end GetCheckIqMenuSkillString - - arm_func_start InitUnkStorageStruct0xA0 -InitUnkStorageStruct0xA0: ; 0x02042258 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - mov r6, r0 - mov r0, #0xa0 - mov r1, #8 - mov r5, r2 - mov r4, r3 - bl MemAlloc - ldr r1, _020423B4 ; =UNK_STORAGE_STRUCT_0XC - str r0, [r1, #4] - str r6, [r0] - bl RemoveEmptyItemsInBag - mov r0, #0x14 - bl Arm9LoadUnkFieldNa0x2029EC8 - ldr r1, _020423B4 ; =UNK_STORAGE_STRUCT_0XC - cmp r4, #0 - ldr r3, [r1, #4] - ldrne r4, _020423B8 ; =sub_020423D8 - str r0, [r3, #8] - ldr r2, _020423BC ; =0x0000032F - ldr r0, [r1, #4] - mov ip, #0x10 - strh r2, [r0, #0x10] - ldr r0, [r1, #4] - mov r3, #0xd - str ip, [r0, #0x14] - ldr r0, [r1, #4] - ldr r2, _020423C0 ; =sub_0204261C - str r3, [r0, #0xc] - ldr r0, [r1, #4] - moveq r4, #0 - str r2, [r0, #0x7c] - bl GetNbItemsInBag - str r4, [sp] - str r0, [sp, #4] - ldr r0, _020423B4 ; =UNK_STORAGE_STRUCT_0XC - str r5, [sp, #8] - ldr r2, [r0, #4] - ldr r0, _020423C4 ; =_0209C9E4 - ldr r1, _020423C8 ; =0x00443C33 - ldr r3, _020423CC ; =sub_02042760 - add r2, r2, #8 - bl CreateCollectionMenu - ldr r2, _020423B4 ; =UNK_STORAGE_STRUCT_0XC - ldr r1, _020423D0 ; =sub_0204262C - ldr r3, [r2, #4] - strb r0, [r3, #4] - ldr r0, [r2, #4] - ldrsb r0, [r0, #4] - bl sub_0202D068 - ldr r0, _020423B4 ; =UNK_STORAGE_STRUCT_0XC - ldr r1, _020423D4 ; =sub_0204263C - ldr r0, [r0, #4] - ldrsb r0, [r0, #4] - bl SetCollectionMenuVoidFn - ldr r0, _020423B4 ; =UNK_STORAGE_STRUCT_0XC - mov r1, #0xd - ldr r0, [r0, #4] - ldrsb r0, [r0, #4] - bl SetCollectionMenuField0x1BC - ldr r0, _020423B4 ; =UNK_STORAGE_STRUCT_0XC - ldr r1, [r0, #4] - ldr r0, [r1] - cmp r0, #3 - beq _02042368 - cmp r0, #4 - beq _0204237C - b _020423A0 -_02042368: -#ifdef EUROPE - ldrsb r0, [r1, #4] - mov r1, #9 - bl SetCollectionMenuField0x1BC -#endif - mov r0, #0 - bl sub_0204440C - mov r0, #2 - bl sub_0204426C - b _020423A0 -_0204237C: - ldrsb r0, [r1, #4] -#ifdef EUROPE - mov r1, #9 - bl SetCollectionMenuField0x1BC - ldr r0, _020423B4 ; =UNK_STORAGE_STRUCT_0XC -#endif - mov r1, #0x76 -#ifdef EUROPE - ldr r0, [r0, #4] - ldrsb r0, [r0, #4] -#endif - bl SetCollectionMenuWidth - mov r0, #0 - bl sub_0204440C - mov r0, #0 - bl sub_0204426C - mov r0, #0 - bl sub_02044568 -_020423A0: - ldr r0, _020423B4 ; =UNK_STORAGE_STRUCT_0XC - ldr r0, [r0, #4] - ldrsb r0, [r0, #4] - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_020423B4: .word UNK_STORAGE_STRUCT_0XC -_020423B8: .word sub_020423D8 -#ifdef JAPAN -_020423BC: .word 0x000031F4 -#else -_020423BC: .word 0x0000032F -#endif -_020423C0: .word sub_0204261C -_020423C4: .word _0209C9E4 -_020423C8: .word 0x00443C33 -_020423CC: .word sub_02042760 -_020423D0: .word sub_0204262C -_020423D4: .word sub_0204263C - arm_func_end InitUnkStorageStruct0xA0 - - arm_func_start sub_020423D8 -sub_020423D8: ; 0x020423D8 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r1, _02042618 ; =UNK_STORAGE_STRUCT_0XC - mov r5, #0 - ldr r2, [r1, #4] - ldr r1, [r2] - cmp r1, #3 - bne _02042498 - tst r0, #0x800 - beq _02042498 - bl sub_02042B20 - cmp r0, #0 - ble _0204241C - bl ClearBagSelectedItemTable - mov r0, #6 - bl PlaySeVolumeWrapper - mov r5, #1 - b _020425D8 -_0204241C: - bl sub_0200FD48 - mov r4, r0 - bl CountNbOfItemsInStorage - sub r7, r4, r0 - mov r8, r5 - mov r6, #1 - ldr r4, _02042618 ; =UNK_STORAGE_STRUCT_0XC - b _02042470 -_0204243C: - cmp r7, #0 - ble _02042478 - mov r0, r8, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetItemAtIdx - ldrsh r0, [r0, #4] - bl IsStorableItem - cmp r0, #0 - ldrne r0, [r4, #8] - movne r5, r6 - strne r6, [r0, r8, lsl #2] - subne r7, r7, #1 - add r8, r8, #1 -_02042470: - cmp r8, #0x32 - blt _0204243C -_02042478: - cmp r5, #0 - beq _0204248C - mov r0, #6 - bl PlaySeVolumeWrapper - b _020425D8 -_0204248C: - mov r0, #2 - bl PlaySeVolumeWrapper - b _020425D8 -_02042498: - tst r0, #0x400 - beq _020425D8 - ldrsb r0, [r2, #4] - bl sub_0202D0EC - ldr r1, _02042618 ; =UNK_STORAGE_STRUCT_0XC - mov r4, r0 - ldr r0, [r1, #4] - ldr r0, [r0] - cmp r0, #3 - beq _020424CC - cmp r0, #4 - beq _02042570 - b _020425D8 -_020424CC: - mov r0, r4, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetItemAtIdx - ldrsh r0, [r0, #4] - bl IsStorableItem - cmp r0, #0 - beq _02042560 - ldr r0, _02042618 ; =UNK_STORAGE_STRUCT_0XC - ldr r2, [r0, #8] - ldr r0, [r2, r4, lsl #2] - tst r0, #1 - beq _02042514 - mov r1, #0 - mov r0, #6 - str r1, [r2, r4, lsl #2] - bl PlaySeVolumeWrapper - mov r5, #1 - b _020425D8 -_02042514: - bl CountNbOfItemsInStorage - mov r6, r0 - bl sub_02042B20 - mov r5, r0 - bl sub_0200FD48 - add r1, r6, r5 - cmp r1, r0 - bge _02042550 - mov r0, #6 - bl PlaySeVolumeWrapper - ldr r0, _02042618 ; =UNK_STORAGE_STRUCT_0XC - mov r5, #1 - ldr r0, [r0, #8] - str r5, [r0, r4, lsl #2] - b _020425D8 -_02042550: - mov r0, #2 - bl PlaySeVolumeWrapper - mov r5, #0 - b _020425D8 -_02042560: - mov r0, #2 - bl PlaySeVolumeWrapper - mov r5, #0 - b _020425D8 -_02042570: - mov r0, r4, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetItemAtIdx - ldrsh r0, [r0, #4] - bl IsShoppableItem - cmp r0, #0 - beq _020425CC - ldr r0, _02042618 ; =UNK_STORAGE_STRUCT_0XC - mov r5, #1 - ldr r2, [r0, #8] - ldr r0, [r2, r4, lsl #2] - tst r0, #1 - mov r0, #6 - beq _020425B8 - mov r1, #0 - str r1, [r2, r4, lsl #2] - bl PlaySeVolumeWrapper - b _020425D8 -_020425B8: - bl PlaySeVolumeWrapper - ldr r0, _02042618 ; =UNK_STORAGE_STRUCT_0XC - ldr r0, [r0, #8] - str r5, [r0, r4, lsl #2] - b _020425D8 -_020425CC: - mov r0, #2 - bl PlaySeVolumeWrapper - mov r5, #0 -_020425D8: - bl sub_02042B20 - cmp r0, #0 - beq _020425FC - ldr r0, _02042618 ; =UNK_STORAGE_STRUCT_0XC - mov r1, #1 - ldr r0, [r0, #4] - ldrsb r0, [r0, #4] - bl sub_0202D16C - b _02042610 -_020425FC: - ldr r0, _02042618 ; =UNK_STORAGE_STRUCT_0XC - mov r1, #0 - ldr r0, [r0, #4] - ldrsb r0, [r0, #4] - bl sub_0202D16C -_02042610: - mov r0, r5 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02042618: .word UNK_STORAGE_STRUCT_0XC - arm_func_end sub_020423D8 - - arm_func_start sub_0204261C -sub_0204261C: ; 0x0204261C - stmdb sp!, {r3, lr} - bl sub_02042BE0 - bl sub_02044308 - ldmia sp!, {r3, pc} - arm_func_end sub_0204261C - - arm_func_start sub_0204262C -sub_0204262C: ; 0x0204262C - stmdb sp!, {r3, lr} - bl sub_02042BE0 - bl sub_02044308 - ldmia sp!, {r3, pc} - arm_func_end sub_0204262C - - arm_func_start sub_0204263C -sub_0204263C: ; 0x0204263C - ldr r2, _0204265C ; =BAG_ITEMS_PTR_MIRROR - mov r1, #6 - ldr r2, [r2] - ldr ip, _02042660 ; =sub_020444B0 - ldr r2, [r2, #0x384] - mla r1, r0, r1, r2 - ldrsh r0, [r1, #4] - bx ip - .align 2, 0 -_0204265C: .word BAG_ITEMS_PTR_MIRROR -_02042660: .word sub_020444B0 - arm_func_end sub_0204263C - - arm_func_start FreeUnkStorageStruct0xA0 -FreeUnkStorageStruct0xA0: ; 0x02042664 - stmdb sp!, {r3, lr} - ldr r0, _020426B0 ; =UNK_STORAGE_STRUCT_0XC - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl sub_02044474 - bl sub_020442CC - bl sub_020445C8 - ldr r0, _020426B0 ; =UNK_STORAGE_STRUCT_0XC - ldr r0, [r0, #4] - ldrsb r0, [r0, #4] - bl CloseCollectionMenu - ldr r0, _020426B0 ; =UNK_STORAGE_STRUCT_0XC - ldr r0, [r0, #4] - bl MemFree - ldr r0, _020426B0 ; =UNK_STORAGE_STRUCT_0XC - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_020426B0: .word UNK_STORAGE_STRUCT_0XC - arm_func_end FreeUnkStorageStruct0xA0 - - arm_func_start sub_020426B4 -sub_020426B4: ; 0x020426B4 - stmdb sp!, {r3, lr} - ldr r0, _0204272C ; =UNK_STORAGE_STRUCT_0XC - ldr r0, [r0, #4] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r0, [r0, #4] - bl IsCollectionMenuActive - cmp r0, #0 - bne _02042708 - ldr r0, _0204272C ; =UNK_STORAGE_STRUCT_0XC - ldr r0, [r0, #4] - ldrsb r0, [r0, #4] - bl sub_0202C75C - mvn r1, #0 - cmp r0, r1 - ldrne r1, _0204272C ; =UNK_STORAGE_STRUCT_0XC - moveq r0, #2 - strneh r0, [r1] - movne r0, #3 - ldmia sp!, {r3, pc} -_02042708: - ldr r0, _0204272C ; =UNK_STORAGE_STRUCT_0XC - ldr r0, [r0, #4] - ldrsb r0, [r0, #4] - bl GetWindowIdSelectedMenuItemIdx - and r1, r0, #0xff - mov r0, #0x14 - bl Arm9StoreUnkFieldNa0x2029ED8 - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0204272C: .word UNK_STORAGE_STRUCT_0XC - arm_func_end sub_020426B4 - - arm_func_start sub_02042730 -sub_02042730: ; 0x02042730 - ldr r0, _02042740 ; =UNK_STORAGE_STRUCT_0XC - mov r1, #0 - strh r1, [r0] - bx lr - .align 2, 0 -_02042740: .word UNK_STORAGE_STRUCT_0XC - arm_func_end sub_02042730 - - arm_func_start sub_02042744 -sub_02042744: ; 0x02042744 - ldr r0, _02042758 ; =UNK_STORAGE_STRUCT_0XC - ldr ip, _0204275C ; =sub_0202C620 - ldr r0, [r0, #4] - ldrsb r0, [r0, #4] - bx ip - .align 2, 0 -_02042758: .word UNK_STORAGE_STRUCT_0XC -_0204275C: .word sub_0202C620 - arm_func_end sub_02042744 - - arm_func_start sub_02042760 -sub_02042760: ; 0x02042760 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x64 - mov r5, r1 - mov r1, #6 - ldr r3, _02042A64 ; =BAG_ITEMS_PTR_MIRROR - mul r4, r5, r1 - ldr r1, [r3] - ldr r3, _02042A68 ; =UNK_STORAGE_STRUCT_0XC - ldr r6, [r1, #0x384] - ldr r7, [r3, #4] - ldrh r1, [r6, r4] - add lr, r6, r4 - mov r4, r2 - strh r1, [sp] - ldrh ip, [lr, #2] - mov r6, r0 - add r1, sp, #0 - strh ip, [sp, #2] - ldrh r2, [lr, #4] - strh r2, [sp, #4] - ldr r2, [r7] - cmp r2, #5 - addls pc, pc, r2, lsl #2 - b _02042A3C -_020427C0: ; jump table - b _020427D8 ; case 0 - b _020427E4 ; case 1 - b _020427E4 ; case 2 - b _02042808 ; case 3 - b _020428D4 ; case 4 - b _020429E8 ; case 5 -_020427D8: - mov r2, #0 - bl MaybeGetColoredFormattedItemName - b _02042A3C -_020427E4: - mov r7, #0 - mov r3, #1 - add r2, sp, #8 - str r7, [sp, #8] - strb r7, [sp, #0xc] - strb r3, [sp, #0x10] - strb r3, [sp] - bl MaybeGetColoredFormattedItemName - b _02042A3C -_02042808: - mov r1, #0 - mov r0, #1 - str r1, [sp, #8] - strb r1, [sp, #0xc] - strb r0, [sp, #0x10] - strb r0, [sp] - ldr r0, [r3, #8] - ldr r0, [r0, r5, lsl #2] - tst r0, #1 - bne _0204284C - mov r0, r5, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetItemAtIdx - ldrsh r0, [r0, #4] - bl IsStorableItem - cmp r0, #0 - beq _02042890 -_0204284C: - add r0, sp, #0x14 - add r1, sp, #0 - add r2, sp, #8 - bl MaybeGetColoredFormattedItemName - ldrb r2, [sp, #1] - cmp r2, #0 - beq _0204287C - ldr r1, _02042A6C ; =_0209C9F4 - add r3, sp, #0x14 - mov r0, r6 - bl SprintfStatic__02042A84 - b _02042A3C -_0204287C: - ldr r1, _02042A70 ; =_0209C9FC - add r2, sp, #0x14 - mov r0, r6 - bl SprintfStatic__02042A84 - b _02042A3C -_02042890: - add r0, sp, #0x14 - add r1, sp, #0 - add r2, sp, #8 - bl MaybeGetUncoloredFormattedItemName - ldrb r2, [sp, #1] - cmp r2, #0 - beq _020428C0 - ldr r1, _02042A74 ; =_0209CA08 - add r3, sp, #0x14 - mov r0, r6 - bl SprintfStatic__02042A84 - b _02042A3C -_020428C0: - ldr r1, _02042A78 ; =_0209CA18 - add r2, sp, #0x14 - mov r0, r6 - bl SprintfStatic__02042A84 - b _02042A3C -_020428D4: - ldrsh r0, [sp, #4] - bl IsShoppableItem - cmp r0, #0 - beq _020429A4 - mov r7, #3 - mov r3, #0 - mov r2, #0x6a - mov r1, #1 - add r0, sp, #0 - str r7, [sp, #8] - strb r3, [sp, #0xc] - strh r2, [sp, #0xe] - strb r1, [sp, #0x10] - strb r7, [sp] - bl GetActualSellPrice - mov r7, r0 - bl GetMoneyCarried - ldr r1, _02042A7C ; =0x0001869F - add r0, r7, r0 - cmp r0, r1 - add r0, sp, #0x14 - add r1, sp, #0 - add r2, sp, #8 - bgt _0204296C - bl MaybeGetColoredFormattedItemName - ldrb r2, [sp, #1] - cmp r2, #0 - beq _02042958 - ldr r1, _02042A6C ; =_0209C9F4 - add r3, sp, #0x14 - mov r0, r6 - bl SprintfStatic__02042A84 - b _02042A3C -_02042958: - ldr r1, _02042A70 ; =_0209C9FC - add r2, sp, #0x14 - mov r0, r6 - bl SprintfStatic__02042A84 - b _02042A3C -_0204296C: - bl MaybeGetUncoloredFormattedItemName - ldrb r2, [sp, #1] - cmp r2, #0 - beq _02042990 - ldr r1, _02042A74 ; =_0209CA08 - add r3, sp, #0x14 - mov r0, r6 - bl SprintfStatic__02042A84 - b _02042A3C -_02042990: - ldr r1, _02042A78 ; =_0209CA18 - add r2, sp, #0x14 - mov r0, r6 - bl SprintfStatic__02042A84 - b _02042A3C -_020429A4: - add r0, sp, #0x14 - add r1, sp, #0 - mov r2, #0 - bl MaybeGetUncoloredFormattedItemName - ldrb r2, [sp, #1] - cmp r2, #0 - beq _020429D4 - ldr r1, _02042A74 ; =_0209CA08 - add r3, sp, #0x14 - mov r0, r6 - bl SprintfStatic__02042A84 - b _02042A3C -_020429D4: - ldr r1, _02042A78 ; =_0209CA18 - add r2, sp, #0x14 - mov r0, r6 - bl SprintfStatic__02042A84 - b _02042A3C -_020429E8: - ldrsh r0, [sp, #4] - mov r2, #0 - mov r1, #1 - str r2, [sp, #8] - strb r2, [sp, #0xc] - strb r1, [sp, #0x10] - strb r1, [sp] - bl IsGummi - cmp r0, #0 - add r1, sp, #0 - add r2, sp, #8 - beq _02042A24 - mov r0, r6 - bl MaybeGetColoredFormattedItemName - b _02042A3C -_02042A24: - add r0, sp, #0x14 - bl MaybeGetUncoloredFormattedItemName - ldr r1, _02042A80 ; =_0209CA2C - add r2, sp, #0x14 - mov r0, r6 - bl SprintfStatic__02042A84 -_02042A3C: - ldr r0, _02042A68 ; =UNK_STORAGE_STRUCT_0XC - ldr r0, [r0, #8] - ldr r0, [r0, r5, lsl #2] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - str r0, [r4] - mov r0, r6 - add sp, sp, #0x64 - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_02042A64: .word BAG_ITEMS_PTR_MIRROR -_02042A68: .word UNK_STORAGE_STRUCT_0XC -_02042A6C: .word _0209C9F4 -_02042A70: .word _0209C9FC -_02042A74: .word _0209CA08 -_02042A78: .word _0209CA18 -_02042A7C: .word 0x0001869F -_02042A80: .word _0209CA2C - arm_func_end sub_02042760 - - arm_func_start SprintfStatic__02042A84 -SprintfStatic__02042A84: ; 0x02042A84 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r2, sp, #0xc - bic r2, r2, #3 - ldr r1, [sp, #0xc] - add r2, r2, #4 - bl vsprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SprintfStatic__02042A84 - - arm_func_start sub_02042AAC -sub_02042AAC: ; 0x02042AAC - stmdb sp!, {r3, lr} - ldr r0, _02042AD8 ; =UNK_STORAGE_STRUCT_0XC - ldr r0, [r0, #4] - cmp r0, #0 - ldrnesb r0, [r0, #4] - mvnne r1, #1 - cmpne r0, r1 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - bl IsCollectionMenuState3 - ldmia sp!, {r3, pc} - .align 2, 0 -_02042AD8: .word UNK_STORAGE_STRUCT_0XC - arm_func_end sub_02042AAC - - arm_func_start sub_02042ADC -sub_02042ADC: ; 0x02042ADC - ldr r0, _02042AF0 ; =UNK_STORAGE_STRUCT_0XC - ldr ip, _02042AF4 ; =sub_0202D0EC - ldr r0, [r0, #4] - ldrsb r0, [r0, #4] - bx ip - .align 2, 0 -_02042AF0: .word UNK_STORAGE_STRUCT_0XC -_02042AF4: .word sub_0202D0EC - arm_func_end sub_02042ADC diff --git a/asm/main_0203CAF0.s b/asm/main_0203CAF0.s new file mode 100644 index 00000000..fc309f67 --- /dev/null +++ b/asm/main_0203CAF0.s @@ -0,0 +1,7239 @@ + .include "asm/macros.inc" + .include "main_0203CAF0.inc" + + .text + + arm_func_start sub_0203CAF0 +sub_0203CAF0: ; 0x0203CAF0 + stmdb sp!, {r3, lr} + ldr r0, _0203CB54 ; =_020AFE70 + ldr r2, [r0] + ldrb r1, [r2, #0xa] + cmp r1, #0 + movne r0, #5 + strne r0, [r2, #0xc] + ldmneia sp!, {r3, pc} + ldrh r1, [r2, #8] + add r1, r1, #1 + strh r1, [r2, #8] + ldr r3, [r0] + ldrh r1, [r3, #8] + cmp r1, #0x1e + ldmloia sp!, {r3, pc} + ldrsh r2, [r3, #4] + ldrsh r1, [r3, #6] + cmp r2, r1 + ldmeqia sp!, {r3, pc} + mov r1, #0 + strh r1, [r3, #8] + ldr r0, [r0] + ldrsh r0, [r0, #4] + bl sub_0203CCD8 + ldmia sp!, {r3, pc} + .align 2, 0 +_0203CB54: .word _020AFE70 + arm_func_end sub_0203CAF0 + + arm_func_start sub_0203CB58 +sub_0203CB58: ; 0x0203CB58 + stmdb sp!, {r3, lr} + bl ov11_0230D220 + cmp r0, #0 + ldmneia sp!, {r3, pc} + bl ov11_0230D92C + ldr r0, _0203CB80 ; =_020AFE70 + mov r1, #6 + ldr r0, [r0] + str r1, [r0, #0xc] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203CB80: .word _020AFE70 + arm_func_end sub_0203CB58 + + arm_func_start sub_0203CB84 +sub_0203CB84: ; 0x0203CB84 + stmdb sp!, {r3, lr} + bl ov11_0230D220 + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0203CC5C ; =_020AFE70 + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0] + cmp r0, r1 + beq _0203CBD0 + bl HidePortraitBox + ldr r0, _0203CC5C ; =_020AFE70 + ldr r0, [r0] + ldrsb r0, [r0] + bl ClosePortraitBox + ldr r0, _0203CC5C ; =_020AFE70 + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0] +_0203CBD0: + ldr r0, _0203CC5C ; =_020AFE70 + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #2] + cmp r0, r1 + beq _0203CC0C + bl sub_0202F954 + ldr r0, _0203CC5C ; =_020AFE70 + ldr r0, [r0] + ldrsb r0, [r0, #2] + bl CloseTextBox + ldr r0, _0203CC5C ; =_020AFE70 + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #2] +_0203CC0C: + ldr r0, _0203CC5C ; =_020AFE70 + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #1] + cmp r0, r1 + beq _0203CC48 + bl sub_0202F954 + ldr r0, _0203CC5C ; =_020AFE70 + ldr r0, [r0] + ldrsb r0, [r0, #1] + bl CloseTextBox + ldr r0, _0203CC5C ; =_020AFE70 + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #1] +_0203CC48: + ldr r0, _0203CC5C ; =_020AFE70 + mov r1, #0xa + ldr r0, [r0] + str r1, [r0, #0xc] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203CC5C: .word _020AFE70 + arm_func_end sub_0203CB84 + + arm_func_start sub_0203CC60 +sub_0203CC60: ; 0x0203CC60 + stmdb sp!, {r3, lr} + bl ov11_0230D220 + cmp r0, #0 + ldreq r0, _0203CC80 ; =_020AFE70 + moveq r1, #0xa + ldreq r0, [r0] + streq r1, [r0, #0xc] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203CC80: .word _020AFE70 + arm_func_end sub_0203CC60 + + arm_func_start sub_0203CC84 +sub_0203CC84: ; 0x0203CC84 + stmdb sp!, {r3, lr} + bl ov11_0230D220 + cmp r0, #0 + ldmneia sp!, {r3, pc} + bl ov11_0230D000 + ldr r0, _0203CCAC ; =_020AFE70 + mov r1, #9 + ldr r0, [r0] + str r1, [r0, #0xc] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203CCAC: .word _020AFE70 + arm_func_end sub_0203CC84 + + arm_func_start sub_0203CCB0 +sub_0203CCB0: ; 0x0203CCB0 + stmdb sp!, {r3, lr} + bl ov11_0230D220 + cmp r0, #0 + ldreq r0, _0203CCD0 ; =_020AFE70 + moveq r1, #0xa + ldreq r0, [r0] + streq r1, [r0, #0xc] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203CCD0: .word _020AFE70 + arm_func_end sub_0203CCB0 + + arm_func_start sub_0203CCD4 +sub_0203CCD4: ; 0x0203CCD4 + bx lr + arm_func_end sub_0203CCD4 + + arm_func_start sub_0203CCD8 +sub_0203CCD8: ; 0x0203CCD8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr r1, _0203CE00 ; =TEAM_MEMBER_TABLE_PTR + ldr r2, _0203CE04 ; =_020AFE70 + ldr r4, [r1] + ldr r3, [r2] + mov r1, #0x44 + strh r0, [r3, #6] + ldr r3, [r2] + sub r2, r1, #0x46 + ldrsb r3, [r3] + smlabb r4, r0, r1, r4 + cmp r3, r2 + bne _0203CD2C + mov r0, #1 + mov r1, #3 + mov r2, #0 + bl CreatePortraitBox + ldr r1, _0203CE04 ; =_020AFE70 + ldr r1, [r1] + strb r0, [r1] +_0203CD2C: + ldr r1, _0203CE04 ; =_020AFE70 + mvn r0, #1 + ldr r1, [r1] + ldrsb r1, [r1, #1] + cmp r1, r0 + bne _0203CD5C + ldr r0, _0203CE08 ; =_0209C7E4 + ldr r1, _0203CE0C ; =sub_0203CE1C + bl CreateTextBox + ldr r1, _0203CE04 ; =_020AFE70 + ldr r1, [r1] + strb r0, [r1, #1] +_0203CD5C: + ldr r1, _0203CE04 ; =_020AFE70 + mvn r0, #1 + ldr r1, [r1] + ldrsb r1, [r1, #2] + cmp r1, r0 + bne _0203CD8C + ldr r0, _0203CE10 ; =_0209C7D4 + ldr r1, _0203CE14 ; =sub_0203CFCC + bl CreateTextBox + ldr r1, _0203CE04 ; =_020AFE70 + ldr r1, [r1] + strb r0, [r1, #2] +_0203CD8C: + add r0, sp, #0 + bl InitPortraitParams + ldrsh r1, [r4, #4] + add r0, sp, #0 + bl InitPortraitParamsWithMonsterId + add r0, sp, #0 + mov r1, #2 + bl SetPortraitLayout + ldr r1, _0203CE18 ; =_0209C7CC + add r0, sp, #0 + bl SetPortraitOffset + add r0, sp, #0 + mov r1, #0 + bl SetPortraitEmotion + ldr r0, _0203CE04 ; =_020AFE70 + add r1, sp, #0 + ldr r0, [r0] + ldrsb r0, [r0] + bl ShowPortraitInPortraitBox + ldr r0, _0203CE04 ; =_020AFE70 + ldr r0, [r0] + ldrsb r0, [r0, #1] + bl IsTextboxState3 + ldr r0, _0203CE04 ; =_020AFE70 + ldr r0, [r0] + ldrsb r0, [r0, #2] + bl IsTextboxState3 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_0203CE00: .word TEAM_MEMBER_TABLE_PTR +_0203CE04: .word _020AFE70 +_0203CE08: .word _0209C7E4 +_0203CE0C: .word sub_0203CE1C +_0203CE10: .word _0209C7D4 +_0203CE14: .word sub_0203CFCC +_0203CE18: .word _0209C7CC + arm_func_end sub_0203CCD8 + + arm_func_start sub_0203CE1C +sub_0203CE1C: ; 0x0203CE1C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0x1d4 + mov r5, r0 + mvn r1, #1 + cmp r5, r1 + beq _0203CF84 + ldr r1, _0203CF8C ; =_020AFE70 + ldr r2, _0203CF90 ; =TEAM_MEMBER_TABLE_PTR + ldr r1, [r1] + ldr r3, [r2] + ldrsh r2, [r1, #6] + mov r1, #0x44 + smlabb r4, r2, r1, r3 + bl ClearWindow + ldrsh r0, [r4, #4] + bl GetDexNumber + str r0, [sp, #0xa8] + add r1, sp, #0x84 + str r1, [sp] + ldr r2, _0203CF94 ; =_0209C820 + ldr r3, _0203CF98 ; =0x0000C402 + add r0, sp, #0xd4 + mov r1, #0x100 + bl PreprocessString + mov r0, r5 + mov r1, #0x20 + mov r2, #0 + add r3, sp, #0xd4 + bl DrawTextInWindow + ldr r0, _0203CF8C ; =_020AFE70 + ldr r0, [r0] + ldrsh r0, [r0, #6] + bl sub_02056410 + cmp r0, #0 + beq _0203CEC8 + ldr r0, _0203CF8C ; =_020AFE70 + ldr r0, [r0] + ldrsh r0, [r0, #6] + bl sub_020564B0 + cmp r0, #0 + movne r0, #0x59 + moveq r0, #0x46 + b _0203CEE4 +_0203CEC8: + ldr r0, _0203CF8C ; =_020AFE70 + ldr r0, [r0] + ldrsh r0, [r0, #6] + bl sub_02056F60 + cmp r0, #0 + movne r0, #0x44 + moveq r0, #0x57 +_0203CEE4: + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + add r0, sp, #0xd4 + add r1, r4, #0x3a + mov r2, #0xa + bl StrncpySimpleNoPadSafe + ldr r1, _0203CF9C ; =_0209C82C + add r0, sp, #0x44 + add r3, sp, #0xd4 + mov r2, r6 + bl SprintfStatic__0203CFA4 + ldrsh r1, [r4, #4] + add r0, sp, #0xd4 + bl GetSpeciesString + ldr r1, _0203CF9C ; =_0209C82C + add r0, sp, #4 + mov r2, #0x4b + add r3, sp, #0xd4 + bl SprintfStatic__0203CFA4 + ldr r1, _0203CFA0 ; =_0209C83C + add r0, sp, #0xd4 + add r2, sp, #0x44 + add r3, sp, #4 + bl SprintfStatic__0203CFA4 + mov r0, r5 + mov r1, #0x4c + mov r2, #0 + add r3, sp, #0xd4 + bl DrawTextInWindow + ldrsh r1, [r4, #4] + add r0, sp, #0xd4 + orr r1, r1, #0x10000 + bl sub_02024D7C + mov r0, r5 + mov r1, #0xd0 + mov r2, #0 + add r3, sp, #0xd4 + bl DrawTextInWindow + mov r0, r5 + bl UpdateWindow +_0203CF84: + add sp, sp, #0x1d4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_0203CF8C: .word _020AFE70 +_0203CF90: .word TEAM_MEMBER_TABLE_PTR +_0203CF94: .word _0209C820 +_0203CF98: .word 0x0000C402 +_0203CF9C: .word _0209C82C +_0203CFA0: .word _0209C83C + arm_func_end sub_0203CE1C + + arm_func_start SprintfStatic__0203CFA4 +SprintfStatic__0203CFA4: ; 0x0203CFA4 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, lr} + add r2, sp, #0xc + bic r2, r2, #3 + ldr r1, [sp, #0xc] + add r2, r2, #4 + bl vsprintf + ldmia sp!, {r3, lr} + add sp, sp, #0x10 + bx lr + arm_func_end SprintfStatic__0203CFA4 + + arm_func_start sub_0203CFCC +sub_0203CFCC: ; 0x0203CFCC + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0xcc + sub sp, sp, #0x400 + mov r5, #4 + mov r6, r0 + sub r0, r5, #6 + cmp r6, r0 + beq _0203D3F4 + ldr r1, _0203D400 ; =_020AFE70 + add r0, sp, #4 + ldr r1, [r1] + ldrsh r1, [r1, #6] + bl sub_0205B028 + ldr r0, _0203D400 ; =_020AFE70 + ldr r1, _0203D404 ; =TEAM_MEMBER_TABLE_PTR + ldr r0, [r0] + ldr r3, [r1] + ldrsh r2, [r0, #6] + mov r1, #0x44 + mov r0, r6 + smlabb r4, r2, r1, r3 + bl ClearWindow + ldrsh r0, [sp, #4] + mov r1, #0 + bl GetType + mov r8, r0 + ldrsh r0, [sp, #4] + mov r1, #1 + bl GetType + mov r1, r5 + mov r7, r0 + ldr r3, _0203D408 ; =0x00000976 + mov r0, r6 + mov r2, r1 + bl AppendStandardStringToMission + mov r0, r8 + bl GetTypeStringId + mov r3, r0 + mov r0, r6 + mov r1, #0x38 + mov r2, r5 + bl AppendStandardStringToMission + cmp r7, #0 + beq _0203D098 + mov r0, r7 + bl GetTypeStringId + mov r3, r0 + mov r0, r6 + mov r1, #0x68 + mov r2, r5 + bl AppendStandardStringToMission +_0203D098: + add r0, r5, #0xc + mov r1, r0, lsl #0x10 + ldr r2, [sp, #0x30] + ldr r0, _0203D40C ; =0x00000977 + str r2, [sp, #0xa0] + mov r5, r1, asr #0x10 + bl StringFromId + mov r2, r0 + add ip, sp, #0x7c + add r0, sp, #0xcc + mov r1, #0x400 + mov r3, #0 + str ip, [sp] + bl PreprocessString + add r3, sp, #0xcc + mov r0, r6 + mov r1, #4 + mov r2, r5 + bl DrawTextInWindow + add r0, r5, #0xc + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + ldr r0, [sp, #0x2c] + ldr r1, [sp, #0x28] + str r0, [sp, #0xa4] + ldr r0, _0203D410 ; =0x00000978 + str r1, [sp, #0xa0] + bl StringFromId + add r1, sp, #0x7c + mov r2, r0 + str r1, [sp] + add r0, sp, #0xcc + mov r1, #0x400 + mov r3, #0 + bl PreprocessString + mov r0, r6 + mov r1, #4 + mov r2, r5 + add r3, sp, #0xcc + bl DrawTextInWindow + add r0, r5, #0xc + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + ldr r0, _0203D414 ; =0x00000979 + bl StringFromId + add r1, sp, #0x7c + mov r2, r0 + str r1, [sp] + add r0, sp, #0xcc + mov r1, #0x400 + mov r3, #0 + bl PreprocessString + mov r0, r6 + mov r1, #4 + mov r2, r5 + add r3, sp, #0xcc + bl DrawTextInWindow + ldrb r2, [sp, #0x38] + ldrb r1, [sp, #0x3d] + ldr r0, _0203D418 ; =0x0000097B + str r2, [sp, #0xa0] + cmp r1, #0 + addne r1, r2, r1 + addne r0, r0, #1 + strne r1, [sp, #0xa0] + bl StringFromId + mov r2, r0 + add ip, sp, #0x7c + add r0, sp, #0xcc + mov r1, #0x400 + mov r3, #0 + str ip, [sp] + bl PreprocessString + add r3, sp, #0xcc + mov r0, r6 + mov r2, r5 + mov r1, #4 + bl DrawTextInWindow + ldrb r2, [sp, #0x3a] + ldrb r1, [sp, #0x3f] + ldr r0, _0203D41C ; =0x0000097F + str r2, [sp, #0xa0] + cmp r1, #0 +#ifdef JAPAN + addne r1, r2, r1 + strne r1, [sp, #0xa0] + addne r0, r0, #1 +#else + addne r0, r2, r1 + strne r0, [sp, #0xa0] + movne r0, #0x980 +#endif + bl StringFromId + mov r2, r0 + add ip, sp, #0x7c + add r0, sp, #0xcc + mov r1, #0x400 + mov r3, #0 + str ip, [sp] + bl PreprocessString + add r3, sp, #0xcc + mov r0, r6 + mov r2, r5 + mov r1, #4 + bl DrawTextInWindow + add r0, r5, #0xc + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + ldr r0, _0203D420 ; =0x0000097A + bl StringFromId + add r1, sp, #0x7c + mov r2, r0 + str r1, [sp] + add r0, sp, #0xcc + mov r1, #0x400 + mov r3, #0 + bl PreprocessString + mov r0, r6 + mov r1, #4 + mov r2, r5 + add r3, sp, #0xcc + bl DrawTextInWindow + ldrb r2, [sp, #0x39] + ldrb r1, [sp, #0x3e] + ldr r0, _0203D424 ; =0x0000097D + str r2, [sp, #0xa0] + cmp r1, #0 + addne r1, r2, r1 + addne r0, r0, #1 + strne r1, [sp, #0xa0] + bl StringFromId + mov r2, r0 + add ip, sp, #0x7c + add r0, sp, #0xcc + mov r1, #0x400 + mov r3, #0 + str ip, [sp] + bl PreprocessString + add r3, sp, #0xcc + mov r0, r6 + mov r2, r5 + mov r1, #4 + bl DrawTextInWindow + ldrb r2, [sp, #0x3b] + ldrb r1, [sp, #0x40] + ldr r0, _0203D428 ; =0x00000981 + str r2, [sp, #0xa0] + cmp r1, #0 + addne r1, r2, r1 + addne r0, r0, #1 + strne r1, [sp, #0xa0] + bl StringFromId + mov r2, r0 + add ip, sp, #0x7c + add r0, sp, #0xcc + mov r1, #0x400 + mov r3, #0 + str ip, [sp] + bl PreprocessString + add r3, sp, #0xcc + mov r0, r6 + mov r2, r5 + mov r1, #4 + bl DrawTextInWindow + ldrsh r0, [sp, #0x42] + mov r1, #0xa + str r0, [sp, #0xa0] + bl _s32_div_f + mov r0, r0, lsl #0x10 + movs r0, r0, asr #0x10 + movmi r0, #0 + bmi _0203D338 + cmp r0, #0x63 + movge r0, #0x63 +_0203D338: + bl sub_0205B0A0 + str r0, [sp, #0xb4] + ldr r0, _0203D42C ; =0x00000983 + bl StringFromId + add r1, sp, #0x7c + mov r2, r0 + str r1, [sp] + add r0, sp, #0xcc + mov r1, #0x400 + mov r3, #0 + bl PreprocessString + add r0, r5, #0xc + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + mov r0, r6 + mov r1, #4 + mov r2, r5 + add r3, sp, #0xcc + bl DrawTextInWindow + ldrsh r0, [r4, #4] + ldrsh r1, [sp, #0x42] + bl GetNextIqSkill + cmp r0, #0 + add r4, sp, #0x7c + mov r1, #0x400 + bne _0203D3B8 + ldr r2, _0203D430 ; =0x00000986 + add r0, sp, #0xcc + mov r3, #0 + str r4, [sp] + bl PreprocessStringFromId + b _0203D3D0 +_0203D3B8: + ldr r2, _0203D434 ; =0x00000985 + str r0, [sp, #0x8c] + add r0, sp, #0xcc + mov r3, #0 + str r4, [sp] + bl PreprocessStringFromId +_0203D3D0: + add r0, r5, #0xc + mov r1, r0, lsl #0x10 + mov r2, r1, asr #0x10 + add r3, sp, #0xcc + mov r0, r6 + mov r1, #4 + bl DrawTextInWindow + mov r0, r6 + bl UpdateWindow +_0203D3F4: + add sp, sp, #0xcc + add sp, sp, #0x400 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +#ifdef JAPAN +#define SUB_0203CFCC_OFFSET 0x19D0 +#else +#define SUB_0203CFCC_OFFSET 0 +#endif +_0203D400: .word _020AFE70 +_0203D404: .word TEAM_MEMBER_TABLE_PTR +_0203D408: .word 0x00000976 + SUB_0203CFCC_OFFSET +_0203D40C: .word 0x00000977 + SUB_0203CFCC_OFFSET +_0203D410: .word 0x00000978 + SUB_0203CFCC_OFFSET +_0203D414: .word 0x00000979 + SUB_0203CFCC_OFFSET +_0203D418: .word 0x0000097B + SUB_0203CFCC_OFFSET +_0203D41C: .word 0x0000097F + SUB_0203CFCC_OFFSET +_0203D420: .word 0x0000097A + SUB_0203CFCC_OFFSET +_0203D424: .word 0x0000097D + SUB_0203CFCC_OFFSET +_0203D428: .word 0x00000981 + SUB_0203CFCC_OFFSET +_0203D42C: .word 0x00000983 + SUB_0203CFCC_OFFSET +_0203D430: .word 0x00000986 + SUB_0203CFCC_OFFSET +_0203D434: .word 0x00000985 + SUB_0203CFCC_OFFSET + arm_func_end sub_0203CFCC + + arm_func_start sub_0203D438 +sub_0203D438: ; 0x0203D438 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r0 + mov r5, r1 + mov r0, #0x3c0 + mov r1, #8 + mov r4, r2 + bl MemAlloc + ldr r2, _0203D534 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x3c0 + str r0, [r2] + bl MemZero + ldr r0, _0203D534 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov ip, #2 + ldr r7, [r0] + add lr, r7, #0x14 +_0203D474: + ldmia r6!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0203D474 + ldmia r6, {r0, r1, r2} + stmia lr, {r0, r1, r2} + mov r1, #0 + ldr r0, _0203D534 ; =MISSION_REWARD_STRUCT_MAIN_PTR + str r1, [r7, #0x10] + ldr r1, [r0] + str r5, [r1, #8] + ldr r1, [r0] + str r4, [r1, #0xe4] + ldr r0, [r0] + add r0, r0, #0x8c + bl InitPreprocessorArgs + ldr r0, _0203D534 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r2, #0x70000 + ldr r1, [r0] + str r2, [r1, #0xd8] + ldr r2, [r0] + ldrsh r1, [r2, #0x14] + str r1, [r2, #0x8c] + ldr r0, [r0] + add r0, r0, #0x190 + bl InitPortraitParams + ldr r0, _0203D534 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + ldrsh r1, [r0, #0x14] + cmp r1, #0 + beq _0203D4F8 + add r0, r0, #0x190 + bl InitPortraitParamsWithMonsterId +_0203D4F8: + ldr r1, _0203D534 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mvn r4, #1 + ldr r0, [r1] + mov r3, #0 + strb r4, [r0, #4] + ldr r2, [r1] + mov r0, #1 + strb r4, [r2, #5] + ldr r2, [r1] + strb r4, [r2, #6] + ldr r2, [r1] + str r3, [r2] + ldr r1, [r1] + strb r4, [r1, #0x1a0] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0203D534: .word MISSION_REWARD_STRUCT_MAIN_PTR + arm_func_end sub_0203D438 + + arm_func_start sub_0203D538 +sub_0203D538: ; 0x0203D538 +#ifdef JAPAN +#define SUB_0203D538_STACK_OFFSET -6 +#define SUB_0203D538_STACK_OFFSET_2 -8 +#else +#define SUB_0203D538_STACK_OFFSET 0 +#define SUB_0203D538_STACK_OFFSET_2 0 +#endif + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x11c + SUB_0203D538_STACK_OFFSET_2 + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r4, [r1] + ldr r0, [r4] + cmp r0, #0x4c + addls pc, pc, r0, lsl #2 + b _0203EF9C +_0203D558: ; jump table + b _0203D68C ; case 0 + b _0203D7D4 ; case 1 + b _0203D89C ; case 2 + b _0203D8CC ; case 3 + b _0203D8EC ; case 4 + b _0203D954 ; case 5 + b _0203D984 ; case 6 + b _0203D9A4 ; case 7 + b _0203DA64 ; case 8 + b _0203DAA0 ; case 9 + b _0203DAEC ; case 10 + b _0203DB20 ; case 11 + b _0203DBB0 ; case 12 + b _0203DC68 ; case 13 + b _0203DC98 ; case 14 + b _0203DCB8 ; case 15 + b _0203DD68 ; case 16 + b _0203DDAC ; case 17 + b _0203DE38 ; case 18 + b _0203DE50 ; case 19 + b _0203DE6C ; case 20 + b _0203DEA0 ; case 21 + b _0203DEBC ; case 22 + b _0203DF1C ; case 23 + b _0203DF40 ; case 24 + b _0203DF5C ; case 25 + b _0203DF74 ; case 26 + b _0203DF90 ; case 27 + b _0203DFB0 ; case 28 + b _0203DFD8 ; case 29 + b _0203E10C ; case 30 + b _0203E150 ; case 31 + b _0203E038 ; case 32 + b _0203E0BC ; case 33 + b _0203E0EC ; case 34 + b _0203E198 ; case 35 + b _0203E1DC ; case 36 + b _0203E20C ; case 37 + b _0203E22C ; case 38 + b _0203E274 ; case 39 + b _0203E2A4 ; case 40 + b _0203E2C4 ; case 41 + b _0203E460 ; case 42 + b _0203E490 ; case 43 + b _0203E518 ; case 44 + b _0203E8E8 ; case 45 + b _0203E934 ; case 46 + b _0203E964 ; case 47 + b _0203E984 ; case 48 + b _0203E9A8 ; case 49 + b _0203E9D8 ; case 50 + b _0203E9F8 ; case 51 + b _0203E5B4 ; case 52 + b _0203E61C ; case 53 + b _0203E6B8 ; case 54 + b _0203E6D8 ; case 55 + b _0203E7EC ; case 56 + b _0203E80C ; case 57 + b _0203EA24 ; case 58 + b _0203EAB8 ; case 59 + b _0203EAE8 ; case 60 + b _0203EB08 ; case 61 + b _0203EB64 ; case 62 + b _0203EB94 ; case 63 + b _0203EBB4 ; case 64 + b _0203EC28 ; case 65 + b _0203EC5C ; case 66 + b _0203ECA8 ; case 67 + b _0203ECC4 ; case 68 + b _0203ED34 ; case 69 + b _0203ED50 ; case 70 + b _0203EE14 ; case 71 + b _0203EE30 ; case 72 + b _0203EE68 ; case 73 + b _0203EEBC ; case 74 + b _0203EF78 ; case 75 + b _0203EF94 ; case 76 +_0203D68C: + ldrb r0, [r4, #0x36] + cmp r0, #0 + beq _0203D6E4 + bl GetEggSpecies + cmp r0, #0 + bne _0203D6B4 + mov r0, #0x1e + bl GetResolvedPerformanceProgressFlag + cmp r0, #0 + bne _0203D73C +_0203D6B4: + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mvn r0, #0 + ldr r4, [r1] + mov r2, #0 + ldr r3, [r4, #0x1c] + mul r0, r3, r0 + str r0, [r4, #0x1c] + ldr r0, [r1] + strb r2, [r0, #0x36] + ldr r0, [r1] + strh r2, [r0, #0x38] + b _0203D73C +_0203D6E4: + ldrsh r0, [r4, #0x38] + cmp r0, #0 + beq _0203D73C + mov r0, #0x1d + bl GetResolvedPerformanceProgressFlag + cmp r0, #0 + beq _0203D718 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + ldrsh r0, [r0, #0x38] + bl IsMonsterIllegalForMissions + cmp r0, #0 + beq _0203D73C +_0203D718: + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r3, #0 + ldr r2, [r1] + sub r0, r3, #1 + strh r3, [r2, #0x38] + ldr r2, [r1] + ldr r1, [r2, #0x1c] + mul r0, r1, r0 + str r0, [r2, #0x1c] +_0203D73C: + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + ldr r0, [r0, #0xe4] + tst r0, #0x10 + bne _0203D7C0 + mov r0, #0x1f + bl GetResolvedPerformanceProgressFlag + cmp r0, #0 + bne _0203D7C0 + mov r5, #0 + mov r4, r5 + ldr sb, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mvn r7, #0 + mov r8, #6 + b _0203D7B0 +_0203D778: + mul r6, r5, r8 + add r0, r1, r6 + ldrsh r0, [r0, #0x28] + bl GetItemCategory + cmp r0, #0xf + bne _0203D7AC + ldr r0, [sb] + add r0, r0, r6 + strh r4, [r0, #0x28] + ldr r2, [sb] + ldr r0, [r2, #0x1c] + mul r1, r0, r7 + str r1, [r2, #0x1c] +_0203D7AC: + add r5, r5, #1 +_0203D7B0: + ldr r1, [sb] + ldr r0, [r1, #0x20] + cmp r5, r0 + blt _0203D778 +_0203D7C0: + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #1 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203D7D4: + ldr r0, [r4, #0x1c] + cmp r0, #0 + movle r0, #7 + strle r0, [r4] + ble _0203EF9C + str r0, [r4, #0xb0] +#ifdef JAPAN + ldr r3, [r1] + mov r0, #0xa + ldr r2, [r3, #0x1c] + mul r0, r2, r0 + str r0, [r3, #0xb4] + ldr r1, [r1] + ldr r0, [r1, #8] + cmp r0, #0 + beq _0203D890 + cmp r0, #2 + bne _0203DC0C + ldr r4, _0203E4B4 ; =0x0000245D + bl sub_0203F00C + b _0203D864 +_0203DC0C: + cmp r0, #3 + bne _0203DC20 + ldr r4, _0203E89C ; =0x0000245E + bl sub_0203F00C + b _0203D864 +_0203DC20: + cmp r0, #4 + ldrne r4, _0203E8A0 ; =0x0000245C +#else + ldr r4, [r1] + mov r0, #0xa + ldr r2, [r4, #0x1c] + mul r3, r2, r0 + str r3, [r4, #0xb4] + ldr r2, [r1] + ldr r1, [r2, #8] + cmp r1, #0 + beq _0203D890 + cmp r1, #2 + bne _0203D824 + ldr r4, _0203E4B4 ; =0x00000289 + bl sub_0203F00C + b _0203D864 +_0203D824: + cmp r1, #3 + bne _0203D838 + add r4, r0, #0x280 + bl sub_0203F00C + b _0203D864 +_0203D838: + cmp r1, #4 + movne r4, #0x288 +#endif + bne _0203D864 + mov r0, #0 + mov r1, #0x69 + bl LoadScriptVariableValue +#ifdef JAPAN + add r0, r0, #0x5f + add r0, r0, #0x2400 +#else + add r0, r0, #0x8b + add r0, r0, #0x200 +#endif + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 + bl sub_0203F00C +_0203D864: + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, _0203E4B8 ; =0x0000101C + ldr r2, [r1] + mov r1, r4 + add r2, r2, #0x8c + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #2 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203D890: + mov r0, #4 +#ifdef JAPAN + str r0, [r1] +#else + str r0, [r2] +#endif + b _0203EF9C +_0203D89C: + bl sub_02046C78 + cmp r0, #0 + beq _0203EF9C + bl MissionRewardCloseAllBoxes + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r3, #0xa + ldr r2, [r0] + mov r1, #3 + str r3, [r2, #0x188] + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203D8CC: + ldr r2, [r4, #0x188] + sub r0, r2, #1 + str r0, [r4, #0x188] + cmp r2, #0 + ldrle r0, [r1] + movle r1, #4 + strle r1, [r0] + b _0203EF9C +_0203D8EC: + mov r0, #4 + bl sub_02017C50 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + ldr r0, [r0, #0x1c] + bl AddMoneyCarried + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r2, [r0] + ldr r0, [r2, #8] + cmp r0, #2 + ldreq r1, _0203E4BC ; =0x0000026F + beq _0203D934 + cmp r0, #3 +#ifdef JAPAN + ldreq r1, _0203E8AC ; =0x00002444 +#else + moveq r1, #0x270 +#endif + beq _0203D934 + cmp r0, #4 + ldreq r1, _0203E4C0 ; =0x00000271 + ldrne r1, _0203E4C4 ; =0x0000026E +_0203D934: + ldr r0, _0203E4B8 ; =0x0000101C + add r2, r2, #0x8c + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #5 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203D954: + bl sub_02046C78 + cmp r0, #0 + beq _0203EF9C + bl MissionRewardCloseAllBoxes + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r3, #0xa + ldr r2, [r0] + mov r1, #6 + str r3, [r2, #0x188] + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203D984: + ldr r2, [r4, #0x188] + sub r0, r2, #1 + str r0, [r4, #0x188] + cmp r2, #0 + ldrle r0, [r1] + movle r1, #7 + strle r1, [r0] + b _0203EF9C +_0203D9A4: + ldrsh r0, [r4, #0x38] + cmp r0, #0 + beq _0203D9BC + ldrb r0, [r4, #0x36] + cmp r0, #0 + beq _0203D9C8 +_0203D9BC: + mov r0, #0x29 + str r0, [r4] + b _0203EF9C +_0203D9C8: + ldrsh r0, [r4, #0x14] + str r0, [r4, #0x8c] + ldr r2, [r1] + ldrsh r0, [r2, #0x38] + str r0, [r2, #0x90] + ldr r1, [r1] + ldr r0, [r1, #8] + cmp r0, #0 + beq _0203DA58 + cmp r0, #2 + bne _0203DA00 + ldr r4, _0203E4C8 ; =0x0000029A + bl sub_0203F00C + b _0203DA2C +_0203DA00: + cmp r0, #4 + ldrne r4, _0203E4CC ; =0x00000299 + bne _0203DA2C + mov r0, #0 + mov r1, #0x69 + bl LoadScriptVariableValue +#ifdef JAPAN + add r0, r0, #0x6f + add r0, r0, #0x2400 +#else + add r0, r0, #0x9b + add r0, r0, #0x200 +#endif + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 + bl sub_0203F00C +_0203DA2C: + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, _0203E4D0 ; =0x00003008 + ldr r2, [r1] + mov r1, r4 + add r2, r2, #0x8c + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #8 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203DA58: + mov r0, #0xb + str r0, [r1] + b _0203EF9C +_0203DA64: + bl sub_02046C78 + cmp r0, #0 + beq _0203EF9C + mov r0, #0 + ldr r3, _0203E4D4 ; =_0209C884 + mov r2, r0 + mov r1, #0x11 + bl CreateParentMenuFromStringIds + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r2, #9 + ldr r3, [r1] + strb r0, [r3, #4] + ldr r0, [r1] + str r2, [r0] + b _0203EF9C +_0203DAA0: + ldrsb r0, [r4, #4] + bl IsParentMenuActive + cmp r0, #0 + bne _0203EF9C + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl GetSimpleMenuResult__0202AEA4 + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r1, [r1] + str r0, [r1, #0x18c] + bl MissionRewardCloseAllBoxes + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r2, #0xa + ldr r1, [r0] + str r2, [r1, #0x188] + ldr r0, [r0] + str r2, [r0] + b _0203EF9C +_0203DAEC: + ldr r2, [r4, #0x188] + sub r0, r2, #1 + str r0, [r4, #0x188] + cmp r2, #0 + bgt _0203EF9C + ldr r1, [r1] + ldr r0, [r1, #0x18c] + cmp r0, #0 + moveq r0, #0xb + streq r0, [r1] + movne r0, #0x23 + strne r0, [r1] + b _0203EF9C +_0203DB20: + ldr r3, _0203E4D8 ; =_0209C846 + add r2, sp, #0x22 + SUB_0203D538_STACK_OFFSET + mov r1, #4 +_0203DB2C: + ldrh r0, [r3], #2 + subs r1, r1, #1 + strh r0, [r2], #2 + bne _0203DB2C + ldrsh r1, [r4, #0x38] + add r0, sp, #0x22 + SUB_0203D538_STACK_OFFSET + mov r2, #1 + mov r3, #0 + bl sub_02053A0C + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + add r1, sp, #0x22 + SUB_0203D538_STACK_OFFSET + ldr r0, [r0] + ldr r3, _0203E4DC ; =_0209C844 + str r1, [sp] + ldrsh r1, [r0, #0x38] + add r0, r0, #0x40 + mov r2, #0 + bl sub_02052E2C + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + add r0, r0, #0x40 + bl sub_02055D4C + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r2, [r1] + str r0, [r2, #0x3b8] + ldr r1, [r1] + ldr r0, [r1, #0x3b8] + cmp r0, #0 + movne r0, #0xc + strne r0, [r1] + moveq r0, #0x1e + streq r0, [r1] + b _0203EF9C +_0203DBB0: + ldr r0, [r4, #0x18] + cmp r0, #1 + ble _0203DBD0 + mov r1, r0, lsl #0x10 + ldr r0, [r4, #0x3b8] + mov r1, r1, asr #0x10 + mov r2, #1 + bl ApplyLevelUpBoostsToGroundMonster +_0203DBD0: + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r2, [r0] + ldrsh r1, [r2, #0x38] + str r1, [r2, #0x8c] + ldr r4, [r0] + ldr r0, [r4, #8] + cmp r0, #2 + bne _0203DC18 + ldr r0, _0203E4B8 ; =0x0000101C + ldr r1, _0203E4E0 ; =0x0000027A + add r2, r4, #0x8c + bl sub_02046BE8 + bl sub_0203F00C + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0xd + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203DC18: + cmp r0, #4 + movne r0, #0xf + strne r0, [r4] + bne _0203EF9C + mov r0, #0 + mov r1, #0x69 + bl LoadScriptVariableValue +#ifdef JAPAN + add r0, r0, #0x4f + add r0, r0, #0x2400 +#else + add r0, r0, #0x7b + add r0, r0, #0x200 +#endif + mov r1, r0, lsl #0x10 + ldr r0, _0203E4B8 ; =0x0000101C + mov r1, r1, lsr #0x10 + add r2, r4, #0x8c + bl sub_02046BE8 + bl sub_0203F00C + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0xd + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203DC68: + bl sub_02046C78 + cmp r0, #0 + beq _0203EF9C + bl MissionRewardCloseAllBoxes + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r3, #0xa + ldr r2, [r0] + mov r1, #0xe + str r3, [r2, #0x188] + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203DC98: + ldr r2, [r4, #0x188] + sub r0, r2, #1 + str r0, [r4, #0x188] + cmp r2, #0 + ldrle r0, [r1] + movle r1, #0xf + strle r1, [r0] + b _0203EF9C +_0203DCB8: + ldrsh r1, [r4, #0x38] + add r0, r4, #0xb5 + add r0, r0, #0x200 + mov r2, #0x4e + bl GetNameWithGender + ldr r3, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, _0203E4E4 ; =0x0000100C + ldr r4, [r3] + ldr r1, _0203E4E8 ; =0x000002A6 + add r2, r4, #0xb5 + add r2, r2, #0x200 + str r2, [r4, #0xc4] + ldr r2, [r3] + add r2, r2, #0x8c + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR +#ifndef JAPAN + mov r2, #0xa +#endif + ldr r0, [r0] + ldr r1, [r0, #0x3b8] + add r0, r0, #0xa1 + add r0, r0, #0x100 + add r1, r1, #0x3a +#ifdef JAPAN + bl StrcpySimple +#else + bl StrncpySimple +#endif + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r2, #0xa + ldr r0, [r0] + ldr r1, [r0, #0x3b8] + add r0, r0, #0xab + add r0, r0, #0x100 + add r1, r1, #0x3a + bl MemcpySimple + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r2, #0xa + ldr r1, [r0] + add r0, r1, #0xb5 + add r0, r0, #0x100 + add r1, r1, #0xab + add r1, r1, #0x100 + bl StrncpySimpleNoPadSafe + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x10 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203DD68: + bl sub_02046C78 + cmp r0, #0 + beq _0203EF9C + ldr r0, _0203E4EC ; =_0209C85C + mov r4, #2 + ldr r1, _0203E4F0 ; =0x00300011 + ldr r3, _0203E4F4 ; =_0209C86C + mov r2, #0 + str r4, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r2, #0x11 + ldr r3, [r1] + strb r0, [r3, #0x1a0] + ldr r0, [r1] + str r2, [r0] + b _0203EF9C +_0203DDAC: + add r0, r4, #0x100 + ldrsb r0, [r0, #0xa0] + bl IsSimpleMenuActive + cmp r0, #0 + bne _0203EF9C + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + add r0, r0, #0x100 + ldrsb r0, [r0, #0xa0] + bl GetSimpleMenuResult__0202B870 + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r4, r0 + ldr r0, [r1] + add r0, r0, #0x100 + ldrsb r0, [r0, #0xa0] + bl CloseSimpleMenu + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x1a0] + bl sub_02046D20 + cmp r4, #0 + beq _0203DE10 + cmp r4, #1 + b _0203DE24 +_0203DE10: + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x12 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203DE24: + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x20 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203DE38: + bl ov11_0230D92C + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x13 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203DE50: + bl ov11_0230D220 + cmp r0, #0 + ldreq r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + moveq r1, #0x14 + ldreq r0, [r0] + streq r1, [r0] + b _0203EF9C +_0203DE6C: + add r0, r4, #0xab + add r2, r4, #0xa1 + add r1, r0, #0x100 + add r3, r2, #0x100 + mov r0, #2 + mov r2, #0 + bl ShowKeyboard + bl ov11_02310BDC + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x15 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203DEA0: + bl ov11_0230D220 + cmp r0, #0 + ldreq r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + moveq r1, #0x16 + ldreq r0, [r0] + streq r1, [r0] + b _0203EF9C +_0203DEBC: + bl GetKeyboardStatus + cmp r0, #3 + bne _0203EF9C + bl GetKeyboardStringResult + ldr r2, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, r0 + ldr r0, [r2] + mov r2, #0xa + add r0, r0, #0xab + add r0, r0, #0x100 + bl MemcpySimple + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r2, #0xa + ldr r1, [r0] + add r0, r1, #0xb5 + add r1, r1, #0xab + add r0, r0, #0x100 + add r1, r1, #0x100 + bl StrncpySimpleNoPadSafe + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x17 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203DF1C: + bl sub_02037468 + cmp r0, #0 + beq _0203EF9C + bl ov11_0230D92C + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x18 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203DF40: + bl ov11_0230D220 + cmp r0, #0 + ldreq r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + moveq r1, #0x19 + ldreq r0, [r0] + streq r1, [r0] + b _0203EF9C +_0203DF5C: + bl ov11_0230D92C + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x1a + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203DF74: + bl ov11_0230D220 + cmp r0, #0 + ldreq r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + moveq r1, #0x1b + ldreq r0, [r0] + streq r1, [r0] + b _0203EF9C +_0203DF90: + add r0, r4, #0xb5 + add r0, r0, #0x100 + bl sub_0203909C + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x1c + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203DFB0: + bl sub_0203931C + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r2, [r1] + str r0, [r2, #0x3bc] + ldr r1, [r1] + ldr r0, [r1, #0x3bc] + cmp r0, #0 + movge r0, #0x1d + strge r0, [r1] + b _0203EF9C +_0203DFD8: + bl sub_02039218 + cmp r0, #0 + beq _0203EF9C + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r1, [r0] + ldr r0, [r1, #0x3bc] + cmp r0, #0 + beq _0203E000 + cmp r0, #1 + b _0203E02C +_0203E000: + ldr r0, [r1, #0x3b8] + add r1, r1, #0xab + add r0, r0, #0x3a + add r1, r1, #0x100 + mov r2, #0xa + bl MemcpySimple + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x20 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E02C: + mov r0, #0x12 + str r0, [r1] + b _0203EF9C +_0203E038: + ldrsh r0, [r4, #0x38] + mov r2, #0xa + orr r0, r0, #0x80000 + str r0, [r4, #0x8c] + ldr r1, [r1] + add r0, r1, #0xb5 + add r1, r1, #0xab + add r0, r0, #0x100 + add r1, r1, #0x100 + bl StrncpySimpleNoPadSafe + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r2, [r1] + add r0, r2, #0xb5 + add r0, r0, #0x100 + str r0, [r2, #0xc4] + ldr r0, [r1] + ldr r0, [r0, #8] + cmp r0, #2 + ldreq r4, _0203E4F8 ; =0x00000283 + mov r0, #5 + ldrne r4, _0203E4FC ; =0x00000281 + bl sub_02017C50 + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, _0203E4B8 ; =0x0000101C + ldr r2, [r1] + mov r1, r4 + add r2, r2, #0x8c + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x21 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E0BC: + bl sub_02046C78 + cmp r0, #0 + beq _0203EF9C + bl MissionRewardCloseAllBoxes + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r3, #0xa + ldr r2, [r0] + mov r1, #0x22 + str r3, [r2, #0x188] + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E0EC: + ldr r2, [r4, #0x188] + sub r0, r2, #1 + str r0, [r4, #0x188] + cmp r2, #0 + ldrle r0, [r1] + movle r1, #0x29 + strle r1, [r0] + b _0203EF9C +_0203E10C: + bl sub_02046D20 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r1, [r0] + ldr r0, [r1, #8] + sub r0, r0, #2 + cmp r0, #1 + add r0, r1, #0x40 + bhi _0203E138 + mov r1, #1 + bl ov11_023061E4 + b _0203E13C +_0203E138: + bl ov11_023061CC +_0203E13C: + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x1f + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E150: + bl ov11_02306C9C + cmp r0, #3 + cmpne r0, #4 + bne _0203EF9C + bl ov11_02306C64 + cmp r0, #0 + ldreq r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + moveq r1, #0x23 + ldreq r0, [r0] + streq r1, [r0] + beq _0203EF9C + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r2, #0xc + ldr r3, [r1] + str r0, [r3, #0x3b8] + ldr r0, [r1] + str r2, [r0] + b _0203EF9C +_0203E198: + ldrsh r1, [r4, #0x38] + add r0, r4, #0xe8 + bl GetNameRaw + ldr r2, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, _0203E4B8 ; =0x0000101C + ldr r4, [r2] +#ifdef JAPAN + ldr r1, _0203E8F0 ; =0x00002458 +#else + mov r1, #0x284 +#endif + add r3, r4, #0xe8 + str r3, [r4, #0xc4] + ldr r2, [r2] + add r2, r2, #0x8c + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x24 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E1DC: + bl sub_02046C78 + cmp r0, #0 + beq _0203EF9C + bl MissionRewardCloseAllBoxes + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r3, #0xa + ldr r2, [r0] + mov r1, #0x25 + str r3, [r2, #0x188] + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E20C: + ldr r2, [r4, #0x188] + sub r0, r2, #1 + str r0, [r4, #0x188] + cmp r2, #0 + ldrle r0, [r1] + movle r1, #0x26 + strle r1, [r0] + b _0203EF9C +_0203E22C: + mov r0, #4 + bl sub_02017C50 + mov r0, #0x3e8 + bl AddMoneyCarried + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r3, #0x3e8 + ldr r2, [r1] + ldr r0, _0203E4B8 ; =0x0000101C + str r3, [r2, #0xb0] + ldr r2, [r1] + ldr r1, _0203E500 ; =0x00000285 + add r2, r2, #0x8c + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x27 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E274: + bl sub_02046C78 + cmp r0, #0 + beq _0203EF9C + bl MissionRewardCloseAllBoxes + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r3, #0xa + ldr r2, [r0] + mov r1, #0x28 + str r3, [r2, #0x188] + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E2A4: + ldr r2, [r4, #0x188] + sub r0, r2, #1 + str r0, [r4, #0x188] + cmp r2, #0 + ldrle r0, [r1] + movle r1, #0x29 + strle r1, [r0] + b _0203EF9C +_0203E2C4: + ldr r1, [r4, #0x10] + ldr r0, [r4, #0x20] + cmp r1, r0 + movge r0, #0x3a + strge r0, [r4] + bge _0203EF9C + mov r0, #6 + mla r0, r1, r0, r4 + ldrsh r0, [r0, #0x28] + mov r1, #0 + strh r0, [sp, #0x20 + SUB_0203D538_STACK_OFFSET] + strb r1, [sp, #0x1c + SUB_0203D538_STACK_OFFSET] + bl IsStorableItem + cmp r0, #0 + beq _0203E44C + ldrsh r0, [sp, #0x20 + SUB_0203D538_STACK_OFFSET] + bl IsThrownItem + cmp r0, #0 + bne _0203E328 + ldrsh r1, [sp, #0x20 + SUB_0203D538_STACK_OFFSET] + cmp r1, #0x16c + blt _0203E348 + ldr r0, _0203E504 ; =0x0000018F + cmp r1, r0 + bgt _0203E348 +_0203E328: + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r0, #6 + ldr r2, [r1] + ldr r1, [r2, #0x10] + mla r0, r1, r0, r2 + ldrh r0, [r0, #0x26] + strh r0, [sp, #0x1e + SUB_0203D538_STACK_OFFSET] + b _0203E350 +_0203E348: + mov r0, #0 + strh r0, [sp, #0x1e + SUB_0203D538_STACK_OFFSET] +_0203E350: + ldr r3, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r0, #1 + ldr r6, [r3] + strb r0, [sp, #0x1c + SUB_0203D538_STACK_OFFSET] + ldr r1, [r6, #0x10] + mov r0, #6 + mla r5, r1, r0, r6 + ldrh r0, [sp, #0x1c + SUB_0203D538_STACK_OFFSET] + mov r4, #0 + ldr r2, _0203E508 ; =_0209C850 + strh r0, [r5, #0x24] + ldrh r0, [sp, #0x1e + SUB_0203D538_STACK_OFFSET] + add r1, sp, #0x1c + SUB_0203D538_STACK_OFFSET + strh r0, [r5, #0x26] + ldrh r0, [sp, #0x20 + SUB_0203D538_STACK_OFFSET] + strh r0, [r5, #0x28] + ldrsh r0, [sp, #0x20 + SUB_0203D538_STACK_OFFSET] + str r0, [r6, #0x9c] + ldr r0, [r3] + str r4, [r0, #0xb0] + ldr r0, [r3] + add r0, r0, #0xe8 + bl MaybeGetColoredFormattedItemName + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r2, [r0] + add r1, r2, #0xe8 + str r1, [r2, #0xc4] + ldr r2, [r0] + ldrsh r1, [r2, #0x14] + str r1, [r2, #0x8c] + ldr r1, [r0] + ldr r0, [r1, #8] + cmp r0, #0 + beq _0203E440 + cmp r0, #2 + bne _0203E3EC + ldr r4, _0203E50C ; =0x00000296 + bl sub_0203F00C + b _0203E414 +_0203E3EC: + cmp r0, #3 + bne _0203E400 + ldr r4, _0203E510 ; =0x00000297 + bl sub_0203F00C + b _0203E414 +_0203E400: + cmp r0, #4 + ldrne r4, _0203E514 ; =0x00000295 + bne _0203E414 +#ifdef JAPAN + ldr r4, _0203E90C ; =0x0000246C +#else + mov r4, #0x298 +#endif + bl sub_0203F00C +_0203E414: + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, _0203E4B8 ; =0x0000101C + ldr r2, [r1] + mov r1, r4 + add r2, r2, #0x8c + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x2a + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E440: + mov r0, #0x2c + str r0, [r1] + b _0203EF9C +_0203E44C: + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x33 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E460: + bl sub_02046C78 + cmp r0, #0 + beq _0203EF9C + bl MissionRewardCloseAllBoxes + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r3, #0xa + ldr r2, [r0] + mov r1, #0x2b + str r3, [r2, #0x188] + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E490: + ldr r2, [r4, #0x188] + sub r0, r2, #1 + str r0, [r4, #0x188] + cmp r2, #0 + ldrle r0, [r1] + movle r1, #0x2c + strle r1, [r0] + b _0203EF9C + .align 2, 0 +#ifdef JAPAN +#define SUB_0203D538_DATA_OFFSET 0x21D4 +#else +#define SUB_0203D538_DATA_OFFSET 0 +#endif +_0203E4B0: .word MISSION_REWARD_STRUCT_MAIN_PTR +_0203E4B4: .word 0x00000289 + SUB_0203D538_DATA_OFFSET +#ifdef JAPAN +_0203E89C: .word 0x0000245E +_0203E8A0: .word 0x0000245C +#endif +_0203E4B8: .word 0x0000101C +_0203E4BC: .word 0x0000026F + SUB_0203D538_DATA_OFFSET +#ifdef JAPAN +_0203E8AC: .word 0x00002444 +#endif +_0203E4C0: .word 0x00000271 + SUB_0203D538_DATA_OFFSET +_0203E4C4: .word 0x0000026E + SUB_0203D538_DATA_OFFSET +_0203E4C8: .word 0x0000029A + SUB_0203D538_DATA_OFFSET +_0203E4CC: .word 0x00000299 + SUB_0203D538_DATA_OFFSET +_0203E4D0: .word 0x00003008 +_0203E4D4: .word _0209C884 +_0203E4D8: .word _0209C846 +_0203E4DC: .word _0209C844 +_0203E4E0: .word 0x0000027A + SUB_0203D538_DATA_OFFSET +_0203E4E4: .word 0x0000100C +_0203E4E8: .word 0x000002A6 + SUB_0203D538_DATA_OFFSET +_0203E4EC: .word _0209C85C +_0203E4F0: .word 0x00300011 +_0203E4F4: .word _0209C86C +_0203E4F8: .word 0x00000283 + SUB_0203D538_DATA_OFFSET +_0203E4FC: .word 0x00000281 + SUB_0203D538_DATA_OFFSET +#ifdef JAPAN +_0203E8F0: .word 0x00002458 +#endif +_0203E500: .word 0x00000285 + SUB_0203D538_DATA_OFFSET +_0203E504: .word 0x0000018F +_0203E508: .word _0209C850 +_0203E50C: .word 0x00000296 + SUB_0203D538_DATA_OFFSET +_0203E510: .word 0x00000297 + SUB_0203D538_DATA_OFFSET +_0203E514: .word 0x00000295 + SUB_0203D538_DATA_OFFSET +#ifdef JAPAN +_0203E90C: .word 0x0000246C +#endif +_0203E518: + ldr r1, [r4, #0x10] + add r2, r4, #0x24 + mov r0, #6 + mla r0, r1, r0, r2 + bl AddItemToStorage + cmp r0, #0 + beq _0203E5A0 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + ldr r0, [r0, #0xe4] + tst r0, #2 + bne _0203E550 + mov r0, #4 + bl sub_02017C50 +_0203E550: + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r2, [r0] + ldr r0, [r2, #0xe4] + tst r0, #4 + bne _0203E588 + ldr r1, _0203EFA8 ; =0x00000273 + add r2, r2, #0x8c + mov r0, #0x1c + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x2e + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E588: + tst r0, #8 + movne r0, #0x30 + strne r0, [r2] + moveq r0, #0x33 + streq r0, [r2] + b _0203EF9C +_0203E5A0: + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x34 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E5B4: + ldr r2, [r4, #0x10] + mov r0, #6 + mla r1, r2, r0, r4 + ldrsh r2, [r1, #0x28] + mov r1, #0 + strh r2, [sp, #0x1a + SUB_0203D538_STACK_OFFSET] + ldr r2, [r4, #0x10] + mla r0, r2, r0, r4 + ldrh r0, [r0, #0x26] + strh r0, [sp, #0x18 + SUB_0203D538_STACK_OFFSET] + strb r1, [sp, #0x16 + SUB_0203D538_STACK_OFFSET] + bl sub_02046D20 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + ldr r0, [r0, #0xe4] + tst r0, #1 + moveq r1, #1 + movne r1, #0 + add r0, sp, #0x16 + SUB_0203D538_STACK_OFFSET + and r1, r1, #0xff + bl InitUnkStorageStruct0x410 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x35 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E61C: + bl sub_02046028 + cmp r0, #2 + beq _0203E658 + cmp r0, #3 + beq _0203E688 + cmp r0, #4 + bne _0203EF9C + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r3, #0xa + ldr r2, [r0] + mov r1, #0x2d + str r3, [r2, #0x188] + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E658: + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + add r0, r0, #0xde + bl sub_02045FD0 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r3, #0xa + ldr r2, [r0] + mov r1, #0x36 + str r3, [r2, #0x188] + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E688: + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + add r0, r0, #0xde + bl sub_02045FD0 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r3, #0xa + ldr r2, [r0] + mov r1, #0x38 + str r3, [r2, #0x188] + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E6B8: + ldr r2, [r4, #0x188] + sub r0, r2, #1 + str r0, [r4, #0x188] + cmp r2, #0 + ldrle r0, [r1] + movle r1, #0x37 + strle r1, [r0] + b _0203EF9C +_0203E6D8: + ldr r1, [r4, #0x10] + add r2, r4, #0x24 + mov r0, #6 + mla r0, r1, r0, r2 + bl AddItemToStorage + cmp r0, #0 + beq _0203E7D8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + ldr r0, [r0, #0xe4] + tst r0, #2 + bne _0203E710 + mov r0, #4 + bl sub_02017C50 +_0203E710: + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #6 + ldr r5, [r0] + mov r6, #0 + ldr r4, [r5, #0x10] + ldr r2, _0203E508 ; =_0209C850 + mla r3, r4, r1, r5 + ldrsh r3, [r3, #0x28] + str r3, [r5, #0x9c] + ldr r3, [r0] + str r6, [r3, #0xb0] + ldr r4, [r0] + ldrsh r3, [r4, #0xdc] + str r3, [r4, #0xa4] + ldr r3, [r0] + str r6, [r3, #0xb8] + ldr r5, [r0] + ldrsh r3, [r5, #0xe2] + add r4, r5, #0x24 + add r0, r5, #0xe8 + strh r3, [sp, #0x14 + SUB_0203D538_STACK_OFFSET] + ldrh r3, [r5, #0xe0] + strb r6, [sp, #0x10 + SUB_0203D538_STACK_OFFSET] + strh r3, [sp, #0x12 + SUB_0203D538_STACK_OFFSET] + ldr r3, [r5, #0x10] + mla r1, r3, r1, r4 + bl MaybeGetColoredFormattedItemName + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r2, _0203E508 ; =_0209C850 + ldr r0, [r0] + add r1, sp, #0x10 + SUB_0203D538_STACK_OFFSET + add r0, r0, #0x138 + bl MaybeGetColoredFormattedItemName + ldr r2, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, _0203E4B8 ; =0x0000101C + ldr r4, [r2] + ldr r1, _0203EFAC ; =0x00000275 + add r3, r4, #0x138 + str r3, [r4, #0xcc] + ldr r4, [r2] + add r3, r4, #0xe8 + str r3, [r4, #0xc4] + ldr r2, [r2] + add r2, r2, #0x8c + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x2e + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E7D8: + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x34 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E7EC: + ldr r2, [r4, #0x188] + sub r0, r2, #1 + str r0, [r4, #0x188] + cmp r2, #0 + ldrle r0, [r1] + movle r1, #0x39 + strle r1, [r0] + b _0203EF9C +_0203E80C: + ldr r1, [r4, #0x10] + add r2, r4, #0x24 + mov r0, #6 + mla r0, r1, r0, r2 + bl AddItemToStorage + cmp r0, #0 + beq _0203E8D4 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + ldr r0, [r0, #0xe4] + tst r0, #2 + bne _0203E844 + mov r0, #4 + bl sub_02017C50 +_0203E844: + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r0, #6 + ldr r6, [r1] + mov r5, #0 + ldr r4, [r6, #0x10] + ldr r2, _0203E508 ; =_0209C850 + mla r3, r4, r0, r6 + ldrsh r3, [r3, #0x28] + str r3, [r6, #0x9c] + ldr r3, [r1] + str r5, [r3, #0xb0] + ldr r4, [r1] + ldrsh r3, [r4, #0xdc] + str r3, [r4, #0xa4] + ldr r3, [r1] + str r5, [r3, #0xb8] + ldr r4, [r1] + ldr r3, [r4, #0x10] + add r1, r4, #0x24 + mla r1, r3, r0, r1 + add r0, r4, #0xe8 + bl MaybeGetColoredFormattedItemName + ldr r2, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, _0203E4B8 ; =0x0000101C + ldr r4, [r2] + ldr r1, _0203EFB0 ; =0x00000277 + add r3, r4, #0xe8 + str r3, [r4, #0xc4] + ldr r2, [r2] + add r2, r2, #0x8c + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x2e + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E8D4: + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x34 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E8E8: + ldr r2, [r4, #0x188] + sub r0, r2, #1 + str r0, [r4, #0x188] + cmp r2, #0 + bgt _0203EF9C + ldr r2, [r1] + ldr r0, _0203E4B8 ; =0x0000101C + ldr r1, _0203EFB4 ; =0x00000286 + add r2, r2, #0x8c + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + add r0, r0, #0xde + bl sub_02045FD0 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x2e + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E934: + bl sub_02046C78 + cmp r0, #0 + beq _0203EF9C + bl MissionRewardCloseAllBoxes + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r3, #0xa + ldr r2, [r0] + mov r1, #0x2f + str r3, [r2, #0x188] + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E964: + ldr r2, [r4, #0x188] + sub r0, r2, #1 + str r0, [r4, #0x188] + cmp r2, #0 + ldrle r0, [r1] + movle r1, #0x33 + strle r1, [r0] + b _0203EF9C +_0203E984: + ldr r0, _0203E4B8 ; =0x0000101C +#ifdef JAPAN + ldr r1, _0203F34C_JP ; =0x00002FEC + add r2, r4, #0x8c +#else + add r2, r4, #0x8c + mov r1, #0x2cc +#endif + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x31 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E9A8: + bl sub_02046C78 + cmp r0, #0 + beq _0203EF9C + bl MissionRewardCloseAllBoxes + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r3, #0xa + ldr r2, [r0] + mov r1, #0x32 + str r3, [r2, #0x188] + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203E9D8: + ldr r2, [r4, #0x188] + sub r0, r2, #1 + str r0, [r4, #0x188] + cmp r2, #0 + ldrle r0, [r1] + movle r1, #0x33 + strle r1, [r0] + b _0203EF9C +_0203E9F8: + ldr r0, [r4, #0x10] + add r0, r0, #1 + str r0, [r4, #0x10] + ldr r1, [r1] + ldr r0, [r1, #0x10] + cmp r0, #3 + movlt r0, #0x29 + strlt r0, [r1] + movge r0, #0x3a + strge r0, [r1] + b _0203EF9C +_0203EA24: + ldrb r0, [r4, #0x36] + cmp r0, #0 + moveq r0, #0x40 + streq r0, [r4] + beq _0203EF9C + ldr r0, [r4, #8] + cmp r0, #0 + beq _0203EAAC + cmp r0, #2 + bne _0203EA58 + ldr r4, _0203EFB8 ; =0x00000292 + bl sub_0203F00C + b _0203EA80 +_0203EA58: + cmp r0, #3 + bne _0203EA6C + ldr r4, _0203EFBC ; =0x00000293 + bl sub_0203F00C + b _0203EA80 +_0203EA6C: + cmp r0, #4 + ldrne r4, _0203EFC0 ; =0x00000291 + bne _0203EA80 +#ifdef JAPAN + ldr r4, _0203F35C_JP ; =0x00002468 +#else + mov r4, #0x294 +#endif + bl sub_0203F00C +_0203EA80: + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, _0203E4B8 ; =0x0000101C + ldr r2, [r1] + mov r1, r4 + add r2, r2, #0x8c + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x3b + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203EAAC: + mov r0, #0x3d + str r0, [r4] + b _0203EF9C +_0203EAB8: + bl sub_02046C78 + cmp r0, #0 + beq _0203EF9C + bl MissionRewardCloseAllBoxes + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r3, #0xa + ldr r2, [r0] + mov r1, #0x3c + str r3, [r2, #0x188] + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203EAE8: + ldr r2, [r4, #0x188] + sub r0, r2, #1 + str r0, [r4, #0x188] + cmp r2, #0 + ldrle r0, [r1] + movle r1, #0x3d + strle r1, [r0] + b _0203EF9C +_0203EB08: + mov r0, #5 + bl sub_02017C50 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + ldrsh r0, [r0, #0x38] + bl SetEggSpecies + mov r0, #4 + bl RandIntSafe + add r0, r0, #6 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl SetEggHatchTimer + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, _0203E4B8 ; =0x0000101C + ldr r2, [r1] + ldr r1, _0203EFC4 ; =0x00000272 + add r2, r2, #0x8c + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x3e + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203EB64: + bl sub_02046C78 + cmp r0, #0 + beq _0203EF9C + bl MissionRewardCloseAllBoxes + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r3, #0xa + ldr r2, [r0] + mov r1, #0x3f + str r3, [r2, #0x188] + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203EB94: + ldr r2, [r4, #0x188] + sub r0, r2, #1 + str r0, [r4, #0x188] + cmp r2, #0 + ldrle r0, [r1] + movle r1, #0x40 + strle r1, [r0] + b _0203EF9C +_0203EBB4: + ldr r0, [r4, #0x3c] + cmp r0, #0 + moveq r0, #0x4c + streq r0, [r4] + beq _0203EF9C + add r0, sp, #0xcc + SUB_0203D538_STACK_OFFSET_2 + bl InitPreprocessorArgs + bl GetRank + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r2, [r1] + strb r0, [r2, #0xc] + ldr r0, [r1] + ldr r0, [r0, #0x3c] + bl sub_02050C10 + mov r0, #4 + bl sub_02017C50 + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, _0203E4B8 ; =0x0000101C + ldr r2, [r1] + ldr r1, _0203EFC8 ; =0x000002A1 + ldr r3, [r2, #0x3c] + add r2, sp, #0xcc + SUB_0203D538_STACK_OFFSET_2 + str r3, [sp, #0xf0 + SUB_0203D538_STACK_OFFSET_2] + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x41 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203EC28: + bl sub_02046C78 + cmp r0, #0 + beq _0203EF9C + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r4, [r0] + bl GetRank + ldrb r1, [r4, #0xc] + cmp r1, r0 + movne r0, #0x42 + strne r0, [r4] + moveq r0, #0x4c + streq r0, [r4] + b _0203EF9C +_0203EC5C: + mov r0, #2 + bl sub_02017C50 + add r0, sp, #0x7c + SUB_0203D538_STACK_OFFSET_2 + bl InitPreprocessorArgs + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + ldrb r0, [r0, #0xc] + str r0, [sp, #0x94 + SUB_0203D538_STACK_OFFSET_2] + bl GetRank + str r0, [sp, #0x98 + SUB_0203D538_STACK_OFFSET_2] + ldr r0, _0203E4B8 ; =0x0000101C + ldr r1, _0203EFCC ; =0x000002A2 + add r2, sp, #0x7c + SUB_0203D538_STACK_OFFSET_2 + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x43 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203ECA8: + bl sub_02046C78 + cmp r0, #0 + ldrne r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + movne r1, #0x44 + ldrne r0, [r0] + strne r1, [r0] + b _0203EF9C +_0203ECC4: + add r0, sp, #0x2c + SUB_0203D538_STACK_OFFSET_2 + bl InitPreprocessorArgs + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + ldrb r0, [r0, #0xc] + bl GetRankUpEntry + ldr r0, [r0, #8] + str r0, [sp, #0x50 + SUB_0203D538_STACK_OFFSET_2] + bl GetRank + bl GetRankUpEntry + ldr r1, [r0, #8] + ldr r0, [sp, #0x50 + SUB_0203D538_STACK_OFFSET_2] + str r1, [sp, #0x54 + SUB_0203D538_STACK_OFFSET_2] + cmp r0, r1 + ldreq r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + moveq r1, #0x46 + ldreq r0, [r0] + streq r1, [r0] + beq _0203EF9C + ldr r0, _0203E4B8 ; =0x0000101C + ldr r1, _0203EFD0 ; =0x000002A3 + add r2, sp, #0x2c + SUB_0203D538_STACK_OFFSET_2 + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x45 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203ED34: + bl sub_02046C78 + cmp r0, #0 + ldrne r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + movne r1, #0x46 + ldrne r0, [r0] + strne r1, [r0] + b _0203EF9C +_0203ED50: + bl GetRank + bl GetRankUpEntry + ldrsh r0, [r0, #0xc] + strh r0, [r4, #0x88] + cmp r0, #0 + bne _0203ED80 + bl sub_02046D20 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x4c + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203ED80: + bl IsStorableItem + cmp r0, #0 + beq _0203EDFC + ldrsh r0, [r4, #0x88] + bl IsThrownItem + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + strh r0, [r4, #0x86] + mov r0, #1 + strb r0, [r4, #0x84] + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldrsh r3, [r4, #0x88] + ldr r1, [r0] + mov r2, #0 + str r3, [r1, #0x9c] + ldr r1, [r0] + mov r0, #4 + str r2, [r1, #0xb0] + bl sub_02017C50 + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, _0203E4B8 ; =0x0000101C + ldr r2, [r1] +#ifdef JAPAN + ldr r1, _0203F370 ; =0x00002478 +#else + mov r1, #0x2a4 +#endif + add r2, r2, #0x8c + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x47 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203EDFC: + bl sub_02046D20 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x4c + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203EE14: + bl sub_02046C78 + cmp r0, #0 + ldrne r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + movne r1, #0x48 + ldrne r0, [r0] + strne r1, [r0] + b _0203EF9C +_0203EE30: + add r0, r4, #0x84 + bl AddItemToStorage + cmp r0, #0 + ldreq r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + moveq r1, #0x49 + ldreq r0, [r0] + streq r1, [r0] + beq _0203EF9C + bl sub_02046D20 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x4c + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203EE68: + ldrsh r1, [r4, #0x88] + mov r0, #0 + strh r1, [sp, #0xe + SUB_0203D538_STACK_OFFSET] + ldrh r1, [r4, #0x86] + strh r1, [sp, #0xc + SUB_0203D538_STACK_OFFSET] + strb r0, [sp, #0xa + SUB_0203D538_STACK_OFFSET] + bl sub_02046D20 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + ldr r0, [r0, #0xe4] + tst r0, #1 + moveq r1, #1 + movne r1, #0 + add r0, sp, #0xa + SUB_0203D538_STACK_OFFSET + and r1, r1, #0xff + bl InitUnkStorageStruct0x410 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x4a + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203EEBC: + bl sub_02046028 +#ifdef JAPAN + cmp r0, #2 + cmpne r0, #3 + beq _0203EF64 + cmp r0, #4 + bne _0203EF9C + ldr r1, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, _0203E4B8 ; =0x0000101C + ldr r2, [r1] + ldr r1, _0203EFB4 ; =0x0000245A +#else + mov r4, r0 + cmp r4, #1 + beq _0203EF9C + add r0, sp, #4 + bl sub_02045FD0 + ldrsh r0, [sp, #8] + cmp r0, #0 + bne _0203EF00 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r1, [r0] + ldrh r0, [r1, #0x84] + strh r0, [sp, #4] + ldrh r0, [r1, #0x86] + strh r0, [sp, #6] + ldrh r0, [r1, #0x88] + strh r0, [sp, #8] +_0203EF00: + cmp r4, #2 + cmpne r4, #3 + beq _0203EF64 + cmp r4, #4 + bne _0203EF9C + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r2, _0203E508 ; =_0209C850 + ldr r0, [r0] + add r1, sp, #4 + add r0, r0, #0xe8 + bl MaybeGetColoredFormattedItemName + ldr r2, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, _0203E4B8 ; =0x0000101C + ldr r4, [r2] + ldr r1, _0203EFB4 ; =0x00000286 + add r3, r4, #0xe8 + str r3, [r4, #0xc4] + ldr r2, [r2] +#endif + add r2, r2, #0x8c + bl sub_02046BE8 + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x4b + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203EF64: + ldr r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0x48 + ldr r0, [r0] + str r1, [r0] + b _0203EF9C +_0203EF78: + bl sub_02046C78 + cmp r0, #0 + ldrne r0, _0203E4B0 ; =MISSION_REWARD_STRUCT_MAIN_PTR + movne r1, #0x4c + ldrne r0, [r0] + strne r1, [r0] + b _0203EF9C +_0203EF94: + mov r0, #1 + b _0203EFA0 +_0203EF9C: + mov r0, #0 +_0203EFA0: + add sp, sp, #0x11c + SUB_0203D538_STACK_OFFSET_2 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0203EFA8: .word 0x00000273 + SUB_0203D538_DATA_OFFSET +_0203EFAC: .word 0x00000275 + SUB_0203D538_DATA_OFFSET +_0203EFB0: .word 0x00000277 + SUB_0203D538_DATA_OFFSET +_0203EFB4: .word 0x00000286 + SUB_0203D538_DATA_OFFSET +#ifdef JAPAN +_0203F34C_JP: .word 0x00002FEC +#endif +_0203EFB8: .word 0x00000292 + SUB_0203D538_DATA_OFFSET +_0203EFBC: .word 0x00000293 + SUB_0203D538_DATA_OFFSET +_0203EFC0: .word 0x00000291 + SUB_0203D538_DATA_OFFSET +#ifdef JAPAN +_0203F35C_JP: .word 0x00002468 +#endif +_0203EFC4: .word 0x00000272 + SUB_0203D538_DATA_OFFSET +_0203EFC8: .word 0x000002A1 + SUB_0203D538_DATA_OFFSET +_0203EFCC: .word 0x000002A2 + SUB_0203D538_DATA_OFFSET +_0203EFD0: .word 0x000002A3 + SUB_0203D538_DATA_OFFSET +#ifdef JAPAN +_0203F370: .word 0x00002478 +#endif + arm_func_end sub_0203D538 + + arm_func_start FreeMissionRewardStructMain +FreeMissionRewardStructMain: ; 0x0203EFD4 + stmdb sp!, {r3, lr} + ldr r0, _0203F008 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MissionRewardCloseAllBoxes + ldr r0, _0203F008 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r0, [r0] + bl MemFree + ldr r0, _0203F008 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203F008: .word MISSION_REWARD_STRUCT_MAIN_PTR + arm_func_end FreeMissionRewardStructMain + + arm_func_start sub_0203F00C +sub_0203F00C: ; 0x0203F00C + stmdb sp!, {r3, lr} + ldr r1, _0203F058 ; =MISSION_REWARD_STRUCT_MAIN_PTR + mvn r0, #1 + ldr r1, [r1] + ldrsb r1, [r1, #6] + cmp r1, r0 + ldmneia sp!, {r3, pc} + mov r0, #0 + mov r1, #3 + mov r2, #1 + bl CreatePortraitBox + ldr r1, _0203F058 ; =MISSION_REWARD_STRUCT_MAIN_PTR + ldr r2, [r1] + strb r0, [r2, #6] + ldr r1, [r1] + ldrsb r0, [r1, #6] + add r1, r1, #0x190 + bl ShowPortraitInPortraitBox + ldmia sp!, {r3, pc} + .align 2, 0 +_0203F058: .word MISSION_REWARD_STRUCT_MAIN_PTR + arm_func_end sub_0203F00C + + arm_func_start MissionRewardCloseAllBoxes +MissionRewardCloseAllBoxes: ; 0x0203F05C + stmdb sp!, {r3, lr} + ldr r0, _0203F0EC ; =MISSION_REWARD_STRUCT_MAIN_PTR + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #4] + cmp r0, r1 + beq _0203F08C + bl CloseParentMenu + ldr r0, _0203F0EC ; =MISSION_REWARD_STRUCT_MAIN_PTR + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #4] +_0203F08C: + ldr r0, _0203F0EC ; =MISSION_REWARD_STRUCT_MAIN_PTR + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #5] + cmp r0, r1 + beq _0203F0B8 + bl CloseDialogueBox + ldr r0, _0203F0EC ; =MISSION_REWARD_STRUCT_MAIN_PTR + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #5] +_0203F0B8: + ldr r0, _0203F0EC ; =MISSION_REWARD_STRUCT_MAIN_PTR + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #6] + cmp r0, r1 + beq _0203F0E4 + bl ClosePortraitBox + ldr r0, _0203F0EC ; =MISSION_REWARD_STRUCT_MAIN_PTR + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #6] +_0203F0E4: + bl sub_02046D20 + ldmia sp!, {r3, pc} + .align 2, 0 +_0203F0EC: .word MISSION_REWARD_STRUCT_MAIN_PTR + arm_func_end MissionRewardCloseAllBoxes + + arm_func_start sub_0203F0F0 +sub_0203F0F0: ; 0x0203F0F0 + stmdb sp!, {r4, lr} + ldr r1, _0203F148 ; =_020AFE78 + ldr r2, _0203F14C ; =_0209C89C + ldr r3, [r1] + mov r4, r0 + ldrsh r1, [r3, #0xc] + add r0, r3, #0xdc + add r1, r3, r1, lsl #2 + ldr r1, [r1, #0x14] + mov r1, r1, lsl #1 + ldrh r1, [r2, r1] + bl GetStringFromFileVeneer + ldr r0, _0203F148 ; =_020AFE78 + mov r3, r4 + ldr r4, [r0] + ldrsh r0, [r4, #0xc] + add r1, r4, #0x64 + add r2, r4, #0x30 + add r0, r4, r0, lsl #2 + ldr r0, [r0, #0x14] + bl sub_0205A4B4 + ldmia sp!, {r4, pc} + .align 2, 0 +_0203F148: .word _020AFE78 +_0203F14C: .word _0209C89C + arm_func_end sub_0203F0F0 + + arm_func_start sub_0203F150 +sub_0203F150: ; 0x0203F150 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0xa0 + mov r6, r0 + mov r5, r1 + mov r0, #0xfc + mov r1, #8 + bl MemAlloc + ldr r2, _0203F340 ; =_020AFE78 + mvn r1, #1 + str r0, [r2] + mov ip, #0 + strb r1, [r0] + mov r0, ip +_0203F184: + add r1, ip, #1 + ldr r3, [r2] + mov r1, r1, lsl #0x10 + add r3, r3, ip, lsl #2 + mov ip, r1, asr #0x10 + str r0, [r3, #0x14] + cmp ip, #6 + blt _0203F184 + ldr r3, _0203F344 ; =_0209C8C8 + ldr r2, _0203F340 ; =_020AFE78 + mov r1, #0x18 + ldr ip, [r2] + mla r1, r5, r1, r3 + strh r0, [ip, #0xe] + b _0203F1E0 +_0203F1C0: + ldr r0, [r2] + ldr r3, [r1, lr, lsl #2] + add r0, r0, lr, lsl #2 + str r3, [r0, #0x14] + ldr r3, [r2] + ldrsh r0, [r3, #0xe] + add r0, r0, #1 + strh r0, [r3, #0xe] +_0203F1E0: + ldr ip, [r2] + ldrsh lr, [ip, #0xe] + cmp lr, #6 + bge _0203F1FC + ldr r0, [r1, lr, lsl #2] + cmp r0, #0 + bne _0203F1C0 +_0203F1FC: + mov r3, #0 + strh r3, [ip, #0xc] + ldr r0, _0203F340 ; =_020AFE78 + sub r2, r3, #1 + ldr r1, [r0] + mov ip, #1 + strh r2, [r1, #0x10] + ldr r1, [r0] + strh r3, [r1, #0x12] + ldr r2, [r0] + mov r1, r6 + strb ip, [r2, #0x2c] + ldr r3, [r0] + mov r2, #0x78 + str r5, [r3, #4] + ldr r3, [r0] + str ip, [r3, #8] + ldr r0, [r0] + add r0, r0, #0x64 + bl memcpy + ldr r0, _0203F340 ; =_020AFE78 + ldr r1, _0203F348 ; =0x00000975 + ldr r3, [r0] + mov r0, #0x10 + str r0, [sp, #0x14] + strh r1, [sp, #0x10] + ldrsh r2, [r3, #0xc] + add r0, r3, #0xdc + mov r1, #0xc + str r1, [sp, #0xc] + str r0, [sp, #0x50] + str r2, [sp, #8] + ldrsh r2, [r3, #0xc] + ldr r1, _0203F34C ; =_0209C89C + add r2, r3, r2, lsl #2 + ldr r2, [r2, #0x14] + mov r2, r2, lsl #1 + ldrh r1, [r1, r2] + bl GetStringFromFileVeneer + ldr r0, _0203F340 ; =_020AFE78 + ldr r2, [r0] + ldr r0, [r2, #4] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0203F324 +_0203F2B0: ; jump table + b _0203F2C0 ; case 0 + b _0203F2C0 ; case 1 + b _0203F2FC ; case 2 + b _0203F2FC ; case 3 +_0203F2C0: + cmp r0, #1 + ldrsh r4, [r2, #0xe] + ldreq r1, _0203F350 ; =0x60481C3B + ldr r0, _0203F354 ; =_0209C8A8 + str r4, [sp] + mov r4, #1 + ldrne r1, _0203F358 ; =0x60489C3B + ldr r3, _0203F35C ; =sub_0203F0F0 + add r2, sp, #8 + str r4, [sp, #4] + bl CreateAdvancedTextBox + ldr r1, _0203F360 ; =sub_0203F928 + mov r4, r0 + bl SetUnkAdvancedTextBoxWindowFn + b _0203F324 +_0203F2FC: + ldrsh r4, [r2, #0xe] + ldr r0, _0203F354 ; =_0209C8A8 + ldr r1, _0203F364 ; =0x60089C3B + str r4, [sp] + mov r4, #1 + ldr r3, _0203F35C ; =sub_0203F0F0 + add r2, sp, #8 + str r4, [sp, #4] + bl CreateAdvancedTextBox + mov r4, r0 +_0203F324: + ldr r0, _0203F340 ; =_020AFE78 + ldr r1, [r0] + strb r4, [r1] + ldr r0, [r0] + ldrsb r0, [r0] + add sp, sp, #0xa0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0203F340: .word _020AFE78 +_0203F344: .word _0209C8C8 +#ifdef JAPAN +_0203F348: .word 0x00002345 +#else +_0203F348: .word 0x00000975 +#endif +_0203F34C: .word _0209C89C +_0203F350: .word 0x60481C3B +_0203F354: .word _0209C8A8 +_0203F358: .word 0x60489C3B +_0203F35C: .word sub_0203F0F0 +_0203F360: .word sub_0203F928 +_0203F364: .word 0x60089C3B + arm_func_end sub_0203F150 + + arm_func_start sub_0203F368 +sub_0203F368: ; 0x0203F368 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _0203F394 ; =_020AFE78 + mov r5, r0 + ldr r0, [r2] + mov r4, r1 + add r0, r0, #0x64 + bl sub_0205B0B8 + str r0, [r5] + mov r0, #0xc + str r0, [r4] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0203F394: .word _020AFE78 + arm_func_end sub_0203F368 + + arm_func_start sub_0203F398 +sub_0203F398: ; 0x0203F398 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r4, [r0] + cmp r4, #0 + moveq r0, #1 + beq _0203F8CC + ldr r0, [r4, #8] + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _0203F8C8 +_0203F3C4: ; jump table + b _0203F3D8 ; case 0 + b _0203F404 ; case 1 + b _0203F8C8 ; case 2 + b _0203F83C ; case 3 + b _0203F898 ; case 4 +_0203F3D8: + ldrsb r0, [r4] + bl sub_020307EC + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_0202810C + ldr r0, _0203F8D4 ; =_020AFE78 + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #8] + b _0203F8C8 +_0203F404: + ldrsb r0, [r4] + mov r1, #0 + bl SetUnkAdvancedTextBoxFn + ldr r0, _0203F8D4 ; =_020AFE78 +#ifdef JAPAN + ldr r1, [r0] + ldrb r0, [r1, #0x2c] + cmp r0, #0 + beq _0203F464 + ldrsb r0, [r1] + ldrsh r1, [r1, #0x12] +#else + ldr r2, [r0] + ldrb r0, [r2, #0x2c] + cmp r0, #0 + beq _0203F464 + ldrsh r0, [r2, #0xc] + add r0, r2, r0, lsl #2 + ldr r0, [r0, #0x14] + cmp r0, #1 + ldreqsh r1, [r2, #0x12] + ldrsb r0, [r2] + movne r1, #0 +#endif + bl sub_02030A50 + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r0, [r0] + ldrsb r0, [r0] + bl SetAdvancedTextBoxField0x1C2 + ldr r0, _0203F8D4 ; =_020AFE78 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x2c] +_0203F464: + add r1, sp, #0xc + mov r0, #0 + bl sub_02006498 + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r0, [r0] + ldrsb r0, [r0] + bl GetWindowIdPageStart + ldr r1, _0203F8D4 ; =_020AFE78 + ldr r2, [r1] + strh r0, [r2, #0xc] + ldr r3, [r1] + ldrsh r2, [r3, #0xc] + ldrsh r0, [r3, #0x10] + cmp r0, r2 + strneh r2, [r3, #0x10] + ldrne r0, [r1] + movne r1, #1 + strneb r1, [r0, #0x2c] + bne _0203F8C8 + add r0, r3, r2, lsl #2 + ldr r0, [r0, #0x14] + cmp r0, #1 + ldrsb r0, [r3] + bne _0203F7EC + ldr r1, _0203F8D8 ; =sub_0203F368 + bl SetUnkAdvancedTextBoxFn + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r0, [r0] + ldrsb r0, [r0] + bl GetAdvancedTextBoxFlags2 + ldr r1, _0203F8D4 ; =_020AFE78 + mov r4, r0 + ldr r0, [r1] + ldrsb r0, [r0] + bl sub_02028354 + cmp r0, #3 + beq _0203F508 + bl sub_0203F8EC + cmp r0, #0 + movne r1, #1 + bne _0203F50C +_0203F508: + mov r1, #0 +_0203F50C: + ldr r0, _0203F8D4 ; =_020AFE78 + and r5, r1, #0xff + ldr r0, [r0] + ldrsb r0, [r0] + bl IsAdvancedTextBoxActive + cmp r0, #0 + bne _0203F588 + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_02030908 + cmp r0, #0 + blt _0203F558 + bl sub_0203F8EC + cmp r0, #0 + beq _0203F558 + bl sub_02001808 + cmp r0, #0xa000 + bge _0203F560 +_0203F558: + mov r0, #1 + b _0203F8CC +_0203F560: + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_0202812C + ldr r0, _0203F8D4 ; =_020AFE78 + mov r1, #3 + ldr r0, [r0] + mov r5, #0 + str r1, [r0, #8] + b _0203F748 +_0203F588: + ldrh r0, [sp, #0xc] + tst r0, #8 + cmpne r5, #0 + beq _0203F5FC + bl sub_0203F8EC + cmp r0, #0 + beq _0203F748 + ldr r0, _0203F8D4 ; =_020AFE78 + mov r1, #0 + ldr r0, [r0] + ldrsb r0, [r0] + bl PlayAdvancedTextBoxInputSound + bl sub_02001808 + cmp r0, #0xa000 + blt _0203F748 + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_02030EF0 + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_0202812C + ldr r0, _0203F8D4 ; =_020AFE78 + mov r1, #3 + ldr r0, [r0] + mov r5, #0 + str r1, [r0, #8] + b _0203F748 +_0203F5FC: + tst r0, #0x40 + bne _0203F60C + tst r4, #0x40000 + beq _0203F698 +_0203F60C: + cmp r5, #0 + beq _0203F698 + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r2, [r0] + ldrsh r1, [r2, #0x12] + cmp r1, #0 + bne _0203F660 + ldrsh r1, [r2, #0xba] + cmp r1, #0 + beq _0203F748 + sub r1, r1, #1 + strh r1, [r2, #0xba] + ldr r0, [r0] + mov r1, #1 + strb r1, [r0, #0x2c] + ldrh r0, [sp, #0xc] + tst r0, #0x40 + beq _0203F748 + mov r0, #3 + bl PlaySeVolumeWrapper + b _0203F748 +_0203F660: + ldrsb r0, [r2] + bl sub_02030A64 + cmp r0, #0 + bne _0203F680 + tst r4, #0x40000 + bne _0203F680 + mov r0, #3 + bl PlaySeVolumeWrapper +_0203F680: + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r1, [r0] + ldrsh r0, [r1, #0x12] + sub r0, r0, #1 + strh r0, [r1, #0x12] + b _0203F748 +_0203F698: + tst r0, #0x80 + bne _0203F6A8 + tst r4, #0x80000 + beq _0203F748 +_0203F6A8: + cmp r5, #0 + beq _0203F748 + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r3, [r0] + ldrsh r1, [r3, #0x12] + cmp r1, #8 + bne _0203F708 + ldrsh r2, [r3, #0xba] + add r1, r2, #9 + add r1, r3, r1 + ldrb r1, [r1, #0xbc] + cmp r1, #0 + beq _0203F748 + add r1, r2, #1 + strh r1, [r3, #0xba] + ldr r0, [r0] + mov r1, #1 + strb r1, [r0, #0x2c] + ldrh r0, [sp, #0xc] + tst r0, #0x80 + beq _0203F748 + mov r0, #3 + bl PlaySeVolumeWrapper + b _0203F748 +_0203F708: + ldrsb r0, [r3] + bl sub_02030A64 + cmp r0, #8 + bne _0203F728 + tst r4, #0x80000 + bne _0203F728 + mov r0, #3 + bl PlaySeVolumeWrapper +_0203F728: + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r2, [r0] + ldrsh r0, [r2, #0x12] + add r1, r0, #1 + add r0, r2, r1 + ldrb r0, [r0, #0xbc] + cmp r0, #0 + strneh r1, [r2, #0x12] +_0203F748: + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r1, [r0] + ldrsh r0, [r1, #0xba] + add r0, r0, #9 + add r0, r1, r0 + ldrb r0, [r0, #0xbc] + cmp r0, #0 + ldrsb r0, [r1] + mov r1, #0x40000000 + beq _0203F778 + bl sub_02030A90 + b _0203F77C +_0203F778: + bl sub_02030A74 +_0203F77C: + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r1, [r0] + ldrsh r0, [r1, #0xba] + cmp r0, #0 + ldrsb r0, [r1] + mov r1, #0x20000000 + bne _0203F7A0 + bl sub_02030A74 + b _0203F7A4 +_0203F7A0: + bl sub_02030A90 +_0203F7A4: + cmp r5, #0 + beq _0203F7D8 + ldr r0, _0203F8D4 ; =_020AFE78 + mov r3, #0xc + ldr r0, [r0] + mov r1, #1 + ldrsh r4, [r0, #0x12] + ldrsb r0, [r0] + mov r2, #3 + smulbb r3, r4, r3 + add r3, r3, #0x11 + bl sub_02030978 + b _0203F8C8 +_0203F7D8: + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_020288DC + b _0203F8C8 +_0203F7EC: + mov r1, #0x20000000 + bl sub_02030A74 + ldr r0, _0203F8D4 ; =_020AFE78 + mov r1, #0x40000000 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_02030A74 + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r0, [r0] + ldrsb r0, [r0] + bl IsAdvancedTextBoxActive + cmp r0, #0 + beq _0203F834 + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_020288DC + b _0203F8C8 +_0203F834: + mov r0, #1 + b _0203F8CC +_0203F83C: + ldrsh r2, [r4, #0xba] + ldrsh r0, [r4, #0x12] + ldr r3, _0203F8DC ; =_0209E912 + ldr r1, _0203F8E0 ; =STATUSES_FULL_DESCRIPTION_STRING_IDS + add r0, r2, r0 + add r0, r4, r0 + ldrb r4, [r0, #0xbc] + mov r2, #0 + ldr r0, _0203F8E4 ; =_0209C8B8 + mov r5, r4, lsl #2 + ldrh r4, [r3, r5] + ldrh r3, [r1, r5] + ldr r1, _0203F8E8 ; =0x00001013 + stmia sp, {r2, r4} + str r2, [sp, #8] + bl CreateScrollBoxSingle + ldr r1, _0203F8D4 ; =_020AFE78 + mov r2, #4 + ldr r3, [r1] + strb r0, [r3, #1] + ldr r0, [r1] + str r2, [r0, #8] + b _0203F8C8 +_0203F898: + ldrsb r0, [r4, #1] + bl IsScrollBoxActive + cmp r0, #0 + bne _0203F8C8 + ldr r0, _0203F8D4 ; =_020AFE78 + ldr r0, [r0] + ldrsb r0, [r0, #1] + bl CloseScrollBox + ldr r0, _0203F8D4 ; =_020AFE78 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #8] +_0203F8C8: + mov r0, #0 +_0203F8CC: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0203F8D4: .word _020AFE78 +_0203F8D8: .word sub_0203F368 +_0203F8DC: .word _0209E912 +_0203F8E0: .word STATUSES_FULL_DESCRIPTION_STRING_IDS +_0203F8E4: .word _0209C8B8 +_0203F8E8: .word 0x00001013 + arm_func_end sub_0203F398 + + arm_func_start sub_0203F8EC +sub_0203F8EC: ; 0x0203F8EC + ldr r0, _0203F924 ; =_020AFE78 + mov r1, #0 + ldr r2, [r0] + b _0203F914 +_0203F8FC: + add r0, r2, r1 + ldrb r0, [r0, #0xbc] + cmp r0, #0 + movne r0, #1 + bxne lr + add r1, r1, #1 +_0203F914: + cmp r1, #0x1e + blt _0203F8FC + mov r0, #0 + bx lr + .align 2, 0 +_0203F924: .word _020AFE78 + arm_func_end sub_0203F8EC + + arm_func_start sub_0203F928 +sub_0203F928: ; 0x0203F928 + stmdb sp!, {r4, lr} + mov r4, r0 + cmp r1, #0 + ldmeqia sp!, {r4, pc} + bl sub_02030908 + ldr r2, _0203F970 ; =_020AFE78 + mov r3, #0xc + ldr ip, [r2] + mov r1, #1 + strh r0, [ip, #0x12] + ldr r2, [r2] + mov r0, r4 + ldrsh ip, [r2, #0x12] + mov r2, #3 + smulbb r3, ip, r3 + add r3, r3, #0x11 + bl sub_02030978 + ldmia sp!, {r4, pc} + .align 2, 0 +_0203F970: .word _020AFE78 + arm_func_end sub_0203F928 + + arm_func_start sub_0203F974 +sub_0203F974: ; 0x0203F974 + ldr r0, _0203F988 ; =_020AFE78 + ldr ip, _0203F98C ; =SetAdvancedTextBoxState5 + ldr r0, [r0] + ldrsb r0, [r0] + bx ip + .align 2, 0 +_0203F988: .word _020AFE78 +_0203F98C: .word SetAdvancedTextBoxState5 + arm_func_end sub_0203F974 + + arm_func_start sub_0203F990 +sub_0203F990: ; 0x0203F990 + stmdb sp!, {r3, lr} + ldr r0, _0203F9C8 ; =_020AFE78 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0] + bl CloseAdvancedTextBox + ldr r0, _0203F9C8 ; =_020AFE78 + ldr r0, [r0] + bl MemFree + ldr r0, _0203F9C8 ; =_020AFE78 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0203F9C8: .word _020AFE78 + arm_func_end sub_0203F990 + + arm_func_start sub_0203F9CC +sub_0203F9CC: ; 0x0203F9CC + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _0203FA50 ; =_022AADFC + mov r2, #0 + mov r5, r0 + str r2, [r1] + ldr r4, [r5, #0xb4] + ldr r0, _0203FA54 ; =_022AAE00 + mov r1, r4 + bl GetMonsterName + ldr r0, _0203FA58 ; =_022AAE2A +#ifdef JAPAN + add r1, r4, #0x120 +#else + add r1, r4, #0x124 +#endif + mov r2, #0x22 + bl memcpy + ldrb r2, [r4, #7] + ldr r1, _0203FA50 ; =_022AADFC + mov r0, #0 + strb r2, [r1, #0x2c] + str r5, [r1] + strb r0, [r1, #0x58] + ldrsh r2, [r4, #4] + ldr r0, _0203FA5C ; =0x000001A2 + ldr r3, _0203FA60 ; =_022AAE58 + cmp r2, r0 + moveq r0, #1 + streqb r0, [r1, #0x58] + ldrsh r1, [r4, #2] + ldr r0, _0203FA50 ; =_022AADFC + strh r1, [r0, #0x5a] + add r0, r4, #0x9c + ldmia r0, {r0, r1, r2} + stmia r3, {r0, r1, r2} + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0203FA50: .word _022AADFC +_0203FA54: .word _022AAE00 +_0203FA58: .word _022AAE2A +_0203FA5C: .word 0x000001A2 +_0203FA60: .word _022AAE58 + arm_func_end sub_0203F9CC + + arm_func_start sub_0203FA64 +sub_0203FA64: ; 0x0203FA64 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + ldr r1, _0203FBBC ; =TEAM_MEMBER_TABLE_PTR + mov sl, r0 + mov r0, #0x44 + smulbb r2, sl, r0 + ldr r1, [r1] + mov r4, #0x46 + ldrb r0, [r1, r2] + add r8, r1, r2 + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + moveq r0, #0 + beq _0203FBB4 + ldr r1, _0203FBC0 ; =_022AADFC + mov r2, #0 + mov r0, sl + str r2, [r1] + bl sub_02056410 + cmp r0, #0 + mov r0, sl + beq _0203FAD4 + bl sub_020564B0 + cmp r0, #0 + movne r4, #0x59 + b _0203FAE4 +_0203FAD4: + bl sub_02056F60 + cmp r0, #0 + movne r4, #0x44 + moveq r4, #0x57 +_0203FAE4: + add r0, sp, #0 + add r1, r8, #0x3a + mov r2, #0xa + bl StrncpySimpleNoPadSafe + ldr r0, _0203FBC4 ; =_022AAE00 + ldr r1, _0203FBC8 ; =_0209C96C + add r3, sp, #0 + and r2, r4, #0xff + bl SprintfStatic__0204174C + ldrsh r1, [r8, #4] + ldr r0, _0203FBC0 ; =_022AADFC + ldr r3, _0203FBCC ; =_022AAE58 + strh r1, [r0, #0x5a] + add r4, r8, #0x14 + ldmia r4, {r0, r1, r2} + stmia r3, {r0, r1, r2} + ldrsh r0, [r8, #4] + mov r1, r4 + bl GetPpIncrease + mov r6, #0 + ldr r5, _0203FBD0 ; =_022AAE2A + ldr r4, _0203FBC0 ; =_022AADFC + mov r7, r0 + mov fp, r6 +_0203FB44: + mov r0, #6 + mla sb, r6, r0, r8 + ldrh r1, [sb, #0x24] + add r0, r5, r6, lsl #3 + bl InitMove + ldrb r1, [sb, #0x22] + add r2, r4, r6, lsl #3 + add r0, r5, r6, lsl #3 + strb r1, [r2, #0x2e] + strh r7, [r2, #0x30] + strb fp, [r2, #0x34] + ldrb r1, [sb, #0x26] + strb r1, [r2, #0x35] + bl GetMaxPp + add r1, r6, #1 + add r2, r4, r6, lsl #3 + mov r1, r1, lsl #0x10 + mov r6, r1, lsr #0x10 + strb r0, [r2, #0x34] + cmp r6, #4 + blo _0203FB44 + mov r0, sl + bl sub_020564B0 + ldr r1, _0203FBC0 ; =_022AADFC + strb r0, [r1, #0x2c] + ldrsh r0, [r8, #4] + bl sub_02041724 + mov r0, #1 +_0203FBB4: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0203FBBC: .word TEAM_MEMBER_TABLE_PTR +_0203FBC0: .word _022AADFC +_0203FBC4: .word _022AAE00 +_0203FBC8: .word _0209C96C +_0203FBCC: .word _022AAE58 +_0203FBD0: .word _022AAE2A + arm_func_end sub_0203FA64 + + arm_func_start sub_0203FBD4 +sub_0203FBD4: ; 0x0203FBD4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x14 + ldr r1, _0203FCFC ; =TEAM_MEMBER_TABLE_PTR + mov r2, #0x68 + ldr r1, [r1] + ldr r3, _0203FD00 ; =_022AADFC + add r1, r1, #0x9000 + ldr r1, [r1, #0x84c] + mov r4, #0 + smlabb r8, r0, r2, r1 + str r4, [r3] + ldrsh r0, [r8, #8] + sub r1, r4, #1 + cmp r0, r1 + streqb r4, [r3, #0x2c] + beq _0203FC20 + bl sub_020564B0 + ldr r1, _0203FD00 ; =_022AADFC + strb r0, [r1, #0x2c] +_0203FC20: + ldr r0, _0203FD00 ; =_022AADFC + add r1, r8, #0x5e + ldrb r0, [r0, #0x2c] + mov r2, #0xa + cmp r0, #0 + movne r4, #0x59 + add r0, sp, #0 + moveq r4, #0x46 + bl StrncpySimpleNoPadSafe + ldr r0, _0203FD04 ; =_022AAE00 + ldr r1, _0203FD08 ; =_0209C96C + add r3, sp, #0 + and r2, r4, #0xff + bl SprintfStatic__0204174C + ldrsh r0, [r8, #0xc] + add r1, r8, #0x4c + bl GetPpIncrease + ldr r5, _0203FD0C ; =_022AAE2A + ldr r4, _0203FD00 ; =_022AADFC + mov r7, r0 + mov r6, #0 +_0203FC74: + add r0, r8, r6, lsl #3 + ldrh r1, [r0, #0x20] + add r0, r5, r6, lsl #3 + bl InitMove + add r3, r8, r6, lsl #3 + ldrb r1, [r3, #0x1c] + add r2, r4, r6, lsl #3 + add r0, r5, r6, lsl #3 + strb r1, [r2, #0x2e] + strh r7, [r2, #0x30] + ldrb r1, [r3, #0x22] + strb r1, [r2, #0x34] + ldrb r1, [r3, #0x23] + strb r1, [r2, #0x35] + bl GetMaxPp + add r1, r6, #1 + add r2, r4, r6, lsl #3 + mov r1, r1, lsl #0x10 + mov r6, r1, lsr #0x10 + strb r0, [r2, #0x34] + cmp r6, #4 + blo _0203FC74 + ldrsh r0, [r8, #0xc] + bl sub_02041724 + ldrsh r1, [r8, #0xc] + ldr r0, _0203FD00 ; =_022AADFC + ldr r3, _0203FD10 ; =_022AAE58 + strh r1, [r0, #0x5a] + add r0, r8, #0x4c + ldmia r0, {r0, r1, r2} + stmia r3, {r0, r1, r2} + mov r0, #1 + add sp, sp, #0x14 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0203FCFC: .word TEAM_MEMBER_TABLE_PTR +_0203FD00: .word _022AADFC +_0203FD04: .word _022AAE00 +_0203FD08: .word _0209C96C +_0203FD0C: .word _022AAE2A +_0203FD10: .word _022AAE58 + arm_func_end sub_0203FBD4 + + arm_func_start sub_0203FD14 +sub_0203FD14: ; 0x0203FD14 + ldr ip, _0203FD24 ; =InitMove + mov r1, r0 + ldr r0, _0203FD28 ; =LAST_NEW_MOVE + bx ip + .align 2, 0 +_0203FD24: .word InitMove +_0203FD28: .word LAST_NEW_MOVE + arm_func_end sub_0203FD14 + + arm_func_start sub_0203FD2C +sub_0203FD2C: ; 0x0203FD2C + ldr r0, _0203FD34 ; =LAST_NEW_MOVE + bx lr + .align 2, 0 +_0203FD34: .word LAST_NEW_MOVE + arm_func_end sub_0203FD2C + + arm_func_start sub_0203FD38 +sub_0203FD38: ; 0x0203FD38 + ldr r0, _0203FD40 ; =_022AAE2A + bx lr + .align 2, 0 +_0203FD40: .word _022AAE2A + arm_func_end sub_0203FD38 + + arm_func_start sub_0203FD44 +sub_0203FD44: ; 0x0203FD44 + stmdb sp!, {r4, lr} + ldr r4, [r0, #0xb4] + ldr r1, _0203FD74 ; =_022AAE2A +#ifdef JAPAN + add r0, r4, #0x120 +#else + add r0, r4, #0x124 +#endif + mov r2, #0x22 + bl memcpy + ldr r1, _0203FD78 ; =_022AADFC + ldr r0, _0203FD7C ; =_020AFE7C + ldrb r1, [r1, #0x2c] + strb r1, [r4, #7] + ldrsh r0, [r0, #2] + ldmia sp!, {r4, pc} + .align 2, 0 +_0203FD74: .word _022AAE2A +_0203FD78: .word _022AADFC +_0203FD7C: .word _020AFE7C + arm_func_end sub_0203FD44 + + arm_func_start sub_0203FD80 +sub_0203FD80: ; 0x0203FD80 + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _0203FDE0 ; =TEAM_MEMBER_TABLE_PTR + mov r1, #0x44 + ldr r2, [r2] + ldr ip, _0203FDE4 ; =_022AADFC + mla r5, r0, r1, r2 + mov r4, #0 + mov r0, #6 +_0203FDA0: + mla lr, r4, r0, r5 + add r3, ip, r4, lsl #3 + ldrb r2, [r3, #0x2e] + add r1, r4, #1 + mov r1, r1, lsl #0x10 + strb r2, [lr, #0x22] + ldrh r2, [r3, #0x32] + mov r4, r1, lsr #0x10 + cmp r4, #4 + strh r2, [lr, #0x24] + ldrb r1, [r3, #0x35] + strb r1, [lr, #0x26] + blo _0203FDA0 + ldr r0, _0203FDE8 ; =_020AFE7C + ldrsh r0, [r0, #2] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0203FDE0: .word TEAM_MEMBER_TABLE_PTR +_0203FDE4: .word _022AADFC +_0203FDE8: .word _020AFE7C + arm_func_end sub_0203FD80 + + arm_func_start sub_0203FDEC +sub_0203FDEC: ; 0x0203FDEC + stmdb sp!, {r4, lr} + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetActiveTeamMember + ldr lr, _0203FE54 ; =_022AADFC + mov r4, #0 +_0203FE04: + add ip, lr, r4, lsl #3 + ldrb r2, [ip, #0x2e] + add r3, r0, r4, lsl #3 + add r1, r4, #1 + strb r2, [r3, #0x1c] + ldrh r2, [ip, #0x30] + mov r1, r1, lsl #0x10 + mov r4, r1, lsr #0x10 + strh r2, [r3, #0x1e] + ldrh r1, [ip, #0x32] + cmp r4, #4 + strh r1, [r3, #0x20] + ldrb r1, [ip, #0x34] + strb r1, [r3, #0x22] + ldrb r1, [ip, #0x35] + strb r1, [r3, #0x23] + blo _0203FE04 + ldr r0, _0203FE58 ; =_020AFE7C + ldrsh r0, [r0, #2] + ldmia sp!, {r4, pc} + .align 2, 0 +_0203FE54: .word _022AADFC +_0203FE58: .word _020AFE7C + arm_func_end sub_0203FDEC + + arm_func_start sub_0203FE5C +sub_0203FE5C: ; 0x0203FE5C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #8 + mov r7, r0 + mov r6, r1 + mov r0, #0x3fc + mov r1, #8 + mov r5, r2 + mov r4, r3 + bl MemAlloc + ldr r1, _02040154 ; =_020AFE7C + mvn r2, #1 + str r0, [r1, #8] + strb r2, [r0] + ldr r0, [r1, #0xc] + ldr r2, _02040154 ; =_020AFE7C + cmp r0, r7 + strne r7, [r1, #0xc] + movne r0, #0 + strneh r0, [r1, #2] + ldr r0, _02040154 ; =_020AFE7C + ldr r3, _02040158 ; =0x00000A3E + ldrsh r1, [r0, #4] + mov r7, #0x17 + cmp r1, r6 + strneh r6, [r0, #4] + movne r1, #0 + strneh r1, [r0, #2] + ldr r0, [r2, #8] + mov r1, #0x10 + str r1, [r0, #0x10] + ldr r0, [r2, #8] + str r1, [r0, #8] + ldr r0, [r2, #8] + mov r1, #0 + strh r3, [r0, #0xc] + ldr r0, [r2, #8] + ldr r3, _0204015C ; =_022AAE00 + str r7, [r0, #0x98] + ldr r0, [r2, #8] + str r1, [r0, #0x64] + ldr r0, [r2, #8] + str r3, [r0, #0x4c] + ldr r0, [r2, #8] + strb r1, [r0, #0x3f8] + ldr r0, [r2, #8] + str r4, [r0, #0x3f4] + ldr r0, [r2, #0xc] + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _0203FF44 +_0203FF24: ; jump table + b _02040084 ; case 0 + b _0203FF44 ; case 1 + b _0203FFAC ; case 2 + b _0204003C ; case 3 + b _0203FF44 ; case 4 + b _0203FF44 ; case 5 + b _0203FFF4 ; case 6 + b _0203FF7C ; case 7 +_0203FF44: + mov r1, #0 + str r1, [sp] + ldr r0, _02040154 ; =_020AFE7C + str r1, [sp, #4] + ldr r2, [r0, #8] + ldr r0, _02040160 ; =_0209C93C + ldr r1, _02040164 ; =0x00401803 + ldr r3, _02040168 ; =sub_020401A8 + add r2, r2, #4 + bl CreateAdvancedTextBox + ldr r1, _02040154 ; =_020AFE7C + ldr r1, [r1, #8] + strb r0, [r1] + b _020400FC +_0203FF7C: + str r1, [sp] + str r1, [sp, #4] + ldr r2, [r2, #8] + ldr r0, _0204016C ; =_0209C94C + ldr r1, _02040170 ; =0x00400800 + ldr r3, _02040168 ; =sub_020401A8 + add r2, r2, #4 + bl CreateAdvancedTextBox + ldr r1, _02040154 ; =_020AFE7C + ldr r1, [r1, #8] + strb r0, [r1] + b _020400FC +_0203FFAC: + ldr r0, [r2, #8] + mov r3, #1 + strb r3, [r0, #0x3f8] + ldr r4, [r2, #8] + ldr r0, _02040174 ; =_0209C92C + add r3, r4, #0x3e0 + str r3, [r4, #0x64] + str r1, [sp] + str r1, [sp, #4] + ldr r2, [r2, #8] + ldr r1, _02040164 ; =0x00401803 + ldr r3, _02040168 ; =sub_020401A8 + add r2, r2, #4 + bl CreateAdvancedTextBox + ldr r1, _02040154 ; =_020AFE7C + ldr r1, [r1, #8] + strb r0, [r1] + b _020400FC +_0203FFF4: + ldr r0, [r2, #8] + mov r3, #1 + strb r3, [r0, #0x3f8] + ldr r4, [r2, #8] + ldr r0, _02040174 ; =_0209C92C + add r3, r4, #0x3e0 + str r3, [r4, #0x64] + str r1, [sp] + str r1, [sp, #4] + ldr r2, [r2, #8] + ldr r1, _02040178 ; =0x00401A03 + ldr r3, _02040168 ; =sub_020401A8 + add r2, r2, #4 + bl CreateAdvancedTextBox + ldr r1, _02040154 ; =_020AFE7C + ldr r1, [r1, #8] + strb r0, [r1] + b _020400FC +_0204003C: + ldr r0, [r2, #8] + mov r3, #1 + strb r3, [r0, #0x3f8] + ldr r4, [r2, #8] + ldr r0, _0204017C ; =_0209C95C + add r3, r4, #0x3e0 + str r3, [r4, #0x64] + str r1, [sp] + str r1, [sp, #4] + ldr r2, [r2, #8] + ldr r1, _02040180 ; =0x00400A00 + ldr r3, _02040168 ; =sub_020401A8 + add r2, r2, #4 + bl CreateAdvancedTextBox + ldr r1, _02040154 ; =_020AFE7C + ldr r1, [r1, #8] + strb r0, [r1] + b _020400FC +_02040084: + cmp r6, #1 + ble _020400C8 + ldr r1, [r2, #8] + mov r0, #1 + str r5, [r1, #4] + str r6, [sp] + str r0, [sp, #4] + ldr r2, [r2, #8] + ldr r0, _02040160 ; =_0209C93C + ldr r1, _02040184 ; =0x00409823 + ldr r3, _02040168 ; =sub_020401A8 + add r2, r2, #4 + bl CreateAdvancedTextBox + ldr r1, _02040154 ; =_020AFE7C + ldr r1, [r1, #8] + strb r0, [r1] + b _020400FC +_020400C8: + ldr r3, [r2, #8] + ldr r0, _02040160 ; =_0209C93C + str r1, [r3, #4] + str r1, [sp] + str r1, [sp, #4] + ldr r2, [r2, #8] + ldr r1, _02040188 ; =0x00401823 + ldr r3, _02040168 ; =sub_020401A8 + add r2, r2, #4 + bl CreateAdvancedTextBox + ldr r1, _02040154 ; =_020AFE7C + ldr r1, [r1, #8] + strb r0, [r1] +_020400FC: + ldr r0, _02040154 ; =_020AFE7C + ldr r0, [r0, #8] + ldrsb r0, [r0] + bl GetWindowIdPageStart + ldr r1, _02040154 ; =_020AFE7C + ldr r1, [r1, #8] + add r1, r1, #0x300 + strh r0, [r1, #0xe8] + mov r0, #1 + bl sub_0204027C + bl PrintMoveOptionMenu + ldr r1, _02040154 ; =_020AFE7C + mov r2, #0 + ldr r0, [r1, #8] + strb r2, [r0, #0x3e5] + ldr r0, [r1, #8] + add r0, r0, #0x300 + strh r2, [r0, #0xe6] + ldr r0, [r1, #8] + ldrsb r0, [r0] + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02040154: .word _020AFE7C +#ifdef JAPAN +_02040158: .word 0x00000879 +#else +_02040158: .word 0x00000A3E +#endif +_0204015C: .word _022AAE00 +_02040160: .word _0209C93C +_02040164: .word 0x00401803 +_02040168: .word sub_020401A8 +_0204016C: .word _0209C94C +_02040170: .word 0x00400800 +_02040174: .word _0209C92C +_02040178: .word 0x00401A03 +_0204017C: .word _0209C95C +_02040180: .word 0x00400A00 +_02040184: .word 0x00409823 +_02040188: .word 0x00401823 + arm_func_end sub_0203FE5C + + arm_func_start sub_0204018C +sub_0204018C: ; 0x0204018C + ldr ip, _02040198 ; =sub_0203FE5C + mov r3, #0 + bx ip + .align 2, 0 +_02040198: .word sub_0203FE5C + arm_func_end sub_0204018C + + arm_func_start sub_0204019C +sub_0204019C: ; 0x0204019C + ldr ip, _020401A4 ; =sub_0203FE5C + bx ip + .align 2, 0 +_020401A4: .word sub_0203FE5C + arm_func_end sub_0204019C + + arm_func_start sub_020401A8 +sub_020401A8: ; 0x020401A8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + bl sub_02027B1C + ldr r4, _02040274 ; =_020AFE7C + mov sb, #0 + ldr r0, [r4, #8] + ldr r7, _02040278 ; =_022AADFC + ldr r0, [r0, #0x10] + mov fp, #8 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + mov r6, #0xd + mov r5, #0x17 + b _02040250 +_020401E0: + add r0, r7, sb, lsl #3 + ldrb r0, [r0, #0x2e] + tst r0, #2 + add r0, r2, sb, lsl #3 + movne r1, r6 + ldr r3, [r0, #0xa8] + moveq r1, fp + mov r0, sl + add r2, r8, #2 + bl DrawTextInWindow + cmp sb, #0 + ble _02040238 + add r0, r7, sb, lsl #3 + ldrb r0, [r0, #0x2e] + tst r0, #2 + bne _02040238 + mov r0, sl + mov r1, #0x10 + mov r2, r8 + mov r3, #0x7e + str r5, [sp] + bl sub_02025D50 +_02040238: + add r0, r8, #0x10 + add r1, sb, #1 + mov r0, r0, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r8, r0, asr #0x10 + mov sb, r1, asr #0x10 +_02040250: + ldr r2, [r4, #8] + ldrsh r0, [r2, #0xa4] + cmp sb, r0 + blt _020401E0 + mov r0, #1 + bl sub_0204027C + mov r0, sl + bl UpdateWindow + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02040274: .word _020AFE7C +_02040278: .word _022AADFC + arm_func_end sub_020401A8 + + arm_func_start sub_0204027C +sub_0204027C: ; 0x0204027C + cmp r0, #0 + ldrne r0, _020402BC ; =_020AFE7C + movne r3, #2 + ldrne r2, [r0, #8] + ldreq r0, _020402BC ; =_020AFE7C + moveq r3, #1 + ldreq r2, [r0, #8] + movne r1, #1 + str r3, [r2, #0x3ec] + ldr r0, [r0, #8] + moveq r1, #2 + str r1, [r0, #0x3f0] + ldr r0, _020402BC ; =_020AFE7C + ldr r0, [r0, #0xc] + cmp r0, #7 + bx lr + .align 2, 0 +_020402BC: .word _020AFE7C + arm_func_end sub_0204027C + + arm_func_start PrintMoveOptionMenu +PrintMoveOptionMenu: ; 0x020402C0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x5c + ldr r0, _020407AC ; =_020AFE7C + ldr r2, _020407B0 ; =_022AAE00 + ldr r1, [r0, #8] + str r2, [r1, #0x4c] + ldr r1, [r0, #0xc] + cmp r1, #2 + cmpne r1, #3 + cmpne r1, #6 + beq _020402FC + ldrsh r1, [r0, #2] + cmp r1, #4 + movge r1, #0 + strgeh r1, [r0, #2] +_020402FC: + ldr r0, _020407AC ; =_020AFE7C + ldrsh r0, [r0, #2] + bl sub_020410A4 + ldr r1, _020407AC ; =_020AFE7C + mov r0, #0 + ldr r1, [r1, #8] + strh r0, [r1, #0xa4] +_02040318: + ldr r1, _020407AC ; =_020AFE7C + ldr r2, _020407B4 ; =_022AAE2A + ldr r1, [r1, #8] + mov r3, #0 + add r1, r1, r0 + strb r3, [r1, #0x3e0] + ldrb r1, [r2, r0, lsl #3] + add r4, r2, r0, lsl #3 + tst r1, #1 + movne r3, #1 + tst r3, #0xff + beq _020403B4 + ldr r1, _020407AC ; =_020AFE7C + ldr r3, [r1, #8] + ldrsh r2, [r3, #0xa4] + add r2, r2, #1 + strh r2, [r3, #0xa4] + ldr r5, [r1, #8] + ldrb r1, [r5, #0x3f8] + cmp r1, #0 + ldrne r2, [r5, #0x3f4] + cmpne r2, #0 + beq _020403C8 + ldrh r1, [r4, #4] + b _02040388 +_0204037C: + cmp r3, r1 + beq _02040394 + add r2, r2, #2 +_02040388: + ldrh r3, [r2] + cmp r3, #0 + bne _0204037C +_02040394: + cmp r3, #0 + movne r1, #1 + moveq r1, #0 + tst r1, #0xff + addne r1, r5, r0 + movne r2, #3 + strneb r2, [r1, #0x3e0] + b _020403C8 +_020403B4: + ldr r1, _020407AC ; =_020AFE7C + ldrsh r2, [r1, #2] + cmp r0, r2 + moveq r2, #0 + streqh r2, [r1, #2] +_020403C8: + add r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + cmp r0, #4 + blt _02040318 + ldr r1, _020407AC ; =_020AFE7C + mov r0, #0 + ldr r2, [r1, #8] + strb r0, [r2, #0x3e4] + ldr r2, [r1, #8] + ldrb r1, [r2, #0x3f8] + cmp r1, #0 + ldrne r1, [r2, #0x3f4] + cmpne r1, #0 + beq _020404B4 +_02040404: + ldr r1, _020407AC ; =_020AFE7C + ldr r3, _020407B4 ; =_022AAE2A + ldr r2, [r1, #8] + add r2, r2, r0 + ldrb r2, [r2, #0x3e0] + tst r2, #1 + beq _020404A0 + ldrb r2, [r3, r0, lsl #3] + tst r2, #2 + beq _02040464 + sub r6, r0, #1 + mov r5, #3 + ldr r3, _020407B8 ; =_022AADFC + b _0204045C +_0204043C: + ldr r4, [r1, #8] + add r2, r3, r6, lsl #3 + add r4, r4, r6 + strb r5, [r4, #0x3e0] + ldrb r2, [r2, #0x2e] + tst r2, #2 + beq _02040464 + sub r6, r6, #1 +_0204045C: + cmp r6, #0 + bge _0204043C +_02040464: + add r5, r0, #1 + ldr r4, _020407B8 ; =_022AADFC + mov r3, #3 + ldr r1, _020407AC ; =_020AFE7C + b _02040498 +_02040478: + add r2, r4, r5, lsl #3 + ldrb r2, [r2, #0x2e] + tst r2, #2 + beq _020404A0 + ldr r2, [r1, #8] + add r2, r2, r5 + strb r3, [r2, #0x3e0] + add r5, r5, #1 +_02040498: + cmp r5, #4 + blt _02040478 +_020404A0: + add r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + cmp r0, #4 + blt _02040404 +_020404B4: + ldr r0, _020407AC ; =_020AFE7C + mov r8, #0 + ldr r0, [r0, #0xc] + ldr fp, _020407B4 ; =_022AAE2A + cmp r0, #2 + cmpne r0, #3 + cmpne r0, #6 + ldreq r0, _020407AC ; =_020AFE7C + ldr r5, _020407B8 ; =_022AADFC + ldreq r1, [r0, #8] + ldr r4, _020407AC ; =_020AFE7C + ldreqsh r0, [r1, #0xa4] + mov sb, r8 + mov r7, r8 + addeq r0, r0, #1 + streqh r0, [r1, #0xa4] + mov r6, #0x6a +_020404F8: + ldrb r0, [fp, sb, lsl #3] + str r7, [sp] + str r6, [sp, #4] + tst r0, #1 + movne r0, #1 + moveq r0, r7 + strb r7, [sp, #8] + strb r7, [sp, #9] + add sl, fp, sb, lsl #3 + tst r0, #0xff + beq _02040634 + ldrb r0, [r5, #0x2c] + cmp r0, #0 + movne r0, #2 + strne r0, [sp] + moveq r0, #4 + streq r0, [sp] + ldr r0, [r4, #0xc] + cmp r0, #1 + cmpne r0, #5 + bne _02040574 + ldrh r0, [sl, #4] + bl Is2TurnsMove + cmp r0, #0 + movne r0, #1 + strneb r0, [sp, #9] + bne _02040574 + ldrh r0, [sl, #4] + cmp r0, #0x8a + moveq r0, #1 + streqb r0, [sp, #8] +_02040574: + ldr r0, [r4, #0xc] + cmp r0, #0 + cmpne r0, #1 + bne _020405A4 + ldr r0, [r5] + mov r1, sl + mov r2, #1 + bl CanMonsterUseMove + cmp r0, #0 + moveq r0, #1 + streqb r0, [sp, #8] + b _020405B4 +_020405A4: + ldrb r0, [sl, #6] + cmp r0, #0 + moveq r0, #1 + streqb r0, [sp, #8] +_020405B4: + ldr r1, [r4, #8] + ldrb r0, [r1, #0x3f8] + cmp r0, #0 + beq _020405D8 + add r0, r1, sb + ldrb r0, [r0, #0x3e0] + tst r0, #2 + movne r0, #1 + strneb r0, [sp, #8] +_020405D8: + mov r2, sl + add r0, sp, #0xc + mov r1, #0 + add r3, sp, #0 + bl FormatMoveStringMore + mov r0, #0 + bl GetDungeonResultString + mov r1, r0 + ldr r0, [r4, #8] + add r0, r0, #0xe0 + add r0, r0, r8, lsl #7 + bl strcpy + ldr r3, [r4, #8] + add r0, r8, #1 + add r1, r3, #0xe0 + add r2, r1, r8, lsl #7 + add r1, r3, r8, lsl #3 + str r2, [r1, #0xa8] + ldr r1, [r4, #8] + mov r0, r0, lsl #0x10 + add r1, r1, r8, lsl #3 + str r8, [r1, #0xac] + mov r8, r0, asr #0x10 +_02040634: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 + cmp sb, #4 + blt _020404F8 + cmp r8, #4 + bne _02040710 + ldr r0, _020407AC ; =_020AFE7C + ldr r0, [r0, #0xc] + cmp r0, #2 + cmpne r0, #3 + cmpne r0, #6 + bne _02040710 + ldr r0, _020407B8 ; =_022AADFC + mov r2, #0 + ldrb r0, [r0, #0x2c] + str r2, [sp] + strb r2, [sp, #8] + strb r2, [sp, #9] + ldr r2, _020407BC ; =LAST_NEW_MOVE + cmp r0, #0 + ldrb r0, [r2] + mov r1, #0x6a + str r1, [sp, #4] + movne r1, #2 + bicne r0, r0, #8 + strne r1, [sp] + moveq r1, #4 + biceq r0, r0, #4 + streq r1, [sp] + strb r0, [r2] + add r0, sp, #0xc + add r3, sp, #0 + mov r1, #0 + bl FormatMoveStringMore + mov r0, #0 + bl GetDungeonResultString + ldr r2, _020407AC ; =_020AFE7C + mov r1, r0 + ldr r0, [r2, #8] + add r0, r0, #0xe0 + add r0, r0, r8, lsl #7 + bl strcpy + ldr r1, _020407AC ; =_020AFE7C + add r0, r8, #1 + ldr r4, [r1, #8] + mov r0, r0, lsl #0x10 + add r2, r4, #0xe0 + add r3, r2, r8, lsl #7 + add r2, r4, r8, lsl #3 + str r3, [r2, #0xa8] + ldr r1, [r1, #8] + add r1, r1, r8, lsl #3 + str r8, [r1, #0xac] + mov r8, r0, asr #0x10 +_02040710: + ldr r0, _020407AC ; =_020AFE7C + mov r4, #0 + ldr r1, [r0, #8] + sub r3, r4, #1 + add r1, r1, r8, lsl #3 + str r4, [r1, #0xa8] + ldr r2, [r0, #8] + sub r1, r4, #2 + add r2, r2, r8, lsl #3 + str r3, [r2, #0xac] + ldr r0, [r0, #8] + ldrsb r0, [r0] + cmp r0, r1 + beq _0204075C + bl sub_020307EC + ldr r0, _020407AC ; =_020AFE7C + ldr r0, [r0, #8] + ldrsb r0, [r0] + bl SetAdvancedTextBoxField0x1C2 +_0204075C: + ldr r0, _020407AC ; =_020AFE7C + ldr r1, [r0, #0xc] + cmp r1, #7 + ldrne r3, [r0, #8] + ldrne r2, [r3, #0x3ec] + ldrne r1, [r3, #0x3f0] + cmpne r2, r1 + beq _020407A4 + str r1, [r3, #0x3ec] + ldr r3, [r0, #8] + ldrsh r1, [r0, #2] + ldr r2, [r3, #0x10] + ldrsb r0, [r3] + add r2, r2, r1, lsl #4 + ldr r1, [r3, #0x3ec] + add r3, r2, #4 + mov r2, #0 + bl sub_02030978 +_020407A4: + add sp, sp, #0x5c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_020407AC: .word _020AFE7C +_020407B0: .word _022AAE00 +_020407B4: .word _022AAE2A +_020407B8: .word _022AADFC +_020407BC: .word LAST_NEW_MOVE + arm_func_end PrintMoveOptionMenu + + arm_func_start sub_020407C0 +sub_020407C0: ; 0x020407C0 + stmdb sp!, {r3, lr} + ldr r0, _020407E8 ; =_020AFE7C + ldr r0, [r0, #8] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _020407E8 ; =_020AFE7C + mov r1, #0 + str r1, [r0, #8] + ldmia sp!, {r3, pc} + .align 2, 0 +_020407E8: .word _020AFE7C + arm_func_end sub_020407C0 + + arm_func_start sub_020407EC +sub_020407EC: ; 0x020407EC + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x34 + add r1, sp, #0xc + mov r0, #0 + bl GetHeldButtons + add r1, sp, #0xa + mov r0, #0 + bl GetPressedButtons + add r1, sp, #8 + mov r0, #0 + bl sub_020063F4 + ldrh r0, [sp, #0xc] + ldr r5, _02040F90 ; =_022AAE2A + tst r0, #0x200 + movne r1, #1 + moveq r1, #0 + and r6, r1, #0xff + ldr r1, _02040F94 ; =_020AFE7C + tst r0, #0x100 + movne r0, #1 + moveq r0, #0 + ldr r3, [r1, #8] + and r7, r0, #0xff + add r0, r3, #0x300 + ldrsh r2, [r0, #0xe6] + cmp r2, #0 + ble _0204087C + sub r2, r2, #1 + strh r2, [r0, #0xe6] + ldr r0, [r1, #8] + add r0, r0, #0x300 + ldrsh r0, [r0, #0xe6] + cmp r0, #0 + moveq r0, #2 + movne r0, #0 + b _02040F88 +_0204087C: + ldrsb r0, [r3] + bl IsAdvancedTextBoxActive + cmp r0, #0 + bne _020408B8 + ldr r0, _02040F94 ; =_020AFE7C + ldr r0, [r0, #8] + ldrsb r0, [r0] + bl GetDigitInputResult + mvn r1, #0 + cmp r0, r1 + bne _020408B8 + mov r0, #1 + bl PlaySeVolumeWrapper + mov r0, #1 + b _02040F88 +_020408B8: + ldr r0, _02040F94 ; =_020AFE7C + ldr r0, [r0, #0xc] + cmp r0, #9 + addls pc, pc, r0, lsl #2 + b _02040958 +_020408CC: ; jump table + b _02040958 ; case 0 + b _0204094C ; case 1 + b _0204090C ; case 2 + b _020408F4 ; case 3 + b _02040958 ; case 4 + b _02040958 ; case 5 + b _0204090C ; case 6 + b _0204093C ; case 7 + b _02040924 ; case 8 + b _0204090C ; case 9 +_020408F4: + ldrh r0, [sp, #0xa] + mov r6, #0 + mov r7, r6 + bic r0, r0, #6 + strh r0, [sp, #0xa] + b _02040958 +_0204090C: + ldrh r0, [sp, #0xa] + mov r6, #0 + mov r7, r6 + bic r0, r0, #4 + strh r0, [sp, #0xa] + b _02040958 +_02040924: + ldrh r0, [sp, #0xa] + mov r6, #0 + mov r7, r6 + bic r0, r0, #4 + strh r0, [sp, #0xa] + b _02040958 +_0204093C: + mov r6, #0 + mov r7, r6 + strh r6, [sp, #0xa] + b _02040958 +_0204094C: + ldrh r0, [sp, #8] + bic r0, r0, #0x30 + strh r0, [sp, #8] +_02040958: + ldr r0, _02040F94 ; =_020AFE7C + ldr r0, [r0, #8] + ldrb r0, [r0, #0x3e5] + cmp r0, #0 + beq _02040980 + bl PrintMoveOptionMenu + ldr r0, _02040F94 ; =_020AFE7C + mov r1, #0 + ldr r0, [r0, #8] + strb r1, [r0, #0x3e5] +_02040980: + ldrh r0, [sp, #8] + tst r0, #0x80 + beq _02040A44 + bl sub_02041178 + cmp r7, #0 + beq _020409E4 + ldr r1, _02040F94 ; =_020AFE7C + ldr r0, _02040F90 ; =_022AAE2A + ldrsh r1, [r1, #2] + bl sub_02013E54 + ldr r1, _02040F94 ; =_020AFE7C + mov r0, r0, lsl #0x10 + ldrsh r1, [r1, #2] + mov r4, r0, asr #0x10 + cmp r1, r0, asr #16 + beq _020409D8 + mov r0, #3 + bl PlaySeVolumeWrapper + ldr r1, _02040F94 ; =_020AFE7C + mov r0, #3 + strh r4, [r1, #2] + b _02040F88 +_020409D8: + mov r0, #2 + bl PlaySeVolumeWrapper + b _02040A44 +_020409E4: + mov r0, #3 + bl PlaySeVolumeWrapper + ldr r0, _02040F94 ; =_020AFE7C + ldr r1, [r0, #8] + ldrsh r2, [r0, #2] + ldrsh r1, [r1, #0xa4] + add r0, r2, #1 + mov r0, r0, lsl #0x10 + mov r3, r0, asr #0x10 + b _02040A24 +_02040A0C: + ldrb r0, [r5, r3, lsl #3] + tst r0, #2 + beq _02040A2C + add r0, r3, #1 + mov r0, r0, lsl #0x10 + mov r3, r0, asr #0x10 +_02040A24: + cmp r2, r1 + blt _02040A0C +_02040A2C: + cmp r3, r1 + ldr r1, _02040F94 ; =_020AFE7C + movge r3, #0 + mov r0, #9 + strh r3, [r1, #2] + b _02040F88 +_02040A44: + ldrh r0, [sp, #8] + tst r0, #0x40 + beq _02040B10 + bl sub_02041178 + cmp r7, #0 + beq _02040AA8 + ldr r1, _02040F94 ; =_020AFE7C + ldr r0, _02040F90 ; =_022AAE2A + ldrsh r1, [r1, #2] + bl sub_02013F58 + ldr r1, _02040F94 ; =_020AFE7C + mov r0, r0, lsl #0x10 + ldrsh r1, [r1, #2] + mov r4, r0, asr #0x10 + cmp r1, r0, asr #16 + beq _02040A9C + mov r0, #3 + bl PlaySeVolumeWrapper + ldr r1, _02040F94 ; =_020AFE7C + mov r0, #4 + strh r4, [r1, #2] + b _02040F88 +_02040A9C: + mov r0, #2 + bl PlaySeVolumeWrapper + b _02040B10 +_02040AA8: + mov r0, #3 + bl PlaySeVolumeWrapper + ldr r0, _02040F94 ; =_020AFE7C + ldrsh r1, [r0, #2] + cmp r1, #0 + subgt r0, r1, #1 + ldrle r0, [r0, #8] + ldrlesh r0, [r0, #0xa4] + suble r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r2, r0, asr #0x10 + b _02040AF0 +_02040AD8: + ldrb r0, [r5, r2, lsl #3] + tst r0, #2 + beq _02040AF8 + sub r0, r2, #1 + mov r0, r0, lsl #0x10 + mov r2, r0, asr #0x10 +_02040AF0: + cmp r1, #0 + bge _02040AD8 +_02040AF8: + ldr r1, _02040F94 ; =_020AFE7C + cmp r2, #0 + movlt r2, #0 + mov r0, #9 + strh r2, [r1, #2] + b _02040F88 +_02040B10: + mov r4, #0 + bl IsTouchScreenNotOff + cmp r0, #0 + add r0, sp, #0x10 + beq _02040B2C + bl GetReleasedStylus + b _02040B30 +_02040B2C: + bl sub_02006BFC +_02040B30: + ldrh r0, [sp, #0x10] + tst r0, #0x40 + beq _02040C38 + tst r0, #2 + ldrne r0, _02040F94 ; =_020AFE7C + ldrne r0, [r0, #0xc] + cmpne r0, #7 + beq _02040C38 + cmp r0, #2 + cmpne r0, #3 + cmpne r0, #6 + bne _02040B68 + mov r1, #0x70 + b _02040B6C +_02040B68: + mov r1, #0x60 +_02040B6C: + ldr r0, [sp, #0x14] + cmp r0, #0x10 + blt _02040C38 + cmp r0, #0xa0 + bge _02040C38 + ldr r0, [sp, #0x18] + cmp r0, #0x20 + blt _02040C38 + cmp r0, r1 + bge _02040C38 + sub r1, r0, #0x20 + mov r0, r1, asr #3 + add r0, r1, r0, lsr #28 + mov r0, r0, lsl #0xc + ldr r2, _02040F94 ; =_020AFE7C + mov r1, r0, asr #0x10 + ldr r5, [r2, #8] + add r7, r1, #1 + mov r3, #0 + mvn r2, #0 + b _02040BDC +_02040BC0: + add r0, r5, r3, lsl #3 + ldr r0, [r0, #0xac] + cmp r0, r2 + beq _02040BE4 + add r0, r3, #1 + mov r0, r0, lsl #0x10 + mov r3, r0, asr #0x10 +_02040BDC: + cmp r3, r7 + blt _02040BC0 +_02040BE4: + cmp r3, r1 + ble _02040C38 + ldr r0, _02040F90 ; =_022AAE2A + ldrb r0, [r0, r1, lsl #3] + tst r0, #2 + bne _02040C38 + mov r0, r1, lsl #4 + ldr r3, _02040F94 ; =_020AFE7C + add r0, r0, #0x20 + mov r2, r0, lsl #0x10 + mov r0, #0x10 + ldr r4, _02040F98 ; =_0209C928 + strh r1, [r3, #2] + mov r3, r0 + str r4, [sp] + mov r4, #0x40 + mov r1, r2, asr #0x10 + mov r2, #0x90 + str r4, [sp, #4] + mov r4, #1 + bl sub_0202A2A4 +_02040C38: + ldr r0, _02040F94 ; =_020AFE7C + ldr r5, [r0, #8] + ldrsb r0, [r5] + bl GetWindowIdPageStart + add r1, r5, #0x300 + ldrsh r1, [r1, #0xe8] + cmp r1, r0 + beq _02040C90 + mov r0, #4 + bl PlaySeVolumeWrapper + ldr r0, _02040F94 ; =_020AFE7C + mov r1, #0 + strh r1, [r0, #2] + ldr r0, [r0, #8] + ldrsb r0, [r0] + bl GetWindowIdPageStart + ldr r1, _02040F94 ; =_020AFE7C + ldr r1, [r1, #8] + add r1, r1, #0x300 + strh r0, [r1, #0xe8] + mov r0, #5 + b _02040F88 +_02040C90: + ldrh r0, [sp, #0xa] + tst r0, #2 + beq _02040CAC + mov r0, #1 + bl PlaySeVolumeWrapper + mov r0, #1 + b _02040F88 +_02040CAC: + tst r0, #4 + beq _02040D0C + ldr r0, _02040F9C ; =0x00003F07 + mov r1, #0x100 + bl sub_02017C74 + ldr r0, _02040F94 ; =_020AFE7C + ldr r1, [r0, #0xc] + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _02040CF4 +_02040CD4: ; jump table + b _02040CE4 ; case 0 + b _02040CE4 ; case 1 + b _02040CE4 ; case 2 + b _02040CE4 ; case 3 +_02040CE4: + ldr r0, [r0, #8] + ldrsb r0, [r0] + bl sub_02030EF0 + b _02040D04 +_02040CF4: + bl sub_02041178 + ldr r0, _02040F94 ; =_020AFE7C + ldrsh r0, [r0, #2] + bl sub_02041000 +_02040D04: + mov r0, #6 + b _02040F88 +_02040D0C: + tst r0, #8 + beq _02040D28 + ldr r0, _02040FA0 ; =0x00003F04 + mov r1, #0x100 + bl sub_02017C74 + mov r0, #7 + b _02040F88 +_02040D28: +#ifndef JAPAN + ldrsb r0, [r5] + bl sub_020308E4 + cmp r0, #0 + bne _02040F84 + ldrh r0, [sp, #0xa] +#endif + tst r0, #0x400 + bne _02040D50 + tst r0, #1 + cmpeq r4, #0 + beq _02040F84 +_02040D50: +#ifdef JAPAN + ldrb r0, [r5, #0x3f8] + cmp r0, #0 + beq _020410EC + ldr r0, _02040F94 ; =_020AFE7C + ldrsh r0, [r0, #2] + add r0, r5, r0 + ldrb r0, [r0, #0x3e0] + tst r0, #1 + bne _02040F70 +_020410EC: + cmp r4, #0 + addne r0, r5, #0x300 +#else + ldr r0, _02040F94 ; =_020AFE7C + mov r2, #0 + ldr r3, [r0, #8] + ldrb r1, [r3, #0x3f8] + cmp r1, #0 + beq _02040D7C + ldrsh r0, [r0, #2] + add r0, r3, r0 + ldrb r0, [r0, #0x3e0] + tst r0, #1 + movne r2, #1 +_02040D7C: + cmp r2, #0 + bne _02040F70 + cmp r4, #0 + addne r0, r3, #0x300 +#endif + movne r1, #6 + strneh r1, [r0, #0xe6] + cmp r6, #0 + beq _02040EC8 + ldr r0, _02040F94 ; =_020AFE7C + ldr r0, [r0, #0xc] + cmp r0, #1 + cmpne r0, #5 + bne _02040EC8 + cmp r4, #0 + ldrne r0, _02040F94 ; =_020AFE7C + movne r1, #0 + ldrne r0, [r0, #8] + addne r0, r0, #0x300 + strneh r1, [r0, #0xe6] + ldr r0, _02040F94 ; =_020AFE7C + ldr r1, [r0, #0xc] + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _02040E34 +_02040DDC: ; jump table + b _02040DEC ; case 0 + b _02040DEC ; case 1 + b _02040DEC ; case 2 + b _02040DEC ; case 3 +_02040DEC: + ldrsh r0, [r0, #2] + bl sub_02041194 + cmp r0, #0 + bne _02040E10 + ldr r0, _02040F94 ; =_020AFE7C + ldrsh r0, [r0, #2] + bl sub_02041364 + cmp r0, #0 + beq _02040E34 +_02040E10: + ldr r0, _02040F9C ; =0x00003F07 + mov r1, #0x100 + bl sub_02017C74 + ldr r0, _02040F94 ; =_020AFE7C + ldr r0, [r0, #8] + ldrsb r0, [r0] + bl sub_02030EF0 + mov r0, #8 + b _02040F88 +_02040E34: + ldr r0, _02040F94 ; =_020AFE7C + ldrsh r0, [r0, #2] + bl sub_02041194 + cmp r0, #0 + beq _02040E88 + ldr r0, _02040F94 ; =_020AFE7C + ldr r1, [r0, #0xc] + cmp r1, #5 + ldreqb r0, [r0] + cmpeq r0, #0 + bne _02040E6C + ldr r0, _02040FA4 ; =0x00001308 + bl PlaySeByIdVolumeWrapper + b _02040E78 +_02040E6C: + ldr r0, _02040F9C ; =0x00003F07 + mov r1, #0x100 + bl sub_02017C74 +_02040E78: + ldr r0, _02040F94 ; =_020AFE7C + ldrsh r0, [r0, #2] + bl sub_020412B0 + b _02040EC0 +_02040E88: + ldr r0, _02040F94 ; =_020AFE7C + ldrsh r0, [r0, #2] + bl sub_02041364 + cmp r0, #0 + beq _02040EB8 + ldr r0, _02040F9C ; =0x00003F07 + mov r1, #0x100 + bl sub_02017C74 + ldr r0, _02040F94 ; =_020AFE7C + ldrsh r0, [r0, #2] + bl sub_02041394 + b _02040EC0 +_02040EB8: + mov r0, #2 + bl PlaySeVolumeWrapper +_02040EC0: + bl sub_02041178 + b _02040F84 +_02040EC8: + cmp r4, #0 + beq _02040EEC + mov r0, #0 + bl PlaySeVolumeWrapper + ldr r0, _02040F94 ; =_020AFE7C + ldr r0, [r0, #8] + ldrsb r0, [r0] + bl sub_02030EF0 + b _02040F18 +_02040EEC: + ldrh r0, [sp, #0xa] + tst r0, #0x400 + mov r0, #0 + beq _02040F14 + bl PlaySeVolumeWrapper + ldr r0, _02040F94 ; =_020AFE7C + ldr r0, [r0, #8] + ldrsb r0, [r0] + bl sub_02030EF0 + b _02040F18 +_02040F14: + bl PlaySeVolumeWrapper +_02040F18: + ldr r0, _02040F94 ; =_020AFE7C + mov r1, #2 + ldr r3, [r0, #8] + mov r2, #0 + str r1, [r3, #0x3ec] + ldr r3, [r0, #8] + str r1, [r3, #0x3f0] + ldr r6, [r0, #8] + ldrsh r3, [r0, #2] + ldr r5, [r6, #0x10] + ldrsb r0, [r6] + add r3, r5, r3, lsl #4 + add r3, r3, #4 + bl sub_02030978 + ldr r0, _02040F94 ; =_020AFE7C + ldr r0, [r0, #8] + ldrsb r0, [r0] + bl UpdateWindow + cmp r4, #0 + bne _02040F84 + mov r0, #2 + b _02040F88 +_02040F70: + mov r0, #2 + bl PlaySeVolumeWrapper + cmp r4, #0 + beq _02040F84 + bl sub_02041178 +_02040F84: + mov r0, #0 +_02040F88: + add sp, sp, #0x34 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02040F90: .word _022AAE2A +_02040F94: .word _020AFE7C +_02040F98: .word _0209C928 +_02040F9C: .word 0x00003F07 +_02040FA0: .word 0x00003F04 +_02040FA4: .word 0x00001308 + arm_func_end sub_020407EC + + arm_func_start sub_02040FA8 +sub_02040FA8: ; 0x02040FA8 + ldr r0, _02040FF4 ; =_022AADFC + ldrb r0, [r0, #0x2c] + cmp r0, #0 + beq _02040FD0 + ldr r0, _02040FF8 ; =_020AFE7C + ldr r1, _02040FFC ; =_022AAE2A + ldrsh r0, [r0, #2] + ldrb r0, [r1, r0, lsl #3] + tst r0, #8 + b _02040FE4 +_02040FD0: + ldr r0, _02040FF8 ; =_020AFE7C + ldr r1, _02040FFC ; =_022AAE2A + ldrsh r0, [r0, #2] + ldrb r0, [r1, r0, lsl #3] + tst r0, #4 +_02040FE4: + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_02040FF4: .word _022AADFC +_02040FF8: .word _020AFE7C +_02040FFC: .word _022AAE2A + arm_func_end sub_02040FA8 + + arm_func_start sub_02041000 +sub_02041000: ; 0x02041000 + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_02041178 + ldr r2, _0204108C ; =_022AADFC + ldrb r0, [r2, #0x2c] + cmp r0, #0 + beq _02041078 + ldr r1, _02041090 ; =_022AAE2A + ldrb r0, [r1, r4, lsl #3] + tst r0, #8 + eorne r0, r0, #8 + strneb r0, [r1, r4, lsl #3] + ldmneia sp!, {r4, pc} + mov r3, #0 +_02041038: + add r0, r2, r3, lsl #3 + ldrb r0, [r0, #0x2e] + tst r0, #8 + bne _02041050 + cmp r3, r4 + bne _02041060 +_02041050: + add r1, r2, r3, lsl #3 + ldrb r0, [r1, #0x2e] + eor r0, r0, #8 + strb r0, [r1, #0x2e] +_02041060: + add r0, r3, #1 + mov r0, r0, lsl #0x10 + mov r3, r0, asr #0x10 + cmp r3, #4 + blt _02041038 + ldmia sp!, {r4, pc} +_02041078: + ldr r1, _02041090 ; =_022AAE2A + ldrb r0, [r1, r4, lsl #3] + eor r0, r0, #4 + strb r0, [r1, r4, lsl #3] + ldmia sp!, {r4, pc} + .align 2, 0 +_0204108C: .word _022AADFC +_02041090: .word _022AAE2A + arm_func_end sub_02041000 + + arm_func_start sub_02041094 +sub_02041094: ; 0x02041094 + ldr r0, _020410A0 ; =_020AFE7C + ldrsh r0, [r0, #2] + bx lr + .align 2, 0 +_020410A0: .word _020AFE7C + arm_func_end sub_02041094 + + arm_func_start sub_020410A4 +sub_020410A4: ; 0x020410A4 + ldr r1, _0204114C ; =_020AFE7C + cmp r0, #0 + strh r0, [r1, #2] + movlt r0, #0 + strlth r0, [r1, #2] + ldr r0, _0204114C ; =_020AFE7C + ldrsh r2, [r0, #2] + cmp r2, #4 + blt _02041100 + ldr r1, [r0, #0xc] + cmp r1, #2 + cmpne r1, #3 + arm_func_end sub_020410A4 + + arm_func_start sub_020410D4 +sub_020410D4: ; 0x020410D4 + cmpne r1, #6 + arm_func_end sub_020410D4 + + arm_func_start sub_020410D8 +sub_020410D8: ; 0x020410D8 + bne _020410F8 + arm_func_end sub_020410D8 + + arm_func_start sub_020410DC +sub_020410DC: ; 0x020410DC + cmp r2, #4 + ldreq r0, _0204114C ; =_020AFE7C + moveq r1, #4 + ldrne r0, _0204114C ; =_020AFE7C + movne r1, #0 + strh r1, [r0, #2] + bx lr +_020410F8: + mov r1, #3 + strh r1, [r0, #2] +_02041100: + ldr r2, _02041150 ; =_022AADFC + ldr r0, _0204114C ; =_020AFE7C +_02041108: + ldrsh r1, [r0, #2] + cmp r1, #0 + ldrlt r0, _0204114C ; =_020AFE7C + movlt r1, #0 + strlth r1, [r0, #2] + bxlt lr + add r1, r2, r1, lsl #3 + ldrb r1, [r1, #0x2e] + tst r1, #1 + beq _02041138 + tst r1, #2 + bxeq lr +_02041138: + ldrsh r1, [r0, #2] + sub r1, r1, #1 + strh r1, [r0, #2] + b _02041108 +_02041148: + bx lr + .align 2, 0 +_0204114C: .word _020AFE7C +_02041150: .word _022AADFC + arm_func_end sub_020410DC + + arm_func_start sub_02041154 +sub_02041154: ; 0x02041154 + cmp r0, #4 + ldreq r0, _02041170 ; =_022AADFC + ldrne r1, _02041174 ; =_022AAE2E + ldreqh r0, [r0, #0x54] + movne r0, r0, lsl #3 + ldrneh r0, [r1, r0] + bx lr + .align 2, 0 +_02041170: .word _022AADFC +_02041174: .word _022AAE2E + arm_func_end sub_02041154 + + arm_func_start sub_02041178 +sub_02041178: ; 0x02041178 + ldr r0, _02041190 ; =_020AFE7C + ldr r1, [r0, #8] + cmp r1, #0 + movne r0, #1 + strneb r0, [r1, #0x3e5] + bx lr + .align 2, 0 +_02041190: .word _020AFE7C + arm_func_end sub_02041178 + + arm_func_start sub_02041194 +sub_02041194: ; 0x02041194 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r4, _020412AC ; =_022AAE2A + mov r6, r0 + add r0, r4, r6, lsl #3 + ldrh r0, [r0, #4] + bl IsNot2TurnsMoveOrSketch + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + add r5, r6, #1 + mov r7, #0 + mov r8, #1 + b _0204129C +_020411C8: + ldrb r0, [r4, r5, lsl #3] + tst r0, #1 + movne r0, r8 + moveq r0, r7 + tst r0, #0xff + beq _020412A4 + add r0, r4, r5, lsl #3 + ldrh r0, [r0, #4] + bl IsNot2TurnsMoveOrSketch + cmp r0, #0 + beq _020412A4 + ldrb r0, [r4, r5, lsl #3] + tst r0, #2 + bne _02041298 + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + b _02041228 +_02041210: + ldrb r1, [r4, r0, lsl #3] + tst r1, #2 + beq _02041230 + add r0, r0, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 +_02041228: + cmp r0, #4 + blt _02041210 +_02041230: + mov r1, r6, lsl #0x10 + mov r5, r1, asr #0x10 + b _02041288 +_0204123C: + add r1, r5, #1 + mov r1, r1, lsl #0x10 + mov r3, r1, asr #0x10 + add r1, r4, r5, lsl #3 + ldrh r2, [r1, #4] + b _02041274 +_02041254: + add r1, r4, r3, lsl #3 + ldrh r1, [r1, #4] + cmp r2, r1 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + add r1, r3, #1 + mov r1, r1, lsl #0x10 + mov r3, r1, asr #0x10 +_02041274: + cmp r3, r0 + blt _02041254 + add r1, r5, #1 + mov r1, r1, lsl #0x10 + mov r5, r1, asr #0x10 +_02041288: + cmp r5, r0 + blt _0204123C + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02041298: + add r5, r5, #1 +_0204129C: + cmp r5, #4 + blt _020411C8 +_020412A4: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_020412AC: .word _022AAE2A + arm_func_end sub_02041194 + + arm_func_start sub_020412B0 +sub_020412B0: ; 0x020412B0 + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_02041194 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + add r1, r4, #1 + ldr r0, _02041358 ; =_022AAE2A + mov r3, #0 + mov ip, #1 + b _0204133C +_020412D8: + ldrb r2, [r0, r1, lsl #3] + tst r2, #1 + movne r2, ip + moveq r2, r3 + tst r2, #0xff + beq _02041344 + ldrb r2, [r0, r1, lsl #3] + tst r2, #2 + bne _02041338 + ldr r2, _0204135C ; =_022AADFC + ldr lr, _02041358 ; =_022AAE2A + ldrb r2, [r2, #0x2c] + cmp r2, #0 + ldrne r3, _02041358 ; =_022AAE2A + ldrneb r2, [r3, r1, lsl #3] + bicne r2, r2, #8 + strneb r2, [r3, r1, lsl #3] + ldrb ip, [lr, r1, lsl #3] + ldr r2, _02041360 ; =_020AFE7C + mov r3, #1 + strb r3, [r2] + bic r2, ip, #4 + strb r2, [lr, r1, lsl #3] + b _02041344 +_02041338: + add r1, r1, #1 +_0204133C: + cmp r1, #4 + blt _020412D8 +_02041344: + ldrb r2, [r0, r1, lsl #3] + orr r2, r2, #2 + strb r2, [r0, r1, lsl #3] + bl sub_02041178 + ldmia sp!, {r4, pc} + .align 2, 0 +_02041358: .word _022AAE2A +_0204135C: .word _022AADFC +_02041360: .word _020AFE7C + arm_func_end sub_020412B0 + + arm_func_start sub_02041364 +sub_02041364: ; 0x02041364 + cmp r0, #3 + ldr r1, _02041390 ; =_022AAE2A + moveq r0, #0 + bxeq lr + add r0, r0, #1 + ldrb r0, [r1, r0, lsl #3] + tst r0, #2 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_02041390: .word _022AAE2A + arm_func_end sub_02041364 + + arm_func_start sub_02041394 +sub_02041394: ; 0x02041394 + stmdb sp!, {r4, lr} + mov r4, r0 + bl sub_02041364 + cmp r0, #0 + ldmeqia sp!, {r4, pc} + add ip, r4, #1 + ldr r3, _020413FC ; =_022AAE2A + mov r1, #0 + mov r2, #1 + b _020413EC +_020413BC: + ldrb r0, [r3, ip, lsl #3] + tst r0, #1 + movne r0, r2 + moveq r0, r1 + tst r0, #0xff + beq _020413F4 + ldrb r0, [r3, ip, lsl #3] + tst r0, #2 + beq _020413F4 + eor r0, r0, #2 + strb r0, [r3, ip, lsl #3] + add ip, ip, #1 +_020413EC: + cmp ip, #4 + blt _020413BC +_020413F4: + bl sub_02041178 + ldmia sp!, {r4, pc} + .align 2, 0 +_020413FC: .word _022AAE2A + arm_func_end sub_02041394 + + arm_func_start sub_02041400 +sub_02041400: ; 0x02041400 + ldr r0, _02041410 ; =_020AFE7C + mov r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_02041410: .word _020AFE7C + arm_func_end sub_02041400 + + arm_func_start sub_02041414 +sub_02041414: ; 0x02041414 + ldr r0, _02041420 ; =_020AFE7C + ldrb r0, [r0] + bx lr + .align 2, 0 +_02041420: .word _020AFE7C + arm_func_end sub_02041414 + + arm_func_start sub_02041424 +sub_02041424: ; 0x02041424 + cmp r0, #0 + movgt r0, #1 + bxgt lr + mov ip, #1 + ldr r3, _02041480 ; =_022AAE2A + mov r1, #0 + mov r2, ip + b _02041470 +_02041444: + ldrb r0, [r3, ip, lsl #3] + tst r0, #1 + movne r0, r2 + moveq r0, r1 + tst r0, #0xff + beq _02041478 + ldrb r0, [r3, ip, lsl #3] + tst r0, #2 + moveq r0, #1 + bxeq lr + add ip, ip, #1 +_02041470: + cmp ip, #4 + blt _02041444 +_02041478: + mov r0, #0 + bx lr + .align 2, 0 +_02041480: .word _022AAE2A + arm_func_end sub_02041424 + + arm_func_start sub_02041484 +sub_02041484: ; 0x02041484 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x20 + ldr r1, _02041594 ; =_020AFE7C + ldr r0, _02041598 ; =_022AAE2A + ldrsh r2, [r1, #2] + mov r1, #0 + mov r3, r1 + strb r1, [r0, r2, lsl #3] + add r5, r2, #1 + mov r4, #1 + b _020414DC +_020414B0: + ldrb r2, [r0, r5, lsl #3] + tst r2, #1 + movne r2, r4 + moveq r2, r3 + tst r2, #0xff + beq _020414E4 + ldrb r2, [r0, r5, lsl #3] + tst r2, #2 + beq _020414E4 + strb r1, [r0, r5, lsl #3] + add r5, r5, #1 +_020414DC: + cmp r5, #4 + blt _020414B0 +_020414E4: + mov r6, #0 + mov r7, r6 + mov r4, r6 + mov r5, #1 + add lr, sp, #0 +_020414F8: + ldrb r1, [r0, r7, lsl #3] + tst r1, #1 + movne r1, r5 + moveq r1, r4 + tst r1, #0xff + beq _02041530 + add ip, r0, r7, lsl #3 + add r3, lr, r6, lsl #3 + mov r2, #4 +_0204151C: + ldrh r1, [ip], #2 + subs r2, r2, #1 + strh r1, [r3], #2 + bne _0204151C + add r6, r6, #1 +_02041530: + add r7, r7, #1 + cmp r7, #4 + blt _020414F8 + mov r2, #0 + add r1, sp, #0 + b _02041550 +_02041548: + strb r2, [r1, r6, lsl #3] + add r6, r6, #1 +_02041550: + cmp r6, #4 + blt _02041548 + mov r4, #0 + add lr, sp, #0 +_02041560: + add ip, lr, r4, lsl #3 + add r3, r0, r4, lsl #3 + mov r2, #4 +_0204156C: + ldrh r1, [ip], #2 + subs r2, r2, #1 + strh r1, [r3], #2 + bne _0204156C + add r4, r4, #1 + cmp r4, #4 + blt _02041560 + bl sub_02041178 + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02041594: .word _020AFE7C +_02041598: .word _022AAE2A + arm_func_end sub_02041484 + + arm_func_start sub_0204159C +sub_0204159C: ; 0x0204159C + ldr r0, _020415B8 ; =_022AADFC + ldrb r0, [r0, #0x58] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_020415B8: .word _022AADFC + arm_func_end sub_0204159C + + arm_func_start sub_020415BC +sub_020415BC: ; 0x020415BC + mov r3, #0 + ldr ip, _02041610 ; =_022AAE2A + mov r1, r3 + mov r2, #1 + b _020415F4 +_020415D0: + ldrb r0, [ip, r3, lsl #3] + tst r0, #1 + movne r0, r2 + moveq r0, r1 + tst r0, #0xff + beq _020415FC + add r0, r3, #1 + mov r0, r0, lsl #0x10 + mov r3, r0, asr #0x10 +_020415F4: + cmp r3, #4 + blt _020415D0 +_020415FC: + cmp r3, #4 + movge r0, #1 + movlt r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_02041610: .word _022AAE2A + arm_func_end sub_020415BC + + arm_func_start sub_02041614 +sub_02041614: ; 0x02041614 + stmdb sp!, {r3, r4, r5, lr} + mov r5, #0 + ldr r4, _020416B0 ; =_022AAE2A + mov r2, r5 + mov r3, #1 + b _02041694 +_0204162C: + ldrb r1, [r4, r5, lsl #3] + tst r1, #1 + movne r1, r3 + moveq r1, r2 + tst r1, #0xff + bne _02041688 + mov r1, #5 + strb r1, [r4, r5, lsl #3] + add r2, r4, r5, lsl #3 + strh r0, [r2, #4] + mov r1, #0 + ldr r0, _020416B4 ; =_022AADFC + strb r1, [r2, #7] + ldrsh r0, [r0, #0x5a] + ldr r1, _020416B8 ; =_022AAE58 + bl GetPpIncrease + add r1, r4, r5, lsl #3 + strh r0, [r1, #2] + mov r0, r1 + bl GetMaxPp + add r1, r4, r5, lsl #3 + strb r0, [r1, #6] + b _0204169C +_02041688: + add r1, r5, #1 + mov r1, r1, lsl #0x10 + mov r5, r1, asr #0x10 +_02041694: + cmp r5, #4 + blt _0204162C +_0204169C: + cmp r5, #4 + mvnge r5, #0 + mov r0, r5, lsl #0x10 + mov r0, r0, asr #0x10 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_020416B0: .word _022AAE2A +_020416B4: .word _022AADFC +_020416B8: .word _022AAE58 + arm_func_end sub_02041614 + + arm_func_start sub_020416BC +sub_020416BC: ; 0x020416BC + stmdb sp!, {r3, lr} + mov r1, r0 + ldr r0, _020416D8 ; =_022AAE2A + bl sub_02013F58 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + ldmia sp!, {r3, pc} + .align 2, 0 +_020416D8: .word _022AAE2A + arm_func_end sub_020416BC + + arm_func_start sub_020416DC +sub_020416DC: ; 0x020416DC + stmdb sp!, {r3, lr} + mov r1, r0 + ldr r0, _020416F8 ; =_022AAE2A + bl sub_02013E54 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + ldmia sp!, {r3, pc} + .align 2, 0 +_020416F8: .word _022AAE2A + arm_func_end sub_020416DC + + arm_func_start sub_020416FC +sub_020416FC: ; 0x020416FC + stmdb sp!, {r3, lr} + ldr r0, _02041720 ; =_020AFE7C + ldr r0, [r0, #8] + ldrsb r0, [r0] + bl sub_020307EC + mov r0, #1 + bl sub_0204027C + bl sub_02041178 + ldmia sp!, {r3, pc} + .align 2, 0 +_02041720: .word _020AFE7C + arm_func_end sub_020416FC + + arm_func_start sub_02041724 +sub_02041724: ; 0x02041724 + stmdb sp!, {r3, lr} + bl IsDeoxys + cmp r0, #0 + ldrne r0, _02041748 ; =_022AADFC + movne r1, #1 + ldreq r0, _02041748 ; =_022AADFC + moveq r1, #0 + strb r1, [r0, #0x58] + ldmia sp!, {r3, pc} + .align 2, 0 +_02041748: .word _022AADFC + arm_func_end sub_02041724 + + arm_func_start SprintfStatic__0204174C +SprintfStatic__0204174C: ; 0x0204174C + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, lr} + add r2, sp, #0xc + bic r2, r2, #3 + ldr r1, [sp, #0xc] + add r2, r2, #4 + bl vsprintf + ldmia sp!, {r3, lr} + add sp, sp, #0x10 + bx lr + arm_func_end SprintfStatic__0204174C + + arm_func_start sub_02041774 +sub_02041774: ; 0x02041774 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0x2bc + mov r1, #8 + bl MemAlloc + ldr r1, _020417A4 ; =_020AFE8C + mvn r2, #1 + str r0, [r1] + str r4, [r0, #4] + ldr r0, [r1] + strb r2, [r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_020417A4: .word _020AFE8C + arm_func_end sub_02041774 + + arm_func_start sub_020417A8 +sub_020417A8: ; 0x020417A8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r6, r1 + mov r4, r2 + mov r7, r0 + cmp r4, r6 + mvnge r0, #1 + ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldrb r0, [r7, r4, lsl #3] + tst r0, #1 + mvneq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, r3 + bl sub_02041774 + ldr r0, _0204185C ; =_020AFE8C + add r1, r7, r4, lsl #3 + ldr r0, [r0] + mov r2, #8 + add r0, r0, #8 + bl memcpy + add r5, r4, #1 + mov r4, #1 + mov sb, #8 + ldr r8, _0204185C ; =_020AFE8C + b _02041840 +_02041808: + ldrb r0, [r7, r5, lsl #3] + mov r1, r5, lsl #3 + tst r0, #1 + beq _0204183C + tst r0, #2 + beq _02041848 + ldr r0, [r8] + mov r2, sb + add r0, r0, #8 + add r0, r0, r4, lsl #3 + add r1, r7, r1 + bl memcpy + add r4, r4, #1 +_0204183C: + add r5, r5, #1 +_02041840: + cmp r5, r6 + blt _02041808 +_02041848: + ldr r0, _0204185C ; =_020AFE8C + ldr r0, [r0] + strh r4, [r0, #0x28] + bl sub_020418A4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0204185C: .word _020AFE8C + arm_func_end sub_020417A8 + + arm_func_start sub_02041860 +sub_02041860: ; 0x02041860 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, r1 + bl sub_02041774 + ldr r0, _020418A0 ; =_020AFE8C + mov r1, r4 + ldr r0, [r0] + mov r2, #8 + add r0, r0, #8 + bl memcpy + ldr r0, _020418A0 ; =_020AFE8C + mov r1, #1 + ldr r0, [r0] + strh r1, [r0, #0x28] + bl sub_020418A4 + ldmia sp!, {r4, pc} + .align 2, 0 +_020418A0: .word _020AFE8C + arm_func_end sub_02041860 + + arm_func_start sub_020418A4 +sub_020418A4: ; 0x020418A4 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r7, #0 + ldr r6, _020419F0 ; =0x000008D4 + ldr r5, _020419F4 ; =_020AFE8C + mov r4, #0x50 + b _02041950 +_020418C0: + ldr r1, [r5] + mul r8, r7, r4 + add r0, r1, r7, lsl #3 + ldrh r0, [r0, #0xc] + add r1, r1, r7, lsl #1 + add r1, r1, #0x200 + strh r6, [r1, #0xac] + ldr r2, [r5] +#if defined(EUROPE) + add r1, r0, #0x3a4 +#elif defined(JAPAN) + add r1, r0, #0x9f +#else + add r1, r0, #0xa2 +#endif + add r2, r2, r8 + str r0, [r2, #0x3c] + ldr r2, [r5] +#if defined(EUROPE) + add r3, r1, #0x2400 +#elif defined(JAPAN) + add r3, r1, #0x3f00 +#else + add r3, r1, #0x2700 +#endif + add r1, r2, r7, lsl #1 + add r1, r1, #0x200 + strh r3, [r1, #0xb4] + ldr r1, [r5] + add r1, r1, r8 + str r0, [r1, #0x17c] + ldr r0, [r5] + add r0, r0, #8 + add r0, r0, r7, lsl #3 + bl GetMoveRangeId + ldr r1, [r5] + add r1, r1, r8 + str r0, [r1, #0x180] + ldr r0, [r5] + add r0, r0, #8 + add r0, r0, r7, lsl #3 + bl GetMoveType + ldr r2, [r5] + add r1, r7, #1 + add r2, r2, r8 + mov r1, r1, lsl #0x10 + str r0, [r2, #0x184] + mov r7, r1, asr #0x10 +_02041950: + ldr r2, [r5] + ldrsh r3, [r2, #0x28] + cmp r7, r3 + blt _020418C0 + cmp r3, #1 + ble _020419A0 + add r0, r2, #0x2ac + str r0, [sp] + add r0, r2, #0x2c + str r0, [sp, #4] + add r4, r2, #0x2b4 + str r4, [sp, #8] + add r4, r2, #0x16c + ldr r0, _020419F8 ; =_0209C97C + ldr r1, _020419FC ; =0x00001013 + mov r2, #0 + str r4, [sp, #0xc] + bl CreateScrollBoxMulti + ldr r1, _020419F4 ; =_020AFE8C + b _020419D4 +_020419A0: + add r0, r2, #0x2c + str r0, [sp] + add r1, r2, #0x200 + ldrh r3, [r1, #0xb4] + add r2, r2, #0x16c + ldr r0, _020419F8 ; =_0209C97C + str r3, [sp, #4] + str r2, [sp, #8] + ldrh r3, [r1, #0xac] + ldr r1, _020419FC ; =0x00001013 + mov r2, #0 + bl CreateScrollBoxSingle + ldr r1, _020419F4 ; =_020AFE8C +_020419D4: + ldr r1, [r1] + strb r0, [r1] + ldr r0, _020419F4 ; =_020AFE8C + ldr r0, [r0] + ldrsb r0, [r0] + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +#ifdef JAPAN +_020419F0: .word 0x00001D2C +#else +_020419F0: .word 0x000008D4 +#endif +_020419F4: .word _020AFE8C +_020419F8: .word _0209C97C +_020419FC: .word 0x00001013 + arm_func_end sub_020418A4 + + arm_func_start sub_02041A00 +sub_02041A00: ; 0x02041A00 + ldr r0, _02041A10 ; =_020AFE8C + ldr ip, _02041A14 ; =MemFree + ldr r0, [r0] + bx ip + .align 2, 0 +_02041A10: .word _020AFE8C +_02041A14: .word MemFree + arm_func_end sub_02041A00 + + arm_func_start sub_02041A18 +sub_02041A18: ; 0x02041A18 + stmdb sp!, {r3, lr} + ldr r0, _02041A3C ; =_020AFE8C + ldr r0, [r0] + ldrsb r0, [r0] + bl IsScrollBoxActive + cmp r0, #0 + movne r0, #0 + moveq r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02041A3C: .word _020AFE8C + arm_func_end sub_02041A18 + + arm_func_start PrintIqSkillsMenu +PrintIqSkillsMenu: ; 0x02041A40 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0xa0 + mov r7, r0 + mov r6, r1 + add r0, sp, #8 + mov r1, #0x98 + mov r5, r2 + mov r4, r3 + bl MemZero + mov r1, #0xd +#ifdef JAPAN + ldr r0, _02041ED4 ; =0x00001586 +#else + rsb r0, r1, #0xa80 +#endif + str r1, [sp, #0xc] + mov r1, #0 + str r1, [sp, #8] + mov r1, #0x10 + strh r0, [sp, #0x10] + str r1, [sp, #0x14] + mov r0, #0x840 + mov r1, #8 + bl MemAlloc + ldr r2, _02041B6C ; =_020AFE90 + mov r1, #0x840 + str r0, [r2, #4] + bl MemZero + ldr r3, _02041B6C ; =_020AFE90 + mov r1, r7 + ldr r0, [r3, #4] + mov r2, r5 + str r6, [r0, #0x790] + ldr r0, [r3, #4] + add r0, r0, #0x700 + strh r7, [r0, #0x94] + ldr r0, [r3, #4] + str r5, [r0, #0x798] + ldr r0, [r3, #4] + add r0, r0, #0x64 + bl GetLearnableIqSkills + ldr r3, _02041B6C ; =_020AFE90 + ldr r1, _02041B70 ; =0x80401C33 + ldr r2, [r3, #4] + mov r5, #8 + add r2, r2, #0x700 + strh r0, [r2, #0x8c] + ldr r2, [r3, #4] + ldr r0, _02041B74 ; =_0209C98C + add r2, r2, #0x700 + ldrsh r6, [r2, #0x8c] + ldr r3, _02041B78 ; =GetCheckIqMenuSkillString + add r2, sp, #8 + str r6, [sp] + str r5, [sp, #4] + bl CreateAdvancedMenu + ldr r1, _02041B6C ; =_020AFE90 + mov r2, #0 + ldr r3, [r1, #4] + strb r0, [r3] + ldr r0, [r1, #4] + str r2, [r0, #0x6f0] + ldr r0, [r1, #4] + str r2, [r0, #0x6ec] + ldr r0, [r1, #4] + strb r4, [r0, #0x83c] + ldr r0, [r1, #4] + add r0, r0, #0x700 + strh r2, [r0, #0x8e] + ldr r0, [r1, #4] + add r0, r0, #0x14 + bl InitPreprocessorArgs + ldr r0, _02041B6C ; =_020AFE90 + ldr r1, [r0, #4] + add r0, r1, #0x34 + add r0, r0, #0x800 + str r0, [r1, #0x7fc] + add sp, sp, #0xa0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +#ifdef JAPAN +_02041ED4: .word 0x00001586 +#endif +_02041B6C: .word _020AFE90 +_02041B70: .word 0x80401C33 +_02041B74: .word _0209C98C +_02041B78: .word GetCheckIqMenuSkillString + arm_func_end PrintIqSkillsMenu + + arm_func_start sub_02041B7C +sub_02041B7C: ; 0x02041B7C + stmdb sp!, {r4, lr} + sub sp, sp, #0xf8 + ldr r1, _020420BC ; =_020AFE90 + ldr r3, [r1, #4] + ldr r0, [r3, #0x6f0] + cmp r0, #8 + addls pc, pc, r0, lsl #2 + b _020420B0 +_02041B9C: ; jump table + b _02041BC0 ; case 0 + b _02041DB0 ; case 1 + b _02041E40 ; case 2 + b _02041EBC ; case 3 + b _02041F30 ; case 4 + b _02041EE4 ; case 5 + b _02041FA4 ; case 6 + b _02041FE8 ; case 7 + b _020420A0 ; case 8 +_02041BC0: + ldrsb r0, [r3] + bl IsAdvancedMenuActive2 + cmp r0, #0 + bne _02041CF8 + ldr r0, _020420BC ; =_020AFE90 + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl GetAdvancedMenuResult + ldr r2, _020420BC ; =_020AFE90 + mvn r1, #0 + ldr r3, [r2, #4] + str r0, [r3, #0x838] + ldr r2, [r2, #4] + ldr r0, [r2, #0x838] + cmp r0, r1 + moveq r0, #8 + streq r0, [r2, #0x6f0] + beq _020420B0 + mov r0, #0 + bl PlaySeVolumeWrapper + ldr r0, _020420BC ; =_020AFE90 + ldr r2, _020420C0 ; =_0209C9B0 + ldrsb r3, [r0] + ldr r1, [r0, #4] + ldr r2, [r2, r3, lsl #3] + str r2, [r1, #0x79c] + ldr r3, [r0, #4] + ldr r2, [r3, #0x838] + ldrb r1, [r3, #0x83c] + add r2, r3, r2 + ldrb r2, [r2, #0x64] + cmp r1, #0 + bne _02041C60 + cmp r2, #0x18 + cmpne r2, #0x1b + beq _02041C60 + add r1, r2, #0xc8 + and r1, r1, #0xff + cmp r1, #1 + bhi _02041C7C +_02041C60: + mov r1, #3 + ldr r0, _020420BC ; =_020AFE90 + strb r1, [r3, #0x834] + ldr r0, [r0, #4] + mov r1, #0 + strb r1, [r0, #0x835] + b _02041C8C +_02041C7C: + mov r1, #0 + strb r1, [r3, #0x834] + ldr r0, [r0, #4] + strb r1, [r0, #0x835] +_02041C8C: + ldr r0, _020420BC ; =_020AFE90 + mov r1, #0x98 + ldr r0, [r0, #4] + add r0, r0, #0x39c + add r0, r0, #0x400 + bl MemZero + ldr r2, _020420BC ; =_020AFE90 + ldr r3, _020420C4 ; =_0209C9AC + ldr r4, [r2, #4] + mov r1, #0 + add r0, r4, #0x34 + add r0, r0, #0x800 + str r0, [r4, #0x7fc] + str r3, [sp] + str r1, [sp, #4] + str r1, [sp, #8] + ldr r2, [r2, #4] + ldr r0, _020420C8 ; =_0209C99C + add r3, r2, #0x39c + ldr r2, _020420CC ; =0x80000233 + add r3, r3, #0x400 + bl sub_02046A20 + ldr r0, _020420BC ; =_020AFE90 + mov r1, #1 + ldr r0, [r0, #4] + str r1, [r0, #0x6f0] + b _020420B0 +_02041CF8: + add r1, sp, #0xc + mov r0, #0 + bl GetPressedButtons + ldrh r0, [sp, #0xc] + tst r0, #8 + beq _02041D54 + ldr r0, _020420D0 ; =0x00003F04 + bl PlaySeByIdVolumeWrapper + ldr r0, _020420BC ; =_020AFE90 + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl sub_0202C1E4 + ldr r0, _020420BC ; =_020AFE90 + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl GetAdvancedMenuResult + ldr r1, _020420BC ; =_020AFE90 + mov r2, #3 + ldr r3, [r1, #4] + str r0, [r3, #0x838] + ldr r0, [r1, #4] + str r2, [r0, #0x6f0] + b _020420B0 +_02041D54: + tst r0, #4 + beq _020420B0 + ldr r0, _020420BC ; =_020AFE90 + ldr r1, [r0, #4] + ldrb r0, [r1, #0x83c] + cmp r0, #0 + beq _02041D7C + ldr r0, _020420D4 ; =0x00003F03 + bl PlaySeByIdVolumeWrapper + b _020420B0 +_02041D7C: + ldrsb r0, [r1] + bl sub_0202C1E4 + ldr r0, _020420BC ; =_020AFE90 + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl GetAdvancedMenuResult + ldr r1, _020420BC ; =_020AFE90 + mov r2, #2 + ldr r3, [r1, #4] + str r0, [r3, #0x838] + ldr r0, [r1, #4] + str r2, [r0, #0x6f0] + b _020420B0 +_02041DB0: + bl sub_02046B04 + mov r4, r0 + bl sub_02046BA0 + ldr r1, _020420BC ; =_020AFE90 + add r2, r4, #2 + strb r0, [r1] + cmp r2, #4 + addls pc, pc, r2, lsl #2 + b _020420B0 +_02041DD4: ; jump table + b _02041DF0 ; case 0 + b _020420B0 ; case 1 + b _02041E14 ; case 2 + b _02041E24 ; case 3 + b _02041DE8 ; case 4 +_02041DE8: + mov r0, #0 + bl PlaySeVolumeWrapper +_02041DF0: + ldr r0, _020420BC ; =_020AFE90 + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl ResumeAdvancedMenu + ldr r0, _020420BC ; =_020AFE90 + mov r1, #0 + ldr r0, [r0, #4] + str r1, [r0, #0x6f0] + b _020420B0 +_02041E14: + ldr r0, [r1, #4] + mov r1, #2 + str r1, [r0, #0x6f0] + b _020420B0 +_02041E24: + mov r0, #0 + bl PlaySeVolumeWrapper + ldr r0, _020420BC ; =_020AFE90 + mov r1, #3 + ldr r0, [r0, #4] + str r1, [r0, #0x6f0] + b _020420B0 +_02041E40: + ldr r1, [r3, #0x838] + add r2, r3, #0x64 + ldrb r0, [r2, r1] + cmp r0, #0x18 + bne _02041E60 + mov r0, #2 + bl PlaySeVolumeWrapper + b _02041E98 +_02041E60: + cmp r0, #0x1b + beq _02041E78 + add r0, r0, #0xc8 + and r0, r0, #0xff + cmp r0, #1 + bhi _02041E84 +_02041E78: + mov r0, #2 + bl PlaySeVolumeWrapper + b _02041E98 +_02041E84: + ldrb r1, [r2, r1] + ldr r0, [r3, #0x790] + bl DisableIqSkill + ldr r0, _020420D8 ; =0x00003F07 + bl PlaySeByIdVolumeWrapper +_02041E98: + ldr r0, _020420BC ; =_020AFE90 + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl ResumeAdvancedMenu + ldr r0, _020420BC ; =_020AFE90 + mov r1, #0 + ldr r0, [r0, #4] + str r1, [r0, #0x6f0] + b _020420B0 +_02041EBC: + ldrsb r0, [r3] + bl sub_0202812C + ldr r1, _020420BC ; =_020AFE90 + mov r2, #5 + ldr r0, [r1, #4] + add r0, r0, #0x700 + strh r2, [r0, #0x8e] + ldr r0, [r1, #4] + str r2, [r0, #0x6f0] + b _020420B0 +_02041EE4: + add r0, r3, #0x700 + ldrsh r2, [r0, #0x8e] + sub r2, r2, #1 + strh r2, [r0, #0x8e] + ldr r2, [r1, #4] + add r0, r2, #0x700 + ldrsh r0, [r0, #0x8e] + cmp r0, #0 + bge _020420B0 + mov r0, #4 + str r0, [r2, #0x6f0] + ldr r0, [r1, #4] + ldrsb r0, [r0] + bl CloseAdvancedMenu + ldr r0, _020420BC ; =_020AFE90 + mvn r1, #1 + ldr r0, [r0, #4] + strb r1, [r0] + b _020420B0 +_02041F30: + add r0, sp, #0xa8 + bl InitPreprocessorArgs + ldr r0, _020420BC ; =_020AFE90 + add ip, sp, #0xa8 + ldr r3, [r0, #4] + ldr r0, _020420DC ; =_020AFE98 + ldr r2, [r3, #0x838] + ldr r1, _020420E0 ; =0x00001013 + add r2, r3, r2 + ldrb lr, [r2, #0x64] + ldr r3, _020420E4 ; =0x00000A77 + mov r2, #0 + str lr, [sp, #0xb8] + str ip, [sp] + ldr ip, [sp, #0xb8] +#if defined(EUROPE) + add ip, ip, #0x32c + add ip, ip, #0x2400 +#elif defined(JAPAN) + add ip, ip, #0x358 + add ip, ip, #0x3c00 +#else + add ip, ip, #0x2a + add ip, ip, #0x2700 +#endif + mov ip, ip, lsl #0x10 + mov ip, ip, lsr #0x10 + str ip, [sp, #4] + str r2, [sp, #8] + bl CreateScrollBoxSingle + ldr r1, _020420BC ; =_020AFE90 + mov r2, #6 + ldr r3, [r1, #4] + strb r0, [r3, #1] + ldr r0, [r1, #4] + str r2, [r0, #0x6f0] + b _020420B0 +_02041FA4: + ldrsb r0, [r3, #1] + bl IsScrollBoxActive + cmp r0, #0 + bne _020420B0 + ldr r0, _020420BC ; =_020AFE90 + ldr r0, [r0, #4] + ldrsb r0, [r0, #1] + bl CloseScrollBox + ldr r0, _020420BC ; =_020AFE90 + mov r3, #7 + ldr r2, [r0, #4] + mov r1, #8 + str r3, [r2, #0x6f0] + ldr r0, [r0, #4] + add r0, r0, #0x700 + strh r1, [r0, #0x8e] + b _020420B0 +_02041FE8: + add r0, r3, #0x700 + ldrsh r2, [r0, #0x8e] + sub r2, r2, #1 + strh r2, [r0, #0x8e] + ldr r0, [r1, #4] + add r0, r0, #0x700 + ldrsh r2, [r0, #0x8e] + cmp r2, #0 + bge _020420B0 + mov r3, #0 + strh r3, [r0, #0x8e] + ldr r2, [r1, #4] + mov r0, #0xd + str r3, [r2, #0x6f0] + ldr r3, [r1, #4] + str r0, [sp, #0x14] + ldr r2, [r3, #0x838] +#ifdef JAPAN + ldr r1, _02042454 ; =0x00001586 +#else + rsb r1, r0, #0xa80 +#endif + mov r0, #0x10 + str r0, [sp, #0x1c] + str r2, [sp, #0x10] + strh r1, [sp, #0x18] + add r0, r3, #0x700 + ldrsh r1, [r0, #0x94] + ldr r2, [r3, #0x798] + add r0, r3, #0x64 + bl GetLearnableIqSkills + ldr ip, _020420BC ; =_020AFE90 + ldr r1, _020420E8 ; =0x80401C33 + ldr r3, [ip, #4] + add r2, sp, #0x10 + add r3, r3, #0x700 + strh r0, [r3, #0x8c] + ldr r3, [ip, #4] + ldr r0, _020420EC ; =_0209C98C + add r3, r3, #0x700 + ldrsh lr, [r3, #0x8c] + ldr r3, _020420F0 ; =GetCheckIqMenuSkillString + mov ip, #8 + str lr, [sp] + str ip, [sp, #4] + bl CreateAdvancedMenu + ldr r1, _020420BC ; =_020AFE90 + ldr r1, [r1, #4] + strb r0, [r1] + b _020420B0 +_020420A0: + mov r0, #9 + str r0, [r3, #0x6f0] + mov r0, #1 + b _020420B4 +_020420B0: + mov r0, #0 +_020420B4: + add sp, sp, #0xf8 + ldmia sp!, {r4, pc} + .align 2, 0 +_020420BC: .word _020AFE90 +_020420C0: .word _0209C9B0 +_020420C4: .word _0209C9AC +_020420C8: .word _0209C99C +_020420CC: .word 0x80000233 +_020420D0: .word 0x00003F04 +_020420D4: .word 0x00003F03 +_020420D8: .word 0x00003F07 +_020420DC: .word _020AFE98 +_020420E0: .word 0x00001013 +#ifdef JAPAN +_020420E4: .word 0x0000158A +_02042454: .word 0x00001586 +#else +_020420E4: .word 0x00000A77 +#endif +_020420E8: .word 0x80401C33 +_020420EC: .word _0209C98C +_020420F0: .word GetCheckIqMenuSkillString + arm_func_end sub_02041B7C + + arm_func_start sub_020420F4 +sub_020420F4: ; 0x020420F4 + stmdb sp!, {r3, lr} + ldr r0, _02042138 ; =_020AFE90 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0] + mvn r1, #1 + cmp r0, r1 + beq _0204211C + bl CloseAdvancedMenu +_0204211C: + ldr r0, _02042138 ; =_020AFE90 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _02042138 ; =_020AFE90 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02042138: .word _020AFE90 + arm_func_end sub_020420F4 + + arm_func_start GetCheckIqMenuSkillString +GetCheckIqMenuSkillString: ; 0x0204213C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0x84 + ldr r2, _02042248 ; =_020AFE90 + mov r4, r0 + ldr r2, [r2, #4] + mov r6, #0 + add r0, r2, r1 + ldrb r5, [r0, #0x64] + ldr r0, [r2, #0x790] + cmp r5, #0x18 + bne _02042174 + mov r0, #3 + bl GetResolvedPerformanceProgressFlag + b _0204217C +_02042174: + mov r1, r5 + bl IqSkillFlagTest +_0204217C: + cmp r0, #0 + movne r6, #1 + cmp r6, #0 + beq _020421DC + cmp r5, #0x38 + bgt _020421B4 + bge _020421BC + cmp r5, #0x1b + bgt _020421CC + cmp r5, #0x18 + blt _020421CC + cmpne r5, #0x1b + beq _020421BC + b _020421CC +_020421B4: + cmp r5, #0x39 + bne _020421CC +_020421BC: + ldr r1, _0204224C ; =_0209C9CC + add r0, sp, #0x44 + bl strcpy + b _020421E8 +_020421CC: + ldr r1, _02042250 ; =_0209C9D4 + add r0, sp, #0x44 + bl strcpy + b _020421E8 +_020421DC: + ldr r1, _02042254 ; =_0209C9DC + add r0, sp, #0x44 + bl strcpy +_020421E8: + ldr r1, _02042248 ; =_020AFE90 + mov r0, r5 + ldr r1, [r1, #4] + str r5, [r1, #0x24] + bl GetIqSkillStringId + mov r1, r0 + add r0, sp, #4 + mov r2, #0x40 + bl CopyNStringFromId + add r0, sp, #0x44 + add r1, sp, #4 + bl strcat + ldr r1, _02042248 ; =_020AFE90 + mov r0, r4 + ldr r2, [r1, #4] + mov r1, #0x40 + add r2, r2, #0x14 + str r2, [sp] + add r2, sp, #0x44 + mov r3, #0 + bl PreprocessString + mov r0, r4 + add sp, sp, #0x84 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02042248: .word _020AFE90 +_0204224C: .word _0209C9CC +_02042250: .word _0209C9D4 +_02042254: .word _0209C9DC + arm_func_end GetCheckIqMenuSkillString + + arm_func_start InitUnkStorageStruct0xA0 +InitUnkStorageStruct0xA0: ; 0x02042258 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + mov r6, r0 + mov r0, #0xa0 + mov r1, #8 + mov r5, r2 + mov r4, r3 + bl MemAlloc + ldr r1, _020423B4 ; =UNK_STORAGE_STRUCT_0XC + str r0, [r1, #4] + str r6, [r0] + bl RemoveEmptyItemsInBag + mov r0, #0x14 + bl Arm9LoadUnkFieldNa0x2029EC8 + ldr r1, _020423B4 ; =UNK_STORAGE_STRUCT_0XC + cmp r4, #0 + ldr r3, [r1, #4] + ldrne r4, _020423B8 ; =sub_020423D8 + str r0, [r3, #8] + ldr r2, _020423BC ; =0x0000032F + ldr r0, [r1, #4] + mov ip, #0x10 + strh r2, [r0, #0x10] + ldr r0, [r1, #4] + mov r3, #0xd + str ip, [r0, #0x14] + ldr r0, [r1, #4] + ldr r2, _020423C0 ; =sub_0204261C + str r3, [r0, #0xc] + ldr r0, [r1, #4] + moveq r4, #0 + str r2, [r0, #0x7c] + bl GetNbItemsInBag + str r4, [sp] + str r0, [sp, #4] + ldr r0, _020423B4 ; =UNK_STORAGE_STRUCT_0XC + str r5, [sp, #8] + ldr r2, [r0, #4] + ldr r0, _020423C4 ; =_0209C9E4 + ldr r1, _020423C8 ; =0x00443C33 + ldr r3, _020423CC ; =sub_02042760 + add r2, r2, #8 + bl CreateCollectionMenu + ldr r2, _020423B4 ; =UNK_STORAGE_STRUCT_0XC + ldr r1, _020423D0 ; =sub_0204262C + ldr r3, [r2, #4] + strb r0, [r3, #4] + ldr r0, [r2, #4] + ldrsb r0, [r0, #4] + bl sub_0202D068 + ldr r0, _020423B4 ; =UNK_STORAGE_STRUCT_0XC + ldr r1, _020423D4 ; =sub_0204263C + ldr r0, [r0, #4] + ldrsb r0, [r0, #4] + bl SetCollectionMenuVoidFn + ldr r0, _020423B4 ; =UNK_STORAGE_STRUCT_0XC + mov r1, #0xd + ldr r0, [r0, #4] + ldrsb r0, [r0, #4] + bl SetCollectionMenuField0x1BC + ldr r0, _020423B4 ; =UNK_STORAGE_STRUCT_0XC + ldr r1, [r0, #4] + ldr r0, [r1] + cmp r0, #3 + beq _02042368 + cmp r0, #4 + beq _0204237C + b _020423A0 +_02042368: +#ifdef EUROPE + ldrsb r0, [r1, #4] + mov r1, #9 + bl SetCollectionMenuField0x1BC +#endif + mov r0, #0 + bl sub_0204440C + mov r0, #2 + bl sub_0204426C + b _020423A0 +_0204237C: + ldrsb r0, [r1, #4] +#ifdef EUROPE + mov r1, #9 + bl SetCollectionMenuField0x1BC + ldr r0, _020423B4 ; =UNK_STORAGE_STRUCT_0XC +#endif + mov r1, #0x76 +#ifdef EUROPE + ldr r0, [r0, #4] + ldrsb r0, [r0, #4] +#endif + bl SetCollectionMenuWidth + mov r0, #0 + bl sub_0204440C + mov r0, #0 + bl sub_0204426C + mov r0, #0 + bl sub_02044568 +_020423A0: + ldr r0, _020423B4 ; =UNK_STORAGE_STRUCT_0XC + ldr r0, [r0, #4] + ldrsb r0, [r0, #4] + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_020423B4: .word UNK_STORAGE_STRUCT_0XC +_020423B8: .word sub_020423D8 +#ifdef JAPAN +_020423BC: .word 0x000031F4 +#else +_020423BC: .word 0x0000032F +#endif +_020423C0: .word sub_0204261C +_020423C4: .word _0209C9E4 +_020423C8: .word 0x00443C33 +_020423CC: .word sub_02042760 +_020423D0: .word sub_0204262C +_020423D4: .word sub_0204263C + arm_func_end InitUnkStorageStruct0xA0 + + arm_func_start sub_020423D8 +sub_020423D8: ; 0x020423D8 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _02042618 ; =UNK_STORAGE_STRUCT_0XC + mov r5, #0 + ldr r2, [r1, #4] + ldr r1, [r2] + cmp r1, #3 + bne _02042498 + tst r0, #0x800 + beq _02042498 + bl sub_02042B20 + cmp r0, #0 + ble _0204241C + bl ClearBagSelectedItemTable + mov r0, #6 + bl PlaySeVolumeWrapper + mov r5, #1 + b _020425D8 +_0204241C: + bl sub_0200FD48 + mov r4, r0 + bl CountNbOfItemsInStorage + sub r7, r4, r0 + mov r8, r5 + mov r6, #1 + ldr r4, _02042618 ; =UNK_STORAGE_STRUCT_0XC + b _02042470 +_0204243C: + cmp r7, #0 + ble _02042478 + mov r0, r8, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetItemAtIdx + ldrsh r0, [r0, #4] + bl IsStorableItem + cmp r0, #0 + ldrne r0, [r4, #8] + movne r5, r6 + strne r6, [r0, r8, lsl #2] + subne r7, r7, #1 + add r8, r8, #1 +_02042470: + cmp r8, #0x32 + blt _0204243C +_02042478: + cmp r5, #0 + beq _0204248C + mov r0, #6 + bl PlaySeVolumeWrapper + b _020425D8 +_0204248C: + mov r0, #2 + bl PlaySeVolumeWrapper + b _020425D8 +_02042498: + tst r0, #0x400 + beq _020425D8 + ldrsb r0, [r2, #4] + bl sub_0202D0EC + ldr r1, _02042618 ; =UNK_STORAGE_STRUCT_0XC + mov r4, r0 + ldr r0, [r1, #4] + ldr r0, [r0] + cmp r0, #3 + beq _020424CC + cmp r0, #4 + beq _02042570 + b _020425D8 +_020424CC: + mov r0, r4, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetItemAtIdx + ldrsh r0, [r0, #4] + bl IsStorableItem + cmp r0, #0 + beq _02042560 + ldr r0, _02042618 ; =UNK_STORAGE_STRUCT_0XC + ldr r2, [r0, #8] + ldr r0, [r2, r4, lsl #2] + tst r0, #1 + beq _02042514 + mov r1, #0 + mov r0, #6 + str r1, [r2, r4, lsl #2] + bl PlaySeVolumeWrapper + mov r5, #1 + b _020425D8 +_02042514: + bl CountNbOfItemsInStorage + mov r6, r0 + bl sub_02042B20 + mov r5, r0 + bl sub_0200FD48 + add r1, r6, r5 + cmp r1, r0 + bge _02042550 + mov r0, #6 + bl PlaySeVolumeWrapper + ldr r0, _02042618 ; =UNK_STORAGE_STRUCT_0XC + mov r5, #1 + ldr r0, [r0, #8] + str r5, [r0, r4, lsl #2] + b _020425D8 +_02042550: + mov r0, #2 + bl PlaySeVolumeWrapper + mov r5, #0 + b _020425D8 +_02042560: + mov r0, #2 + bl PlaySeVolumeWrapper + mov r5, #0 + b _020425D8 +_02042570: + mov r0, r4, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetItemAtIdx + ldrsh r0, [r0, #4] + bl IsShoppableItem + cmp r0, #0 + beq _020425CC + ldr r0, _02042618 ; =UNK_STORAGE_STRUCT_0XC + mov r5, #1 + ldr r2, [r0, #8] + ldr r0, [r2, r4, lsl #2] + tst r0, #1 + mov r0, #6 + beq _020425B8 + mov r1, #0 + str r1, [r2, r4, lsl #2] + bl PlaySeVolumeWrapper + b _020425D8 +_020425B8: + bl PlaySeVolumeWrapper + ldr r0, _02042618 ; =UNK_STORAGE_STRUCT_0XC + ldr r0, [r0, #8] + str r5, [r0, r4, lsl #2] + b _020425D8 +_020425CC: + mov r0, #2 + bl PlaySeVolumeWrapper + mov r5, #0 +_020425D8: + bl sub_02042B20 + cmp r0, #0 + beq _020425FC + ldr r0, _02042618 ; =UNK_STORAGE_STRUCT_0XC + mov r1, #1 + ldr r0, [r0, #4] + ldrsb r0, [r0, #4] + bl sub_0202D16C + b _02042610 +_020425FC: + ldr r0, _02042618 ; =UNK_STORAGE_STRUCT_0XC + mov r1, #0 + ldr r0, [r0, #4] + ldrsb r0, [r0, #4] + bl sub_0202D16C +_02042610: + mov r0, r5 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02042618: .word UNK_STORAGE_STRUCT_0XC + arm_func_end sub_020423D8 + + arm_func_start sub_0204261C +sub_0204261C: ; 0x0204261C + stmdb sp!, {r3, lr} + bl sub_02042BE0 + bl sub_02044308 + ldmia sp!, {r3, pc} + arm_func_end sub_0204261C + + arm_func_start sub_0204262C +sub_0204262C: ; 0x0204262C + stmdb sp!, {r3, lr} + bl sub_02042BE0 + bl sub_02044308 + ldmia sp!, {r3, pc} + arm_func_end sub_0204262C + + arm_func_start sub_0204263C +sub_0204263C: ; 0x0204263C + ldr r2, _0204265C ; =BAG_ITEMS_PTR_MIRROR + mov r1, #6 + ldr r2, [r2] + ldr ip, _02042660 ; =sub_020444B0 + ldr r2, [r2, #0x384] + mla r1, r0, r1, r2 + ldrsh r0, [r1, #4] + bx ip + .align 2, 0 +_0204265C: .word BAG_ITEMS_PTR_MIRROR +_02042660: .word sub_020444B0 + arm_func_end sub_0204263C + + arm_func_start FreeUnkStorageStruct0xA0 +FreeUnkStorageStruct0xA0: ; 0x02042664 + stmdb sp!, {r3, lr} + ldr r0, _020426B0 ; =UNK_STORAGE_STRUCT_0XC + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl sub_02044474 + bl sub_020442CC + bl sub_020445C8 + ldr r0, _020426B0 ; =UNK_STORAGE_STRUCT_0XC + ldr r0, [r0, #4] + ldrsb r0, [r0, #4] + bl CloseCollectionMenu + ldr r0, _020426B0 ; =UNK_STORAGE_STRUCT_0XC + ldr r0, [r0, #4] + bl MemFree + ldr r0, _020426B0 ; =UNK_STORAGE_STRUCT_0XC + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_020426B0: .word UNK_STORAGE_STRUCT_0XC + arm_func_end FreeUnkStorageStruct0xA0 + + arm_func_start sub_020426B4 +sub_020426B4: ; 0x020426B4 + stmdb sp!, {r3, lr} + ldr r0, _0204272C ; =UNK_STORAGE_STRUCT_0XC + ldr r0, [r0, #4] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0, #4] + bl IsCollectionMenuActive + cmp r0, #0 + bne _02042708 + ldr r0, _0204272C ; =UNK_STORAGE_STRUCT_0XC + ldr r0, [r0, #4] + ldrsb r0, [r0, #4] + bl sub_0202C75C + mvn r1, #0 + cmp r0, r1 + ldrne r1, _0204272C ; =UNK_STORAGE_STRUCT_0XC + moveq r0, #2 + strneh r0, [r1] + movne r0, #3 + ldmia sp!, {r3, pc} +_02042708: + ldr r0, _0204272C ; =UNK_STORAGE_STRUCT_0XC + ldr r0, [r0, #4] + ldrsb r0, [r0, #4] + bl GetWindowIdSelectedMenuItemIdx + and r1, r0, #0xff + mov r0, #0x14 + bl Arm9StoreUnkFieldNa0x2029ED8 + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0204272C: .word UNK_STORAGE_STRUCT_0XC + arm_func_end sub_020426B4 + + arm_func_start sub_02042730 +sub_02042730: ; 0x02042730 + ldr r0, _02042740 ; =UNK_STORAGE_STRUCT_0XC + mov r1, #0 + strh r1, [r0] + bx lr + .align 2, 0 +_02042740: .word UNK_STORAGE_STRUCT_0XC + arm_func_end sub_02042730 + + arm_func_start sub_02042744 +sub_02042744: ; 0x02042744 + ldr r0, _02042758 ; =UNK_STORAGE_STRUCT_0XC + ldr ip, _0204275C ; =sub_0202C620 + ldr r0, [r0, #4] + ldrsb r0, [r0, #4] + bx ip + .align 2, 0 +_02042758: .word UNK_STORAGE_STRUCT_0XC +_0204275C: .word sub_0202C620 + arm_func_end sub_02042744 + + arm_func_start sub_02042760 +sub_02042760: ; 0x02042760 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x64 + mov r5, r1 + mov r1, #6 + ldr r3, _02042A64 ; =BAG_ITEMS_PTR_MIRROR + mul r4, r5, r1 + ldr r1, [r3] + ldr r3, _02042A68 ; =UNK_STORAGE_STRUCT_0XC + ldr r6, [r1, #0x384] + ldr r7, [r3, #4] + ldrh r1, [r6, r4] + add lr, r6, r4 + mov r4, r2 + strh r1, [sp] + ldrh ip, [lr, #2] + mov r6, r0 + add r1, sp, #0 + strh ip, [sp, #2] + ldrh r2, [lr, #4] + strh r2, [sp, #4] + ldr r2, [r7] + cmp r2, #5 + addls pc, pc, r2, lsl #2 + b _02042A3C +_020427C0: ; jump table + b _020427D8 ; case 0 + b _020427E4 ; case 1 + b _020427E4 ; case 2 + b _02042808 ; case 3 + b _020428D4 ; case 4 + b _020429E8 ; case 5 +_020427D8: + mov r2, #0 + bl MaybeGetColoredFormattedItemName + b _02042A3C +_020427E4: + mov r7, #0 + mov r3, #1 + add r2, sp, #8 + str r7, [sp, #8] + strb r7, [sp, #0xc] + strb r3, [sp, #0x10] + strb r3, [sp] + bl MaybeGetColoredFormattedItemName + b _02042A3C +_02042808: + mov r1, #0 + mov r0, #1 + str r1, [sp, #8] + strb r1, [sp, #0xc] + strb r0, [sp, #0x10] + strb r0, [sp] + ldr r0, [r3, #8] + ldr r0, [r0, r5, lsl #2] + tst r0, #1 + bne _0204284C + mov r0, r5, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetItemAtIdx + ldrsh r0, [r0, #4] + bl IsStorableItem + cmp r0, #0 + beq _02042890 +_0204284C: + add r0, sp, #0x14 + add r1, sp, #0 + add r2, sp, #8 + bl MaybeGetColoredFormattedItemName + ldrb r2, [sp, #1] + cmp r2, #0 + beq _0204287C + ldr r1, _02042A6C ; =_0209C9F4 + add r3, sp, #0x14 + mov r0, r6 + bl SprintfStatic__02042A84 + b _02042A3C +_0204287C: + ldr r1, _02042A70 ; =_0209C9FC + add r2, sp, #0x14 + mov r0, r6 + bl SprintfStatic__02042A84 + b _02042A3C +_02042890: + add r0, sp, #0x14 + add r1, sp, #0 + add r2, sp, #8 + bl MaybeGetUncoloredFormattedItemName + ldrb r2, [sp, #1] + cmp r2, #0 + beq _020428C0 + ldr r1, _02042A74 ; =_0209CA08 + add r3, sp, #0x14 + mov r0, r6 + bl SprintfStatic__02042A84 + b _02042A3C +_020428C0: + ldr r1, _02042A78 ; =_0209CA18 + add r2, sp, #0x14 + mov r0, r6 + bl SprintfStatic__02042A84 + b _02042A3C +_020428D4: + ldrsh r0, [sp, #4] + bl IsShoppableItem + cmp r0, #0 + beq _020429A4 + mov r7, #3 + mov r3, #0 + mov r2, #0x6a + mov r1, #1 + add r0, sp, #0 + str r7, [sp, #8] + strb r3, [sp, #0xc] + strh r2, [sp, #0xe] + strb r1, [sp, #0x10] + strb r7, [sp] + bl GetActualSellPrice + mov r7, r0 + bl GetMoneyCarried + ldr r1, _02042A7C ; =0x0001869F + add r0, r7, r0 + cmp r0, r1 + add r0, sp, #0x14 + add r1, sp, #0 + add r2, sp, #8 + bgt _0204296C + bl MaybeGetColoredFormattedItemName + ldrb r2, [sp, #1] + cmp r2, #0 + beq _02042958 + ldr r1, _02042A6C ; =_0209C9F4 + add r3, sp, #0x14 + mov r0, r6 + bl SprintfStatic__02042A84 + b _02042A3C +_02042958: + ldr r1, _02042A70 ; =_0209C9FC + add r2, sp, #0x14 + mov r0, r6 + bl SprintfStatic__02042A84 + b _02042A3C +_0204296C: + bl MaybeGetUncoloredFormattedItemName + ldrb r2, [sp, #1] + cmp r2, #0 + beq _02042990 + ldr r1, _02042A74 ; =_0209CA08 + add r3, sp, #0x14 + mov r0, r6 + bl SprintfStatic__02042A84 + b _02042A3C +_02042990: + ldr r1, _02042A78 ; =_0209CA18 + add r2, sp, #0x14 + mov r0, r6 + bl SprintfStatic__02042A84 + b _02042A3C +_020429A4: + add r0, sp, #0x14 + add r1, sp, #0 + mov r2, #0 + bl MaybeGetUncoloredFormattedItemName + ldrb r2, [sp, #1] + cmp r2, #0 + beq _020429D4 + ldr r1, _02042A74 ; =_0209CA08 + add r3, sp, #0x14 + mov r0, r6 + bl SprintfStatic__02042A84 + b _02042A3C +_020429D4: + ldr r1, _02042A78 ; =_0209CA18 + add r2, sp, #0x14 + mov r0, r6 + bl SprintfStatic__02042A84 + b _02042A3C +_020429E8: + ldrsh r0, [sp, #4] + mov r2, #0 + mov r1, #1 + str r2, [sp, #8] + strb r2, [sp, #0xc] + strb r1, [sp, #0x10] + strb r1, [sp] + bl IsGummi + cmp r0, #0 + add r1, sp, #0 + add r2, sp, #8 + beq _02042A24 + mov r0, r6 + bl MaybeGetColoredFormattedItemName + b _02042A3C +_02042A24: + add r0, sp, #0x14 + bl MaybeGetUncoloredFormattedItemName + ldr r1, _02042A80 ; =_0209CA2C + add r2, sp, #0x14 + mov r0, r6 + bl SprintfStatic__02042A84 +_02042A3C: + ldr r0, _02042A68 ; =UNK_STORAGE_STRUCT_0XC + ldr r0, [r0, #8] + ldr r0, [r0, r5, lsl #2] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + str r0, [r4] + mov r0, r6 + add sp, sp, #0x64 + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02042A64: .word BAG_ITEMS_PTR_MIRROR +_02042A68: .word UNK_STORAGE_STRUCT_0XC +_02042A6C: .word _0209C9F4 +_02042A70: .word _0209C9FC +_02042A74: .word _0209CA08 +_02042A78: .word _0209CA18 +_02042A7C: .word 0x0001869F +_02042A80: .word _0209CA2C + arm_func_end sub_02042760 + + arm_func_start SprintfStatic__02042A84 +SprintfStatic__02042A84: ; 0x02042A84 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, lr} + add r2, sp, #0xc + bic r2, r2, #3 + ldr r1, [sp, #0xc] + add r2, r2, #4 + bl vsprintf + ldmia sp!, {r3, lr} + add sp, sp, #0x10 + bx lr + arm_func_end SprintfStatic__02042A84 + + arm_func_start sub_02042AAC +sub_02042AAC: ; 0x02042AAC + stmdb sp!, {r3, lr} + ldr r0, _02042AD8 ; =UNK_STORAGE_STRUCT_0XC + ldr r0, [r0, #4] + cmp r0, #0 + ldrnesb r0, [r0, #4] + mvnne r1, #1 + cmpne r0, r1 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + bl IsCollectionMenuState3 + ldmia sp!, {r3, pc} + .align 2, 0 +_02042AD8: .word UNK_STORAGE_STRUCT_0XC + arm_func_end sub_02042AAC + + arm_func_start sub_02042ADC +sub_02042ADC: ; 0x02042ADC + ldr r0, _02042AF0 ; =UNK_STORAGE_STRUCT_0XC + ldr ip, _02042AF4 ; =sub_0202D0EC + ldr r0, [r0, #4] + ldrsb r0, [r0, #4] + bx ip + .align 2, 0 +_02042AF0: .word UNK_STORAGE_STRUCT_0XC +_02042AF4: .word sub_0202D0EC + arm_func_end sub_02042ADC diff --git a/asm/main_02042B20.s b/asm/main_02042B20.s deleted file mode 100644 index 05c7702b..00000000 --- a/asm/main_02042B20.s +++ /dev/null @@ -1,42 +0,0 @@ - .include "asm/macros.inc" - .include "main_02042B20.inc" - - .text - - arm_func_start sub_02042B20 -sub_02042B20: ; 0x02042B20 - ldr r1, _02042B4C ; =UNK_STORAGE_STRUCT_0XC - mov r0, #0 - ldr r3, [r1, #8] - mov r2, r0 -_02042B30: - ldr r1, [r3, r2, lsl #2] - add r2, r2, #1 - tst r1, #1 - addne r0, r0, #1 - cmp r2, #0x32 - blt _02042B30 - bx lr - .align 2, 0 -_02042B4C: .word UNK_STORAGE_STRUCT_0XC - arm_func_end sub_02042B20 - - arm_func_start sub_02042B50 -sub_02042B50: ; 0x02042B50 - ldr r1, _02042B80 ; =UNK_STORAGE_STRUCT_0XC - mov r0, #0 - ldr r2, [r1, #8] - b _02042B70 -_02042B60: - ldr r1, [r2, r0, lsl #2] - tst r1, #1 - bxne lr - add r0, r0, #1 -_02042B70: - cmp r0, #0x32 - blt _02042B60 - mvn r0, #0 - bx lr - .align 2, 0 -_02042B80: .word UNK_STORAGE_STRUCT_0XC - arm_func_end sub_02042B50 diff --git a/asm/main_0204357C.s b/asm/main_0204357C.s index 25a3e035..634f27d0 100644 --- a/asm/main_0204357C.s +++ b/asm/main_0204357C.s @@ -6066,92 +6066,3 @@ sub_02048384: ; 0x02048384 .align 2, 0 _020483B4: .word _020AFEF4 arm_func_end sub_02048384 - - arm_func_start sub_020483B8 -sub_020483B8: ; 0x020483B8 - ldr r0, _020483D0 ; =_020AFEF4 - ldr ip, _020483D4 ; =sub_020476EC - ldr r0, [r0] - add r0, r0, #0x3100 - ldrsh r0, [r0, #0xb8] - bx ip - .align 2, 0 -_020483D0: .word _020AFEF4 -_020483D4: .word sub_020476EC - arm_func_end sub_020483B8 - - arm_func_start sub_020483D8 -sub_020483D8: ; 0x020483D8 - stmdb sp!, {r3, lr} - bl sub_0204771C - cmp r0, #0 - ldrne r1, _020483FC ; =_020AFEF4 - movne r2, #0 - ldrne r1, [r1] - addne r1, r1, #0x3000 - strneb r2, [r1, #0x1b2] - ldmia sp!, {r3, pc} - .align 2, 0 -_020483FC: .word _020AFEF4 - arm_func_end sub_020483D8 - - arm_func_start sub_02048400 -sub_02048400: ; 0x02048400 - ldr r0, _0204841C ; =_020AFEF4 - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_0204841C: .word _020AFEF4 - arm_func_end sub_02048400 - - arm_func_start sub_02048420 -sub_02048420: ; 0x02048420 - stmdb sp!, {r3, lr} - bl DebugPrintEventFlagSize - bl sub_02048B74 - ldmia sp!, {r3, pc} - arm_func_end sub_02048420 - - arm_func_start sub_02048430 -sub_02048430: ; 0x02048430 - stmdb sp!, {r3, lr} - bl sub_0206637C - mov r0, #0 - bl sub_02048C0C - mvn r0, #0 - bl sub_02048C4C - bl sub_0204F9B8 - bl sub_02048B48 - ldmia sp!, {r3, pc} - arm_func_end sub_02048430 - - arm_func_start sub_02048454 -sub_02048454: ; 0x02048454 - stmdb sp!, {r3, lr} - bl ClearAdventureLogStruct - bl sub_0206637C - mov r0, #0 - bl sub_02048C0C - mvn r0, #0 - bl sub_02048C4C - bl sub_0204F9B8 - bl sub_02048B48 - bl sub_02048C5C - ldmia sp!, {r3, pc} - arm_func_end sub_02048454 - - arm_func_start sub_02048480 -sub_02048480: ; 0x02048480 - stmdb sp!, {r3, lr} - bl sub_02048C3C - mvn r1, #0 - cmp r0, r1 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end sub_02048480 diff --git a/asm/main_02048764.s b/asm/main_02048764.s index b9120df8..64f0f16c 100644 --- a/asm/main_02048764.s +++ b/asm/main_02048764.s @@ -310,2532 +310,3 @@ _02048B40: bl GetInfoGroundMoveset ldmia sp!, {r3, r4, r5, pc} arm_func_end AssignSpecialEpisodePc - - arm_func_start sub_02048B48 -sub_02048B48: ; 0x02048B48 - stmdb sp!, {r3, lr} - bl InitOptions - bl InitScriptVariableValues - bl sub_02052C74 - bl sub_0200CABC - bl StoreDefaultTeamData - bl ResetGlobalProgress - bl sub_0205B478 - bl sub_0205C75C - bl ClearCroagunkItems - ldmia sp!, {r3, pc} - arm_func_end sub_02048B48 - - arm_func_start sub_02048B74 -sub_02048B74: ; 0x02048B74 - stmdb sp!, {r3, lr} - ldr r1, _02048BA8 ; =_020AFF38 - ldr r0, _02048BAC ; =_0209CD4C - ldr r1, [r1, #4] - mov r2, #0 - bl Debug_Print0 - mov r3, #0 - ldr r1, _02048BA8 ; =_020AFF38 - ldr r0, _02048BB0 ; =_022AAE70 - sub r2, r3, #1 - str r3, [r1, #4] - str r2, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02048BA8: .word _020AFF38 -_02048BAC: .word _0209CD4C -_02048BB0: .word _022AAE70 - arm_func_end sub_02048B74 - - arm_func_start ReadStringSave -ReadStringSave: ; 0x02048BB4 - ldr r1, _02048BC8 ; =_020AFF38 - ldr ip, _02048BCC ; =strncpy - mov r2, #0x20 - ldr r1, [r1] - bx ip - .align 2, 0 -_02048BC8: .word _020AFF38 -_02048BCC: .word strncpy - arm_func_end ReadStringSave - - arm_func_start CheckStringSave -CheckStringSave: ; 0x02048BD0 - stmdb sp!, {r3, lr} - ldr r1, _02048BF8 ; =_020AFF38 - mov r2, #0x20 - ldr r1, [r1] - bl strncmp - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - .align 2, 0 -_02048BF8: .word _020AFF38 - arm_func_end CheckStringSave - - arm_func_start sub_02048BFC -sub_02048BFC: ; 0x02048BFC - ldr r0, _02048C08 ; =_020AFF38 - ldr r0, [r0, #4] - bx lr - .align 2, 0 -_02048C08: .word _020AFF38 - arm_func_end sub_02048BFC - - arm_func_start sub_02048C0C -sub_02048C0C: ; 0x02048C0C - stmdb sp!, {r4, lr} - ldr r1, _02048C34 ; =_020AFF38 - mov r4, r0 - ldr r1, [r1, #4] - ldr r0, _02048C38 ; =_0209CD4C - mov r2, r4 - bl Debug_Print0 - ldr r0, _02048C34 ; =_020AFF38 - str r4, [r0, #4] - ldmia sp!, {r4, pc} - .align 2, 0 -_02048C34: .word _020AFF38 -_02048C38: .word _0209CD4C - arm_func_end sub_02048C0C - - arm_func_start sub_02048C3C -sub_02048C3C: ; 0x02048C3C - ldr r0, _02048C48 ; =_022AAE70 - ldr r0, [r0] - bx lr - .align 2, 0 -_02048C48: .word _022AAE70 - arm_func_end sub_02048C3C - - arm_func_start sub_02048C4C -sub_02048C4C: ; 0x02048C4C - ldr r1, _02048C58 ; =_022AAE70 - str r0, [r1] - bx lr - .align 2, 0 -_02048C58: .word _022AAE70 - arm_func_end sub_02048C4C - - arm_func_start sub_02048C5C -sub_02048C5C: ; 0x02048C5C - stmdb sp!, {r3, lr} - ldr r0, _02048CA4 ; =_022AAE74 - mov r1, #0 - mov r2, #0x30 - bl MemsetSimple - ldr r2, _02048CA8 ; =0x09011416 - ldr r1, _02048CAC ; =_022AAE74 - ldr r0, _02048CB0 ; =_022AAE78 - str r2, [r1, #0x24] - bl ReadStringSave - ldr r2, _02048CB4 ; =0x000F1206 - ldr r0, _02048CAC ; =_022AAE74 - mov r1, #0xff - str r2, [r0, #0x28] - strb r1, [r0, #0x2c] - mov r1, #0 - strb r1, [r0, #0x2d] - ldmia sp!, {r3, pc} - .align 2, 0 -_02048CA4: .word _022AAE74 -_02048CA8: .word 0x09011416 -_02048CAC: .word _022AAE74 -_02048CB0: .word _022AAE78 -_02048CB4: .word 0x000F1206 - arm_func_end sub_02048C5C - - arm_func_start sub_02048CB8 -sub_02048CB8: ; 0x02048CB8 - stmdb sp!, {r3, lr} - mov r0, #9 - bl Debug_GetDebugFlag - cmp r0, #0 - beq _02048CE4 - ldr r1, _02048CF0 ; =_022AAE74 - ldr r0, _02048CF4 ; =0x000F1208 - ldr r1, [r1, #0x28] - cmp r1, r0 - subeq r0, r0, #1 - ldmeqia sp!, {r3, pc} -_02048CE4: - ldr r0, _02048CF0 ; =_022AAE74 - ldr r0, [r0, #0x28] - ldmia sp!, {r3, pc} - .align 2, 0 -_02048CF0: .word _022AAE74 -_02048CF4: .word 0x000F1208 - arm_func_end sub_02048CB8 - - arm_func_start sub_02048CF8 -sub_02048CF8: ; 0x02048CF8 - stmdb sp!, {r3, r4, r5, lr} - mov r0, #0x100 - mov r1, #5 - bl MemAlloc - mov r4, r0 - ldr r3, _02048DB0 ; =0x000001EA - add r0, sp, #0 - mov r1, r4 - mov r2, #0x100 - str r3, [sp] - bl ReadSaveFile - movs r5, r0 - cmpne r5, #2 - bne _02048D54 - add r0, r4, #4 - bl CheckStringSave - cmp r0, #0 - moveq r5, #5 - beq _02048D54 - ldr r1, [r4, #0x24] - ldr r0, _02048DB4 ; =0x09011416 - cmp r1, r0 - movne r5, #4 -_02048D54: - bl sub_02048C5C - cmp r5, #0 - bne _02048D80 - ldr r1, [r4, #0x28] - ldr r0, _02048DB8 ; =_022AAE74 - str r1, [r0, #0x28] - ldrb r1, [r4, #0x2c] - strb r1, [r0, #0x2c] - ldrb r1, [r4, #0x2d] - strb r1, [r0, #0x2d] - b _02048DA0 -_02048D80: - sub r0, r5, #4 - cmp r0, #1 - ldrls r1, _02048DBC ; =0x000F1206 - ldrls r0, _02048DB8 ; =_022AAE74 - strls r1, [r0, #0x28] - ldrhi r1, _02048DC0 ; =0x000F1209 - ldrhi r0, _02048DB8 ; =_022AAE74 - strhi r1, [r0, #0x28] -_02048DA0: - mov r0, r4 - bl MemFree - bl sub_02048CB8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02048DB0: .word 0x000001EA -_02048DB4: .word 0x09011416 -_02048DB8: .word _022AAE74 -_02048DBC: .word 0x000F1206 -_02048DC0: .word 0x000F1209 - arm_func_end sub_02048CF8 - - arm_func_start sub_02048DC4 -sub_02048DC4: ; 0x02048DC4 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - mov r0, #0x100 - mov r1, #5 - bl MemAlloc - mov r4, r0 - bl sub_02048C5C - ldr r5, _02048E68 ; =_022AAE74 - mov lr, r4 - mov ip, #3 -_02048DF0: - ldmia r5!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _02048DF0 - str r6, [r4, #0x28] - bl GetAdventureLogDungeonFloor - ldrb r2, [r0] - ldr r3, _02048E6C ; =0x000001EA - mov r1, r4 - strb r2, [r4, #0x2c] - ldrb ip, [r0, #1] - add r0, sp, #0 - mov r2, #0x100 - strb ip, [r4, #0x2d] - str r3, [sp] - bl WriteSaveFile - movs r5, r0 - bne _02048E54 - ldr r1, [r4, #0x28] - ldr r0, _02048E70 ; =_022AAE74 - str r1, [r0, #0x28] - ldrb r1, [r4, #0x2c] - strb r1, [r0, #0x2c] - ldrb r1, [r4, #0x2d] - strb r1, [r0, #0x2d] -_02048E54: - mov r0, r4 - bl MemFree - mov r0, r5 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02048E68: .word _022AAE74 -_02048E6C: .word 0x000001EA -_02048E70: .word _022AAE74 - arm_func_end sub_02048DC4 - - arm_func_start WriteSaveFile -WriteSaveFile: ; 0x02048E74 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r2 - add r3, r5, #0xff - mov r2, r3, asr #7 - ldr r4, [r0] - add r2, r3, r2, lsr #24 - mov r6, r1 - add r1, r4, r2, asr #8 - str r1, [r0] - mov r0, r6 - mov r1, r5 - bl CalcChecksum - mov r0, r4 - mov r1, r6 - mov r2, r5 - bl sub_0204A9C8 - cmp r0, #4 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, pc} - cmp r0, #0 - movne r0, #2 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end WriteSaveFile - - arm_func_start ReadSaveFile -ReadSaveFile: ; 0x02048ED0 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r2 - add ip, r4, #0xff - mov r3, ip, asr #7 - ldr lr, [r0] - add r3, ip, r3, lsr #24 - add r3, lr, r3, asr #8 - str r3, [r0] - mov r0, lr - mov r5, r1 - bl sub_0204A8E0 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl CheckChecksumInvalid - cmp r0, #0 - movne r0, #2 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ReadSaveFile - - arm_func_start CalcChecksum -CalcChecksum: ; 0x02048F24 - mov r3, #0 - mov ip, #1 - b _02048F3C -_02048F30: - ldr r2, [r0, ip, lsl #2] - add ip, ip, #1 - add r3, r3, r2 -_02048F3C: - cmp ip, r1, lsr #2 - blt _02048F30 - str r3, [r0] - bx lr - arm_func_end CalcChecksum - - arm_func_start CheckChecksumInvalid -CheckChecksumInvalid: ; 0x02048F4C - mov r3, #0 - mov ip, #1 - b _02048F64 -_02048F58: - ldr r2, [r0, ip, lsl #2] - add ip, ip, #1 - add r3, r3, r2 -_02048F64: - cmp ip, r1, lsr #2 - blt _02048F58 - ldr r0, [r0] - cmp r0, r3 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end CheckChecksumInvalid - - arm_func_start NoteSaveBase -NoteSaveBase: ; 0x02048F84 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - ldr r0, _02049218 ; =0x0000B65C - mov r1, #5 - bl MemAlloc - mov r4, r0 - add r0, r4, #0x64 - add r5, r0, #0x400 - bl sub_02048BFC - mov r2, r0 - ldr r0, _0204921C ; =_0209CD6C - mov r1, sb - bl Debug_Print0 - mov r0, #0 - bl SetNotifyNote - bl GetTime - mov r7, r0 - bl EventFlagBackupVeneer - cmp sb, #3 - bne _02048FE0 - bl sub_02048BFC - mov sb, r0 - b _02048FE8 -_02048FE0: - mov r0, sb - bl sub_02048C0C -_02048FE8: - str sb, [r4, #0x2c] - bl sub_02048C3C - str r0, [r4, #0x28] - bl GetRngSeed - str r0, [r4, #0x30] - cmp sb, #0 - mvneq r0, #0 - beq _0204900C - bl GetLanguageType -_0204900C: - ldr r1, _02049220 ; =0x09011416 - strb r0, [r4, #0x34] - add r0, r4, #4 - str r1, [r4, #0x24] - bl ReadStringSave - add r0, r4, #0x38 - bl DumpScriptVariableValues - ldr r1, _02049224 ; =0x00007F6B - mov r0, r5 - bl WriteMonsterInfoToSave - str r0, [r4, #0x438] - add r0, r5, #0x6b - ldr r1, _02049228 ; =0x000005DC - add r0, r0, #0x7f00 - bl sub_020597B0 - str r0, [r4, #0x43c] - add r0, r5, #0x47 - ldr r1, _0204922C ; =0x000001F7 - add r0, r0, #0x8500 - bl CopyProgressInfoFromScratchTo - str r0, [r4, #0x440] - add r0, r5, #0x3e - ldr r1, _02049230 ; =0x00000DAC - add r0, r0, #0x8700 - bl WriteItemsToSave - str r0, [r4, #0x444] - add r0, r5, #0xea - add r0, r0, #0x9400 - mov r1, #0x10 - bl sub_02050CF8 - str r0, [r4, #0x448] - add r0, r5, #0xfa - add r0, r0, #0x9400 - mov r1, #0x340 - bl sub_0204E154 - str r0, [r4, #0x450] - add r0, r5, #0x3a - ldr r1, _02049234 ; =0x000015A0 - add r0, r0, #0x9800 - bl sub_0205BFB0 - str r0, [r4, #0x454] - add r0, r5, #0xda - ldr r1, _02049238 ; =0x00000237 - add r0, r0, #0xad00 - bl sub_0205FC20 - str r0, [r4, #0x458] - add r0, r5, #0x11 - add r0, r0, #0xb000 - mov r1, #0xb - bl SaveCroagunkItems - add r1, r5, #0x1c - str r0, [r4, #0x45c] - add r0, r1, #0xb000 -#ifdef JAPAN - mov r1, #0x18c -#else - mov r1, #0x1dc -#endif - bl sub_0204A3E4 - str r0, [r4, #0x460] - bl GetTime - mov r1, r7 - mov r7, r0 - bl _fsub - bl _f2d - mov r3, r0 - mov r2, r1 - ldr r0, _0204923C ; =_0209CD84 - mov r1, r3 - bl Debug_Print0 - cmp sb, #2 - moveq r5, #0 - beq _0204912C - ldr r0, _02049240 ; =0x000F1206 - bl sub_02048DC4 - mov r5, r0 -_0204912C: - cmp r5, #0 - bne _020491C4 - bl sub_02049350 - cmp r0, #1 - add r0, sp, #0 - ldr r2, _02049218 ; =0x0000B65C - bne _02049188 - mov r3, #0 - mov r1, r4 - str r3, [sp] - bl WriteSaveFile - movs r6, r0 - bne _02049168 - mov r0, #0 - bl sub_02049360 -_02049168: - ldr r2, _02049218 ; =0x0000B65C - mov r3, #0xc8 - add r0, sp, #0 - mov r1, r4 - str r3, [sp] - bl WriteSaveFile - mov r8, r0 - b _020491C4 -_02049188: - mov r3, #0xc8 - mov r1, r4 - str r3, [sp] - bl WriteSaveFile - movs r8, r0 - bne _020491A8 - mov r0, #1 - bl sub_02049360 -_020491A8: - ldr r2, _02049218 ; =0x0000B65C - mov r3, #0 - add r0, sp, #0 - mov r1, r4 - str r3, [sp] - bl WriteSaveFile - mov r6, r0 -_020491C4: - bl GetTime - mov r1, r7 - bl _fsub - bl _f2d - mov r3, r0 - mov r2, r1 - ldr r0, _02049244 ; =_0209CD94 - mov r1, r3 - bl Debug_Print0 - mov r0, r4 - bl MemFree - cmp r5, #0 - movne r0, r5 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r6, #0 - movne r0, r6 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r8, #0 - moveq r8, #0 - mov r0, r8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -#ifdef JAPAN -_02049218: .word 0x0000B60C -#else -_02049218: .word 0x0000B65C -#endif -_0204921C: .word _0209CD6C -_02049220: .word 0x09011416 -_02049224: .word 0x00007F6B -_02049228: .word 0x000005DC -_0204922C: .word 0x000001F7 -_02049230: .word 0x00000DAC -_02049234: .word 0x000015A0 -_02049238: .word 0x00000237 -_0204923C: .word _0209CD84 -_02049240: .word 0x000F1206 -_02049244: .word _0209CD94 - arm_func_end NoteSaveBase - - arm_func_start WriteQuickSaveInfo -WriteQuickSaveInfo: ; 0x02049248 - stmdb sp!, {r3, lr} - mov ip, r0 - mov r2, r1 - mov r3, #0x190 - add r0, sp, #0 - mov r1, ip - str r3, [sp] - bl WriteSaveFile - ldmia sp!, {r3, pc} - arm_func_end WriteQuickSaveInfo - - arm_func_start ReadSaveHeader -ReadSaveHeader: ; 0x0204926C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, _0204932C ; =0x0000B65C - mov r1, #5 - bl MemAlloc - mov r4, r0 - ldr r3, _02049330 ; =_020AFF40 - mov r0, #0 - mov r1, r4 - mov r2, #0x38 - str r0, [r3] - bl sub_0204A8E0 - cmp r0, #0 - beq _020492B4 - mov r1, r4 - mov r0, #0xc8 - mov r2, #0x38 - bl sub_0204A8E0 -_020492B4: - cmp r0, #0 - ldrne r0, _02049330 ; =_020AFF40 - movne r1, #1 - strne r1, [r0, #4] - bne _02049310 - add r0, r4, #4 - bl CheckStringSave - cmp r0, #0 - ldreq r0, _02049330 ; =_020AFF40 - moveq r1, #5 - streq r1, [r0, #4] - beq _02049310 - ldr r1, [r4, #0x24] - ldr r0, _02049334 ; =0x09011416 - cmp r1, r0 - ldrne r0, _02049330 ; =_020AFF40 - movne r1, #4 - strne r1, [r0, #4] -#ifdef EUROPE - bne _02049310 - ldr r1, [r4, #0x2c] - ldr r0, _02049330 ; =_020AFF40 - mov r2, #0 - stmia r0, {r1, r2} - ldr r1, [r4, #0x28] - sub r0, r2, #1 - cmp r1, r0 - beq _02049310 - ldrsb r0, [r4, #0x34] - bl sub_020205C0 - bl sub_0202059C -#else - ldreq r2, [r4, #0x2c] - ldreq r0, _02049330 ; =_020AFF40 - moveq r1, #0 - streq r2, [r0] - streq r1, [r0, #4] -#endif -_02049310: - mov r0, r4 - bl MemFree - ldr r0, _02049330 ; =_020AFF40 - ldr r1, [r0] - str r1, [r5] - ldr r0, [r0, #4] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -#ifdef JAPAN -_0204932C: .word 0x0000B60C -#else -_0204932C: .word 0x0000B65C -#endif -_02049330: .word _020AFF40 -_02049334: .word 0x09011416 - arm_func_end ReadSaveHeader - - arm_func_start sub_02049338 -sub_02049338: ; 0x02049338 - ldr r1, _0204934C ; =_020AFF40 - ldr r2, [r1] - str r2, [r0] - ldr r0, [r1, #4] - bx lr - .align 2, 0 -_0204934C: .word _020AFF40 - arm_func_end sub_02049338 - - arm_func_start sub_02049350 -sub_02049350: ; 0x02049350 - ldr r0, _0204935C ; =_020AFF40 - ldr r0, [r0, #8] - bx lr - .align 2, 0 -_0204935C: .word _020AFF40 - arm_func_end sub_02049350 - - arm_func_start sub_02049360 -sub_02049360: ; 0x02049360 - ldr r1, _0204936C ; =_020AFF40 - str r0, [r1, #8] - bx lr - .align 2, 0 -_0204936C: .word _020AFF40 - arm_func_end sub_02049360 - - arm_func_start NoteLoadBase -NoteLoadBase: ; 0x02049370 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - ldr r0, _020495FC ; =0x0000B65C - mov r1, #5 - bl MemAlloc - mov r4, r0 - add r0, r4, #0x64 - add r6, r0, #0x400 - bl sub_02048BFC - mov r1, r0 - ldr r0, _02049600 ; =_0209CDA4 - bl Debug_Print0 - mov r0, #0 - bl SetNotifyNote - mov r0, #0 - str r0, [sp] - ldr r2, _020495FC ; =0x0000B65C - add r0, sp, #0 - mov r1, r4 - bl ReadSaveFile - movs r5, r0 - beq _02049400 - ldr r2, _020495FC ; =0x0000B65C - mov r3, #0xc8 - add r0, sp, #0 - mov r1, r4 - str r3, [sp] - bl ReadSaveFile - movs r5, r0 - ldrne r0, _02049604 ; =_020AFF40 - mvnne r1, #0 - strne r1, [r0, #8] - ldreq r0, _02049604 ; =_020AFF40 - moveq r1, #1 - streq r1, [r0, #8] - b _0204940C -_02049400: - ldr r0, _02049604 ; =_020AFF40 - mov r1, #0 - str r1, [r0, #8] -_0204940C: - cmp r5, #0 - cmpne r5, #2 - bne _0204943C - add r0, r4, #4 - bl CheckStringSave - cmp r0, #0 - moveq r5, #5 - beq _0204943C - ldr r1, [r4, #0x24] - ldr r0, _02049608 ; =0x09011416 - cmp r1, r0 - movne r5, #4 -_0204943C: - cmp r5, #0 - bne _020494A0 - ldr r1, [r4, #0x2c] - ldr r0, _0204960C ; =_0209CDB8 - bl Debug_Print0 - ldr r0, [r4, #0x2c] - bl sub_02048C0C - ldr r0, [r4, #0x28] - bl sub_02048C4C - ldr r0, [r4, #0x30] - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl SetRngSeed - ldr r0, [r4, #0x2c] - cmp r0, #0 - mvneq r0, #0 - streqb r0, [r4, #0x34] - beq _020494A0 - ldr r1, [r4, #0x28] - mvn r0, #0 - cmp r1, r0 - beq _020494A0 - ldrsb r0, [r4, #0x34] - bl sub_020205C0 - bl sub_0202059C -_020494A0: - cmp r5, #0 - bne _020494B8 - add r0, r4, #0x38 - bl RestoreScriptVariableValues - cmp r0, #0 - moveq r5, #4 -_020494B8: - cmp r5, #0 - bne _020495D4 - ldr r1, _02049610 ; =0x00007F6B - mov r0, r6 - bl ReadMonsterInfoFromSave - ldr r1, [r4, #0x438] - cmp r0, r1 - add r0, r6, #0x6b - ldr r1, _02049614 ; =0x000005DC - add r0, r0, #0x7f00 - movne r5, #3 - bl sub_02059A74 - ldr r1, [r4, #0x43c] - cmp r0, r1 - add r0, r6, #0x47 - ldr r1, _02049618 ; =0x000001F7 - add r0, r0, #0x8500 - movne r5, #3 - bl CopyProgressInfoFromScratchFrom - ldr r1, [r4, #0x440] - cmp r0, r1 - add r0, r6, #0x3e - ldr r1, _0204961C ; =0x00000DAC - add r0, r0, #0x8700 - movne r5, #3 - bl ReadItemsFromSave - ldr r1, [r4, #0x444] - cmp r0, r1 - add r0, r6, #0xea - add r0, r0, #0x9400 - mov r1, #0x10 - movne r5, #3 - bl sub_02050D84 - ldr r1, [r4, #0x448] - cmp r0, r1 - add r0, r6, #0xfa - add r0, r0, #0x9400 - mov r1, #0x340 - movne r5, #3 - bl sub_0204E19C - ldr r1, [r4, #0x450] - cmp r0, r1 - add r0, r6, #0x3a - ldr r1, _02049620 ; =0x000015A0 - add r0, r0, #0x9800 - movne r5, #3 - bl sub_0205BD9C - ldr r1, [r4, #0x454] - cmp r0, r1 - add r0, r6, #0xda - ldr r1, _02049624 ; =0x00000237 - add r0, r0, #0xad00 - movne r5, #3 - bl sub_0205FAB0 - ldr r1, [r4, #0x458] - cmp r0, r1 - add r0, r6, #0x11 - add r0, r0, #0xb000 - mov r1, #0xb - movne r5, #3 - bl LoadCroagunkItems - ldr r1, [r4, #0x45c] - cmp r0, r1 - add r0, r6, #0x1c - add r0, r0, #0xb000 -#ifdef JAPAN - mov r1, #0x18c -#else - mov r1, #0x1dc -#endif - movne r5, #3 - bl sub_0204A1DC - ldr r1, [r4, #0x460] - cmp r0, r1 - movne r5, #3 -_020495D4: - cmp r5, #0 - bne _020495E4 - bl sub_02048CF8 - b _020495E8 -_020495E4: - bl sub_02048C5C -_020495E8: - mov r0, r4 - bl MemFree - mov r0, r5 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -#ifdef JAPAN -_020495FC: .word 0x0000B60C -#else -_020495FC: .word 0x0000B65C -#endif -_02049600: .word _0209CDA4 -_02049604: .word _020AFF40 -_02049608: .word 0x09011416 -_0204960C: .word _0209CDB8 -_02049610: .word 0x00007F6B -_02049614: .word 0x000005DC -_02049618: .word 0x000001F7 -_0204961C: .word 0x00000DAC -_02049620: .word 0x000015A0 -_02049624: .word 0x00000237 - arm_func_end NoteLoadBase - - arm_func_start ReadQuickSaveInfo -ReadQuickSaveInfo: ; 0x02049628 - stmdb sp!, {r3, lr} - mov ip, r0 - mov r2, r1 - mov r3, #0x190 - add r0, sp, #0 - mov r1, ip - str r3, [sp] - bl ReadSaveFile - ldmia sp!, {r3, pc} - arm_func_end ReadQuickSaveInfo - - arm_func_start sub_0204964C -sub_0204964C: ; 0x0204964C - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, _02049678 ; =_0209CDD0 - bl InitMenuWithWindowExtraInfo - cmp r0, #0 - ldrne r1, _0204967C ; =_022AAEA4 - ldrne r0, _02049680 ; =_020AFF4C - movne r2, #0 - strne r4, [r1] - strne r2, [r0, #4] - ldmia sp!, {r4, pc} - .align 2, 0 -_02049678: .word _0209CDD0 -_0204967C: .word _022AAEA4 -_02049680: .word _020AFF4C - arm_func_end sub_0204964C - - arm_func_start sub_02049684 -sub_02049684: ; 0x02049684 - stmdb sp!, {r3, lr} - mov r0, #0xb4 - mov r1, #8 - bl MemAlloc - ldr r1, _020496EC ; =_020AFF4C - str r0, [r1] - add r0, r0, #0x1c - bl CopyMenuControlWindowExtraInfo - ldr r2, _020496EC ; =_020AFF4C - ldr r1, _020496F0 ; =_022AAEA4 - ldr r3, [r2] - str r0, [r3, #0x18] - ldr r3, [r1] - ldr r1, [r2] - mov r0, #0 - str r3, [r1, #8] - bl CreateDialogueBox - ldr r1, _020496EC ; =_020AFF4C - mov r3, #0 - ldr r2, [r1] - strb r0, [r2] - ldr r2, [r1] - mov r0, #1 - str r3, [r2, #4] - str r3, [r1, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_020496EC: .word _020AFF4C -_020496F0: .word _022AAEA4 - arm_func_end sub_02049684 - - arm_func_start sub_020496F4 -sub_020496F4: ; 0x020496F4 - stmdb sp!, {r3, lr} - ldr r0, _0204972C ; =_020AFF4C - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r0, [r0] - bl CloseDialogueBox - ldr r0, _0204972C ; =_020AFF4C - ldr r0, [r0] - bl MemFree - ldr r0, _0204972C ; =_020AFF4C - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0204972C: .word _020AFF4C - arm_func_end sub_020496F4 - - arm_func_start sub_02049730 -sub_02049730: ; 0x02049730 - stmdb sp!, {r3, lr} - ldr r1, _02049A18 ; =_020AFF4C - ldr r3, [r1] - ldr r0, [r3, #4] - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _02049A10 -_0204974C: ; jump table - b _02049770 ; case 0 - b _020497A4 ; case 1 - b _020497C4 ; case 2 - b _020497E8 ; case 3 - b _020498C8 ; case 4 - b _0204996C ; case 5 - b _020499A0 ; case 6 - b _020499CC ; case 7 - b _020499FC ; case 8 -_02049770: - ldr r0, [r3, #8] - ldr r1, _02049A1C ; =_0209CDE0 - mov r2, r0, lsl #1 - ldrsb r0, [r3] - ldrh r2, [r1, r2] - ldr r1, _02049A20 ; =0x00000408 - mov r3, #0 - bl ShowStringIdInDialogueBox - ldr r0, _02049A18 ; =_020AFF4C - mov r1, #1 - ldr r0, [r0] - str r1, [r0, #4] - b _02049A10 -_020497A4: - ldrsb r0, [r3] - bl IsDialogueBoxActive - cmp r0, #0 - ldreq r0, _02049A18 ; =_020AFF4C - moveq r1, #2 - ldreq r0, [r0] - streq r1, [r0, #4] - b _02049A10 -_020497C4: - mov r0, #0xe0 - mov r1, #0x88 - mov r2, #1 - bl sub_02029F88 - ldr r0, _02049A18 ; =_020AFF4C - mov r1, #3 - ldr r0, [r0] - str r1, [r0, #4] - b _02049A10 -_020497E8: - bl sub_02003B94 - ldr r0, _02049A18 ; =_020AFF4C - ldr r1, _02049A24 ; =_0209CE10 - ldr r3, [r0] - ldr r2, [r3, #8] - ldr r1, [r1, r2, lsl #2] - str r1, [r3, #0x10] - ldr r0, [r0] - ldr r0, [r0, #0x10] - cmp r0, #4 - bne _02049834 - ldr r0, _02049A28 ; =0x000F120A - bl sub_02048DC4 - mov r0, #2 - bl NoteSaveBase - ldr r1, _02049A18 ; =_020AFF4C - ldr r1, [r1] - str r0, [r1, #0xc] - b _020498B0 -_02049834: - cmp r0, #2 - bne _020498A0 - bl sub_02048CB8 - ldr r2, _02049A18 ; =_020AFF4C - ldr r1, _02049A2C ; =0x000F1207 - ldr r3, [r2] - str r0, [r3, #0x14] - ldr r0, [r2] - ldr r0, [r0, #0x14] - cmp r0, r1 - bne _02049868 - add r0, r1, #1 - bl sub_02048DC4 -_02049868: - mov r0, #2 - bl NoteSaveBase - ldr r1, _02049A18 ; =_020AFF4C - ldr r2, [r1] - str r0, [r2, #0xc] - ldr r1, [r1] - ldr r0, [r1, #0xc] - cmp r0, #0 - ldreq r0, [r1, #0x14] - ldreq r1, _02049A2C ; =0x000F1207 - cmpeq r0, r1 - bne _020498B0 - bl sub_02048DC4 - b _020498B0 -_020498A0: - bl NoteSaveBase - ldr r1, _02049A18 ; =_020AFF4C - ldr r1, [r1] - str r0, [r1, #0xc] -_020498B0: - bl sub_02003BC8 - ldr r0, _02049A18 ; =_020AFF4C - mov r1, #4 - ldr r0, [r0] - str r1, [r0, #4] - b _02049A10 -_020498C8: - bl sub_02029FBC - ldr r0, _02049A18 ; =_020AFF4C - ldr r3, [r0] - ldr r0, [r3, #0xc] - cmp r0, #1 - bne _02049908 -#ifdef JAPAN - ldr r1, _02049A30 ; =0x0000040C - ldrsb r0, [r3] - add r2, r1, #0xbd -#else - ldrsb r0, [r3] - ldr r1, _02049A30 ; =0x0000040C - mov r2, #0x238 -#endif - mov r3, #0 - bl ShowStringIdInDialogueBox - ldr r0, _02049A18 ; =_020AFF4C - mov r1, #8 - ldr r0, [r0] - str r1, [r0, #4] - b _02049A10 -_02049908: - cmp r0, #0 - bne _02049944 - ldr r0, [r3, #8] - ldr r1, _02049A34 ; =_0209CDF8 - mov r2, r0, lsl #1 - ldrsb r0, [r3] - ldrh r2, [r1, r2] - ldr r1, _02049A38 ; =0x0000061C - mov r3, #0 - bl ShowStringIdInDialogueBox - ldr r0, _02049A18 ; =_020AFF4C - mov r1, #5 - ldr r0, [r0] - str r1, [r0, #4] - b _02049A10 -_02049944: - ldrsb r0, [r3] - ldr r1, _02049A38 ; =0x0000061C - ldr r2, _02049A3C ; =0x00000239 - mov r3, #0 - bl ShowStringIdInDialogueBox - ldr r0, _02049A18 ; =_020AFF4C - mov r1, #5 - ldr r0, [r0] - str r1, [r0, #4] - b _02049A10 -_0204996C: - ldrsb r0, [r3] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02049A10 - ldr r0, _02049A18 ; =_020AFF4C - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_0202F334 - ldr r0, _02049A18 ; =_020AFF4C - mov r1, #6 - ldr r0, [r0] - str r1, [r0, #4] - b _02049A10 -_020499A0: - ldrsb r0, [r3] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02049A10 - ldr r0, _02049A18 ; =_020AFF4C - mov r1, #2 - str r1, [r0, #4] - ldr r0, [r0] - mov r1, #7 - str r1, [r0, #4] - b _02049A10 -_020499CC: - mov r0, #9 - str r0, [r3, #4] - ldr r2, [r1] - ldr r0, [r2, #0x18] - tst r0, #0x100 - beq _020499F4 - ldr r0, [r2, #0xa4] - ldr r1, [r1, #4] - ldr r2, [r2, #0xa0] - blx r2 -_020499F4: - mov r0, #4 - ldmia sp!, {r3, pc} -_020499FC: - ldrsb r0, [r3] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02049A10 - bl CardBackupError -_02049A10: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02049A18: .word _020AFF4C -_02049A1C: .word _0209CDE0 -_02049A20: .word 0x00000408 -_02049A24: .word _0209CE10 -_02049A28: .word 0x000F120A -_02049A2C: .word 0x000F1207 -_02049A30: .word 0x0000040C -_02049A34: .word _0209CDF8 -_02049A38: .word 0x0000061C -#ifdef JAPAN -_02049A3C: .word 0x000004CA -#else -_02049A3C: .word 0x00000239 -#endif - arm_func_end sub_02049730 - - arm_func_start sub_02049A40 -sub_02049A40: ; 0x02049A40 - stmdb sp!, {r3, lr} - mov r3, r0 - mov r2, r1 - ldr r0, _02049A6C ; =_0209CE40 - mov r1, r3 - bl InitMenuWithWindowExtraInfo - cmp r0, #0 - ldrne r0, _02049A70 ; =_020AFF54 - movne r1, #0 - strne r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02049A6C: .word _0209CE40 -_02049A70: .word _020AFF54 - arm_func_end sub_02049A40 - - arm_func_start sub_02049A74 -sub_02049A74: ; 0x02049A74 - stmdb sp!, {r3, lr} - mov r0, #0xa8 - mov r1, #8 - bl MemAlloc - ldr r1, _02049ACC ; =_020AFF54 - str r0, [r1] - add r0, r0, #0x10 - bl CopyMenuControlWindowExtraInfo - ldr r1, _02049ACC ; =_020AFF54 - ldr r1, [r1] - str r0, [r1, #0xc] - mov r0, #0 - bl CreateDialogueBox - ldr r1, _02049ACC ; =_020AFF54 - mov r3, #0 - ldr r2, [r1] - strb r0, [r2] - ldr r2, [r1] - mov r0, #1 - str r3, [r2, #4] - str r3, [r1, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02049ACC: .word _020AFF54 - arm_func_end sub_02049A74 - - arm_func_start sub_02049AD0 -sub_02049AD0: ; 0x02049AD0 - stmdb sp!, {r3, lr} - ldr r0, _02049B08 ; =_020AFF54 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r0, [r0] - bl CloseDialogueBox - ldr r0, _02049B08 ; =_020AFF54 - ldr r0, [r0] - bl MemFree - ldr r0, _02049B08 ; =_020AFF54 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02049B08: .word _020AFF54 - arm_func_end sub_02049AD0 - - arm_func_start sub_02049B0C -sub_02049B0C: ; 0x02049B0C - stmdb sp!, {r3, lr} - ldr r0, _02049D34 ; =_020AFF54 - ldr r2, [r0] - ldr r0, [r2, #4] - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _02049D2C -_02049B28: ; jump table - b _02049B4C ; case 0 - b _02049B74 ; case 1 - b _02049B94 ; case 2 - b _02049BB8 ; case 3 - b _02049BEC ; case 4 - b _02049C74 ; case 5 - b _02049CA8 ; case 6 - b _02049CD4 ; case 7 - b _02049D18 ; case 8 -_02049B4C: - ldrsb r0, [r2] - ldr r1, _02049D38 ; =0x00000408 -#ifdef JAPAN - mov r2, #0x4e0 -#else - ldr r2, _02049D3C ; =0x0000024F -#endif - mov r3, #0 - bl ShowStringIdInDialogueBox - ldr r0, _02049D34 ; =_020AFF54 - mov r1, #1 - ldr r0, [r0] - str r1, [r0, #4] - b _02049D2C -_02049B74: - ldrsb r0, [r2] - bl IsDialogueBoxActive - cmp r0, #0 - ldreq r0, _02049D34 ; =_020AFF54 - moveq r1, #2 - ldreq r0, [r0] - streq r1, [r0, #4] - b _02049D2C -_02049B94: - mov r0, #0xe0 - mov r1, #0x88 - mov r2, #1 - bl sub_02029F88 - ldr r0, _02049D34 ; =_020AFF54 - mov r1, #3 - ldr r0, [r0] - str r1, [r0, #4] - b _02049D2C -_02049BB8: - bl sub_02003B94 - bl sub_02048454 - mov r0, #0 - bl NoteSaveBase - ldr r1, _02049D34 ; =_020AFF54 - ldr r1, [r1] - str r0, [r1, #8] - bl sub_02003BC8 - ldr r0, _02049D34 ; =_020AFF54 - mov r1, #4 - ldr r0, [r0] - str r1, [r0, #4] - b _02049D2C -_02049BEC: - bl sub_02029FBC - ldr r0, _02049D34 ; =_020AFF54 - mov r3, #0 -#ifdef JAPAN - ldr r2, [r0] - ldr r0, [r2, #8] - cmp r0, #1 - bne _02049C2C - ldr r1, _02049D40 ; =0x0000040C - ldrsb r0, [r2] - add r2, r1, #0xbd -#else - ldr r1, [r0] - ldr r0, [r1, #8] - cmp r0, #1 - bne _02049C2C - ldrsb r0, [r1] - ldr r1, _02049D40 ; =0x0000040C - mov r2, #0x238 -#endif - bl ShowStringIdInDialogueBox - ldr r0, _02049D34 ; =_020AFF54 - mov r1, #8 - ldr r0, [r0] - str r1, [r0, #4] - b _02049D2C -_02049C2C: - cmp r0, #0 -#ifdef JAPAN - ldrsb r0, [r2] - ldr r1, _02049D44 ; =0x0000061C - bne _02049C58 - ldr r2, _0204A0B0 ; =0x000004E1 -#else - ldrsb r0, [r1] - ldr r1, _02049D44 ; =0x0000061C - bne _02049C58 - mov r2, #0x250 -#endif - bl ShowStringIdInDialogueBox - ldr r0, _02049D34 ; =_020AFF54 - mov r1, #5 - ldr r0, [r0] - str r1, [r0, #4] - b _02049D2C -_02049C58: - ldr r2, _02049D48 ; =0x0000023A - bl ShowStringIdInDialogueBox - ldr r0, _02049D34 ; =_020AFF54 - mov r1, #5 - ldr r0, [r0] - str r1, [r0, #4] - b _02049D2C -_02049C74: - ldrsb r0, [r2] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02049D2C - ldr r0, _02049D34 ; =_020AFF54 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_0202F334 - ldr r0, _02049D34 ; =_020AFF54 - mov r1, #6 - ldr r0, [r0] - str r1, [r0, #4] - b _02049D2C -_02049CA8: - ldrsb r0, [r2] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02049D2C - ldr r0, _02049D34 ; =_020AFF54 - mov r1, #2 - str r1, [r0, #4] - ldr r0, [r0] - mov r1, #7 - str r1, [r0, #4] - b _02049D2C -_02049CD4: - mov r1, #9 - add r0, sp, #0 - str r1, [r2, #4] - bl CopyFrameTypeOption - ldrb r0, [sp] - bl sub_02027180 - ldr r0, _02049D34 ; =_020AFF54 - ldr r1, [r0] - ldr r0, [r1, #0xc] - tst r0, #0x100 - beq _02049D10 - ldr r0, [r1, #0x98] - ldr r2, [r1, #0x94] - mov r1, #8 - blx r2 -_02049D10: - mov r0, #4 - ldmia sp!, {r3, pc} -_02049D18: - ldrsb r0, [r2] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02049D2C - bl CardBackupError -_02049D2C: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02049D34: .word _020AFF54 -_02049D38: .word 0x00000408 -#ifdef JAPAN -_02049D40: .word 0x0000040C -_02049D44: .word 0x0000061C -_0204A0B0: .word 0x000004E1 -_02049D48: .word 0x000004CB -#else -_02049D3C: .word 0x0000024F -_02049D40: .word 0x0000040C -_02049D44: .word 0x0000061C -_02049D48: .word 0x0000023A -#endif - arm_func_end sub_02049B0C - - arm_func_start sub_02049D4C -sub_02049D4C: ; 0x02049D4C - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, _02049D78 ; =_0209CE58 - bl InitMenuWithWindowExtraInfo - cmp r0, #0 - ldrne r1, _02049D7C ; =_022AAEA8 - ldrne r0, _02049D80 ; =_020AFF5C - movne r2, #0 - strne r4, [r1] - strne r2, [r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_02049D78: .word _0209CE58 -_02049D7C: .word _022AAEA8 -_02049D80: .word _020AFF5C - arm_func_end sub_02049D4C - - arm_func_start sub_02049D84 -sub_02049D84: ; 0x02049D84 - stmdb sp!, {r3, lr} - mov r0, #0xa8 - mov r1, #8 - bl MemAlloc - ldr r1, _02049DEC ; =_020AFF5C - str r0, [r1, #4] - add r0, r0, #0x10 - bl CopyMenuControlWindowExtraInfo - ldr r2, _02049DEC ; =_020AFF5C - ldr r1, _02049DF0 ; =_022AAEA8 - ldr r3, [r2, #4] - str r0, [r3, #0xc] - ldr r3, [r1] - ldr r1, [r2, #4] - mov r0, #0 - str r3, [r1, #8] - bl CreateDialogueBox - ldr r1, _02049DEC ; =_020AFF5C - mov r3, #0 - ldr r2, [r1, #4] - strb r0, [r2] - ldr r2, [r1, #4] - mov r0, #1 - str r3, [r2, #4] - str r3, [r1] - ldmia sp!, {r3, pc} - .align 2, 0 -_02049DEC: .word _020AFF5C -_02049DF0: .word _022AAEA8 - arm_func_end sub_02049D84 - - arm_func_start sub_02049DF4 -sub_02049DF4: ; 0x02049DF4 - stmdb sp!, {r3, lr} - ldr r0, _02049E2C ; =_020AFF5C - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r0, [r0] - bl CloseDialogueBox - ldr r0, _02049E2C ; =_020AFF5C - ldr r0, [r0, #4] - bl MemFree - ldr r0, _02049E2C ; =_020AFF5C - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02049E2C: .word _020AFF5C - arm_func_end sub_02049DF4 - - arm_func_start sub_02049E30 -sub_02049E30: ; 0x02049E30 - stmdb sp!, {r3, lr} - ldr r1, _0204A004 ; =_020AFF5C - ldr r3, [r1, #4] - ldr r0, [r3, #4] - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _02049FFC -_02049E4C: ; jump table - b _02049E6C ; case 0 - b _02049EA0 ; case 1 - b _02049EC0 ; case 2 - b _02049EE4 ; case 3 - b _02049F2C ; case 4 - b _02049F6C ; case 5 - b _02049FA0 ; case 6 - b _02049FCC ; case 7 -_02049E6C: - ldr r0, [r3, #8] - ldr r1, _0204A008 ; =_0209CE54 - mov r2, r0, lsl #1 - ldrsb r0, [r3] - ldrh r2, [r1, r2] - ldr r1, _0204A00C ; =0x00000408 - mov r3, #0 - bl ShowStringIdInDialogueBox - ldr r0, _0204A004 ; =_020AFF5C - mov r1, #1 - ldr r0, [r0, #4] - str r1, [r0, #4] - b _02049FFC -_02049EA0: - ldrsb r0, [r3] - bl IsDialogueBoxActive - cmp r0, #0 - ldreq r0, _0204A004 ; =_020AFF5C - moveq r1, #2 - ldreq r0, [r0, #4] - streq r1, [r0, #4] - b _02049FFC -_02049EC0: - mov r0, #0xe0 - mov r1, #0x88 - mov r2, #1 - bl sub_02029F88 - ldr r0, _0204A004 ; =_020AFF5C - mov r1, #3 - ldr r0, [r0, #4] - str r1, [r0, #4] - b _02049FFC -_02049EE4: - bl sub_02003B94 - ldr r0, _0204A004 ; =_020AFF5C - ldr r0, [r0, #4] - ldr r0, [r0, #8] - cmp r0, #0 - beq _02049F08 - cmp r0, #1 - beq _02049F10 - b _02049F14 -_02049F08: - bl sub_0204A624 - b _02049F14 -_02049F10: - bl sub_0204A72C -_02049F14: - bl sub_02003BC8 - ldr r0, _0204A004 ; =_020AFF5C - mov r1, #4 - ldr r0, [r0, #4] - str r1, [r0, #4] - b _02049FFC -_02049F2C: - bl sub_02029FBC - ldr r0, _0204A004 ; =_020AFF5C - ldr r2, _0204A010 ; =_0209CE50 - ldr r0, [r0, #4] - ldr r1, _0204A014 ; =0x0000061C - ldr r3, [r0, #8] - ldrsb r0, [r0] - mov r3, r3, lsl #1 - ldrh r2, [r2, r3] - mov r3, #0 - bl ShowStringIdInDialogueBox - ldr r0, _0204A004 ; =_020AFF5C - mov r1, #5 - ldr r0, [r0, #4] - str r1, [r0, #4] - b _02049FFC -_02049F6C: - ldrsb r0, [r3] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02049FFC - ldr r0, _0204A004 ; =_020AFF5C - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl sub_0202F334 - ldr r0, _0204A004 ; =_020AFF5C - mov r1, #6 - ldr r0, [r0, #4] - str r1, [r0, #4] - b _02049FFC -_02049FA0: - ldrsb r0, [r3] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02049FFC - ldr r0, _0204A004 ; =_020AFF5C - mov r1, #2 - str r1, [r0] - ldr r0, [r0, #4] - mov r1, #7 - str r1, [r0, #4] - b _02049FFC -_02049FCC: - mov r0, #8 - str r0, [r3, #4] - ldr r2, [r1, #4] - ldr r0, [r2, #0xc] - tst r0, #0x100 - beq _02049FF4 - ldr r0, [r2, #0x98] - ldr r1, [r1] - ldr r2, [r2, #0x94] - blx r2 -_02049FF4: - mov r0, #4 - ldmia sp!, {r3, pc} -_02049FFC: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0204A004: .word _020AFF5C -_0204A008: .word _0209CE54 -_0204A00C: .word 0x00000408 -_0204A010: .word _0209CE50 -_0204A014: .word 0x0000061C - arm_func_end sub_02049E30 - - arm_func_start sub_0204A018 -sub_0204A018: ; 0x0204A018 - ldr ip, _0204A024 ; =InitMenu - ldr r0, _0204A028 ; =_0209CE68 - bx ip - .align 2, 0 -_0204A024: .word InitMenu -_0204A028: .word _0209CE68 - arm_func_end sub_0204A018 - - arm_func_start sub_0204A02C -sub_0204A02C: ; 0x0204A02C - stmdb sp!, {r3, lr} - mov r0, #1 - mov r1, #8 - bl MemAlloc - ldr r1, _0204A078 ; =_020AFF64 - str r0, [r1] - mov r0, #0 - bl CreateDialogueBox - ldr r3, _0204A078 ; =_020AFF64 - ldr r1, _0204A07C ; =0x00000408 - ldr ip, [r3] -#ifdef JAPAN - add r2, r1, #0xc1 -#else - mov r2, #0x238 -#endif - strb r0, [ip] - ldr r0, [r3] - mov r3, #0 - ldrsb r0, [r0] - bl ShowStringIdInDialogueBox - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0204A078: .word _020AFF64 -_0204A07C: .word 0x00000408 - arm_func_end sub_0204A02C - - arm_func_start sub_0204A080 -sub_0204A080: ; 0x0204A080 - stmdb sp!, {r3, lr} - ldr r0, _0204A0B8 ; =_020AFF64 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r0, [r0] - bl CloseDialogueBox - ldr r0, _0204A0B8 ; =_020AFF64 - ldr r0, [r0] - bl MemFree - ldr r0, _0204A0B8 ; =_020AFF64 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0204A0B8: .word _020AFF64 - arm_func_end sub_0204A080 - - arm_func_start sub_0204A0BC -sub_0204A0BC: ; 0x0204A0BC - stmdb sp!, {r3, lr} - ldr r0, _0204A0E4 ; =_020AFF64 - ldr r0, [r0] - ldrsb r0, [r0] - bl IsDialogueBoxActive - cmp r0, #0 - bne _0204A0DC - bl CardBackupError -_0204A0DC: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0204A0E4: .word _020AFF64 - arm_func_end sub_0204A0BC - - arm_func_start sub_0204A0E8 -sub_0204A0E8: ; 0x0204A0E8 - ldr ip, _0204A0F4 ; =InitMenu - ldr r0, _0204A0F8 ; =_0209CE78 - bx ip - .align 2, 0 -_0204A0F4: .word InitMenu -_0204A0F8: .word _0209CE78 - arm_func_end sub_0204A0E8 - - arm_func_start sub_0204A0FC -sub_0204A0FC: ; 0x0204A0FC - stmdb sp!, {r3, lr} - mov r0, #1 - mov r1, #8 - bl MemAlloc - ldr r1, _0204A148 ; =_020AFF68 - str r0, [r1] - mov r0, #0 - bl CreateDialogueBox - ldr r3, _0204A148 ; =_020AFF68 - ldr r1, _0204A14C ; =0x00000408 - ldr ip, [r3] -#ifdef JAPAN - add r2, r1, #0xd0 -#else - ldr r2, _0204A150 ; =0x00000247 -#endif - strb r0, [ip] - ldr r0, [r3] - mov r3, #0 - ldrsb r0, [r0] - bl ShowStringIdInDialogueBox - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0204A148: .word _020AFF68 -_0204A14C: .word 0x00000408 -#ifndef JAPAN -_0204A150: .word 0x00000247 -#endif - arm_func_end sub_0204A0FC - - arm_func_start sub_0204A154 -sub_0204A154: ; 0x0204A154 - stmdb sp!, {r3, lr} - ldr r0, _0204A18C ; =_020AFF68 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r0, [r0] - bl CloseDialogueBox - ldr r0, _0204A18C ; =_020AFF68 - ldr r0, [r0] - bl MemFree - ldr r0, _0204A18C ; =_020AFF68 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0204A18C: .word _020AFF68 - arm_func_end sub_0204A154 - - arm_func_start sub_0204A190 -sub_0204A190: ; 0x0204A190 - mov r0, #1 - bx lr - arm_func_end sub_0204A190 - - arm_func_start sub_0204A198 -sub_0204A198: ; 0x0204A198 - ldr ip, _0204A1A0 ; =OS_GetMacAddress - bx ip - .align 2, 0 -_0204A1A0: .word OS_GetMacAddress - arm_func_end sub_0204A198 - - arm_func_start sub_0204A1A4 -sub_0204A1A4: ; 0x0204A1A4 - stmdb sp!, {r3, lr} - ldr r0, _0204A1C4 ; =_022AAEAC -#ifdef JAPAN - mov r1, #0x1a0 -#else - mov r1, #0x1f0 -#endif - bl MemZero - ldr r1, _0204A1C4 ; =_022AAEAC - ldr r0, _0204A1C8 ; =_020AFF6C - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0204A1C4: .word _022AAEAC -_0204A1C8: .word _020AFF6C - arm_func_end sub_0204A1A4 - - arm_func_start sub_0204A1CC -sub_0204A1CC: ; 0x0204A1CC - ldr r0, _0204A1D8 ; =_020AFF6C - ldr r0, [r0] - bx lr - .align 2, 0 -_0204A1D8: .word _020AFF6C - arm_func_end sub_0204A1CC - - arm_func_start sub_0204A1DC -sub_0204A1DC: ; 0x0204A1DC -#ifdef JAPAN -#define SUB_0204A1DC_OFFSET -0x50 -#else -#define SUB_0204A1DC_OFFSET 0 -#endif - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x14 - mov r3, r0 - mov r2, r1 - add r0, sp, #4 - mov r1, r3 - bl InitBitstreamForWrite - ldr r1, _0204A3E0 ; =_020AFF6C - add r0, sp, #4 - ldr r1, [r1] - mov r2, #0x200 - bl CopyBitsFrom -#ifdef JAPAN - ldr r4, _0204A3E0 ; =_020AFF6C - mov r7, #0 - add r6, sp, #4 - mov r5, #0x28 -_0204A220: - ldr r0, [r4] - add r1, r7, r7, lsl #2 - add r3, r0, #0x40 - mov r0, r6 - mov r2, r5 - add r1, r3, r1 - bl CopyBitsFrom - add r7, r7, #1 - cmp r7, #0x10 -#else - ldr r5, _0204A3E0 ; =_020AFF6C - mov r8, #0 - add r7, sp, #4 - mov r6, #0x50 - mov r4, #0xa -_0204A220: - ldr r1, [r5] - mov r0, r7 - add r1, r1, #0x40 - mla r1, r8, r4, r1 - mov r2, r6 - bl CopyBitsFrom - add r8, r8, #1 - cmp r8, #0x10 -#endif - blt _0204A220 - ldr r5, _0204A3E0 ; =_020AFF6C - mov r8, #0 - add r7, sp, #4 - mov r6, #0x60 - mov r4, #0xc -_0204A258: - ldr r1, [r5] - mov r0, r7 - add r1, r1, #0xe0 + SUB_0204A1DC_OFFSET - mla r1, r8, r4, r1 - mov r2, r6 - bl CopyBitsFrom - add r8, r8, #1 - cmp r8, #0x10 - blt _0204A258 - mov sb, #0 - mov r5, #1 - ldr sl, _0204A3E0 ; =_020AFF6C - mov r4, sb - add r8, sp, #4 - add r7, sp, #0 - mov r6, r5 -_0204A298: - mov r0, r8 - mov r1, r7 - mov r2, r6 - bl CopyBitsFrom - ldrb r0, [sp] - cmp r0, #0 - ldr r0, [sl] - movne r1, r5 - add r0, r0, sb - moveq r1, r4 - add sb, sb, #1 - strb r1, [r0, #0x1a0 + SUB_0204A1DC_OFFSET] - cmp sb, #0x10 - blt _0204A298 - ldr r1, _0204A3E0 ; =_020AFF6C - add r0, sp, #4 - ldr r1, [r1] - mov r2, #0x1b0 - add r1, r1, #0x1b0 + SUB_0204A1DC_OFFSET - bl CopyBitsFrom - ldr r1, _0204A3E0 ; =_020AFF6C - add r0, sp, #4 - ldr r1, [r1] - mov r2, #0xe - add r1, r1, #0xe6 + SUB_0204A1DC_OFFSET - add r1, r1, #0x100 - bl CopyBitsFrom - ldr r1, _0204A3E0 ; =_020AFF6C - add r0, sp, #4 - ldr r1, [r1] - mov r2, #0xe - add r1, r1, #0x1e8 + SUB_0204A1DC_OFFSET - bl CopyBitsFrom - add r0, sp, #4 - add r1, sp, #0 - mov r2, #1 - bl CopyBitsFrom - ldrb r0, [sp] - ldr r1, _0204A3E0 ; =_020AFF6C - cmp r0, #0 - movne r3, #1 - ldr r2, [r1] - moveq r3, #0 - strb r3, [r2, #0x1ea + SUB_0204A1DC_OFFSET] - add r0, sp, #4 - add r1, sp, #0 - mov r2, #1 - bl CopyBitsFrom - ldrb r0, [sp] - ldr r1, _0204A3E0 ; =_020AFF6C - cmp r0, #0 - movne r3, #1 - ldr r2, [r1] - moveq r3, #0 - strb r3, [r2, #0x1eb + SUB_0204A1DC_OFFSET] - add r0, sp, #4 - add r1, sp, #0 - mov r2, #1 - bl CopyBitsFrom - ldrb r0, [sp] - ldr r1, _0204A3E0 ; =_020AFF6C - cmp r0, #0 - movne r3, #1 - ldr r2, [r1] - moveq r3, #0 - strb r3, [r2, #0x1ec + SUB_0204A1DC_OFFSET] - add r0, sp, #4 - add r1, sp, #0 - mov r2, #1 - bl CopyBitsFrom - ldrb r0, [sp] - ldr r1, _0204A3E0 ; =_020AFF6C - cmp r0, #0 - movne r2, #1 - ldr r1, [r1] - moveq r2, #0 - add r0, sp, #4 - strb r2, [r1, #0x1ed + SUB_0204A1DC_OFFSET] - bl BitstreamDebug - ldr r0, [sp, #0xc] - add sp, sp, #0x14 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0204A3E0: .word _020AFF6C - arm_func_end sub_0204A1DC - - arm_func_start sub_0204A3E4 -sub_0204A3E4: ; 0x0204A3E4 -#ifdef JAPAN -#define SUB_0204A3E4_OFFSET -0x50 -#else -#define SUB_0204A3E4_OFFSET 0 -#endif - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x14 - mov r5, r0 - mov r2, r1 - mov r4, #0xff - mov r3, #0 - add r0, sp, #4 - mov r1, r5 - strb r4, [sp, #1] - strb r3, [sp] - bl InitBitstreamForRead - ldr r1, _0204A5CC ; =_020AFF6C - add r0, sp, #4 - ldr r1, [r1] - mov r2, #0x200 - bl CopyBitsTo -#ifdef JAPAN - ldr r4, _0204A5CC ; =_020AFF6C - mov r7, #0 - add r6, sp, #4 - mov r5, #0x28 -_0204A438: - ldr r0, [r4] - add r1, r7, r7, lsl #2 - add r3, r0, #0x40 - mov r0, r6 - mov r2, r5 - add r1, r3, r1 - bl CopyBitsTo - add r7, r7, #1 - cmp r7, #0x10 -#else - ldr r5, _0204A5CC ; =_020AFF6C - mov r8, #0 - add r7, sp, #4 - mov r6, #0x50 - mov r4, #0xa -_0204A438: - ldr r1, [r5] - mov r0, r7 - add r1, r1, #0x40 - mla r1, r8, r4, r1 - mov r2, r6 - bl CopyBitsTo - add r8, r8, #1 - cmp r8, #0x10 -#endif - blt _0204A438 - ldr r5, _0204A5CC ; =_020AFF6C - mov r8, #0 - add r7, sp, #4 - mov r6, #0x60 - mov r4, #0xc -_0204A470: - ldr r1, [r5] - mov r0, r7 - add r1, r1, #0xe0 + SUB_0204A3E4_OFFSET - mla r1, r8, r4, r1 - mov r2, r6 - bl CopyBitsTo - add r8, r8, #1 - cmp r8, #0x10 - blt _0204A470 - ldr r5, _0204A5CC ; =_020AFF6C - mov r4, #0 - add r8, sp, #0 - add sb, sp, #1 - add r7, sp, #4 - mov r6, #1 -_0204A4AC: - ldr r0, [r5] - mov r2, r6 - add r0, r0, r4 - ldrb r0, [r0, #0x1a0 + SUB_0204A3E4_OFFSET] - cmp r0, #0 - movne r1, sb - moveq r1, r8 - mov r0, r7 - bl CopyBitsTo - add r4, r4, #1 - cmp r4, #0x10 - blt _0204A4AC - ldr r1, _0204A5CC ; =_020AFF6C - add r0, sp, #4 - ldr r1, [r1] - mov r2, #0x1b0 - add r1, r1, #0x1b0 + SUB_0204A3E4_OFFSET - bl CopyBitsTo - ldr r1, _0204A5CC ; =_020AFF6C - add r0, sp, #4 - ldr r1, [r1] - mov r2, #0xe - add r1, r1, #0xe6 + SUB_0204A3E4_OFFSET - add r1, r1, #0x100 - bl CopyBitsTo - ldr r1, _0204A5CC ; =_020AFF6C - add r0, sp, #4 - ldr r1, [r1] - mov r2, #0xe - add r1, r1, #0x1e8 + SUB_0204A3E4_OFFSET - bl CopyBitsTo - ldr r0, _0204A5CC ; =_020AFF6C - mov r2, #1 - ldr r0, [r0] - ldrb r0, [r0, #0x1ea + SUB_0204A3E4_OFFSET] - cmp r0, #0 - addne r1, sp, #1 - addeq r1, sp, #0 - add r0, sp, #4 - bl CopyBitsTo - ldr r0, _0204A5CC ; =_020AFF6C - mov r2, #1 - ldr r0, [r0] - ldrb r0, [r0, #0x1eb + SUB_0204A3E4_OFFSET] - cmp r0, #0 - addne r1, sp, #1 - addeq r1, sp, #0 - add r0, sp, #4 - bl CopyBitsTo - ldr r0, _0204A5CC ; =_020AFF6C - mov r2, #1 - ldr r0, [r0] - ldrb r0, [r0, #0x1ec + SUB_0204A3E4_OFFSET] - cmp r0, #0 - addne r1, sp, #1 - addeq r1, sp, #0 - add r0, sp, #4 - bl CopyBitsTo - ldr r0, _0204A5CC ; =_020AFF6C - mov r2, #1 - ldr r0, [r0] - ldrb r0, [r0, #0x1ed + SUB_0204A3E4_OFFSET] - cmp r0, #0 - addne r1, sp, #1 - addeq r1, sp, #0 - add r0, sp, #4 - bl CopyBitsTo - add r0, sp, #4 - bl BitstreamDebug - ldr r0, [sp, #0xc] - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0204A5CC: .word _020AFF6C - arm_func_end sub_0204A3E4 - - arm_func_start sub_0204A5D0 -sub_0204A5D0: ; 0x0204A5D0 - stmdb sp!, {r4, lr} - bl CARD_Init - bl OS_GetLockID - mov r4, r0 - mov r0, r4, lsl #0x10 - mov r0, r0, lsr #0x10 - bl Card_LockBackup - ldr r0, _0204A61C ; =0x00001101 - bl Card_IdentifyBackup - bl Card_GetBackupTotalSize - ldr r2, _0204A620 ; =_022AB09C - mov r1, r4, lsl #0x10 - str r0, [r2] - mov r0, r1, lsr #0x10 - bl Card_UnlockBackup - mov r0, r4, lsl #0x10 - mov r0, r0, lsr #0x10 - bl OS_ReleaseLockId - ldmia sp!, {r4, pc} - .align 2, 0 -_0204A61C: .word 0x00001101 -_0204A620: .word _022AB09C - arm_func_end sub_0204A5D0 - - arm_func_start sub_0204A624 -sub_0204A624: ; 0x0204A624 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - sub sp, sp, #0x400 - bl Card_GetCurrentBackupType - and r0, r0, #0xff - cmp r0, #1 - bne _0204A720 - mov r1, #0 - mov r0, #0xff - add r8, sp, #0x14 -_0204A64C: - strb r0, [r8, r1] - add r1, r1, #1 - cmp r1, #0x400 - blt _0204A64C - mov r7, #0 - mov fp, r7 -_0204A664: - mov r6, #0 - mov sb, r7, lsl #8 - b _0204A70C -_0204A670: - bl OS_GetLockID - mov r5, r0 - bl sub_02002580 - mov r4, r0 - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - bl Card_LockBackup - mov r0, r4 - mov r1, #0x13 - bl sub_020027F8 - str fp, [sp] - mov sl, r0 - str fp, [sp, #4] - mov r1, #8 - str r1, [sp, #8] - mov r1, #0xa - str r1, [sp, #0xc] - mov r1, #2 - str r1, [sp, #0x10] - mov r0, r8 - mov r1, sb - mov r2, #0x400 - mov r3, fp - bl Cardi_RequestStreamCommand - mov r1, sl - mov sl, r0 - mov r0, r4 - bl sub_020027F8 - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - bl Card_UnlockBackup - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - bl OS_ReleaseLockId - cmp sl, #0 - bne _0204A714 - mov r0, #0 - bl CardPullOutWithStatus - add r6, r6, #1 -_0204A70C: - cmp r6, #4 - blt _0204A670 -_0204A714: - add r7, r7, #1 - cmp r7, #0x100 - blt _0204A664 -_0204A720: - add sp, sp, #0x14 - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end sub_0204A624 - - arm_func_start sub_0204A72C -sub_0204A72C: ; 0x0204A72C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - sub sp, sp, #0x400 - mov r0, #0x400 - bl RandInt - str r0, [sp, #0x14] - bl Card_GetCurrentBackupType - and r0, r0, #0xff - cmp r0, #1 - bne _0204A8D4 - mov r2, #0 - mov r1, #0xff -_0204A75C: - add r0, sp, #0x18 - strb r1, [r0, r2] - add r2, r2, #1 - cmp r2, #0x400 - blt _0204A75C - mov r5, #0 -_0204A774: - mov r1, r5, lsr #0x1f - rsb r0, r1, r5, lsl #22 - mov r8, r5, lsl #8 - add sb, r1, r0, ror #22 - mov r4, #0 - b _0204A8C0 -_0204A78C: - bl OS_GetLockID - mov r6, r0 - bl sub_02002580 - mov r7, r0 - mov r0, r6, lsl #0x10 - mov r0, r0, lsr #0x10 - bl Card_LockBackup - mov r0, r7 - mov r1, #0x13 - bl sub_020027F8 - mov r1, #0 - str r1, [sp] - str r1, [sp, #4] - mov r1, #6 - str r1, [sp, #8] - mov r1, #1 - str r1, [sp, #0xc] - mov r1, #0 - str r1, [sp, #0x10] - mov fp, r0 - mov r0, r8 - add r1, sp, #0x18 - mov r2, #0x400 - mov r3, #0 - bl Cardi_RequestStreamCommand - cmp r0, #0 - beq _0204A820 - mov r0, r7 - mov r1, fp - bl sub_020027F8 - mov r0, r6, lsl #0x10 - mov r0, r0, lsr #0x10 - bl Card_UnlockBackup - mov r0, r6, lsl #0x10 - mov r0, r0, lsr #0x10 - bl OS_ReleaseLockId - b _0204A8C8 -_0204A820: - ldr r0, [sp, #0x14] - cmp sb, r0 - bne _0204A84C - mov sl, #0 -_0204A830: - mov r0, #0x100 - bl RandInt - add r1, sp, #0x18 - strb r0, [r1, sl] - add sl, sl, #1 - cmp sl, #0x400 - blt _0204A830 -_0204A84C: - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - mov r0, #8 - str r0, [sp, #8] - mov r0, #0xa - str r0, [sp, #0xc] - mov r0, #2 - str r0, [sp, #0x10] - add r0, sp, #0x18 - mov r1, r8 - mov r2, #0x400 - mov r3, #0 - bl Cardi_RequestStreamCommand - mov sl, r0 - mov r1, fp - mov r0, r7 - bl sub_020027F8 - mov r0, r6, lsl #0x10 - mov r0, r0, lsr #0x10 - bl Card_UnlockBackup - mov r0, r6, lsl #0x10 - mov r0, r0, lsr #0x10 - bl OS_ReleaseLockId - cmp sl, #0 - bne _0204A8C8 - mov r0, #0 - bl CardPullOutWithStatus - add r4, r4, #1 -_0204A8C0: - cmp r4, #4 - blt _0204A78C -_0204A8C8: - add r5, r5, #1 - cmp r5, #0x100 - blt _0204A774 -_0204A8D4: - add sp, sp, #0x18 - add sp, sp, #0x400 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end sub_0204A72C - - arm_func_start sub_0204A8E0 -sub_0204A8E0: ; 0x0204A8E0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov r4, r0 - mov sb, r1 - mov r8, r2 - bl Card_GetCurrentBackupType - and r0, r0, #0xff - cmp r0, #1 - movne r0, #3 - bne _0204A9C0 - mov r6, #0 - mov r7, r4, lsl #8 - mov fp, r6 - b _0204A9B4 -_0204A918: - bl OS_GetLockID - mov r5, r0 - bl sub_02002580 - mov r4, r0 - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - bl Card_LockBackup - mov r0, r4 - mov r1, #0x13 - bl sub_020027F8 - str fp, [sp] - mov sl, r0 - str fp, [sp, #4] - mov r1, #6 - str r1, [sp, #8] - mov r1, #1 - str r1, [sp, #0xc] - mov r0, r7 - mov r1, sb - mov r2, r8 - mov r3, fp - str fp, [sp, #0x10] - bl Cardi_RequestStreamCommand - mov r1, sl - mov sl, r0 - mov r0, r4 - bl sub_020027F8 - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - bl Card_UnlockBackup - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - bl OS_ReleaseLockId - cmp sl, #0 - movne r0, #0 - bne _0204A9C0 - mov r0, #0 - bl CardPullOutWithStatus - add r6, r6, #1 -_0204A9B4: - cmp r6, #4 - blt _0204A918 - mov r0, #3 -_0204A9C0: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end sub_0204A8E0 - - arm_func_start sub_0204A9C8 -sub_0204A9C8: ; 0x0204A9C8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x214 - mov r4, r0 - mov sb, r1 - mov r8, r2 - bl Card_GetCurrentBackupType - and r0, r0, #0xff - cmp r0, #1 - movne r0, #3 - bne _0204AB10 - mov r7, r4, lsl #8 - mov r6, #0 - mov fp, #6 - b _0204AB04 -_0204AA00: - bl OS_GetLockID - mov r5, r0 - bl sub_02002580 - mov r1, #0x13 - mov r4, r0 - bl sub_020027F8 - mov sl, r0 - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - bl Card_LockBackup - mov r0, #0 - str r0, [sp] - stmib sp, {r0, fp} - mov r0, #1 - str r0, [sp, #0xc] - mov r0, #0 - str r0, [sp, #0x10] - mov r0, r7 - add r1, sp, #0x14 - mov r2, #0x80 - mov r3, #0 - bl Cardi_RequestStreamCommand - cmp r0, #0 - bne _0204AA8C - mov r0, r4 - mov r1, sl - bl sub_020027F8 - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - bl Card_UnlockBackup - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - bl OS_ReleaseLockId - mov r0, #4 - b _0204AB10 -_0204AA8C: - mov r0, #0 - str r0, [sp] - str r0, [sp, #4] - mov r0, #8 - str r0, [sp, #8] - mov r0, #0xa - str r0, [sp, #0xc] - mov r0, #2 - str r0, [sp, #0x10] - mov r0, sb - mov r1, r7 - mov r2, r8 - mov r3, #0 - bl Cardi_RequestStreamCommand - mov r1, sl - mov sl, r0 - mov r0, r4 - bl sub_020027F8 - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - bl Card_UnlockBackup - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - bl OS_ReleaseLockId - cmp sl, #0 - movne r0, #0 - bne _0204AB10 - mov r0, #0 - bl CardPullOutWithStatus - add r6, r6, #1 -_0204AB04: - cmp r6, #4 - blt _0204AA00 - mov r0, #3 -_0204AB10: - add sp, sp, #0x214 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end sub_0204A9C8 - diff --git a/asm/main_02048B74.s b/asm/main_02048B74.s new file mode 100644 index 00000000..31953bea --- /dev/null +++ b/asm/main_02048B74.s @@ -0,0 +1,25 @@ + .include "asm/macros.inc" + .include "main_02048B74.inc" + + .text + + arm_func_start sub_02048B74 +sub_02048B74: ; 0x02048B74 + stmdb sp!, {r3, lr} + ldr r1, _02048BA8 ; =_020AFF38 + ldr r0, _02048BAC ; =_0209CD4C + ldr r1, [r1, #4] + mov r2, #0 + bl Debug_Print0 + mov r3, #0 + ldr r1, _02048BA8 ; =_020AFF38 + ldr r0, _02048BB0 ; =_022AAE70 + sub r2, r3, #1 + str r3, [r1, #4] + str r2, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02048BA8: .word _020AFF38 +_02048BAC: .word _0209CD4C +_02048BB0: .word _022AAE70 + arm_func_end sub_02048B74 diff --git a/asm/main_02048C5C.s b/asm/main_02048C5C.s new file mode 100644 index 00000000..db8c13ee --- /dev/null +++ b/asm/main_02048C5C.s @@ -0,0 +1,32 @@ + .include "asm/macros.inc" + .include "main_02048C5C.inc" + + .text + + arm_func_start sub_02048C5C +sub_02048C5C: ; 0x02048C5C + stmdb sp!, {r3, lr} + ldr r0, _02048CA4 ; =_022AAE74 + mov r1, #0 + mov r2, #0x30 + bl MemsetSimple + ldr r2, _02048CA8 ; =0x09011416 + ldr r1, _02048CAC ; =_022AAE74 + ldr r0, _02048CB0 ; =_022AAE78 + str r2, [r1, #0x24] + bl ReadStringSave + ldr r2, _02048CB4 ; =0x000F1206 + ldr r0, _02048CAC ; =_022AAE74 + mov r1, #0xff + str r2, [r0, #0x28] + strb r1, [r0, #0x2c] + mov r1, #0 + strb r1, [r0, #0x2d] + ldmia sp!, {r3, pc} + .align 2, 0 +_02048CA4: .word _022AAE74 +_02048CA8: .word 0x09011416 +_02048CAC: .word _022AAE74 +_02048CB0: .word _022AAE78 +_02048CB4: .word 0x000F1206 + arm_func_end sub_02048C5C diff --git a/asm/main_02048CF8.s b/asm/main_02048CF8.s new file mode 100644 index 00000000..9187f51d --- /dev/null +++ b/asm/main_02048CF8.s @@ -0,0 +1,2375 @@ + .include "asm/macros.inc" + .include "main_02048CF8.inc" + + .text + + arm_func_start sub_02048CF8 +sub_02048CF8: ; 0x02048CF8 + stmdb sp!, {r3, r4, r5, lr} + mov r0, #0x100 + mov r1, #5 + bl MemAlloc + mov r4, r0 + ldr r3, _02048DB0 ; =0x000001EA + add r0, sp, #0 + mov r1, r4 + mov r2, #0x100 + str r3, [sp] + bl ReadSaveFile + movs r5, r0 + cmpne r5, #2 + bne _02048D54 + add r0, r4, #4 + bl CheckStringSave + cmp r0, #0 + moveq r5, #5 + beq _02048D54 + ldr r1, [r4, #0x24] + ldr r0, _02048DB4 ; =0x09011416 + cmp r1, r0 + movne r5, #4 +_02048D54: + bl sub_02048C5C + cmp r5, #0 + bne _02048D80 + ldr r1, [r4, #0x28] + ldr r0, _02048DB8 ; =_022AAE74 + str r1, [r0, #0x28] + ldrb r1, [r4, #0x2c] + strb r1, [r0, #0x2c] + ldrb r1, [r4, #0x2d] + strb r1, [r0, #0x2d] + b _02048DA0 +_02048D80: + sub r0, r5, #4 + cmp r0, #1 + ldrls r1, _02048DBC ; =0x000F1206 + ldrls r0, _02048DB8 ; =_022AAE74 + strls r1, [r0, #0x28] + ldrhi r1, _02048DC0 ; =0x000F1209 + ldrhi r0, _02048DB8 ; =_022AAE74 + strhi r1, [r0, #0x28] +_02048DA0: + mov r0, r4 + bl MemFree + bl sub_02048CB8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02048DB0: .word 0x000001EA +_02048DB4: .word 0x09011416 +_02048DB8: .word _022AAE74 +_02048DBC: .word 0x000F1206 +_02048DC0: .word 0x000F1209 + arm_func_end sub_02048CF8 + + arm_func_start sub_02048DC4 +sub_02048DC4: ; 0x02048DC4 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + mov r0, #0x100 + mov r1, #5 + bl MemAlloc + mov r4, r0 + bl sub_02048C5C + ldr r5, _02048E68 ; =_022AAE74 + mov lr, r4 + mov ip, #3 +_02048DF0: + ldmia r5!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _02048DF0 + str r6, [r4, #0x28] + bl GetAdventureLogDungeonFloor + ldrb r2, [r0] + ldr r3, _02048E6C ; =0x000001EA + mov r1, r4 + strb r2, [r4, #0x2c] + ldrb ip, [r0, #1] + add r0, sp, #0 + mov r2, #0x100 + strb ip, [r4, #0x2d] + str r3, [sp] + bl WriteSaveFile + movs r5, r0 + bne _02048E54 + ldr r1, [r4, #0x28] + ldr r0, _02048E70 ; =_022AAE74 + str r1, [r0, #0x28] + ldrb r1, [r4, #0x2c] + strb r1, [r0, #0x2c] + ldrb r1, [r4, #0x2d] + strb r1, [r0, #0x2d] +_02048E54: + mov r0, r4 + bl MemFree + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02048E68: .word _022AAE74 +_02048E6C: .word 0x000001EA +_02048E70: .word _022AAE74 + arm_func_end sub_02048DC4 + + arm_func_start WriteSaveFile +WriteSaveFile: ; 0x02048E74 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r2 + add r3, r5, #0xff + mov r2, r3, asr #7 + ldr r4, [r0] + add r2, r3, r2, lsr #24 + mov r6, r1 + add r1, r4, r2, asr #8 + str r1, [r0] + mov r0, r6 + mov r1, r5 + bl CalcChecksum + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl sub_0204A9C8 + cmp r0, #4 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, pc} + cmp r0, #0 + movne r0, #2 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end WriteSaveFile + + arm_func_start ReadSaveFile +ReadSaveFile: ; 0x02048ED0 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r2 + add ip, r4, #0xff + mov r3, ip, asr #7 + ldr lr, [r0] + add r3, ip, r3, lsr #24 + add r3, lr, r3, asr #8 + str r3, [r0] + mov r0, lr + mov r5, r1 + bl sub_0204A8E0 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl CheckChecksumInvalid + cmp r0, #0 + movne r0, #2 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ReadSaveFile + + arm_func_start CalcChecksum +CalcChecksum: ; 0x02048F24 + mov r3, #0 + mov ip, #1 + b _02048F3C +_02048F30: + ldr r2, [r0, ip, lsl #2] + add ip, ip, #1 + add r3, r3, r2 +_02048F3C: + cmp ip, r1, lsr #2 + blt _02048F30 + str r3, [r0] + bx lr + arm_func_end CalcChecksum + + arm_func_start CheckChecksumInvalid +CheckChecksumInvalid: ; 0x02048F4C + mov r3, #0 + mov ip, #1 + b _02048F64 +_02048F58: + ldr r2, [r0, ip, lsl #2] + add ip, ip, #1 + add r3, r3, r2 +_02048F64: + cmp ip, r1, lsr #2 + blt _02048F58 + ldr r0, [r0] + cmp r0, r3 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end CheckChecksumInvalid + + arm_func_start NoteSaveBase +NoteSaveBase: ; 0x02048F84 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + ldr r0, _02049218 ; =0x0000B65C + mov r1, #5 + bl MemAlloc + mov r4, r0 + add r0, r4, #0x64 + add r5, r0, #0x400 + bl sub_02048BFC + mov r2, r0 + ldr r0, _0204921C ; =_0209CD6C + mov r1, sb + bl Debug_Print0 + mov r0, #0 + bl SetNotifyNote + bl GetTime + mov r7, r0 + bl EventFlagBackupVeneer + cmp sb, #3 + bne _02048FE0 + bl sub_02048BFC + mov sb, r0 + b _02048FE8 +_02048FE0: + mov r0, sb + bl sub_02048C0C +_02048FE8: + str sb, [r4, #0x2c] + bl sub_02048C3C + str r0, [r4, #0x28] + bl GetRngSeed + str r0, [r4, #0x30] + cmp sb, #0 + mvneq r0, #0 + beq _0204900C + bl GetLanguageType +_0204900C: + ldr r1, _02049220 ; =0x09011416 + strb r0, [r4, #0x34] + add r0, r4, #4 + str r1, [r4, #0x24] + bl ReadStringSave + add r0, r4, #0x38 + bl DumpScriptVariableValues + ldr r1, _02049224 ; =0x00007F6B + mov r0, r5 + bl WriteMonsterInfoToSave + str r0, [r4, #0x438] + add r0, r5, #0x6b + ldr r1, _02049228 ; =0x000005DC + add r0, r0, #0x7f00 + bl sub_020597B0 + str r0, [r4, #0x43c] + add r0, r5, #0x47 + ldr r1, _0204922C ; =0x000001F7 + add r0, r0, #0x8500 + bl CopyProgressInfoFromScratchTo + str r0, [r4, #0x440] + add r0, r5, #0x3e + ldr r1, _02049230 ; =0x00000DAC + add r0, r0, #0x8700 + bl WriteItemsToSave + str r0, [r4, #0x444] + add r0, r5, #0xea + add r0, r0, #0x9400 + mov r1, #0x10 + bl sub_02050CF8 + str r0, [r4, #0x448] + add r0, r5, #0xfa + add r0, r0, #0x9400 + mov r1, #0x340 + bl sub_0204E154 + str r0, [r4, #0x450] + add r0, r5, #0x3a + ldr r1, _02049234 ; =0x000015A0 + add r0, r0, #0x9800 + bl sub_0205BFB0 + str r0, [r4, #0x454] + add r0, r5, #0xda + ldr r1, _02049238 ; =0x00000237 + add r0, r0, #0xad00 + bl sub_0205FC20 + str r0, [r4, #0x458] + add r0, r5, #0x11 + add r0, r0, #0xb000 + mov r1, #0xb + bl SaveCroagunkItems + add r1, r5, #0x1c + str r0, [r4, #0x45c] + add r0, r1, #0xb000 +#ifdef JAPAN + mov r1, #0x18c +#else + mov r1, #0x1dc +#endif + bl sub_0204A3E4 + str r0, [r4, #0x460] + bl GetTime + mov r1, r7 + mov r7, r0 + bl _fsub + bl _f2d + mov r3, r0 + mov r2, r1 + ldr r0, _0204923C ; =_0209CD84 + mov r1, r3 + bl Debug_Print0 + cmp sb, #2 + moveq r5, #0 + beq _0204912C + ldr r0, _02049240 ; =0x000F1206 + bl sub_02048DC4 + mov r5, r0 +_0204912C: + cmp r5, #0 + bne _020491C4 + bl sub_02049350 + cmp r0, #1 + add r0, sp, #0 + ldr r2, _02049218 ; =0x0000B65C + bne _02049188 + mov r3, #0 + mov r1, r4 + str r3, [sp] + bl WriteSaveFile + movs r6, r0 + bne _02049168 + mov r0, #0 + bl sub_02049360 +_02049168: + ldr r2, _02049218 ; =0x0000B65C + mov r3, #0xc8 + add r0, sp, #0 + mov r1, r4 + str r3, [sp] + bl WriteSaveFile + mov r8, r0 + b _020491C4 +_02049188: + mov r3, #0xc8 + mov r1, r4 + str r3, [sp] + bl WriteSaveFile + movs r8, r0 + bne _020491A8 + mov r0, #1 + bl sub_02049360 +_020491A8: + ldr r2, _02049218 ; =0x0000B65C + mov r3, #0 + add r0, sp, #0 + mov r1, r4 + str r3, [sp] + bl WriteSaveFile + mov r6, r0 +_020491C4: + bl GetTime + mov r1, r7 + bl _fsub + bl _f2d + mov r3, r0 + mov r2, r1 + ldr r0, _02049244 ; =_0209CD94 + mov r1, r3 + bl Debug_Print0 + mov r0, r4 + bl MemFree + cmp r5, #0 + movne r0, r5 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r6, #0 + movne r0, r6 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r8, #0 + moveq r8, #0 + mov r0, r8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +#ifdef JAPAN +_02049218: .word 0x0000B60C +#else +_02049218: .word 0x0000B65C +#endif +_0204921C: .word _0209CD6C +_02049220: .word 0x09011416 +_02049224: .word 0x00007F6B +_02049228: .word 0x000005DC +_0204922C: .word 0x000001F7 +_02049230: .word 0x00000DAC +_02049234: .word 0x000015A0 +_02049238: .word 0x00000237 +_0204923C: .word _0209CD84 +_02049240: .word 0x000F1206 +_02049244: .word _0209CD94 + arm_func_end NoteSaveBase + + arm_func_start WriteQuickSaveInfo +WriteQuickSaveInfo: ; 0x02049248 + stmdb sp!, {r3, lr} + mov ip, r0 + mov r2, r1 + mov r3, #0x190 + add r0, sp, #0 + mov r1, ip + str r3, [sp] + bl WriteSaveFile + ldmia sp!, {r3, pc} + arm_func_end WriteQuickSaveInfo + + arm_func_start ReadSaveHeader +ReadSaveHeader: ; 0x0204926C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, _0204932C ; =0x0000B65C + mov r1, #5 + bl MemAlloc + mov r4, r0 + ldr r3, _02049330 ; =_020AFF40 + mov r0, #0 + mov r1, r4 + mov r2, #0x38 + str r0, [r3] + bl sub_0204A8E0 + cmp r0, #0 + beq _020492B4 + mov r1, r4 + mov r0, #0xc8 + mov r2, #0x38 + bl sub_0204A8E0 +_020492B4: + cmp r0, #0 + ldrne r0, _02049330 ; =_020AFF40 + movne r1, #1 + strne r1, [r0, #4] + bne _02049310 + add r0, r4, #4 + bl CheckStringSave + cmp r0, #0 + ldreq r0, _02049330 ; =_020AFF40 + moveq r1, #5 + streq r1, [r0, #4] + beq _02049310 + ldr r1, [r4, #0x24] + ldr r0, _02049334 ; =0x09011416 + cmp r1, r0 + ldrne r0, _02049330 ; =_020AFF40 + movne r1, #4 + strne r1, [r0, #4] +#ifdef EUROPE + bne _02049310 + ldr r1, [r4, #0x2c] + ldr r0, _02049330 ; =_020AFF40 + mov r2, #0 + stmia r0, {r1, r2} + ldr r1, [r4, #0x28] + sub r0, r2, #1 + cmp r1, r0 + beq _02049310 + ldrsb r0, [r4, #0x34] + bl sub_020205C0 + bl sub_0202059C +#else + ldreq r2, [r4, #0x2c] + ldreq r0, _02049330 ; =_020AFF40 + moveq r1, #0 + streq r2, [r0] + streq r1, [r0, #4] +#endif +_02049310: + mov r0, r4 + bl MemFree + ldr r0, _02049330 ; =_020AFF40 + ldr r1, [r0] + str r1, [r5] + ldr r0, [r0, #4] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +#ifdef JAPAN +_0204932C: .word 0x0000B60C +#else +_0204932C: .word 0x0000B65C +#endif +_02049330: .word _020AFF40 +_02049334: .word 0x09011416 + arm_func_end ReadSaveHeader + + arm_func_start sub_02049338 +sub_02049338: ; 0x02049338 + ldr r1, _0204934C ; =_020AFF40 + ldr r2, [r1] + str r2, [r0] + ldr r0, [r1, #4] + bx lr + .align 2, 0 +_0204934C: .word _020AFF40 + arm_func_end sub_02049338 + + arm_func_start sub_02049350 +sub_02049350: ; 0x02049350 + ldr r0, _0204935C ; =_020AFF40 + ldr r0, [r0, #8] + bx lr + .align 2, 0 +_0204935C: .word _020AFF40 + arm_func_end sub_02049350 + + arm_func_start sub_02049360 +sub_02049360: ; 0x02049360 + ldr r1, _0204936C ; =_020AFF40 + str r0, [r1, #8] + bx lr + .align 2, 0 +_0204936C: .word _020AFF40 + arm_func_end sub_02049360 + + arm_func_start NoteLoadBase +NoteLoadBase: ; 0x02049370 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + ldr r0, _020495FC ; =0x0000B65C + mov r1, #5 + bl MemAlloc + mov r4, r0 + add r0, r4, #0x64 + add r6, r0, #0x400 + bl sub_02048BFC + mov r1, r0 + ldr r0, _02049600 ; =_0209CDA4 + bl Debug_Print0 + mov r0, #0 + bl SetNotifyNote + mov r0, #0 + str r0, [sp] + ldr r2, _020495FC ; =0x0000B65C + add r0, sp, #0 + mov r1, r4 + bl ReadSaveFile + movs r5, r0 + beq _02049400 + ldr r2, _020495FC ; =0x0000B65C + mov r3, #0xc8 + add r0, sp, #0 + mov r1, r4 + str r3, [sp] + bl ReadSaveFile + movs r5, r0 + ldrne r0, _02049604 ; =_020AFF40 + mvnne r1, #0 + strne r1, [r0, #8] + ldreq r0, _02049604 ; =_020AFF40 + moveq r1, #1 + streq r1, [r0, #8] + b _0204940C +_02049400: + ldr r0, _02049604 ; =_020AFF40 + mov r1, #0 + str r1, [r0, #8] +_0204940C: + cmp r5, #0 + cmpne r5, #2 + bne _0204943C + add r0, r4, #4 + bl CheckStringSave + cmp r0, #0 + moveq r5, #5 + beq _0204943C + ldr r1, [r4, #0x24] + ldr r0, _02049608 ; =0x09011416 + cmp r1, r0 + movne r5, #4 +_0204943C: + cmp r5, #0 + bne _020494A0 + ldr r1, [r4, #0x2c] + ldr r0, _0204960C ; =_0209CDB8 + bl Debug_Print0 + ldr r0, [r4, #0x2c] + bl sub_02048C0C + ldr r0, [r4, #0x28] + bl sub_02048C4C + ldr r0, [r4, #0x30] + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl SetRngSeed + ldr r0, [r4, #0x2c] + cmp r0, #0 + mvneq r0, #0 + streqb r0, [r4, #0x34] + beq _020494A0 + ldr r1, [r4, #0x28] + mvn r0, #0 + cmp r1, r0 + beq _020494A0 + ldrsb r0, [r4, #0x34] + bl sub_020205C0 + bl sub_0202059C +_020494A0: + cmp r5, #0 + bne _020494B8 + add r0, r4, #0x38 + bl RestoreScriptVariableValues + cmp r0, #0 + moveq r5, #4 +_020494B8: + cmp r5, #0 + bne _020495D4 + ldr r1, _02049610 ; =0x00007F6B + mov r0, r6 + bl ReadMonsterInfoFromSave + ldr r1, [r4, #0x438] + cmp r0, r1 + add r0, r6, #0x6b + ldr r1, _02049614 ; =0x000005DC + add r0, r0, #0x7f00 + movne r5, #3 + bl sub_02059A74 + ldr r1, [r4, #0x43c] + cmp r0, r1 + add r0, r6, #0x47 + ldr r1, _02049618 ; =0x000001F7 + add r0, r0, #0x8500 + movne r5, #3 + bl CopyProgressInfoFromScratchFrom + ldr r1, [r4, #0x440] + cmp r0, r1 + add r0, r6, #0x3e + ldr r1, _0204961C ; =0x00000DAC + add r0, r0, #0x8700 + movne r5, #3 + bl ReadItemsFromSave + ldr r1, [r4, #0x444] + cmp r0, r1 + add r0, r6, #0xea + add r0, r0, #0x9400 + mov r1, #0x10 + movne r5, #3 + bl sub_02050D84 + ldr r1, [r4, #0x448] + cmp r0, r1 + add r0, r6, #0xfa + add r0, r0, #0x9400 + mov r1, #0x340 + movne r5, #3 + bl sub_0204E19C + ldr r1, [r4, #0x450] + cmp r0, r1 + add r0, r6, #0x3a + ldr r1, _02049620 ; =0x000015A0 + add r0, r0, #0x9800 + movne r5, #3 + bl sub_0205BD9C + ldr r1, [r4, #0x454] + cmp r0, r1 + add r0, r6, #0xda + ldr r1, _02049624 ; =0x00000237 + add r0, r0, #0xad00 + movne r5, #3 + bl sub_0205FAB0 + ldr r1, [r4, #0x458] + cmp r0, r1 + add r0, r6, #0x11 + add r0, r0, #0xb000 + mov r1, #0xb + movne r5, #3 + bl LoadCroagunkItems + ldr r1, [r4, #0x45c] + cmp r0, r1 + add r0, r6, #0x1c + add r0, r0, #0xb000 +#ifdef JAPAN + mov r1, #0x18c +#else + mov r1, #0x1dc +#endif + movne r5, #3 + bl sub_0204A1DC + ldr r1, [r4, #0x460] + cmp r0, r1 + movne r5, #3 +_020495D4: + cmp r5, #0 + bne _020495E4 + bl sub_02048CF8 + b _020495E8 +_020495E4: + bl sub_02048C5C +_020495E8: + mov r0, r4 + bl MemFree + mov r0, r5 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +#ifdef JAPAN +_020495FC: .word 0x0000B60C +#else +_020495FC: .word 0x0000B65C +#endif +_02049600: .word _0209CDA4 +_02049604: .word _020AFF40 +_02049608: .word 0x09011416 +_0204960C: .word _0209CDB8 +_02049610: .word 0x00007F6B +_02049614: .word 0x000005DC +_02049618: .word 0x000001F7 +_0204961C: .word 0x00000DAC +_02049620: .word 0x000015A0 +_02049624: .word 0x00000237 + arm_func_end NoteLoadBase + + arm_func_start ReadQuickSaveInfo +ReadQuickSaveInfo: ; 0x02049628 + stmdb sp!, {r3, lr} + mov ip, r0 + mov r2, r1 + mov r3, #0x190 + add r0, sp, #0 + mov r1, ip + str r3, [sp] + bl ReadSaveFile + ldmia sp!, {r3, pc} + arm_func_end ReadQuickSaveInfo + + arm_func_start sub_0204964C +sub_0204964C: ; 0x0204964C + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _02049678 ; =_0209CDD0 + bl InitMenuWithWindowExtraInfo + cmp r0, #0 + ldrne r1, _0204967C ; =_022AAEA4 + ldrne r0, _02049680 ; =_020AFF4C + movne r2, #0 + strne r4, [r1] + strne r2, [r0, #4] + ldmia sp!, {r4, pc} + .align 2, 0 +_02049678: .word _0209CDD0 +_0204967C: .word _022AAEA4 +_02049680: .word _020AFF4C + arm_func_end sub_0204964C + + arm_func_start sub_02049684 +sub_02049684: ; 0x02049684 + stmdb sp!, {r3, lr} + mov r0, #0xb4 + mov r1, #8 + bl MemAlloc + ldr r1, _020496EC ; =_020AFF4C + str r0, [r1] + add r0, r0, #0x1c + bl CopyMenuControlWindowExtraInfo + ldr r2, _020496EC ; =_020AFF4C + ldr r1, _020496F0 ; =_022AAEA4 + ldr r3, [r2] + str r0, [r3, #0x18] + ldr r3, [r1] + ldr r1, [r2] + mov r0, #0 + str r3, [r1, #8] + bl CreateDialogueBox + ldr r1, _020496EC ; =_020AFF4C + mov r3, #0 + ldr r2, [r1] + strb r0, [r2] + ldr r2, [r1] + mov r0, #1 + str r3, [r2, #4] + str r3, [r1, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_020496EC: .word _020AFF4C +_020496F0: .word _022AAEA4 + arm_func_end sub_02049684 + + arm_func_start sub_020496F4 +sub_020496F4: ; 0x020496F4 + stmdb sp!, {r3, lr} + ldr r0, _0204972C ; =_020AFF4C + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0] + bl CloseDialogueBox + ldr r0, _0204972C ; =_020AFF4C + ldr r0, [r0] + bl MemFree + ldr r0, _0204972C ; =_020AFF4C + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0204972C: .word _020AFF4C + arm_func_end sub_020496F4 + + arm_func_start sub_02049730 +sub_02049730: ; 0x02049730 + stmdb sp!, {r3, lr} + ldr r1, _02049A18 ; =_020AFF4C + ldr r3, [r1] + ldr r0, [r3, #4] + cmp r0, #8 + addls pc, pc, r0, lsl #2 + b _02049A10 +_0204974C: ; jump table + b _02049770 ; case 0 + b _020497A4 ; case 1 + b _020497C4 ; case 2 + b _020497E8 ; case 3 + b _020498C8 ; case 4 + b _0204996C ; case 5 + b _020499A0 ; case 6 + b _020499CC ; case 7 + b _020499FC ; case 8 +_02049770: + ldr r0, [r3, #8] + ldr r1, _02049A1C ; =_0209CDE0 + mov r2, r0, lsl #1 + ldrsb r0, [r3] + ldrh r2, [r1, r2] + ldr r1, _02049A20 ; =0x00000408 + mov r3, #0 + bl ShowStringIdInDialogueBox + ldr r0, _02049A18 ; =_020AFF4C + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #4] + b _02049A10 +_020497A4: + ldrsb r0, [r3] + bl IsDialogueBoxActive + cmp r0, #0 + ldreq r0, _02049A18 ; =_020AFF4C + moveq r1, #2 + ldreq r0, [r0] + streq r1, [r0, #4] + b _02049A10 +_020497C4: + mov r0, #0xe0 + mov r1, #0x88 + mov r2, #1 + bl sub_02029F88 + ldr r0, _02049A18 ; =_020AFF4C + mov r1, #3 + ldr r0, [r0] + str r1, [r0, #4] + b _02049A10 +_020497E8: + bl sub_02003B94 + ldr r0, _02049A18 ; =_020AFF4C + ldr r1, _02049A24 ; =_0209CE10 + ldr r3, [r0] + ldr r2, [r3, #8] + ldr r1, [r1, r2, lsl #2] + str r1, [r3, #0x10] + ldr r0, [r0] + ldr r0, [r0, #0x10] + cmp r0, #4 + bne _02049834 + ldr r0, _02049A28 ; =0x000F120A + bl sub_02048DC4 + mov r0, #2 + bl NoteSaveBase + ldr r1, _02049A18 ; =_020AFF4C + ldr r1, [r1] + str r0, [r1, #0xc] + b _020498B0 +_02049834: + cmp r0, #2 + bne _020498A0 + bl sub_02048CB8 + ldr r2, _02049A18 ; =_020AFF4C + ldr r1, _02049A2C ; =0x000F1207 + ldr r3, [r2] + str r0, [r3, #0x14] + ldr r0, [r2] + ldr r0, [r0, #0x14] + cmp r0, r1 + bne _02049868 + add r0, r1, #1 + bl sub_02048DC4 +_02049868: + mov r0, #2 + bl NoteSaveBase + ldr r1, _02049A18 ; =_020AFF4C + ldr r2, [r1] + str r0, [r2, #0xc] + ldr r1, [r1] + ldr r0, [r1, #0xc] + cmp r0, #0 + ldreq r0, [r1, #0x14] + ldreq r1, _02049A2C ; =0x000F1207 + cmpeq r0, r1 + bne _020498B0 + bl sub_02048DC4 + b _020498B0 +_020498A0: + bl NoteSaveBase + ldr r1, _02049A18 ; =_020AFF4C + ldr r1, [r1] + str r0, [r1, #0xc] +_020498B0: + bl sub_02003BC8 + ldr r0, _02049A18 ; =_020AFF4C + mov r1, #4 + ldr r0, [r0] + str r1, [r0, #4] + b _02049A10 +_020498C8: + bl sub_02029FBC + ldr r0, _02049A18 ; =_020AFF4C + ldr r3, [r0] + ldr r0, [r3, #0xc] + cmp r0, #1 + bne _02049908 +#ifdef JAPAN + ldr r1, _02049A30 ; =0x0000040C + ldrsb r0, [r3] + add r2, r1, #0xbd +#else + ldrsb r0, [r3] + ldr r1, _02049A30 ; =0x0000040C + mov r2, #0x238 +#endif + mov r3, #0 + bl ShowStringIdInDialogueBox + ldr r0, _02049A18 ; =_020AFF4C + mov r1, #8 + ldr r0, [r0] + str r1, [r0, #4] + b _02049A10 +_02049908: + cmp r0, #0 + bne _02049944 + ldr r0, [r3, #8] + ldr r1, _02049A34 ; =_0209CDF8 + mov r2, r0, lsl #1 + ldrsb r0, [r3] + ldrh r2, [r1, r2] + ldr r1, _02049A38 ; =0x0000061C + mov r3, #0 + bl ShowStringIdInDialogueBox + ldr r0, _02049A18 ; =_020AFF4C + mov r1, #5 + ldr r0, [r0] + str r1, [r0, #4] + b _02049A10 +_02049944: + ldrsb r0, [r3] + ldr r1, _02049A38 ; =0x0000061C + ldr r2, _02049A3C ; =0x00000239 + mov r3, #0 + bl ShowStringIdInDialogueBox + ldr r0, _02049A18 ; =_020AFF4C + mov r1, #5 + ldr r0, [r0] + str r1, [r0, #4] + b _02049A10 +_0204996C: + ldrsb r0, [r3] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02049A10 + ldr r0, _02049A18 ; =_020AFF4C + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_0202F334 + ldr r0, _02049A18 ; =_020AFF4C + mov r1, #6 + ldr r0, [r0] + str r1, [r0, #4] + b _02049A10 +_020499A0: + ldrsb r0, [r3] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02049A10 + ldr r0, _02049A18 ; =_020AFF4C + mov r1, #2 + str r1, [r0, #4] + ldr r0, [r0] + mov r1, #7 + str r1, [r0, #4] + b _02049A10 +_020499CC: + mov r0, #9 + str r0, [r3, #4] + ldr r2, [r1] + ldr r0, [r2, #0x18] + tst r0, #0x100 + beq _020499F4 + ldr r0, [r2, #0xa4] + ldr r1, [r1, #4] + ldr r2, [r2, #0xa0] + blx r2 +_020499F4: + mov r0, #4 + ldmia sp!, {r3, pc} +_020499FC: + ldrsb r0, [r3] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02049A10 + bl CardBackupError +_02049A10: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02049A18: .word _020AFF4C +_02049A1C: .word _0209CDE0 +_02049A20: .word 0x00000408 +_02049A24: .word _0209CE10 +_02049A28: .word 0x000F120A +_02049A2C: .word 0x000F1207 +_02049A30: .word 0x0000040C +_02049A34: .word _0209CDF8 +_02049A38: .word 0x0000061C +#ifdef JAPAN +_02049A3C: .word 0x000004CA +#else +_02049A3C: .word 0x00000239 +#endif + arm_func_end sub_02049730 + + arm_func_start sub_02049A40 +sub_02049A40: ; 0x02049A40 + stmdb sp!, {r3, lr} + mov r3, r0 + mov r2, r1 + ldr r0, _02049A6C ; =_0209CE40 + mov r1, r3 + bl InitMenuWithWindowExtraInfo + cmp r0, #0 + ldrne r0, _02049A70 ; =_020AFF54 + movne r1, #0 + strne r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02049A6C: .word _0209CE40 +_02049A70: .word _020AFF54 + arm_func_end sub_02049A40 + + arm_func_start sub_02049A74 +sub_02049A74: ; 0x02049A74 + stmdb sp!, {r3, lr} + mov r0, #0xa8 + mov r1, #8 + bl MemAlloc + ldr r1, _02049ACC ; =_020AFF54 + str r0, [r1] + add r0, r0, #0x10 + bl CopyMenuControlWindowExtraInfo + ldr r1, _02049ACC ; =_020AFF54 + ldr r1, [r1] + str r0, [r1, #0xc] + mov r0, #0 + bl CreateDialogueBox + ldr r1, _02049ACC ; =_020AFF54 + mov r3, #0 + ldr r2, [r1] + strb r0, [r2] + ldr r2, [r1] + mov r0, #1 + str r3, [r2, #4] + str r3, [r1, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02049ACC: .word _020AFF54 + arm_func_end sub_02049A74 + + arm_func_start sub_02049AD0 +sub_02049AD0: ; 0x02049AD0 + stmdb sp!, {r3, lr} + ldr r0, _02049B08 ; =_020AFF54 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0] + bl CloseDialogueBox + ldr r0, _02049B08 ; =_020AFF54 + ldr r0, [r0] + bl MemFree + ldr r0, _02049B08 ; =_020AFF54 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02049B08: .word _020AFF54 + arm_func_end sub_02049AD0 + + arm_func_start sub_02049B0C +sub_02049B0C: ; 0x02049B0C + stmdb sp!, {r3, lr} + ldr r0, _02049D34 ; =_020AFF54 + ldr r2, [r0] + ldr r0, [r2, #4] + cmp r0, #8 + addls pc, pc, r0, lsl #2 + b _02049D2C +_02049B28: ; jump table + b _02049B4C ; case 0 + b _02049B74 ; case 1 + b _02049B94 ; case 2 + b _02049BB8 ; case 3 + b _02049BEC ; case 4 + b _02049C74 ; case 5 + b _02049CA8 ; case 6 + b _02049CD4 ; case 7 + b _02049D18 ; case 8 +_02049B4C: + ldrsb r0, [r2] + ldr r1, _02049D38 ; =0x00000408 +#ifdef JAPAN + mov r2, #0x4e0 +#else + ldr r2, _02049D3C ; =0x0000024F +#endif + mov r3, #0 + bl ShowStringIdInDialogueBox + ldr r0, _02049D34 ; =_020AFF54 + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #4] + b _02049D2C +_02049B74: + ldrsb r0, [r2] + bl IsDialogueBoxActive + cmp r0, #0 + ldreq r0, _02049D34 ; =_020AFF54 + moveq r1, #2 + ldreq r0, [r0] + streq r1, [r0, #4] + b _02049D2C +_02049B94: + mov r0, #0xe0 + mov r1, #0x88 + mov r2, #1 + bl sub_02029F88 + ldr r0, _02049D34 ; =_020AFF54 + mov r1, #3 + ldr r0, [r0] + str r1, [r0, #4] + b _02049D2C +_02049BB8: + bl sub_02003B94 + bl sub_02048454 + mov r0, #0 + bl NoteSaveBase + ldr r1, _02049D34 ; =_020AFF54 + ldr r1, [r1] + str r0, [r1, #8] + bl sub_02003BC8 + ldr r0, _02049D34 ; =_020AFF54 + mov r1, #4 + ldr r0, [r0] + str r1, [r0, #4] + b _02049D2C +_02049BEC: + bl sub_02029FBC + ldr r0, _02049D34 ; =_020AFF54 + mov r3, #0 +#ifdef JAPAN + ldr r2, [r0] + ldr r0, [r2, #8] + cmp r0, #1 + bne _02049C2C + ldr r1, _02049D40 ; =0x0000040C + ldrsb r0, [r2] + add r2, r1, #0xbd +#else + ldr r1, [r0] + ldr r0, [r1, #8] + cmp r0, #1 + bne _02049C2C + ldrsb r0, [r1] + ldr r1, _02049D40 ; =0x0000040C + mov r2, #0x238 +#endif + bl ShowStringIdInDialogueBox + ldr r0, _02049D34 ; =_020AFF54 + mov r1, #8 + ldr r0, [r0] + str r1, [r0, #4] + b _02049D2C +_02049C2C: + cmp r0, #0 +#ifdef JAPAN + ldrsb r0, [r2] + ldr r1, _02049D44 ; =0x0000061C + bne _02049C58 + ldr r2, _0204A0B0 ; =0x000004E1 +#else + ldrsb r0, [r1] + ldr r1, _02049D44 ; =0x0000061C + bne _02049C58 + mov r2, #0x250 +#endif + bl ShowStringIdInDialogueBox + ldr r0, _02049D34 ; =_020AFF54 + mov r1, #5 + ldr r0, [r0] + str r1, [r0, #4] + b _02049D2C +_02049C58: + ldr r2, _02049D48 ; =0x0000023A + bl ShowStringIdInDialogueBox + ldr r0, _02049D34 ; =_020AFF54 + mov r1, #5 + ldr r0, [r0] + str r1, [r0, #4] + b _02049D2C +_02049C74: + ldrsb r0, [r2] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02049D2C + ldr r0, _02049D34 ; =_020AFF54 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_0202F334 + ldr r0, _02049D34 ; =_020AFF54 + mov r1, #6 + ldr r0, [r0] + str r1, [r0, #4] + b _02049D2C +_02049CA8: + ldrsb r0, [r2] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02049D2C + ldr r0, _02049D34 ; =_020AFF54 + mov r1, #2 + str r1, [r0, #4] + ldr r0, [r0] + mov r1, #7 + str r1, [r0, #4] + b _02049D2C +_02049CD4: + mov r1, #9 + add r0, sp, #0 + str r1, [r2, #4] + bl CopyFrameTypeOption + ldrb r0, [sp] + bl sub_02027180 + ldr r0, _02049D34 ; =_020AFF54 + ldr r1, [r0] + ldr r0, [r1, #0xc] + tst r0, #0x100 + beq _02049D10 + ldr r0, [r1, #0x98] + ldr r2, [r1, #0x94] + mov r1, #8 + blx r2 +_02049D10: + mov r0, #4 + ldmia sp!, {r3, pc} +_02049D18: + ldrsb r0, [r2] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02049D2C + bl CardBackupError +_02049D2C: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02049D34: .word _020AFF54 +_02049D38: .word 0x00000408 +#ifdef JAPAN +_02049D40: .word 0x0000040C +_02049D44: .word 0x0000061C +_0204A0B0: .word 0x000004E1 +_02049D48: .word 0x000004CB +#else +_02049D3C: .word 0x0000024F +_02049D40: .word 0x0000040C +_02049D44: .word 0x0000061C +_02049D48: .word 0x0000023A +#endif + arm_func_end sub_02049B0C + + arm_func_start sub_02049D4C +sub_02049D4C: ; 0x02049D4C + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _02049D78 ; =_0209CE58 + bl InitMenuWithWindowExtraInfo + cmp r0, #0 + ldrne r1, _02049D7C ; =_022AAEA8 + ldrne r0, _02049D80 ; =_020AFF5C + movne r2, #0 + strne r4, [r1] + strne r2, [r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_02049D78: .word _0209CE58 +_02049D7C: .word _022AAEA8 +_02049D80: .word _020AFF5C + arm_func_end sub_02049D4C + + arm_func_start sub_02049D84 +sub_02049D84: ; 0x02049D84 + stmdb sp!, {r3, lr} + mov r0, #0xa8 + mov r1, #8 + bl MemAlloc + ldr r1, _02049DEC ; =_020AFF5C + str r0, [r1, #4] + add r0, r0, #0x10 + bl CopyMenuControlWindowExtraInfo + ldr r2, _02049DEC ; =_020AFF5C + ldr r1, _02049DF0 ; =_022AAEA8 + ldr r3, [r2, #4] + str r0, [r3, #0xc] + ldr r3, [r1] + ldr r1, [r2, #4] + mov r0, #0 + str r3, [r1, #8] + bl CreateDialogueBox + ldr r1, _02049DEC ; =_020AFF5C + mov r3, #0 + ldr r2, [r1, #4] + strb r0, [r2] + ldr r2, [r1, #4] + mov r0, #1 + str r3, [r2, #4] + str r3, [r1] + ldmia sp!, {r3, pc} + .align 2, 0 +_02049DEC: .word _020AFF5C +_02049DF0: .word _022AAEA8 + arm_func_end sub_02049D84 + + arm_func_start sub_02049DF4 +sub_02049DF4: ; 0x02049DF4 + stmdb sp!, {r3, lr} + ldr r0, _02049E2C ; =_020AFF5C + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0] + bl CloseDialogueBox + ldr r0, _02049E2C ; =_020AFF5C + ldr r0, [r0, #4] + bl MemFree + ldr r0, _02049E2C ; =_020AFF5C + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02049E2C: .word _020AFF5C + arm_func_end sub_02049DF4 + + arm_func_start sub_02049E30 +sub_02049E30: ; 0x02049E30 + stmdb sp!, {r3, lr} + ldr r1, _0204A004 ; =_020AFF5C + ldr r3, [r1, #4] + ldr r0, [r3, #4] + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _02049FFC +_02049E4C: ; jump table + b _02049E6C ; case 0 + b _02049EA0 ; case 1 + b _02049EC0 ; case 2 + b _02049EE4 ; case 3 + b _02049F2C ; case 4 + b _02049F6C ; case 5 + b _02049FA0 ; case 6 + b _02049FCC ; case 7 +_02049E6C: + ldr r0, [r3, #8] + ldr r1, _0204A008 ; =_0209CE54 + mov r2, r0, lsl #1 + ldrsb r0, [r3] + ldrh r2, [r1, r2] + ldr r1, _0204A00C ; =0x00000408 + mov r3, #0 + bl ShowStringIdInDialogueBox + ldr r0, _0204A004 ; =_020AFF5C + mov r1, #1 + ldr r0, [r0, #4] + str r1, [r0, #4] + b _02049FFC +_02049EA0: + ldrsb r0, [r3] + bl IsDialogueBoxActive + cmp r0, #0 + ldreq r0, _0204A004 ; =_020AFF5C + moveq r1, #2 + ldreq r0, [r0, #4] + streq r1, [r0, #4] + b _02049FFC +_02049EC0: + mov r0, #0xe0 + mov r1, #0x88 + mov r2, #1 + bl sub_02029F88 + ldr r0, _0204A004 ; =_020AFF5C + mov r1, #3 + ldr r0, [r0, #4] + str r1, [r0, #4] + b _02049FFC +_02049EE4: + bl sub_02003B94 + ldr r0, _0204A004 ; =_020AFF5C + ldr r0, [r0, #4] + ldr r0, [r0, #8] + cmp r0, #0 + beq _02049F08 + cmp r0, #1 + beq _02049F10 + b _02049F14 +_02049F08: + bl sub_0204A624 + b _02049F14 +_02049F10: + bl sub_0204A72C +_02049F14: + bl sub_02003BC8 + ldr r0, _0204A004 ; =_020AFF5C + mov r1, #4 + ldr r0, [r0, #4] + str r1, [r0, #4] + b _02049FFC +_02049F2C: + bl sub_02029FBC + ldr r0, _0204A004 ; =_020AFF5C + ldr r2, _0204A010 ; =_0209CE50 + ldr r0, [r0, #4] + ldr r1, _0204A014 ; =0x0000061C + ldr r3, [r0, #8] + ldrsb r0, [r0] + mov r3, r3, lsl #1 + ldrh r2, [r2, r3] + mov r3, #0 + bl ShowStringIdInDialogueBox + ldr r0, _0204A004 ; =_020AFF5C + mov r1, #5 + ldr r0, [r0, #4] + str r1, [r0, #4] + b _02049FFC +_02049F6C: + ldrsb r0, [r3] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02049FFC + ldr r0, _0204A004 ; =_020AFF5C + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl sub_0202F334 + ldr r0, _0204A004 ; =_020AFF5C + mov r1, #6 + ldr r0, [r0, #4] + str r1, [r0, #4] + b _02049FFC +_02049FA0: + ldrsb r0, [r3] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02049FFC + ldr r0, _0204A004 ; =_020AFF5C + mov r1, #2 + str r1, [r0] + ldr r0, [r0, #4] + mov r1, #7 + str r1, [r0, #4] + b _02049FFC +_02049FCC: + mov r0, #8 + str r0, [r3, #4] + ldr r2, [r1, #4] + ldr r0, [r2, #0xc] + tst r0, #0x100 + beq _02049FF4 + ldr r0, [r2, #0x98] + ldr r1, [r1] + ldr r2, [r2, #0x94] + blx r2 +_02049FF4: + mov r0, #4 + ldmia sp!, {r3, pc} +_02049FFC: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0204A004: .word _020AFF5C +_0204A008: .word _0209CE54 +_0204A00C: .word 0x00000408 +_0204A010: .word _0209CE50 +_0204A014: .word 0x0000061C + arm_func_end sub_02049E30 + + arm_func_start sub_0204A018 +sub_0204A018: ; 0x0204A018 + ldr ip, _0204A024 ; =InitMenu + ldr r0, _0204A028 ; =_0209CE68 + bx ip + .align 2, 0 +_0204A024: .word InitMenu +_0204A028: .word _0209CE68 + arm_func_end sub_0204A018 + + arm_func_start sub_0204A02C +sub_0204A02C: ; 0x0204A02C + stmdb sp!, {r3, lr} + mov r0, #1 + mov r1, #8 + bl MemAlloc + ldr r1, _0204A078 ; =_020AFF64 + str r0, [r1] + mov r0, #0 + bl CreateDialogueBox + ldr r3, _0204A078 ; =_020AFF64 + ldr r1, _0204A07C ; =0x00000408 + ldr ip, [r3] +#ifdef JAPAN + add r2, r1, #0xc1 +#else + mov r2, #0x238 +#endif + strb r0, [ip] + ldr r0, [r3] + mov r3, #0 + ldrsb r0, [r0] + bl ShowStringIdInDialogueBox + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0204A078: .word _020AFF64 +_0204A07C: .word 0x00000408 + arm_func_end sub_0204A02C + + arm_func_start sub_0204A080 +sub_0204A080: ; 0x0204A080 + stmdb sp!, {r3, lr} + ldr r0, _0204A0B8 ; =_020AFF64 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0] + bl CloseDialogueBox + ldr r0, _0204A0B8 ; =_020AFF64 + ldr r0, [r0] + bl MemFree + ldr r0, _0204A0B8 ; =_020AFF64 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0204A0B8: .word _020AFF64 + arm_func_end sub_0204A080 + + arm_func_start sub_0204A0BC +sub_0204A0BC: ; 0x0204A0BC + stmdb sp!, {r3, lr} + ldr r0, _0204A0E4 ; =_020AFF64 + ldr r0, [r0] + ldrsb r0, [r0] + bl IsDialogueBoxActive + cmp r0, #0 + bne _0204A0DC + bl CardBackupError +_0204A0DC: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0204A0E4: .word _020AFF64 + arm_func_end sub_0204A0BC + + arm_func_start sub_0204A0E8 +sub_0204A0E8: ; 0x0204A0E8 + ldr ip, _0204A0F4 ; =InitMenu + ldr r0, _0204A0F8 ; =_0209CE78 + bx ip + .align 2, 0 +_0204A0F4: .word InitMenu +_0204A0F8: .word _0209CE78 + arm_func_end sub_0204A0E8 + + arm_func_start sub_0204A0FC +sub_0204A0FC: ; 0x0204A0FC + stmdb sp!, {r3, lr} + mov r0, #1 + mov r1, #8 + bl MemAlloc + ldr r1, _0204A148 ; =_020AFF68 + str r0, [r1] + mov r0, #0 + bl CreateDialogueBox + ldr r3, _0204A148 ; =_020AFF68 + ldr r1, _0204A14C ; =0x00000408 + ldr ip, [r3] +#ifdef JAPAN + add r2, r1, #0xd0 +#else + ldr r2, _0204A150 ; =0x00000247 +#endif + strb r0, [ip] + ldr r0, [r3] + mov r3, #0 + ldrsb r0, [r0] + bl ShowStringIdInDialogueBox + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0204A148: .word _020AFF68 +_0204A14C: .word 0x00000408 +#ifndef JAPAN +_0204A150: .word 0x00000247 +#endif + arm_func_end sub_0204A0FC + + arm_func_start sub_0204A154 +sub_0204A154: ; 0x0204A154 + stmdb sp!, {r3, lr} + ldr r0, _0204A18C ; =_020AFF68 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0] + bl CloseDialogueBox + ldr r0, _0204A18C ; =_020AFF68 + ldr r0, [r0] + bl MemFree + ldr r0, _0204A18C ; =_020AFF68 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0204A18C: .word _020AFF68 + arm_func_end sub_0204A154 + + arm_func_start sub_0204A190 +sub_0204A190: ; 0x0204A190 + mov r0, #1 + bx lr + arm_func_end sub_0204A190 + + arm_func_start sub_0204A198 +sub_0204A198: ; 0x0204A198 + ldr ip, _0204A1A0 ; =OS_GetMacAddress + bx ip + .align 2, 0 +_0204A1A0: .word OS_GetMacAddress + arm_func_end sub_0204A198 + + arm_func_start sub_0204A1A4 +sub_0204A1A4: ; 0x0204A1A4 + stmdb sp!, {r3, lr} + ldr r0, _0204A1C4 ; =_022AAEAC +#ifdef JAPAN + mov r1, #0x1a0 +#else + mov r1, #0x1f0 +#endif + bl MemZero + ldr r1, _0204A1C4 ; =_022AAEAC + ldr r0, _0204A1C8 ; =_020AFF6C + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0204A1C4: .word _022AAEAC +_0204A1C8: .word _020AFF6C + arm_func_end sub_0204A1A4 + + arm_func_start sub_0204A1CC +sub_0204A1CC: ; 0x0204A1CC + ldr r0, _0204A1D8 ; =_020AFF6C + ldr r0, [r0] + bx lr + .align 2, 0 +_0204A1D8: .word _020AFF6C + arm_func_end sub_0204A1CC + + arm_func_start sub_0204A1DC +sub_0204A1DC: ; 0x0204A1DC +#ifdef JAPAN +#define SUB_0204A1DC_OFFSET -0x50 +#else +#define SUB_0204A1DC_OFFSET 0 +#endif + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x14 + mov r3, r0 + mov r2, r1 + add r0, sp, #4 + mov r1, r3 + bl InitBitstreamForWrite + ldr r1, _0204A3E0 ; =_020AFF6C + add r0, sp, #4 + ldr r1, [r1] + mov r2, #0x200 + bl CopyBitsFrom +#ifdef JAPAN + ldr r4, _0204A3E0 ; =_020AFF6C + mov r7, #0 + add r6, sp, #4 + mov r5, #0x28 +_0204A220: + ldr r0, [r4] + add r1, r7, r7, lsl #2 + add r3, r0, #0x40 + mov r0, r6 + mov r2, r5 + add r1, r3, r1 + bl CopyBitsFrom + add r7, r7, #1 + cmp r7, #0x10 +#else + ldr r5, _0204A3E0 ; =_020AFF6C + mov r8, #0 + add r7, sp, #4 + mov r6, #0x50 + mov r4, #0xa +_0204A220: + ldr r1, [r5] + mov r0, r7 + add r1, r1, #0x40 + mla r1, r8, r4, r1 + mov r2, r6 + bl CopyBitsFrom + add r8, r8, #1 + cmp r8, #0x10 +#endif + blt _0204A220 + ldr r5, _0204A3E0 ; =_020AFF6C + mov r8, #0 + add r7, sp, #4 + mov r6, #0x60 + mov r4, #0xc +_0204A258: + ldr r1, [r5] + mov r0, r7 + add r1, r1, #0xe0 + SUB_0204A1DC_OFFSET + mla r1, r8, r4, r1 + mov r2, r6 + bl CopyBitsFrom + add r8, r8, #1 + cmp r8, #0x10 + blt _0204A258 + mov sb, #0 + mov r5, #1 + ldr sl, _0204A3E0 ; =_020AFF6C + mov r4, sb + add r8, sp, #4 + add r7, sp, #0 + mov r6, r5 +_0204A298: + mov r0, r8 + mov r1, r7 + mov r2, r6 + bl CopyBitsFrom + ldrb r0, [sp] + cmp r0, #0 + ldr r0, [sl] + movne r1, r5 + add r0, r0, sb + moveq r1, r4 + add sb, sb, #1 + strb r1, [r0, #0x1a0 + SUB_0204A1DC_OFFSET] + cmp sb, #0x10 + blt _0204A298 + ldr r1, _0204A3E0 ; =_020AFF6C + add r0, sp, #4 + ldr r1, [r1] + mov r2, #0x1b0 + add r1, r1, #0x1b0 + SUB_0204A1DC_OFFSET + bl CopyBitsFrom + ldr r1, _0204A3E0 ; =_020AFF6C + add r0, sp, #4 + ldr r1, [r1] + mov r2, #0xe + add r1, r1, #0xe6 + SUB_0204A1DC_OFFSET + add r1, r1, #0x100 + bl CopyBitsFrom + ldr r1, _0204A3E0 ; =_020AFF6C + add r0, sp, #4 + ldr r1, [r1] + mov r2, #0xe + add r1, r1, #0x1e8 + SUB_0204A1DC_OFFSET + bl CopyBitsFrom + add r0, sp, #4 + add r1, sp, #0 + mov r2, #1 + bl CopyBitsFrom + ldrb r0, [sp] + ldr r1, _0204A3E0 ; =_020AFF6C + cmp r0, #0 + movne r3, #1 + ldr r2, [r1] + moveq r3, #0 + strb r3, [r2, #0x1ea + SUB_0204A1DC_OFFSET] + add r0, sp, #4 + add r1, sp, #0 + mov r2, #1 + bl CopyBitsFrom + ldrb r0, [sp] + ldr r1, _0204A3E0 ; =_020AFF6C + cmp r0, #0 + movne r3, #1 + ldr r2, [r1] + moveq r3, #0 + strb r3, [r2, #0x1eb + SUB_0204A1DC_OFFSET] + add r0, sp, #4 + add r1, sp, #0 + mov r2, #1 + bl CopyBitsFrom + ldrb r0, [sp] + ldr r1, _0204A3E0 ; =_020AFF6C + cmp r0, #0 + movne r3, #1 + ldr r2, [r1] + moveq r3, #0 + strb r3, [r2, #0x1ec + SUB_0204A1DC_OFFSET] + add r0, sp, #4 + add r1, sp, #0 + mov r2, #1 + bl CopyBitsFrom + ldrb r0, [sp] + ldr r1, _0204A3E0 ; =_020AFF6C + cmp r0, #0 + movne r2, #1 + ldr r1, [r1] + moveq r2, #0 + add r0, sp, #4 + strb r2, [r1, #0x1ed + SUB_0204A1DC_OFFSET] + bl BitstreamDebug + ldr r0, [sp, #0xc] + add sp, sp, #0x14 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0204A3E0: .word _020AFF6C + arm_func_end sub_0204A1DC + + arm_func_start sub_0204A3E4 +sub_0204A3E4: ; 0x0204A3E4 +#ifdef JAPAN +#define SUB_0204A3E4_OFFSET -0x50 +#else +#define SUB_0204A3E4_OFFSET 0 +#endif + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x14 + mov r5, r0 + mov r2, r1 + mov r4, #0xff + mov r3, #0 + add r0, sp, #4 + mov r1, r5 + strb r4, [sp, #1] + strb r3, [sp] + bl InitBitstreamForRead + ldr r1, _0204A5CC ; =_020AFF6C + add r0, sp, #4 + ldr r1, [r1] + mov r2, #0x200 + bl CopyBitsTo +#ifdef JAPAN + ldr r4, _0204A5CC ; =_020AFF6C + mov r7, #0 + add r6, sp, #4 + mov r5, #0x28 +_0204A438: + ldr r0, [r4] + add r1, r7, r7, lsl #2 + add r3, r0, #0x40 + mov r0, r6 + mov r2, r5 + add r1, r3, r1 + bl CopyBitsTo + add r7, r7, #1 + cmp r7, #0x10 +#else + ldr r5, _0204A5CC ; =_020AFF6C + mov r8, #0 + add r7, sp, #4 + mov r6, #0x50 + mov r4, #0xa +_0204A438: + ldr r1, [r5] + mov r0, r7 + add r1, r1, #0x40 + mla r1, r8, r4, r1 + mov r2, r6 + bl CopyBitsTo + add r8, r8, #1 + cmp r8, #0x10 +#endif + blt _0204A438 + ldr r5, _0204A5CC ; =_020AFF6C + mov r8, #0 + add r7, sp, #4 + mov r6, #0x60 + mov r4, #0xc +_0204A470: + ldr r1, [r5] + mov r0, r7 + add r1, r1, #0xe0 + SUB_0204A3E4_OFFSET + mla r1, r8, r4, r1 + mov r2, r6 + bl CopyBitsTo + add r8, r8, #1 + cmp r8, #0x10 + blt _0204A470 + ldr r5, _0204A5CC ; =_020AFF6C + mov r4, #0 + add r8, sp, #0 + add sb, sp, #1 + add r7, sp, #4 + mov r6, #1 +_0204A4AC: + ldr r0, [r5] + mov r2, r6 + add r0, r0, r4 + ldrb r0, [r0, #0x1a0 + SUB_0204A3E4_OFFSET] + cmp r0, #0 + movne r1, sb + moveq r1, r8 + mov r0, r7 + bl CopyBitsTo + add r4, r4, #1 + cmp r4, #0x10 + blt _0204A4AC + ldr r1, _0204A5CC ; =_020AFF6C + add r0, sp, #4 + ldr r1, [r1] + mov r2, #0x1b0 + add r1, r1, #0x1b0 + SUB_0204A3E4_OFFSET + bl CopyBitsTo + ldr r1, _0204A5CC ; =_020AFF6C + add r0, sp, #4 + ldr r1, [r1] + mov r2, #0xe + add r1, r1, #0xe6 + SUB_0204A3E4_OFFSET + add r1, r1, #0x100 + bl CopyBitsTo + ldr r1, _0204A5CC ; =_020AFF6C + add r0, sp, #4 + ldr r1, [r1] + mov r2, #0xe + add r1, r1, #0x1e8 + SUB_0204A3E4_OFFSET + bl CopyBitsTo + ldr r0, _0204A5CC ; =_020AFF6C + mov r2, #1 + ldr r0, [r0] + ldrb r0, [r0, #0x1ea + SUB_0204A3E4_OFFSET] + cmp r0, #0 + addne r1, sp, #1 + addeq r1, sp, #0 + add r0, sp, #4 + bl CopyBitsTo + ldr r0, _0204A5CC ; =_020AFF6C + mov r2, #1 + ldr r0, [r0] + ldrb r0, [r0, #0x1eb + SUB_0204A3E4_OFFSET] + cmp r0, #0 + addne r1, sp, #1 + addeq r1, sp, #0 + add r0, sp, #4 + bl CopyBitsTo + ldr r0, _0204A5CC ; =_020AFF6C + mov r2, #1 + ldr r0, [r0] + ldrb r0, [r0, #0x1ec + SUB_0204A3E4_OFFSET] + cmp r0, #0 + addne r1, sp, #1 + addeq r1, sp, #0 + add r0, sp, #4 + bl CopyBitsTo + ldr r0, _0204A5CC ; =_020AFF6C + mov r2, #1 + ldr r0, [r0] + ldrb r0, [r0, #0x1ed + SUB_0204A3E4_OFFSET] + cmp r0, #0 + addne r1, sp, #1 + addeq r1, sp, #0 + add r0, sp, #4 + bl CopyBitsTo + add r0, sp, #4 + bl BitstreamDebug + ldr r0, [sp, #0xc] + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0204A5CC: .word _020AFF6C + arm_func_end sub_0204A3E4 + + arm_func_start sub_0204A5D0 +sub_0204A5D0: ; 0x0204A5D0 + stmdb sp!, {r4, lr} + bl CARD_Init + bl OS_GetLockID + mov r4, r0 + mov r0, r4, lsl #0x10 + mov r0, r0, lsr #0x10 + bl Card_LockBackup + ldr r0, _0204A61C ; =0x00001101 + bl Card_IdentifyBackup + bl Card_GetBackupTotalSize + ldr r2, _0204A620 ; =_022AB09C + mov r1, r4, lsl #0x10 + str r0, [r2] + mov r0, r1, lsr #0x10 + bl Card_UnlockBackup + mov r0, r4, lsl #0x10 + mov r0, r0, lsr #0x10 + bl OS_ReleaseLockId + ldmia sp!, {r4, pc} + .align 2, 0 +_0204A61C: .word 0x00001101 +_0204A620: .word _022AB09C + arm_func_end sub_0204A5D0 + + arm_func_start sub_0204A624 +sub_0204A624: ; 0x0204A624 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + sub sp, sp, #0x400 + bl Card_GetCurrentBackupType + and r0, r0, #0xff + cmp r0, #1 + bne _0204A720 + mov r1, #0 + mov r0, #0xff + add r8, sp, #0x14 +_0204A64C: + strb r0, [r8, r1] + add r1, r1, #1 + cmp r1, #0x400 + blt _0204A64C + mov r7, #0 + mov fp, r7 +_0204A664: + mov r6, #0 + mov sb, r7, lsl #8 + b _0204A70C +_0204A670: + bl OS_GetLockID + mov r5, r0 + bl sub_02002580 + mov r4, r0 + mov r0, r5, lsl #0x10 + mov r0, r0, lsr #0x10 + bl Card_LockBackup + mov r0, r4 + mov r1, #0x13 + bl sub_020027F8 + str fp, [sp] + mov sl, r0 + str fp, [sp, #4] + mov r1, #8 + str r1, [sp, #8] + mov r1, #0xa + str r1, [sp, #0xc] + mov r1, #2 + str r1, [sp, #0x10] + mov r0, r8 + mov r1, sb + mov r2, #0x400 + mov r3, fp + bl Cardi_RequestStreamCommand + mov r1, sl + mov sl, r0 + mov r0, r4 + bl sub_020027F8 + mov r0, r5, lsl #0x10 + mov r0, r0, lsr #0x10 + bl Card_UnlockBackup + mov r0, r5, lsl #0x10 + mov r0, r0, lsr #0x10 + bl OS_ReleaseLockId + cmp sl, #0 + bne _0204A714 + mov r0, #0 + bl CardPullOutWithStatus + add r6, r6, #1 +_0204A70C: + cmp r6, #4 + blt _0204A670 +_0204A714: + add r7, r7, #1 + cmp r7, #0x100 + blt _0204A664 +_0204A720: + add sp, sp, #0x14 + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end sub_0204A624 + + arm_func_start sub_0204A72C +sub_0204A72C: ; 0x0204A72C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + sub sp, sp, #0x400 + mov r0, #0x400 + bl RandInt + str r0, [sp, #0x14] + bl Card_GetCurrentBackupType + and r0, r0, #0xff + cmp r0, #1 + bne _0204A8D4 + mov r2, #0 + mov r1, #0xff +_0204A75C: + add r0, sp, #0x18 + strb r1, [r0, r2] + add r2, r2, #1 + cmp r2, #0x400 + blt _0204A75C + mov r5, #0 +_0204A774: + mov r1, r5, lsr #0x1f + rsb r0, r1, r5, lsl #22 + mov r8, r5, lsl #8 + add sb, r1, r0, ror #22 + mov r4, #0 + b _0204A8C0 +_0204A78C: + bl OS_GetLockID + mov r6, r0 + bl sub_02002580 + mov r7, r0 + mov r0, r6, lsl #0x10 + mov r0, r0, lsr #0x10 + bl Card_LockBackup + mov r0, r7 + mov r1, #0x13 + bl sub_020027F8 + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + mov r1, #6 + str r1, [sp, #8] + mov r1, #1 + str r1, [sp, #0xc] + mov r1, #0 + str r1, [sp, #0x10] + mov fp, r0 + mov r0, r8 + add r1, sp, #0x18 + mov r2, #0x400 + mov r3, #0 + bl Cardi_RequestStreamCommand + cmp r0, #0 + beq _0204A820 + mov r0, r7 + mov r1, fp + bl sub_020027F8 + mov r0, r6, lsl #0x10 + mov r0, r0, lsr #0x10 + bl Card_UnlockBackup + mov r0, r6, lsl #0x10 + mov r0, r0, lsr #0x10 + bl OS_ReleaseLockId + b _0204A8C8 +_0204A820: + ldr r0, [sp, #0x14] + cmp sb, r0 + bne _0204A84C + mov sl, #0 +_0204A830: + mov r0, #0x100 + bl RandInt + add r1, sp, #0x18 + strb r0, [r1, sl] + add sl, sl, #1 + cmp sl, #0x400 + blt _0204A830 +_0204A84C: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + add r0, sp, #0x18 + mov r1, r8 + mov r2, #0x400 + mov r3, #0 + bl Cardi_RequestStreamCommand + mov sl, r0 + mov r1, fp + mov r0, r7 + bl sub_020027F8 + mov r0, r6, lsl #0x10 + mov r0, r0, lsr #0x10 + bl Card_UnlockBackup + mov r0, r6, lsl #0x10 + mov r0, r0, lsr #0x10 + bl OS_ReleaseLockId + cmp sl, #0 + bne _0204A8C8 + mov r0, #0 + bl CardPullOutWithStatus + add r4, r4, #1 +_0204A8C0: + cmp r4, #4 + blt _0204A78C +_0204A8C8: + add r5, r5, #1 + cmp r5, #0x100 + blt _0204A774 +_0204A8D4: + add sp, sp, #0x18 + add sp, sp, #0x400 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end sub_0204A72C + + arm_func_start sub_0204A8E0 +sub_0204A8E0: ; 0x0204A8E0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + mov r4, r0 + mov sb, r1 + mov r8, r2 + bl Card_GetCurrentBackupType + and r0, r0, #0xff + cmp r0, #1 + movne r0, #3 + bne _0204A9C0 + mov r6, #0 + mov r7, r4, lsl #8 + mov fp, r6 + b _0204A9B4 +_0204A918: + bl OS_GetLockID + mov r5, r0 + bl sub_02002580 + mov r4, r0 + mov r0, r5, lsl #0x10 + mov r0, r0, lsr #0x10 + bl Card_LockBackup + mov r0, r4 + mov r1, #0x13 + bl sub_020027F8 + str fp, [sp] + mov sl, r0 + str fp, [sp, #4] + mov r1, #6 + str r1, [sp, #8] + mov r1, #1 + str r1, [sp, #0xc] + mov r0, r7 + mov r1, sb + mov r2, r8 + mov r3, fp + str fp, [sp, #0x10] + bl Cardi_RequestStreamCommand + mov r1, sl + mov sl, r0 + mov r0, r4 + bl sub_020027F8 + mov r0, r5, lsl #0x10 + mov r0, r0, lsr #0x10 + bl Card_UnlockBackup + mov r0, r5, lsl #0x10 + mov r0, r0, lsr #0x10 + bl OS_ReleaseLockId + cmp sl, #0 + movne r0, #0 + bne _0204A9C0 + mov r0, #0 + bl CardPullOutWithStatus + add r6, r6, #1 +_0204A9B4: + cmp r6, #4 + blt _0204A918 + mov r0, #3 +_0204A9C0: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end sub_0204A8E0 + + arm_func_start sub_0204A9C8 +sub_0204A9C8: ; 0x0204A9C8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x214 + mov r4, r0 + mov sb, r1 + mov r8, r2 + bl Card_GetCurrentBackupType + and r0, r0, #0xff + cmp r0, #1 + movne r0, #3 + bne _0204AB10 + mov r7, r4, lsl #8 + mov r6, #0 + mov fp, #6 + b _0204AB04 +_0204AA00: + bl OS_GetLockID + mov r5, r0 + bl sub_02002580 + mov r1, #0x13 + mov r4, r0 + bl sub_020027F8 + mov sl, r0 + mov r0, r5, lsl #0x10 + mov r0, r0, lsr #0x10 + bl Card_LockBackup + mov r0, #0 + str r0, [sp] + stmib sp, {r0, fp} + mov r0, #1 + str r0, [sp, #0xc] + mov r0, #0 + str r0, [sp, #0x10] + mov r0, r7 + add r1, sp, #0x14 + mov r2, #0x80 + mov r3, #0 + bl Cardi_RequestStreamCommand + cmp r0, #0 + bne _0204AA8C + mov r0, r4 + mov r1, sl + bl sub_020027F8 + mov r0, r5, lsl #0x10 + mov r0, r0, lsr #0x10 + bl Card_UnlockBackup + mov r0, r5, lsl #0x10 + mov r0, r0, lsr #0x10 + bl OS_ReleaseLockId + mov r0, #4 + b _0204AB10 +_0204AA8C: + mov r0, #0 + str r0, [sp] + str r0, [sp, #4] + mov r0, #8 + str r0, [sp, #8] + mov r0, #0xa + str r0, [sp, #0xc] + mov r0, #2 + str r0, [sp, #0x10] + mov r0, sb + mov r1, r7 + mov r2, r8 + mov r3, #0 + bl Cardi_RequestStreamCommand + mov r1, sl + mov sl, r0 + mov r0, r4 + bl sub_020027F8 + mov r0, r5, lsl #0x10 + mov r0, r0, lsr #0x10 + bl Card_UnlockBackup + mov r0, r5, lsl #0x10 + mov r0, r0, lsr #0x10 + bl OS_ReleaseLockId + cmp sl, #0 + movne r0, #0 + bne _0204AB10 + mov r0, #0 + bl CardPullOutWithStatus + add r6, r6, #1 +_0204AB04: + cmp r6, #4 + blt _0204AA00 + mov r0, #3 +_0204AB10: + add sp, sp, #0x214 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end sub_0204A9C8 + diff --git a/asm/main_0204CF9C.s b/asm/main_0204CF9C.s index 744ba889..b607568d 100644 --- a/asm/main_0204CF9C.s +++ b/asm/main_0204CF9C.s @@ -154,696 +154,3 @@ SetMonsterFlag1: ; 0x0204D14C .align 2, 0 _0204D184: .word GLOBAL_PROGRESS_PTR arm_func_end SetMonsterFlag1 - - arm_func_start GetMonsterFlag1 -GetMonsterFlag1: ; 0x0204D188 - ldr r3, _0204D1C0 ; =GLOBAL_PROGRESS_PTR - mov r1, r0, asr #4 - add r2, r0, r1, lsr #27 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #27 - add r0, r1, r0, ror #27 - ldr r3, [r3] - mov r2, r2, asr #5 - ldr r2, [r3, r2, lsl #2] - mov r1, #1 - tst r2, r1, lsl r0 - moveq r1, #0 - and r0, r1, #0xff - bx lr - .align 2, 0 -_0204D1C0: .word GLOBAL_PROGRESS_PTR - arm_func_end GetMonsterFlag1 - - arm_func_start SetMonsterFlag2 -SetMonsterFlag2: ; 0x0204D1C4 - stmdb sp!, {r3, lr} - bl FemaleToMaleForm - ldr r2, _0204D204 ; =GLOBAL_PROGRESS_PTR - mov r1, r0, asr #4 - ldr r3, [r2] - add r1, r0, r1, lsr #27 - mov r2, r0, lsr #0x1f - rsb r0, r2, r0, lsl #27 - add lr, r3, #0x98 - mov ip, r1, asr #5 - ldr r3, [lr, ip, lsl #2] - add r0, r2, r0, ror #27 - mov r1, #1 - orr r0, r3, r1, lsl r0 - str r0, [lr, ip, lsl #2] - ldmia sp!, {r3, pc} - .align 2, 0 -_0204D204: .word GLOBAL_PROGRESS_PTR - arm_func_end SetMonsterFlag2 - - arm_func_start HasMonsterBeenAttackedInDungeons -HasMonsterBeenAttackedInDungeons: ; 0x0204D208 - stmdb sp!, {r3, lr} - bl FemaleToMaleForm - ldr r3, _0204D24C ; =GLOBAL_PROGRESS_PTR - mov r1, r0, asr #4 - add r2, r0, r1, lsr #27 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #27 - add r0, r1, r0, ror #27 - ldr r3, [r3] - mov r2, r2, asr #5 - add r2, r3, r2, lsl #2 - ldr r2, [r2, #0x98] - mov r1, #1 - tst r2, r1, lsl r0 - moveq r1, #0 - and r0, r1, #0xff - ldmia sp!, {r3, pc} - .align 2, 0 -_0204D24C: .word GLOBAL_PROGRESS_PTR - arm_func_end HasMonsterBeenAttackedInDungeons - - arm_func_start SetDungeonTipShown -SetDungeonTipShown: ; 0x0204D250 - stmdb sp!, {r3, lr} - ldr r2, _0204D28C ; =GLOBAL_PROGRESS_PTR - mov r1, r0, asr #4 - ldr r3, [r2] - add r1, r0, r1, lsr #27 - mov r2, r0, lsr #0x1f - rsb r0, r2, r0, lsl #27 - add lr, r3, #0x94 - mov ip, r1, asr #5 - ldr r3, [lr, ip, lsl #2] - add r0, r2, r0, ror #27 - mov r1, #1 - orr r0, r3, r1, lsl r0 - str r0, [lr, ip, lsl #2] - ldmia sp!, {r3, pc} - .align 2, 0 -_0204D28C: .word GLOBAL_PROGRESS_PTR - arm_func_end SetDungeonTipShown - - arm_func_start GetDungeonTipShown -GetDungeonTipShown: ; 0x0204D290 - cmp r0, #0x1f - movge r0, #0 - bxge lr - ldr r2, _0204D2D8 ; =GLOBAL_PROGRESS_PTR - mov r1, r0, asr #4 - add r1, r0, r1, lsr #27 - ldr r3, [r2] - mov r2, r1, asr #5 - mov r1, r0, lsr #0x1f - add r2, r3, r2, lsl #2 - rsb r0, r1, r0, lsl #27 - add r0, r1, r0, ror #27 - ldr r2, [r2, #0x94] - mov r1, #1 - tst r2, r1, lsl r0 - moveq r1, #0 - and r0, r1, #0xff - bx lr - .align 2, 0 -_0204D2D8: .word GLOBAL_PROGRESS_PTR - arm_func_end GetDungeonTipShown - - arm_func_start SetMaxReachedFloor -SetMaxReachedFloor: ; 0x0204D2DC - cmp r0, #0xb4 - ldrlo r2, _0204D2F4 ; =GLOBAL_PROGRESS_PTR - ldrlo r2, [r2] - addlo r0, r2, r0 - strlob r1, [r0, #0x143] - bx lr - .align 2, 0 -_0204D2F4: .word GLOBAL_PROGRESS_PTR - arm_func_end SetMaxReachedFloor - - arm_func_start GetMaxReachedFloor -GetMaxReachedFloor: ; 0x0204D2F8 - cmp r0, #0xb4 - ldrlo r1, _0204D314 ; =GLOBAL_PROGRESS_PTR - movhs r0, #0 - ldrlo r1, [r1] - addlo r0, r1, r0 - ldrlob r0, [r0, #0x143] - bx lr - .align 2, 0 -_0204D314: .word GLOBAL_PROGRESS_PTR - arm_func_end GetMaxReachedFloor - - arm_func_start IncrementNbAdventures -IncrementNbAdventures: ; 0x0204D318 - ldr r0, _0204D344 ; =GLOBAL_PROGRESS_PTR - ldr r1, _0204D348 ; =0x000F423F - ldr r3, [r0] - ldr r2, [r3, #0x1f8] - add r2, r2, #1 - str r2, [r3, #0x1f8] - ldr r2, [r0] - ldr r0, [r2, #0x1f8] - cmp r0, r1 - strhi r1, [r2, #0x1f8] - bx lr - .align 2, 0 -_0204D344: .word GLOBAL_PROGRESS_PTR -_0204D348: .word 0x000F423F - arm_func_end IncrementNbAdventures - - arm_func_start GetNbAdventures -GetNbAdventures: ; 0x0204D34C - ldr r0, _0204D35C ; =GLOBAL_PROGRESS_PTR - ldr r0, [r0] - ldr r0, [r0, #0x1f8] - bx lr - .align 2, 0 -_0204D35C: .word GLOBAL_PROGRESS_PTR - arm_func_end GetNbAdventures - - arm_func_start CanMonsterSpawn -CanMonsterSpawn: ; 0x0204D360 - mov r0, #1 - bx lr - arm_func_end CanMonsterSpawn - - arm_func_start IncrementExclusiveMonsterCounts -IncrementExclusiveMonsterCounts: ; 0x0204D368 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r4, _0204D3B8 ; =VERSION_EXCLUSIVE_MONSTERS - ldr r7, _0204D3BC ; =GLOBAL_PROGRESS_PTR - mov r6, r0 - mov r5, #0 - mov r8, #1 -_0204D380: - mov r0, r5, lsl #2 - ldrsh r0, [r4, r0] - bl GetDexNumber - mov sb, r0 - mov r0, r6 - bl GetDexNumber - cmp sb, r0 - ldreq r0, [r7] - addeq r0, r0, r5 - add r5, r5, #1 - streqb r8, [r0, #0x12c] - cmp r5, #0x17 - blt _0204D380 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0204D3B8: .word VERSION_EXCLUSIVE_MONSTERS -_0204D3BC: .word GLOBAL_PROGRESS_PTR - arm_func_end IncrementExclusiveMonsterCounts - - arm_func_start CopyProgressInfoTo -CopyProgressInfoTo: ; 0x0204D3C0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r4, _0204D538 ; =0x00000483 - mov r5, r0 - mov r8, #0 - add r7, sp, #0 - mov r6, #1 -_0204D3D8: - mov r0, r8, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetMonsterFlag1 - strb r0, [sp] - mov r0, r5 - mov r1, r7 - mov r2, r6 - bl CopyBitsTo - add r8, r8, #1 - cmp r8, r4 - blt _0204D3D8 - mov r7, #0 - add r6, sp, #0 - mov r4, #1 -_0204D410: - mov r0, r7 - bl GetDungeonTipShown - strb r0, [sp] - mov r0, r5 - mov r1, r6 - mov r2, r4 - bl CopyBitsTo - add r7, r7, #1 - cmp r7, #0x1f - blt _0204D410 - ldr r4, _0204D538 ; =0x00000483 - mov r8, #0 - add r7, sp, #0 - mov r6, #1 -_0204D448: - mov r0, r8, lsl #0x10 - mov r0, r0, asr #0x10 - bl HasMonsterBeenAttackedInDungeons - strb r0, [sp] - mov r0, r5 - mov r1, r7 - mov r2, r6 - bl CopyBitsTo - add r8, r8, #1 - cmp r8, r4 - blt _0204D448 - ldr r8, _0204D53C ; =_0209E011 - ldr sb, _0204D540 ; =_0209E010 - ldr r6, _0204D544 ; =GLOBAL_PROGRESS_PTR - mov r4, #0 - mov r7, #1 -_0204D488: - ldr r0, [r6] - mov r2, r7 - add r0, r0, r4 - ldrb r0, [r0, #0x12c] - cmp r0, #0 - movne r1, sb - moveq r1, r8 - mov r0, r5 - bl CopyBitsTo - add r4, r4, #1 - cmp r4, #0x17 - blt _0204D488 - ldr r4, _0204D544 ; =GLOBAL_PROGRESS_PTR - mov r7, #0 - mov r6, #7 -_0204D4C4: - ldr r1, [r4] - mov r0, r5 - add r1, r1, #0x43 - add r1, r1, #0x100 - mov r2, r6 - add r1, r1, r7 - bl CopyBitsTo - add r7, r7, #1 - cmp r7, #0xb4 - blt _0204D4C4 - ldr r1, _0204D544 ; =GLOBAL_PROGRESS_PTR - mov r0, r5 - ldr r1, [r1] - mov r2, #0x20 - add r1, r1, #0x1f8 - bl CopyBitsTo - ldr r4, _0204D544 ; =GLOBAL_PROGRESS_PTR - mov r7, #0 - mov r6, #8 -_0204D510: - ldr r1, [r4] - mov r0, r5 - add r1, r1, #0x1fc - mov r2, r6 - add r1, r1, r7 - bl CopyBitsTo - add r7, r7, #1 - cmp r7, #0x10 - blt _0204D510 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0204D538: .word 0x00000483 -_0204D53C: .word _0209E011 -_0204D540: .word _0209E010 -_0204D544: .word GLOBAL_PROGRESS_PTR - arm_func_end CopyProgressInfoTo - - arm_func_start CopyProgressInfoFromScratchTo -CopyProgressInfoFromScratchTo: ; 0x0204D548 - stmdb sp!, {r3, lr} - sub sp, sp, #0x10 - mov r3, r0 - mov r2, r1 - add r0, sp, #0 - mov r1, r3 - bl InitBitstreamForRead - add r0, sp, #0 - bl CopyProgressInfoTo - add r0, sp, #0 - bl BitstreamDebug - ldr r0, [sp, #8] - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - arm_func_end CopyProgressInfoFromScratchTo - - arm_func_start CopyProgressInfoFrom -CopyProgressInfoFrom: ; 0x0204D580 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #4 - ldr r1, _0204D740 ; =GLOBAL_PROGRESS_PTR - mov r4, r0 - ldr r0, [r1] - mov r1, #0x20c - bl MemZero - ldr r5, _0204D744 ; =0x00000483 - mov r8, #0 - add r7, sp, #0 - mov r6, #1 -_0204D5AC: - mov r0, r4 - mov r1, r7 - mov r2, r6 - bl CopyBitsFrom - ldrb r0, [sp] - cmp r0, #0 - beq _0204D5D4 - mov r0, r8, lsl #0x10 - mov r0, r0, asr #0x10 - bl SetMonsterFlag1 -_0204D5D4: - add r8, r8, #1 - cmp r8, r5 - blt _0204D5AC - mov r7, #0 - add r6, sp, #0 - mov r5, #1 -_0204D5EC: - mov r0, r4 - mov r1, r6 - mov r2, r5 - bl CopyBitsFrom - ldrb r0, [sp] - cmp r0, #0 - beq _0204D610 - mov r0, r7 - bl SetDungeonTipShown -_0204D610: - add r7, r7, #1 - cmp r7, #0x1f - blt _0204D5EC - ldr r5, _0204D744 ; =0x00000483 - mov r8, #0 - add r7, sp, #0 - mov r6, #1 -_0204D62C: - mov r0, r4 - mov r1, r7 - mov r2, r6 - bl CopyBitsFrom - ldrb r0, [sp] - cmp r0, #0 - beq _0204D654 - mov r0, r8, lsl #0x10 - mov r0, r0, asr #0x10 - bl SetMonsterFlag2 -_0204D654: - add r8, r8, #1 - cmp r8, r5 - blt _0204D62C - mov sb, #0 - mov r6, #1 - ldr sl, _0204D740 ; =GLOBAL_PROGRESS_PTR - mov r5, sb - add r8, sp, #1 - mov r7, r6 -_0204D678: - mov r0, r4 - mov r1, r8 - mov r2, r7 - bl CopyBitsFrom - ldrb r0, [sp, #1] - tst r0, #1 - ldr r0, [sl] - movne r1, r6 - add r0, r0, sb - moveq r1, r5 - add sb, sb, #1 - strb r1, [r0, #0x12c] - cmp sb, #0x17 - blt _0204D678 - ldr r8, _0204D740 ; =GLOBAL_PROGRESS_PTR - mov r7, #0 - add r6, sp, #1 - mov r5, #7 -_0204D6C0: - mov r0, r4 - mov r1, r6 - mov r2, r5 - bl CopyBitsFrom - ldrb r1, [sp, #1] - ldr r0, [r8] - add r0, r0, r7 - and r1, r1, #0x7f - add r7, r7, #1 - strb r1, [r0, #0x143] - cmp r7, #0xb4 - blt _0204D6C0 - ldr r1, _0204D740 ; =GLOBAL_PROGRESS_PTR - mov r0, r4 - ldr r1, [r1] - mov r2, #0x20 - add r1, r1, #0x1f8 - bl CopyBitsFrom - ldr r5, _0204D740 ; =GLOBAL_PROGRESS_PTR - mov r7, #0 - mov r6, #8 -_0204D714: - ldr r1, [r5] - mov r0, r4 - add r1, r1, #0x1fc - mov r2, r6 - add r1, r1, r7 - bl CopyBitsFrom - add r7, r7, #1 - cmp r7, #0x10 - blt _0204D714 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0204D740: .word GLOBAL_PROGRESS_PTR -_0204D744: .word 0x00000483 - arm_func_end CopyProgressInfoFrom - - arm_func_start CopyProgressInfoFromScratchFrom -CopyProgressInfoFromScratchFrom: ; 0x0204D748 - stmdb sp!, {r3, lr} - sub sp, sp, #0x10 - mov r3, r0 - mov r2, r1 - add r0, sp, #0 - mov r1, r3 - bl InitBitstreamForWrite - add r0, sp, #0 - bl CopyProgressInfoFrom - add r0, sp, #0 - bl BitstreamDebug - ldr r0, [sp, #8] - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - arm_func_end CopyProgressInfoFromScratchFrom - - arm_func_start InitKaomadoStream -InitKaomadoStream: ; 0x0204D780 - stmdb sp!, {r3, lr} - bl FileRom_InitDataTransfer - ldr r0, _0204D798 ; =KAOMADO_STREAM - bl FileRom_Veneer_FileInit - bl FileRom_StopDataTransfer - ldmia sp!, {r3, pc} - .align 2, 0 -_0204D798: .word KAOMADO_STREAM - arm_func_end InitKaomadoStream - - arm_func_start InitPortraitParams -InitPortraitParams: ; 0x0204D79C - mov r2, #0 - strh r2, [r0] - sub r1, r2, #2 - strb r1, [r0, #2] - strb r2, [r0, #3] - mov r1, #2 - str r1, [r0, #4] - mov r1, #9 - str r1, [r0, #8] - strb r2, [r0, #0xc] - strb r2, [r0, #0xd] - strb r2, [r0, #0xe] - strb r2, [r0, #0xf] - bx lr - arm_func_end InitPortraitParams - - arm_func_start InitPortraitParamsWithMonsterId -InitPortraitParamsWithMonsterId: ; 0x0204D7D4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl InitPortraitParams - strh r4, [r5] - mov r0, #0 - strb r0, [r5, #2] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end InitPortraitParamsWithMonsterId - - arm_func_start SetPortraitEmotion -SetPortraitEmotion: ; 0x0204D7F4 - ldrsh r2, [r0] - cmp r2, #0 - strneb r1, [r0, #2] - bx lr - arm_func_end SetPortraitEmotion - - arm_func_start SetPortraitLayout -SetPortraitLayout: ; 0x0204D804 - ldrsh r2, [r0] - cmp r2, #0 - cmpne r1, #0x20 - bxeq lr - mov r2, #6 - mul r2, r1, r2 - ldr r3, _0204D844 ; =PORTRAIT_LAYOUTS - strb r1, [r0, #3] - ldrsh r1, [r3, r2] - add r2, r3, r2 - str r1, [r0, #4] - ldrsh r1, [r2, #2] - str r1, [r0, #8] - ldrb r1, [r2, #4] - strb r1, [r0, #0xc] - bx lr - .align 2, 0 -_0204D844: .word PORTRAIT_LAYOUTS - arm_func_end SetPortraitLayout - - arm_func_start SetPortraitOffset -SetPortraitOffset: ; 0x0204D848 - stmdb sp!, {r3, lr} - ldrsh r2, [r0] - cmp r2, #0 - ldmeqia sp!, {r3, pc} - ldrb r3, [r0, #3] - mov r2, #6 - ldr lr, _0204D890 ; =PORTRAIT_LAYOUTS - smulbb ip, r3, r2 - ldrsh r3, [lr, ip] - ldr r2, [r1] - add ip, lr, ip - add r2, r3, r2 - str r2, [r0, #4] - ldrsh r2, [ip, #2] - ldr r1, [r1, #4] - add r1, r2, r1 - str r1, [r0, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_0204D890: .word PORTRAIT_LAYOUTS - arm_func_end SetPortraitOffset - - arm_func_start AllowPortraitDefault -AllowPortraitDefault: ; 0x0204D894 - strb r1, [r0, #0xf] - bx lr - arm_func_end AllowPortraitDefault - - arm_func_start IsValidPortrait -IsValidPortrait: ; 0x0204D89C - ldrsh r1, [r0] - cmp r1, #0 - ldrnesb r1, [r0, #2] - mvnne r0, #1 - cmpne r1, r0 - movne r0, #1 - moveq r0, #0 - bx lr - arm_func_end IsValidPortrait - - arm_func_start LoadPortrait -LoadPortrait: ; 0x0204D8BC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov sl, r0 - mov sb, r1 - ldrsh r7, [sl] - ldrsb r8, [sl, #2] - bl FileRom_InitDataTransfer - ldr r0, _0204DA14 ; =KAOMADO_STREAM - ldr r1, _0204DA18 ; =KAOMADO_FILEPATH - bl FileRom_HandleOpen - mov fp, #0 - mov r4, fp - mov r5, #1 - b _0204D9DC -_0204D8F4: - mov r0, #0x28 - mul r0, r7, r0 - add r0, r0, r8, lsl #1 - mov r1, r0, lsl #2 - ldr r0, _0204DA14 ; =KAOMADO_STREAM - mov r2, #0 - sub r7, r7, #0x258 - bl FileRom_HandleSeek - ldr r0, _0204DA14 ; =KAOMADO_STREAM - add r1, sp, #0 - mov r2, #0xc - bl FileRom_HandleRead - ldr r0, [sp, #4] - cmp r0, #0 - movge r0, #1 - movlt r0, #0 - strb r0, [sl, #0xd] - ldrb r0, [sl, #0xc] - cmp r0, #0 - beq _0204D984 - ldr r0, [sp, #4] - cmp r0, #0 - mov r1, r0 - bge _0204D96C - ldr r1, [sp] - cmp r0, #0 - rsblt r0, r0, #0 - sub r6, r0, r1 - strb r5, [sl, #0xe] - b _0204D99C -_0204D96C: - ldr r2, [sp, #8] - cmp r2, #0 - rsblt r2, r2, #0 - sub r6, r2, r0 - strb r4, [sl, #0xe] - b _0204D99C -_0204D984: - ldr r0, [sp, #4] - ldr r1, [sp] - cmp r0, #0 - rsblt r0, r0, #0 - sub r6, r0, r1 - strb fp, [sl, #0xe] -_0204D99C: - cmp r1, #0 - ble _0204D9DC - cmp sb, #0 - beq _0204D9C8 - ldr r0, _0204DA14 ; =KAOMADO_STREAM - mov r2, #0 - bl FileRom_HandleSeek - ldr r0, _0204DA14 ; =KAOMADO_STREAM - mov r1, sb - mov r2, r6 - bl FileRom_HandleRead -_0204D9C8: - ldr r0, _0204DA14 ; =KAOMADO_STREAM - bl FileClose - bl FileRom_StopDataTransfer - mov r0, #1 - b _0204DA0C -_0204D9DC: - cmp r7, #0 - bgt _0204D8F4 - ldrb r0, [sl, #0xf] - cmp r0, #0 - cmpne r8, #0 - movne r8, #0 - ldrnesh r7, [sl] - bne _0204D9DC - ldr r0, _0204DA14 ; =KAOMADO_STREAM - bl FileClose - bl FileRom_StopDataTransfer - mov r0, #0 -_0204DA0C: - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0204DA14: .word KAOMADO_STREAM -_0204DA18: .word KAOMADO_FILEPATH - arm_func_end LoadPortrait - - arm_func_start sub_0204DA1C -sub_0204DA1C: ; 0x0204DA1C - ldr r1, _0204DA28 ; =ARM9_UNKNOWN_TABLE__NA_209E164 - ldrb r0, [r1, r0] - bx lr - .align 2, 0 -_0204DA28: .word ARM9_UNKNOWN_TABLE__NA_209E164 - arm_func_end sub_0204DA1C diff --git a/asm/main_0204D368.s b/asm/main_0204D368.s new file mode 100644 index 00000000..0f09b329 --- /dev/null +++ b/asm/main_0204D368.s @@ -0,0 +1,528 @@ + .include "asm/macros.inc" + .include "main_0204D368.inc" + + .text + + arm_func_start IncrementExclusiveMonsterCounts +IncrementExclusiveMonsterCounts: ; 0x0204D368 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r4, _0204D3B8 ; =VERSION_EXCLUSIVE_MONSTERS + ldr r7, _0204D3BC ; =GLOBAL_PROGRESS_PTR + mov r6, r0 + mov r5, #0 + mov r8, #1 +_0204D380: + mov r0, r5, lsl #2 + ldrsh r0, [r4, r0] + bl GetDexNumber + mov sb, r0 + mov r0, r6 + bl GetDexNumber + cmp sb, r0 + ldreq r0, [r7] + addeq r0, r0, r5 + add r5, r5, #1 + streqb r8, [r0, #0x12c] + cmp r5, #0x17 + blt _0204D380 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0204D3B8: .word VERSION_EXCLUSIVE_MONSTERS +_0204D3BC: .word GLOBAL_PROGRESS_PTR + arm_func_end IncrementExclusiveMonsterCounts + + arm_func_start CopyProgressInfoTo +CopyProgressInfoTo: ; 0x0204D3C0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r4, _0204D538 ; =0x00000483 + mov r5, r0 + mov r8, #0 + add r7, sp, #0 + mov r6, #1 +_0204D3D8: + mov r0, r8, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetMonsterFlag1 + strb r0, [sp] + mov r0, r5 + mov r1, r7 + mov r2, r6 + bl CopyBitsTo + add r8, r8, #1 + cmp r8, r4 + blt _0204D3D8 + mov r7, #0 + add r6, sp, #0 + mov r4, #1 +_0204D410: + mov r0, r7 + bl GetDungeonTipShown + strb r0, [sp] + mov r0, r5 + mov r1, r6 + mov r2, r4 + bl CopyBitsTo + add r7, r7, #1 + cmp r7, #0x1f + blt _0204D410 + ldr r4, _0204D538 ; =0x00000483 + mov r8, #0 + add r7, sp, #0 + mov r6, #1 +_0204D448: + mov r0, r8, lsl #0x10 + mov r0, r0, asr #0x10 + bl HasMonsterBeenAttackedInDungeons + strb r0, [sp] + mov r0, r5 + mov r1, r7 + mov r2, r6 + bl CopyBitsTo + add r8, r8, #1 + cmp r8, r4 + blt _0204D448 + ldr r8, _0204D53C ; =_0209E011 + ldr sb, _0204D540 ; =_0209E010 + ldr r6, _0204D544 ; =GLOBAL_PROGRESS_PTR + mov r4, #0 + mov r7, #1 +_0204D488: + ldr r0, [r6] + mov r2, r7 + add r0, r0, r4 + ldrb r0, [r0, #0x12c] + cmp r0, #0 + movne r1, sb + moveq r1, r8 + mov r0, r5 + bl CopyBitsTo + add r4, r4, #1 + cmp r4, #0x17 + blt _0204D488 + ldr r4, _0204D544 ; =GLOBAL_PROGRESS_PTR + mov r7, #0 + mov r6, #7 +_0204D4C4: + ldr r1, [r4] + mov r0, r5 + add r1, r1, #0x43 + add r1, r1, #0x100 + mov r2, r6 + add r1, r1, r7 + bl CopyBitsTo + add r7, r7, #1 + cmp r7, #0xb4 + blt _0204D4C4 + ldr r1, _0204D544 ; =GLOBAL_PROGRESS_PTR + mov r0, r5 + ldr r1, [r1] + mov r2, #0x20 + add r1, r1, #0x1f8 + bl CopyBitsTo + ldr r4, _0204D544 ; =GLOBAL_PROGRESS_PTR + mov r7, #0 + mov r6, #8 +_0204D510: + ldr r1, [r4] + mov r0, r5 + add r1, r1, #0x1fc + mov r2, r6 + add r1, r1, r7 + bl CopyBitsTo + add r7, r7, #1 + cmp r7, #0x10 + blt _0204D510 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0204D538: .word 0x00000483 +_0204D53C: .word _0209E011 +_0204D540: .word _0209E010 +_0204D544: .word GLOBAL_PROGRESS_PTR + arm_func_end CopyProgressInfoTo + + arm_func_start CopyProgressInfoFromScratchTo +CopyProgressInfoFromScratchTo: ; 0x0204D548 + stmdb sp!, {r3, lr} + sub sp, sp, #0x10 + mov r3, r0 + mov r2, r1 + add r0, sp, #0 + mov r1, r3 + bl InitBitstreamForRead + add r0, sp, #0 + bl CopyProgressInfoTo + add r0, sp, #0 + bl BitstreamDebug + ldr r0, [sp, #8] + add sp, sp, #0x10 + ldmia sp!, {r3, pc} + arm_func_end CopyProgressInfoFromScratchTo + + arm_func_start CopyProgressInfoFrom +CopyProgressInfoFrom: ; 0x0204D580 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #4 + ldr r1, _0204D740 ; =GLOBAL_PROGRESS_PTR + mov r4, r0 + ldr r0, [r1] + mov r1, #0x20c + bl MemZero + ldr r5, _0204D744 ; =0x00000483 + mov r8, #0 + add r7, sp, #0 + mov r6, #1 +_0204D5AC: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl CopyBitsFrom + ldrb r0, [sp] + cmp r0, #0 + beq _0204D5D4 + mov r0, r8, lsl #0x10 + mov r0, r0, asr #0x10 + bl SetMonsterFlag1 +_0204D5D4: + add r8, r8, #1 + cmp r8, r5 + blt _0204D5AC + mov r7, #0 + add r6, sp, #0 + mov r5, #1 +_0204D5EC: + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl CopyBitsFrom + ldrb r0, [sp] + cmp r0, #0 + beq _0204D610 + mov r0, r7 + bl SetDungeonTipShown +_0204D610: + add r7, r7, #1 + cmp r7, #0x1f + blt _0204D5EC + ldr r5, _0204D744 ; =0x00000483 + mov r8, #0 + add r7, sp, #0 + mov r6, #1 +_0204D62C: + mov r0, r4 + mov r1, r7 + mov r2, r6 + bl CopyBitsFrom + ldrb r0, [sp] + cmp r0, #0 + beq _0204D654 + mov r0, r8, lsl #0x10 + mov r0, r0, asr #0x10 + bl SetMonsterFlag2 +_0204D654: + add r8, r8, #1 + cmp r8, r5 + blt _0204D62C + mov sb, #0 + mov r6, #1 + ldr sl, _0204D740 ; =GLOBAL_PROGRESS_PTR + mov r5, sb + add r8, sp, #1 + mov r7, r6 +_0204D678: + mov r0, r4 + mov r1, r8 + mov r2, r7 + bl CopyBitsFrom + ldrb r0, [sp, #1] + tst r0, #1 + ldr r0, [sl] + movne r1, r6 + add r0, r0, sb + moveq r1, r5 + add sb, sb, #1 + strb r1, [r0, #0x12c] + cmp sb, #0x17 + blt _0204D678 + ldr r8, _0204D740 ; =GLOBAL_PROGRESS_PTR + mov r7, #0 + add r6, sp, #1 + mov r5, #7 +_0204D6C0: + mov r0, r4 + mov r1, r6 + mov r2, r5 + bl CopyBitsFrom + ldrb r1, [sp, #1] + ldr r0, [r8] + add r0, r0, r7 + and r1, r1, #0x7f + add r7, r7, #1 + strb r1, [r0, #0x143] + cmp r7, #0xb4 + blt _0204D6C0 + ldr r1, _0204D740 ; =GLOBAL_PROGRESS_PTR + mov r0, r4 + ldr r1, [r1] + mov r2, #0x20 + add r1, r1, #0x1f8 + bl CopyBitsFrom + ldr r5, _0204D740 ; =GLOBAL_PROGRESS_PTR + mov r7, #0 + mov r6, #8 +_0204D714: + ldr r1, [r5] + mov r0, r4 + add r1, r1, #0x1fc + mov r2, r6 + add r1, r1, r7 + bl CopyBitsFrom + add r7, r7, #1 + cmp r7, #0x10 + blt _0204D714 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0204D740: .word GLOBAL_PROGRESS_PTR +_0204D744: .word 0x00000483 + arm_func_end CopyProgressInfoFrom + + arm_func_start CopyProgressInfoFromScratchFrom +CopyProgressInfoFromScratchFrom: ; 0x0204D748 + stmdb sp!, {r3, lr} + sub sp, sp, #0x10 + mov r3, r0 + mov r2, r1 + add r0, sp, #0 + mov r1, r3 + bl InitBitstreamForWrite + add r0, sp, #0 + bl CopyProgressInfoFrom + add r0, sp, #0 + bl BitstreamDebug + ldr r0, [sp, #8] + add sp, sp, #0x10 + ldmia sp!, {r3, pc} + arm_func_end CopyProgressInfoFromScratchFrom + + arm_func_start InitKaomadoStream +InitKaomadoStream: ; 0x0204D780 + stmdb sp!, {r3, lr} + bl FileRom_InitDataTransfer + ldr r0, _0204D798 ; =KAOMADO_STREAM + bl FileRom_Veneer_FileInit + bl FileRom_StopDataTransfer + ldmia sp!, {r3, pc} + .align 2, 0 +_0204D798: .word KAOMADO_STREAM + arm_func_end InitKaomadoStream + + arm_func_start InitPortraitParams +InitPortraitParams: ; 0x0204D79C + mov r2, #0 + strh r2, [r0] + sub r1, r2, #2 + strb r1, [r0, #2] + strb r2, [r0, #3] + mov r1, #2 + str r1, [r0, #4] + mov r1, #9 + str r1, [r0, #8] + strb r2, [r0, #0xc] + strb r2, [r0, #0xd] + strb r2, [r0, #0xe] + strb r2, [r0, #0xf] + bx lr + arm_func_end InitPortraitParams + + arm_func_start InitPortraitParamsWithMonsterId +InitPortraitParamsWithMonsterId: ; 0x0204D7D4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + bl InitPortraitParams + strh r4, [r5] + mov r0, #0 + strb r0, [r5, #2] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end InitPortraitParamsWithMonsterId + + arm_func_start SetPortraitEmotion +SetPortraitEmotion: ; 0x0204D7F4 + ldrsh r2, [r0] + cmp r2, #0 + strneb r1, [r0, #2] + bx lr + arm_func_end SetPortraitEmotion + + arm_func_start SetPortraitLayout +SetPortraitLayout: ; 0x0204D804 + ldrsh r2, [r0] + cmp r2, #0 + cmpne r1, #0x20 + bxeq lr + mov r2, #6 + mul r2, r1, r2 + ldr r3, _0204D844 ; =PORTRAIT_LAYOUTS + strb r1, [r0, #3] + ldrsh r1, [r3, r2] + add r2, r3, r2 + str r1, [r0, #4] + ldrsh r1, [r2, #2] + str r1, [r0, #8] + ldrb r1, [r2, #4] + strb r1, [r0, #0xc] + bx lr + .align 2, 0 +_0204D844: .word PORTRAIT_LAYOUTS + arm_func_end SetPortraitLayout + + arm_func_start SetPortraitOffset +SetPortraitOffset: ; 0x0204D848 + stmdb sp!, {r3, lr} + ldrsh r2, [r0] + cmp r2, #0 + ldmeqia sp!, {r3, pc} + ldrb r3, [r0, #3] + mov r2, #6 + ldr lr, _0204D890 ; =PORTRAIT_LAYOUTS + smulbb ip, r3, r2 + ldrsh r3, [lr, ip] + ldr r2, [r1] + add ip, lr, ip + add r2, r3, r2 + str r2, [r0, #4] + ldrsh r2, [ip, #2] + ldr r1, [r1, #4] + add r1, r2, r1 + str r1, [r0, #8] + ldmia sp!, {r3, pc} + .align 2, 0 +_0204D890: .word PORTRAIT_LAYOUTS + arm_func_end SetPortraitOffset + + arm_func_start AllowPortraitDefault +AllowPortraitDefault: ; 0x0204D894 + strb r1, [r0, #0xf] + bx lr + arm_func_end AllowPortraitDefault + + arm_func_start IsValidPortrait +IsValidPortrait: ; 0x0204D89C + ldrsh r1, [r0] + cmp r1, #0 + ldrnesb r1, [r0, #2] + mvnne r0, #1 + cmpne r1, r0 + movne r0, #1 + moveq r0, #0 + bx lr + arm_func_end IsValidPortrait + + arm_func_start LoadPortrait +LoadPortrait: ; 0x0204D8BC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sl, r0 + mov sb, r1 + ldrsh r7, [sl] + ldrsb r8, [sl, #2] + bl FileRom_InitDataTransfer + ldr r0, _0204DA14 ; =KAOMADO_STREAM + ldr r1, _0204DA18 ; =KAOMADO_FILEPATH + bl FileRom_HandleOpen + mov fp, #0 + mov r4, fp + mov r5, #1 + b _0204D9DC +_0204D8F4: + mov r0, #0x28 + mul r0, r7, r0 + add r0, r0, r8, lsl #1 + mov r1, r0, lsl #2 + ldr r0, _0204DA14 ; =KAOMADO_STREAM + mov r2, #0 + sub r7, r7, #0x258 + bl FileRom_HandleSeek + ldr r0, _0204DA14 ; =KAOMADO_STREAM + add r1, sp, #0 + mov r2, #0xc + bl FileRom_HandleRead + ldr r0, [sp, #4] + cmp r0, #0 + movge r0, #1 + movlt r0, #0 + strb r0, [sl, #0xd] + ldrb r0, [sl, #0xc] + cmp r0, #0 + beq _0204D984 + ldr r0, [sp, #4] + cmp r0, #0 + mov r1, r0 + bge _0204D96C + ldr r1, [sp] + cmp r0, #0 + rsblt r0, r0, #0 + sub r6, r0, r1 + strb r5, [sl, #0xe] + b _0204D99C +_0204D96C: + ldr r2, [sp, #8] + cmp r2, #0 + rsblt r2, r2, #0 + sub r6, r2, r0 + strb r4, [sl, #0xe] + b _0204D99C +_0204D984: + ldr r0, [sp, #4] + ldr r1, [sp] + cmp r0, #0 + rsblt r0, r0, #0 + sub r6, r0, r1 + strb fp, [sl, #0xe] +_0204D99C: + cmp r1, #0 + ble _0204D9DC + cmp sb, #0 + beq _0204D9C8 + ldr r0, _0204DA14 ; =KAOMADO_STREAM + mov r2, #0 + bl FileRom_HandleSeek + ldr r0, _0204DA14 ; =KAOMADO_STREAM + mov r1, sb + mov r2, r6 + bl FileRom_HandleRead +_0204D9C8: + ldr r0, _0204DA14 ; =KAOMADO_STREAM + bl FileClose + bl FileRom_StopDataTransfer + mov r0, #1 + b _0204DA0C +_0204D9DC: + cmp r7, #0 + bgt _0204D8F4 + ldrb r0, [sl, #0xf] + cmp r0, #0 + cmpne r8, #0 + movne r8, #0 + ldrnesh r7, [sl] + bne _0204D9DC + ldr r0, _0204DA14 ; =KAOMADO_STREAM + bl FileClose + bl FileRom_StopDataTransfer + mov r0, #0 +_0204DA0C: + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0204DA14: .word KAOMADO_STREAM +_0204DA18: .word KAOMADO_FILEPATH + arm_func_end LoadPortrait + + arm_func_start sub_0204DA1C +sub_0204DA1C: ; 0x0204DA1C + ldr r1, _0204DA28 ; =ARM9_UNKNOWN_TABLE__NA_209E164 + ldrb r0, [r1, r0] + bx lr + .align 2, 0 +_0204DA28: .word ARM9_UNKNOWN_TABLE__NA_209E164 + arm_func_end sub_0204DA1C diff --git a/asm/main_0204F0A0.s b/asm/main_0204F0A0.s index 2df6a326..1e1575c7 100644 --- a/asm/main_0204F0A0.s +++ b/asm/main_0204F0A0.s @@ -783,55 +783,3 @@ _0204F9B0: .word 0x000042B9 _0204F9B4: .word 0x000042BA #endif arm_func_end GetGroundNameId - - arm_func_start sub_0204F9B8 -sub_0204F9B8: ; 0x0204F9B8 - ldr ip, _0204F9C4 ; =ResetPlayTimer - ldr r0, _0204F9C8 ; =PLAY_TIME_SECONDS - bx ip - .align 2, 0 -_0204F9C4: .word ResetPlayTimer -_0204F9C8: .word PLAY_TIME_SECONDS - arm_func_end sub_0204F9B8 - - arm_func_start sub_0204F9CC -sub_0204F9CC: ; 0x0204F9CC - ldr ip, _0204F9D8 ; =PlayTimerTick - ldr r0, _0204F9DC ; =PLAY_TIME_SECONDS - bx ip - .align 2, 0 -_0204F9D8: .word PlayTimerTick -_0204F9DC: .word PLAY_TIME_SECONDS - arm_func_end sub_0204F9CC - - arm_func_start sub_0204F9E0 -sub_0204F9E0: ; 0x0204F9E0 - ldr ip, _0204F9EC ; =GetPlayTimeSeconds - ldr r0, _0204F9F0 ; =PLAY_TIME_SECONDS - bx ip - .align 2, 0 -_0204F9EC: .word GetPlayTimeSeconds -_0204F9F0: .word PLAY_TIME_SECONDS - arm_func_end sub_0204F9E0 - - arm_func_start sub_0204F9F4 -sub_0204F9F4: ; 0x0204F9F4 - ldr ip, _0204FA04 ; =sub_02050E5C - mov r1, r0 - ldr r0, _0204FA08 ; =PLAY_TIME_SECONDS - bx ip - .align 2, 0 -_0204FA04: .word sub_02050E5C -_0204FA08: .word PLAY_TIME_SECONDS - arm_func_end sub_0204F9F4 - - arm_func_start sub_0204FA0C -sub_0204FA0C: ; 0x0204FA0C - ldr ip, _0204FA1C ; =sub_02050E8C - mov r1, r0 - ldr r0, _0204FA20 ; =PLAY_TIME_SECONDS - bx ip - .align 2, 0 -_0204FA1C: .word sub_02050E8C -_0204FA20: .word PLAY_TIME_SECONDS - arm_func_end sub_0204FA0C diff --git a/asm/main_02051788.s b/asm/main_02051788.s deleted file mode 100644 index 33d073e3..00000000 --- a/asm/main_02051788.s +++ /dev/null @@ -1,35 +0,0 @@ - .include "asm/macros.inc" - .include "main_02051788.inc" - - .text - - arm_func_start sub_02051788 -sub_02051788: ; 0x02051788 - ldr r1, _02051794 ; =_020A20B1 - ldrb r0, [r1, r0, lsl #1] - bx lr - .align 2, 0 -_02051794: .word _020A20B1 - arm_func_end sub_02051788 - - arm_func_start sub_02051798 -sub_02051798: ; 0x02051798 - mov ip, #0 - ldr r2, _020517D0 ; =ARM9_UNKNOWN_TABLE__NA_20A20B0 - b _020517C0 -_020517A4: - add r1, r2, ip, lsl #1 - ldrb r1, [r1, #1] - mov r3, ip, lsl #1 - cmp r0, r1 - ldreqb r0, [r2, r3] - bxeq lr - add ip, ip, #1 -_020517C0: - cmp ip, #0x100 - blt _020517A4 - mov r0, #0xff - bx lr - .align 2, 0 -_020517D0: .word ARM9_UNKNOWN_TABLE__NA_20A20B0 - arm_func_end sub_02051798 diff --git a/asm/main_02058C4C.s b/asm/main_02058C4C.s deleted file mode 100644 index 0236b7c3..00000000 --- a/asm/main_02058C4C.s +++ /dev/null @@ -1,53 +0,0 @@ - .include "asm/macros.inc" - .include "main_02058C4C.inc" - - .text - - arm_func_start GetUnlockedTactics -GetUnlockedTactics: ; 0x02058C4C - stmdb sp!, {r3, lr} - mov lr, #0 - ldr r3, _02058C98 ; =TACTICS_UNLOCK_LEVEL_TABLE - mov ip, lr -_02058C5C: - mov r2, ip, lsl #1 - ldrsh r2, [r3, r2] - cmp r2, r1 - strleb ip, [r0, lr] - add ip, ip, #1 - addle lr, lr, #1 - cmp ip, #0xc - blt _02058C5C - mov r1, #0xb - b _02058C8C -_02058C84: - strb r1, [r0, lr] - add lr, lr, #1 -_02058C8C: - cmp lr, #0xc - blt _02058C84 - ldmia sp!, {r3, pc} - .align 2, 0 -_02058C98: .word TACTICS_UNLOCK_LEVEL_TABLE - arm_func_end GetUnlockedTactics - - arm_func_start GetUnlockedTacticFlags -GetUnlockedTacticFlags: ; 0x02058C9C - stmdb sp!, {r4, lr} - mov r4, #0 - ldr lr, _02058CD4 ; =TACTICS_UNLOCK_LEVEL_TABLE - mov r2, r4 - mov r3, #1 -_02058CB0: - mov ip, r4, lsl #1 - ldrsh ip, [lr, ip] - cmp ip, r1 - strleb r3, [r0, r4] - strgtb r2, [r0, r4] - add r4, r4, #1 - cmp r4, #0xc - blt _02058CB0 - ldmia sp!, {r4, pc} - .align 2, 0 -_02058CD4: .word TACTICS_UNLOCK_LEVEL_TABLE - arm_func_end GetUnlockedTacticFlags diff --git a/asm/main_02058D04.s b/asm/main_02058D04.s deleted file mode 100644 index f0c6c40b..00000000 --- a/asm/main_02058D04.s +++ /dev/null @@ -1,56 +0,0 @@ - .include "asm/macros.inc" - .include "main_02058D04.inc" - - .text - - arm_func_start GetLearnableIqSkills -GetLearnableIqSkills: ; 0x02058D04 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r6, #0 - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov r5, r6 - ldr r4, _02058DA0 ; =IQ_GROUP_SKILLS - mov fp, #0x19 - b _02058D74 -_02058D28: - mov r0, sb - bl GetIqGroup - mla r1, r0, fp, r4 - and r0, r5, #0xff - ldrb r7, [r0, r1] - cmp r7, #0xff - beq _02058D7C - cmp r7, #0x18 - bne _02058D58 - mov r0, #3 - bl GetResolvedPerformanceProgressFlag - b _02058D64 -_02058D58: - mov r0, r8 - mov r1, r7 - bl CanLearnIqSkill -_02058D64: - cmp r0, #0 - strneb r7, [sl, r6] - addne r6, r6, #1 - add r5, r5, #1 -_02058D74: - cmp r5, #0x19 - blt _02058D28 -_02058D7C: - mov r1, r6 - mov r0, #0 - b _02058D90 -_02058D88: - strb r0, [sl, r1] - add r1, r1, #1 -_02058D90: - cmp r1, #0x45 - blt _02058D88 - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02058DA0: .word IQ_GROUP_SKILLS - arm_func_end GetLearnableIqSkills diff --git a/asm/main_02058E8C.s b/asm/main_02058E8C.s deleted file mode 100644 index 7ad4f03d..00000000 --- a/asm/main_02058E8C.s +++ /dev/null @@ -1,46 +0,0 @@ - .include "asm/macros.inc" - .include "main_02058E8C.inc" - - .text - - arm_func_start DisableAllIqSkills -DisableAllIqSkills: ; 0x02058E8C - mov r3, #0 - mov r2, r3 -_02058E94: - add r1, r3, #1 - mov r1, r1, lsl #0x10 - str r2, [r0, r3, lsl #2] - mov r3, r1, asr #0x10 - cmp r3, #3 - blt _02058E94 - bx lr - arm_func_end DisableAllIqSkills - - arm_func_start EnableAllLearnableIqSkills -EnableAllLearnableIqSkills: ; 0x02058EB0 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x48 - mov r6, r0 - add r0, sp, #0 - bl GetLearnableIqSkills - mov r0, r6 - bl DisableAllIqSkills - mov r5, #0 - add r4, sp, #0 - b _02058EF4 -_02058ED8: - ldrb r0, [r4, r5] - cmp r0, #0 - beq _02058EFC - ldrb r1, [r4, r5] - mov r0, r6 - bl EnableIqSkill - add r5, r5, #1 -_02058EF4: - cmp r5, #0x45 - blt _02058ED8 -_02058EFC: - add sp, sp, #0x48 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end EnableAllLearnableIqSkills diff --git a/asm/main_0205EC38.s b/asm/main_0205EC38.s deleted file mode 100644 index ea7c157a..00000000 --- a/asm/main_0205EC38.s +++ /dev/null @@ -1,30 +0,0 @@ - .include "asm/macros.inc" - .include "main_0205EC38.inc" - - .text - - arm_func_start sub_0205EC38 -sub_0205EC38: ; 0x0205EC38 - ldr r1, _0205EC4C ; =MISSION_DELIVER_LIST_PTR - ldr r1, [r1, #0x18] - add r1, r1, #0x320 - add r0, r1, r0, lsl #5 - bx lr - .align 2, 0 -_0205EC4C: .word MISSION_DELIVER_LIST_PTR - arm_func_end sub_0205EC38 - - arm_func_start sub_0205EC50 -sub_0205EC50: ; 0x0205EC50 - ldr r1, _0205EC74 ; =MISSION_DELIVER_LIST_PTR - ldr r1, [r1, #0x18] - add r0, r1, r0, lsl #5 - ldrb r0, [r0, #0x320] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_0205EC74: .word MISSION_DELIVER_LIST_PTR - arm_func_end sub_0205EC50 diff --git a/asm/main_02065BD8.s b/asm/main_02065BD8.s deleted file mode 100644 index 67370484..00000000 --- a/asm/main_02065BD8.s +++ /dev/null @@ -1,51 +0,0 @@ - .include "asm/macros.inc" - .include "main_02065BD8.inc" - - .text - - arm_func_start sub_02065BD8 -sub_02065BD8: ; 0x02065BD8 - ldr ip, _02065BE8 ; =StrncpySimple - mov r2, r1 - ldr r1, _02065BEC ; =_022B7310 - bx ip - .align 2, 0 -_02065BE8: .word StrncpySimple -_02065BEC: .word _022B7310 - arm_func_end sub_02065BD8 - - arm_func_start sub_02065BF0 -sub_02065BF0: ; 0x02065BF0 - ldr ip, _02065C00 ; =StrncpySimpleNoPadSafe - ldr r1, _02065C04 ; =_022B7310 - mov r2, #0xa - bx ip - .align 2, 0 -_02065C00: .word StrncpySimpleNoPadSafe -_02065C04: .word _022B7310 - arm_func_end sub_02065BF0 - - arm_func_start sub_02065C08 -sub_02065C08: ; 0x02065C08 - ldr ip, _02065C44 ; =_022B7310 - mov r3, #0 - b _02065C20 -_02065C14: - ldrb r2, [r0], #1 - add r3, r3, #1 - strb r2, [ip], #1 -_02065C20: - cmp r3, r1 - blt _02065C14 - mov r0, #0 - b _02065C38 -_02065C30: - strb r0, [ip], #1 - add r3, r3, #1 -_02065C38: - cmp r3, #0x10 - blt _02065C30 - bx lr - .align 2, 0 -_02065C44: .word _022B7310 - arm_func_end sub_02065C08 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_0206A750.s b/asm/main_0206A750.s deleted file mode 100644 index 2a169a06..00000000 --- a/asm/main_0206A750.s +++ /dev/null @@ -1,46 +0,0 @@ - .include "asm/macros.inc" - .include "main_0206A750.inc" - - .text - - arm_func_start sub_0206A7CC -sub_0206A7CC: ; 0x0206A7CC - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r4, #0x3e8 - bne _0206A7F4 - mov r0, #0 - mov r1, #0x20 - bl LoadScriptVariableValue - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 - b _0206A82C -_0206A7F4: - ldr r0, _0206A848 ; =0x000003E9 - cmp r4, r0 - bne _0206A82C - bl sub_0204E6FC - cmp r0, #2 - bne _0206A814 - bl sub_0204E780 - b _0206A818 -_0206A814: - bl sub_0204E770 -_0206A818: - cmp r0, #0xff - addne r0, r0, #1 - mvneq r4, #0 - movne r0, r0, lsl #0x10 - movne r4, r0, asr #0x10 -_0206A82C: - cmp r4, #0xd1 - bne _0206A840 - bl GetExecuteSpecialEpisodeType - cmp r0, #4 - moveq r4, #0xd2 -_0206A840: - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_0206A848: .word 0x000003E9 - arm_func_end sub_0206A7CC 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_022DB2F8.s b/asm/overlay_00_022DB2F8.s new file mode 100644 index 00000000..0c52c453 --- /dev/null +++ b/asm/overlay_00_022DB2F8.s @@ -0,0 +1,58584 @@ + .include "asm/macros.inc" + .include "overlay_00_022DB2F8.inc" + + .text + + 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_0230D398.s b/asm/overlay_00_0230D398.s index b3a6f7f7..b22d90b2 100644 --- a/asm/overlay_00_0230D398.s +++ b/asm/overlay_00_0230D398.s @@ -1248,16123 +1248,3 @@ Gt2CloseAllConnectionsHard: ; 0x0230E3A4 _0230E3E0: .word ov00_02328E18 _0230E3E4: .word Gti2CloseAllConnectionsHardMap arm_func_end Gt2CloseAllConnectionsHard - - arm_func_start Gt2GetConnectionState -Gt2GetConnectionState: ; 0x0230E3E8 - ldr r0, [r0, #0xc] - cmp r0, #5 - movlt r0, #0 - bxlt lr - moveq r0, #1 - bxeq lr - cmp r0, #6 - moveq r0, #2 - movne r0, #3 - bx lr - arm_func_end Gt2GetConnectionState - - arm_func_start Gt2GetRemoteIP -Gt2GetRemoteIP: ; 0x0230E410 - ldr r0, [r0] - bx lr - arm_func_end Gt2GetRemoteIP - - arm_func_start Gt2GetRemotePort -Gt2GetRemotePort: ; 0x0230E418 - ldrh r0, [r0, #4] - bx lr - arm_func_end Gt2GetRemotePort - - arm_func_start Gt2GetLocalIP -Gt2GetLocalIP: ; 0x0230E420 - ldr r0, [r0, #4] - bx lr - arm_func_end Gt2GetLocalIP - - arm_func_start Gt2GetLocalPort -Gt2GetLocalPort: ; 0x0230E428 - ldrh r0, [r0, #8] - bx lr - arm_func_end Gt2GetLocalPort - - arm_func_start Gt2GetOutgoingBufferSize -Gt2GetOutgoingBufferSize: ; 0x0230E430 - ldr r0, [r0, #0x54] - bx lr - arm_func_end Gt2GetOutgoingBufferSize - - arm_func_start Gt2GetOutgoingBufferFreeSpace -Gt2GetOutgoingBufferFreeSpace: ; 0x0230E438 - ldr r1, [r0, #0x54] - ldr r0, [r0, #0x58] - sub r0, r1, r0 - bx lr - arm_func_end Gt2GetOutgoingBufferFreeSpace - - arm_func_start Gt2GetSocketSocket -Gt2GetSocketSocket: ; 0x0230E448 - ldr r0, [r0] - bx lr - arm_func_end Gt2GetSocketSocket - - arm_func_start Gt2SetUnrecognizedMessageCallback -Gt2SetUnrecognizedMessageCallback: ; 0x0230E450 - str r1, [r0, #0x30] - bx lr - arm_func_end Gt2SetUnrecognizedMessageCallback - - arm_func_start Gt2SetConnectionData -Gt2SetConnectionData: ; 0x0230E458 - str r1, [r0, #0x40] - bx lr - arm_func_end Gt2SetConnectionData - - arm_func_start Gt2GetConnectionData -Gt2GetConnectionData: ; 0x0230E460 - ldr r0, [r0, #0x40] - bx lr - arm_func_end Gt2GetConnectionData - - arm_func_start Gti2UShortFromBuffer -Gti2UShortFromBuffer: ; 0x0230E468 - ldrb r2, [r0, r1] - add r1, r1, #1 - ldrb r1, [r0, r1] - mov r0, r2, lsl #8 - and r0, r0, #0xff00 - mov r0, r0, lsl #0x10 - orr r0, r1, r0, lsr #16 - bx lr - arm_func_end Gti2UShortFromBuffer - - arm_func_start Gti2UShortToBuffer -Gti2UShortToBuffer: ; 0x0230E488 - mov r3, r2, asr #8 - strb r3, [r0, r1] - add r1, r1, #1 - strb r2, [r0, r1] - bx lr - arm_func_end Gti2UShortToBuffer - - arm_func_start Gti2SnDiff -Gti2SnDiff: ; 0x0230E49C - sub r0, r0, r1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bx lr - arm_func_end Gti2SnDiff - - arm_func_start Gti2ConnectionError -Gti2ConnectionError: ; 0x0230E4AC - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r3, [r6, #0xc] - mov r5, r1 - mov r4, r2 - cmp r3, #5 - bge _0230E514 - ldr r1, [r6, #0x10] - cmp r1, #0 - beq _0230E4FC - bl Gti2ConnectionClosed - mov r2, #0 - mov r0, r6 - mov r1, r5 - mov r3, r2 - bl Gti2ConnectedCallback - cmp r0, #0 - bne _0230E538 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_0230E4FC: - cmp r3, #4 - moveq r0, #1 - streq r0, [r6, #0x14] - mov r0, r6 - bl Gti2ConnectionClosed - b _0230E538 -_0230E514: - cmp r3, #7 - beq _0230E538 - bl Gti2ConnectionClosed - mov r0, r6 - mov r1, r4 - bl Gti2ClosedCallback - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} -_0230E538: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Gti2ConnectionError - - arm_func_start Gti2ConnectionCommunicationError -Gti2ConnectionCommunicationError: ; 0x0230E540 - ldr ip, _0230E550 ; =Gti2ConnectionError - mov r1, #7 - mov r2, #2 - bx ip - .align 2, 0 -_0230E550: .word Gti2ConnectionError - arm_func_end Gti2ConnectionCommunicationError - - arm_func_start Gti2ConnectionMemoryError -Gti2ConnectionMemoryError: ; 0x0230E554 - stmdb sp!, {r4, lr} - mov r4, r0 - bl Gti2SendClosed - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - mov r1, #1 - mov r2, #4 - bl Gti2ConnectionError - ldmia sp!, {r4, pc} - arm_func_end Gti2ConnectionMemoryError - - arm_func_start Gti2HandleEsn -Gti2HandleEsn: ; 0x0230E580 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r0 - ldr r0, [r4, #0x60] - mov r7, r1 - bl ArrayLength_Gsi - movs r5, r0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r5, #0 - mov r6, #0 - ble _0230E5D4 -_0230E5AC: - ldr r0, [r4, #0x60] - mov r1, r6 - bl ArrayNth_Gsi - ldrh r0, [r0, #8] - mov r1, r7 - bl Gti2SnDiff - cmp r0, #0 - addlt r6, r6, #1 - cmplt r6, r5 - blt _0230E5AC -_0230E5D4: - cmp r6, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - cmp r6, #0 - sub r6, r6, #1 - beq _0230E604 -_0230E5EC: - ldr r0, [r4, #0x60] - mov r1, r6 - bl ArrayDeleteAt_Gsi - cmp r6, #0 - sub r6, r6, #1 - bne _0230E5EC -_0230E604: - ldr r0, [r4, #0x60] - bl ArrayLength_Gsi - movs r6, r0 - bne _0230E624 - mov r0, #0 - str r0, [r4, #0x58] - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0230E624: - ldr r0, [r4, #0x60] - mov r1, #0 - bl ArrayNth_Gsi - cmp r6, #0 - ldr r5, [r0] - mov r7, #0 - ble _0230E664 -_0230E640: - ldr r0, [r4, #0x60] - mov r1, r7 - bl ArrayNth_Gsi - ldr r1, [r0] - add r7, r7, #1 - sub r1, r1, r5 - str r1, [r0] - cmp r7, r6 - blt _0230E640 -_0230E664: - mov r2, r5 - add r0, r4, #0x50 - mov r1, #0 - bl Gti2BufferShorten - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end Gti2HandleEsn - - arm_func_start Gti2HandleAppUnreliable -Gti2HandleAppUnreliable: ; 0x0230E67C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - ldr r0, [r6, #0xc] - mov r5, r1 - cmp r0, #5 - cmpne r0, #6 - mov r4, r2 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, pc} - ldr r0, [r6, #0x9c] - bl ArrayLength_Gsi - cmp r0, #0 - beq _0230E6E4 - mov r1, #0 - mov r0, r6 - mov r2, r5 - mov r3, r4 - str r1, [sp] - bl Gti2ReceiveFilterCallback - cmp r0, #0 - movne r0, #1 - add sp, sp, #4 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_0230E6E4: - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, #0 - bl Gti2ReceivedCallback - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end Gti2HandleAppUnreliable - - arm_func_start Gti2HandleAppReliable -Gti2HandleAppReliable: ; 0x0230E70C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - ldr r3, [r6, #0xc] - mov r5, r1 - cmp r3, #5 - mov r4, r2 - cmpne r3, #6 - beq _0230E748 - bl Gti2ConnectionCommunicationError - cmp r0, #0 - bne _0230E7AC - add sp, sp, #4 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_0230E748: - ldr r0, [r6, #0x9c] - bl ArrayLength_Gsi - cmp r0, #0 - beq _0230E788 - mov ip, #1 - mov r0, r6 - mov r2, r5 - mov r3, r4 - mov r1, #0 - str ip, [sp] - bl Gti2ReceiveFilterCallback - cmp r0, #0 - movne r0, #1 - add sp, sp, #4 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_0230E788: - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, #1 - bl Gti2ReceivedCallback - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} -_0230E7AC: - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end Gti2HandleAppReliable - - arm_func_start Gti2HandleClientChallenge -Gti2HandleClientChallenge: ; 0x0230E7B8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x40 - mov r4, r0 - ldr r3, [r4, #0xc] - cmp r3, #2 - beq _0230E7E8 - bl Gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0x40 - moveq r0, #0 - ldmia sp!, {r4, pc} -_0230E7E8: - cmp r2, #0x20 - bge _0230E808 - bl Gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0x40 - moveq r0, #0 - ldmia sp!, {r4, pc} -_0230E808: - add r0, sp, #0x20 - bl Gti2GetResponse - add r0, sp, #0 - bl Gti2GetChallenge - add r1, sp, #0 - add r0, r4, #0x68 - bl Gti2GetResponse - add r1, sp, #0x20 - add r2, sp, #0 - mov r0, r4 - bl Gti2SendServerChallenge - cmp r0, #0 - moveq r0, #0 - movne r0, #3 - strne r0, [r4, #0xc] - movne r0, #1 - add sp, sp, #0x40 - ldmia sp!, {r4, pc} - arm_func_end Gti2HandleClientChallenge - - arm_func_start Gti2HandleServerChallenge -Gti2HandleServerChallenge: ; 0x0230E850 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x20 - mov r5, r0 - ldr r3, [r5, #0xc] - mov r4, r1 - cmp r3, #0 - beq _0230E884 - bl Gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0x20 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_0230E884: - cmp r2, #0x40 - bge _0230E8A4 - bl Gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0x20 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_0230E8A4: - mov r0, r4 - add r1, r5, #0x68 - bl Gti2CheckResponse - cmp r0, #0 - bne _0230E8D4 - mov r0, r5 - bl Gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0x20 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} -_0230E8D4: - add r0, sp, #0 - add r1, r4, #0x20 - bl Gti2GetResponse - ldr r2, [r5, #0x38] - ldr r3, [r5, #0x3c] - add r1, sp, #0 - mov r0, r5 - bl Gti2SendClientResponse - cmp r0, #0 - addeq sp, sp, #0x20 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0x38] - cmp r0, #0 - beq _0230E91C - bl gsifree - mov r0, #0 - str r0, [r5, #0x38] -_0230E91C: - mov r0, #1 - str r0, [r5, #0xc] - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Gti2HandleServerChallenge - - arm_func_start Gti2HandleClientResponse -Gti2HandleClientResponse: ; 0x0230E92C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - mov r6, r0 - ldr r3, [r6, #0xc] - mov r5, r1 - mov r4, r2 - cmp r3, #3 - beq _0230E964 - bl Gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0xc - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_0230E964: - cmp r4, #0x20 - bge _0230E984 - bl Gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0xc - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_0230E984: - mov r0, r5 - add r1, r6, #0x68 - bl Gti2CheckResponse - cmp r0, #0 - bne _0230E9B4 - mov r0, r6 - bl Gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0xc - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, pc} -_0230E9B4: - ldr r0, [r6, #8] - ldr r0, [r0, #0x20] - cmp r0, #0 - bne _0230E9F0 - mov r0, r6 - bl Gti2SendClosed - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - mov r0, r6 - bl Gti2ConnectionClosed - add sp, sp, #0xc - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, pc} -_0230E9F0: - mov r0, #4 - str r0, [r6, #0xc] - bl current_time_gsi - ldr r2, [r6, #0x8c] - add r1, r5, #0x20 - sub r0, r0, r2 - stmia sp, {r0, r1} - sub r0, r4, #0x20 - str r0, [sp, #8] - ldrh r3, [r6, #4] - ldr r0, [r6, #8] - ldr r2, [r6] - mov r1, r6 - bl Gti2ConnectAttemptCallback - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end Gti2HandleClientResponse - - arm_func_start Gti2HandleAccept -Gti2HandleAccept: ; 0x0230EA3C - stmdb sp!, {r3, lr} - ldr r1, [r0, #0xc] - cmp r1, #1 - beq _0230EA60 - bl Gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} -_0230EA60: - mov r1, #0 - mov ip, #5 - mov r2, r1 - mov r3, r1 - str ip, [r0, #0xc] - bl Gti2ConnectedCallback - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} - arm_func_end Gti2HandleAccept - - arm_func_start Gti2HandleReject -Gti2HandleReject: ; 0x0230EA88 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r3, [r6, #0xc] - mov r5, r1 - mov r4, r2 - cmp r3, #1 - beq _0230EAB8 - bl Gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_0230EAB8: - bl Gti2ConnectionClosed - mov r0, r6 - bl Gti2SendClosed - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r2, r5 - mov r3, r4 - mov r1, #2 - bl Gti2ConnectedCallback - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Gti2HandleReject - - arm_func_start Gti2HandleClose -Gti2HandleClose: ; 0x0230EAF4 - stmdb sp!, {r4, lr} - mov r4, r0 - bl Gti2SendClosed - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0xc] - mov r1, #2 - cmp r0, #6 - moveq r2, #0 - movne r2, #1 - mov r0, r4 - bl Gti2ConnectionError - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r4, pc} - arm_func_end Gti2HandleClose - - arm_func_start Gti2DeliverReliableMessage -Gti2DeliverReliableMessage: ; 0x0230EB38 - stmdb sp!, {r3, lr} - ldrh ip, [r0, #0x66] - cmp r1, #0 - add ip, ip, #1 - strh ip, [r0, #0x66] - bne _0230EB6C - mov r1, r2 - mov r2, r3 - bl Gti2HandleAppReliable - cmp r0, #0 - bne _0230EC30 - mov r0, #0 - ldmia sp!, {r3, pc} -_0230EB6C: - cmp r1, #1 - bne _0230EB90 - mov r1, r2 - mov r2, r3 - bl Gti2HandleClientChallenge - cmp r0, #0 - bne _0230EC30 - mov r0, #0 - ldmia sp!, {r3, pc} -_0230EB90: - cmp r1, #2 - bne _0230EBB4 - mov r1, r2 - mov r2, r3 - bl Gti2HandleServerChallenge - cmp r0, #0 - bne _0230EC30 - mov r0, #0 - ldmia sp!, {r3, pc} -_0230EBB4: - cmp r1, #3 - bne _0230EBD8 - mov r1, r2 - mov r2, r3 - bl Gti2HandleClientResponse - cmp r0, #0 - bne _0230EC30 - mov r0, #0 - ldmia sp!, {r3, pc} -_0230EBD8: - cmp r1, #4 - bne _0230EBF4 - bl Gti2HandleAccept - cmp r0, #0 - bne _0230EC30 - mov r0, #0 - ldmia sp!, {r3, pc} -_0230EBF4: - cmp r1, #5 - bne _0230EC18 - mov r1, r2 - mov r2, r3 - bl Gti2HandleReject - cmp r0, #0 - bne _0230EC30 - mov r0, #0 - ldmia sp!, {r3, pc} -_0230EC18: - cmp r1, #6 - bne _0230EC30 - bl Gti2HandleClose - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} -_0230EC30: - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end Gti2DeliverReliableMessage - - arm_func_start Gti2IncomingBufferMessageCompare -Gti2IncomingBufferMessageCompare: ; 0x0230EC38 - ldr ip, _0230EC48 ; =Gti2SnDiff - ldrh r0, [r0, #0xc] - ldrh r1, [r1, #0xc] - bx ip - .align 2, 0 -_0230EC48: .word Gti2SnDiff - arm_func_end Gti2IncomingBufferMessageCompare - - arm_func_start Gti2BufferIncomingMessage -Gti2BufferIncomingMessage: ; 0x0230EC4C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x10 - mov sb, r0 - ldr r0, [sb, #0x5c] - mov r8, r1 - mov r7, r2 - mov r6, r3 - ldr r5, [sp, #0x34] - bl ArrayLength_Gsi - mov r4, r0 - cmp r4, #0 - mov sl, #0 - ble _0230ECC8 -_0230EC80: - ldr r0, [sb, #0x5c] - mov r1, sl - bl ArrayNth_Gsi - ldrh r0, [r0, #0xc] - cmp r0, r7 - bne _0230ECAC - mov r0, #0 - str r0, [r5] - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0230ECAC: - mov r1, r7 - bl Gti2SnDiff - cmp r0, #0 - bgt _0230ECC8 - add sl, sl, #1 - cmp sl, r4 - blt _0230EC80 -_0230ECC8: - add r0, sb, #0x44 - bl Gti2GetBufferFreeSpace - ldr r2, [sp, #0x30] - cmp r0, r2 - movlt r0, #1 - addlt sp, sp, #0x10 - strlt r0, [r5] - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, [sb, #0x4c] - add r1, sp, #0 - str r2, [sp, #4] - str r8, [sp, #8] - strh r7, [sp, #0xc] - str r0, [sp] - ldr r0, [sb, #0x5c] - ldr r2, _0230EDFC ; =Gti2IncomingBufferMessageCompare - bl ArrayInsertSorted_Gsi - ldr r0, [sb, #0x5c] - bl ArrayLength_Gsi - add r1, r4, #1 - cmp r1, r0 - movne r0, #1 - addne sp, sp, #0x10 - strne r0, [r5] - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r2, [sp, #0x30] - mov r1, r6 - add r0, sb, #0x44 - bl Gti2BufferWriteData - cmp r4, #0 - bne _0230ED70 - sub r0, r7, #1 - mov r2, r0, lsl #0x10 - ldrh r1, [sb, #0x66] - mov r0, sb - mov r2, r2, lsr #0x10 - bl Gti2SendNack - cmp r0, #0 - bne _0230EDE8 - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0230ED70: - ldr r0, [sb, #0x5c] - mov r1, r4 - bl ArrayNth_Gsi - ldrh r0, [r0, #0xc] - cmp r0, r7 - bne _0230EDE8 - ldr r0, [sb, #0x5c] - sub r1, r4, #1 - bl ArrayNth_Gsi - mov r4, r0 - ldrh r1, [r4, #0xc] - mov r0, r7 - bl Gti2SnDiff - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - bls _0230EDE8 - ldrh r1, [r4, #0xc] - sub r0, r7, #1 - mov r2, r0, lsl #0x10 - add r0, r1, #1 - mov r1, r0, lsl #0x10 - mov r0, sb - mov r1, r1, lsr #0x10 - mov r2, r2, lsr #0x10 - bl Gti2SendNack - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0230EDE8: - mov r0, #0 - str r0, [r5] - mov r0, #1 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0230EDFC: .word Gti2IncomingBufferMessageCompare - arm_func_end Gti2BufferIncomingMessage - - arm_func_start Gti2RemoveHoldMessage -Gti2RemoveHoldMessage: ; 0x0230EE00 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - ldr r0, [sb, #0x5c] - ldmia r1, {r4, r5} - mov r1, r2 - mov r8, #0 - bl ArrayDeleteAt_Gsi - ldr r0, [sb, #0x5c] - bl ArrayLength_Gsi - mov r6, r0 - cmp r6, #0 - mov r7, r8 - ble _0230EE70 -_0230EE34: - ldr r0, [sb, #0x5c] - mov r1, r7 - bl ArrayNth_Gsi - ldr r1, [r0] - cmp r1, r4 - ble _0230EE64 - sub r1, r1, r5 - str r1, [r0] - ldr r0, [r0, #4] - add r0, r1, r0 - cmp r8, r0 - movle r8, r0 -_0230EE64: - add r7, r7, #1 - cmp r7, r6 - blt _0230EE34 -_0230EE70: - mov r1, r4 - mov r2, r5 - add r0, sb, #0x44 - bl Gti2BufferShorten - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end Gti2RemoveHoldMessage - - arm_func_start Gti2DeliverHoldMessages -Gti2DeliverHoldMessages: ; 0x0230EE84 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 -_0230EE8C: - ldr r0, [r6, #0x5c] - bl ArrayLength_Gsi - subs r5, r0, #1 - bmi _0230EEFC -_0230EE9C: - ldr r0, [r6, #0x5c] - mov r1, r5 - bl ArrayNth_Gsi - mov r4, r0 - ldrh r1, [r4, #0xc] - ldrh r0, [r6, #0x66] - cmp r1, r0 - bne _0230EEF4 - ldr ip, [r6, #0x44] - ldr r1, [r4, #8] - ldmia r4, {r2, r3} - mov r0, r6 - add r2, ip, r2 - bl Gti2DeliverReliableMessage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r0, r6 - mov r1, r4 - mov r2, r5 - bl Gti2RemoveHoldMessage - b _0230EE8C -_0230EEF4: - subs r5, r5, #1 - bpl _0230EE9C -_0230EEFC: - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end Gti2DeliverHoldMessages - - arm_func_start Gti2SetPendingAck -Gti2SetPendingAck: ; 0x0230EF04 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x90] - cmp r0, #0 - ldmneia sp!, {r4, pc} - mov r0, #1 - str r0, [r4, #0x90] - bl current_time_gsi - str r0, [r4, #0x94] - ldmia sp!, {r4, pc} - arm_func_end Gti2SetPendingAck - - arm_func_start Gti2HandleReliableMessage -Gti2HandleReliableMessage: ; 0x0230EF2C - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0xc - mov sb, r0 - ldr r4, [sb, #8] - mov r6, r3 - ldr r3, [r4, #0x44] - mov r8, r1 - add r5, r3, #7 - mov r7, r2 - cmp r6, r5 - bge _0230EF70 - bl Gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - add sp, sp, #0xc - moveq r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_0230EF70: - add r0, r7, r3 - mov r1, #3 - bl Gti2UShortFromBuffer - ldr r1, [sb, #8] - mov r4, r0 - ldr r0, [r1, #0x44] - mov r1, #5 - add r0, r7, r0 - bl Gti2UShortFromBuffer - ldr r2, [sb, #8] - mov r1, r0 - ldr r0, [r2, #0x40] - cmp r0, #2 - cmpeq r8, #0 - addne r7, r7, r5 - subne r6, r6, r5 - bne _0230EFEC - ldr r0, [r2, #0x44] - ldrb r2, [r7] - add r0, r0, #5 - strb r2, [r7, r0] - ldr r0, [sb, #8] - ldrb r2, [r7, #1] - ldr r0, [r0, #0x44] - add r0, r0, #6 - strb r2, [r7, r0] - ldr r0, [sb, #8] - ldr r0, [r0, #0x44] - sub r0, r5, r0 - add r7, r7, r0 - sub r6, r6, r0 -_0230EFEC: - mov r0, sb - bl Gti2HandleEsn - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldrh r1, [sb, #0x66] - cmp r4, r1 - bne _0230F058 - mov r0, sb - bl Gti2SetPendingAck - mov r0, sb - mov r1, r8 - mov r2, r7 - mov r3, r6 - bl Gti2DeliverReliableMessage - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - mov r0, sb - bl Gti2DeliverHoldMessages - cmp r0, #0 - movne r0, #1 - add sp, sp, #0xc - moveq r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_0230F058: - mov r0, r4 - bl Gti2SnDiff - cmp r0, #0 - bge _0230F07C - mov r0, sb - bl Gti2SetPendingAck - add sp, sp, #0xc - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_0230F07C: - add r5, sp, #8 - str r6, [sp] - mov r0, sb - mov r1, r8 - mov r2, r4 - mov r3, r7 - str r5, [sp, #4] - bl Gti2BufferIncomingMessage - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r0, [sp, #8] - cmp r0, #0 - beq _0230F0D0 - mov r0, sb - bl Gti2ConnectionMemoryError - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} -_0230F0D0: - mov r0, #1 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - arm_func_end Gti2HandleReliableMessage - - arm_func_start Gti2HandleAck -Gti2HandleAck: ; 0x0230F0DC - stmdb sp!, {r4, lr} - mov r4, r0 - cmp r2, #2 - beq _0230F100 - bl Gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, pc} -_0230F100: - mov r0, r1 - mov r1, #0 - bl Gti2UShortFromBuffer - mov r1, r0 - mov r0, r4 - bl Gti2HandleEsn - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r4, pc} - arm_func_end Gti2HandleAck - - arm_func_start Gti2HandleNack -Gti2HandleNack: ; 0x0230F128 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r7, r1 - mov r4, r0 - mov r0, r7 - mov r1, #0 - mov r5, r2 - bl Gti2UShortFromBuffer - mov r6, r0 - cmp r5, #2 - moveq r7, r6 - beq _0230F188 - cmp r5, #4 - bne _0230F170 - mov r0, r7 - mov r1, #2 - bl Gti2UShortFromBuffer - mov r7, r0 - b _0230F188 -_0230F170: - mov r0, r4 - bl Gti2ConnectionCommunicationError - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0230F188: - ldr r0, [r4, #0x60] - bl ArrayLength_Gsi - mov r8, r0 - cmp r8, #0 - mov sb, #0 - ble _0230F1FC -_0230F1A0: - ldr r0, [r4, #0x60] - mov r1, sb - bl ArrayNth_Gsi - mov r5, r0 - ldrh r0, [r5, #8] - mov r1, r6 - bl Gti2SnDiff - cmp r0, #0 - blt _0230F1F0 - ldrh r0, [r5, #8] - mov r1, r7 - bl Gti2SnDiff - cmp r0, #0 - bgt _0230F1F0 - mov r0, r4 - mov r1, r5 - bl Gti2ResendMessage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0230F1F0: - add sb, sb, #1 - cmp sb, r8 - blt _0230F1A0 -_0230F1FC: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end Gti2HandleNack - - arm_func_start Gti2HandlePing -Gti2HandlePing: ; 0x0230F204 - ldr ip, _0230F20C ; =Gti2SendPong - bx ip - .align 2, 0 -_0230F20C: .word Gti2SendPong - arm_func_end Gti2HandlePing - - arm_func_start Gti2HandlePong -Gti2HandlePong: ; 0x0230F210 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - ldr r0, [r4, #0x34] - mov r5, r1 - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r2, #8 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - ldr r1, _0230F2A0 ; =ov00_0231BEF8 - mov r0, r5 - mov r2, #4 - bl memcmp - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - ldrb r1, [r5, #4] - ldrb r0, [r5, #5] - add r2, sp, #0 - strb r1, [r2] - strb r0, [r2, #1] - ldrb r1, [r5, #6] - ldrb r0, [r5, #7] - strb r1, [r2, #2] - strb r0, [r2, #3] - bl current_time_gsi - mov r2, r0 - ldr r1, [sp] - mov r0, r4 - sub r1, r2, r1 - bl Gti2PingCallback - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230F2A0: .word ov00_0231BEF8 - arm_func_end Gti2HandlePong - - arm_func_start Gti2HandleClosed -Gti2HandleClosed: ; 0x0230F2A4 - stmdb sp!, {r3, lr} - ldr r1, [r0, #0xc] - cmp r1, #7 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - cmp r1, #6 - moveq r2, #0 - movne r2, #1 - mov r1, #2 - bl Gti2ConnectionError - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r3, pc} - arm_func_end Gti2HandleClosed - - arm_func_start Gti2HandleUnreliableMessage -Gti2HandleUnreliableMessage: ; 0x0230F2DC - stmdb sp!, {r3, lr} - ldr ip, [r0, #8] - cmp r1, #0x64 - ldr ip, [ip, #0x44] - add lr, ip, #3 - sub ip, r3, lr - bne _0230F314 - add r1, r2, lr - mov r2, ip - bl Gti2HandleAck - cmp r0, #0 - bne _0230F398 - mov r0, #0 - ldmia sp!, {r3, pc} -_0230F314: - cmp r1, #0x65 - bne _0230F338 - add r1, r2, lr - mov r2, ip - bl Gti2HandleNack - cmp r0, #0 - bne _0230F398 - mov r0, #0 - ldmia sp!, {r3, pc} -_0230F338: - cmp r1, #0x66 - bne _0230F35C - mov r1, r2 - mov r2, r3 - bl Gti2HandlePing - cmp r0, #0 - bne _0230F398 - mov r0, #0 - ldmia sp!, {r3, pc} -_0230F35C: - cmp r1, #0x67 - bne _0230F380 - add r1, r2, lr - mov r2, ip - bl Gti2HandlePong - cmp r0, #0 - bne _0230F398 - mov r0, #0 - ldmia sp!, {r3, pc} -_0230F380: - cmp r1, #0x68 - bne _0230F398 - bl Gti2HandleClosed - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} -_0230F398: - mov r0, #1 - ldmia sp!, {r3, pc} - arm_func_end Gti2HandleUnreliableMessage - - arm_func_start Gti2HandleMessage -Gti2HandleMessage: ; 0x0230F3A0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - mov sl, r0 - ldr r6, [sp, #0x40] - mov r8, r2 - ldr r4, [sl, #0x44] - mov sb, r1 - mov r7, r3 - mov r1, r7 - mov r2, r6 - sub fp, r8, r4 - add r4, sb, r4 - bl Gti2SocketFindConnection - str r0, [sp, #0x14] - ldr r0, [sl, #0x2c] - cmp r0, #0 - beq _0230F418 - mov r0, #0 - stmia sp, {r0, sb} - str r8, [sp, #8] - str r0, [sp, #0xc] - ldr r1, [sp, #0x14] - mov r0, sl - mov r2, r7 - mov r3, r6 - bl Gti2DumpCallback - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230F418: - cmp fp, #2 - ble _0230F43C - ldr r1, _0230F698 ; =ov00_0231BF00 - mov r0, r4 - mov r2, #2 - bl memcmp - cmp r0, #0 - moveq r5, #1 - beq _0230F440 -_0230F43C: - mov r5, #0 -_0230F440: - ldr r0, [sp, #0x14] - cmp r0, #0 - bne _0230F544 - add ip, sp, #0x10 - mov r0, sl - mov r1, r7 - mov r2, r6 - mov r3, sb - stmia sp, {r8, ip} - bl Gti2UnrecognizedMessageCallback - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sp, #0x10] - cmp r0, #0 - addne sp, sp, #0x18 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r5, #0 - beq _0230F4A0 - ldrb r0, [r4, #2] - cmp r0, #1 - beq _0230F4E0 -_0230F4A0: - cmp r5, #0 - beq _0230F4B4 - ldrb r0, [r4, #2] - cmp r0, #0x68 - beq _0230F4D4 -_0230F4B4: - mov r0, sl - mov r1, r7 - mov r2, r6 - bl Gti2SendClosedOnSocket - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230F4D4: - add sp, sp, #0x18 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230F4E0: - ldr r0, [sl, #0x20] - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r1, sp, #0x14 - mov r0, sl - mov r2, r7 - mov r3, r6 - bl Gti2NewIncomingConnection - cmp r0, #0 - beq _0230F544 - cmp r0, #5 - beq _0230F538 - mov r0, sl - mov r1, r7 - mov r2, r6 - bl Gti2SendClosedOnSocket - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230F538: - add sp, sp, #0x18 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230F544: - ldr r0, [sp, #0x14] - ldr r1, [r0, #0xc] - cmp r1, #7 - bne _0230F588 - cmp r5, #0 - beq _0230F568 - ldrb r1, [r4, #2] - cmp r1, #0x68 - beq _0230F57C -_0230F568: - bl Gti2SendClosed - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230F57C: - add sp, sp, #0x18 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230F588: - cmp r5, #0 - beq _0230F5D0 - cmp fp, #4 - blt _0230F5D0 - ldr r1, _0230F698 ; =ov00_0231BF00 - add r0, r4, #2 - mov r2, #2 - bl memcmp - cmp r0, #0 - bne _0230F5D0 - ldrb r0, [sb, #1] - add r4, r4, #2 - sub r8, r8, #2 - strb r0, [sb, #3] - ldrb r0, [sb] - mov r5, #0 - strb r0, [sb, #2] - add sb, sb, #2 -_0230F5D0: - cmp r5, #0 - bne _0230F644 - ldr r0, [sp, #0x14] - ldr r1, [r0, #0xc] - cmp r1, #5 - bge _0230F61C - add r4, sp, #0x10 - str r8, [sp] - mov r0, sl - mov r1, r7 - mov r2, r6 - mov r3, sb - str r4, [sp, #4] - bl Gti2UnrecognizedMessageCallback - cmp r0, #0 - bne _0230F638 - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230F61C: - mov r1, sb - mov r2, r8 - bl Gti2HandleAppUnreliable - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230F638: - add sp, sp, #0x18 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230F644: - ldrb r1, [r4, #2] - cmp r1, #8 - bge _0230F674 - ldr r0, [sp, #0x14] - mov r2, sb - mov r3, r8 - bl Gti2HandleReliableMessage - cmp r0, #0 - movne r0, #1 - add sp, sp, #0x18 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230F674: - ldr r0, [sp, #0x14] - mov r2, sb - mov r3, r8 - bl Gti2HandleUnreliableMessage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230F698: .word ov00_0231BF00 - arm_func_end Gti2HandleMessage - - arm_func_start Gti2HandleConnectionReset -Gti2HandleConnectionReset: ; 0x0230F69C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - sub sp, sp, #0x10 - mov r7, r0 - mov r6, r1 - mov r5, r2 - bl Gti2SocketFindConnection - ldr r1, [r7, #0x2c] - mov r4, r0 - cmp r1, #0 - beq _0230F700 - mov r0, #1 - str r0, [sp] - mov ip, #0 - str ip, [sp, #4] - str ip, [sp, #8] - mov r0, r7 - mov r1, r4 - mov r2, r6 - mov r3, r5 - str ip, [sp, #0xc] - bl Gti2DumpCallback - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_0230F700: - cmp r4, #0 - addeq sp, sp, #0x10 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r4, #0xc] - cmp r0, #0 - bne _0230F770 - ldr r0, [r4, #0x20] - cmp r0, #0 - beq _0230F740 - bl current_time_gsi - ldr r2, [r4, #0x1c] - ldr r1, [r4, #0x20] - sub r0, r0, r2 - cmp r0, r1 - bhs _0230F74C -_0230F740: - add sp, sp, #0x10 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0230F74C: - mov r0, r4 - mov r1, #6 - mov r2, #1 - bl Gti2ConnectionError - cmp r0, #0 - bne _0230F790 - add sp, sp, #0x10 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0230F770: - mov r0, r4 - mov r1, #2 - mov r2, #1 - bl Gti2ConnectionError - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} -_0230F790: - mov r0, #1 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end Gti2HandleConnectionReset - - arm_func_start Gti2HandleHostUnreachable -Gti2HandleHostUnreachable: ; 0x0230F79C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x10 - mov r8, r0 - mov r7, r1 - mov r6, r2 - mov r5, r3 - bl Gti2SocketFindConnection - ldr r1, [r8, #0x2c] - mov r4, r0 - cmp r1, #0 - beq _0230F804 - mov r0, #1 - str r0, [sp] - mov r0, #0 - str r0, [sp, #4] - str r0, [sp, #8] - mov r0, r8 - mov r1, r4 - mov r2, r7 - mov r3, r6 - str r5, [sp, #0xc] - bl Gti2DumpCallback - cmp r0, #0 - addeq sp, sp, #0x10 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} -_0230F804: - cmp r4, #0 - addeq sp, sp, #0x10 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - mov r0, r4 - mov r1, #6 - mov r2, #1 - bl Gti2ConnectionError - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end Gti2HandleHostUnreachable - - arm_func_start Gti2ReceiveMessages -Gti2ReceiveMessages: ; 0x0230F838 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x5f0 - mov sl, r0 - ldr r0, [sl] - bl CanReceiveOnSocket - cmp r0, #0 - beq _0230F9AC - mvn r6, #0xe - sub r5, r6, #8 - sub r4, r6, #0x14 - add r7, r6, #0xe - add r8, sp, #0x14 - mov sb, #8 - add fp, sp, #0xc -_0230F870: - str sb, [sp, #8] - str fp, [sp] - add r0, sp, #8 - str r0, [sp, #4] - ldr r0, [sl] - ldr r2, _0230F9B8 ; =0x000005DC - mov r1, r8 - mov r3, #0 - bl SocketRecvFrom - mov r2, r0 - cmp r2, r7 - bne _0230F958 - ldr r0, [sl] - bl GoaGetLastError - cmp r0, r6 - bne _0230F8F0 - ldrh ip, [sp, #0xe] - ldr r1, [sp, #0x10] - mov r0, sl - mov r2, ip, asr #8 - and r3, r2, #0xff - mov r2, ip, lsl #8 - and r2, r2, #0xff00 - orr r2, r3, r2 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - bl Gti2HandleConnectionReset - cmp r0, #0 - bne _0230F99C - add sp, sp, #0x5f0 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230F8F0: - cmp r0, r5 - bne _0230F93C - ldrh ip, [sp, #0xe] - ldr r1, [sp, #0x10] - mov r0, sl - mov r2, ip, asr #8 - and r3, r2, #0xff - mov r2, ip, lsl #8 - and r2, r2, #0xff00 - orr r2, r3, r2 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - mov r3, #0 - bl Gti2HandleHostUnreachable - cmp r0, #0 - bne _0230F99C - add sp, sp, #0x5f0 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230F93C: - cmp r0, r4 - beq _0230F99C - mov r0, sl - bl Gti2SocketError - add sp, sp, #0x5f0 - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230F958: - ldrh ip, [sp, #0xe] - mov r0, sl - mov r1, r8 - mov r3, ip, asr #8 - mov ip, ip, lsl #8 - and r3, r3, #0xff - and ip, ip, #0xff00 - orr r3, r3, ip - mov r3, r3, lsl #0x10 - mov r3, r3, lsr #0x10 - str r3, [sp] - ldr r3, [sp, #0x10] - bl Gti2HandleMessage - cmp r0, #0 - addeq sp, sp, #0x5f0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_0230F99C: - ldr r0, [sl] - bl CanReceiveOnSocket - cmp r0, #0 - bne _0230F870 -_0230F9AC: - mov r0, #1 - add sp, sp, #0x5f0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230F9B8: .word 0x000005DC - arm_func_end Gti2ReceiveMessages - - arm_func_start Gti2StoreOutgoingReliableMessageInfo -Gti2StoreOutgoingReliableMessageInfo: ; 0x0230F9BC - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - add r4, sp, #0 - mov r3, #0 - mov r5, r0 - str r3, [r4] - str r3, [r4, #4] - str r3, [r4, #8] - str r3, [r4, #0xc] - ldr r0, [r5, #0x58] - str r0, [sp] - str r2, [sp, #4] - strh r1, [sp, #8] - bl current_time_gsi - str r0, [sp, #0xc] - ldr r0, [r5, #0x60] - bl ArrayLength_Gsi - mov r4, r0 - ldr r0, [r5, #0x60] - add r1, sp, #0 - bl ArrayAppend_Gsi - ldr r0, [r5, #0x60] - bl ArrayLength_Gsi - add r1, r4, #1 - cmp r1, r0 - moveq r0, #1 - movne r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Gti2StoreOutgoingReliableMessageInfo - - arm_func_start Gti2BeginReliableMessage -Gti2BeginReliableMessage: ; 0x0230FA30 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r0 - ldr r0, [r4, #8] - mov r6, r2 - ldr r2, [r0, #0x44] - add r0, r4, #0x50 - sub r2, r6, r2 - mov r7, r1 - mov r5, r3 - strh r2, [sp] - bl Gti2GetBufferFreeSpace - cmp r0, r6 - bge _0230FA80 - mov r0, r4 - bl Gti2ConnectionMemoryError - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - strne r0, [r5] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0230FA80: - ldrh r1, [r4, #0x64] - mov r0, r4 - mov r2, r6 - bl Gti2StoreOutgoingReliableMessageInfo - cmp r0, #0 - bne _0230FAB4 - mov r0, r4 - bl Gti2ConnectionMemoryError - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - strne r0, [r5] - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0230FAB4: - ldr r1, [r4, #8] - ldr r0, [r1, #0x40] - cmp r0, #2 - bne _0230FAD4 - ldr r2, [r1, #0x44] - add r1, sp, #0 - add r0, r4, #0x50 - bl Gti2BufferWriteData -_0230FAD4: - ldr r1, _0230FB20 ; =ov00_0231BF00 - add r0, r4, #0x50 - mov r2, #2 - bl Gti2BufferWriteData - add r0, r4, #0x50 - and r1, r7, #0xff - bl Gti2BufferWriteByte - ldrh r1, [r4, #0x64] - add r0, r4, #0x50 - add r2, r1, #1 - strh r2, [r4, #0x64] - bl Gti2BufferWriteUShort - ldrh r1, [r4, #0x66] - add r0, r4, #0x50 - bl Gti2BufferWriteUShort - mov r0, #0 - str r0, [r5] - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0230FB20: .word ov00_0231BF00 - arm_func_end Gti2BeginReliableMessage - - arm_func_start Gti2EndReliableMessage -Gti2EndReliableMessage: ; 0x0230FB24 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x60] - bl ArrayLength_Gsi - mov r1, r0 - ldr r0, [r4, #0x60] - sub r1, r1, #1 - bl ArrayNth_Gsi - ldmia r0, {r1, r2} - ldr r3, [r4, #0x50] - mov r0, r4 - add r1, r3, r1 - bl Gti2ConnectionSendData - cmp r0, #0 - mov r0, #0 - strne r0, [r4, #0x90] - movne r0, #1 - ldmia sp!, {r4, pc} - arm_func_end Gti2EndReliableMessage - - arm_func_start Gti2SendAppReliable -Gti2SendAppReliable: ; 0x0230FB6C - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r4, r2 - mov r5, r1 - add r3, sp, #0 - add r2, r4, #7 - mov r1, #0 - mov r6, r0 - bl Gti2BeginReliableMessage - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, [sp] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, pc} - mov r1, r5 - mov r2, r4 - add r0, r6, #0x50 - bl Gti2BufferWriteData - mov r0, r6 - bl Gti2EndReliableMessage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end Gti2SendAppReliable - - arm_func_start Gti2SendClientChallenge -Gti2SendClientChallenge: ; 0x0230FBE0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r2, [r5, #8] - mov r4, r1 - ldr r1, [r2, #0x44] - add r3, sp, #0 - add r2, r1, #0x27 - mov r1, #1 - bl Gti2BeginReliableMessage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [sp] - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - mov r1, r4 - add r0, r5, #0x50 - mov r2, #0x20 - bl Gti2BufferWriteData - mov r0, r5 - bl Gti2EndReliableMessage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Gti2SendClientChallenge - - arm_func_start Gti2SendServerChallenge -Gti2SendServerChallenge: ; 0x0230FC48 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - ldr r3, [r6, #8] - mov r5, r1 - ldr r1, [r3, #0x44] - mov r4, r2 - add r2, r1, #0x47 - add r3, sp, #0 - mov r1, #2 - bl Gti2BeginReliableMessage - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, [sp] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, pc} - mov r1, r5 - add r0, r6, #0x50 - mov r2, #0x20 - bl Gti2BufferWriteData - mov r1, r4 - add r0, r6, #0x50 - mov r2, #0x20 - bl Gti2BufferWriteData - mov r0, r6 - bl Gti2EndReliableMessage - cmp r0, #0 - ldrne r1, [r6, #0x88] - moveq r0, #0 - movne r0, #1 - strne r1, [r6, #0x8c] - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end Gti2SendServerChallenge - - arm_func_start Gti2SendClientResponse -Gti2SendClientResponse: ; 0x0230FCDC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r0 - ldr ip, [r4, #8] - mov r5, r3 - ldr ip, [ip, #0x44] - add lr, r5, #0x27 - mov r7, r1 - mov r6, r2 - add r3, sp, #0 - add r2, lr, ip - mov r1, #3 - bl Gti2BeginReliableMessage - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [sp] - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r1, r7 - add r0, r4, #0x50 - mov r2, #0x20 - bl Gti2BufferWriteData - mov r1, r6 - mov r2, r5 - add r0, r4, #0x50 - bl Gti2BufferWriteData - mov r0, r4 - bl Gti2EndReliableMessage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end Gti2SendClientResponse - - arm_func_start Gti2SendAccept -Gti2SendAccept: ; 0x0230FD60 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - ldr r1, [r4, #8] - add r3, sp, #0 - ldr r2, [r1, #0x44] - mov r1, #4 - add r2, r2, #7 - bl Gti2BeginReliableMessage - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - ldr r0, [sp] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r3, r4, pc} - mov r0, r4 - bl Gti2EndReliableMessage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end Gti2SendAccept - - arm_func_start Gti2SendReject -Gti2SendReject: ; 0x0230FDC4 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - ldr r3, [r6, #8] - mov r4, r2 - ldr r2, [r3, #0x44] - add ip, r4, #7 - mov r5, r1 - add r3, sp, #0 - add r2, ip, r2 - mov r1, #5 - bl Gti2BeginReliableMessage - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr r0, [sp] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, pc} - mov r1, r5 - mov r2, r4 - add r0, r6, #0x50 - bl Gti2BufferWriteData - mov r0, r6 - bl Gti2EndReliableMessage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end Gti2SendReject - - arm_func_start Gti2SendClose -Gti2SendClose: ; 0x0230FE44 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - ldr r1, [r4, #8] - add r3, sp, #0 - ldr r2, [r1, #0x44] - mov r1, #6 - add r2, r2, #7 - bl Gti2BeginReliableMessage - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - ldr r0, [sp] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r3, r4, pc} - mov r0, r4 - bl Gti2EndReliableMessage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end Gti2SendClose - - arm_func_start Gti2SendKeepAlive -Gti2SendKeepAlive: ; 0x0230FEA8 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - ldr r1, [r4, #8] - add r3, sp, #0 - ldr r2, [r1, #0x44] - mov r1, #7 - add r2, r2, #7 - bl Gti2BeginReliableMessage - cmp r0, #0 - addeq sp, sp, #4 - moveq r0, #0 - ldmeqia sp!, {r3, r4, pc} - ldr r0, [sp] - cmp r0, #0 - addne sp, sp, #4 - movne r0, #1 - ldmneia sp!, {r3, r4, pc} - mov r0, r4 - bl Gti2EndReliableMessage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end Gti2SendKeepAlive - - arm_func_start Gti2SendAppUnreliable -Gti2SendAppUnreliable: ; 0x0230FF0C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r7, r2 - mov sb, r0 - mov r8, r1 - cmp r7, #2 - blt _0230FF44 - ldr r0, [sb, #8] - ldr r1, _02310000 ; =ov00_0231BF00 - ldr r0, [r0, #0x44] - mov r2, #2 - add r0, r8, r0 - bl memcmp - cmp r0, #0 - beq _0230FF64 -_0230FF44: - mov r0, sb - mov r1, r8 - mov r2, r7 - bl Gti2ConnectionSendData - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_0230FF64: - add r6, r7, #2 - add r0, sb, #0x50 - bl Gti2GetBufferFreeSpace - cmp r0, r6 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r0, [sb, #8] - ldr r5, [sb, #0x50] - ldr r0, [r0, #0x40] - ldr r4, [sb, #0x58] - cmp r0, #2 - bne _0230FFA4 - mov r1, r8 - add r0, sb, #0x50 - mov r2, #2 - bl Gti2BufferWriteData -_0230FFA4: - ldr r1, _02310000 ; =ov00_0231BF00 - add r0, sb, #0x50 - mov r2, #2 - bl Gti2BufferWriteData - ldr r1, [sb, #8] - add r0, sb, #0x50 - ldr r2, [r1, #0x44] - add r1, r8, r2 - sub r2, r7, r2 - bl Gti2BufferWriteData - mov r0, sb - mov r2, r6 - add r1, r5, r4 - bl Gti2ConnectionSendData - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r2, r6 - add r0, sb, #0x50 - mvn r1, #0 - bl Gti2BufferShorten - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02310000: .word ov00_0231BF00 - arm_func_end Gti2SendAppUnreliable - - arm_func_start Gti2SendAck -Gti2SendAck: ; 0x02310004 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - mov r5, r0 - ldr r0, [r5, #8] - mov r4, #0 - ldr r0, [r0, #0x40] - cmp r0, #2 - bne _02310048 - mov r1, #5 - add r0, sp, #0 - strh r1, [sp] - ldrb r1, [r0] - add r2, sp, #2 - ldrb r0, [r0, #1] - strb r1, [r2] - add r4, r4, #2 - strb r0, [r2, #1] -_02310048: - ldr r1, _023100A4 ; =ov00_0231BF00 - add r0, sp, #2 - ldrb r2, [r1] - ldrb r1, [r1, #1] - add r3, r0, r4 - strb r2, [r0, r4] - strb r1, [r3, #1] - add r1, r4, #2 - mov r2, #0x64 - strb r2, [r0, r1] - ldrh r2, [r5, #0x66] - add r1, r4, #3 - bl Gti2UShortToBuffer - add r1, sp, #2 - mov r0, r5 - add r2, r4, #5 - bl Gti2ConnectionSendData - cmp r0, #0 - mov r0, #0 - strne r0, [r5, #0x90] - movne r0, #1 - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_023100A4: .word ov00_0231BF00 - arm_func_end Gti2SendAck - - arm_func_start Gti2SendNack -Gti2SendNack: ; 0x023100A8 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xc - mov r7, r0 - ldr r0, [r7, #8] - mov r6, r1 - ldr r0, [r0, #0x40] - mov r5, r2 - cmp r0, #2 - mov r4, #0 - bne _023100F4 - mov r1, #7 - add r0, sp, #0 - strh r1, [sp] - ldrb r1, [r0] - add r2, sp, #2 - ldrb r0, [r0, #1] - strb r1, [r2] - add r4, r4, #2 - strb r0, [r2, #1] -_023100F4: - ldr r1, _0231016C ; =ov00_0231BF00 - add r0, sp, #2 - ldrb r2, [r1] - ldrb r1, [r1, #1] - add r3, r0, r4 - strb r2, [r0, r4] - strb r1, [r3, #1] - mov r2, r6 - add r3, r4, #2 - mov ip, #0x65 - add r1, r4, #3 - strb ip, [r0, r3] - bl Gti2UShortToBuffer - cmp r6, r5 - add r4, r4, #5 - beq _02310148 - add r0, sp, #2 - mov r1, r4 - mov r2, r5 - bl Gti2UShortToBuffer - add r4, r4, #2 -_02310148: - add r1, sp, #2 - mov r0, r7 - mov r2, r4 - bl Gti2ConnectionSendData - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_0231016C: .word ov00_0231BF00 - arm_func_end Gti2SendNack - - arm_func_start Gti2SendPong -Gti2SendPong: ; 0x02310170 - ldr ip, _02310180 ; =Gti2ConnectionSendData - mov r3, #0x67 - strb r3, [r1, #2] - bx ip - .align 2, 0 -_02310180: .word Gti2ConnectionSendData - arm_func_end Gti2SendPong - - arm_func_start Gti2SendClosed -Gti2SendClosed: ; 0x02310184 - ldr ip, _0231019C ; =Gti2SendClosedOnSocket - mov r1, r0 - ldrh r2, [r1, #4] - ldr r0, [r1, #8] - ldr r1, [r1] - bx ip - .align 2, 0 -_0231019C: .word Gti2SendClosedOnSocket - arm_func_end Gti2SendClosed - - arm_func_start Gti2SendClosedOnSocket -Gti2SendClosedOnSocket: ; 0x023101A0 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - ldr r3, [r0, #0x40] - mov ip, #0 - cmp r3, #2 - bne _023101DC - mov r4, #3 - add r3, sp, #4 - strh r4, [sp, #4] - ldrb r4, [r3] - add r5, sp, #6 - ldrb r3, [r3, #1] - strb r4, [r5] - add ip, ip, #2 - strb r3, [r5, #1] -_023101DC: - ldr r4, _02310224 ; =ov00_0231BF00 - add r3, sp, #6 - ldrb lr, [r4] - ldrb r4, [r4, #1] - add r5, r3, ip - strb lr, [r3, ip] - strb r4, [r5, #1] - add lr, ip, #2 - mov r4, #0x68 - strb r4, [r3, lr] - add ip, ip, #3 - str ip, [sp] - bl Gti2SocketSend - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_02310224: .word ov00_0231BF00 - arm_func_end Gti2SendClosedOnSocket - - arm_func_start Gti2ResendMessage -Gti2ResendMessage: ; 0x02310228 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5, #8] - mov r4, r1 - ldr r1, [r4] - ldr r0, [r0, #0x44] - ldrh r2, [r5, #0x66] - add r1, r1, r0 - ldr r0, [r5, #0x50] - add r1, r1, #5 - bl Gti2UShortToBuffer - ldr r3, [r5, #0x50] - ldmia r4, {r1, r2} - mov r0, r5 - add r1, r3, r1 - bl Gti2ConnectionSendData - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, [r5, #0x88] - str r0, [r4, #0xc] - ldr r0, [r5, #8] - ldr r1, [r4] - ldr r0, [r0, #0x44] - ldr r2, [r5, #0x50] - add r0, r1, r0 - add r0, r0, #2 - ldrb r0, [r2, r0] - cmp r0, #2 - ldreq r0, [r5, #0x88] - streq r0, [r5, #0x8c] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Gti2ResendMessage - - arm_func_start Gti2Send -Gti2Send: ; 0x023102AC - stmdb sp!, {r3, lr} - cmp r3, #0 - beq _023102C0 - bl Gti2SendAppReliable - ldmia sp!, {r3, pc} -_023102C0: - bl Gti2SendAppUnreliable - ldmia sp!, {r3, pc} - arm_func_end Gti2Send - - arm_func_start Gti2ConnectionHash -Gti2ConnectionHash: ; 0x023102C8 - stmdb sp!, {r3, lr} - ldr r2, [r0] - ldrh r0, [r2, #4] - ldr r2, [r2] - mul r0, r2, r0 - bl _u32_div_f - mov r0, r1 - ldmia sp!, {r3, pc} - arm_func_end Gti2ConnectionHash - - arm_func_start Gti2ConnectionCompare -Gti2ConnectionCompare: ; 0x023102E8 - ldr r3, [r0] - ldr r2, [r1] - ldr r0, [r3] - ldr r1, [r2] - cmp r0, r1 - subne r0, r0, r1 - bxne lr - ldrh r1, [r3, #4] - ldrh r0, [r2, #4] - sub r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bx lr - arm_func_end Gti2ConnectionCompare - - arm_func_start Gti2ConnectionFree -Gti2ConnectionFree: ; 0x0231031C - ldr ip, _02310328 ; =Gti2ConnectionCleanup - ldr r0, [r0] - bx ip - .align 2, 0 -_02310328: .word Gti2ConnectionCleanup - arm_func_end Gti2ConnectionFree - - arm_func_start Gti2SocketFindConnection -Gti2SocketFindConnection: ; 0x0231032C - stmdb sp!, {lr} - sub sp, sp, #0xa4 - add r3, sp, #4 - str r1, [sp, #4] - strh r2, [sp, #8] - str r3, [sp] - ldr r0, [r0, #0xc] - add r1, sp, #0 - bl TableLookup_Gsi - cmp r0, #0 - ldrne r0, [r0] - moveq r0, #0 - add sp, sp, #0xa4 - ldmia sp!, {pc} - arm_func_end Gti2SocketFindConnection - - arm_func_start Gti2CreateSocket -Gti2CreateSocket: ; 0x02310364 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x1c - mov r4, r1 - mov r7, r3 - mov r6, r0 - mov r8, r2 - ldr r5, [sp, #0x3c] - bl SocketStartUp_Ghi - cmp r7, #0 - moveq r7, #0x10000 - cmp r8, #0 - add r1, sp, #0x10 - add r2, sp, #8 - mov r0, r4 - moveq r8, #0x10000 - bl Gt2StringToAddress - cmp r0, #0 - addeq sp, sp, #0x1c - moveq r0, #4 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - mov r0, #0x4c - bl gsimalloc - movs r4, r0 - addeq sp, sp, #0x1c - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - mov r1, #0 - mov r2, #0x4c - bl memset - mvn r0, #0 - str r0, [r4] - str r7, [r4, #0x3c] - ldr r1, [sp, #0x38] - str r8, [r4, #0x38] - str r1, [r4, #0x24] - ldr r0, _0231059C ; =Gti2ConnectionCompare - ldr r3, _023105A0 ; =Gti2ConnectionHash - str r0, [sp] - mov ip, #0 - mov r0, #4 - mov r1, #0x20 - mov r2, #2 - str ip, [sp, #4] - bl TableNew2_Gsi - str r0, [r4, #0xc] - cmp r0, #0 - bne _02310434 - mov r0, r4 - bl gsifree - add sp, sp, #0x1c - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02310434: - mov r0, #4 - ldr r2, _023105A4 ; =Gti2ConnectionFree - mov r1, r0 - bl ArrayNew_Gsi - str r0, [r4, #0x10] - cmp r0, #0 - bne _0231046C - ldr r0, [r4, #0xc] - bl TableFree_Gsi - mov r0, r4 - bl gsifree - add sp, sp, #0x1c - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_0231046C: - mov r0, #2 - mov r1, r0 - mov r2, #0 - bl SocketCreate - str r0, [r4] - cmp r5, #3 - str r5, [r4, #0x40] - moveq r0, #0 - streq r0, [r4, #0x44] - strne r5, [r4, #0x44] - ldr r1, [r4] - mvn r0, #0 - cmp r1, r0 - bne _023104C8 - ldr r0, [r4, #0xc] - bl TableFree_Gsi - ldr r0, [r4, #0x10] - bl ArrayFree_Gsi - mov r0, r4 - bl gsifree - add sp, sp, #0x1c - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_023104C8: - ldrh r0, [sp, #8] - add r1, sp, #0x14 - mov ip, #0 - mov r2, r0, asr #8 - mov r0, r0, lsl #8 - and r2, r2, #0xff - and r0, r0, #0xff00 - orr r0, r2, r0 - str ip, [r1] - mov r2, #2 - ldr r3, [sp, #0x10] - str ip, [r1, #4] - strb r2, [sp, #0x15] - str r3, [sp, #0x18] - strh r0, [sp, #0x16] - cmp r5, #3 - beq _02310550 - ldr r0, [r4] - mov r2, #8 - bl SocketBind - mvn r1, #0 - cmp r0, r1 - bne _02310550 - ldr r0, [r4] - bl SocketClose - ldr r0, [r4, #0xc] - bl TableFree_Gsi - ldr r0, [r4, #0x10] - bl ArrayFree_Gsi - mov r0, r4 - bl gsifree - add sp, sp, #0x1c - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02310550: - mov r0, #8 - str r0, [sp, #0xc] - ldr r0, [r4] - add r1, sp, #0x14 - add r2, sp, #0xc - bl getsockname_gsi - ldr r1, [sp, #0x18] - mov r0, #0 - str r1, [r4, #4] - ldrh r1, [sp, #0x16] - mov r2, r1, asr #8 - mov r1, r1, lsl #8 - and r2, r2, #0xff - and r1, r1, #0xff00 - orr r1, r2, r1 - strh r1, [r4, #8] - str r4, [r6] - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_0231059C: .word Gti2ConnectionCompare -_023105A0: .word Gti2ConnectionHash -_023105A4: .word Gti2ConnectionFree - arm_func_end Gti2CreateSocket - - arm_func_start Gti2CloseSocket -Gti2CloseSocket: ; 0x023105A8 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x1c] - cmp r0, #0 - movne r0, #1 - strne r0, [r4, #0x14] - ldmneia sp!, {r4, pc} - ldr r0, [r4] - bl SocketClose - ldr r0, [r4, #0xc] - bl TableFree_Gsi - ldr r0, [r4, #0x10] - bl ArrayFree_Gsi - mov r0, r4 - bl gsifree - bl SocketShutDown_Gsi - ldmia sp!, {r4, pc} - arm_func_end Gti2CloseSocket - - arm_func_start Gti2Listen -Gti2Listen: ; 0x023105EC - str r1, [r0, #0x20] - bx lr - arm_func_end Gti2Listen - - arm_func_start Gti2CreateConnectionObject -Gti2CreateConnectionObject: ; 0x023105F4 - ldr ip, _02310600 ; =gsimalloc - mov r0, #0xa0 - bx ip - .align 2, 0 -_02310600: .word gsimalloc - arm_func_end Gti2CreateConnectionObject - - arm_func_start Gti2NewSocketConnection -Gti2NewSocketConnection: ; 0x02310604 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r3 - mov r5, r2 - mov r3, #0 - mov r6, r1 - mov r1, r5 - mov r2, r4 - mov r7, r0 - str r3, [sp] - bl Gti2SocketFindConnection - cmp r0, #0 - movne r0, #5 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - bl Gti2CreateConnectionObject - str r0, [sp] - cmp r0, #0 - beq _02310794 - mov r1, #0 - mov r2, #0xa0 - bl memset - ldr r0, [sp] - str r5, [r0] - ldr r0, [sp] - strh r4, [r0, #4] - ldr r0, [sp] - str r7, [r0, #8] - bl current_time_gsi - ldr r2, [sp] - mov r1, #0 - str r0, [r2, #0x1c] - ldr r2, [sp] - ldr r0, [r2, #0x1c] - str r0, [r2, #0x88] - ldr r0, [sp] - strh r1, [r0, #0x64] - ldr r0, [sp] - strh r1, [r0, #0x66] - ldr r0, [sp] - ldr r1, [r7, #0x3c] - add r0, r0, #0x44 - bl Gti2AllocateBuffer - cmp r0, #0 - beq _02310794 - ldr r0, [sp] - ldr r1, [r7, #0x38] - add r0, r0, #0x50 - bl Gti2AllocateBuffer - cmp r0, #0 - beq _02310794 - mov r0, #0x10 - mov r1, #0x40 - mov r2, #0 - bl ArrayNew_Gsi - ldr r1, [sp] - str r0, [r1, #0x5c] - ldr r0, [sp] - ldr r0, [r0, #0x5c] - cmp r0, #0 - beq _02310794 - mov r0, #0x10 - mov r1, #0x40 - mov r2, #0 - bl ArrayNew_Gsi - ldr r1, [sp] - str r0, [r1, #0x60] - ldr r0, [sp] - ldr r0, [r0, #0x60] - cmp r0, #0 - beq _02310794 - mov r0, #4 - mov r1, #2 - mov r2, #0 - bl ArrayNew_Gsi - ldr r1, [sp] - str r0, [r1, #0x98] - ldr r0, [sp] - ldr r0, [r0, #0x98] - cmp r0, #0 - beq _02310794 - mov r0, #4 - mov r1, #2 - mov r2, #0 - bl ArrayNew_Gsi - ldr r1, [sp] - str r0, [r1, #0x9c] - ldr r0, [sp] - ldr r0, [r0, #0x9c] - cmp r0, #0 - beq _02310794 - ldr r0, [r7, #0xc] - add r1, sp, #0 - bl TableEnter_Gsi - mov r0, r7 - mov r1, r5 - mov r2, r4 - bl Gti2SocketFindConnection - str r0, [r6] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_02310794: - ldr r0, [sp] - cmp r0, #0 - beq _0231080C - ldr r0, [r0, #0x44] - bl gsifree - ldr r0, [sp] - ldr r0, [r0, #0x50] - bl gsifree - ldr r0, [sp] - ldr r0, [r0, #0x5c] - cmp r0, #0 - beq _023107C8 - bl ArrayFree_Gsi -_023107C8: - ldr r0, [sp] - ldr r0, [r0, #0x60] - cmp r0, #0 - beq _023107DC - bl ArrayFree_Gsi -_023107DC: - ldr r0, [sp] - ldr r0, [r0, #0x98] - cmp r0, #0 - beq _023107F0 - bl ArrayFree_Gsi -_023107F0: - ldr r0, [sp] - ldr r0, [r0, #0x9c] - cmp r0, #0 - beq _02310804 - bl ArrayFree_Gsi -_02310804: - ldr r0, [sp] - bl gsifree -_0231080C: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end Gti2NewSocketConnection - - arm_func_start Gti2FreeSocketConnection -Gti2FreeSocketConnection: ; 0x02310814 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, lr} - ldr r1, [sp, #0x10] - ldr r0, [r1, #0x14] - cmp r0, #0 - ldreq r0, [r1, #0x24] - cmpeq r0, #0 - ldmneia sp!, {r4, r5, r6, lr} - addne sp, sp, #0x10 - bxne lr - ldr r0, [r1, #0xc] - cmp r0, #7 - ldr r0, [r1, #8] - bne _023108C0 - ldr r0, [r0, #0x10] - bl ArrayLength_Gsi - mov r4, r0 - mov r5, #0 - cmp r4, #0 - ldmleia sp!, {r4, r5, r6, lr} - addle sp, sp, #0x10 - bxle lr -_0231086C: - ldr r6, [sp, #0x10] - mov r1, r5 - ldr r0, [r6, #8] - ldr r0, [r0, #0x10] - bl ArrayNth_Gsi - ldr r0, [r0] - cmp r6, r0 - bne _023108A8 - ldr r0, [r6, #8] - mov r1, r5 - ldr r0, [r0, #0x10] - bl ArrayDeleteAt_Gsi - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr -_023108A8: - add r5, r5, #1 - cmp r5, r4 - blt _0231086C - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr -_023108C0: - ldr r0, [r0, #0xc] - add r1, sp, #0x10 - bl TableRemove_Gsi - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr - arm_func_end Gti2FreeSocketConnection - - arm_func_start Gti2SocketSend -Gti2SocketSend: ; 0x023108D8 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x18 - mov r6, r0 - mov r5, r1 - add r0, sp, #0x34 - add r1, sp, #0x38 - mov r4, r2 - bl Gti2MessageCheck - ldr r0, [r6, #0x40] - cmp r0, #3 - beq _02310928 - ldr r0, [r6] - bl CanSendOnSocket - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, lr} - addeq sp, sp, #0x10 - bxeq lr -_02310928: - mov r1, r4, asr #8 - mov r0, r4, lsl #8 - add r2, sp, #0x10 - mov r3, #0 - str r3, [r2, #4] - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - str r3, [r2] - mov r1, #2 - strh r0, [sp, #0x12] - strb r1, [sp, #0x11] - str r5, [sp, #0x14] - str r2, [sp] - mov r0, #8 - str r0, [sp, #4] - ldr r0, [r6] - ldr r1, [sp, #0x34] - ldr r2, [sp, #0x38] - bl SocketSendTo - mvn r1, #0 - cmp r0, r1 - bne _02310A70 - ldr r0, [r6] - bl GoaGetLastError - mvn r2, #0xe - cmp r0, r2 - bne _023109C4 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl Gti2HandleConnectionReset - cmp r0, #0 - bne _02310AD8 - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr -_023109C4: - sub r1, r2, #8 - cmp r0, r1 - bne _02310A00 - mov r0, r6 - mov r1, r5 - mov r2, r4 - mov r3, #1 - bl Gti2HandleHostUnreachable - cmp r0, #0 - bne _02310AD8 - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr -_02310A00: - sub r1, r2, #0x1b - cmp r0, r1 - addne r1, r2, #9 - cmpne r0, r1 - addeq sp, sp, #0x18 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, lr} - addeq sp, sp, #0x10 - bxeq lr - sub r1, r2, #0x1b - cmp r0, r1 - addne r1, r2, #9 - cmpne r0, r1 - addeq sp, sp, #0x18 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, lr} - addeq sp, sp, #0x10 - bxeq lr - sub r1, r2, #0x14 - cmp r0, r1 - beq _02310AD8 - mov r0, r6 - bl Gti2SocketError - add sp, sp, #0x18 - mov r0, #0 - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr -_02310A70: - ldr r0, [r6, #0x28] - cmp r0, #0 - beq _02310AD8 - mov r0, r6 - mov r1, r5 - mov r2, r4 - bl Gti2SocketFindConnection - mov r1, #0 - str r1, [sp] - ldr r2, [sp, #0x34] - mov r1, r0 - str r2, [sp, #4] - ldr ip, [sp, #0x38] - mov r3, r4 - mov r0, r6 - mov r2, r5 - str ip, [sp, #8] - mov r4, #1 - str r4, [sp, #0xc] - bl Gti2DumpCallback - cmp r0, #0 - addeq sp, sp, #0x18 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, lr} - addeq sp, sp, #0x10 - bxeq lr -_02310AD8: - mov r0, #1 - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, lr} - add sp, sp, #0x10 - bx lr - arm_func_end Gti2SocketSend - - arm_func_start Gti2SocketConnectionsThinkMap -Gti2SocketConnectionsThinkMap: ; 0x02310AEC - stmdb sp!, {r4, lr} - ldr r4, [r0] - ldr r1, [r1] - ldr r0, [r4, #0xc] - cmp r0, #7 - beq _02310B18 - mov r0, r4 - bl Gti2ConnectionThink - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, pc} -_02310B18: - ldr r0, [r4, #0xc] - cmp r0, #7 - ldreq r0, [r4, #0x14] - cmpeq r0, #0 - ldreq r0, [r4, #0x24] - cmpeq r0, #0 - bne _02310B3C - mov r0, r4 - bl Gti2FreeSocketConnection -_02310B3C: - mov r0, #1 - ldmia sp!, {r4, pc} - arm_func_end Gti2SocketConnectionsThinkMap - - arm_func_start Gti2SocketConnectionsThink -Gti2SocketConnectionsThink: ; 0x02310B44 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - bl current_time_gsi - str r0, [sp] - ldr r0, [r4, #0xc] - ldr r1, _02310B7C ; =Gti2SocketConnectionsThinkMap - add r2, sp, #0 - bl TableMapSafe2_Gsi - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_02310B7C: .word Gti2SocketConnectionsThinkMap - arm_func_end Gti2SocketConnectionsThink - - arm_func_start Gti2FreeClosedConnections -Gti2FreeClosedConnections: ; 0x02310B80 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5, #0x10] - bl ArrayLength_Gsi - subs r4, r0, #1 - ldmmiia sp!, {r3, r4, r5, pc} -_02310B98: - ldr r0, [r5, #0x10] - mov r1, r4 - bl ArrayNth_Gsi - ldr r0, [r0] - bl Gti2FreeSocketConnection - subs r4, r4, #1 - bpl _02310B98 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end Gti2FreeClosedConnections - - arm_func_start Gti2SocketError -Gti2SocketError: ; 0x02310BB8 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r1, [r4, #0x18] - cmp r1, #0 - ldmneia sp!, {r4, pc} - mov r1, #1 - str r1, [r4, #0x18] - bl Gt2CloseAllConnectionsHard - mov r0, r4 - bl Gti2SocketErrorCallback - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl Gti2CloseSocket - ldmia sp!, {r4, pc} - arm_func_end Gti2SocketError - - arm_func_start Gt2AddressToString -Gt2AddressToString: ; 0x02310BF4 - stmdb sp!, {r3, r4, r5, lr} - movs r4, r2 - mov r5, r1 - bne _02310C20 - ldr r2, _02310C90 ; =ov00_02328E1C - ldr r3, _02310C94 ; =ov00_02328E20 - ldr ip, [r2] - mov r1, #0x16 - eor ip, ip, #1 - arm_func_end Gt2AddressToString - - arm_func_start ov00_02310C18 -ov00_02310C18: ; 0x02310C18 - mla r4, ip, r1, r3 - str ip, [r2] -_02310C20: - cmp r0, #0 - beq _02310C68 - str r0, [sp] - cmp r5, #0 - beq _02310C50 - bl Soc_InetNtoA - mov r2, r0 - ldr r1, _02310C98 ; =ov00_0231BF04 - mov r0, r4 - mov r3, r5 - bl OS_VsPrintf - b _02310C88 -_02310C50: - bl Soc_InetNtoA - mov r2, r0 - ldr r1, _02310C9C ; =ov00_0231BF0C - mov r0, r4 - bl OS_VsPrintf - b _02310C88 -_02310C68: - cmp r5, #0 - moveq r0, #0 - streqb r0, [r4] - beq _02310C88 - ldr r1, _02310CA0 ; =ov00_0231BF10 - mov r0, r4 - mov r2, r5 - bl OS_VsPrintf -_02310C88: - mov r0, r4 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02310C90: .word ov00_02328E1C -_02310C94: .word ov00_02328E20 -_02310C98: .word ov00_0231BF04 -_02310C9C: .word ov00_0231BF0C -_02310CA0: .word ov00_0231BF10 - arm_func_end ov00_02310C18 - - arm_func_start Gt2StringToAddress -Gt2StringToAddress: ; 0x02310CA4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x104 - movs r8, r0 - mov r7, r1 - ldrnesb r1, [r8] - mov r4, #0 - mov r6, r2 - cmpne r1, #0 - moveq r4, #0 - moveq r5, r4 - beq _02310DDC - mov r1, #0x3a - bl strchr - movs r5, r0 - moveq r5, r4 - beq _02310D98 - cmp r5, r8 - moveq r8, r4 - beq _02310D10 - sub sb, r5, r8 - add r0, sp, #0 - mov r1, r8 - mov r2, sb - bl memcpy - add r8, sp, #0 - mov r0, r4 - strb r0, [r8, sb] -_02310D10: - ldrsb r0, [r5, #1] - add r3, r5, #1 - cmp r0, #0 - beq _02310D68 - ldr r1, _02310DF8 ; =_020AEDB0 - mov r2, #0 -_02310D28: - cmp r0, #0 - blt _02310D38 - cmp r0, #0x80 - blt _02310D40 -_02310D38: - mov r0, r2 - b _02310D4C -_02310D40: - mov r0, r0, lsl #1 - ldrh r0, [r1, r0] - and r0, r0, #8 -_02310D4C: - cmp r0, #0 - addeq sp, sp, #0x104 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldrsb r0, [r3, #1]! - cmp r0, #0 - bne _02310D28 -_02310D68: - add r0, r5, #1 - bl atoi - cmp r0, #0 - blt _02310D84 - ldr r1, _02310DFC ; =0x0000FFFF - cmp r0, r1 - ble _02310D90 -_02310D84: - add sp, sp, #0x104 - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_02310D90: - mov r0, r0, lsl #0x10 - mov r5, r0, lsr #0x10 -_02310D98: - cmp r8, #0 - beq _02310DDC - mov r0, r8 - bl inet_addr_gsi - mov r4, r0 - mvn r0, #0 - cmp r4, r0 - bne _02310DDC - mov r0, r8 - bl Soc_GetHostByName - cmp r0, #0 - addeq sp, sp, #0x104 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r0, [r0, #0xc] - ldr r0, [r0] - ldr r4, [r0] -_02310DDC: - cmp r7, #0 - strne r4, [r7] - cmp r6, #0 - strneh r5, [r6] - mov r0, #1 - add sp, sp, #0x104 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02310DF8: .word _020AEDB0 -_02310DFC: .word 0x0000FFFF - arm_func_end Gt2StringToAddress - - arm_func_start Gti2MessageCheck -Gti2MessageCheck: ; 0x02310E00 - stmdb sp!, {r4, lr} - ldr r2, [r0] - mov r4, r1 - cmp r2, #0 - bne _02310E28 - ldr r2, _02310E4C ; =ov00_0231BF14 - mov r1, #0 - str r2, [r0] - str r1, [r4] - ldmia sp!, {r4, pc} -_02310E28: - ldr r1, [r4] - mvn r0, #0 - cmp r1, r0 - ldmneia sp!, {r4, pc} - mov r0, r2 - bl strlen - add r0, r0, #1 - str r0, [r4] - ldmia sp!, {r4, pc} - .align 2, 0 -_02310E4C: .word ov00_0231BF14 - arm_func_end Gti2MessageCheck - - arm_func_start GetLocalIP_Gsi -GetLocalIP_Gsi: ; 0x02310E50 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, #0 - bl getlocalhost_gsi - movs r6, r0 - moveq r0, r7 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r4, _02310EB0 ; =0x0100007F - mov r5, r7 -_02310E70: - ldr r0, [r6, #0xc] - ldr r0, [r0, r5, lsl #2] - cmp r0, #0 - beq _02310EA8 - ldr r1, [r0] - cmp r1, r4 - beq _02310EA0 - mov r7, r1 - bl IsPrivateIP - cmp r0, #0 - movne r0, r7 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_02310EA0: - add r5, r5, #1 - b _02310E70 -_02310EA8: - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02310EB0: .word 0x0100007F - arm_func_end GetLocalIP_Gsi - - arm_func_start GetLocalPort_Gsi -GetLocalPort_Gsi: ; 0x02310EB4 - stmdb sp!, {lr} - sub sp, sp, #0xc - mov r3, #8 - add r1, sp, #4 - add r2, sp, #0 - str r3, [sp] - bl getsockname_gsi - mvn r1, #0 - cmp r0, r1 - moveq r0, #0 - ldrneh r0, [sp, #6] - add sp, sp, #0xc - ldmia sp!, {pc} - arm_func_end GetLocalPort_Gsi - - arm_func_start OutputMapping -OutputMapping: ; 0x02310EE8 - bx lr - arm_func_end OutputMapping - - arm_func_start Think_NN -Think_NN: ; 0x02310EEC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x68 - ldr r2, _02311220 ; =ov00_02328E4C - mov r6, #8 - ldr r3, [r2, #0xc] - str r6, [sp, #0x10] - mov r5, r0 - cmp r3, #0 - ldrne r0, [r2, #8] - mov r4, r1 - cmpne r0, #0 - ldrne r0, [r2, #4] - cmpne r0, #0 - ldrne r0, [r2, #0x18] - cmpne r0, #0 - ldrne r0, [r2] - cmpne r0, #0 - ldrne r0, [r2, #0x10] - cmpne r0, #0 - ldrne r0, [r2, #0x14] - cmpne r0, #0 - addne sp, sp, #0x68 - movne r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - mvn r0, #0 - cmp r5, r0 - beq _02311214 - mov r0, r5 - bl CanReceiveOnSocket - cmp r0, #0 - beq _02311214 -_02310F68: - add r0, sp, #0x14 - str r0, [sp] - add r6, sp, #0x10 - ldr r1, _02311224 ; =ov00_02328E98 - mov r0, r5 - mov r2, #0x200 - mov r3, #0 - str r6, [sp, #4] - bl SocketRecvFrom - mov r7, r0 - mvn r0, #0 - cmp r7, r0 - beq _02311214 - ldr r0, _02311224 ; =ov00_02328E98 - ldr r1, _02311228 ; =ov00_0231BF24 - mov r2, #6 - bl memcmp - cmp r0, #0 - addne sp, sp, #0x68 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - ldr r6, _02311224 ; =ov00_02328E98 - cmp r7, #0x15 - ldrb r0, [r6, #7] - addlt sp, sp, #0x68 - movlt r0, #1 - ldmltia sp!, {r4, r5, r6, r7, r8, pc} - cmp r0, #2 - bne _0231106C - add r3, sp, #0x1c - mov r2, #0xa -_02310FE4: - ldrb r1, [r6] - ldrb r0, [r6, #1] - add r6, r6, #2 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - bne _02310FE4 - ldrb r0, [r6] - strb r0, [r3] - ldrb r0, [sp, #0x28] - cmp r0, #1 - beq _0231102C - cmp r0, #2 - beq _0231103C - cmp r0, #3 - beq _02311054 - b _023111F8 -_0231102C: - ldr r0, _02311220 ; =ov00_02328E4C - mov r1, #1 - str r1, [r0, #0xc] - b _023111F8 -_0231103C: - mov r1, #0 - ldr r0, _02311220 ; =ov00_02328E4C - str r1, [r4, #0x80] - mov r1, #1 - str r1, [r0, #8] - b _023111F8 -_02311054: - mov r1, #0 - ldr r0, _02311220 ; =ov00_02328E4C - str r1, [r4, #0x84] - mov r1, #1 - str r1, [r0, #4] - b _023111F8 -_0231106C: - cmp r0, #0xb - bne _023111F8 - add r3, sp, #0x1c - mov r2, #0xa -_0231107C: - ldrb r1, [r6] - ldrb r0, [r6, #1] - add r6, r6, #2 - strb r1, [r3] - strb r0, [r3, #1] - add r3, r3, #2 - subs r2, r2, #1 - bne _0231107C - ldrb r0, [r6] - strb r0, [r3] - ldr r3, [sp, #0x24] - 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 r0, r1, r0 - str r0, [sp, #0x24] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _02311130 -_023110E4: ; jump table - b _023110F4 ; case 0 - b _02311114 ; case 1 - b _02311124 ; case 2 - b _02311104 ; case 3 -_023110F4: - ldr r0, _02311220 ; =ov00_02328E4C - mov r1, #1 - str r1, [r0, #0x18] - b _02311130 -_02311104: - ldr r0, _02311220 ; =ov00_02328E4C - mov r1, #1 - str r1, [r0] - b _02311130 -_02311114: - ldr r0, _02311220 ; =ov00_02328E4C - mov r1, #1 - str r1, [r0, #0x10] - b _02311130 -_02311124: - ldr r0, _02311220 ; =ov00_02328E4C - mov r1, #1 - str r1, [r0, #0x14] -_02311130: - bl GetLocalIP_Gsi - ldr r1, [sp, #0x24] - add r1, r4, r1, lsl #4 - str r0, [r1, #0x94] - mov r0, r5 - bl GetLocalPort_Gsi - mov r6, r0 - mov r0, r5 - bl GetLocalPort_Gsi - mov r2, r6, asr #8 - mov r1, r0, lsl #8 - ldr r0, [sp, #0x24] - and r2, r2, #0xff - and r1, r1, #0xff00 - orr r1, r2, r1 - add r0, r4, r0, lsl #4 - strh r1, [r0, #0x98] - add r6, sp, #0x2b - add r2, sp, #0x2f - ldrb r3, [r6] - add r0, sp, #0xc - ldrb r8, [r6, #1] - ldrb r7, [r6, #2] - ldrb r6, [r6, #3] - strb r3, [r0] - ldrb ip, [r2] - add lr, sp, #8 - ldrb r3, [r2, #1] - ldr r1, [sp, #0x24] - strb r8, [r0, #1] - strb r7, [r0, #2] - strb r6, [r0, #3] - add r0, r4, r1, lsl #4 - ldr r2, [sp, #0xc] - strb ip, [lr] - strb r3, [lr, #1] - str r2, [r0, #0x9c] - ldrh r2, [sp, #8] - ldr r0, [sp, #0x24] - add r1, r4, #0x94 - mov r3, r2, asr #8 - mov r2, r2, lsl #8 - and r3, r3, #0xff - and r2, r2, #0xff00 - orr r2, r3, r2 - add r0, r4, r0, lsl #4 - strh r2, [r0, #0xa0] - ldr r0, [sp, #0x24] - add r0, r1, r0, lsl #4 - bl OutputMapping -_023111F8: - mvn r0, #0 - cmp r5, r0 - beq _02311214 - mov r0, r5 - bl CanReceiveOnSocket - cmp r0, #0 - bne _02310F68 -_02311214: - mov r0, #1 - add sp, sp, #0x68 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02311220: .word ov00_02328E4C -_02311224: .word ov00_02328E98 -_02311228: .word ov00_0231BF24 - arm_func_end Think_NN - - arm_func_start NatifyThink -NatifyThink: ; 0x0231122C - ldr ip, _02311234 ; =Think_NN - bx ip - .align 2, 0 -_02311234: .word Think_NN - arm_func_end NatifyThink - - arm_func_start DetermineNatType -DetermineNatType: ; 0x02311238 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r0, #6 - str r0, [r6, #0x8c] - mov r0, #4 - str r0, [r6, #0x88] - mov r0, #1 - str r0, [r6, #0xd4] - ldr r1, [r6, #0x9c] - cmp r1, #0 - ldrne r0, [r6, #0xac] - cmpne r0, #0 - ldrne r0, [r6, #0xbc] - cmpne r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r4, [r6, #0x84] - cmp r4, #0 - ldreq r0, [r6, #0x80] - cmpeq r0, #0 - ldreq r0, [r6, #0x94] - cmpeq r1, r0 - moveq r0, #0 - streq r0, [r6, #0x8c] - beq _023113DC - ldr r0, [r6, #0x94] - cmp r1, r0 - moveq r0, #1 - streq r0, [r6, #0x8c] - beq _023113DC - ldr r5, [r6, #0x80] - cmp r5, #0 - cmpeq r4, #0 - bne _023112EC - ldrh r1, [r6, #0xc0] - ldrh r0, [r6, #0xb0] - sub r0, r1, r0 - bl abs - cmp r0, #1 - blt _023112EC - mov r0, #5 - str r0, [r6, #0x8c] - mov r0, #0 - str r0, [r6, #0x88] - b _023113DC -_023112EC: - cmp r5, #0 - beq _02311328 - cmp r4, #0 - bne _02311328 - ldrh r1, [r6, #0xc0] - ldrh r0, [r6, #0xb0] - sub r0, r1, r0 - bl abs - cmp r0, #1 - blt _02311328 - mov r0, #5 - str r0, [r6, #0x8c] - mov r0, #2 - str r0, [r6, #0x88] - b _023113DC -_02311328: - cmp r5, #0 - bne _02311364 - cmp r4, #0 - beq _02311364 - ldrh r1, [r6, #0xc0] - ldrh r0, [r6, #0xb0] - sub r0, r1, r0 - bl abs - cmp r0, #1 - blt _02311364 - mov r0, #5 - str r0, [r6, #0x8c] - mov r0, #3 - str r0, [r6, #0x88] - b _023113DC -_02311364: - cmp r5, #0 - cmpne r4, #0 - beq _0231139C - ldrh r1, [r6, #0xc0] - ldrh r0, [r6, #0xb0] - sub r0, r1, r0 - bl abs - cmp r0, #1 - blt _0231139C - mov r0, #5 - str r0, [r6, #0x8c] - mov r0, #1 - str r0, [r6, #0x88] - b _023113DC -_0231139C: - cmp r4, #0 - movne r0, #4 - strne r0, [r6, #0x8c] - bne _023113DC - cmp r5, #0 - beq _023113C4 - cmp r4, #0 - moveq r0, #3 - streq r0, [r6, #0x8c] - beq _023113DC -_023113C4: - cmp r5, #0 - cmpeq r4, #0 - moveq r0, #2 - streq r0, [r6, #0x8c] - movne r0, #6 - strne r0, [r6, #0x8c] -_023113DC: - ldrh r3, [r6, #0x98] - ldrh r2, [r6, #0xa0] - cmp r2, r3 - ldreqh r1, [r6, #0xb0] - ldreqh r0, [r6, #0xa8] - cmpeq r1, r0 - ldreqh r1, [r6, #0xc0] - ldreqh r0, [r6, #0xb8] - cmpeq r1, r0 - moveq r0, #1 - streq r0, [r6, #0x90] - beq _02311460 - ldrh r1, [r6, #0xb0] - cmp r2, r1 - ldreqh r0, [r6, #0xc0] - cmpeq r1, r0 - moveq r0, #2 - streq r0, [r6, #0x90] - beq _02311460 - cmp r2, r3 - ldreqh r0, [r6, #0xc0] - subeq r0, r0, r1 - cmpeq r0, #1 - moveq r0, #4 - streq r0, [r6, #0x90] - beq _02311460 - ldrh r0, [r6, #0xc0] - sub r0, r0, r1 - cmp r0, #1 - moveq r0, #3 - streq r0, [r6, #0x90] - movne r0, #0 - strne r0, [r6, #0x90] -_02311460: - ldrh r1, [r6, #0xd0] - cmp r1, #0 - ldrneh r0, [r6, #0xa0] - cmpne r0, r1 - movne r0, #0 - strne r0, [r6, #0xd4] - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end DetermineNatType - - arm_func_start FindNegotiatorForCookie -FindNegotiatorForCookie: ; 0x02311480 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _023114E4 ; =ov00_02329098 - mov r6, r0 - ldr r0, [r1] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - mov r5, #0 - bl ArrayLength_Gsi - cmp r0, #0 - ble _023114DC - ldr r4, _023114E4 ; =ov00_02329098 -_023114B0: - ldr r0, [r4] - mov r1, r5 - bl ArrayNth_Gsi - ldr r1, [r0, #8] - cmp r1, r6 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r4] - add r5, r5, #1 - bl ArrayLength_Gsi - cmp r5, r0 - blt _023114B0 -_023114DC: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023114E4: .word ov00_02329098 - arm_func_end FindNegotiatorForCookie - - arm_func_start AddNegotiator -AddNegotiator: ; 0x023114E8 - stmdb sp!, {lr} - sub sp, sp, #0x54 - mov r0, #0 - add ip, sp, #0 - mov r1, r0 - mov r2, r0 - mov r3, r0 - stmia ip!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldr r1, _02311574 ; =ov00_02329098 - str r0, [ip] - ldr r0, [r1] - cmp r0, #0 - bne _02311540 - mov r0, #0x54 - mov r1, #4 - bl ArrayNew_Gsi - ldr r1, _02311574 ; =ov00_02329098 - str r0, [r1] -_02311540: - ldr r0, _02311574 ; =ov00_02329098 - add r1, sp, #0 - ldr r0, [r0] - bl ArrayAppend_Gsi - ldr r0, _02311574 ; =ov00_02329098 - ldr r0, [r0] - bl ArrayLength_Gsi - ldr r2, _02311574 ; =ov00_02329098 - sub r1, r0, #1 - ldr r0, [r2] - bl ArrayNth_Gsi - add sp, sp, #0x54 - ldmia sp!, {pc} - .align 2, 0 -_02311574: .word ov00_02329098 - arm_func_end AddNegotiator - - arm_func_start RemoveNegotiator -RemoveNegotiator: ; 0x02311578 - stmdb sp!, {r4, r5, r6, lr} - ldr r1, _023115DC ; =ov00_02329098 - mov r6, r0 - ldr r0, [r1] - mov r5, #0 - bl ArrayLength_Gsi - cmp r0, #0 - ldmleia sp!, {r4, r5, r6, pc} - ldr r4, _023115DC ; =ov00_02329098 -_0231159C: - ldr r0, [r4] - mov r1, r5 - bl ArrayNth_Gsi - cmp r6, r0 - bne _023115C4 - ldr r0, _023115DC ; =ov00_02329098 - mov r1, r5 - ldr r0, [r0] - bl ArrayRemoveAt_Gsi - ldmia sp!, {r4, r5, r6, pc} -_023115C4: - ldr r0, [r4] - add r5, r5, #1 - bl ArrayLength_Gsi - cmp r5, r0 - blt _0231159C - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023115DC: .word ov00_02329098 - arm_func_end RemoveNegotiator - - arm_func_start NnFreeNegotiateList -NnFreeNegotiateList: ; 0x023115E0 - stmdb sp!, {r3, lr} - ldr r0, _02311608 ; =ov00_02329098 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ArrayFree_Gsi - ldr r0, _02311608 ; =ov00_02329098 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02311608: .word ov00_02329098 - arm_func_end NnFreeNegotiateList - - arm_func_start CheckMagic_NN -CheckMagic_NN: ; 0x0231160C - stmdb sp!, {r3, lr} - ldr r1, _0231162C ; =ov00_0231BF24 - mov r2, #6 - bl memcmp - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0231162C: .word ov00_0231BF24 - arm_func_end CheckMagic_NN - - arm_func_start SendPacket_NN -SendPacket_NN: ; 0x02311630 - stmdb sp!, {r3, lr} - sub sp, sp, #0x10 - mov ip, r2, asr #8 - mov r2, r2, lsl #8 - str r1, [sp, #0xc] - mov r1, r3 - and r3, ip, #0xff - and r2, r2, #0xff00 - orr r2, r3, r2 - mov lr, #2 - strh r2, [sp, #0xa] - add r3, sp, #8 - strb lr, [sp, #9] - str r3, [sp] - mov ip, #8 - ldr r2, [sp, #0x18] - mov r3, #0 - str ip, [sp, #4] - bl SocketSendTo - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - arm_func_end SendPacket_NN - - arm_func_start GetLocalIP_NN -GetLocalIP_NN: ; 0x02311684 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, #0 - bl getlocalhost_gsi - movs r6, r0 - moveq r0, r7 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r4, _023116E4 ; =0x0100007F - mov r5, r7 -_023116A4: - ldr r0, [r6, #0xc] - ldr r0, [r0, r5, lsl #2] - cmp r0, #0 - beq _023116DC - ldr r1, [r0] - cmp r1, r4 - beq _023116D4 - mov r7, r1 - bl IsPrivateIP - cmp r0, #0 - movne r0, r7 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} -_023116D4: - add r5, r5, #1 - b _023116A4 -_023116DC: - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_023116E4: .word 0x0100007F - arm_func_end GetLocalIP_NN - - arm_func_start GetLocalPort_NN -GetLocalPort_NN: ; 0x023116E8 - stmdb sp!, {lr} - sub sp, sp, #0xc - mov r3, #8 - add r1, sp, #4 - add r2, sp, #0 - str r3, [sp] - bl getsockname_gsi - mvn r1, #0 - cmp r0, r1 - moveq r0, #0 - ldrneh r0, [sp, #6] - add sp, sp, #0xc - ldmia sp!, {pc} - arm_func_end GetLocalPort_NN - - arm_func_start SendReportPacket -SendReportPacket: ; 0x0231171C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x50 - ldr r1, _02311858 ; =ov00_0231BF24 - mov r2, #3 - ldrb sb, [r1] - ldrb r8, [r1, #1] - add sl, sp, #4 - ldrb r7, [r1, #2] - ldrb r6, [r1, #3] - ldrb r5, [r1, #4] - ldrb r3, [r1, #5] - mov r1, #0xd - strb r5, [sl, #4] - mov r4, r0 - strb sb, [sl] - strb r8, [sl, #1] - strb r7, [sl, #2] - strb r6, [sl, #3] - strb r2, [sp, #0xa] - strb r1, [sp, #0xb] - strb r3, [sl, #5] - ldr r3, [r4, #8] - add r5, sp, #0x13 - 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 r0, r1, r0 - ldr r1, _0231185C ; =ov00_0231BF18 - str r0, [sp, #0xc] - ldr r0, [r4, #0xc] - ldrb lr, [r1] - strb r0, [sp, #0x11] - ldr r0, [r4, #0x44] - ldrb ip, [r1, #1] - cmp r0, #0 - ldr r0, _02311860 ; =ov00_023290A0 - ldrb r3, [r1, #2] - ldrb r2, [r1, #3] - moveq r6, #1 - movne r6, #0 - ldrb sl, [r0] - add r1, sp, #0x17 - ldrb sb, [r0, #1] - ldrb r8, [r0, #2] - ldrb r7, [r0, #3] - ldr r0, _02311864 ; =ov00_02328804 - strb r6, [sp, #0x12] - strb lr, [r5] - strb ip, [r5, #1] - strb r3, [r5, #2] - strb r2, [r5, #3] - strb sl, [r1] - strb sb, [r1, #1] - strb r8, [r1, #2] - strb r7, [r1, #3] - bl strlen - cmp r0, #0 - beq _02311830 - ldr r1, _02311864 ; =ov00_02328804 - add r0, sp, #0x1b - mov r2, #0x32 - bl memcpy -_02311830: - mov r0, #0x49 - str r0, [sp] - ldr r1, _02311868 ; =ov00_02329098 - ldr r0, [r4] - ldr r1, [r1, #0x28] - ldr r2, _0231186C ; =0x00006CFD - add r3, sp, #4 - bl SendPacket_NN - add sp, sp, #0x50 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_02311858: .word ov00_0231BF24 -_0231185C: .word ov00_0231BF18 -_02311860: .word ov00_023290A0 -_02311864: .word ov00_02328804 -_02311868: .word ov00_02329098 -_0231186C: .word 0x00006CFD - arm_func_end SendReportPacket - - arm_func_start StartReport -StartReport: ; 0x02311870 - stmdb sp!, {r4, lr} - mov r4, r0 - str r1, [r4, #0x44] - str r2, [r4, #0x48] - cmp r3, #0 - beq _023118B0 - add lr, r4, #0x4c - mov ip, #4 -_02311890: - ldrb r2, [r3] - ldrb r0, [r3, #1] - add r3, r3, #2 - subs ip, ip, #1 - strb r2, [lr] - strb r0, [lr, #1] - add lr, lr, #2 - bne _02311890 -_023118B0: - sub r0, r1, #1 - cmp r0, #1 - bhi _023118E8 - mov r0, #3 - str r0, [r4, #0x10] - ldr r0, [r4, #0x44] - ldr r1, [r4, #0x48] - ldr r3, [r4, #0x40] - ldr ip, [r4, #0x3c] - add r2, r4, #0x4c - blx ip - ldr r0, [r4, #8] - bl NnCancel - ldmia sp!, {r4, pc} -_023118E8: - mov r0, r4 - bl SendReportPacket - mov r0, #5 - str r0, [r4, #0x10] - bl current_time_gsi - add r0, r0, #0x3e8 - str r0, [r4, #0x2c] - mov r0, #0 - str r0, [r4, #0x24] - mov r0, #5 - str r0, [r4, #0x28] - ldmia sp!, {r4, pc} - arm_func_end StartReport - - arm_func_start SendInitPackets -SendInitPackets: ; 0x02311918 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x5c - ldr r2, _02311B80 ; =ov00_0231BF24 - mov r1, #0 - ldrb lr, [r2] - ldrb ip, [r2, #1] - add r5, sp, #4 - ldrb r8, [r2, #2] - ldrb r4, [r2, #4] - ldrb r3, [r2, #5] - ldrb r7, [r2, #3] - mov r2, #3 - mov r6, r0 - strb lr, [r5] - strb ip, [r5, #1] - strb r8, [r5, #2] - strb r4, [r5, #4] - strb r3, [r5, #5] - strb r2, [r5, #6] - strb r1, [r5, #7] - strb r7, [r5, #3] - ldr r7, [r6, #8] - sub r0, r1, #1 - mov r3, r7, lsr #0x18 - mov r2, r7, lsr #8 - mov r4, r7, lsl #8 - and r3, r3, #0xff - and r2, r2, #0xff00 - mov r7, r7, lsl #0x18 - orr r2, r3, r2 - and r4, r4, #0xff0000 - and r3, r7, #0xff000000 - orr r2, r4, r2 - orr r2, r3, r2 - str r2, [r5, #8] - ldr r2, [r6, #0xc] - strb r2, [r5, #0xd] - ldr r2, [r6, #4] - cmp r2, r0 - movne r1, #1 - strb r1, [r5, #0xe] - bl GetLocalIP_NN - mov r7, r0 - bl GetLocalIP_NN - mov r8, r0 - bl GetLocalIP_NN - mov r4, r0 - bl GetLocalIP_NN - mov r2, #0 - mov r1, r7, lsl #0x18 - and r7, r1, #0xff000000 - mov r1, r8, lsl #8 - mov r0, r0, lsr #8 - and r3, r1, #0xff0000 - mov r1, r4, lsr #0x18 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - orr r0, r3, r0 - orr r3, r7, r0 - mov r1, r3, lsr #0x18 - strb r1, [sp, #0x13] - mov r1, r3, lsr #8 - mov r0, r3, lsr #0x10 - strb r1, [sp, #0x15] - strb r0, [sp, #0x14] - ldr r1, _02311B84 ; =ov00_02328804 - add r0, sp, #0x19 - strb r3, [sp, #0x16] - strb r2, [sp, #0x17] - strb r2, [sp, #0x18] - bl strcpy - ldr r0, _02311B84 ; =ov00_02328804 - bl strlen - ldrb r1, [r5, #0xe] - add r4, r0, #0x16 - cmp r1, #0 - beq _02311A80 - ldr r0, [r6, #0x14] - cmp r0, #0 - bne _02311A80 - mov r0, #0 - strb r0, [r5, #0xc] - str r4, [sp] - ldr r1, _02311B88 ; =ov00_02329098 - ldr r0, [r6, #4] - ldr r1, [r1, #0x28] - ldr r2, _02311B8C ; =0x00006CFD - mov r3, r5 - bl SendPacket_NN -_02311A80: - ldr r0, [r6, #0x18] - cmp r0, #0 - bne _02311AB0 - mov r0, #1 - strb r0, [r5, #0xc] - str r4, [sp] - ldr r1, _02311B88 ; =ov00_02329098 - ldr r0, [r6] - ldr r1, [r1, #0x28] - ldr r2, _02311B8C ; =0x00006CFD - mov r3, r5 - bl SendPacket_NN -_02311AB0: - ldrb r0, [r5, #0xe] - cmp r0, #0 - ldrne r8, [r6, #4] - ldreq r8, [r6] - cmp r0, #0 - ldrne r0, [r6, #4] - ldreq r0, [r6] - bl GetLocalPort_NN - mov r7, r0 - mov r0, r8 - bl GetLocalPort_NN - mov r1, r7, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r1, r0, lsr #0x10 - mov r0, r1, asr #8 - strb r1, [sp, #0x18] - strb r0, [sp, #0x17] - ldr r0, [r6, #0x1c] - cmp r0, #0 - bne _02311B34 - mov r0, #2 - strb r0, [r5, #0xc] - str r4, [sp] - ldr r1, _02311B88 ; =ov00_02329098 - ldr r0, [r6] - ldr r1, [r1, #0x24] - ldr r2, _02311B8C ; =0x00006CFD - mov r3, r5 - bl SendPacket_NN -_02311B34: - ldr r0, [r6, #0x20] - cmp r0, #0 - bne _02311B64 - mov r2, #3 - strb r2, [r5, #0xc] - str r4, [sp] - ldr r1, _02311B88 ; =ov00_02329098 - ldr r0, [r6] - ldr r1, [r1, #0x20] - mov r3, r5 - rsb r2, r2, #0x6d00 - bl SendPacket_NN -_02311B64: - bl current_time_gsi - add r0, r0, #0x1f4 - str r0, [r6, #0x2c] - mov r0, #0xa - str r0, [r6, #0x28] - add sp, sp, #0x5c - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02311B80: .word ov00_0231BF24 -_02311B84: .word ov00_02328804 -_02311B88: .word ov00_02329098 -_02311B8C: .word 0x00006CFD - arm_func_end SendInitPackets - - arm_func_start SendPingPacket -SendPingPacket: ; 0x02311B90 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x50 - ldr r1, _02311CAC ; =ov00_0231BF24 - mov r2, #3 - ldrb r7, [r1] - ldrb r6, [r1, #1] - add r8, sp, #4 - ldrb r5, [r1, #2] - ldrb lr, [r1, #3] - ldrb ip, [r1, #4] - ldrb r3, [r1, #5] - mov r1, #7 - mov r4, r0 - strb r7, [r8] - strb r6, [r8, #1] - strb r5, [r8, #2] - strb lr, [r8, #3] - strb ip, [r8, #4] - strb r2, [sp, #0xa] - strb r1, [sp, #0xb] - strb r3, [r8, #5] - ldr r3, [r4, #8] - 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 r0, r1, r0 - str r0, [sp, #0xc] - ldr r0, [r4, #0x30] - add r3, sp, #4 - str r0, [sp, #0x10] - ldrh r0, [r4, #0x34] - 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, #0x14] - ldrb r0, [r4, #0x36] - mvn r1, #0 - strb r0, [sp, #0x16] - ldr r0, [r4, #0x10] - cmp r0, #2 - movne r0, #1 - moveq r0, #0 - strb r0, [sp, #0x17] - ldr r0, [r4, #4] - cmp r0, r1 - ldreq r0, [r4] - mov r1, #0x14 - str r1, [sp] - ldrh r2, [r4, #0x34] - ldr r1, [r4, #0x30] - bl SendPacket_NN - bl current_time_gsi - add r0, r0, #0x2bc - str r0, [r4, #0x2c] - mov r0, #0xc - str r0, [r4, #0x28] - ldrb r0, [r4, #0x36] - cmp r0, #0 - movne r0, #1 - strneb r0, [r4, #0x37] - add sp, sp, #0x50 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02311CAC: .word ov00_0231BF24 - arm_func_end SendPingPacket - - arm_func_start CheckNatifyStatus -CheckNatifyStatus: ; 0x02311CB0 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0xcc - mov r4, #1 - mov r5, r0 - sub r0, r4, #2 - cmp r5, r0 - beq _02311DA4 - bl current_time_gsi - ldr r2, _02311DB0 ; =ov00_02329098 - ldr r1, _02311DB4 ; =0x00002710 - ldr r2, [r2, #0x10] - sub r0, r0, r2 - cmp r0, r1 - movhs r4, #0 - bhs _02311CFC - ldr r1, _02311DB8 ; =ov00_023290C4 - mov r0, r5 - bl NatifyThink - mov r4, r0 -_02311CFC: - cmp r4, #0 - bne _02311DA4 - ldr r0, _02311DB8 ; =ov00_023290C4 - bl DetermineNatType - sub r6, sp, #0xc - ldr r5, _02311DB8 ; =ov00_023290C4 - mov r7, r0 - mov lr, r6 - mov ip, #0xd -_02311D20: - ldmia r5!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _02311D20 - ldmia r5, {r0, r1} - stmia lr, {r0, r1} - ldr r1, _02311DB0 ; =ov00_02329098 - mov r0, r7 - ldr ip, [r1, #0xc] - ldmia r6, {r1, r2, r3} - blx ip - ldr r1, _02311DB8 ; =ov00_023290C4 - ldr r2, _02311DBC ; =ov00_0231BF18 - ldr r3, [r1, #0x8c] - ldr r0, _02311DB0 ; =ov00_02329098 - str r3, [r2] - ldr r3, [r1, #0x90] - mvn r1, #0 - str r3, [r0, #8] - ldr r0, [r2, #8] - cmp r0, r1 - beq _02311D7C - bl SocketClose -_02311D7C: - ldr r0, _02311DBC ; =ov00_0231BF18 - mvn r1, #0 - str r1, [r0, #8] - ldr r0, [r0, #4] - cmp r0, r1 - beq _02311D98 - bl SocketClose -_02311D98: - ldr r0, _02311DBC ; =ov00_0231BF18 - mvn r1, #0 - str r1, [r0, #4] -_02311DA4: - mov r0, r4 - add sp, sp, #0xcc - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_02311DB0: .word ov00_02329098 -_02311DB4: .word 0x00002710 -_02311DB8: .word ov00_023290C4 -_02311DBC: .word ov00_0231BF18 - arm_func_end CheckNatifyStatus - - arm_func_start NameToIp_NN -NameToIp_NN: ; 0x02311DC0 - stmdb sp!, {r4, lr} - mov r4, r0 - bl inet_addr_gsi - mvn r1, #0 - cmp r0, r1 - ldmneia sp!, {r4, pc} - mov r0, r4 - bl Soc_GetHostByName - cmp r0, #0 - moveq r0, #0 - ldrne r0, [r0, #0xc] - ldrne r0, [r0] - ldrne r0, [r0] - ldmia sp!, {r4, pc} - arm_func_end NameToIp_NN - - arm_func_start ResolveServer_NN -ResolveServer_NN: ; 0x02311DF8 - stmdb sp!, {lr} - sub sp, sp, #0x44 - cmp r0, #0 - bne _02311E24 - ldr r2, _02311E30 ; =ov00_0231BF2C - str r1, [sp] - ldr r3, _02311E34 ; =ov00_02328804 - add r0, sp, #4 - mov r1, #0x40 - bl OS_SnPrintf - add r0, sp, #4 -_02311E24: - bl NameToIp_NN - add sp, sp, #0x44 - ldmia sp!, {pc} - .align 2, 0 -_02311E30: .word ov00_0231BF2C -_02311E34: .word ov00_02328804 - arm_func_end ResolveServer_NN - - arm_func_start ResolveServers_NN -ResolveServers_NN: ; 0x02311E38 - stmdb sp!, {r3, lr} - ldr r0, _02311ED0 ; =ov00_02329098 - ldr r1, [r0, #0x28] - cmp r1, #0 - bne _02311E60 - ldr r0, [r0, #4] - ldr r1, _02311ED4 ; =ov00_0231BF34 - bl ResolveServer_NN - ldr r1, _02311ED0 ; =ov00_02329098 - str r0, [r1, #0x28] -_02311E60: - ldr r0, _02311ED0 ; =ov00_02329098 - ldr r1, [r0, #0x24] - cmp r1, #0 - bne _02311E84 - ldr r0, [r0, #0x18] - ldr r1, _02311ED8 ; =ov00_0231BF50 - bl ResolveServer_NN - ldr r1, _02311ED0 ; =ov00_02329098 - str r0, [r1, #0x24] -_02311E84: - ldr r0, _02311ED0 ; =ov00_02329098 - ldr r1, [r0, #0x20] - cmp r1, #0 - bne _02311EA8 - ldr r0, [r0, #0x14] - ldr r1, _02311EDC ; =ov00_0231BF6C - bl ResolveServer_NN - ldr r1, _02311ED0 ; =ov00_02329098 - str r0, [r1, #0x20] -_02311EA8: - ldr r0, _02311ED0 ; =ov00_02329098 - ldr r1, [r0, #0x28] - cmp r1, #0 - ldrne r1, [r0, #0x24] - cmpne r1, #0 - ldrne r0, [r0, #0x20] - cmpne r0, #0 - moveq r0, #0 - movne r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02311ED0: .word ov00_02329098 -_02311ED4: .word ov00_0231BF34 -_02311ED8: .word ov00_0231BF50 -_02311EDC: .word ov00_0231BF6C - arm_func_end ResolveServers_NN - - arm_func_start NnBeginNegotiationWithSocket -NnBeginNegotiationWithSocket: ; 0x02311EE0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr ip, _02311FAC ; =ov00_02328800 - mov r8, r0 - ldr r0, [ip] - mov r7, r1 - cmp r0, #1 - mov r6, r2 - mov r5, r3 - movne r0, #2 - ldmneia sp!, {r4, r5, r6, r7, r8, pc} - bl ResolveServers_NN - cmp r0, #0 - moveq r0, #3 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - bl AddNegotiator - movs r4, r0 - moveq r0, #1 - ldmeqia sp!, {r4, r5, r6, r7, r8, pc} - str r8, [r4, #4] - str r6, [r4, #0xc] - str r7, [r4, #8] - ldr r1, [sp, #0x18] - str r5, [r4, #0x38] - ldr r2, [sp, #0x1c] - str r1, [r4, #0x3c] - mov r0, #2 - str r2, [r4, #0x40] - mov r1, r0 - mov r2, #0 - bl SocketCreate - str r0, [r4] - mov r0, #0 - str r0, [r4, #0x24] - strb r0, [r4, #0x36] - strb r0, [r4, #0x37] - str r0, [r4, #0x30] - strh r0, [r4, #0x34] - mov r2, #5 - str r0, [r4, #0x28] - str r2, [r4, #0x44] - ldr r1, [r4] - sub r0, r2, #6 - cmp r1, r0 - mov r0, r4 - bne _02311FA0 - bl RemoveNegotiator - mov r0, #2 - ldmia sp!, {r4, r5, r6, r7, r8, pc} -_02311FA0: - bl SendInitPackets - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02311FAC: .word ov00_02328800 - arm_func_end NnBeginNegotiationWithSocket - - arm_func_start NnCancel -NnCancel: ; 0x02311FB0 - stmdb sp!, {r4, lr} - bl FindNegotiatorForCookie - movs r4, r0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4] - mvn r1, #0 - cmp r0, r1 - beq _02311FD4 - bl SocketClose -_02311FD4: - mvn r0, #0 - str r0, [r4] - mov r0, #4 - str r0, [r4, #0x10] - ldmia sp!, {r4, pc} - arm_func_end NnCancel - - arm_func_start NegotiateThink -NegotiateThink: ; 0x02311FE8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x1c - ldr r1, _023122AC ; =ov00_02329098 - mov r2, #8 - ldr r1, [r1, #0x1c] - mov sb, r0 - str r2, [sp, #0x10] - cmp r1, #0 - beq _02312034 - ldr r0, _023122B0 ; =ov00_0231BF18 - ldr r0, [r0, #8] - bl CheckNatifyStatus - ldr r2, _023122AC ; =ov00_02329098 - ldr r1, _023122B0 ; =ov00_0231BF18 - str r0, [r2, #0x1c] - ldr r0, [r1, #4] - bl CheckNatifyStatus - ldr r1, _023122AC ; =ov00_02329098 - str r0, [r1, #0x1c] -_02312034: - cmp sb, #0 - addeq sp, sp, #0x1c - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, [sb, #0x10] - cmp r0, #4 - bne _0231205C - mov r0, sb - bl RemoveNegotiator - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_0231205C: - ldr r0, [sb] - mvn r1, #0 - cmp r0, r1 - beq _023120E4 - bl CanReceiveOnSocket - cmp r0, #0 - beq _023120E4 - ldr r6, _023122B4 ; =ov00_0232919C - add r8, sp, #0x14 - add r7, sp, #0x10 - mov r5, #0x200 - mov r4, #0 - mvn sl, #0 -_02312090: - str r8, [sp] - str r7, [sp, #4] - ldr r0, [sb] - mov r1, r6 - mov r2, r5 - mov r3, r4 - bl SocketRecvFrom - mov r1, r0 - cmp r1, sl - beq _023120E4 - mov r0, r6 - mov r2, r8 - bl NnProcessData - ldr r0, [sb, #0x10] - cmp r0, #4 - ldrne r0, [sb] - cmpne r0, sl - beq _023120E4 - bl CanReceiveOnSocket - cmp r0, #0 - bne _02312090 -_023120E4: - ldr r0, [sb, #0x10] - cmp r0, #0 - cmpne r0, #2 - bne _02312170 - bl current_time_gsi - ldr r1, [sb, #0x2c] - cmp r0, r1 - bls _02312170 - ldr r1, [sb, #0x24] - ldr r0, [sb, #0x28] - cmp r1, r0 - ble _0231214C - ldr r0, [sb, #0x10] - mov r3, #0 - cmp r0, #0 - bne _02312138 - mov r1, #2 - mov r0, sb - sub r2, r1, #3 - bl StartReport - b _02312170 -_02312138: - mov r1, #3 - mov r0, sb - sub r2, r1, #4 - bl StartReport - b _02312170 -_0231214C: - add r0, r1, #1 - str r0, [sb, #0x24] - ldr r0, [sb, #0x10] - cmp r0, #0 - mov r0, sb - bne _0231216C - bl SendInitPackets - b _02312170 -_0231216C: - bl SendPingPacket -_02312170: - ldr r0, [sb, #0x10] - cmp r0, #3 - bne _023121E8 - bl current_time_gsi - ldr r1, [sb, #0x2c] - cmp r0, r1 - bls _023121E8 - mov r0, #2 - strb r0, [sp, #9] - ldrh r1, [sb, #0x34] - sub r0, r0, #3 - add r3, sp, #8 - mov r2, r1, asr #8 - mov r1, r1, lsl #8 - and r2, r2, #0xff - and r1, r1, #0xff00 - orr r1, r2, r1 - strh r1, [sp, #0xa] - ldr r1, [sb, #0x30] - str r1, [sp, #0xc] - ldr r2, [sb, #4] - mov r1, #0 - cmp r2, r0 - bne _023121E0 - ldr r2, [sb] - mov r0, sb - bl StartReport - b _023121E8 -_023121E0: - mov r0, sb - bl StartReport -_023121E8: - ldr r0, [sb, #0x10] - cmp r0, #1 - bne _02312218 - bl current_time_gsi - ldr r1, [sb, #0x2c] - cmp r0, r1 - bls _02312218 - mov r1, #1 - mov r0, sb - sub r2, r1, #2 - mov r3, #0 - bl StartReport -_02312218: - ldr r0, [sb, #0x10] - cmp r0, #5 - addne sp, sp, #0x1c - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - bl current_time_gsi - ldr r1, [sb, #0x2c] - cmp r0, r1 - addls sp, sp, #0x1c - ldmlsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - ldr r1, [sb, #0x24] - ldr r0, [sb, #0x28] - cmp r1, r0 - ble _02312284 - ldr r0, [sb, #0x44] - ldr r1, [sb, #0x48] - ldr r3, [sb, #0x40] - ldr r4, [sb, #0x3c] - add r2, sb, #0x4c - blx r4 - ldr r1, [sb, #4] - mvn r0, #0 - cmp r1, r0 - streq r0, [sb] - ldr r0, [sb, #8] - bl NnCancel - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} -_02312284: - mov r0, sb - bl SendReportPacket - ldr r0, [sb, #0x24] - add r0, r0, #1 - str r0, [sb, #0x24] - bl current_time_gsi - add r0, r0, #0x3e8 - str r0, [sb, #0x2c] - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_023122AC: .word ov00_02329098 -_023122B0: .word ov00_0231BF18 -_023122B4: .word ov00_0232919C - arm_func_end NegotiateThink - - arm_func_start NnThink -NnThink: ; 0x023122B8 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _02312318 ; =ov00_02329098 - ldr r0, [r0] - cmp r0, #0 - beq _023122D8 - bl ArrayLength_Gsi - cmp r0, #0 - bne _023122E4 -_023122D8: - mov r0, #0 - bl NegotiateThink - ldmia sp!, {r3, r4, r5, pc} -_023122E4: - ldr r0, _02312318 ; =ov00_02329098 - ldr r0, [r0] - bl ArrayLength_Gsi - subs r5, r0, #1 - ldmmiia sp!, {r3, r4, r5, pc} - ldr r4, _02312318 ; =ov00_02329098 -_023122FC: - ldr r0, [r4] - mov r1, r5 - bl ArrayNth_Gsi - bl NegotiateThink - subs r5, r5, #1 - bpl _023122FC - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02312318: .word ov00_02329098 - arm_func_end NnThink - - arm_func_start SendConnectAck -SendConnectAck: ; 0x0231231C - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x50 - ldr r2, _023123E4 ; =ov00_0231BF24 - mov r4, #3 - ldrb r8, [r2] - ldrb r7, [r2, #1] - add r3, sp, #4 - ldrb r6, [r2, #2] - ldrb lr, [r2, #3] - ldrb ip, [r2, #4] - ldrb r5, [r2, #5] - mov r2, #6 - strb r2, [sp, #0xb] - strb r8, [r3] - strb r7, [r3, #1] - strb r6, [r3, #2] - strb lr, [r3, #3] - strb ip, [r3, #4] - strb r4, [sp, #0xa] - strb r5, [r3, #5] - ldr r5, [r0, #8] - mov r2, #0x15 - mov lr, r5, lsr #0x18 - mov ip, r5, lsr #8 - mov r4, r5, lsl #8 - mov r5, r5, lsl #0x18 - and lr, lr, #0xff - and ip, ip, #0xff00 - and r4, r4, #0xff0000 - orr ip, lr, ip - and r5, r5, #0xff000000 - orr r4, r4, ip - orr r4, r5, r4 - str r4, [sp, #0xc] - ldr ip, [r0, #0xc] - strb ip, [sp, #0x11] - ldrh lr, [r1, #2] - str r2, [sp] - mov ip, lr, asr #8 - mov r2, lr, lsl #8 - and ip, ip, #0xff - and r2, r2, #0xff00 - orr r2, ip, r2 - mov r2, r2, lsl #0x10 - ldr r0, [r0] - ldr r1, [r1, #4] - mov r2, r2, lsr #0x10 - bl SendPacket_NN - add sp, sp, #0x50 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_023123E4: .word ov00_0231BF24 - arm_func_end SendConnectAck - - arm_func_start ProcessConnectPacket -ProcessConnectPacket: ; 0x023123E8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - ldrb r1, [r5, #0x13] - mov r4, r0 - cmp r1, #0 - bne _02312408 - mov r1, r2 - bl SendConnectAck -_02312408: - ldr r0, [r4, #0x10] - cmp r0, #2 - ldmgeia sp!, {r3, r4, r5, pc} - ldrb r0, [r5, #0x13] - cmp r0, #0 - beq _0231244C - mov r1, #4 - cmp r0, #1 - moveq r1, #1 - beq _02312438 - cmp r0, #2 - moveq r1, #2 -_02312438: - mov r0, r4 - mvn r2, #0 - mov r3, #0 - bl StartReport - ldmia sp!, {r3, r4, r5, pc} -_0231244C: - ldr r1, [r5, #0xc] - mov r0, #2 - str r1, [r4, #0x30] - ldrh r2, [r5, #0x10] - mov r1, #0 - mov r3, r2, asr #8 - mov r2, r2, lsl #8 - and r3, r3, #0xff - and r2, r2, #0xff00 - orr r2, r3, r2 - strh r2, [r4, #0x34] - str r1, [r4, #0x24] - str r0, [r4, #0x10] - ldr r1, [r4, #0x40] - ldr r2, [r4, #0x38] - blx r2 - mov r0, r4 - bl SendPingPacket - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ProcessConnectPacket - - arm_func_start ProcessPingPacket -ProcessPingPacket: ; 0x02312498 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r3, [r4, #0x10] - cmp r3, #2 - ldmltia sp!, {r4, pc} - ldr ip, [r2, #4] - mov r3, #1 - str ip, [r4, #0x30] - ldrh r2, [r2, #2] - mov ip, r2, asr #8 - mov r2, r2, lsl #8 - and ip, ip, #0xff - and r2, r2, #0xff00 - orr r2, ip, r2 - strh r2, [r4, #0x34] - strb r3, [r4, #0x36] - ldrb r2, [r1, #0x12] - cmp r2, #0 - bne _023124EC - bl SendPingPacket - ldmia sp!, {r4, pc} -_023124EC: - ldr r2, [r4, #0x10] - cmp r2, #2 - bne _02312524 - ldrb r1, [r4, #0x37] - cmp r1, #0 - bne _02312508 - bl SendPingPacket -_02312508: - mov r0, #3 - str r0, [r4, #0x10] - bl current_time_gsi - add r0, r0, #0x388 - add r0, r0, #0x1000 - str r0, [r4, #0x2c] - ldmia sp!, {r4, pc} -_02312524: - ldrb r1, [r1, #0x13] - cmp r1, #0 - ldmneia sp!, {r4, pc} - bl SendPingPacket - ldmia sp!, {r4, pc} - arm_func_end ProcessPingPacket - - arm_func_start ProcessInitPacket -ProcessInitPacket: ; 0x02312538 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r3, r1 - ldrb r1, [r3, #7] - mov r4, r0 - cmp r1, #1 - beq _0231256C - cmp r1, #2 - beq _02312608 - cmp r1, #0xe - beq _0231264C - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_0231256C: - ldrb r0, [r3, #0xc] - cmp r0, #3 - addhi sp, sp, #4 - ldmhiia sp!, {r3, r4, pc} - add r0, r4, r0, lsl #2 - mov r2, #1 - str r2, [r0, #0x14] - ldr r0, [r4, #0x10] - cmp r0, #0 - addne sp, sp, #4 - ldmneia sp!, {r3, r4, pc} - ldr r0, [r4, #0x18] - cmp r0, #0 - ldrne r0, [r4, #0x1c] - cmpne r0, #0 - ldrne r0, [r4, #0x20] - cmpne r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} - ldr r1, [r4, #4] - sub r0, r2, #2 - cmp r1, r0 - beq _023125D8 - ldr r0, [r4, #0x14] - cmp r0, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, pc} -_023125D8: - mov r0, #1 - str r0, [r4, #0x10] - bl current_time_gsi - add r0, r0, #0x710 - add r0, r0, #0x2000 - str r0, [r4, #0x2c] - ldr r0, [r4, #0x10] - ldr r1, [r4, #0x40] - ldr r2, [r4, #0x38] - blx r2 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_02312608: - mov r0, #3 - strb r0, [r3, #7] - ldrh r0, [r2, #2] - mov ip, #0x15 - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - str ip, [sp] - orr r0, r1, r0 - mov ip, r0, lsl #0x10 - ldr r1, [r2, #4] - ldr r0, [r4] - mov r2, ip, lsr #0x10 - bl SendPacket_NN - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} -_0231264C: - mov r0, #6 - str r0, [r4, #0x10] - ldr r0, [r4, #0x44] - ldr r1, [r4, #0x48] - ldr r3, [r4, #0x40] - ldr ip, [r4, #0x3c] - add r2, r4, #0x4c - blx ip - ldr r1, [r4, #4] - mvn r0, #0 - cmp r1, r0 - streq r0, [r4] - ldr r0, [r4, #8] - bl NnCancel - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end ProcessInitPacket - - arm_func_start NnProcessData -NnProcessData: ; 0x0231268C - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x4c - mov r6, r0 - mov r7, r1 - mov r5, r2 - bl CheckMagic_NN - cmp r0, #0 - addeq sp, sp, #0x4c - ldmeqia sp!, {r4, r5, r6, r7, pc} - ldrb r4, [r6, #7] - cmp r4, #5 - cmpne r4, #7 - bne _0231275C - cmp r7, #0x14 - addlt sp, sp, #0x4c - ldmltia sp!, {r4, r5, r6, r7, pc} - add r3, sp, #0 - mov r2, #0xa -_023126D4: - 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 _023126D4 - ldr r3, [sp, #8] - 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 r0, r1, r0 - bl FindNegotiatorForCookie - cmp r0, #0 - addeq sp, sp, #0x4c - ldmeqia sp!, {r4, r5, r6, r7, pc} - cmp r4, #5 - add r1, sp, #0 - mov r2, r5 - bne _02312750 - bl ProcessConnectPacket - add sp, sp, #0x4c - ldmia sp!, {r4, r5, r6, r7, pc} -_02312750: - bl ProcessPingPacket - add sp, sp, #0x4c - ldmia sp!, {r4, r5, r6, r7, pc} -_0231275C: - cmp r7, #0x15 - addlt sp, sp, #0x4c - ldmltia sp!, {r4, r5, r6, r7, pc} - add r3, sp, #0 - mov r2, #0xa -_02312770: - 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 _02312770 - ldrb r0, [r6] - strb r0, [r3] - ldr r3, [sp, #8] - 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 r0, r1, r0 - bl FindNegotiatorForCookie - cmp r0, #0 - addeq sp, sp, #0x4c - ldmeqia sp!, {r4, r5, r6, r7, pc} - add r1, sp, #0 - mov r2, r5 - bl ProcessInitPacket - add sp, sp, #0x4c - ldmia sp!, {r4, r5, r6, r7, pc} - arm_func_end NnProcessData - - arm_func_start qr2_init_socketa -qr2_init_socketa: ; 0x023127EC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x40 - movs r5, r0 - mov r8, r1 - mov r4, r2 - mov r7, r3 - ldreq r6, _02312998 ; =ov00_0231BF8C - beq _0231281C - ldr r0, _0231299C ; =0x00000D94 - bl gsimalloc - mov r6, r0 - str r0, [r5] -_0231281C: - bl current_time_gsi - bl srand - mov r1, r7 - add r0, r6, #4 - bl strcpy - ldr r1, [sp, #0x58] - add r0, r6, #0x44 - bl strcpy - str r4, [r6, #0xc0] - mov r5, #0 - str r5, [r6, #0xac] - str r5, [r6, #0xb0] - str r8, [r6] - mov r1, #1 - str r1, [r6, #0xb8] - ldr r0, [sp, #0x7c] - ldr r1, [sp, #0x64] - str r0, [r6, #0x10c] - str r1, [r6, #0x88] - ldr r0, [sp, #0x68] - ldr r1, [sp, #0x6c] - str r0, [r6, #0x8c] - str r1, [r6, #0x90] - ldr r0, [sp, #0x70] - ldr r1, [sp, #0x74] - str r0, [r6, #0x94] - ldr r0, [sp, #0x78] - str r1, [r6, #0x98] - str r0, [r6, #0x9c] - str r5, [r6, #0xa0] - str r5, [r6, #0xa4] - ldr r0, [sp, #0x5c] - str r5, [r6, #0xd4] - str r0, [r6, #0xbc] - ldr r0, [sp, #0x60] - str r5, [r6, #0xc4] - str r0, [r6, #0xc8] - str r5, [r6, #0x104] - add r0, r6, #0x100 - strh r5, [r0, #8] - str r5, [r6, #0xa8] - str r5, [r6, #0xb4] - ldr r4, _023129A0 ; =0x80808081 - strb r5, [r6, #0x110] - mov r8, #0xff -_023128D0: - bl rand - smull r1, r2, r4, r0 - add r3, r6, r5 - add r5, r5, #1 - add r2, r0, r2 - mov r1, r0, lsr #0x1f - add r2, r1, r2, asr #7 - smull r1, r2, r8, r2 - sub r2, r0, r1 - strb r2, [r3, #0x84] - cmp r5, #4 - blt _023128D0 - mov r2, #0 - mvn r1, #0 -_02312908: - add r0, r6, r2, lsl #2 - add r2, r2, #1 - str r1, [r0, #0xd8] - cmp r2, #0xa - blt _02312908 - mov r1, #0 - add r0, r6, #0x114 - mov r2, #0xc80 - str r1, [r6, #0x100] - bl memset - bl enum_local_ips - ldr r0, [sp, #0x5c] - cmp r0, #0 - beq _02312980 - ldr r0, _023129A4 ; =ov00_023293B4 - ldrsb r4, [r0] - cmp r4, #0 - bne _02312960 - ldr r1, _023129A8 ; =ov00_0231CD20 - add r0, sp, #0 - mov r2, r7 - bl OS_VsPrintf -_02312960: - cmp r4, #0 - ldrne r0, _023129A4 ; =ov00_023293B4 - ldr r1, _023129AC ; =0x00006CFC - addeq r0, sp, #0 - add r2, r6, #0xcc - mov r3, #0 - bl get_sockaddrin__02313638 - b _02312984 -_02312980: - mov r0, #1 -_02312984: - cmp r0, #0 - moveq r0, #3 - movne r0, #0 - add sp, sp, #0x40 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02312998: .word ov00_0231BF8C -_0231299C: .word 0x00000D94 -_023129A0: .word 0x80808081 -_023129A4: .word ov00_023293B4 -_023129A8: .word ov00_0231CD20 -_023129AC: .word 0x00006CFC - arm_func_end qr2_init_socketa - - arm_func_start qr2_register_natneg_callback -qr2_register_natneg_callback: ; 0x023129B0 - cmp r0, #0 - ldreq r0, _023129C4 ; =ov00_0231BF88 - ldreq r0, [r0] - str r1, [r0, #0xa0] - bx lr - .align 2, 0 -_023129C4: .word ov00_0231BF88 - arm_func_end qr2_register_natneg_callback - - arm_func_start qr2_register_clientmessage_callback -qr2_register_clientmessage_callback: ; 0x023129C8 - cmp r0, #0 - ldreq r0, _023129DC ; =ov00_0231BF88 - ldreq r0, [r0] - str r1, [r0, #0xa4] - bx lr - .align 2, 0 -_023129DC: .word ov00_0231BF88 - arm_func_end qr2_register_clientmessage_callback - - arm_func_start qr2_register_publicaddress_callback -qr2_register_publicaddress_callback: ; 0x023129E0 - cmp r0, #0 - ldreq r0, _023129F4 ; =ov00_0231BF88 - ldreq r0, [r0] - str r1, [r0, #0xa8] - bx lr - .align 2, 0 -_023129F4: .word ov00_0231BF88 - arm_func_end qr2_register_publicaddress_callback - - arm_func_start qr2_think -qr2_think: ; 0x023129F8 - stmdb sp!, {r4, lr} - movs r4, r0 - ldreq r0, _02312A30 ; =ov00_0231BF88 - ldreq r4, [r0] - ldr r0, [r4, #0xbc] - cmp r0, #0 - beq _02312A1C - mov r0, r4 - bl qr2_check_send_heartbeat -_02312A1C: - mov r0, r4 - bl qr2_check_queries - mov r0, r4 - bl qr2_expire_ip_verify - ldmia sp!, {r4, pc} - .align 2, 0 -_02312A30: .word ov00_0231BF88 - arm_func_end qr2_think - - arm_func_start qr2_check_queries -qr2_check_queries: ; 0x02312A34 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - mov r1, #8 - mov sl, r0 - str r1, [sp, #8] - ldr r0, [sl, #0xc4] - cmp r0, #0 - addeq sp, sp, #0x14 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [sl] - bl CanReceiveOnSocket - cmp r0, #0 - addeq sp, sp, #0x14 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r5, #0 - ldr r7, _02312ADC ; =ov00_023293F4 - add sb, sp, #0xc - add r8, sp, #8 - mov r6, #0xff - mov fp, r5 - mvn r4, #0 -_02312A88: - str sb, [sp] - str r8, [sp, #4] - ldr r0, [sl] - mov r1, r7 - mov r2, r6 - mov r3, fp - bl SocketRecvFrom - mov r2, r0 - cmp r2, r4 - beq _02312AC4 - mov r0, sl - mov r1, r7 - mov r3, sb - strb r5, [r7, r2] - bl qr2_parse_querya -_02312AC4: - ldr r0, [sl] - bl CanReceiveOnSocket - cmp r0, #0 - bne _02312A88 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02312ADC: .word ov00_023293F4 - arm_func_end qr2_check_queries - - arm_func_start qr2_check_send_heartbeat -qr2_check_send_heartbeat: ; 0x02312AE0 - stmdb sp!, {r4, lr} - mov r4, r0 - bl current_time_gsi - ldr r2, [r4] - mvn r1, #0 - cmp r2, r1 - ldmeqia sp!, {r4, pc} - ldr r3, [r4, #0xb8] - cmp r3, #0 - ble _02312B60 - ldr r2, [r4, #0xac] - ldr r1, _02312BE4 ; =0x00002710 - sub r2, r0, r2 - cmp r2, r1 - bls _02312B60 - cmp r3, #4 - blt _02312B44 - mov r0, #0 - str r0, [r4, #0xb8] - ldr r2, [r4, #0x10c] - ldr r3, [r4, #0x9c] - ldr r1, _02312BE8 ; =ov00_0231CD40 - mov r0, #5 - blx r3 - ldmia sp!, {r4, pc} -_02312B44: - mov r0, r4 - mov r1, #3 - bl send_heartbeat - ldr r0, [r4, #0xb8] - add r0, r0, #1 - str r0, [r4, #0xb8] - b _02312BC0 -_02312B60: - ldr r1, [r4, #0xb4] - cmp r1, #0 - beq _02312B90 - ldr r2, [r4, #0xac] - ldr r1, _02312BE4 ; =0x00002710 - sub r2, r0, r2 - cmp r2, r1 - bls _02312B90 - mov r0, r4 - mov r1, #1 - bl send_heartbeat - b _02312BC0 -_02312B90: - ldr r3, [r4, #0xac] - ldr r1, _02312BEC ; =0x0000EA60 - sub r2, r0, r3 - cmp r2, r1 - bhi _02312BB4 - cmp r3, #0 - beq _02312BB4 - cmp r0, r3 - bhs _02312BC0 -_02312BB4: - mov r0, r4 - mov r1, #0 - bl send_heartbeat -_02312BC0: - bl current_time_gsi - ldr r2, [r4, #0xb0] - ldr r1, _02312BF0 ; =0x00004E20 - sub r0, r0, r2 - cmp r0, r1 - ldmlsia sp!, {r4, pc} - mov r0, r4 - bl send_keepalive - ldmia sp!, {r4, pc} - .align 2, 0 -_02312BE4: .word 0x00002710 -_02312BE8: .word ov00_0231CD40 -_02312BEC: .word 0x0000EA60 -_02312BF0: .word 0x00004E20 - arm_func_end qr2_check_send_heartbeat - - arm_func_start qr2_send_statechanged -qr2_send_statechanged: ; 0x02312BF4 - stmdb sp!, {r4, lr} - movs r4, r0 - ldreq r0, _02312C48 ; =ov00_0231BF88 - ldreq r4, [r0] - ldr r0, [r4, #0xbc] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - bl current_time_gsi - ldr r2, [r4, #0xac] - ldr r1, _02312C4C ; =0x00002710 - sub r0, r0, r2 - cmp r0, r1 - movlo r0, #1 - strlo r0, [r4, #0xb4] - ldmloia sp!, {r4, pc} - mov r0, r4 - mov r1, #1 - bl send_heartbeat - mov r0, #0 - str r0, [r4, #0xb4] - ldmia sp!, {r4, pc} - .align 2, 0 -_02312C48: .word ov00_0231BF88 -_02312C4C: .word 0x00002710 - arm_func_end qr2_send_statechanged - - arm_func_start qr2_shutdown -qr2_shutdown: ; 0x02312C50 - stmdb sp!, {r4, lr} - movs r4, r0 - ldreq r0, _02312CCC ; =ov00_0231BF88 - ldreq r4, [r0] - ldr r0, [r4, #0xbc] - cmp r0, #0 - beq _02312C78 - mov r0, r4 - mov r1, #2 - bl send_heartbeat -_02312C78: - ldr r0, [r4] - mvn r1, #0 - cmp r0, r1 - ldrne r1, [r4, #0xc4] - cmpne r1, #0 - beq _02312C94 - bl SocketClose -_02312C94: - mvn r0, #0 - str r0, [r4] - mov r0, #0 - str r0, [r4, #0xac] - ldr r0, [r4, #0xc4] - cmp r0, #0 - beq _02312CB4 - bl SocketShutDown_Gsi -_02312CB4: - ldr r0, _02312CD0 ; =ov00_0231BF8C - cmp r4, r0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl gsifree - ldmia sp!, {r4, pc} - .align 2, 0 -_02312CCC: .word ov00_0231BF88 -_02312CD0: .word ov00_0231BF8C - arm_func_end qr2_shutdown - - arm_func_start qr2_keybuffer_add -qr2_keybuffer_add: ; 0x02312CD4 - ldr r3, [r0, #0x100] - cmp r3, #0xfe - movge r0, #0 - bxge lr - cmp r1, #1 - blt _02312CF4 - cmp r1, #0xfe - ble _02312CFC -_02312CF4: - mov r0, #0 - bx lr -_02312CFC: - add r2, r3, #1 - str r2, [r0, #0x100] - strb r1, [r0, r3] - mov r0, #1 - bx lr - arm_func_end qr2_keybuffer_add - - arm_func_start qr2_buffer_add_int -qr2_buffer_add_int: ; 0x02312D10 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x14 - mov r2, r1 - mov r4, r0 - ldr r1, _02312D40 ; =ov00_0231CD78 - add r0, sp, #0 - bl OS_VsPrintf - add r1, sp, #0 - mov r0, r4 - bl Qr2_Buffer_AddA - add sp, sp, #0x14 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_02312D40: .word ov00_0231CD78 - arm_func_end qr2_buffer_add_int - - arm_func_start Qr2_Buffer_AddA -Qr2_Buffer_AddA: ; 0x02312D44 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r1 - mov r4, r0 - mov r0, r6 - bl strlen - ldr r3, [r4, #0x578] - ldr r1, _02312DAC ; =0x00000578 - add r5, r0, #1 - sub r0, r1, r3 - cmp r5, r0 - movgt r5, r0 - cmp r5, #0 - movle r0, #0 - ldmleia sp!, {r4, r5, r6, pc} - mov r1, r6 - mov r2, r5 - add r0, r4, r3 - bl memcpy - ldr r0, [r4, #0x578] - mov r1, #0 - add r0, r0, r5 - str r0, [r4, #0x578] - sub r0, r0, #1 - strb r1, [r4, r0] - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02312DAC: .word 0x00000578 - arm_func_end Qr2_Buffer_AddA - - arm_func_start enum_local_ips -enum_local_ips: ; 0x02312DB0 - stmdb sp!, {r4, r5, r6, lr} - bl getlocalhost_gsi - cmp r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r1, _02312E1C ; =ov00_0232939C - mov r6, #0 - ldr ip, _02312E20 ; =ov00_023293A0 - str r6, [r1] -_02312DD0: - ldr r2, [r0, #0xc] - mov r5, r6, lsl #2 - ldr r4, [r2, r6, lsl #2] - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldrb r3, [r4] - ldrb r2, [r4, #1] - add r6, r6, #1 - add lr, ip, r5 - strb r3, [ip, r5] - strb r2, [lr, #1] - ldrb r3, [r4, #2] - ldrb r2, [r4, #3] - cmp r6, #5 - strb r3, [lr, #2] - strb r2, [lr, #3] - str r6, [r1] - blt _02312DD0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02312E1C: .word ov00_0232939C -_02312E20: .word ov00_023293A0 - arm_func_end enum_local_ips - - arm_func_start get_sockaddrin__02313638 -get_sockaddrin__02313638: ; 0x02312E24 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 - mov r4, r1, asr #8 - mov r1, r1, lsl #8 - mov r6, r2 - mov r5, #2 - and r2, r4, #0xff - and r1, r1, #0xff00 - strb r5, [r6, #1] - orr r1, r2, r1 - strh r1, [r6, #2] - mov r4, #0 - movs r7, r0 - mov r5, r3 - streq r4, [r6, #4] - beq _02312E70 - bl inet_addr_gsi - str r0, [r6, #4] -_02312E70: - ldr r1, [r6, #4] - mvn r0, #0 - cmp r1, r0 - bne _02312EB8 - ldr r1, _02312EC8 ; =ov00_0231CD7C - mov r0, r7 - bl strcmp - cmp r0, #0 - beq _02312EB8 - mov r0, r7 - bl Soc_GetHostByName - movs r4, r0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, [r4, #0xc] - ldr r0, [r0] - ldr r0, [r0] - str r0, [r6, #4] -_02312EB8: - cmp r5, #0 - strne r4, [r5] - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02312EC8: .word ov00_0231CD7C - arm_func_end get_sockaddrin__02313638 - - arm_func_start swap_byte_qr2 -swap_byte_qr2: ; 0x02312ECC - ldrb r3, [r0] - ldrb r2, [r1] - strb r2, [r0] - strb r3, [r1] - bx lr - arm_func_end swap_byte_qr2 - - arm_func_start encode_ct -encode_ct: ; 0x02312EE0 - cmp r0, #0x1a - addlo r0, r0, #0x41 - andlo r0, r0, #0xff - bxlo lr - cmp r0, #0x34 - addlo r0, r0, #0x47 - andlo r0, r0, #0xff - bxlo lr - cmp r0, #0x3e - sublo r0, r0, #4 - andlo r0, r0, #0xff - bxlo lr - moveq r0, #0x2b - bxeq lr - cmp r0, #0x3f - moveq r0, #0x2f - movne r0, #0 - bx lr - arm_func_end encode_ct - - arm_func_start gs_encode -gs_encode: ; 0x02312F28 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - mov r7, r1 - mov r8, r0 - mov r6, r2 - cmp r7, #0 - mov r4, #0 - ble _02312FDC -_02312F48: - mov r2, #0 - add r3, sp, #4 - mov r0, r2 -_02312F54: - cmp r4, r7 - ldrltb r1, [r8], #1 - add r2, r2, #1 - add r4, r4, #1 - strltb r1, [r3] - strgeb r0, [r3] - cmp r2, #2 - add r3, r3, #1 - ble _02312F54 - ldrb r0, [sp, #4] - ldrb r5, [sp, #5] - ldrb r2, [sp, #6] - mov r3, r0, lsl #0x1e - mov r1, r5, asr #4 - add ip, r1, r3, lsr #26 - and r1, r2, #0x3f - mov r3, r5, lsl #0x1c - mov r2, r2, asr #6 - mov r0, r0, asr #2 - add r2, r2, r3, lsr #26 - add r5, sp, #0 - strb r0, [sp] - strb ip, [sp, #1] - strb r2, [sp, #2] - strb r1, [sp, #3] - mov sb, #0 -_02312FBC: - ldrb r0, [r5], #1 - bl encode_ct - add sb, sb, #1 - cmp sb, #3 - strb r0, [r6], #1 - ble _02312FBC - cmp r4, r7 - blt _02312F48 -_02312FDC: - mov r0, #0 - strb r0, [r6] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end gs_encode - - arm_func_start gs_encrypt -gs_encrypt: ; 0x02312FEC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x104 - str r1, [sp] - add r4, sp, #4 - mov sl, r0 - mov sb, r2 - mov r8, r3 - mov r1, #0 -_0231300C: - add r0, r1, #1 - mov r0, r0, lsl #0x10 - strb r1, [r4], #1 - mov r1, r0, asr #0x10 - cmp r1, #0x100 - blt _0231300C - mov r4, #0 - add r6, sp, #4 - mov r5, r4 - mov r7, r4 - mov fp, r6 -_02313038: - ldrb r3, [r6] - ldrb r2, [sl, r4] - ldr r1, [sp] - add r0, r4, #1 - add r2, r3, r2 - add r2, r5, r2 - mov r3, r2, lsr #0x1f - rsb r2, r3, r2, lsl #24 - add r2, r3, r2, ror #24 - and r5, r2, #0xff - bl _s32_div_f - and r4, r1, #0xff - mov r0, r6 - add r1, fp, r5 - bl swap_byte_qr2 - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #0x100 - add r6, r6, #1 - blt _02313038 - mov r6, #0 - cmp r8, #0 - mov r7, r6 - mov r5, r6 - addle sp, sp, #0x104 - ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r4, sp, #4 -_023130A8: - ldrb r0, [sb, r5] - add r0, r6, r0 - add r0, r0, #1 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #24 - add r0, r1, r0, ror #24 - and r6, r0, #0xff - ldrb r1, [r4, r6] - add r0, r4, r6 - add r1, r1, r7 - mov r2, r1, lsr #0x1f - rsb r1, r2, r1, lsl #24 - add r1, r2, r1, ror #24 - and r7, r1, #0xff - add r1, r4, r7 - bl swap_byte_qr2 - ldrb r3, [r4, r6] - ldrb r1, [r4, r7] - add r0, r5, #1 - mov r2, r0, lsl #0x10 - add r0, r3, r1 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #24 - add r0, r1, r0, ror #24 - and r0, r0, #0xff - ldrb r1, [sb, r5] - ldrb r0, [r4, r0] - cmp r8, r2, asr #16 - eor r0, r1, r0 - strb r0, [sb, r5] - mov r5, r2, asr #0x10 - bgt _023130A8 - add sp, sp, #0x104 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end gs_encrypt - - arm_func_start qr_add_packet_header -qr_add_packet_header: ; 0x02313130 - strb r1, [r0] - ldrb ip, [r2] - ldrb r3, [r2, #1] - mov r1, #5 - strb ip, [r0, #1] - strb r3, [r0, #2] - ldrb r3, [r2, #2] - ldrb r2, [r2, #3] - strb r3, [r0, #3] - strb r2, [r0, #4] - str r1, [r0, #0x578] - bx lr - arm_func_end qr_add_packet_header - - arm_func_start compute_challenge_response -compute_challenge_response: ; 0x02313160 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x44 - mov r5, r3 - cmp r5, #1 - mov r6, r0 - mov r4, r1 - addlt sp, sp, #0x44 - ldmltia sp!, {r3, r4, r5, r6, pc} - cmp r5, #0x41 - addgt sp, sp, #0x44 - ldmgtia sp!, {r3, r4, r5, r6, pc} - sub r0, r5, #1 - ldrsb r0, [r2, r0] - cmp r0, #0 - addne sp, sp, #0x44 - ldmneia sp!, {r3, r4, r5, r6, pc} - add r0, sp, #0 - mov r1, r2 - bl strcpy - add r0, r6, #0x44 - bl strlen - mov r1, r0 - add r2, sp, #0 - add r0, r6, #0x44 - sub r3, r5, #1 - bl gs_encrypt - ldr r2, [r4, #0x578] - sub r1, r5, #1 - add r0, sp, #0 - add r2, r4, r2 - bl gs_encode - ldr r0, [r4, #0x578] - add r0, r4, r0 - bl strlen - ldr r1, [r4, #0x578] - add r0, r0, #1 - add r0, r1, r0 - str r0, [r4, #0x578] - add sp, sp, #0x44 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end compute_challenge_response - - arm_func_start handle_public_address -handle_public_address: ; 0x02313200 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - mov r0, r1 - ldr r1, _023132AC ; =ov00_0231CD8C - add r2, sp, #4 - add r3, sp, #0 - bl Std_TsScanf - ldr r0, [sp, #4] - ldr lr, [sp] - 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 r1, r1, #0xff00 - orr r1, r2, r1 - and r3, r3, #0xff0000 - mov r0, lr, lsl #0x10 - and r2, ip, #0xff000000 - orr r1, r3, r1 - orrs r2, r2, r1 - mov r1, r0, lsr #0x10 - str r2, [sp, #4] - cmpne r1, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0x104] - cmp r0, r2 - addeq r0, r4, #0x100 - ldreqh r0, [r0, #8] - cmpeq r0, r1 - addeq sp, sp, #8 - ldmeqia sp!, {r4, pc} - str r2, [r4, #0x104] - add r0, r4, #0x100 - strh r1, [r0, #8] - ldr r0, [sp, #4] - ldr r2, [r4, #0x10c] - ldr r3, [r4, #0xa8] - blx r3 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_023132AC: .word ov00_0231CD8C - arm_func_end handle_public_address - - arm_func_start qr_build_partial_query_reply -qr_build_partial_query_reply: ; 0x023132B0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10c - movs fp, r3 - mov r3, #0 - ldr r7, [sp, #0x130] - str r3, [sp, #0x108] - mov sl, r0 - mov sb, r1 - mov r8, r2 - addeq sp, sp, #0x10c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - sub r0, r8, #1 - cmp r0, #1 - bhi _02313360 - ldr r1, [sb, #0x578] - ldr r0, _02313504 ; =0x00000578 - sub r0, r0, r1 - cmp r0, #2 - addlo sp, sp, #0x10c - ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sl, #0x10c] - ldr r2, [sl, #0x98] - mov r0, r8 - blx r2 - str r0, [sp] - 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 - strh r0, [sp, #4] - add r0, sp, #4 - ldrb r1, [r0] - ldr r2, [sb, #0x578] - ldrb r0, [r0, #1] - add r3, sb, r2 - strb r1, [sb, r2] - strb r0, [r3, #1] - ldr r0, [sb, #0x578] - add r0, r0, #2 - str r0, [sb, #0x578] - b _02313368 -_02313360: - mov r0, #1 - str r0, [sp] -_02313368: - cmp fp, #0xff - bne _02313440 - ldr r2, [sl, #0x10c] - ldr r3, [sl, #0x94] - add r1, sp, #8 - mov r0, r8 - blx r3 - ldr r0, [sp, #0x108] - mov r5, #0 - cmp r0, #0 - ble _02313404 - ldr fp, _02313508 ; =ov00_0231CD98 - ldr r4, _0231350C ; =ov00_0231CF68 - add r7, sp, #8 -_023133A0: - ldrb r0, [r7] - ldr r1, [r4, r0, lsl #2] - mov r0, sb - cmp r1, #0 - moveq r1, fp - bl Qr2_Buffer_AddA - cmp r8, #0 - bne _023133F0 - ldrb r0, [r7] - ldr r2, [sl, #0x10c] - ldr r3, [sl, #0x88] - mov r1, sb - ldr r6, [sb, #0x578] - blx r3 - ldr r0, [sb, #0x578] - cmp r6, r0 - bne _023133F0 - ldr r1, _02313510 ; =ov00_0231CDA0 - mov r0, sb - bl Qr2_Buffer_AddA -_023133F0: - ldr r0, [sp, #0x108] - add r5, r5, #1 - cmp r5, r0 - add r7, r7, #1 - blt _023133A0 -_02313404: - ldr r1, [sb, #0x578] - ldr r0, _02313504 ; =0x00000578 - sub r0, r0, r1 - cmp r0, #1 - addlt sp, sp, #0x10c - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, r1, #1 - str r0, [sb, #0x578] - mov r0, #0 - strb r0, [sb, r1] - ldr fp, [sp, #0x108] - cmp r8, #0 - add r7, sp, #8 - addeq sp, sp, #0x10c - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02313440: - ldr r0, [sp] - mov r4, #0 - cmp r0, #0 - addle sp, sp, #0x10c - ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02313454: - mov r5, #0 - cmp fp, #0 - ble _023134EC -_02313460: - cmp r8, #0 - ldr r6, [sb, #0x578] - bne _02313484 - ldrb r0, [r7, r5] - ldr r2, [sl, #0x10c] - ldr r3, [sl, #0x88] - mov r1, sb - blx r3 - b _023134C8 -_02313484: - cmp r8, #1 - bne _023134A8 - ldrb r0, [r7, r5] - ldr r3, [sl, #0x10c] - ldr ip, [sl, #0x8c] - mov r1, r4 - mov r2, sb - blx ip - b _023134C8 -_023134A8: - cmp r8, #2 - bne _023134C8 - ldrb r0, [r7, r5] - ldr r3, [sl, #0x10c] - ldr ip, [sl, #0x90] - mov r1, r4 - mov r2, sb - blx ip -_023134C8: - ldr r0, [sb, #0x578] - cmp r6, r0 - bne _023134E0 - ldr r1, _02313510 ; =ov00_0231CDA0 - mov r0, sb - bl Qr2_Buffer_AddA -_023134E0: - add r5, r5, #1 - cmp r5, fp - blt _02313460 -_023134EC: - ldr r0, [sp] - add r4, r4, #1 - cmp r4, r0 - blt _02313454 - add sp, sp, #0x10c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02313504: .word 0x00000578 -_02313508: .word ov00_0231CD98 -_0231350C: .word ov00_0231CF68 -_02313510: .word ov00_0231CDA0 - arm_func_end qr_build_partial_query_reply - - arm_func_start qr_build_query_reply -qr_build_query_reply: ; 0x02313514 - stmdb sp!, {r3, r4, r5, lr} - str r3, [sp] - mov r3, r2 - mov r2, #0 - mov r5, r0 - mov r4, r1 - bl qr_build_partial_query_reply - ldr ip, [sp, #0x14] - ldr r3, [sp, #0x10] - mov r0, r5 - mov r1, r4 - mov r2, #1 - str ip, [sp] - bl qr_build_partial_query_reply - ldr r0, [sp, #0x1c] - ldr r3, [sp, #0x18] - str r0, [sp] - mov r0, r5 - mov r1, r4 - mov r2, #2 - bl qr_build_partial_query_reply - ldmia sp!, {r3, r4, r5, pc} - arm_func_end qr_build_query_reply - - arm_func_start qr_build_split_query_reply -qr_build_split_query_reply: ; 0x0231356C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r8, r2 - ldr r2, [r8] - mov sl, r0 - cmp r2, #3 - mov sb, r1 - movge r0, #0 - ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sb, #0x578] - ldr r0, _02313814 ; =0x00000578 - sub r0, r0, r1 - cmp r0, #0x20 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _02313818 ; =ov00_0231CDA4 - mov r0, sb - bl Qr2_Buffer_AddA - ldr r0, [sb, #0x578] - str r0, [sp] - add r0, r0, #1 - str r0, [sb, #0x578] - ldr r1, [r8, #4] - add r0, r1, #1 - str r0, [r8, #4] - ldr r0, [sp] - strb r1, [sb, r0] - ldr r0, [r8] - cmp r0, #3 - bge _023137F8 -_023135E0: - ldr r0, [r8, #0x114] - cmp r0, #0 - bne _02313600 - ldr r0, [r8] - ldr r2, [sl, #0x10c] - ldr r3, [sl, #0x94] - add r1, r8, #0x14 - blx r3 -_02313600: - ldr r0, [r8, #0xc] - cmp r0, #0 - bne _02313628 - ldr r0, [r8] - cmp r0, #0 - beq _02313628 - ldr r1, [sl, #0x10c] - ldr r2, [sl, #0x98] - blx r2 - str r0, [r8, #0xc] -_02313628: - ldr r1, [sb, #0x578] - ldr r4, _02313814 ; =0x00000578 - sub r0, r4, r1 - cmp r0, #0x64 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, r1, #1 - str r0, [sb, #0x578] - ldr r0, [r8] - strb r0, [sb, r1] - ldr r1, [r8, #8] - ldr r0, [r8, #0x114] - cmp r1, r0 - bge _023137A8 - mov r5, #0 - ldr r6, _0231381C ; =ov00_0231CF68 - mov fp, r5 -_0231366C: - add r0, r8, r1 - ldrb r7, [r0, #0x14] - mov r0, sb - ldr r1, [r6, r7, lsl #2] - bl Qr2_Buffer_AddA - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r8] - cmp r0, #0 - bne _023136C4 - ldr r2, [sl, #0x10c] - ldr r3, [sl, #0x88] - mov r0, r7 - mov r1, sb - blx r3 - ldr r0, [sb, #0x578] - sub r0, r4, r0 - cmp r0, #1 - bge _02313788 - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023136C4: - ldr r1, [sb, #0x578] - sub r0, r4, r1 - cmp r0, #1 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r1 - add r0, r0, #1 - str r0, [sb, #0x578] - ldr r0, [r8, #0x10] - strb r0, [sb, r1] - ldr r1, [r8, #0x10] - ldr r0, [r8, #0xc] - cmp r1, r0 - bge _02313768 -_023136FC: - ldr r0, [r8] - cmp r0, #1 - bne _02313720 - ldr r3, [sl, #0x10c] - ldr ip, [sl, #0x8c] - mov r0, r7 - mov r2, sb - blx ip - b _0231373C -_02313720: - cmp r0, #2 - bne _0231373C - ldr r3, [sl, #0x10c] - ldr ip, [sl, #0x90] - mov r0, r7 - mov r2, sb - blx ip -_0231373C: - ldr r0, [sb, #0x578] - sub r0, r4, r0 - cmp r0, #1 - movlt r0, #1 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r0, [r8, #0x10] - add r1, r0, #1 - str r1, [r8, #0x10] - ldr r0, [r8, #0xc] - cmp r1, r0 - blt _023136FC -_02313768: - ldr r1, [sb, #0x578] - sub r0, r4, r1 - cmp r0, #0 - ble _02313788 - mov r0, r1 - add r0, r0, #1 - str r0, [sb, #0x578] - strb r5, [sb, r1] -_02313788: - ldr r0, [r8, #8] - add r0, r0, #1 - str r0, [r8, #8] - str fp, [r8, #0x10] - ldr r1, [r8, #8] - ldr r0, [r8, #0x114] - cmp r1, r0 - blt _0231366C -_023137A8: - ldr r1, [sb, #0x578] - ldr r0, _02313814 ; =0x00000578 - sub r0, r0, r1 - cmp r0, #0 - ble _023137CC - add r0, r1, #1 - str r0, [sb, #0x578] - mov r0, #0 - strb r0, [sb, r1] -_023137CC: - ldr r1, [r8] - mov r0, #0 - add r1, r1, #1 - str r1, [r8] - str r0, [r8, #8] - str r0, [r8, #0xc] - str r0, [r8, #0x10] - str r0, [r8, #0x114] - ldr r0, [r8] - cmp r0, #3 - blt _023135E0 -_023137F8: - ldr r0, [sp] - ldrb r1, [sb, r0] - mov r0, #1 - orr r2, r1, #0x80 - ldr r1, [sp] - strb r2, [sb, r1] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02313814: .word 0x00000578 -_02313818: .word ov00_0231CDA4 -_0231381C: .word ov00_0231CF68 - arm_func_end qr_build_split_query_reply - - arm_func_start qr_process_query -qr_process_query: ; 0x02313820 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x128 - mov ip, #0 - ldr r4, [sp, #0x148] - cmp r3, #3 - mov r6, r0 - mov r5, r1 - mov r7, ip - mov r8, ip - addlt sp, sp, #0x128 - mov lr, ip - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldrb sb, [r2], #1 - sub r3, r3, #1 - cmp sb, #0 - cmpne sb, #0xff - movne r7, r2 - subne r3, r3, sb - addne r2, r2, sb - cmp r3, #2 - addlt sp, sp, #0x128 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldrb r1, [r2], #1 - sub r3, r3, #1 - cmp r1, #0 - cmpne r1, #0xff - movne lr, r2 - subne r3, r3, r1 - addne r2, r2, r1 - cmp r3, #1 - addlt sp, sp, #0x128 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldrb sl, [r2], #1 - sub r3, r3, #1 - cmp sl, #0 - cmpne sl, #0xff - movne r8, r2 - subne r3, r3, sl - addne r2, r2, sl - cmp r3, #0 - addlt sp, sp, #0x128 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldrgtb ip, [r2] - and r0, ip, #1 - cmp r0, #1 - bne _0231396C - mov r3, #0 - add r2, sp, #0x10 - mov r0, r6 - mov r1, r5 - str r3, [sp, #0x14] - str r3, [sp, #0x10] - str r3, [sp, #0x18] - str r3, [sp, #0x1c] - str r3, [sp, #0x20] - str r3, [sp, #0x124] - bl qr_build_split_query_reply - cmp r0, #1 - addne sp, sp, #0x128 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - add sl, sp, #0x10 - mov sb, #8 - mov r8, #0 - mov r7, #5 -_02313920: - stmia sp, {r4, sb} - ldr r0, [r6] - ldr r2, [r5, #0x578] - mov r1, r5 - mov r3, r8 - bl SocketSendTo - str r7, [r5, #0x578] - ldr r0, [sp, #0x14] - cmp r0, #7 - addgt sp, sp, #0x128 - ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - mov r0, r6 - mov r1, r5 - mov r2, sl - bl qr_build_split_query_reply - cmp r0, #1 - beq _02313920 - add sp, sp, #0x128 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0231396C: - stmia sp, {r1, lr} - str sl, [sp, #8] - mov r0, r6 - mov r1, r5 - mov r2, sb - mov r3, r7 - str r8, [sp, #0xc] - bl qr_build_query_reply - str r4, [sp] - mov r0, #8 - str r0, [sp, #4] - ldr r0, [r6] - ldr r2, [r5, #0x578] - mov r1, r5 - mov r3, #0 - bl SocketSendTo - add sp, sp, #0x128 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end qr_process_query - - arm_func_start qr_process_client_message -qr_process_client_message: ; 0x023139B4 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0xc - ldr ip, _02313AD8 ; =ov00_02318760 - mov r3, r0 - ldrb r4, [ip] - ldrb r0, [ip, #1] - ldrb lr, [ip, #2] - strb r4, [sp, #4] - strb r0, [sp, #5] - ldrb r0, [ip, #3] - cmp r2, #0xa - add r6, sp, #4 - strb lr, [sp, #6] - strb r0, [sp, #7] - ldrb lr, [ip, #4] - ldrb r0, [ip, #5] - mov r5, #1 - strb lr, [sp, #8] - strb r0, [sp, #9] - blt _02313A30 - mov r4, #0 -_02313A08: - ldrb ip, [r6] - ldrb r0, [r1, r4] - cmp ip, r0 - movne r5, #0 - bne _02313A34 - add r4, r4, #1 - cmp r4, #6 - add r6, r6, #1 - blt _02313A08 - b _02313A34 -_02313A30: - mov r5, #0 -_02313A34: - cmp r5, #0 - beq _02313AB0 - ldrb r2, [r1, #6] - ldrb r0, [r1, #7] - add ip, sp, #0 - strb r2, [ip] - strb r0, [ip, #1] - ldrb r2, [r1, #8] - ldrb r0, [r1, #9] - strb r0, [ip, #3] - strb r2, [ip, #2] - ldr r2, [r3, #0xa0] - cmp r2, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r3, r4, r5, r6, pc} - ldr lr, [sp] - ldr r1, [r3, #0x10c] - mov r3, lr, lsr #0x18 - mov r0, lr, lsr #8 - mov ip, lr, lsl #8 - and r3, r3, #0xff - and r0, r0, #0xff00 - mov lr, lr, lsl #0x18 - orr r0, r3, r0 - and ip, ip, #0xff0000 - and r3, lr, #0xff000000 - orr r0, ip, r0 - orr r0, r3, r0 - blx r2 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} -_02313AB0: - ldr ip, [r3, #0xa4] - cmp ip, #0 - addeq sp, sp, #0xc - ldmeqia sp!, {r3, r4, r5, r6, pc} - mov r0, r1 - mov r1, r2 - ldr r2, [r3, #0x10c] - blx ip - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02313AD8: .word ov00_02318760 - arm_func_end qr_process_client_message - - arm_func_start qr_got_recent_message -qr_got_recent_message: ; 0x02313ADC - stmdb sp!, {r4, lr} - mov r3, #0 -_02313AE4: - add r2, r0, r3, lsl #2 - ldr r2, [r2, #0xd8] - cmp r1, r2 - moveq r0, #1 - ldmeqia sp!, {r4, pc} - add r3, r3, #1 - cmp r3, #0xa - blt _02313AE4 - ldr r2, [r0, #0x100] - ldr ip, _02313B3C ; =0x66666667 - add lr, r2, #1 - smull r3, r4, ip, lr - mov r2, lr, lsr #0x1f - add r4, r2, r4, asr #2 - mov ip, #0xa - smull r2, r3, ip, r4 - sub r4, lr, r2 - str r4, [r0, #0x100] - add r0, r0, r4, lsl #2 - str r1, [r0, #0xd8] - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_02313B3C: .word 0x66666667 - arm_func_end qr_got_recent_message - - arm_func_start qr2_process_ip_verify -qr2_process_ip_verify: ; 0x02313B40 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov sl, r0 - mov sb, r1 - mov r5, r2 - mov r4, #0 - bl current_time_gsi - ldrb r1, [sl, #0x110] - mov r7, r0 - mvn r8, #0 - tst r1, #0x80 - mov r1, r4 - bne _02313B88 - mov r0, sb - bl qr2_buffer_add_int - add sp, sp, #0xc - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02313B88: - ldr r0, [r5, #4] - mov r3, r8 -_02313B90: - cmp r8, r3 - addeq r2, sl, r4, lsl #4 - ldreq r2, [r2, #0x118] - add r6, sl, r4, lsl #4 - cmpeq r2, #0 - ldr r2, [r6, #0x118] - moveq r8, r4 - cmp r0, r2 - bne _02313BC8 - add r2, r6, #0x100 - ldrh r6, [r5, #2] - ldrh r2, [r2, #0x16] - cmp r6, r2 - addeq r1, r1, #1 -_02313BC8: - add r4, r4, #1 - cmp r4, #0xc8 - blt _02313B90 - cmp r1, #5 - addgt sp, sp, #0xc - movgt r0, #0 - ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mvn r0, #0 - cmp r8, r0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [r5] - ldr r0, [r5, #4] - add r2, sl, r8, lsl #4 - str r1, [r2, #0x114] - str r0, [r2, #0x118] - bl rand - mov r6, r0 - bl rand - mov r5, r0 - bl rand - mov r4, r0 - bl rand - mov fp, r0 - bl rand - str r0, [sp] - bl rand - str r0, [sp, #4] - bl rand - str r0, [sp, #8] - bl rand - orr r6, r5, r6, lsl #16 - orr r5, fp, r4, lsl #16 - ldr r2, [sp, #4] - ldr r1, [sp] - add r4, sl, r8, lsl #4 - orr r3, r2, r1, lsl #16 - mov r1, r6, lsl #0x18 - and r2, r1, #0xff000000 - mov r1, r5, lsl #8 - mov r3, r3, lsr #0x18 - and r5, r3, #0xff - ldr r3, [sp, #8] - and r1, r1, #0xff0000 - orr r0, r0, r3, lsl #16 - mov r0, r0, lsr #8 - and r0, r0, #0xff00 - orr r0, r5, r0 - orr r0, r1, r0 - orr r0, r2, r0 - str r0, [r4, #0x11c] - str r7, [r4, #0x120] - ldr r1, [r4, #0x11c] - mov r0, sb - bl qr2_buffer_add_int - mov r0, #1 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end qr2_process_ip_verify - - arm_func_start qr2_check_ip_verify -qr2_check_ip_verify: ; 0x02313CB4 - stmdb sp!, {r4, r5, r6, lr} - ldr r6, [r1, #4] - mov r5, #0 -_02313CC0: - add r4, r0, r5, lsl #4 - ldr r3, [r4, #0x118] - cmp r6, r3 - bne _02313D00 - add r3, r4, #0x100 - ldrh lr, [r1, #2] - ldrh ip, [r3, #0x16] - cmp lr, ip - ldreq ip, [r4, #0x11c] - cmpeq r2, ip - bne _02313D00 - mov r0, #0 - str r0, [r4, #0x118] - strh r0, [r3, #0x16] - mov r0, #1 - ldmia sp!, {r4, r5, r6, pc} -_02313D00: - add r5, r5, #1 - cmp r5, #0xc8 - blt _02313CC0 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end qr2_check_ip_verify - - arm_func_start qr2_expire_ip_verify -qr2_expire_ip_verify: ; 0x02313D14 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, #0 - bl current_time_gsi - mov r1, r4 -_02313D28: - add r3, r5, r4, lsl #4 - ldr r2, [r3, #0x118] - cmp r2, #0 - beq _02313D48 - ldr r2, [r3, #0x120] - sub r2, r0, r2 - cmp r2, #0xfa0 - strhi r1, [r3, #0x118] -_02313D48: - add r4, r4, #1 - cmp r4, #0xc8 - blt _02313D28 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end qr2_expire_ip_verify - - arm_func_start qr2_parse_querya -qr2_parse_querya: ; 0x02313D58 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x18c - sub sp, sp, #0x400 - movs r8, r0 - mov r0, #0 - str r0, [sp, #0x588] - ldreq r0, _02314150 ; =ov00_0231BF88 - mov r7, r2 - ldreq r8, [r0] - ldrsb r0, [r1] - mov r6, r3 - cmp r0, #0x3b - bne _02313DBC - ldr r3, [r8, #0xd4] - cmp r3, #0 - addeq sp, sp, #0x18c - addeq sp, sp, #0x400 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - mov r0, r1 - mov r1, r7 - mov r2, r6 - blx r3 - add sp, sp, #0x18c - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_02313DBC: - cmp r7, #7 - addlt sp, sp, #0x18c - addlt sp, sp, #0x400 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, pc} - and r0, r0, #0xff - cmp r0, #0xfe - ldreqb r0, [r1, #1] - cmpeq r0, #0xfd - addne sp, sp, #0x18c - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r0, [r8, #0xb8] - add r4, r1, #3 - cmp r0, #0 - movgt r0, #0 - strgt r0, [r8, #0xb8] - ldrsb sb, [r1, #2] - add r5, r1, #7 - add r0, sp, #0x10 - mov r1, sb - mov r2, r4 - sub r7, r7, #7 - bl qr_add_packet_header - cmp sb, #9 - addls pc, pc, sb, lsl #2 - b _02314118 -_02313E24: ; jump table - b _02313E70 ; case 0 - b _02313F04 ; case 1 - b _02313F8C ; case 2 - b _02314118 ; case 3 - b _02313FC4 ; case 4 - b _02314118 ; case 5 - b _02314048 ; case 6 - b _02314118 ; case 7 - b _02314118 ; case 8 - b _02313E4C ; case 9 -_02313E4C: - add r1, sp, #0x10 - mov r0, r8 - mov r2, r6 - bl qr2_process_ip_verify - cmp r0, #0 - bne _02314124 - add sp, sp, #0x18c - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_02313E70: - ldrb r0, [r8, #0x110] - and r0, r0, #0x80 - cmp r0, #0x80 - bne _02313EE0 - cmp r7, #4 - addlt sp, sp, #0x18c - addlt sp, sp, #0x400 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, pc} - ldr r4, [r5], #4 - mov r0, r8 - mov r2, r4, lsr #0x18 - mov r1, r4, lsr #8 - mov r3, r4, lsl #8 - mov r4, r4, lsl #0x18 - and r2, r2, #0xff - and r1, r1, #0xff00 - and r3, r3, #0xff0000 - orr r1, r2, r1 - orr r2, r3, r1 - and r4, r4, #0xff000000 - mov r1, r6 - orr r2, r4, r2 - sub r7, r7, #4 - bl qr2_check_ip_verify - cmp r0, #0 - addeq sp, sp, #0x18c - addeq sp, sp, #0x400 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} -_02313EE0: - add r1, sp, #0x10 - mov r0, r8 - mov r2, r5 - mov r3, r7 - str r6, [sp] - bl qr_process_query - add sp, sp, #0x18c - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_02313F04: - mov r2, #0 - str r2, [sp, #0xc] -_02313F0C: - add r0, r8, r2 - ldrsb r1, [r4, r2] - ldrsb r0, [r0, #0x84] - cmp r1, r0 - addne sp, sp, #0x18c - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} - add r2, r2, #1 - str r2, [sp, #0xc] - cmp r2, #4 - blt _02313F0C - cmp r7, #0xf - blt _02313F74 - add r4, r5, r7 - ldr r1, _02314154 ; =ov00_0231CDB0 - add r2, sp, #8 - sub r0, r4, #0xf - bl Std_TsScanf - ldr r0, [sp, #8] - strb r0, [r8, #0x110] - ldr r0, [r8, #0xa8] - cmp r0, #0 - beq _02313F74 - mov r0, r8 - sub r1, r4, #0xd - bl handle_public_address -_02313F74: - add r1, sp, #0x10 - mov r0, r8 - mov r2, r5 - mov r3, r7 - bl compute_challenge_response - b _02314124 -_02313F8C: - ldr r0, [sp, #0x588] - cmp r7, #0x20 - movgt r7, #0x20 - add r3, sp, #0x10 - mov r4, #5 - mov r1, r5 - mov r2, r7 - add r0, r3, r0 - strb r4, [sp, #0x10] - bl memcpy - ldr r0, [sp, #0x588] - add r0, r0, r7 - str r0, [sp, #0x588] - b _02314124 -_02313FC4: - ldr r1, [r8, #0xb8] - mvn r0, #0 - cmp r1, r0 - addeq sp, sp, #0x18c - addeq sp, sp, #0x400 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - mov r2, #0 - str r2, [sp, #0xc] -_02313FE4: - add r0, r8, r2 - ldrsb r1, [r4, r2] - ldrsb r0, [r0, #0x84] - cmp r1, r0 - addne sp, sp, #0x18c - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} - add r2, r2, #1 - str r2, [sp, #0xc] - cmp r2, #4 - blt _02313FE4 - cmp r7, #2 - addlt sp, sp, #0x18c - addlt sp, sp, #0x400 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, pc} - mvn r0, #0 - str r0, [r8, #0xb8] - ldrsb r0, [r5] - ldr r2, [r8, #0x10c] - ldr r3, [r8, #0x9c] - add r1, r5, #1 - blx r3 - add sp, sp, #0x18c - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_02314048: - mov r2, #0 - str r2, [sp, #0xc] -_02314050: - add r0, r8, r2 - ldrsb r1, [r4, r2] - ldrsb r0, [r0, #0x84] - cmp r1, r0 - addne sp, sp, #0x18c - addne sp, sp, #0x400 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} - add r2, r2, #1 - str r2, [sp, #0xc] - cmp r2, #4 - blt _02314050 - cmp r7, #4 - addlt sp, sp, #0x18c - addlt sp, sp, #0x400 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, pc} - mov r0, #7 - strb r0, [sp, #0x10] - ldrb r1, [r5] - ldrb r0, [r5, #1] - ldr r2, [sp, #0x588] - add r4, sp, #0x10 - strb r1, [r4, r2] - add r4, r4, r2 - strb r0, [r4, #1] - ldrb r2, [r5, #2] - ldrb r1, [r5, #3] - add r3, sp, #0xc - mov r0, r8 - strb r2, [r4, #2] - strb r1, [r4, #3] - ldr r1, [sp, #0x588] - add r1, r1, #4 - str r1, [sp, #0x588] - ldrb r2, [r5] - ldrb r1, [r5, #1] - strb r2, [r3] - strb r1, [r3, #1] - ldrb r2, [r5, #2] - ldrb r1, [r5, #3] - strb r2, [r3, #2] - strb r1, [r3, #3] - ldr r1, [sp, #0xc] - bl qr_got_recent_message - cmp r0, #0 - bne _02314124 - mov r0, r8 - add r1, r5, #4 - sub r2, r7, #4 - bl qr_process_client_message - b _02314124 -_02314118: - add sp, sp, #0x18c - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} -_02314124: - str r6, [sp] - mov r0, #8 - str r0, [sp, #4] - ldr r0, [r8] - ldr r2, [sp, #0x588] - add r1, sp, #0x10 - mov r3, #0 - bl SocketSendTo - add sp, sp, #0x18c - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02314150: .word ov00_0231BF88 -_02314154: .word ov00_0231CDB0 - arm_func_end qr2_parse_querya - - arm_func_start send_keepalive -send_keepalive: ; 0x02314158 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x184 - sub sp, sp, #0x400 - mov r4, r0 - mov r3, #0 - add r0, sp, #8 - add r2, r4, #0x84 - mov r1, #8 - str r3, [sp, #0x580] - bl qr_add_packet_header - add r0, r4, #0xcc - str r0, [sp] - mov r0, #8 - str r0, [sp, #4] - ldr r0, [r4] - ldr r2, [sp, #0x580] - add r1, sp, #8 - mov r3, #0 - bl SocketSendTo - bl current_time_gsi - str r0, [r4, #0xb0] - add sp, sp, #0x184 - add sp, sp, #0x400 - ldmia sp!, {r3, r4, pc} - arm_func_end send_keepalive - - arm_func_start send_heartbeat -send_heartbeat: ; 0x023141B8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x31c - sub sp, sp, #0x800 - mov sl, r0 - mov sb, r1 - mov r3, #0 - add r0, sp, #0x5a0 - add r2, sl, #0x84 - mov r1, #3 - str r3, [sp, #0xb18] - bl qr_add_packet_header - ldr r4, _0231440C ; =ov00_0232939C - mov r8, #0 - ldr r0, [r4] - cmp r0, #0 - ble _02314248 - ldr fp, _02314410 ; =ov00_0231CDB8 - ldr r5, _02314414 ; =ov00_023293A0 - add r7, sp, #0x10 - add r6, sp, #0x5a0 -_02314208: - mov r0, r7 - mov r1, fp - mov r2, r8 - bl OS_VsPrintf - mov r0, r6 - mov r1, r7 - bl Qr2_Buffer_AddA - ldr r0, [r5, r8, lsl #2] - bl Soc_InetNtoA - mov r1, r0 - mov r0, r6 - bl Qr2_Buffer_AddA - add r8, r8, #1 - ldr r0, [r4] - cmp r8, r0 - blt _02314208 -_02314248: - ldr r1, _02314418 ; =ov00_0231CDC4 - add r0, sp, #0x5a0 - bl Qr2_Buffer_AddA - ldr r1, [sl, #0xc0] - add r0, sp, #0x5a0 - bl qr2_buffer_add_int - ldr r1, _0231441C ; =ov00_0231CDD0 - add r0, sp, #0x5a0 - bl Qr2_Buffer_AddA - ldr r0, [sl, #0xc8] - cmp r0, #0 - ldrne r1, _02314420 ; =ov00_0231CDD8 - add r0, sp, #0x5a0 - ldreq r1, _02314424 ; =ov00_0231CDDC - bl Qr2_Buffer_AddA - cmp sb, #0 - beq _023142A4 - ldr r1, _02314428 ; =ov00_0231CDE0 - add r0, sp, #0x5a0 - bl Qr2_Buffer_AddA - add r0, sp, #0x5a0 - mov r1, sb - bl qr2_buffer_add_int -_023142A4: - ldr r1, _0231442C ; =ov00_0231CDF0 - add r0, sp, #0x5a0 - bl Qr2_Buffer_AddA - add r0, sp, #0x5a0 - add r1, sl, #4 - bl Qr2_Buffer_AddA - ldr r0, [sl, #0xa8] - cmp r0, #0 - beq _023142FC - ldr r1, _02314430 ; =ov00_0231CDFC - add r0, sp, #0x5a0 - bl Qr2_Buffer_AddA - ldr r1, [sl, #0x104] - add r0, sp, #0x5a0 - bl qr2_buffer_add_int - ldr r1, _02314434 ; =ov00_0231CE08 - add r0, sp, #0x5a0 - bl Qr2_Buffer_AddA - add r0, sl, #0x100 - ldrh r1, [r0, #8] - add r0, sp, #0x5a0 - bl qr2_buffer_add_int -_023142FC: - cmp sb, #2 - beq _0231439C - ldr r2, [sp, #0xb18] - add r0, sp, #0x24 - add r1, sp, #0x5a0 - bl memcpy - ldr r0, [sp, #0xb18] - mov r2, #0xff - str r0, [sp, #0x59c] - str r2, [sp] - mov r3, #0 - str r3, [sp, #4] - str r2, [sp, #8] - add r1, sp, #0x24 - mov r0, sl - str r3, [sp, #0xc] - bl qr_build_query_reply - ldr r1, [sp, #0x59c] - ldr r0, _02314438 ; =0x00000578 - sub r0, r0, r1 - cmp r0, #1 - bge _02314380 - ldr r0, [sp, #0xb18] - mov r3, #0 - str r0, [sp, #0x59c] - str r3, [sp] - str r3, [sp, #4] - str r3, [sp, #8] - add r1, sp, #0x24 - mov r0, sl - mov r2, #0xff - str r3, [sp, #0xc] - bl qr_build_query_reply -_02314380: - ldr r2, [sp, #0x59c] - add r0, sp, #0x5a0 - add r1, sp, #0x24 - bl memcpy - ldr r0, [sp, #0x59c] - str r0, [sp, #0xb18] - b _023143C4 -_0231439C: - ldr r2, [sp, #0xb18] - ldr r0, _02314438 ; =0x00000578 - sub r0, r0, r2 - cmp r0, #1 - blt _023143C4 - add r1, r2, #1 - str r1, [sp, #0xb18] - add r0, sp, #0x5a0 - mov r1, #0 - strb r1, [r0, r2] -_023143C4: - add r0, sl, #0xcc - str r0, [sp] - mov r0, #8 - str r0, [sp, #4] - ldr r0, [sl] - ldr r2, [sp, #0xb18] - add r1, sp, #0x5a0 - mov r3, #0 - bl SocketSendTo - bl current_time_gsi - str r0, [sl, #0xac] - str r0, [sl, #0xb0] - cmp sb, #0 - movne r0, #0 - strne r0, [sl, #0xb4] - add sp, sp, #0x31c - add sp, sp, #0x800 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0231440C: .word ov00_0232939C -_02314410: .word ov00_0231CDB8 -_02314414: .word ov00_023293A0 -_02314418: .word ov00_0231CDC4 -_0231441C: .word ov00_0231CDD0 -_02314420: .word ov00_0231CDD8 -_02314424: .word ov00_0231CDDC -_02314428: .word ov00_0231CDE0 -_0231442C: .word ov00_0231CDF0 -_02314430: .word ov00_0231CDFC -_02314434: .word ov00_0231CE08 -_02314438: .word 0x00000578 - arm_func_end send_heartbeat - - arm_func_start qr2_internal_is_master_only_key -qr2_internal_is_master_only_key: ; 0x0231443C - stmdb sp!, {r4, lr} - ldr r1, _02314480 ; =ov00_0231CF68 - mov r4, r0 - ldr r1, [r1, #0x7c] - bl strcmp - cmp r0, #0 - beq _02314470 - ldr r1, _02314480 ; =ov00_0231CF68 - mov r0, r4 - ldr r1, [r1, #0x80] - bl strcmp - cmp r0, #0 - bne _02314478 -_02314470: - mov r0, #1 - ldmia sp!, {r4, pc} -_02314478: - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_02314480: .word ov00_0231CF68 - arm_func_end qr2_internal_is_master_only_key - - arm_func_start keyrand_goa -keyrand_goa: ; 0x02314484 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - ldr r7, [sp, #0x28] - ldr r6, [sp, #0x2c] - movs sb, r1 - mov sl, r0 - mov fp, r2 - mov r8, r3 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp sb, #1 - mov r4, #0 - mov r5, #1 - bls _023144C8 -_023144B8: - mov r0, r5, lsl #1 - add r5, r0, #1 - cmp r5, sb - blo _023144B8 -_023144C8: - ldr r2, [r6] - add r0, r2, #1 - str r0, [r6] - ldrb r1, [r7] - ldrb r0, [fp, r2] - ldrb r1, [sl, r1] - add r0, r1, r0 - strb r0, [r7] - ldr r0, [r6] - cmp r0, r8 - blo _02314508 - mov r0, #0 - str r0, [r6] - ldrb r0, [r7] - add r0, r0, r8 - strb r0, [r7] -_02314508: - ldrb r0, [r7] - add r4, r4, #1 - cmp r4, #0xb - and r0, r5, r0 - bls _02314528 - mov r1, sb - bl _u32_div_f - mov r0, r1 -_02314528: - cmp r0, sb - bhi _023144C8 - and r0, r0, #0xff - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end keyrand_goa - - arm_func_start GoaHashInit -GoaHashInit: ; 0x02314538 - mov r1, #1 - strb r1, [r0, #0x100] - mov r1, #3 - strb r1, [r0, #0x101] - mov r1, #5 - strb r1, [r0, #0x102] - mov r1, #7 - strb r1, [r0, #0x103] - mov r1, #0xb - strb r1, [r0, #0x104] - mov r1, #0 - mov r2, #0xff -_02314568: - strb r2, [r0, r1] - add r1, r1, #1 - cmp r1, #0x100 - sub r2, r2, #1 - blt _02314568 - bx lr - arm_func_end GoaHashInit - - arm_func_start GoaCryptInit -GoaCryptInit: ; 0x02314580 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x10 - mov r7, r2 - mov sb, r0 - mov r8, r1 - cmp r7, #1 - bhs _023145A8 - bl GoaHashInit - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_023145A8: - mov r0, #0 -_023145AC: - strb r0, [sb, r0] - add r0, r0, #1 - cmp r0, #0x100 - blt _023145AC - mov r0, #0 - str r0, [sp, #0xc] - strb r0, [sp, #8] - mov r6, #0xff - add r5, sp, #8 - add r4, sp, #0xc -_023145D4: - str r5, [sp] - mov r0, sb - mov r1, r6 - mov r2, r8 - mov r3, r7 - str r4, [sp, #4] - bl keyrand_goa - ldrb r2, [sb, r6] - ldrb r1, [sb, r0] - strb r1, [sb, r6] - strb r2, [sb, r0] - subs r6, r6, #1 - bpl _023145D4 - ldrb r1, [sb, #1] - mov r0, #0 - strb r1, [sb, #0x100] - ldrb r1, [sb, #3] - strb r1, [sb, #0x101] - ldrb r1, [sb, #5] - strb r1, [sb, #0x102] - ldrb r1, [sb, #7] - strb r1, [sb, #0x103] - ldrb r1, [sp, #8] - ldrb r1, [sb, r1] - strb r1, [sb, #0x104] - strb r0, [sp, #8] - str r0, [sp, #0xc] - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end GoaCryptInit - - arm_func_start GoaEncryptByte -GoaEncryptByte: ; 0x02314648 - stmdb sp!, {r4, lr} - ldrb r4, [r0, #0x100] - add r2, r4, #1 - strb r2, [r0, #0x100] - ldrb r3, [r0, #0x101] - ldrb r2, [r0, r4] - add r2, r3, r2 - strb r2, [r0, #0x101] - ldrb r3, [r0, #0x104] - and r2, r2, #0xff - ldrb r2, [r0, r2] - ldrb r4, [r0, r3] - strb r2, [r0, r3] - ldrb r3, [r0, #0x103] - ldrb r2, [r0, #0x101] - ldrb r3, [r0, r3] - strb r3, [r0, r2] - ldrb r3, [r0, #0x100] - ldrb r2, [r0, #0x103] - ldrb r3, [r0, r3] - strb r3, [r0, r2] - ldrb r2, [r0, #0x100] - strb r4, [r0, r2] - ldrb r3, [r0, #0x102] - ldrb r2, [r0, r4] - add r4, r3, r2 - strb r4, [r0, #0x102] - ldrb r3, [r0, #0x103] - ldrb r2, [r0, #0x104] - ldrb ip, [r0, #0x101] - ldrb lr, [r0, #0x100] - and r4, r4, #0xff - ldrb r3, [r0, r3] - ldrb r2, [r0, r2] - ldrb ip, [r0, ip] - ldrb r4, [r0, r4] - add r2, r3, r2 - ldrb r3, [r0, lr] - add r2, ip, r2 - and r2, r2, #0xff - add r3, r4, r3 - ldrb r2, [r0, r2] - and r3, r3, #0xff - ldrb r3, [r0, r3] - ldrb r2, [r0, r2] - eor r3, r1, r3 - eor r2, r3, r2 - strb r2, [r0, #0x103] - strb r1, [r0, #0x104] - ldrb r0, [r0, #0x103] - ldmia sp!, {r4, pc} - arm_func_end GoaEncryptByte - - arm_func_start GoaEncrypt -GoaEncrypt: ; 0x02314714 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r2 - mov r7, r0 - mov r6, r1 - mov r4, #0 - cmp r5, #0 - ldmleia sp!, {r3, r4, r5, r6, r7, pc} -_02314730: - ldrb r1, [r6, r4] - mov r0, r7 - bl GoaEncryptByte - strb r0, [r6, r4] - add r4, r4, #1 - cmp r4, r5 - blt _02314730 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end GoaEncrypt - - arm_func_start FifoAddRear -FifoAddRear: ; 0x02314750 - ldr r2, [r0, #4] - cmp r2, #0 - strne r1, [r2, #0x24] - str r1, [r0, #4] - mov r2, #0 - str r2, [r1, #0x24] - ldr r2, [r0] - cmp r2, #0 - streq r1, [r0] - ldr r1, [r0, #8] - add r1, r1, #1 - str r1, [r0, #8] - bx lr - arm_func_end FifoAddRear - - arm_func_start FifoAddFront -FifoAddFront: ; 0x02314784 - ldr r2, [r0] - cmp r2, #0 - beq _023147B0 - ldr r1, [r2, #0x24] - str r1, [r0] - cmp r1, #0 - moveq r1, #0 - streq r1, [r0, #4] - ldr r1, [r0, #8] - sub r1, r1, #1 - str r1, [r0, #8] -_023147B0: - mov r0, r2 - bx lr - arm_func_end FifoAddFront - - arm_func_start FifoRemove -FifoRemove: ; 0x023147B8 - ldr r2, [r0] - mov r3, #0 - cmp r2, #0 - beq _0231481C -_023147C8: - cmp r2, r1 - bne _0231480C - cmp r3, #0 - ldrne r1, [r2, #0x24] - strne r1, [r3, #0x24] - ldr r1, [r0] - cmp r1, r2 - ldreq r1, [r2, #0x24] - streq r1, [r0] - ldr r1, [r0, #4] - cmp r1, r2 - streq r3, [r0, #4] - ldr r1, [r0, #8] - sub r1, r1, #1 - str r1, [r0, #8] - mov r0, #1 - bx lr -_0231480C: - mov r3, r2 - ldr r2, [r2, #0x24] - cmp r2, #0 - bne _023147C8 -_0231481C: - mov r0, #0 - bx lr - arm_func_end FifoRemove - - arm_func_start FifoClear -FifoClear: ; 0x02314824 - mov r1, #0 - str r1, [r0, #4] - str r1, [r0] - str r1, [r0, #8] - bx lr - arm_func_end FifoClear - - arm_func_start QeStartQuery -QeStartQuery: ; 0x02314838 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #0x114 - mov r2, #2 - mov r4, r1 - strb r2, [sp, #0xd] - mov r5, r0 - mov r6, #0 - bl current_time_gsi - str r0, [r4, #0x1c] - ldrb r1, [r4, #0x14] - tst r1, #0x20 - bne _02314AD0 - ldr r0, [r5] - cmp r0, #1 - bne _02314A00 - tst r1, #0x80 - beq _023148C0 - mov r2, #0xfe - mov r1, #0xfd - mov r0, #9 - strb r2, [sp, #0x14] - strb r1, [sp, #0x15] - strb r0, [sp, #0x16] - ldrb r1, [r4, #0x1c] - ldrb r0, [r4, #0x1d] - add r3, sp, #0x17 - mov r2, #7 - strb r1, [r3] - strb r0, [r3, #1] - ldrb r1, [r4, #0x1e] - ldrb r0, [r4, #0x1f] - strb r1, [r3, #2] - strb r0, [r3, #3] - b _02314A70 -_023148C0: - ldr r0, [r4, #0x20] - mov ip, r6 - mov r3, r0, lsr #0x18 - mov r2, r0, lsr #8 - mov lr, r0, lsl #8 - mov r6, r0, lsl #0x18 - mov r1, #0xfe - mov r0, #0xfd - strb r0, [sp, #0x15] - and r3, r3, #0xff - and r2, r2, #0xff00 - orr r2, r3, r2 - and lr, lr, #0xff0000 - and r3, r6, #0xff000000 - orr r2, lr, r2 - orrs r2, r3, r2 - str r2, [sp, #8] - strb r1, [sp, #0x14] - strb ip, [sp, #0x16] - ldrb r2, [r4, #0x1c] - ldrb r1, [r4, #0x1d] - add r3, sp, #0x17 - add r0, ip, #7 - strb r2, [r3] - strb r1, [r3, #1] - ldrb r2, [r4, #0x1e] - ldrb r1, [r4, #0x1f] - strb r2, [r3, #2] - strb r1, [r3, #3] - beq _02314968 - add ip, sp, #8 - ldrb r3, [ip] - ldrb r1, [ip, #1] - add lr, sp, #0x14 - strb r3, [lr, r0] - add r3, lr, r0 - strb r1, [r3, #1] - ldrb r2, [ip, #2] - ldrb r1, [ip, #3] - add r0, r0, #4 - strb r2, [r3, #2] - strb r1, [r3, #3] -_02314968: - ldrb r1, [r4, #0x14] - tst r1, #4 - beq _023149D0 - ldr r1, [r5, #0x40] - add r2, sp, #0x14 - strb r1, [r2, r0] - ldr r1, [r5, #0x40] - mov r3, #0 - add r0, r0, #1 - cmp r1, #0 - ble _023149B4 -_02314994: - add r1, r5, r3 - ldrb r1, [r1, #0x2c] - add r3, r3, #1 - strb r1, [r2, r0] - ldr r1, [r5, #0x40] - add r0, r0, #1 - cmp r3, r1 - blt _02314994 -_023149B4: - add r2, sp, #0x14 - mov r3, #0 - strb r3, [r2, r0] - add r1, r0, #1 - strb r3, [r2, r1] - add r2, r0, #2 - b _02314A70 -_023149D0: - add r3, sp, #0x14 - mov r2, #0xff - strb r2, [r3, r0] - add r1, r0, #1 - strb r2, [r3, r1] - add r1, r0, #2 - strb r2, [r3, r1] - add r1, r0, #3 - mov r2, #1 - strb r2, [r3, r1] - add r2, r0, #4 - b _02314A70 -_02314A00: - tst r1, #4 - add ip, sp, #0x14 - beq _02314A44 - ldr r3, _02314AF8 ; =ov00_0231D360 - mov r2, #6 -_02314A14: - 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 _02314A14 - ldrb r0, [r3] - mov r2, #0xd - strb r0, [ip] - b _02314A70 -_02314A44: - ldr r3, _02314AFC ; =ov00_0231D370 - mov r2, #4 -_02314A4C: - 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 _02314A4C - mov r2, #8 -_02314A70: - ldr r1, [r4] - ldr r0, [r5, #0x28] - cmp r1, r0 - bne _02314AA0 - ldrb r0, [r4, #0x15] - tst r0, #2 - beq _02314AA0 - ldr r0, [r4, #8] - str r0, [sp, #0x10] - ldrh r0, [r4, #0xc] - strh r0, [sp, #0xe] - b _02314AAC -_02314AA0: - str r1, [sp, #0x10] - ldrh r0, [r4, #4] - strh r0, [sp, #0xe] -_02314AAC: - add r1, sp, #0xc - str r1, [sp] - mov r0, #8 - str r0, [sp, #4] - ldr r0, [r5, #0x20] - add r1, sp, #0x14 - mov r3, #0 - bl SocketSendTo - mov r6, #1 -_02314AD0: - cmp r6, #0 - moveq r0, #0 - addeq sp, sp, #0x114 - streq r0, [r4, #0x1c] - ldmeqia sp!, {r3, r4, r5, r6, pc} - mov r1, r4 - add r0, r5, #8 - bl FifoAddRear - add sp, sp, #0x114 - ldmia sp!, {r3, r4, r5, r6, pc} - .align 2, 0 -_02314AF8: .word ov00_0231D360 -_02314AFC: .word ov00_0231D370 - arm_func_end QeStartQuery - - arm_func_start SbEngineHaltUpdates -SbEngineHaltUpdates: ; 0x02314B00 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x14 - bl FifoClear - add r0, r4, #8 - bl FifoClear - ldmia sp!, {r4, pc} - arm_func_end SbEngineHaltUpdates - - arm_func_start SbEngineCleanup -SbEngineCleanup: ; 0x02314B1C - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x20] - bl SocketClose - mvn r1, #0 - add r0, r4, #0x14 - str r1, [r4, #0x20] - bl FifoClear - add r0, r4, #8 - bl FifoClear - ldmia sp!, {r4, pc} - arm_func_end SbEngineCleanup - - arm_func_start ParseSingleQR2Reply -ParseSingleQR2Reply: ; 0x02314B48 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r8, r2 - ldrsb r2, [r8] - mov sl, r0 - mov sb, r1 - cmp r2, #0 - mov r7, r3 - cmpne r2, #9 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [sb, #0x14] - add r8, r8, #5 - sub r7, r7, #5 - tst r0, #0x80 - beq _02314BD0 - and r0, r0, #0x7f - strb r0, [sb, #0x14] - cmp r7, #0 - ble _02314CC0 - mov r0, r8 - bl atoi - str r0, [sb, #0x20] - mov r1, sb - add r0, sl, #8 - bl FifoRemove - mov r0, sl - mov r1, sb - bl QeStartQuery - ldr r3, [sl, #0x48] - ldr r4, [sl, #0x44] - mov r2, sb - mov r0, sl - mov r1, #3 - blx r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02314BD0: - tst r0, #4 - beq _02314C54 - ldr r0, [sl, #0x40] - mov r4, #0 - cmp r0, #0 - ble _02314C44 - ldr fp, _02314D04 ; =ov00_0231CF68 -_02314BEC: - mov r0, r8 - mov r1, r7 - bl NtsLengthSB - movs r5, r0 - bmi _02314C44 - add r6, sl, r4 - ldrb r0, [r6, #0x2c] - ldr r0, [fp, r0, lsl #2] - bl qr2_internal_is_master_only_key - cmp r0, #0 - bne _02314C2C - ldrb r1, [r6, #0x2c] - mov r0, sb - mov r2, r8 - ldr r1, [fp, r1, lsl #2] - bl SbServerAddKeyValue -_02314C2C: - ldr r0, [sl, #0x40] - add r4, r4, #1 - cmp r4, r0 - add r8, r8, r5 - sub r7, r7, r5 - blt _02314BEC -_02314C44: - ldrb r0, [sb, #0x14] - orr r0, r0, #0x41 - strb r0, [sb, #0x14] - b _02314CC0 -_02314C54: - ldrsb r0, [r8] - cmp r0, #0 - beq _02314CA4 - ldr r0, _02314D08 ; =ov00_0231D37C - mov r1, r8 - mov r2, #8 - bl strncmp - cmp r0, #0 - bne _02314CA4 - mov r0, sb - mov r1, r8 - mov r2, r7 - bl SbServerParseQR2FullKeysSplit - ldrb r0, [sb, #0x28] - cmp r0, #0xff - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [sb, #0x14] - orr r0, r0, #0x43 - strb r0, [sb, #0x14] - b _02314CC0 -_02314CA4: - mov r0, sb - mov r1, r8 - mov r2, r7 - bl SbServerParseQR2FullKeysSingle - ldrb r0, [sb, #0x14] - orr r0, r0, #0x43 - strb r0, [sb, #0x14] -_02314CC0: - ldrb r0, [sb, #0x14] - and r0, r0, #0xf3 - strb r0, [sb, #0x14] - bl current_time_gsi - ldr r2, [sb, #0x1c] - mov r1, sb - sub r0, r0, r2 - str r0, [sb, #0x1c] - add r0, sl, #8 - bl FifoRemove - ldr r3, [sl, #0x48] - ldr r4, [sl, #0x44] - mov r0, sl - mov r2, sb - mov r1, #0 - blx r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02314D04: .word ov00_0231CF68 -_02314D08: .word ov00_0231D37C - arm_func_end ParseSingleQR2Reply - - arm_func_start ParseSingleGoaReply -ParseSingleGoaReply: ; 0x02314D0C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r1 - mov r7, r2 - mov r5, r0 - ldr r1, _02314DA0 ; =ov00_0231D388 - mov r0, r7 - bl strstr - cmp r0, #0 - movne r6, #1 - moveq r6, #0 - mov r0, r4 - mov r1, r7 - bl SbServerParseKeyVals - cmp r6, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r0, [r4, #0x14] - tst r0, #4 - orrne r0, r0, #0x41 - orreq r0, r0, #0x42 - strb r0, [r4, #0x14] - ldrb r0, [r4, #0x14] - and r0, r0, #0xf3 - strb r0, [r4, #0x14] - bl current_time_gsi - ldr r2, [r4, #0x1c] - mov r1, r4 - sub r0, r0, r2 - str r0, [r4, #0x1c] - add r0, r5, #8 - bl FifoRemove - ldr r3, [r5, #0x48] - ldr ip, [r5, #0x44] - mov r0, r5 - mov r2, r4 - mov r1, #0 - blx ip - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02314DA0: .word ov00_0231D388 - arm_func_end ParseSingleGoaReply - - arm_func_start ParseSingleIcmpReply -ParseSingleIcmpReply: ; 0x02314DA4 - mov r0, #1 - bx lr - arm_func_end ParseSingleIcmpReply - - arm_func_start ProcessIncomingReplies -ProcessIncomingReplies: ; 0x02314DAC - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x14 - sub sp, sp, #0x800 - movs r8, r1 - mov r1, #8 - mov sb, r0 - str r1, [sp, #8] - mov r7, #0 - ldreq r7, [sb, #0x20] - mov r0, r7 - bl CanReceiveOnSocket - cmp r0, #0 - addeq sp, sp, #0x14 - addeq sp, sp, #0x800 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} -_02314DE8: - add r0, sp, #0xc - str r0, [sp] - add r4, sp, #8 - ldr r2, _02314F3C ; =0x000007FF - add r1, sp, #0x14 - mov r0, r7 - mov r3, #0 - str r4, [sp, #4] - bl SocketRecvFrom - mov r5, r0 - mvn r0, #0 - cmp r5, r0 - addeq sp, sp, #0x14 - addeq sp, sp, #0x800 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} - add r4, sp, #0x14 - mov r0, #0 - strb r0, [r4, r5] - ldr r6, [sb, #8] - cmp r6, #0 - beq _02314F20 -_02314E3C: - cmp r8, #0 - beq _02314E60 - ldrb r0, [r6, #0x15] - tst r0, #8 - beq _02314E60 - ldr r1, [r6, #0x10] - ldr r0, [sp, #0x10] - cmp r1, r0 - beq _02314EB8 -_02314E60: - ldr r3, [sp, #0x10] - ldr r2, [r6] - cmp r2, r3 - bne _02314E88 - ldrh r1, [r6, #4] - ldrh r0, [sp, #0xe] - cmp r1, r0 - beq _02314EB8 - cmp r8, #0 - bne _02314EB8 -_02314E88: - ldr r0, [sb, #0x28] - cmp r2, r0 - bne _02314F14 - ldrb r0, [r6, #0x15] - tst r0, #2 - beq _02314F14 - ldr r0, [r6, #8] - cmp r0, r3 - ldreqh r1, [r6, #0xc] - ldreqh r0, [sp, #0xe] - cmpeq r1, r0 - bne _02314F14 -_02314EB8: - cmp r8, #0 - beq _02314EE0 - mov r0, sb - mov r1, r6 - mov r2, r4 - mov r3, r5 - bl ParseSingleIcmpReply - cmp r0, #0 - bne _02314F20 - b _02314F14 -_02314EE0: - ldr r0, [sb] - add r2, sp, #0x14 - cmp r0, #1 - mov r0, sb - bne _02314F04 - mov r1, r6 - mov r3, r5 - bl ParseSingleQR2Reply - b _02314F20 -_02314F04: - mov r1, r6 - mov r3, r5 - bl ParseSingleGoaReply - b _02314F20 -_02314F14: - ldr r6, [r6, #0x24] - cmp r6, #0 - bne _02314E3C -_02314F20: - mov r0, r7 - bl CanReceiveOnSocket - cmp r0, #0 - bne _02314DE8 - add sp, sp, #0x14 - add sp, sp, #0x800 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_02314F3C: .word 0x000007FF - arm_func_end ProcessIncomingReplies - - arm_func_start TimeoutOldQueries -TimeoutOldQueries: ; 0x02314F40 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r6, r0 - bl current_time_gsi - ldr r3, [r6, #8] - mov r5, r0 - cmp r3, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldr r4, _02314FCC ; =0x000009C4 - mov r7, #1 -_02314F64: - ldr r0, [r3, #0x1c] - add r0, r0, #0x1c4 - add r0, r0, #0x800 - cmp r5, r0 - ldmlsia sp!, {r3, r4, r5, r6, r7, pc} - ldrb r2, [r3, #0x15] - mov r0, r6 - mov r1, r7 - orr r2, r2, #0x10 - strb r2, [r3, #0x15] - ldr r2, [r6, #8] - str r4, [r2, #0x1c] - ldr r3, [r6, #8] - ldrb r2, [r3, #0x15] - and r2, r2, #0xd3 - strb r2, [r3, #0x15] - ldr r2, [r6, #8] - ldr r3, [r6, #0x48] - ldr ip, [r6, #0x44] - blx ip - add r0, r6, #8 - bl FifoAddFront - ldr r3, [r6, #8] - cmp r3, #0 - bne _02314F64 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02314FCC: .word 0x000009C4 - arm_func_end TimeoutOldQueries - - arm_func_start QueueNextQueries -QueueNextQueries: ; 0x02314FD0 - stmdb sp!, {r4, lr} - mov r4, r0 - b _02314FF0 -_02314FDC: - add r0, r4, #0x14 - bl FifoAddFront - mov r1, r0 - mov r0, r4 - bl QeStartQuery -_02314FF0: - ldr r1, [r4, #0x10] - ldr r0, [r4, #4] - cmp r1, r0 - ldmgeia sp!, {r4, pc} - ldr r0, [r4, #0x1c] - cmp r0, #0 - bgt _02314FDC - ldmia sp!, {r4, pc} - arm_func_end QueueNextQueries - - arm_func_start SbQueryEngineThink -SbQueryEngineThink: ; 0x02315010 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r1, [r4, #0x10] - cmp r1, #0 - ldmeqia sp!, {r4, pc} - mov r1, #0 - bl ProcessIncomingReplies - mov r0, r4 - bl TimeoutOldQueries - ldr r0, [r4, #0x1c] - cmp r0, #0 - ble _02315048 - mov r0, r4 - bl QueueNextQueries -_02315048: - ldr r0, [r4, #0x10] - cmp r0, #0 - ldmneia sp!, {r4, pc} - ldr r3, [r4, #0x48] - ldr ip, [r4, #0x44] - mov r0, r4 - mov r1, #2 - mov r2, #0 - blx ip - ldmia sp!, {r4, pc} - arm_func_end SbQueryEngineThink - - arm_func_start SbQueryEngineAddQueryKey -SbQueryEngineAddQueryKey: ; 0x02315070 - ldr r3, [r0, #0x40] - cmp r3, #0x14 - bxge lr - add r2, r3, #1 - str r2, [r0, #0x40] - add r0, r0, r3 - strb r1, [r0, #0x2c] - bx lr - arm_func_end SbQueryEngineAddQueryKey - - arm_func_start RefStringHash -RefStringHash: ; 0x02315090 - ldr ip, _0231509C ; =StringHash - ldr r0, [r0] - bx ip - .align 2, 0 -_0231509C: .word StringHash - arm_func_end RefStringHash - - arm_func_start RefStringCompare -RefStringCompare: ; 0x023150A0 - ldr ip, _023150B0 ; =strcasecmp - ldr r0, [r0] - ldr r1, [r1] - bx ip - .align 2, 0 -_023150B0: .word strcasecmp - arm_func_end RefStringCompare - - arm_func_start RefStringFree -RefStringFree: ; 0x023150B4 - ldr ip, _023150C0 ; =gsifree - ldr r0, [r0] - bx ip - .align 2, 0 -_023150C0: .word gsifree - arm_func_end RefStringFree - - arm_func_start SbRefStrHash -SbRefStrHash: ; 0x023150C4 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r0, _02315118 ; =ov00_023294F4 - ldr r0, [r0, #4] - cmp r0, #0 - bne _02315108 - ldr r0, _0231511C ; =RefStringCompare - ldr ip, _02315120 ; =RefStringFree - str r0, [sp] - ldr r3, _02315124 ; =RefStringHash - mov r0, #8 - mov r1, #0x64 - mov r2, #2 - str ip, [sp, #4] - bl TableNew2_Gsi - ldr r1, _02315118 ; =ov00_023294F4 - str r0, [r1, #4] -_02315108: - ldr r0, _02315118 ; =ov00_023294F4 - ldr r0, [r0, #4] - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_02315118: .word ov00_023294F4 -_0231511C: .word RefStringCompare -_02315120: .word RefStringFree -_02315124: .word RefStringHash - arm_func_end SbRefStrHash - - arm_func_start SbRefStrHashCleanup -SbRefStrHashCleanup: ; 0x02315128 - stmdb sp!, {r3, lr} - ldr r0, _02315164 ; =ov00_023294F4 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl TableCount_Gsi - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02315164 ; =ov00_023294F4 - ldr r0, [r0, #4] - bl TableFree_Gsi - ldr r0, _02315164 ; =ov00_023294F4 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02315164: .word ov00_023294F4 - arm_func_end SbRefStrHashCleanup - - arm_func_start SbServerFree -SbServerFree: ; 0x02315168 - stmdb sp!, {r4, lr} - ldr r4, [r0] - ldr r0, [r4, #0x18] - bl TableFree_Gsi - mov r1, #0 - mov r0, r4 - str r1, [r4, #0x18] - bl gsifree - ldmia sp!, {r4, pc} - arm_func_end SbServerFree - - arm_func_start SbServerAddKeyValue -SbServerAddKeyValue: ; 0x0231518C - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r0 - mov r4, r2 - mov r0, #0 - bl SbRefStr - str r0, [sp] - mov r1, r4 - mov r0, #0 - bl SbRefStr - str r0, [sp, #4] - ldr r0, [r5, #0x18] - add r1, sp, #0 - bl TableEnter_Gsi - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SbServerAddKeyValue - - arm_func_start SbServerAddIntKeyValue -SbServerAddIntKeyValue: ; 0x023151CC - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x14 - mov r4, r1 - mov r5, r0 - ldr r1, _02315200 ; =ov00_0231D3A0 - add r0, sp, #0 - bl OS_VsPrintf - add r2, sp, #0 - mov r0, r5 - mov r1, r4 - bl SbServerAddKeyValue - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_02315200: .word ov00_0231D3A0 - arm_func_end SbServerAddIntKeyValue - - arm_func_start SbServerGetStringValueA -SbServerGetStringValueA: ; 0x02315204 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - cmp r0, #0 - mov r5, r2 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - str r1, [sp] - ldr r0, [r0, #0x18] - add r1, sp, #0 - bl TableLookup_Gsi - cmp r0, #0 - beq _0231524C - ldr r4, [r0, #4] - mov r0, r4 - bl strlen - cmp r0, #0 - bne _02315258 -_0231524C: - add sp, sp, #8 - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} -_02315258: - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SbServerGetStringValueA - - arm_func_start SbServerGetIntValueA -SbServerGetIntValueA: ; 0x02315264 - stmdb sp!, {r4, r5, r6, lr} - movs r6, r0 - mov r4, r2 - mov r5, r1 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r1, _02315304 ; =ov00_0231D3A4 - mov r0, r5 - bl strcmp - cmp r0, #0 - mov r0, r6 - bne _0231529C - bl SbServerGetPing - ldmia sp!, {r4, r5, r6, pc} -_0231529C: - mov r1, r5 - mov r2, #0 - bl SbServerGetStringValueA - cmp r0, #0 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, pc} - ldrsb r1, [r0] - cmp r1, #0x2d - movne r1, r0 - addeq r1, r0, #1 - ldrb r2, [r1] - cmp r2, #0 - blt _023152D8 - cmp r2, #0x80 - blt _023152E0 -_023152D8: - mov r1, #0 - b _023152F0 -_023152E0: - ldr r1, _02315308 ; =_020AEDB0 - mov r2, r2, lsl #1 - ldrh r1, [r1, r2] - and r1, r1, #8 -_023152F0: - cmp r1, #0 - moveq r0, r4 - ldmeqia sp!, {r4, r5, r6, pc} - bl atoi - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02315304: .word ov00_0231D3A4 -_02315308: .word _020AEDB0 - arm_func_end SbServerGetIntValueA - - arm_func_start SbServerGetPublicInetAddress -SbServerGetPublicInetAddress: ; 0x0231530C - ldr r0, [r0] - bx lr - arm_func_end SbServerGetPublicInetAddress - - arm_func_start SbServerGetPublicQueryPort -SbServerGetPublicQueryPort: ; 0x02315314 - ldrh r0, [r0, #4] - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bx lr - arm_func_end SbServerGetPublicQueryPort - - arm_func_start SbServerGetPublicQueryPortNbo -SbServerGetPublicQueryPortNbo: ; 0x02315338 - ldrh r0, [r0, #4] - bx lr - arm_func_end SbServerGetPublicQueryPortNbo - - arm_func_start SbServerHasPrivateAddress -SbServerHasPrivateAddress: ; 0x02315340 - ldrb r0, [r0, #0x15] - and r0, r0, #2 - cmp r0, #2 - moveq r0, #1 - movne r0, #0 - bx lr - arm_func_end SbServerHasPrivateAddress - - arm_func_start SbServerGetPrivateInetAddress -SbServerGetPrivateInetAddress: ; 0x02315358 - ldr r0, [r0, #8] - bx lr - arm_func_end SbServerGetPrivateInetAddress - - arm_func_start SbServerGetPrivateQueryPort -SbServerGetPrivateQueryPort: ; 0x02315360 - ldrh r0, [r0, #0xc] - mov r1, r0, asr #8 - mov r0, r0, lsl #8 - and r1, r1, #0xff - and r0, r0, #0xff00 - orr r0, r1, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bx lr - arm_func_end SbServerGetPrivateQueryPort - - arm_func_start SbServerSetNext -SbServerSetNext: ; 0x02315384 - str r1, [r0, #0x24] - bx lr - arm_func_end SbServerSetNext - - arm_func_start SbServerGetNext -SbServerGetNext: ; 0x0231538C - ldr r0, [r0, #0x24] - bx lr - arm_func_end SbServerGetNext - - arm_func_start CheckValidKey -CheckValidKey: ; 0x02315394 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - ldr r1, _023153F0 ; =ov00_02318768 - add r4, sp, #0 - ldr r2, [r1] - ldr r1, [r1, #4] - mov r6, r0 - str r2, [sp] - str r1, [sp, #4] - mov r5, #0 -_023153BC: - ldr r1, [r4, r5, lsl #2] - mov r0, r6 - bl strcmp - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - add r5, r5, #1 - cmp r5, #2 - blo _023153BC - mov r0, #1 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_023153F0: .word ov00_02318768 - arm_func_end CheckValidKey - - arm_func_start mytok -mytok: ; 0x023153F4 - cmp r0, #0 - ldrne r2, _02315454 ; =ov00_023294F4 - strne r0, [r2] - ldr r2, _02315454 ; =ov00_023294F4 - ldr r0, [r2] - mov ip, r0 - b _02315418 -_02315410: - add ip, ip, #1 - str ip, [r2] -_02315418: - ldrsb r3, [ip] - cmp r3, #0 - cmpne r3, r1 - bne _02315410 - cmp ip, r0 - moveq r0, #0 - cmp r3, #0 - bxeq lr - ldr r1, _02315454 ; =ov00_023294F4 - mov r2, #0 - ldr r3, [r1] - strb r2, [ip] - add r2, r3, #1 - str r2, [r1] - bx lr - .align 2, 0 -_02315454: .word ov00_023294F4 - arm_func_end mytok - - arm_func_start SbServerParseKeyVals -SbServerParseKeyVals: ; 0x02315458 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - add r0, r1, #1 - mov r1, #0x5c - bl mytok - movs r8, r0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r4, #0 - mov fp, #0x5c - ldr r5, _023154E4 ; =ov00_0231D3AC - mov r7, r4 - mov r6, fp -_02315488: - mov r0, r7 - mov r1, r6 - bl mytok - movs sb, r0 - mov r0, r8 - moveq sb, r5 - bl CheckValidKey - cmp r0, #0 - beq _023154CC - mov r0, r8 - bl qr2_internal_is_master_only_key - cmp r0, #0 - bne _023154CC - mov r0, sl - mov r1, r8 - mov r2, sb - bl SbServerAddKeyValue -_023154CC: - mov r0, r4 - mov r1, fp - bl mytok - movs r8, r0 - bne _02315488 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023154E4: .word ov00_0231D3AC - arm_func_end SbServerParseKeyVals - - arm_func_start SbServerParseQR2FullKeysSingle -SbServerParseQR2FullKeysSingle: ; 0x023154E8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x8c - mov sl, r1 - ldrsb r1, [sl] - mov fp, r0 - mov sb, r2 - cmp r1, #0 - beq _0231557C -_02315508: - mov r0, sl - mov r1, sb - bl NtsLengthSB - cmp r0, #0 - addlt sp, sp, #0x8c - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r4, sl - sub sb, sb, r0 - add sl, sl, r0 - mov r0, sl - mov r1, sb - bl NtsLengthSB - cmp r0, #0 - addlt sp, sp, #0x8c - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r5, sl - add sl, sl, r0 - sub sb, sb, r0 - mov r0, r4 - bl qr2_internal_is_master_only_key - cmp r0, #0 - bne _02315570 - mov r0, fp - mov r1, r4 - mov r2, r5 - bl SbServerAddKeyValue -_02315570: - ldrsb r0, [sl] - cmp r0, #0 - bne _02315508 -_0231557C: - mov r0, #0 - add sl, sl, #1 - sub sb, sb, #1 - str r0, [sp] -_0231558C: - cmp sb, #2 - addlt sp, sp, #0x8c - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r1, [sl] - ldrb r0, [sl, #1] - add r2, sp, #8 - add sl, sl, #2 - strb r1, [r2] - strb r0, [r2, #1] - ldrh r0, [sp, #8] - str sl, [sp, #4] - sub sb, sb, #2 - 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, #8] - ldrsb r0, [sl] - mov r5, #0 - cmp r0, #0 - beq _0231561C -_023155E4: - mov r0, sl - mov r1, sb - bl NtsLengthSB - cmp r0, #0 - addlt sp, sp, #0x8c - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r0, #0x64 - addgt sp, sp, #0x8c - ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrsb r1, [sl, r0]! - add r5, r5, #1 - sub sb, sb, r0 - cmp r1, #0 - bne _023155E4 -_0231561C: - ldrh r0, [sp, #8] - add sl, sl, #1 - sub sb, sb, #1 - cmp r0, #0 - mov r6, #0 - ble _023156B4 -_02315634: - ldr r8, [sp, #4] - mov r7, #0 - cmp r5, #0 - ble _023156A4 -_02315644: - mov r0, sl - mov r1, sb - bl NtsLengthSB - movs r4, r0 - addmi sp, sp, #0x8c - ldmmiia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, _023156D0 ; =ov00_0231D3B0 - add r0, sp, #0xa - mov r2, r8 - mov r3, r6 - bl OS_VsPrintf - mov r0, fp - add r1, sp, #0xa - mov r2, sl - bl SbServerAddKeyValue - mov r0, r8 - add sl, sl, r4 - sub sb, sb, r4 - bl strlen - add r0, r0, #1 - add r7, r7, #1 - add r8, r8, r0 - cmp r7, r5 - blt _02315644 -_023156A4: - ldrh r0, [sp, #8] - add r6, r6, #1 - cmp r6, r0 - blt _02315634 -_023156B4: - ldr r0, [sp] - add r0, r0, #1 - str r0, [sp] - cmp r0, #2 - blt _0231558C - add sp, sp, #0x8c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023156D0: .word ov00_0231D3B0 - arm_func_end SbServerParseQR2FullKeysSingle - - arm_func_start SbServerParseQR2FullKeysSplit -SbServerParseQR2FullKeysSplit: ; 0x023156D4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x84 - mov sb, r1 - ldrsb r1, [sb] - mov sl, r0 - mov r8, r2 - cmp r1, #0 - mov r5, #0 - addeq sp, sp, #0x84 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sb - mov r1, r8 - bl NtsLengthSB - cmp r0, #0 - addlt sp, sp, #0x84 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r4, sb - add sb, sb, r0 - sub r8, r8, r0 - ldr r0, _02315924 ; =ov00_0231D3B8 - bl strlen - mov r2, r0 - ldr r0, _02315924 ; =ov00_0231D3B8 - mov r1, r4 - bl _msl_strnicmp__0208E248 - cmp r0, #0 - addne sp, sp, #0x84 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r8, #1 - addlt sp, sp, #0x84 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r2, [sb], #1 - sub r8, r8, #1 - and r0, r2, #0x80 - cmp r0, #0x80 - eoreq r2, r2, #0x80 - moveq r5, #1 - cmp r2, #7 - addhi sp, sp, #0x84 - ldmhiia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r5, #1 - ldrneb r1, [sl, #0x28] - movne r0, #1 - orrne r0, r1, r0, lsl r2 - bne _0231579C - mov r0, #0xff - mov r0, r0, lsl r2 - ldrb r1, [sl, #0x28] - mov r0, r0, lsl #0x18 - orr r0, r1, r0, asr #24 -_0231579C: - cmp r8, #1 - addlt sp, sp, #0x84 - strb r0, [sl, #0x28] - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r8, #0 - addle sp, sp, #0x84 - ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} -_023157B8: - ldrsb r0, [sb], #1 - sub r8, r8, #1 - str r0, [sp] - cmp r0, #0 - addlt sp, sp, #0x84 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r0, #2 - addgt sp, sp, #0x84 - ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrsb r0, [sb] - cmp r0, #0 - beq _023158F8 - ldr fp, _02315928 ; =ov00_0231D3B0 - add r4, sp, #4 -_023157F0: - mov r0, sb - mov r1, r8 - bl NtsLengthSB - cmp r0, #0 - addlt sp, sp, #0x84 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sp] - mov r6, sb - cmp r1, #0 - add sb, sb, r0 - sub r8, r8, r0 - bne _02315868 - mov r0, sb - mov r1, r8 - bl NtsLengthSB - cmp r0, #0 - addlt sp, sp, #0x84 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r5, sb - add sb, sb, r0 - sub r8, r8, r0 - mov r0, r6 - bl qr2_internal_is_master_only_key - cmp r0, #0 - bne _023158EC - mov r0, sl - mov r1, r6 - mov r2, r5 - bl SbServerAddKeyValue - b _023158EC -_02315868: - cmp r8, #1 - addlt sp, sp, #0x84 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrsb r5, [sb] - ldrsb r0, [sb, #1]! - sub r8, r8, #1 - cmp r0, #0 - beq _023158E0 -_02315888: - mov r0, sb - mov r1, r8 - bl NtsLengthSB - cmp r0, #0 - addlt sp, sp, #0x84 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r7, sb - mov r1, fp - mov r2, r6 - mov r3, r5 - add sb, sb, r0 - sub r8, r8, r0 - mov r0, r4 - bl OS_VsPrintf - mov r2, r7 - mov r0, sl - mov r1, r4 - bl SbServerAddKeyValue - add r5, r5, #1 - ldrsb r0, [sb] - cmp r0, #0 - bne _02315888 -_023158E0: - cmp r8, #0 - addgt sb, sb, #1 - subgt r8, r8, #1 -_023158EC: - ldrsb r0, [sb] - cmp r0, #0 - bne _023157F0 -_023158F8: - cmp r8, #0 - ble _02315914 - cmp r0, #0 - addne sp, sp, #0x84 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add sb, sb, #1 - sub r8, r8, #1 -_02315914: - cmp r8, #0 - bgt _023157B8 - add sp, sp, #0x84 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02315924: .word ov00_0231D3B8 -_02315928: .word ov00_0231D3B0 - arm_func_end SbServerParseQR2FullKeysSplit - - arm_func_start StringHash -StringHash: ; 0x0231592C - stmdb sp!, {r3, lr} - ldrsb lr, [r0] - mov ip, #0 - cmp lr, #0 - beq _0231596C - ldr r3, _0231597C ; =_020AECB0 - ldr r2, _02315980 ; =0x9CCF9319 -_02315948: - cmp lr, #0 - blt _0231595C - cmp lr, #0x80 - bge _0231595C - ldrb lr, [r3, lr] -_0231595C: - mla ip, r2, ip, lr - ldrsb lr, [r0, #1]! - cmp lr, #0 - bne _02315948 -_0231596C: - mov r0, ip - bl _u32_div_f - mov r0, r1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0231597C: .word _020AECB0 -_02315980: .word 0x9CCF9319 - arm_func_end StringHash - - arm_func_start KeyValFree -KeyValFree: ; 0x02315984 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r1, [r4] - mov r0, #0 - bl SbReleaseStr - ldr r1, [r4, #4] - mov r0, #0 - bl SbReleaseStr - ldmia sp!, {r4, pc} - arm_func_end KeyValFree - - arm_func_start KeyValHashKey -KeyValHashKey: ; 0x023159A8 - ldr ip, _023159B4 ; =StringHash - ldr r0, [r0] - bx ip - .align 2, 0 -_023159B4: .word StringHash - arm_func_end KeyValHashKey - - arm_func_start KeyValCompareKey -KeyValCompareKey: ; 0x023159B8 - stmdb sp!, {r3, lr} - ldr r0, [r0] - cmp r0, #0 - ldrne r1, [r1] - cmpne r1, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl strcasecmp - ldmia sp!, {r3, pc} - arm_func_end KeyValCompareKey - - arm_func_start SbServerGetPing -SbServerGetPing: ; 0x023159DC - ldr r0, [r0, #0x1c] - bx lr - arm_func_end SbServerGetPing - - arm_func_start SbAllocServer -SbAllocServer: ; 0x023159E4 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r0, #0x2c - mov r6, r1 - mov r5, r2 - bl gsimalloc - movs r4, r0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r1, _02315A84 ; =KeyValCompareKey - ldr ip, _02315A88 ; =KeyValFree - str r1, [sp] - mov r0, #8 - ldr r3, _02315A8C ; =KeyValHashKey - mov r1, r0 - mov r2, #4 - str ip, [sp, #4] - bl TableNew2_Gsi - str r0, [r4, #0x18] - cmp r0, #0 - bne _02315A50 - mov r0, r4 - bl gsifree - add sp, sp, #8 - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} -_02315A50: - mov r1, #0 - strb r1, [r4, #0x14] - strb r1, [r4, #0x15] - str r1, [r4, #0x24] - str r1, [r4, #0x1c] - str r1, [r4, #0x10] - str r6, [r4] - strh r5, [r4, #4] - str r1, [r4, #8] - mov r0, r4 - strh r1, [r4, #0xc] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_02315A84: .word KeyValCompareKey -_02315A88: .word KeyValFree -_02315A8C: .word KeyValHashKey - arm_func_end SbAllocServer - - arm_func_start SbServerSetFlags -SbServerSetFlags: ; 0x02315A90 - strb r1, [r0, #0x15] - bx lr - arm_func_end SbServerSetFlags - - arm_func_start SbServerSetPublicAddr -SbServerSetPublicAddr: ; 0x02315A98 - str r1, [r0, #8] - strh r2, [r0, #0xc] - bx lr - arm_func_end SbServerSetPublicAddr - - arm_func_start SbServerSetIcmpIp -SbServerSetIcmpIp: ; 0x02315AA4 - str r1, [r0, #0x10] - bx lr - arm_func_end SbServerSetIcmpIp - - arm_func_start SbServerSetState -SbServerSetState: ; 0x02315AAC - strb r1, [r0, #0x14] - bx lr - arm_func_end SbServerSetState - - arm_func_start SbServerGetState -SbServerGetState: ; 0x02315AB4 - ldrb r0, [r0, #0x14] - bx lr - arm_func_end SbServerGetState - - arm_func_start SbIsNullServer -SbIsNullServer: ; 0x02315ABC - ldr r1, _02315AD4 ; =ov00_023294F4 - ldr r1, [r1, #8] - cmp r0, r1 - moveq r0, #1 - movne r0, #0 - bx lr - .align 2, 0 -_02315AD4: .word ov00_023294F4 - arm_func_end SbIsNullServer - - arm_func_start ServerBrowserFree -ServerBrowserFree: ; 0x02315AD8 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x4c - bl SbServerListCleanup - mov r0, r4 - bl SbEngineCleanup - mov r0, r4 - bl gsifree - ldmia sp!, {r4, pc} - arm_func_end ServerBrowserFree - - arm_func_start ServerBrowserBeginUpdate2 -ServerBrowserBeginUpdate2: ; 0x02315AFC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x108 - ldr r8, [sp, #0x130] - mov sl, r0 - str r1, [sp, #4] - add r4, sp, #8 - mov sb, r3 - mov r1, #0x40 - mov r0, #0 -_02315B20: - strb r0, [r4] - strb r0, [r4, #1] - strb r0, [r4, #2] - strb r0, [r4, #3] - add r4, r4, #4 - subs r1, r1, #1 - bne _02315B20 - mov r5, #0 - str r2, [sl, #0x828] - mov r6, r5 - str r5, [sl, #0x40] - cmp r8, #0 - ble _02315BA8 - ldr r4, _02315C24 ; =ov00_0231CF68 - add fp, sp, #8 -_02315B5C: - ldrb r0, [sb, r6] - ldr r7, [r4, r0, lsl #2] - mov r0, r7 - bl strlen - add r0, r5, r0 - add r0, r0, #1 - cmp r0, #0x100 - bge _02315BA8 - ldr r1, _02315C28 ; =ov00_0231D3C4 - mov r2, r7 - add r0, fp, r5 - bl OS_VsPrintf - add r5, r5, r0 - ldrb r1, [sb, r6] - mov r0, sl - bl SbQueryEngineAddQueryKey - add r6, r6, #1 - cmp r6, r8 - blt _02315B5C -_02315BA8: - ldr r4, [sp, #0x13c] - ldr r2, [sp, #0x134] - ldr r3, [sp, #0x138] - add r1, sp, #8 - add r0, sl, #0x4c - str r4, [sp] - bl SbServerListConnectAndQuery - cmp r0, #0 - addne sp, sp, #0x108 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sp, #4] - cmp r1, #0 - addne sp, sp, #0x108 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r4, #0xa - b _02315BF8 -_02315BE8: - mov r0, r4 - bl msleep_gsi - mov r0, sl - bl ServerBrowserThink -_02315BF8: - ldr r1, [sl, #0x4c] - cmp r1, #3 - beq _02315BE8 - ldr r1, [sl, #0x10] - cmp r1, #0 - addle sp, sp, #0x108 - ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r0, #0 - beq _02315BE8 - add sp, sp, #0x108 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02315C24: .word ov00_0231CF68 -_02315C28: .word ov00_0231D3C4 - arm_func_end ServerBrowserBeginUpdate2 - - arm_func_start ServerBrowserLimitUpdateA -ServerBrowserLimitUpdateA: ; 0x02315C2C - stmdb sp!, {r3, lr} - sub sp, sp, #0x10 - ldr lr, [sp, #0x18] - ldr ip, [sp, #0x1c] - str lr, [sp] - str ip, [sp, #4] - mov lr, #0x80 - ldr ip, [sp, #0x20] - str lr, [sp, #8] - str ip, [sp, #0xc] - bl ServerBrowserBeginUpdate2 - add sp, sp, #0x10 - ldmia sp!, {r3, pc} - arm_func_end ServerBrowserLimitUpdateA - - arm_func_start ServerBrowserSendMessageToServerA -ServerBrowserSendMessageToServerA: ; 0x02315C60 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r5, r0 - mov r6, r2 - mov r0, r1 - mov r4, r3 - bl inet_addr_gsi - mov r3, r6, asr #8 - mov r2, r6, lsl #8 - ldr ip, [sp, #0x18] - mov r1, r0 - str ip, [sp] - and r3, r3, #0xff - and r0, r2, #0xff00 - orr r0, r3, r0 - mov r2, r0, lsl #0x10 - mov r3, r4 - add r0, r5, #0x4c - mov r2, r2, lsr #0x10 - bl SbSendMessageToServer - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end ServerBrowserSendMessageToServerA - - arm_func_start ServerBrowserSendNatNegotiateCookieToServerA -ServerBrowserSendNatNegotiateCookieToServerA: ; 0x02315CB8 - stmdb sp!, {r4, r5, r6, lr} - mov r5, r0 - mov r6, r2 - mov r0, r1 - mov r4, r3 - bl inet_addr_gsi - mov r3, r6, asr #8 - mov r2, r6, lsl #8 - mov r1, r0 - and r3, r3, #0xff - and r0, r2, #0xff00 - orr r0, r3, r0 - mov r2, r0, lsl #0x10 - mov r3, r4 - add r0, r5, #0x4c - mov r2, r2, lsr #0x10 - bl SbSendNatNegotiateCookieToServer - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ServerBrowserSendNatNegotiateCookieToServerA - - arm_func_start ServerBrowserThink -ServerBrowserThink: ; 0x02315D00 - stmdb sp!, {r4, lr} - mov r4, r0 - bl SbQueryEngineThink - add r0, r4, #0x4c - bl SbListThink - ldmia sp!, {r4, pc} - arm_func_end ServerBrowserThink - - arm_func_start ServerBrowserHalt -ServerBrowserHalt: ; 0x02315D18 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #0x4c - bl SbServerListDisconnect - mov r0, r4 - bl SbEngineHaltUpdates - ldmia sp!, {r4, pc} - arm_func_end ServerBrowserHalt - - arm_func_start ServerBrowserClear -ServerBrowserClear: ; 0x02315D34 - stmdb sp!, {r4, lr} - mov r4, r0 - bl ServerBrowserHalt - add r0, r4, #0x4c - bl SbServerListClear - ldmia sp!, {r4, pc} - arm_func_end ServerBrowserClear - - arm_func_start ServerBrowserState -ServerBrowserState: ; 0x02315D4C - ldr r1, [r0, #0x10] - cmp r1, #0 - movgt r0, #2 - bxgt lr - ldr r0, [r0, #0x4c] - cmp r0, #3 - cmpne r0, #0 - moveq r0, #1 - bxeq lr - cmp r0, #1 - moveq r0, #0 - movne r0, #3 - bx lr - arm_func_end ServerBrowserState - - arm_func_start ServerBrowserGetServer -ServerBrowserGetServer: ; 0x02315D80 - ldr ip, _02315D8C ; =SbServerListNth - add r0, r0, #0x4c - bx ip - .align 2, 0 -_02315D8C: .word SbServerListNth - arm_func_end ServerBrowserGetServer - - arm_func_start ServerBrowserGetMyPublicIpAddr -ServerBrowserGetMyPublicIpAddr: ; 0x02315D90 - ldr r0, [r0, #0x6f0] - bx lr - arm_func_end ServerBrowserGetMyPublicIpAddr - - arm_func_start SbServerListAppendServer -SbServerListAppendServer: ; 0x02315D98 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #4] - add r1, sp, #0xc - bl ArrayAppend_Gsi - ldr r2, [sp, #0xc] - ldr r3, [r4, #0x494] - ldr ip, [r4, #0x488] - mov r0, r4 - mov r1, #0 - blx ip - ldmia sp!, {r4, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SbServerListAppendServer - - arm_func_start SbServerListFindServerByIP -SbServerListFindServerByIP: ; 0x02315DD4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - ldr r0, [sb, #4] - mov r8, r1 - mov r7, r2 - bl ArrayLength_Gsi - mov r4, r0 - cmp r4, #0 - mov r6, #0 - ble _02315E3C -_02315DFC: - ldr r0, [sb, #4] - mov r1, r6 - bl ArrayNth_Gsi - ldr r5, [r0] - mov r0, r5 - bl SbServerGetPublicInetAddress - cmp r8, r0 - bne _02315E30 - mov r0, r5 - bl SbServerGetPublicQueryPortNbo - cmp r7, r0 - moveq r0, r6 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02315E30: - add r6, r6, #1 - cmp r6, r4 - blt _02315DFC -_02315E3C: - mvn r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end SbServerListFindServerByIP - - arm_func_start AddServerToDeadlist -AddServerToDeadlist: ; 0x02315E44 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - ldr r1, [r5, #0x7d8] - mov r0, r4 - cmp r1, #0 - bne _02315E6C - mov r1, #0 - bl SbServerSetNext - b _02315E70 -_02315E6C: - bl SbServerSetNext -_02315E70: - str r4, [r5, #0x7d8] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end AddServerToDeadlist - - arm_func_start SbServerListRemoveAt -SbServerListRemoveAt: ; 0x02315E78 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r0, [r6, #4] - mov r5, r1 - bl ArrayNth_Gsi - ldr r4, [r0] - ldr r3, [r6, #0x494] - ldr ip, [r6, #0x488] - mov r0, r6 - mov r2, r4 - mov r1, #2 - blx ip - ldr r0, [r6, #4] - mov r1, r5 - bl ArrayDeleteAt_Gsi - mov r0, r6 - mov r1, r4 - bl AddServerToDeadlist - ldmia sp!, {r4, r5, r6, pc} - arm_func_end SbServerListRemoveAt - - arm_func_start SbServerListNth -SbServerListNth: ; 0x02315EC4 - stmdb sp!, {r3, lr} - ldr r0, [r0, #4] - bl ArrayNth_Gsi - ldr r0, [r0] - ldmia sp!, {r3, pc} - arm_func_end SbServerListNth - - arm_func_start SbFreeDeadList -SbFreeDeadList: ; 0x02315ED8 - stmdb sp!, {r3, r4, r5, r6, lr} - sub sp, sp, #4 - mov r6, r0 - ldr r5, [r6, #0x7d8] - cmp r5, #0 - addeq sp, sp, #4 - ldmeqia sp!, {r3, r4, r5, r6, pc} - str r5, [sp] - beq _02315F20 - add r4, sp, #0 -_02315F00: - mov r0, r5 - bl SbServerGetNext - mov r5, r0 - mov r0, r4 - bl SbServerFree - str r5, [sp] - cmp r5, #0 - bne _02315F00 -_02315F20: - mov r0, #0 - str r0, [r6, #0x7d8] - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, pc} - arm_func_end SbFreeDeadList - - arm_func_start SbServerListClear -SbServerListClear: ; 0x02315F30 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r0, [r6, #4] - bl ArrayLength_Gsi - mov r5, r0 - cmp r5, #0 - mov r4, #0 - ble _02315F74 -_02315F50: - ldr r0, [r6, #4] - mov r1, r4 - bl ArrayNth_Gsi - ldr r1, [r0] - mov r0, r6 - bl AddServerToDeadlist - add r4, r4, #1 - cmp r4, r5 - blt _02315F50 -_02315F74: - ldr r0, [r6, #4] - bl ArrayClear_Gsi - mov r0, r6 - bl SbFreeDeadList - ldmia sp!, {r4, r5, r6, pc} - arm_func_end SbServerListClear - - arm_func_start SbRefStr -SbRefStr: ; 0x02315F88 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r4, r1 - mov r5, r0 - str r4, [sp] - bl SbRefStrHash - add r1, sp, #0 - bl TableLookup_Gsi - cmp r0, #0 - beq _02315FC8 - ldr r1, [r0, #4] - add sp, sp, #8 - add r1, r1, #1 - str r1, [r0, #4] - ldr r0, [r0] - ldmia sp!, {r3, r4, r5, pc} -_02315FC8: - mov r0, r4 - bl goastrdup - str r0, [sp] - mov r1, #1 - mov r0, r5 - str r1, [sp, #4] - bl SbRefStrHash - add r1, sp, #0 - bl TableEnter_Gsi - ldr r0, [sp] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SbRefStr - - arm_func_start SbReleaseStr -SbReleaseStr: ; 0x02315FF8 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - mov r4, r0 - str r1, [sp] - bl SbRefStrHash - add r1, sp, #0 - bl TableLookup_Gsi - cmp r0, #0 - addeq sp, sp, #8 - ldmeqia sp!, {r4, pc} - ldr r1, [r0, #4] - subs r1, r1, #1 - str r1, [r0, #4] - addne sp, sp, #8 - ldmneia sp!, {r4, pc} - mov r0, r4 - bl SbRefStrHash - add r1, sp, #0 - bl TableRemove_Gsi - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end SbReleaseStr - - arm_func_start NtsLengthSB -NtsLengthSB: ; 0x0231604C - cmp r1, #0 - mov r3, #0 - ble _02316074 -_02316058: - ldrsb r2, [r0, r3] - cmp r2, #0 - addeq r0, r3, #1 - bxeq lr - add r3, r3, #1 - cmp r3, r1 - blt _02316058 -_02316074: - mvn r0, #0 - bx lr - arm_func_end NtsLengthSB - - arm_func_start ErrorDisconnect -ErrorDisconnect: ; 0x0231607C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, r0 - ldr r5, [r4, #0x80] - cmp r5, #0 - ble _02316108 - ldr r0, _02316130 ; =ov00_0231D3C8 - ldr r6, [r0] - mov r0, r6 - bl strlen - cmp r5, r0 - bls _02316108 - ldr r0, _02316130 ; =ov00_0231D3C8 - ldr r5, [r4, #0x7c] - ldr r7, [r0] - mov r0, r7 - bl strlen - mov r2, r0 - mov r0, r5 - mov r1, r7 - bl strncmp - cmp r0, #0 - bne _02316108 - mov r0, r6 - bl strlen - mov r1, r0 - mov r0, r4 - add r1, r5, r1 - bl SbSetLastListErrorPtr - ldr r0, _02316134 ; =ov00_023294FC - ldr r3, [r4, #0x494] - ldr r2, [r0] - ldr ip, [r4, #0x488] - mov r0, r4 - mov r1, #5 - blx ip -_02316108: - ldr r0, _02316134 ; =ov00_023294FC - ldr r3, [r4, #0x494] - ldr r2, [r0] - ldr ip, [r4, #0x488] - mov r0, r4 - mov r1, #4 - blx ip - mov r0, r4 - bl SbServerListDisconnect - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02316130: .word ov00_0231D3C8 -_02316134: .word ov00_023294FC - arm_func_end ErrorDisconnect - - arm_func_start StringHash_Sb -StringHash_Sb: ; 0x02316138 - stmdb sp!, {r3, lr} - ldrsb lr, [r0] - mov ip, #0 - cmp lr, #0 - beq _02316178 - ldr r3, _02316188 ; =_020AECB0 - ldr r2, _0231618C ; =0x9CCF9319 -_02316154: - cmp lr, #0 - blt _02316168 - cmp lr, #0x80 - bge _02316168 - ldrb lr, [r3, lr] -_02316168: - mla ip, r2, ip, lr - ldrsb lr, [r0, #1]! - cmp lr, #0 - bne _02316154 -_02316178: - mov r0, ip - bl _u32_div_f - mov r0, r1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02316188: .word _020AECB0 -_0231618C: .word 0x9CCF9319 - arm_func_end StringHash_Sb - - arm_func_start ServerListConnect -ServerListConnect: ; 0x02316190 - stmdb sp!, {r4, lr} - sub sp, sp, #0x88 - mov r4, r0 - add r0, r4, #0xc - mov r1, #0x14 - bl StringHash_Sb - ldr r1, _023162B0 ; =ov00_02329500 - mov r3, r0 - ldr r1, [r1] - add r0, sp, #8 - cmp r1, #0 - beq _023161C8 - bl strcpy - b _023161D4 -_023161C8: - ldr r1, _023162B4 ; =ov00_0231D3E0 - add r2, r4, #0xc - bl OS_VsPrintf -_023161D4: - ldr r1, _023162B8 ; =0x0000EE70 - mov r2, #2 - add r0, sp, #8 - strb r2, [sp, #1] - strh r1, [sp, #2] - bl inet_addr_gsi - mvn r1, #0 - str r0, [sp, #4] - cmp r0, r1 - bne _02316240 - add r0, sp, #8 - bl Soc_GetHostByName - cmp r0, #0 - addeq sp, sp, #0x88 - moveq r0, #2 - ldmeqia sp!, {r4, pc} - ldr r0, [r0, #0xc] - add r3, sp, #4 - ldr r2, [r0] - ldrb r1, [r2] - ldrb r0, [r2, #1] - strb r1, [r3] - strb r0, [r3, #1] - ldrb r1, [r2, #2] - ldrb r0, [r2, #3] - strb r1, [r3, #2] - strb r0, [r3, #3] -_02316240: - ldr r0, [r4, #0x6b4] - mvn r1, #0 - cmp r0, r1 - bne _02316278 - mov r0, #2 - mov r1, #1 - mov r2, #0 - bl SocketCreate - mvn r1, #0 - cmp r0, r1 - str r0, [r4, #0x6b4] - addeq sp, sp, #0x88 - moveq r0, #1 - ldmeqia sp!, {r4, pc} -_02316278: - add r1, sp, #0 - mov r2, #8 - bl SocketConnect - cmp r0, #0 - addeq sp, sp, #0x88 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0x6b4] - bl SocketClose - mvn r0, #0 - str r0, [r4, #0x6b4] - mov r0, #3 - add sp, sp, #0x88 - ldmia sp!, {r4, pc} - .align 2, 0 -_023162B0: .word ov00_02329500 -_023162B4: .word ov00_0231D3E0 -_023162B8: .word 0x0000EE70 - arm_func_end ServerListConnect - - arm_func_start BufferAddNtS -BufferAddNtS: ; 0x023162BC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - movs r7, r1 - ldreq r7, _02316308 ; =ov00_0231D3DC - mov r4, r0 - mov r0, r7 - mov r6, r2 - bl strlen - add r5, r0, #1 - ldr r0, [r4] - mov r1, r7 - mov r2, r5 - bl memcpy - ldr r0, [r6] - add r0, r0, r5 - str r0, [r6] - ldr r0, [r4] - add r0, r0, r5 - str r0, [r4] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02316308: .word ov00_0231D3DC - arm_func_end BufferAddNtS - - arm_func_start BufferAddByte -BufferAddByte: ; 0x0231630C - ldr r3, [r0] - strb r1, [r3] - ldr r1, [r2] - add r1, r1, #1 - str r1, [r2] - ldr r1, [r0] - add r1, r1, #1 - str r1, [r0] - bx lr - arm_func_end BufferAddByte - - arm_func_start BufferAddInt -BufferAddInt: ; 0x02316330 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add ip, sp, #0xc - ldrb r3, [ip] - ldrb r1, [ip, #1] - ldr lr, [r0] - strb r3, [lr] - strb r1, [lr, #1] - ldrb r3, [ip, #2] - ldrb r1, [ip, #3] - strb r3, [lr, #2] - strb r1, [lr, #3] - ldr r1, [r2] - add r1, r1, #4 - str r1, [r2] - ldr r1, [r0] - add r1, r1, #4 - str r1, [r0] - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end BufferAddInt - - arm_func_start BufferAddIntLE -BufferAddIntLE: ; 0x02316384 - stmdb sp!, {r4, lr} - mov ip, r1, lsr #0x18 - mov r3, r1, lsr #8 - mov lr, r1, lsl #8 - mov r4, r1, lsl #0x18 - and ip, ip, #0xff - and r1, r3, #0xff00 - and r3, lr, #0xff0000 - orr r1, ip, r1 - and r4, r4, #0xff000000 - orr r1, r3, r1 - orr r4, r4, r1 - mov r1, #0 - orr r3, r1, r4, lsl #24 - and r1, r4, #0xff00 - orr r3, r3, r1, lsl #8 - and r1, r4, #0xff0000 - orr r3, r3, r1, lsr #8 - and r1, r4, #0xff000000 - orr r1, r3, r1, lsr #24 - bl BufferAddInt - ldmia sp!, {r4, pc} - arm_func_end BufferAddIntLE - - arm_func_start BufferAddData -BufferAddData: ; 0x023163DC - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r0, [r6] - mov r4, r3 - mov r5, r2 - bl memcpy - ldr r0, [r4] - add r0, r0, r5 - str r0, [r4] - ldr r0, [r6] - add r0, r0, r5 - str r0, [r6] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end BufferAddData - - arm_func_start SetupListChallenge -SetupListChallenge: ; 0x02316410 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - bl rand - ldr r5, _023164F8 ; =0x2C0B02C1 - mov r8, #0 - smull r2, r4, r5, r0 - mov r1, r0, lsr #0x1f - add r4, r1, r4, asr #4 - mov r3, #0x5d - smull r1, r2, r3, r4 - sub r4, r0, r1 - add r0, r4, #0x21 - mov r7, #1 - strb r0, [sl, #0x74] - mov fp, r8 - mov r6, r7 - mov r4, r3 -_02316454: - add sb, sl, r7 - ldrsb r3, [sb, #0x73] - ldrsb r0, [sl, #0x74] - cmp r3, r0 - eor r3, r7, r3 - movlt r1, r6 - and r3, r3, #1 - movge r1, fp - cmp r0, #0x4f - movlt r2, #1 - and r0, r0, #1 - eor r3, r8, r3 - movge 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, #0x74] - beq _023164C8 - ldrsb r0, [sb, #0x74] - tst r0, #1 - beq _023164DC -_023164C8: - cmp r8, #0 - ldreqsb r0, [sb, #0x74] - andeq r0, r0, #1 - cmpeq r0, #1 - bne _023164E8 -_023164DC: - ldrsb r0, [sb, #0x74] - add r0, r0, #1 - strb r0, [sb, #0x74] -_023164E8: - add r7, r7, #1 - cmp r7, #8 - blt _02316454 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_023164F8: .word 0x2C0B02C1 - arm_func_end SetupListChallenge - - arm_func_start SendWithRetry -SendWithRetry: ; 0x023164FC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - mov sb, r1 - mov r8, r2 - mov r7, #1 - mov fp, #2 - mov r5, #0 -_02316518: - ldr r0, [sl, #0x6b4] - mov r1, sb - mov r2, r8 - mov r3, r5 - sub r7, r7, #1 - bl SocketSend - mov r6, r0 - cmp r6, #0 - bgt _02316590 - cmp r7, #0 - blt _02316590 - ldr r0, [sl, #0x80] - cmp r0, #0 - bgt _02316590 - mov r0, sl - bl SbServerListDisconnect - mov r1, #0 - mov r2, r1 - mov r0, sl - mov r3, fp - str r2, [sp] - bl SbServerListConnectAndQuery - movs r4, r0 - beq _02316588 - mov r0, sl - bl ErrorDisconnect - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} -_02316588: - cmp r7, #0 - bge _02316518 -_02316590: - cmp r6, #0 - movle r0, #3 - movgt r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end SendWithRetry - - arm_func_start SbServerListConnectAndQuery -SbServerListConnectAndQuery: ; 0x023165A0 - stmdb sp!, {r4, r5, r6, r7, lr} - sub sp, sp, #0x30c - movs r7, r1 - ldreq r7, _023167D8 ; =ov00_0231D3DC - mov r6, r2 - mov r5, r0 - cmp r6, #0 - ldreq r6, _023167D8 ; =ov00_0231D3DC - mov r0, r7 - mov r4, r3 - bl strlen - cmp r0, #0x100 - addhi sp, sp, #0x30c - movhi r0, #6 - ldmhiia sp!, {r4, r5, r6, r7, pc} - mov r0, r6 - bl strlen - cmp r0, #0x100 - addhi sp, sp, #0x30c - movhi r0, #6 - ldmhiia sp!, {r4, r5, r6, r7, pc} - mov r0, r5 - bl ServerListConnect - cmp r0, #0 - addne sp, sp, #0x30c - ldmneia sp!, {r4, r5, r6, r7, pc} - mov r0, r5 - str r4, [r5, #0x7c8] - bl SetupListChallenge - add r3, sp, #0xe - mov ip, #2 - add r0, sp, #4 - add r2, sp, #8 - mov r1, #0 - str ip, [sp, #8] - str r3, [sp, #4] - bl BufferAddByte - add r0, sp, #4 - add r2, sp, #8 - mov r1, #1 - bl BufferAddByte - add r0, sp, #4 - mov r1, #3 - add r2, sp, #8 - bl BufferAddByte - ldr r1, [r5, #0x6bc] - add r0, sp, #4 - add r2, sp, #8 - bl BufferAddIntLE - add r0, sp, #4 - add r1, r5, #0xc - add r2, sp, #8 - bl BufferAddNtS - add r0, sp, #4 - add r1, r5, #0x30 - add r2, sp, #8 - bl BufferAddNtS - add r0, sp, #4 - add r1, r5, #0x74 - mov r2, #8 - add r3, sp, #8 - bl BufferAddData - mov r1, r6 - add r0, sp, #4 - add r2, sp, #8 - bl BufferAddNtS - mov r1, r7 - add r0, sp, #4 - add r2, sp, #8 - bl BufferAddNtS - mov r1, r4, lsl #0x18 - and ip, r1, #0xff000000 - mov r1, r4, lsl #8 - and r3, r1, #0xff0000 - mov r1, r4, lsr #0x18 - and r2, r1, #0xff - mov r1, r4, lsr #8 - and r1, r1, #0xff00 - orr r1, r2, r1 - orr r1, r3, r1 - add r0, sp, #4 - orr r1, ip, r1 - add r2, sp, #8 - bl BufferAddInt - ldr r0, [r5, #0x7c8] - tst r0, #8 - beq _0231670C - ldr r1, [r5, #0x6a8] - add r0, sp, #4 - add r2, sp, #8 - bl BufferAddInt -_0231670C: - ldr r0, [r5, #0x7c8] - tst r0, #0x80 - beq _02316728 - ldr r1, [sp, #0x320] - add r0, sp, #4 - add r2, sp, #8 - bl BufferAddIntLE -_02316728: - ldr r2, [sp, #8] - add r4, sp, #0 - mov r0, r2, 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] - ldrb r3, [r4] - add r1, sp, #0xc - ldrb r0, [r4, #1] - strb r3, [r1] - mov r3, #0 - strb r0, [r1, #1] - ldr r0, [r5, #0x6b4] - bl SocketSend - cmp r0, #0 - bgt _0231678C - mov r0, r5 - bl SbServerListDisconnect - add sp, sp, #0x30c - mov r0, #3 - ldmia sp!, {r4, r5, r6, r7, pc} -_0231678C: - mov r0, #3 - str r0, [r5] - mov r0, #0 - str r0, [r5, #0x7cc] - ldr r0, [r5, #0x7c] - cmp r0, #0 - bne _023167CC - mov r0, #0x1000 - bl gsimalloc - cmp r0, #0 - str r0, [r5, #0x7c] - addeq sp, sp, #0x30c - moveq r0, #5 - ldmeqia sp!, {r4, r5, r6, r7, pc} - mov r0, #0 - str r0, [r5, #0x80] -_023167CC: - mov r0, #0 - add sp, sp, #0x30c - ldmia sp!, {r4, r5, r6, r7, pc} - .align 2, 0 -_023167D8: .word ov00_0231D3DC - arm_func_end SbServerListConnectAndQuery - - arm_func_start FreePopularValues -FreePopularValues: ; 0x023167DC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5, #0x480] - mov r4, #0 - cmp r0, #0 - ble _02316814 -_023167F4: - add r0, r5, r4, lsl #2 - ldr r1, [r0, #0x84] - mov r0, r5 - bl SbReleaseStr - ldr r0, [r5, #0x480] - add r4, r4, #1 - cmp r4, r0 - blt _023167F4 -_02316814: - mov r0, #0 - str r0, [r5, #0x480] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end FreePopularValues - - arm_func_start FreeKeyList -FreeKeyList: ; 0x02316820 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5, #8] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r4, #0 - bl ArrayLength_Gsi - cmp r0, #0 - ble _02316870 -_02316844: - ldr r0, [r5, #8] - mov r1, r4 - bl ArrayNth_Gsi - ldr r1, [r0] - mov r0, r5 - bl SbReleaseStr - ldr r0, [r5, #8] - add r4, r4, #1 - bl ArrayLength_Gsi - cmp r4, r0 - blt _02316844 -_02316870: - ldr r0, [r5, #8] - bl ArrayFree_Gsi - mov r0, #0 - str r0, [r5, #8] - ldmia sp!, {r3, r4, r5, pc} - arm_func_end FreeKeyList - - arm_func_start SbServerListDisconnect -SbServerListDisconnect: ; 0x02316884 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x7c] - cmp r0, #0 - beq _0231689C - bl gsifree -_0231689C: - mov r1, #0 - str r1, [r4, #0x7c] - str r1, [r4, #0x80] - ldr r0, [r4, #0x6b4] - sub r1, r1, #1 - cmp r0, r1 - beq _023168BC - bl SocketClose -_023168BC: - mvn r1, #0 - mov r0, r4 - str r1, [r4, #0x6b4] - mov r1, #1 - str r1, [r4] - bl FreeKeyList - mvn r1, #0 - mov r0, r4 - str r1, [r4, #0x484] - bl FreePopularValues - ldmia sp!, {r4, pc} - arm_func_end SbServerListDisconnect - - arm_func_start SbServerListCleanup -SbServerListCleanup: ; 0x023168E8 - stmdb sp!, {r4, lr} - mov r4, r0 - bl SbServerListDisconnect - mov r0, r4 - bl SbServerListClear - mov r0, r4 - bl SbRefStrHashCleanup - ldr r0, [r4, #4] - cmp r0, #0 - beq _02316914 - bl ArrayFree_Gsi -_02316914: - mov r0, #0 - str r0, [r4, #4] - ldmia sp!, {r4, pc} - arm_func_end SbServerListCleanup - - arm_func_start InitCryptKey -InitCryptKey: ; 0x02316920 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - mov r7, r2 - add r0, sb, #0x54 - mov r8, r1 - bl strlen - mov r5, r0 - cmp r7, #0 - add r6, sb, #0x54 - mov r4, #0 - ble _023169A8 -_0231694C: - mov r0, r4 - mov r1, r5 - bl _s32_div_f - ldrsb r1, [r6, r1] - mov r2, r4, lsr #0x1f - rsb r0, r2, r4, lsl #29 - mul r3, r4, r1 - mov r1, r3, lsr #0x1f - add r2, r2, r0, ror #29 - rsb r0, r1, r3, lsl #29 - add r2, sb, r2 - add r3, r1, r0, ror #29 - ldrsb r0, [r8, r4] - ldrsb r1, [r2, #0x74] - add r2, sb, r3 - add r4, r4, #1 - eor r0, r1, r0 - ldrsb r1, [r2, #0x74] - mov r0, r0, lsl #0x18 - cmp r4, r7 - eor r0, r1, r0, asr #24 - strb r0, [r2, #0x74] - blt _0231694C -_023169A8: - add r0, sb, #0x6c0 - add r1, sb, #0x74 - mov r2, #8 - bl GoaCryptInit - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end InitCryptKey - - arm_func_start ServerSizeForFlags -ServerSizeForFlags: ; 0x023169BC - mov r1, #5 - tst r0, #2 - addne r1, r1, #4 - tst r0, #8 - addne r1, r1, #4 - tst r0, #0x10 - addne r1, r1, #2 - tst r0, #0x20 - addne r1, r1, #2 - mov r0, r1 - bx lr - arm_func_end ServerSizeForFlags - - arm_func_start FullRulesPresent -FullRulesPresent: ; 0x023169E8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - b _02316A38 -_023169F8: - mov r0, r5 - mov r1, r4 - bl NtsLengthSB - cmp r0, #0 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, pc} - sub r4, r4, r0 - add r5, r5, r0 - mov r0, r5 - mov r1, r4 - bl NtsLengthSB - cmp r0, #0 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, pc} - add r5, r5, r0 - sub r4, r4, r0 -_02316A38: - cmp r4, #0 - ble _02316A4C - ldrsb r0, [r5] - cmp r0, #0 - bne _023169F8 -_02316A4C: - cmp r4, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrsb r0, [r5] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end FullRulesPresent - - arm_func_start AllKeysPresent -AllKeysPresent: ; 0x02316A6C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r8, r0 - ldr r0, [r8, #8] - mov r7, r1 - mov r6, r2 - bl ArrayLength_Gsi - mov r4, r0 - cmp r4, #0 - mov r5, #0 - ble _02316B3C - mvn sb, #0 -_02316A98: - ldr r0, [r8, #8] - mov r1, r5 - bl ArrayNth_Gsi - ldr r0, [r0, #4] - cmp r0, #0 - beq _02316ADC - cmp r0, #1 - beq _02316AC4 - cmp r0, #2 - beq _02316AD0 - b _02316B1C -_02316AC4: - add r7, r7, #1 - sub r6, r6, #1 - b _02316B24 -_02316AD0: - add r7, r7, #2 - sub r6, r6, #2 - b _02316B24 -_02316ADC: - cmp r6, #1 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldrb r0, [r7], #1 - sub r6, r6, #1 - cmp r0, #0xff - bne _02316B24 - mov r0, r7 - mov r1, r6 - bl NtsLengthSB - cmp r0, sb - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r7, r7, r0 - sub r6, r6, r0 - b _02316B24 -_02316B1C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02316B24: - cmp r6, #0 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r5, r5, #1 - cmp r5, r4 - blt _02316A98 -_02316B3C: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - arm_func_end AllKeysPresent - - arm_func_start ParseServerIpPort -ParseServerIpPort: ; 0x02316B44 - stmdb sp!, {r4, lr} - cmp r2, #5 - ldmltia sp!, {r4, pc} - ldrb r4, [r1] - ldrb lr, [r1, #1] - ldrb ip, [r1, #2] - tst r4, #0x10 - strb lr, [r3] - strb ip, [r3, #1] - ldrb lr, [r1, #3] - ldrb ip, [r1, #4] - strb lr, [r3, #2] - strb ip, [r3, #3] - beq _02316BA0 - sub r0, r2, #5 - cmp r0, #2 - ldmltia sp!, {r4, pc} - ldrb r2, [r1, #5] - ldrb r0, [r1, #6] - ldr r1, [sp, #8] - strb r2, [r1] - strb r0, [r1, #1] - ldmia sp!, {r4, pc} -_02316BA0: - add r0, r0, #0x600 - ldrh r1, [r0, #0xac] - ldr r0, [sp, #8] - strh r1, [r0] - ldmia sp!, {r4, pc} - arm_func_end ParseServerIpPort - - arm_func_start ParseServer -ParseServer: ; 0x02316BB4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0xc - mov r8, r2 - ldrb r5, [r8], #5 - mov sb, r1 - mov sl, r0 - mov r7, r3 - mov r0, sb - mov r1, r5 - str r7, [sp] - ldr r6, [sp, #0x30] - bl SbServerSetFlags - tst r5, #0x10 - sub r7, r7, #5 - addne r8, r8, #2 - subne r7, r7, #2 - tst r5, #2 - moveq r0, #0 - streq r0, [sp, #8] - beq _02316C30 - ldrb r1, [r8] - ldrb r0, [r8, #1] - add r2, sp, #8 - sub r7, r7, #4 - strb r1, [r2] - strb r0, [r2, #1] - ldrb r1, [r8, #2] - ldrb r0, [r8, #3] - add r8, r8, #4 - strb r1, [r2, #2] - strb r0, [r2, #3] -_02316C30: - tst r5, #0x20 - addeq r0, sl, #0x600 - ldreqh r0, [r0, #0xac] - streqh r0, [sp, #4] - beq _02316C60 - ldrb r1, [r8] - ldrb r0, [r8, #1] - add r2, sp, #4 - add r8, r8, #2 - strb r1, [r2] - strb r0, [r2, #1] - sub r7, r7, #2 -_02316C60: - ldrh r2, [sp, #4] - ldr r1, [sp, #8] - mov r0, sb - bl SbServerSetPublicAddr - tst r5, #8 - beq _02316CB0 - ldrb r2, [r8] - ldrb r1, [r8, #1] - add r3, sp, #8 - mov r0, sb - strb r2, [r3] - strb r1, [r3, #1] - ldrb r2, [r8, #2] - ldrb r1, [r8, #3] - add r8, r8, #4 - sub r7, r7, #4 - strb r2, [r3, #2] - strb r1, [r3, #3] - ldr r1, [sp, #8] - bl SbServerSetIcmpIp -_02316CB0: - tst r5, #0x40 - beq _02316DDC - ldr r0, [sl, #8] - bl ArrayLength_Gsi - mov fp, r0 - cmp fp, #0 - mov r4, #0 - ble _02316DC4 -_02316CD0: - ldr r0, [sl, #8] - mov r1, r4 - bl ArrayNth_Gsi - mov r1, r0 - ldr r0, [r1, #4] - cmp r0, #0 - beq _02316D64 - cmp r0, #1 - beq _02316D00 - cmp r0, #2 - beq _02316D18 - b _02316DB8 -_02316D00: - ldrb r2, [r8], #1 - ldr r1, [r1] - mov r0, sb - bl SbServerAddIntKeyValue - sub r7, r7, #1 - b _02316DB8 -_02316D18: - ldrb ip, [r8] - ldrb r3, [r8, #1] - add r2, sp, #6 - mov r0, sb - strb ip, [r2] - strb r3, [r2, #1] - ldrh r3, [sp, #6] - ldr r1, [r1] - mov r2, r3, asr #8 - mov r3, r3, lsl #8 - and r2, r2, #0xff - and r3, r3, #0xff00 - orr r2, r2, r3 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - bl SbServerAddIntKeyValue - add r8, r8, #2 - sub r7, r7, #2 - b _02316DB8 -_02316D64: - cmp r6, #0 - ldrneb r0, [r8], #1 - subne r7, r7, #1 - moveq r0, #0xff - cmp r0, #0xff - bne _02316DA4 - ldr r1, [r1] - mov r0, sb - mov r2, r8 - bl SbServerAddKeyValue - mov r0, r8 - bl strlen - add r0, r0, #1 - add r8, r8, r0 - sub r7, r7, r0 - b _02316DB8 -_02316DA4: - add r0, sl, r0, lsl #2 - ldr r1, [r1] - ldr r2, [r0, #0x84] - mov r0, sb - bl SbServerAddKeyValue -_02316DB8: - add r4, r4, #1 - cmp r4, fp - blt _02316CD0 -_02316DC4: - mov r0, sb - bl SbServerGetState - orr r1, r0, #1 - mov r0, sb - and r1, r1, #0xff - bl SbServerSetState -_02316DDC: - tst r5, #0x80 - beq _02316E54 - b _02316E24 -_02316DE8: - mov r0, r8 - mov r4, r8 - bl strlen - add r3, r0, #1 - add r8, r8, r3 - mov r0, sb - mov r1, r4 - mov r2, r8 - sub r7, r7, r3 - bl SbServerAddKeyValue - mov r0, r8 - bl strlen - add r0, r0, #1 - add r8, r8, r0 - sub r7, r7, r0 -_02316E24: - ldrsb r0, [r8] - cmp r0, #0 - beq _02316E38 - cmp r7, #0 - bgt _02316DE8 -_02316E38: - mov r0, sb - sub r7, r7, #1 - bl SbServerGetState - orr r1, r0, #2 - mov r0, sb - and r1, r1, #0xff - bl SbServerSetState -_02316E54: - mov r0, sb - bl SbServerGetState - tst r5, #0xc0 - bne _02316E7C - tst r0, #3 - beq _02316E7C - and r1, r0, #0xfc - mov r0, sb - and r1, r1, #0xff - bl SbServerSetState -_02316E7C: - ldr r0, [sp] - sub r0, r0, r7 - add sp, sp, #0xc - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ParseServer - - arm_func_start IncomingListParseServer -IncomingListParseServer: ; 0x02316E8C - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - mov r4, r2 - cmp r4, #1 - mov r6, r0 - mov r5, r1 - addlt sp, sp, #0xc - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, pc} - ldrb r8, [r5] - mov r0, r8 - bl ServerSizeForFlags - mov r7, r0 - cmp r4, r7 - addlt sp, sp, #0xc - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, pc} - tst r8, #0x40 - beq _02316EF8 - mov r0, r6 - add r1, r5, r7 - sub r2, r4, r7 - bl AllKeysPresent - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02316EF8: - tst r8, #0x80 - beq _02316F1C - add r0, r5, r7 - sub r1, r4, r7 - bl FullRulesPresent - cmp r0, #0 - addeq sp, sp, #0xc - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02316F1C: - ldr r1, _02316FB8 ; =ov00_0231D3FC - add r0, r5, #1 - mov r2, #4 - bl memcmp - cmp r0, #0 - addeq sp, sp, #0xc - mvneq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} - add r7, sp, #4 - add r3, sp, #8 - mov r0, r6 - mov r1, r5 - mov r2, r4 - str r7, [sp] - bl ParseServerIpPort - ldrh r2, [sp, #4] - ldr r1, [sp, #8] - mov r0, r6 - bl SbAllocServer - mov r7, r0 - bl SbIsNullServer - cmp r0, #0 - addne sp, sp, #0xc - mvnne r0, #1 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} - mov ip, #1 - mov r0, r6 - mov r1, r7 - mov r2, r5 - mov r3, r4 - str ip, [sp] - bl ParseServer - mov r4, r0 - mov r0, r6 - mov r1, r7 - bl SbServerListAppendServer - mov r0, r4 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02316FB8: .word ov00_0231D3FC - arm_func_end IncomingListParseServer - - arm_func_start SbSetLastListErrorPtr -SbSetLastListErrorPtr: ; 0x02316FBC - str r1, [r0, #0x6b0] - bx lr - arm_func_end SbSetLastListErrorPtr - - arm_func_start ProcessMainListData -ProcessMainListData: ; 0x02316FC4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #8 - mov r7, r0 - ldr r1, [r7, #0x7cc] - ldr r5, [r7, #0x7c] - ldr r6, [r7, #0x80] - cmp r1, #4 - addls pc, pc, r1, lsl #2 - b _023173B0 -_02316FE8: ; jump table - b _02316FFC ; case 0 - b _02317088 ; case 1 - b _02317188 ; case 2 - b _02317274 ; case 3 - b _02317320 ; case 4 -_02316FFC: - cmp r6, #1 - blt _023173B0 - ldrb r1, [r5] - eor r1, r1, #0xec - add r3, r1, #2 - cmp r6, r3 - blt _023173B0 - sub r1, r3, #1 - ldrb r1, [r5, r1] - eor r2, r1, #0xea - add r4, r3, r2 - cmp r6, r4 - blt _023173B0 - add r1, r5, r3 - bl InitCryptKey - mov r0, #1 - str r0, [r7, #0x7cc] - ldrb r1, [r5, #1] - ldrb r0, [r5, #2] - add r3, r7, #0x700 - add r5, r5, r4 - strb r1, [r7, #0x7d0] - strb r0, [r7, #0x7d1] - ldrh r0, [r3, #0xd0] - sub r6, r6, r4 - mov r1, r5 - mov r2, r0, asr #8 - mov r0, r0, lsl #8 - and r2, r2, #0xff - and r0, r0, #0xff00 - orr r4, r2, r0 - mov r2, r6 - add r0, r7, #0x6c0 - strh r4, [r3, #0xd0] - bl GoaEncrypt -_02317088: - cmp r6, #6 - blt _023173B0 - ldrb r3, [r5] - ldrb r1, [r5, #1] - ldr r2, _023173E8 ; =ov00_023294FC - mov r0, r7 - strb r3, [r7, #0x6a4] - strb r1, [r7, #0x6a5] - ldrb r4, [r5, #2] - ldrb r3, [r5, #3] - mov r1, #6 - strb r4, [r7, #0x6a6] - strb r3, [r7, #0x6a7] - ldr r2, [r2] - ldr r3, [r7, #0x494] - ldr r4, [r7, #0x488] - blx r4 - ldrb r3, [r5, #4] - ldrb r2, [r5, #5] - add r0, r7, #0x600 - ldr r1, _023173EC ; =0x0000FFFF - strb r3, [r7, #0x6ac] - strb r2, [r7, #0x6ad] - ldrh r0, [r0, #0xac] - cmp r0, r1 - bne _0231713C - add r0, r5, #6 - sub r1, r6, #6 - bl NtsLengthSB - mvn r1, #0 - cmp r0, r1 - beq _023173B0 - mov r0, r7 - add r1, r5, #6 - bl SbSetLastListErrorPtr - ldr r0, _023173E8 ; =ov00_023294FC - ldr r3, [r7, #0x494] - ldr r2, [r0] - ldr r4, [r7, #0x488] - mov r0, r7 - mov r1, #5 - blx r4 - ldr r0, [r7, #0x7c] - cmp r0, #0 - beq _023173B0 -_0231713C: - ldr r0, [r7, #0x7c8] - add r5, r5, #6 - tst r0, #2 - sub r6, r6, #6 - bne _02317164 - add r0, r7, #0x600 - ldrh r1, [r0, #0xac] - ldr r0, _023173EC ; =0x0000FFFF - cmp r1, r0 - bne _02317178 -_02317164: - mov r0, #5 - str r0, [r7, #0x7cc] - mov r0, #2 - str r0, [r7] - b _023173B0 -_02317178: - mov r0, #2 - str r0, [r7, #0x7cc] - sub r0, r0, #3 - str r0, [r7, #0x484] -_02317188: - ldr r1, [r7, #0x484] - mvn r0, #0 - cmp r1, r0 - bne _023171D0 - cmp r6, #1 - blt _023173B0 - ldrb r1, [r5] - mov r0, #8 - mov r2, #0 - str r1, [r7, #0x484] - bl ArrayNew_Gsi - cmp r0, #0 - str r0, [r7, #8] - addeq sp, sp, #8 - moveq r0, #5 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - add r5, r5, #1 - sub r6, r6, #1 -_023171D0: - ldr r0, [r7, #8] - bl ArrayLength_Gsi - ldr r1, [r7, #0x484] - cmp r1, r0 - ble _02317250 - add r8, sp, #0 - mvn r4, #0 -_023171EC: - cmp r6, #2 - blt _02317250 - add r0, r5, #1 - sub r1, r6, #1 - bl NtsLengthSB - mov sb, r0 - cmp sb, r4 - beq _02317250 - ldrb r2, [r5] - mov r0, r7 - add r1, r5, #1 - str r2, [sp, #4] - bl SbRefStr - str r0, [sp] - ldr r0, [r7, #8] - mov r1, r8 - bl ArrayAppend_Gsi - add r1, sb, #1 - ldr r0, [r7, #8] - add r5, r5, r1 - sub r6, r6, r1 - bl ArrayLength_Gsi - ldr r1, [r7, #0x484] - cmp r1, r0 - bgt _023171EC -_02317250: - ldr r0, [r7, #8] - bl ArrayLength_Gsi - ldr r1, [r7, #0x484] - cmp r1, r0 - bgt _023173B0 - mov r0, #3 - str r0, [r7, #0x7cc] - sub r0, r0, #4 - str r0, [r7, #0x484] -_02317274: - ldr r1, [r7, #0x484] - mvn r0, #0 - cmp r1, r0 - bne _023172A0 - cmp r6, #1 - blt _023173B0 - ldrb r1, [r5], #1 - mov r0, #0 - sub r6, r6, #1 - str r1, [r7, #0x484] - str r0, [r7, #0x480] -_023172A0: - ldr r1, [r7, #0x484] - ldr r0, [r7, #0x480] - cmp r1, r0 - ble _02317308 - mvn r8, #0 -_023172B4: - mov r0, r5 - mov r1, r6 - bl NtsLengthSB - mov r4, r0 - cmp r4, r8 - beq _02317308 - mov r0, r7 - mov r1, r5 - bl SbRefStr - ldr r1, [r7, #0x480] - add r5, r5, r4 - mov r2, r1 - add r1, r1, #1 - str r1, [r7, #0x480] - add r1, r7, r2, lsl #2 - str r0, [r1, #0x84] - ldr r1, [r7, #0x484] - ldr r0, [r7, #0x480] - sub r6, r6, r4 - cmp r1, r0 - bgt _023172B4 -_02317308: - ldr r1, [r7, #0x484] - ldr r0, [r7, #0x480] - cmp r1, r0 - bgt _023173B0 - mov r0, #4 - str r0, [r7, #0x7cc] -_02317320: - cmp r6, #5 - blt _023173B0 - mvn r4, #0 - sub r8, r4, #1 - mov sb, #0 -_02317334: - mov r0, r7 - mov r1, r5 - mov r2, r6 - bl IncomingListParseServer - cmp r0, r8 - addeq sp, sp, #8 - moveq r0, #5 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r0, r4 - bne _02317394 - mov r0, #5 - str r0, [r7, #0x7cc] - mov r0, #2 - str r0, [r7] - ldr r0, _023173E8 ; =ov00_023294FC - ldr r3, [r7, #0x494] - ldr r2, [r0] - ldr r4, [r7, #0x488] - mov r0, r7 - mov r1, #3 - sub r6, r6, #5 - add r5, r5, #5 - blx r4 - b _023173B0 -_02317394: - ldr r1, [r7, #0x7c] - add r5, r5, r0 - cmp r1, #0 - sub r6, r6, r0 - moveq r0, sb - cmp r0, #0 - bne _02317334 -_023173B0: - ldr r0, [r7, #0x7c] - cmp r0, #0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - cmp r6, #0 - beq _023173D8 - mov r1, r5 - mov r2, r6 - bl memmove -_023173D8: - str r6, [r7, #0x80] - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_023173E8: .word ov00_023294FC -_023173EC: .word 0x0000FFFF - arm_func_end ProcessMainListData - - arm_func_start ProcessPushKeyList -ProcessPushKeyList: ; 0x023173F0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sl, r0 - ldr r3, [sl, #8] - mov sb, r1 - mov r8, r2 - cmp r3, #0 - sub r8, r8, #1 - ldrb r7, [sb], #1 - beq _0231741C - bl FreeKeyList -_0231741C: - mov r1, r7 - mov r0, #8 - mov r2, #0 - bl ArrayNew_Gsi - cmp r0, #0 - str r0, [sl, #8] - addeq sp, sp, #8 - moveq r0, #5 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - cmp r7, #0 - mov r6, #0 - ble _023174C0 - add fp, sp, #0 - mvn r4, #0 -_02317454: - cmp r8, #2 - addlt sp, sp, #8 - movlt r0, #4 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r0, sb, #1 - sub r1, r8, #1 - bl NtsLengthSB - mov r5, r0 - cmp r5, r4 - addeq sp, sp, #8 - moveq r0, #4 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r2, [sb] - mov r0, sl - add r1, sb, #1 - str r2, [sp, #4] - bl SbRefStr - str r0, [sp] - ldr r0, [sl, #8] - mov r1, fp - bl ArrayAppend_Gsi - add r0, r5, #1 - add r6, r6, #1 - cmp r6, r7 - add sb, sb, r0 - sub r8, r8, r0 - blt _02317454 -_023174C0: - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ProcessPushKeyList - - arm_func_start ProcessPlayerSearch -ProcessPlayerSearch: ; 0x023174CC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x24 - mov r8, r2 - cmp r8, #2 - mov sl, r0 - mov sb, r1 - addlt sp, sp, #0x24 - movlt r0, #4 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r0, [sb, #1] - sub r8, r8, #2 - mov fp, #0 - str r0, [sp, #0xc] - ldrb r0, [sb], #2 - str r0, [sp, #0x14] - ldr r0, [sp, #0xc] - cmp r0, #0 - ble _02317648 - add r7, sp, #0x20 - add r6, sp, #0x1c - mvn r4, #0 -_02317520: - mov r0, sb - mov r1, r8 - str sb, [sp, #0x10] - bl NtsLengthSB - cmp r0, r4 - addeq sp, sp, #0x24 - moveq r0, #4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - sub r3, r8, r0 - cmp r3, #0xb - add r2, sb, r0 - addlt sp, sp, #0x24 - movlt r0, #4 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r1, [r2] - ldrb r0, [r2, #1] - sub r8, r3, #0xa - add sb, r2, #0xa - strb r1, [r7] - strb r0, [r7, #1] - ldrb r5, [r2, #2] - ldrb r3, [r2, #3] - mov r0, sb - mov r1, r8 - strb r3, [r7, #3] - strb r5, [r7, #2] - ldrb ip, [r2, #4] - ldrb r5, [r2, #5] - add r3, sp, #0x18 - strb ip, [r3] - strb r5, [r3, #1] - ldrb r5, [r2, #6] - ldrb r3, [r2, #7] - strb r5, [r6] - strb r3, [r6, #1] - ldrb r3, [r2, #8] - ldrb r2, [r2, #9] - strb r3, [r6, #2] - strb r2, [r6, #3] - ldr ip, [sp, #0x1c] - mov r2, ip, lsl #0x18 - and r5, r2, #0xff000000 - mov r2, ip, lsl #8 - and r3, r2, #0xff0000 - mov r2, ip, lsr #0x18 - mov ip, ip, lsr #8 - and r2, r2, #0xff - and ip, ip, #0xff00 - orr r2, r2, ip - orr r2, r3, r2 - orr r2, r5, r2 - str r2, [sp, #0x1c] - bl NtsLengthSB - mov r5, r0 - cmp r5, r4 - addeq sp, sp, #0x24 - moveq r0, #4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldr r1, [sp, #0x1c] - mov r0, sl - stmia sp, {r1, sb} - ldr r2, [sl, #0x494] - ldr r1, [sp, #0x10] - str r2, [sp, #8] - ldrh r3, [sp, #0x18] - ldr r2, [sp, #0x20] - ldr ip, [sl, #0x490] - blx ip - ldr r0, [sp, #0xc] - add fp, fp, #1 - cmp fp, r0 - add sb, sb, r5 - sub r8, r8, r5 - blt _02317520 -_02317648: - ldr r0, [sp, #0x14] - cmp r0, #0 - beq _0231767C - mov r1, #0 - str r1, [sp] - str r1, [sp, #4] - ldr r2, [sl, #0x494] - mov r0, sl - str r2, [sp, #8] - ldr r4, [sl, #0x490] - mov r2, r1 - mov r3, r1 - blx r4 -_0231767C: - mov r0, #0 - add sp, sp, #0x24 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ProcessPlayerSearch - - arm_func_start ProcessMaploop -ProcessMaploop: ; 0x02317688 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x54 - mov r8, r2 - cmp r8, #0xb - mov sl, r0 - mov sb, r1 - addlt sp, sp, #0x54 - movlt r0, #4 - ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - ldrb r2, [sb] - ldrb r1, [sb, #1] - add r3, sp, #0xc - add r4, sp, #8 - strb r2, [r3] - strb r1, [r3, #1] - ldrb r2, [sb, #2] - ldrb r1, [sb, #3] - strb r1, [r3, #3] - strb r2, [r3, #2] - ldrb r3, [sb, #4] - ldrb r2, [sb, #5] - ldr r1, [sp, #0xc] - strb r3, [r4] - strb r2, [r4, #1] - ldrh r2, [sp, #8] - bl SbServerListFindServerByIP - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - addeq sp, sp, #0x54 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, sl - bl SbServerListNth - ldrb r2, [sb, #6] - ldrb r1, [sb, #7] - add r3, sp, #0x10 - mov fp, r0 - strb r2, [r3] - strb r1, [r3, #1] - ldrb r1, [sb, #8] - ldrb r0, [sb, #9] - sub r8, r8, #0xb - mov r7, #0 - strb r1, [r3, #2] - strb r0, [r3, #3] - ldr r3, [sp, #0x10] - add r5, sp, #0x14 - 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 r0, r1, r0 - str r0, [sp, #0x10] - ldrb r6, [sb, #0xa] - add sb, sb, #0xb - mvn r4, #0 - b _023177BC -_02317788: - cmp r8, #1 - blt _023177C8 - mov r0, sb - mov r1, r8 - bl NtsLengthSB - cmp r0, r4 - addeq sp, sp, #0x54 - moveq r0, #4 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - str sb, [r5, r7, lsl #2] - add sb, sb, r0 - sub r8, r8, r0 - add r7, r7, #1 -_023177BC: - cmp r7, r6 - cmplt r7, #0x10 - blt _02317788 -_023177C8: - ldr r4, [sl, #0x48c] - cmp r4, #0 - addeq sp, sp, #0x54 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - add r1, sp, #0x14 - str r1, [sp] - ldr r2, [sl, #0x494] - mov r0, sl - str r2, [sp, #4] - ldr r2, [sp, #0x10] - mov r1, fp - mov r3, r7 - blx r4 - mov r0, #0 - add sp, sp, #0x54 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ProcessMaploop - - arm_func_start ProcessDeleteServer -ProcessDeleteServer: ; 0x0231780C - stmdb sp!, {r4, lr} - sub sp, sp, #8 - cmp r2, #6 - mov r4, r0 - addlt sp, sp, #8 - movlt r0, #4 - ldmltia sp!, {r4, pc} - ldrb r3, [r1] - ldrb r2, [r1, #1] - add lr, sp, #4 - add ip, sp, #0 - strb r3, [lr] - strb r2, [lr, #1] - ldrb r3, [r1, #2] - ldrb r2, [r1, #3] - strb r3, [lr, #2] - strb r2, [lr, #3] - ldrb r3, [r1, #4] - ldrb r2, [r1, #5] - ldr r1, [sp, #4] - strb r3, [ip] - strb r2, [ip, #1] - ldrh r2, [sp] - bl SbServerListFindServerByIP - mov r1, r0 - mvn r0, #0 - cmp r1, r0 - addeq sp, sp, #8 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl SbServerListRemoveAt - mov r0, #0 - add sp, sp, #8 - ldmia sp!, {r4, pc} - arm_func_end ProcessDeleteServer - - arm_func_start ProcessPushServer -ProcessPushServer: ; 0x02317898 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0xc - mov r6, r2 - cmp r6, #5 - mov r8, r0 - mov r7, r1 - addlt sp, sp, #0xc - movlt r0, #4 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, pc} - add r4, sp, #4 - add r3, sp, #8 - str r4, [sp] - bl ParseServerIpPort - ldrh r2, [sp, #4] - ldr r1, [sp, #8] - mov r0, r8 - bl SbServerListFindServerByIP - mov r5, r0 - mvn r0, #0 - cmp r5, r0 - bne _02317918 - ldrh r2, [sp, #4] - ldr r1, [sp, #8] - mov r0, r8 - bl SbAllocServer - mov r4, r0 - bl SbIsNullServer - cmp r0, #0 - beq _02317928 - add sp, sp, #0xc - mov r0, #5 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} -_02317918: - mov r0, r8 - mov r1, r5 - bl SbServerListNth - mov r4, r0 -_02317928: - mov ip, #0 - mov r0, r8 - mov r1, r4 - mov r2, r7 - mov r3, r6 - str ip, [sp] - bl ParseServer - cmp r0, #0 - addlt sp, sp, #0xc - movlt r0, #4 - ldmltia sp!, {r3, r4, r5, r6, r7, r8, pc} - mvn r0, #0 - cmp r5, r0 - bne _0231796C - mov r0, r8 - mov r1, r4 - bl SbServerListAppendServer -_0231796C: - ldr r3, [r8, #0x494] - ldr r5, [r8, #0x488] - mov r0, r8 - mov r2, r4 - mov r1, #1 - blx r5 - mov r0, #0 - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - arm_func_end ProcessPushServer - - arm_func_start ProcessAdHocData -ProcessAdHocData: ; 0x02317990 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldr r0, [r7, #0x80] - mov r6, #0 - cmp r0, #3 - blt _02317AF8 - mov r4, r6 - add r5, sp, #0 -_023179B0: - ldr r0, [r7, #0x7c] - ldrb r1, [r0] - ldrb r0, [r0, #1] - strb r1, [r5] - strb r0, [r5, #1] - ldrh r0, [sp] - 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] - ldrh r2, [sp] - cmp r2, #0x1000 - movhi r6, #4 - bhi _02317AF8 - ldr r0, [r7, #0x80] - cmp r0, r2 - movlt r0, #0 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - ldr r1, [r7, #0x7c] - ldrsb r0, [r1, #2] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _02317AC0 -_02317A14: ; jump table - b _02317AC0 ; case 0 - b _02317A30 ; case 1 - b _02317A48 ; case 2 - b _02317A60 ; case 3 - b _02317A7C ; case 4 - b _02317A94 ; case 5 - b _02317AAC ; case 6 -_02317A30: - mov r0, r7 - add r1, r1, #3 - sub r2, r2, #3 - bl ProcessPushKeyList - mov r6, r0 - b _02317AC0 -_02317A48: - mov r0, r7 - add r1, r1, #3 - sub r2, r2, #3 - bl ProcessPushServer - mov r6, r0 - b _02317AC0 -_02317A60: - ldr r0, [r7, #0x6b4] - mov r3, r4 - bl SocketSend - cmp r0, #0 - bgt _02317AC0 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02317A7C: - mov r0, r7 - add r1, r1, #3 - sub r2, r2, #3 - bl ProcessDeleteServer - mov r6, r0 - b _02317AC0 -_02317A94: - mov r0, r7 - add r1, r1, #3 - sub r2, r2, #3 - bl ProcessMaploop - mov r6, r0 - b _02317AC0 -_02317AAC: - mov r0, r7 - add r1, r1, #3 - sub r2, r2, #3 - bl ProcessPlayerSearch - mov r6, r0 -_02317AC0: - ldrh r1, [sp] - ldr r0, [r7, #0x80] - subs r2, r0, r1 - str r2, [r7, #0x80] - ldrne r0, [r7, #0x7c] - cmpne r0, #0 - beq _02317AE4 - add r1, r0, r1 - bl memmove -_02317AE4: - cmp r6, #0 - bne _02317AF8 - ldr r0, [r7, #0x80] - cmp r0, #3 - bge _023179B0 -_02317AF8: - cmp r6, #0 - beq _02317B08 - mov r0, r7 - bl ErrorDisconnect -_02317B08: - mov r0, r6 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ProcessAdHocData - - arm_func_start ProcessIncomingData -ProcessIncomingData: ; 0x02317B10 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - ldr r0, [r6, #0x6b4] - bl CanReceiveOnSocket - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r5, [r6, #0x80] - ldr r1, [r6, #0x7c] - ldr r0, [r6, #0x6b4] - add r1, r1, r5 - rsb r2, r5, #0x1000 - mov r3, #0 - bl SocketRecv - add r1, r0, #1 - cmp r1, #1 - bhi _02317B64 - mov r0, r6 - bl ErrorDisconnect - mov r0, #3 - ldmia sp!, {r4, r5, r6, pc} -_02317B64: - ldr r1, [r6, #0x80] - mov r4, #0 - add r0, r1, r0 - str r0, [r6, #0x80] - ldr r0, [r6] - cmp r0, #2 - beq _02317B8C - ldr r0, [r6, #0x7cc] - cmp r0, #0 - ble _02317BA4 -_02317B8C: - ldr r1, [r6, #0x7c] - ldr r2, [r6, #0x80] - add r0, r6, #0x6c0 - add r1, r1, r5 - sub r2, r2, r5 - bl GoaEncrypt -_02317BA4: - ldr r0, [r6] - cmp r0, #3 - bne _02317BBC - mov r0, r6 - bl ProcessMainListData - mov r4, r0 -_02317BBC: - cmp r4, #0 - movne r0, r4 - ldmneia sp!, {r4, r5, r6, pc} - ldr r0, [r6] - cmp r0, #2 - bne _02317BEC - ldr r0, [r6, #0x80] - cmp r0, #0 - ble _02317BEC - mov r0, r6 - bl ProcessAdHocData - ldmia sp!, {r4, r5, r6, pc} -_02317BEC: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ProcessIncomingData - - arm_func_start SbSendMessageToServer -SbSendMessageToServer: ; 0x02317BF4 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x18 - mov r5, r0 - ldr r1, [r5] - mov r4, r3 - cmp r1, #1 - bne _02317C28 - mov r1, #0 - mov r2, r1 - mov r3, #2 - str r1, [sp] - bl SbServerListConnectAndQuery -_02317C28: - ldr r0, [r5] - cmp r0, #1 - addeq sp, sp, #0x18 - moveq r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - addeq sp, sp, #0x10 - bxeq lr - ldr r0, [sp, #0x50] - add r6, sp, #0x44 - add r0, r0, #9 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r2, r0, asr #8 - mov r1, r0, lsl #8 - and r2, r2, #0xff - and r1, r1, #0xff00 - orr r1, r2, r1 - strh r1, [sp, #4] - add r2, sp, #4 - ldrb r3, [r2] - add r0, sp, #0x48 - add r1, sp, #6 - ldrb r2, [r2, #1] - strb r3, [r1] - mov fp, #2 - strb r2, [r1, #1] - ldrb sb, [r6] - add sl, sp, #9 - ldrb r8, [r6, #1] - ldrb r7, [r6, #2] - ldrb r6, [r6, #3] - ldrb ip, [r0] - ldrb r3, [r0, #1] - add lr, sp, #0xd - mov r0, r5 - mov r2, #9 - strb fp, [sp, #8] - strb sb, [sl] - strb r8, [sl, #1] - strb r7, [sl, #2] - strb r6, [sl, #3] - strb ip, [lr] - strb r3, [lr, #1] - bl SendWithRetry - cmp r0, #0 - addne sp, sp, #0x18 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - addne sp, sp, #0x10 - bxne lr - ldr r0, [r5, #0x6b4] - ldr r2, [sp, #0x50] - mov r1, r4 - mov r3, #0 - bl SocketSend - cmp r0, #0 - movlt r0, #3 - movge r0, #0 - add sp, sp, #0x18 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SbSendMessageToServer - - arm_func_start SbSendNatNegotiateCookieToServer -SbSendNatNegotiateCookieToServer: ; 0x02317D1C - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - ldr r5, [sp, #0x44] - mov r7, #0xfd - mov r4, r5, lsr #0x18 - mov r8, r5, lsl #0x18 - mov r3, r5, lsr #8 - mov r6, r5, lsl #8 - and r5, r4, #0xff - and r4, r3, #0xff00 - orr sb, r5, r4 - and r3, r6, #0xff0000 - mov r6, #0xfc - mov r5, #0x1e - mov r4, #0x66 - mov lr, #0x6a - mov fp, #0xb2 - strb r4, [sp, #7] - and r8, r8, #0xff000000 - orr r3, r3, sb - orr r8, r8, r3 - add r3, sp, #0x44 - str r8, [sp, #0x44] - strb r7, [sp, #4] - ldrb sl, [r3] - add ip, sp, #0xa - ldrb sb, [r3, #1] - ldrb r8, [r3, #2] - ldrb r7, [r3, #3] - add r3, sp, #4 - strb r6, [sp, #5] - strb r5, [sp, #6] - strb lr, [sp, #8] - strb fp, [sp, #9] - strb sl, [ip] - strb sb, [ip, #1] - strb r8, [ip, #2] - strb r7, [ip, #3] - mov r4, #0xa - str r4, [sp] - bl SbSendMessageToServer - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SbSendNatNegotiateCookieToServer - - arm_func_start ProcessLanData -ProcessLanData: ; 0x02317DD4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x5f0 - mov r1, #8 - mov sl, r0 - str r1, [sp, #8] - ldr r0, [sl, #0x6b4] - bl CanReceiveOnSocket - cmp r0, #0 - beq _02317E9C - ldr r6, _02317EF0 ; =0x000005DB - add sb, sp, #0xc - add r8, sp, #8 - add r7, sp, #0x14 - mov fp, #0 - mvn r4, #0 -_02317E10: - str sb, [sp] - str r8, [sp, #4] - ldr r0, [sl, #0x6b4] - mov r1, r7 - mov r2, r6 - mov r3, fp - bl SocketRecvFrom - cmp r0, r4 - beq _02317E8C - ldrh r2, [sp, #0xe] - ldr r1, [sp, #0x10] - mov r0, sl - bl SbServerListFindServerByIP - cmp r0, r4 - bne _02317E8C - ldrh r2, [sp, #0xe] - ldr r1, [sp, #0x10] - mov r0, sl - bl SbAllocServer - mov r5, r0 - bl SbIsNullServer - cmp r0, #0 - addne sp, sp, #0x5f0 - movne r0, #5 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - mov r0, r5 - mov r1, #0x11 - bl SbServerSetFlags - mov r0, sl - mov r1, r5 - bl SbServerListAppendServer -_02317E8C: - ldr r0, [sl, #0x6b4] - bl CanReceiveOnSocket - cmp r0, #0 - bne _02317E10 -_02317E9C: - bl current_time_gsi - ldr r1, [sl, #0x6b8] - sub r0, r0, r1 - cmp r0, #0x7d0 - bls _02317EE4 - ldr r0, [sl, #0x6b4] - bl SocketClose - mvn r0, #0 - str r0, [sl, #0x6b4] - mov r0, #1 - str r0, [sl] - ldr r0, _02317EF4 ; =ov00_023294FC - ldr r3, [sl, #0x494] - ldr r2, [r0] - ldr r4, [sl, #0x488] - mov r0, sl - mov r1, #3 - blx r4 -_02317EE4: - mov r0, #0 - add sp, sp, #0x5f0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02317EF0: .word 0x000005DB -_02317EF4: .word ov00_023294FC - arm_func_end ProcessLanData - - arm_func_start SbListThink -SbListThink: ; 0x02317EF8 - stmdb sp!, {r4, lr} - mov r4, r0 - bl SbFreeDeadList - ldr r0, [r4] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _02317F3C -_02317F14: ; jump table - b _02317F30 ; case 0 - b _02317F3C ; case 1 - b _02317F24 ; case 2 - b _02317F24 ; case 3 -_02317F24: - mov r0, r4 - bl ProcessIncomingData - ldmia sp!, {r4, pc} -_02317F30: - mov r0, r4 - bl ProcessLanData - ldmia sp!, {r4, pc} -_02317F3C: - mov r0, #0 - ldmia sp!, {r4, pc} - arm_func_end SbListThink - ; 0x02317F44 - - .rodata -#ifdef EUROPE - .global ov00_02318758_EU -ov00_02318758_EU: - .byte 0x55, 0x59, 0x46, 0x59, 0x46, 0x59, 0x46, 0x59, 0x44, 0x59, 0x46, 0x59, 0x49, 0x59, 0x46, 0x59 - .byte 0x53, 0x59, 0x46, 0x59 -#endif - .global ov00_02317F44 -ov00_02317F44: - .byte 0x70, 0x6f, 0x6b, 0x65, 0x64, 0x75, 0x6e, 0x67, 0x65, 0x6f, 0x6e, 0x64, 0x73, 0x00, 0x00, 0x00 - .global ov00_02317F54 -ov00_02317F54: - .byte 0x53, 0x56, 0x62, 0x6d, 0x33, 0x78, 0x00, 0x00 - .global ov00_02317F5C -ov00_02317F5C: - .byte 0x54, 0x58, 0x71, 0x6a, 0x44, 0x44, 0x4f, 0x4c - .byte 0x68, 0x50, 0x79, 0x53, 0x4b, 0x53, 0x7a, 0x74, 0x67, 0x42, 0x48, 0x59, 0x30, 0x30, 0x30, 0x31 - .byte 0x62, 0x64, 0x39, 0x35, 0x30, 0x30, 0x30, 0x30, 0x37, 0x64, 0x39, 0x39, 0x30, 0x30, 0x30, 0x30 - .byte 0x30, 0x32, 0x30, 0x30, 0x36, 0x31, 0x33, 0x63, 0x34, 0x39, 0x36, 0x34, 0x70, 0x6f, 0x6b, 0x65 - .byte 0x64, 0x75, 0x6e, 0x67, 0x65, 0x6f, 0x6e, 0x64, 0x73, 0x00, 0x00, 0x00 - .global ov00_02317FA0 -ov00_02317FA0: - .byte 0x0b, 0x00, 0x00, 0x00 - .word ov08_0233E230 - .word ov08_0233E7D8 - .word ov08_0233E2BC - .global ov00_02317FB0 -ov00_02317FB0: - .byte 0x0c, 0x00, 0x00, 0x00 - .word ov09_0233CA80 - .word ov09_0233CBC8 - .word ov09_0233CBF8 - .global ov00_02317FC0 -ov00_02317FC0: - .byte 0x2f, 0x42, 0x41, 0x43 - .byte 0x4b, 0x2f, 0x73, 0x30, 0x39, 0x70, 0x31, 0x30, 0x61, 0x2e, 0x62, 0x67, 0x70, 0x00, 0x00, 0x00 - .global ov00_02317FD4 -ov00_02317FD4: - .byte 0x2f, 0x42, 0x41, 0x43, 0x4b, 0x2f, 0x73, 0x30, 0x39, 0x70, 0x30, 0x35, 0x61, 0x2e, 0x62, 0x67 - .byte 0x70, 0x00, 0x00, 0x00 - .global ov00_02317FE8 -ov00_02317FE8: - .byte 0x2f, 0x42, 0x41, 0x43, 0x4b, 0x2f, 0x73, 0x30, 0x39, 0x70, 0x30, 0x38 - .byte 0x61, 0x2e, 0x62, 0x67, 0x70, 0x00, 0x00, 0x00 - .global ov00_02317FFC -ov00_02317FFC: - .byte 0x2f, 0x42, 0x41, 0x43, 0x4b, 0x2f, 0x73, 0x30 - .byte 0x39, 0x70, 0x30, 0x37, 0x61, 0x2e, 0x62, 0x67, 0x70, 0x00, 0x00, 0x00 - .global ov00_02318010 -ov00_02318010: - .byte 0x2f, 0x42, 0x41, 0x43 - .byte 0x4b, 0x2f, 0x73, 0x30, 0x39, 0x70, 0x30, 0x36, 0x61, 0x2e, 0x62, 0x67, 0x70, 0x00, 0x00, 0x00 - .global ov00_02318024 -ov00_02318024: - .byte 0x2f, 0x42, 0x41, 0x43, 0x4b, 0x2f, 0x73, 0x30, 0x39, 0x70, 0x30, 0x39, 0x61, 0x2e, 0x62, 0x67 - .byte 0x70, 0x00, 0x00, 0x00 - .global ov00_02318038 -ov00_02318038: - .byte 0x2f, 0x42, 0x41, 0x43, 0x4b, 0x2f, 0x73, 0x30, 0x39, 0x70, 0x30, 0x34 - .byte 0x61, 0x2e, 0x62, 0x67, 0x70, 0x00, 0x00, 0x00 - .global ov00_0231804C -ov00_0231804C: - .byte 0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318060 -ov00_02318060: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_02318064 -ov00_02318064: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x03, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00 - .byte 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x06, 0x07, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x07, 0x06, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x09, 0x00, 0x00 - .byte 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x02, 0x00, 0x00, 0x00, 0x0a, 0x0b, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .byte 0x0b, 0x0a, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231812C -ov00_0231812C: - .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00 - .global ov00_02318138 -ov00_02318138: - .byte 0x00, 0x40, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00 - .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318150 -ov00_02318150: - .byte 0x15, 0x03, 0x00, 0x00 - .byte 0x02, 0x01, 0x29, 0x00 - .global ov00_02318158 -ov00_02318158: - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00 - .global ov00_02318160 -ov00_02318160: - .byte 0xff, 0xff, 0xff, 0xff - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .global ov00_02318180 -ov00_02318180: - .byte 0x57, 0x61, 0x79, 0x70 - .byte 0x6f, 0x72, 0x74, 0x32 - .global ov00_02318188 -ov00_02318188: - .byte 0x46, 0x52, 0x45, 0x45, 0x53, 0x50, 0x4f, 0x54 - .global ov00_02318190 -ov00_02318190: - .byte 0x4e, 0x49, 0x4e, 0x54 - .byte 0x45, 0x4e, 0x44, 0x4f, 0x57, 0x46, 0x43, 0x00 - .global ov00_0231819C -ov00_0231819C: - .byte 0x02, 0x80, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00 - .byte 0x08, 0x80, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00 - .byte 0x80, 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00 - .byte 0x00, 0x88, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00 - .global ov00_023181D0 -ov00_023181D0: - .byte 0x00, 0x00, 0x00, 0x01 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 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, 0x10, 0x00, 0x00, 0x00, 0x10, 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 - .word ov00_02318B00 - .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x61, 0x61, 0x61 - .global ov00_0231822B -ov00_0231822B: - .byte 0x17, 0x14, 0x11, 0x0d, 0x0b, 0x06, 0x0f, 0x0e, 0x09 - .byte 0x15, 0x0c, 0x04, 0x02, 0x01, 0x12, 0x10, 0x05, 0x03, 0x13, 0x0a, 0x07, 0x08, 0x00, 0x16, 0x00 - .global ov00_02318244 -ov00_02318244: - .byte 0x05, 0x01, 0x0c, 0x04, 0x02, 0x03, 0x0a, 0x00, 0x0b, 0x07, 0x09, 0x08, 0x06, 0x00, 0x00, 0x00 - .global ov00_02318254 -ov00_02318254: - .byte 0x0a, 0x0d, 0x0e, 0x08, 0x09, 0x03, 0x06, 0x00, 0x0c, 0x05, 0x02, 0x07, 0x0b, 0x01, 0x0f, 0x04 - .global ov00_02318264 -ov00_02318264: - .byte 0x21, 0x53, 0x44, 0x57 - .global ov00_02318268 -ov00_02318268: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231826C -ov00_0231826C: - .byte 0x01, 0x02, 0x00, 0x04, 0x03, 0x05, 0x06, 0x07 - .global ov00_02318274 -ov00_02318274: - .byte 0x05, 0x09, 0x01, 0x0e, 0x0c, 0x02, 0x0a, 0x00, 0x0b, 0x0d, 0x03, 0x04, 0x08, 0x06, 0x0f, 0x07 - .global ov00_02318284 -ov00_02318284: - .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 - .byte 0x00 - .global ov00_02318295 -ov00_02318295: - .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65 - .byte 0x66, 0x00, 0x00, 0x00 - .global ov00_023182A8 -ov00_023182A8: - .byte 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c - .byte 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x61, 0x62 - .byte 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72 - .byte 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37 - .byte 0x38, 0x39, 0x2e, 0x2d, 0x00, 0x00, 0x00, 0x00 - .global ov00_023182EC -ov00_023182EC: - .byte 0x30, 0x30, 0x3a, 0x30, 0x30, 0x30, 0x30, 0x30 - .byte 0x30, 0x30, 0x2d, 0x30, 0x30, 0x00, 0x00, 0x00 - .global ov00_023182FC -ov00_023182FC: - .byte 0x59, 0x32, 0x39, 0x31, 0x62, 0x6e, 0x51, 0x2a - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_02318308 -ov00_02318308: - .byte 0x62, 0x47, 0x6c, 0x7a, 0x64, 0x41, 0x2a, 0x2a, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318314 -ov00_02318314: - .byte 0x59, 0x32, 0x39, 0x75, 0x64, 0x47, 0x56, 0x75, 0x64, 0x48, 0x4d, 0x2a, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318324 -ov00_02318324: - .byte 0x00, 0x00, 0xc1, 0x6f, 0xf2, 0x86, 0x23, 0x00, 0x00, 0x80, 0xc6, 0xa4, 0x7e, 0x8d, 0x03, 0x00 - .byte 0x00, 0x40, 0x7a, 0x10, 0xf3, 0x5a, 0x00, 0x00, 0x00, 0xa0, 0x72, 0x4e, 0x18, 0x09, 0x00, 0x00 - .byte 0x00, 0x10, 0xa5, 0xd4, 0xe8, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x76, 0x48, 0x17, 0x00, 0x00, 0x00 - .byte 0x00, 0xe4, 0x0b, 0x54, 0x02, 0x00, 0x00, 0x00, 0x00, 0xca, 0x9a, 0x3b, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0xe1, 0xf5, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x96, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x40, 0x42, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov00_023183A4 -ov00_023183A4: - .byte 0x2d, 0x2d, 0x74, 0x39, 0x53, 0x66, 0x34, 0x79, 0x66, 0x6a, 0x66, 0x31, 0x52, 0x74, 0x76, 0x44 - .byte 0x75, 0x33, 0x41 - .global ov00_023183B7 -ov00_023183B7: - .byte 0x41, 0x00, 0x00, 0x00, 0x00 - .global ov00_023183BC -ov00_023183BC: - .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d - .byte 0x44, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x66, 0x6f, 0x72 - .byte 0x6d, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x3b, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x00, 0x00 - .global ov00_023183E4 -ov00_023183E4: - .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70 - .byte 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d - .byte 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d - .byte 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e - .byte 0x67, 0x3a, 0x20, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x0d, 0x0a, 0x00 - .global ov00_02318430 -ov00_02318430: - .byte 0x00, 0xca, 0x9a, 0x3b - .byte 0x00, 0xe1, 0xf5, 0x05, 0x80, 0x96, 0x98, 0x00, 0x40, 0x42, 0x0f, 0x00, 0xa0, 0x86, 0x01, 0x00 - .byte 0x10, 0x27, 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00 - .global ov00_02318454 -ov00_02318454: - .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_02318468 -ov00_02318468: - .byte 0x5b, 0x5d, 0x5f, 0x00 - .global ov00_0231846C -ov00_0231846C: - .byte 0x2d, 0x5f, 0x3d, 0x00 - .global ov00_02318470 -ov00_02318470: - .byte 0x2b, 0x2f, 0x3d, 0x00 - .global ov00_02318474 -ov00_02318474: - .byte 0x99, 0x79, 0x82, 0x5a, 0xa1, 0xeb, 0xd9, 0x6e, 0xdc, 0xbc, 0x1b, 0x8f, 0xd6, 0xc1, 0x62, 0xca - .global ov00_02318484 -ov00_02318484: - .byte 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 - .global ov00_02318490 -ov00_02318490: - .byte 0x04, 0x00, 0x00, 0x00 - .byte 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov00_023184A0 -ov00_023184A0: - .byte 0x25, 0x30, 0x30, 0x00 - .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .global ov00_023184AC -ov00_023184AC: - .byte 0x32, 0x31, 0x34, 0x37, 0x34, 0x38, 0x33, 0x36 - .byte 0x34, 0x37, 0x00, 0x00, 0x5c, 0x6d, 0x6f, 0x64, 0x5c, 0x25, 0x64, 0x00, 0x13, 0x1d, 0x01, 0x04 - .byte 0x00, 0x00, 0x00, 0x28, 0x1f, 0x06, 0x45, 0x34, 0x3f, 0x01, 0x1b, 0x00 - .global ov00_023184D0 -ov00_023184D0: - .byte 0x13, 0x1d, 0x01, 0x04 - .byte 0x00, 0x00, 0x00, 0x28, 0x1f, 0x06, 0x45, 0x34, 0x3f, 0x01, 0x1b, 0x00, 0x0c, 0x13, 0x1a, 0x1e - .byte 0x0d, 0x13, 0x28, 0x1d, 0x00, 0x01, 0x01, 0x24, 0x75, 0x16, 0x33, 0x18, 0x00, 0x10, 0x04, 0x1d - .byte 0x55, 0x1b, 0x39, 0x14, 0x39, 0x16, 0x33, 0x4f, 0x01, 0x00, 0x0c, 0x1c, 0x0a, 0x1d, 0x02, 0x02 - .byte 0x19, 0x24, 0x2c, 0x34, 0x06, 0x17, 0x3e, 0x1c, 0x06, 0x0e, 0x39, 0x46, 0x10, 0x1d, 0x03, 0x0d - .byte 0x16, 0x0b, 0x3b, 0x17, 0x16, 0x36, 0x40, 0x07, 0x00, 0x0c, 0x15, 0x0a, 0x1e, 0x15, 0x0a, 0x10 - .byte 0x1d, 0x2c, 0x06, 0x0c, 0x1b, 0x3b, 0x2e, 0x4a, 0x19, 0x39, 0x08, 0x11, 0x38, 0x18, 0x09, 0x16 - .byte 0x10, 0x0c, 0x57, 0x1c, 0x36, 0x09, 0x0a, 0x10, 0x1d, 0x55, 0x0c, 0x00, 0x0c, 0x13, 0x1a, 0x1e - .byte 0x0d, 0x13, 0x28, 0x1d, 0x11, 0x1d, 0x11, 0x10, 0x24, 0x1d, 0x04, 0x0f, 0x0b, 0x3f, 0x51, 0x32 - .byte 0x2c, 0x1a, 0x00, 0x0b, 0x20, 0x2e, 0x4a, 0x19, 0x39, 0x0f, 0x1d, 0x25, 0x2c, 0x4d, 0x01, 0x00 - .byte 0x0c, 0x13, 0x1a, 0x1e, 0x0d, 0x13, 0x28, 0x1d, 0x1e, 0x01, 0x06, 0x13, 0x0c, 0x57, 0x1c, 0x36 - .byte 0x0e, 0x06, 0x0d, 0x29, 0x11, 0x1b, 0x0d, 0x24, 0x75, 0x01, 0x33, 0x18, 0x00, 0x10, 0x04, 0x1d - .byte 0x55, 0x1b, 0x39, 0x14, 0x39, 0x16, 0x33, 0x4f, 0x01, 0x00, 0x0c, 0x13, 0x1a, 0x1e, 0x0d, 0x3f - .byte 0x28, 0x26, 0x11, 0x05, 0x00, 0x16, 0x31, 0x1f, 0x0a, 0x36, 0x40, 0x10, 0x28, 0x33, 0x15, 0x1b - .byte 0x15, 0x17, 0x3e, 0x01, 0x0a, 0x36, 0x40, 0x10, 0x28, 0x31, 0x1f, 0x1a, 0x11, 0x24, 0x75, 0x16 - .byte 0x33, 0x03, 0x01, 0x3f, 0x45, 0x00, 0x0c, 0x15, 0x0a, 0x1e, 0x15, 0x07, 0x28, 0x1d, 0x00, 0x01 - .byte 0x01, 0x24, 0x75, 0x16, 0x33, 0x1a, 0x11, 0x1a, 0x04, 0x24, 0x2c, 0x4d, 0x01, 0x24, 0x34, 0x1b - .byte 0x01, 0x0e, 0x00, 0x1b, 0x28, 0x64, 0x14, 0x34, 0x0e, 0x1d, 0x29, 0x01, 0x33, 0x4f, 0x16, 0x3f - .byte 0x18, 0x28, 0x14, 0x34, 0x40, 0x1c, 0x00, 0x0c, 0x07, 0x1f, 0x0e, 0x02, 0x02, 0x19, 0x24, 0x2c - .byte 0x34, 0x16, 0x1d, 0x23, 0x01, 0x04, 0x0f, 0x1c, 0x3f, 0x51, 0x25, 0x2c, 0x0b, 0x0a, 0x16, 0x3e - .byte 0x1b, 0x0b, 0x36, 0x40, 0x07, 0x28, 0x25, 0x1f, 0x06, 0x00, 0x24, 0x75, 0x16, 0x33, 0x0d, 0x04 - .byte 0x0e, 0x11, 0x25, 0x11, 0x1c, 0x04, 0x24, 0x75, 0x01, 0x00, 0x0c, 0x01, 0x0a, 0x1e, 0x15, 0x07 - .byte 0x28, 0x1d, 0x00, 0x01, 0x01, 0x24, 0x75, 0x16, 0x33, 0x1a, 0x11, 0x1a, 0x04, 0x24, 0x2c, 0x4d - .byte 0x01, 0x24, 0x34, 0x1b, 0x01, 0x0e, 0x00, 0x1b, 0x28, 0x64, 0x14, 0x34, 0x0e, 0x0e, 0x0c, 0x57 - .byte 0x0b, 0x36, 0x09, 0x0a, 0x10, 0x1d, 0x55, 0x0c, 0x39, 0x14, 0x35, 0x1c, 0x08, 0x1e, 0x0d, 0x3f - .byte 0x51, 0x25, 0x2c, 0x0c, 0x04, 0x0c, 0x31, 0x2e, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318660 -ov00_02318660: - .byte 0x5c, 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, 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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318760 -ov00_02318760: - .byte 0xfd, 0xfc, 0x1e, 0x66 - .byte 0x6a, 0xb2, 0x00, 0x00 - .global ov00_02318768 -ov00_02318768: - .word ov00_0231D398 - .word ov00_0231D390 - - .data - .global ov00_02318780 -ov00_02318780: - .byte 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 - .global ov00_023187A0 -ov00_023187A0: - .byte 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 - .global ov00_023187C4 -ov00_023187C4: - .word ov00_02318780 - .word ov00_02318780 - .word ov00_02318780 - .global ov00_023187D0 -ov00_023187D0: -#if defined(EUROPE) - .byte 0x43, 0x32, 0x53, 0x50 -#elif defined(JAPAN) - .byte 0x43, 0x32, 0x53, 0x4A -#else - .byte 0x43, 0x32, 0x53, 0x45 -#endif - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_023187D8 -ov00_023187D8: -#if defined(EUROPE) - .byte 0x41, 0x79, 0x43, 0x75, 0x48, 0x72, 0x47, 0x53, 0x4A, 0x4D, 0x4B, 0x56, 0x34, 0x71, 0x6A, 0x61 -#elif defined(JAPAN) - .byte 0x36, 0x77, 0x42, 0x79, 0x66, 0x52, 0x33, 0x71 - .byte 0x4D, 0x64, 0x56, 0x37, 0x7A, 0x74, 0x73, 0x68 -#else - .byte 0x48, 0x61, 0x75, 0x5a, 0x6e, 0x37, 0x78, 0x32, 0x51, 0x6a, 0x41, 0x4a - .byte 0x47, 0x7a, 0x50, 0x43 -#endif - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_023187EC -ov00_023187EC: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_023187F0 -ov00_023187F0: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_023187F4 -ov00_023187F4: - .word ov00_02318038 - .word ov00_02317FD4 - .word ov00_02318010 - .word ov00_02317FFC - .word ov00_02317FE8 - .word ov00_02318024 - .word ov00_02317FC0 - .global ov00_02318810 -ov00_02318810: - .byte 0x00, 0x00, 0x01, 0x00 - .global ov00_02318814 -ov00_02318814: - .byte 0xff, 0x00, 0x00, 0x00 - .global ov00_02318818 -ov00_02318818: - .word ov00_02318138 - .global ov00_0231881C -ov00_0231881C: - .byte 0x72, 0x6f, 0x6d, 0x00 - .global ov00_02318820 -ov00_02318820: - .byte 0x05, 0x00, 0x28, 0x00 - .byte 0x28, 0x00, 0xff, 0xff - .word ov00_02318830 - .byte 0x01, 0x00, 0x00, 0x00 - .global ov00_02318830 -ov00_02318830: - .byte 0x6d, 0x00, 0x75, 0x00 - .byte 0x6c, 0x00, 0x74, 0x00, 0x69, 0x00, 0x62, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x74, 0x00, 0x00, 0x00 - .global ov00_02318844 -ov00_02318844: - .byte 0x10, 0x00, 0x00, 0x00 - .global ov00_02318848 -ov00_02318848: - .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00 - .global ov00_02318850 -ov00_02318850: - .byte 0xaa, 0xaa, 0x03, 0x00 - .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231885C -ov00_0231885C: - .byte 0x4e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f - .byte 0x44, 0x53, 0x00, 0x00 - .global ov00_02318868 -ov00_02318868: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231886C -ov00_0231886C: - .byte 0xe6, 0xff, 0xff, 0xff - .global ov00_02318870 -ov00_02318870: - .byte 0x01, 0x01, 0xc0, 0x05 - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x0c, 0x20 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_02318888 -ov00_02318888: - .byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x00, 0x00 - .byte 0x61, 0x08, 0x00, 0x00, 0x00, 0x08, 0x0c, 0x20, 0x00, 0x08, 0x0d, 0x20 - .global ov00_023188A0 -ov00_023188A0: - .byte 0x02, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0xea, 0x05, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x08, 0x0d, 0x20 - .global ov00_023188B8 -ov00_023188B8: - .byte 0x25, 0x64, 0x2e, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x00 - .global ov00_023188C4 -ov00_023188C4: - .byte 0x55, 0x04, 0x03, 0x00 - .global ov00_023188C8 -ov00_023188C8: - .byte 0xff, 0xff, 0xff, 0x00 - .global ov00_023188CC -ov00_023188CC: - .byte 0x04, 0x00, 0x05, 0x00, 0xff, 0xff, 0xff, 0xff - .global ov00_023188D4 -ov00_023188D4: - .word ov00_023188C8 - .word ov00_023188F4 - .word ov00_023188EC - .word ov00_02318900 - .word ov00_0231890C - .word ov00_023188C4 - .global ov00_023188EC -ov00_023188EC: - .byte 0x55, 0x08, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 - .global ov00_023188F4 -ov00_023188F4: - .byte 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 - .global ov00_02318900 -ov00_02318900: - .byte 0x2a, 0x86, 0x48, 0x86 - .byte 0xf7, 0x0d, 0x01, 0x01, 0x04, 0x00, 0x00, 0x00 - .global ov00_0231890C -ov00_0231890C: - .byte 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01 - .byte 0x05, 0x00, 0x00, 0x00 - .global ov00_02318918 -ov00_02318918: - .byte 0x41, 0x00, 0x00, 0x00 - .global ov00_0231891C -ov00_0231891C: - .byte 0x42, 0x42, 0x00, 0x00 - .global ov00_02318920 -ov00_02318920: - .byte 0x43, 0x43, 0x43, 0x00 - .global ov00_02318924 -ov00_02318924: - .byte 0x53, 0x52, 0x56, 0x52, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231892C -ov00_0231892C: - .byte 0x43, 0x4c, 0x4e, 0x54, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318934 -ov00_02318934: - .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f - .byte 0x01, 0x06, 0x0b, 0x00, 0x05, 0x0a, 0x0f, 0x04, 0x09, 0x0e, 0x03, 0x08, 0x0d, 0x02, 0x07, 0x0c - .byte 0x05, 0x08, 0x0b, 0x0e, 0x01, 0x04, 0x07, 0x0a, 0x0d, 0x00, 0x03, 0x06, 0x09, 0x0c, 0x0f, 0x02 - .byte 0x00, 0x07, 0x0e, 0x05, 0x0c, 0x03, 0x0a, 0x01, 0x08, 0x0f, 0x06, 0x0d, 0x04, 0x0b, 0x02, 0x09 - .global ov00_02318974 -ov00_02318974: - .byte 0x80, 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, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov00_023189B4 -ov00_023189B4: - .byte 0x78, 0xa4, 0x6a, 0xd7, 0x56, 0xb7, 0xc7, 0xe8, 0xdb, 0x70, 0x20, 0x24, 0xee, 0xce, 0xbd, 0xc1 - .byte 0xaf, 0x0f, 0x7c, 0xf5, 0x2a, 0xc6, 0x87, 0x47, 0x13, 0x46, 0x30, 0xa8, 0x01, 0x95, 0x46, 0xfd - .byte 0xd8, 0x98, 0x80, 0x69, 0xaf, 0xf7, 0x44, 0x8b, 0xb1, 0x5b, 0xff, 0xff, 0xbe, 0xd7, 0x5c, 0x89 - .byte 0x22, 0x11, 0x90, 0x6b, 0x93, 0x71, 0x98, 0xfd, 0x8e, 0x43, 0x79, 0xa6, 0x21, 0x08, 0xb4, 0x49 - .byte 0x62, 0x25, 0x1e, 0xf6, 0x40, 0xb3, 0x40, 0xc0, 0x51, 0x5a, 0x5e, 0x26, 0xaa, 0xc7, 0xb6, 0xe9 - .byte 0x5d, 0x10, 0x2f, 0xd6, 0x53, 0x14, 0x44, 0x02, 0x81, 0xe6, 0xa1, 0xd8, 0xc8, 0xfb, 0xd3, 0xe7 - .byte 0xe6, 0xcd, 0xe1, 0x21, 0xd6, 0x07, 0x37, 0xc3, 0x87, 0x0d, 0xd5, 0xf4, 0xed, 0x14, 0x5a, 0x45 - .byte 0x05, 0xe9, 0xe3, 0xa9, 0xf8, 0xa3, 0xef, 0xfc, 0xd9, 0x02, 0x6f, 0x67, 0x8a, 0x4c, 0x2a, 0x8d - .byte 0x42, 0x39, 0xfa, 0xff, 0x81, 0xf6, 0x71, 0x87, 0x22, 0x61, 0x9d, 0x6d, 0x0c, 0x38, 0xe5, 0xfd - .byte 0x44, 0xea, 0xbe, 0xa4, 0xa9, 0xcf, 0xde, 0x4b, 0x60, 0x4b, 0xbb, 0xf6, 0x70, 0xbc, 0xbf, 0xbe - .byte 0xc6, 0x7e, 0x9b, 0x28, 0xfa, 0x27, 0xa1, 0xea, 0x85, 0x30, 0xef, 0xd4, 0x05, 0x1d, 0x88, 0x04 - .byte 0x39, 0xd0, 0xd4, 0xd9, 0xe5, 0x99, 0xdb, 0xe6, 0xf8, 0x7c, 0xa2, 0x1f, 0x65, 0x56, 0xac, 0xc4 - .byte 0x44, 0x22, 0x29, 0xf4, 0x97, 0xff, 0x2a, 0x43, 0xa7, 0x23, 0x94, 0xab, 0x39, 0xa0, 0x93, 0xfc - .byte 0xc3, 0x59, 0x5b, 0x65, 0x92, 0xcc, 0x0c, 0x8f, 0x7d, 0xf4, 0xef, 0xff, 0xd1, 0x5d, 0x84, 0x85 - .byte 0x4f, 0x7e, 0xa8, 0x6f, 0xe0, 0xe6, 0x2c, 0xfe, 0x14, 0x43, 0x01, 0xa3, 0xa1, 0x11, 0x08, 0x4e - .byte 0x82, 0x7e, 0x53, 0xf7, 0x35, 0xf2, 0x3a, 0xbd, 0xbb, 0xd2, 0xd7, 0x2a, 0x91, 0xd3, 0x86, 0xeb - .global ov00_02318AB4 -ov00_02318AB4: - .byte 0x80 - .global ov00_02318AB5 -ov00_02318AB5: - .byte 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, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318AF4 -ov00_02318AF4: - .byte 0x4e, 0x57, 0x43, 0x55, 0x53, 0x42, 0x41, 0x50, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318B00 -ov00_02318B00: - .byte 0x4e, 0x49, 0x4e, 0x54 - .byte 0x45, 0x4e, 0x44, 0x4f, 0x2d, 0x44, 0x53, 0x00 - .global ov00_02318B0C -ov00_02318B0C: - .word ov00_02318B58 - .word ov00_02318B1C - .word ov00_02318B3C - .word ov00_02318B2C - .global ov00_02318B1C -ov00_02318B1C: - .byte 0x67, 0x77, 0x69, 0x27, 0x36, 0x26, 0x66, 0x73 - .byte 0x3d, 0x30, 0x4e, 0x66, 0x7e, 0x00, 0x00, 0x00 - .global ov00_02318B2C -ov00_02318B2C: - .byte 0x25, 0x28, 0x65, 0x67, 0x45, 0x72, 0x29, 0x61 - .byte 0x67, 0x28, 0x73, 0x26, 0x6d, 0x00, 0x00, 0x00 - .global ov00_02318B3C -ov00_02318B3C: - .byte 0x39, 0x35, 0x32, 0x75, 0x79, 0x62, 0x6a, 0x6e - .byte 0x70, 0x6d, 0x75, 0x39, 0x30, 0x33, 0x62, 0x69, 0x61, 0x40, 0x62, 0x6b, 0x35, 0x6d, 0x5b, 0x2d - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_02318B58 -ov00_02318B58: - .byte 0x33, 0x38, 0x67, 0x36, 0x7a, 0x78, 0x6a, 0x6b, 0x32, 0x30, 0x67, 0x76 - .byte 0x6d, 0x76, 0x5d, 0x36, 0x5e, 0x3d, 0x6a, 0x26, 0x25, 0x76, 0x59, 0x31, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318B74 -ov00_02318B74: - .byte 0x4e, 0x44, 0x57, 0x43, 0x53, 0x48, 0x41, 0x50, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318B80 -ov00_02318B80: - .byte 0x4e, 0x57, 0x43, 0x55 - .byte 0x53, 0x42, 0x41, 0x50, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318B8C -ov00_02318B8C: - .byte 0x25, 0x30, 0x31, 0x32, 0x6c, 0x6c, 0x75, 0x00 - .global ov00_02318B94 -ov00_02318B94: - .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 - .byte 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_02318BB8 -ov00_02318BB8: - .byte 0x25, 0x73, 0x25, 0x63, 0x25, 0x63, 0x25, 0x63, 0x25, 0x63, 0x25, 0x73 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_02318BC8 -ov00_02318BC8: - .word ov00_02318BE4 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4e, 0x00, 0x00 - .global ov00_02318BE4 -ov00_02318BE4: - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x6e, 0x61, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74 - .byte 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65 - .byte 0x74, 0x2f, 0x61, 0x63, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318C0C -ov00_02318C0C: - .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x44, 0x57 - .byte 0x43, 0x61, 0x75, 0x74, 0x68, 0x00, 0x00, 0x00 - .global ov00_02318C1C -ov00_02318C1C: - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43 - .byte 0x61, 0x75, 0x74, 0x68, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318C2C -ov00_02318C2C: - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f - .byte 0x6e, 0x61, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69 - .byte 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x63, 0x00 - .global ov00_02318C4C -ov00_02318C4C: - .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x62, 0x6d - .byte 0x77, 0x6f, 0x72, 0x6b, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318C5C -ov00_02318C5C: - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x62, 0x6d, 0x77 - .byte 0x6f, 0x72, 0x6b, 0x00 - .global ov00_02318C68 -ov00_02318C68: - .byte 0x44, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318C70 -ov00_02318C70: - .byte 0x68, 0x74, 0x74, 0x70 - .byte 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x00, 0x00 - .global ov00_02318C7C -ov00_02318C7C: - .byte 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x63, 0x64 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_02318C88 -ov00_02318C88: - .byte 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x00, 0x00, 0x00 - .global ov00_02318C90 -ov00_02318C90: - .byte 0x6c, 0x6f, 0x63, 0x61 - .byte 0x74, 0x6f, 0x72, 0x00 - .global ov00_02318C98 -ov00_02318C98: - .byte 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x00, 0x00, 0x00 - .global ov00_02318CA4 -ov00_02318CA4: - .byte 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318CB0 -ov00_02318CB0: - .byte 0x53, 0x65, 0x74, 0x2d - .byte 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x00, 0x00 - .global ov00_02318CBC -ov00_02318CBC: - .byte 0x61, 0x63, 0x63, 0x74, 0x63, 0x72, 0x65, 0x61 - .byte 0x74, 0x65, 0x00, 0x00 - .global ov00_02318CC8 -ov00_02318CC8: - .byte 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00 - .global ov00_02318CD0 -ov00_02318CD0: - .byte 0x6c, 0x6f, 0x67, 0x69 - .byte 0x6e, 0x00, 0x00, 0x00 - .global ov00_02318CD8 -ov00_02318CD8: - .byte 0x67, 0x73, 0x62, 0x72, 0x63, 0x64, 0x00, 0x00 - .global ov00_02318CE0 -ov00_02318CE0: - .byte 0x59, 0x00, 0x00, 0x00 - .global ov00_02318CE4 -ov00_02318CE4: - .byte 0x69, 0x73, 0x77, 0x66, 0x63, 0x00, 0x00, 0x00 - .global ov00_02318CEC -ov00_02318CEC: - .byte 0x69, 0x6e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x6e - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_02318CF8 -ov00_02318CF8: - .byte 0x25, 0x30, 0x31, 0x33, 0x6c, 0x6c, 0x75, 0x00 - .global ov00_02318D00 -ov00_02318D00: - .byte 0x25, 0x30, 0x33, 0x75 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_02318D08 -ov00_02318D08: - .byte 0x25, 0x30, 0x32, 0x78, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318D10 -ov00_02318D10: - .byte 0x25, 0x30, 0x32, 0x78 - .byte 0x25, 0x30, 0x32, 0x78, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318D1C -ov00_02318D1C: - .byte 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64 - .byte 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_02318D38 -ov00_02318D38: - .byte 0x25, 0x30, 0x32, 0x64, 0x3a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 - .byte 0x2d, 0x30, 0x30, 0x00 - .global ov00_02318D48 -ov00_02318D48: - .byte 0x25, 0x30, 0x33, 0x64, 0x25, 0x30, 0x33, 0x64, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318D54 -ov00_02318D54: - .byte 0x73, 0x64, 0x6b, 0x76, 0x65, 0x72, 0x00, 0x00 - .global ov00_02318D5C -ov00_02318D5C: - .byte 0x75, 0x73, 0x65, 0x72, 0x69, 0x64, 0x00, 0x00 - .global ov00_02318D64 -ov00_02318D64: - .byte 0x70, 0x61, 0x73, 0x73, 0x77, 0x64, 0x00, 0x00 - .global ov00_02318D6C -ov00_02318D6C: - .byte 0x62, 0x73, 0x73, 0x69, 0x64, 0x00, 0x00, 0x00 - .global ov00_02318D74 -ov00_02318D74: - .byte 0x61, 0x70, 0x69, 0x6e, 0x66, 0x6f, 0x00, 0x00 - .global ov00_02318D7C -ov00_02318D7C: - .byte 0x67, 0x61, 0x6d, 0x65, 0x63, 0x64, 0x00, 0x00 - .global ov00_02318D84 -ov00_02318D84: - .byte 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x63, 0x64, 0x00 - .global ov00_02318D8C -ov00_02318D8C: - .byte 0x75, 0x6e, 0x69, 0x74, 0x63, 0x64, 0x00, 0x00 - .global ov00_02318D94 -ov00_02318D94: - .byte 0x6d, 0x61, 0x63, 0x61, 0x64, 0x72, 0x00, 0x00 - .global ov00_02318D9C -ov00_02318D9C: - .byte 0x6c, 0x61, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318DA4 -ov00_02318DA4: - .byte 0x62, 0x69, 0x72, 0x74, 0x68, 0x00, 0x00, 0x00 - .global ov00_02318DAC -ov00_02318DAC: - .byte 0x64, 0x65, 0x76, 0x74, 0x69, 0x6d, 0x65, 0x00 - .global ov00_02318DB4 -ov00_02318DB4: - .byte 0x64, 0x65, 0x76, 0x6e, 0x61, 0x6d, 0x65, 0x00 - .global ov00_02318DBC -ov00_02318DBC: - .byte 0x73, 0x73, 0x69, 0x64, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318DC4 -ov00_02318DC4: - .byte 0x4e, 0x69, 0x74, 0x72, 0x6f, 0x20, 0x57, 0x69, 0x46, 0x69, 0x20, 0x53, 0x44, 0x4b, 0x2f, 0x25 - .byte 0x64, 0x2e, 0x25, 0x64, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318DDC -ov00_02318DDC: - .byte 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41, 0x67, 0x65 - .byte 0x6e, 0x74, 0x00, 0x00 - .global ov00_02318DE8 -ov00_02318DE8: - .byte 0x48, 0x54, 0x54, 0x50, 0x5f, 0x58, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x43 - .byte 0x44, 0x00, 0x00, 0x00 - .global ov00_02318DF8 -ov00_02318DF8: - .word ov00_02319C30 - .word ov00_02319B04 - .word ov00_02319DE4 - .word ov00_02319EC0 - .word ov00_0231939C - .word ov00_02319638 - .word ov00_02319720 - .word ov00_023194E8 - .word ov00_023199EC - .word ov00_023198CC - .word ov00_02319F9C - .word ov00_023197E4 - .global ov00_02318E28 -ov00_02318E28: - .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2d, 0x3e - .byte 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x63, 0x76, 0x62, 0x75, 0x66, 0x00, 0x00 - .global ov00_02318E40 -ov00_02318E40: - .byte 0x41, 0x4c, 0x4c, 0x4f - .byte 0x43, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2d, 0x3e, 0x6c, 0x6f, 0x77, 0x73, 0x65, 0x6e, 0x64, 0x62 - .byte 0x75, 0x66, 0x00, 0x00 - .global ov00_02318E58 -ov00_02318E58: - .byte 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00 - .global ov00_02318E64 -ov00_02318E64: - .byte 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x00 - .global ov00_02318E6C -ov00_02318E6C: - .byte 0x0d, 0x0a, 0x0d, 0x0a, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318E74 -ov00_02318E74: - .byte 0x25, 0x64, 0x00, 0x00 - .global ov00_02318E78 -ov00_02318E78: - .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x4c, 0x65, 0x6e, 0x67 - .byte 0x74, 0x68, 0x00, 0x00 - .global ov00_02318E88 -ov00_02318E88: - .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x4c, 0x65, 0x6e, 0x67 - .byte 0x74, 0x68, 0x3a, 0x20, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318E9C -ov00_02318E9C: - .byte 0x0d, 0x0a, 0x00, 0x00 - .global ov00_02318EA0 -ov00_02318EA0: - .byte 0x46, 0x52, 0x45, 0x45 - .byte 0x20, 0x68, 0x74, 0x74, 0x70, 0x2d, 0x3e, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x63, 0x76, 0x62, 0x75 - .byte 0x66, 0x00, 0x00, 0x00 - .global ov00_02318EB8 -ov00_02318EB8: - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2d, 0x3e, 0x6c - .byte 0x6f, 0x77, 0x73, 0x65, 0x6e, 0x64, 0x62, 0x75, 0x66, 0x00, 0x00, 0x00 - .global ov00_02318ED0 -ov00_02318ED0: - .byte 0x50, 0x4f, 0x53, 0x54 - .byte 0x20, 0x2f, 0x25, 0x73, 0x20, 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x0d, 0x0a, 0x43 - .byte 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70 - .byte 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x2d, 0x77, 0x77, 0x77, 0x2d, 0x66 - .byte 0x6f, 0x72, 0x6d, 0x2d, 0x75, 0x72, 0x6c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x0d, 0x0a - .byte 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20, 0x25, 0x73, 0x0d, 0x0a, 0x0d, 0x0a, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318F24 -ov00_02318F24: - .byte 0x47, 0x45, 0x54, 0x20, 0x2f, 0x25, 0x73, 0x20, 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30 - .byte 0x0d, 0x0a, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20, 0x25, 0x73, 0x0d, 0x0a, 0x0d, 0x0a, 0x00, 0x00 - .global ov00_02318F44 -ov00_02318F44: - .byte 0x25, 0x73, 0x3a, 0x20, 0x25, 0x73, 0x0d, 0x0a, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318F50 -ov00_02318F50: - .byte 0x25, 0x73, 0x3d, 0x00 - .global ov00_02318F54 -ov00_02318F54: - .byte 0x26, 0x25, 0x73, 0x3d, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318F5C -ov00_02318F5C: - .byte 0x25, 0x73, 0x00, 0x00 - .global ov00_02318F60 -ov00_02318F60: - .byte 0x41, 0x4c, 0x4c, 0x4f - .byte 0x43, 0x20, 0x62, 0x75, 0x66, 0x2d, 0x3e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00 - .global ov00_02318F74 -ov00_02318F74: - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x62, 0x75, 0x66, 0x2d, 0x3e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_02318F88 -ov00_02318F88: - .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x6e, 0x65, 0x77, 0x70, 0x74, 0x72 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_02318F98 -ov00_02318F98: - .byte 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x00 - .global ov00_02318FA0 -ov00_02318FA0: - .byte 0x68, 0x74, 0x74, 0x70 - .byte 0x73, 0x3a, 0x2f, 0x2f, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318FAC -ov00_02318FAC: - .byte 0x3a, 0x00, 0x00, 0x00 - .global ov00_02318FB0 -ov00_02318FB0: - .byte 0x2f, 0x00, 0x00, 0x00 - .global ov00_02318FB4 -ov00_02318FB4: - .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2d, 0x3e, 0x65, 0x6e - .byte 0x74, 0x72, 0x79, 0x5b, 0x69, 0x5d, 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318FD4 -ov00_02318FD4: - .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2d, 0x3e, 0x65, 0x6e - .byte 0x74, 0x72, 0x79, 0x5b, 0x69, 0x5d, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov00_02318FF4 -ov00_02318FF4: - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2d, 0x3e, 0x65, 0x6e, 0x74 - .byte 0x72, 0x79, 0x5b, 0x69, 0x5d, 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x00 - .global ov00_02319010 -ov00_02319010: - .byte 0x46, 0x52, 0x45, 0x45 - .byte 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2d, 0x3e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5b, 0x69 - .byte 0x5d, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x00 - .global ov00_0231902C -ov00_0231902C: - .byte 0x20, 0x00, 0x00, 0x00 - .global ov00_02319030 -ov00_02319030: - .byte 0x68, 0x74, 0x74, 0x70 - .byte 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x00, 0x00 - .global ov00_0231903C -ov00_0231903C: - .byte 0x32, 0x30, 0x30, 0x00 - .global ov00_02319040 -ov00_02319040: - .byte 0x3a, 0x20, 0x00, 0x00 - .global ov00_02319044 -ov00_02319044: - .byte 0x3d, 0x00, 0x00, 0x00 - .global ov00_02319048 -ov00_02319048: - .byte 0x26, 0x00, 0x00, 0x00 - .global ov00_0231904C -ov00_0231904C: - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x61, 0x72, 0x72 - .byte 0x61, 0x79, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5b, 0x69, 0x5d, 0x2e, 0x6c, 0x61, 0x62, 0x65 - .byte 0x6c, 0x00, 0x00, 0x00 - .global ov00_02319068 -ov00_02319068: - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x65 - .byte 0x6e, 0x74, 0x72, 0x79, 0x5b, 0x69, 0x5d, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x00, 0x00, 0x00 - .global ov00_02319084 -ov00_02319084: - .word ov00_02319088 - .global ov00_02319088 -ov00_02319088: - .byte 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x74 - .byte 0x65, 0x73, 0x74, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69 - .byte 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x00, 0x00, 0x00 - .global ov00_023190AC -ov00_023190AC: - .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x44, 0x57 - .byte 0x43, 0x6e, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x00, 0x00, 0x00 - .global ov00_023190C0 -ov00_023190C0: - .byte 0x41, 0x4c, 0x4c, 0x4f - .byte 0x43, 0x20, 0x44, 0x57, 0x43, 0x68, 0x74, 0x74, 0x70, 0x00, 0x00, 0x00 - .global ov00_023190D0 -ov00_023190D0: - .byte 0x46, 0x52, 0x45, 0x45 - .byte 0x20, 0x44, 0x57, 0x43, 0x68, 0x74, 0x74, 0x70, 0x00, 0x00, 0x00, 0x00 - .global ov00_023190E0 -ov00_023190E0: - .byte 0x46, 0x52, 0x45, 0x45 - .byte 0x20, 0x44, 0x57, 0x43, 0x6e, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2d, 0x3e, 0x62, 0x6f - .byte 0x64, 0x79, 0x5f, 0x33, 0x30, 0x32, 0x00, 0x00 - .global ov00_023190FC -ov00_023190FC: - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43 - .byte 0x6e, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2d, 0x3e, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x77 - .byte 0x61, 0x79, 0x70, 0x6f, 0x72, 0x74, 0x00, 0x00 - .global ov00_0231911C -ov00_0231911C: - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43 - .byte 0x6e, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00 - .global ov00_02319130 -ov00_02319130: - .byte 0x41, 0x4c, 0x4c, 0x4f - .byte 0x43, 0x20, 0x44, 0x57, 0x43, 0x6e, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2d, 0x3e, 0x62 - .byte 0x6f, 0x64, 0x79, 0x5f, 0x33, 0x30, 0x32, 0x00 - .global ov00_0231914C -ov00_0231914C: - .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x75, 0x72 - .byte 0x6c, 0x00, 0x00, 0x00 - .global ov00_02319158 -ov00_02319158: - .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c - .byte 0x65, 0x6e, 0x00, 0x00 - .global ov00_02319168 -ov00_02319168: - .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x6c - .byte 0x65, 0x6e, 0x00, 0x00 - .global ov00_02319178 -ov00_02319178: - .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x44, 0x57, 0x43, 0x6e, 0x65, 0x74 - .byte 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2d, 0x3e, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x77, 0x61, 0x79, 0x70 - .byte 0x6f, 0x72, 0x74, 0x00 - .global ov00_02319198 -ov00_02319198: - .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x00, 0x00 - .global ov00_023191A4 -ov00_023191A4: - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x6e, 0x61, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74 - .byte 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x63, 0x00 - .global ov00_023191C4 -ov00_023191C4: - .byte 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00 - .global ov00_023191CC -ov00_023191CC: - .byte 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x00 - .global ov00_023191D4 -ov00_023191D4: - .byte 0x48, 0x6f, 0x74, 0x53, 0x70, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x00 - .global ov00_023191E4 -ov00_023191E4: - .byte 0x70, 0x61, 0x72, 0x73, 0x65, 0x00, 0x00, 0x00 - .global ov00_023191EC -ov00_023191EC: - .byte 0x48, 0x54, 0x4d, 0x4c, 0x00, 0x00, 0x00, 0x00 - .global ov00_023191F4 -ov00_023191F4: - .byte 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00 - .global ov00_02319200 -ov00_02319200: - .byte 0x75, 0x72, 0x6c, 0x00 - .global ov00_02319204 -ov00_02319204: - .byte 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231920C -ov00_0231920C: - .byte 0x77, 0x61, 0x69, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov00_02319214 -ov00_02319214: - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x75, 0x72, 0x6c, 0x00, 0x00, 0x00, 0x00 - .global ov00_02319220 -ov00_02319220: - .byte 0x46, 0x52, 0x45, 0x45 - .byte 0x20, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00 - .global ov00_0231922C -ov00_0231922C: - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x77, 0x61, 0x69 - .byte 0x74, 0x00, 0x00, 0x00 - .global ov00_02319238 -ov00_02319238: - .byte 0x4a, 0x75, 0x6e, 0x00 - .global ov00_0231923C -ov00_0231923C: - .byte 0x4a, 0x75, 0x6c, 0x00 - .global ov00_02319240 -ov00_02319240: - .byte 0x44, 0x65, 0x63, 0x00 - .global ov00_02319244 -ov00_02319244: - .byte 0x53, 0x65, 0x70, 0x00 - .global ov00_02319248 -ov00_02319248: - .byte 0x41, 0x75, 0x67, 0x00 - .global ov00_0231924C -ov00_0231924C: - .byte 0x4e, 0x6f, 0x76, 0x00 - .global ov00_02319250 -ov00_02319250: - .byte 0x4f, 0x63, 0x74, 0x00 - .global ov00_02319254 -ov00_02319254: - .byte 0x4d, 0x61, 0x79, 0x00 - .global ov00_02319258 -ov00_02319258: - .byte 0x41, 0x70, 0x72, 0x00 - .global ov00_0231925C -ov00_0231925C: - .byte 0x4d, 0x61, 0x72, 0x00 - .global ov00_02319260 -ov00_02319260: - .byte 0x46, 0x65, 0x62, 0x00 - .global ov00_02319264 -ov00_02319264: - .byte 0x4a, 0x61, 0x6e, 0x00 - .global ov00_02319268 -ov00_02319268: - .word ov00_02319264 - .word ov00_02319260 - .word ov00_0231925C - .word ov00_02319258 - .word ov00_02319254 - .word ov00_02319238 - .word ov00_0231923C - .word ov00_02319248 - .word ov00_02319244 - .word ov00_02319250 - .word ov00_0231924C - .word ov00_02319240 - .global ov00_02319298 -ov00_02319298: - .byte 0x46, 0x72, 0x69, 0x2c, 0x20, 0x30, 0x33, 0x20, 0x4d, 0x61, 0x72, 0x20 - .byte 0x32, 0x30, 0x30, 0x36, 0x20, 0x30, 0x31, 0x3a, 0x32, 0x38, 0x3a, 0x31, 0x33, 0x20, 0x47, 0x4d - .byte 0x54, 0x00, 0x00, 0x00 - .global ov00_023192B8 -ov00_023192B8: - .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x69, 0x6e, 0x74, 0x77, 0x6f, 0x72 - .byte 0x6b, 0x00, 0x00, 0x00 - .global ov00_023192C8 -ov00_023192C8: - .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x69, 0x6e, 0x74, 0x77, 0x6f, 0x72, 0x6b - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_023192D8 -ov00_023192D8: - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x6e, 0x61, 0x73, 0x2e - .byte 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74 - .byte 0x2f, 0x61, 0x63, 0x00 - .global ov00_023192F8 -ov00_023192F8: - .byte 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00 - .global ov00_02319300 -ov00_02319300: - .byte 0x53, 0x56, 0x43, 0x4c - .byte 0x4f, 0x43, 0x00, 0x00 - .global ov00_02319308 -ov00_02319308: - .byte 0x73, 0x76, 0x63, 0x00 - .global ov00_0231930C -ov00_0231930C: - .byte 0x44, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov00_02319314 -ov00_02319314: - .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x00, 0x00 - .global ov00_02319320 -ov00_02319320: - .byte 0x72, 0x65, 0x74, 0x75 - .byte 0x72, 0x6e, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231932C -ov00_0231932C: - .byte 0x73, 0x76, 0x63, 0x68, 0x6f, 0x73, 0x74, 0x00 - .global ov00_02319334 -ov00_02319334: - .byte 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x00, 0x00, 0x00, 0x00 - .global ov00_02319344 -ov00_02319344: - .byte 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00 - .global ov00_02319350 -ov00_02319350: - .word ov00_02319354 - .global ov00_02319354 -ov00_02319354: - .byte 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50 - .byte 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 - .byte 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76 - .byte 0x77, 0x78, 0x79, 0x7a, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x2e, 0x2d - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_02319398 -ov00_02319398: - .byte 0x01, 0x00, 0x01, 0x00 - .global ov00_0231939C -ov00_0231939C: - .word ov00_023193B0 - .byte 0x00, 0x01, 0x00, 0x00 - .word ov00_023193E4 - .byte 0x03, 0x00, 0x00, 0x00 - .word ov00_02319398 - .global ov00_023193B0 -ov00_023193B0: - .byte 0x42, 0x45, 0x2c, 0x20 - .byte 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61 - .byte 0x2c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x2c, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61 - .byte 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x00, 0x00, 0x00 - .global ov00_023193E4 -ov00_023193E4: - .byte 0xda, 0x0e, 0xe6, 0x99, 0x8d, 0xce, 0xa3, 0xe3, 0x4f, 0x8a, 0x7e, 0xfb, 0xf1, 0x8b, 0x83, 0x25 - .byte 0x6b, 0xea, 0x48, 0x1f, 0xf1, 0x2a, 0xb0, 0xb9, 0x95, 0x11, 0x04, 0xbd, 0xf0, 0x63, 0xd1, 0xe2 - .byte 0x67, 0x66, 0xcf, 0x1c, 0xdd, 0xcf, 0x1b, 0x48, 0x2b, 0xee, 0x8d, 0x89, 0x8e, 0x9a, 0xaf, 0x29 - .byte 0x80, 0x65, 0xab, 0xe9, 0xc7, 0x2d, 0x12, 0xcb, 0xab, 0x1c, 0x4c, 0x70, 0x07, 0xa1, 0x3d, 0x0a - .byte 0x30, 0xcd, 0x15, 0x8d, 0x4f, 0xf8, 0xdd, 0xd4, 0x8c, 0x50, 0x15, 0x1c, 0xef, 0x50, 0xee, 0xc4 - .byte 0x2e, 0xf7, 0xfc, 0xe9, 0x52, 0xf2, 0x91, 0x7d, 0xe0, 0x6d, 0xd5, 0x35, 0x30, 0x8e, 0x5e, 0x43 - .byte 0x73, 0xf2, 0x41, 0xe9, 0xd5, 0x6a, 0xe3, 0xb2, 0x89, 0x3a, 0x56, 0x39, 0x38, 0x6f, 0x06, 0x3c - .byte 0x88, 0x69, 0x5b, 0x2a, 0x4d, 0xc5, 0xa7, 0x54, 0xb8, 0x6c, 0x89, 0xcc, 0x9b, 0xf9, 0x3c, 0xca - .byte 0xe5, 0xfd, 0x89, 0xf5, 0x12, 0x3c, 0x92, 0x78, 0x96, 0xd6, 0xdc, 0x74, 0x6e, 0x93, 0x44, 0x61 - .byte 0xd1, 0x8d, 0xc7, 0x46, 0xb2, 0x75, 0x0e, 0x86, 0xe8, 0x19, 0x8a, 0xd5, 0x6d, 0x6c, 0xd5, 0x78 - .byte 0x16, 0x95, 0xa2, 0xe9, 0xc8, 0x0a, 0x38, 0xeb, 0xf2, 0x24, 0x13, 0x4f, 0x73, 0x54, 0x93, 0x13 - .byte 0x85, 0x3a, 0x1b, 0xbc, 0x1e, 0x34, 0xb5, 0x8b, 0x05, 0x8c, 0xb9, 0x77, 0x8b, 0xb1, 0xdb, 0x1f - .byte 0x20, 0x91, 0xab, 0x09, 0x53, 0x6e, 0x90, 0xce, 0x7b, 0x37, 0x74, 0xb9, 0x70, 0x47, 0x91, 0x22 - .byte 0x51, 0x63, 0x16, 0x79, 0xae, 0xb1, 0xae, 0x41, 0x26, 0x08, 0xc8, 0x19, 0x2b, 0xd1, 0x46, 0xaa - .byte 0x48, 0xd6, 0x64, 0x2a, 0xd7, 0x83, 0x34, 0xff, 0x2c, 0x2a, 0xc1, 0x6c, 0x19, 0x43, 0x4a, 0x07 - .byte 0x85, 0xe7, 0xd3, 0x7c, 0xf6, 0x21, 0x68, 0xef, 0xea, 0xf2, 0x52, 0x9f, 0x7f, 0x93, 0x90, 0xcf - .global ov00_023194E4 -ov00_023194E4: - .byte 0x01, 0x00, 0x01, 0x00 - .global ov00_023194E8 -ov00_023194E8: - .word ov00_023194FC - .byte 0x00, 0x01, 0x00, 0x00 - .word ov00_02319534 - .byte 0x03, 0x00, 0x00, 0x00 - .word ov00_023194E4 - .global ov00_023194FC -ov00_023194FC: - .byte 0x49, 0x45, 0x2c, 0x20, 0x42, 0x61, 0x6c, 0x74 - .byte 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x2c, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73 - .byte 0x74, 0x2c, 0x20, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x43, 0x79, 0x62 - .byte 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov00_02319534 -ov00_02319534: - .byte 0xa3, 0x04, 0xbb, 0x22, 0xab, 0x98, 0x3d, 0x57, 0xe8, 0x26, 0x72, 0x9a, 0xb5, 0x79, 0xd4, 0x29 - .byte 0xe2, 0xe1, 0xe8, 0x95, 0x80, 0xb1, 0xb0, 0xe3, 0x5b, 0x8e, 0x2b, 0x29, 0x9a, 0x64, 0xdf, 0xa1 - .byte 0x5d, 0xed, 0xb0, 0x09, 0x05, 0x6d, 0xdb, 0x28, 0x2e, 0xce, 0x62, 0xa2, 0x62, 0xfe, 0xb4, 0x88 - .byte 0xda, 0x12, 0xeb, 0x38, 0xeb, 0x21, 0x9d, 0xc0, 0x41, 0x2b, 0x01, 0x52, 0x7b, 0x88, 0x77, 0xd3 - .byte 0x1c, 0x8f, 0xc7, 0xba, 0xb9, 0x88, 0xb5, 0x6a, 0x09, 0xe7, 0x73, 0xe8, 0x11, 0x40, 0xa7, 0xd1 - .byte 0xcc, 0xca, 0x62, 0x8d, 0x2d, 0xe5, 0x8f, 0x0b, 0xa6, 0x50, 0xd2, 0xa8, 0x50, 0xc3, 0x28, 0xea - .byte 0xf5, 0xab, 0x25, 0x87, 0x8a, 0x9a, 0x96, 0x1c, 0xa9, 0x67, 0xb8, 0x3f, 0x0c, 0xd5, 0xf7, 0xf9 - .byte 0x52, 0x13, 0x2f, 0xc2, 0x1b, 0xd5, 0x70, 0x70, 0xf0, 0x8f, 0xc0, 0x12, 0xca, 0x06, 0xcb, 0x9a - .byte 0xe1, 0xd9, 0xca, 0x33, 0x7a, 0x77, 0xd6, 0xf8, 0xec, 0xb9, 0xf1, 0x68, 0x44, 0x42, 0x48, 0x13 - .byte 0xd2, 0xc0, 0xc2, 0xa4, 0xae, 0x5e, 0x60, 0xfe, 0xb6, 0xa6, 0x05, 0xfc, 0xb4, 0xdd, 0x07, 0x59 - .byte 0x02, 0xd4, 0x59, 0x18, 0x98, 0x63, 0xf5, 0xa5, 0x63, 0xe0, 0x90, 0x0c, 0x7d, 0x5d, 0xb2, 0x06 - .byte 0x7a, 0xf3, 0x85, 0xea, 0xeb, 0xd4, 0x03, 0xae, 0x5e, 0x84, 0x3e, 0x5f, 0xff, 0x15, 0xed, 0x69 - .byte 0xbc, 0xf9, 0x39, 0x36, 0x72, 0x75, 0xcf, 0x77, 0x52, 0x4d, 0xf3, 0xc9, 0x90, 0x2c, 0xb9, 0x3d - .byte 0xe5, 0xc9, 0x23, 0x53, 0x3f, 0x1f, 0x24, 0x98, 0x21, 0x5c, 0x07, 0x99, 0x29, 0xbd, 0xc6, 0x3a - .byte 0xec, 0xe7, 0x6e, 0x86, 0x3a, 0x6b, 0x97, 0x74, 0x63, 0x33, 0xbd, 0x68, 0x18, 0x31, 0xf0, 0x78 - .byte 0x8d, 0x76, 0xbf, 0xfc, 0x9e, 0x8e, 0x5d, 0x2a, 0x86, 0xa7, 0x4d, 0x90, 0xdc, 0x27, 0x1a, 0x39 - .global ov00_02319634 -ov00_02319634: - .byte 0x01, 0x00, 0x01, 0x00 - .global ov00_02319638 -ov00_02319638: - .word ov00_0231964C - .byte 0x80, 0x00, 0x00, 0x00 - .word ov00_0231969C - .byte 0x03, 0x00, 0x00, 0x00 - .word ov00_02319634 - .global ov00_0231964C -ov00_0231964C: - .byte 0x55, 0x53, 0x2c, 0x20, 0x47, 0x54, 0x45, 0x20 - .byte 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x47, 0x54, 0x45 - .byte 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6c, 0x75 - .byte 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x2c, 0x20, 0x47, 0x54, 0x45 - .byte 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62 - .byte 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x00 - .global ov00_0231969C -ov00_0231969C: - .byte 0x95, 0x0f, 0xa0, 0xb6, 0xf0, 0x50, 0x9c, 0xe8 - .byte 0x7a, 0xc7, 0x88, 0xcd, 0xdd, 0x17, 0x0e, 0x2e, 0xb0, 0x94, 0xd0, 0x1b, 0x3d, 0x0e, 0xf6, 0x94 - .byte 0xc0, 0x8a, 0x94, 0xc7, 0x06, 0xc8, 0x90, 0x97, 0xc8, 0xb8, 0x64, 0x1a, 0x7a, 0x7e, 0x6c, 0x3c - .byte 0x53, 0xe1, 0x37, 0x28, 0x73, 0x60, 0x7f, 0xb2, 0x97, 0x53, 0x07, 0x9f, 0x53, 0xf9, 0x6d, 0x58 - .byte 0x94, 0xd2, 0xaf, 0x8d, 0x6d, 0x88, 0x67, 0x80, 0xe6, 0xed, 0xb2, 0x95, 0xcf, 0x72, 0x31, 0xca - .byte 0xa5, 0x1c, 0x72, 0xba, 0x5c, 0x02, 0xe7, 0x64, 0x42, 0xe7, 0xf9, 0xa9, 0x2c, 0xd6, 0x3a, 0x0d - .byte 0xac, 0x8d, 0x42, 0xaa, 0x24, 0x01, 0x39, 0xe6, 0x9c, 0x3f, 0x01, 0x85, 0x57, 0x0d, 0x58, 0x87 - .byte 0x45, 0xf8, 0xd3, 0x85, 0xaa, 0x93, 0x69, 0x26, 0x85, 0x70, 0x48, 0x80, 0x3f, 0x12, 0x15, 0xc7 - .byte 0x79, 0xb4, 0x1f, 0x05, 0x2f, 0x3b, 0x62, 0x99 - .global ov00_0231971C -ov00_0231971C: - .byte 0x01, 0x00, 0x01, 0x00 - .global ov00_02319720 -ov00_02319720: - .word ov00_02319734 - .byte 0x80, 0x00, 0x00, 0x00 - .word ov00_02319760 - .byte 0x03, 0x00, 0x00, 0x00 - .word ov00_0231971C - .global ov00_02319734 -ov00_02319734: - .byte 0x55, 0x53, 0x2c, 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74 - .byte 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72 - .byte 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov00_02319760 -ov00_02319760: - .byte 0xb8, 0xe6, 0x4f, 0xba - .byte 0xdb, 0x98, 0x7c, 0x71, 0x7c, 0xaf, 0x44, 0xb7, 0xd3, 0x0f, 0x46, 0xd9, 0x64, 0xe5, 0x93, 0xc1 - .byte 0x42, 0x8e, 0xc7, 0xba, 0x49, 0x8d, 0x35, 0x2d, 0x7a, 0xe7, 0x8b, 0xbd, 0xe5, 0x05, 0x31, 0x59 - .byte 0xc6, 0xb1, 0x2f, 0x0a, 0x0c, 0xfb, 0x9f, 0xa7, 0x3f, 0xa2, 0x09, 0x66, 0x84, 0x56, 0x1e, 0x37 - .byte 0x29, 0x1b, 0x87, 0xe9, 0x7e, 0x0c, 0xca, 0x9a, 0x9f, 0xa5, 0x7f, 0xf5, 0x15, 0x94, 0xa3, 0xd5 - .byte 0xa2, 0x46, 0x82, 0xd8, 0x68, 0x4c, 0xd1, 0x37, 0x15, 0x06, 0x68, 0xaf, 0xbd, 0xf8, 0xb0, 0xb3 - .byte 0xf0, 0x29, 0xf5, 0x95, 0x5a, 0x09, 0x16, 0x61, 0x77, 0x0a, 0x22, 0x25, 0xd4, 0x4f, 0x45, 0xaa - .byte 0xc7, 0xbd, 0xe5, 0x96, 0xdf, 0xf9, 0xd4, 0xa8, 0x8e, 0x42, 0xcc, 0x24, 0xc0, 0x1e, 0x91, 0x27 - .byte 0x4a, 0xb5, 0x6d, 0x06, 0x80, 0x63, 0x39, 0xc4, 0xa2, 0x5e, 0x38, 0x03 - .global ov00_023197E0 -ov00_023197E0: - .byte 0x01, 0x00, 0x01, 0x00 - .global ov00_023197E4 -ov00_023197E4: - .word ov00_023197F8 - .byte 0x80, 0x00, 0x00, 0x00 - .word ov00_02319848 - .byte 0x03, 0x00, 0x00, 0x00 - .word ov00_023197E0 - .global ov00_023197F8 -ov00_023197F8: - .byte 0x55, 0x53, 0x2c, 0x20, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x74 - .byte 0x6f, 0x6e, 0x2c, 0x20, 0x4e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x20, 0x6f, 0x66, 0x20 - .byte 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x20, 0x49, 0x6e, 0x63, 0x2c, 0x20, 0x4e, 0x4f, 0x41 - .byte 0x2c, 0x20, 0x4e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x20, 0x43, 0x41, 0x2c, 0x20, 0x63 - .byte 0x61, 0x40, 0x6e, 0x6f, 0x61, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x2e, 0x63 - .byte 0x6f, 0x6d, 0x00, 0x00 - .global ov00_02319848 -ov00_02319848: - .byte 0xb3, 0xcd, 0x79, 0x97, 0x77, 0x5d, 0x8a, 0xaf, 0x86, 0xa8, 0xe8, 0xd7 - .byte 0x73, 0x1c, 0x77, 0xdf, 0x10, 0x90, 0x1f, 0x81, 0xf8, 0x41, 0x9e, 0x21, 0x55, 0xdf, 0xbc, 0xfc - .byte 0x63, 0xfb, 0x19, 0x43, 0xf1, 0xf6, 0xc4, 0x72, 0x42, 0x49, 0xbd, 0xad, 0x44, 0x68, 0x4e, 0xf3 - .byte 0xda, 0x1d, 0xe6, 0x4d, 0xd8, 0xf9, 0x59, 0x88, 0xdc, 0xae, 0x3e, 0x9b, 0x38, 0x09, 0xca, 0x7f - .byte 0xff, 0xdc, 0x24, 0xa2, 0x44, 0x78, 0x78, 0x49, 0x93, 0xd4, 0x84, 0x40, 0x10, 0xb8, 0xec, 0x3e - .byte 0xdb, 0x2d, 0x93, 0xc8, 0x11, 0xc8, 0xfd, 0x78, 0x2d, 0x61, 0xad, 0x31, 0xae, 0x86, 0x26, 0xb0 - .byte 0xfd, 0x5a, 0x3f, 0xa1, 0x3d, 0xbf, 0xe2, 0x4b, 0x49, 0xec, 0xce, 0x66, 0x98, 0x58, 0x26, 0x12 - .byte 0xc0, 0xfb, 0xf4, 0x77, 0x65, 0x1b, 0xea, 0xfb, 0xcb, 0x7f, 0xe0, 0x8c, 0xcb, 0x02, 0xa3, 0x4e - .byte 0x5e, 0x8c, 0xea, 0x9b - .global ov00_023198C8 -ov00_023198C8: - .byte 0x01, 0x00, 0x01, 0x00 - .global ov00_023198CC -ov00_023198CC: - .word ov00_02319960 - .byte 0x80, 0x00, 0x00, 0x00 - .word ov00_023198E0 - .byte 0x03, 0x00, 0x00, 0x00 - .word ov00_023198C8 - .global ov00_023198E0 -ov00_023198E0: - .byte 0xd2, 0x36, 0x36, 0x6a - .byte 0x8b, 0xd7, 0xc2, 0x5b, 0x9e, 0xda, 0x81, 0x41, 0x62, 0x8f, 0x38, 0xee, 0x49, 0x04, 0x55, 0xd6 - .byte 0xd0, 0xef, 0x1c, 0x1b, 0x95, 0x16, 0x47, 0xef, 0x18, 0x48, 0x35, 0x3a, 0x52, 0xf4, 0x2b, 0x6a - .byte 0x06, 0x8f, 0x3b, 0x2f, 0xea, 0x56, 0xe3, 0xaf, 0x86, 0x8d, 0x9e, 0x17, 0xf7, 0x9e, 0xb4, 0x65 - .byte 0x75, 0x02, 0x4d, 0xef, 0xcb, 0x09, 0xa2, 0x21, 0x51, 0xd8, 0x9b, 0xd0, 0x67, 0xd0, 0xba, 0x0d - .byte 0x92, 0x06, 0x14, 0x73, 0xd4, 0x93, 0xcb, 0x97, 0x2a, 0x00, 0x9c, 0x5c, 0x4e, 0x0c, 0xbc, 0xfa - .byte 0x15, 0x52, 0xfc, 0xf2, 0x44, 0x6e, 0xda, 0x11, 0x4a, 0x6e, 0x08, 0x9f, 0x2f, 0x2d, 0xe3, 0xf9 - .byte 0xaa, 0x3a, 0x86, 0x73, 0xb6, 0x46, 0x53, 0x58, 0xc8, 0x89, 0x05, 0xbd, 0x83, 0x11, 0xb8, 0x73 - .byte 0x3f, 0xaa, 0x07, 0x8d, 0xf4, 0x42, 0x4d, 0xe7, 0x40, 0x9d, 0x1c, 0x37 - .global ov00_02319960 -ov00_02319960: - .byte 0x5a, 0x41, 0x2c, 0x20 - .byte 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x43, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x43, 0x61 - .byte 0x70, 0x65, 0x20, 0x54, 0x6f, 0x77, 0x6e, 0x2c, 0x20, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20 - .byte 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x63, 0x2c, 0x20, 0x43 - .byte 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72 - .byte 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2c, 0x20 - .byte 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x20, 0x53 - .byte 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x75 - .byte 0x6d, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x40, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e - .byte 0x63, 0x6f, 0x6d, 0x00 - .global ov00_023199E8 -ov00_023199E8: - .byte 0x01, 0x00, 0x01, 0x00 - .global ov00_023199EC -ov00_023199EC: - .word ov00_02319A00 - .byte 0x80, 0x00, 0x00, 0x00 - .word ov00_02319A80 - .byte 0x03, 0x00, 0x00, 0x00 - .word ov00_023199E8 - .global ov00_02319A00 -ov00_02319A00: - .byte 0x5a, 0x41, 0x2c, 0x20 - .byte 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x43, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x43, 0x61 - .byte 0x70, 0x65, 0x20, 0x54, 0x6f, 0x77, 0x6e, 0x2c, 0x20, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20 - .byte 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x63, 0x2c, 0x20, 0x43 - .byte 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72 - .byte 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2c, 0x20 - .byte 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41 - .byte 0x2c, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2d, 0x63, 0x65, 0x72, 0x74, 0x73, 0x40, 0x74 - .byte 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x00, 0x00, 0x00 - .global ov00_02319A80 -ov00_02319A80: - .byte 0xd3, 0xa4, 0x50, 0x6e - .byte 0xc8, 0xff, 0x56, 0x6b, 0xe6, 0xcf, 0x5d, 0xb6, 0xea, 0x0c, 0x68, 0x75, 0x47, 0xa2, 0xaa, 0xc2 - .byte 0xda, 0x84, 0x25, 0xfc, 0xa8, 0xf4, 0x47, 0x51, 0xda, 0x85, 0xb5, 0x20, 0x74, 0x94, 0x86, 0x1e - .byte 0x0f, 0x75, 0xc9, 0xe9, 0x08, 0x61, 0xf5, 0x06, 0x6d, 0x30, 0x6e, 0x15, 0x19, 0x02, 0xe9, 0x52 - .byte 0xc0, 0x62, 0xdb, 0x4d, 0x99, 0x9e, 0xe2, 0x6a, 0x0c, 0x44, 0x38, 0xcd, 0xfe, 0xbe, 0xe3, 0x64 - .byte 0x09, 0x70, 0xc5, 0xfe, 0xb1, 0x6b, 0x29, 0xb6, 0x2f, 0x49, 0xc8, 0x3b, 0xd4, 0x27, 0x04, 0x25 - .byte 0x10, 0x97, 0x2f, 0xe7, 0x90, 0x6d, 0xc0, 0x28, 0x42, 0x99, 0xd7, 0x4c, 0x43, 0xde, 0xc3, 0xf5 - .byte 0x21, 0x6d, 0x54, 0x9f, 0x5d, 0xc3, 0x58, 0xe1, 0xc0, 0xe4, 0xd9, 0x5b, 0xb0, 0xb8, 0xdc, 0xb4 - .byte 0x7b, 0xdf, 0x36, 0x3a, 0xc2, 0xb5, 0x66, 0x22, 0x12, 0xd6, 0x87, 0x0d - .global ov00_02319B00 -ov00_02319B00: - .byte 0x01, 0x00, 0x01, 0x00 - .global ov00_02319B04 -ov00_02319B04: - .word ov00_02319B98 - .byte 0x80, 0x00, 0x00, 0x00 - .word ov00_02319B18 - .byte 0x03, 0x00, 0x00, 0x00 - .word ov00_02319B00 - .global ov00_02319B18 -ov00_02319B18: - .byte 0xcc, 0x5e, 0xd1, 0x11, 0x5d, 0x5c, 0x69, 0xd0, 0xab, 0xd3, 0xb9, 0x6a - .byte 0x4c, 0x99, 0x1f, 0x59, 0x98, 0x30, 0x8e, 0x16, 0x85, 0x20, 0x46, 0x6d, 0x47, 0x3f, 0xd4, 0x85 - .byte 0x20, 0x84, 0xe1, 0x6d, 0xb3, 0xf8, 0xa4, 0xed, 0x0c, 0xf1, 0x17, 0x0f, 0x3b, 0xf9, 0xa7, 0xf9 - .byte 0x25, 0xd7, 0xc1, 0xcf, 0x84, 0x63, 0xf2, 0x7c, 0x63, 0xcf, 0xa2, 0x47, 0xf2, 0xc6, 0x5b, 0x33 - .byte 0x8e, 0x64, 0x40, 0x04, 0x68, 0xc1, 0x80, 0xb9, 0x64, 0x1c, 0x45, 0x77, 0xc7, 0xd8, 0x6e, 0xf5 - .byte 0x95, 0x29, 0x3c, 0x50, 0xe8, 0x34, 0xd7, 0x78, 0x1f, 0xa8, 0xba, 0x6d, 0x43, 0x91, 0x95, 0x8f - .byte 0x45, 0x57, 0x5e, 0x7e, 0xc5, 0xfb, 0xca, 0xa4, 0x04, 0xeb, 0xea, 0x97, 0x37, 0x54, 0x30, 0x6f - .byte 0xbb, 0x01, 0x47, 0x32, 0x33, 0xcd, 0xdc, 0x57, 0x9b, 0x64, 0x69, 0x61, 0xf8, 0x9b, 0x1d, 0x1c - .byte 0x89, 0x4f, 0x5c, 0x67 - .global ov00_02319B98 -ov00_02319B98: - .byte 0x55, 0x53, 0x2c, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e - .byte 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x2c, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20 - .byte 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43 - .byte 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74 - .byte 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x2c, 0x20, 0x28, 0x63, 0x29 - .byte 0x20, 0x31, 0x39, 0x39, 0x38, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20 - .byte 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f - .byte 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x2c, 0x20 - .byte 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e - .byte 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x00, 0x00 - .global ov00_02319C2C -ov00_02319C2C: - .byte 0x01, 0x00, 0x01, 0x00 - .global ov00_02319C30 -ov00_02319C30: - .word ov00_02319C44 - .byte 0x00, 0x01, 0x00, 0x00 - .word ov00_02319CE0 - .byte 0x03, 0x00, 0x00, 0x00 - .word ov00_02319C2C - .global ov00_02319C44 -ov00_02319C44: - .byte 0x55, 0x53, 0x2c, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e - .byte 0x63, 0x2e, 0x2c, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75 - .byte 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2c, 0x20, 0x28, 0x63, 0x29, 0x20 - .byte 0x31, 0x39, 0x39, 0x39, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49 - .byte 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72 - .byte 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x2c, 0x20, 0x56 - .byte 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20 - .byte 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43 - .byte 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74 - .byte 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x00 - .global ov00_02319CE0 -ov00_02319CE0: - .byte 0xcb, 0xba, 0x9c, 0x52 - .byte 0xfc, 0x78, 0x1f, 0x1a, 0x1e, 0x6f, 0x1b, 0x37, 0x73, 0xbd, 0xf8, 0xc9, 0x6b, 0x94, 0x12, 0x30 - .byte 0x4f, 0xf0, 0x36, 0x47, 0xf5, 0xd0, 0x91, 0x0a, 0xf5, 0x17, 0xc8, 0xa5, 0x61, 0xc1, 0x16, 0x40 - .byte 0x4d, 0xfb, 0x8a, 0x61, 0x90, 0xe5, 0x76, 0x20, 0xc1, 0x11, 0x06, 0x7d, 0xab, 0x2c, 0x6e, 0xa6 - .byte 0xf5, 0x11, 0x41, 0x8e, 0xfa, 0x2d, 0xad, 0x2a, 0x61, 0x59, 0xa4, 0x67, 0x26, 0x4c, 0xd0, 0xe8 - .byte 0xbc, 0x52, 0x5b, 0x70, 0x20, 0x04, 0x58, 0xd1, 0x7a, 0xc9, 0xa4, 0x69, 0xbc, 0x83, 0x17, 0x64 - .byte 0xad, 0x05, 0x8b, 0xbc, 0xd0, 0x58, 0xce, 0x8d, 0x8c, 0xf5, 0xeb, 0xf0, 0x42, 0x49, 0x0b, 0x9d - .byte 0x97, 0x27, 0x67, 0x32, 0x6e, 0xe1, 0xae, 0x93, 0x15, 0x1c, 0x70, 0xbc, 0x20, 0x4d, 0x2f, 0x18 - .byte 0xde, 0x92, 0x88, 0xe8, 0x6c, 0x85, 0x57, 0x11, 0x1a, 0xe9, 0x7e, 0xe3, 0x26, 0x11, 0x54, 0xa2 - .byte 0x45, 0x96, 0x55, 0x83, 0xca, 0x30, 0x89, 0xe8, 0xdc, 0xd8, 0xa3, 0xed, 0x2a, 0x80, 0x3f, 0x7f - .byte 0x79, 0x65, 0x57, 0x3e, 0x15, 0x20, 0x66, 0x08, 0x2f, 0x95, 0x93, 0xbf, 0xaa, 0x47, 0x2f, 0xa8 - .byte 0x46, 0x97, 0xf0, 0x12, 0xe2, 0xfe, 0xc2, 0x0a, 0x2b, 0x51, 0xe6, 0x76, 0xe6, 0xb7, 0x46, 0xb7 - .byte 0xe2, 0x0d, 0xa6, 0xcc, 0xa8, 0xc3, 0x4c, 0x59, 0x55, 0x89, 0xe6, 0xe8, 0x53, 0x5c, 0x1c, 0xea - .byte 0x9d, 0xf0, 0x62, 0x16, 0x0b, 0xa7, 0xc9, 0x5f, 0x0c, 0xf0, 0xde, 0xc2, 0x76, 0xce, 0xaf, 0xf7 - .byte 0x6a, 0xf2, 0xfa, 0x41, 0xa6, 0xa2, 0x33, 0x14, 0xc9, 0xe5, 0x7a, 0x63, 0xd3, 0x9e, 0x62, 0x37 - .byte 0xd5, 0x85, 0x65, 0x9e, 0x0e, 0xe6, 0x53, 0x24, 0x74, 0x1b, 0x5e, 0x1d, 0x12, 0x53, 0x5b, 0xc7 - .byte 0x2c, 0xe7, 0x83, 0x49, 0x3b, 0x15, 0xae, 0x8a, 0x68, 0xb9, 0x57, 0x97 - .global ov00_02319DE0 -ov00_02319DE0: - .byte 0x01, 0x00, 0x01, 0x00 - .global ov00_02319DE4 -ov00_02319DE4: - .word ov00_02319DF8 - .byte 0x80, 0x00, 0x00, 0x00 - .word ov00_02319E3C - .byte 0x03, 0x00, 0x00, 0x00 - .word ov00_02319DE0 - .global ov00_02319DF8 -ov00_02319DF8: - .byte 0x55, 0x53, 0x2c, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e - .byte 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x2c, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20 - .byte 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43 - .byte 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74 - .byte 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x00, 0x00 - .global ov00_02319E3C -ov00_02319E3C: - .byte 0xc9, 0x5c, 0x59, 0x9e, 0xf2, 0x1b, 0x8a, 0x01 - .byte 0x14, 0xb4, 0x10, 0xdf, 0x04, 0x40, 0xdb, 0xe3, 0x57, 0xaf, 0x6a, 0x45, 0x40, 0x8f, 0x84, 0x0c - .byte 0x0b, 0xd1, 0x33, 0xd9, 0xd9, 0x11, 0xcf, 0xee, 0x02, 0x58, 0x1f, 0x25, 0xf7, 0x2a, 0xa8, 0x44 - .byte 0x05, 0xaa, 0xec, 0x03, 0x1f, 0x78, 0x7f, 0x9e, 0x93, 0xb9, 0x9a, 0x00, 0xaa, 0x23, 0x7d, 0xd6 - .byte 0xac, 0x85, 0xa2, 0x63, 0x45, 0xc7, 0x72, 0x27, 0xcc, 0xf4, 0x4c, 0xc6, 0x75, 0x71, 0xd2, 0x39 - .byte 0xef, 0x4f, 0x42, 0xf0, 0x75, 0xdf, 0x0a, 0x90, 0xc6, 0x8e, 0x20, 0x6f, 0x98, 0x0f, 0xf8, 0xac - .byte 0x23, 0x5f, 0x70, 0x29, 0x36, 0xa4, 0xc9, 0x86, 0xe7, 0xb1, 0x9a, 0x20, 0xcb, 0x53, 0xa5, 0x85 - .byte 0xe7, 0x3d, 0xbe, 0x7d, 0x9a, 0xfe, 0x24, 0x45, 0x33, 0xdc, 0x76, 0x15, 0xed, 0x0f, 0xa2, 0x71 - .byte 0x64, 0x4c, 0x65, 0x2e, 0x81, 0x68, 0x45, 0xa7 - .global ov00_02319EBC -ov00_02319EBC: - .byte 0x01, 0x00, 0x01, 0x00 - .global ov00_02319EC0 -ov00_02319EC0: - .word ov00_02319ED4 - .byte 0x7d, 0x00, 0x00, 0x00 - .word ov00_02319F18 - .byte 0x03, 0x00, 0x00, 0x00 - .word ov00_02319EBC - .global ov00_02319ED4 -ov00_02319ED4: - .byte 0x55, 0x53, 0x2c, 0x20, 0x52, 0x53, 0x41, 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x53, 0x65, 0x63 - .byte 0x75, 0x72, 0x69, 0x74, 0x79, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x2c, 0x20, 0x53, 0x65, 0x63 - .byte 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69 - .byte 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69 - .byte 0x74, 0x79, 0x00, 0x00 - .global ov00_02319F18 -ov00_02319F18: - .byte 0x92, 0xce, 0x7a, 0xc1, 0xae, 0x83, 0x3e, 0x5a, 0xaa, 0x89, 0x83, 0x57 - .byte 0xac, 0x25, 0x01, 0x76, 0x0c, 0xad, 0xae, 0x8e, 0x2c, 0x37, 0xce, 0xeb, 0x35, 0x78, 0x64, 0x54 - .byte 0x03, 0xe5, 0x84, 0x40, 0x51, 0xc9, 0xbf, 0x8f, 0x08, 0xe2, 0x8a, 0x82, 0x08, 0xd2, 0x16, 0x86 - .byte 0x37, 0x55, 0xe9, 0xb1, 0x21, 0x02, 0xad, 0x76, 0x68, 0x81, 0x9a, 0x05, 0xa2, 0x4b, 0xc9, 0x4b - .byte 0x25, 0x66, 0x22, 0x56, 0x6c, 0x88, 0x07, 0x8f, 0xf7, 0x81, 0x59, 0x6d, 0x84, 0x07, 0x65, 0x70 - .byte 0x13, 0x71, 0x76, 0x3e, 0x9b, 0x77, 0x4c, 0xe3, 0x50, 0x89, 0x56, 0x98, 0x48, 0xb9, 0x1d, 0xa7 - .byte 0x29, 0x1a, 0x13, 0x2e, 0x4a, 0x11, 0x59, 0x9c, 0x1e, 0x15, 0xd5, 0x49, 0x54, 0x2c, 0x73, 0x3a - .byte 0x69, 0x82, 0xb1, 0x97, 0x39, 0x9c, 0x6d, 0x70, 0x67, 0x48, 0xe5, 0xdd, 0x2d, 0xd6, 0xc8, 0x1e - .byte 0x7b, 0x00, 0x00, 0x00 - .global ov00_02319F98 -ov00_02319F98: - .byte 0x01, 0x00, 0x01, 0x00 - .global ov00_02319F9C -ov00_02319F9C: - .word ov00_02319FB0 - .byte 0x00, 0x01, 0x00, 0x00 - .word ov00_02319FE0 - .byte 0x03, 0x00, 0x00, 0x00 - .word ov00_02319F98 - .global ov00_02319FB0 -ov00_02319FB0: - .byte 0x47, 0x6c, 0x6f, 0x62 - .byte 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2d - .byte 0x20, 0x52, 0x32, 0x2c, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x2c - .byte 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x00 - .global ov00_02319FE0 -ov00_02319FE0: - .byte 0xa6, 0xcf, 0x24, 0x0e - .byte 0xbe, 0x2e, 0x6f, 0x28, 0x99, 0x45, 0x42, 0xc4, 0xab, 0x3e, 0x21, 0x54, 0x9b, 0x0b, 0xd3, 0x7f - .byte 0x84, 0x70, 0xfa, 0x12, 0xb3, 0xcb, 0xbf, 0x87, 0x5f, 0xc6, 0x7f, 0x86, 0xd3, 0xb2, 0x30, 0x5c - .byte 0xd6, 0xfd, 0xad, 0xf1, 0x7b, 0xdc, 0xe5, 0xf8, 0x60, 0x96, 0x09, 0x92, 0x10, 0xf5, 0xd0, 0x53 - .byte 0xde, 0xfb, 0x7b, 0x7e, 0x73, 0x88, 0xac, 0x52, 0x88, 0x7b, 0x4a, 0xa6, 0xca, 0x49, 0xa6, 0x5e - .byte 0xa8, 0xa7, 0x8c, 0x5a, 0x11, 0xbc, 0x7a, 0x82, 0xeb, 0xbe, 0x8c, 0xe9, 0xb3, 0xac, 0x96, 0x25 - .byte 0x07, 0x97, 0x4a, 0x99, 0x2a, 0x07, 0x2f, 0xb4, 0x1e, 0x77, 0xbf, 0x8a, 0x0f, 0xb5, 0x02, 0x7c - .byte 0x1b, 0x96, 0xb8, 0xc5, 0xb9, 0x3a, 0x2c, 0xbc, 0xd6, 0x12, 0xb9, 0xeb, 0x59, 0x7d, 0xe2, 0xd0 - .byte 0x06, 0x86, 0x5f, 0x5e, 0x49, 0x6a, 0xb5, 0x39, 0x5e, 0x88, 0x34, 0xec, 0xbc, 0x78, 0x0c, 0x08 - .byte 0x98, 0x84, 0x6c, 0xa8, 0xcd, 0x4b, 0xb4, 0xa0, 0x7d, 0x0c, 0x79, 0x4d, 0xf0, 0xb8, 0x2d, 0xcb - .byte 0x21, 0xca, 0xd5, 0x6c, 0x5b, 0x7d, 0xe1, 0xa0, 0x29, 0x84, 0xa1, 0xf9, 0xd3, 0x94, 0x49, 0xcb - .byte 0x24, 0x62, 0x91, 0x20, 0xbc, 0xdd, 0x0b, 0xd5, 0xd9, 0xcc, 0xf9, 0xea, 0x27, 0x0a, 0x2b, 0x73 - .byte 0x91, 0xc6, 0x9d, 0x1b, 0xac, 0xc8, 0xcb, 0xe8, 0xe0, 0xa0, 0xf4, 0x2f, 0x90, 0x8b, 0x4d, 0xfb - .byte 0xb0, 0x36, 0x1b, 0xf6, 0x19, 0x7a, 0x85, 0xe0, 0x6d, 0xf2, 0x61, 0x13, 0x88, 0x5c, 0x9f, 0xe0 - .byte 0x93, 0x0a, 0x51, 0x97, 0x8a, 0x5a, 0xce, 0xaf, 0xab, 0xd5, 0xf7, 0xaa, 0x09, 0xaa, 0x60, 0xbd - .byte 0xdc, 0xd9, 0x5f, 0xdf, 0x72, 0xa9, 0x60, 0x13, 0x5e, 0x00, 0x01, 0xc9, 0x4a, 0xfa, 0x3f, 0xa4 - .byte 0xea, 0x07, 0x03, 0x21, 0x02, 0x8e, 0x82, 0xca, 0x03, 0xc2, 0x9b, 0x8f - .global ov00_0231A0E0 -ov00_0231A0E0: - .byte 0x68, 0x74, 0x74, 0x70 - .byte 0x73, 0x3a, 0x2f, 0x2f, 0x6e, 0x61, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x6e, 0x69, 0x6e - .byte 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x63 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A108 -ov00_0231A108: - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x6e, 0x61, 0x73, 0x2e - .byte 0x64, 0x65, 0x76, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69 - .byte 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x63, 0x00 - .global ov00_0231A12C -ov00_0231A12C: - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f - .byte 0x6e, 0x61, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69 - .byte 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x63, 0x00 - .global ov00_0231A14C -ov00_0231A14C: - .byte 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A154 -ov00_0231A154: - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61 - .byte 0x64, 0x00, 0x00, 0x00 - .global ov00_0231A168 -ov00_0231A168: - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x25, 0x73, 0x2f, 0x64 - .byte 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x00 - .global ov00_0231A17C -ov00_0231A17C: - .byte 0x39, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A184 -ov00_0231A184: - .byte 0x25, 0x63, 0x25, 0x73, 0x25, 0x63, 0x25, 0x73, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A190 -ov00_0231A190: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A194 -ov00_0231A194: - .byte 0x47, 0x50, 0x43, 0x4d, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A19C -ov00_0231A19C: - .byte 0x4d, 0x41, 0x54, 0x00 - .global ov00_0231A1A0 -ov00_0231A1A0: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A1A4 -ov00_0231A1A4: - .byte 0x53, 0x43, 0x4d, 0x00 - .global ov00_0231A1A8 -ov00_0231A1A8: - .byte 0x53, 0x43, 0x4e, 0x00 - .global ov00_0231A1AC -ov00_0231A1AC: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A1B0 -ov00_0231A1B0: - .byte 0x25, 0x63, 0x25, 0x63 - .byte 0x25, 0x63, 0x25, 0x63, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A1BC -ov00_0231A1BC: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A1C0 -ov00_0231A1C0: - .byte 0x25, 0x75, 0x00, 0x00 - .global ov00_0231A1C4 -ov00_0231A1C4: - .byte 0x46, 0x4d, 0x45, 0x00 - .global ov00_0231A1C8 -ov00_0231A1C8: - .byte 0x4d, 0x44, 0x46, 0x00 - .global ov00_0231A1CC -ov00_0231A1CC: - .byte 0x56, 0x45, 0x52, 0x00 - .global ov00_0231A1D0 -ov00_0231A1D0: - .byte 0x49, 0x6e, 0x69, 0x74 - .byte 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x00, 0x00 - .global ov00_0231A1DC -ov00_0231A1DC: - .byte 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x66 - .byte 0x75, 0x6c, 0x6c, 0x00 - .global ov00_0231A1E8 -ov00_0231A1E8: - .byte 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x63, 0x6f, 0x6e, 0x6e - .byte 0x65, 0x63, 0x74, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x00 - .global ov00_0231A200 -ov00_0231A200: - .byte 0x53, 0x43, 0x4d, 0x00 - .global ov00_0231A204 -ov00_0231A204: - .byte 0x53, 0x43, 0x4e, 0x00 - .global ov00_0231A208 -ov00_0231A208: - .byte 0x64, 0x77, 0x63, 0x5f, 0x70, 0x69, 0x64, 0x00 - .global ov00_0231A210 -ov00_0231A210: - .byte 0x64, 0x77, 0x63, 0x5f - .byte 0x6d, 0x74, 0x79, 0x70, 0x65, 0x00, 0x00, 0x00 - .global ov00_0231A21C -ov00_0231A21C: - .byte 0x64, 0x77, 0x63, 0x5f, 0x6d, 0x72, 0x65, 0x73 - .byte 0x76, 0x00, 0x00, 0x00 - .global ov00_0231A228 -ov00_0231A228: - .byte 0x64, 0x77, 0x63, 0x5f, 0x6d, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A234 -ov00_0231A234: - .byte 0x20, 0x61, 0x6e, 0x64, 0x20, 0x28, 0x25, 0x73, 0x29, 0x00, 0x00, 0x00 - .global ov00_0231A240 -ov00_0231A240: - .byte 0x25, 0x73, 0x20, 0x3d - .byte 0x20, 0x25, 0x75, 0x00 - .global ov00_0231A248 -ov00_0231A248: - .byte 0x25, 0x73, 0x20, 0x3d, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20 - .byte 0x25, 0x73, 0x20, 0x21, 0x3d, 0x20, 0x25, 0x75, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x61, 0x78 - .byte 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x20, 0x3d, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6e, 0x64 - .byte 0x20, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x20, 0x3c, 0x20, 0x25, 0x64 - .byte 0x20, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x73, 0x20, 0x3d, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6e, 0x64 - .byte 0x20, 0x25, 0x73, 0x20, 0x21, 0x3d, 0x20, 0x25, 0x73, 0x00, 0x00, 0x00 - .global ov00_0231A2A0 -ov00_0231A2A0: - .byte 0x2f, 0x25, 0x75, 0x00 - .global ov00_0231A2A4 -ov00_0231A2A4: - .byte 0x53, 0x42, 0x43, 0x4d, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A2AC -ov00_0231A2AC: - .byte 0x25, 0x73, 0x25, 0x64, 0x76, 0x25, 0x73, 0x00 - .global ov00_0231A2B4 -ov00_0231A2B4: - .byte 0x47, 0x50, 0x43, 0x4d, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A2BC -ov00_0231A2BC: - .byte 0x4d, 0x41, 0x54, 0x00 - .global ov00_0231A2C0 -ov00_0231A2C0: - .byte 0x44, 0x54, 0x00, 0x00 - .global ov00_0231A2C4 -ov00_0231A2C4: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A2D8 -ov00_0231A2D8: - .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 - .global ov00_0231A2F8 -ov00_0231A2F8: - .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, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A33C -ov00_0231A33C: - .byte 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 - .global ov00_0231A368 -ov00_0231A368: - .byte 0x26, 0x68, 0x61, 0x73, 0x68, 0x3d, 0x00, 0x00 - .global ov00_0231A370 -ov00_0231A370: - .byte 0x65, 0x72, 0x72, 0x6f - .byte 0x72, 0x3a, 0x00, 0x00 - .global ov00_0231A378 -ov00_0231A378: - .byte 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x73 - .byte 0x74, 0x61, 0x74, 0x73, 0x32, 0x2e, 0x67, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64 - .byte 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x00, 0x00 - .global ov00_0231A3A0 -ov00_0231A3A0: - .byte 0x68, 0x74, 0x74, 0x70 - .byte 0x3a, 0x2f, 0x2f, 0x73, 0x64, 0x6b, 0x64, 0x65, 0x76, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x70 - .byte 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2f, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A3C4 -ov00_0231A3C4: - .byte 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x69, 0x73, 0x68, 0x69, 0x6b, 0x61, 0x77, 0x61, 0x2e - .byte 0x73, 0x65, 0x72, 0x76, 0x65, 0x62, 0x65, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61 - .byte 0x6d, 0x65, 0x73, 0x2f, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A3EC -ov00_0231A3EC: - .byte 0x26, 0x64, 0x61, 0x74, 0x61, 0x3d, 0x00, 0x00 - .global ov00_0231A3F4 -ov00_0231A3F4: - .byte 0x25, 0x64, 0x00, 0x00 - .global ov00_0231A3F8 -ov00_0231A3F8: - .byte 0x3f, 0x70, 0x69, 0x64, 0x3d, 0x00, 0x00, 0x00 - .global ov00_0231A400 -ov00_0231A400: - .byte 0x25, 0x73, 0x25, 0x73 - .byte 0x25, 0x73, 0x3f, 0x70, 0x69, 0x64, 0x3d, 0x25, 0x64, 0x26, 0x68, 0x61, 0x73, 0x68, 0x3d, 0x25 - .byte 0x73, 0x26, 0x64, 0x61, 0x74, 0x61, 0x3d, 0x00 - .global ov00_0231A41C -ov00_0231A41C: - .byte 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 - .byte 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 - .byte 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A448 -ov00_0231A448: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A44C -ov00_0231A44C: - .byte 0x01, 0x00, 0x01, 0x00 - .global ov00_0231A450 -ov00_0231A450: - .word ov00_0231A464 - .byte 0x80, 0x00, 0x00, 0x00 - .word ov00_0231A4B4 - .byte 0x03, 0x00, 0x00, 0x00 - .word ov00_0231A44C - .global ov00_0231A464 -ov00_0231A464: - .byte 0x55, 0x53, 0x2c, 0x20, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x2c, 0x20 - .byte 0x4e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x20, 0x6f, 0x66, 0x20, 0x41, 0x6d, 0x65, 0x72 - .byte 0x69, 0x63, 0x61, 0x20, 0x49, 0x6e, 0x63, 0x2c, 0x20, 0x4e, 0x4f, 0x41, 0x2c, 0x20, 0x4e, 0x69 - .byte 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x20, 0x43, 0x41, 0x2c, 0x20, 0x63, 0x61, 0x40, 0x6e, 0x6f - .byte 0x61, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x00, 0x00 - .global ov00_0231A4B4 -ov00_0231A4B4: - .byte 0xb3, 0xcd, 0x79, 0x97, 0x77, 0x5d, 0x8a, 0xaf, 0x86, 0xa8, 0xe8, 0xd7, 0x73, 0x1c, 0x77, 0xdf - .byte 0x10, 0x90, 0x1f, 0x81, 0xf8, 0x41, 0x9e, 0x21, 0x55, 0xdf, 0xbc, 0xfc, 0x63, 0xfb, 0x19, 0x43 - .byte 0xf1, 0xf6, 0xc4, 0x72, 0x42, 0x49, 0xbd, 0xad, 0x44, 0x68, 0x4e, 0xf3, 0xda, 0x1d, 0xe6, 0x4d - .byte 0xd8, 0xf9, 0x59, 0x88, 0xdc, 0xae, 0x3e, 0x9b, 0x38, 0x09, 0xca, 0x7f, 0xff, 0xdc, 0x24, 0xa2 - .byte 0x44, 0x78, 0x78, 0x49, 0x93, 0xd4, 0x84, 0x40, 0x10, 0xb8, 0xec, 0x3e, 0xdb, 0x2d, 0x93, 0xc8 - .byte 0x11, 0xc8, 0xfd, 0x78, 0x2d, 0x61, 0xad, 0x31, 0xae, 0x86, 0x26, 0xb0, 0xfd, 0x5a, 0x3f, 0xa1 - .byte 0x3d, 0xbf, 0xe2, 0x4b, 0x49, 0xec, 0xce, 0x66, 0x98, 0x58, 0x26, 0x12, 0xc0, 0xfb, 0xf4, 0x77 - .byte 0x65, 0x1b, 0xea, 0xfb, 0xcb, 0x7f, 0xe0, 0x8c, 0xcb, 0x02, 0xa3, 0x4e, 0x5e, 0x8c, 0xea, 0x9b - .global ov00_0231A534 -ov00_0231A534: - .byte 0x4e, 0x69, 0x74, 0x72, 0x6f, 0x20, 0x57, 0x69, 0x46, 0x69, 0x20, 0x53, 0x44, 0x4b, 0x2f, 0x25 - .byte 0x64, 0x2e, 0x25, 0x64, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A54C -ov00_0231A54C: - .word ov00_0231A450 - .global ov00_0231A550 -ov00_0231A550: - .byte 0x48, 0x54, 0x54, 0x50 - .byte 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x43, 0x4f, 0x44, 0x45, 0x00, 0x00 - .global ov00_0231A560 -ov00_0231A560: - .byte 0x72, 0x65, 0x74, 0x75 - .byte 0x72, 0x6e, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A56C -ov00_0231A56C: - .byte 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41, 0x67, 0x65 - .byte 0x6e, 0x74, 0x00, 0x00 - .global ov00_0231A578 -ov00_0231A578: - .byte 0x67, 0x61, 0x6d, 0x65, 0x63, 0x64, 0x00, 0x00 - .global ov00_0231A580 -ov00_0231A580: - .byte 0x72, 0x68, 0x67, 0x61 - .byte 0x6d, 0x65, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A58C -ov00_0231A58C: - .byte 0x70, 0x61, 0x73, 0x73, 0x77, 0x64, 0x00, 0x00 - .global ov00_0231A594 -ov00_0231A594: - .byte 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x00, 0x00, 0x00 - .global ov00_0231A59C -ov00_0231A59C: - .byte 0x75, 0x73, 0x65, 0x72, 0x69, 0x64, 0x00, 0x00 - .global ov00_0231A5A4 -ov00_0231A5A4: - .byte 0x6d, 0x61, 0x63, 0x61, 0x64, 0x72, 0x00, 0x00 - .global ov00_0231A5AC -ov00_0231A5AC: - .byte 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00 - .global ov00_0231A5B4 -ov00_0231A5B4: - .byte 0x61, 0x74, 0x74, 0x72, 0x31, 0x00, 0x00, 0x00 - .global ov00_0231A5BC -ov00_0231A5BC: - .byte 0x61, 0x74, 0x74, 0x72, 0x32, 0x00, 0x00, 0x00 - .global ov00_0231A5C4 -ov00_0231A5C4: - .byte 0x61, 0x74, 0x74, 0x72, 0x33, 0x00, 0x00, 0x00 - .global ov00_0231A5CC -ov00_0231A5CC: - .byte 0x61, 0x70, 0x69, 0x6e, 0x66, 0x6f, 0x00, 0x00 - .global ov00_0231A5D4 -ov00_0231A5D4: - .byte 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x6f, 0x67, 0x64, 0x61, 0x74, 0x61, 0x00 - .global ov00_0231A5E4 -ov00_0231A5E4: - .byte 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x00 - .global ov00_0231A5EC -ov00_0231A5EC: - .byte 0x6e, 0x75, 0x6d, 0x00 - .global ov00_0231A5F0 -ov00_0231A5F0: - .byte 0x63, 0x6f, 0x6e, 0x74 - .byte 0x65, 0x6e, 0x74, 0x73, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A5FC -ov00_0231A5FC: - .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d - .byte 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x00, 0x00 - .global ov00_0231A60C -ov00_0231A60C: - .byte 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x00 - .global ov00_0231A614 -ov00_0231A614: - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A620 -ov00_0231A620: - .byte 0x48, 0x54, 0x54, 0x50 - .byte 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x43, 0x4f, 0x44, 0x45, 0x00, 0x00 - .global ov00_0231A630 -ov00_0231A630: - .byte 0x47, 0x45, 0x54, 0x20 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A638 -ov00_0231A638: - .byte 0x50, 0x4f, 0x53, 0x54, 0x20, 0x00, 0x00, 0x00 - .global ov00_0231A640 -ov00_0231A640: - .byte 0x48, 0x45, 0x41, 0x44 - .byte 0x20, 0x00, 0x00, 0x00 - .global ov00_0231A648 -ov00_0231A648: - .byte 0x2f, 0x00, 0x00, 0x00 - .global ov00_0231A64C -ov00_0231A64C: - .byte 0x20, 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e - .byte 0x31, 0x0d, 0x0a, 0x00 - .global ov00_0231A658 -ov00_0231A658: - .byte 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20, 0x00, 0x00 - .global ov00_0231A660 -ov00_0231A660: - .byte 0x0d, 0x0a, 0x00, 0x00 - .global ov00_0231A664 -ov00_0231A664: - .byte 0x3a, 0x20, 0x00, 0x00 - .global ov00_0231A668 -ov00_0231A668: - .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65 - .byte 0x3a, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x2f, 0x66, 0x6f, 0x72, 0x6d - .byte 0x2d, 0x64, 0x61, 0x74, 0x61, 0x3b, 0x20, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x3d - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A698 -ov00_0231A698: - .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65 - .byte 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x2d - .byte 0x77, 0x77, 0x77, 0x2d, 0x66, 0x6f, 0x72, 0x6d, 0x2d, 0x75, 0x72, 0x6c, 0x65, 0x6e, 0x63, 0x6f - .byte 0x64, 0x65, 0x64, 0x0d, 0x0a, 0x00, 0x00, 0x00 - .global ov00_0231A6CC -ov00_0231A6CC: - .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d - .byte 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A6E0 -ov00_0231A6E0: - .byte 0x22, 0x0d, 0x0a, 0x00 - .global ov00_0231A6E4 -ov00_0231A6E4: - .byte 0x2d, 0x2d, 0x0d, 0x0a, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A6EC -ov00_0231A6EC: - .byte 0x3d, 0x00, 0x00, 0x00 - .global ov00_0231A6F0 -ov00_0231A6F0: - .byte 0x26, 0x00, 0x00, 0x00 - .global ov00_0231A6F4 -ov00_0231A6F4: - .byte 0x48, 0x54, 0x54, 0x50, 0x2f, 0x00, 0x00, 0x00 - .global ov00_0231A6FC -ov00_0231A6FC: - .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d - .byte 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x00, 0x00 - .global ov00_0231A70C -ov00_0231A70C: - .byte 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69 - .byte 0x6f, 0x6e, 0x00, 0x00 - .global ov00_0231A718 -ov00_0231A718: - .byte 0x4b, 0x65, 0x65, 0x70, 0x2d, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x00, 0x00 - .global ov00_0231A724 -ov00_0231A724: - .byte 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e - .byte 0x67, 0x00, 0x00, 0x00 - .global ov00_0231A738 -ov00_0231A738: - .byte 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x00 - .global ov00_0231A740 -ov00_0231A740: - .byte 0x01, 0x00, 0x00, 0x00 - .word GsDebugAssert - .byte 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00 - .byte 0x5a, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00 - .byte 0xd4, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00 - .byte 0x4e, 0x01, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x00, 0x00 - .byte 0x3a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00 - .byte 0xb4, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00 - .byte 0x2f, 0x01, 0x00, 0x00, 0x4d, 0x01, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00 - .global ov00_0231A7B0 -ov00_0231A7B0: - .byte 0x6c, 0x6f, 0x63, 0x61 - .byte 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x00, 0x00, 0x00 - .global ov00_0231A7BC -ov00_0231A7BC: - .byte 0x25, 0x73, 0x2e, 0x61, 0x76, 0x61, 0x69, 0x6c - .byte 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x67, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f - .byte 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A7E0 -ov00_0231A7E0: - .byte 0xfe, 0xfd, 0x09, 0x00 - .global ov00_0231A7E4 -ov00_0231A7E4: - .byte 0x3a, 0x20, 0x00, 0x00 - .global ov00_0231A7E8 -ov00_0231A7E8: - .byte 0x0d, 0x0a, 0x00, 0x00 - .global ov00_0231A7EC -ov00_0231A7EC: - .byte 0x25, 0x64, 0x00, 0x00 - .global ov00_0231A7F0 -ov00_0231A7F0: - .byte 0xfa, 0x00, 0x00, 0x00 - .global ov00_0231A7F4 -ov00_0231A7F4: - .byte 0x7d, 0x00, 0x00, 0x00 - .global ov00_0231A7F8 -ov00_0231A7F8: - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A804 -ov00_0231A804: - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A810 -ov00_0231A810: - .byte 0x41, 0x00, 0x00, 0x00 - .global ov00_0231A814 -ov00_0231A814: - .byte 0x42, 0x42, 0x00, 0x00 - .global ov00_0231A818 -ov00_0231A818: - .byte 0x43, 0x43, 0x43, 0x00 - .global ov00_0231A81C -ov00_0231A81C: - .byte 0x44, 0x44, 0x44, 0x44, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A824 -ov00_0231A824: - .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 - .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 - .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A858 -ov00_0231A858: - .byte 0x17, 0x00, 0x00, 0x00 - .global ov00_0231A85C -ov00_0231A85C: - .byte 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c - .byte 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c - .byte 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c - .byte 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A890 -ov00_0231A890: - .byte 0x43, 0x4c, 0x4e, 0x54 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A898 -ov00_0231A898: - .byte 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c - .byte 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x41, 0x42 - .byte 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52 - .byte 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37 - .byte 0x38, 0x39, 0x5f, 0x40, 0x2d, 0x2e, 0x2a, 0x00 - .global ov00_0231A8DC -ov00_0231A8DC: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A8E0 -ov00_0231A8E0: - .byte 0x61, 0x70, 0x70, 0x6c - .byte 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x64, 0x69, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A8F4 -ov00_0231A8F4: - .byte 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x2d, 0x64 - .byte 0x61, 0x74, 0x61, 0x3b, 0x20, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x3d, 0x51, 0x72 - .byte 0x34, 0x47, 0x38, 0x32, 0x33, 0x73, 0x32, 0x33, 0x64, 0x2d, 0x2d, 0x2d, 0x3c, 0x3c, 0x3e, 0x3c - .byte 0x3e, 0x3c, 0x3c, 0x3c, 0x3e, 0x2d, 0x2d, 0x37, 0x64, 0x31, 0x31, 0x38, 0x65, 0x30, 0x35, 0x33 - .byte 0x36, 0x00, 0x00, 0x00 - .global ov00_0231A938 -ov00_0231A938: - .byte 0x74, 0x65, 0x78, 0x74, 0x2f, 0x78, 0x6d, 0x6c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A944 -ov00_0231A944: - .byte 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x2d, 0x77, 0x77 - .byte 0x77, 0x2d, 0x66, 0x6f, 0x72, 0x6d, 0x2d, 0x75, 0x72, 0x6c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65 - .byte 0x64, 0x00, 0x00, 0x00 - .global ov00_0231A968 -ov00_0231A968: - .byte 0x2d, 0x2d, 0x51, 0x72, 0x34, 0x47, 0x38, 0x32, 0x33, 0x73, 0x32, 0x33 - .byte 0x64, 0x2d, 0x2d, 0x2d, 0x3c, 0x3c, 0x3e, 0x3c, 0x3e, 0x3c, 0x3c, 0x3c, 0x3e, 0x2d, 0x2d, 0x37 - .byte 0x64, 0x31, 0x31, 0x38, 0x65, 0x30, 0x35, 0x33, 0x36, 0x00, 0x00, 0x00 - .global ov00_0231A990 -ov00_0231A990: - .byte 0x63, 0x69, 0x64, 0x3a - .byte 0x69, 0x64, 0x30, 0x00 - .global ov00_0231A998 -ov00_0231A998: - .byte 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d - .byte 0x61, 0x73, 0x2e, 0x78, 0x6d, 0x6c, 0x73, 0x6f, 0x61, 0x70, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x73 - .byte 0x6f, 0x61, 0x70, 0x2f, 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x2f, 0x00, 0x00, 0x00 - .global ov00_0231A9C4 -ov00_0231A9C4: - .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A9D8 -ov00_0231A9D8: - .byte 0x25, 0x73, 0x3d, 0x00 - .global ov00_0231A9DC -ov00_0231A9DC: - .byte 0x26, 0x25, 0x73, 0x3d, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231A9E4 -ov00_0231A9E4: - .byte 0x2d, 0x2d, 0x51, 0x72, 0x34, 0x47, 0x38, 0x32, 0x33, 0x73, 0x32, 0x33, 0x64, 0x2d, 0x2d, 0x2d - .byte 0x3c, 0x3c, 0x3e, 0x3c, 0x3e, 0x3c, 0x3c, 0x3c, 0x3e, 0x2d, 0x2d, 0x37, 0x64, 0x31, 0x31, 0x38 - .byte 0x65, 0x30, 0x35, 0x33, 0x36, 0x0d, 0x0a, 0x00 - .global ov00_0231AA0C -ov00_0231AA0C: - .byte 0x0d, 0x0a, 0x2d, 0x2d, 0x51, 0x72, 0x34, 0x47 - .byte 0x38, 0x32, 0x33, 0x73, 0x32, 0x33, 0x64, 0x2d, 0x2d, 0x2d, 0x3c, 0x3c, 0x3e, 0x3c, 0x3e, 0x3c - .byte 0x3c, 0x3c, 0x3e, 0x2d, 0x2d, 0x37, 0x64, 0x31, 0x31, 0x38, 0x65, 0x30, 0x35, 0x33, 0x36, 0x0d - .byte 0x0a, 0x00, 0x00, 0x00 - .global ov00_0231AA38 -ov00_0231AA38: - .byte 0x25, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x44, 0x69 - .byte 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x2d - .byte 0x64, 0x61, 0x74, 0x61, 0x3b, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x25, 0x73, 0x22, 0x0d - .byte 0x0a, 0x0d, 0x0a, 0x00 - .global ov00_0231AA68 -ov00_0231AA68: - .byte 0x25, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x44, 0x69 - .byte 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x2d - .byte 0x64, 0x61, 0x74, 0x61, 0x3b, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x25, 0x73, 0x22, 0x3b - .byte 0x20, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x25, 0x73, 0x22, 0x0d, 0x0a - .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x25, 0x73 - .byte 0x0d, 0x0a, 0x0d, 0x0a, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AABC -ov00_0231AABC: - .byte 0x0d, 0x0a, 0x00, 0x00 - .global ov00_0231AAC0 -ov00_0231AAC0: - .byte 0x0d, 0x0a, 0x2d, 0x2d - .byte 0x51, 0x72, 0x34, 0x47, 0x38, 0x32, 0x33, 0x73, 0x32, 0x33, 0x64, 0x2d, 0x2d, 0x2d, 0x3c, 0x3c - .byte 0x3e, 0x3c, 0x3e, 0x3c, 0x3c, 0x3c, 0x3e, 0x2d, 0x2d, 0x37, 0x64, 0x31, 0x31, 0x38, 0x65, 0x30 - .byte 0x35, 0x33, 0x36, 0x2d, 0x2d, 0x0d, 0x0a, 0x00 - .global ov00_0231AAEC -ov00_0231AAEC: - .byte 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x00 - .global ov00_0231AAF4 -ov00_0231AAF4: - .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AB00 -ov00_0231AB00: - .byte 0x3a, 0x2f, 0x00, 0x00 - .global ov00_0231AB04 -ov00_0231AB04: - .byte 0x2f, 0x00, 0x00, 0x00 - .global ov00_0231AB08 -ov00_0231AB08: - .byte 0x50, 0x4f, 0x53, 0x54, 0x20, 0x00, 0x00, 0x00 - .global ov00_0231AB10 -ov00_0231AB10: - .byte 0x48, 0x45, 0x41, 0x44 - .byte 0x20, 0x00, 0x00, 0x00 - .global ov00_0231AB18 -ov00_0231AB18: - .byte 0x47, 0x45, 0x54, 0x20, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AB20 -ov00_0231AB20: - .byte 0x20, 0x48, 0x54, 0x54 - .byte 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x0d, 0x0a, 0x00 - .global ov00_0231AB2C -ov00_0231AB2C: - .byte 0x48, 0x6f, 0x73, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AB34 -ov00_0231AB34: - .byte 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20, 0x00, 0x00 - .global ov00_0231AB3C -ov00_0231AB3C: - .byte 0x0d, 0x0a, 0x00, 0x00 - .global ov00_0231AB40 -ov00_0231AB40: - .byte 0x55, 0x73, 0x65, 0x72 - .byte 0x2d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x00, 0x00 - .global ov00_0231AB4C -ov00_0231AB4C: - .byte 0x47, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x79, 0x48 - .byte 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x00 - .global ov00_0231AB5C -ov00_0231AB5C: - .byte 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69 - .byte 0x6f, 0x6e, 0x00, 0x00 - .global ov00_0231AB68 -ov00_0231AB68: - .byte 0x4b, 0x65, 0x65, 0x70, 0x2d, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x00, 0x00 - .global ov00_0231AB74 -ov00_0231AB74: - .byte 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x00 - .global ov00_0231AB7C -ov00_0231AB7C: - .byte 0x25, 0x64, 0x00, 0x00 - .global ov00_0231AB80 -ov00_0231AB80: - .byte 0x43, 0x6f, 0x6e, 0x74 - .byte 0x65, 0x6e, 0x74, 0x2d, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x00, 0x00 - .global ov00_0231AB90 -ov00_0231AB90: - .byte 0x43, 0x6f, 0x6e, 0x74 - .byte 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231ABA0 -ov00_0231ABA0: - .byte 0x48, 0x54, 0x54, 0x50 - .byte 0x2f, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x20, 0x25, 0x64, 0x25, 0x6e, 0x00 - .global ov00_0231ABB0 -ov00_0231ABB0: - .byte 0x25, 0x78, 0x00, 0x00 - .global ov00_0231ABB4 -ov00_0231ABB4: - .byte 0x0a, 0x0a, 0x00, 0x00 - .global ov00_0231ABB8 -ov00_0231ABB8: - .byte 0x0d, 0x0a, 0x0d, 0x0a, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231ABC0 -ov00_0231ABC0: - .byte 0x4c, 0x6f, 0x63, 0x61 - .byte 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x00, 0x00, 0x00 - .global ov00_0231ABCC -ov00_0231ABCC: - .byte 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x25 - .byte 0x73, 0x3a, 0x25, 0x64, 0x25, 0x73, 0x00, 0x00 - .global ov00_0231ABDC -ov00_0231ABDC: - .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d - .byte 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x00 - .global ov00_0231ABEC -ov00_0231ABEC: - .byte 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72 - .byte 0x2d, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x20, 0x63, 0x68, 0x75, 0x6e, 0x6b - .byte 0x65, 0x64, 0x00, 0x00 - .global ov00_0231AC08 -ov00_0231AC08: - .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x66, 0x75, 0x6e, 0x63 - .byte 0x2e, 0x00, 0x00, 0x00 - .global ov00_0231AC18 -ov00_0231AC18: - .byte 0x4e, 0x6f, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x2e - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AC28 -ov00_0231AC28: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AC2C -ov00_0231AC2C: - .byte 0x54, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x6e - .byte 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61 - .byte 0x64, 0x79, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65 - .byte 0x63, 0x74, 0x65, 0x64, 0x2e, 0x00, 0x00, 0x00 - .global ov00_0231AC5C -ov00_0231AC5C: - .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20 - .byte 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x2e, 0x00 - .global ov00_0231AC6C -ov00_0231AC6C: - .byte 0x5c, 0x61, 0x64, 0x64, 0x62, 0x75, 0x64, 0x64 - .byte 0x79, 0x5c, 0x00, 0x00 - .global ov00_0231AC78 -ov00_0231AC78: - .byte 0x5c, 0x73, 0x65, 0x73, 0x73, 0x6b, 0x65, 0x79, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231AC84 -ov00_0231AC84: - .byte 0x5c, 0x6e, 0x65, 0x77, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x69, 0x64, 0x5c, 0x00, 0x00 - .global ov00_0231AC94 -ov00_0231AC94: - .byte 0x5c, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231ACA0 -ov00_0231ACA0: - .byte 0x5c, 0x66, 0x69, 0x6e - .byte 0x61, 0x6c, 0x5c, 0x00 - .global ov00_0231ACA8 -ov00_0231ACA8: - .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x73, 0x74, 0x61, 0x74 - .byte 0x75, 0x73, 0x2e, 0x00 - .global ov00_0231ACB8 -ov00_0231ACB8: - .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x69, 0x6e, 0x64, 0x65 - .byte 0x78, 0x2e, 0x00, 0x00 - .global ov00_0231ACC8 -ov00_0231ACC8: - .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x73, 0x74, 0x61, 0x74 - .byte 0x75, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x00, 0x00, 0x00 - .global ov00_0231ACE0 -ov00_0231ACE0: - .byte 0x49, 0x6e, 0x76, 0x61 - .byte 0x6c, 0x69, 0x64, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x69 - .byte 0x6e, 0x67, 0x2e, 0x00 - .global ov00_0231ACF8 -ov00_0231ACF8: - .byte 0x5c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AD04 -ov00_0231AD04: - .byte 0x5c, 0x73, 0x74, 0x61, 0x74, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AD14 -ov00_0231AD14: - .byte 0x5c, 0x6c, 0x6f, 0x63, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x00 - .global ov00_0231AD20 -ov00_0231AD20: - .byte 0x49, 0x6e, 0x76, 0x61 - .byte 0x6c, 0x69, 0x64, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AD34 -ov00_0231AD34: - .byte 0x43, 0x4d, 0x00, 0x00 - .global ov00_0231AD38 -ov00_0231AD38: - .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6e - .byte 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x66 - .byte 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x00 - .global ov00_0231AD64 -ov00_0231AD64: - .byte 0x5c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5c, 0x00 - .global ov00_0231AD6C -ov00_0231AD6C: - .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d - .byte 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x00, 0x00 - .global ov00_0231AD7C -ov00_0231AD7C: - .byte 0x5c, 0x69, 0x64, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AD84 -ov00_0231AD84: - .byte 0x5c, 0x62, 0x6d, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AD8C -ov00_0231AD8C: - .byte 0x5c, 0x6b, 0x61, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AD94 -ov00_0231AD94: - .byte 0x5c, 0x6c, 0x74, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AD9C -ov00_0231AD9C: - .byte 0x5c, 0x62, 0x73, 0x69, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231ADA4 -ov00_0231ADA4: - .byte 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x63 - .byte 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63 - .byte 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x00, 0x00, 0x00 - .global ov00_0231ADCC -ov00_0231ADCC: - .byte 0x5c, 0x6b, 0x61, 0x5c, 0x5c, 0x66, 0x69, 0x6e - .byte 0x61, 0x6c, 0x5c, 0x00 - .global ov00_0231ADD8 -ov00_0231ADD8: - .byte 0x5c, 0x61, 0x75, 0x74, 0x68, 0x61, 0x64, 0x64, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231ADE4 -ov00_0231ADE4: - .byte 0x5c, 0x73, 0x65, 0x73, 0x73, 0x6b, 0x65, 0x79, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231ADF0 -ov00_0231ADF0: - .byte 0x5c, 0x66, 0x72, 0x6f - .byte 0x6d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x69, 0x64, 0x5c, 0x00 - .global ov00_0231AE00 -ov00_0231AE00: - .byte 0x5c, 0x73, 0x69, 0x67 - .byte 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231AE08 -ov00_0231AE08: - .byte 0x5c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5c, 0x00 - .global ov00_0231AE10 -ov00_0231AE10: - .byte 0x5c, 0x62, 0x6d, 0x5c - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AE18 -ov00_0231AE18: - .byte 0x55, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x64 - .byte 0x61, 0x74, 0x61, 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64 - .byte 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72 - .byte 0x2e, 0x00, 0x00, 0x00 - .global ov00_0231AE48 -ov00_0231AE48: - .byte 0x5c, 0x66, 0x5c, 0x00 - .global ov00_0231AE4C -ov00_0231AE4C: - .byte 0x5c, 0x64, 0x61, 0x74, 0x65, 0x5c, 0x00, 0x00 - .global ov00_0231AE54 -ov00_0231AE54: - .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x00, 0x00 - .global ov00_0231AE64 -ov00_0231AE64: - .byte 0x5c, 0x6d, 0x73, 0x67, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231AE6C -ov00_0231AE6C: - .byte 0x7c, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x7c - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AE78 -ov00_0231AE78: - .byte 0x7c, 0x73, 0x7c, 0x00 - .global ov00_0231AE7C -ov00_0231AE7C: - .byte 0x7c, 0x73, 0x73, 0x7c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AE84 -ov00_0231AE84: - .byte 0x7c, 0x6c, 0x73, 0x7c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AE8C -ov00_0231AE8C: - .byte 0x7c, 0x69, 0x70, 0x7c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AE94 -ov00_0231AE94: - .byte 0x7c, 0x70, 0x7c, 0x00 - .global ov00_0231AE98 -ov00_0231AE98: - .byte 0x7c, 0x71, 0x6d, 0x7c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AEA0 -ov00_0231AEA0: - .byte 0x7c, 0x6c, 0x7c, 0x00 - .global ov00_0231AEA4 -ov00_0231AEA4: - .byte 0x31, 0x00, 0x00, 0x00 - .global ov00_0231AEA8 -ov00_0231AEA8: - .byte 0x5c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231AEB4 -ov00_0231AEB4: - .byte 0x5c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5c, 0x00 - .global ov00_0231AEBC -ov00_0231AEBC: - .byte 0x5c, 0x62, 0x69, 0x70, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231AEC4 -ov00_0231AEC4: - .byte 0x5c, 0x62, 0x70, 0x6f, 0x72, 0x74, 0x5c, 0x00 - .global ov00_0231AECC -ov00_0231AECC: - .byte 0x5c, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x70, 0x5c - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AED8 -ov00_0231AED8: - .byte 0x5c, 0x68, 0x70, 0x72, 0x69, 0x76, 0x69, 0x70, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231AEE4 -ov00_0231AEE4: - .byte 0x5c, 0x71, 0x70, 0x6f, 0x72, 0x74, 0x5c, 0x00 - .global ov00_0231AEEC -ov00_0231AEEC: - .byte 0x5c, 0x68, 0x70, 0x6f, 0x72, 0x74, 0x5c, 0x00 - .global ov00_0231AEF4 -ov00_0231AEF4: - .byte 0x5c, 0x73, 0x65, 0x73, 0x73, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x5c, 0x00 - .global ov00_0231AF00 -ov00_0231AF00: - .byte 0x5c, 0x72, 0x73, 0x74 - .byte 0x61, 0x74, 0x75, 0x73, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231AF0C -ov00_0231AF0C: - .byte 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70 - .byte 0x65, 0x5c, 0x00, 0x00 - .global ov00_0231AF18 -ov00_0231AF18: - .byte 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x56, 0x6e, 0x74, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231AF24 -ov00_0231AF24: - .byte 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x4d, 0x6e, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AF30 -ov00_0231AF30: - .byte 0x5c, 0x70, 0x72, 0x6f - .byte 0x64, 0x75, 0x63, 0x74, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231AF3C -ov00_0231AF3C: - .byte 0x5c, 0x71, 0x6d, 0x6f, 0x64, 0x65, 0x66, 0x6c - .byte 0x61, 0x67, 0x73, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AF4C -ov00_0231AF4C: - .byte 0x5c, 0x74, 0x5c, 0x00 - .global ov00_0231AF50 -ov00_0231AF50: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AF54 -ov00_0231AF54: - .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AF68 -ov00_0231AF68: - .byte 0x6b, 0x65, 0x79, 0x73, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AF70 -ov00_0231AF70: - .byte 0x45, 0x72, 0x72, 0x6f - .byte 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x20, 0x72 - .byte 0x65, 0x70, 0x6c, 0x79, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231AF94 -ov00_0231AF94: - .byte 0x5c, 0x64, 0x65, 0x6c, 0x62, 0x75, 0x64, 0x64, 0x79, 0x5c, 0x00, 0x00 - .global ov00_0231AFA0 -ov00_0231AFA0: - .byte 0x5c, 0x64, 0x65, 0x6c - .byte 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x69, 0x64, 0x5c, 0x00, 0x00 - .global ov00_0231AFB0 -ov00_0231AFB0: - .byte 0x4f, 0x75, 0x74, 0x20 - .byte 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x00, 0x00 - .global ov00_0231AFC0 -ov00_0231AFC0: - .byte 0x25, 0x64, 0x00, 0x00 - .global ov00_0231AFC4 -ov00_0231AFC4: - .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72 - .byte 0x6f, 0x72, 0x20, 0x73, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x6e, 0x20, 0x61, 0x20 - .byte 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x00 - .global ov00_0231AFEC -ov00_0231AFEC: - .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61 - .byte 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69 - .byte 0x6e, 0x67, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x20, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74 - .byte 0x2e, 0x00, 0x00, 0x00 - .global ov00_0231B018 -ov00_0231B018: - .byte 0x5c, 0x6d, 0x73, 0x67, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B020 -ov00_0231B020: - .byte 0x5c, 0x6d, 0x5c, 0x00 - .global ov00_0231B024 -ov00_0231B024: - .byte 0x5c, 0x6c, 0x65, 0x6e, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B02C -ov00_0231B02C: - .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d - .byte 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x00, 0x00 - .global ov00_0231B03C -ov00_0231B03C: - .byte 0x67, 0x70, 0x63, 0x6d, 0x2e, 0x67, 0x73, 0x2e - .byte 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74 - .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 - .global ov00_0231B07C -ov00_0231B07C: - .byte 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48 - .byte 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58 - .byte 0x59, 0x5a, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e - .byte 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x30, 0x31, 0x32, 0x33 - .byte 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00, 0x00 - .global ov00_0231B0BC -ov00_0231B0BC: - .byte 0x67, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x79, 0x67 - .byte 0x70, 0x00, 0x00, 0x00 - .global ov00_0231B0C8 -ov00_0231B0C8: - .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x65, 0x72 - .byte 0x72, 0x6f, 0x72, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65 - .byte 0x20, 0x55, 0x44, 0x50, 0x20, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x00 - .global ov00_0231B0F0 -ov00_0231B0F0: - .byte 0x54, 0x68, 0x65, 0x72 - .byte 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x73 - .byte 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55, 0x44, 0x50, 0x20 - .byte 0x4c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x00, 0x00 - .global ov00_0231B11C -ov00_0231B11C: - .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61 - .byte 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74 - .byte 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x00, 0x00, 0x00 - .global ov00_0231B144 -ov00_0231B144: - .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72 - .byte 0x6f, 0x72, 0x20, 0x6d, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x73, 0x6f, 0x63, 0x6b - .byte 0x65, 0x74, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B178 -ov00_0231B178: - .byte 0x43, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65 - .byte 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e - .byte 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x6e, 0x67, 0x65, 0x72, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x20, 0x6e - .byte 0x61, 0x6d, 0x65, 0x2e, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B1AC -ov00_0231B1AC: - .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61 - .byte 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65 - .byte 0x63, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x00 - .global ov00_0231B1D4 -ov00_0231B1D4: - .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69 - .byte 0x6f, 0x6e, 0x2e, 0x00 - .global ov00_0231B1E8 -ov00_0231B1E8: - .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72 - .byte 0x79, 0x2e, 0x00, 0x00 - .global ov00_0231B1F8 -ov00_0231B1F8: - .byte 0x25, 0x64, 0x40, 0x00 - .global ov00_0231B1FC -ov00_0231B1FC: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B200 -ov00_0231B200: - .byte 0x25, 0x73, 0x25, 0x73 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B208 -ov00_0231B208: - .byte 0x25, 0x73, 0x25, 0x73, 0x40, 0x25, 0x73, 0x00 - .global ov00_0231B210 -ov00_0231B210: - .byte 0x25, 0x73, 0x25, 0x73 - .byte 0x25, 0x73, 0x25, 0x73, 0x25, 0x73, 0x25, 0x73, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B220 -ov00_0231B220: - .byte 0x20, 0x20, 0x20, 0x20 - .byte 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 - .byte 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 - .byte 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B254 -ov00_0231B254: - .byte 0x5c, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5c, 0x00 - .global ov00_0231B25C -ov00_0231B25C: - .byte 0x5c, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e - .byte 0x67, 0x65, 0x5c, 0x00 - .global ov00_0231B268 -ov00_0231B268: - .byte 0x5c, 0x61, 0x75, 0x74, 0x68, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5c, 0x00 - .global ov00_0231B274 -ov00_0231B274: - .byte 0x5c, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x6e, 0x69, 0x63, 0x6b, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B284 -ov00_0231B284: - .byte 0x5c, 0x75, 0x73, 0x65, 0x72, 0x5c, 0x00, 0x00 - .global ov00_0231B28C -ov00_0231B28C: - .byte 0x40, 0x00, 0x00, 0x00 - .global ov00_0231B290 -ov00_0231B290: - .byte 0x5c, 0x75, 0x73, 0x65 - .byte 0x72, 0x69, 0x64, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B29C -ov00_0231B29C: - .byte 0x5c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65 - .byte 0x69, 0x64, 0x5c, 0x00 - .global ov00_0231B2A8 -ov00_0231B2A8: - .byte 0x5c, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x69, 0x64, 0x5c, 0x00 - .global ov00_0231B2B4 -ov00_0231B2B4: - .byte 0x5c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5c, 0x00, 0x00 - .global ov00_0231B2C0 -ov00_0231B2C0: - .byte 0x5c, 0x66, 0x69, 0x72 - .byte 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5c, 0x31, 0x00 - .global ov00_0231B2CC -ov00_0231B2CC: - .byte 0x5c, 0x70, 0x6f, 0x72, 0x74, 0x5c, 0x00, 0x00 - .global ov00_0231B2D4 -ov00_0231B2D4: - .byte 0x5c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x64, 0x5c, 0x00 - .global ov00_0231B2E0 -ov00_0231B2E0: - .byte 0x5c, 0x67, 0x61, 0x6d - .byte 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5c, 0x00, 0x00 - .global ov00_0231B2EC -ov00_0231B2EC: - .byte 0x5c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61 - .byte 0x63, 0x65, 0x69, 0x64, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B2FC -ov00_0231B2FC: - .byte 0x5c, 0x73, 0x64, 0x6b, 0x72, 0x65, 0x76, 0x69 - .byte 0x73, 0x69, 0x6f, 0x6e, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B30C -ov00_0231B30C: - .byte 0x5c, 0x71, 0x75, 0x69, 0x65, 0x74, 0x5c, 0x00 - .global ov00_0231B314 -ov00_0231B314: - .byte 0x5c, 0x69, 0x64, 0x5c, 0x31, 0x00, 0x00, 0x00 - .global ov00_0231B31C -ov00_0231B31C: - .byte 0x5c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5c, 0x00 - .global ov00_0231B324 -ov00_0231B324: - .byte 0x5c, 0x6e, 0x65, 0x77, 0x75, 0x73, 0x65, 0x72, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B330 -ov00_0231B330: - .byte 0x5c, 0x65, 0x6d, 0x61 - .byte 0x69, 0x6c, 0x5c, 0x00 - .global ov00_0231B338 -ov00_0231B338: - .byte 0x5c, 0x6e, 0x69, 0x63, 0x6b, 0x5c, 0x00, 0x00 - .global ov00_0231B340 -ov00_0231B340: - .byte 0x5c, 0x70, 0x61, 0x73 - .byte 0x73, 0x77, 0x6f, 0x72, 0x64, 0x65, 0x6e, 0x63, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B350 -ov00_0231B350: - .byte 0x5c, 0x63, 0x64, 0x6b - .byte 0x65, 0x79, 0x65, 0x6e, 0x63, 0x5c, 0x00, 0x00 - .global ov00_0231B35C -ov00_0231B35C: - .byte 0x5c, 0x70, 0x69, 0x64, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B364 -ov00_0231B364: - .byte 0x5c, 0x6c, 0x63, 0x5c, 0x31, 0x00, 0x00, 0x00 - .global ov00_0231B36C -ov00_0231B36C: - .byte 0x55, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74 - .byte 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65 - .byte 0x69, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65 - .byte 0x72, 0x76, 0x65, 0x72, 0x2e, 0x00, 0x00, 0x00 - .global ov00_0231B39C -ov00_0231B39C: - .byte 0x5c, 0x6e, 0x75, 0x72, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B3A4 -ov00_0231B3A4: - .byte 0x55, 0x6e, 0x65, 0x78, 0x65, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61 - .byte 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72 - .byte 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x00, 0x00 - .global ov00_0231B3D4 -ov00_0231B3D4: - .byte 0x5c, 0x6c, 0x63, 0x5c, 0x32, 0x00, 0x00, 0x00 - .global ov00_0231B3DC -ov00_0231B3DC: - .byte 0x5c, 0x73, 0x65, 0x73, 0x73, 0x6b, 0x65, 0x79 - .byte 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B3E8 -ov00_0231B3E8: - .byte 0x5c, 0x6c, 0x74, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B3F0 -ov00_0231B3F0: - .byte 0x5c, 0x70, 0x72, 0x6f - .byte 0x6f, 0x66, 0x5c, 0x00 - .global ov00_0231B3F8 -ov00_0231B3F8: - .byte 0x43, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75 - .byte 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65 - .byte 0x72, 0x2e, 0x00, 0x00 - .global ov00_0231B418 -ov00_0231B418: - .byte 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x68 - .byte 0x61, 0x73, 0x20, 0x72, 0x65, 0x66, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63 - .byte 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x00, 0x00 - .global ov00_0231B440 -ov00_0231B440: - .byte 0x5c, 0x6c, 0x6f, 0x67 - .byte 0x6f, 0x75, 0x74, 0x5c, 0x5c, 0x73, 0x65, 0x73, 0x73, 0x6b, 0x65, 0x79, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B454 -ov00_0231B454: - .byte 0x43, 0x4d, 0x00, 0x00 - .global ov00_0231B458 -ov00_0231B458: - .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x64, 0x61, 0x74, 0x65 - .byte 0x2e, 0x00, 0x00, 0x00 - .global ov00_0231B468 -ov00_0231B468: - .byte 0x5c, 0x70, 0x69, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B470 -ov00_0231B470: - .byte 0x55, 0x6e, 0x65, 0x78 - .byte 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x77, 0x61, 0x73, 0x20 - .byte 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68 - .byte 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x00, 0x00, 0x00 - .global ov00_0231B4A0 -ov00_0231B4A0: - .byte 0x5c, 0x70, 0x72, 0x6f - .byte 0x66, 0x69, 0x6c, 0x65, 0x69, 0x64, 0x5c, 0x00 - .global ov00_0231B4AC -ov00_0231B4AC: - .byte 0x5c, 0x6e, 0x69, 0x63, 0x6b, 0x5c, 0x00, 0x00 - .global ov00_0231B4B4 -ov00_0231B4B4: - .byte 0x5c, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x6e, 0x69, 0x63, 0x6b, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B4C4 -ov00_0231B4C4: - .byte 0x5c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5c, 0x00 - .global ov00_0231B4CC -ov00_0231B4CC: - .byte 0x5c, 0x66, 0x69, 0x72, 0x73, 0x74, 0x6e, 0x61 - .byte 0x6d, 0x65, 0x5c, 0x00 - .global ov00_0231B4D8 -ov00_0231B4D8: - .byte 0x5c, 0x6c, 0x61, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x5c, 0x00, 0x00 - .global ov00_0231B4E4 -ov00_0231B4E4: - .byte 0x5c, 0x69, 0x63, 0x71, 0x75, 0x69, 0x6e, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B4F0 -ov00_0231B4F0: - .byte 0x5c, 0x68, 0x6f, 0x6d - .byte 0x65, 0x70, 0x61, 0x67, 0x65, 0x5c, 0x00, 0x00 - .global ov00_0231B4FC -ov00_0231B4FC: - .byte 0x5c, 0x7a, 0x69, 0x70, 0x63, 0x6f, 0x64, 0x65 - .byte 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B508 -ov00_0231B508: - .byte 0x5c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x63, 0x6f, 0x64, 0x65 - .byte 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B518 -ov00_0231B518: - .byte 0x5c, 0x6c, 0x6f, 0x6e, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B520 -ov00_0231B520: - .byte 0x5c, 0x6c, 0x61, 0x74 - .byte 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B528 -ov00_0231B528: - .byte 0x5c, 0x6c, 0x6f, 0x63, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B530 -ov00_0231B530: - .byte 0x5c, 0x62, 0x69, 0x72 - .byte 0x74, 0x68, 0x64, 0x61, 0x79, 0x5c, 0x00, 0x00 - .global ov00_0231B53C -ov00_0231B53C: - .byte 0x5c, 0x73, 0x65, 0x78, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B544 -ov00_0231B544: - .byte 0x5c, 0x70, 0x6d, 0x61, 0x73, 0x6b, 0x5c, 0x00 - .global ov00_0231B54C -ov00_0231B54C: - .byte 0x5c, 0x61, 0x69, 0x6d, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B554 -ov00_0231B554: - .byte 0x5c, 0x70, 0x69, 0x63, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B55C -ov00_0231B55C: - .byte 0x5c, 0x6f, 0x63, 0x63, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B564 -ov00_0231B564: - .byte 0x5c, 0x69, 0x6e, 0x64, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B56C -ov00_0231B56C: - .byte 0x5c, 0x69, 0x6e, 0x63, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B574 -ov00_0231B574: - .byte 0x5c, 0x6d, 0x61, 0x72, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B57C -ov00_0231B57C: - .byte 0x5c, 0x63, 0x68, 0x63, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B584 -ov00_0231B584: - .byte 0x5c, 0x69, 0x31, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B58C -ov00_0231B58C: - .byte 0x5c, 0x6f, 0x31, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B594 -ov00_0231B594: - .byte 0x5c, 0x63, 0x6f, 0x6e, 0x6e, 0x5c, 0x00, 0x00 - .global ov00_0231B59C -ov00_0231B59C: - .byte 0x5c, 0x73, 0x69, 0x67, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B5A4 -ov00_0231B5A4: - .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x00, 0x00 - .global ov00_0231B5B4 -ov00_0231B5B4: - .byte 0x5c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x70, 0x72, 0x6f, 0x5c, 0x5c, 0x73, 0x65, 0x73, 0x73 - .byte 0x6b, 0x65, 0x79, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B5CC -ov00_0231B5CC: - .byte 0x5c, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72 - .byte 0x69, 0x64, 0x5c, 0x00 - .global ov00_0231B5D8 -ov00_0231B5D8: - .byte 0x5c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5c, 0x00 - .global ov00_0231B5E0 -ov00_0231B5E0: - .byte 0x5c, 0x75, 0x70, 0x64 - .byte 0x61, 0x74, 0x65, 0x75, 0x69, 0x5c, 0x5c, 0x73, 0x65, 0x73, 0x73, 0x6b, 0x65, 0x79, 0x5c, 0x00 - .global ov00_0231B5F4 -ov00_0231B5F4: - .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x7a, 0x69, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x2e - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B608 -ov00_0231B608: - .byte 0x25, 0x64, 0x00, 0x00 - .global ov00_0231B60C -ov00_0231B60C: - .byte 0x30, 0x00, 0x00, 0x00 - .global ov00_0231B610 -ov00_0231B610: - .byte 0x31, 0x00, 0x00, 0x00 - .global ov00_0231B614 -ov00_0231B614: - .byte 0x32, 0x00, 0x00, 0x00 - .global ov00_0231B618 -ov00_0231B618: - .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x73, 0x65, 0x78, 0x2e - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B628 -ov00_0231B628: - .byte 0x5c, 0x63, 0x70, 0x75, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x5c - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B638 -ov00_0231B638: - .byte 0x5c, 0x63, 0x70, 0x75, 0x73, 0x70, 0x65, 0x65, 0x64, 0x5c, 0x00, 0x00 - .global ov00_0231B644 -ov00_0231B644: - .byte 0x5c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B650 -ov00_0231B650: - .byte 0x5c, 0x76, 0x69, 0x64 - .byte 0x65, 0x6f, 0x63, 0x61, 0x72, 0x64, 0x31, 0x72, 0x61, 0x6d, 0x5c, 0x00 - .global ov00_0231B660 -ov00_0231B660: - .byte 0x5c, 0x76, 0x69, 0x64 - .byte 0x65, 0x6f, 0x63, 0x61, 0x72, 0x64, 0x32, 0x72, 0x61, 0x6d, 0x5c, 0x00 - .global ov00_0231B670 -ov00_0231B670: - .byte 0x5c, 0x63, 0x6f, 0x6e - .byte 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x64, 0x5c, 0x00, 0x00 - .global ov00_0231B680 -ov00_0231B680: - .byte 0x5c, 0x63, 0x6f, 0x6e - .byte 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0x65, 0x65, 0x64, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B694 -ov00_0231B694: - .byte 0x5c, 0x68, 0x61, 0x73, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B6A4 -ov00_0231B6A4: - .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x00, 0x00, 0x00 - .global ov00_0231B6B4 -ov00_0231B6B4: - .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x00, 0x00 - .global ov00_0231B6C4 -ov00_0231B6C4: - .byte 0x5c, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x65, 0x6e, 0x63, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B6D4 -ov00_0231B6D4: - .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x63 - .byte 0x6f, 0x64, 0x65, 0x2e, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B6EC -ov00_0231B6EC: - .byte 0x5c, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x63, 0x61 - .byte 0x72, 0x64, 0x31, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x00, 0x00 - .global ov00_0231B700 -ov00_0231B700: - .byte 0x5c, 0x76, 0x69, 0x64 - .byte 0x65, 0x6f, 0x63, 0x61, 0x72, 0x64, 0x32, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x00, 0x00 - .global ov00_0231B714 -ov00_0231B714: - .byte 0x5c, 0x6f, 0x73, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x00, 0x00 - .global ov00_0231B720 -ov00_0231B720: - .byte 0x5c, 0x67, 0x65, 0x74 - .byte 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5c, 0x5c, 0x73, 0x65, 0x73, 0x73, 0x6b, 0x65, 0x79 - .byte 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B738 -ov00_0231B738: - .byte 0x5c, 0x69, 0x64, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B740 -ov00_0231B740: - .byte 0x4f, 0x75, 0x74, 0x20 - .byte 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x00, 0x00 - .global ov00_0231B750 -ov00_0231B750: - .byte 0x49, 0x6e, 0x76, 0x61 - .byte 0x6c, 0x69, 0x64, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B764 -ov00_0231B764: - .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x76, 0x61, 0x6c, 0x75 - .byte 0x65, 0x00, 0x00, 0x00 - .global ov00_0231B778 -ov00_0231B778: - .byte 0x5c, 0x6b, 0x65, 0x79, 0x73, 0x5c, 0x25, 0x64, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B784 -ov00_0231B784: - .byte 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B788 -ov00_0231B788: - .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72 - .byte 0x79, 0x2e, 0x00, 0x00 - .global ov00_0231B798 -ov00_0231B798: - .byte 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63 - .byte 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x70, 0x65, 0x65, 0x72, 0x2e, 0x00 - .global ov00_0231B7B4 -ov00_0231B7B4: - .byte 0x5c, 0x61, 0x75, 0x74, 0x68, 0x5c, 0x00, 0x00 - .global ov00_0231B7BC -ov00_0231B7BC: - .byte 0x5c, 0x70, 0x69, 0x64, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B7C4 -ov00_0231B7C4: - .byte 0x5c, 0x6e, 0x69, 0x63, 0x6b, 0x5c, 0x00, 0x00 - .global ov00_0231B7CC -ov00_0231B7CC: - .byte 0x5c, 0x73, 0x69, 0x67, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B7D4 -ov00_0231B7D4: - .byte 0x5c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5c, 0x00 - .global ov00_0231B7DC -ov00_0231B7DC: - .byte 0x5c, 0x61, 0x6e, 0x61, 0x63, 0x6b, 0x5c, 0x00 - .global ov00_0231B7E4 -ov00_0231B7E4: - .byte 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x62, 0x75 - .byte 0x64, 0x64, 0x79, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f - .byte 0x6e, 0x2e, 0x00, 0x00 - .global ov00_0231B808 -ov00_0231B808: - .byte 0x5c, 0x61, 0x61, 0x63, 0x6b, 0x5c, 0x00, 0x00 - .global ov00_0231B810 -ov00_0231B810: - .byte 0x45, 0x72, 0x72, 0x6f - .byte 0x72, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x62, 0x75, 0x64, 0x64, 0x79, 0x20 - .byte 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B830 -ov00_0231B830: - .byte 0x25, 0x73, 0x25, 0x64 - .byte 0x25, 0x64, 0x00, 0x00 - .global ov00_0231B838 -ov00_0231B838: - .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72 - .byte 0x79, 0x2e, 0x00, 0x00 - .global ov00_0231B848 -ov00_0231B848: - .byte 0x31, 0x00, 0x00, 0x00 - .global ov00_0231B84C -ov00_0231B84C: - .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61 - .byte 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74 - .byte 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f - .byte 0x6e, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x65, 0x65, 0x72, 0x2e, 0x00, 0x00 - .global ov00_0231B884 -ov00_0231B884: - .byte 0x5c, 0x6d, 0x5c, 0x00 - .global ov00_0231B888 -ov00_0231B888: - .byte 0x5c, 0x6c, 0x65, 0x6e, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B890 -ov00_0231B890: - .byte 0x5c, 0x6d, 0x73, 0x67 - .byte 0x5c, 0x0a, 0x00, 0x00 - .global ov00_0231B898 -ov00_0231B898: - .byte 0x5c, 0x6d, 0x5c, 0x25, 0x64, 0x5c, 0x78, 0x66, 0x65, 0x72, 0x5c, 0x25 - .byte 0x64, 0x20, 0x25, 0x75, 0x20, 0x25, 0x75, 0x00 - .global ov00_0231B8AC -ov00_0231B8AC: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B8B0 -ov00_0231B8B0: - .byte 0x5c, 0x6c, 0x65, 0x6e - .byte 0x5c, 0x25, 0x64, 0x5c, 0x6d, 0x73, 0x67, 0x5c, 0x0a, 0x00, 0x00, 0x00 - .global ov00_0231B8C0 -ov00_0231B8C0: - .byte 0x5c, 0x6e, 0x70, 0x72 - .byte 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B8C8 -ov00_0231B8C8: - .byte 0x55, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x64 - .byte 0x61, 0x74, 0x61, 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64 - .byte 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72 - .byte 0x2e, 0x00, 0x00, 0x00 - .global ov00_0231B8F8 -ov00_0231B8F8: - .byte 0x5c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x69, 0x64, 0x5c, 0x00 - .global ov00_0231B904 -ov00_0231B904: - .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x00, 0x00 - .global ov00_0231B914 -ov00_0231B914: - .byte 0x5c, 0x64, 0x70, 0x72, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231B91C -ov00_0231B91C: - .byte 0x67, 0x70, 0x73, 0x70, 0x2e, 0x67, 0x73, 0x2e - .byte 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74 - .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 - .global ov00_0231B95C -ov00_0231B95C: - .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d - .byte 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x00, 0x00 - .global ov00_0231B96C -ov00_0231B96C: - .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61 - .byte 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74 - .byte 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x00, 0x00, 0x00 - .global ov00_0231B994 -ov00_0231B994: - .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72 - .byte 0x6f, 0x72, 0x20, 0x6d, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x73, 0x6f, 0x63, 0x6b - .byte 0x65, 0x74, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B9C8 -ov00_0231B9C8: - .byte 0x43, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65 - .byte 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x6d, 0x61, 0x6e - .byte 0x61, 0x6e, 0x67, 0x65, 0x72, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x2e - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231B9F8 -ov00_0231B9F8: - .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6e - .byte 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6e - .byte 0x67, 0x20, 0x61, 0x20, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x00 - .global ov00_0231BA20 -ov00_0231BA20: - .byte 0x4e, 0x6f, 0x20, 0x73 - .byte 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x00 - .global ov00_0231BA34 -ov00_0231BA34: - .byte 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x64 - .byte 0x20, 0x6f, 0x75, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BA4C -ov00_0231BA4C: - .byte 0x53, 0x4d, 0x00, 0x00 - .global ov00_0231BA50 -ov00_0231BA50: - .byte 0x43, 0x6f, 0x75, 0x6c - .byte 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x20, 0x74, 0x6f - .byte 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x6d, 0x61, 0x6e, 0x61 - .byte 0x67, 0x65, 0x72, 0x2e, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BA7C -ov00_0231BA7C: - .byte 0x5c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5c - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BA88 -ov00_0231BA88: - .byte 0x5c, 0x73, 0x65, 0x73, 0x73, 0x6b, 0x65, 0x79, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231BA94 -ov00_0231BA94: - .byte 0x5c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x69, 0x64, 0x5c, 0x00 - .global ov00_0231BAA0 -ov00_0231BAA0: - .byte 0x5c, 0x6e, 0x61, 0x6d - .byte 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x69, 0x64, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231BAB0 -ov00_0231BAB0: - .byte 0x5c, 0x70, 0x61, 0x72 - .byte 0x74, 0x6e, 0x65, 0x72, 0x69, 0x64, 0x5c, 0x00 - .global ov00_0231BABC -ov00_0231BABC: - .byte 0x5c, 0x6e, 0x69, 0x63, 0x6b, 0x5c, 0x00, 0x00 - .global ov00_0231BAC4 -ov00_0231BAC4: - .byte 0x5c, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x6e, 0x69, 0x63, 0x6b, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BAD4 -ov00_0231BAD4: - .byte 0x5c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5c, 0x00 - .global ov00_0231BADC -ov00_0231BADC: - .byte 0x5c, 0x66, 0x69, 0x72, 0x73, 0x74, 0x6e, 0x61 - .byte 0x6d, 0x65, 0x5c, 0x00 - .global ov00_0231BAE8 -ov00_0231BAE8: - .byte 0x5c, 0x6c, 0x61, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x5c, 0x00, 0x00 - .global ov00_0231BAF4 -ov00_0231BAF4: - .byte 0x5c, 0x69, 0x63, 0x71, 0x75, 0x69, 0x6e, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BB00 -ov00_0231BB00: - .byte 0x5c, 0x73, 0x6b, 0x69 - .byte 0x70, 0x5c, 0x00, 0x00 - .global ov00_0231BB08 -ov00_0231BB08: - .byte 0x5c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5c, 0x00 - .global ov00_0231BB10 -ov00_0231BB10: - .byte 0x5c, 0x6e, 0x69, 0x63 - .byte 0x6b, 0x73, 0x5c, 0x00 - .global ov00_0231BB18 -ov00_0231BB18: - .byte 0x5c, 0x70, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x63, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231BB24 -ov00_0231BB24: - .byte 0x5c, 0x70, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BB30 -ov00_0231BB30: - .byte 0x5c, 0x70, 0x72, 0x6f - .byte 0x64, 0x75, 0x63, 0x74, 0x69, 0x64, 0x5c, 0x00 - .global ov00_0231BB3C -ov00_0231BB3C: - .byte 0x5c, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5c, 0x00 - .global ov00_0231BB44 -ov00_0231BB44: - .byte 0x5c, 0x6e, 0x65, 0x77, 0x75, 0x73, 0x65, 0x72, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231BB50 -ov00_0231BB50: - .byte 0x5c, 0x70, 0x72, 0x6f - .byte 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x5c, 0x00 - .global ov00_0231BB5C -ov00_0231BB5C: - .byte 0x5c, 0x63, 0x64, 0x6b, 0x65, 0x79, 0x5c, 0x00 - .global ov00_0231BB64 -ov00_0231BB64: - .byte 0x5c, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x73, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BB70 -ov00_0231BB70: - .byte 0x5c, 0x6f, 0x74, 0x68 - .byte 0x65, 0x72, 0x73, 0x6c, 0x69, 0x73, 0x74, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BB80 -ov00_0231BB80: - .byte 0x5c, 0x6e, 0x75, 0x6d - .byte 0x6f, 0x70, 0x69, 0x64, 0x73, 0x5c, 0x00, 0x00 - .global ov00_0231BB8C -ov00_0231BB8C: - .byte 0x5c, 0x6f, 0x70, 0x69, 0x64, 0x73, 0x5c, 0x00 - .global ov00_0231BB94 -ov00_0231BB94: - .byte 0x7c, 0x00, 0x00, 0x00 - .global ov00_0231BB98 -ov00_0231BB98: - .byte 0x5c, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x73, 0x65, 0x61, 0x72, 0x63 - .byte 0x68, 0x5c, 0x00, 0x00 - .global ov00_0231BBA8 -ov00_0231BBA8: - .byte 0x5c, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x6e, 0x69 - .byte 0x63, 0x6b, 0x5c, 0x00 - .global ov00_0231BBB8 -ov00_0231BBB8: - .byte 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5c, 0x00, 0x00 - .global ov00_0231BBC4 -ov00_0231BBC4: - .byte 0x5c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5c, 0x00 - .global ov00_0231BBCC -ov00_0231BBCC: - .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61 - .byte 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69 - .byte 0x6e, 0x67, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76 - .byte 0x65, 0x72, 0x2e, 0x00 - .global ov00_0231BBF8 -ov00_0231BBF8: - .byte 0x62, 0x73, 0x72, 0x64, 0x6f, 0x6e, 0x65, 0x00 - .global ov00_0231BC00 -ov00_0231BC00: - .byte 0x6d, 0x6f, 0x72, 0x65 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BC08 -ov00_0231BC08: - .byte 0x30, 0x00, 0x00, 0x00 - .global ov00_0231BC0C -ov00_0231BC0C: - .byte 0x62, 0x73, 0x72, 0x00 - .global ov00_0231BC10 -ov00_0231BC10: - .byte 0x6e, 0x69, 0x63, 0x6b - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BC18 -ov00_0231BC18: - .byte 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x6e, 0x69, 0x63, 0x6b, 0x00, 0x00 - .global ov00_0231BC24 -ov00_0231BC24: - .byte 0x66, 0x69, 0x72, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x00 - .global ov00_0231BC30 -ov00_0231BC30: - .byte 0x6c, 0x61, 0x73, 0x74 - .byte 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BC3C -ov00_0231BC3C: - .byte 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x00, 0x00, 0x00 - .global ov00_0231BC44 -ov00_0231BC44: - .byte 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x72 - .byte 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x73, 0x65 - .byte 0x72, 0x76, 0x65, 0x72, 0x2e, 0x00, 0x00, 0x00 - .global ov00_0231BC6C -ov00_0231BC6C: - .byte 0x76, 0x72, 0x00, 0x00 - .global ov00_0231BC70 -ov00_0231BC70: - .byte 0x6e, 0x72, 0x00, 0x00 - .global ov00_0231BC74 -ov00_0231BC74: - .byte 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x00, 0x00, 0x00 - .global ov00_0231BC7C -ov00_0231BC7C: - .byte 0x70, 0x73, 0x72, 0x64, 0x6f, 0x6e, 0x65, 0x00 - .global ov00_0231BC84 -ov00_0231BC84: - .byte 0x70, 0x73, 0x72, 0x00 - .global ov00_0231BC88 -ov00_0231BC88: - .byte 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x00, 0x00 - .global ov00_0231BC90 -ov00_0231BC90: - .byte 0x73, 0x74, 0x61, 0x74 - .byte 0x75, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x00, 0x00 - .global ov00_0231BC9C -ov00_0231BC9C: - .byte 0x63, 0x75, 0x72, 0x00 - .global ov00_0231BCA0 -ov00_0231BCA0: - .byte 0x5c, 0x70, 0x69, 0x64 - .byte 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231BCA8 -ov00_0231BCA8: - .byte 0x6e, 0x75, 0x72, 0x00 - .global ov00_0231BCAC -ov00_0231BCAC: - .byte 0x6f, 0x74, 0x68, 0x65, 0x72, 0x73, 0x00, 0x00 - .global ov00_0231BCB4 -ov00_0231BCB4: - .byte 0x6f, 0x64, 0x6f, 0x6e, 0x65, 0x00, 0x00, 0x00 - .global ov00_0231BCBC -ov00_0231BCBC: - .byte 0x6f, 0x00, 0x00, 0x00 - .global ov00_0231BCC0 -ov00_0231BCC0: - .byte 0x66, 0x69, 0x72, 0x73 - .byte 0x74, 0x00, 0x00, 0x00 - .global ov00_0231BCC8 -ov00_0231BCC8: - .byte 0x6c, 0x61, 0x73, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BCD0 -ov00_0231BCD0: - .byte 0x6f, 0x74, 0x68, 0x65 - .byte 0x72, 0x73, 0x6c, 0x69, 0x73, 0x74, 0x00, 0x00 - .global ov00_0231BCDC -ov00_0231BCDC: - .byte 0x6f, 0x6c, 0x64, 0x6f, 0x6e, 0x65, 0x00, 0x00 - .global ov00_0231BCE4 -ov00_0231BCE4: - .byte 0x75, 0x73, 0x00, 0x00 - .global ov00_0231BCE8 -ov00_0231BCE8: - .byte 0x75, 0x73, 0x64, 0x6f, 0x6e, 0x65, 0x00, 0x00 - .global ov00_0231BCF0 -ov00_0231BCF0: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BCF4 -ov00_0231BCF4: - .byte 0x5c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5c, 0x25, 0x64, 0x5c, 0x72, 0x65, 0x73, 0x75 - .byte 0x6c, 0x74, 0x5c, 0x25, 0x64, 0x00, 0x00, 0x00 - .global ov00_0231BD0C -ov00_0231BD0C: - .byte 0x5c, 0x78, 0x66, 0x65, 0x72, 0x5c, 0x00, 0x00 - .global ov00_0231BD14 -ov00_0231BD14: - .byte 0x25, 0x64, 0x20, 0x25, 0x75, 0x20, 0x25, 0x75, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BD20 -ov00_0231BD20: - .byte 0x5c, 0x72, 0x6e, 0x5c - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BD28 -ov00_0231BD28: - .byte 0x55, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x64 - .byte 0x61, 0x74, 0x61, 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64 - .byte 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72 - .byte 0x2e, 0x00, 0x00, 0x00 - .global ov00_0231BD58 -ov00_0231BD58: - .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72 - .byte 0x79, 0x2e, 0x00, 0x00 - .global ov00_0231BD68 -ov00_0231BD68: - .byte 0x5c, 0x72, 0x63, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BD70 -ov00_0231BD70: - .byte 0x5c, 0x65, 0x72, 0x72 - .byte 0x6f, 0x72, 0x5c, 0x00 - .global ov00_0231BD78 -ov00_0231BD78: - .byte 0x5c, 0x65, 0x72, 0x72, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231BD80 -ov00_0231BD80: - .byte 0x5c, 0x65, 0x72, 0x72 - .byte 0x6d, 0x73, 0x67, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BD8C -ov00_0231BD8C: - .byte 0x5c, 0x66, 0x61, 0x74, 0x61, 0x6c, 0x5c, 0x00 - .global ov00_0231BD94 -ov00_0231BD94: - .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72 - .byte 0x6f, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x6f, 0x72, 0x20 - .byte 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x6e - .byte 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x00 - .global ov00_0231BDCC -ov00_0231BDCC: - .byte 0x50, 0x61, 0x72, 0x73, 0x65, 0x20, 0x45, 0x72 - .byte 0x72, 0x6f, 0x72, 0x2e, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BDDC -ov00_0231BDDC: - .word ov00_0231BE28 - .byte 0xff, 0xff, 0xff, 0xff - .byte 0x20, 0x4e, 0x00, 0x00 - .word BucketSet - .word BucketAdd_Gsi - .word BucketSub_Gsi - .word BucketMult_Gsi - .word BucketDiv_Gsi - .word BucketConcat_Gsi - .word BucketAvg_Gsi - .word ServerOpInt - .word ServerOpFloat - .word ServerOpString - .word TeamOpInt - .word TeamOpFloat - .word TeamOpString - .word PlayerOpInt - .word PlayerOpFloat - .word PlayerOpString - .global ov00_0231BE28 -ov00_0231BE28: - .byte 0x00, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x79, 0x33, 0x44, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BE38 -ov00_0231BE38: - .byte 0x00, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x70, 0x68, 0x65, 0x78 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BE48 -ov00_0231BE48: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BE4C -ov00_0231BE4C: - .byte 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231BE50 -ov00_0231BE50: - .byte 0x70, 0x61, 0x75, 0x74 - .byte 0x68, 0x72, 0x00, 0x00 - .global ov00_0231BE58 -ov00_0231BE58: - .byte 0x6c, 0x69, 0x64, 0x00 - .global ov00_0231BE5C -ov00_0231BE5C: - .byte 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x00, 0x00 - .global ov00_0231BE64 -ov00_0231BE64: - .byte 0x67, 0x65, 0x74, 0x70, 0x69, 0x64, 0x72, 0x00 - .global ov00_0231BE6C -ov00_0231BE6C: - .byte 0x67, 0x65, 0x74, 0x70, 0x64, 0x72, 0x00, 0x00 - .global ov00_0231BE74 -ov00_0231BE74: - .byte 0x70, 0x69, 0x64, 0x00 - .global ov00_0231BE78 -ov00_0231BE78: - .byte 0x6d, 0x6f, 0x64, 0x00 - .global ov00_0231BE7C -ov00_0231BE7C: - .byte 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x00, 0x00 - .global ov00_0231BE84 -ov00_0231BE84: - .byte 0x5c, 0x64, 0x61, 0x74, 0x61, 0x5c, 0x00, 0x00 - .global ov00_0231BE8C -ov00_0231BE8C: - .byte 0x73, 0x65, 0x74, 0x70, 0x64, 0x72, 0x00, 0x00 - .global ov00_0231BE94 -ov00_0231BE94: - .byte 0x5c, 0x70, 0x61, 0x75, 0x74, 0x68, 0x72, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BEA0 -ov00_0231BEA0: - .byte 0x5c, 0x67, 0x65, 0x74 - .byte 0x70, 0x69, 0x64, 0x72, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231BEAC -ov00_0231BEAC: - .byte 0x5c, 0x67, 0x65, 0x74, 0x70, 0x64, 0x72, 0x5c - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BEB8 -ov00_0231BEB8: - .byte 0x5c, 0x73, 0x65, 0x74, 0x70, 0x64, 0x72, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BEC4 -ov00_0231BEC4: - .byte 0x25, 0x73, 0x5f, 0x74, 0x25, 0x64, 0x00, 0x00 - .global ov00_0231BECC -ov00_0231BECC: - .byte 0x25, 0x73, 0x5f, 0x25, 0x64, 0x00, 0x00, 0x00 - .global ov00_0231BED4 -ov00_0231BED4: - .byte 0x33, 0x62, 0x38, 0x64, 0x64, 0x38, 0x39, 0x39, 0x35, 0x66, 0x37, 0x63, 0x34, 0x30, 0x61, 0x39 - .byte 0x61, 0x35, 0x63, 0x35, 0x62, 0x37, 0x64, 0x64, 0x35, 0x62, 0x34, 0x38, 0x31, 0x33, 0x34, 0x31 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BEF8 -ov00_0231BEF8: - .byte 0x74, 0x69, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BF00 -ov00_0231BF00: - .byte 0xfe, 0xfe, 0x00, 0x00 - .global ov00_0231BF04 -ov00_0231BF04: - .byte 0x25, 0x73, 0x3a, 0x25, 0x64, 0x00, 0x00, 0x00 - .global ov00_0231BF0C -ov00_0231BF0C: - .byte 0x25, 0x73, 0x00, 0x00 - .global ov00_0231BF10 -ov00_0231BF10: - .byte 0x3a, 0x25, 0x64, 0x00 - .global ov00_0231BF14 -ov00_0231BF14: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231BF18 -ov00_0231BF18: - .byte 0x06, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff - .global ov00_0231BF24 -ov00_0231BF24: - .byte 0xfd, 0xfc, 0x1e, 0x66, 0x6a, 0xb2, 0x00, 0x00 - .global ov00_0231BF2C -ov00_0231BF2C: - .byte 0x25, 0x73, 0x2e, 0x25, 0x73, 0x00, 0x00, 0x00 - .global ov00_0231BF34 -ov00_0231BF34: - .byte 0x6e, 0x61, 0x74, 0x6e, 0x65, 0x67, 0x31, 0x2e, 0x67, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65 - .byte 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74, 0x00 - .global ov00_0231BF50 -ov00_0231BF50: - .byte 0x6e, 0x61, 0x74, 0x6e - .byte 0x65, 0x67, 0x32, 0x2e, 0x67, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77 - .byte 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74, 0x00 - .global ov00_0231BF6C -ov00_0231BF6C: - .byte 0x6e, 0x61, 0x74, 0x6e, 0x65, 0x67, 0x33, 0x2e - .byte 0x67, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e - .byte 0x6e, 0x65, 0x74, 0x00 - .global ov00_0231BF88 -ov00_0231BF88: - .word ov00_0231BF8C - .global ov00_0231BF8C -ov00_0231BF8C: - .byte 0xff, 0xff, 0xff, 0xff, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CD20 -ov00_0231CD20: - .byte 0x25, 0x73, 0x2e, 0x6d - .byte 0x61, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x67, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64 - .byte 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74, 0x00, 0x00, 0x00 - .global ov00_0231CD40 -ov00_0231CD40: - .byte 0x4e, 0x6f, 0x20, 0x63 - .byte 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x77 - .byte 0x61, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d - .byte 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x20, 0x73, 0x65, 0x72, 0x76 - .byte 0x65, 0x72, 0x2e, 0x00 - .global ov00_0231CD78 -ov00_0231CD78: - .byte 0x25, 0x64, 0x00, 0x00 - .global ov00_0231CD7C -ov00_0231CD7C: - .byte 0x32, 0x35, 0x35, 0x2e, 0x32, 0x35, 0x35, 0x2e - .byte 0x32, 0x35, 0x35, 0x2e, 0x32, 0x35, 0x35, 0x00 - .global ov00_0231CD8C -ov00_0231CD8C: - .byte 0x25, 0x30, 0x38, 0x58, 0x25, 0x30, 0x34, 0x58 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CD98 -ov00_0231CD98: - .byte 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x00 - .global ov00_0231CDA0 -ov00_0231CDA0: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CDA4 -ov00_0231CDA4: - .byte 0x73, 0x70, 0x6c, 0x69, 0x74, 0x6e, 0x75, 0x6d, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CDB0 -ov00_0231CDB0: - .byte 0x25, 0x30, 0x32, 0x78 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CDB8 -ov00_0231CDB8: - .byte 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x70, 0x25, 0x64, 0x00, 0x00, 0x00 - .global ov00_0231CDC4 -ov00_0231CDC4: - .byte 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x70, 0x6f, 0x72, 0x74, 0x00, 0x00, 0x00 - .global ov00_0231CDD0 -ov00_0231CDD0: - .byte 0x6e, 0x61, 0x74, 0x6e - .byte 0x65, 0x67, 0x00, 0x00 - .global ov00_0231CDD8 -ov00_0231CDD8: - .byte 0x31, 0x00, 0x00, 0x00 - .global ov00_0231CDDC -ov00_0231CDDC: - .byte 0x30, 0x00, 0x00, 0x00 - .global ov00_0231CDE0 -ov00_0231CDE0: - .byte 0x73, 0x74, 0x61, 0x74 - .byte 0x65, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CDF0 -ov00_0231CDF0: - .byte 0x67, 0x61, 0x6d, 0x65 - .byte 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CDFC -ov00_0231CDFC: - .byte 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x69, 0x70 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CE08 -ov00_0231CE08: - .byte 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x70, 0x6f, 0x72, 0x74, 0x00, 0x00 - .global ov00_0231CE14 -ov00_0231CE14: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CE18 -ov00_0231CE18: - .byte 0x70, 0x69, 0x64, 0x5f, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CE20 -ov00_0231CE20: - .byte 0x70, 0x69, 0x6e, 0x67 - .byte 0x5f, 0x00, 0x00, 0x00 - .global ov00_0231CE28 -ov00_0231CE28: - .byte 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x00, 0x00, 0x00 - .global ov00_0231CE30 -ov00_0231CE30: - .byte 0x73, 0x63, 0x6f, 0x72 - .byte 0x65, 0x5f, 0x00, 0x00 - .global ov00_0231CE38 -ov00_0231CE38: - .byte 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x00, 0x00 - .global ov00_0231CE40 -ov00_0231CE40: - .byte 0x73, 0x6b, 0x69, 0x6c - .byte 0x6c, 0x5f, 0x00, 0x00 - .global ov00_0231CE48 -ov00_0231CE48: - .byte 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x00, 0x00 - .global ov00_0231CE50 -ov00_0231CE50: - .byte 0x70, 0x6c, 0x61, 0x79 - .byte 0x65, 0x72, 0x5f, 0x00 - .global ov00_0231CE58 -ov00_0231CE58: - .byte 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x00 - .global ov00_0231CE60 -ov00_0231CE60: - .byte 0x6d, 0x61, 0x70, 0x6e - .byte 0x61, 0x6d, 0x65, 0x00 - .global ov00_0231CE68 -ov00_0231CE68: - .byte 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x00 - .global ov00_0231CE70 -ov00_0231CE70: - .byte 0x64, 0x65, 0x61, 0x74 - .byte 0x68, 0x73, 0x5f, 0x00 - .global ov00_0231CE78 -ov00_0231CE78: - .byte 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x64, 0x00 - .global ov00_0231CE80 -ov00_0231CE80: - .byte 0x73, 0x63, 0x6f, 0x72 - .byte 0x65, 0x5f, 0x74, 0x00 - .global ov00_0231CE88 -ov00_0231CE88: - .byte 0x68, 0x6f, 0x73, 0x74, 0x70, 0x6f, 0x72, 0x74, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CE94 -ov00_0231CE94: - .byte 0x67, 0x61, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CEA0 -ov00_0231CEA0: - .byte 0x6e, 0x75, 0x6d, 0x74 - .byte 0x65, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CEAC -ov00_0231CEAC: - .byte 0x67, 0x61, 0x6d, 0x65, 0x6d, 0x6f, 0x64, 0x65 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CEB8 -ov00_0231CEB8: - .byte 0x74, 0x65, 0x61, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CEC4 -ov00_0231CEC4: - .byte 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CED0 -ov00_0231CED0: - .byte 0x67, 0x61, 0x6d, 0x65 - .byte 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CEDC -ov00_0231CEDC: - .byte 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CEE8 -ov00_0231CEE8: - .byte 0x66, 0x72, 0x61, 0x67, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x00, 0x00, 0x00 - .global ov00_0231CEF4 -ov00_0231CEF4: - .byte 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x00, 0x00, 0x00 - .global ov00_0231CF00 -ov00_0231CF00: - .byte 0x72, 0x6f, 0x75, 0x6e - .byte 0x64, 0x74, 0x69, 0x6d, 0x65, 0x00, 0x00, 0x00 - .global ov00_0231CF0C -ov00_0231CF0C: - .byte 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65 - .byte 0x72, 0x73, 0x00, 0x00 - .global ov00_0231CF18 -ov00_0231CF18: - .byte 0x6d, 0x61, 0x78, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00, 0x00 - .global ov00_0231CF24 -ov00_0231CF24: - .byte 0x6e, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x64, 0x00, 0x00 - .global ov00_0231CF30 -ov00_0231CF30: - .byte 0x67, 0x61, 0x6d, 0x65 - .byte 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x00 - .global ov00_0231CF3C -ov00_0231CF3C: - .byte 0x74, 0x69, 0x6d, 0x65, 0x65, 0x6c, 0x61, 0x70 - .byte 0x73, 0x65, 0x64, 0x00 - .global ov00_0231CF48 -ov00_0231CF48: - .byte 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231CF58 -ov00_0231CF58: - .byte 0x74, 0x65, 0x61, 0x6d, 0x66, 0x72, 0x61, 0x67, 0x6c, 0x69, 0x6d, 0x69 - .byte 0x74, 0x00, 0x00, 0x00 - .global ov00_0231CF68 -ov00_0231CF68: - .word ov00_0231CE14 - .word ov00_0231CEC4 - .word ov00_0231CED0 - .word ov00_0231CE58 - .word ov00_0231CE88 - .word ov00_0231CE60 - .word ov00_0231CE94 - .word ov00_0231CF30 - .word ov00_0231CF0C - .word ov00_0231CEA0 - .word ov00_0231CF18 - .word ov00_0231CEAC - .word ov00_0231CEB8 - .word ov00_0231CEE8 - .word ov00_0231CF58 - .word ov00_0231CF3C - .word ov00_0231CEF4 - .word ov00_0231CF00 - .word ov00_0231CF48 - .word ov00_0231CEDC - .word ov00_0231CE78 - .word ov00_0231CE50 - .word ov00_0231CE30 - .word ov00_0231CE40 - .word ov00_0231CE20 - .word ov00_0231CE28 - .word ov00_0231CE70 - .word ov00_0231CE18 - .word ov00_0231CE38 - .word ov00_0231CE80 - .word ov00_0231CF24 - .word ov00_0231CE68 - .word ov00_0231CE48 - .byte 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231D360 -ov00_0231D360: - .byte 0x5c, 0x62, 0x61, 0x73 - .byte 0x69, 0x63, 0x5c, 0x5c, 0x69, 0x6e, 0x66, 0x6f, 0x5c, 0x00, 0x00, 0x00 - .global ov00_0231D370 -ov00_0231D370: - .byte 0x5c, 0x73, 0x74, 0x61 - .byte 0x74, 0x75, 0x73, 0x5c, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231D37C -ov00_0231D37C: - .byte 0x73, 0x70, 0x6c, 0x69, 0x74, 0x6e, 0x75, 0x6d - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231D388 -ov00_0231D388: - .byte 0x5c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5c, 0x00 - .global ov00_0231D390 -ov00_0231D390: - .byte 0x66, 0x69, 0x6e, 0x61 - .byte 0x6c, 0x00, 0x00, 0x00 - .global ov00_0231D398 -ov00_0231D398: - .byte 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x64, 0x00 - .global ov00_0231D3A0 -ov00_0231D3A0: - .byte 0x25, 0x64, 0x00, 0x00 - .global ov00_0231D3A4 -ov00_0231D3A4: - .byte 0x70, 0x69, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231D3AC -ov00_0231D3AC: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231D3B0 -ov00_0231D3B0: - .byte 0x25, 0x73, 0x25, 0x64 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231D3B8 -ov00_0231D3B8: - .byte 0x73, 0x70, 0x6c, 0x69, 0x74, 0x6e, 0x75, 0x6d, 0x00, 0x00, 0x00, 0x00 - .global ov00_0231D3C4 -ov00_0231D3C4: - .byte 0x5c, 0x25, 0x73, 0x00 - .global ov00_0231D3C8 -ov00_0231D3C8: - .word ov00_0231D3CC - .global ov00_0231D3CC -ov00_0231D3CC: - .byte 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x45, 0x72 - .byte 0x72, 0x6f, 0x72, 0x3a, 0x20, 0x00, 0x00, 0x00 - .global ov00_0231D3DC -ov00_0231D3DC: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov00_0231D3E0 -ov00_0231D3E0: - .byte 0x25, 0x73, 0x2e, 0x6d - .byte 0x73, 0x25, 0x64, 0x2e, 0x67, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77 - .byte 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74, 0x00 - .global ov00_0231D3FC -ov00_0231D3FC: - .byte 0xff, 0xff, 0xff, 0xff, 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 - - .bss - .global ov00_0231D420 -ov00_0231D420: - .space 0xC - .global ov00_0231D42C -ov00_0231D42C: - .space 0x64 - .global ov00_0231D490 -ov00_0231D490: - .space 0xE10 - .global ov00_0231E2A0 -ov00_0231E2A0: - .space 0x8 - .global ov00_0231E2A8 -ov00_0231E2A8: - .space 0x10 - .global ov00_0231E2B8 -ov00_0231E2B8: - .space 0x44 - .global ov00_0231E2FC -ov00_0231E2FC: - .space 0x44 - .global ov00_0231E340 -ov00_0231E340: - .space 0x8 - .global ov00_0231E348 -ov00_0231E348: - .space 0x20 - .global ov00_0231E368 -ov00_0231E368: - .space 0x28 - .global ov00_0231E390 -ov00_0231E390: - .space 0x14 - .global ov00_0231E3A4 -ov00_0231E3A4: - .space 0x10 - .global ov00_0231E3B4 -ov00_0231E3B4: - .space 0x2C - .global ov00_0231E3E0 -ov00_0231E3E0: - .space 0xA00 - .global ov00_0231EDE0 -ov00_0231EDE0: - .space 0x80 - .global ov00_0231EE60 -ov00_0231EE60: - .space 0x28 - .global ov00_0231EE88 -ov00_0231EE88: - .space 0x4 - .global ov00_0231EE8C -ov00_0231EE8C: - .space 0x148 - .global ov00_0231EFD4 -ov00_0231EFD4: - .space 0x2B4 - .global ov00_0231F288 -ov00_0231F288: - .space 0x5C - .global ov00_0231F2E4 -ov00_0231F2E4: - .space 0x280 - .global ov00_0231F564 -ov00_0231F564: - .space 0x4 - .global ov00_0231F568 -ov00_0231F568: - .space 0x18 - .global ov00_0231F580 -ov00_0231F580: - .space 0x40 - .global ov00_0231F5C0 -ov00_0231F5C0: - .space 0x8 - .global ov00_0231F5C8 -ov00_0231F5C8: - .space 0x6 - .global ov00_0231F5CE -ov00_0231F5CE: - .space 0x2 - .global ov00_0231F5D0 -ov00_0231F5D0: - .space 0x58 - .global ov00_0231F628 -ov00_0231F628: - .space 0x59F8 - .global ov00_02325020 -ov00_02325020: - .space 0xC - .global ov00_0232502C -ov00_0232502C: - .space 0x14 - .global ov00_02325040 -ov00_02325040: - .space 0x20 - .global ov00_02325060 -ov00_02325060: - .space 0x4 - .global ov00_02325064 -ov00_02325064: - .space 0x14 - .global ov00_02325078 -ov00_02325078: - .space 0x14 - .global ov00_0232508C -ov00_0232508C: - .space 0x8 - .global ov00_02325094 -ov00_02325094: - .space 0x10 - .global ov00_023250A4 -ov00_023250A4: - .space 0x14 - .global ov00_023250B8 -ov00_023250B8: - .space 0x10 - .global ov00_023250C8 -ov00_023250C8: - .space 0x10 - .global ov00_023250D8 -ov00_023250D8: - .space 0x8 - .global ov00_023250E0 -ov00_023250E0: - .space 0x18 - .global ov00_023250F8 -ov00_023250F8: - .space 0xA - .global ov00_02325102 -ov00_02325102: - .space 0x56 - .global ov00_02325158 -ov00_02325158: - .space 0x20 - .global ov00_02325178 -ov00_02325178: - .space 0x44 - .global ov00_023251BC -ov00_023251BC: - .space 0x64 - .global ov00_02325220 -ov00_02325220: - .space 0xC0 - .global ov00_023252E0 -ov00_023252E0: - .space 0xC0 - .global ov00_023253A0 -ov00_023253A0: - .space 0x1C0 - .global ov00_02325560 -ov00_02325560: - .space 0x2A - .global ov00_0232558A -ov00_0232558A: - .space 0x1A - .global ov00_023255A4 -ov00_023255A4: - .space 0x2A - .global ov00_023255CE -ov00_023255CE: - .space 0x156 - .global ov00_02325724 -ov00_02325724: - .space 0x99C - .global ov00_023260C0 -ov00_023260C0: - .space 0x800 - .global ov00_023268C0 -ov00_023268C0: - .space 0x4 - .global ov00_023268C4 -ov00_023268C4: - .space 0x4 - .global ov00_023268C8 -ov00_023268C8: - .space 0x4 - .global ov00_023268CC -ov00_023268CC: - .space 0x4 - .global ov00_023268D0 -ov00_023268D0: - .space 0x30 - .global ov00_02326900 -ov00_02326900: - .space 0x4 - .global ov00_02326904 -ov00_02326904: - .space 0x20 - .global ov00_02326924 -ov00_02326924: - .space 0x8 - .global ov00_0232692C -ov00_0232692C: - .space 0x4 - .global ov00_02326930 -ov00_02326930: - .space 0x4 - .global ov00_02326934 -ov00_02326934: - .space 0x18 - .global ov00_0232694C -ov00_0232694C: - .space 0x8 - .global ov00_02326954 -ov00_02326954: - .space 0x20 - .global ov00_02326974 -ov00_02326974: - .space 0x38 - .global ov00_023269AC -ov00_023269AC: - .space 0x10 - .global ov00_023269BC -ov00_023269BC: - .space 0x104 - .global ov00_02326AC0 -ov00_02326AC0: - .space 0x8 - .global ov00_02326AC8 -ov00_02326AC8: - .space 0x170 - .global ov00_02326C38 -ov00_02326C38: - .space 0x13 - .global ov00_02326C4B -ov00_02326C4B: - .space 0x1 - .global ov00_02326C4C -ov00_02326C4C: - .space 0x4 - .global ov00_02326C50 -ov00_02326C50: - .space 0x4 - .global ov00_02326C54 -ov00_02326C54: - .space 0x8 - .global ov00_02326C5C -ov00_02326C5C: - .space 0x20 - .global ov00_02326C7C -ov00_02326C7C: - .space 0x4 - .global ov00_02326C80 -ov00_02326C80: - .space 0x10 - .global ov00_02326C90 -ov00_02326C90: - .space 0x14 - .global ov00_02326CA4 -ov00_02326CA4: - .space 0x4 - .global ov00_02326CA8 -ov00_02326CA8: - .space 0xC - .global ov00_02326CB4 -ov00_02326CB4: - .space 0x8 - .global ov00_02326CBC -ov00_02326CBC: - .space 0x4 - .global ov00_02326CC0 -ov00_02326CC0: - .space 0x14 - .global ov00_02326CD4 -ov00_02326CD4: - .space 0x4 - .global ov00_02326CD8 -ov00_02326CD8: - .space 0x4 - .global ov00_02326CDC -ov00_02326CDC: - .space 0x14 - .global ov00_02326CF0 -ov00_02326CF0: - .space 0x1C - .global ov00_02326D0C -ov00_02326D0C: - .space 0x48 - .global ov00_02326D54 -ov00_02326D54: - .space 0x14 - .global ov00_02326D68 -ov00_02326D68: - .space 0x4 - .global ov00_02326D6C -ov00_02326D6C: - .space 0x8 - .global ov00_02326D74 -ov00_02326D74: - .space 0x8 - .global ov00_02326D7C -ov00_02326D7C: - .space 0x8 - .global ov00_02326D84 -ov00_02326D84: - .space 0x4 - .global ov00_02326D88 -ov00_02326D88: - .space 0x18 - .global ov00_02326DA0 -ov00_02326DA0: - .space 0x8 - .global ov00_02326DA8 -ov00_02326DA8: - .space 0x80 - .global ov00_02326E28 -ov00_02326E28: - .space 0x100 - .global ov00_02326F28 -ov00_02326F28: - .space 0xC - .global ov00_02326F34 -ov00_02326F34: - .space 0x14 - .global ov00_02326F48 -ov00_02326F48: - .space 0x20 - .global ov00_02326F68 -ov00_02326F68: - .space 0x20 - .global ov00_02326F88 -ov00_02326F88: - .space 0x1 - .global ov00_02326F89 -ov00_02326F89: - .space 0x7 - .global ov00_02326F90 -ov00_02326F90: - .space 0x730 - .global ov00_023276C0 -ov00_023276C0: - .space 0x8 - .global ov00_023276C8 -ov00_023276C8: - .space 0x4 - .global ov00_023276CC -ov00_023276CC: - .space 0x8 - .global ov00_023276D4 -ov00_023276D4: - .space 0xC - .global ov00_023276E0 -ov00_023276E0: - .space 0x5 - .global ov00_023276E5 -ov00_023276E5: - .space 0x1 - .global ov00_023276E6 -ov00_023276E6: - .space 0x4 - .global ov00_023276EA -ov00_023276EA: - .space 0x2 - .global ov00_023276EC -ov00_023276EC: - .space 0x14 - .global ov00_02327700 -ov00_02327700: - .space 0x20 - .global ov00_02327720 -ov00_02327720: - .space 0x4 - .global ov00_02327724 -ov00_02327724: - .space 0x4 - .global ov00_02327728 -ov00_02327728: - .space 0x4 - .global ov00_0232772C -ov00_0232772C: - .space 0x4 - .global ov00_02327730 -ov00_02327730: - .space 0x4 - .global ov00_02327734 -ov00_02327734: - .space 0x8 - .global ov00_0232773C -ov00_0232773C: - .space 0x4 - .global ov00_02327740 -ov00_02327740: - .space 0x4 - .global ov00_02327744 -ov00_02327744: - .space 0x4 - .global ov00_02327748 -ov00_02327748: - .space 0x4 - .global ov00_0232774C -ov00_0232774C: - .space 0xC - .global ov00_02327758 -ov00_02327758: - .space 0xC - .global ov00_02327764 -ov00_02327764: - .space 0x14 - .global ov00_02327778 -ov00_02327778: - .space 0x18 - .global ov00_02327790 -ov00_02327790: - .space 0x1C - .global ov00_023277AC -ov00_023277AC: - .space 0x24 - .global ov00_023277D0 -ov00_023277D0: - .space 0x8 - .global ov00_023277D8 -ov00_023277D8: - .space 0x34 - .global ov00_0232780C -ov00_0232780C: - .space 0xC - .global ov00_02327818 -ov00_02327818: - .space 0x18 - .global ov00_02327830 -ov00_02327830: - .space 0x5C - .global ov00_0232788C -ov00_0232788C: - .space 0x80 - .global ov00_0232790C -ov00_0232790C: - .space 0x4 - .global ov00_02327910 -ov00_02327910: - .space 0x18 - .global ov00_02327928 -ov00_02327928: - .space 0x18 - .global ov00_02327940 -ov00_02327940: - .space 0x4 - .global ov00_02327944 -ov00_02327944: - .space 0x4 - .global ov00_02327948 -ov00_02327948: - .space 0x4 - .global ov00_0232794C -ov00_0232794C: - .space 0x4 - .global ov00_02327950 -ov00_02327950: - .space 0x4 - .global ov00_02327954 -ov00_02327954: - .space 0x8 - .global ov00_0232795C -ov00_0232795C: - .space 0x4 - .global ov00_02327960 -ov00_02327960: - .space 0x4 - .global ov00_02327964 -ov00_02327964: - .space 0x8C0 - .global ov00_02328224 -ov00_02328224: - .space 0x4 - .global ov00_02328228 -ov00_02328228: - .space 0x18 - .global ov00_02328240 -ov00_02328240: - .space 0x20 - .global ov00_02328260 -ov00_02328260: - .space 0xC0 - .global ov00_02328320 -ov00_02328320: - .space 0x20 - .global ov00_02328340 -ov00_02328340: - .space 0x8 - .global ov00_02328348 -ov00_02328348: - .space 0x4 - .global ov00_0232834C -ov00_0232834C: - .space 0x3C - .global ov00_02328388 -ov00_02328388: - .space 0x9 - .global ov00_02328391 -ov00_02328391: - .space 0x3F7 - .global ov00_02328788 -ov00_02328788: - .space 0x18 - .global ov00_023287A0 -ov00_023287A0: - .space 0x10 - .global ov00_023287B0 -ov00_023287B0: - .space 0x14 - .global ov00_023287C4 -ov00_023287C4: - .space 0x3C - .global ov00_02328800 -ov00_02328800: - .space 0x4 - .global ov00_02328804 -ov00_02328804: - .space 0x40 - .global ov00_02328844 -ov00_02328844: - .space 0x40 - .global ov00_02328884 -ov00_02328884: - .space 0x4 - .global ov00_02328888 -ov00_02328888: - .space 0x4 - .global ov00_0232888C -ov00_0232888C: - .space 0x4 - .global ov00_02328890 -ov00_02328890: - .space 0x5 - .global ov00_02328895 -ov00_02328895: - .space 0x47 - .global ov00_023288DC -ov00_023288DC: - .space 0x4 - .global ov00_023288E0 -ov00_023288E0: - .space 0x4 - .global ov00_023288E4 -ov00_023288E4: - .space 0x4 - .global ov00_023288E8 -ov00_023288E8: - .space 0x84 - .global ov00_0232896C -ov00_0232896C: - .space 0x3C - .global ov00_023289A8 -ov00_023289A8: - .space 0x4 - .global ov00_023289AC -ov00_023289AC: - .space 0x4 - .global ov00_023289B0 -ov00_023289B0: - .space 0x10 - .global ov00_023289C0 -ov00_023289C0: - .space 0x4 - .global ov00_023289C4 -ov00_023289C4: - .space 0x14 - .global ov00_023289D8 -ov00_023289D8: - .space 0x4 - .global ov00_023289DC -ov00_023289DC: - .space 0x4 - .global ov00_023289E0 -ov00_023289E0: - .space 0x8 - .global ov00_023289E8 -ov00_023289E8: - .space 0x30 - .global ov00_02328A18 -ov00_02328A18: - .space 0x100 - .global ov00_02328B18 -ov00_02328B18: - .space 0x100 - .global ov00_02328C18 -ov00_02328C18: - .space 0x200 - .global ov00_02328E18 -ov00_02328E18: - .space 0x4 - .global ov00_02328E1C -ov00_02328E1C: - .space 0x4 - .global ov00_02328E20 -ov00_02328E20: - .space 0x2C - .global ov00_02328E4C -ov00_02328E4C: - .space 0x4C - .global ov00_02328E98 -ov00_02328E98: - .space 0x200 - .global ov00_02329098 -ov00_02329098: - .space 0x8 - .global ov00_023290A0 -ov00_023290A0: - .space 0x24 - .global ov00_023290C4 -ov00_023290C4: - .space 0xD8 - .global ov00_0232919C -ov00_0232919C: - .space 0x200 - .global ov00_0232939C -ov00_0232939C: - .space 0x4 - .global ov00_023293A0 -ov00_023293A0: - .space 0x14 - .global ov00_023293B4 -ov00_023293B4: - .space 0x40 - .global ov00_023293F4 -ov00_023293F4: - .space 0x100 - .global ov00_023294F4 -ov00_023294F4: - .space 0x8 - .global ov00_023294FC -ov00_023294FC: - .space 0x4 - .global ov00_02329500 -ov00_02329500: - .space 0x20 diff --git a/asm/overlay_00_0230E460.s b/asm/overlay_00_0230E460.s new file mode 100644 index 00000000..94d97f55 --- /dev/null +++ b/asm/overlay_00_0230E460.s @@ -0,0 +1,16054 @@ + .include "asm/macros.inc" + .include "overlay_00_0230E460.inc" + + .text + + arm_func_start Gt2GetConnectionData +Gt2GetConnectionData: ; 0x0230E460 + ldr r0, [r0, #0x40] + bx lr + arm_func_end Gt2GetConnectionData + + arm_func_start Gti2UShortFromBuffer +Gti2UShortFromBuffer: ; 0x0230E468 + ldrb r2, [r0, r1] + add r1, r1, #1 + ldrb r1, [r0, r1] + mov r0, r2, lsl #8 + and r0, r0, #0xff00 + mov r0, r0, lsl #0x10 + orr r0, r1, r0, lsr #16 + bx lr + arm_func_end Gti2UShortFromBuffer + + arm_func_start Gti2UShortToBuffer +Gti2UShortToBuffer: ; 0x0230E488 + mov r3, r2, asr #8 + strb r3, [r0, r1] + add r1, r1, #1 + strb r2, [r0, r1] + bx lr + arm_func_end Gti2UShortToBuffer + + arm_func_start Gti2SnDiff +Gti2SnDiff: ; 0x0230E49C + sub r0, r0, r1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bx lr + arm_func_end Gti2SnDiff + + arm_func_start Gti2ConnectionError +Gti2ConnectionError: ; 0x0230E4AC + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r3, [r6, #0xc] + mov r5, r1 + mov r4, r2 + cmp r3, #5 + bge _0230E514 + ldr r1, [r6, #0x10] + cmp r1, #0 + beq _0230E4FC + bl Gti2ConnectionClosed + mov r2, #0 + mov r0, r6 + mov r1, r5 + mov r3, r2 + bl Gti2ConnectedCallback + cmp r0, #0 + bne _0230E538 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_0230E4FC: + cmp r3, #4 + moveq r0, #1 + streq r0, [r6, #0x14] + mov r0, r6 + bl Gti2ConnectionClosed + b _0230E538 +_0230E514: + cmp r3, #7 + beq _0230E538 + bl Gti2ConnectionClosed + mov r0, r6 + mov r1, r4 + bl Gti2ClosedCallback + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} +_0230E538: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Gti2ConnectionError + + arm_func_start Gti2ConnectionCommunicationError +Gti2ConnectionCommunicationError: ; 0x0230E540 + ldr ip, _0230E550 ; =Gti2ConnectionError + mov r1, #7 + mov r2, #2 + bx ip + .align 2, 0 +_0230E550: .word Gti2ConnectionError + arm_func_end Gti2ConnectionCommunicationError + + arm_func_start Gti2ConnectionMemoryError +Gti2ConnectionMemoryError: ; 0x0230E554 + stmdb sp!, {r4, lr} + mov r4, r0 + bl Gti2SendClosed + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + mov r1, #1 + mov r2, #4 + bl Gti2ConnectionError + ldmia sp!, {r4, pc} + arm_func_end Gti2ConnectionMemoryError + + arm_func_start Gti2HandleEsn +Gti2HandleEsn: ; 0x0230E580 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r0 + ldr r0, [r4, #0x60] + mov r7, r1 + bl ArrayLength_Gsi + movs r5, r0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r5, #0 + mov r6, #0 + ble _0230E5D4 +_0230E5AC: + ldr r0, [r4, #0x60] + mov r1, r6 + bl ArrayNth_Gsi + ldrh r0, [r0, #8] + mov r1, r7 + bl Gti2SnDiff + cmp r0, #0 + addlt r6, r6, #1 + cmplt r6, r5 + blt _0230E5AC +_0230E5D4: + cmp r6, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + cmp r6, #0 + sub r6, r6, #1 + beq _0230E604 +_0230E5EC: + ldr r0, [r4, #0x60] + mov r1, r6 + bl ArrayDeleteAt_Gsi + cmp r6, #0 + sub r6, r6, #1 + bne _0230E5EC +_0230E604: + ldr r0, [r4, #0x60] + bl ArrayLength_Gsi + movs r6, r0 + bne _0230E624 + mov r0, #0 + str r0, [r4, #0x58] + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0230E624: + ldr r0, [r4, #0x60] + mov r1, #0 + bl ArrayNth_Gsi + cmp r6, #0 + ldr r5, [r0] + mov r7, #0 + ble _0230E664 +_0230E640: + ldr r0, [r4, #0x60] + mov r1, r7 + bl ArrayNth_Gsi + ldr r1, [r0] + add r7, r7, #1 + sub r1, r1, r5 + str r1, [r0] + cmp r7, r6 + blt _0230E640 +_0230E664: + mov r2, r5 + add r0, r4, #0x50 + mov r1, #0 + bl Gti2BufferShorten + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end Gti2HandleEsn + + arm_func_start Gti2HandleAppUnreliable +Gti2HandleAppUnreliable: ; 0x0230E67C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + ldr r0, [r6, #0xc] + mov r5, r1 + cmp r0, #5 + cmpne r0, #6 + mov r4, r2 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, pc} + ldr r0, [r6, #0x9c] + bl ArrayLength_Gsi + cmp r0, #0 + beq _0230E6E4 + mov r1, #0 + mov r0, r6 + mov r2, r5 + mov r3, r4 + str r1, [sp] + bl Gti2ReceiveFilterCallback + cmp r0, #0 + movne r0, #1 + add sp, sp, #4 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, r6, pc} +_0230E6E4: + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #0 + bl Gti2ReceivedCallback + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end Gti2HandleAppUnreliable + + arm_func_start Gti2HandleAppReliable +Gti2HandleAppReliable: ; 0x0230E70C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + ldr r3, [r6, #0xc] + mov r5, r1 + cmp r3, #5 + mov r4, r2 + cmpne r3, #6 + beq _0230E748 + bl Gti2ConnectionCommunicationError + cmp r0, #0 + bne _0230E7AC + add sp, sp, #4 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, pc} +_0230E748: + ldr r0, [r6, #0x9c] + bl ArrayLength_Gsi + cmp r0, #0 + beq _0230E788 + mov ip, #1 + mov r0, r6 + mov r2, r5 + mov r3, r4 + mov r1, #0 + str ip, [sp] + bl Gti2ReceiveFilterCallback + cmp r0, #0 + movne r0, #1 + add sp, sp, #4 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, r6, pc} +_0230E788: + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #1 + bl Gti2ReceivedCallback + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, pc} +_0230E7AC: + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end Gti2HandleAppReliable + + arm_func_start Gti2HandleClientChallenge +Gti2HandleClientChallenge: ; 0x0230E7B8 + stmdb sp!, {r4, lr} + sub sp, sp, #0x40 + mov r4, r0 + ldr r3, [r4, #0xc] + cmp r3, #2 + beq _0230E7E8 + bl Gti2ConnectionCommunicationError + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x40 + moveq r0, #0 + ldmia sp!, {r4, pc} +_0230E7E8: + cmp r2, #0x20 + bge _0230E808 + bl Gti2ConnectionCommunicationError + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x40 + moveq r0, #0 + ldmia sp!, {r4, pc} +_0230E808: + add r0, sp, #0x20 + bl Gti2GetResponse + add r0, sp, #0 + bl Gti2GetChallenge + add r1, sp, #0 + add r0, r4, #0x68 + bl Gti2GetResponse + add r1, sp, #0x20 + add r2, sp, #0 + mov r0, r4 + bl Gti2SendServerChallenge + cmp r0, #0 + moveq r0, #0 + movne r0, #3 + strne r0, [r4, #0xc] + movne r0, #1 + add sp, sp, #0x40 + ldmia sp!, {r4, pc} + arm_func_end Gti2HandleClientChallenge + + arm_func_start Gti2HandleServerChallenge +Gti2HandleServerChallenge: ; 0x0230E850 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x20 + mov r5, r0 + ldr r3, [r5, #0xc] + mov r4, r1 + cmp r3, #0 + beq _0230E884 + bl Gti2ConnectionCommunicationError + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x20 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_0230E884: + cmp r2, #0x40 + bge _0230E8A4 + bl Gti2ConnectionCommunicationError + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x20 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_0230E8A4: + mov r0, r4 + add r1, r5, #0x68 + bl Gti2CheckResponse + cmp r0, #0 + bne _0230E8D4 + mov r0, r5 + bl Gti2ConnectionCommunicationError + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x20 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, pc} +_0230E8D4: + add r0, sp, #0 + add r1, r4, #0x20 + bl Gti2GetResponse + ldr r2, [r5, #0x38] + ldr r3, [r5, #0x3c] + add r1, sp, #0 + mov r0, r5 + bl Gti2SendClientResponse + cmp r0, #0 + addeq sp, sp, #0x20 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r5, #0x38] + cmp r0, #0 + beq _0230E91C + bl gsifree + mov r0, #0 + str r0, [r5, #0x38] +_0230E91C: + mov r0, #1 + str r0, [r5, #0xc] + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Gti2HandleServerChallenge + + arm_func_start Gti2HandleClientResponse +Gti2HandleClientResponse: ; 0x0230E92C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + mov r6, r0 + ldr r3, [r6, #0xc] + mov r5, r1 + mov r4, r2 + cmp r3, #3 + beq _0230E964 + bl Gti2ConnectionCommunicationError + cmp r0, #0 + movne r0, #1 + add sp, sp, #0xc + moveq r0, #0 + ldmia sp!, {r3, r4, r5, r6, pc} +_0230E964: + cmp r4, #0x20 + bge _0230E984 + bl Gti2ConnectionCommunicationError + cmp r0, #0 + movne r0, #1 + add sp, sp, #0xc + moveq r0, #0 + ldmia sp!, {r3, r4, r5, r6, pc} +_0230E984: + mov r0, r5 + add r1, r6, #0x68 + bl Gti2CheckResponse + cmp r0, #0 + bne _0230E9B4 + mov r0, r6 + bl Gti2ConnectionCommunicationError + cmp r0, #0 + movne r0, #1 + add sp, sp, #0xc + moveq r0, #0 + ldmia sp!, {r3, r4, r5, r6, pc} +_0230E9B4: + ldr r0, [r6, #8] + ldr r0, [r0, #0x20] + cmp r0, #0 + bne _0230E9F0 + mov r0, r6 + bl Gti2SendClosed + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, pc} + mov r0, r6 + bl Gti2ConnectionClosed + add sp, sp, #0xc + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, pc} +_0230E9F0: + mov r0, #4 + str r0, [r6, #0xc] + bl current_time_gsi + ldr r2, [r6, #0x8c] + add r1, r5, #0x20 + sub r0, r0, r2 + stmia sp, {r0, r1} + sub r0, r4, #0x20 + str r0, [sp, #8] + ldrh r3, [r6, #4] + ldr r0, [r6, #8] + ldr r2, [r6] + mov r1, r6 + bl Gti2ConnectAttemptCallback + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end Gti2HandleClientResponse + + arm_func_start Gti2HandleAccept +Gti2HandleAccept: ; 0x0230EA3C + stmdb sp!, {r3, lr} + ldr r1, [r0, #0xc] + cmp r1, #1 + beq _0230EA60 + bl Gti2ConnectionCommunicationError + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, pc} +_0230EA60: + mov r1, #0 + mov ip, #5 + mov r2, r1 + mov r3, r1 + str ip, [r0, #0xc] + bl Gti2ConnectedCallback + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, pc} + arm_func_end Gti2HandleAccept + + arm_func_start Gti2HandleReject +Gti2HandleReject: ; 0x0230EA88 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r3, [r6, #0xc] + mov r5, r1 + mov r4, r2 + cmp r3, #1 + beq _0230EAB8 + bl Gti2ConnectionCommunicationError + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_0230EAB8: + bl Gti2ConnectionClosed + mov r0, r6 + bl Gti2SendClosed + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r2, r5 + mov r3, r4 + mov r1, #2 + bl Gti2ConnectedCallback + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Gti2HandleReject + + arm_func_start Gti2HandleClose +Gti2HandleClose: ; 0x0230EAF4 + stmdb sp!, {r4, lr} + mov r4, r0 + bl Gti2SendClosed + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0xc] + mov r1, #2 + cmp r0, #6 + moveq r2, #0 + movne r2, #1 + mov r0, r4 + bl Gti2ConnectionError + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + ldmia sp!, {r4, pc} + arm_func_end Gti2HandleClose + + arm_func_start Gti2DeliverReliableMessage +Gti2DeliverReliableMessage: ; 0x0230EB38 + stmdb sp!, {r3, lr} + ldrh ip, [r0, #0x66] + cmp r1, #0 + add ip, ip, #1 + strh ip, [r0, #0x66] + bne _0230EB6C + mov r1, r2 + mov r2, r3 + bl Gti2HandleAppReliable + cmp r0, #0 + bne _0230EC30 + mov r0, #0 + ldmia sp!, {r3, pc} +_0230EB6C: + cmp r1, #1 + bne _0230EB90 + mov r1, r2 + mov r2, r3 + bl Gti2HandleClientChallenge + cmp r0, #0 + bne _0230EC30 + mov r0, #0 + ldmia sp!, {r3, pc} +_0230EB90: + cmp r1, #2 + bne _0230EBB4 + mov r1, r2 + mov r2, r3 + bl Gti2HandleServerChallenge + cmp r0, #0 + bne _0230EC30 + mov r0, #0 + ldmia sp!, {r3, pc} +_0230EBB4: + cmp r1, #3 + bne _0230EBD8 + mov r1, r2 + mov r2, r3 + bl Gti2HandleClientResponse + cmp r0, #0 + bne _0230EC30 + mov r0, #0 + ldmia sp!, {r3, pc} +_0230EBD8: + cmp r1, #4 + bne _0230EBF4 + bl Gti2HandleAccept + cmp r0, #0 + bne _0230EC30 + mov r0, #0 + ldmia sp!, {r3, pc} +_0230EBF4: + cmp r1, #5 + bne _0230EC18 + mov r1, r2 + mov r2, r3 + bl Gti2HandleReject + cmp r0, #0 + bne _0230EC30 + mov r0, #0 + ldmia sp!, {r3, pc} +_0230EC18: + cmp r1, #6 + bne _0230EC30 + bl Gti2HandleClose + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} +_0230EC30: + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end Gti2DeliverReliableMessage + + arm_func_start Gti2IncomingBufferMessageCompare +Gti2IncomingBufferMessageCompare: ; 0x0230EC38 + ldr ip, _0230EC48 ; =Gti2SnDiff + ldrh r0, [r0, #0xc] + ldrh r1, [r1, #0xc] + bx ip + .align 2, 0 +_0230EC48: .word Gti2SnDiff + arm_func_end Gti2IncomingBufferMessageCompare + + arm_func_start Gti2BufferIncomingMessage +Gti2BufferIncomingMessage: ; 0x0230EC4C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x10 + mov sb, r0 + ldr r0, [sb, #0x5c] + mov r8, r1 + mov r7, r2 + mov r6, r3 + ldr r5, [sp, #0x34] + bl ArrayLength_Gsi + mov r4, r0 + cmp r4, #0 + mov sl, #0 + ble _0230ECC8 +_0230EC80: + ldr r0, [sb, #0x5c] + mov r1, sl + bl ArrayNth_Gsi + ldrh r0, [r0, #0xc] + cmp r0, r7 + bne _0230ECAC + mov r0, #0 + str r0, [r5] + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0230ECAC: + mov r1, r7 + bl Gti2SnDiff + cmp r0, #0 + bgt _0230ECC8 + add sl, sl, #1 + cmp sl, r4 + blt _0230EC80 +_0230ECC8: + add r0, sb, #0x44 + bl Gti2GetBufferFreeSpace + ldr r2, [sp, #0x30] + cmp r0, r2 + movlt r0, #1 + addlt sp, sp, #0x10 + strlt r0, [r5] + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r0, [sb, #0x4c] + add r1, sp, #0 + str r2, [sp, #4] + str r8, [sp, #8] + strh r7, [sp, #0xc] + str r0, [sp] + ldr r0, [sb, #0x5c] + ldr r2, _0230EDFC ; =Gti2IncomingBufferMessageCompare + bl ArrayInsertSorted_Gsi + ldr r0, [sb, #0x5c] + bl ArrayLength_Gsi + add r1, r4, #1 + cmp r1, r0 + movne r0, #1 + addne sp, sp, #0x10 + strne r0, [r5] + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r2, [sp, #0x30] + mov r1, r6 + add r0, sb, #0x44 + bl Gti2BufferWriteData + cmp r4, #0 + bne _0230ED70 + sub r0, r7, #1 + mov r2, r0, lsl #0x10 + ldrh r1, [sb, #0x66] + mov r0, sb + mov r2, r2, lsr #0x10 + bl Gti2SendNack + cmp r0, #0 + bne _0230EDE8 + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0230ED70: + ldr r0, [sb, #0x5c] + mov r1, r4 + bl ArrayNth_Gsi + ldrh r0, [r0, #0xc] + cmp r0, r7 + bne _0230EDE8 + ldr r0, [sb, #0x5c] + sub r1, r4, #1 + bl ArrayNth_Gsi + mov r4, r0 + ldrh r1, [r4, #0xc] + mov r0, r7 + bl Gti2SnDiff + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + bls _0230EDE8 + ldrh r1, [r4, #0xc] + sub r0, r7, #1 + mov r2, r0, lsl #0x10 + add r0, r1, #1 + mov r1, r0, lsl #0x10 + mov r0, sb + mov r1, r1, lsr #0x10 + mov r2, r2, lsr #0x10 + bl Gti2SendNack + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0230EDE8: + mov r0, #0 + str r0, [r5] + mov r0, #1 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0230EDFC: .word Gti2IncomingBufferMessageCompare + arm_func_end Gti2BufferIncomingMessage + + arm_func_start Gti2RemoveHoldMessage +Gti2RemoveHoldMessage: ; 0x0230EE00 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + ldr r0, [sb, #0x5c] + ldmia r1, {r4, r5} + mov r1, r2 + mov r8, #0 + bl ArrayDeleteAt_Gsi + ldr r0, [sb, #0x5c] + bl ArrayLength_Gsi + mov r6, r0 + cmp r6, #0 + mov r7, r8 + ble _0230EE70 +_0230EE34: + ldr r0, [sb, #0x5c] + mov r1, r7 + bl ArrayNth_Gsi + ldr r1, [r0] + cmp r1, r4 + ble _0230EE64 + sub r1, r1, r5 + str r1, [r0] + ldr r0, [r0, #4] + add r0, r1, r0 + cmp r8, r0 + movle r8, r0 +_0230EE64: + add r7, r7, #1 + cmp r7, r6 + blt _0230EE34 +_0230EE70: + mov r1, r4 + mov r2, r5 + add r0, sb, #0x44 + bl Gti2BufferShorten + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end Gti2RemoveHoldMessage + + arm_func_start Gti2DeliverHoldMessages +Gti2DeliverHoldMessages: ; 0x0230EE84 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 +_0230EE8C: + ldr r0, [r6, #0x5c] + bl ArrayLength_Gsi + subs r5, r0, #1 + bmi _0230EEFC +_0230EE9C: + ldr r0, [r6, #0x5c] + mov r1, r5 + bl ArrayNth_Gsi + mov r4, r0 + ldrh r1, [r4, #0xc] + ldrh r0, [r6, #0x66] + cmp r1, r0 + bne _0230EEF4 + ldr ip, [r6, #0x44] + ldr r1, [r4, #8] + ldmia r4, {r2, r3} + mov r0, r6 + add r2, ip, r2 + bl Gti2DeliverReliableMessage + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r0, r6 + mov r1, r4 + mov r2, r5 + bl Gti2RemoveHoldMessage + b _0230EE8C +_0230EEF4: + subs r5, r5, #1 + bpl _0230EE9C +_0230EEFC: + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end Gti2DeliverHoldMessages + + arm_func_start Gti2SetPendingAck +Gti2SetPendingAck: ; 0x0230EF04 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x90] + cmp r0, #0 + ldmneia sp!, {r4, pc} + mov r0, #1 + str r0, [r4, #0x90] + bl current_time_gsi + str r0, [r4, #0x94] + ldmia sp!, {r4, pc} + arm_func_end Gti2SetPendingAck + + arm_func_start Gti2HandleReliableMessage +Gti2HandleReliableMessage: ; 0x0230EF2C + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0xc + mov sb, r0 + ldr r4, [sb, #8] + mov r6, r3 + ldr r3, [r4, #0x44] + mov r8, r1 + add r5, r3, #7 + mov r7, r2 + cmp r6, r5 + bge _0230EF70 + bl Gti2ConnectionCommunicationError + cmp r0, #0 + movne r0, #1 + add sp, sp, #0xc + moveq r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_0230EF70: + add r0, r7, r3 + mov r1, #3 + bl Gti2UShortFromBuffer + ldr r1, [sb, #8] + mov r4, r0 + ldr r0, [r1, #0x44] + mov r1, #5 + add r0, r7, r0 + bl Gti2UShortFromBuffer + ldr r2, [sb, #8] + mov r1, r0 + ldr r0, [r2, #0x40] + cmp r0, #2 + cmpeq r8, #0 + addne r7, r7, r5 + subne r6, r6, r5 + bne _0230EFEC + ldr r0, [r2, #0x44] + ldrb r2, [r7] + add r0, r0, #5 + strb r2, [r7, r0] + ldr r0, [sb, #8] + ldrb r2, [r7, #1] + ldr r0, [r0, #0x44] + add r0, r0, #6 + strb r2, [r7, r0] + ldr r0, [sb, #8] + ldr r0, [r0, #0x44] + sub r0, r5, r0 + add r7, r7, r0 + sub r6, r6, r0 +_0230EFEC: + mov r0, sb + bl Gti2HandleEsn + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldrh r1, [sb, #0x66] + cmp r4, r1 + bne _0230F058 + mov r0, sb + bl Gti2SetPendingAck + mov r0, sb + mov r1, r8 + mov r2, r7 + mov r3, r6 + bl Gti2DeliverReliableMessage + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + mov r0, sb + bl Gti2DeliverHoldMessages + cmp r0, #0 + movne r0, #1 + add sp, sp, #0xc + moveq r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_0230F058: + mov r0, r4 + bl Gti2SnDiff + cmp r0, #0 + bge _0230F07C + mov r0, sb + bl Gti2SetPendingAck + add sp, sp, #0xc + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_0230F07C: + add r5, sp, #8 + str r6, [sp] + mov r0, sb + mov r1, r8 + mov r2, r4 + mov r3, r7 + str r5, [sp, #4] + bl Gti2BufferIncomingMessage + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r0, [sp, #8] + cmp r0, #0 + beq _0230F0D0 + mov r0, sb + bl Gti2ConnectionMemoryError + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} +_0230F0D0: + mov r0, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + arm_func_end Gti2HandleReliableMessage + + arm_func_start Gti2HandleAck +Gti2HandleAck: ; 0x0230F0DC + stmdb sp!, {r4, lr} + mov r4, r0 + cmp r2, #2 + beq _0230F100 + bl Gti2ConnectionCommunicationError + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, pc} +_0230F100: + mov r0, r1 + mov r1, #0 + bl Gti2UShortFromBuffer + mov r1, r0 + mov r0, r4 + bl Gti2HandleEsn + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r4, pc} + arm_func_end Gti2HandleAck + + arm_func_start Gti2HandleNack +Gti2HandleNack: ; 0x0230F128 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r7, r1 + mov r4, r0 + mov r0, r7 + mov r1, #0 + mov r5, r2 + bl Gti2UShortFromBuffer + mov r6, r0 + cmp r5, #2 + moveq r7, r6 + beq _0230F188 + cmp r5, #4 + bne _0230F170 + mov r0, r7 + mov r1, #2 + bl Gti2UShortFromBuffer + mov r7, r0 + b _0230F188 +_0230F170: + mov r0, r4 + bl Gti2ConnectionCommunicationError + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0230F188: + ldr r0, [r4, #0x60] + bl ArrayLength_Gsi + mov r8, r0 + cmp r8, #0 + mov sb, #0 + ble _0230F1FC +_0230F1A0: + ldr r0, [r4, #0x60] + mov r1, sb + bl ArrayNth_Gsi + mov r5, r0 + ldrh r0, [r5, #8] + mov r1, r6 + bl Gti2SnDiff + cmp r0, #0 + blt _0230F1F0 + ldrh r0, [r5, #8] + mov r1, r7 + bl Gti2SnDiff + cmp r0, #0 + bgt _0230F1F0 + mov r0, r4 + mov r1, r5 + bl Gti2ResendMessage + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0230F1F0: + add sb, sb, #1 + cmp sb, r8 + blt _0230F1A0 +_0230F1FC: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end Gti2HandleNack + + arm_func_start Gti2HandlePing +Gti2HandlePing: ; 0x0230F204 + ldr ip, _0230F20C ; =Gti2SendPong + bx ip + .align 2, 0 +_0230F20C: .word Gti2SendPong + arm_func_end Gti2HandlePing + + arm_func_start Gti2HandlePong +Gti2HandlePong: ; 0x0230F210 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + ldr r0, [r4, #0x34] + mov r5, r1 + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r2, #8 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + ldr r1, _0230F2A0 ; =ov00_0231BEF8 + mov r0, r5 + mov r2, #4 + bl memcmp + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + ldrb r1, [r5, #4] + ldrb r0, [r5, #5] + add r2, sp, #0 + strb r1, [r2] + strb r0, [r2, #1] + ldrb r1, [r5, #6] + ldrb r0, [r5, #7] + strb r1, [r2, #2] + strb r0, [r2, #3] + bl current_time_gsi + mov r2, r0 + ldr r1, [sp] + mov r0, r4 + sub r1, r2, r1 + bl Gti2PingCallback + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230F2A0: .word ov00_0231BEF8 + arm_func_end Gti2HandlePong + + arm_func_start Gti2HandleClosed +Gti2HandleClosed: ; 0x0230F2A4 + stmdb sp!, {r3, lr} + ldr r1, [r0, #0xc] + cmp r1, #7 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + cmp r1, #6 + moveq r2, #0 + movne r2, #1 + mov r1, #2 + bl Gti2ConnectionError + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + ldmia sp!, {r3, pc} + arm_func_end Gti2HandleClosed + + arm_func_start Gti2HandleUnreliableMessage +Gti2HandleUnreliableMessage: ; 0x0230F2DC + stmdb sp!, {r3, lr} + ldr ip, [r0, #8] + cmp r1, #0x64 + ldr ip, [ip, #0x44] + add lr, ip, #3 + sub ip, r3, lr + bne _0230F314 + add r1, r2, lr + mov r2, ip + bl Gti2HandleAck + cmp r0, #0 + bne _0230F398 + mov r0, #0 + ldmia sp!, {r3, pc} +_0230F314: + cmp r1, #0x65 + bne _0230F338 + add r1, r2, lr + mov r2, ip + bl Gti2HandleNack + cmp r0, #0 + bne _0230F398 + mov r0, #0 + ldmia sp!, {r3, pc} +_0230F338: + cmp r1, #0x66 + bne _0230F35C + mov r1, r2 + mov r2, r3 + bl Gti2HandlePing + cmp r0, #0 + bne _0230F398 + mov r0, #0 + ldmia sp!, {r3, pc} +_0230F35C: + cmp r1, #0x67 + bne _0230F380 + add r1, r2, lr + mov r2, ip + bl Gti2HandlePong + cmp r0, #0 + bne _0230F398 + mov r0, #0 + ldmia sp!, {r3, pc} +_0230F380: + cmp r1, #0x68 + bne _0230F398 + bl Gti2HandleClosed + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} +_0230F398: + mov r0, #1 + ldmia sp!, {r3, pc} + arm_func_end Gti2HandleUnreliableMessage + + arm_func_start Gti2HandleMessage +Gti2HandleMessage: ; 0x0230F3A0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + mov sl, r0 + ldr r6, [sp, #0x40] + mov r8, r2 + ldr r4, [sl, #0x44] + mov sb, r1 + mov r7, r3 + mov r1, r7 + mov r2, r6 + sub fp, r8, r4 + add r4, sb, r4 + bl Gti2SocketFindConnection + str r0, [sp, #0x14] + ldr r0, [sl, #0x2c] + cmp r0, #0 + beq _0230F418 + mov r0, #0 + stmia sp, {r0, sb} + str r8, [sp, #8] + str r0, [sp, #0xc] + ldr r1, [sp, #0x14] + mov r0, sl + mov r2, r7 + mov r3, r6 + bl Gti2DumpCallback + cmp r0, #0 + addeq sp, sp, #0x18 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230F418: + cmp fp, #2 + ble _0230F43C + ldr r1, _0230F698 ; =ov00_0231BF00 + mov r0, r4 + mov r2, #2 + bl memcmp + cmp r0, #0 + moveq r5, #1 + beq _0230F440 +_0230F43C: + mov r5, #0 +_0230F440: + ldr r0, [sp, #0x14] + cmp r0, #0 + bne _0230F544 + add ip, sp, #0x10 + mov r0, sl + mov r1, r7 + mov r2, r6 + mov r3, sb + stmia sp, {r8, ip} + bl Gti2UnrecognizedMessageCallback + cmp r0, #0 + addeq sp, sp, #0x18 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sp, #0x10] + cmp r0, #0 + addne sp, sp, #0x18 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r5, #0 + beq _0230F4A0 + ldrb r0, [r4, #2] + cmp r0, #1 + beq _0230F4E0 +_0230F4A0: + cmp r5, #0 + beq _0230F4B4 + ldrb r0, [r4, #2] + cmp r0, #0x68 + beq _0230F4D4 +_0230F4B4: + mov r0, sl + mov r1, r7 + mov r2, r6 + bl Gti2SendClosedOnSocket + cmp r0, #0 + addeq sp, sp, #0x18 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230F4D4: + add sp, sp, #0x18 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230F4E0: + ldr r0, [sl, #0x20] + cmp r0, #0 + addeq sp, sp, #0x18 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r1, sp, #0x14 + mov r0, sl + mov r2, r7 + mov r3, r6 + bl Gti2NewIncomingConnection + cmp r0, #0 + beq _0230F544 + cmp r0, #5 + beq _0230F538 + mov r0, sl + mov r1, r7 + mov r2, r6 + bl Gti2SendClosedOnSocket + cmp r0, #0 + addeq sp, sp, #0x18 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230F538: + add sp, sp, #0x18 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230F544: + ldr r0, [sp, #0x14] + ldr r1, [r0, #0xc] + cmp r1, #7 + bne _0230F588 + cmp r5, #0 + beq _0230F568 + ldrb r1, [r4, #2] + cmp r1, #0x68 + beq _0230F57C +_0230F568: + bl Gti2SendClosed + cmp r0, #0 + addeq sp, sp, #0x18 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230F57C: + add sp, sp, #0x18 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230F588: + cmp r5, #0 + beq _0230F5D0 + cmp fp, #4 + blt _0230F5D0 + ldr r1, _0230F698 ; =ov00_0231BF00 + add r0, r4, #2 + mov r2, #2 + bl memcmp + cmp r0, #0 + bne _0230F5D0 + ldrb r0, [sb, #1] + add r4, r4, #2 + sub r8, r8, #2 + strb r0, [sb, #3] + ldrb r0, [sb] + mov r5, #0 + strb r0, [sb, #2] + add sb, sb, #2 +_0230F5D0: + cmp r5, #0 + bne _0230F644 + ldr r0, [sp, #0x14] + ldr r1, [r0, #0xc] + cmp r1, #5 + bge _0230F61C + add r4, sp, #0x10 + str r8, [sp] + mov r0, sl + mov r1, r7 + mov r2, r6 + mov r3, sb + str r4, [sp, #4] + bl Gti2UnrecognizedMessageCallback + cmp r0, #0 + bne _0230F638 + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230F61C: + mov r1, sb + mov r2, r8 + bl Gti2HandleAppUnreliable + cmp r0, #0 + addeq sp, sp, #0x18 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230F638: + add sp, sp, #0x18 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230F644: + ldrb r1, [r4, #2] + cmp r1, #8 + bge _0230F674 + ldr r0, [sp, #0x14] + mov r2, sb + mov r3, r8 + bl Gti2HandleReliableMessage + cmp r0, #0 + movne r0, #1 + add sp, sp, #0x18 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230F674: + ldr r0, [sp, #0x14] + mov r2, sb + mov r3, r8 + bl Gti2HandleUnreliableMessage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230F698: .word ov00_0231BF00 + arm_func_end Gti2HandleMessage + + arm_func_start Gti2HandleConnectionReset +Gti2HandleConnectionReset: ; 0x0230F69C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + sub sp, sp, #0x10 + mov r7, r0 + mov r6, r1 + mov r5, r2 + bl Gti2SocketFindConnection + ldr r1, [r7, #0x2c] + mov r4, r0 + cmp r1, #0 + beq _0230F700 + mov r0, #1 + str r0, [sp] + mov ip, #0 + str ip, [sp, #4] + str ip, [sp, #8] + mov r0, r7 + mov r1, r4 + mov r2, r6 + mov r3, r5 + str ip, [sp, #0xc] + bl Gti2DumpCallback + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_0230F700: + cmp r4, #0 + addeq sp, sp, #0x10 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r4, #0xc] + cmp r0, #0 + bne _0230F770 + ldr r0, [r4, #0x20] + cmp r0, #0 + beq _0230F740 + bl current_time_gsi + ldr r2, [r4, #0x1c] + ldr r1, [r4, #0x20] + sub r0, r0, r2 + cmp r0, r1 + bhs _0230F74C +_0230F740: + add sp, sp, #0x10 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0230F74C: + mov r0, r4 + mov r1, #6 + mov r2, #1 + bl Gti2ConnectionError + cmp r0, #0 + bne _0230F790 + add sp, sp, #0x10 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0230F770: + mov r0, r4 + mov r1, #2 + mov r2, #1 + bl Gti2ConnectionError + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} +_0230F790: + mov r0, #1 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end Gti2HandleConnectionReset + + arm_func_start Gti2HandleHostUnreachable +Gti2HandleHostUnreachable: ; 0x0230F79C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x10 + mov r8, r0 + mov r7, r1 + mov r6, r2 + mov r5, r3 + bl Gti2SocketFindConnection + ldr r1, [r8, #0x2c] + mov r4, r0 + cmp r1, #0 + beq _0230F804 + mov r0, #1 + str r0, [sp] + mov r0, #0 + str r0, [sp, #4] + str r0, [sp, #8] + mov r0, r8 + mov r1, r4 + mov r2, r7 + mov r3, r6 + str r5, [sp, #0xc] + bl Gti2DumpCallback + cmp r0, #0 + addeq sp, sp, #0x10 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} +_0230F804: + cmp r4, #0 + addeq sp, sp, #0x10 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + mov r0, r4 + mov r1, #6 + mov r2, #1 + bl Gti2ConnectionError + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end Gti2HandleHostUnreachable + + arm_func_start Gti2ReceiveMessages +Gti2ReceiveMessages: ; 0x0230F838 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x5f0 + mov sl, r0 + ldr r0, [sl] + bl CanReceiveOnSocket + cmp r0, #0 + beq _0230F9AC + mvn r6, #0xe + sub r5, r6, #8 + sub r4, r6, #0x14 + add r7, r6, #0xe + add r8, sp, #0x14 + mov sb, #8 + add fp, sp, #0xc +_0230F870: + str sb, [sp, #8] + str fp, [sp] + add r0, sp, #8 + str r0, [sp, #4] + ldr r0, [sl] + ldr r2, _0230F9B8 ; =0x000005DC + mov r1, r8 + mov r3, #0 + bl SocketRecvFrom + mov r2, r0 + cmp r2, r7 + bne _0230F958 + ldr r0, [sl] + bl GoaGetLastError + cmp r0, r6 + bne _0230F8F0 + ldrh ip, [sp, #0xe] + ldr r1, [sp, #0x10] + mov r0, sl + mov r2, ip, asr #8 + and r3, r2, #0xff + mov r2, ip, lsl #8 + and r2, r2, #0xff00 + orr r2, r3, r2 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + bl Gti2HandleConnectionReset + cmp r0, #0 + bne _0230F99C + add sp, sp, #0x5f0 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230F8F0: + cmp r0, r5 + bne _0230F93C + ldrh ip, [sp, #0xe] + ldr r1, [sp, #0x10] + mov r0, sl + mov r2, ip, asr #8 + and r3, r2, #0xff + mov r2, ip, lsl #8 + and r2, r2, #0xff00 + orr r2, r3, r2 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + mov r3, #0 + bl Gti2HandleHostUnreachable + cmp r0, #0 + bne _0230F99C + add sp, sp, #0x5f0 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230F93C: + cmp r0, r4 + beq _0230F99C + mov r0, sl + bl Gti2SocketError + add sp, sp, #0x5f0 + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230F958: + ldrh ip, [sp, #0xe] + mov r0, sl + mov r1, r8 + mov r3, ip, asr #8 + mov ip, ip, lsl #8 + and r3, r3, #0xff + and ip, ip, #0xff00 + orr r3, r3, ip + mov r3, r3, lsl #0x10 + mov r3, r3, lsr #0x10 + str r3, [sp] + ldr r3, [sp, #0x10] + bl Gti2HandleMessage + cmp r0, #0 + addeq sp, sp, #0x5f0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_0230F99C: + ldr r0, [sl] + bl CanReceiveOnSocket + cmp r0, #0 + bne _0230F870 +_0230F9AC: + mov r0, #1 + add sp, sp, #0x5f0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230F9B8: .word 0x000005DC + arm_func_end Gti2ReceiveMessages + + arm_func_start Gti2StoreOutgoingReliableMessageInfo +Gti2StoreOutgoingReliableMessageInfo: ; 0x0230F9BC + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + add r4, sp, #0 + mov r3, #0 + mov r5, r0 + str r3, [r4] + str r3, [r4, #4] + str r3, [r4, #8] + str r3, [r4, #0xc] + ldr r0, [r5, #0x58] + str r0, [sp] + str r2, [sp, #4] + strh r1, [sp, #8] + bl current_time_gsi + str r0, [sp, #0xc] + ldr r0, [r5, #0x60] + bl ArrayLength_Gsi + mov r4, r0 + ldr r0, [r5, #0x60] + add r1, sp, #0 + bl ArrayAppend_Gsi + ldr r0, [r5, #0x60] + bl ArrayLength_Gsi + add r1, r4, #1 + cmp r1, r0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Gti2StoreOutgoingReliableMessageInfo + + arm_func_start Gti2BeginReliableMessage +Gti2BeginReliableMessage: ; 0x0230FA30 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r0 + ldr r0, [r4, #8] + mov r6, r2 + ldr r2, [r0, #0x44] + add r0, r4, #0x50 + sub r2, r6, r2 + mov r7, r1 + mov r5, r3 + strh r2, [sp] + bl Gti2GetBufferFreeSpace + cmp r0, r6 + bge _0230FA80 + mov r0, r4 + bl Gti2ConnectionMemoryError + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + strne r0, [r5] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0230FA80: + ldrh r1, [r4, #0x64] + mov r0, r4 + mov r2, r6 + bl Gti2StoreOutgoingReliableMessageInfo + cmp r0, #0 + bne _0230FAB4 + mov r0, r4 + bl Gti2ConnectionMemoryError + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + strne r0, [r5] + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0230FAB4: + ldr r1, [r4, #8] + ldr r0, [r1, #0x40] + cmp r0, #2 + bne _0230FAD4 + ldr r2, [r1, #0x44] + add r1, sp, #0 + add r0, r4, #0x50 + bl Gti2BufferWriteData +_0230FAD4: + ldr r1, _0230FB20 ; =ov00_0231BF00 + add r0, r4, #0x50 + mov r2, #2 + bl Gti2BufferWriteData + add r0, r4, #0x50 + and r1, r7, #0xff + bl Gti2BufferWriteByte + ldrh r1, [r4, #0x64] + add r0, r4, #0x50 + add r2, r1, #1 + strh r2, [r4, #0x64] + bl Gti2BufferWriteUShort + ldrh r1, [r4, #0x66] + add r0, r4, #0x50 + bl Gti2BufferWriteUShort + mov r0, #0 + str r0, [r5] + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0230FB20: .word ov00_0231BF00 + arm_func_end Gti2BeginReliableMessage + + arm_func_start Gti2EndReliableMessage +Gti2EndReliableMessage: ; 0x0230FB24 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x60] + bl ArrayLength_Gsi + mov r1, r0 + ldr r0, [r4, #0x60] + sub r1, r1, #1 + bl ArrayNth_Gsi + ldmia r0, {r1, r2} + ldr r3, [r4, #0x50] + mov r0, r4 + add r1, r3, r1 + bl Gti2ConnectionSendData + cmp r0, #0 + mov r0, #0 + strne r0, [r4, #0x90] + movne r0, #1 + ldmia sp!, {r4, pc} + arm_func_end Gti2EndReliableMessage + + arm_func_start Gti2SendAppReliable +Gti2SendAppReliable: ; 0x0230FB6C + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r4, r2 + mov r5, r1 + add r3, sp, #0 + add r2, r4, #7 + mov r1, #0 + mov r6, r0 + bl Gti2BeginReliableMessage + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, pc} + ldr r0, [sp] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, pc} + mov r1, r5 + mov r2, r4 + add r0, r6, #0x50 + bl Gti2BufferWriteData + mov r0, r6 + bl Gti2EndReliableMessage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end Gti2SendAppReliable + + arm_func_start Gti2SendClientChallenge +Gti2SendClientChallenge: ; 0x0230FBE0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r2, [r5, #8] + mov r4, r1 + ldr r1, [r2, #0x44] + add r3, sp, #0 + add r2, r1, #0x27 + mov r1, #1 + bl Gti2BeginReliableMessage + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [sp] + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + mov r1, r4 + add r0, r5, #0x50 + mov r2, #0x20 + bl Gti2BufferWriteData + mov r0, r5 + bl Gti2EndReliableMessage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Gti2SendClientChallenge + + arm_func_start Gti2SendServerChallenge +Gti2SendServerChallenge: ; 0x0230FC48 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + ldr r3, [r6, #8] + mov r5, r1 + ldr r1, [r3, #0x44] + mov r4, r2 + add r2, r1, #0x47 + add r3, sp, #0 + mov r1, #2 + bl Gti2BeginReliableMessage + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, pc} + ldr r0, [sp] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, pc} + mov r1, r5 + add r0, r6, #0x50 + mov r2, #0x20 + bl Gti2BufferWriteData + mov r1, r4 + add r0, r6, #0x50 + mov r2, #0x20 + bl Gti2BufferWriteData + mov r0, r6 + bl Gti2EndReliableMessage + cmp r0, #0 + ldrne r1, [r6, #0x88] + moveq r0, #0 + movne r0, #1 + strne r1, [r6, #0x8c] + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end Gti2SendServerChallenge + + arm_func_start Gti2SendClientResponse +Gti2SendClientResponse: ; 0x0230FCDC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r0 + ldr ip, [r4, #8] + mov r5, r3 + ldr ip, [ip, #0x44] + add lr, r5, #0x27 + mov r7, r1 + mov r6, r2 + add r3, sp, #0 + add r2, lr, ip + mov r1, #3 + bl Gti2BeginReliableMessage + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [sp] + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + mov r1, r7 + add r0, r4, #0x50 + mov r2, #0x20 + bl Gti2BufferWriteData + mov r1, r6 + mov r2, r5 + add r0, r4, #0x50 + bl Gti2BufferWriteData + mov r0, r4 + bl Gti2EndReliableMessage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end Gti2SendClientResponse + + arm_func_start Gti2SendAccept +Gti2SendAccept: ; 0x0230FD60 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r0 + ldr r1, [r4, #8] + add r3, sp, #0 + ldr r2, [r1, #0x44] + mov r1, #4 + add r2, r2, #7 + bl Gti2BeginReliableMessage + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, pc} + ldr r0, [sp] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {r3, r4, pc} + mov r0, r4 + bl Gti2EndReliableMessage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end Gti2SendAccept + + arm_func_start Gti2SendReject +Gti2SendReject: ; 0x0230FDC4 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + ldr r3, [r6, #8] + mov r4, r2 + ldr r2, [r3, #0x44] + add ip, r4, #7 + mov r5, r1 + add r3, sp, #0 + add r2, ip, r2 + mov r1, #5 + bl Gti2BeginReliableMessage + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, pc} + ldr r0, [sp] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, pc} + mov r1, r5 + mov r2, r4 + add r0, r6, #0x50 + bl Gti2BufferWriteData + mov r0, r6 + bl Gti2EndReliableMessage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end Gti2SendReject + + arm_func_start Gti2SendClose +Gti2SendClose: ; 0x0230FE44 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r0 + ldr r1, [r4, #8] + add r3, sp, #0 + ldr r2, [r1, #0x44] + mov r1, #6 + add r2, r2, #7 + bl Gti2BeginReliableMessage + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, pc} + ldr r0, [sp] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {r3, r4, pc} + mov r0, r4 + bl Gti2EndReliableMessage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end Gti2SendClose + + arm_func_start Gti2SendKeepAlive +Gti2SendKeepAlive: ; 0x0230FEA8 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r0 + ldr r1, [r4, #8] + add r3, sp, #0 + ldr r2, [r1, #0x44] + mov r1, #7 + add r2, r2, #7 + bl Gti2BeginReliableMessage + cmp r0, #0 + addeq sp, sp, #4 + moveq r0, #0 + ldmeqia sp!, {r3, r4, pc} + ldr r0, [sp] + cmp r0, #0 + addne sp, sp, #4 + movne r0, #1 + ldmneia sp!, {r3, r4, pc} + mov r0, r4 + bl Gti2EndReliableMessage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end Gti2SendKeepAlive + + arm_func_start Gti2SendAppUnreliable +Gti2SendAppUnreliable: ; 0x0230FF0C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r7, r2 + mov sb, r0 + mov r8, r1 + cmp r7, #2 + blt _0230FF44 + ldr r0, [sb, #8] + ldr r1, _02310000 ; =ov00_0231BF00 + ldr r0, [r0, #0x44] + mov r2, #2 + add r0, r8, r0 + bl memcmp + cmp r0, #0 + beq _0230FF64 +_0230FF44: + mov r0, sb + mov r1, r8 + mov r2, r7 + bl Gti2ConnectionSendData + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_0230FF64: + add r6, r7, #2 + add r0, sb, #0x50 + bl Gti2GetBufferFreeSpace + cmp r0, r6 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r0, [sb, #8] + ldr r5, [sb, #0x50] + ldr r0, [r0, #0x40] + ldr r4, [sb, #0x58] + cmp r0, #2 + bne _0230FFA4 + mov r1, r8 + add r0, sb, #0x50 + mov r2, #2 + bl Gti2BufferWriteData +_0230FFA4: + ldr r1, _02310000 ; =ov00_0231BF00 + add r0, sb, #0x50 + mov r2, #2 + bl Gti2BufferWriteData + ldr r1, [sb, #8] + add r0, sb, #0x50 + ldr r2, [r1, #0x44] + add r1, r8, r2 + sub r2, r7, r2 + bl Gti2BufferWriteData + mov r0, sb + mov r2, r6 + add r1, r5, r4 + bl Gti2ConnectionSendData + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r2, r6 + add r0, sb, #0x50 + mvn r1, #0 + bl Gti2BufferShorten + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02310000: .word ov00_0231BF00 + arm_func_end Gti2SendAppUnreliable + + arm_func_start Gti2SendAck +Gti2SendAck: ; 0x02310004 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r5, r0 + ldr r0, [r5, #8] + mov r4, #0 + ldr r0, [r0, #0x40] + cmp r0, #2 + bne _02310048 + mov r1, #5 + add r0, sp, #0 + strh r1, [sp] + ldrb r1, [r0] + add r2, sp, #2 + ldrb r0, [r0, #1] + strb r1, [r2] + add r4, r4, #2 + strb r0, [r2, #1] +_02310048: + ldr r1, _023100A4 ; =ov00_0231BF00 + add r0, sp, #2 + ldrb r2, [r1] + ldrb r1, [r1, #1] + add r3, r0, r4 + strb r2, [r0, r4] + strb r1, [r3, #1] + add r1, r4, #2 + mov r2, #0x64 + strb r2, [r0, r1] + ldrh r2, [r5, #0x66] + add r1, r4, #3 + bl Gti2UShortToBuffer + add r1, sp, #2 + mov r0, r5 + add r2, r4, #5 + bl Gti2ConnectionSendData + cmp r0, #0 + mov r0, #0 + strne r0, [r5, #0x90] + movne r0, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_023100A4: .word ov00_0231BF00 + arm_func_end Gti2SendAck + + arm_func_start Gti2SendNack +Gti2SendNack: ; 0x023100A8 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xc + mov r7, r0 + ldr r0, [r7, #8] + mov r6, r1 + ldr r0, [r0, #0x40] + mov r5, r2 + cmp r0, #2 + mov r4, #0 + bne _023100F4 + mov r1, #7 + add r0, sp, #0 + strh r1, [sp] + ldrb r1, [r0] + add r2, sp, #2 + ldrb r0, [r0, #1] + strb r1, [r2] + add r4, r4, #2 + strb r0, [r2, #1] +_023100F4: + ldr r1, _0231016C ; =ov00_0231BF00 + add r0, sp, #2 + ldrb r2, [r1] + ldrb r1, [r1, #1] + add r3, r0, r4 + strb r2, [r0, r4] + strb r1, [r3, #1] + mov r2, r6 + add r3, r4, #2 + mov ip, #0x65 + add r1, r4, #3 + strb ip, [r0, r3] + bl Gti2UShortToBuffer + cmp r6, r5 + add r4, r4, #5 + beq _02310148 + add r0, sp, #2 + mov r1, r4 + mov r2, r5 + bl Gti2UShortToBuffer + add r4, r4, #2 +_02310148: + add r1, sp, #2 + mov r0, r7 + mov r2, r4 + bl Gti2ConnectionSendData + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_0231016C: .word ov00_0231BF00 + arm_func_end Gti2SendNack + + arm_func_start Gti2SendPong +Gti2SendPong: ; 0x02310170 + ldr ip, _02310180 ; =Gti2ConnectionSendData + mov r3, #0x67 + strb r3, [r1, #2] + bx ip + .align 2, 0 +_02310180: .word Gti2ConnectionSendData + arm_func_end Gti2SendPong + + arm_func_start Gti2SendClosed +Gti2SendClosed: ; 0x02310184 + ldr ip, _0231019C ; =Gti2SendClosedOnSocket + mov r1, r0 + ldrh r2, [r1, #4] + ldr r0, [r1, #8] + ldr r1, [r1] + bx ip + .align 2, 0 +_0231019C: .word Gti2SendClosedOnSocket + arm_func_end Gti2SendClosed + + arm_func_start Gti2SendClosedOnSocket +Gti2SendClosedOnSocket: ; 0x023101A0 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + ldr r3, [r0, #0x40] + mov ip, #0 + cmp r3, #2 + bne _023101DC + mov r4, #3 + add r3, sp, #4 + strh r4, [sp, #4] + ldrb r4, [r3] + add r5, sp, #6 + ldrb r3, [r3, #1] + strb r4, [r5] + add ip, ip, #2 + strb r3, [r5, #1] +_023101DC: + ldr r4, _02310224 ; =ov00_0231BF00 + add r3, sp, #6 + ldrb lr, [r4] + ldrb r4, [r4, #1] + add r5, r3, ip + strb lr, [r3, ip] + strb r4, [r5, #1] + add lr, ip, #2 + mov r4, #0x68 + strb r4, [r3, lr] + add ip, ip, #3 + str ip, [sp] + bl Gti2SocketSend + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02310224: .word ov00_0231BF00 + arm_func_end Gti2SendClosedOnSocket + + arm_func_start Gti2ResendMessage +Gti2ResendMessage: ; 0x02310228 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, [r5, #8] + mov r4, r1 + ldr r1, [r4] + ldr r0, [r0, #0x44] + ldrh r2, [r5, #0x66] + add r1, r1, r0 + ldr r0, [r5, #0x50] + add r1, r1, #5 + bl Gti2UShortToBuffer + ldr r3, [r5, #0x50] + ldmia r4, {r1, r2} + mov r0, r5 + add r1, r3, r1 + bl Gti2ConnectionSendData + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, [r5, #0x88] + str r0, [r4, #0xc] + ldr r0, [r5, #8] + ldr r1, [r4] + ldr r0, [r0, #0x44] + ldr r2, [r5, #0x50] + add r0, r1, r0 + add r0, r0, #2 + ldrb r0, [r2, r0] + cmp r0, #2 + ldreq r0, [r5, #0x88] + streq r0, [r5, #0x8c] + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Gti2ResendMessage + + arm_func_start Gti2Send +Gti2Send: ; 0x023102AC + stmdb sp!, {r3, lr} + cmp r3, #0 + beq _023102C0 + bl Gti2SendAppReliable + ldmia sp!, {r3, pc} +_023102C0: + bl Gti2SendAppUnreliable + ldmia sp!, {r3, pc} + arm_func_end Gti2Send + + arm_func_start Gti2ConnectionHash +Gti2ConnectionHash: ; 0x023102C8 + stmdb sp!, {r3, lr} + ldr r2, [r0] + ldrh r0, [r2, #4] + ldr r2, [r2] + mul r0, r2, r0 + bl _u32_div_f + mov r0, r1 + ldmia sp!, {r3, pc} + arm_func_end Gti2ConnectionHash + + arm_func_start Gti2ConnectionCompare +Gti2ConnectionCompare: ; 0x023102E8 + ldr r3, [r0] + ldr r2, [r1] + ldr r0, [r3] + ldr r1, [r2] + cmp r0, r1 + subne r0, r0, r1 + bxne lr + ldrh r1, [r3, #4] + ldrh r0, [r2, #4] + sub r0, r1, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bx lr + arm_func_end Gti2ConnectionCompare + + arm_func_start Gti2ConnectionFree +Gti2ConnectionFree: ; 0x0231031C + ldr ip, _02310328 ; =Gti2ConnectionCleanup + ldr r0, [r0] + bx ip + .align 2, 0 +_02310328: .word Gti2ConnectionCleanup + arm_func_end Gti2ConnectionFree + + arm_func_start Gti2SocketFindConnection +Gti2SocketFindConnection: ; 0x0231032C + stmdb sp!, {lr} + sub sp, sp, #0xa4 + add r3, sp, #4 + str r1, [sp, #4] + strh r2, [sp, #8] + str r3, [sp] + ldr r0, [r0, #0xc] + add r1, sp, #0 + bl TableLookup_Gsi + cmp r0, #0 + ldrne r0, [r0] + moveq r0, #0 + add sp, sp, #0xa4 + ldmia sp!, {pc} + arm_func_end Gti2SocketFindConnection + + arm_func_start Gti2CreateSocket +Gti2CreateSocket: ; 0x02310364 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x1c + mov r4, r1 + mov r7, r3 + mov r6, r0 + mov r8, r2 + ldr r5, [sp, #0x3c] + bl SocketStartUp_Ghi + cmp r7, #0 + moveq r7, #0x10000 + cmp r8, #0 + add r1, sp, #0x10 + add r2, sp, #8 + mov r0, r4 + moveq r8, #0x10000 + bl Gt2StringToAddress + cmp r0, #0 + addeq sp, sp, #0x1c + moveq r0, #4 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + mov r0, #0x4c + bl gsimalloc + movs r4, r0 + addeq sp, sp, #0x1c + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + mov r1, #0 + mov r2, #0x4c + bl memset + mvn r0, #0 + str r0, [r4] + str r7, [r4, #0x3c] + ldr r1, [sp, #0x38] + str r8, [r4, #0x38] + str r1, [r4, #0x24] + ldr r0, _0231059C ; =Gti2ConnectionCompare + ldr r3, _023105A0 ; =Gti2ConnectionHash + str r0, [sp] + mov ip, #0 + mov r0, #4 + mov r1, #0x20 + mov r2, #2 + str ip, [sp, #4] + bl TableNew2_Gsi + str r0, [r4, #0xc] + cmp r0, #0 + bne _02310434 + mov r0, r4 + bl gsifree + add sp, sp, #0x1c + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02310434: + mov r0, #4 + ldr r2, _023105A4 ; =Gti2ConnectionFree + mov r1, r0 + bl ArrayNew_Gsi + str r0, [r4, #0x10] + cmp r0, #0 + bne _0231046C + ldr r0, [r4, #0xc] + bl TableFree_Gsi + mov r0, r4 + bl gsifree + add sp, sp, #0x1c + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_0231046C: + mov r0, #2 + mov r1, r0 + mov r2, #0 + bl SocketCreate + str r0, [r4] + cmp r5, #3 + str r5, [r4, #0x40] + moveq r0, #0 + streq r0, [r4, #0x44] + strne r5, [r4, #0x44] + ldr r1, [r4] + mvn r0, #0 + cmp r1, r0 + bne _023104C8 + ldr r0, [r4, #0xc] + bl TableFree_Gsi + ldr r0, [r4, #0x10] + bl ArrayFree_Gsi + mov r0, r4 + bl gsifree + add sp, sp, #0x1c + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_023104C8: + ldrh r0, [sp, #8] + add r1, sp, #0x14 + mov ip, #0 + mov r2, r0, asr #8 + mov r0, r0, lsl #8 + and r2, r2, #0xff + and r0, r0, #0xff00 + orr r0, r2, r0 + str ip, [r1] + mov r2, #2 + ldr r3, [sp, #0x10] + str ip, [r1, #4] + strb r2, [sp, #0x15] + str r3, [sp, #0x18] + strh r0, [sp, #0x16] + cmp r5, #3 + beq _02310550 + ldr r0, [r4] + mov r2, #8 + bl SocketBind + mvn r1, #0 + cmp r0, r1 + bne _02310550 + ldr r0, [r4] + bl SocketClose + ldr r0, [r4, #0xc] + bl TableFree_Gsi + ldr r0, [r4, #0x10] + bl ArrayFree_Gsi + mov r0, r4 + bl gsifree + add sp, sp, #0x1c + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02310550: + mov r0, #8 + str r0, [sp, #0xc] + ldr r0, [r4] + add r1, sp, #0x14 + add r2, sp, #0xc + bl getsockname_gsi + ldr r1, [sp, #0x18] + mov r0, #0 + str r1, [r4, #4] + ldrh r1, [sp, #0x16] + mov r2, r1, asr #8 + mov r1, r1, lsl #8 + and r2, r2, #0xff + and r1, r1, #0xff00 + orr r1, r2, r1 + strh r1, [r4, #8] + str r4, [r6] + add sp, sp, #0x1c + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_0231059C: .word Gti2ConnectionCompare +_023105A0: .word Gti2ConnectionHash +_023105A4: .word Gti2ConnectionFree + arm_func_end Gti2CreateSocket + + arm_func_start Gti2CloseSocket +Gti2CloseSocket: ; 0x023105A8 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x1c] + cmp r0, #0 + movne r0, #1 + strne r0, [r4, #0x14] + ldmneia sp!, {r4, pc} + ldr r0, [r4] + bl SocketClose + ldr r0, [r4, #0xc] + bl TableFree_Gsi + ldr r0, [r4, #0x10] + bl ArrayFree_Gsi + mov r0, r4 + bl gsifree + bl SocketShutDown_Gsi + ldmia sp!, {r4, pc} + arm_func_end Gti2CloseSocket + + arm_func_start Gti2Listen +Gti2Listen: ; 0x023105EC + str r1, [r0, #0x20] + bx lr + arm_func_end Gti2Listen + + arm_func_start Gti2CreateConnectionObject +Gti2CreateConnectionObject: ; 0x023105F4 + ldr ip, _02310600 ; =gsimalloc + mov r0, #0xa0 + bx ip + .align 2, 0 +_02310600: .word gsimalloc + arm_func_end Gti2CreateConnectionObject + + arm_func_start Gti2NewSocketConnection +Gti2NewSocketConnection: ; 0x02310604 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r3 + mov r5, r2 + mov r3, #0 + mov r6, r1 + mov r1, r5 + mov r2, r4 + mov r7, r0 + str r3, [sp] + bl Gti2SocketFindConnection + cmp r0, #0 + movne r0, #5 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + bl Gti2CreateConnectionObject + str r0, [sp] + cmp r0, #0 + beq _02310794 + mov r1, #0 + mov r2, #0xa0 + bl memset + ldr r0, [sp] + str r5, [r0] + ldr r0, [sp] + strh r4, [r0, #4] + ldr r0, [sp] + str r7, [r0, #8] + bl current_time_gsi + ldr r2, [sp] + mov r1, #0 + str r0, [r2, #0x1c] + ldr r2, [sp] + ldr r0, [r2, #0x1c] + str r0, [r2, #0x88] + ldr r0, [sp] + strh r1, [r0, #0x64] + ldr r0, [sp] + strh r1, [r0, #0x66] + ldr r0, [sp] + ldr r1, [r7, #0x3c] + add r0, r0, #0x44 + bl Gti2AllocateBuffer + cmp r0, #0 + beq _02310794 + ldr r0, [sp] + ldr r1, [r7, #0x38] + add r0, r0, #0x50 + bl Gti2AllocateBuffer + cmp r0, #0 + beq _02310794 + mov r0, #0x10 + mov r1, #0x40 + mov r2, #0 + bl ArrayNew_Gsi + ldr r1, [sp] + str r0, [r1, #0x5c] + ldr r0, [sp] + ldr r0, [r0, #0x5c] + cmp r0, #0 + beq _02310794 + mov r0, #0x10 + mov r1, #0x40 + mov r2, #0 + bl ArrayNew_Gsi + ldr r1, [sp] + str r0, [r1, #0x60] + ldr r0, [sp] + ldr r0, [r0, #0x60] + cmp r0, #0 + beq _02310794 + mov r0, #4 + mov r1, #2 + mov r2, #0 + bl ArrayNew_Gsi + ldr r1, [sp] + str r0, [r1, #0x98] + ldr r0, [sp] + ldr r0, [r0, #0x98] + cmp r0, #0 + beq _02310794 + mov r0, #4 + mov r1, #2 + mov r2, #0 + bl ArrayNew_Gsi + ldr r1, [sp] + str r0, [r1, #0x9c] + ldr r0, [sp] + ldr r0, [r0, #0x9c] + cmp r0, #0 + beq _02310794 + ldr r0, [r7, #0xc] + add r1, sp, #0 + bl TableEnter_Gsi + mov r0, r7 + mov r1, r5 + mov r2, r4 + bl Gti2SocketFindConnection + str r0, [r6] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_02310794: + ldr r0, [sp] + cmp r0, #0 + beq _0231080C + ldr r0, [r0, #0x44] + bl gsifree + ldr r0, [sp] + ldr r0, [r0, #0x50] + bl gsifree + ldr r0, [sp] + ldr r0, [r0, #0x5c] + cmp r0, #0 + beq _023107C8 + bl ArrayFree_Gsi +_023107C8: + ldr r0, [sp] + ldr r0, [r0, #0x60] + cmp r0, #0 + beq _023107DC + bl ArrayFree_Gsi +_023107DC: + ldr r0, [sp] + ldr r0, [r0, #0x98] + cmp r0, #0 + beq _023107F0 + bl ArrayFree_Gsi +_023107F0: + ldr r0, [sp] + ldr r0, [r0, #0x9c] + cmp r0, #0 + beq _02310804 + bl ArrayFree_Gsi +_02310804: + ldr r0, [sp] + bl gsifree +_0231080C: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end Gti2NewSocketConnection + + arm_func_start Gti2FreeSocketConnection +Gti2FreeSocketConnection: ; 0x02310814 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, r6, lr} + ldr r1, [sp, #0x10] + ldr r0, [r1, #0x14] + cmp r0, #0 + ldreq r0, [r1, #0x24] + cmpeq r0, #0 + ldmneia sp!, {r4, r5, r6, lr} + addne sp, sp, #0x10 + bxne lr + ldr r0, [r1, #0xc] + cmp r0, #7 + ldr r0, [r1, #8] + bne _023108C0 + ldr r0, [r0, #0x10] + bl ArrayLength_Gsi + mov r4, r0 + mov r5, #0 + cmp r4, #0 + ldmleia sp!, {r4, r5, r6, lr} + addle sp, sp, #0x10 + bxle lr +_0231086C: + ldr r6, [sp, #0x10] + mov r1, r5 + ldr r0, [r6, #8] + ldr r0, [r0, #0x10] + bl ArrayNth_Gsi + ldr r0, [r0] + cmp r6, r0 + bne _023108A8 + ldr r0, [r6, #8] + mov r1, r5 + ldr r0, [r0, #0x10] + bl ArrayDeleteAt_Gsi + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr +_023108A8: + add r5, r5, #1 + cmp r5, r4 + blt _0231086C + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr +_023108C0: + ldr r0, [r0, #0xc] + add r1, sp, #0x10 + bl TableRemove_Gsi + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr + arm_func_end Gti2FreeSocketConnection + + arm_func_start Gti2SocketSend +Gti2SocketSend: ; 0x023108D8 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x18 + mov r6, r0 + mov r5, r1 + add r0, sp, #0x34 + add r1, sp, #0x38 + mov r4, r2 + bl Gti2MessageCheck + ldr r0, [r6, #0x40] + cmp r0, #3 + beq _02310928 + ldr r0, [r6] + bl CanSendOnSocket + cmp r0, #0 + addeq sp, sp, #0x18 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, lr} + addeq sp, sp, #0x10 + bxeq lr +_02310928: + mov r1, r4, asr #8 + mov r0, r4, lsl #8 + add r2, sp, #0x10 + mov r3, #0 + str r3, [r2, #4] + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + str r3, [r2] + mov r1, #2 + strh r0, [sp, #0x12] + strb r1, [sp, #0x11] + str r5, [sp, #0x14] + str r2, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, [r6] + ldr r1, [sp, #0x34] + ldr r2, [sp, #0x38] + bl SocketSendTo + mvn r1, #0 + cmp r0, r1 + bne _02310A70 + ldr r0, [r6] + bl GoaGetLastError + mvn r2, #0xe + cmp r0, r2 + bne _023109C4 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl Gti2HandleConnectionReset + cmp r0, #0 + bne _02310AD8 + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr +_023109C4: + sub r1, r2, #8 + cmp r0, r1 + bne _02310A00 + mov r0, r6 + mov r1, r5 + mov r2, r4 + mov r3, #1 + bl Gti2HandleHostUnreachable + cmp r0, #0 + bne _02310AD8 + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr +_02310A00: + sub r1, r2, #0x1b + cmp r0, r1 + addne r1, r2, #9 + cmpne r0, r1 + addeq sp, sp, #0x18 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, lr} + addeq sp, sp, #0x10 + bxeq lr + sub r1, r2, #0x1b + cmp r0, r1 + addne r1, r2, #9 + cmpne r0, r1 + addeq sp, sp, #0x18 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, lr} + addeq sp, sp, #0x10 + bxeq lr + sub r1, r2, #0x14 + cmp r0, r1 + beq _02310AD8 + mov r0, r6 + bl Gti2SocketError + add sp, sp, #0x18 + mov r0, #0 + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr +_02310A70: + ldr r0, [r6, #0x28] + cmp r0, #0 + beq _02310AD8 + mov r0, r6 + mov r1, r5 + mov r2, r4 + bl Gti2SocketFindConnection + mov r1, #0 + str r1, [sp] + ldr r2, [sp, #0x34] + mov r1, r0 + str r2, [sp, #4] + ldr ip, [sp, #0x38] + mov r3, r4 + mov r0, r6 + mov r2, r5 + str ip, [sp, #8] + mov r4, #1 + str r4, [sp, #0xc] + bl Gti2DumpCallback + cmp r0, #0 + addeq sp, sp, #0x18 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, lr} + addeq sp, sp, #0x10 + bxeq lr +_02310AD8: + mov r0, #1 + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, lr} + add sp, sp, #0x10 + bx lr + arm_func_end Gti2SocketSend + + arm_func_start Gti2SocketConnectionsThinkMap +Gti2SocketConnectionsThinkMap: ; 0x02310AEC + stmdb sp!, {r4, lr} + ldr r4, [r0] + ldr r1, [r1] + ldr r0, [r4, #0xc] + cmp r0, #7 + beq _02310B18 + mov r0, r4 + bl Gti2ConnectionThink + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, pc} +_02310B18: + ldr r0, [r4, #0xc] + cmp r0, #7 + ldreq r0, [r4, #0x14] + cmpeq r0, #0 + ldreq r0, [r4, #0x24] + cmpeq r0, #0 + bne _02310B3C + mov r0, r4 + bl Gti2FreeSocketConnection +_02310B3C: + mov r0, #1 + ldmia sp!, {r4, pc} + arm_func_end Gti2SocketConnectionsThinkMap + + arm_func_start Gti2SocketConnectionsThink +Gti2SocketConnectionsThink: ; 0x02310B44 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r0 + bl current_time_gsi + str r0, [sp] + ldr r0, [r4, #0xc] + ldr r1, _02310B7C ; =Gti2SocketConnectionsThinkMap + add r2, sp, #0 + bl TableMapSafe2_Gsi + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_02310B7C: .word Gti2SocketConnectionsThinkMap + arm_func_end Gti2SocketConnectionsThink + + arm_func_start Gti2FreeClosedConnections +Gti2FreeClosedConnections: ; 0x02310B80 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, [r5, #0x10] + bl ArrayLength_Gsi + subs r4, r0, #1 + ldmmiia sp!, {r3, r4, r5, pc} +_02310B98: + ldr r0, [r5, #0x10] + mov r1, r4 + bl ArrayNth_Gsi + ldr r0, [r0] + bl Gti2FreeSocketConnection + subs r4, r4, #1 + bpl _02310B98 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end Gti2FreeClosedConnections + + arm_func_start Gti2SocketError +Gti2SocketError: ; 0x02310BB8 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, [r4, #0x18] + cmp r1, #0 + ldmneia sp!, {r4, pc} + mov r1, #1 + str r1, [r4, #0x18] + bl Gt2CloseAllConnectionsHard + mov r0, r4 + bl Gti2SocketErrorCallback + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl Gti2CloseSocket + ldmia sp!, {r4, pc} + arm_func_end Gti2SocketError + + arm_func_start Gt2AddressToString +Gt2AddressToString: ; 0x02310BF4 + stmdb sp!, {r3, r4, r5, lr} + movs r4, r2 + mov r5, r1 + bne _02310C20 + ldr r2, _02310C90 ; =ov00_02328E1C + ldr r3, _02310C94 ; =ov00_02328E20 + ldr ip, [r2] + mov r1, #0x16 + eor ip, ip, #1 + arm_func_end Gt2AddressToString + + arm_func_start ov00_02310C18 +ov00_02310C18: ; 0x02310C18 + mla r4, ip, r1, r3 + str ip, [r2] +_02310C20: + cmp r0, #0 + beq _02310C68 + str r0, [sp] + cmp r5, #0 + beq _02310C50 + bl Soc_InetNtoA + mov r2, r0 + ldr r1, _02310C98 ; =ov00_0231BF04 + mov r0, r4 + mov r3, r5 + bl OS_VsPrintf + b _02310C88 +_02310C50: + bl Soc_InetNtoA + mov r2, r0 + ldr r1, _02310C9C ; =ov00_0231BF0C + mov r0, r4 + bl OS_VsPrintf + b _02310C88 +_02310C68: + cmp r5, #0 + moveq r0, #0 + streqb r0, [r4] + beq _02310C88 + ldr r1, _02310CA0 ; =ov00_0231BF10 + mov r0, r4 + mov r2, r5 + bl OS_VsPrintf +_02310C88: + mov r0, r4 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02310C90: .word ov00_02328E1C +_02310C94: .word ov00_02328E20 +_02310C98: .word ov00_0231BF04 +_02310C9C: .word ov00_0231BF0C +_02310CA0: .word ov00_0231BF10 + arm_func_end ov00_02310C18 + + arm_func_start Gt2StringToAddress +Gt2StringToAddress: ; 0x02310CA4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x104 + movs r8, r0 + mov r7, r1 + ldrnesb r1, [r8] + mov r4, #0 + mov r6, r2 + cmpne r1, #0 + moveq r4, #0 + moveq r5, r4 + beq _02310DDC + mov r1, #0x3a + bl strchr + movs r5, r0 + moveq r5, r4 + beq _02310D98 + cmp r5, r8 + moveq r8, r4 + beq _02310D10 + sub sb, r5, r8 + add r0, sp, #0 + mov r1, r8 + mov r2, sb + bl memcpy + add r8, sp, #0 + mov r0, r4 + strb r0, [r8, sb] +_02310D10: + ldrsb r0, [r5, #1] + add r3, r5, #1 + cmp r0, #0 + beq _02310D68 + ldr r1, _02310DF8 ; =_020AEDB0 + mov r2, #0 +_02310D28: + cmp r0, #0 + blt _02310D38 + cmp r0, #0x80 + blt _02310D40 +_02310D38: + mov r0, r2 + b _02310D4C +_02310D40: + mov r0, r0, lsl #1 + ldrh r0, [r1, r0] + and r0, r0, #8 +_02310D4C: + cmp r0, #0 + addeq sp, sp, #0x104 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldrsb r0, [r3, #1]! + cmp r0, #0 + bne _02310D28 +_02310D68: + add r0, r5, #1 + bl atoi + cmp r0, #0 + blt _02310D84 + ldr r1, _02310DFC ; =0x0000FFFF + cmp r0, r1 + ble _02310D90 +_02310D84: + add sp, sp, #0x104 + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_02310D90: + mov r0, r0, lsl #0x10 + mov r5, r0, lsr #0x10 +_02310D98: + cmp r8, #0 + beq _02310DDC + mov r0, r8 + bl inet_addr_gsi + mov r4, r0 + mvn r0, #0 + cmp r4, r0 + bne _02310DDC + mov r0, r8 + bl Soc_GetHostByName + cmp r0, #0 + addeq sp, sp, #0x104 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r0, [r0, #0xc] + ldr r0, [r0] + ldr r4, [r0] +_02310DDC: + cmp r7, #0 + strne r4, [r7] + cmp r6, #0 + strneh r5, [r6] + mov r0, #1 + add sp, sp, #0x104 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02310DF8: .word _020AEDB0 +_02310DFC: .word 0x0000FFFF + arm_func_end Gt2StringToAddress + + arm_func_start Gti2MessageCheck +Gti2MessageCheck: ; 0x02310E00 + stmdb sp!, {r4, lr} + ldr r2, [r0] + mov r4, r1 + cmp r2, #0 + bne _02310E28 + ldr r2, _02310E4C ; =ov00_0231BF14 + mov r1, #0 + str r2, [r0] + str r1, [r4] + ldmia sp!, {r4, pc} +_02310E28: + ldr r1, [r4] + mvn r0, #0 + cmp r1, r0 + ldmneia sp!, {r4, pc} + mov r0, r2 + bl strlen + add r0, r0, #1 + str r0, [r4] + ldmia sp!, {r4, pc} + .align 2, 0 +_02310E4C: .word ov00_0231BF14 + arm_func_end Gti2MessageCheck + + arm_func_start GetLocalIP_Gsi +GetLocalIP_Gsi: ; 0x02310E50 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, #0 + bl getlocalhost_gsi + movs r6, r0 + moveq r0, r7 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r4, _02310EB0 ; =0x0100007F + mov r5, r7 +_02310E70: + ldr r0, [r6, #0xc] + ldr r0, [r0, r5, lsl #2] + cmp r0, #0 + beq _02310EA8 + ldr r1, [r0] + cmp r1, r4 + beq _02310EA0 + mov r7, r1 + bl IsPrivateIP + cmp r0, #0 + movne r0, r7 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_02310EA0: + add r5, r5, #1 + b _02310E70 +_02310EA8: + mov r0, r7 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02310EB0: .word 0x0100007F + arm_func_end GetLocalIP_Gsi + + arm_func_start GetLocalPort_Gsi +GetLocalPort_Gsi: ; 0x02310EB4 + stmdb sp!, {lr} + sub sp, sp, #0xc + mov r3, #8 + add r1, sp, #4 + add r2, sp, #0 + str r3, [sp] + bl getsockname_gsi + mvn r1, #0 + cmp r0, r1 + moveq r0, #0 + ldrneh r0, [sp, #6] + add sp, sp, #0xc + ldmia sp!, {pc} + arm_func_end GetLocalPort_Gsi + + arm_func_start OutputMapping +OutputMapping: ; 0x02310EE8 + bx lr + arm_func_end OutputMapping + + arm_func_start Think_NN +Think_NN: ; 0x02310EEC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x68 + ldr r2, _02311220 ; =ov00_02328E4C + mov r6, #8 + ldr r3, [r2, #0xc] + str r6, [sp, #0x10] + mov r5, r0 + cmp r3, #0 + ldrne r0, [r2, #8] + mov r4, r1 + cmpne r0, #0 + ldrne r0, [r2, #4] + cmpne r0, #0 + ldrne r0, [r2, #0x18] + cmpne r0, #0 + ldrne r0, [r2] + cmpne r0, #0 + ldrne r0, [r2, #0x10] + cmpne r0, #0 + ldrne r0, [r2, #0x14] + cmpne r0, #0 + addne sp, sp, #0x68 + movne r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + mvn r0, #0 + cmp r5, r0 + beq _02311214 + mov r0, r5 + bl CanReceiveOnSocket + cmp r0, #0 + beq _02311214 +_02310F68: + add r0, sp, #0x14 + str r0, [sp] + add r6, sp, #0x10 + ldr r1, _02311224 ; =ov00_02328E98 + mov r0, r5 + mov r2, #0x200 + mov r3, #0 + str r6, [sp, #4] + bl SocketRecvFrom + mov r7, r0 + mvn r0, #0 + cmp r7, r0 + beq _02311214 + ldr r0, _02311224 ; =ov00_02328E98 + ldr r1, _02311228 ; =ov00_0231BF24 + mov r2, #6 + bl memcmp + cmp r0, #0 + addne sp, sp, #0x68 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + ldr r6, _02311224 ; =ov00_02328E98 + cmp r7, #0x15 + ldrb r0, [r6, #7] + addlt sp, sp, #0x68 + movlt r0, #1 + ldmltia sp!, {r4, r5, r6, r7, r8, pc} + cmp r0, #2 + bne _0231106C + add r3, sp, #0x1c + mov r2, #0xa +_02310FE4: + ldrb r1, [r6] + ldrb r0, [r6, #1] + add r6, r6, #2 + strb r1, [r3] + strb r0, [r3, #1] + add r3, r3, #2 + subs r2, r2, #1 + bne _02310FE4 + ldrb r0, [r6] + strb r0, [r3] + ldrb r0, [sp, #0x28] + cmp r0, #1 + beq _0231102C + cmp r0, #2 + beq _0231103C + cmp r0, #3 + beq _02311054 + b _023111F8 +_0231102C: + ldr r0, _02311220 ; =ov00_02328E4C + mov r1, #1 + str r1, [r0, #0xc] + b _023111F8 +_0231103C: + mov r1, #0 + ldr r0, _02311220 ; =ov00_02328E4C + str r1, [r4, #0x80] + mov r1, #1 + str r1, [r0, #8] + b _023111F8 +_02311054: + mov r1, #0 + ldr r0, _02311220 ; =ov00_02328E4C + str r1, [r4, #0x84] + mov r1, #1 + str r1, [r0, #4] + b _023111F8 +_0231106C: + cmp r0, #0xb + bne _023111F8 + add r3, sp, #0x1c + mov r2, #0xa +_0231107C: + ldrb r1, [r6] + ldrb r0, [r6, #1] + add r6, r6, #2 + strb r1, [r3] + strb r0, [r3, #1] + add r3, r3, #2 + subs r2, r2, #1 + bne _0231107C + ldrb r0, [r6] + strb r0, [r3] + ldr r3, [sp, #0x24] + 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 r0, r1, r0 + str r0, [sp, #0x24] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02311130 +_023110E4: ; jump table + b _023110F4 ; case 0 + b _02311114 ; case 1 + b _02311124 ; case 2 + b _02311104 ; case 3 +_023110F4: + ldr r0, _02311220 ; =ov00_02328E4C + mov r1, #1 + str r1, [r0, #0x18] + b _02311130 +_02311104: + ldr r0, _02311220 ; =ov00_02328E4C + mov r1, #1 + str r1, [r0] + b _02311130 +_02311114: + ldr r0, _02311220 ; =ov00_02328E4C + mov r1, #1 + str r1, [r0, #0x10] + b _02311130 +_02311124: + ldr r0, _02311220 ; =ov00_02328E4C + mov r1, #1 + str r1, [r0, #0x14] +_02311130: + bl GetLocalIP_Gsi + ldr r1, [sp, #0x24] + add r1, r4, r1, lsl #4 + str r0, [r1, #0x94] + mov r0, r5 + bl GetLocalPort_Gsi + mov r6, r0 + mov r0, r5 + bl GetLocalPort_Gsi + mov r2, r6, asr #8 + mov r1, r0, lsl #8 + ldr r0, [sp, #0x24] + and r2, r2, #0xff + and r1, r1, #0xff00 + orr r1, r2, r1 + add r0, r4, r0, lsl #4 + strh r1, [r0, #0x98] + add r6, sp, #0x2b + add r2, sp, #0x2f + ldrb r3, [r6] + add r0, sp, #0xc + ldrb r8, [r6, #1] + ldrb r7, [r6, #2] + ldrb r6, [r6, #3] + strb r3, [r0] + ldrb ip, [r2] + add lr, sp, #8 + ldrb r3, [r2, #1] + ldr r1, [sp, #0x24] + strb r8, [r0, #1] + strb r7, [r0, #2] + strb r6, [r0, #3] + add r0, r4, r1, lsl #4 + ldr r2, [sp, #0xc] + strb ip, [lr] + strb r3, [lr, #1] + str r2, [r0, #0x9c] + ldrh r2, [sp, #8] + ldr r0, [sp, #0x24] + add r1, r4, #0x94 + mov r3, r2, asr #8 + mov r2, r2, lsl #8 + and r3, r3, #0xff + and r2, r2, #0xff00 + orr r2, r3, r2 + add r0, r4, r0, lsl #4 + strh r2, [r0, #0xa0] + ldr r0, [sp, #0x24] + add r0, r1, r0, lsl #4 + bl OutputMapping +_023111F8: + mvn r0, #0 + cmp r5, r0 + beq _02311214 + mov r0, r5 + bl CanReceiveOnSocket + cmp r0, #0 + bne _02310F68 +_02311214: + mov r0, #1 + add sp, sp, #0x68 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02311220: .word ov00_02328E4C +_02311224: .word ov00_02328E98 +_02311228: .word ov00_0231BF24 + arm_func_end Think_NN + + arm_func_start NatifyThink +NatifyThink: ; 0x0231122C + ldr ip, _02311234 ; =Think_NN + bx ip + .align 2, 0 +_02311234: .word Think_NN + arm_func_end NatifyThink + + arm_func_start DetermineNatType +DetermineNatType: ; 0x02311238 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r0, #6 + str r0, [r6, #0x8c] + mov r0, #4 + str r0, [r6, #0x88] + mov r0, #1 + str r0, [r6, #0xd4] + ldr r1, [r6, #0x9c] + cmp r1, #0 + ldrne r0, [r6, #0xac] + cmpne r0, #0 + ldrne r0, [r6, #0xbc] + cmpne r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r4, [r6, #0x84] + cmp r4, #0 + ldreq r0, [r6, #0x80] + cmpeq r0, #0 + ldreq r0, [r6, #0x94] + cmpeq r1, r0 + moveq r0, #0 + streq r0, [r6, #0x8c] + beq _023113DC + ldr r0, [r6, #0x94] + cmp r1, r0 + moveq r0, #1 + streq r0, [r6, #0x8c] + beq _023113DC + ldr r5, [r6, #0x80] + cmp r5, #0 + cmpeq r4, #0 + bne _023112EC + ldrh r1, [r6, #0xc0] + ldrh r0, [r6, #0xb0] + sub r0, r1, r0 + bl abs + cmp r0, #1 + blt _023112EC + mov r0, #5 + str r0, [r6, #0x8c] + mov r0, #0 + str r0, [r6, #0x88] + b _023113DC +_023112EC: + cmp r5, #0 + beq _02311328 + cmp r4, #0 + bne _02311328 + ldrh r1, [r6, #0xc0] + ldrh r0, [r6, #0xb0] + sub r0, r1, r0 + bl abs + cmp r0, #1 + blt _02311328 + mov r0, #5 + str r0, [r6, #0x8c] + mov r0, #2 + str r0, [r6, #0x88] + b _023113DC +_02311328: + cmp r5, #0 + bne _02311364 + cmp r4, #0 + beq _02311364 + ldrh r1, [r6, #0xc0] + ldrh r0, [r6, #0xb0] + sub r0, r1, r0 + bl abs + cmp r0, #1 + blt _02311364 + mov r0, #5 + str r0, [r6, #0x8c] + mov r0, #3 + str r0, [r6, #0x88] + b _023113DC +_02311364: + cmp r5, #0 + cmpne r4, #0 + beq _0231139C + ldrh r1, [r6, #0xc0] + ldrh r0, [r6, #0xb0] + sub r0, r1, r0 + bl abs + cmp r0, #1 + blt _0231139C + mov r0, #5 + str r0, [r6, #0x8c] + mov r0, #1 + str r0, [r6, #0x88] + b _023113DC +_0231139C: + cmp r4, #0 + movne r0, #4 + strne r0, [r6, #0x8c] + bne _023113DC + cmp r5, #0 + beq _023113C4 + cmp r4, #0 + moveq r0, #3 + streq r0, [r6, #0x8c] + beq _023113DC +_023113C4: + cmp r5, #0 + cmpeq r4, #0 + moveq r0, #2 + streq r0, [r6, #0x8c] + movne r0, #6 + strne r0, [r6, #0x8c] +_023113DC: + ldrh r3, [r6, #0x98] + ldrh r2, [r6, #0xa0] + cmp r2, r3 + ldreqh r1, [r6, #0xb0] + ldreqh r0, [r6, #0xa8] + cmpeq r1, r0 + ldreqh r1, [r6, #0xc0] + ldreqh r0, [r6, #0xb8] + cmpeq r1, r0 + moveq r0, #1 + streq r0, [r6, #0x90] + beq _02311460 + ldrh r1, [r6, #0xb0] + cmp r2, r1 + ldreqh r0, [r6, #0xc0] + cmpeq r1, r0 + moveq r0, #2 + streq r0, [r6, #0x90] + beq _02311460 + cmp r2, r3 + ldreqh r0, [r6, #0xc0] + subeq r0, r0, r1 + cmpeq r0, #1 + moveq r0, #4 + streq r0, [r6, #0x90] + beq _02311460 + ldrh r0, [r6, #0xc0] + sub r0, r0, r1 + cmp r0, #1 + moveq r0, #3 + streq r0, [r6, #0x90] + movne r0, #0 + strne r0, [r6, #0x90] +_02311460: + ldrh r1, [r6, #0xd0] + cmp r1, #0 + ldrneh r0, [r6, #0xa0] + cmpne r0, r1 + movne r0, #0 + strne r0, [r6, #0xd4] + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end DetermineNatType + + arm_func_start FindNegotiatorForCookie +FindNegotiatorForCookie: ; 0x02311480 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _023114E4 ; =ov00_02329098 + mov r6, r0 + ldr r0, [r1] + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + mov r5, #0 + bl ArrayLength_Gsi + cmp r0, #0 + ble _023114DC + ldr r4, _023114E4 ; =ov00_02329098 +_023114B0: + ldr r0, [r4] + mov r1, r5 + bl ArrayNth_Gsi + ldr r1, [r0, #8] + cmp r1, r6 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [r4] + add r5, r5, #1 + bl ArrayLength_Gsi + cmp r5, r0 + blt _023114B0 +_023114DC: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023114E4: .word ov00_02329098 + arm_func_end FindNegotiatorForCookie + + arm_func_start AddNegotiator +AddNegotiator: ; 0x023114E8 + stmdb sp!, {lr} + sub sp, sp, #0x54 + mov r0, #0 + add ip, sp, #0 + mov r1, r0 + mov r2, r0 + mov r3, r0 + stmia ip!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + ldr r1, _02311574 ; =ov00_02329098 + str r0, [ip] + ldr r0, [r1] + cmp r0, #0 + bne _02311540 + mov r0, #0x54 + mov r1, #4 + bl ArrayNew_Gsi + ldr r1, _02311574 ; =ov00_02329098 + str r0, [r1] +_02311540: + ldr r0, _02311574 ; =ov00_02329098 + add r1, sp, #0 + ldr r0, [r0] + bl ArrayAppend_Gsi + ldr r0, _02311574 ; =ov00_02329098 + ldr r0, [r0] + bl ArrayLength_Gsi + ldr r2, _02311574 ; =ov00_02329098 + sub r1, r0, #1 + ldr r0, [r2] + bl ArrayNth_Gsi + add sp, sp, #0x54 + ldmia sp!, {pc} + .align 2, 0 +_02311574: .word ov00_02329098 + arm_func_end AddNegotiator + + arm_func_start RemoveNegotiator +RemoveNegotiator: ; 0x02311578 + stmdb sp!, {r4, r5, r6, lr} + ldr r1, _023115DC ; =ov00_02329098 + mov r6, r0 + ldr r0, [r1] + mov r5, #0 + bl ArrayLength_Gsi + cmp r0, #0 + ldmleia sp!, {r4, r5, r6, pc} + ldr r4, _023115DC ; =ov00_02329098 +_0231159C: + ldr r0, [r4] + mov r1, r5 + bl ArrayNth_Gsi + cmp r6, r0 + bne _023115C4 + ldr r0, _023115DC ; =ov00_02329098 + mov r1, r5 + ldr r0, [r0] + bl ArrayRemoveAt_Gsi + ldmia sp!, {r4, r5, r6, pc} +_023115C4: + ldr r0, [r4] + add r5, r5, #1 + bl ArrayLength_Gsi + cmp r5, r0 + blt _0231159C + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023115DC: .word ov00_02329098 + arm_func_end RemoveNegotiator + + arm_func_start NnFreeNegotiateList +NnFreeNegotiateList: ; 0x023115E0 + stmdb sp!, {r3, lr} + ldr r0, _02311608 ; =ov00_02329098 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl ArrayFree_Gsi + ldr r0, _02311608 ; =ov00_02329098 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02311608: .word ov00_02329098 + arm_func_end NnFreeNegotiateList + + arm_func_start CheckMagic_NN +CheckMagic_NN: ; 0x0231160C + stmdb sp!, {r3, lr} + ldr r1, _0231162C ; =ov00_0231BF24 + mov r2, #6 + bl memcmp + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0231162C: .word ov00_0231BF24 + arm_func_end CheckMagic_NN + + arm_func_start SendPacket_NN +SendPacket_NN: ; 0x02311630 + stmdb sp!, {r3, lr} + sub sp, sp, #0x10 + mov ip, r2, asr #8 + mov r2, r2, lsl #8 + str r1, [sp, #0xc] + mov r1, r3 + and r3, ip, #0xff + and r2, r2, #0xff00 + orr r2, r3, r2 + mov lr, #2 + strh r2, [sp, #0xa] + add r3, sp, #8 + strb lr, [sp, #9] + str r3, [sp] + mov ip, #8 + ldr r2, [sp, #0x18] + mov r3, #0 + str ip, [sp, #4] + bl SocketSendTo + add sp, sp, #0x10 + ldmia sp!, {r3, pc} + arm_func_end SendPacket_NN + + arm_func_start GetLocalIP_NN +GetLocalIP_NN: ; 0x02311684 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, #0 + bl getlocalhost_gsi + movs r6, r0 + moveq r0, r7 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r4, _023116E4 ; =0x0100007F + mov r5, r7 +_023116A4: + ldr r0, [r6, #0xc] + ldr r0, [r0, r5, lsl #2] + cmp r0, #0 + beq _023116DC + ldr r1, [r0] + cmp r1, r4 + beq _023116D4 + mov r7, r1 + bl IsPrivateIP + cmp r0, #0 + movne r0, r7 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} +_023116D4: + add r5, r5, #1 + b _023116A4 +_023116DC: + mov r0, r7 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_023116E4: .word 0x0100007F + arm_func_end GetLocalIP_NN + + arm_func_start GetLocalPort_NN +GetLocalPort_NN: ; 0x023116E8 + stmdb sp!, {lr} + sub sp, sp, #0xc + mov r3, #8 + add r1, sp, #4 + add r2, sp, #0 + str r3, [sp] + bl getsockname_gsi + mvn r1, #0 + cmp r0, r1 + moveq r0, #0 + ldrneh r0, [sp, #6] + add sp, sp, #0xc + ldmia sp!, {pc} + arm_func_end GetLocalPort_NN + + arm_func_start SendReportPacket +SendReportPacket: ; 0x0231171C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x50 + ldr r1, _02311858 ; =ov00_0231BF24 + mov r2, #3 + ldrb sb, [r1] + ldrb r8, [r1, #1] + add sl, sp, #4 + ldrb r7, [r1, #2] + ldrb r6, [r1, #3] + ldrb r5, [r1, #4] + ldrb r3, [r1, #5] + mov r1, #0xd + strb r5, [sl, #4] + mov r4, r0 + strb sb, [sl] + strb r8, [sl, #1] + strb r7, [sl, #2] + strb r6, [sl, #3] + strb r2, [sp, #0xa] + strb r1, [sp, #0xb] + strb r3, [sl, #5] + ldr r3, [r4, #8] + add r5, sp, #0x13 + 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 r0, r1, r0 + ldr r1, _0231185C ; =ov00_0231BF18 + str r0, [sp, #0xc] + ldr r0, [r4, #0xc] + ldrb lr, [r1] + strb r0, [sp, #0x11] + ldr r0, [r4, #0x44] + ldrb ip, [r1, #1] + cmp r0, #0 + ldr r0, _02311860 ; =ov00_023290A0 + ldrb r3, [r1, #2] + ldrb r2, [r1, #3] + moveq r6, #1 + movne r6, #0 + ldrb sl, [r0] + add r1, sp, #0x17 + ldrb sb, [r0, #1] + ldrb r8, [r0, #2] + ldrb r7, [r0, #3] + ldr r0, _02311864 ; =ov00_02328804 + strb r6, [sp, #0x12] + strb lr, [r5] + strb ip, [r5, #1] + strb r3, [r5, #2] + strb r2, [r5, #3] + strb sl, [r1] + strb sb, [r1, #1] + strb r8, [r1, #2] + strb r7, [r1, #3] + bl strlen + cmp r0, #0 + beq _02311830 + ldr r1, _02311864 ; =ov00_02328804 + add r0, sp, #0x1b + mov r2, #0x32 + bl memcpy +_02311830: + mov r0, #0x49 + str r0, [sp] + ldr r1, _02311868 ; =ov00_02329098 + ldr r0, [r4] + ldr r1, [r1, #0x28] + ldr r2, _0231186C ; =0x00006CFD + add r3, sp, #4 + bl SendPacket_NN + add sp, sp, #0x50 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_02311858: .word ov00_0231BF24 +_0231185C: .word ov00_0231BF18 +_02311860: .word ov00_023290A0 +_02311864: .word ov00_02328804 +_02311868: .word ov00_02329098 +_0231186C: .word 0x00006CFD + arm_func_end SendReportPacket + + arm_func_start StartReport +StartReport: ; 0x02311870 + stmdb sp!, {r4, lr} + mov r4, r0 + str r1, [r4, #0x44] + str r2, [r4, #0x48] + cmp r3, #0 + beq _023118B0 + add lr, r4, #0x4c + mov ip, #4 +_02311890: + ldrb r2, [r3] + ldrb r0, [r3, #1] + add r3, r3, #2 + subs ip, ip, #1 + strb r2, [lr] + strb r0, [lr, #1] + add lr, lr, #2 + bne _02311890 +_023118B0: + sub r0, r1, #1 + cmp r0, #1 + bhi _023118E8 + mov r0, #3 + str r0, [r4, #0x10] + ldr r0, [r4, #0x44] + ldr r1, [r4, #0x48] + ldr r3, [r4, #0x40] + ldr ip, [r4, #0x3c] + add r2, r4, #0x4c + blx ip + ldr r0, [r4, #8] + bl NnCancel + ldmia sp!, {r4, pc} +_023118E8: + mov r0, r4 + bl SendReportPacket + mov r0, #5 + str r0, [r4, #0x10] + bl current_time_gsi + add r0, r0, #0x3e8 + str r0, [r4, #0x2c] + mov r0, #0 + str r0, [r4, #0x24] + mov r0, #5 + str r0, [r4, #0x28] + ldmia sp!, {r4, pc} + arm_func_end StartReport + + arm_func_start SendInitPackets +SendInitPackets: ; 0x02311918 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x5c + ldr r2, _02311B80 ; =ov00_0231BF24 + mov r1, #0 + ldrb lr, [r2] + ldrb ip, [r2, #1] + add r5, sp, #4 + ldrb r8, [r2, #2] + ldrb r4, [r2, #4] + ldrb r3, [r2, #5] + ldrb r7, [r2, #3] + mov r2, #3 + mov r6, r0 + strb lr, [r5] + strb ip, [r5, #1] + strb r8, [r5, #2] + strb r4, [r5, #4] + strb r3, [r5, #5] + strb r2, [r5, #6] + strb r1, [r5, #7] + strb r7, [r5, #3] + ldr r7, [r6, #8] + sub r0, r1, #1 + mov r3, r7, lsr #0x18 + mov r2, r7, lsr #8 + mov r4, r7, lsl #8 + and r3, r3, #0xff + and r2, r2, #0xff00 + mov r7, r7, lsl #0x18 + orr r2, r3, r2 + and r4, r4, #0xff0000 + and r3, r7, #0xff000000 + orr r2, r4, r2 + orr r2, r3, r2 + str r2, [r5, #8] + ldr r2, [r6, #0xc] + strb r2, [r5, #0xd] + ldr r2, [r6, #4] + cmp r2, r0 + movne r1, #1 + strb r1, [r5, #0xe] + bl GetLocalIP_NN + mov r7, r0 + bl GetLocalIP_NN + mov r8, r0 + bl GetLocalIP_NN + mov r4, r0 + bl GetLocalIP_NN + mov r2, #0 + mov r1, r7, lsl #0x18 + and r7, r1, #0xff000000 + mov r1, r8, lsl #8 + mov r0, r0, lsr #8 + and r3, r1, #0xff0000 + mov r1, r4, lsr #0x18 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + orr r0, r3, r0 + orr r3, r7, r0 + mov r1, r3, lsr #0x18 + strb r1, [sp, #0x13] + mov r1, r3, lsr #8 + mov r0, r3, lsr #0x10 + strb r1, [sp, #0x15] + strb r0, [sp, #0x14] + ldr r1, _02311B84 ; =ov00_02328804 + add r0, sp, #0x19 + strb r3, [sp, #0x16] + strb r2, [sp, #0x17] + strb r2, [sp, #0x18] + bl strcpy + ldr r0, _02311B84 ; =ov00_02328804 + bl strlen + ldrb r1, [r5, #0xe] + add r4, r0, #0x16 + cmp r1, #0 + beq _02311A80 + ldr r0, [r6, #0x14] + cmp r0, #0 + bne _02311A80 + mov r0, #0 + strb r0, [r5, #0xc] + str r4, [sp] + ldr r1, _02311B88 ; =ov00_02329098 + ldr r0, [r6, #4] + ldr r1, [r1, #0x28] + ldr r2, _02311B8C ; =0x00006CFD + mov r3, r5 + bl SendPacket_NN +_02311A80: + ldr r0, [r6, #0x18] + cmp r0, #0 + bne _02311AB0 + mov r0, #1 + strb r0, [r5, #0xc] + str r4, [sp] + ldr r1, _02311B88 ; =ov00_02329098 + ldr r0, [r6] + ldr r1, [r1, #0x28] + ldr r2, _02311B8C ; =0x00006CFD + mov r3, r5 + bl SendPacket_NN +_02311AB0: + ldrb r0, [r5, #0xe] + cmp r0, #0 + ldrne r8, [r6, #4] + ldreq r8, [r6] + cmp r0, #0 + ldrne r0, [r6, #4] + ldreq r0, [r6] + bl GetLocalPort_NN + mov r7, r0 + mov r0, r8 + bl GetLocalPort_NN + mov r1, r7, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + mov r0, r0, lsl #0x10 + mov r1, r0, lsr #0x10 + mov r0, r1, asr #8 + strb r1, [sp, #0x18] + strb r0, [sp, #0x17] + ldr r0, [r6, #0x1c] + cmp r0, #0 + bne _02311B34 + mov r0, #2 + strb r0, [r5, #0xc] + str r4, [sp] + ldr r1, _02311B88 ; =ov00_02329098 + ldr r0, [r6] + ldr r1, [r1, #0x24] + ldr r2, _02311B8C ; =0x00006CFD + mov r3, r5 + bl SendPacket_NN +_02311B34: + ldr r0, [r6, #0x20] + cmp r0, #0 + bne _02311B64 + mov r2, #3 + strb r2, [r5, #0xc] + str r4, [sp] + ldr r1, _02311B88 ; =ov00_02329098 + ldr r0, [r6] + ldr r1, [r1, #0x20] + mov r3, r5 + rsb r2, r2, #0x6d00 + bl SendPacket_NN +_02311B64: + bl current_time_gsi + add r0, r0, #0x1f4 + str r0, [r6, #0x2c] + mov r0, #0xa + str r0, [r6, #0x28] + add sp, sp, #0x5c + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02311B80: .word ov00_0231BF24 +_02311B84: .word ov00_02328804 +_02311B88: .word ov00_02329098 +_02311B8C: .word 0x00006CFD + arm_func_end SendInitPackets + + arm_func_start SendPingPacket +SendPingPacket: ; 0x02311B90 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x50 + ldr r1, _02311CAC ; =ov00_0231BF24 + mov r2, #3 + ldrb r7, [r1] + ldrb r6, [r1, #1] + add r8, sp, #4 + ldrb r5, [r1, #2] + ldrb lr, [r1, #3] + ldrb ip, [r1, #4] + ldrb r3, [r1, #5] + mov r1, #7 + mov r4, r0 + strb r7, [r8] + strb r6, [r8, #1] + strb r5, [r8, #2] + strb lr, [r8, #3] + strb ip, [r8, #4] + strb r2, [sp, #0xa] + strb r1, [sp, #0xb] + strb r3, [r8, #5] + ldr r3, [r4, #8] + 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 r0, r1, r0 + str r0, [sp, #0xc] + ldr r0, [r4, #0x30] + add r3, sp, #4 + str r0, [sp, #0x10] + ldrh r0, [r4, #0x34] + 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, #0x14] + ldrb r0, [r4, #0x36] + mvn r1, #0 + strb r0, [sp, #0x16] + ldr r0, [r4, #0x10] + cmp r0, #2 + movne r0, #1 + moveq r0, #0 + strb r0, [sp, #0x17] + ldr r0, [r4, #4] + cmp r0, r1 + ldreq r0, [r4] + mov r1, #0x14 + str r1, [sp] + ldrh r2, [r4, #0x34] + ldr r1, [r4, #0x30] + bl SendPacket_NN + bl current_time_gsi + add r0, r0, #0x2bc + str r0, [r4, #0x2c] + mov r0, #0xc + str r0, [r4, #0x28] + ldrb r0, [r4, #0x36] + cmp r0, #0 + movne r0, #1 + strneb r0, [r4, #0x37] + add sp, sp, #0x50 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02311CAC: .word ov00_0231BF24 + arm_func_end SendPingPacket + + arm_func_start CheckNatifyStatus +CheckNatifyStatus: ; 0x02311CB0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0xcc + mov r4, #1 + mov r5, r0 + sub r0, r4, #2 + cmp r5, r0 + beq _02311DA4 + bl current_time_gsi + ldr r2, _02311DB0 ; =ov00_02329098 + ldr r1, _02311DB4 ; =0x00002710 + ldr r2, [r2, #0x10] + sub r0, r0, r2 + cmp r0, r1 + movhs r4, #0 + bhs _02311CFC + ldr r1, _02311DB8 ; =ov00_023290C4 + mov r0, r5 + bl NatifyThink + mov r4, r0 +_02311CFC: + cmp r4, #0 + bne _02311DA4 + ldr r0, _02311DB8 ; =ov00_023290C4 + bl DetermineNatType + sub r6, sp, #0xc + ldr r5, _02311DB8 ; =ov00_023290C4 + mov r7, r0 + mov lr, r6 + mov ip, #0xd +_02311D20: + ldmia r5!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _02311D20 + ldmia r5, {r0, r1} + stmia lr, {r0, r1} + ldr r1, _02311DB0 ; =ov00_02329098 + mov r0, r7 + ldr ip, [r1, #0xc] + ldmia r6, {r1, r2, r3} + blx ip + ldr r1, _02311DB8 ; =ov00_023290C4 + ldr r2, _02311DBC ; =ov00_0231BF18 + ldr r3, [r1, #0x8c] + ldr r0, _02311DB0 ; =ov00_02329098 + str r3, [r2] + ldr r3, [r1, #0x90] + mvn r1, #0 + str r3, [r0, #8] + ldr r0, [r2, #8] + cmp r0, r1 + beq _02311D7C + bl SocketClose +_02311D7C: + ldr r0, _02311DBC ; =ov00_0231BF18 + mvn r1, #0 + str r1, [r0, #8] + ldr r0, [r0, #4] + cmp r0, r1 + beq _02311D98 + bl SocketClose +_02311D98: + ldr r0, _02311DBC ; =ov00_0231BF18 + mvn r1, #0 + str r1, [r0, #4] +_02311DA4: + mov r0, r4 + add sp, sp, #0xcc + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_02311DB0: .word ov00_02329098 +_02311DB4: .word 0x00002710 +_02311DB8: .word ov00_023290C4 +_02311DBC: .word ov00_0231BF18 + arm_func_end CheckNatifyStatus + + arm_func_start NameToIp_NN +NameToIp_NN: ; 0x02311DC0 + stmdb sp!, {r4, lr} + mov r4, r0 + bl inet_addr_gsi + mvn r1, #0 + cmp r0, r1 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl Soc_GetHostByName + cmp r0, #0 + moveq r0, #0 + ldrne r0, [r0, #0xc] + ldrne r0, [r0] + ldrne r0, [r0] + ldmia sp!, {r4, pc} + arm_func_end NameToIp_NN + + arm_func_start ResolveServer_NN +ResolveServer_NN: ; 0x02311DF8 + stmdb sp!, {lr} + sub sp, sp, #0x44 + cmp r0, #0 + bne _02311E24 + ldr r2, _02311E30 ; =ov00_0231BF2C + str r1, [sp] + ldr r3, _02311E34 ; =ov00_02328804 + add r0, sp, #4 + mov r1, #0x40 + bl OS_SnPrintf + add r0, sp, #4 +_02311E24: + bl NameToIp_NN + add sp, sp, #0x44 + ldmia sp!, {pc} + .align 2, 0 +_02311E30: .word ov00_0231BF2C +_02311E34: .word ov00_02328804 + arm_func_end ResolveServer_NN + + arm_func_start ResolveServers_NN +ResolveServers_NN: ; 0x02311E38 + stmdb sp!, {r3, lr} + ldr r0, _02311ED0 ; =ov00_02329098 + ldr r1, [r0, #0x28] + cmp r1, #0 + bne _02311E60 + ldr r0, [r0, #4] + ldr r1, _02311ED4 ; =ov00_0231BF34 + bl ResolveServer_NN + ldr r1, _02311ED0 ; =ov00_02329098 + str r0, [r1, #0x28] +_02311E60: + ldr r0, _02311ED0 ; =ov00_02329098 + ldr r1, [r0, #0x24] + cmp r1, #0 + bne _02311E84 + ldr r0, [r0, #0x18] + ldr r1, _02311ED8 ; =ov00_0231BF50 + bl ResolveServer_NN + ldr r1, _02311ED0 ; =ov00_02329098 + str r0, [r1, #0x24] +_02311E84: + ldr r0, _02311ED0 ; =ov00_02329098 + ldr r1, [r0, #0x20] + cmp r1, #0 + bne _02311EA8 + ldr r0, [r0, #0x14] + ldr r1, _02311EDC ; =ov00_0231BF6C + bl ResolveServer_NN + ldr r1, _02311ED0 ; =ov00_02329098 + str r0, [r1, #0x20] +_02311EA8: + ldr r0, _02311ED0 ; =ov00_02329098 + ldr r1, [r0, #0x28] + cmp r1, #0 + ldrne r1, [r0, #0x24] + cmpne r1, #0 + ldrne r0, [r0, #0x20] + cmpne r0, #0 + moveq r0, #0 + movne r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02311ED0: .word ov00_02329098 +_02311ED4: .word ov00_0231BF34 +_02311ED8: .word ov00_0231BF50 +_02311EDC: .word ov00_0231BF6C + arm_func_end ResolveServers_NN + + arm_func_start NnBeginNegotiationWithSocket +NnBeginNegotiationWithSocket: ; 0x02311EE0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr ip, _02311FAC ; =ov00_02328800 + mov r8, r0 + ldr r0, [ip] + mov r7, r1 + cmp r0, #1 + mov r6, r2 + mov r5, r3 + movne r0, #2 + ldmneia sp!, {r4, r5, r6, r7, r8, pc} + bl ResolveServers_NN + cmp r0, #0 + moveq r0, #3 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + bl AddNegotiator + movs r4, r0 + moveq r0, #1 + ldmeqia sp!, {r4, r5, r6, r7, r8, pc} + str r8, [r4, #4] + str r6, [r4, #0xc] + str r7, [r4, #8] + ldr r1, [sp, #0x18] + str r5, [r4, #0x38] + ldr r2, [sp, #0x1c] + str r1, [r4, #0x3c] + mov r0, #2 + str r2, [r4, #0x40] + mov r1, r0 + mov r2, #0 + bl SocketCreate + str r0, [r4] + mov r0, #0 + str r0, [r4, #0x24] + strb r0, [r4, #0x36] + strb r0, [r4, #0x37] + str r0, [r4, #0x30] + strh r0, [r4, #0x34] + mov r2, #5 + str r0, [r4, #0x28] + str r2, [r4, #0x44] + ldr r1, [r4] + sub r0, r2, #6 + cmp r1, r0 + mov r0, r4 + bne _02311FA0 + bl RemoveNegotiator + mov r0, #2 + ldmia sp!, {r4, r5, r6, r7, r8, pc} +_02311FA0: + bl SendInitPackets + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02311FAC: .word ov00_02328800 + arm_func_end NnBeginNegotiationWithSocket + + arm_func_start NnCancel +NnCancel: ; 0x02311FB0 + stmdb sp!, {r4, lr} + bl FindNegotiatorForCookie + movs r4, r0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4] + mvn r1, #0 + cmp r0, r1 + beq _02311FD4 + bl SocketClose +_02311FD4: + mvn r0, #0 + str r0, [r4] + mov r0, #4 + str r0, [r4, #0x10] + ldmia sp!, {r4, pc} + arm_func_end NnCancel + + arm_func_start NegotiateThink +NegotiateThink: ; 0x02311FE8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x1c + ldr r1, _023122AC ; =ov00_02329098 + mov r2, #8 + ldr r1, [r1, #0x1c] + mov sb, r0 + str r2, [sp, #0x10] + cmp r1, #0 + beq _02312034 + ldr r0, _023122B0 ; =ov00_0231BF18 + ldr r0, [r0, #8] + bl CheckNatifyStatus + ldr r2, _023122AC ; =ov00_02329098 + ldr r1, _023122B0 ; =ov00_0231BF18 + str r0, [r2, #0x1c] + ldr r0, [r1, #4] + bl CheckNatifyStatus + ldr r1, _023122AC ; =ov00_02329098 + str r0, [r1, #0x1c] +_02312034: + cmp sb, #0 + addeq sp, sp, #0x1c + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + ldr r0, [sb, #0x10] + cmp r0, #4 + bne _0231205C + mov r0, sb + bl RemoveNegotiator + add sp, sp, #0x1c + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} +_0231205C: + ldr r0, [sb] + mvn r1, #0 + cmp r0, r1 + beq _023120E4 + bl CanReceiveOnSocket + cmp r0, #0 + beq _023120E4 + ldr r6, _023122B4 ; =ov00_0232919C + add r8, sp, #0x14 + add r7, sp, #0x10 + mov r5, #0x200 + mov r4, #0 + mvn sl, #0 +_02312090: + str r8, [sp] + str r7, [sp, #4] + ldr r0, [sb] + mov r1, r6 + mov r2, r5 + mov r3, r4 + bl SocketRecvFrom + mov r1, r0 + cmp r1, sl + beq _023120E4 + mov r0, r6 + mov r2, r8 + bl NnProcessData + ldr r0, [sb, #0x10] + cmp r0, #4 + ldrne r0, [sb] + cmpne r0, sl + beq _023120E4 + bl CanReceiveOnSocket + cmp r0, #0 + bne _02312090 +_023120E4: + ldr r0, [sb, #0x10] + cmp r0, #0 + cmpne r0, #2 + bne _02312170 + bl current_time_gsi + ldr r1, [sb, #0x2c] + cmp r0, r1 + bls _02312170 + ldr r1, [sb, #0x24] + ldr r0, [sb, #0x28] + cmp r1, r0 + ble _0231214C + ldr r0, [sb, #0x10] + mov r3, #0 + cmp r0, #0 + bne _02312138 + mov r1, #2 + mov r0, sb + sub r2, r1, #3 + bl StartReport + b _02312170 +_02312138: + mov r1, #3 + mov r0, sb + sub r2, r1, #4 + bl StartReport + b _02312170 +_0231214C: + add r0, r1, #1 + str r0, [sb, #0x24] + ldr r0, [sb, #0x10] + cmp r0, #0 + mov r0, sb + bne _0231216C + bl SendInitPackets + b _02312170 +_0231216C: + bl SendPingPacket +_02312170: + ldr r0, [sb, #0x10] + cmp r0, #3 + bne _023121E8 + bl current_time_gsi + ldr r1, [sb, #0x2c] + cmp r0, r1 + bls _023121E8 + mov r0, #2 + strb r0, [sp, #9] + ldrh r1, [sb, #0x34] + sub r0, r0, #3 + add r3, sp, #8 + mov r2, r1, asr #8 + mov r1, r1, lsl #8 + and r2, r2, #0xff + and r1, r1, #0xff00 + orr r1, r2, r1 + strh r1, [sp, #0xa] + ldr r1, [sb, #0x30] + str r1, [sp, #0xc] + ldr r2, [sb, #4] + mov r1, #0 + cmp r2, r0 + bne _023121E0 + ldr r2, [sb] + mov r0, sb + bl StartReport + b _023121E8 +_023121E0: + mov r0, sb + bl StartReport +_023121E8: + ldr r0, [sb, #0x10] + cmp r0, #1 + bne _02312218 + bl current_time_gsi + ldr r1, [sb, #0x2c] + cmp r0, r1 + bls _02312218 + mov r1, #1 + mov r0, sb + sub r2, r1, #2 + mov r3, #0 + bl StartReport +_02312218: + ldr r0, [sb, #0x10] + cmp r0, #5 + addne sp, sp, #0x1c + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + bl current_time_gsi + ldr r1, [sb, #0x2c] + cmp r0, r1 + addls sp, sp, #0x1c + ldmlsia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + ldr r1, [sb, #0x24] + ldr r0, [sb, #0x28] + cmp r1, r0 + ble _02312284 + ldr r0, [sb, #0x44] + ldr r1, [sb, #0x48] + ldr r3, [sb, #0x40] + ldr r4, [sb, #0x3c] + add r2, sb, #0x4c + blx r4 + ldr r1, [sb, #4] + mvn r0, #0 + cmp r1, r0 + streq r0, [sb] + ldr r0, [sb, #8] + bl NnCancel + add sp, sp, #0x1c + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} +_02312284: + mov r0, sb + bl SendReportPacket + ldr r0, [sb, #0x24] + add r0, r0, #1 + str r0, [sb, #0x24] + bl current_time_gsi + add r0, r0, #0x3e8 + str r0, [sb, #0x2c] + add sp, sp, #0x1c + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_023122AC: .word ov00_02329098 +_023122B0: .word ov00_0231BF18 +_023122B4: .word ov00_0232919C + arm_func_end NegotiateThink + + arm_func_start NnThink +NnThink: ; 0x023122B8 + stmdb sp!, {r3, r4, r5, lr} + ldr r0, _02312318 ; =ov00_02329098 + ldr r0, [r0] + cmp r0, #0 + beq _023122D8 + bl ArrayLength_Gsi + cmp r0, #0 + bne _023122E4 +_023122D8: + mov r0, #0 + bl NegotiateThink + ldmia sp!, {r3, r4, r5, pc} +_023122E4: + ldr r0, _02312318 ; =ov00_02329098 + ldr r0, [r0] + bl ArrayLength_Gsi + subs r5, r0, #1 + ldmmiia sp!, {r3, r4, r5, pc} + ldr r4, _02312318 ; =ov00_02329098 +_023122FC: + ldr r0, [r4] + mov r1, r5 + bl ArrayNth_Gsi + bl NegotiateThink + subs r5, r5, #1 + bpl _023122FC + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02312318: .word ov00_02329098 + arm_func_end NnThink + + arm_func_start SendConnectAck +SendConnectAck: ; 0x0231231C + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x50 + ldr r2, _023123E4 ; =ov00_0231BF24 + mov r4, #3 + ldrb r8, [r2] + ldrb r7, [r2, #1] + add r3, sp, #4 + ldrb r6, [r2, #2] + ldrb lr, [r2, #3] + ldrb ip, [r2, #4] + ldrb r5, [r2, #5] + mov r2, #6 + strb r2, [sp, #0xb] + strb r8, [r3] + strb r7, [r3, #1] + strb r6, [r3, #2] + strb lr, [r3, #3] + strb ip, [r3, #4] + strb r4, [sp, #0xa] + strb r5, [r3, #5] + ldr r5, [r0, #8] + mov r2, #0x15 + mov lr, r5, lsr #0x18 + mov ip, r5, lsr #8 + mov r4, r5, lsl #8 + mov r5, r5, lsl #0x18 + and lr, lr, #0xff + and ip, ip, #0xff00 + and r4, r4, #0xff0000 + orr ip, lr, ip + and r5, r5, #0xff000000 + orr r4, r4, ip + orr r4, r5, r4 + str r4, [sp, #0xc] + ldr ip, [r0, #0xc] + strb ip, [sp, #0x11] + ldrh lr, [r1, #2] + str r2, [sp] + mov ip, lr, asr #8 + mov r2, lr, lsl #8 + and ip, ip, #0xff + and r2, r2, #0xff00 + orr r2, ip, r2 + mov r2, r2, lsl #0x10 + ldr r0, [r0] + ldr r1, [r1, #4] + mov r2, r2, lsr #0x10 + bl SendPacket_NN + add sp, sp, #0x50 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_023123E4: .word ov00_0231BF24 + arm_func_end SendConnectAck + + arm_func_start ProcessConnectPacket +ProcessConnectPacket: ; 0x023123E8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + ldrb r1, [r5, #0x13] + mov r4, r0 + cmp r1, #0 + bne _02312408 + mov r1, r2 + bl SendConnectAck +_02312408: + ldr r0, [r4, #0x10] + cmp r0, #2 + ldmgeia sp!, {r3, r4, r5, pc} + ldrb r0, [r5, #0x13] + cmp r0, #0 + beq _0231244C + mov r1, #4 + cmp r0, #1 + moveq r1, #1 + beq _02312438 + cmp r0, #2 + moveq r1, #2 +_02312438: + mov r0, r4 + mvn r2, #0 + mov r3, #0 + bl StartReport + ldmia sp!, {r3, r4, r5, pc} +_0231244C: + ldr r1, [r5, #0xc] + mov r0, #2 + str r1, [r4, #0x30] + ldrh r2, [r5, #0x10] + mov r1, #0 + mov r3, r2, asr #8 + mov r2, r2, lsl #8 + and r3, r3, #0xff + and r2, r2, #0xff00 + orr r2, r3, r2 + strh r2, [r4, #0x34] + str r1, [r4, #0x24] + str r0, [r4, #0x10] + ldr r1, [r4, #0x40] + ldr r2, [r4, #0x38] + blx r2 + mov r0, r4 + bl SendPingPacket + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ProcessConnectPacket + + arm_func_start ProcessPingPacket +ProcessPingPacket: ; 0x02312498 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r3, [r4, #0x10] + cmp r3, #2 + ldmltia sp!, {r4, pc} + ldr ip, [r2, #4] + mov r3, #1 + str ip, [r4, #0x30] + ldrh r2, [r2, #2] + mov ip, r2, asr #8 + mov r2, r2, lsl #8 + and ip, ip, #0xff + and r2, r2, #0xff00 + orr r2, ip, r2 + strh r2, [r4, #0x34] + strb r3, [r4, #0x36] + ldrb r2, [r1, #0x12] + cmp r2, #0 + bne _023124EC + bl SendPingPacket + ldmia sp!, {r4, pc} +_023124EC: + ldr r2, [r4, #0x10] + cmp r2, #2 + bne _02312524 + ldrb r1, [r4, #0x37] + cmp r1, #0 + bne _02312508 + bl SendPingPacket +_02312508: + mov r0, #3 + str r0, [r4, #0x10] + bl current_time_gsi + add r0, r0, #0x388 + add r0, r0, #0x1000 + str r0, [r4, #0x2c] + ldmia sp!, {r4, pc} +_02312524: + ldrb r1, [r1, #0x13] + cmp r1, #0 + ldmneia sp!, {r4, pc} + bl SendPingPacket + ldmia sp!, {r4, pc} + arm_func_end ProcessPingPacket + + arm_func_start ProcessInitPacket +ProcessInitPacket: ; 0x02312538 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r3, r1 + ldrb r1, [r3, #7] + mov r4, r0 + cmp r1, #1 + beq _0231256C + cmp r1, #2 + beq _02312608 + cmp r1, #0xe + beq _0231264C + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} +_0231256C: + ldrb r0, [r3, #0xc] + cmp r0, #3 + addhi sp, sp, #4 + ldmhiia sp!, {r3, r4, pc} + add r0, r4, r0, lsl #2 + mov r2, #1 + str r2, [r0, #0x14] + ldr r0, [r4, #0x10] + cmp r0, #0 + addne sp, sp, #4 + ldmneia sp!, {r3, r4, pc} + ldr r0, [r4, #0x18] + cmp r0, #0 + ldrne r0, [r4, #0x1c] + cmpne r0, #0 + ldrne r0, [r4, #0x20] + cmpne r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r3, r4, pc} + ldr r1, [r4, #4] + sub r0, r2, #2 + cmp r1, r0 + beq _023125D8 + ldr r0, [r4, #0x14] + cmp r0, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r3, r4, pc} +_023125D8: + mov r0, #1 + str r0, [r4, #0x10] + bl current_time_gsi + add r0, r0, #0x710 + add r0, r0, #0x2000 + str r0, [r4, #0x2c] + ldr r0, [r4, #0x10] + ldr r1, [r4, #0x40] + ldr r2, [r4, #0x38] + blx r2 + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} +_02312608: + mov r0, #3 + strb r0, [r3, #7] + ldrh r0, [r2, #2] + mov ip, #0x15 + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + str ip, [sp] + orr r0, r1, r0 + mov ip, r0, lsl #0x10 + ldr r1, [r2, #4] + ldr r0, [r4] + mov r2, ip, lsr #0x10 + bl SendPacket_NN + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} +_0231264C: + mov r0, #6 + str r0, [r4, #0x10] + ldr r0, [r4, #0x44] + ldr r1, [r4, #0x48] + ldr r3, [r4, #0x40] + ldr ip, [r4, #0x3c] + add r2, r4, #0x4c + blx ip + ldr r1, [r4, #4] + mvn r0, #0 + cmp r1, r0 + streq r0, [r4] + ldr r0, [r4, #8] + bl NnCancel + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + arm_func_end ProcessInitPacket + + arm_func_start NnProcessData +NnProcessData: ; 0x0231268C + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x4c + mov r6, r0 + mov r7, r1 + mov r5, r2 + bl CheckMagic_NN + cmp r0, #0 + addeq sp, sp, #0x4c + ldmeqia sp!, {r4, r5, r6, r7, pc} + ldrb r4, [r6, #7] + cmp r4, #5 + cmpne r4, #7 + bne _0231275C + cmp r7, #0x14 + addlt sp, sp, #0x4c + ldmltia sp!, {r4, r5, r6, r7, pc} + add r3, sp, #0 + mov r2, #0xa +_023126D4: + 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 _023126D4 + ldr r3, [sp, #8] + 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 r0, r1, r0 + bl FindNegotiatorForCookie + cmp r0, #0 + addeq sp, sp, #0x4c + ldmeqia sp!, {r4, r5, r6, r7, pc} + cmp r4, #5 + add r1, sp, #0 + mov r2, r5 + bne _02312750 + bl ProcessConnectPacket + add sp, sp, #0x4c + ldmia sp!, {r4, r5, r6, r7, pc} +_02312750: + bl ProcessPingPacket + add sp, sp, #0x4c + ldmia sp!, {r4, r5, r6, r7, pc} +_0231275C: + cmp r7, #0x15 + addlt sp, sp, #0x4c + ldmltia sp!, {r4, r5, r6, r7, pc} + add r3, sp, #0 + mov r2, #0xa +_02312770: + 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 _02312770 + ldrb r0, [r6] + strb r0, [r3] + ldr r3, [sp, #8] + 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 r0, r1, r0 + bl FindNegotiatorForCookie + cmp r0, #0 + addeq sp, sp, #0x4c + ldmeqia sp!, {r4, r5, r6, r7, pc} + add r1, sp, #0 + mov r2, r5 + bl ProcessInitPacket + add sp, sp, #0x4c + ldmia sp!, {r4, r5, r6, r7, pc} + arm_func_end NnProcessData + + arm_func_start qr2_init_socketa +qr2_init_socketa: ; 0x023127EC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x40 + movs r5, r0 + mov r8, r1 + mov r4, r2 + mov r7, r3 + ldreq r6, _02312998 ; =ov00_0231BF8C + beq _0231281C + ldr r0, _0231299C ; =0x00000D94 + bl gsimalloc + mov r6, r0 + str r0, [r5] +_0231281C: + bl current_time_gsi + bl srand + mov r1, r7 + add r0, r6, #4 + bl strcpy + ldr r1, [sp, #0x58] + add r0, r6, #0x44 + bl strcpy + str r4, [r6, #0xc0] + mov r5, #0 + str r5, [r6, #0xac] + str r5, [r6, #0xb0] + str r8, [r6] + mov r1, #1 + str r1, [r6, #0xb8] + ldr r0, [sp, #0x7c] + ldr r1, [sp, #0x64] + str r0, [r6, #0x10c] + str r1, [r6, #0x88] + ldr r0, [sp, #0x68] + ldr r1, [sp, #0x6c] + str r0, [r6, #0x8c] + str r1, [r6, #0x90] + ldr r0, [sp, #0x70] + ldr r1, [sp, #0x74] + str r0, [r6, #0x94] + ldr r0, [sp, #0x78] + str r1, [r6, #0x98] + str r0, [r6, #0x9c] + str r5, [r6, #0xa0] + str r5, [r6, #0xa4] + ldr r0, [sp, #0x5c] + str r5, [r6, #0xd4] + str r0, [r6, #0xbc] + ldr r0, [sp, #0x60] + str r5, [r6, #0xc4] + str r0, [r6, #0xc8] + str r5, [r6, #0x104] + add r0, r6, #0x100 + strh r5, [r0, #8] + str r5, [r6, #0xa8] + str r5, [r6, #0xb4] + ldr r4, _023129A0 ; =0x80808081 + strb r5, [r6, #0x110] + mov r8, #0xff +_023128D0: + bl rand + smull r1, r2, r4, r0 + add r3, r6, r5 + add r5, r5, #1 + add r2, r0, r2 + mov r1, r0, lsr #0x1f + add r2, r1, r2, asr #7 + smull r1, r2, r8, r2 + sub r2, r0, r1 + strb r2, [r3, #0x84] + cmp r5, #4 + blt _023128D0 + mov r2, #0 + mvn r1, #0 +_02312908: + add r0, r6, r2, lsl #2 + add r2, r2, #1 + str r1, [r0, #0xd8] + cmp r2, #0xa + blt _02312908 + mov r1, #0 + add r0, r6, #0x114 + mov r2, #0xc80 + str r1, [r6, #0x100] + bl memset + bl enum_local_ips + ldr r0, [sp, #0x5c] + cmp r0, #0 + beq _02312980 + ldr r0, _023129A4 ; =ov00_023293B4 + ldrsb r4, [r0] + cmp r4, #0 + bne _02312960 + ldr r1, _023129A8 ; =ov00_0231CD20 + add r0, sp, #0 + mov r2, r7 + bl OS_VsPrintf +_02312960: + cmp r4, #0 + ldrne r0, _023129A4 ; =ov00_023293B4 + ldr r1, _023129AC ; =0x00006CFC + addeq r0, sp, #0 + add r2, r6, #0xcc + mov r3, #0 + bl get_sockaddrin__02313638 + b _02312984 +_02312980: + mov r0, #1 +_02312984: + cmp r0, #0 + moveq r0, #3 + movne r0, #0 + add sp, sp, #0x40 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02312998: .word ov00_0231BF8C +_0231299C: .word 0x00000D94 +_023129A0: .word 0x80808081 +_023129A4: .word ov00_023293B4 +_023129A8: .word ov00_0231CD20 +_023129AC: .word 0x00006CFC + arm_func_end qr2_init_socketa + + arm_func_start qr2_register_natneg_callback +qr2_register_natneg_callback: ; 0x023129B0 + cmp r0, #0 + ldreq r0, _023129C4 ; =ov00_0231BF88 + ldreq r0, [r0] + str r1, [r0, #0xa0] + bx lr + .align 2, 0 +_023129C4: .word ov00_0231BF88 + arm_func_end qr2_register_natneg_callback + + arm_func_start qr2_register_clientmessage_callback +qr2_register_clientmessage_callback: ; 0x023129C8 + cmp r0, #0 + ldreq r0, _023129DC ; =ov00_0231BF88 + ldreq r0, [r0] + str r1, [r0, #0xa4] + bx lr + .align 2, 0 +_023129DC: .word ov00_0231BF88 + arm_func_end qr2_register_clientmessage_callback + + arm_func_start qr2_register_publicaddress_callback +qr2_register_publicaddress_callback: ; 0x023129E0 + cmp r0, #0 + ldreq r0, _023129F4 ; =ov00_0231BF88 + ldreq r0, [r0] + str r1, [r0, #0xa8] + bx lr + .align 2, 0 +_023129F4: .word ov00_0231BF88 + arm_func_end qr2_register_publicaddress_callback + + arm_func_start qr2_think +qr2_think: ; 0x023129F8 + stmdb sp!, {r4, lr} + movs r4, r0 + ldreq r0, _02312A30 ; =ov00_0231BF88 + ldreq r4, [r0] + ldr r0, [r4, #0xbc] + cmp r0, #0 + beq _02312A1C + mov r0, r4 + bl qr2_check_send_heartbeat +_02312A1C: + mov r0, r4 + bl qr2_check_queries + mov r0, r4 + bl qr2_expire_ip_verify + ldmia sp!, {r4, pc} + .align 2, 0 +_02312A30: .word ov00_0231BF88 + arm_func_end qr2_think + + arm_func_start qr2_check_queries +qr2_check_queries: ; 0x02312A34 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + mov r1, #8 + mov sl, r0 + str r1, [sp, #8] + ldr r0, [sl, #0xc4] + cmp r0, #0 + addeq sp, sp, #0x14 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [sl] + bl CanReceiveOnSocket + cmp r0, #0 + addeq sp, sp, #0x14 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r5, #0 + ldr r7, _02312ADC ; =ov00_023293F4 + add sb, sp, #0xc + add r8, sp, #8 + mov r6, #0xff + mov fp, r5 + mvn r4, #0 +_02312A88: + str sb, [sp] + str r8, [sp, #4] + ldr r0, [sl] + mov r1, r7 + mov r2, r6 + mov r3, fp + bl SocketRecvFrom + mov r2, r0 + cmp r2, r4 + beq _02312AC4 + mov r0, sl + mov r1, r7 + mov r3, sb + strb r5, [r7, r2] + bl qr2_parse_querya +_02312AC4: + ldr r0, [sl] + bl CanReceiveOnSocket + cmp r0, #0 + bne _02312A88 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02312ADC: .word ov00_023293F4 + arm_func_end qr2_check_queries + + arm_func_start qr2_check_send_heartbeat +qr2_check_send_heartbeat: ; 0x02312AE0 + stmdb sp!, {r4, lr} + mov r4, r0 + bl current_time_gsi + ldr r2, [r4] + mvn r1, #0 + cmp r2, r1 + ldmeqia sp!, {r4, pc} + ldr r3, [r4, #0xb8] + cmp r3, #0 + ble _02312B60 + ldr r2, [r4, #0xac] + ldr r1, _02312BE4 ; =0x00002710 + sub r2, r0, r2 + cmp r2, r1 + bls _02312B60 + cmp r3, #4 + blt _02312B44 + mov r0, #0 + str r0, [r4, #0xb8] + ldr r2, [r4, #0x10c] + ldr r3, [r4, #0x9c] + ldr r1, _02312BE8 ; =ov00_0231CD40 + mov r0, #5 + blx r3 + ldmia sp!, {r4, pc} +_02312B44: + mov r0, r4 + mov r1, #3 + bl send_heartbeat + ldr r0, [r4, #0xb8] + add r0, r0, #1 + str r0, [r4, #0xb8] + b _02312BC0 +_02312B60: + ldr r1, [r4, #0xb4] + cmp r1, #0 + beq _02312B90 + ldr r2, [r4, #0xac] + ldr r1, _02312BE4 ; =0x00002710 + sub r2, r0, r2 + cmp r2, r1 + bls _02312B90 + mov r0, r4 + mov r1, #1 + bl send_heartbeat + b _02312BC0 +_02312B90: + ldr r3, [r4, #0xac] + ldr r1, _02312BEC ; =0x0000EA60 + sub r2, r0, r3 + cmp r2, r1 + bhi _02312BB4 + cmp r3, #0 + beq _02312BB4 + cmp r0, r3 + bhs _02312BC0 +_02312BB4: + mov r0, r4 + mov r1, #0 + bl send_heartbeat +_02312BC0: + bl current_time_gsi + ldr r2, [r4, #0xb0] + ldr r1, _02312BF0 ; =0x00004E20 + sub r0, r0, r2 + cmp r0, r1 + ldmlsia sp!, {r4, pc} + mov r0, r4 + bl send_keepalive + ldmia sp!, {r4, pc} + .align 2, 0 +_02312BE4: .word 0x00002710 +_02312BE8: .word ov00_0231CD40 +_02312BEC: .word 0x0000EA60 +_02312BF0: .word 0x00004E20 + arm_func_end qr2_check_send_heartbeat + + arm_func_start qr2_send_statechanged +qr2_send_statechanged: ; 0x02312BF4 + stmdb sp!, {r4, lr} + movs r4, r0 + ldreq r0, _02312C48 ; =ov00_0231BF88 + ldreq r4, [r0] + ldr r0, [r4, #0xbc] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + bl current_time_gsi + ldr r2, [r4, #0xac] + ldr r1, _02312C4C ; =0x00002710 + sub r0, r0, r2 + cmp r0, r1 + movlo r0, #1 + strlo r0, [r4, #0xb4] + ldmloia sp!, {r4, pc} + mov r0, r4 + mov r1, #1 + bl send_heartbeat + mov r0, #0 + str r0, [r4, #0xb4] + ldmia sp!, {r4, pc} + .align 2, 0 +_02312C48: .word ov00_0231BF88 +_02312C4C: .word 0x00002710 + arm_func_end qr2_send_statechanged + + arm_func_start qr2_shutdown +qr2_shutdown: ; 0x02312C50 + stmdb sp!, {r4, lr} + movs r4, r0 + ldreq r0, _02312CCC ; =ov00_0231BF88 + ldreq r4, [r0] + ldr r0, [r4, #0xbc] + cmp r0, #0 + beq _02312C78 + mov r0, r4 + mov r1, #2 + bl send_heartbeat +_02312C78: + ldr r0, [r4] + mvn r1, #0 + cmp r0, r1 + ldrne r1, [r4, #0xc4] + cmpne r1, #0 + beq _02312C94 + bl SocketClose +_02312C94: + mvn r0, #0 + str r0, [r4] + mov r0, #0 + str r0, [r4, #0xac] + ldr r0, [r4, #0xc4] + cmp r0, #0 + beq _02312CB4 + bl SocketShutDown_Gsi +_02312CB4: + ldr r0, _02312CD0 ; =ov00_0231BF8C + cmp r4, r0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl gsifree + ldmia sp!, {r4, pc} + .align 2, 0 +_02312CCC: .word ov00_0231BF88 +_02312CD0: .word ov00_0231BF8C + arm_func_end qr2_shutdown + + arm_func_start qr2_keybuffer_add +qr2_keybuffer_add: ; 0x02312CD4 + ldr r3, [r0, #0x100] + cmp r3, #0xfe + movge r0, #0 + bxge lr + cmp r1, #1 + blt _02312CF4 + cmp r1, #0xfe + ble _02312CFC +_02312CF4: + mov r0, #0 + bx lr +_02312CFC: + add r2, r3, #1 + str r2, [r0, #0x100] + strb r1, [r0, r3] + mov r0, #1 + bx lr + arm_func_end qr2_keybuffer_add + + arm_func_start qr2_buffer_add_int +qr2_buffer_add_int: ; 0x02312D10 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x14 + mov r2, r1 + mov r4, r0 + ldr r1, _02312D40 ; =ov00_0231CD78 + add r0, sp, #0 + bl OS_VsPrintf + add r1, sp, #0 + mov r0, r4 + bl Qr2_Buffer_AddA + add sp, sp, #0x14 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_02312D40: .word ov00_0231CD78 + arm_func_end qr2_buffer_add_int + + arm_func_start Qr2_Buffer_AddA +Qr2_Buffer_AddA: ; 0x02312D44 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r1 + mov r4, r0 + mov r0, r6 + bl strlen + ldr r3, [r4, #0x578] + ldr r1, _02312DAC ; =0x00000578 + add r5, r0, #1 + sub r0, r1, r3 + cmp r5, r0 + movgt r5, r0 + cmp r5, #0 + movle r0, #0 + ldmleia sp!, {r4, r5, r6, pc} + mov r1, r6 + mov r2, r5 + add r0, r4, r3 + bl memcpy + ldr r0, [r4, #0x578] + mov r1, #0 + add r0, r0, r5 + str r0, [r4, #0x578] + sub r0, r0, #1 + strb r1, [r4, r0] + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02312DAC: .word 0x00000578 + arm_func_end Qr2_Buffer_AddA + + arm_func_start enum_local_ips +enum_local_ips: ; 0x02312DB0 + stmdb sp!, {r4, r5, r6, lr} + bl getlocalhost_gsi + cmp r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, _02312E1C ; =ov00_0232939C + mov r6, #0 + ldr ip, _02312E20 ; =ov00_023293A0 + str r6, [r1] +_02312DD0: + ldr r2, [r0, #0xc] + mov r5, r6, lsl #2 + ldr r4, [r2, r6, lsl #2] + cmp r4, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldrb r3, [r4] + ldrb r2, [r4, #1] + add r6, r6, #1 + add lr, ip, r5 + strb r3, [ip, r5] + strb r2, [lr, #1] + ldrb r3, [r4, #2] + ldrb r2, [r4, #3] + cmp r6, #5 + strb r3, [lr, #2] + strb r2, [lr, #3] + str r6, [r1] + blt _02312DD0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02312E1C: .word ov00_0232939C +_02312E20: .word ov00_023293A0 + arm_func_end enum_local_ips + + arm_func_start get_sockaddrin__02313638 +get_sockaddrin__02313638: ; 0x02312E24 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 + mov r4, r1, asr #8 + mov r1, r1, lsl #8 + mov r6, r2 + mov r5, #2 + and r2, r4, #0xff + and r1, r1, #0xff00 + strb r5, [r6, #1] + orr r1, r2, r1 + strh r1, [r6, #2] + mov r4, #0 + movs r7, r0 + mov r5, r3 + streq r4, [r6, #4] + beq _02312E70 + bl inet_addr_gsi + str r0, [r6, #4] +_02312E70: + ldr r1, [r6, #4] + mvn r0, #0 + cmp r1, r0 + bne _02312EB8 + ldr r1, _02312EC8 ; =ov00_0231CD7C + mov r0, r7 + bl strcmp + cmp r0, #0 + beq _02312EB8 + mov r0, r7 + bl Soc_GetHostByName + movs r4, r0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, [r4, #0xc] + ldr r0, [r0] + ldr r0, [r0] + str r0, [r6, #4] +_02312EB8: + cmp r5, #0 + strne r4, [r5] + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02312EC8: .word ov00_0231CD7C + arm_func_end get_sockaddrin__02313638 + + arm_func_start swap_byte_qr2 +swap_byte_qr2: ; 0x02312ECC + ldrb r3, [r0] + ldrb r2, [r1] + strb r2, [r0] + strb r3, [r1] + bx lr + arm_func_end swap_byte_qr2 + + arm_func_start encode_ct +encode_ct: ; 0x02312EE0 + cmp r0, #0x1a + addlo r0, r0, #0x41 + andlo r0, r0, #0xff + bxlo lr + cmp r0, #0x34 + addlo r0, r0, #0x47 + andlo r0, r0, #0xff + bxlo lr + cmp r0, #0x3e + sublo r0, r0, #4 + andlo r0, r0, #0xff + bxlo lr + moveq r0, #0x2b + bxeq lr + cmp r0, #0x3f + moveq r0, #0x2f + movne r0, #0 + bx lr + arm_func_end encode_ct + + arm_func_start gs_encode +gs_encode: ; 0x02312F28 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #8 + mov r7, r1 + mov r8, r0 + mov r6, r2 + cmp r7, #0 + mov r4, #0 + ble _02312FDC +_02312F48: + mov r2, #0 + add r3, sp, #4 + mov r0, r2 +_02312F54: + cmp r4, r7 + ldrltb r1, [r8], #1 + add r2, r2, #1 + add r4, r4, #1 + strltb r1, [r3] + strgeb r0, [r3] + cmp r2, #2 + add r3, r3, #1 + ble _02312F54 + ldrb r0, [sp, #4] + ldrb r5, [sp, #5] + ldrb r2, [sp, #6] + mov r3, r0, lsl #0x1e + mov r1, r5, asr #4 + add ip, r1, r3, lsr #26 + and r1, r2, #0x3f + mov r3, r5, lsl #0x1c + mov r2, r2, asr #6 + mov r0, r0, asr #2 + add r2, r2, r3, lsr #26 + add r5, sp, #0 + strb r0, [sp] + strb ip, [sp, #1] + strb r2, [sp, #2] + strb r1, [sp, #3] + mov sb, #0 +_02312FBC: + ldrb r0, [r5], #1 + bl encode_ct + add sb, sb, #1 + cmp sb, #3 + strb r0, [r6], #1 + ble _02312FBC + cmp r4, r7 + blt _02312F48 +_02312FDC: + mov r0, #0 + strb r0, [r6] + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end gs_encode + + arm_func_start gs_encrypt +gs_encrypt: ; 0x02312FEC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x104 + str r1, [sp] + add r4, sp, #4 + mov sl, r0 + mov sb, r2 + mov r8, r3 + mov r1, #0 +_0231300C: + add r0, r1, #1 + mov r0, r0, lsl #0x10 + strb r1, [r4], #1 + mov r1, r0, asr #0x10 + cmp r1, #0x100 + blt _0231300C + mov r4, #0 + add r6, sp, #4 + mov r5, r4 + mov r7, r4 + mov fp, r6 +_02313038: + ldrb r3, [r6] + ldrb r2, [sl, r4] + ldr r1, [sp] + add r0, r4, #1 + add r2, r3, r2 + add r2, r5, r2 + mov r3, r2, lsr #0x1f + rsb r2, r3, r2, lsl #24 + add r2, r3, r2, ror #24 + and r5, r2, #0xff + bl _s32_div_f + and r4, r1, #0xff + mov r0, r6 + add r1, fp, r5 + bl swap_byte_qr2 + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #0x100 + add r6, r6, #1 + blt _02313038 + mov r6, #0 + cmp r8, #0 + mov r7, r6 + mov r5, r6 + addle sp, sp, #0x104 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r4, sp, #4 +_023130A8: + ldrb r0, [sb, r5] + add r0, r6, r0 + add r0, r0, #1 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #24 + add r0, r1, r0, ror #24 + and r6, r0, #0xff + ldrb r1, [r4, r6] + add r0, r4, r6 + add r1, r1, r7 + mov r2, r1, lsr #0x1f + rsb r1, r2, r1, lsl #24 + add r1, r2, r1, ror #24 + and r7, r1, #0xff + add r1, r4, r7 + bl swap_byte_qr2 + ldrb r3, [r4, r6] + ldrb r1, [r4, r7] + add r0, r5, #1 + mov r2, r0, lsl #0x10 + add r0, r3, r1 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #24 + add r0, r1, r0, ror #24 + and r0, r0, #0xff + ldrb r1, [sb, r5] + ldrb r0, [r4, r0] + cmp r8, r2, asr #16 + eor r0, r1, r0 + strb r0, [sb, r5] + mov r5, r2, asr #0x10 + bgt _023130A8 + add sp, sp, #0x104 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end gs_encrypt + + arm_func_start qr_add_packet_header +qr_add_packet_header: ; 0x02313130 + strb r1, [r0] + ldrb ip, [r2] + ldrb r3, [r2, #1] + mov r1, #5 + strb ip, [r0, #1] + strb r3, [r0, #2] + ldrb r3, [r2, #2] + ldrb r2, [r2, #3] + strb r3, [r0, #3] + strb r2, [r0, #4] + str r1, [r0, #0x578] + bx lr + arm_func_end qr_add_packet_header + + arm_func_start compute_challenge_response +compute_challenge_response: ; 0x02313160 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0x44 + mov r5, r3 + cmp r5, #1 + mov r6, r0 + mov r4, r1 + addlt sp, sp, #0x44 + ldmltia sp!, {r3, r4, r5, r6, pc} + cmp r5, #0x41 + addgt sp, sp, #0x44 + ldmgtia sp!, {r3, r4, r5, r6, pc} + sub r0, r5, #1 + ldrsb r0, [r2, r0] + cmp r0, #0 + addne sp, sp, #0x44 + ldmneia sp!, {r3, r4, r5, r6, pc} + add r0, sp, #0 + mov r1, r2 + bl strcpy + add r0, r6, #0x44 + bl strlen + mov r1, r0 + add r2, sp, #0 + add r0, r6, #0x44 + sub r3, r5, #1 + bl gs_encrypt + ldr r2, [r4, #0x578] + sub r1, r5, #1 + add r0, sp, #0 + add r2, r4, r2 + bl gs_encode + ldr r0, [r4, #0x578] + add r0, r4, r0 + bl strlen + ldr r1, [r4, #0x578] + add r0, r0, #1 + add r0, r1, r0 + str r0, [r4, #0x578] + add sp, sp, #0x44 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end compute_challenge_response + + arm_func_start handle_public_address +handle_public_address: ; 0x02313200 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + mov r0, r1 + ldr r1, _023132AC ; =ov00_0231CD8C + add r2, sp, #4 + add r3, sp, #0 + bl Std_TsScanf + ldr r0, [sp, #4] + ldr lr, [sp] + 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 r1, r1, #0xff00 + orr r1, r2, r1 + and r3, r3, #0xff0000 + mov r0, lr, lsl #0x10 + and r2, ip, #0xff000000 + orr r1, r3, r1 + orrs r2, r2, r1 + mov r1, r0, lsr #0x10 + str r2, [sp, #4] + cmpne r1, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0x104] + cmp r0, r2 + addeq r0, r4, #0x100 + ldreqh r0, [r0, #8] + cmpeq r0, r1 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + str r2, [r4, #0x104] + add r0, r4, #0x100 + strh r1, [r0, #8] + ldr r0, [sp, #4] + ldr r2, [r4, #0x10c] + ldr r3, [r4, #0xa8] + blx r3 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_023132AC: .word ov00_0231CD8C + arm_func_end handle_public_address + + arm_func_start qr_build_partial_query_reply +qr_build_partial_query_reply: ; 0x023132B0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10c + movs fp, r3 + mov r3, #0 + ldr r7, [sp, #0x130] + str r3, [sp, #0x108] + mov sl, r0 + mov sb, r1 + mov r8, r2 + addeq sp, sp, #0x10c + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + sub r0, r8, #1 + cmp r0, #1 + bhi _02313360 + ldr r1, [sb, #0x578] + ldr r0, _02313504 ; =0x00000578 + sub r0, r0, r1 + cmp r0, #2 + addlo sp, sp, #0x10c + ldmloia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sl, #0x10c] + ldr r2, [sl, #0x98] + mov r0, r8 + blx r2 + str r0, [sp] + 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 + strh r0, [sp, #4] + add r0, sp, #4 + ldrb r1, [r0] + ldr r2, [sb, #0x578] + ldrb r0, [r0, #1] + add r3, sb, r2 + strb r1, [sb, r2] + strb r0, [r3, #1] + ldr r0, [sb, #0x578] + add r0, r0, #2 + str r0, [sb, #0x578] + b _02313368 +_02313360: + mov r0, #1 + str r0, [sp] +_02313368: + cmp fp, #0xff + bne _02313440 + ldr r2, [sl, #0x10c] + ldr r3, [sl, #0x94] + add r1, sp, #8 + mov r0, r8 + blx r3 + ldr r0, [sp, #0x108] + mov r5, #0 + cmp r0, #0 + ble _02313404 + ldr fp, _02313508 ; =ov00_0231CD98 + ldr r4, _0231350C ; =ov00_0231CF68 + add r7, sp, #8 +_023133A0: + ldrb r0, [r7] + ldr r1, [r4, r0, lsl #2] + mov r0, sb + cmp r1, #0 + moveq r1, fp + bl Qr2_Buffer_AddA + cmp r8, #0 + bne _023133F0 + ldrb r0, [r7] + ldr r2, [sl, #0x10c] + ldr r3, [sl, #0x88] + mov r1, sb + ldr r6, [sb, #0x578] + blx r3 + ldr r0, [sb, #0x578] + cmp r6, r0 + bne _023133F0 + ldr r1, _02313510 ; =ov00_0231CDA0 + mov r0, sb + bl Qr2_Buffer_AddA +_023133F0: + ldr r0, [sp, #0x108] + add r5, r5, #1 + cmp r5, r0 + add r7, r7, #1 + blt _023133A0 +_02313404: + ldr r1, [sb, #0x578] + ldr r0, _02313504 ; =0x00000578 + sub r0, r0, r1 + cmp r0, #1 + addlt sp, sp, #0x10c + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, r1, #1 + str r0, [sb, #0x578] + mov r0, #0 + strb r0, [sb, r1] + ldr fp, [sp, #0x108] + cmp r8, #0 + add r7, sp, #8 + addeq sp, sp, #0x10c + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02313440: + ldr r0, [sp] + mov r4, #0 + cmp r0, #0 + addle sp, sp, #0x10c + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02313454: + mov r5, #0 + cmp fp, #0 + ble _023134EC +_02313460: + cmp r8, #0 + ldr r6, [sb, #0x578] + bne _02313484 + ldrb r0, [r7, r5] + ldr r2, [sl, #0x10c] + ldr r3, [sl, #0x88] + mov r1, sb + blx r3 + b _023134C8 +_02313484: + cmp r8, #1 + bne _023134A8 + ldrb r0, [r7, r5] + ldr r3, [sl, #0x10c] + ldr ip, [sl, #0x8c] + mov r1, r4 + mov r2, sb + blx ip + b _023134C8 +_023134A8: + cmp r8, #2 + bne _023134C8 + ldrb r0, [r7, r5] + ldr r3, [sl, #0x10c] + ldr ip, [sl, #0x90] + mov r1, r4 + mov r2, sb + blx ip +_023134C8: + ldr r0, [sb, #0x578] + cmp r6, r0 + bne _023134E0 + ldr r1, _02313510 ; =ov00_0231CDA0 + mov r0, sb + bl Qr2_Buffer_AddA +_023134E0: + add r5, r5, #1 + cmp r5, fp + blt _02313460 +_023134EC: + ldr r0, [sp] + add r4, r4, #1 + cmp r4, r0 + blt _02313454 + add sp, sp, #0x10c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02313504: .word 0x00000578 +_02313508: .word ov00_0231CD98 +_0231350C: .word ov00_0231CF68 +_02313510: .word ov00_0231CDA0 + arm_func_end qr_build_partial_query_reply + + arm_func_start qr_build_query_reply +qr_build_query_reply: ; 0x02313514 + stmdb sp!, {r3, r4, r5, lr} + str r3, [sp] + mov r3, r2 + mov r2, #0 + mov r5, r0 + mov r4, r1 + bl qr_build_partial_query_reply + ldr ip, [sp, #0x14] + ldr r3, [sp, #0x10] + mov r0, r5 + mov r1, r4 + mov r2, #1 + str ip, [sp] + bl qr_build_partial_query_reply + ldr r0, [sp, #0x1c] + ldr r3, [sp, #0x18] + str r0, [sp] + mov r0, r5 + mov r1, r4 + mov r2, #2 + bl qr_build_partial_query_reply + ldmia sp!, {r3, r4, r5, pc} + arm_func_end qr_build_query_reply + + arm_func_start qr_build_split_query_reply +qr_build_split_query_reply: ; 0x0231356C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r8, r2 + ldr r2, [r8] + mov sl, r0 + cmp r2, #3 + mov sb, r1 + movge r0, #0 + ldmgeia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sb, #0x578] + ldr r0, _02313814 ; =0x00000578 + sub r0, r0, r1 + cmp r0, #0x20 + movlt r0, #0 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _02313818 ; =ov00_0231CDA4 + mov r0, sb + bl Qr2_Buffer_AddA + ldr r0, [sb, #0x578] + str r0, [sp] + add r0, r0, #1 + str r0, [sb, #0x578] + ldr r1, [r8, #4] + add r0, r1, #1 + str r0, [r8, #4] + ldr r0, [sp] + strb r1, [sb, r0] + ldr r0, [r8] + cmp r0, #3 + bge _023137F8 +_023135E0: + ldr r0, [r8, #0x114] + cmp r0, #0 + bne _02313600 + ldr r0, [r8] + ldr r2, [sl, #0x10c] + ldr r3, [sl, #0x94] + add r1, r8, #0x14 + blx r3 +_02313600: + ldr r0, [r8, #0xc] + cmp r0, #0 + bne _02313628 + ldr r0, [r8] + cmp r0, #0 + beq _02313628 + ldr r1, [sl, #0x10c] + ldr r2, [sl, #0x98] + blx r2 + str r0, [r8, #0xc] +_02313628: + ldr r1, [sb, #0x578] + ldr r4, _02313814 ; =0x00000578 + sub r0, r4, r1 + cmp r0, #0x64 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, r1, #1 + str r0, [sb, #0x578] + ldr r0, [r8] + strb r0, [sb, r1] + ldr r1, [r8, #8] + ldr r0, [r8, #0x114] + cmp r1, r0 + bge _023137A8 + mov r5, #0 + ldr r6, _0231381C ; =ov00_0231CF68 + mov fp, r5 +_0231366C: + add r0, r8, r1 + ldrb r7, [r0, #0x14] + mov r0, sb + ldr r1, [r6, r7, lsl #2] + bl Qr2_Buffer_AddA + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r8] + cmp r0, #0 + bne _023136C4 + ldr r2, [sl, #0x10c] + ldr r3, [sl, #0x88] + mov r0, r7 + mov r1, sb + blx r3 + ldr r0, [sb, #0x578] + sub r0, r4, r0 + cmp r0, #1 + bge _02313788 + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023136C4: + ldr r1, [sb, #0x578] + sub r0, r4, r1 + cmp r0, #1 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, r1 + add r0, r0, #1 + str r0, [sb, #0x578] + ldr r0, [r8, #0x10] + strb r0, [sb, r1] + ldr r1, [r8, #0x10] + ldr r0, [r8, #0xc] + cmp r1, r0 + bge _02313768 +_023136FC: + ldr r0, [r8] + cmp r0, #1 + bne _02313720 + ldr r3, [sl, #0x10c] + ldr ip, [sl, #0x8c] + mov r0, r7 + mov r2, sb + blx ip + b _0231373C +_02313720: + cmp r0, #2 + bne _0231373C + ldr r3, [sl, #0x10c] + ldr ip, [sl, #0x90] + mov r0, r7 + mov r2, sb + blx ip +_0231373C: + ldr r0, [sb, #0x578] + sub r0, r4, r0 + cmp r0, #1 + movlt r0, #1 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r0, [r8, #0x10] + add r1, r0, #1 + str r1, [r8, #0x10] + ldr r0, [r8, #0xc] + cmp r1, r0 + blt _023136FC +_02313768: + ldr r1, [sb, #0x578] + sub r0, r4, r1 + cmp r0, #0 + ble _02313788 + mov r0, r1 + add r0, r0, #1 + str r0, [sb, #0x578] + strb r5, [sb, r1] +_02313788: + ldr r0, [r8, #8] + add r0, r0, #1 + str r0, [r8, #8] + str fp, [r8, #0x10] + ldr r1, [r8, #8] + ldr r0, [r8, #0x114] + cmp r1, r0 + blt _0231366C +_023137A8: + ldr r1, [sb, #0x578] + ldr r0, _02313814 ; =0x00000578 + sub r0, r0, r1 + cmp r0, #0 + ble _023137CC + add r0, r1, #1 + str r0, [sb, #0x578] + mov r0, #0 + strb r0, [sb, r1] +_023137CC: + ldr r1, [r8] + mov r0, #0 + add r1, r1, #1 + str r1, [r8] + str r0, [r8, #8] + str r0, [r8, #0xc] + str r0, [r8, #0x10] + str r0, [r8, #0x114] + ldr r0, [r8] + cmp r0, #3 + blt _023135E0 +_023137F8: + ldr r0, [sp] + ldrb r1, [sb, r0] + mov r0, #1 + orr r2, r1, #0x80 + ldr r1, [sp] + strb r2, [sb, r1] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02313814: .word 0x00000578 +_02313818: .word ov00_0231CDA4 +_0231381C: .word ov00_0231CF68 + arm_func_end qr_build_split_query_reply + + arm_func_start qr_process_query +qr_process_query: ; 0x02313820 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x128 + mov ip, #0 + ldr r4, [sp, #0x148] + cmp r3, #3 + mov r6, r0 + mov r5, r1 + mov r7, ip + mov r8, ip + addlt sp, sp, #0x128 + mov lr, ip + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldrb sb, [r2], #1 + sub r3, r3, #1 + cmp sb, #0 + cmpne sb, #0xff + movne r7, r2 + subne r3, r3, sb + addne r2, r2, sb + cmp r3, #2 + addlt sp, sp, #0x128 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldrb r1, [r2], #1 + sub r3, r3, #1 + cmp r1, #0 + cmpne r1, #0xff + movne lr, r2 + subne r3, r3, r1 + addne r2, r2, r1 + cmp r3, #1 + addlt sp, sp, #0x128 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldrb sl, [r2], #1 + sub r3, r3, #1 + cmp sl, #0 + cmpne sl, #0xff + movne r8, r2 + subne r3, r3, sl + addne r2, r2, sl + cmp r3, #0 + addlt sp, sp, #0x128 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldrgtb ip, [r2] + and r0, ip, #1 + cmp r0, #1 + bne _0231396C + mov r3, #0 + add r2, sp, #0x10 + mov r0, r6 + mov r1, r5 + str r3, [sp, #0x14] + str r3, [sp, #0x10] + str r3, [sp, #0x18] + str r3, [sp, #0x1c] + str r3, [sp, #0x20] + str r3, [sp, #0x124] + bl qr_build_split_query_reply + cmp r0, #1 + addne sp, sp, #0x128 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + add sl, sp, #0x10 + mov sb, #8 + mov r8, #0 + mov r7, #5 +_02313920: + stmia sp, {r4, sb} + ldr r0, [r6] + ldr r2, [r5, #0x578] + mov r1, r5 + mov r3, r8 + bl SocketSendTo + str r7, [r5, #0x578] + ldr r0, [sp, #0x14] + cmp r0, #7 + addgt sp, sp, #0x128 + ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + mov r0, r6 + mov r1, r5 + mov r2, sl + bl qr_build_split_query_reply + cmp r0, #1 + beq _02313920 + add sp, sp, #0x128 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0231396C: + stmia sp, {r1, lr} + str sl, [sp, #8] + mov r0, r6 + mov r1, r5 + mov r2, sb + mov r3, r7 + str r8, [sp, #0xc] + bl qr_build_query_reply + str r4, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, [r6] + ldr r2, [r5, #0x578] + mov r1, r5 + mov r3, #0 + bl SocketSendTo + add sp, sp, #0x128 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end qr_process_query + + arm_func_start qr_process_client_message +qr_process_client_message: ; 0x023139B4 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0xc + ldr ip, _02313AD8 ; =ov00_02318760 + mov r3, r0 + ldrb r4, [ip] + ldrb r0, [ip, #1] + ldrb lr, [ip, #2] + strb r4, [sp, #4] + strb r0, [sp, #5] + ldrb r0, [ip, #3] + cmp r2, #0xa + add r6, sp, #4 + strb lr, [sp, #6] + strb r0, [sp, #7] + ldrb lr, [ip, #4] + ldrb r0, [ip, #5] + mov r5, #1 + strb lr, [sp, #8] + strb r0, [sp, #9] + blt _02313A30 + mov r4, #0 +_02313A08: + ldrb ip, [r6] + ldrb r0, [r1, r4] + cmp ip, r0 + movne r5, #0 + bne _02313A34 + add r4, r4, #1 + cmp r4, #6 + add r6, r6, #1 + blt _02313A08 + b _02313A34 +_02313A30: + mov r5, #0 +_02313A34: + cmp r5, #0 + beq _02313AB0 + ldrb r2, [r1, #6] + ldrb r0, [r1, #7] + add ip, sp, #0 + strb r2, [ip] + strb r0, [ip, #1] + ldrb r2, [r1, #8] + ldrb r0, [r1, #9] + strb r0, [ip, #3] + strb r2, [ip, #2] + ldr r2, [r3, #0xa0] + cmp r2, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r3, r4, r5, r6, pc} + ldr lr, [sp] + ldr r1, [r3, #0x10c] + mov r3, lr, lsr #0x18 + mov r0, lr, lsr #8 + mov ip, lr, lsl #8 + and r3, r3, #0xff + and r0, r0, #0xff00 + mov lr, lr, lsl #0x18 + orr r0, r3, r0 + and ip, ip, #0xff0000 + and r3, lr, #0xff000000 + orr r0, ip, r0 + orr r0, r3, r0 + blx r2 + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} +_02313AB0: + ldr ip, [r3, #0xa4] + cmp ip, #0 + addeq sp, sp, #0xc + ldmeqia sp!, {r3, r4, r5, r6, pc} + mov r0, r1 + mov r1, r2 + ldr r2, [r3, #0x10c] + blx ip + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02313AD8: .word ov00_02318760 + arm_func_end qr_process_client_message + + arm_func_start qr_got_recent_message +qr_got_recent_message: ; 0x02313ADC + stmdb sp!, {r4, lr} + mov r3, #0 +_02313AE4: + add r2, r0, r3, lsl #2 + ldr r2, [r2, #0xd8] + cmp r1, r2 + moveq r0, #1 + ldmeqia sp!, {r4, pc} + add r3, r3, #1 + cmp r3, #0xa + blt _02313AE4 + ldr r2, [r0, #0x100] + ldr ip, _02313B3C ; =0x66666667 + add lr, r2, #1 + smull r3, r4, ip, lr + mov r2, lr, lsr #0x1f + add r4, r2, r4, asr #2 + mov ip, #0xa + smull r2, r3, ip, r4 + sub r4, lr, r2 + str r4, [r0, #0x100] + add r0, r0, r4, lsl #2 + str r1, [r0, #0xd8] + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_02313B3C: .word 0x66666667 + arm_func_end qr_got_recent_message + + arm_func_start qr2_process_ip_verify +qr2_process_ip_verify: ; 0x02313B40 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov sl, r0 + mov sb, r1 + mov r5, r2 + mov r4, #0 + bl current_time_gsi + ldrb r1, [sl, #0x110] + mov r7, r0 + mvn r8, #0 + tst r1, #0x80 + mov r1, r4 + bne _02313B88 + mov r0, sb + bl qr2_buffer_add_int + add sp, sp, #0xc + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02313B88: + ldr r0, [r5, #4] + mov r3, r8 +_02313B90: + cmp r8, r3 + addeq r2, sl, r4, lsl #4 + ldreq r2, [r2, #0x118] + add r6, sl, r4, lsl #4 + cmpeq r2, #0 + ldr r2, [r6, #0x118] + moveq r8, r4 + cmp r0, r2 + bne _02313BC8 + add r2, r6, #0x100 + ldrh r6, [r5, #2] + ldrh r2, [r2, #0x16] + cmp r6, r2 + addeq r1, r1, #1 +_02313BC8: + add r4, r4, #1 + cmp r4, #0xc8 + blt _02313B90 + cmp r1, #5 + addgt sp, sp, #0xc + movgt r0, #0 + ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mvn r0, #0 + cmp r8, r0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [r5] + ldr r0, [r5, #4] + add r2, sl, r8, lsl #4 + str r1, [r2, #0x114] + str r0, [r2, #0x118] + bl rand + mov r6, r0 + bl rand + mov r5, r0 + bl rand + mov r4, r0 + bl rand + mov fp, r0 + bl rand + str r0, [sp] + bl rand + str r0, [sp, #4] + bl rand + str r0, [sp, #8] + bl rand + orr r6, r5, r6, lsl #16 + orr r5, fp, r4, lsl #16 + ldr r2, [sp, #4] + ldr r1, [sp] + add r4, sl, r8, lsl #4 + orr r3, r2, r1, lsl #16 + mov r1, r6, lsl #0x18 + and r2, r1, #0xff000000 + mov r1, r5, lsl #8 + mov r3, r3, lsr #0x18 + and r5, r3, #0xff + ldr r3, [sp, #8] + and r1, r1, #0xff0000 + orr r0, r0, r3, lsl #16 + mov r0, r0, lsr #8 + and r0, r0, #0xff00 + orr r0, r5, r0 + orr r0, r1, r0 + orr r0, r2, r0 + str r0, [r4, #0x11c] + str r7, [r4, #0x120] + ldr r1, [r4, #0x11c] + mov r0, sb + bl qr2_buffer_add_int + mov r0, #1 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end qr2_process_ip_verify + + arm_func_start qr2_check_ip_verify +qr2_check_ip_verify: ; 0x02313CB4 + stmdb sp!, {r4, r5, r6, lr} + ldr r6, [r1, #4] + mov r5, #0 +_02313CC0: + add r4, r0, r5, lsl #4 + ldr r3, [r4, #0x118] + cmp r6, r3 + bne _02313D00 + add r3, r4, #0x100 + ldrh lr, [r1, #2] + ldrh ip, [r3, #0x16] + cmp lr, ip + ldreq ip, [r4, #0x11c] + cmpeq r2, ip + bne _02313D00 + mov r0, #0 + str r0, [r4, #0x118] + strh r0, [r3, #0x16] + mov r0, #1 + ldmia sp!, {r4, r5, r6, pc} +_02313D00: + add r5, r5, #1 + cmp r5, #0xc8 + blt _02313CC0 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end qr2_check_ip_verify + + arm_func_start qr2_expire_ip_verify +qr2_expire_ip_verify: ; 0x02313D14 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, #0 + bl current_time_gsi + mov r1, r4 +_02313D28: + add r3, r5, r4, lsl #4 + ldr r2, [r3, #0x118] + cmp r2, #0 + beq _02313D48 + ldr r2, [r3, #0x120] + sub r2, r0, r2 + cmp r2, #0xfa0 + strhi r1, [r3, #0x118] +_02313D48: + add r4, r4, #1 + cmp r4, #0xc8 + blt _02313D28 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end qr2_expire_ip_verify + + arm_func_start qr2_parse_querya +qr2_parse_querya: ; 0x02313D58 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x18c + sub sp, sp, #0x400 + movs r8, r0 + mov r0, #0 + str r0, [sp, #0x588] + ldreq r0, _02314150 ; =ov00_0231BF88 + mov r7, r2 + ldreq r8, [r0] + ldrsb r0, [r1] + mov r6, r3 + cmp r0, #0x3b + bne _02313DBC + ldr r3, [r8, #0xd4] + cmp r3, #0 + addeq sp, sp, #0x18c + addeq sp, sp, #0x400 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + mov r0, r1 + mov r1, r7 + mov r2, r6 + blx r3 + add sp, sp, #0x18c + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_02313DBC: + cmp r7, #7 + addlt sp, sp, #0x18c + addlt sp, sp, #0x400 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, pc} + and r0, r0, #0xff + cmp r0, #0xfe + ldreqb r0, [r1, #1] + cmpeq r0, #0xfd + addne sp, sp, #0x18c + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r0, [r8, #0xb8] + add r4, r1, #3 + cmp r0, #0 + movgt r0, #0 + strgt r0, [r8, #0xb8] + ldrsb sb, [r1, #2] + add r5, r1, #7 + add r0, sp, #0x10 + mov r1, sb + mov r2, r4 + sub r7, r7, #7 + bl qr_add_packet_header + cmp sb, #9 + addls pc, pc, sb, lsl #2 + b _02314118 +_02313E24: ; jump table + b _02313E70 ; case 0 + b _02313F04 ; case 1 + b _02313F8C ; case 2 + b _02314118 ; case 3 + b _02313FC4 ; case 4 + b _02314118 ; case 5 + b _02314048 ; case 6 + b _02314118 ; case 7 + b _02314118 ; case 8 + b _02313E4C ; case 9 +_02313E4C: + add r1, sp, #0x10 + mov r0, r8 + mov r2, r6 + bl qr2_process_ip_verify + cmp r0, #0 + bne _02314124 + add sp, sp, #0x18c + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_02313E70: + ldrb r0, [r8, #0x110] + and r0, r0, #0x80 + cmp r0, #0x80 + bne _02313EE0 + cmp r7, #4 + addlt sp, sp, #0x18c + addlt sp, sp, #0x400 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, pc} + ldr r4, [r5], #4 + mov r0, r8 + mov r2, r4, lsr #0x18 + mov r1, r4, lsr #8 + mov r3, r4, lsl #8 + mov r4, r4, lsl #0x18 + and r2, r2, #0xff + and r1, r1, #0xff00 + and r3, r3, #0xff0000 + orr r1, r2, r1 + orr r2, r3, r1 + and r4, r4, #0xff000000 + mov r1, r6 + orr r2, r4, r2 + sub r7, r7, #4 + bl qr2_check_ip_verify + cmp r0, #0 + addeq sp, sp, #0x18c + addeq sp, sp, #0x400 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} +_02313EE0: + add r1, sp, #0x10 + mov r0, r8 + mov r2, r5 + mov r3, r7 + str r6, [sp] + bl qr_process_query + add sp, sp, #0x18c + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_02313F04: + mov r2, #0 + str r2, [sp, #0xc] +_02313F0C: + add r0, r8, r2 + ldrsb r1, [r4, r2] + ldrsb r0, [r0, #0x84] + cmp r1, r0 + addne sp, sp, #0x18c + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r2, r2, #1 + str r2, [sp, #0xc] + cmp r2, #4 + blt _02313F0C + cmp r7, #0xf + blt _02313F74 + add r4, r5, r7 + ldr r1, _02314154 ; =ov00_0231CDB0 + add r2, sp, #8 + sub r0, r4, #0xf + bl Std_TsScanf + ldr r0, [sp, #8] + strb r0, [r8, #0x110] + ldr r0, [r8, #0xa8] + cmp r0, #0 + beq _02313F74 + mov r0, r8 + sub r1, r4, #0xd + bl handle_public_address +_02313F74: + add r1, sp, #0x10 + mov r0, r8 + mov r2, r5 + mov r3, r7 + bl compute_challenge_response + b _02314124 +_02313F8C: + ldr r0, [sp, #0x588] + cmp r7, #0x20 + movgt r7, #0x20 + add r3, sp, #0x10 + mov r4, #5 + mov r1, r5 + mov r2, r7 + add r0, r3, r0 + strb r4, [sp, #0x10] + bl memcpy + ldr r0, [sp, #0x588] + add r0, r0, r7 + str r0, [sp, #0x588] + b _02314124 +_02313FC4: + ldr r1, [r8, #0xb8] + mvn r0, #0 + cmp r1, r0 + addeq sp, sp, #0x18c + addeq sp, sp, #0x400 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + mov r2, #0 + str r2, [sp, #0xc] +_02313FE4: + add r0, r8, r2 + ldrsb r1, [r4, r2] + ldrsb r0, [r0, #0x84] + cmp r1, r0 + addne sp, sp, #0x18c + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r2, r2, #1 + str r2, [sp, #0xc] + cmp r2, #4 + blt _02313FE4 + cmp r7, #2 + addlt sp, sp, #0x18c + addlt sp, sp, #0x400 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, pc} + mvn r0, #0 + str r0, [r8, #0xb8] + ldrsb r0, [r5] + ldr r2, [r8, #0x10c] + ldr r3, [r8, #0x9c] + add r1, r5, #1 + blx r3 + add sp, sp, #0x18c + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_02314048: + mov r2, #0 + str r2, [sp, #0xc] +_02314050: + add r0, r8, r2 + ldrsb r1, [r4, r2] + ldrsb r0, [r0, #0x84] + cmp r1, r0 + addne sp, sp, #0x18c + addne sp, sp, #0x400 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r2, r2, #1 + str r2, [sp, #0xc] + cmp r2, #4 + blt _02314050 + cmp r7, #4 + addlt sp, sp, #0x18c + addlt sp, sp, #0x400 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, pc} + mov r0, #7 + strb r0, [sp, #0x10] + ldrb r1, [r5] + ldrb r0, [r5, #1] + ldr r2, [sp, #0x588] + add r4, sp, #0x10 + strb r1, [r4, r2] + add r4, r4, r2 + strb r0, [r4, #1] + ldrb r2, [r5, #2] + ldrb r1, [r5, #3] + add r3, sp, #0xc + mov r0, r8 + strb r2, [r4, #2] + strb r1, [r4, #3] + ldr r1, [sp, #0x588] + add r1, r1, #4 + str r1, [sp, #0x588] + ldrb r2, [r5] + ldrb r1, [r5, #1] + strb r2, [r3] + strb r1, [r3, #1] + ldrb r2, [r5, #2] + ldrb r1, [r5, #3] + strb r2, [r3, #2] + strb r1, [r3, #3] + ldr r1, [sp, #0xc] + bl qr_got_recent_message + cmp r0, #0 + bne _02314124 + mov r0, r8 + add r1, r5, #4 + sub r2, r7, #4 + bl qr_process_client_message + b _02314124 +_02314118: + add sp, sp, #0x18c + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} +_02314124: + str r6, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, [r8] + ldr r2, [sp, #0x588] + add r1, sp, #0x10 + mov r3, #0 + bl SocketSendTo + add sp, sp, #0x18c + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02314150: .word ov00_0231BF88 +_02314154: .word ov00_0231CDB0 + arm_func_end qr2_parse_querya + + arm_func_start send_keepalive +send_keepalive: ; 0x02314158 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x184 + sub sp, sp, #0x400 + mov r4, r0 + mov r3, #0 + add r0, sp, #8 + add r2, r4, #0x84 + mov r1, #8 + str r3, [sp, #0x580] + bl qr_add_packet_header + add r0, r4, #0xcc + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, [r4] + ldr r2, [sp, #0x580] + add r1, sp, #8 + mov r3, #0 + bl SocketSendTo + bl current_time_gsi + str r0, [r4, #0xb0] + add sp, sp, #0x184 + add sp, sp, #0x400 + ldmia sp!, {r3, r4, pc} + arm_func_end send_keepalive + + arm_func_start send_heartbeat +send_heartbeat: ; 0x023141B8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x31c + sub sp, sp, #0x800 + mov sl, r0 + mov sb, r1 + mov r3, #0 + add r0, sp, #0x5a0 + add r2, sl, #0x84 + mov r1, #3 + str r3, [sp, #0xb18] + bl qr_add_packet_header + ldr r4, _0231440C ; =ov00_0232939C + mov r8, #0 + ldr r0, [r4] + cmp r0, #0 + ble _02314248 + ldr fp, _02314410 ; =ov00_0231CDB8 + ldr r5, _02314414 ; =ov00_023293A0 + add r7, sp, #0x10 + add r6, sp, #0x5a0 +_02314208: + mov r0, r7 + mov r1, fp + mov r2, r8 + bl OS_VsPrintf + mov r0, r6 + mov r1, r7 + bl Qr2_Buffer_AddA + ldr r0, [r5, r8, lsl #2] + bl Soc_InetNtoA + mov r1, r0 + mov r0, r6 + bl Qr2_Buffer_AddA + add r8, r8, #1 + ldr r0, [r4] + cmp r8, r0 + blt _02314208 +_02314248: + ldr r1, _02314418 ; =ov00_0231CDC4 + add r0, sp, #0x5a0 + bl Qr2_Buffer_AddA + ldr r1, [sl, #0xc0] + add r0, sp, #0x5a0 + bl qr2_buffer_add_int + ldr r1, _0231441C ; =ov00_0231CDD0 + add r0, sp, #0x5a0 + bl Qr2_Buffer_AddA + ldr r0, [sl, #0xc8] + cmp r0, #0 + ldrne r1, _02314420 ; =ov00_0231CDD8 + add r0, sp, #0x5a0 + ldreq r1, _02314424 ; =ov00_0231CDDC + bl Qr2_Buffer_AddA + cmp sb, #0 + beq _023142A4 + ldr r1, _02314428 ; =ov00_0231CDE0 + add r0, sp, #0x5a0 + bl Qr2_Buffer_AddA + add r0, sp, #0x5a0 + mov r1, sb + bl qr2_buffer_add_int +_023142A4: + ldr r1, _0231442C ; =ov00_0231CDF0 + add r0, sp, #0x5a0 + bl Qr2_Buffer_AddA + add r0, sp, #0x5a0 + add r1, sl, #4 + bl Qr2_Buffer_AddA + ldr r0, [sl, #0xa8] + cmp r0, #0 + beq _023142FC + ldr r1, _02314430 ; =ov00_0231CDFC + add r0, sp, #0x5a0 + bl Qr2_Buffer_AddA + ldr r1, [sl, #0x104] + add r0, sp, #0x5a0 + bl qr2_buffer_add_int + ldr r1, _02314434 ; =ov00_0231CE08 + add r0, sp, #0x5a0 + bl Qr2_Buffer_AddA + add r0, sl, #0x100 + ldrh r1, [r0, #8] + add r0, sp, #0x5a0 + bl qr2_buffer_add_int +_023142FC: + cmp sb, #2 + beq _0231439C + ldr r2, [sp, #0xb18] + add r0, sp, #0x24 + add r1, sp, #0x5a0 + bl memcpy + ldr r0, [sp, #0xb18] + mov r2, #0xff + str r0, [sp, #0x59c] + str r2, [sp] + mov r3, #0 + str r3, [sp, #4] + str r2, [sp, #8] + add r1, sp, #0x24 + mov r0, sl + str r3, [sp, #0xc] + bl qr_build_query_reply + ldr r1, [sp, #0x59c] + ldr r0, _02314438 ; =0x00000578 + sub r0, r0, r1 + cmp r0, #1 + bge _02314380 + ldr r0, [sp, #0xb18] + mov r3, #0 + str r0, [sp, #0x59c] + str r3, [sp] + str r3, [sp, #4] + str r3, [sp, #8] + add r1, sp, #0x24 + mov r0, sl + mov r2, #0xff + str r3, [sp, #0xc] + bl qr_build_query_reply +_02314380: + ldr r2, [sp, #0x59c] + add r0, sp, #0x5a0 + add r1, sp, #0x24 + bl memcpy + ldr r0, [sp, #0x59c] + str r0, [sp, #0xb18] + b _023143C4 +_0231439C: + ldr r2, [sp, #0xb18] + ldr r0, _02314438 ; =0x00000578 + sub r0, r0, r2 + cmp r0, #1 + blt _023143C4 + add r1, r2, #1 + str r1, [sp, #0xb18] + add r0, sp, #0x5a0 + mov r1, #0 + strb r1, [r0, r2] +_023143C4: + add r0, sl, #0xcc + str r0, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, [sl] + ldr r2, [sp, #0xb18] + add r1, sp, #0x5a0 + mov r3, #0 + bl SocketSendTo + bl current_time_gsi + str r0, [sl, #0xac] + str r0, [sl, #0xb0] + cmp sb, #0 + movne r0, #0 + strne r0, [sl, #0xb4] + add sp, sp, #0x31c + add sp, sp, #0x800 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0231440C: .word ov00_0232939C +_02314410: .word ov00_0231CDB8 +_02314414: .word ov00_023293A0 +_02314418: .word ov00_0231CDC4 +_0231441C: .word ov00_0231CDD0 +_02314420: .word ov00_0231CDD8 +_02314424: .word ov00_0231CDDC +_02314428: .word ov00_0231CDE0 +_0231442C: .word ov00_0231CDF0 +_02314430: .word ov00_0231CDFC +_02314434: .word ov00_0231CE08 +_02314438: .word 0x00000578 + arm_func_end send_heartbeat + + arm_func_start qr2_internal_is_master_only_key +qr2_internal_is_master_only_key: ; 0x0231443C + stmdb sp!, {r4, lr} + ldr r1, _02314480 ; =ov00_0231CF68 + mov r4, r0 + ldr r1, [r1, #0x7c] + bl strcmp + cmp r0, #0 + beq _02314470 + ldr r1, _02314480 ; =ov00_0231CF68 + mov r0, r4 + ldr r1, [r1, #0x80] + bl strcmp + cmp r0, #0 + bne _02314478 +_02314470: + mov r0, #1 + ldmia sp!, {r4, pc} +_02314478: + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_02314480: .word ov00_0231CF68 + arm_func_end qr2_internal_is_master_only_key + + arm_func_start keyrand_goa +keyrand_goa: ; 0x02314484 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + ldr r7, [sp, #0x28] + ldr r6, [sp, #0x2c] + movs sb, r1 + mov sl, r0 + mov fp, r2 + mov r8, r3 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp sb, #1 + mov r4, #0 + mov r5, #1 + bls _023144C8 +_023144B8: + mov r0, r5, lsl #1 + add r5, r0, #1 + cmp r5, sb + blo _023144B8 +_023144C8: + ldr r2, [r6] + add r0, r2, #1 + str r0, [r6] + ldrb r1, [r7] + ldrb r0, [fp, r2] + ldrb r1, [sl, r1] + add r0, r1, r0 + strb r0, [r7] + ldr r0, [r6] + cmp r0, r8 + blo _02314508 + mov r0, #0 + str r0, [r6] + ldrb r0, [r7] + add r0, r0, r8 + strb r0, [r7] +_02314508: + ldrb r0, [r7] + add r4, r4, #1 + cmp r4, #0xb + and r0, r5, r0 + bls _02314528 + mov r1, sb + bl _u32_div_f + mov r0, r1 +_02314528: + cmp r0, sb + bhi _023144C8 + and r0, r0, #0xff + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end keyrand_goa + + arm_func_start GoaHashInit +GoaHashInit: ; 0x02314538 + mov r1, #1 + strb r1, [r0, #0x100] + mov r1, #3 + strb r1, [r0, #0x101] + mov r1, #5 + strb r1, [r0, #0x102] + mov r1, #7 + strb r1, [r0, #0x103] + mov r1, #0xb + strb r1, [r0, #0x104] + mov r1, #0 + mov r2, #0xff +_02314568: + strb r2, [r0, r1] + add r1, r1, #1 + cmp r1, #0x100 + sub r2, r2, #1 + blt _02314568 + bx lr + arm_func_end GoaHashInit + + arm_func_start GoaCryptInit +GoaCryptInit: ; 0x02314580 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x10 + mov r7, r2 + mov sb, r0 + mov r8, r1 + cmp r7, #1 + bhs _023145A8 + bl GoaHashInit + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_023145A8: + mov r0, #0 +_023145AC: + strb r0, [sb, r0] + add r0, r0, #1 + cmp r0, #0x100 + blt _023145AC + mov r0, #0 + str r0, [sp, #0xc] + strb r0, [sp, #8] + mov r6, #0xff + add r5, sp, #8 + add r4, sp, #0xc +_023145D4: + str r5, [sp] + mov r0, sb + mov r1, r6 + mov r2, r8 + mov r3, r7 + str r4, [sp, #4] + bl keyrand_goa + ldrb r2, [sb, r6] + ldrb r1, [sb, r0] + strb r1, [sb, r6] + strb r2, [sb, r0] + subs r6, r6, #1 + bpl _023145D4 + ldrb r1, [sb, #1] + mov r0, #0 + strb r1, [sb, #0x100] + ldrb r1, [sb, #3] + strb r1, [sb, #0x101] + ldrb r1, [sb, #5] + strb r1, [sb, #0x102] + ldrb r1, [sb, #7] + strb r1, [sb, #0x103] + ldrb r1, [sp, #8] + ldrb r1, [sb, r1] + strb r1, [sb, #0x104] + strb r0, [sp, #8] + str r0, [sp, #0xc] + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end GoaCryptInit + + arm_func_start GoaEncryptByte +GoaEncryptByte: ; 0x02314648 + stmdb sp!, {r4, lr} + ldrb r4, [r0, #0x100] + add r2, r4, #1 + strb r2, [r0, #0x100] + ldrb r3, [r0, #0x101] + ldrb r2, [r0, r4] + add r2, r3, r2 + strb r2, [r0, #0x101] + ldrb r3, [r0, #0x104] + and r2, r2, #0xff + ldrb r2, [r0, r2] + ldrb r4, [r0, r3] + strb r2, [r0, r3] + ldrb r3, [r0, #0x103] + ldrb r2, [r0, #0x101] + ldrb r3, [r0, r3] + strb r3, [r0, r2] + ldrb r3, [r0, #0x100] + ldrb r2, [r0, #0x103] + ldrb r3, [r0, r3] + strb r3, [r0, r2] + ldrb r2, [r0, #0x100] + strb r4, [r0, r2] + ldrb r3, [r0, #0x102] + ldrb r2, [r0, r4] + add r4, r3, r2 + strb r4, [r0, #0x102] + ldrb r3, [r0, #0x103] + ldrb r2, [r0, #0x104] + ldrb ip, [r0, #0x101] + ldrb lr, [r0, #0x100] + and r4, r4, #0xff + ldrb r3, [r0, r3] + ldrb r2, [r0, r2] + ldrb ip, [r0, ip] + ldrb r4, [r0, r4] + add r2, r3, r2 + ldrb r3, [r0, lr] + add r2, ip, r2 + and r2, r2, #0xff + add r3, r4, r3 + ldrb r2, [r0, r2] + and r3, r3, #0xff + ldrb r3, [r0, r3] + ldrb r2, [r0, r2] + eor r3, r1, r3 + eor r2, r3, r2 + strb r2, [r0, #0x103] + strb r1, [r0, #0x104] + ldrb r0, [r0, #0x103] + ldmia sp!, {r4, pc} + arm_func_end GoaEncryptByte + + arm_func_start GoaEncrypt +GoaEncrypt: ; 0x02314714 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r2 + mov r7, r0 + mov r6, r1 + mov r4, #0 + cmp r5, #0 + ldmleia sp!, {r3, r4, r5, r6, r7, pc} +_02314730: + ldrb r1, [r6, r4] + mov r0, r7 + bl GoaEncryptByte + strb r0, [r6, r4] + add r4, r4, #1 + cmp r4, r5 + blt _02314730 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end GoaEncrypt + + arm_func_start FifoAddRear +FifoAddRear: ; 0x02314750 + ldr r2, [r0, #4] + cmp r2, #0 + strne r1, [r2, #0x24] + str r1, [r0, #4] + mov r2, #0 + str r2, [r1, #0x24] + ldr r2, [r0] + cmp r2, #0 + streq r1, [r0] + ldr r1, [r0, #8] + add r1, r1, #1 + str r1, [r0, #8] + bx lr + arm_func_end FifoAddRear + + arm_func_start FifoAddFront +FifoAddFront: ; 0x02314784 + ldr r2, [r0] + cmp r2, #0 + beq _023147B0 + ldr r1, [r2, #0x24] + str r1, [r0] + cmp r1, #0 + moveq r1, #0 + streq r1, [r0, #4] + ldr r1, [r0, #8] + sub r1, r1, #1 + str r1, [r0, #8] +_023147B0: + mov r0, r2 + bx lr + arm_func_end FifoAddFront + + arm_func_start FifoRemove +FifoRemove: ; 0x023147B8 + ldr r2, [r0] + mov r3, #0 + cmp r2, #0 + beq _0231481C +_023147C8: + cmp r2, r1 + bne _0231480C + cmp r3, #0 + ldrne r1, [r2, #0x24] + strne r1, [r3, #0x24] + ldr r1, [r0] + cmp r1, r2 + ldreq r1, [r2, #0x24] + streq r1, [r0] + ldr r1, [r0, #4] + cmp r1, r2 + streq r3, [r0, #4] + ldr r1, [r0, #8] + sub r1, r1, #1 + str r1, [r0, #8] + mov r0, #1 + bx lr +_0231480C: + mov r3, r2 + ldr r2, [r2, #0x24] + cmp r2, #0 + bne _023147C8 +_0231481C: + mov r0, #0 + bx lr + arm_func_end FifoRemove + + arm_func_start FifoClear +FifoClear: ; 0x02314824 + mov r1, #0 + str r1, [r0, #4] + str r1, [r0] + str r1, [r0, #8] + bx lr + arm_func_end FifoClear + + arm_func_start QeStartQuery +QeStartQuery: ; 0x02314838 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #0x114 + mov r2, #2 + mov r4, r1 + strb r2, [sp, #0xd] + mov r5, r0 + mov r6, #0 + bl current_time_gsi + str r0, [r4, #0x1c] + ldrb r1, [r4, #0x14] + tst r1, #0x20 + bne _02314AD0 + ldr r0, [r5] + cmp r0, #1 + bne _02314A00 + tst r1, #0x80 + beq _023148C0 + mov r2, #0xfe + mov r1, #0xfd + mov r0, #9 + strb r2, [sp, #0x14] + strb r1, [sp, #0x15] + strb r0, [sp, #0x16] + ldrb r1, [r4, #0x1c] + ldrb r0, [r4, #0x1d] + add r3, sp, #0x17 + mov r2, #7 + strb r1, [r3] + strb r0, [r3, #1] + ldrb r1, [r4, #0x1e] + ldrb r0, [r4, #0x1f] + strb r1, [r3, #2] + strb r0, [r3, #3] + b _02314A70 +_023148C0: + ldr r0, [r4, #0x20] + mov ip, r6 + mov r3, r0, lsr #0x18 + mov r2, r0, lsr #8 + mov lr, r0, lsl #8 + mov r6, r0, lsl #0x18 + mov r1, #0xfe + mov r0, #0xfd + strb r0, [sp, #0x15] + and r3, r3, #0xff + and r2, r2, #0xff00 + orr r2, r3, r2 + and lr, lr, #0xff0000 + and r3, r6, #0xff000000 + orr r2, lr, r2 + orrs r2, r3, r2 + str r2, [sp, #8] + strb r1, [sp, #0x14] + strb ip, [sp, #0x16] + ldrb r2, [r4, #0x1c] + ldrb r1, [r4, #0x1d] + add r3, sp, #0x17 + add r0, ip, #7 + strb r2, [r3] + strb r1, [r3, #1] + ldrb r2, [r4, #0x1e] + ldrb r1, [r4, #0x1f] + strb r2, [r3, #2] + strb r1, [r3, #3] + beq _02314968 + add ip, sp, #8 + ldrb r3, [ip] + ldrb r1, [ip, #1] + add lr, sp, #0x14 + strb r3, [lr, r0] + add r3, lr, r0 + strb r1, [r3, #1] + ldrb r2, [ip, #2] + ldrb r1, [ip, #3] + add r0, r0, #4 + strb r2, [r3, #2] + strb r1, [r3, #3] +_02314968: + ldrb r1, [r4, #0x14] + tst r1, #4 + beq _023149D0 + ldr r1, [r5, #0x40] + add r2, sp, #0x14 + strb r1, [r2, r0] + ldr r1, [r5, #0x40] + mov r3, #0 + add r0, r0, #1 + cmp r1, #0 + ble _023149B4 +_02314994: + add r1, r5, r3 + ldrb r1, [r1, #0x2c] + add r3, r3, #1 + strb r1, [r2, r0] + ldr r1, [r5, #0x40] + add r0, r0, #1 + cmp r3, r1 + blt _02314994 +_023149B4: + add r2, sp, #0x14 + mov r3, #0 + strb r3, [r2, r0] + add r1, r0, #1 + strb r3, [r2, r1] + add r2, r0, #2 + b _02314A70 +_023149D0: + add r3, sp, #0x14 + mov r2, #0xff + strb r2, [r3, r0] + add r1, r0, #1 + strb r2, [r3, r1] + add r1, r0, #2 + strb r2, [r3, r1] + add r1, r0, #3 + mov r2, #1 + strb r2, [r3, r1] + add r2, r0, #4 + b _02314A70 +_02314A00: + tst r1, #4 + add ip, sp, #0x14 + beq _02314A44 + ldr r3, _02314AF8 ; =ov00_0231D360 + mov r2, #6 +_02314A14: + 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 _02314A14 + ldrb r0, [r3] + mov r2, #0xd + strb r0, [ip] + b _02314A70 +_02314A44: + ldr r3, _02314AFC ; =ov00_0231D370 + mov r2, #4 +_02314A4C: + 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 _02314A4C + mov r2, #8 +_02314A70: + ldr r1, [r4] + ldr r0, [r5, #0x28] + cmp r1, r0 + bne _02314AA0 + ldrb r0, [r4, #0x15] + tst r0, #2 + beq _02314AA0 + ldr r0, [r4, #8] + str r0, [sp, #0x10] + ldrh r0, [r4, #0xc] + strh r0, [sp, #0xe] + b _02314AAC +_02314AA0: + str r1, [sp, #0x10] + ldrh r0, [r4, #4] + strh r0, [sp, #0xe] +_02314AAC: + add r1, sp, #0xc + str r1, [sp] + mov r0, #8 + str r0, [sp, #4] + ldr r0, [r5, #0x20] + add r1, sp, #0x14 + mov r3, #0 + bl SocketSendTo + mov r6, #1 +_02314AD0: + cmp r6, #0 + moveq r0, #0 + addeq sp, sp, #0x114 + streq r0, [r4, #0x1c] + ldmeqia sp!, {r3, r4, r5, r6, pc} + mov r1, r4 + add r0, r5, #8 + bl FifoAddRear + add sp, sp, #0x114 + ldmia sp!, {r3, r4, r5, r6, pc} + .align 2, 0 +_02314AF8: .word ov00_0231D360 +_02314AFC: .word ov00_0231D370 + arm_func_end QeStartQuery + + arm_func_start SbEngineHaltUpdates +SbEngineHaltUpdates: ; 0x02314B00 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x14 + bl FifoClear + add r0, r4, #8 + bl FifoClear + ldmia sp!, {r4, pc} + arm_func_end SbEngineHaltUpdates + + arm_func_start SbEngineCleanup +SbEngineCleanup: ; 0x02314B1C + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x20] + bl SocketClose + mvn r1, #0 + add r0, r4, #0x14 + str r1, [r4, #0x20] + bl FifoClear + add r0, r4, #8 + bl FifoClear + ldmia sp!, {r4, pc} + arm_func_end SbEngineCleanup + + arm_func_start ParseSingleQR2Reply +ParseSingleQR2Reply: ; 0x02314B48 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r8, r2 + ldrsb r2, [r8] + mov sl, r0 + mov sb, r1 + cmp r2, #0 + mov r7, r3 + cmpne r2, #9 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [sb, #0x14] + add r8, r8, #5 + sub r7, r7, #5 + tst r0, #0x80 + beq _02314BD0 + and r0, r0, #0x7f + strb r0, [sb, #0x14] + cmp r7, #0 + ble _02314CC0 + mov r0, r8 + bl atoi + str r0, [sb, #0x20] + mov r1, sb + add r0, sl, #8 + bl FifoRemove + mov r0, sl + mov r1, sb + bl QeStartQuery + ldr r3, [sl, #0x48] + ldr r4, [sl, #0x44] + mov r2, sb + mov r0, sl + mov r1, #3 + blx r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02314BD0: + tst r0, #4 + beq _02314C54 + ldr r0, [sl, #0x40] + mov r4, #0 + cmp r0, #0 + ble _02314C44 + ldr fp, _02314D04 ; =ov00_0231CF68 +_02314BEC: + mov r0, r8 + mov r1, r7 + bl NtsLengthSB + movs r5, r0 + bmi _02314C44 + add r6, sl, r4 + ldrb r0, [r6, #0x2c] + ldr r0, [fp, r0, lsl #2] + bl qr2_internal_is_master_only_key + cmp r0, #0 + bne _02314C2C + ldrb r1, [r6, #0x2c] + mov r0, sb + mov r2, r8 + ldr r1, [fp, r1, lsl #2] + bl SbServerAddKeyValue +_02314C2C: + ldr r0, [sl, #0x40] + add r4, r4, #1 + cmp r4, r0 + add r8, r8, r5 + sub r7, r7, r5 + blt _02314BEC +_02314C44: + ldrb r0, [sb, #0x14] + orr r0, r0, #0x41 + strb r0, [sb, #0x14] + b _02314CC0 +_02314C54: + ldrsb r0, [r8] + cmp r0, #0 + beq _02314CA4 + ldr r0, _02314D08 ; =ov00_0231D37C + mov r1, r8 + mov r2, #8 + bl strncmp + cmp r0, #0 + bne _02314CA4 + mov r0, sb + mov r1, r8 + mov r2, r7 + bl SbServerParseQR2FullKeysSplit + ldrb r0, [sb, #0x28] + cmp r0, #0xff + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [sb, #0x14] + orr r0, r0, #0x43 + strb r0, [sb, #0x14] + b _02314CC0 +_02314CA4: + mov r0, sb + mov r1, r8 + mov r2, r7 + bl SbServerParseQR2FullKeysSingle + ldrb r0, [sb, #0x14] + orr r0, r0, #0x43 + strb r0, [sb, #0x14] +_02314CC0: + ldrb r0, [sb, #0x14] + and r0, r0, #0xf3 + strb r0, [sb, #0x14] + bl current_time_gsi + ldr r2, [sb, #0x1c] + mov r1, sb + sub r0, r0, r2 + str r0, [sb, #0x1c] + add r0, sl, #8 + bl FifoRemove + ldr r3, [sl, #0x48] + ldr r4, [sl, #0x44] + mov r0, sl + mov r2, sb + mov r1, #0 + blx r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02314D04: .word ov00_0231CF68 +_02314D08: .word ov00_0231D37C + arm_func_end ParseSingleQR2Reply + + arm_func_start ParseSingleGoaReply +ParseSingleGoaReply: ; 0x02314D0C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r1 + mov r7, r2 + mov r5, r0 + ldr r1, _02314DA0 ; =ov00_0231D388 + mov r0, r7 + bl strstr + cmp r0, #0 + movne r6, #1 + moveq r6, #0 + mov r0, r4 + mov r1, r7 + bl SbServerParseKeyVals + cmp r6, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldrb r0, [r4, #0x14] + tst r0, #4 + orrne r0, r0, #0x41 + orreq r0, r0, #0x42 + strb r0, [r4, #0x14] + ldrb r0, [r4, #0x14] + and r0, r0, #0xf3 + strb r0, [r4, #0x14] + bl current_time_gsi + ldr r2, [r4, #0x1c] + mov r1, r4 + sub r0, r0, r2 + str r0, [r4, #0x1c] + add r0, r5, #8 + bl FifoRemove + ldr r3, [r5, #0x48] + ldr ip, [r5, #0x44] + mov r0, r5 + mov r2, r4 + mov r1, #0 + blx ip + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02314DA0: .word ov00_0231D388 + arm_func_end ParseSingleGoaReply + + arm_func_start ParseSingleIcmpReply +ParseSingleIcmpReply: ; 0x02314DA4 + mov r0, #1 + bx lr + arm_func_end ParseSingleIcmpReply + + arm_func_start ProcessIncomingReplies +ProcessIncomingReplies: ; 0x02314DAC + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x14 + sub sp, sp, #0x800 + movs r8, r1 + mov r1, #8 + mov sb, r0 + str r1, [sp, #8] + mov r7, #0 + ldreq r7, [sb, #0x20] + mov r0, r7 + bl CanReceiveOnSocket + cmp r0, #0 + addeq sp, sp, #0x14 + addeq sp, sp, #0x800 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} +_02314DE8: + add r0, sp, #0xc + str r0, [sp] + add r4, sp, #8 + ldr r2, _02314F3C ; =0x000007FF + add r1, sp, #0x14 + mov r0, r7 + mov r3, #0 + str r4, [sp, #4] + bl SocketRecvFrom + mov r5, r0 + mvn r0, #0 + cmp r5, r0 + addeq sp, sp, #0x14 + addeq sp, sp, #0x800 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, pc} + add r4, sp, #0x14 + mov r0, #0 + strb r0, [r4, r5] + ldr r6, [sb, #8] + cmp r6, #0 + beq _02314F20 +_02314E3C: + cmp r8, #0 + beq _02314E60 + ldrb r0, [r6, #0x15] + tst r0, #8 + beq _02314E60 + ldr r1, [r6, #0x10] + ldr r0, [sp, #0x10] + cmp r1, r0 + beq _02314EB8 +_02314E60: + ldr r3, [sp, #0x10] + ldr r2, [r6] + cmp r2, r3 + bne _02314E88 + ldrh r1, [r6, #4] + ldrh r0, [sp, #0xe] + cmp r1, r0 + beq _02314EB8 + cmp r8, #0 + bne _02314EB8 +_02314E88: + ldr r0, [sb, #0x28] + cmp r2, r0 + bne _02314F14 + ldrb r0, [r6, #0x15] + tst r0, #2 + beq _02314F14 + ldr r0, [r6, #8] + cmp r0, r3 + ldreqh r1, [r6, #0xc] + ldreqh r0, [sp, #0xe] + cmpeq r1, r0 + bne _02314F14 +_02314EB8: + cmp r8, #0 + beq _02314EE0 + mov r0, sb + mov r1, r6 + mov r2, r4 + mov r3, r5 + bl ParseSingleIcmpReply + cmp r0, #0 + bne _02314F20 + b _02314F14 +_02314EE0: + ldr r0, [sb] + add r2, sp, #0x14 + cmp r0, #1 + mov r0, sb + bne _02314F04 + mov r1, r6 + mov r3, r5 + bl ParseSingleQR2Reply + b _02314F20 +_02314F04: + mov r1, r6 + mov r3, r5 + bl ParseSingleGoaReply + b _02314F20 +_02314F14: + ldr r6, [r6, #0x24] + cmp r6, #0 + bne _02314E3C +_02314F20: + mov r0, r7 + bl CanReceiveOnSocket + cmp r0, #0 + bne _02314DE8 + add sp, sp, #0x14 + add sp, sp, #0x800 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_02314F3C: .word 0x000007FF + arm_func_end ProcessIncomingReplies + + arm_func_start TimeoutOldQueries +TimeoutOldQueries: ; 0x02314F40 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r6, r0 + bl current_time_gsi + ldr r3, [r6, #8] + mov r5, r0 + cmp r3, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + ldr r4, _02314FCC ; =0x000009C4 + mov r7, #1 +_02314F64: + ldr r0, [r3, #0x1c] + add r0, r0, #0x1c4 + add r0, r0, #0x800 + cmp r5, r0 + ldmlsia sp!, {r3, r4, r5, r6, r7, pc} + ldrb r2, [r3, #0x15] + mov r0, r6 + mov r1, r7 + orr r2, r2, #0x10 + strb r2, [r3, #0x15] + ldr r2, [r6, #8] + str r4, [r2, #0x1c] + ldr r3, [r6, #8] + ldrb r2, [r3, #0x15] + and r2, r2, #0xd3 + strb r2, [r3, #0x15] + ldr r2, [r6, #8] + ldr r3, [r6, #0x48] + ldr ip, [r6, #0x44] + blx ip + add r0, r6, #8 + bl FifoAddFront + ldr r3, [r6, #8] + cmp r3, #0 + bne _02314F64 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02314FCC: .word 0x000009C4 + arm_func_end TimeoutOldQueries + + arm_func_start QueueNextQueries +QueueNextQueries: ; 0x02314FD0 + stmdb sp!, {r4, lr} + mov r4, r0 + b _02314FF0 +_02314FDC: + add r0, r4, #0x14 + bl FifoAddFront + mov r1, r0 + mov r0, r4 + bl QeStartQuery +_02314FF0: + ldr r1, [r4, #0x10] + ldr r0, [r4, #4] + cmp r1, r0 + ldmgeia sp!, {r4, pc} + ldr r0, [r4, #0x1c] + cmp r0, #0 + bgt _02314FDC + ldmia sp!, {r4, pc} + arm_func_end QueueNextQueries + + arm_func_start SbQueryEngineThink +SbQueryEngineThink: ; 0x02315010 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, [r4, #0x10] + cmp r1, #0 + ldmeqia sp!, {r4, pc} + mov r1, #0 + bl ProcessIncomingReplies + mov r0, r4 + bl TimeoutOldQueries + ldr r0, [r4, #0x1c] + cmp r0, #0 + ble _02315048 + mov r0, r4 + bl QueueNextQueries +_02315048: + ldr r0, [r4, #0x10] + cmp r0, #0 + ldmneia sp!, {r4, pc} + ldr r3, [r4, #0x48] + ldr ip, [r4, #0x44] + mov r0, r4 + mov r1, #2 + mov r2, #0 + blx ip + ldmia sp!, {r4, pc} + arm_func_end SbQueryEngineThink + + arm_func_start SbQueryEngineAddQueryKey +SbQueryEngineAddQueryKey: ; 0x02315070 + ldr r3, [r0, #0x40] + cmp r3, #0x14 + bxge lr + add r2, r3, #1 + str r2, [r0, #0x40] + add r0, r0, r3 + strb r1, [r0, #0x2c] + bx lr + arm_func_end SbQueryEngineAddQueryKey + + arm_func_start RefStringHash +RefStringHash: ; 0x02315090 + ldr ip, _0231509C ; =StringHash + ldr r0, [r0] + bx ip + .align 2, 0 +_0231509C: .word StringHash + arm_func_end RefStringHash + + arm_func_start RefStringCompare +RefStringCompare: ; 0x023150A0 + ldr ip, _023150B0 ; =strcasecmp + ldr r0, [r0] + ldr r1, [r1] + bx ip + .align 2, 0 +_023150B0: .word strcasecmp + arm_func_end RefStringCompare + + arm_func_start RefStringFree +RefStringFree: ; 0x023150B4 + ldr ip, _023150C0 ; =gsifree + ldr r0, [r0] + bx ip + .align 2, 0 +_023150C0: .word gsifree + arm_func_end RefStringFree + + arm_func_start SbRefStrHash +SbRefStrHash: ; 0x023150C4 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r0, _02315118 ; =ov00_023294F4 + ldr r0, [r0, #4] + cmp r0, #0 + bne _02315108 + ldr r0, _0231511C ; =RefStringCompare + ldr ip, _02315120 ; =RefStringFree + str r0, [sp] + ldr r3, _02315124 ; =RefStringHash + mov r0, #8 + mov r1, #0x64 + mov r2, #2 + str ip, [sp, #4] + bl TableNew2_Gsi + ldr r1, _02315118 ; =ov00_023294F4 + str r0, [r1, #4] +_02315108: + ldr r0, _02315118 ; =ov00_023294F4 + ldr r0, [r0, #4] + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_02315118: .word ov00_023294F4 +_0231511C: .word RefStringCompare +_02315120: .word RefStringFree +_02315124: .word RefStringHash + arm_func_end SbRefStrHash + + arm_func_start SbRefStrHashCleanup +SbRefStrHashCleanup: ; 0x02315128 + stmdb sp!, {r3, lr} + ldr r0, _02315164 ; =ov00_023294F4 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl TableCount_Gsi + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _02315164 ; =ov00_023294F4 + ldr r0, [r0, #4] + bl TableFree_Gsi + ldr r0, _02315164 ; =ov00_023294F4 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02315164: .word ov00_023294F4 + arm_func_end SbRefStrHashCleanup + + arm_func_start SbServerFree +SbServerFree: ; 0x02315168 + stmdb sp!, {r4, lr} + ldr r4, [r0] + ldr r0, [r4, #0x18] + bl TableFree_Gsi + mov r1, #0 + mov r0, r4 + str r1, [r4, #0x18] + bl gsifree + ldmia sp!, {r4, pc} + arm_func_end SbServerFree + + arm_func_start SbServerAddKeyValue +SbServerAddKeyValue: ; 0x0231518C + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r5, r0 + mov r4, r2 + mov r0, #0 + bl SbRefStr + str r0, [sp] + mov r1, r4 + mov r0, #0 + bl SbRefStr + str r0, [sp, #4] + ldr r0, [r5, #0x18] + add r1, sp, #0 + bl TableEnter_Gsi + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end SbServerAddKeyValue + + arm_func_start SbServerAddIntKeyValue +SbServerAddIntKeyValue: ; 0x023151CC + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x14 + mov r4, r1 + mov r5, r0 + ldr r1, _02315200 ; =ov00_0231D3A0 + add r0, sp, #0 + bl OS_VsPrintf + add r2, sp, #0 + mov r0, r5 + mov r1, r4 + bl SbServerAddKeyValue + add sp, sp, #0x14 + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_02315200: .word ov00_0231D3A0 + arm_func_end SbServerAddIntKeyValue + + arm_func_start SbServerGetStringValueA +SbServerGetStringValueA: ; 0x02315204 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + cmp r0, #0 + mov r5, r2 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + str r1, [sp] + ldr r0, [r0, #0x18] + add r1, sp, #0 + bl TableLookup_Gsi + cmp r0, #0 + beq _0231524C + ldr r4, [r0, #4] + mov r0, r4 + bl strlen + cmp r0, #0 + bne _02315258 +_0231524C: + add sp, sp, #8 + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} +_02315258: + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end SbServerGetStringValueA + + arm_func_start SbServerGetIntValueA +SbServerGetIntValueA: ; 0x02315264 + stmdb sp!, {r4, r5, r6, lr} + movs r6, r0 + mov r4, r2 + mov r5, r1 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, _02315304 ; =ov00_0231D3A4 + mov r0, r5 + bl strcmp + cmp r0, #0 + mov r0, r6 + bne _0231529C + bl SbServerGetPing + ldmia sp!, {r4, r5, r6, pc} +_0231529C: + mov r1, r5 + mov r2, #0 + bl SbServerGetStringValueA + cmp r0, #0 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, pc} + ldrsb r1, [r0] + cmp r1, #0x2d + movne r1, r0 + addeq r1, r0, #1 + ldrb r2, [r1] + cmp r2, #0 + blt _023152D8 + cmp r2, #0x80 + blt _023152E0 +_023152D8: + mov r1, #0 + b _023152F0 +_023152E0: + ldr r1, _02315308 ; =_020AEDB0 + mov r2, r2, lsl #1 + ldrh r1, [r1, r2] + and r1, r1, #8 +_023152F0: + cmp r1, #0 + moveq r0, r4 + ldmeqia sp!, {r4, r5, r6, pc} + bl atoi + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02315304: .word ov00_0231D3A4 +_02315308: .word _020AEDB0 + arm_func_end SbServerGetIntValueA + + arm_func_start SbServerGetPublicInetAddress +SbServerGetPublicInetAddress: ; 0x0231530C + ldr r0, [r0] + bx lr + arm_func_end SbServerGetPublicInetAddress + + arm_func_start SbServerGetPublicQueryPort +SbServerGetPublicQueryPort: ; 0x02315314 + ldrh r0, [r0, #4] + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bx lr + arm_func_end SbServerGetPublicQueryPort + + arm_func_start SbServerGetPublicQueryPortNbo +SbServerGetPublicQueryPortNbo: ; 0x02315338 + ldrh r0, [r0, #4] + bx lr + arm_func_end SbServerGetPublicQueryPortNbo + + arm_func_start SbServerHasPrivateAddress +SbServerHasPrivateAddress: ; 0x02315340 + ldrb r0, [r0, #0x15] + and r0, r0, #2 + cmp r0, #2 + moveq r0, #1 + movne r0, #0 + bx lr + arm_func_end SbServerHasPrivateAddress + + arm_func_start SbServerGetPrivateInetAddress +SbServerGetPrivateInetAddress: ; 0x02315358 + ldr r0, [r0, #8] + bx lr + arm_func_end SbServerGetPrivateInetAddress + + arm_func_start SbServerGetPrivateQueryPort +SbServerGetPrivateQueryPort: ; 0x02315360 + ldrh r0, [r0, #0xc] + mov r1, r0, asr #8 + mov r0, r0, lsl #8 + and r1, r1, #0xff + and r0, r0, #0xff00 + orr r0, r1, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bx lr + arm_func_end SbServerGetPrivateQueryPort + + arm_func_start SbServerSetNext +SbServerSetNext: ; 0x02315384 + str r1, [r0, #0x24] + bx lr + arm_func_end SbServerSetNext + + arm_func_start SbServerGetNext +SbServerGetNext: ; 0x0231538C + ldr r0, [r0, #0x24] + bx lr + arm_func_end SbServerGetNext + + arm_func_start CheckValidKey +CheckValidKey: ; 0x02315394 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r1, _023153F0 ; =ov00_02318768 + add r4, sp, #0 + ldr r2, [r1] + ldr r1, [r1, #4] + mov r6, r0 + str r2, [sp] + str r1, [sp, #4] + mov r5, #0 +_023153BC: + ldr r1, [r4, r5, lsl #2] + mov r0, r6 + bl strcmp + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + add r5, r5, #1 + cmp r5, #2 + blo _023153BC + mov r0, #1 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_023153F0: .word ov00_02318768 + arm_func_end CheckValidKey + + arm_func_start mytok +mytok: ; 0x023153F4 + cmp r0, #0 + ldrne r2, _02315454 ; =ov00_023294F4 + strne r0, [r2] + ldr r2, _02315454 ; =ov00_023294F4 + ldr r0, [r2] + mov ip, r0 + b _02315418 +_02315410: + add ip, ip, #1 + str ip, [r2] +_02315418: + ldrsb r3, [ip] + cmp r3, #0 + cmpne r3, r1 + bne _02315410 + cmp ip, r0 + moveq r0, #0 + cmp r3, #0 + bxeq lr + ldr r1, _02315454 ; =ov00_023294F4 + mov r2, #0 + ldr r3, [r1] + strb r2, [ip] + add r2, r3, #1 + str r2, [r1] + bx lr + .align 2, 0 +_02315454: .word ov00_023294F4 + arm_func_end mytok + + arm_func_start SbServerParseKeyVals +SbServerParseKeyVals: ; 0x02315458 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + add r0, r1, #1 + mov r1, #0x5c + bl mytok + movs r8, r0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r4, #0 + mov fp, #0x5c + ldr r5, _023154E4 ; =ov00_0231D3AC + mov r7, r4 + mov r6, fp +_02315488: + mov r0, r7 + mov r1, r6 + bl mytok + movs sb, r0 + mov r0, r8 + moveq sb, r5 + bl CheckValidKey + cmp r0, #0 + beq _023154CC + mov r0, r8 + bl qr2_internal_is_master_only_key + cmp r0, #0 + bne _023154CC + mov r0, sl + mov r1, r8 + mov r2, sb + bl SbServerAddKeyValue +_023154CC: + mov r0, r4 + mov r1, fp + bl mytok + movs r8, r0 + bne _02315488 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023154E4: .word ov00_0231D3AC + arm_func_end SbServerParseKeyVals + + arm_func_start SbServerParseQR2FullKeysSingle +SbServerParseQR2FullKeysSingle: ; 0x023154E8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x8c + mov sl, r1 + ldrsb r1, [sl] + mov fp, r0 + mov sb, r2 + cmp r1, #0 + beq _0231557C +_02315508: + mov r0, sl + mov r1, sb + bl NtsLengthSB + cmp r0, #0 + addlt sp, sp, #0x8c + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r4, sl + sub sb, sb, r0 + add sl, sl, r0 + mov r0, sl + mov r1, sb + bl NtsLengthSB + cmp r0, #0 + addlt sp, sp, #0x8c + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r5, sl + add sl, sl, r0 + sub sb, sb, r0 + mov r0, r4 + bl qr2_internal_is_master_only_key + cmp r0, #0 + bne _02315570 + mov r0, fp + mov r1, r4 + mov r2, r5 + bl SbServerAddKeyValue +_02315570: + ldrsb r0, [sl] + cmp r0, #0 + bne _02315508 +_0231557C: + mov r0, #0 + add sl, sl, #1 + sub sb, sb, #1 + str r0, [sp] +_0231558C: + cmp sb, #2 + addlt sp, sp, #0x8c + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r1, [sl] + ldrb r0, [sl, #1] + add r2, sp, #8 + add sl, sl, #2 + strb r1, [r2] + strb r0, [r2, #1] + ldrh r0, [sp, #8] + str sl, [sp, #4] + sub sb, sb, #2 + 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, #8] + ldrsb r0, [sl] + mov r5, #0 + cmp r0, #0 + beq _0231561C +_023155E4: + mov r0, sl + mov r1, sb + bl NtsLengthSB + cmp r0, #0 + addlt sp, sp, #0x8c + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r0, #0x64 + addgt sp, sp, #0x8c + ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrsb r1, [sl, r0]! + add r5, r5, #1 + sub sb, sb, r0 + cmp r1, #0 + bne _023155E4 +_0231561C: + ldrh r0, [sp, #8] + add sl, sl, #1 + sub sb, sb, #1 + cmp r0, #0 + mov r6, #0 + ble _023156B4 +_02315634: + ldr r8, [sp, #4] + mov r7, #0 + cmp r5, #0 + ble _023156A4 +_02315644: + mov r0, sl + mov r1, sb + bl NtsLengthSB + movs r4, r0 + addmi sp, sp, #0x8c + ldmmiia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, _023156D0 ; =ov00_0231D3B0 + add r0, sp, #0xa + mov r2, r8 + mov r3, r6 + bl OS_VsPrintf + mov r0, fp + add r1, sp, #0xa + mov r2, sl + bl SbServerAddKeyValue + mov r0, r8 + add sl, sl, r4 + sub sb, sb, r4 + bl strlen + add r0, r0, #1 + add r7, r7, #1 + add r8, r8, r0 + cmp r7, r5 + blt _02315644 +_023156A4: + ldrh r0, [sp, #8] + add r6, r6, #1 + cmp r6, r0 + blt _02315634 +_023156B4: + ldr r0, [sp] + add r0, r0, #1 + str r0, [sp] + cmp r0, #2 + blt _0231558C + add sp, sp, #0x8c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023156D0: .word ov00_0231D3B0 + arm_func_end SbServerParseQR2FullKeysSingle + + arm_func_start SbServerParseQR2FullKeysSplit +SbServerParseQR2FullKeysSplit: ; 0x023156D4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x84 + mov sb, r1 + ldrsb r1, [sb] + mov sl, r0 + mov r8, r2 + cmp r1, #0 + mov r5, #0 + addeq sp, sp, #0x84 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sb + mov r1, r8 + bl NtsLengthSB + cmp r0, #0 + addlt sp, sp, #0x84 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r4, sb + add sb, sb, r0 + sub r8, r8, r0 + ldr r0, _02315924 ; =ov00_0231D3B8 + bl strlen + mov r2, r0 + ldr r0, _02315924 ; =ov00_0231D3B8 + mov r1, r4 + bl _msl_strnicmp__0208E248 + cmp r0, #0 + addne sp, sp, #0x84 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r8, #1 + addlt sp, sp, #0x84 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r2, [sb], #1 + sub r8, r8, #1 + and r0, r2, #0x80 + cmp r0, #0x80 + eoreq r2, r2, #0x80 + moveq r5, #1 + cmp r2, #7 + addhi sp, sp, #0x84 + ldmhiia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r5, #1 + ldrneb r1, [sl, #0x28] + movne r0, #1 + orrne r0, r1, r0, lsl r2 + bne _0231579C + mov r0, #0xff + mov r0, r0, lsl r2 + ldrb r1, [sl, #0x28] + mov r0, r0, lsl #0x18 + orr r0, r1, r0, asr #24 +_0231579C: + cmp r8, #1 + addlt sp, sp, #0x84 + strb r0, [sl, #0x28] + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r8, #0 + addle sp, sp, #0x84 + ldmleia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} +_023157B8: + ldrsb r0, [sb], #1 + sub r8, r8, #1 + str r0, [sp] + cmp r0, #0 + addlt sp, sp, #0x84 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r0, #2 + addgt sp, sp, #0x84 + ldmgtia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrsb r0, [sb] + cmp r0, #0 + beq _023158F8 + ldr fp, _02315928 ; =ov00_0231D3B0 + add r4, sp, #4 +_023157F0: + mov r0, sb + mov r1, r8 + bl NtsLengthSB + cmp r0, #0 + addlt sp, sp, #0x84 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sp] + mov r6, sb + cmp r1, #0 + add sb, sb, r0 + sub r8, r8, r0 + bne _02315868 + mov r0, sb + mov r1, r8 + bl NtsLengthSB + cmp r0, #0 + addlt sp, sp, #0x84 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r5, sb + add sb, sb, r0 + sub r8, r8, r0 + mov r0, r6 + bl qr2_internal_is_master_only_key + cmp r0, #0 + bne _023158EC + mov r0, sl + mov r1, r6 + mov r2, r5 + bl SbServerAddKeyValue + b _023158EC +_02315868: + cmp r8, #1 + addlt sp, sp, #0x84 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrsb r5, [sb] + ldrsb r0, [sb, #1]! + sub r8, r8, #1 + cmp r0, #0 + beq _023158E0 +_02315888: + mov r0, sb + mov r1, r8 + bl NtsLengthSB + cmp r0, #0 + addlt sp, sp, #0x84 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r7, sb + mov r1, fp + mov r2, r6 + mov r3, r5 + add sb, sb, r0 + sub r8, r8, r0 + mov r0, r4 + bl OS_VsPrintf + mov r2, r7 + mov r0, sl + mov r1, r4 + bl SbServerAddKeyValue + add r5, r5, #1 + ldrsb r0, [sb] + cmp r0, #0 + bne _02315888 +_023158E0: + cmp r8, #0 + addgt sb, sb, #1 + subgt r8, r8, #1 +_023158EC: + ldrsb r0, [sb] + cmp r0, #0 + bne _023157F0 +_023158F8: + cmp r8, #0 + ble _02315914 + cmp r0, #0 + addne sp, sp, #0x84 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add sb, sb, #1 + sub r8, r8, #1 +_02315914: + cmp r8, #0 + bgt _023157B8 + add sp, sp, #0x84 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02315924: .word ov00_0231D3B8 +_02315928: .word ov00_0231D3B0 + arm_func_end SbServerParseQR2FullKeysSplit + + arm_func_start StringHash +StringHash: ; 0x0231592C + stmdb sp!, {r3, lr} + ldrsb lr, [r0] + mov ip, #0 + cmp lr, #0 + beq _0231596C + ldr r3, _0231597C ; =_020AECB0 + ldr r2, _02315980 ; =0x9CCF9319 +_02315948: + cmp lr, #0 + blt _0231595C + cmp lr, #0x80 + bge _0231595C + ldrb lr, [r3, lr] +_0231595C: + mla ip, r2, ip, lr + ldrsb lr, [r0, #1]! + cmp lr, #0 + bne _02315948 +_0231596C: + mov r0, ip + bl _u32_div_f + mov r0, r1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0231597C: .word _020AECB0 +_02315980: .word 0x9CCF9319 + arm_func_end StringHash + + arm_func_start KeyValFree +KeyValFree: ; 0x02315984 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, [r4] + mov r0, #0 + bl SbReleaseStr + ldr r1, [r4, #4] + mov r0, #0 + bl SbReleaseStr + ldmia sp!, {r4, pc} + arm_func_end KeyValFree + + arm_func_start KeyValHashKey +KeyValHashKey: ; 0x023159A8 + ldr ip, _023159B4 ; =StringHash + ldr r0, [r0] + bx ip + .align 2, 0 +_023159B4: .word StringHash + arm_func_end KeyValHashKey + + arm_func_start KeyValCompareKey +KeyValCompareKey: ; 0x023159B8 + stmdb sp!, {r3, lr} + ldr r0, [r0] + cmp r0, #0 + ldrne r1, [r1] + cmpne r1, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} + bl strcasecmp + ldmia sp!, {r3, pc} + arm_func_end KeyValCompareKey + + arm_func_start SbServerGetPing +SbServerGetPing: ; 0x023159DC + ldr r0, [r0, #0x1c] + bx lr + arm_func_end SbServerGetPing + + arm_func_start SbAllocServer +SbAllocServer: ; 0x023159E4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r0, #0x2c + mov r6, r1 + mov r5, r2 + bl gsimalloc + movs r4, r0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r1, _02315A84 ; =KeyValCompareKey + ldr ip, _02315A88 ; =KeyValFree + str r1, [sp] + mov r0, #8 + ldr r3, _02315A8C ; =KeyValHashKey + mov r1, r0 + mov r2, #4 + str ip, [sp, #4] + bl TableNew2_Gsi + str r0, [r4, #0x18] + cmp r0, #0 + bne _02315A50 + mov r0, r4 + bl gsifree + add sp, sp, #8 + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} +_02315A50: + mov r1, #0 + strb r1, [r4, #0x14] + strb r1, [r4, #0x15] + str r1, [r4, #0x24] + str r1, [r4, #0x1c] + str r1, [r4, #0x10] + str r6, [r4] + strh r5, [r4, #4] + str r1, [r4, #8] + mov r0, r4 + strh r1, [r4, #0xc] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_02315A84: .word KeyValCompareKey +_02315A88: .word KeyValFree +_02315A8C: .word KeyValHashKey + arm_func_end SbAllocServer + + arm_func_start SbServerSetFlags +SbServerSetFlags: ; 0x02315A90 + strb r1, [r0, #0x15] + bx lr + arm_func_end SbServerSetFlags + + arm_func_start SbServerSetPublicAddr +SbServerSetPublicAddr: ; 0x02315A98 + str r1, [r0, #8] + strh r2, [r0, #0xc] + bx lr + arm_func_end SbServerSetPublicAddr + + arm_func_start SbServerSetIcmpIp +SbServerSetIcmpIp: ; 0x02315AA4 + str r1, [r0, #0x10] + bx lr + arm_func_end SbServerSetIcmpIp + + arm_func_start SbServerSetState +SbServerSetState: ; 0x02315AAC + strb r1, [r0, #0x14] + bx lr + arm_func_end SbServerSetState + + arm_func_start SbServerGetState +SbServerGetState: ; 0x02315AB4 + ldrb r0, [r0, #0x14] + bx lr + arm_func_end SbServerGetState + + arm_func_start SbIsNullServer +SbIsNullServer: ; 0x02315ABC + ldr r1, _02315AD4 ; =ov00_023294F4 + ldr r1, [r1, #8] + cmp r0, r1 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_02315AD4: .word ov00_023294F4 + arm_func_end SbIsNullServer + + arm_func_start ServerBrowserFree +ServerBrowserFree: ; 0x02315AD8 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x4c + bl SbServerListCleanup + mov r0, r4 + bl SbEngineCleanup + mov r0, r4 + bl gsifree + ldmia sp!, {r4, pc} + arm_func_end ServerBrowserFree + + arm_func_start ServerBrowserBeginUpdate2 +ServerBrowserBeginUpdate2: ; 0x02315AFC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x108 + ldr r8, [sp, #0x130] + mov sl, r0 + str r1, [sp, #4] + add r4, sp, #8 + mov sb, r3 + mov r1, #0x40 + mov r0, #0 +_02315B20: + strb r0, [r4] + strb r0, [r4, #1] + strb r0, [r4, #2] + strb r0, [r4, #3] + add r4, r4, #4 + subs r1, r1, #1 + bne _02315B20 + mov r5, #0 + str r2, [sl, #0x828] + mov r6, r5 + str r5, [sl, #0x40] + cmp r8, #0 + ble _02315BA8 + ldr r4, _02315C24 ; =ov00_0231CF68 + add fp, sp, #8 +_02315B5C: + ldrb r0, [sb, r6] + ldr r7, [r4, r0, lsl #2] + mov r0, r7 + bl strlen + add r0, r5, r0 + add r0, r0, #1 + cmp r0, #0x100 + bge _02315BA8 + ldr r1, _02315C28 ; =ov00_0231D3C4 + mov r2, r7 + add r0, fp, r5 + bl OS_VsPrintf + add r5, r5, r0 + ldrb r1, [sb, r6] + mov r0, sl + bl SbQueryEngineAddQueryKey + add r6, r6, #1 + cmp r6, r8 + blt _02315B5C +_02315BA8: + ldr r4, [sp, #0x13c] + ldr r2, [sp, #0x134] + ldr r3, [sp, #0x138] + add r1, sp, #8 + add r0, sl, #0x4c + str r4, [sp] + bl SbServerListConnectAndQuery + cmp r0, #0 + addne sp, sp, #0x108 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sp, #4] + cmp r1, #0 + addne sp, sp, #0x108 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r4, #0xa + b _02315BF8 +_02315BE8: + mov r0, r4 + bl msleep_gsi + mov r0, sl + bl ServerBrowserThink +_02315BF8: + ldr r1, [sl, #0x4c] + cmp r1, #3 + beq _02315BE8 + ldr r1, [sl, #0x10] + cmp r1, #0 + addle sp, sp, #0x108 + ldmleia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r0, #0 + beq _02315BE8 + add sp, sp, #0x108 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02315C24: .word ov00_0231CF68 +_02315C28: .word ov00_0231D3C4 + arm_func_end ServerBrowserBeginUpdate2 + + arm_func_start ServerBrowserLimitUpdateA +ServerBrowserLimitUpdateA: ; 0x02315C2C + stmdb sp!, {r3, lr} + sub sp, sp, #0x10 + ldr lr, [sp, #0x18] + ldr ip, [sp, #0x1c] + str lr, [sp] + str ip, [sp, #4] + mov lr, #0x80 + ldr ip, [sp, #0x20] + str lr, [sp, #8] + str ip, [sp, #0xc] + bl ServerBrowserBeginUpdate2 + add sp, sp, #0x10 + ldmia sp!, {r3, pc} + arm_func_end ServerBrowserLimitUpdateA + + arm_func_start ServerBrowserSendMessageToServerA +ServerBrowserSendMessageToServerA: ; 0x02315C60 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r5, r0 + mov r6, r2 + mov r0, r1 + mov r4, r3 + bl inet_addr_gsi + mov r3, r6, asr #8 + mov r2, r6, lsl #8 + ldr ip, [sp, #0x18] + mov r1, r0 + str ip, [sp] + and r3, r3, #0xff + and r0, r2, #0xff00 + orr r0, r3, r0 + mov r2, r0, lsl #0x10 + mov r3, r4 + add r0, r5, #0x4c + mov r2, r2, lsr #0x10 + bl SbSendMessageToServer + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end ServerBrowserSendMessageToServerA + + arm_func_start ServerBrowserSendNatNegotiateCookieToServerA +ServerBrowserSendNatNegotiateCookieToServerA: ; 0x02315CB8 + stmdb sp!, {r4, r5, r6, lr} + mov r5, r0 + mov r6, r2 + mov r0, r1 + mov r4, r3 + bl inet_addr_gsi + mov r3, r6, asr #8 + mov r2, r6, lsl #8 + mov r1, r0 + and r3, r3, #0xff + and r0, r2, #0xff00 + orr r0, r3, r0 + mov r2, r0, lsl #0x10 + mov r3, r4 + add r0, r5, #0x4c + mov r2, r2, lsr #0x10 + bl SbSendNatNegotiateCookieToServer + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ServerBrowserSendNatNegotiateCookieToServerA + + arm_func_start ServerBrowserThink +ServerBrowserThink: ; 0x02315D00 + stmdb sp!, {r4, lr} + mov r4, r0 + bl SbQueryEngineThink + add r0, r4, #0x4c + bl SbListThink + ldmia sp!, {r4, pc} + arm_func_end ServerBrowserThink + + arm_func_start ServerBrowserHalt +ServerBrowserHalt: ; 0x02315D18 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #0x4c + bl SbServerListDisconnect + mov r0, r4 + bl SbEngineHaltUpdates + ldmia sp!, {r4, pc} + arm_func_end ServerBrowserHalt + + arm_func_start ServerBrowserClear +ServerBrowserClear: ; 0x02315D34 + stmdb sp!, {r4, lr} + mov r4, r0 + bl ServerBrowserHalt + add r0, r4, #0x4c + bl SbServerListClear + ldmia sp!, {r4, pc} + arm_func_end ServerBrowserClear + + arm_func_start ServerBrowserState +ServerBrowserState: ; 0x02315D4C + ldr r1, [r0, #0x10] + cmp r1, #0 + movgt r0, #2 + bxgt lr + ldr r0, [r0, #0x4c] + cmp r0, #3 + cmpne r0, #0 + moveq r0, #1 + bxeq lr + cmp r0, #1 + moveq r0, #0 + movne r0, #3 + bx lr + arm_func_end ServerBrowserState + + arm_func_start ServerBrowserGetServer +ServerBrowserGetServer: ; 0x02315D80 + ldr ip, _02315D8C ; =SbServerListNth + add r0, r0, #0x4c + bx ip + .align 2, 0 +_02315D8C: .word SbServerListNth + arm_func_end ServerBrowserGetServer + + arm_func_start ServerBrowserGetMyPublicIpAddr +ServerBrowserGetMyPublicIpAddr: ; 0x02315D90 + ldr r0, [r0, #0x6f0] + bx lr + arm_func_end ServerBrowserGetMyPublicIpAddr + + arm_func_start SbServerListAppendServer +SbServerListAppendServer: ; 0x02315D98 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #4] + add r1, sp, #0xc + bl ArrayAppend_Gsi + ldr r2, [sp, #0xc] + ldr r3, [r4, #0x494] + ldr ip, [r4, #0x488] + mov r0, r4 + mov r1, #0 + blx ip + ldmia sp!, {r4, lr} + add sp, sp, #0x10 + bx lr + arm_func_end SbServerListAppendServer + + arm_func_start SbServerListFindServerByIP +SbServerListFindServerByIP: ; 0x02315DD4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + ldr r0, [sb, #4] + mov r8, r1 + mov r7, r2 + bl ArrayLength_Gsi + mov r4, r0 + cmp r4, #0 + mov r6, #0 + ble _02315E3C +_02315DFC: + ldr r0, [sb, #4] + mov r1, r6 + bl ArrayNth_Gsi + ldr r5, [r0] + mov r0, r5 + bl SbServerGetPublicInetAddress + cmp r8, r0 + bne _02315E30 + mov r0, r5 + bl SbServerGetPublicQueryPortNbo + cmp r7, r0 + moveq r0, r6 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02315E30: + add r6, r6, #1 + cmp r6, r4 + blt _02315DFC +_02315E3C: + mvn r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end SbServerListFindServerByIP + + arm_func_start AddServerToDeadlist +AddServerToDeadlist: ; 0x02315E44 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + ldr r1, [r5, #0x7d8] + mov r0, r4 + cmp r1, #0 + bne _02315E6C + mov r1, #0 + bl SbServerSetNext + b _02315E70 +_02315E6C: + bl SbServerSetNext +_02315E70: + str r4, [r5, #0x7d8] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end AddServerToDeadlist + + arm_func_start SbServerListRemoveAt +SbServerListRemoveAt: ; 0x02315E78 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r0, [r6, #4] + mov r5, r1 + bl ArrayNth_Gsi + ldr r4, [r0] + ldr r3, [r6, #0x494] + ldr ip, [r6, #0x488] + mov r0, r6 + mov r2, r4 + mov r1, #2 + blx ip + ldr r0, [r6, #4] + mov r1, r5 + bl ArrayDeleteAt_Gsi + mov r0, r6 + mov r1, r4 + bl AddServerToDeadlist + ldmia sp!, {r4, r5, r6, pc} + arm_func_end SbServerListRemoveAt + + arm_func_start SbServerListNth +SbServerListNth: ; 0x02315EC4 + stmdb sp!, {r3, lr} + ldr r0, [r0, #4] + bl ArrayNth_Gsi + ldr r0, [r0] + ldmia sp!, {r3, pc} + arm_func_end SbServerListNth + + arm_func_start SbFreeDeadList +SbFreeDeadList: ; 0x02315ED8 + stmdb sp!, {r3, r4, r5, r6, lr} + sub sp, sp, #4 + mov r6, r0 + ldr r5, [r6, #0x7d8] + cmp r5, #0 + addeq sp, sp, #4 + ldmeqia sp!, {r3, r4, r5, r6, pc} + str r5, [sp] + beq _02315F20 + add r4, sp, #0 +_02315F00: + mov r0, r5 + bl SbServerGetNext + mov r5, r0 + mov r0, r4 + bl SbServerFree + str r5, [sp] + cmp r5, #0 + bne _02315F00 +_02315F20: + mov r0, #0 + str r0, [r6, #0x7d8] + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, pc} + arm_func_end SbFreeDeadList + + arm_func_start SbServerListClear +SbServerListClear: ; 0x02315F30 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r0, [r6, #4] + bl ArrayLength_Gsi + mov r5, r0 + cmp r5, #0 + mov r4, #0 + ble _02315F74 +_02315F50: + ldr r0, [r6, #4] + mov r1, r4 + bl ArrayNth_Gsi + ldr r1, [r0] + mov r0, r6 + bl AddServerToDeadlist + add r4, r4, #1 + cmp r4, r5 + blt _02315F50 +_02315F74: + ldr r0, [r6, #4] + bl ArrayClear_Gsi + mov r0, r6 + bl SbFreeDeadList + ldmia sp!, {r4, r5, r6, pc} + arm_func_end SbServerListClear + + arm_func_start SbRefStr +SbRefStr: ; 0x02315F88 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r4, r1 + mov r5, r0 + str r4, [sp] + bl SbRefStrHash + add r1, sp, #0 + bl TableLookup_Gsi + cmp r0, #0 + beq _02315FC8 + ldr r1, [r0, #4] + add sp, sp, #8 + add r1, r1, #1 + str r1, [r0, #4] + ldr r0, [r0] + ldmia sp!, {r3, r4, r5, pc} +_02315FC8: + mov r0, r4 + bl goastrdup + str r0, [sp] + mov r1, #1 + mov r0, r5 + str r1, [sp, #4] + bl SbRefStrHash + add r1, sp, #0 + bl TableEnter_Gsi + ldr r0, [sp] + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end SbRefStr + + arm_func_start SbReleaseStr +SbReleaseStr: ; 0x02315FF8 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + mov r4, r0 + str r1, [sp] + bl SbRefStrHash + add r1, sp, #0 + bl TableLookup_Gsi + cmp r0, #0 + addeq sp, sp, #8 + ldmeqia sp!, {r4, pc} + ldr r1, [r0, #4] + subs r1, r1, #1 + str r1, [r0, #4] + addne sp, sp, #8 + ldmneia sp!, {r4, pc} + mov r0, r4 + bl SbRefStrHash + add r1, sp, #0 + bl TableRemove_Gsi + add sp, sp, #8 + ldmia sp!, {r4, pc} + arm_func_end SbReleaseStr + + arm_func_start NtsLengthSB +NtsLengthSB: ; 0x0231604C + cmp r1, #0 + mov r3, #0 + ble _02316074 +_02316058: + ldrsb r2, [r0, r3] + cmp r2, #0 + addeq r0, r3, #1 + bxeq lr + add r3, r3, #1 + cmp r3, r1 + blt _02316058 +_02316074: + mvn r0, #0 + bx lr + arm_func_end NtsLengthSB + + arm_func_start ErrorDisconnect +ErrorDisconnect: ; 0x0231607C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, r0 + ldr r5, [r4, #0x80] + cmp r5, #0 + ble _02316108 + ldr r0, _02316130 ; =ov00_0231D3C8 + ldr r6, [r0] + mov r0, r6 + bl strlen + cmp r5, r0 + bls _02316108 + ldr r0, _02316130 ; =ov00_0231D3C8 + ldr r5, [r4, #0x7c] + ldr r7, [r0] + mov r0, r7 + bl strlen + mov r2, r0 + mov r0, r5 + mov r1, r7 + bl strncmp + cmp r0, #0 + bne _02316108 + mov r0, r6 + bl strlen + mov r1, r0 + mov r0, r4 + add r1, r5, r1 + bl SbSetLastListErrorPtr + ldr r0, _02316134 ; =ov00_023294FC + ldr r3, [r4, #0x494] + ldr r2, [r0] + ldr ip, [r4, #0x488] + mov r0, r4 + mov r1, #5 + blx ip +_02316108: + ldr r0, _02316134 ; =ov00_023294FC + ldr r3, [r4, #0x494] + ldr r2, [r0] + ldr ip, [r4, #0x488] + mov r0, r4 + mov r1, #4 + blx ip + mov r0, r4 + bl SbServerListDisconnect + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02316130: .word ov00_0231D3C8 +_02316134: .word ov00_023294FC + arm_func_end ErrorDisconnect + + arm_func_start StringHash_Sb +StringHash_Sb: ; 0x02316138 + stmdb sp!, {r3, lr} + ldrsb lr, [r0] + mov ip, #0 + cmp lr, #0 + beq _02316178 + ldr r3, _02316188 ; =_020AECB0 + ldr r2, _0231618C ; =0x9CCF9319 +_02316154: + cmp lr, #0 + blt _02316168 + cmp lr, #0x80 + bge _02316168 + ldrb lr, [r3, lr] +_02316168: + mla ip, r2, ip, lr + ldrsb lr, [r0, #1]! + cmp lr, #0 + bne _02316154 +_02316178: + mov r0, ip + bl _u32_div_f + mov r0, r1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02316188: .word _020AECB0 +_0231618C: .word 0x9CCF9319 + arm_func_end StringHash_Sb + + arm_func_start ServerListConnect +ServerListConnect: ; 0x02316190 + stmdb sp!, {r4, lr} + sub sp, sp, #0x88 + mov r4, r0 + add r0, r4, #0xc + mov r1, #0x14 + bl StringHash_Sb + ldr r1, _023162B0 ; =ov00_02329500 + mov r3, r0 + ldr r1, [r1] + add r0, sp, #8 + cmp r1, #0 + beq _023161C8 + bl strcpy + b _023161D4 +_023161C8: + ldr r1, _023162B4 ; =ov00_0231D3E0 + add r2, r4, #0xc + bl OS_VsPrintf +_023161D4: + ldr r1, _023162B8 ; =0x0000EE70 + mov r2, #2 + add r0, sp, #8 + strb r2, [sp, #1] + strh r1, [sp, #2] + bl inet_addr_gsi + mvn r1, #0 + str r0, [sp, #4] + cmp r0, r1 + bne _02316240 + add r0, sp, #8 + bl Soc_GetHostByName + cmp r0, #0 + addeq sp, sp, #0x88 + moveq r0, #2 + ldmeqia sp!, {r4, pc} + ldr r0, [r0, #0xc] + add r3, sp, #4 + ldr r2, [r0] + ldrb r1, [r2] + ldrb r0, [r2, #1] + strb r1, [r3] + strb r0, [r3, #1] + ldrb r1, [r2, #2] + ldrb r0, [r2, #3] + strb r1, [r3, #2] + strb r0, [r3, #3] +_02316240: + ldr r0, [r4, #0x6b4] + mvn r1, #0 + cmp r0, r1 + bne _02316278 + mov r0, #2 + mov r1, #1 + mov r2, #0 + bl SocketCreate + mvn r1, #0 + cmp r0, r1 + str r0, [r4, #0x6b4] + addeq sp, sp, #0x88 + moveq r0, #1 + ldmeqia sp!, {r4, pc} +_02316278: + add r1, sp, #0 + mov r2, #8 + bl SocketConnect + cmp r0, #0 + addeq sp, sp, #0x88 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0x6b4] + bl SocketClose + mvn r0, #0 + str r0, [r4, #0x6b4] + mov r0, #3 + add sp, sp, #0x88 + ldmia sp!, {r4, pc} + .align 2, 0 +_023162B0: .word ov00_02329500 +_023162B4: .word ov00_0231D3E0 +_023162B8: .word 0x0000EE70 + arm_func_end ServerListConnect + + arm_func_start BufferAddNtS +BufferAddNtS: ; 0x023162BC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + movs r7, r1 + ldreq r7, _02316308 ; =ov00_0231D3DC + mov r4, r0 + mov r0, r7 + mov r6, r2 + bl strlen + add r5, r0, #1 + ldr r0, [r4] + mov r1, r7 + mov r2, r5 + bl memcpy + ldr r0, [r6] + add r0, r0, r5 + str r0, [r6] + ldr r0, [r4] + add r0, r0, r5 + str r0, [r4] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02316308: .word ov00_0231D3DC + arm_func_end BufferAddNtS + + arm_func_start BufferAddByte +BufferAddByte: ; 0x0231630C + ldr r3, [r0] + strb r1, [r3] + ldr r1, [r2] + add r1, r1, #1 + str r1, [r2] + ldr r1, [r0] + add r1, r1, #1 + str r1, [r0] + bx lr + arm_func_end BufferAddByte + + arm_func_start BufferAddInt +BufferAddInt: ; 0x02316330 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, lr} + add ip, sp, #0xc + ldrb r3, [ip] + ldrb r1, [ip, #1] + ldr lr, [r0] + strb r3, [lr] + strb r1, [lr, #1] + ldrb r3, [ip, #2] + ldrb r1, [ip, #3] + strb r3, [lr, #2] + strb r1, [lr, #3] + ldr r1, [r2] + add r1, r1, #4 + str r1, [r2] + ldr r1, [r0] + add r1, r1, #4 + str r1, [r0] + ldmia sp!, {r3, lr} + add sp, sp, #0x10 + bx lr + arm_func_end BufferAddInt + + arm_func_start BufferAddIntLE +BufferAddIntLE: ; 0x02316384 + stmdb sp!, {r4, lr} + mov ip, r1, lsr #0x18 + mov r3, r1, lsr #8 + mov lr, r1, lsl #8 + mov r4, r1, lsl #0x18 + and ip, ip, #0xff + and r1, r3, #0xff00 + and r3, lr, #0xff0000 + orr r1, ip, r1 + and r4, r4, #0xff000000 + orr r1, r3, r1 + orr r4, r4, r1 + mov r1, #0 + orr r3, r1, r4, lsl #24 + and r1, r4, #0xff00 + orr r3, r3, r1, lsl #8 + and r1, r4, #0xff0000 + orr r3, r3, r1, lsr #8 + and r1, r4, #0xff000000 + orr r1, r3, r1, lsr #24 + bl BufferAddInt + ldmia sp!, {r4, pc} + arm_func_end BufferAddIntLE + + arm_func_start BufferAddData +BufferAddData: ; 0x023163DC + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r0, [r6] + mov r4, r3 + mov r5, r2 + bl memcpy + ldr r0, [r4] + add r0, r0, r5 + str r0, [r4] + ldr r0, [r6] + add r0, r0, r5 + str r0, [r6] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end BufferAddData + + arm_func_start SetupListChallenge +SetupListChallenge: ; 0x02316410 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + bl rand + ldr r5, _023164F8 ; =0x2C0B02C1 + mov r8, #0 + smull r2, r4, r5, r0 + mov r1, r0, lsr #0x1f + add r4, r1, r4, asr #4 + mov r3, #0x5d + smull r1, r2, r3, r4 + sub r4, r0, r1 + add r0, r4, #0x21 + mov r7, #1 + strb r0, [sl, #0x74] + mov fp, r8 + mov r6, r7 + mov r4, r3 +_02316454: + add sb, sl, r7 + ldrsb r3, [sb, #0x73] + ldrsb r0, [sl, #0x74] + cmp r3, r0 + eor r3, r7, r3 + movlt r1, r6 + and r3, r3, #1 + movge r1, fp + cmp r0, #0x4f + movlt r2, #1 + and r0, r0, #1 + eor r3, r8, r3 + movge 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, #0x74] + beq _023164C8 + ldrsb r0, [sb, #0x74] + tst r0, #1 + beq _023164DC +_023164C8: + cmp r8, #0 + ldreqsb r0, [sb, #0x74] + andeq r0, r0, #1 + cmpeq r0, #1 + bne _023164E8 +_023164DC: + ldrsb r0, [sb, #0x74] + add r0, r0, #1 + strb r0, [sb, #0x74] +_023164E8: + add r7, r7, #1 + cmp r7, #8 + blt _02316454 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_023164F8: .word 0x2C0B02C1 + arm_func_end SetupListChallenge + + arm_func_start SendWithRetry +SendWithRetry: ; 0x023164FC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + mov sb, r1 + mov r8, r2 + mov r7, #1 + mov fp, #2 + mov r5, #0 +_02316518: + ldr r0, [sl, #0x6b4] + mov r1, sb + mov r2, r8 + mov r3, r5 + sub r7, r7, #1 + bl SocketSend + mov r6, r0 + cmp r6, #0 + bgt _02316590 + cmp r7, #0 + blt _02316590 + ldr r0, [sl, #0x80] + cmp r0, #0 + bgt _02316590 + mov r0, sl + bl SbServerListDisconnect + mov r1, #0 + mov r2, r1 + mov r0, sl + mov r3, fp + str r2, [sp] + bl SbServerListConnectAndQuery + movs r4, r0 + beq _02316588 + mov r0, sl + bl ErrorDisconnect + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} +_02316588: + cmp r7, #0 + bge _02316518 +_02316590: + cmp r6, #0 + movle r0, #3 + movgt r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end SendWithRetry + + arm_func_start SbServerListConnectAndQuery +SbServerListConnectAndQuery: ; 0x023165A0 + stmdb sp!, {r4, r5, r6, r7, lr} + sub sp, sp, #0x30c + movs r7, r1 + ldreq r7, _023167D8 ; =ov00_0231D3DC + mov r6, r2 + mov r5, r0 + cmp r6, #0 + ldreq r6, _023167D8 ; =ov00_0231D3DC + mov r0, r7 + mov r4, r3 + bl strlen + cmp r0, #0x100 + addhi sp, sp, #0x30c + movhi r0, #6 + ldmhiia sp!, {r4, r5, r6, r7, pc} + mov r0, r6 + bl strlen + cmp r0, #0x100 + addhi sp, sp, #0x30c + movhi r0, #6 + ldmhiia sp!, {r4, r5, r6, r7, pc} + mov r0, r5 + bl ServerListConnect + cmp r0, #0 + addne sp, sp, #0x30c + ldmneia sp!, {r4, r5, r6, r7, pc} + mov r0, r5 + str r4, [r5, #0x7c8] + bl SetupListChallenge + add r3, sp, #0xe + mov ip, #2 + add r0, sp, #4 + add r2, sp, #8 + mov r1, #0 + str ip, [sp, #8] + str r3, [sp, #4] + bl BufferAddByte + add r0, sp, #4 + add r2, sp, #8 + mov r1, #1 + bl BufferAddByte + add r0, sp, #4 + mov r1, #3 + add r2, sp, #8 + bl BufferAddByte + ldr r1, [r5, #0x6bc] + add r0, sp, #4 + add r2, sp, #8 + bl BufferAddIntLE + add r0, sp, #4 + add r1, r5, #0xc + add r2, sp, #8 + bl BufferAddNtS + add r0, sp, #4 + add r1, r5, #0x30 + add r2, sp, #8 + bl BufferAddNtS + add r0, sp, #4 + add r1, r5, #0x74 + mov r2, #8 + add r3, sp, #8 + bl BufferAddData + mov r1, r6 + add r0, sp, #4 + add r2, sp, #8 + bl BufferAddNtS + mov r1, r7 + add r0, sp, #4 + add r2, sp, #8 + bl BufferAddNtS + mov r1, r4, lsl #0x18 + and ip, r1, #0xff000000 + mov r1, r4, lsl #8 + and r3, r1, #0xff0000 + mov r1, r4, lsr #0x18 + and r2, r1, #0xff + mov r1, r4, lsr #8 + and r1, r1, #0xff00 + orr r1, r2, r1 + orr r1, r3, r1 + add r0, sp, #4 + orr r1, ip, r1 + add r2, sp, #8 + bl BufferAddInt + ldr r0, [r5, #0x7c8] + tst r0, #8 + beq _0231670C + ldr r1, [r5, #0x6a8] + add r0, sp, #4 + add r2, sp, #8 + bl BufferAddInt +_0231670C: + ldr r0, [r5, #0x7c8] + tst r0, #0x80 + beq _02316728 + ldr r1, [sp, #0x320] + add r0, sp, #4 + add r2, sp, #8 + bl BufferAddIntLE +_02316728: + ldr r2, [sp, #8] + add r4, sp, #0 + mov r0, r2, 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] + ldrb r3, [r4] + add r1, sp, #0xc + ldrb r0, [r4, #1] + strb r3, [r1] + mov r3, #0 + strb r0, [r1, #1] + ldr r0, [r5, #0x6b4] + bl SocketSend + cmp r0, #0 + bgt _0231678C + mov r0, r5 + bl SbServerListDisconnect + add sp, sp, #0x30c + mov r0, #3 + ldmia sp!, {r4, r5, r6, r7, pc} +_0231678C: + mov r0, #3 + str r0, [r5] + mov r0, #0 + str r0, [r5, #0x7cc] + ldr r0, [r5, #0x7c] + cmp r0, #0 + bne _023167CC + mov r0, #0x1000 + bl gsimalloc + cmp r0, #0 + str r0, [r5, #0x7c] + addeq sp, sp, #0x30c + moveq r0, #5 + ldmeqia sp!, {r4, r5, r6, r7, pc} + mov r0, #0 + str r0, [r5, #0x80] +_023167CC: + mov r0, #0 + add sp, sp, #0x30c + ldmia sp!, {r4, r5, r6, r7, pc} + .align 2, 0 +_023167D8: .word ov00_0231D3DC + arm_func_end SbServerListConnectAndQuery + + arm_func_start FreePopularValues +FreePopularValues: ; 0x023167DC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, [r5, #0x480] + mov r4, #0 + cmp r0, #0 + ble _02316814 +_023167F4: + add r0, r5, r4, lsl #2 + ldr r1, [r0, #0x84] + mov r0, r5 + bl SbReleaseStr + ldr r0, [r5, #0x480] + add r4, r4, #1 + cmp r4, r0 + blt _023167F4 +_02316814: + mov r0, #0 + str r0, [r5, #0x480] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end FreePopularValues + + arm_func_start FreeKeyList +FreeKeyList: ; 0x02316820 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, [r5, #8] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r4, #0 + bl ArrayLength_Gsi + cmp r0, #0 + ble _02316870 +_02316844: + ldr r0, [r5, #8] + mov r1, r4 + bl ArrayNth_Gsi + ldr r1, [r0] + mov r0, r5 + bl SbReleaseStr + ldr r0, [r5, #8] + add r4, r4, #1 + bl ArrayLength_Gsi + cmp r4, r0 + blt _02316844 +_02316870: + ldr r0, [r5, #8] + bl ArrayFree_Gsi + mov r0, #0 + str r0, [r5, #8] + ldmia sp!, {r3, r4, r5, pc} + arm_func_end FreeKeyList + + arm_func_start SbServerListDisconnect +SbServerListDisconnect: ; 0x02316884 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x7c] + cmp r0, #0 + beq _0231689C + bl gsifree +_0231689C: + mov r1, #0 + str r1, [r4, #0x7c] + str r1, [r4, #0x80] + ldr r0, [r4, #0x6b4] + sub r1, r1, #1 + cmp r0, r1 + beq _023168BC + bl SocketClose +_023168BC: + mvn r1, #0 + mov r0, r4 + str r1, [r4, #0x6b4] + mov r1, #1 + str r1, [r4] + bl FreeKeyList + mvn r1, #0 + mov r0, r4 + str r1, [r4, #0x484] + bl FreePopularValues + ldmia sp!, {r4, pc} + arm_func_end SbServerListDisconnect + + arm_func_start SbServerListCleanup +SbServerListCleanup: ; 0x023168E8 + stmdb sp!, {r4, lr} + mov r4, r0 + bl SbServerListDisconnect + mov r0, r4 + bl SbServerListClear + mov r0, r4 + bl SbRefStrHashCleanup + ldr r0, [r4, #4] + cmp r0, #0 + beq _02316914 + bl ArrayFree_Gsi +_02316914: + mov r0, #0 + str r0, [r4, #4] + ldmia sp!, {r4, pc} + arm_func_end SbServerListCleanup + + arm_func_start InitCryptKey +InitCryptKey: ; 0x02316920 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + mov r7, r2 + add r0, sb, #0x54 + mov r8, r1 + bl strlen + mov r5, r0 + cmp r7, #0 + add r6, sb, #0x54 + mov r4, #0 + ble _023169A8 +_0231694C: + mov r0, r4 + mov r1, r5 + bl _s32_div_f + ldrsb r1, [r6, r1] + mov r2, r4, lsr #0x1f + rsb r0, r2, r4, lsl #29 + mul r3, r4, r1 + mov r1, r3, lsr #0x1f + add r2, r2, r0, ror #29 + rsb r0, r1, r3, lsl #29 + add r2, sb, r2 + add r3, r1, r0, ror #29 + ldrsb r0, [r8, r4] + ldrsb r1, [r2, #0x74] + add r2, sb, r3 + add r4, r4, #1 + eor r0, r1, r0 + ldrsb r1, [r2, #0x74] + mov r0, r0, lsl #0x18 + cmp r4, r7 + eor r0, r1, r0, asr #24 + strb r0, [r2, #0x74] + blt _0231694C +_023169A8: + add r0, sb, #0x6c0 + add r1, sb, #0x74 + mov r2, #8 + bl GoaCryptInit + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end InitCryptKey + + arm_func_start ServerSizeForFlags +ServerSizeForFlags: ; 0x023169BC + mov r1, #5 + tst r0, #2 + addne r1, r1, #4 + tst r0, #8 + addne r1, r1, #4 + tst r0, #0x10 + addne r1, r1, #2 + tst r0, #0x20 + addne r1, r1, #2 + mov r0, r1 + bx lr + arm_func_end ServerSizeForFlags + + arm_func_start FullRulesPresent +FullRulesPresent: ; 0x023169E8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + b _02316A38 +_023169F8: + mov r0, r5 + mov r1, r4 + bl NtsLengthSB + cmp r0, #0 + movlt r0, #0 + ldmltia sp!, {r3, r4, r5, pc} + sub r4, r4, r0 + add r5, r5, r0 + mov r0, r5 + mov r1, r4 + bl NtsLengthSB + cmp r0, #0 + movlt r0, #0 + ldmltia sp!, {r3, r4, r5, pc} + add r5, r5, r0 + sub r4, r4, r0 +_02316A38: + cmp r4, #0 + ble _02316A4C + ldrsb r0, [r5] + cmp r0, #0 + bne _023169F8 +_02316A4C: + cmp r4, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldrsb r0, [r5] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end FullRulesPresent + + arm_func_start AllKeysPresent +AllKeysPresent: ; 0x02316A6C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r8, r0 + ldr r0, [r8, #8] + mov r7, r1 + mov r6, r2 + bl ArrayLength_Gsi + mov r4, r0 + cmp r4, #0 + mov r5, #0 + ble _02316B3C + mvn sb, #0 +_02316A98: + ldr r0, [r8, #8] + mov r1, r5 + bl ArrayNth_Gsi + ldr r0, [r0, #4] + cmp r0, #0 + beq _02316ADC + cmp r0, #1 + beq _02316AC4 + cmp r0, #2 + beq _02316AD0 + b _02316B1C +_02316AC4: + add r7, r7, #1 + sub r6, r6, #1 + b _02316B24 +_02316AD0: + add r7, r7, #2 + sub r6, r6, #2 + b _02316B24 +_02316ADC: + cmp r6, #1 + movlt r0, #0 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldrb r0, [r7], #1 + sub r6, r6, #1 + cmp r0, #0xff + bne _02316B24 + mov r0, r7 + mov r1, r6 + bl NtsLengthSB + cmp r0, sb + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + add r7, r7, r0 + sub r6, r6, r0 + b _02316B24 +_02316B1C: + mov r0, #0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02316B24: + cmp r6, #0 + movlt r0, #0 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + add r5, r5, #1 + cmp r5, r4 + blt _02316A98 +_02316B3C: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + arm_func_end AllKeysPresent + + arm_func_start ParseServerIpPort +ParseServerIpPort: ; 0x02316B44 + stmdb sp!, {r4, lr} + cmp r2, #5 + ldmltia sp!, {r4, pc} + ldrb r4, [r1] + ldrb lr, [r1, #1] + ldrb ip, [r1, #2] + tst r4, #0x10 + strb lr, [r3] + strb ip, [r3, #1] + ldrb lr, [r1, #3] + ldrb ip, [r1, #4] + strb lr, [r3, #2] + strb ip, [r3, #3] + beq _02316BA0 + sub r0, r2, #5 + cmp r0, #2 + ldmltia sp!, {r4, pc} + ldrb r2, [r1, #5] + ldrb r0, [r1, #6] + ldr r1, [sp, #8] + strb r2, [r1] + strb r0, [r1, #1] + ldmia sp!, {r4, pc} +_02316BA0: + add r0, r0, #0x600 + ldrh r1, [r0, #0xac] + ldr r0, [sp, #8] + strh r1, [r0] + ldmia sp!, {r4, pc} + arm_func_end ParseServerIpPort + + arm_func_start ParseServer +ParseServer: ; 0x02316BB4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0xc + mov r8, r2 + ldrb r5, [r8], #5 + mov sb, r1 + mov sl, r0 + mov r7, r3 + mov r0, sb + mov r1, r5 + str r7, [sp] + ldr r6, [sp, #0x30] + bl SbServerSetFlags + tst r5, #0x10 + sub r7, r7, #5 + addne r8, r8, #2 + subne r7, r7, #2 + tst r5, #2 + moveq r0, #0 + streq r0, [sp, #8] + beq _02316C30 + ldrb r1, [r8] + ldrb r0, [r8, #1] + add r2, sp, #8 + sub r7, r7, #4 + strb r1, [r2] + strb r0, [r2, #1] + ldrb r1, [r8, #2] + ldrb r0, [r8, #3] + add r8, r8, #4 + strb r1, [r2, #2] + strb r0, [r2, #3] +_02316C30: + tst r5, #0x20 + addeq r0, sl, #0x600 + ldreqh r0, [r0, #0xac] + streqh r0, [sp, #4] + beq _02316C60 + ldrb r1, [r8] + ldrb r0, [r8, #1] + add r2, sp, #4 + add r8, r8, #2 + strb r1, [r2] + strb r0, [r2, #1] + sub r7, r7, #2 +_02316C60: + ldrh r2, [sp, #4] + ldr r1, [sp, #8] + mov r0, sb + bl SbServerSetPublicAddr + tst r5, #8 + beq _02316CB0 + ldrb r2, [r8] + ldrb r1, [r8, #1] + add r3, sp, #8 + mov r0, sb + strb r2, [r3] + strb r1, [r3, #1] + ldrb r2, [r8, #2] + ldrb r1, [r8, #3] + add r8, r8, #4 + sub r7, r7, #4 + strb r2, [r3, #2] + strb r1, [r3, #3] + ldr r1, [sp, #8] + bl SbServerSetIcmpIp +_02316CB0: + tst r5, #0x40 + beq _02316DDC + ldr r0, [sl, #8] + bl ArrayLength_Gsi + mov fp, r0 + cmp fp, #0 + mov r4, #0 + ble _02316DC4 +_02316CD0: + ldr r0, [sl, #8] + mov r1, r4 + bl ArrayNth_Gsi + mov r1, r0 + ldr r0, [r1, #4] + cmp r0, #0 + beq _02316D64 + cmp r0, #1 + beq _02316D00 + cmp r0, #2 + beq _02316D18 + b _02316DB8 +_02316D00: + ldrb r2, [r8], #1 + ldr r1, [r1] + mov r0, sb + bl SbServerAddIntKeyValue + sub r7, r7, #1 + b _02316DB8 +_02316D18: + ldrb ip, [r8] + ldrb r3, [r8, #1] + add r2, sp, #6 + mov r0, sb + strb ip, [r2] + strb r3, [r2, #1] + ldrh r3, [sp, #6] + ldr r1, [r1] + mov r2, r3, asr #8 + mov r3, r3, lsl #8 + and r2, r2, #0xff + and r3, r3, #0xff00 + orr r2, r2, r3 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + bl SbServerAddIntKeyValue + add r8, r8, #2 + sub r7, r7, #2 + b _02316DB8 +_02316D64: + cmp r6, #0 + ldrneb r0, [r8], #1 + subne r7, r7, #1 + moveq r0, #0xff + cmp r0, #0xff + bne _02316DA4 + ldr r1, [r1] + mov r0, sb + mov r2, r8 + bl SbServerAddKeyValue + mov r0, r8 + bl strlen + add r0, r0, #1 + add r8, r8, r0 + sub r7, r7, r0 + b _02316DB8 +_02316DA4: + add r0, sl, r0, lsl #2 + ldr r1, [r1] + ldr r2, [r0, #0x84] + mov r0, sb + bl SbServerAddKeyValue +_02316DB8: + add r4, r4, #1 + cmp r4, fp + blt _02316CD0 +_02316DC4: + mov r0, sb + bl SbServerGetState + orr r1, r0, #1 + mov r0, sb + and r1, r1, #0xff + bl SbServerSetState +_02316DDC: + tst r5, #0x80 + beq _02316E54 + b _02316E24 +_02316DE8: + mov r0, r8 + mov r4, r8 + bl strlen + add r3, r0, #1 + add r8, r8, r3 + mov r0, sb + mov r1, r4 + mov r2, r8 + sub r7, r7, r3 + bl SbServerAddKeyValue + mov r0, r8 + bl strlen + add r0, r0, #1 + add r8, r8, r0 + sub r7, r7, r0 +_02316E24: + ldrsb r0, [r8] + cmp r0, #0 + beq _02316E38 + cmp r7, #0 + bgt _02316DE8 +_02316E38: + mov r0, sb + sub r7, r7, #1 + bl SbServerGetState + orr r1, r0, #2 + mov r0, sb + and r1, r1, #0xff + bl SbServerSetState +_02316E54: + mov r0, sb + bl SbServerGetState + tst r5, #0xc0 + bne _02316E7C + tst r0, #3 + beq _02316E7C + and r1, r0, #0xfc + mov r0, sb + and r1, r1, #0xff + bl SbServerSetState +_02316E7C: + ldr r0, [sp] + sub r0, r0, r7 + add sp, sp, #0xc + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end ParseServer + + arm_func_start IncomingListParseServer +IncomingListParseServer: ; 0x02316E8C + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0xc + mov r4, r2 + cmp r4, #1 + mov r6, r0 + mov r5, r1 + addlt sp, sp, #0xc + movlt r0, #0 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, pc} + ldrb r8, [r5] + mov r0, r8 + bl ServerSizeForFlags + mov r7, r0 + cmp r4, r7 + addlt sp, sp, #0xc + movlt r0, #0 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, pc} + tst r8, #0x40 + beq _02316EF8 + mov r0, r6 + add r1, r5, r7 + sub r2, r4, r7 + bl AllKeysPresent + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02316EF8: + tst r8, #0x80 + beq _02316F1C + add r0, r5, r7 + sub r1, r4, r7 + bl FullRulesPresent + cmp r0, #0 + addeq sp, sp, #0xc + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02316F1C: + ldr r1, _02316FB8 ; =ov00_0231D3FC + add r0, r5, #1 + mov r2, #4 + bl memcmp + cmp r0, #0 + addeq sp, sp, #0xc + mvneq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, pc} + add r7, sp, #4 + add r3, sp, #8 + mov r0, r6 + mov r1, r5 + mov r2, r4 + str r7, [sp] + bl ParseServerIpPort + ldrh r2, [sp, #4] + ldr r1, [sp, #8] + mov r0, r6 + bl SbAllocServer + mov r7, r0 + bl SbIsNullServer + cmp r0, #0 + addne sp, sp, #0xc + mvnne r0, #1 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, pc} + mov ip, #1 + mov r0, r6 + mov r1, r7 + mov r2, r5 + mov r3, r4 + str ip, [sp] + bl ParseServer + mov r4, r0 + mov r0, r6 + mov r1, r7 + bl SbServerListAppendServer + mov r0, r4 + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02316FB8: .word ov00_0231D3FC + arm_func_end IncomingListParseServer + + arm_func_start SbSetLastListErrorPtr +SbSetLastListErrorPtr: ; 0x02316FBC + str r1, [r0, #0x6b0] + bx lr + arm_func_end SbSetLastListErrorPtr + + arm_func_start ProcessMainListData +ProcessMainListData: ; 0x02316FC4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #8 + mov r7, r0 + ldr r1, [r7, #0x7cc] + ldr r5, [r7, #0x7c] + ldr r6, [r7, #0x80] + cmp r1, #4 + addls pc, pc, r1, lsl #2 + b _023173B0 +_02316FE8: ; jump table + b _02316FFC ; case 0 + b _02317088 ; case 1 + b _02317188 ; case 2 + b _02317274 ; case 3 + b _02317320 ; case 4 +_02316FFC: + cmp r6, #1 + blt _023173B0 + ldrb r1, [r5] + eor r1, r1, #0xec + add r3, r1, #2 + cmp r6, r3 + blt _023173B0 + sub r1, r3, #1 + ldrb r1, [r5, r1] + eor r2, r1, #0xea + add r4, r3, r2 + cmp r6, r4 + blt _023173B0 + add r1, r5, r3 + bl InitCryptKey + mov r0, #1 + str r0, [r7, #0x7cc] + ldrb r1, [r5, #1] + ldrb r0, [r5, #2] + add r3, r7, #0x700 + add r5, r5, r4 + strb r1, [r7, #0x7d0] + strb r0, [r7, #0x7d1] + ldrh r0, [r3, #0xd0] + sub r6, r6, r4 + mov r1, r5 + mov r2, r0, asr #8 + mov r0, r0, lsl #8 + and r2, r2, #0xff + and r0, r0, #0xff00 + orr r4, r2, r0 + mov r2, r6 + add r0, r7, #0x6c0 + strh r4, [r3, #0xd0] + bl GoaEncrypt +_02317088: + cmp r6, #6 + blt _023173B0 + ldrb r3, [r5] + ldrb r1, [r5, #1] + ldr r2, _023173E8 ; =ov00_023294FC + mov r0, r7 + strb r3, [r7, #0x6a4] + strb r1, [r7, #0x6a5] + ldrb r4, [r5, #2] + ldrb r3, [r5, #3] + mov r1, #6 + strb r4, [r7, #0x6a6] + strb r3, [r7, #0x6a7] + ldr r2, [r2] + ldr r3, [r7, #0x494] + ldr r4, [r7, #0x488] + blx r4 + ldrb r3, [r5, #4] + ldrb r2, [r5, #5] + add r0, r7, #0x600 + ldr r1, _023173EC ; =0x0000FFFF + strb r3, [r7, #0x6ac] + strb r2, [r7, #0x6ad] + ldrh r0, [r0, #0xac] + cmp r0, r1 + bne _0231713C + add r0, r5, #6 + sub r1, r6, #6 + bl NtsLengthSB + mvn r1, #0 + cmp r0, r1 + beq _023173B0 + mov r0, r7 + add r1, r5, #6 + bl SbSetLastListErrorPtr + ldr r0, _023173E8 ; =ov00_023294FC + ldr r3, [r7, #0x494] + ldr r2, [r0] + ldr r4, [r7, #0x488] + mov r0, r7 + mov r1, #5 + blx r4 + ldr r0, [r7, #0x7c] + cmp r0, #0 + beq _023173B0 +_0231713C: + ldr r0, [r7, #0x7c8] + add r5, r5, #6 + tst r0, #2 + sub r6, r6, #6 + bne _02317164 + add r0, r7, #0x600 + ldrh r1, [r0, #0xac] + ldr r0, _023173EC ; =0x0000FFFF + cmp r1, r0 + bne _02317178 +_02317164: + mov r0, #5 + str r0, [r7, #0x7cc] + mov r0, #2 + str r0, [r7] + b _023173B0 +_02317178: + mov r0, #2 + str r0, [r7, #0x7cc] + sub r0, r0, #3 + str r0, [r7, #0x484] +_02317188: + ldr r1, [r7, #0x484] + mvn r0, #0 + cmp r1, r0 + bne _023171D0 + cmp r6, #1 + blt _023173B0 + ldrb r1, [r5] + mov r0, #8 + mov r2, #0 + str r1, [r7, #0x484] + bl ArrayNew_Gsi + cmp r0, #0 + str r0, [r7, #8] + addeq sp, sp, #8 + moveq r0, #5 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + add r5, r5, #1 + sub r6, r6, #1 +_023171D0: + ldr r0, [r7, #8] + bl ArrayLength_Gsi + ldr r1, [r7, #0x484] + cmp r1, r0 + ble _02317250 + add r8, sp, #0 + mvn r4, #0 +_023171EC: + cmp r6, #2 + blt _02317250 + add r0, r5, #1 + sub r1, r6, #1 + bl NtsLengthSB + mov sb, r0 + cmp sb, r4 + beq _02317250 + ldrb r2, [r5] + mov r0, r7 + add r1, r5, #1 + str r2, [sp, #4] + bl SbRefStr + str r0, [sp] + ldr r0, [r7, #8] + mov r1, r8 + bl ArrayAppend_Gsi + add r1, sb, #1 + ldr r0, [r7, #8] + add r5, r5, r1 + sub r6, r6, r1 + bl ArrayLength_Gsi + ldr r1, [r7, #0x484] + cmp r1, r0 + bgt _023171EC +_02317250: + ldr r0, [r7, #8] + bl ArrayLength_Gsi + ldr r1, [r7, #0x484] + cmp r1, r0 + bgt _023173B0 + mov r0, #3 + str r0, [r7, #0x7cc] + sub r0, r0, #4 + str r0, [r7, #0x484] +_02317274: + ldr r1, [r7, #0x484] + mvn r0, #0 + cmp r1, r0 + bne _023172A0 + cmp r6, #1 + blt _023173B0 + ldrb r1, [r5], #1 + mov r0, #0 + sub r6, r6, #1 + str r1, [r7, #0x484] + str r0, [r7, #0x480] +_023172A0: + ldr r1, [r7, #0x484] + ldr r0, [r7, #0x480] + cmp r1, r0 + ble _02317308 + mvn r8, #0 +_023172B4: + mov r0, r5 + mov r1, r6 + bl NtsLengthSB + mov r4, r0 + cmp r4, r8 + beq _02317308 + mov r0, r7 + mov r1, r5 + bl SbRefStr + ldr r1, [r7, #0x480] + add r5, r5, r4 + mov r2, r1 + add r1, r1, #1 + str r1, [r7, #0x480] + add r1, r7, r2, lsl #2 + str r0, [r1, #0x84] + ldr r1, [r7, #0x484] + ldr r0, [r7, #0x480] + sub r6, r6, r4 + cmp r1, r0 + bgt _023172B4 +_02317308: + ldr r1, [r7, #0x484] + ldr r0, [r7, #0x480] + cmp r1, r0 + bgt _023173B0 + mov r0, #4 + str r0, [r7, #0x7cc] +_02317320: + cmp r6, #5 + blt _023173B0 + mvn r4, #0 + sub r8, r4, #1 + mov sb, #0 +_02317334: + mov r0, r7 + mov r1, r5 + mov r2, r6 + bl IncomingListParseServer + cmp r0, r8 + addeq sp, sp, #8 + moveq r0, #5 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r0, r4 + bne _02317394 + mov r0, #5 + str r0, [r7, #0x7cc] + mov r0, #2 + str r0, [r7] + ldr r0, _023173E8 ; =ov00_023294FC + ldr r3, [r7, #0x494] + ldr r2, [r0] + ldr r4, [r7, #0x488] + mov r0, r7 + mov r1, #3 + sub r6, r6, #5 + add r5, r5, #5 + blx r4 + b _023173B0 +_02317394: + ldr r1, [r7, #0x7c] + add r5, r5, r0 + cmp r1, #0 + sub r6, r6, r0 + moveq r0, sb + cmp r0, #0 + bne _02317334 +_023173B0: + ldr r0, [r7, #0x7c] + cmp r0, #0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + cmp r6, #0 + beq _023173D8 + mov r1, r5 + mov r2, r6 + bl memmove +_023173D8: + str r6, [r7, #0x80] + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_023173E8: .word ov00_023294FC +_023173EC: .word 0x0000FFFF + arm_func_end ProcessMainListData + + arm_func_start ProcessPushKeyList +ProcessPushKeyList: ; 0x023173F0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov sl, r0 + ldr r3, [sl, #8] + mov sb, r1 + mov r8, r2 + cmp r3, #0 + sub r8, r8, #1 + ldrb r7, [sb], #1 + beq _0231741C + bl FreeKeyList +_0231741C: + mov r1, r7 + mov r0, #8 + mov r2, #0 + bl ArrayNew_Gsi + cmp r0, #0 + str r0, [sl, #8] + addeq sp, sp, #8 + moveq r0, #5 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + cmp r7, #0 + mov r6, #0 + ble _023174C0 + add fp, sp, #0 + mvn r4, #0 +_02317454: + cmp r8, #2 + addlt sp, sp, #8 + movlt r0, #4 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r0, sb, #1 + sub r1, r8, #1 + bl NtsLengthSB + mov r5, r0 + cmp r5, r4 + addeq sp, sp, #8 + moveq r0, #4 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r2, [sb] + mov r0, sl + add r1, sb, #1 + str r2, [sp, #4] + bl SbRefStr + str r0, [sp] + ldr r0, [sl, #8] + mov r1, fp + bl ArrayAppend_Gsi + add r0, r5, #1 + add r6, r6, #1 + cmp r6, r7 + add sb, sb, r0 + sub r8, r8, r0 + blt _02317454 +_023174C0: + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end ProcessPushKeyList + + arm_func_start ProcessPlayerSearch +ProcessPlayerSearch: ; 0x023174CC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x24 + mov r8, r2 + cmp r8, #2 + mov sl, r0 + mov sb, r1 + addlt sp, sp, #0x24 + movlt r0, #4 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r0, [sb, #1] + sub r8, r8, #2 + mov fp, #0 + str r0, [sp, #0xc] + ldrb r0, [sb], #2 + str r0, [sp, #0x14] + ldr r0, [sp, #0xc] + cmp r0, #0 + ble _02317648 + add r7, sp, #0x20 + add r6, sp, #0x1c + mvn r4, #0 +_02317520: + mov r0, sb + mov r1, r8 + str sb, [sp, #0x10] + bl NtsLengthSB + cmp r0, r4 + addeq sp, sp, #0x24 + moveq r0, #4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + sub r3, r8, r0 + cmp r3, #0xb + add r2, sb, r0 + addlt sp, sp, #0x24 + movlt r0, #4 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r1, [r2] + ldrb r0, [r2, #1] + sub r8, r3, #0xa + add sb, r2, #0xa + strb r1, [r7] + strb r0, [r7, #1] + ldrb r5, [r2, #2] + ldrb r3, [r2, #3] + mov r0, sb + mov r1, r8 + strb r3, [r7, #3] + strb r5, [r7, #2] + ldrb ip, [r2, #4] + ldrb r5, [r2, #5] + add r3, sp, #0x18 + strb ip, [r3] + strb r5, [r3, #1] + ldrb r5, [r2, #6] + ldrb r3, [r2, #7] + strb r5, [r6] + strb r3, [r6, #1] + ldrb r3, [r2, #8] + ldrb r2, [r2, #9] + strb r3, [r6, #2] + strb r2, [r6, #3] + ldr ip, [sp, #0x1c] + mov r2, ip, lsl #0x18 + and r5, r2, #0xff000000 + mov r2, ip, lsl #8 + and r3, r2, #0xff0000 + mov r2, ip, lsr #0x18 + mov ip, ip, lsr #8 + and r2, r2, #0xff + and ip, ip, #0xff00 + orr r2, r2, ip + orr r2, r3, r2 + orr r2, r5, r2 + str r2, [sp, #0x1c] + bl NtsLengthSB + mov r5, r0 + cmp r5, r4 + addeq sp, sp, #0x24 + moveq r0, #4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldr r1, [sp, #0x1c] + mov r0, sl + stmia sp, {r1, sb} + ldr r2, [sl, #0x494] + ldr r1, [sp, #0x10] + str r2, [sp, #8] + ldrh r3, [sp, #0x18] + ldr r2, [sp, #0x20] + ldr ip, [sl, #0x490] + blx ip + ldr r0, [sp, #0xc] + add fp, fp, #1 + cmp fp, r0 + add sb, sb, r5 + sub r8, r8, r5 + blt _02317520 +_02317648: + ldr r0, [sp, #0x14] + cmp r0, #0 + beq _0231767C + mov r1, #0 + str r1, [sp] + str r1, [sp, #4] + ldr r2, [sl, #0x494] + mov r0, sl + str r2, [sp, #8] + ldr r4, [sl, #0x490] + mov r2, r1 + mov r3, r1 + blx r4 +_0231767C: + mov r0, #0 + add sp, sp, #0x24 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end ProcessPlayerSearch + + arm_func_start ProcessMaploop +ProcessMaploop: ; 0x02317688 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x54 + mov r8, r2 + cmp r8, #0xb + mov sl, r0 + mov sb, r1 + addlt sp, sp, #0x54 + movlt r0, #4 + ldmltia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + ldrb r2, [sb] + ldrb r1, [sb, #1] + add r3, sp, #0xc + add r4, sp, #8 + strb r2, [r3] + strb r1, [r3, #1] + ldrb r2, [sb, #2] + ldrb r1, [sb, #3] + strb r1, [r3, #3] + strb r2, [r3, #2] + ldrb r3, [sb, #4] + ldrb r2, [sb, #5] + ldr r1, [sp, #0xc] + strb r3, [r4] + strb r2, [r4, #1] + ldrh r2, [sp, #8] + bl SbServerListFindServerByIP + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + addeq sp, sp, #0x54 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, sl + bl SbServerListNth + ldrb r2, [sb, #6] + ldrb r1, [sb, #7] + add r3, sp, #0x10 + mov fp, r0 + strb r2, [r3] + strb r1, [r3, #1] + ldrb r1, [sb, #8] + ldrb r0, [sb, #9] + sub r8, r8, #0xb + mov r7, #0 + strb r1, [r3, #2] + strb r0, [r3, #3] + ldr r3, [sp, #0x10] + add r5, sp, #0x14 + 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 r0, r1, r0 + str r0, [sp, #0x10] + ldrb r6, [sb, #0xa] + add sb, sb, #0xb + mvn r4, #0 + b _023177BC +_02317788: + cmp r8, #1 + blt _023177C8 + mov r0, sb + mov r1, r8 + bl NtsLengthSB + cmp r0, r4 + addeq sp, sp, #0x54 + moveq r0, #4 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + str sb, [r5, r7, lsl #2] + add sb, sb, r0 + sub r8, r8, r0 + add r7, r7, #1 +_023177BC: + cmp r7, r6 + cmplt r7, #0x10 + blt _02317788 +_023177C8: + ldr r4, [sl, #0x48c] + cmp r4, #0 + addeq sp, sp, #0x54 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + add r1, sp, #0x14 + str r1, [sp] + ldr r2, [sl, #0x494] + mov r0, sl + str r2, [sp, #4] + ldr r2, [sp, #0x10] + mov r1, fp + mov r3, r7 + blx r4 + mov r0, #0 + add sp, sp, #0x54 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end ProcessMaploop + + arm_func_start ProcessDeleteServer +ProcessDeleteServer: ; 0x0231780C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + cmp r2, #6 + mov r4, r0 + addlt sp, sp, #8 + movlt r0, #4 + ldmltia sp!, {r4, pc} + ldrb r3, [r1] + ldrb r2, [r1, #1] + add lr, sp, #4 + add ip, sp, #0 + strb r3, [lr] + strb r2, [lr, #1] + ldrb r3, [r1, #2] + ldrb r2, [r1, #3] + strb r3, [lr, #2] + strb r2, [lr, #3] + ldrb r3, [r1, #4] + ldrb r2, [r1, #5] + ldr r1, [sp, #4] + strb r3, [ip] + strb r2, [ip, #1] + ldrh r2, [sp] + bl SbServerListFindServerByIP + mov r1, r0 + mvn r0, #0 + cmp r1, r0 + addeq sp, sp, #8 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl SbServerListRemoveAt + mov r0, #0 + add sp, sp, #8 + ldmia sp!, {r4, pc} + arm_func_end ProcessDeleteServer + + arm_func_start ProcessPushServer +ProcessPushServer: ; 0x02317898 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0xc + mov r6, r2 + cmp r6, #5 + mov r8, r0 + mov r7, r1 + addlt sp, sp, #0xc + movlt r0, #4 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, pc} + add r4, sp, #4 + add r3, sp, #8 + str r4, [sp] + bl ParseServerIpPort + ldrh r2, [sp, #4] + ldr r1, [sp, #8] + mov r0, r8 + bl SbServerListFindServerByIP + mov r5, r0 + mvn r0, #0 + cmp r5, r0 + bne _02317918 + ldrh r2, [sp, #4] + ldr r1, [sp, #8] + mov r0, r8 + bl SbAllocServer + mov r4, r0 + bl SbIsNullServer + cmp r0, #0 + beq _02317928 + add sp, sp, #0xc + mov r0, #5 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} +_02317918: + mov r0, r8 + mov r1, r5 + bl SbServerListNth + mov r4, r0 +_02317928: + mov ip, #0 + mov r0, r8 + mov r1, r4 + mov r2, r7 + mov r3, r6 + str ip, [sp] + bl ParseServer + cmp r0, #0 + addlt sp, sp, #0xc + movlt r0, #4 + ldmltia sp!, {r3, r4, r5, r6, r7, r8, pc} + mvn r0, #0 + cmp r5, r0 + bne _0231796C + mov r0, r8 + mov r1, r4 + bl SbServerListAppendServer +_0231796C: + ldr r3, [r8, #0x494] + ldr r5, [r8, #0x488] + mov r0, r8 + mov r2, r4 + mov r1, #1 + blx r5 + mov r0, #0 + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + arm_func_end ProcessPushServer + + arm_func_start ProcessAdHocData +ProcessAdHocData: ; 0x02317990 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldr r0, [r7, #0x80] + mov r6, #0 + cmp r0, #3 + blt _02317AF8 + mov r4, r6 + add r5, sp, #0 +_023179B0: + ldr r0, [r7, #0x7c] + ldrb r1, [r0] + ldrb r0, [r0, #1] + strb r1, [r5] + strb r0, [r5, #1] + ldrh r0, [sp] + 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] + ldrh r2, [sp] + cmp r2, #0x1000 + movhi r6, #4 + bhi _02317AF8 + ldr r0, [r7, #0x80] + cmp r0, r2 + movlt r0, #0 + ldmltia sp!, {r3, r4, r5, r6, r7, pc} + ldr r1, [r7, #0x7c] + ldrsb r0, [r1, #2] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _02317AC0 +_02317A14: ; jump table + b _02317AC0 ; case 0 + b _02317A30 ; case 1 + b _02317A48 ; case 2 + b _02317A60 ; case 3 + b _02317A7C ; case 4 + b _02317A94 ; case 5 + b _02317AAC ; case 6 +_02317A30: + mov r0, r7 + add r1, r1, #3 + sub r2, r2, #3 + bl ProcessPushKeyList + mov r6, r0 + b _02317AC0 +_02317A48: + mov r0, r7 + add r1, r1, #3 + sub r2, r2, #3 + bl ProcessPushServer + mov r6, r0 + b _02317AC0 +_02317A60: + ldr r0, [r7, #0x6b4] + mov r3, r4 + bl SocketSend + cmp r0, #0 + bgt _02317AC0 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02317A7C: + mov r0, r7 + add r1, r1, #3 + sub r2, r2, #3 + bl ProcessDeleteServer + mov r6, r0 + b _02317AC0 +_02317A94: + mov r0, r7 + add r1, r1, #3 + sub r2, r2, #3 + bl ProcessMaploop + mov r6, r0 + b _02317AC0 +_02317AAC: + mov r0, r7 + add r1, r1, #3 + sub r2, r2, #3 + bl ProcessPlayerSearch + mov r6, r0 +_02317AC0: + ldrh r1, [sp] + ldr r0, [r7, #0x80] + subs r2, r0, r1 + str r2, [r7, #0x80] + ldrne r0, [r7, #0x7c] + cmpne r0, #0 + beq _02317AE4 + add r1, r0, r1 + bl memmove +_02317AE4: + cmp r6, #0 + bne _02317AF8 + ldr r0, [r7, #0x80] + cmp r0, #3 + bge _023179B0 +_02317AF8: + cmp r6, #0 + beq _02317B08 + mov r0, r7 + bl ErrorDisconnect +_02317B08: + mov r0, r6 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ProcessAdHocData + + arm_func_start ProcessIncomingData +ProcessIncomingData: ; 0x02317B10 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + ldr r0, [r6, #0x6b4] + bl CanReceiveOnSocket + cmp r0, #0 + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r5, [r6, #0x80] + ldr r1, [r6, #0x7c] + ldr r0, [r6, #0x6b4] + add r1, r1, r5 + rsb r2, r5, #0x1000 + mov r3, #0 + bl SocketRecv + add r1, r0, #1 + cmp r1, #1 + bhi _02317B64 + mov r0, r6 + bl ErrorDisconnect + mov r0, #3 + ldmia sp!, {r4, r5, r6, pc} +_02317B64: + ldr r1, [r6, #0x80] + mov r4, #0 + add r0, r1, r0 + str r0, [r6, #0x80] + ldr r0, [r6] + cmp r0, #2 + beq _02317B8C + ldr r0, [r6, #0x7cc] + cmp r0, #0 + ble _02317BA4 +_02317B8C: + ldr r1, [r6, #0x7c] + ldr r2, [r6, #0x80] + add r0, r6, #0x6c0 + add r1, r1, r5 + sub r2, r2, r5 + bl GoaEncrypt +_02317BA4: + ldr r0, [r6] + cmp r0, #3 + bne _02317BBC + mov r0, r6 + bl ProcessMainListData + mov r4, r0 +_02317BBC: + cmp r4, #0 + movne r0, r4 + ldmneia sp!, {r4, r5, r6, pc} + ldr r0, [r6] + cmp r0, #2 + bne _02317BEC + ldr r0, [r6, #0x80] + cmp r0, #0 + ble _02317BEC + mov r0, r6 + bl ProcessAdHocData + ldmia sp!, {r4, r5, r6, pc} +_02317BEC: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ProcessIncomingData + + arm_func_start SbSendMessageToServer +SbSendMessageToServer: ; 0x02317BF4 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x18 + mov r5, r0 + ldr r1, [r5] + mov r4, r3 + cmp r1, #1 + bne _02317C28 + mov r1, #0 + mov r2, r1 + mov r3, #2 + str r1, [sp] + bl SbServerListConnectAndQuery +_02317C28: + ldr r0, [r5] + cmp r0, #1 + addeq sp, sp, #0x18 + moveq r0, #3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + addeq sp, sp, #0x10 + bxeq lr + ldr r0, [sp, #0x50] + add r6, sp, #0x44 + add r0, r0, #9 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r2, r0, asr #8 + mov r1, r0, lsl #8 + and r2, r2, #0xff + and r1, r1, #0xff00 + orr r1, r2, r1 + strh r1, [sp, #4] + add r2, sp, #4 + ldrb r3, [r2] + add r0, sp, #0x48 + add r1, sp, #6 + ldrb r2, [r2, #1] + strb r3, [r1] + mov fp, #2 + strb r2, [r1, #1] + ldrb sb, [r6] + add sl, sp, #9 + ldrb r8, [r6, #1] + ldrb r7, [r6, #2] + ldrb r6, [r6, #3] + ldrb ip, [r0] + ldrb r3, [r0, #1] + add lr, sp, #0xd + mov r0, r5 + mov r2, #9 + strb fp, [sp, #8] + strb sb, [sl] + strb r8, [sl, #1] + strb r7, [sl, #2] + strb r6, [sl, #3] + strb ip, [lr] + strb r3, [lr, #1] + bl SendWithRetry + cmp r0, #0 + addne sp, sp, #0x18 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + addne sp, sp, #0x10 + bxne lr + ldr r0, [r5, #0x6b4] + ldr r2, [sp, #0x50] + mov r1, r4 + mov r3, #0 + bl SocketSend + cmp r0, #0 + movlt r0, #3 + movge r0, #0 + add sp, sp, #0x18 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + add sp, sp, #0x10 + bx lr + arm_func_end SbSendMessageToServer + + arm_func_start SbSendNatNegotiateCookieToServer +SbSendNatNegotiateCookieToServer: ; 0x02317D1C + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + ldr r5, [sp, #0x44] + mov r7, #0xfd + mov r4, r5, lsr #0x18 + mov r8, r5, lsl #0x18 + mov r3, r5, lsr #8 + mov r6, r5, lsl #8 + and r5, r4, #0xff + and r4, r3, #0xff00 + orr sb, r5, r4 + and r3, r6, #0xff0000 + mov r6, #0xfc + mov r5, #0x1e + mov r4, #0x66 + mov lr, #0x6a + mov fp, #0xb2 + strb r4, [sp, #7] + and r8, r8, #0xff000000 + orr r3, r3, sb + orr r8, r8, r3 + add r3, sp, #0x44 + str r8, [sp, #0x44] + strb r7, [sp, #4] + ldrb sl, [r3] + add ip, sp, #0xa + ldrb sb, [r3, #1] + ldrb r8, [r3, #2] + ldrb r7, [r3, #3] + add r3, sp, #4 + strb r6, [sp, #5] + strb r5, [sp, #6] + strb lr, [sp, #8] + strb fp, [sp, #9] + strb sl, [ip] + strb sb, [ip, #1] + strb r8, [ip, #2] + strb r7, [ip, #3] + mov r4, #0xa + str r4, [sp] + bl SbSendMessageToServer + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + add sp, sp, #0x10 + bx lr + arm_func_end SbSendNatNegotiateCookieToServer + + arm_func_start ProcessLanData +ProcessLanData: ; 0x02317DD4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x5f0 + mov r1, #8 + mov sl, r0 + str r1, [sp, #8] + ldr r0, [sl, #0x6b4] + bl CanReceiveOnSocket + cmp r0, #0 + beq _02317E9C + ldr r6, _02317EF0 ; =0x000005DB + add sb, sp, #0xc + add r8, sp, #8 + add r7, sp, #0x14 + mov fp, #0 + mvn r4, #0 +_02317E10: + str sb, [sp] + str r8, [sp, #4] + ldr r0, [sl, #0x6b4] + mov r1, r7 + mov r2, r6 + mov r3, fp + bl SocketRecvFrom + cmp r0, r4 + beq _02317E8C + ldrh r2, [sp, #0xe] + ldr r1, [sp, #0x10] + mov r0, sl + bl SbServerListFindServerByIP + cmp r0, r4 + bne _02317E8C + ldrh r2, [sp, #0xe] + ldr r1, [sp, #0x10] + mov r0, sl + bl SbAllocServer + mov r5, r0 + bl SbIsNullServer + cmp r0, #0 + addne sp, sp, #0x5f0 + movne r0, #5 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + mov r0, r5 + mov r1, #0x11 + bl SbServerSetFlags + mov r0, sl + mov r1, r5 + bl SbServerListAppendServer +_02317E8C: + ldr r0, [sl, #0x6b4] + bl CanReceiveOnSocket + cmp r0, #0 + bne _02317E10 +_02317E9C: + bl current_time_gsi + ldr r1, [sl, #0x6b8] + sub r0, r0, r1 + cmp r0, #0x7d0 + bls _02317EE4 + ldr r0, [sl, #0x6b4] + bl SocketClose + mvn r0, #0 + str r0, [sl, #0x6b4] + mov r0, #1 + str r0, [sl] + ldr r0, _02317EF4 ; =ov00_023294FC + ldr r3, [sl, #0x494] + ldr r2, [r0] + ldr r4, [sl, #0x488] + mov r0, sl + mov r1, #3 + blx r4 +_02317EE4: + mov r0, #0 + add sp, sp, #0x5f0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02317EF0: .word 0x000005DB +_02317EF4: .word ov00_023294FC + arm_func_end ProcessLanData + + arm_func_start SbListThink +SbListThink: ; 0x02317EF8 + stmdb sp!, {r4, lr} + mov r4, r0 + bl SbFreeDeadList + ldr r0, [r4] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02317F3C +_02317F14: ; jump table + b _02317F30 ; case 0 + b _02317F3C ; case 1 + b _02317F24 ; case 2 + b _02317F24 ; case 3 +_02317F24: + mov r0, r4 + bl ProcessIncomingData + ldmia sp!, {r4, pc} +_02317F30: + mov r0, r4 + bl ProcessLanData + ldmia sp!, {r4, pc} +_02317F3C: + mov r0, #0 + ldmia sp!, {r4, pc} + arm_func_end SbListThink + ; 0x02317F44 + + .rodata +#ifdef EUROPE + .global ov00_02318758_EU +ov00_02318758_EU: + .byte 0x55, 0x59, 0x46, 0x59, 0x46, 0x59, 0x46, 0x59, 0x44, 0x59, 0x46, 0x59, 0x49, 0x59, 0x46, 0x59 + .byte 0x53, 0x59, 0x46, 0x59 +#endif + .global ov00_02317F44 +ov00_02317F44: + .byte 0x70, 0x6f, 0x6b, 0x65, 0x64, 0x75, 0x6e, 0x67, 0x65, 0x6f, 0x6e, 0x64, 0x73, 0x00, 0x00, 0x00 + .global ov00_02317F54 +ov00_02317F54: + .byte 0x53, 0x56, 0x62, 0x6d, 0x33, 0x78, 0x00, 0x00 + .global ov00_02317F5C +ov00_02317F5C: + .byte 0x54, 0x58, 0x71, 0x6a, 0x44, 0x44, 0x4f, 0x4c + .byte 0x68, 0x50, 0x79, 0x53, 0x4b, 0x53, 0x7a, 0x74, 0x67, 0x42, 0x48, 0x59, 0x30, 0x30, 0x30, 0x31 + .byte 0x62, 0x64, 0x39, 0x35, 0x30, 0x30, 0x30, 0x30, 0x37, 0x64, 0x39, 0x39, 0x30, 0x30, 0x30, 0x30 + .byte 0x30, 0x32, 0x30, 0x30, 0x36, 0x31, 0x33, 0x63, 0x34, 0x39, 0x36, 0x34, 0x70, 0x6f, 0x6b, 0x65 + .byte 0x64, 0x75, 0x6e, 0x67, 0x65, 0x6f, 0x6e, 0x64, 0x73, 0x00, 0x00, 0x00 + .global ov00_02317FA0 +ov00_02317FA0: + .byte 0x0b, 0x00, 0x00, 0x00 + .word ov08_0233E230 + .word ov08_0233E7D8 + .word ov08_0233E2BC + .global ov00_02317FB0 +ov00_02317FB0: + .byte 0x0c, 0x00, 0x00, 0x00 + .word ov09_0233CA80 + .word ov09_0233CBC8 + .word ov09_0233CBF8 + .global ov00_02317FC0 +ov00_02317FC0: + .byte 0x2f, 0x42, 0x41, 0x43 + .byte 0x4b, 0x2f, 0x73, 0x30, 0x39, 0x70, 0x31, 0x30, 0x61, 0x2e, 0x62, 0x67, 0x70, 0x00, 0x00, 0x00 + .global ov00_02317FD4 +ov00_02317FD4: + .byte 0x2f, 0x42, 0x41, 0x43, 0x4b, 0x2f, 0x73, 0x30, 0x39, 0x70, 0x30, 0x35, 0x61, 0x2e, 0x62, 0x67 + .byte 0x70, 0x00, 0x00, 0x00 + .global ov00_02317FE8 +ov00_02317FE8: + .byte 0x2f, 0x42, 0x41, 0x43, 0x4b, 0x2f, 0x73, 0x30, 0x39, 0x70, 0x30, 0x38 + .byte 0x61, 0x2e, 0x62, 0x67, 0x70, 0x00, 0x00, 0x00 + .global ov00_02317FFC +ov00_02317FFC: + .byte 0x2f, 0x42, 0x41, 0x43, 0x4b, 0x2f, 0x73, 0x30 + .byte 0x39, 0x70, 0x30, 0x37, 0x61, 0x2e, 0x62, 0x67, 0x70, 0x00, 0x00, 0x00 + .global ov00_02318010 +ov00_02318010: + .byte 0x2f, 0x42, 0x41, 0x43 + .byte 0x4b, 0x2f, 0x73, 0x30, 0x39, 0x70, 0x30, 0x36, 0x61, 0x2e, 0x62, 0x67, 0x70, 0x00, 0x00, 0x00 + .global ov00_02318024 +ov00_02318024: + .byte 0x2f, 0x42, 0x41, 0x43, 0x4b, 0x2f, 0x73, 0x30, 0x39, 0x70, 0x30, 0x39, 0x61, 0x2e, 0x62, 0x67 + .byte 0x70, 0x00, 0x00, 0x00 + .global ov00_02318038 +ov00_02318038: + .byte 0x2f, 0x42, 0x41, 0x43, 0x4b, 0x2f, 0x73, 0x30, 0x39, 0x70, 0x30, 0x34 + .byte 0x61, 0x2e, 0x62, 0x67, 0x70, 0x00, 0x00, 0x00 + .global ov00_0231804C +ov00_0231804C: + .byte 0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x06, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318060 +ov00_02318060: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_02318064 +ov00_02318064: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x03, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x03, 0x02, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x04, 0x05, 0x00, 0x00 + .byte 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x05, 0x04, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x06, 0x07, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x07, 0x06, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x08, 0x09, 0x00, 0x00 + .byte 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x09, 0x08, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .byte 0x02, 0x00, 0x00, 0x00, 0x0a, 0x0b, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .byte 0x0b, 0x0a, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231812C +ov00_0231812C: + .byte 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00 + .global ov00_02318138 +ov00_02318138: + .byte 0x00, 0x40, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00 + .byte 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318150 +ov00_02318150: + .byte 0x15, 0x03, 0x00, 0x00 + .byte 0x02, 0x01, 0x29, 0x00 + .global ov00_02318158 +ov00_02318158: + .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00 + .global ov00_02318160 +ov00_02318160: + .byte 0xff, 0xff, 0xff, 0xff + .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff + .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff + .global ov00_02318180 +ov00_02318180: + .byte 0x57, 0x61, 0x79, 0x70 + .byte 0x6f, 0x72, 0x74, 0x32 + .global ov00_02318188 +ov00_02318188: + .byte 0x46, 0x52, 0x45, 0x45, 0x53, 0x50, 0x4f, 0x54 + .global ov00_02318190 +ov00_02318190: + .byte 0x4e, 0x49, 0x4e, 0x54 + .byte 0x45, 0x4e, 0x44, 0x4f, 0x57, 0x46, 0x43, 0x00 + .global ov00_0231819C +ov00_0231819C: + .byte 0x02, 0x80, 0x00, 0x00, 0x04, 0x80, 0x00, 0x00 + .byte 0x08, 0x80, 0x00, 0x00, 0x10, 0x80, 0x00, 0x00, 0x20, 0x80, 0x00, 0x00, 0x40, 0x80, 0x00, 0x00 + .byte 0x80, 0x80, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00 + .byte 0x00, 0x88, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00 + .global ov00_023181D0 +ov00_023181D0: + .byte 0x00, 0x00, 0x00, 0x01 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 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, 0x10, 0x00, 0x00, 0x00, 0x10, 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 + .word ov00_02318B00 + .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x61, 0x61, 0x61 + .global ov00_0231822B +ov00_0231822B: + .byte 0x17, 0x14, 0x11, 0x0d, 0x0b, 0x06, 0x0f, 0x0e, 0x09 + .byte 0x15, 0x0c, 0x04, 0x02, 0x01, 0x12, 0x10, 0x05, 0x03, 0x13, 0x0a, 0x07, 0x08, 0x00, 0x16, 0x00 + .global ov00_02318244 +ov00_02318244: + .byte 0x05, 0x01, 0x0c, 0x04, 0x02, 0x03, 0x0a, 0x00, 0x0b, 0x07, 0x09, 0x08, 0x06, 0x00, 0x00, 0x00 + .global ov00_02318254 +ov00_02318254: + .byte 0x0a, 0x0d, 0x0e, 0x08, 0x09, 0x03, 0x06, 0x00, 0x0c, 0x05, 0x02, 0x07, 0x0b, 0x01, 0x0f, 0x04 + .global ov00_02318264 +ov00_02318264: + .byte 0x21, 0x53, 0x44, 0x57 + .global ov00_02318268 +ov00_02318268: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231826C +ov00_0231826C: + .byte 0x01, 0x02, 0x00, 0x04, 0x03, 0x05, 0x06, 0x07 + .global ov00_02318274 +ov00_02318274: + .byte 0x05, 0x09, 0x01, 0x0e, 0x0c, 0x02, 0x0a, 0x00, 0x0b, 0x0d, 0x03, 0x04, 0x08, 0x06, 0x0f, 0x07 + .global ov00_02318284 +ov00_02318284: + .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 + .byte 0x00 + .global ov00_02318295 +ov00_02318295: + .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65 + .byte 0x66, 0x00, 0x00, 0x00 + .global ov00_023182A8 +ov00_023182A8: + .byte 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c + .byte 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x61, 0x62 + .byte 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72 + .byte 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37 + .byte 0x38, 0x39, 0x2e, 0x2d, 0x00, 0x00, 0x00, 0x00 + .global ov00_023182EC +ov00_023182EC: + .byte 0x30, 0x30, 0x3a, 0x30, 0x30, 0x30, 0x30, 0x30 + .byte 0x30, 0x30, 0x2d, 0x30, 0x30, 0x00, 0x00, 0x00 + .global ov00_023182FC +ov00_023182FC: + .byte 0x59, 0x32, 0x39, 0x31, 0x62, 0x6e, 0x51, 0x2a + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_02318308 +ov00_02318308: + .byte 0x62, 0x47, 0x6c, 0x7a, 0x64, 0x41, 0x2a, 0x2a, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318314 +ov00_02318314: + .byte 0x59, 0x32, 0x39, 0x75, 0x64, 0x47, 0x56, 0x75, 0x64, 0x48, 0x4d, 0x2a, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318324 +ov00_02318324: + .byte 0x00, 0x00, 0xc1, 0x6f, 0xf2, 0x86, 0x23, 0x00, 0x00, 0x80, 0xc6, 0xa4, 0x7e, 0x8d, 0x03, 0x00 + .byte 0x00, 0x40, 0x7a, 0x10, 0xf3, 0x5a, 0x00, 0x00, 0x00, 0xa0, 0x72, 0x4e, 0x18, 0x09, 0x00, 0x00 + .byte 0x00, 0x10, 0xa5, 0xd4, 0xe8, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x76, 0x48, 0x17, 0x00, 0x00, 0x00 + .byte 0x00, 0xe4, 0x0b, 0x54, 0x02, 0x00, 0x00, 0x00, 0x00, 0xca, 0x9a, 0x3b, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0xe1, 0xf5, 0x05, 0x00, 0x00, 0x00, 0x00, 0x80, 0x96, 0x98, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x40, 0x42, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x86, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x10, 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov00_023183A4 +ov00_023183A4: + .byte 0x2d, 0x2d, 0x74, 0x39, 0x53, 0x66, 0x34, 0x79, 0x66, 0x6a, 0x66, 0x31, 0x52, 0x74, 0x76, 0x44 + .byte 0x75, 0x33, 0x41 + .global ov00_023183B7 +ov00_023183B7: + .byte 0x41, 0x00, 0x00, 0x00, 0x00 + .global ov00_023183BC +ov00_023183BC: + .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d + .byte 0x44, 0x69, 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x66, 0x6f, 0x72 + .byte 0x6d, 0x2d, 0x64, 0x61, 0x74, 0x61, 0x3b, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x00, 0x00 + .global ov00_023183E4 +ov00_023183E4: + .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70 + .byte 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x6f, 0x63, 0x74, 0x65, 0x74, 0x2d + .byte 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x0d, 0x0a, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d + .byte 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e + .byte 0x67, 0x3a, 0x20, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x79, 0x0d, 0x0a, 0x00 + .global ov00_02318430 +ov00_02318430: + .byte 0x00, 0xca, 0x9a, 0x3b + .byte 0x00, 0xe1, 0xf5, 0x05, 0x80, 0x96, 0x98, 0x00, 0x40, 0x42, 0x0f, 0x00, 0xa0, 0x86, 0x01, 0x00 + .byte 0x10, 0x27, 0x00, 0x00, 0xe8, 0x03, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00 + .global ov00_02318454 +ov00_02318454: + .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_02318468 +ov00_02318468: + .byte 0x5b, 0x5d, 0x5f, 0x00 + .global ov00_0231846C +ov00_0231846C: + .byte 0x2d, 0x5f, 0x3d, 0x00 + .global ov00_02318470 +ov00_02318470: + .byte 0x2b, 0x2f, 0x3d, 0x00 + .global ov00_02318474 +ov00_02318474: + .byte 0x99, 0x79, 0x82, 0x5a, 0xa1, 0xeb, 0xd9, 0x6e, 0xdc, 0xbc, 0x1b, 0x8f, 0xd6, 0xc1, 0x62, 0xca + .global ov00_02318484 +ov00_02318484: + .byte 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 + .global ov00_02318490 +ov00_02318490: + .byte 0x04, 0x00, 0x00, 0x00 + .byte 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov00_023184A0 +ov00_023184A0: + .byte 0x25, 0x30, 0x30, 0x00 + .byte 0x00, 0x20, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .global ov00_023184AC +ov00_023184AC: + .byte 0x32, 0x31, 0x34, 0x37, 0x34, 0x38, 0x33, 0x36 + .byte 0x34, 0x37, 0x00, 0x00, 0x5c, 0x6d, 0x6f, 0x64, 0x5c, 0x25, 0x64, 0x00, 0x13, 0x1d, 0x01, 0x04 + .byte 0x00, 0x00, 0x00, 0x28, 0x1f, 0x06, 0x45, 0x34, 0x3f, 0x01, 0x1b, 0x00 + .global ov00_023184D0 +ov00_023184D0: + .byte 0x13, 0x1d, 0x01, 0x04 + .byte 0x00, 0x00, 0x00, 0x28, 0x1f, 0x06, 0x45, 0x34, 0x3f, 0x01, 0x1b, 0x00, 0x0c, 0x13, 0x1a, 0x1e + .byte 0x0d, 0x13, 0x28, 0x1d, 0x00, 0x01, 0x01, 0x24, 0x75, 0x16, 0x33, 0x18, 0x00, 0x10, 0x04, 0x1d + .byte 0x55, 0x1b, 0x39, 0x14, 0x39, 0x16, 0x33, 0x4f, 0x01, 0x00, 0x0c, 0x1c, 0x0a, 0x1d, 0x02, 0x02 + .byte 0x19, 0x24, 0x2c, 0x34, 0x06, 0x17, 0x3e, 0x1c, 0x06, 0x0e, 0x39, 0x46, 0x10, 0x1d, 0x03, 0x0d + .byte 0x16, 0x0b, 0x3b, 0x17, 0x16, 0x36, 0x40, 0x07, 0x00, 0x0c, 0x15, 0x0a, 0x1e, 0x15, 0x0a, 0x10 + .byte 0x1d, 0x2c, 0x06, 0x0c, 0x1b, 0x3b, 0x2e, 0x4a, 0x19, 0x39, 0x08, 0x11, 0x38, 0x18, 0x09, 0x16 + .byte 0x10, 0x0c, 0x57, 0x1c, 0x36, 0x09, 0x0a, 0x10, 0x1d, 0x55, 0x0c, 0x00, 0x0c, 0x13, 0x1a, 0x1e + .byte 0x0d, 0x13, 0x28, 0x1d, 0x11, 0x1d, 0x11, 0x10, 0x24, 0x1d, 0x04, 0x0f, 0x0b, 0x3f, 0x51, 0x32 + .byte 0x2c, 0x1a, 0x00, 0x0b, 0x20, 0x2e, 0x4a, 0x19, 0x39, 0x0f, 0x1d, 0x25, 0x2c, 0x4d, 0x01, 0x00 + .byte 0x0c, 0x13, 0x1a, 0x1e, 0x0d, 0x13, 0x28, 0x1d, 0x1e, 0x01, 0x06, 0x13, 0x0c, 0x57, 0x1c, 0x36 + .byte 0x0e, 0x06, 0x0d, 0x29, 0x11, 0x1b, 0x0d, 0x24, 0x75, 0x01, 0x33, 0x18, 0x00, 0x10, 0x04, 0x1d + .byte 0x55, 0x1b, 0x39, 0x14, 0x39, 0x16, 0x33, 0x4f, 0x01, 0x00, 0x0c, 0x13, 0x1a, 0x1e, 0x0d, 0x3f + .byte 0x28, 0x26, 0x11, 0x05, 0x00, 0x16, 0x31, 0x1f, 0x0a, 0x36, 0x40, 0x10, 0x28, 0x33, 0x15, 0x1b + .byte 0x15, 0x17, 0x3e, 0x01, 0x0a, 0x36, 0x40, 0x10, 0x28, 0x31, 0x1f, 0x1a, 0x11, 0x24, 0x75, 0x16 + .byte 0x33, 0x03, 0x01, 0x3f, 0x45, 0x00, 0x0c, 0x15, 0x0a, 0x1e, 0x15, 0x07, 0x28, 0x1d, 0x00, 0x01 + .byte 0x01, 0x24, 0x75, 0x16, 0x33, 0x1a, 0x11, 0x1a, 0x04, 0x24, 0x2c, 0x4d, 0x01, 0x24, 0x34, 0x1b + .byte 0x01, 0x0e, 0x00, 0x1b, 0x28, 0x64, 0x14, 0x34, 0x0e, 0x1d, 0x29, 0x01, 0x33, 0x4f, 0x16, 0x3f + .byte 0x18, 0x28, 0x14, 0x34, 0x40, 0x1c, 0x00, 0x0c, 0x07, 0x1f, 0x0e, 0x02, 0x02, 0x19, 0x24, 0x2c + .byte 0x34, 0x16, 0x1d, 0x23, 0x01, 0x04, 0x0f, 0x1c, 0x3f, 0x51, 0x25, 0x2c, 0x0b, 0x0a, 0x16, 0x3e + .byte 0x1b, 0x0b, 0x36, 0x40, 0x07, 0x28, 0x25, 0x1f, 0x06, 0x00, 0x24, 0x75, 0x16, 0x33, 0x0d, 0x04 + .byte 0x0e, 0x11, 0x25, 0x11, 0x1c, 0x04, 0x24, 0x75, 0x01, 0x00, 0x0c, 0x01, 0x0a, 0x1e, 0x15, 0x07 + .byte 0x28, 0x1d, 0x00, 0x01, 0x01, 0x24, 0x75, 0x16, 0x33, 0x1a, 0x11, 0x1a, 0x04, 0x24, 0x2c, 0x4d + .byte 0x01, 0x24, 0x34, 0x1b, 0x01, 0x0e, 0x00, 0x1b, 0x28, 0x64, 0x14, 0x34, 0x0e, 0x0e, 0x0c, 0x57 + .byte 0x0b, 0x36, 0x09, 0x0a, 0x10, 0x1d, 0x55, 0x0c, 0x39, 0x14, 0x35, 0x1c, 0x08, 0x1e, 0x0d, 0x3f + .byte 0x51, 0x25, 0x2c, 0x0c, 0x04, 0x0c, 0x31, 0x2e, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318660 +ov00_02318660: + .byte 0x5c, 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, 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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318760 +ov00_02318760: + .byte 0xfd, 0xfc, 0x1e, 0x66 + .byte 0x6a, 0xb2, 0x00, 0x00 + .global ov00_02318768 +ov00_02318768: + .word ov00_0231D398 + .word ov00_0231D390 + + .data + .global ov00_02318780 +ov00_02318780: + .byte 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 + .global ov00_023187A0 +ov00_023187A0: + .byte 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 + .global ov00_023187C4 +ov00_023187C4: + .word ov00_02318780 + .word ov00_02318780 + .word ov00_02318780 + .global ov00_023187D0 +ov00_023187D0: +#if defined(EUROPE) + .byte 0x43, 0x32, 0x53, 0x50 +#elif defined(JAPAN) + .byte 0x43, 0x32, 0x53, 0x4A +#else + .byte 0x43, 0x32, 0x53, 0x45 +#endif + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_023187D8 +ov00_023187D8: +#if defined(EUROPE) + .byte 0x41, 0x79, 0x43, 0x75, 0x48, 0x72, 0x47, 0x53, 0x4A, 0x4D, 0x4B, 0x56, 0x34, 0x71, 0x6A, 0x61 +#elif defined(JAPAN) + .byte 0x36, 0x77, 0x42, 0x79, 0x66, 0x52, 0x33, 0x71 + .byte 0x4D, 0x64, 0x56, 0x37, 0x7A, 0x74, 0x73, 0x68 +#else + .byte 0x48, 0x61, 0x75, 0x5a, 0x6e, 0x37, 0x78, 0x32, 0x51, 0x6a, 0x41, 0x4a + .byte 0x47, 0x7a, 0x50, 0x43 +#endif + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_023187EC +ov00_023187EC: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_023187F0 +ov00_023187F0: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_023187F4 +ov00_023187F4: + .word ov00_02318038 + .word ov00_02317FD4 + .word ov00_02318010 + .word ov00_02317FFC + .word ov00_02317FE8 + .word ov00_02318024 + .word ov00_02317FC0 + .global ov00_02318810 +ov00_02318810: + .byte 0x00, 0x00, 0x01, 0x00 + .global ov00_02318814 +ov00_02318814: + .byte 0xff, 0x00, 0x00, 0x00 + .global ov00_02318818 +ov00_02318818: + .word ov00_02318138 + .global ov00_0231881C +ov00_0231881C: + .byte 0x72, 0x6f, 0x6d, 0x00 + .global ov00_02318820 +ov00_02318820: + .byte 0x05, 0x00, 0x28, 0x00 + .byte 0x28, 0x00, 0xff, 0xff + .word ov00_02318830 + .byte 0x01, 0x00, 0x00, 0x00 + .global ov00_02318830 +ov00_02318830: + .byte 0x6d, 0x00, 0x75, 0x00 + .byte 0x6c, 0x00, 0x74, 0x00, 0x69, 0x00, 0x62, 0x00, 0x6f, 0x00, 0x6f, 0x00, 0x74, 0x00, 0x00, 0x00 + .global ov00_02318844 +ov00_02318844: + .byte 0x10, 0x00, 0x00, 0x00 + .global ov00_02318848 +ov00_02318848: + .byte 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00 + .global ov00_02318850 +ov00_02318850: + .byte 0xaa, 0xaa, 0x03, 0x00 + .byte 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231885C +ov00_0231885C: + .byte 0x4e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f + .byte 0x44, 0x53, 0x00, 0x00 + .global ov00_02318868 +ov00_02318868: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231886C +ov00_0231886C: + .byte 0xe6, 0xff, 0xff, 0xff + .global ov00_02318870 +ov00_02318870: + .byte 0x01, 0x01, 0xc0, 0x05 + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x08, 0x0c, 0x20 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_02318888 +ov00_02318888: + .byte 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x66, 0x04, 0x00, 0x00, 0x00, 0x00 + .byte 0x61, 0x08, 0x00, 0x00, 0x00, 0x08, 0x0c, 0x20, 0x00, 0x08, 0x0d, 0x20 + .global ov00_023188A0 +ov00_023188A0: + .byte 0x02, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0xea, 0x05, 0x00, 0x00, 0x00, 0x00, 0xeb, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x08, 0x0d, 0x20 + .global ov00_023188B8 +ov00_023188B8: + .byte 0x25, 0x64, 0x2e, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x00 + .global ov00_023188C4 +ov00_023188C4: + .byte 0x55, 0x04, 0x03, 0x00 + .global ov00_023188C8 +ov00_023188C8: + .byte 0xff, 0xff, 0xff, 0x00 + .global ov00_023188CC +ov00_023188CC: + .byte 0x04, 0x00, 0x05, 0x00, 0xff, 0xff, 0xff, 0xff + .global ov00_023188D4 +ov00_023188D4: + .word ov00_023188C8 + .word ov00_023188F4 + .word ov00_023188EC + .word ov00_02318900 + .word ov00_0231890C + .word ov00_023188C4 + .global ov00_023188EC +ov00_023188EC: + .byte 0x55, 0x08, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00 + .global ov00_023188F4 +ov00_023188F4: + .byte 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00 + .global ov00_02318900 +ov00_02318900: + .byte 0x2a, 0x86, 0x48, 0x86 + .byte 0xf7, 0x0d, 0x01, 0x01, 0x04, 0x00, 0x00, 0x00 + .global ov00_0231890C +ov00_0231890C: + .byte 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01 + .byte 0x05, 0x00, 0x00, 0x00 + .global ov00_02318918 +ov00_02318918: + .byte 0x41, 0x00, 0x00, 0x00 + .global ov00_0231891C +ov00_0231891C: + .byte 0x42, 0x42, 0x00, 0x00 + .global ov00_02318920 +ov00_02318920: + .byte 0x43, 0x43, 0x43, 0x00 + .global ov00_02318924 +ov00_02318924: + .byte 0x53, 0x52, 0x56, 0x52, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231892C +ov00_0231892C: + .byte 0x43, 0x4c, 0x4e, 0x54, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318934 +ov00_02318934: + .byte 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f + .byte 0x01, 0x06, 0x0b, 0x00, 0x05, 0x0a, 0x0f, 0x04, 0x09, 0x0e, 0x03, 0x08, 0x0d, 0x02, 0x07, 0x0c + .byte 0x05, 0x08, 0x0b, 0x0e, 0x01, 0x04, 0x07, 0x0a, 0x0d, 0x00, 0x03, 0x06, 0x09, 0x0c, 0x0f, 0x02 + .byte 0x00, 0x07, 0x0e, 0x05, 0x0c, 0x03, 0x0a, 0x01, 0x08, 0x0f, 0x06, 0x0d, 0x04, 0x0b, 0x02, 0x09 + .global ov00_02318974 +ov00_02318974: + .byte 0x80, 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, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov00_023189B4 +ov00_023189B4: + .byte 0x78, 0xa4, 0x6a, 0xd7, 0x56, 0xb7, 0xc7, 0xe8, 0xdb, 0x70, 0x20, 0x24, 0xee, 0xce, 0xbd, 0xc1 + .byte 0xaf, 0x0f, 0x7c, 0xf5, 0x2a, 0xc6, 0x87, 0x47, 0x13, 0x46, 0x30, 0xa8, 0x01, 0x95, 0x46, 0xfd + .byte 0xd8, 0x98, 0x80, 0x69, 0xaf, 0xf7, 0x44, 0x8b, 0xb1, 0x5b, 0xff, 0xff, 0xbe, 0xd7, 0x5c, 0x89 + .byte 0x22, 0x11, 0x90, 0x6b, 0x93, 0x71, 0x98, 0xfd, 0x8e, 0x43, 0x79, 0xa6, 0x21, 0x08, 0xb4, 0x49 + .byte 0x62, 0x25, 0x1e, 0xf6, 0x40, 0xb3, 0x40, 0xc0, 0x51, 0x5a, 0x5e, 0x26, 0xaa, 0xc7, 0xb6, 0xe9 + .byte 0x5d, 0x10, 0x2f, 0xd6, 0x53, 0x14, 0x44, 0x02, 0x81, 0xe6, 0xa1, 0xd8, 0xc8, 0xfb, 0xd3, 0xe7 + .byte 0xe6, 0xcd, 0xe1, 0x21, 0xd6, 0x07, 0x37, 0xc3, 0x87, 0x0d, 0xd5, 0xf4, 0xed, 0x14, 0x5a, 0x45 + .byte 0x05, 0xe9, 0xe3, 0xa9, 0xf8, 0xa3, 0xef, 0xfc, 0xd9, 0x02, 0x6f, 0x67, 0x8a, 0x4c, 0x2a, 0x8d + .byte 0x42, 0x39, 0xfa, 0xff, 0x81, 0xf6, 0x71, 0x87, 0x22, 0x61, 0x9d, 0x6d, 0x0c, 0x38, 0xe5, 0xfd + .byte 0x44, 0xea, 0xbe, 0xa4, 0xa9, 0xcf, 0xde, 0x4b, 0x60, 0x4b, 0xbb, 0xf6, 0x70, 0xbc, 0xbf, 0xbe + .byte 0xc6, 0x7e, 0x9b, 0x28, 0xfa, 0x27, 0xa1, 0xea, 0x85, 0x30, 0xef, 0xd4, 0x05, 0x1d, 0x88, 0x04 + .byte 0x39, 0xd0, 0xd4, 0xd9, 0xe5, 0x99, 0xdb, 0xe6, 0xf8, 0x7c, 0xa2, 0x1f, 0x65, 0x56, 0xac, 0xc4 + .byte 0x44, 0x22, 0x29, 0xf4, 0x97, 0xff, 0x2a, 0x43, 0xa7, 0x23, 0x94, 0xab, 0x39, 0xa0, 0x93, 0xfc + .byte 0xc3, 0x59, 0x5b, 0x65, 0x92, 0xcc, 0x0c, 0x8f, 0x7d, 0xf4, 0xef, 0xff, 0xd1, 0x5d, 0x84, 0x85 + .byte 0x4f, 0x7e, 0xa8, 0x6f, 0xe0, 0xe6, 0x2c, 0xfe, 0x14, 0x43, 0x01, 0xa3, 0xa1, 0x11, 0x08, 0x4e + .byte 0x82, 0x7e, 0x53, 0xf7, 0x35, 0xf2, 0x3a, 0xbd, 0xbb, 0xd2, 0xd7, 0x2a, 0x91, 0xd3, 0x86, 0xeb + .global ov00_02318AB4 +ov00_02318AB4: + .byte 0x80 + .global ov00_02318AB5 +ov00_02318AB5: + .byte 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, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318AF4 +ov00_02318AF4: + .byte 0x4e, 0x57, 0x43, 0x55, 0x53, 0x42, 0x41, 0x50, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318B00 +ov00_02318B00: + .byte 0x4e, 0x49, 0x4e, 0x54 + .byte 0x45, 0x4e, 0x44, 0x4f, 0x2d, 0x44, 0x53, 0x00 + .global ov00_02318B0C +ov00_02318B0C: + .word ov00_02318B58 + .word ov00_02318B1C + .word ov00_02318B3C + .word ov00_02318B2C + .global ov00_02318B1C +ov00_02318B1C: + .byte 0x67, 0x77, 0x69, 0x27, 0x36, 0x26, 0x66, 0x73 + .byte 0x3d, 0x30, 0x4e, 0x66, 0x7e, 0x00, 0x00, 0x00 + .global ov00_02318B2C +ov00_02318B2C: + .byte 0x25, 0x28, 0x65, 0x67, 0x45, 0x72, 0x29, 0x61 + .byte 0x67, 0x28, 0x73, 0x26, 0x6d, 0x00, 0x00, 0x00 + .global ov00_02318B3C +ov00_02318B3C: + .byte 0x39, 0x35, 0x32, 0x75, 0x79, 0x62, 0x6a, 0x6e + .byte 0x70, 0x6d, 0x75, 0x39, 0x30, 0x33, 0x62, 0x69, 0x61, 0x40, 0x62, 0x6b, 0x35, 0x6d, 0x5b, 0x2d + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_02318B58 +ov00_02318B58: + .byte 0x33, 0x38, 0x67, 0x36, 0x7a, 0x78, 0x6a, 0x6b, 0x32, 0x30, 0x67, 0x76 + .byte 0x6d, 0x76, 0x5d, 0x36, 0x5e, 0x3d, 0x6a, 0x26, 0x25, 0x76, 0x59, 0x31, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318B74 +ov00_02318B74: + .byte 0x4e, 0x44, 0x57, 0x43, 0x53, 0x48, 0x41, 0x50, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318B80 +ov00_02318B80: + .byte 0x4e, 0x57, 0x43, 0x55 + .byte 0x53, 0x42, 0x41, 0x50, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318B8C +ov00_02318B8C: + .byte 0x25, 0x30, 0x31, 0x32, 0x6c, 0x6c, 0x75, 0x00 + .global ov00_02318B94 +ov00_02318B94: + .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 + .byte 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_02318BB8 +ov00_02318BB8: + .byte 0x25, 0x73, 0x25, 0x63, 0x25, 0x63, 0x25, 0x63, 0x25, 0x63, 0x25, 0x73 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_02318BC8 +ov00_02318BC8: + .word ov00_02318BE4 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x4e, 0x00, 0x00 + .global ov00_02318BE4 +ov00_02318BE4: + .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x6e, 0x61, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74 + .byte 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65 + .byte 0x74, 0x2f, 0x61, 0x63, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318C0C +ov00_02318C0C: + .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x44, 0x57 + .byte 0x43, 0x61, 0x75, 0x74, 0x68, 0x00, 0x00, 0x00 + .global ov00_02318C1C +ov00_02318C1C: + .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43 + .byte 0x61, 0x75, 0x74, 0x68, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318C2C +ov00_02318C2C: + .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f + .byte 0x6e, 0x61, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69 + .byte 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x63, 0x00 + .global ov00_02318C4C +ov00_02318C4C: + .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x62, 0x6d + .byte 0x77, 0x6f, 0x72, 0x6b, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318C5C +ov00_02318C5C: + .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x62, 0x6d, 0x77 + .byte 0x6f, 0x72, 0x6b, 0x00 + .global ov00_02318C68 +ov00_02318C68: + .byte 0x44, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318C70 +ov00_02318C70: + .byte 0x68, 0x74, 0x74, 0x70 + .byte 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x00, 0x00 + .global ov00_02318C7C +ov00_02318C7C: + .byte 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x63, 0x64 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_02318C88 +ov00_02318C88: + .byte 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x00, 0x00, 0x00 + .global ov00_02318C90 +ov00_02318C90: + .byte 0x6c, 0x6f, 0x63, 0x61 + .byte 0x74, 0x6f, 0x72, 0x00 + .global ov00_02318C98 +ov00_02318C98: + .byte 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x00, 0x00, 0x00 + .global ov00_02318CA4 +ov00_02318CA4: + .byte 0x64, 0x61, 0x74, 0x65, 0x74, 0x69, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318CB0 +ov00_02318CB0: + .byte 0x53, 0x65, 0x74, 0x2d + .byte 0x43, 0x6f, 0x6f, 0x6b, 0x69, 0x65, 0x00, 0x00 + .global ov00_02318CBC +ov00_02318CBC: + .byte 0x61, 0x63, 0x63, 0x74, 0x63, 0x72, 0x65, 0x61 + .byte 0x74, 0x65, 0x00, 0x00 + .global ov00_02318CC8 +ov00_02318CC8: + .byte 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00 + .global ov00_02318CD0 +ov00_02318CD0: + .byte 0x6c, 0x6f, 0x67, 0x69 + .byte 0x6e, 0x00, 0x00, 0x00 + .global ov00_02318CD8 +ov00_02318CD8: + .byte 0x67, 0x73, 0x62, 0x72, 0x63, 0x64, 0x00, 0x00 + .global ov00_02318CE0 +ov00_02318CE0: + .byte 0x59, 0x00, 0x00, 0x00 + .global ov00_02318CE4 +ov00_02318CE4: + .byte 0x69, 0x73, 0x77, 0x66, 0x63, 0x00, 0x00, 0x00 + .global ov00_02318CEC +ov00_02318CEC: + .byte 0x69, 0x6e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x6e + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_02318CF8 +ov00_02318CF8: + .byte 0x25, 0x30, 0x31, 0x33, 0x6c, 0x6c, 0x75, 0x00 + .global ov00_02318D00 +ov00_02318D00: + .byte 0x25, 0x30, 0x33, 0x75 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_02318D08 +ov00_02318D08: + .byte 0x25, 0x30, 0x32, 0x78, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318D10 +ov00_02318D10: + .byte 0x25, 0x30, 0x32, 0x78 + .byte 0x25, 0x30, 0x32, 0x78, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318D1C +ov00_02318D1C: + .byte 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64 + .byte 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64, 0x25, 0x30, 0x32, 0x64 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_02318D38 +ov00_02318D38: + .byte 0x25, 0x30, 0x32, 0x64, 0x3a, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 + .byte 0x2d, 0x30, 0x30, 0x00 + .global ov00_02318D48 +ov00_02318D48: + .byte 0x25, 0x30, 0x33, 0x64, 0x25, 0x30, 0x33, 0x64, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318D54 +ov00_02318D54: + .byte 0x73, 0x64, 0x6b, 0x76, 0x65, 0x72, 0x00, 0x00 + .global ov00_02318D5C +ov00_02318D5C: + .byte 0x75, 0x73, 0x65, 0x72, 0x69, 0x64, 0x00, 0x00 + .global ov00_02318D64 +ov00_02318D64: + .byte 0x70, 0x61, 0x73, 0x73, 0x77, 0x64, 0x00, 0x00 + .global ov00_02318D6C +ov00_02318D6C: + .byte 0x62, 0x73, 0x73, 0x69, 0x64, 0x00, 0x00, 0x00 + .global ov00_02318D74 +ov00_02318D74: + .byte 0x61, 0x70, 0x69, 0x6e, 0x66, 0x6f, 0x00, 0x00 + .global ov00_02318D7C +ov00_02318D7C: + .byte 0x67, 0x61, 0x6d, 0x65, 0x63, 0x64, 0x00, 0x00 + .global ov00_02318D84 +ov00_02318D84: + .byte 0x6d, 0x61, 0x6b, 0x65, 0x72, 0x63, 0x64, 0x00 + .global ov00_02318D8C +ov00_02318D8C: + .byte 0x75, 0x6e, 0x69, 0x74, 0x63, 0x64, 0x00, 0x00 + .global ov00_02318D94 +ov00_02318D94: + .byte 0x6d, 0x61, 0x63, 0x61, 0x64, 0x72, 0x00, 0x00 + .global ov00_02318D9C +ov00_02318D9C: + .byte 0x6c, 0x61, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318DA4 +ov00_02318DA4: + .byte 0x62, 0x69, 0x72, 0x74, 0x68, 0x00, 0x00, 0x00 + .global ov00_02318DAC +ov00_02318DAC: + .byte 0x64, 0x65, 0x76, 0x74, 0x69, 0x6d, 0x65, 0x00 + .global ov00_02318DB4 +ov00_02318DB4: + .byte 0x64, 0x65, 0x76, 0x6e, 0x61, 0x6d, 0x65, 0x00 + .global ov00_02318DBC +ov00_02318DBC: + .byte 0x73, 0x73, 0x69, 0x64, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318DC4 +ov00_02318DC4: + .byte 0x4e, 0x69, 0x74, 0x72, 0x6f, 0x20, 0x57, 0x69, 0x46, 0x69, 0x20, 0x53, 0x44, 0x4b, 0x2f, 0x25 + .byte 0x64, 0x2e, 0x25, 0x64, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318DDC +ov00_02318DDC: + .byte 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41, 0x67, 0x65 + .byte 0x6e, 0x74, 0x00, 0x00 + .global ov00_02318DE8 +ov00_02318DE8: + .byte 0x48, 0x54, 0x54, 0x50, 0x5f, 0x58, 0x5f, 0x47, 0x41, 0x4d, 0x45, 0x43 + .byte 0x44, 0x00, 0x00, 0x00 + .global ov00_02318DF8 +ov00_02318DF8: + .word ov00_02319C30 + .word ov00_02319B04 + .word ov00_02319DE4 + .word ov00_02319EC0 + .word ov00_0231939C + .word ov00_02319638 + .word ov00_02319720 + .word ov00_023194E8 + .word ov00_023199EC + .word ov00_023198CC + .word ov00_02319F9C + .word ov00_023197E4 + .global ov00_02318E28 +ov00_02318E28: + .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2d, 0x3e + .byte 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x63, 0x76, 0x62, 0x75, 0x66, 0x00, 0x00 + .global ov00_02318E40 +ov00_02318E40: + .byte 0x41, 0x4c, 0x4c, 0x4f + .byte 0x43, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2d, 0x3e, 0x6c, 0x6f, 0x77, 0x73, 0x65, 0x6e, 0x64, 0x62 + .byte 0x75, 0x66, 0x00, 0x00 + .global ov00_02318E58 +ov00_02318E58: + .byte 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00 + .global ov00_02318E64 +ov00_02318E64: + .byte 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x00 + .global ov00_02318E6C +ov00_02318E6C: + .byte 0x0d, 0x0a, 0x0d, 0x0a, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318E74 +ov00_02318E74: + .byte 0x25, 0x64, 0x00, 0x00 + .global ov00_02318E78 +ov00_02318E78: + .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x4c, 0x65, 0x6e, 0x67 + .byte 0x74, 0x68, 0x00, 0x00 + .global ov00_02318E88 +ov00_02318E88: + .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x4c, 0x65, 0x6e, 0x67 + .byte 0x74, 0x68, 0x3a, 0x20, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318E9C +ov00_02318E9C: + .byte 0x0d, 0x0a, 0x00, 0x00 + .global ov00_02318EA0 +ov00_02318EA0: + .byte 0x46, 0x52, 0x45, 0x45 + .byte 0x20, 0x68, 0x74, 0x74, 0x70, 0x2d, 0x3e, 0x6c, 0x6f, 0x77, 0x72, 0x65, 0x63, 0x76, 0x62, 0x75 + .byte 0x66, 0x00, 0x00, 0x00 + .global ov00_02318EB8 +ov00_02318EB8: + .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x68, 0x74, 0x74, 0x70, 0x2d, 0x3e, 0x6c + .byte 0x6f, 0x77, 0x73, 0x65, 0x6e, 0x64, 0x62, 0x75, 0x66, 0x00, 0x00, 0x00 + .global ov00_02318ED0 +ov00_02318ED0: + .byte 0x50, 0x4f, 0x53, 0x54 + .byte 0x20, 0x2f, 0x25, 0x73, 0x20, 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x0d, 0x0a, 0x43 + .byte 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x74, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x61, 0x70, 0x70 + .byte 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x2d, 0x77, 0x77, 0x77, 0x2d, 0x66 + .byte 0x6f, 0x72, 0x6d, 0x2d, 0x75, 0x72, 0x6c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x64, 0x0d, 0x0a + .byte 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20, 0x25, 0x73, 0x0d, 0x0a, 0x0d, 0x0a, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318F24 +ov00_02318F24: + .byte 0x47, 0x45, 0x54, 0x20, 0x2f, 0x25, 0x73, 0x20, 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30 + .byte 0x0d, 0x0a, 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20, 0x25, 0x73, 0x0d, 0x0a, 0x0d, 0x0a, 0x00, 0x00 + .global ov00_02318F44 +ov00_02318F44: + .byte 0x25, 0x73, 0x3a, 0x20, 0x25, 0x73, 0x0d, 0x0a, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318F50 +ov00_02318F50: + .byte 0x25, 0x73, 0x3d, 0x00 + .global ov00_02318F54 +ov00_02318F54: + .byte 0x26, 0x25, 0x73, 0x3d, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318F5C +ov00_02318F5C: + .byte 0x25, 0x73, 0x00, 0x00 + .global ov00_02318F60 +ov00_02318F60: + .byte 0x41, 0x4c, 0x4c, 0x4f + .byte 0x43, 0x20, 0x62, 0x75, 0x66, 0x2d, 0x3e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00 + .global ov00_02318F74 +ov00_02318F74: + .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x62, 0x75, 0x66, 0x2d, 0x3e, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_02318F88 +ov00_02318F88: + .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x6e, 0x65, 0x77, 0x70, 0x74, 0x72 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_02318F98 +ov00_02318F98: + .byte 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x00 + .global ov00_02318FA0 +ov00_02318FA0: + .byte 0x68, 0x74, 0x74, 0x70 + .byte 0x73, 0x3a, 0x2f, 0x2f, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318FAC +ov00_02318FAC: + .byte 0x3a, 0x00, 0x00, 0x00 + .global ov00_02318FB0 +ov00_02318FB0: + .byte 0x2f, 0x00, 0x00, 0x00 + .global ov00_02318FB4 +ov00_02318FB4: + .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2d, 0x3e, 0x65, 0x6e + .byte 0x74, 0x72, 0x79, 0x5b, 0x69, 0x5d, 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318FD4 +ov00_02318FD4: + .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2d, 0x3e, 0x65, 0x6e + .byte 0x74, 0x72, 0x79, 0x5b, 0x69, 0x5d, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov00_02318FF4 +ov00_02318FF4: + .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2d, 0x3e, 0x65, 0x6e, 0x74 + .byte 0x72, 0x79, 0x5b, 0x69, 0x5d, 0x2e, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x00 + .global ov00_02319010 +ov00_02319010: + .byte 0x46, 0x52, 0x45, 0x45 + .byte 0x20, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x2d, 0x3e, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5b, 0x69 + .byte 0x5d, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x00 + .global ov00_0231902C +ov00_0231902C: + .byte 0x20, 0x00, 0x00, 0x00 + .global ov00_02319030 +ov00_02319030: + .byte 0x68, 0x74, 0x74, 0x70 + .byte 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x00, 0x00 + .global ov00_0231903C +ov00_0231903C: + .byte 0x32, 0x30, 0x30, 0x00 + .global ov00_02319040 +ov00_02319040: + .byte 0x3a, 0x20, 0x00, 0x00 + .global ov00_02319044 +ov00_02319044: + .byte 0x3d, 0x00, 0x00, 0x00 + .global ov00_02319048 +ov00_02319048: + .byte 0x26, 0x00, 0x00, 0x00 + .global ov00_0231904C +ov00_0231904C: + .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x61, 0x72, 0x72 + .byte 0x61, 0x79, 0x5f, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x5b, 0x69, 0x5d, 0x2e, 0x6c, 0x61, 0x62, 0x65 + .byte 0x6c, 0x00, 0x00, 0x00 + .global ov00_02319068 +ov00_02319068: + .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x61, 0x72, 0x72, 0x61, 0x79, 0x5f, 0x65 + .byte 0x6e, 0x74, 0x72, 0x79, 0x5b, 0x69, 0x5d, 0x2e, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x00, 0x00, 0x00 + .global ov00_02319084 +ov00_02319084: + .word ov00_02319088 + .global ov00_02319088 +ov00_02319088: + .byte 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x6f, 0x6e, 0x6e, 0x74 + .byte 0x65, 0x73, 0x74, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69 + .byte 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x00, 0x00, 0x00 + .global ov00_023190AC +ov00_023190AC: + .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x44, 0x57 + .byte 0x43, 0x6e, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x00, 0x00, 0x00 + .global ov00_023190C0 +ov00_023190C0: + .byte 0x41, 0x4c, 0x4c, 0x4f + .byte 0x43, 0x20, 0x44, 0x57, 0x43, 0x68, 0x74, 0x74, 0x70, 0x00, 0x00, 0x00 + .global ov00_023190D0 +ov00_023190D0: + .byte 0x46, 0x52, 0x45, 0x45 + .byte 0x20, 0x44, 0x57, 0x43, 0x68, 0x74, 0x74, 0x70, 0x00, 0x00, 0x00, 0x00 + .global ov00_023190E0 +ov00_023190E0: + .byte 0x46, 0x52, 0x45, 0x45 + .byte 0x20, 0x44, 0x57, 0x43, 0x6e, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2d, 0x3e, 0x62, 0x6f + .byte 0x64, 0x79, 0x5f, 0x33, 0x30, 0x32, 0x00, 0x00 + .global ov00_023190FC +ov00_023190FC: + .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43 + .byte 0x6e, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2d, 0x3e, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x77 + .byte 0x61, 0x79, 0x70, 0x6f, 0x72, 0x74, 0x00, 0x00 + .global ov00_0231911C +ov00_0231911C: + .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x44, 0x57, 0x43 + .byte 0x6e, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x00, 0x00, 0x00, 0x00 + .global ov00_02319130 +ov00_02319130: + .byte 0x41, 0x4c, 0x4c, 0x4f + .byte 0x43, 0x20, 0x44, 0x57, 0x43, 0x6e, 0x65, 0x74, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2d, 0x3e, 0x62 + .byte 0x6f, 0x64, 0x79, 0x5f, 0x33, 0x30, 0x32, 0x00 + .global ov00_0231914C +ov00_0231914C: + .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x75, 0x72 + .byte 0x6c, 0x00, 0x00, 0x00 + .global ov00_02319158 +ov00_02319158: + .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6c + .byte 0x65, 0x6e, 0x00, 0x00 + .global ov00_02319168 +ov00_02319168: + .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x77, 0x61, 0x69, 0x74, 0x5f, 0x6c + .byte 0x65, 0x6e, 0x00, 0x00 + .global ov00_02319178 +ov00_02319178: + .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x44, 0x57, 0x43, 0x6e, 0x65, 0x74 + .byte 0x63, 0x68, 0x65, 0x63, 0x6b, 0x2d, 0x3e, 0x62, 0x6f, 0x64, 0x79, 0x5f, 0x77, 0x61, 0x79, 0x70 + .byte 0x6f, 0x72, 0x74, 0x00 + .global ov00_02319198 +ov00_02319198: + .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x00, 0x00 + .global ov00_023191A4 +ov00_023191A4: + .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x6e, 0x61, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74 + .byte 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x63, 0x00 + .global ov00_023191C4 +ov00_023191C4: + .byte 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00 + .global ov00_023191CC +ov00_023191CC: + .byte 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x00 + .global ov00_023191D4 +ov00_023191D4: + .byte 0x48, 0x6f, 0x74, 0x53, 0x70, 0x6f, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x00 + .global ov00_023191E4 +ov00_023191E4: + .byte 0x70, 0x61, 0x72, 0x73, 0x65, 0x00, 0x00, 0x00 + .global ov00_023191EC +ov00_023191EC: + .byte 0x48, 0x54, 0x4d, 0x4c, 0x00, 0x00, 0x00, 0x00 + .global ov00_023191F4 +ov00_023191F4: + .byte 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00 + .global ov00_02319200 +ov00_02319200: + .byte 0x75, 0x72, 0x6c, 0x00 + .global ov00_02319204 +ov00_02319204: + .byte 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231920C +ov00_0231920C: + .byte 0x77, 0x61, 0x69, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov00_02319214 +ov00_02319214: + .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x75, 0x72, 0x6c, 0x00, 0x00, 0x00, 0x00 + .global ov00_02319220 +ov00_02319220: + .byte 0x46, 0x52, 0x45, 0x45 + .byte 0x20, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00 + .global ov00_0231922C +ov00_0231922C: + .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x77, 0x61, 0x69 + .byte 0x74, 0x00, 0x00, 0x00 + .global ov00_02319238 +ov00_02319238: + .byte 0x4a, 0x75, 0x6e, 0x00 + .global ov00_0231923C +ov00_0231923C: + .byte 0x4a, 0x75, 0x6c, 0x00 + .global ov00_02319240 +ov00_02319240: + .byte 0x44, 0x65, 0x63, 0x00 + .global ov00_02319244 +ov00_02319244: + .byte 0x53, 0x65, 0x70, 0x00 + .global ov00_02319248 +ov00_02319248: + .byte 0x41, 0x75, 0x67, 0x00 + .global ov00_0231924C +ov00_0231924C: + .byte 0x4e, 0x6f, 0x76, 0x00 + .global ov00_02319250 +ov00_02319250: + .byte 0x4f, 0x63, 0x74, 0x00 + .global ov00_02319254 +ov00_02319254: + .byte 0x4d, 0x61, 0x79, 0x00 + .global ov00_02319258 +ov00_02319258: + .byte 0x41, 0x70, 0x72, 0x00 + .global ov00_0231925C +ov00_0231925C: + .byte 0x4d, 0x61, 0x72, 0x00 + .global ov00_02319260 +ov00_02319260: + .byte 0x46, 0x65, 0x62, 0x00 + .global ov00_02319264 +ov00_02319264: + .byte 0x4a, 0x61, 0x6e, 0x00 + .global ov00_02319268 +ov00_02319268: + .word ov00_02319264 + .word ov00_02319260 + .word ov00_0231925C + .word ov00_02319258 + .word ov00_02319254 + .word ov00_02319238 + .word ov00_0231923C + .word ov00_02319248 + .word ov00_02319244 + .word ov00_02319250 + .word ov00_0231924C + .word ov00_02319240 + .global ov00_02319298 +ov00_02319298: + .byte 0x46, 0x72, 0x69, 0x2c, 0x20, 0x30, 0x33, 0x20, 0x4d, 0x61, 0x72, 0x20 + .byte 0x32, 0x30, 0x30, 0x36, 0x20, 0x30, 0x31, 0x3a, 0x32, 0x38, 0x3a, 0x31, 0x33, 0x20, 0x47, 0x4d + .byte 0x54, 0x00, 0x00, 0x00 + .global ov00_023192B8 +ov00_023192B8: + .byte 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x20, 0x69, 0x6e, 0x74, 0x77, 0x6f, 0x72 + .byte 0x6b, 0x00, 0x00, 0x00 + .global ov00_023192C8 +ov00_023192C8: + .byte 0x46, 0x52, 0x45, 0x45, 0x20, 0x69, 0x6e, 0x74, 0x77, 0x6f, 0x72, 0x6b + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_023192D8 +ov00_023192D8: + .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x6e, 0x61, 0x73, 0x2e + .byte 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74 + .byte 0x2f, 0x61, 0x63, 0x00 + .global ov00_023192F8 +ov00_023192F8: + .byte 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00 + .global ov00_02319300 +ov00_02319300: + .byte 0x53, 0x56, 0x43, 0x4c + .byte 0x4f, 0x43, 0x00, 0x00 + .global ov00_02319308 +ov00_02319308: + .byte 0x73, 0x76, 0x63, 0x00 + .global ov00_0231930C +ov00_0231930C: + .byte 0x44, 0x61, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov00_02319314 +ov00_02319314: + .byte 0x68, 0x74, 0x74, 0x70, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x00, 0x00 + .global ov00_02319320 +ov00_02319320: + .byte 0x72, 0x65, 0x74, 0x75 + .byte 0x72, 0x6e, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231932C +ov00_0231932C: + .byte 0x73, 0x76, 0x63, 0x68, 0x6f, 0x73, 0x74, 0x00 + .global ov00_02319334 +ov00_02319334: + .byte 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x00, 0x00, 0x00, 0x00 + .global ov00_02319344 +ov00_02319344: + .byte 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00 + .global ov00_02319350 +ov00_02319350: + .word ov00_02319354 + .global ov00_02319354 +ov00_02319354: + .byte 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50 + .byte 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66 + .byte 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76 + .byte 0x77, 0x78, 0x79, 0x7a, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x2e, 0x2d + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_02319398 +ov00_02319398: + .byte 0x01, 0x00, 0x01, 0x00 + .global ov00_0231939C +ov00_0231939C: + .word ov00_023193B0 + .byte 0x00, 0x01, 0x00, 0x00 + .word ov00_023193E4 + .byte 0x03, 0x00, 0x00, 0x00 + .word ov00_02319398 + .global ov00_023193B0 +ov00_023193B0: + .byte 0x42, 0x45, 0x2c, 0x20 + .byte 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x6e, 0x76, 0x2d, 0x73, 0x61 + .byte 0x2c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x2c, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61 + .byte 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x00, 0x00, 0x00 + .global ov00_023193E4 +ov00_023193E4: + .byte 0xda, 0x0e, 0xe6, 0x99, 0x8d, 0xce, 0xa3, 0xe3, 0x4f, 0x8a, 0x7e, 0xfb, 0xf1, 0x8b, 0x83, 0x25 + .byte 0x6b, 0xea, 0x48, 0x1f, 0xf1, 0x2a, 0xb0, 0xb9, 0x95, 0x11, 0x04, 0xbd, 0xf0, 0x63, 0xd1, 0xe2 + .byte 0x67, 0x66, 0xcf, 0x1c, 0xdd, 0xcf, 0x1b, 0x48, 0x2b, 0xee, 0x8d, 0x89, 0x8e, 0x9a, 0xaf, 0x29 + .byte 0x80, 0x65, 0xab, 0xe9, 0xc7, 0x2d, 0x12, 0xcb, 0xab, 0x1c, 0x4c, 0x70, 0x07, 0xa1, 0x3d, 0x0a + .byte 0x30, 0xcd, 0x15, 0x8d, 0x4f, 0xf8, 0xdd, 0xd4, 0x8c, 0x50, 0x15, 0x1c, 0xef, 0x50, 0xee, 0xc4 + .byte 0x2e, 0xf7, 0xfc, 0xe9, 0x52, 0xf2, 0x91, 0x7d, 0xe0, 0x6d, 0xd5, 0x35, 0x30, 0x8e, 0x5e, 0x43 + .byte 0x73, 0xf2, 0x41, 0xe9, 0xd5, 0x6a, 0xe3, 0xb2, 0x89, 0x3a, 0x56, 0x39, 0x38, 0x6f, 0x06, 0x3c + .byte 0x88, 0x69, 0x5b, 0x2a, 0x4d, 0xc5, 0xa7, 0x54, 0xb8, 0x6c, 0x89, 0xcc, 0x9b, 0xf9, 0x3c, 0xca + .byte 0xe5, 0xfd, 0x89, 0xf5, 0x12, 0x3c, 0x92, 0x78, 0x96, 0xd6, 0xdc, 0x74, 0x6e, 0x93, 0x44, 0x61 + .byte 0xd1, 0x8d, 0xc7, 0x46, 0xb2, 0x75, 0x0e, 0x86, 0xe8, 0x19, 0x8a, 0xd5, 0x6d, 0x6c, 0xd5, 0x78 + .byte 0x16, 0x95, 0xa2, 0xe9, 0xc8, 0x0a, 0x38, 0xeb, 0xf2, 0x24, 0x13, 0x4f, 0x73, 0x54, 0x93, 0x13 + .byte 0x85, 0x3a, 0x1b, 0xbc, 0x1e, 0x34, 0xb5, 0x8b, 0x05, 0x8c, 0xb9, 0x77, 0x8b, 0xb1, 0xdb, 0x1f + .byte 0x20, 0x91, 0xab, 0x09, 0x53, 0x6e, 0x90, 0xce, 0x7b, 0x37, 0x74, 0xb9, 0x70, 0x47, 0x91, 0x22 + .byte 0x51, 0x63, 0x16, 0x79, 0xae, 0xb1, 0xae, 0x41, 0x26, 0x08, 0xc8, 0x19, 0x2b, 0xd1, 0x46, 0xaa + .byte 0x48, 0xd6, 0x64, 0x2a, 0xd7, 0x83, 0x34, 0xff, 0x2c, 0x2a, 0xc1, 0x6c, 0x19, 0x43, 0x4a, 0x07 + .byte 0x85, 0xe7, 0xd3, 0x7c, 0xf6, 0x21, 0x68, 0xef, 0xea, 0xf2, 0x52, 0x9f, 0x7f, 0x93, 0x90, 0xcf + .global ov00_023194E4 +ov00_023194E4: + .byte 0x01, 0x00, 0x01, 0x00 + .global ov00_023194E8 +ov00_023194E8: + .word ov00_023194FC + .byte 0x00, 0x01, 0x00, 0x00 + .word ov00_02319534 + .byte 0x03, 0x00, 0x00, 0x00 + .word ov00_023194E4 + .global ov00_023194FC +ov00_023194FC: + .byte 0x49, 0x45, 0x2c, 0x20, 0x42, 0x61, 0x6c, 0x74 + .byte 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x2c, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73 + .byte 0x74, 0x2c, 0x20, 0x42, 0x61, 0x6c, 0x74, 0x69, 0x6d, 0x6f, 0x72, 0x65, 0x20, 0x43, 0x79, 0x62 + .byte 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov00_02319534 +ov00_02319534: + .byte 0xa3, 0x04, 0xbb, 0x22, 0xab, 0x98, 0x3d, 0x57, 0xe8, 0x26, 0x72, 0x9a, 0xb5, 0x79, 0xd4, 0x29 + .byte 0xe2, 0xe1, 0xe8, 0x95, 0x80, 0xb1, 0xb0, 0xe3, 0x5b, 0x8e, 0x2b, 0x29, 0x9a, 0x64, 0xdf, 0xa1 + .byte 0x5d, 0xed, 0xb0, 0x09, 0x05, 0x6d, 0xdb, 0x28, 0x2e, 0xce, 0x62, 0xa2, 0x62, 0xfe, 0xb4, 0x88 + .byte 0xda, 0x12, 0xeb, 0x38, 0xeb, 0x21, 0x9d, 0xc0, 0x41, 0x2b, 0x01, 0x52, 0x7b, 0x88, 0x77, 0xd3 + .byte 0x1c, 0x8f, 0xc7, 0xba, 0xb9, 0x88, 0xb5, 0x6a, 0x09, 0xe7, 0x73, 0xe8, 0x11, 0x40, 0xa7, 0xd1 + .byte 0xcc, 0xca, 0x62, 0x8d, 0x2d, 0xe5, 0x8f, 0x0b, 0xa6, 0x50, 0xd2, 0xa8, 0x50, 0xc3, 0x28, 0xea + .byte 0xf5, 0xab, 0x25, 0x87, 0x8a, 0x9a, 0x96, 0x1c, 0xa9, 0x67, 0xb8, 0x3f, 0x0c, 0xd5, 0xf7, 0xf9 + .byte 0x52, 0x13, 0x2f, 0xc2, 0x1b, 0xd5, 0x70, 0x70, 0xf0, 0x8f, 0xc0, 0x12, 0xca, 0x06, 0xcb, 0x9a + .byte 0xe1, 0xd9, 0xca, 0x33, 0x7a, 0x77, 0xd6, 0xf8, 0xec, 0xb9, 0xf1, 0x68, 0x44, 0x42, 0x48, 0x13 + .byte 0xd2, 0xc0, 0xc2, 0xa4, 0xae, 0x5e, 0x60, 0xfe, 0xb6, 0xa6, 0x05, 0xfc, 0xb4, 0xdd, 0x07, 0x59 + .byte 0x02, 0xd4, 0x59, 0x18, 0x98, 0x63, 0xf5, 0xa5, 0x63, 0xe0, 0x90, 0x0c, 0x7d, 0x5d, 0xb2, 0x06 + .byte 0x7a, 0xf3, 0x85, 0xea, 0xeb, 0xd4, 0x03, 0xae, 0x5e, 0x84, 0x3e, 0x5f, 0xff, 0x15, 0xed, 0x69 + .byte 0xbc, 0xf9, 0x39, 0x36, 0x72, 0x75, 0xcf, 0x77, 0x52, 0x4d, 0xf3, 0xc9, 0x90, 0x2c, 0xb9, 0x3d + .byte 0xe5, 0xc9, 0x23, 0x53, 0x3f, 0x1f, 0x24, 0x98, 0x21, 0x5c, 0x07, 0x99, 0x29, 0xbd, 0xc6, 0x3a + .byte 0xec, 0xe7, 0x6e, 0x86, 0x3a, 0x6b, 0x97, 0x74, 0x63, 0x33, 0xbd, 0x68, 0x18, 0x31, 0xf0, 0x78 + .byte 0x8d, 0x76, 0xbf, 0xfc, 0x9e, 0x8e, 0x5d, 0x2a, 0x86, 0xa7, 0x4d, 0x90, 0xdc, 0x27, 0x1a, 0x39 + .global ov00_02319634 +ov00_02319634: + .byte 0x01, 0x00, 0x01, 0x00 + .global ov00_02319638 +ov00_02319638: + .word ov00_0231964C + .byte 0x80, 0x00, 0x00, 0x00 + .word ov00_0231969C + .byte 0x03, 0x00, 0x00, 0x00 + .word ov00_02319634 + .global ov00_0231964C +ov00_0231964C: + .byte 0x55, 0x53, 0x2c, 0x20, 0x47, 0x54, 0x45, 0x20 + .byte 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x47, 0x54, 0x45 + .byte 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x53, 0x6f, 0x6c, 0x75 + .byte 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x2c, 0x20, 0x47, 0x54, 0x45 + .byte 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x47, 0x6c, 0x6f, 0x62 + .byte 0x61, 0x6c, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x00 + .global ov00_0231969C +ov00_0231969C: + .byte 0x95, 0x0f, 0xa0, 0xb6, 0xf0, 0x50, 0x9c, 0xe8 + .byte 0x7a, 0xc7, 0x88, 0xcd, 0xdd, 0x17, 0x0e, 0x2e, 0xb0, 0x94, 0xd0, 0x1b, 0x3d, 0x0e, 0xf6, 0x94 + .byte 0xc0, 0x8a, 0x94, 0xc7, 0x06, 0xc8, 0x90, 0x97, 0xc8, 0xb8, 0x64, 0x1a, 0x7a, 0x7e, 0x6c, 0x3c + .byte 0x53, 0xe1, 0x37, 0x28, 0x73, 0x60, 0x7f, 0xb2, 0x97, 0x53, 0x07, 0x9f, 0x53, 0xf9, 0x6d, 0x58 + .byte 0x94, 0xd2, 0xaf, 0x8d, 0x6d, 0x88, 0x67, 0x80, 0xe6, 0xed, 0xb2, 0x95, 0xcf, 0x72, 0x31, 0xca + .byte 0xa5, 0x1c, 0x72, 0xba, 0x5c, 0x02, 0xe7, 0x64, 0x42, 0xe7, 0xf9, 0xa9, 0x2c, 0xd6, 0x3a, 0x0d + .byte 0xac, 0x8d, 0x42, 0xaa, 0x24, 0x01, 0x39, 0xe6, 0x9c, 0x3f, 0x01, 0x85, 0x57, 0x0d, 0x58, 0x87 + .byte 0x45, 0xf8, 0xd3, 0x85, 0xaa, 0x93, 0x69, 0x26, 0x85, 0x70, 0x48, 0x80, 0x3f, 0x12, 0x15, 0xc7 + .byte 0x79, 0xb4, 0x1f, 0x05, 0x2f, 0x3b, 0x62, 0x99 + .global ov00_0231971C +ov00_0231971C: + .byte 0x01, 0x00, 0x01, 0x00 + .global ov00_02319720 +ov00_02319720: + .word ov00_02319734 + .byte 0x80, 0x00, 0x00, 0x00 + .word ov00_02319760 + .byte 0x03, 0x00, 0x00, 0x00 + .word ov00_0231971C + .global ov00_02319734 +ov00_02319734: + .byte 0x55, 0x53, 0x2c, 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74 + .byte 0x69, 0x6f, 0x6e, 0x2c, 0x20, 0x47, 0x54, 0x45, 0x20, 0x43, 0x79, 0x62, 0x65, 0x72, 0x54, 0x72 + .byte 0x75, 0x73, 0x74, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov00_02319760 +ov00_02319760: + .byte 0xb8, 0xe6, 0x4f, 0xba + .byte 0xdb, 0x98, 0x7c, 0x71, 0x7c, 0xaf, 0x44, 0xb7, 0xd3, 0x0f, 0x46, 0xd9, 0x64, 0xe5, 0x93, 0xc1 + .byte 0x42, 0x8e, 0xc7, 0xba, 0x49, 0x8d, 0x35, 0x2d, 0x7a, 0xe7, 0x8b, 0xbd, 0xe5, 0x05, 0x31, 0x59 + .byte 0xc6, 0xb1, 0x2f, 0x0a, 0x0c, 0xfb, 0x9f, 0xa7, 0x3f, 0xa2, 0x09, 0x66, 0x84, 0x56, 0x1e, 0x37 + .byte 0x29, 0x1b, 0x87, 0xe9, 0x7e, 0x0c, 0xca, 0x9a, 0x9f, 0xa5, 0x7f, 0xf5, 0x15, 0x94, 0xa3, 0xd5 + .byte 0xa2, 0x46, 0x82, 0xd8, 0x68, 0x4c, 0xd1, 0x37, 0x15, 0x06, 0x68, 0xaf, 0xbd, 0xf8, 0xb0, 0xb3 + .byte 0xf0, 0x29, 0xf5, 0x95, 0x5a, 0x09, 0x16, 0x61, 0x77, 0x0a, 0x22, 0x25, 0xd4, 0x4f, 0x45, 0xaa + .byte 0xc7, 0xbd, 0xe5, 0x96, 0xdf, 0xf9, 0xd4, 0xa8, 0x8e, 0x42, 0xcc, 0x24, 0xc0, 0x1e, 0x91, 0x27 + .byte 0x4a, 0xb5, 0x6d, 0x06, 0x80, 0x63, 0x39, 0xc4, 0xa2, 0x5e, 0x38, 0x03 + .global ov00_023197E0 +ov00_023197E0: + .byte 0x01, 0x00, 0x01, 0x00 + .global ov00_023197E4 +ov00_023197E4: + .word ov00_023197F8 + .byte 0x80, 0x00, 0x00, 0x00 + .word ov00_02319848 + .byte 0x03, 0x00, 0x00, 0x00 + .word ov00_023197E0 + .global ov00_023197F8 +ov00_023197F8: + .byte 0x55, 0x53, 0x2c, 0x20, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x74 + .byte 0x6f, 0x6e, 0x2c, 0x20, 0x4e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x20, 0x6f, 0x66, 0x20 + .byte 0x41, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x61, 0x20, 0x49, 0x6e, 0x63, 0x2c, 0x20, 0x4e, 0x4f, 0x41 + .byte 0x2c, 0x20, 0x4e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x20, 0x43, 0x41, 0x2c, 0x20, 0x63 + .byte 0x61, 0x40, 0x6e, 0x6f, 0x61, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x2e, 0x63 + .byte 0x6f, 0x6d, 0x00, 0x00 + .global ov00_02319848 +ov00_02319848: + .byte 0xb3, 0xcd, 0x79, 0x97, 0x77, 0x5d, 0x8a, 0xaf, 0x86, 0xa8, 0xe8, 0xd7 + .byte 0x73, 0x1c, 0x77, 0xdf, 0x10, 0x90, 0x1f, 0x81, 0xf8, 0x41, 0x9e, 0x21, 0x55, 0xdf, 0xbc, 0xfc + .byte 0x63, 0xfb, 0x19, 0x43, 0xf1, 0xf6, 0xc4, 0x72, 0x42, 0x49, 0xbd, 0xad, 0x44, 0x68, 0x4e, 0xf3 + .byte 0xda, 0x1d, 0xe6, 0x4d, 0xd8, 0xf9, 0x59, 0x88, 0xdc, 0xae, 0x3e, 0x9b, 0x38, 0x09, 0xca, 0x7f + .byte 0xff, 0xdc, 0x24, 0xa2, 0x44, 0x78, 0x78, 0x49, 0x93, 0xd4, 0x84, 0x40, 0x10, 0xb8, 0xec, 0x3e + .byte 0xdb, 0x2d, 0x93, 0xc8, 0x11, 0xc8, 0xfd, 0x78, 0x2d, 0x61, 0xad, 0x31, 0xae, 0x86, 0x26, 0xb0 + .byte 0xfd, 0x5a, 0x3f, 0xa1, 0x3d, 0xbf, 0xe2, 0x4b, 0x49, 0xec, 0xce, 0x66, 0x98, 0x58, 0x26, 0x12 + .byte 0xc0, 0xfb, 0xf4, 0x77, 0x65, 0x1b, 0xea, 0xfb, 0xcb, 0x7f, 0xe0, 0x8c, 0xcb, 0x02, 0xa3, 0x4e + .byte 0x5e, 0x8c, 0xea, 0x9b + .global ov00_023198C8 +ov00_023198C8: + .byte 0x01, 0x00, 0x01, 0x00 + .global ov00_023198CC +ov00_023198CC: + .word ov00_02319960 + .byte 0x80, 0x00, 0x00, 0x00 + .word ov00_023198E0 + .byte 0x03, 0x00, 0x00, 0x00 + .word ov00_023198C8 + .global ov00_023198E0 +ov00_023198E0: + .byte 0xd2, 0x36, 0x36, 0x6a + .byte 0x8b, 0xd7, 0xc2, 0x5b, 0x9e, 0xda, 0x81, 0x41, 0x62, 0x8f, 0x38, 0xee, 0x49, 0x04, 0x55, 0xd6 + .byte 0xd0, 0xef, 0x1c, 0x1b, 0x95, 0x16, 0x47, 0xef, 0x18, 0x48, 0x35, 0x3a, 0x52, 0xf4, 0x2b, 0x6a + .byte 0x06, 0x8f, 0x3b, 0x2f, 0xea, 0x56, 0xe3, 0xaf, 0x86, 0x8d, 0x9e, 0x17, 0xf7, 0x9e, 0xb4, 0x65 + .byte 0x75, 0x02, 0x4d, 0xef, 0xcb, 0x09, 0xa2, 0x21, 0x51, 0xd8, 0x9b, 0xd0, 0x67, 0xd0, 0xba, 0x0d + .byte 0x92, 0x06, 0x14, 0x73, 0xd4, 0x93, 0xcb, 0x97, 0x2a, 0x00, 0x9c, 0x5c, 0x4e, 0x0c, 0xbc, 0xfa + .byte 0x15, 0x52, 0xfc, 0xf2, 0x44, 0x6e, 0xda, 0x11, 0x4a, 0x6e, 0x08, 0x9f, 0x2f, 0x2d, 0xe3, 0xf9 + .byte 0xaa, 0x3a, 0x86, 0x73, 0xb6, 0x46, 0x53, 0x58, 0xc8, 0x89, 0x05, 0xbd, 0x83, 0x11, 0xb8, 0x73 + .byte 0x3f, 0xaa, 0x07, 0x8d, 0xf4, 0x42, 0x4d, 0xe7, 0x40, 0x9d, 0x1c, 0x37 + .global ov00_02319960 +ov00_02319960: + .byte 0x5a, 0x41, 0x2c, 0x20 + .byte 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x43, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x43, 0x61 + .byte 0x70, 0x65, 0x20, 0x54, 0x6f, 0x77, 0x6e, 0x2c, 0x20, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20 + .byte 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x63, 0x2c, 0x20, 0x43 + .byte 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72 + .byte 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2c, 0x20 + .byte 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x50, 0x72, 0x65, 0x6d, 0x69, 0x75, 0x6d, 0x20, 0x53 + .byte 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41, 0x2c, 0x20, 0x70, 0x72, 0x65, 0x6d, 0x69, 0x75 + .byte 0x6d, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x40, 0x74, 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e + .byte 0x63, 0x6f, 0x6d, 0x00 + .global ov00_023199E8 +ov00_023199E8: + .byte 0x01, 0x00, 0x01, 0x00 + .global ov00_023199EC +ov00_023199EC: + .word ov00_02319A00 + .byte 0x80, 0x00, 0x00, 0x00 + .word ov00_02319A80 + .byte 0x03, 0x00, 0x00, 0x00 + .word ov00_023199E8 + .global ov00_02319A00 +ov00_02319A00: + .byte 0x5a, 0x41, 0x2c, 0x20 + .byte 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x43, 0x61, 0x70, 0x65, 0x2c, 0x20, 0x43, 0x61 + .byte 0x70, 0x65, 0x20, 0x54, 0x6f, 0x77, 0x6e, 0x2c, 0x20, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20 + .byte 0x43, 0x6f, 0x6e, 0x73, 0x75, 0x6c, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x63, 0x63, 0x2c, 0x20, 0x43 + .byte 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x53, 0x65, 0x72 + .byte 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x2c, 0x20 + .byte 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x41 + .byte 0x2c, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2d, 0x63, 0x65, 0x72, 0x74, 0x73, 0x40, 0x74 + .byte 0x68, 0x61, 0x77, 0x74, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x00, 0x00, 0x00 + .global ov00_02319A80 +ov00_02319A80: + .byte 0xd3, 0xa4, 0x50, 0x6e + .byte 0xc8, 0xff, 0x56, 0x6b, 0xe6, 0xcf, 0x5d, 0xb6, 0xea, 0x0c, 0x68, 0x75, 0x47, 0xa2, 0xaa, 0xc2 + .byte 0xda, 0x84, 0x25, 0xfc, 0xa8, 0xf4, 0x47, 0x51, 0xda, 0x85, 0xb5, 0x20, 0x74, 0x94, 0x86, 0x1e + .byte 0x0f, 0x75, 0xc9, 0xe9, 0x08, 0x61, 0xf5, 0x06, 0x6d, 0x30, 0x6e, 0x15, 0x19, 0x02, 0xe9, 0x52 + .byte 0xc0, 0x62, 0xdb, 0x4d, 0x99, 0x9e, 0xe2, 0x6a, 0x0c, 0x44, 0x38, 0xcd, 0xfe, 0xbe, 0xe3, 0x64 + .byte 0x09, 0x70, 0xc5, 0xfe, 0xb1, 0x6b, 0x29, 0xb6, 0x2f, 0x49, 0xc8, 0x3b, 0xd4, 0x27, 0x04, 0x25 + .byte 0x10, 0x97, 0x2f, 0xe7, 0x90, 0x6d, 0xc0, 0x28, 0x42, 0x99, 0xd7, 0x4c, 0x43, 0xde, 0xc3, 0xf5 + .byte 0x21, 0x6d, 0x54, 0x9f, 0x5d, 0xc3, 0x58, 0xe1, 0xc0, 0xe4, 0xd9, 0x5b, 0xb0, 0xb8, 0xdc, 0xb4 + .byte 0x7b, 0xdf, 0x36, 0x3a, 0xc2, 0xb5, 0x66, 0x22, 0x12, 0xd6, 0x87, 0x0d + .global ov00_02319B00 +ov00_02319B00: + .byte 0x01, 0x00, 0x01, 0x00 + .global ov00_02319B04 +ov00_02319B04: + .word ov00_02319B98 + .byte 0x80, 0x00, 0x00, 0x00 + .word ov00_02319B18 + .byte 0x03, 0x00, 0x00, 0x00 + .word ov00_02319B00 + .global ov00_02319B18 +ov00_02319B18: + .byte 0xcc, 0x5e, 0xd1, 0x11, 0x5d, 0x5c, 0x69, 0xd0, 0xab, 0xd3, 0xb9, 0x6a + .byte 0x4c, 0x99, 0x1f, 0x59, 0x98, 0x30, 0x8e, 0x16, 0x85, 0x20, 0x46, 0x6d, 0x47, 0x3f, 0xd4, 0x85 + .byte 0x20, 0x84, 0xe1, 0x6d, 0xb3, 0xf8, 0xa4, 0xed, 0x0c, 0xf1, 0x17, 0x0f, 0x3b, 0xf9, 0xa7, 0xf9 + .byte 0x25, 0xd7, 0xc1, 0xcf, 0x84, 0x63, 0xf2, 0x7c, 0x63, 0xcf, 0xa2, 0x47, 0xf2, 0xc6, 0x5b, 0x33 + .byte 0x8e, 0x64, 0x40, 0x04, 0x68, 0xc1, 0x80, 0xb9, 0x64, 0x1c, 0x45, 0x77, 0xc7, 0xd8, 0x6e, 0xf5 + .byte 0x95, 0x29, 0x3c, 0x50, 0xe8, 0x34, 0xd7, 0x78, 0x1f, 0xa8, 0xba, 0x6d, 0x43, 0x91, 0x95, 0x8f + .byte 0x45, 0x57, 0x5e, 0x7e, 0xc5, 0xfb, 0xca, 0xa4, 0x04, 0xeb, 0xea, 0x97, 0x37, 0x54, 0x30, 0x6f + .byte 0xbb, 0x01, 0x47, 0x32, 0x33, 0xcd, 0xdc, 0x57, 0x9b, 0x64, 0x69, 0x61, 0xf8, 0x9b, 0x1d, 0x1c + .byte 0x89, 0x4f, 0x5c, 0x67 + .global ov00_02319B98 +ov00_02319B98: + .byte 0x55, 0x53, 0x2c, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e + .byte 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x2c, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20 + .byte 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43 + .byte 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74 + .byte 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x2c, 0x20, 0x28, 0x63, 0x29 + .byte 0x20, 0x31, 0x39, 0x39, 0x38, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20 + .byte 0x49, 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f + .byte 0x72, 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x2c, 0x20 + .byte 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e + .byte 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x00, 0x00 + .global ov00_02319C2C +ov00_02319C2C: + .byte 0x01, 0x00, 0x01, 0x00 + .global ov00_02319C30 +ov00_02319C30: + .word ov00_02319C44 + .byte 0x00, 0x01, 0x00, 0x00 + .word ov00_02319CE0 + .byte 0x03, 0x00, 0x00, 0x00 + .word ov00_02319C2C + .global ov00_02319C44 +ov00_02319C44: + .byte 0x55, 0x53, 0x2c, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e + .byte 0x63, 0x2e, 0x2c, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75 + .byte 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2c, 0x20, 0x28, 0x63, 0x29, 0x20 + .byte 0x31, 0x39, 0x39, 0x39, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49 + .byte 0x6e, 0x63, 0x2e, 0x20, 0x2d, 0x20, 0x46, 0x6f, 0x72, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72 + .byte 0x69, 0x7a, 0x65, 0x64, 0x20, 0x75, 0x73, 0x65, 0x20, 0x6f, 0x6e, 0x6c, 0x79, 0x2c, 0x20, 0x56 + .byte 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20 + .byte 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43 + .byte 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74 + .byte 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x20, 0x2d, 0x20, 0x47, 0x33, 0x00 + .global ov00_02319CE0 +ov00_02319CE0: + .byte 0xcb, 0xba, 0x9c, 0x52 + .byte 0xfc, 0x78, 0x1f, 0x1a, 0x1e, 0x6f, 0x1b, 0x37, 0x73, 0xbd, 0xf8, 0xc9, 0x6b, 0x94, 0x12, 0x30 + .byte 0x4f, 0xf0, 0x36, 0x47, 0xf5, 0xd0, 0x91, 0x0a, 0xf5, 0x17, 0xc8, 0xa5, 0x61, 0xc1, 0x16, 0x40 + .byte 0x4d, 0xfb, 0x8a, 0x61, 0x90, 0xe5, 0x76, 0x20, 0xc1, 0x11, 0x06, 0x7d, 0xab, 0x2c, 0x6e, 0xa6 + .byte 0xf5, 0x11, 0x41, 0x8e, 0xfa, 0x2d, 0xad, 0x2a, 0x61, 0x59, 0xa4, 0x67, 0x26, 0x4c, 0xd0, 0xe8 + .byte 0xbc, 0x52, 0x5b, 0x70, 0x20, 0x04, 0x58, 0xd1, 0x7a, 0xc9, 0xa4, 0x69, 0xbc, 0x83, 0x17, 0x64 + .byte 0xad, 0x05, 0x8b, 0xbc, 0xd0, 0x58, 0xce, 0x8d, 0x8c, 0xf5, 0xeb, 0xf0, 0x42, 0x49, 0x0b, 0x9d + .byte 0x97, 0x27, 0x67, 0x32, 0x6e, 0xe1, 0xae, 0x93, 0x15, 0x1c, 0x70, 0xbc, 0x20, 0x4d, 0x2f, 0x18 + .byte 0xde, 0x92, 0x88, 0xe8, 0x6c, 0x85, 0x57, 0x11, 0x1a, 0xe9, 0x7e, 0xe3, 0x26, 0x11, 0x54, 0xa2 + .byte 0x45, 0x96, 0x55, 0x83, 0xca, 0x30, 0x89, 0xe8, 0xdc, 0xd8, 0xa3, 0xed, 0x2a, 0x80, 0x3f, 0x7f + .byte 0x79, 0x65, 0x57, 0x3e, 0x15, 0x20, 0x66, 0x08, 0x2f, 0x95, 0x93, 0xbf, 0xaa, 0x47, 0x2f, 0xa8 + .byte 0x46, 0x97, 0xf0, 0x12, 0xe2, 0xfe, 0xc2, 0x0a, 0x2b, 0x51, 0xe6, 0x76, 0xe6, 0xb7, 0x46, 0xb7 + .byte 0xe2, 0x0d, 0xa6, 0xcc, 0xa8, 0xc3, 0x4c, 0x59, 0x55, 0x89, 0xe6, 0xe8, 0x53, 0x5c, 0x1c, 0xea + .byte 0x9d, 0xf0, 0x62, 0x16, 0x0b, 0xa7, 0xc9, 0x5f, 0x0c, 0xf0, 0xde, 0xc2, 0x76, 0xce, 0xaf, 0xf7 + .byte 0x6a, 0xf2, 0xfa, 0x41, 0xa6, 0xa2, 0x33, 0x14, 0xc9, 0xe5, 0x7a, 0x63, 0xd3, 0x9e, 0x62, 0x37 + .byte 0xd5, 0x85, 0x65, 0x9e, 0x0e, 0xe6, 0x53, 0x24, 0x74, 0x1b, 0x5e, 0x1d, 0x12, 0x53, 0x5b, 0xc7 + .byte 0x2c, 0xe7, 0x83, 0x49, 0x3b, 0x15, 0xae, 0x8a, 0x68, 0xb9, 0x57, 0x97 + .global ov00_02319DE0 +ov00_02319DE0: + .byte 0x01, 0x00, 0x01, 0x00 + .global ov00_02319DE4 +ov00_02319DE4: + .word ov00_02319DF8 + .byte 0x80, 0x00, 0x00, 0x00 + .word ov00_02319E3C + .byte 0x03, 0x00, 0x00, 0x00 + .word ov00_02319DE0 + .global ov00_02319DF8 +ov00_02319DF8: + .byte 0x55, 0x53, 0x2c, 0x20, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e + .byte 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x2c, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20 + .byte 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43 + .byte 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74 + .byte 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x00, 0x00 + .global ov00_02319E3C +ov00_02319E3C: + .byte 0xc9, 0x5c, 0x59, 0x9e, 0xf2, 0x1b, 0x8a, 0x01 + .byte 0x14, 0xb4, 0x10, 0xdf, 0x04, 0x40, 0xdb, 0xe3, 0x57, 0xaf, 0x6a, 0x45, 0x40, 0x8f, 0x84, 0x0c + .byte 0x0b, 0xd1, 0x33, 0xd9, 0xd9, 0x11, 0xcf, 0xee, 0x02, 0x58, 0x1f, 0x25, 0xf7, 0x2a, 0xa8, 0x44 + .byte 0x05, 0xaa, 0xec, 0x03, 0x1f, 0x78, 0x7f, 0x9e, 0x93, 0xb9, 0x9a, 0x00, 0xaa, 0x23, 0x7d, 0xd6 + .byte 0xac, 0x85, 0xa2, 0x63, 0x45, 0xc7, 0x72, 0x27, 0xcc, 0xf4, 0x4c, 0xc6, 0x75, 0x71, 0xd2, 0x39 + .byte 0xef, 0x4f, 0x42, 0xf0, 0x75, 0xdf, 0x0a, 0x90, 0xc6, 0x8e, 0x20, 0x6f, 0x98, 0x0f, 0xf8, 0xac + .byte 0x23, 0x5f, 0x70, 0x29, 0x36, 0xa4, 0xc9, 0x86, 0xe7, 0xb1, 0x9a, 0x20, 0xcb, 0x53, 0xa5, 0x85 + .byte 0xe7, 0x3d, 0xbe, 0x7d, 0x9a, 0xfe, 0x24, 0x45, 0x33, 0xdc, 0x76, 0x15, 0xed, 0x0f, 0xa2, 0x71 + .byte 0x64, 0x4c, 0x65, 0x2e, 0x81, 0x68, 0x45, 0xa7 + .global ov00_02319EBC +ov00_02319EBC: + .byte 0x01, 0x00, 0x01, 0x00 + .global ov00_02319EC0 +ov00_02319EC0: + .word ov00_02319ED4 + .byte 0x7d, 0x00, 0x00, 0x00 + .word ov00_02319F18 + .byte 0x03, 0x00, 0x00, 0x00 + .word ov00_02319EBC + .global ov00_02319ED4 +ov00_02319ED4: + .byte 0x55, 0x53, 0x2c, 0x20, 0x52, 0x53, 0x41, 0x20, 0x44, 0x61, 0x74, 0x61, 0x20, 0x53, 0x65, 0x63 + .byte 0x75, 0x72, 0x69, 0x74, 0x79, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x2c, 0x20, 0x53, 0x65, 0x63 + .byte 0x75, 0x72, 0x65, 0x20, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69 + .byte 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69 + .byte 0x74, 0x79, 0x00, 0x00 + .global ov00_02319F18 +ov00_02319F18: + .byte 0x92, 0xce, 0x7a, 0xc1, 0xae, 0x83, 0x3e, 0x5a, 0xaa, 0x89, 0x83, 0x57 + .byte 0xac, 0x25, 0x01, 0x76, 0x0c, 0xad, 0xae, 0x8e, 0x2c, 0x37, 0xce, 0xeb, 0x35, 0x78, 0x64, 0x54 + .byte 0x03, 0xe5, 0x84, 0x40, 0x51, 0xc9, 0xbf, 0x8f, 0x08, 0xe2, 0x8a, 0x82, 0x08, 0xd2, 0x16, 0x86 + .byte 0x37, 0x55, 0xe9, 0xb1, 0x21, 0x02, 0xad, 0x76, 0x68, 0x81, 0x9a, 0x05, 0xa2, 0x4b, 0xc9, 0x4b + .byte 0x25, 0x66, 0x22, 0x56, 0x6c, 0x88, 0x07, 0x8f, 0xf7, 0x81, 0x59, 0x6d, 0x84, 0x07, 0x65, 0x70 + .byte 0x13, 0x71, 0x76, 0x3e, 0x9b, 0x77, 0x4c, 0xe3, 0x50, 0x89, 0x56, 0x98, 0x48, 0xb9, 0x1d, 0xa7 + .byte 0x29, 0x1a, 0x13, 0x2e, 0x4a, 0x11, 0x59, 0x9c, 0x1e, 0x15, 0xd5, 0x49, 0x54, 0x2c, 0x73, 0x3a + .byte 0x69, 0x82, 0xb1, 0x97, 0x39, 0x9c, 0x6d, 0x70, 0x67, 0x48, 0xe5, 0xdd, 0x2d, 0xd6, 0xc8, 0x1e + .byte 0x7b, 0x00, 0x00, 0x00 + .global ov00_02319F98 +ov00_02319F98: + .byte 0x01, 0x00, 0x01, 0x00 + .global ov00_02319F9C +ov00_02319F9C: + .word ov00_02319FB0 + .byte 0x00, 0x01, 0x00, 0x00 + .word ov00_02319FE0 + .byte 0x03, 0x00, 0x00, 0x00 + .word ov00_02319F98 + .global ov00_02319FB0 +ov00_02319FB0: + .byte 0x47, 0x6c, 0x6f, 0x62 + .byte 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x20, 0x43, 0x41, 0x20, 0x2d + .byte 0x20, 0x52, 0x32, 0x2c, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x2c + .byte 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x53, 0x69, 0x67, 0x6e, 0x00 + .global ov00_02319FE0 +ov00_02319FE0: + .byte 0xa6, 0xcf, 0x24, 0x0e + .byte 0xbe, 0x2e, 0x6f, 0x28, 0x99, 0x45, 0x42, 0xc4, 0xab, 0x3e, 0x21, 0x54, 0x9b, 0x0b, 0xd3, 0x7f + .byte 0x84, 0x70, 0xfa, 0x12, 0xb3, 0xcb, 0xbf, 0x87, 0x5f, 0xc6, 0x7f, 0x86, 0xd3, 0xb2, 0x30, 0x5c + .byte 0xd6, 0xfd, 0xad, 0xf1, 0x7b, 0xdc, 0xe5, 0xf8, 0x60, 0x96, 0x09, 0x92, 0x10, 0xf5, 0xd0, 0x53 + .byte 0xde, 0xfb, 0x7b, 0x7e, 0x73, 0x88, 0xac, 0x52, 0x88, 0x7b, 0x4a, 0xa6, 0xca, 0x49, 0xa6, 0x5e + .byte 0xa8, 0xa7, 0x8c, 0x5a, 0x11, 0xbc, 0x7a, 0x82, 0xeb, 0xbe, 0x8c, 0xe9, 0xb3, 0xac, 0x96, 0x25 + .byte 0x07, 0x97, 0x4a, 0x99, 0x2a, 0x07, 0x2f, 0xb4, 0x1e, 0x77, 0xbf, 0x8a, 0x0f, 0xb5, 0x02, 0x7c + .byte 0x1b, 0x96, 0xb8, 0xc5, 0xb9, 0x3a, 0x2c, 0xbc, 0xd6, 0x12, 0xb9, 0xeb, 0x59, 0x7d, 0xe2, 0xd0 + .byte 0x06, 0x86, 0x5f, 0x5e, 0x49, 0x6a, 0xb5, 0x39, 0x5e, 0x88, 0x34, 0xec, 0xbc, 0x78, 0x0c, 0x08 + .byte 0x98, 0x84, 0x6c, 0xa8, 0xcd, 0x4b, 0xb4, 0xa0, 0x7d, 0x0c, 0x79, 0x4d, 0xf0, 0xb8, 0x2d, 0xcb + .byte 0x21, 0xca, 0xd5, 0x6c, 0x5b, 0x7d, 0xe1, 0xa0, 0x29, 0x84, 0xa1, 0xf9, 0xd3, 0x94, 0x49, 0xcb + .byte 0x24, 0x62, 0x91, 0x20, 0xbc, 0xdd, 0x0b, 0xd5, 0xd9, 0xcc, 0xf9, 0xea, 0x27, 0x0a, 0x2b, 0x73 + .byte 0x91, 0xc6, 0x9d, 0x1b, 0xac, 0xc8, 0xcb, 0xe8, 0xe0, 0xa0, 0xf4, 0x2f, 0x90, 0x8b, 0x4d, 0xfb + .byte 0xb0, 0x36, 0x1b, 0xf6, 0x19, 0x7a, 0x85, 0xe0, 0x6d, 0xf2, 0x61, 0x13, 0x88, 0x5c, 0x9f, 0xe0 + .byte 0x93, 0x0a, 0x51, 0x97, 0x8a, 0x5a, 0xce, 0xaf, 0xab, 0xd5, 0xf7, 0xaa, 0x09, 0xaa, 0x60, 0xbd + .byte 0xdc, 0xd9, 0x5f, 0xdf, 0x72, 0xa9, 0x60, 0x13, 0x5e, 0x00, 0x01, 0xc9, 0x4a, 0xfa, 0x3f, 0xa4 + .byte 0xea, 0x07, 0x03, 0x21, 0x02, 0x8e, 0x82, 0xca, 0x03, 0xc2, 0x9b, 0x8f + .global ov00_0231A0E0 +ov00_0231A0E0: + .byte 0x68, 0x74, 0x74, 0x70 + .byte 0x73, 0x3a, 0x2f, 0x2f, 0x6e, 0x61, 0x73, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x6e, 0x69, 0x6e + .byte 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x63 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A108 +ov00_0231A108: + .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x6e, 0x61, 0x73, 0x2e + .byte 0x64, 0x65, 0x76, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69 + .byte 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x63, 0x00 + .global ov00_0231A12C +ov00_0231A12C: + .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f + .byte 0x6e, 0x61, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69 + .byte 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x63, 0x00 + .global ov00_0231A14C +ov00_0231A14C: + .byte 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A154 +ov00_0231A154: + .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61 + .byte 0x64, 0x00, 0x00, 0x00 + .global ov00_0231A168 +ov00_0231A168: + .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x25, 0x73, 0x2f, 0x64 + .byte 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x00 + .global ov00_0231A17C +ov00_0231A17C: + .byte 0x39, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A184 +ov00_0231A184: + .byte 0x25, 0x63, 0x25, 0x73, 0x25, 0x63, 0x25, 0x73, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A190 +ov00_0231A190: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A194 +ov00_0231A194: + .byte 0x47, 0x50, 0x43, 0x4d, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A19C +ov00_0231A19C: + .byte 0x4d, 0x41, 0x54, 0x00 + .global ov00_0231A1A0 +ov00_0231A1A0: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A1A4 +ov00_0231A1A4: + .byte 0x53, 0x43, 0x4d, 0x00 + .global ov00_0231A1A8 +ov00_0231A1A8: + .byte 0x53, 0x43, 0x4e, 0x00 + .global ov00_0231A1AC +ov00_0231A1AC: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A1B0 +ov00_0231A1B0: + .byte 0x25, 0x63, 0x25, 0x63 + .byte 0x25, 0x63, 0x25, 0x63, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A1BC +ov00_0231A1BC: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A1C0 +ov00_0231A1C0: + .byte 0x25, 0x75, 0x00, 0x00 + .global ov00_0231A1C4 +ov00_0231A1C4: + .byte 0x46, 0x4d, 0x45, 0x00 + .global ov00_0231A1C8 +ov00_0231A1C8: + .byte 0x4d, 0x44, 0x46, 0x00 + .global ov00_0231A1CC +ov00_0231A1CC: + .byte 0x56, 0x45, 0x52, 0x00 + .global ov00_0231A1D0 +ov00_0231A1D0: + .byte 0x49, 0x6e, 0x69, 0x74 + .byte 0x20, 0x73, 0x74, 0x61, 0x74, 0x65, 0x00, 0x00 + .global ov00_0231A1DC +ov00_0231A1DC: + .byte 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x66 + .byte 0x75, 0x6c, 0x6c, 0x00 + .global ov00_0231A1E8 +ov00_0231A1E8: + .byte 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x20, 0x63, 0x6f, 0x6e, 0x6e + .byte 0x65, 0x63, 0x74, 0x20, 0x61, 0x74, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x00 + .global ov00_0231A200 +ov00_0231A200: + .byte 0x53, 0x43, 0x4d, 0x00 + .global ov00_0231A204 +ov00_0231A204: + .byte 0x53, 0x43, 0x4e, 0x00 + .global ov00_0231A208 +ov00_0231A208: + .byte 0x64, 0x77, 0x63, 0x5f, 0x70, 0x69, 0x64, 0x00 + .global ov00_0231A210 +ov00_0231A210: + .byte 0x64, 0x77, 0x63, 0x5f + .byte 0x6d, 0x74, 0x79, 0x70, 0x65, 0x00, 0x00, 0x00 + .global ov00_0231A21C +ov00_0231A21C: + .byte 0x64, 0x77, 0x63, 0x5f, 0x6d, 0x72, 0x65, 0x73 + .byte 0x76, 0x00, 0x00, 0x00 + .global ov00_0231A228 +ov00_0231A228: + .byte 0x64, 0x77, 0x63, 0x5f, 0x6d, 0x76, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A234 +ov00_0231A234: + .byte 0x20, 0x61, 0x6e, 0x64, 0x20, 0x28, 0x25, 0x73, 0x29, 0x00, 0x00, 0x00 + .global ov00_0231A240 +ov00_0231A240: + .byte 0x25, 0x73, 0x20, 0x3d + .byte 0x20, 0x25, 0x75, 0x00 + .global ov00_0231A248 +ov00_0231A248: + .byte 0x25, 0x73, 0x20, 0x3d, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6e, 0x64, 0x20 + .byte 0x25, 0x73, 0x20, 0x21, 0x3d, 0x20, 0x25, 0x75, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x6d, 0x61, 0x78 + .byte 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x20, 0x3d, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6e, 0x64 + .byte 0x20, 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x20, 0x3c, 0x20, 0x25, 0x64 + .byte 0x20, 0x61, 0x6e, 0x64, 0x20, 0x25, 0x73, 0x20, 0x3d, 0x20, 0x25, 0x64, 0x20, 0x61, 0x6e, 0x64 + .byte 0x20, 0x25, 0x73, 0x20, 0x21, 0x3d, 0x20, 0x25, 0x73, 0x00, 0x00, 0x00 + .global ov00_0231A2A0 +ov00_0231A2A0: + .byte 0x2f, 0x25, 0x75, 0x00 + .global ov00_0231A2A4 +ov00_0231A2A4: + .byte 0x53, 0x42, 0x43, 0x4d, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A2AC +ov00_0231A2AC: + .byte 0x25, 0x73, 0x25, 0x64, 0x76, 0x25, 0x73, 0x00 + .global ov00_0231A2B4 +ov00_0231A2B4: + .byte 0x47, 0x50, 0x43, 0x4d, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A2BC +ov00_0231A2BC: + .byte 0x4d, 0x41, 0x54, 0x00 + .global ov00_0231A2C0 +ov00_0231A2C0: + .byte 0x44, 0x54, 0x00, 0x00 + .global ov00_0231A2C4 +ov00_0231A2C4: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A2D8 +ov00_0231A2D8: + .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 + .global ov00_0231A2F8 +ov00_0231A2F8: + .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, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A33C +ov00_0231A33C: + .byte 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 + .global ov00_0231A368 +ov00_0231A368: + .byte 0x26, 0x68, 0x61, 0x73, 0x68, 0x3d, 0x00, 0x00 + .global ov00_0231A370 +ov00_0231A370: + .byte 0x65, 0x72, 0x72, 0x6f + .byte 0x72, 0x3a, 0x00, 0x00 + .global ov00_0231A378 +ov00_0231A378: + .byte 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x73 + .byte 0x74, 0x61, 0x74, 0x73, 0x32, 0x2e, 0x67, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64 + .byte 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74, 0x2f, 0x00, 0x00 + .global ov00_0231A3A0 +ov00_0231A3A0: + .byte 0x68, 0x74, 0x74, 0x70 + .byte 0x3a, 0x2f, 0x2f, 0x73, 0x64, 0x6b, 0x64, 0x65, 0x76, 0x2e, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x70 + .byte 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61, 0x6d, 0x65, 0x73, 0x2f, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A3C4 +ov00_0231A3C4: + .byte 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x69, 0x73, 0x68, 0x69, 0x6b, 0x61, 0x77, 0x61, 0x2e + .byte 0x73, 0x65, 0x72, 0x76, 0x65, 0x62, 0x65, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x67, 0x61 + .byte 0x6d, 0x65, 0x73, 0x2f, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A3EC +ov00_0231A3EC: + .byte 0x26, 0x64, 0x61, 0x74, 0x61, 0x3d, 0x00, 0x00 + .global ov00_0231A3F4 +ov00_0231A3F4: + .byte 0x25, 0x64, 0x00, 0x00 + .global ov00_0231A3F8 +ov00_0231A3F8: + .byte 0x3f, 0x70, 0x69, 0x64, 0x3d, 0x00, 0x00, 0x00 + .global ov00_0231A400 +ov00_0231A400: + .byte 0x25, 0x73, 0x25, 0x73 + .byte 0x25, 0x73, 0x3f, 0x70, 0x69, 0x64, 0x3d, 0x25, 0x64, 0x26, 0x68, 0x61, 0x73, 0x68, 0x3d, 0x25 + .byte 0x73, 0x26, 0x64, 0x61, 0x74, 0x61, 0x3d, 0x00 + .global ov00_0231A41C +ov00_0231A41C: + .byte 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 + .byte 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 + .byte 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A448 +ov00_0231A448: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A44C +ov00_0231A44C: + .byte 0x01, 0x00, 0x01, 0x00 + .global ov00_0231A450 +ov00_0231A450: + .word ov00_0231A464 + .byte 0x80, 0x00, 0x00, 0x00 + .word ov00_0231A4B4 + .byte 0x03, 0x00, 0x00, 0x00 + .word ov00_0231A44C + .global ov00_0231A464 +ov00_0231A464: + .byte 0x55, 0x53, 0x2c, 0x20, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x2c, 0x20 + .byte 0x4e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x20, 0x6f, 0x66, 0x20, 0x41, 0x6d, 0x65, 0x72 + .byte 0x69, 0x63, 0x61, 0x20, 0x49, 0x6e, 0x63, 0x2c, 0x20, 0x4e, 0x4f, 0x41, 0x2c, 0x20, 0x4e, 0x69 + .byte 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x20, 0x43, 0x41, 0x2c, 0x20, 0x63, 0x61, 0x40, 0x6e, 0x6f + .byte 0x61, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x00, 0x00 + .global ov00_0231A4B4 +ov00_0231A4B4: + .byte 0xb3, 0xcd, 0x79, 0x97, 0x77, 0x5d, 0x8a, 0xaf, 0x86, 0xa8, 0xe8, 0xd7, 0x73, 0x1c, 0x77, 0xdf + .byte 0x10, 0x90, 0x1f, 0x81, 0xf8, 0x41, 0x9e, 0x21, 0x55, 0xdf, 0xbc, 0xfc, 0x63, 0xfb, 0x19, 0x43 + .byte 0xf1, 0xf6, 0xc4, 0x72, 0x42, 0x49, 0xbd, 0xad, 0x44, 0x68, 0x4e, 0xf3, 0xda, 0x1d, 0xe6, 0x4d + .byte 0xd8, 0xf9, 0x59, 0x88, 0xdc, 0xae, 0x3e, 0x9b, 0x38, 0x09, 0xca, 0x7f, 0xff, 0xdc, 0x24, 0xa2 + .byte 0x44, 0x78, 0x78, 0x49, 0x93, 0xd4, 0x84, 0x40, 0x10, 0xb8, 0xec, 0x3e, 0xdb, 0x2d, 0x93, 0xc8 + .byte 0x11, 0xc8, 0xfd, 0x78, 0x2d, 0x61, 0xad, 0x31, 0xae, 0x86, 0x26, 0xb0, 0xfd, 0x5a, 0x3f, 0xa1 + .byte 0x3d, 0xbf, 0xe2, 0x4b, 0x49, 0xec, 0xce, 0x66, 0x98, 0x58, 0x26, 0x12, 0xc0, 0xfb, 0xf4, 0x77 + .byte 0x65, 0x1b, 0xea, 0xfb, 0xcb, 0x7f, 0xe0, 0x8c, 0xcb, 0x02, 0xa3, 0x4e, 0x5e, 0x8c, 0xea, 0x9b + .global ov00_0231A534 +ov00_0231A534: + .byte 0x4e, 0x69, 0x74, 0x72, 0x6f, 0x20, 0x57, 0x69, 0x46, 0x69, 0x20, 0x53, 0x44, 0x4b, 0x2f, 0x25 + .byte 0x64, 0x2e, 0x25, 0x64, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A54C +ov00_0231A54C: + .word ov00_0231A450 + .global ov00_0231A550 +ov00_0231A550: + .byte 0x48, 0x54, 0x54, 0x50 + .byte 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x43, 0x4f, 0x44, 0x45, 0x00, 0x00 + .global ov00_0231A560 +ov00_0231A560: + .byte 0x72, 0x65, 0x74, 0x75 + .byte 0x72, 0x6e, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A56C +ov00_0231A56C: + .byte 0x55, 0x73, 0x65, 0x72, 0x2d, 0x41, 0x67, 0x65 + .byte 0x6e, 0x74, 0x00, 0x00 + .global ov00_0231A578 +ov00_0231A578: + .byte 0x67, 0x61, 0x6d, 0x65, 0x63, 0x64, 0x00, 0x00 + .global ov00_0231A580 +ov00_0231A580: + .byte 0x72, 0x68, 0x67, 0x61 + .byte 0x6d, 0x65, 0x63, 0x64, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A58C +ov00_0231A58C: + .byte 0x70, 0x61, 0x73, 0x73, 0x77, 0x64, 0x00, 0x00 + .global ov00_0231A594 +ov00_0231A594: + .byte 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x00, 0x00, 0x00 + .global ov00_0231A59C +ov00_0231A59C: + .byte 0x75, 0x73, 0x65, 0x72, 0x69, 0x64, 0x00, 0x00 + .global ov00_0231A5A4 +ov00_0231A5A4: + .byte 0x6d, 0x61, 0x63, 0x61, 0x64, 0x72, 0x00, 0x00 + .global ov00_0231A5AC +ov00_0231A5AC: + .byte 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00 + .global ov00_0231A5B4 +ov00_0231A5B4: + .byte 0x61, 0x74, 0x74, 0x72, 0x31, 0x00, 0x00, 0x00 + .global ov00_0231A5BC +ov00_0231A5BC: + .byte 0x61, 0x74, 0x74, 0x72, 0x32, 0x00, 0x00, 0x00 + .global ov00_0231A5C4 +ov00_0231A5C4: + .byte 0x61, 0x74, 0x74, 0x72, 0x33, 0x00, 0x00, 0x00 + .global ov00_0231A5CC +ov00_0231A5CC: + .byte 0x61, 0x70, 0x69, 0x6e, 0x66, 0x6f, 0x00, 0x00 + .global ov00_0231A5D4 +ov00_0231A5D4: + .byte 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x6c, 0x6f, 0x67, 0x64, 0x61, 0x74, 0x61, 0x00 + .global ov00_0231A5E4 +ov00_0231A5E4: + .byte 0x6f, 0x66, 0x66, 0x73, 0x65, 0x74, 0x00, 0x00 + .global ov00_0231A5EC +ov00_0231A5EC: + .byte 0x6e, 0x75, 0x6d, 0x00 + .global ov00_0231A5F0 +ov00_0231A5F0: + .byte 0x63, 0x6f, 0x6e, 0x74 + .byte 0x65, 0x6e, 0x74, 0x73, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A5FC +ov00_0231A5FC: + .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d + .byte 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x00, 0x00 + .global ov00_0231A60C +ov00_0231A60C: + .byte 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x00 + .global ov00_0231A614 +ov00_0231A614: + .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A620 +ov00_0231A620: + .byte 0x48, 0x54, 0x54, 0x50 + .byte 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x43, 0x4f, 0x44, 0x45, 0x00, 0x00 + .global ov00_0231A630 +ov00_0231A630: + .byte 0x47, 0x45, 0x54, 0x20 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A638 +ov00_0231A638: + .byte 0x50, 0x4f, 0x53, 0x54, 0x20, 0x00, 0x00, 0x00 + .global ov00_0231A640 +ov00_0231A640: + .byte 0x48, 0x45, 0x41, 0x44 + .byte 0x20, 0x00, 0x00, 0x00 + .global ov00_0231A648 +ov00_0231A648: + .byte 0x2f, 0x00, 0x00, 0x00 + .global ov00_0231A64C +ov00_0231A64C: + .byte 0x20, 0x48, 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e + .byte 0x31, 0x0d, 0x0a, 0x00 + .global ov00_0231A658 +ov00_0231A658: + .byte 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20, 0x00, 0x00 + .global ov00_0231A660 +ov00_0231A660: + .byte 0x0d, 0x0a, 0x00, 0x00 + .global ov00_0231A664 +ov00_0231A664: + .byte 0x3a, 0x20, 0x00, 0x00 + .global ov00_0231A668 +ov00_0231A668: + .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65 + .byte 0x3a, 0x20, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x2f, 0x66, 0x6f, 0x72, 0x6d + .byte 0x2d, 0x64, 0x61, 0x74, 0x61, 0x3b, 0x20, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x3d + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A698 +ov00_0231A698: + .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65 + .byte 0x3a, 0x20, 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x2d + .byte 0x77, 0x77, 0x77, 0x2d, 0x66, 0x6f, 0x72, 0x6d, 0x2d, 0x75, 0x72, 0x6c, 0x65, 0x6e, 0x63, 0x6f + .byte 0x64, 0x65, 0x64, 0x0d, 0x0a, 0x00, 0x00, 0x00 + .global ov00_0231A6CC +ov00_0231A6CC: + .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d + .byte 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x20, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A6E0 +ov00_0231A6E0: + .byte 0x22, 0x0d, 0x0a, 0x00 + .global ov00_0231A6E4 +ov00_0231A6E4: + .byte 0x2d, 0x2d, 0x0d, 0x0a, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A6EC +ov00_0231A6EC: + .byte 0x3d, 0x00, 0x00, 0x00 + .global ov00_0231A6F0 +ov00_0231A6F0: + .byte 0x26, 0x00, 0x00, 0x00 + .global ov00_0231A6F4 +ov00_0231A6F4: + .byte 0x48, 0x54, 0x54, 0x50, 0x2f, 0x00, 0x00, 0x00 + .global ov00_0231A6FC +ov00_0231A6FC: + .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d + .byte 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x00, 0x00 + .global ov00_0231A70C +ov00_0231A70C: + .byte 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69 + .byte 0x6f, 0x6e, 0x00, 0x00 + .global ov00_0231A718 +ov00_0231A718: + .byte 0x4b, 0x65, 0x65, 0x70, 0x2d, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x00, 0x00 + .global ov00_0231A724 +ov00_0231A724: + .byte 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72, 0x2d, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e + .byte 0x67, 0x00, 0x00, 0x00 + .global ov00_0231A738 +ov00_0231A738: + .byte 0x63, 0x68, 0x75, 0x6e, 0x6b, 0x65, 0x64, 0x00 + .global ov00_0231A740 +ov00_0231A740: + .byte 0x01, 0x00, 0x00, 0x00 + .word GsDebugAssert + .byte 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00 + .byte 0x5a, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xb5, 0x00, 0x00, 0x00 + .byte 0xd4, 0x00, 0x00, 0x00, 0xf3, 0x00, 0x00, 0x00, 0x11, 0x01, 0x00, 0x00, 0x30, 0x01, 0x00, 0x00 + .byte 0x4e, 0x01, 0x00, 0x00, 0x6d, 0x01, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x1e, 0x00, 0x00, 0x00 + .byte 0x3a, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00 + .byte 0xb4, 0x00, 0x00, 0x00, 0xd3, 0x00, 0x00, 0x00, 0xf2, 0x00, 0x00, 0x00, 0x10, 0x01, 0x00, 0x00 + .byte 0x2f, 0x01, 0x00, 0x00, 0x4d, 0x01, 0x00, 0x00, 0x6c, 0x01, 0x00, 0x00 + .global ov00_0231A7B0 +ov00_0231A7B0: + .byte 0x6c, 0x6f, 0x63, 0x61 + .byte 0x6c, 0x68, 0x6f, 0x73, 0x74, 0x00, 0x00, 0x00 + .global ov00_0231A7BC +ov00_0231A7BC: + .byte 0x25, 0x73, 0x2e, 0x61, 0x76, 0x61, 0x69, 0x6c + .byte 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x67, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f + .byte 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A7E0 +ov00_0231A7E0: + .byte 0xfe, 0xfd, 0x09, 0x00 + .global ov00_0231A7E4 +ov00_0231A7E4: + .byte 0x3a, 0x20, 0x00, 0x00 + .global ov00_0231A7E8 +ov00_0231A7E8: + .byte 0x0d, 0x0a, 0x00, 0x00 + .global ov00_0231A7EC +ov00_0231A7EC: + .byte 0x25, 0x64, 0x00, 0x00 + .global ov00_0231A7F0 +ov00_0231A7F0: + .byte 0xfa, 0x00, 0x00, 0x00 + .global ov00_0231A7F4 +ov00_0231A7F4: + .byte 0x7d, 0x00, 0x00, 0x00 + .global ov00_0231A7F8 +ov00_0231A7F8: + .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A804 +ov00_0231A804: + .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A810 +ov00_0231A810: + .byte 0x41, 0x00, 0x00, 0x00 + .global ov00_0231A814 +ov00_0231A814: + .byte 0x42, 0x42, 0x00, 0x00 + .global ov00_0231A818 +ov00_0231A818: + .byte 0x43, 0x43, 0x43, 0x00 + .global ov00_0231A81C +ov00_0231A81C: + .byte 0x44, 0x44, 0x44, 0x44, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A824 +ov00_0231A824: + .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 + .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 + .byte 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A858 +ov00_0231A858: + .byte 0x17, 0x00, 0x00, 0x00 + .global ov00_0231A85C +ov00_0231A85C: + .byte 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c + .byte 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c + .byte 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c + .byte 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A890 +ov00_0231A890: + .byte 0x43, 0x4c, 0x4e, 0x54 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A898 +ov00_0231A898: + .byte 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c + .byte 0x6d, 0x6e, 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x41, 0x42 + .byte 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52 + .byte 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5a, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37 + .byte 0x38, 0x39, 0x5f, 0x40, 0x2d, 0x2e, 0x2a, 0x00 + .global ov00_0231A8DC +ov00_0231A8DC: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A8E0 +ov00_0231A8E0: + .byte 0x61, 0x70, 0x70, 0x6c + .byte 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x64, 0x69, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A8F4 +ov00_0231A8F4: + .byte 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x61, 0x72, 0x74, 0x2f, 0x66, 0x6f, 0x72, 0x6d, 0x2d, 0x64 + .byte 0x61, 0x74, 0x61, 0x3b, 0x20, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x61, 0x72, 0x79, 0x3d, 0x51, 0x72 + .byte 0x34, 0x47, 0x38, 0x32, 0x33, 0x73, 0x32, 0x33, 0x64, 0x2d, 0x2d, 0x2d, 0x3c, 0x3c, 0x3e, 0x3c + .byte 0x3e, 0x3c, 0x3c, 0x3c, 0x3e, 0x2d, 0x2d, 0x37, 0x64, 0x31, 0x31, 0x38, 0x65, 0x30, 0x35, 0x33 + .byte 0x36, 0x00, 0x00, 0x00 + .global ov00_0231A938 +ov00_0231A938: + .byte 0x74, 0x65, 0x78, 0x74, 0x2f, 0x78, 0x6d, 0x6c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A944 +ov00_0231A944: + .byte 0x61, 0x70, 0x70, 0x6c, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2f, 0x78, 0x2d, 0x77, 0x77 + .byte 0x77, 0x2d, 0x66, 0x6f, 0x72, 0x6d, 0x2d, 0x75, 0x72, 0x6c, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x65 + .byte 0x64, 0x00, 0x00, 0x00 + .global ov00_0231A968 +ov00_0231A968: + .byte 0x2d, 0x2d, 0x51, 0x72, 0x34, 0x47, 0x38, 0x32, 0x33, 0x73, 0x32, 0x33 + .byte 0x64, 0x2d, 0x2d, 0x2d, 0x3c, 0x3c, 0x3e, 0x3c, 0x3e, 0x3c, 0x3c, 0x3c, 0x3e, 0x2d, 0x2d, 0x37 + .byte 0x64, 0x31, 0x31, 0x38, 0x65, 0x30, 0x35, 0x33, 0x36, 0x00, 0x00, 0x00 + .global ov00_0231A990 +ov00_0231A990: + .byte 0x63, 0x69, 0x64, 0x3a + .byte 0x69, 0x64, 0x30, 0x00 + .global ov00_0231A998 +ov00_0231A998: + .byte 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x73, 0x63, 0x68, 0x65, 0x6d + .byte 0x61, 0x73, 0x2e, 0x78, 0x6d, 0x6c, 0x73, 0x6f, 0x61, 0x70, 0x2e, 0x6f, 0x72, 0x67, 0x2f, 0x73 + .byte 0x6f, 0x61, 0x70, 0x2f, 0x65, 0x6e, 0x76, 0x65, 0x6c, 0x6f, 0x70, 0x65, 0x2f, 0x00, 0x00, 0x00 + .global ov00_0231A9C4 +ov00_0231A9C4: + .byte 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A9D8 +ov00_0231A9D8: + .byte 0x25, 0x73, 0x3d, 0x00 + .global ov00_0231A9DC +ov00_0231A9DC: + .byte 0x26, 0x25, 0x73, 0x3d, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231A9E4 +ov00_0231A9E4: + .byte 0x2d, 0x2d, 0x51, 0x72, 0x34, 0x47, 0x38, 0x32, 0x33, 0x73, 0x32, 0x33, 0x64, 0x2d, 0x2d, 0x2d + .byte 0x3c, 0x3c, 0x3e, 0x3c, 0x3e, 0x3c, 0x3c, 0x3c, 0x3e, 0x2d, 0x2d, 0x37, 0x64, 0x31, 0x31, 0x38 + .byte 0x65, 0x30, 0x35, 0x33, 0x36, 0x0d, 0x0a, 0x00 + .global ov00_0231AA0C +ov00_0231AA0C: + .byte 0x0d, 0x0a, 0x2d, 0x2d, 0x51, 0x72, 0x34, 0x47 + .byte 0x38, 0x32, 0x33, 0x73, 0x32, 0x33, 0x64, 0x2d, 0x2d, 0x2d, 0x3c, 0x3c, 0x3e, 0x3c, 0x3e, 0x3c + .byte 0x3c, 0x3c, 0x3e, 0x2d, 0x2d, 0x37, 0x64, 0x31, 0x31, 0x38, 0x65, 0x30, 0x35, 0x33, 0x36, 0x0d + .byte 0x0a, 0x00, 0x00, 0x00 + .global ov00_0231AA38 +ov00_0231AA38: + .byte 0x25, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x44, 0x69 + .byte 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x2d + .byte 0x64, 0x61, 0x74, 0x61, 0x3b, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x25, 0x73, 0x22, 0x0d + .byte 0x0a, 0x0d, 0x0a, 0x00 + .global ov00_0231AA68 +ov00_0231AA68: + .byte 0x25, 0x73, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x44, 0x69 + .byte 0x73, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x20, 0x66, 0x6f, 0x72, 0x6d, 0x2d + .byte 0x64, 0x61, 0x74, 0x61, 0x3b, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x25, 0x73, 0x22, 0x3b + .byte 0x20, 0x66, 0x69, 0x6c, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x3d, 0x22, 0x25, 0x73, 0x22, 0x0d, 0x0a + .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x3a, 0x20, 0x25, 0x73 + .byte 0x0d, 0x0a, 0x0d, 0x0a, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AABC +ov00_0231AABC: + .byte 0x0d, 0x0a, 0x00, 0x00 + .global ov00_0231AAC0 +ov00_0231AAC0: + .byte 0x0d, 0x0a, 0x2d, 0x2d + .byte 0x51, 0x72, 0x34, 0x47, 0x38, 0x32, 0x33, 0x73, 0x32, 0x33, 0x64, 0x2d, 0x2d, 0x2d, 0x3c, 0x3c + .byte 0x3e, 0x3c, 0x3e, 0x3c, 0x3c, 0x3c, 0x3e, 0x2d, 0x2d, 0x37, 0x64, 0x31, 0x31, 0x38, 0x65, 0x30 + .byte 0x35, 0x33, 0x36, 0x2d, 0x2d, 0x0d, 0x0a, 0x00 + .global ov00_0231AAEC +ov00_0231AAEC: + .byte 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x00 + .global ov00_0231AAF4 +ov00_0231AAF4: + .byte 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AB00 +ov00_0231AB00: + .byte 0x3a, 0x2f, 0x00, 0x00 + .global ov00_0231AB04 +ov00_0231AB04: + .byte 0x2f, 0x00, 0x00, 0x00 + .global ov00_0231AB08 +ov00_0231AB08: + .byte 0x50, 0x4f, 0x53, 0x54, 0x20, 0x00, 0x00, 0x00 + .global ov00_0231AB10 +ov00_0231AB10: + .byte 0x48, 0x45, 0x41, 0x44 + .byte 0x20, 0x00, 0x00, 0x00 + .global ov00_0231AB18 +ov00_0231AB18: + .byte 0x47, 0x45, 0x54, 0x20, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AB20 +ov00_0231AB20: + .byte 0x20, 0x48, 0x54, 0x54 + .byte 0x50, 0x2f, 0x31, 0x2e, 0x31, 0x0d, 0x0a, 0x00 + .global ov00_0231AB2C +ov00_0231AB2C: + .byte 0x48, 0x6f, 0x73, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AB34 +ov00_0231AB34: + .byte 0x48, 0x6f, 0x73, 0x74, 0x3a, 0x20, 0x00, 0x00 + .global ov00_0231AB3C +ov00_0231AB3C: + .byte 0x0d, 0x0a, 0x00, 0x00 + .global ov00_0231AB40 +ov00_0231AB40: + .byte 0x55, 0x73, 0x65, 0x72 + .byte 0x2d, 0x41, 0x67, 0x65, 0x6e, 0x74, 0x00, 0x00 + .global ov00_0231AB4C +ov00_0231AB4C: + .byte 0x47, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x79, 0x48 + .byte 0x54, 0x54, 0x50, 0x2f, 0x31, 0x2e, 0x30, 0x00 + .global ov00_0231AB5C +ov00_0231AB5C: + .byte 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69 + .byte 0x6f, 0x6e, 0x00, 0x00 + .global ov00_0231AB68 +ov00_0231AB68: + .byte 0x4b, 0x65, 0x65, 0x70, 0x2d, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x00, 0x00 + .global ov00_0231AB74 +ov00_0231AB74: + .byte 0x63, 0x6c, 0x6f, 0x73, 0x65, 0x00, 0x00, 0x00 + .global ov00_0231AB7C +ov00_0231AB7C: + .byte 0x25, 0x64, 0x00, 0x00 + .global ov00_0231AB80 +ov00_0231AB80: + .byte 0x43, 0x6f, 0x6e, 0x74 + .byte 0x65, 0x6e, 0x74, 0x2d, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x00, 0x00 + .global ov00_0231AB90 +ov00_0231AB90: + .byte 0x43, 0x6f, 0x6e, 0x74 + .byte 0x65, 0x6e, 0x74, 0x2d, 0x54, 0x79, 0x70, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231ABA0 +ov00_0231ABA0: + .byte 0x48, 0x54, 0x54, 0x50 + .byte 0x2f, 0x25, 0x64, 0x2e, 0x25, 0x64, 0x20, 0x25, 0x64, 0x25, 0x6e, 0x00 + .global ov00_0231ABB0 +ov00_0231ABB0: + .byte 0x25, 0x78, 0x00, 0x00 + .global ov00_0231ABB4 +ov00_0231ABB4: + .byte 0x0a, 0x0a, 0x00, 0x00 + .global ov00_0231ABB8 +ov00_0231ABB8: + .byte 0x0d, 0x0a, 0x0d, 0x0a, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231ABC0 +ov00_0231ABC0: + .byte 0x4c, 0x6f, 0x63, 0x61 + .byte 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x00, 0x00, 0x00 + .global ov00_0231ABCC +ov00_0231ABCC: + .byte 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x25 + .byte 0x73, 0x3a, 0x25, 0x64, 0x25, 0x73, 0x00, 0x00 + .global ov00_0231ABDC +ov00_0231ABDC: + .byte 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, 0x2d + .byte 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x3a, 0x00 + .global ov00_0231ABEC +ov00_0231ABEC: + .byte 0x54, 0x72, 0x61, 0x6e, 0x73, 0x66, 0x65, 0x72 + .byte 0x2d, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x3a, 0x20, 0x63, 0x68, 0x75, 0x6e, 0x6b + .byte 0x65, 0x64, 0x00, 0x00 + .global ov00_0231AC08 +ov00_0231AC08: + .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x66, 0x75, 0x6e, 0x63 + .byte 0x2e, 0x00, 0x00, 0x00 + .global ov00_0231AC18 +ov00_0231AC18: + .byte 0x4e, 0x6f, 0x20, 0x63, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x2e + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AC28 +ov00_0231AC28: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AC2C +ov00_0231AC2C: + .byte 0x54, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x6e + .byte 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x68, 0x61, 0x73, 0x20, 0x61, 0x6c, 0x72, 0x65, 0x61 + .byte 0x64, 0x79, 0x20, 0x62, 0x65, 0x65, 0x6e, 0x20, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65 + .byte 0x63, 0x74, 0x65, 0x64, 0x2e, 0x00, 0x00, 0x00 + .global ov00_0231AC5C +ov00_0231AC5C: + .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20 + .byte 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x2e, 0x00 + .global ov00_0231AC6C +ov00_0231AC6C: + .byte 0x5c, 0x61, 0x64, 0x64, 0x62, 0x75, 0x64, 0x64 + .byte 0x79, 0x5c, 0x00, 0x00 + .global ov00_0231AC78 +ov00_0231AC78: + .byte 0x5c, 0x73, 0x65, 0x73, 0x73, 0x6b, 0x65, 0x79, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231AC84 +ov00_0231AC84: + .byte 0x5c, 0x6e, 0x65, 0x77, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x69, 0x64, 0x5c, 0x00, 0x00 + .global ov00_0231AC94 +ov00_0231AC94: + .byte 0x5c, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231ACA0 +ov00_0231ACA0: + .byte 0x5c, 0x66, 0x69, 0x6e + .byte 0x61, 0x6c, 0x5c, 0x00 + .global ov00_0231ACA8 +ov00_0231ACA8: + .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x73, 0x74, 0x61, 0x74 + .byte 0x75, 0x73, 0x2e, 0x00 + .global ov00_0231ACB8 +ov00_0231ACB8: + .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x69, 0x6e, 0x64, 0x65 + .byte 0x78, 0x2e, 0x00, 0x00 + .global ov00_0231ACC8 +ov00_0231ACC8: + .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x73, 0x74, 0x61, 0x74 + .byte 0x75, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x2e, 0x00, 0x00, 0x00 + .global ov00_0231ACE0 +ov00_0231ACE0: + .byte 0x49, 0x6e, 0x76, 0x61 + .byte 0x6c, 0x69, 0x64, 0x20, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x69 + .byte 0x6e, 0x67, 0x2e, 0x00 + .global ov00_0231ACF8 +ov00_0231ACF8: + .byte 0x5c, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AD04 +ov00_0231AD04: + .byte 0x5c, 0x73, 0x74, 0x61, 0x74, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AD14 +ov00_0231AD14: + .byte 0x5c, 0x6c, 0x6f, 0x63, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x00 + .global ov00_0231AD20 +ov00_0231AD20: + .byte 0x49, 0x6e, 0x76, 0x61 + .byte 0x6c, 0x69, 0x64, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AD34 +ov00_0231AD34: + .byte 0x43, 0x4d, 0x00, 0x00 + .global ov00_0231AD38 +ov00_0231AD38: + .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6e + .byte 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x66 + .byte 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x00 + .global ov00_0231AD64 +ov00_0231AD64: + .byte 0x5c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5c, 0x00 + .global ov00_0231AD6C +ov00_0231AD6C: + .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d + .byte 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x00, 0x00 + .global ov00_0231AD7C +ov00_0231AD7C: + .byte 0x5c, 0x69, 0x64, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AD84 +ov00_0231AD84: + .byte 0x5c, 0x62, 0x6d, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AD8C +ov00_0231AD8C: + .byte 0x5c, 0x6b, 0x61, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AD94 +ov00_0231AD94: + .byte 0x5c, 0x6c, 0x74, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AD9C +ov00_0231AD9C: + .byte 0x5c, 0x62, 0x73, 0x69, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231ADA4 +ov00_0231ADA4: + .byte 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x68, 0x61, 0x73, 0x20, 0x63 + .byte 0x6c, 0x6f, 0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63 + .byte 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x00, 0x00, 0x00 + .global ov00_0231ADCC +ov00_0231ADCC: + .byte 0x5c, 0x6b, 0x61, 0x5c, 0x5c, 0x66, 0x69, 0x6e + .byte 0x61, 0x6c, 0x5c, 0x00 + .global ov00_0231ADD8 +ov00_0231ADD8: + .byte 0x5c, 0x61, 0x75, 0x74, 0x68, 0x61, 0x64, 0x64, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231ADE4 +ov00_0231ADE4: + .byte 0x5c, 0x73, 0x65, 0x73, 0x73, 0x6b, 0x65, 0x79, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231ADF0 +ov00_0231ADF0: + .byte 0x5c, 0x66, 0x72, 0x6f + .byte 0x6d, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x69, 0x64, 0x5c, 0x00 + .global ov00_0231AE00 +ov00_0231AE00: + .byte 0x5c, 0x73, 0x69, 0x67 + .byte 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231AE08 +ov00_0231AE08: + .byte 0x5c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5c, 0x00 + .global ov00_0231AE10 +ov00_0231AE10: + .byte 0x5c, 0x62, 0x6d, 0x5c + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AE18 +ov00_0231AE18: + .byte 0x55, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x64 + .byte 0x61, 0x74, 0x61, 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64 + .byte 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72 + .byte 0x2e, 0x00, 0x00, 0x00 + .global ov00_0231AE48 +ov00_0231AE48: + .byte 0x5c, 0x66, 0x5c, 0x00 + .global ov00_0231AE4C +ov00_0231AE4C: + .byte 0x5c, 0x64, 0x61, 0x74, 0x65, 0x5c, 0x00, 0x00 + .global ov00_0231AE54 +ov00_0231AE54: + .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x00, 0x00 + .global ov00_0231AE64 +ov00_0231AE64: + .byte 0x5c, 0x6d, 0x73, 0x67, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231AE6C +ov00_0231AE6C: + .byte 0x7c, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x7c + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AE78 +ov00_0231AE78: + .byte 0x7c, 0x73, 0x7c, 0x00 + .global ov00_0231AE7C +ov00_0231AE7C: + .byte 0x7c, 0x73, 0x73, 0x7c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AE84 +ov00_0231AE84: + .byte 0x7c, 0x6c, 0x73, 0x7c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AE8C +ov00_0231AE8C: + .byte 0x7c, 0x69, 0x70, 0x7c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AE94 +ov00_0231AE94: + .byte 0x7c, 0x70, 0x7c, 0x00 + .global ov00_0231AE98 +ov00_0231AE98: + .byte 0x7c, 0x71, 0x6d, 0x7c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AEA0 +ov00_0231AEA0: + .byte 0x7c, 0x6c, 0x7c, 0x00 + .global ov00_0231AEA4 +ov00_0231AEA4: + .byte 0x31, 0x00, 0x00, 0x00 + .global ov00_0231AEA8 +ov00_0231AEA8: + .byte 0x5c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231AEB4 +ov00_0231AEB4: + .byte 0x5c, 0x73, 0x74, 0x61, 0x74, 0x65, 0x5c, 0x00 + .global ov00_0231AEBC +ov00_0231AEBC: + .byte 0x5c, 0x62, 0x69, 0x70, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231AEC4 +ov00_0231AEC4: + .byte 0x5c, 0x62, 0x70, 0x6f, 0x72, 0x74, 0x5c, 0x00 + .global ov00_0231AECC +ov00_0231AECC: + .byte 0x5c, 0x68, 0x6f, 0x73, 0x74, 0x69, 0x70, 0x5c + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AED8 +ov00_0231AED8: + .byte 0x5c, 0x68, 0x70, 0x72, 0x69, 0x76, 0x69, 0x70, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231AEE4 +ov00_0231AEE4: + .byte 0x5c, 0x71, 0x70, 0x6f, 0x72, 0x74, 0x5c, 0x00 + .global ov00_0231AEEC +ov00_0231AEEC: + .byte 0x5c, 0x68, 0x70, 0x6f, 0x72, 0x74, 0x5c, 0x00 + .global ov00_0231AEF4 +ov00_0231AEF4: + .byte 0x5c, 0x73, 0x65, 0x73, 0x73, 0x66, 0x6c, 0x61, 0x67, 0x73, 0x5c, 0x00 + .global ov00_0231AF00 +ov00_0231AF00: + .byte 0x5c, 0x72, 0x73, 0x74 + .byte 0x61, 0x74, 0x75, 0x73, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231AF0C +ov00_0231AF0C: + .byte 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x54, 0x79, 0x70 + .byte 0x65, 0x5c, 0x00, 0x00 + .global ov00_0231AF18 +ov00_0231AF18: + .byte 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x56, 0x6e, 0x74, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231AF24 +ov00_0231AF24: + .byte 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x4d, 0x6e, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AF30 +ov00_0231AF30: + .byte 0x5c, 0x70, 0x72, 0x6f + .byte 0x64, 0x75, 0x63, 0x74, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231AF3C +ov00_0231AF3C: + .byte 0x5c, 0x71, 0x6d, 0x6f, 0x64, 0x65, 0x66, 0x6c + .byte 0x61, 0x67, 0x73, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AF4C +ov00_0231AF4C: + .byte 0x5c, 0x74, 0x5c, 0x00 + .global ov00_0231AF50 +ov00_0231AF50: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AF54 +ov00_0231AF54: + .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x2e + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AF68 +ov00_0231AF68: + .byte 0x6b, 0x65, 0x79, 0x73, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AF70 +ov00_0231AF70: + .byte 0x45, 0x72, 0x72, 0x6f + .byte 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6b, 0x65, 0x79, 0x73, 0x20, 0x72 + .byte 0x65, 0x70, 0x6c, 0x79, 0x20, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231AF94 +ov00_0231AF94: + .byte 0x5c, 0x64, 0x65, 0x6c, 0x62, 0x75, 0x64, 0x64, 0x79, 0x5c, 0x00, 0x00 + .global ov00_0231AFA0 +ov00_0231AFA0: + .byte 0x5c, 0x64, 0x65, 0x6c + .byte 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x69, 0x64, 0x5c, 0x00, 0x00 + .global ov00_0231AFB0 +ov00_0231AFB0: + .byte 0x4f, 0x75, 0x74, 0x20 + .byte 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x00, 0x00 + .global ov00_0231AFC0 +ov00_0231AFC0: + .byte 0x25, 0x64, 0x00, 0x00 + .global ov00_0231AFC4 +ov00_0231AFC4: + .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72 + .byte 0x6f, 0x72, 0x20, 0x73, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x6f, 0x6e, 0x20, 0x61, 0x20 + .byte 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x00 + .global ov00_0231AFEC +ov00_0231AFEC: + .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61 + .byte 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69 + .byte 0x6e, 0x67, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x61, 0x20, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74 + .byte 0x2e, 0x00, 0x00, 0x00 + .global ov00_0231B018 +ov00_0231B018: + .byte 0x5c, 0x6d, 0x73, 0x67, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B020 +ov00_0231B020: + .byte 0x5c, 0x6d, 0x5c, 0x00 + .global ov00_0231B024 +ov00_0231B024: + .byte 0x5c, 0x6c, 0x65, 0x6e, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B02C +ov00_0231B02C: + .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d + .byte 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x00, 0x00 + .global ov00_0231B03C +ov00_0231B03C: + .byte 0x67, 0x70, 0x63, 0x6d, 0x2e, 0x67, 0x73, 0x2e + .byte 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74 + .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 + .global ov00_0231B07C +ov00_0231B07C: + .byte 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48 + .byte 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58 + .byte 0x59, 0x5a, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e + .byte 0x6f, 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7a, 0x30, 0x31, 0x32, 0x33 + .byte 0x34, 0x35, 0x36, 0x37, 0x38, 0x39, 0x00, 0x00 + .global ov00_0231B0BC +ov00_0231B0BC: + .byte 0x67, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x79, 0x67 + .byte 0x70, 0x00, 0x00, 0x00 + .global ov00_0231B0C8 +ov00_0231B0C8: + .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x65, 0x72 + .byte 0x72, 0x6f, 0x72, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65 + .byte 0x20, 0x55, 0x44, 0x50, 0x20, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x00 + .global ov00_0231B0F0 +ov00_0231B0F0: + .byte 0x54, 0x68, 0x65, 0x72 + .byte 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x73 + .byte 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x55, 0x44, 0x50, 0x20 + .byte 0x4c, 0x61, 0x79, 0x65, 0x72, 0x2e, 0x00, 0x00 + .global ov00_0231B11C +ov00_0231B11C: + .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61 + .byte 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74 + .byte 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x00, 0x00, 0x00 + .global ov00_0231B144 +ov00_0231B144: + .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72 + .byte 0x6f, 0x72, 0x20, 0x6d, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x73, 0x6f, 0x63, 0x6b + .byte 0x65, 0x74, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B178 +ov00_0231B178: + .byte 0x43, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65 + .byte 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e + .byte 0x20, 0x6d, 0x61, 0x6e, 0x61, 0x6e, 0x67, 0x65, 0x72, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x20, 0x6e + .byte 0x61, 0x6d, 0x65, 0x2e, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B1AC +ov00_0231B1AC: + .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61 + .byte 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65 + .byte 0x63, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x00 + .global ov00_0231B1D4 +ov00_0231B1D4: + .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69 + .byte 0x6f, 0x6e, 0x2e, 0x00 + .global ov00_0231B1E8 +ov00_0231B1E8: + .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72 + .byte 0x79, 0x2e, 0x00, 0x00 + .global ov00_0231B1F8 +ov00_0231B1F8: + .byte 0x25, 0x64, 0x40, 0x00 + .global ov00_0231B1FC +ov00_0231B1FC: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B200 +ov00_0231B200: + .byte 0x25, 0x73, 0x25, 0x73 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B208 +ov00_0231B208: + .byte 0x25, 0x73, 0x25, 0x73, 0x40, 0x25, 0x73, 0x00 + .global ov00_0231B210 +ov00_0231B210: + .byte 0x25, 0x73, 0x25, 0x73 + .byte 0x25, 0x73, 0x25, 0x73, 0x25, 0x73, 0x25, 0x73, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B220 +ov00_0231B220: + .byte 0x20, 0x20, 0x20, 0x20 + .byte 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 + .byte 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 + .byte 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B254 +ov00_0231B254: + .byte 0x5c, 0x6c, 0x6f, 0x67, 0x69, 0x6e, 0x5c, 0x00 + .global ov00_0231B25C +ov00_0231B25C: + .byte 0x5c, 0x63, 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e + .byte 0x67, 0x65, 0x5c, 0x00 + .global ov00_0231B268 +ov00_0231B268: + .byte 0x5c, 0x61, 0x75, 0x74, 0x68, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x5c, 0x00 + .global ov00_0231B274 +ov00_0231B274: + .byte 0x5c, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x6e, 0x69, 0x63, 0x6b, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B284 +ov00_0231B284: + .byte 0x5c, 0x75, 0x73, 0x65, 0x72, 0x5c, 0x00, 0x00 + .global ov00_0231B28C +ov00_0231B28C: + .byte 0x40, 0x00, 0x00, 0x00 + .global ov00_0231B290 +ov00_0231B290: + .byte 0x5c, 0x75, 0x73, 0x65 + .byte 0x72, 0x69, 0x64, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B29C +ov00_0231B29C: + .byte 0x5c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65 + .byte 0x69, 0x64, 0x5c, 0x00 + .global ov00_0231B2A8 +ov00_0231B2A8: + .byte 0x5c, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72, 0x69, 0x64, 0x5c, 0x00 + .global ov00_0231B2B4 +ov00_0231B2B4: + .byte 0x5c, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x5c, 0x00, 0x00 + .global ov00_0231B2C0 +ov00_0231B2C0: + .byte 0x5c, 0x66, 0x69, 0x72 + .byte 0x65, 0x77, 0x61, 0x6c, 0x6c, 0x5c, 0x31, 0x00 + .global ov00_0231B2CC +ov00_0231B2CC: + .byte 0x5c, 0x70, 0x6f, 0x72, 0x74, 0x5c, 0x00, 0x00 + .global ov00_0231B2D4 +ov00_0231B2D4: + .byte 0x5c, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x69, 0x64, 0x5c, 0x00 + .global ov00_0231B2E0 +ov00_0231B2E0: + .byte 0x5c, 0x67, 0x61, 0x6d + .byte 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5c, 0x00, 0x00 + .global ov00_0231B2EC +ov00_0231B2EC: + .byte 0x5c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61 + .byte 0x63, 0x65, 0x69, 0x64, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B2FC +ov00_0231B2FC: + .byte 0x5c, 0x73, 0x64, 0x6b, 0x72, 0x65, 0x76, 0x69 + .byte 0x73, 0x69, 0x6f, 0x6e, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B30C +ov00_0231B30C: + .byte 0x5c, 0x71, 0x75, 0x69, 0x65, 0x74, 0x5c, 0x00 + .global ov00_0231B314 +ov00_0231B314: + .byte 0x5c, 0x69, 0x64, 0x5c, 0x31, 0x00, 0x00, 0x00 + .global ov00_0231B31C +ov00_0231B31C: + .byte 0x5c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5c, 0x00 + .global ov00_0231B324 +ov00_0231B324: + .byte 0x5c, 0x6e, 0x65, 0x77, 0x75, 0x73, 0x65, 0x72, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B330 +ov00_0231B330: + .byte 0x5c, 0x65, 0x6d, 0x61 + .byte 0x69, 0x6c, 0x5c, 0x00 + .global ov00_0231B338 +ov00_0231B338: + .byte 0x5c, 0x6e, 0x69, 0x63, 0x6b, 0x5c, 0x00, 0x00 + .global ov00_0231B340 +ov00_0231B340: + .byte 0x5c, 0x70, 0x61, 0x73 + .byte 0x73, 0x77, 0x6f, 0x72, 0x64, 0x65, 0x6e, 0x63, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B350 +ov00_0231B350: + .byte 0x5c, 0x63, 0x64, 0x6b + .byte 0x65, 0x79, 0x65, 0x6e, 0x63, 0x5c, 0x00, 0x00 + .global ov00_0231B35C +ov00_0231B35C: + .byte 0x5c, 0x70, 0x69, 0x64, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B364 +ov00_0231B364: + .byte 0x5c, 0x6c, 0x63, 0x5c, 0x31, 0x00, 0x00, 0x00 + .global ov00_0231B36C +ov00_0231B36C: + .byte 0x55, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74 + .byte 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65 + .byte 0x69, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65 + .byte 0x72, 0x76, 0x65, 0x72, 0x2e, 0x00, 0x00, 0x00 + .global ov00_0231B39C +ov00_0231B39C: + .byte 0x5c, 0x6e, 0x75, 0x72, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B3A4 +ov00_0231B3A4: + .byte 0x55, 0x6e, 0x65, 0x78, 0x65, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61 + .byte 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72 + .byte 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x00, 0x00 + .global ov00_0231B3D4 +ov00_0231B3D4: + .byte 0x5c, 0x6c, 0x63, 0x5c, 0x32, 0x00, 0x00, 0x00 + .global ov00_0231B3DC +ov00_0231B3DC: + .byte 0x5c, 0x73, 0x65, 0x73, 0x73, 0x6b, 0x65, 0x79 + .byte 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B3E8 +ov00_0231B3E8: + .byte 0x5c, 0x6c, 0x74, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B3F0 +ov00_0231B3F0: + .byte 0x5c, 0x70, 0x72, 0x6f + .byte 0x6f, 0x66, 0x5c, 0x00 + .global ov00_0231B3F8 +ov00_0231B3F8: + .byte 0x43, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x75 + .byte 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65 + .byte 0x72, 0x2e, 0x00, 0x00 + .global ov00_0231B418 +ov00_0231B418: + .byte 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x20, 0x68 + .byte 0x61, 0x73, 0x20, 0x72, 0x65, 0x66, 0x75, 0x73, 0x65, 0x64, 0x20, 0x74, 0x68, 0x65, 0x20, 0x63 + .byte 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x00, 0x00 + .global ov00_0231B440 +ov00_0231B440: + .byte 0x5c, 0x6c, 0x6f, 0x67 + .byte 0x6f, 0x75, 0x74, 0x5c, 0x5c, 0x73, 0x65, 0x73, 0x73, 0x6b, 0x65, 0x79, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B454 +ov00_0231B454: + .byte 0x43, 0x4d, 0x00, 0x00 + .global ov00_0231B458 +ov00_0231B458: + .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x64, 0x61, 0x74, 0x65 + .byte 0x2e, 0x00, 0x00, 0x00 + .global ov00_0231B468 +ov00_0231B468: + .byte 0x5c, 0x70, 0x69, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B470 +ov00_0231B470: + .byte 0x55, 0x6e, 0x65, 0x78 + .byte 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x64, 0x61, 0x74, 0x61, 0x20, 0x77, 0x61, 0x73, 0x20 + .byte 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68 + .byte 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2e, 0x00, 0x00, 0x00 + .global ov00_0231B4A0 +ov00_0231B4A0: + .byte 0x5c, 0x70, 0x72, 0x6f + .byte 0x66, 0x69, 0x6c, 0x65, 0x69, 0x64, 0x5c, 0x00 + .global ov00_0231B4AC +ov00_0231B4AC: + .byte 0x5c, 0x6e, 0x69, 0x63, 0x6b, 0x5c, 0x00, 0x00 + .global ov00_0231B4B4 +ov00_0231B4B4: + .byte 0x5c, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x6e, 0x69, 0x63, 0x6b, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B4C4 +ov00_0231B4C4: + .byte 0x5c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5c, 0x00 + .global ov00_0231B4CC +ov00_0231B4CC: + .byte 0x5c, 0x66, 0x69, 0x72, 0x73, 0x74, 0x6e, 0x61 + .byte 0x6d, 0x65, 0x5c, 0x00 + .global ov00_0231B4D8 +ov00_0231B4D8: + .byte 0x5c, 0x6c, 0x61, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x5c, 0x00, 0x00 + .global ov00_0231B4E4 +ov00_0231B4E4: + .byte 0x5c, 0x69, 0x63, 0x71, 0x75, 0x69, 0x6e, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B4F0 +ov00_0231B4F0: + .byte 0x5c, 0x68, 0x6f, 0x6d + .byte 0x65, 0x70, 0x61, 0x67, 0x65, 0x5c, 0x00, 0x00 + .global ov00_0231B4FC +ov00_0231B4FC: + .byte 0x5c, 0x7a, 0x69, 0x70, 0x63, 0x6f, 0x64, 0x65 + .byte 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B508 +ov00_0231B508: + .byte 0x5c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x63, 0x6f, 0x64, 0x65 + .byte 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B518 +ov00_0231B518: + .byte 0x5c, 0x6c, 0x6f, 0x6e, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B520 +ov00_0231B520: + .byte 0x5c, 0x6c, 0x61, 0x74 + .byte 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B528 +ov00_0231B528: + .byte 0x5c, 0x6c, 0x6f, 0x63, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B530 +ov00_0231B530: + .byte 0x5c, 0x62, 0x69, 0x72 + .byte 0x74, 0x68, 0x64, 0x61, 0x79, 0x5c, 0x00, 0x00 + .global ov00_0231B53C +ov00_0231B53C: + .byte 0x5c, 0x73, 0x65, 0x78, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B544 +ov00_0231B544: + .byte 0x5c, 0x70, 0x6d, 0x61, 0x73, 0x6b, 0x5c, 0x00 + .global ov00_0231B54C +ov00_0231B54C: + .byte 0x5c, 0x61, 0x69, 0x6d, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B554 +ov00_0231B554: + .byte 0x5c, 0x70, 0x69, 0x63, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B55C +ov00_0231B55C: + .byte 0x5c, 0x6f, 0x63, 0x63, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B564 +ov00_0231B564: + .byte 0x5c, 0x69, 0x6e, 0x64, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B56C +ov00_0231B56C: + .byte 0x5c, 0x69, 0x6e, 0x63, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B574 +ov00_0231B574: + .byte 0x5c, 0x6d, 0x61, 0x72, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B57C +ov00_0231B57C: + .byte 0x5c, 0x63, 0x68, 0x63, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B584 +ov00_0231B584: + .byte 0x5c, 0x69, 0x31, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B58C +ov00_0231B58C: + .byte 0x5c, 0x6f, 0x31, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B594 +ov00_0231B594: + .byte 0x5c, 0x63, 0x6f, 0x6e, 0x6e, 0x5c, 0x00, 0x00 + .global ov00_0231B59C +ov00_0231B59C: + .byte 0x5c, 0x73, 0x69, 0x67, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B5A4 +ov00_0231B5A4: + .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x00, 0x00 + .global ov00_0231B5B4 +ov00_0231B5B4: + .byte 0x5c, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x70, 0x72, 0x6f, 0x5c, 0x5c, 0x73, 0x65, 0x73, 0x73 + .byte 0x6b, 0x65, 0x79, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B5CC +ov00_0231B5CC: + .byte 0x5c, 0x70, 0x61, 0x72, 0x74, 0x6e, 0x65, 0x72 + .byte 0x69, 0x64, 0x5c, 0x00 + .global ov00_0231B5D8 +ov00_0231B5D8: + .byte 0x5c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5c, 0x00 + .global ov00_0231B5E0 +ov00_0231B5E0: + .byte 0x5c, 0x75, 0x70, 0x64 + .byte 0x61, 0x74, 0x65, 0x75, 0x69, 0x5c, 0x5c, 0x73, 0x65, 0x73, 0x73, 0x6b, 0x65, 0x79, 0x5c, 0x00 + .global ov00_0231B5F4 +ov00_0231B5F4: + .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x7a, 0x69, 0x70, 0x63, 0x6f, 0x64, 0x65, 0x2e + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B608 +ov00_0231B608: + .byte 0x25, 0x64, 0x00, 0x00 + .global ov00_0231B60C +ov00_0231B60C: + .byte 0x30, 0x00, 0x00, 0x00 + .global ov00_0231B610 +ov00_0231B610: + .byte 0x31, 0x00, 0x00, 0x00 + .global ov00_0231B614 +ov00_0231B614: + .byte 0x32, 0x00, 0x00, 0x00 + .global ov00_0231B618 +ov00_0231B618: + .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x73, 0x65, 0x78, 0x2e + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B628 +ov00_0231B628: + .byte 0x5c, 0x63, 0x70, 0x75, 0x62, 0x72, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x5c + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B638 +ov00_0231B638: + .byte 0x5c, 0x63, 0x70, 0x75, 0x73, 0x70, 0x65, 0x65, 0x64, 0x5c, 0x00, 0x00 + .global ov00_0231B644 +ov00_0231B644: + .byte 0x5c, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B650 +ov00_0231B650: + .byte 0x5c, 0x76, 0x69, 0x64 + .byte 0x65, 0x6f, 0x63, 0x61, 0x72, 0x64, 0x31, 0x72, 0x61, 0x6d, 0x5c, 0x00 + .global ov00_0231B660 +ov00_0231B660: + .byte 0x5c, 0x76, 0x69, 0x64 + .byte 0x65, 0x6f, 0x63, 0x61, 0x72, 0x64, 0x32, 0x72, 0x61, 0x6d, 0x5c, 0x00 + .global ov00_0231B670 +ov00_0231B670: + .byte 0x5c, 0x63, 0x6f, 0x6e + .byte 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x69, 0x64, 0x5c, 0x00, 0x00 + .global ov00_0231B680 +ov00_0231B680: + .byte 0x5c, 0x63, 0x6f, 0x6e + .byte 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x70, 0x65, 0x65, 0x64, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B694 +ov00_0231B694: + .byte 0x5c, 0x68, 0x61, 0x73, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B6A4 +ov00_0231B6A4: + .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x69, 0x6e, 0x66, 0x6f, 0x2e, 0x00, 0x00, 0x00 + .global ov00_0231B6B4 +ov00_0231B6B4: + .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x2e, 0x00, 0x00 + .global ov00_0231B6C4 +ov00_0231B6C4: + .byte 0x5c, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x65, 0x6e, 0x63, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B6D4 +ov00_0231B6D4: + .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x63 + .byte 0x6f, 0x64, 0x65, 0x2e, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B6EC +ov00_0231B6EC: + .byte 0x5c, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x63, 0x61 + .byte 0x72, 0x64, 0x31, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x00, 0x00 + .global ov00_0231B700 +ov00_0231B700: + .byte 0x5c, 0x76, 0x69, 0x64 + .byte 0x65, 0x6f, 0x63, 0x61, 0x72, 0x64, 0x32, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x00, 0x00 + .global ov00_0231B714 +ov00_0231B714: + .byte 0x5c, 0x6f, 0x73, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x5c, 0x00, 0x00 + .global ov00_0231B720 +ov00_0231B720: + .byte 0x5c, 0x67, 0x65, 0x74 + .byte 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x5c, 0x5c, 0x73, 0x65, 0x73, 0x73, 0x6b, 0x65, 0x79 + .byte 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B738 +ov00_0231B738: + .byte 0x5c, 0x69, 0x64, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B740 +ov00_0231B740: + .byte 0x4f, 0x75, 0x74, 0x20 + .byte 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x00, 0x00 + .global ov00_0231B750 +ov00_0231B750: + .byte 0x49, 0x6e, 0x76, 0x61 + .byte 0x6c, 0x69, 0x64, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B764 +ov00_0231B764: + .byte 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x6b, 0x65, 0x79, 0x20, 0x76, 0x61, 0x6c, 0x75 + .byte 0x65, 0x00, 0x00, 0x00 + .global ov00_0231B778 +ov00_0231B778: + .byte 0x5c, 0x6b, 0x65, 0x79, 0x73, 0x5c, 0x25, 0x64, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B784 +ov00_0231B784: + .byte 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B788 +ov00_0231B788: + .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72 + .byte 0x79, 0x2e, 0x00, 0x00 + .global ov00_0231B798 +ov00_0231B798: + .byte 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63 + .byte 0x74, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x20, 0x70, 0x65, 0x65, 0x72, 0x2e, 0x00 + .global ov00_0231B7B4 +ov00_0231B7B4: + .byte 0x5c, 0x61, 0x75, 0x74, 0x68, 0x5c, 0x00, 0x00 + .global ov00_0231B7BC +ov00_0231B7BC: + .byte 0x5c, 0x70, 0x69, 0x64, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B7C4 +ov00_0231B7C4: + .byte 0x5c, 0x6e, 0x69, 0x63, 0x6b, 0x5c, 0x00, 0x00 + .global ov00_0231B7CC +ov00_0231B7CC: + .byte 0x5c, 0x73, 0x69, 0x67, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B7D4 +ov00_0231B7D4: + .byte 0x5c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5c, 0x00 + .global ov00_0231B7DC +ov00_0231B7DC: + .byte 0x5c, 0x61, 0x6e, 0x61, 0x63, 0x6b, 0x5c, 0x00 + .global ov00_0231B7E4 +ov00_0231B7E4: + .byte 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x67, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x62, 0x75 + .byte 0x64, 0x64, 0x79, 0x20, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f + .byte 0x6e, 0x2e, 0x00, 0x00 + .global ov00_0231B808 +ov00_0231B808: + .byte 0x5c, 0x61, 0x61, 0x63, 0x6b, 0x5c, 0x00, 0x00 + .global ov00_0231B810 +ov00_0231B810: + .byte 0x45, 0x72, 0x72, 0x6f + .byte 0x72, 0x20, 0x70, 0x61, 0x72, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x62, 0x75, 0x64, 0x64, 0x79, 0x20 + .byte 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B830 +ov00_0231B830: + .byte 0x25, 0x73, 0x25, 0x64 + .byte 0x25, 0x64, 0x00, 0x00 + .global ov00_0231B838 +ov00_0231B838: + .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72 + .byte 0x79, 0x2e, 0x00, 0x00 + .global ov00_0231B848 +ov00_0231B848: + .byte 0x31, 0x00, 0x00, 0x00 + .global ov00_0231B84C +ov00_0231B84C: + .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61 + .byte 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74 + .byte 0x69, 0x6e, 0x67, 0x20, 0x63, 0x6f, 0x6d, 0x6d, 0x75, 0x6e, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f + .byte 0x6e, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x20, 0x70, 0x65, 0x65, 0x72, 0x2e, 0x00, 0x00 + .global ov00_0231B884 +ov00_0231B884: + .byte 0x5c, 0x6d, 0x5c, 0x00 + .global ov00_0231B888 +ov00_0231B888: + .byte 0x5c, 0x6c, 0x65, 0x6e, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B890 +ov00_0231B890: + .byte 0x5c, 0x6d, 0x73, 0x67 + .byte 0x5c, 0x0a, 0x00, 0x00 + .global ov00_0231B898 +ov00_0231B898: + .byte 0x5c, 0x6d, 0x5c, 0x25, 0x64, 0x5c, 0x78, 0x66, 0x65, 0x72, 0x5c, 0x25 + .byte 0x64, 0x20, 0x25, 0x75, 0x20, 0x25, 0x75, 0x00 + .global ov00_0231B8AC +ov00_0231B8AC: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B8B0 +ov00_0231B8B0: + .byte 0x5c, 0x6c, 0x65, 0x6e + .byte 0x5c, 0x25, 0x64, 0x5c, 0x6d, 0x73, 0x67, 0x5c, 0x0a, 0x00, 0x00, 0x00 + .global ov00_0231B8C0 +ov00_0231B8C0: + .byte 0x5c, 0x6e, 0x70, 0x72 + .byte 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B8C8 +ov00_0231B8C8: + .byte 0x55, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x64 + .byte 0x61, 0x74, 0x61, 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64 + .byte 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72 + .byte 0x2e, 0x00, 0x00, 0x00 + .global ov00_0231B8F8 +ov00_0231B8F8: + .byte 0x5c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x69, 0x64, 0x5c, 0x00 + .global ov00_0231B904 +ov00_0231B904: + .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x00, 0x00 + .global ov00_0231B914 +ov00_0231B914: + .byte 0x5c, 0x64, 0x70, 0x72, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231B91C +ov00_0231B91C: + .byte 0x67, 0x70, 0x73, 0x70, 0x2e, 0x67, 0x73, 0x2e + .byte 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74 + .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 + .global ov00_0231B95C +ov00_0231B95C: + .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d + .byte 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x2e, 0x00, 0x00 + .global ov00_0231B96C +ov00_0231B96C: + .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61 + .byte 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x63, 0x72, 0x65, 0x61, 0x74 + .byte 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x00, 0x00, 0x00 + .global ov00_0231B994 +ov00_0231B994: + .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72 + .byte 0x6f, 0x72, 0x20, 0x6d, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x20, 0x73, 0x6f, 0x63, 0x6b + .byte 0x65, 0x74, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x2e + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B9C8 +ov00_0231B9C8: + .byte 0x43, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x72, 0x65 + .byte 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x6d, 0x61, 0x6e + .byte 0x61, 0x6e, 0x67, 0x65, 0x72, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x20, 0x6e, 0x61, 0x6d, 0x65, 0x2e + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231B9F8 +ov00_0231B9F8: + .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6e + .byte 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6e + .byte 0x67, 0x20, 0x61, 0x20, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x00 + .global ov00_0231BA20 +ov00_0231BA20: + .byte 0x4e, 0x6f, 0x20, 0x73 + .byte 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x63, 0x72, 0x69, 0x74, 0x65, 0x72, 0x69, 0x61, 0x2e, 0x00 + .global ov00_0231BA34 +ov00_0231BA34: + .byte 0x54, 0x68, 0x65, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x74, 0x69, 0x6d, 0x65, 0x64 + .byte 0x20, 0x6f, 0x75, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BA4C +ov00_0231BA4C: + .byte 0x53, 0x4d, 0x00, 0x00 + .global ov00_0231BA50 +ov00_0231BA50: + .byte 0x43, 0x6f, 0x75, 0x6c + .byte 0x64, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x20, 0x74, 0x6f + .byte 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x6d, 0x61, 0x6e, 0x61 + .byte 0x67, 0x65, 0x72, 0x2e, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BA7C +ov00_0231BA7C: + .byte 0x5c, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x5c + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BA88 +ov00_0231BA88: + .byte 0x5c, 0x73, 0x65, 0x73, 0x73, 0x6b, 0x65, 0x79, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231BA94 +ov00_0231BA94: + .byte 0x5c, 0x70, 0x72, 0x6f, 0x66, 0x69, 0x6c, 0x65, 0x69, 0x64, 0x5c, 0x00 + .global ov00_0231BAA0 +ov00_0231BAA0: + .byte 0x5c, 0x6e, 0x61, 0x6d + .byte 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x69, 0x64, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231BAB0 +ov00_0231BAB0: + .byte 0x5c, 0x70, 0x61, 0x72 + .byte 0x74, 0x6e, 0x65, 0x72, 0x69, 0x64, 0x5c, 0x00 + .global ov00_0231BABC +ov00_0231BABC: + .byte 0x5c, 0x6e, 0x69, 0x63, 0x6b, 0x5c, 0x00, 0x00 + .global ov00_0231BAC4 +ov00_0231BAC4: + .byte 0x5c, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x6e, 0x69, 0x63, 0x6b, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BAD4 +ov00_0231BAD4: + .byte 0x5c, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5c, 0x00 + .global ov00_0231BADC +ov00_0231BADC: + .byte 0x5c, 0x66, 0x69, 0x72, 0x73, 0x74, 0x6e, 0x61 + .byte 0x6d, 0x65, 0x5c, 0x00 + .global ov00_0231BAE8 +ov00_0231BAE8: + .byte 0x5c, 0x6c, 0x61, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x5c, 0x00, 0x00 + .global ov00_0231BAF4 +ov00_0231BAF4: + .byte 0x5c, 0x69, 0x63, 0x71, 0x75, 0x69, 0x6e, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BB00 +ov00_0231BB00: + .byte 0x5c, 0x73, 0x6b, 0x69 + .byte 0x70, 0x5c, 0x00, 0x00 + .global ov00_0231BB08 +ov00_0231BB08: + .byte 0x5c, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x5c, 0x00 + .global ov00_0231BB10 +ov00_0231BB10: + .byte 0x5c, 0x6e, 0x69, 0x63 + .byte 0x6b, 0x73, 0x5c, 0x00 + .global ov00_0231BB18 +ov00_0231BB18: + .byte 0x5c, 0x70, 0x61, 0x73, 0x73, 0x65, 0x6e, 0x63, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231BB24 +ov00_0231BB24: + .byte 0x5c, 0x70, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BB30 +ov00_0231BB30: + .byte 0x5c, 0x70, 0x72, 0x6f + .byte 0x64, 0x75, 0x63, 0x74, 0x69, 0x64, 0x5c, 0x00 + .global ov00_0231BB3C +ov00_0231BB3C: + .byte 0x5c, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5c, 0x00 + .global ov00_0231BB44 +ov00_0231BB44: + .byte 0x5c, 0x6e, 0x65, 0x77, 0x75, 0x73, 0x65, 0x72, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231BB50 +ov00_0231BB50: + .byte 0x5c, 0x70, 0x72, 0x6f + .byte 0x64, 0x75, 0x63, 0x74, 0x49, 0x44, 0x5c, 0x00 + .global ov00_0231BB5C +ov00_0231BB5C: + .byte 0x5c, 0x63, 0x64, 0x6b, 0x65, 0x79, 0x5c, 0x00 + .global ov00_0231BB64 +ov00_0231BB64: + .byte 0x5c, 0x6f, 0x74, 0x68, 0x65, 0x72, 0x73, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BB70 +ov00_0231BB70: + .byte 0x5c, 0x6f, 0x74, 0x68 + .byte 0x65, 0x72, 0x73, 0x6c, 0x69, 0x73, 0x74, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BB80 +ov00_0231BB80: + .byte 0x5c, 0x6e, 0x75, 0x6d + .byte 0x6f, 0x70, 0x69, 0x64, 0x73, 0x5c, 0x00, 0x00 + .global ov00_0231BB8C +ov00_0231BB8C: + .byte 0x5c, 0x6f, 0x70, 0x69, 0x64, 0x73, 0x5c, 0x00 + .global ov00_0231BB94 +ov00_0231BB94: + .byte 0x7c, 0x00, 0x00, 0x00 + .global ov00_0231BB98 +ov00_0231BB98: + .byte 0x5c, 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x73, 0x65, 0x61, 0x72, 0x63 + .byte 0x68, 0x5c, 0x00, 0x00 + .global ov00_0231BBA8 +ov00_0231BBA8: + .byte 0x5c, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x6e, 0x69 + .byte 0x63, 0x6b, 0x5c, 0x00 + .global ov00_0231BBB8 +ov00_0231BBB8: + .byte 0x5c, 0x67, 0x61, 0x6d, 0x65, 0x6e, 0x61, 0x6d, 0x65, 0x5c, 0x00, 0x00 + .global ov00_0231BBC4 +ov00_0231BBC4: + .byte 0x5c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5c, 0x00 + .global ov00_0231BBCC +ov00_0231BBCC: + .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61 + .byte 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69 + .byte 0x6e, 0x67, 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76 + .byte 0x65, 0x72, 0x2e, 0x00 + .global ov00_0231BBF8 +ov00_0231BBF8: + .byte 0x62, 0x73, 0x72, 0x64, 0x6f, 0x6e, 0x65, 0x00 + .global ov00_0231BC00 +ov00_0231BC00: + .byte 0x6d, 0x6f, 0x72, 0x65 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BC08 +ov00_0231BC08: + .byte 0x30, 0x00, 0x00, 0x00 + .global ov00_0231BC0C +ov00_0231BC0C: + .byte 0x62, 0x73, 0x72, 0x00 + .global ov00_0231BC10 +ov00_0231BC10: + .byte 0x6e, 0x69, 0x63, 0x6b + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BC18 +ov00_0231BC18: + .byte 0x75, 0x6e, 0x69, 0x71, 0x75, 0x65, 0x6e, 0x69, 0x63, 0x6b, 0x00, 0x00 + .global ov00_0231BC24 +ov00_0231BC24: + .byte 0x66, 0x69, 0x72, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x00 + .global ov00_0231BC30 +ov00_0231BC30: + .byte 0x6c, 0x61, 0x73, 0x74 + .byte 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BC3C +ov00_0231BC3C: + .byte 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x00, 0x00, 0x00 + .global ov00_0231BC44 +ov00_0231BC44: + .byte 0x45, 0x72, 0x72, 0x6f, 0x72, 0x20, 0x72, 0x65, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x72 + .byte 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x61, 0x72, 0x63, 0x68, 0x20, 0x73, 0x65 + .byte 0x72, 0x76, 0x65, 0x72, 0x2e, 0x00, 0x00, 0x00 + .global ov00_0231BC6C +ov00_0231BC6C: + .byte 0x76, 0x72, 0x00, 0x00 + .global ov00_0231BC70 +ov00_0231BC70: + .byte 0x6e, 0x72, 0x00, 0x00 + .global ov00_0231BC74 +ov00_0231BC74: + .byte 0x6e, 0x64, 0x6f, 0x6e, 0x65, 0x00, 0x00, 0x00 + .global ov00_0231BC7C +ov00_0231BC7C: + .byte 0x70, 0x73, 0x72, 0x64, 0x6f, 0x6e, 0x65, 0x00 + .global ov00_0231BC84 +ov00_0231BC84: + .byte 0x70, 0x73, 0x72, 0x00 + .global ov00_0231BC88 +ov00_0231BC88: + .byte 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x00, 0x00 + .global ov00_0231BC90 +ov00_0231BC90: + .byte 0x73, 0x74, 0x61, 0x74 + .byte 0x75, 0x73, 0x63, 0x6f, 0x64, 0x65, 0x00, 0x00 + .global ov00_0231BC9C +ov00_0231BC9C: + .byte 0x63, 0x75, 0x72, 0x00 + .global ov00_0231BCA0 +ov00_0231BCA0: + .byte 0x5c, 0x70, 0x69, 0x64 + .byte 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231BCA8 +ov00_0231BCA8: + .byte 0x6e, 0x75, 0x72, 0x00 + .global ov00_0231BCAC +ov00_0231BCAC: + .byte 0x6f, 0x74, 0x68, 0x65, 0x72, 0x73, 0x00, 0x00 + .global ov00_0231BCB4 +ov00_0231BCB4: + .byte 0x6f, 0x64, 0x6f, 0x6e, 0x65, 0x00, 0x00, 0x00 + .global ov00_0231BCBC +ov00_0231BCBC: + .byte 0x6f, 0x00, 0x00, 0x00 + .global ov00_0231BCC0 +ov00_0231BCC0: + .byte 0x66, 0x69, 0x72, 0x73 + .byte 0x74, 0x00, 0x00, 0x00 + .global ov00_0231BCC8 +ov00_0231BCC8: + .byte 0x6c, 0x61, 0x73, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BCD0 +ov00_0231BCD0: + .byte 0x6f, 0x74, 0x68, 0x65 + .byte 0x72, 0x73, 0x6c, 0x69, 0x73, 0x74, 0x00, 0x00 + .global ov00_0231BCDC +ov00_0231BCDC: + .byte 0x6f, 0x6c, 0x64, 0x6f, 0x6e, 0x65, 0x00, 0x00 + .global ov00_0231BCE4 +ov00_0231BCE4: + .byte 0x75, 0x73, 0x00, 0x00 + .global ov00_0231BCE8 +ov00_0231BCE8: + .byte 0x75, 0x73, 0x64, 0x6f, 0x6e, 0x65, 0x00, 0x00 + .global ov00_0231BCF0 +ov00_0231BCF0: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BCF4 +ov00_0231BCF4: + .byte 0x5c, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x5c, 0x25, 0x64, 0x5c, 0x72, 0x65, 0x73, 0x75 + .byte 0x6c, 0x74, 0x5c, 0x25, 0x64, 0x00, 0x00, 0x00 + .global ov00_0231BD0C +ov00_0231BD0C: + .byte 0x5c, 0x78, 0x66, 0x65, 0x72, 0x5c, 0x00, 0x00 + .global ov00_0231BD14 +ov00_0231BD14: + .byte 0x25, 0x64, 0x20, 0x25, 0x75, 0x20, 0x25, 0x75, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BD20 +ov00_0231BD20: + .byte 0x5c, 0x72, 0x6e, 0x5c + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BD28 +ov00_0231BD28: + .byte 0x55, 0x6e, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x20, 0x64 + .byte 0x61, 0x74, 0x61, 0x20, 0x77, 0x61, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64 + .byte 0x20, 0x66, 0x72, 0x6f, 0x6d, 0x20, 0x74, 0x68, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72 + .byte 0x2e, 0x00, 0x00, 0x00 + .global ov00_0231BD58 +ov00_0231BD58: + .byte 0x4f, 0x75, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72 + .byte 0x79, 0x2e, 0x00, 0x00 + .global ov00_0231BD68 +ov00_0231BD68: + .byte 0x5c, 0x72, 0x63, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BD70 +ov00_0231BD70: + .byte 0x5c, 0x65, 0x72, 0x72 + .byte 0x6f, 0x72, 0x5c, 0x00 + .global ov00_0231BD78 +ov00_0231BD78: + .byte 0x5c, 0x65, 0x72, 0x72, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231BD80 +ov00_0231BD80: + .byte 0x5c, 0x65, 0x72, 0x72 + .byte 0x6d, 0x73, 0x67, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BD8C +ov00_0231BD8C: + .byte 0x5c, 0x66, 0x61, 0x74, 0x61, 0x6c, 0x5c, 0x00 + .global ov00_0231BD94 +ov00_0231BD94: + .byte 0x54, 0x68, 0x65, 0x72, 0x65, 0x20, 0x77, 0x61, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x72, 0x72 + .byte 0x6f, 0x72, 0x20, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x6f, 0x72, 0x20 + .byte 0x61, 0x20, 0x63, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x20, 0x63, 0x6f, 0x6e, 0x6e + .byte 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x00 + .global ov00_0231BDCC +ov00_0231BDCC: + .byte 0x50, 0x61, 0x72, 0x73, 0x65, 0x20, 0x45, 0x72 + .byte 0x72, 0x6f, 0x72, 0x2e, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BDDC +ov00_0231BDDC: + .word ov00_0231BE28 + .byte 0xff, 0xff, 0xff, 0xff + .byte 0x20, 0x4e, 0x00, 0x00 + .word BucketSet + .word BucketAdd_Gsi + .word BucketSub_Gsi + .word BucketMult_Gsi + .word BucketDiv_Gsi + .word BucketConcat_Gsi + .word BucketAvg_Gsi + .word ServerOpInt + .word ServerOpFloat + .word ServerOpString + .word TeamOpInt + .word TeamOpFloat + .word TeamOpString + .word PlayerOpInt + .word PlayerOpFloat + .word PlayerOpString + .global ov00_0231BE28 +ov00_0231BE28: + .byte 0x00, 0x61, 0x6d, 0x65, 0x53, 0x70, 0x79, 0x33, 0x44, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BE38 +ov00_0231BE38: + .byte 0x00, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x41, 0x70, 0x68, 0x65, 0x78 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BE48 +ov00_0231BE48: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BE4C +ov00_0231BE4C: + .byte 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231BE50 +ov00_0231BE50: + .byte 0x70, 0x61, 0x75, 0x74 + .byte 0x68, 0x72, 0x00, 0x00 + .global ov00_0231BE58 +ov00_0231BE58: + .byte 0x6c, 0x69, 0x64, 0x00 + .global ov00_0231BE5C +ov00_0231BE5C: + .byte 0x65, 0x72, 0x72, 0x6d, 0x73, 0x67, 0x00, 0x00 + .global ov00_0231BE64 +ov00_0231BE64: + .byte 0x67, 0x65, 0x74, 0x70, 0x69, 0x64, 0x72, 0x00 + .global ov00_0231BE6C +ov00_0231BE6C: + .byte 0x67, 0x65, 0x74, 0x70, 0x64, 0x72, 0x00, 0x00 + .global ov00_0231BE74 +ov00_0231BE74: + .byte 0x70, 0x69, 0x64, 0x00 + .global ov00_0231BE78 +ov00_0231BE78: + .byte 0x6d, 0x6f, 0x64, 0x00 + .global ov00_0231BE7C +ov00_0231BE7C: + .byte 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x00, 0x00 + .global ov00_0231BE84 +ov00_0231BE84: + .byte 0x5c, 0x64, 0x61, 0x74, 0x61, 0x5c, 0x00, 0x00 + .global ov00_0231BE8C +ov00_0231BE8C: + .byte 0x73, 0x65, 0x74, 0x70, 0x64, 0x72, 0x00, 0x00 + .global ov00_0231BE94 +ov00_0231BE94: + .byte 0x5c, 0x70, 0x61, 0x75, 0x74, 0x68, 0x72, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BEA0 +ov00_0231BEA0: + .byte 0x5c, 0x67, 0x65, 0x74 + .byte 0x70, 0x69, 0x64, 0x72, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231BEAC +ov00_0231BEAC: + .byte 0x5c, 0x67, 0x65, 0x74, 0x70, 0x64, 0x72, 0x5c + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BEB8 +ov00_0231BEB8: + .byte 0x5c, 0x73, 0x65, 0x74, 0x70, 0x64, 0x72, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BEC4 +ov00_0231BEC4: + .byte 0x25, 0x73, 0x5f, 0x74, 0x25, 0x64, 0x00, 0x00 + .global ov00_0231BECC +ov00_0231BECC: + .byte 0x25, 0x73, 0x5f, 0x25, 0x64, 0x00, 0x00, 0x00 + .global ov00_0231BED4 +ov00_0231BED4: + .byte 0x33, 0x62, 0x38, 0x64, 0x64, 0x38, 0x39, 0x39, 0x35, 0x66, 0x37, 0x63, 0x34, 0x30, 0x61, 0x39 + .byte 0x61, 0x35, 0x63, 0x35, 0x62, 0x37, 0x64, 0x64, 0x35, 0x62, 0x34, 0x38, 0x31, 0x33, 0x34, 0x31 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BEF8 +ov00_0231BEF8: + .byte 0x74, 0x69, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BF00 +ov00_0231BF00: + .byte 0xfe, 0xfe, 0x00, 0x00 + .global ov00_0231BF04 +ov00_0231BF04: + .byte 0x25, 0x73, 0x3a, 0x25, 0x64, 0x00, 0x00, 0x00 + .global ov00_0231BF0C +ov00_0231BF0C: + .byte 0x25, 0x73, 0x00, 0x00 + .global ov00_0231BF10 +ov00_0231BF10: + .byte 0x3a, 0x25, 0x64, 0x00 + .global ov00_0231BF14 +ov00_0231BF14: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231BF18 +ov00_0231BF18: + .byte 0x06, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff + .global ov00_0231BF24 +ov00_0231BF24: + .byte 0xfd, 0xfc, 0x1e, 0x66, 0x6a, 0xb2, 0x00, 0x00 + .global ov00_0231BF2C +ov00_0231BF2C: + .byte 0x25, 0x73, 0x2e, 0x25, 0x73, 0x00, 0x00, 0x00 + .global ov00_0231BF34 +ov00_0231BF34: + .byte 0x6e, 0x61, 0x74, 0x6e, 0x65, 0x67, 0x31, 0x2e, 0x67, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65 + .byte 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74, 0x00 + .global ov00_0231BF50 +ov00_0231BF50: + .byte 0x6e, 0x61, 0x74, 0x6e + .byte 0x65, 0x67, 0x32, 0x2e, 0x67, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77 + .byte 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74, 0x00 + .global ov00_0231BF6C +ov00_0231BF6C: + .byte 0x6e, 0x61, 0x74, 0x6e, 0x65, 0x67, 0x33, 0x2e + .byte 0x67, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e + .byte 0x6e, 0x65, 0x74, 0x00 + .global ov00_0231BF88 +ov00_0231BF88: + .word ov00_0231BF8C + .global ov00_0231BF8C +ov00_0231BF8C: + .byte 0xff, 0xff, 0xff, 0xff, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CD20 +ov00_0231CD20: + .byte 0x25, 0x73, 0x2e, 0x6d + .byte 0x61, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x67, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64 + .byte 0x6f, 0x77, 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74, 0x00, 0x00, 0x00 + .global ov00_0231CD40 +ov00_0231CD40: + .byte 0x4e, 0x6f, 0x20, 0x63 + .byte 0x68, 0x61, 0x6c, 0x6c, 0x65, 0x6e, 0x67, 0x65, 0x20, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x77 + .byte 0x61, 0x73, 0x20, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x64, 0x20, 0x66, 0x72, 0x6f, 0x6d + .byte 0x20, 0x74, 0x68, 0x65, 0x20, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x20, 0x73, 0x65, 0x72, 0x76 + .byte 0x65, 0x72, 0x2e, 0x00 + .global ov00_0231CD78 +ov00_0231CD78: + .byte 0x25, 0x64, 0x00, 0x00 + .global ov00_0231CD7C +ov00_0231CD7C: + .byte 0x32, 0x35, 0x35, 0x2e, 0x32, 0x35, 0x35, 0x2e + .byte 0x32, 0x35, 0x35, 0x2e, 0x32, 0x35, 0x35, 0x00 + .global ov00_0231CD8C +ov00_0231CD8C: + .byte 0x25, 0x30, 0x38, 0x58, 0x25, 0x30, 0x34, 0x58 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CD98 +ov00_0231CD98: + .byte 0x75, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x00 + .global ov00_0231CDA0 +ov00_0231CDA0: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CDA4 +ov00_0231CDA4: + .byte 0x73, 0x70, 0x6c, 0x69, 0x74, 0x6e, 0x75, 0x6d, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CDB0 +ov00_0231CDB0: + .byte 0x25, 0x30, 0x32, 0x78 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CDB8 +ov00_0231CDB8: + .byte 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x69, 0x70, 0x25, 0x64, 0x00, 0x00, 0x00 + .global ov00_0231CDC4 +ov00_0231CDC4: + .byte 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x70, 0x6f, 0x72, 0x74, 0x00, 0x00, 0x00 + .global ov00_0231CDD0 +ov00_0231CDD0: + .byte 0x6e, 0x61, 0x74, 0x6e + .byte 0x65, 0x67, 0x00, 0x00 + .global ov00_0231CDD8 +ov00_0231CDD8: + .byte 0x31, 0x00, 0x00, 0x00 + .global ov00_0231CDDC +ov00_0231CDDC: + .byte 0x30, 0x00, 0x00, 0x00 + .global ov00_0231CDE0 +ov00_0231CDE0: + .byte 0x73, 0x74, 0x61, 0x74 + .byte 0x65, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CDF0 +ov00_0231CDF0: + .byte 0x67, 0x61, 0x6d, 0x65 + .byte 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CDFC +ov00_0231CDFC: + .byte 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x69, 0x70 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CE08 +ov00_0231CE08: + .byte 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x70, 0x6f, 0x72, 0x74, 0x00, 0x00 + .global ov00_0231CE14 +ov00_0231CE14: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CE18 +ov00_0231CE18: + .byte 0x70, 0x69, 0x64, 0x5f, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CE20 +ov00_0231CE20: + .byte 0x70, 0x69, 0x6e, 0x67 + .byte 0x5f, 0x00, 0x00, 0x00 + .global ov00_0231CE28 +ov00_0231CE28: + .byte 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x00, 0x00, 0x00 + .global ov00_0231CE30 +ov00_0231CE30: + .byte 0x73, 0x63, 0x6f, 0x72 + .byte 0x65, 0x5f, 0x00, 0x00 + .global ov00_0231CE38 +ov00_0231CE38: + .byte 0x74, 0x65, 0x61, 0x6d, 0x5f, 0x74, 0x00, 0x00 + .global ov00_0231CE40 +ov00_0231CE40: + .byte 0x73, 0x6b, 0x69, 0x6c + .byte 0x6c, 0x5f, 0x00, 0x00 + .global ov00_0231CE48 +ov00_0231CE48: + .byte 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x00, 0x00 + .global ov00_0231CE50 +ov00_0231CE50: + .byte 0x70, 0x6c, 0x61, 0x79 + .byte 0x65, 0x72, 0x5f, 0x00 + .global ov00_0231CE58 +ov00_0231CE58: + .byte 0x67, 0x61, 0x6d, 0x65, 0x76, 0x65, 0x72, 0x00 + .global ov00_0231CE60 +ov00_0231CE60: + .byte 0x6d, 0x61, 0x70, 0x6e + .byte 0x61, 0x6d, 0x65, 0x00 + .global ov00_0231CE68 +ov00_0231CE68: + .byte 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x00 + .global ov00_0231CE70 +ov00_0231CE70: + .byte 0x64, 0x65, 0x61, 0x74 + .byte 0x68, 0x73, 0x5f, 0x00 + .global ov00_0231CE78 +ov00_0231CE78: + .byte 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x64, 0x00 + .global ov00_0231CE80 +ov00_0231CE80: + .byte 0x73, 0x63, 0x6f, 0x72 + .byte 0x65, 0x5f, 0x74, 0x00 + .global ov00_0231CE88 +ov00_0231CE88: + .byte 0x68, 0x6f, 0x73, 0x74, 0x70, 0x6f, 0x72, 0x74, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CE94 +ov00_0231CE94: + .byte 0x67, 0x61, 0x6d, 0x65, 0x74, 0x79, 0x70, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CEA0 +ov00_0231CEA0: + .byte 0x6e, 0x75, 0x6d, 0x74 + .byte 0x65, 0x61, 0x6d, 0x73, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CEAC +ov00_0231CEAC: + .byte 0x67, 0x61, 0x6d, 0x65, 0x6d, 0x6f, 0x64, 0x65 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CEB8 +ov00_0231CEB8: + .byte 0x74, 0x65, 0x61, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CEC4 +ov00_0231CEC4: + .byte 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CED0 +ov00_0231CED0: + .byte 0x67, 0x61, 0x6d, 0x65 + .byte 0x6e, 0x61, 0x6d, 0x65, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CEDC +ov00_0231CEDC: + .byte 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CEE8 +ov00_0231CEE8: + .byte 0x66, 0x72, 0x61, 0x67, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x00, 0x00, 0x00 + .global ov00_0231CEF4 +ov00_0231CEF4: + .byte 0x74, 0x69, 0x6d, 0x65, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x00, 0x00, 0x00 + .global ov00_0231CF00 +ov00_0231CF00: + .byte 0x72, 0x6f, 0x75, 0x6e + .byte 0x64, 0x74, 0x69, 0x6d, 0x65, 0x00, 0x00, 0x00 + .global ov00_0231CF0C +ov00_0231CF0C: + .byte 0x6e, 0x75, 0x6d, 0x70, 0x6c, 0x61, 0x79, 0x65 + .byte 0x72, 0x73, 0x00, 0x00 + .global ov00_0231CF18 +ov00_0231CF18: + .byte 0x6d, 0x61, 0x78, 0x70, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x00, 0x00 + .global ov00_0231CF24 +ov00_0231CF24: + .byte 0x6e, 0x6e, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x69, 0x64, 0x00, 0x00 + .global ov00_0231CF30 +ov00_0231CF30: + .byte 0x67, 0x61, 0x6d, 0x65 + .byte 0x76, 0x61, 0x72, 0x69, 0x61, 0x6e, 0x74, 0x00 + .global ov00_0231CF3C +ov00_0231CF3C: + .byte 0x74, 0x69, 0x6d, 0x65, 0x65, 0x6c, 0x61, 0x70 + .byte 0x73, 0x65, 0x64, 0x00 + .global ov00_0231CF48 +ov00_0231CF48: + .byte 0x72, 0x6f, 0x75, 0x6e, 0x64, 0x65, 0x6c, 0x61, 0x70, 0x73, 0x65, 0x64 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231CF58 +ov00_0231CF58: + .byte 0x74, 0x65, 0x61, 0x6d, 0x66, 0x72, 0x61, 0x67, 0x6c, 0x69, 0x6d, 0x69 + .byte 0x74, 0x00, 0x00, 0x00 + .global ov00_0231CF68 +ov00_0231CF68: + .word ov00_0231CE14 + .word ov00_0231CEC4 + .word ov00_0231CED0 + .word ov00_0231CE58 + .word ov00_0231CE88 + .word ov00_0231CE60 + .word ov00_0231CE94 + .word ov00_0231CF30 + .word ov00_0231CF0C + .word ov00_0231CEA0 + .word ov00_0231CF18 + .word ov00_0231CEAC + .word ov00_0231CEB8 + .word ov00_0231CEE8 + .word ov00_0231CF58 + .word ov00_0231CF3C + .word ov00_0231CEF4 + .word ov00_0231CF00 + .word ov00_0231CF48 + .word ov00_0231CEDC + .word ov00_0231CE78 + .word ov00_0231CE50 + .word ov00_0231CE30 + .word ov00_0231CE40 + .word ov00_0231CE20 + .word ov00_0231CE28 + .word ov00_0231CE70 + .word ov00_0231CE18 + .word ov00_0231CE38 + .word ov00_0231CE80 + .word ov00_0231CF24 + .word ov00_0231CE68 + .word ov00_0231CE48 + .byte 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231D360 +ov00_0231D360: + .byte 0x5c, 0x62, 0x61, 0x73 + .byte 0x69, 0x63, 0x5c, 0x5c, 0x69, 0x6e, 0x66, 0x6f, 0x5c, 0x00, 0x00, 0x00 + .global ov00_0231D370 +ov00_0231D370: + .byte 0x5c, 0x73, 0x74, 0x61 + .byte 0x74, 0x75, 0x73, 0x5c, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231D37C +ov00_0231D37C: + .byte 0x73, 0x70, 0x6c, 0x69, 0x74, 0x6e, 0x75, 0x6d + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231D388 +ov00_0231D388: + .byte 0x5c, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x5c, 0x00 + .global ov00_0231D390 +ov00_0231D390: + .byte 0x66, 0x69, 0x6e, 0x61 + .byte 0x6c, 0x00, 0x00, 0x00 + .global ov00_0231D398 +ov00_0231D398: + .byte 0x71, 0x75, 0x65, 0x72, 0x79, 0x69, 0x64, 0x00 + .global ov00_0231D3A0 +ov00_0231D3A0: + .byte 0x25, 0x64, 0x00, 0x00 + .global ov00_0231D3A4 +ov00_0231D3A4: + .byte 0x70, 0x69, 0x6e, 0x67, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231D3AC +ov00_0231D3AC: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231D3B0 +ov00_0231D3B0: + .byte 0x25, 0x73, 0x25, 0x64 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231D3B8 +ov00_0231D3B8: + .byte 0x73, 0x70, 0x6c, 0x69, 0x74, 0x6e, 0x75, 0x6d, 0x00, 0x00, 0x00, 0x00 + .global ov00_0231D3C4 +ov00_0231D3C4: + .byte 0x5c, 0x25, 0x73, 0x00 + .global ov00_0231D3C8 +ov00_0231D3C8: + .word ov00_0231D3CC + .global ov00_0231D3CC +ov00_0231D3CC: + .byte 0x51, 0x75, 0x65, 0x72, 0x79, 0x20, 0x45, 0x72 + .byte 0x72, 0x6f, 0x72, 0x3a, 0x20, 0x00, 0x00, 0x00 + .global ov00_0231D3DC +ov00_0231D3DC: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov00_0231D3E0 +ov00_0231D3E0: + .byte 0x25, 0x73, 0x2e, 0x6d + .byte 0x73, 0x25, 0x64, 0x2e, 0x67, 0x73, 0x2e, 0x6e, 0x69, 0x6e, 0x74, 0x65, 0x6e, 0x64, 0x6f, 0x77 + .byte 0x69, 0x66, 0x69, 0x2e, 0x6e, 0x65, 0x74, 0x00 + .global ov00_0231D3FC +ov00_0231D3FC: + .byte 0xff, 0xff, 0xff, 0xff, 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 + + .bss + .global ov00_0231D420 +ov00_0231D420: + .space 0xC + .global ov00_0231D42C +ov00_0231D42C: + .space 0x64 + .global ov00_0231D490 +ov00_0231D490: + .space 0xE10 + .global ov00_0231E2A0 +ov00_0231E2A0: + .space 0x8 + .global ov00_0231E2A8 +ov00_0231E2A8: + .space 0x10 + .global ov00_0231E2B8 +ov00_0231E2B8: + .space 0x44 + .global ov00_0231E2FC +ov00_0231E2FC: + .space 0x44 + .global ov00_0231E340 +ov00_0231E340: + .space 0x8 + .global ov00_0231E348 +ov00_0231E348: + .space 0x20 + .global ov00_0231E368 +ov00_0231E368: + .space 0x28 + .global ov00_0231E390 +ov00_0231E390: + .space 0x14 + .global ov00_0231E3A4 +ov00_0231E3A4: + .space 0x10 + .global ov00_0231E3B4 +ov00_0231E3B4: + .space 0x2C + .global ov00_0231E3E0 +ov00_0231E3E0: + .space 0xA00 + .global ov00_0231EDE0 +ov00_0231EDE0: + .space 0x80 + .global ov00_0231EE60 +ov00_0231EE60: + .space 0x28 + .global ov00_0231EE88 +ov00_0231EE88: + .space 0x4 + .global ov00_0231EE8C +ov00_0231EE8C: + .space 0x148 + .global ov00_0231EFD4 +ov00_0231EFD4: + .space 0x2B4 + .global ov00_0231F288 +ov00_0231F288: + .space 0x5C + .global ov00_0231F2E4 +ov00_0231F2E4: + .space 0x280 + .global ov00_0231F564 +ov00_0231F564: + .space 0x4 + .global ov00_0231F568 +ov00_0231F568: + .space 0x18 + .global ov00_0231F580 +ov00_0231F580: + .space 0x40 + .global ov00_0231F5C0 +ov00_0231F5C0: + .space 0x8 + .global ov00_0231F5C8 +ov00_0231F5C8: + .space 0x6 + .global ov00_0231F5CE +ov00_0231F5CE: + .space 0x2 + .global ov00_0231F5D0 +ov00_0231F5D0: + .space 0x58 + .global ov00_0231F628 +ov00_0231F628: + .space 0x59F8 + .global ov00_02325020 +ov00_02325020: + .space 0xC + .global ov00_0232502C +ov00_0232502C: + .space 0x14 + .global ov00_02325040 +ov00_02325040: + .space 0x20 + .global ov00_02325060 +ov00_02325060: + .space 0x4 + .global ov00_02325064 +ov00_02325064: + .space 0x14 + .global ov00_02325078 +ov00_02325078: + .space 0x14 + .global ov00_0232508C +ov00_0232508C: + .space 0x8 + .global ov00_02325094 +ov00_02325094: + .space 0x10 + .global ov00_023250A4 +ov00_023250A4: + .space 0x14 + .global ov00_023250B8 +ov00_023250B8: + .space 0x10 + .global ov00_023250C8 +ov00_023250C8: + .space 0x10 + .global ov00_023250D8 +ov00_023250D8: + .space 0x8 + .global ov00_023250E0 +ov00_023250E0: + .space 0x18 + .global ov00_023250F8 +ov00_023250F8: + .space 0xA + .global ov00_02325102 +ov00_02325102: + .space 0x56 + .global ov00_02325158 +ov00_02325158: + .space 0x20 + .global ov00_02325178 +ov00_02325178: + .space 0x44 + .global ov00_023251BC +ov00_023251BC: + .space 0x64 + .global ov00_02325220 +ov00_02325220: + .space 0xC0 + .global ov00_023252E0 +ov00_023252E0: + .space 0xC0 + .global ov00_023253A0 +ov00_023253A0: + .space 0x1C0 + .global ov00_02325560 +ov00_02325560: + .space 0x2A + .global ov00_0232558A +ov00_0232558A: + .space 0x1A + .global ov00_023255A4 +ov00_023255A4: + .space 0x2A + .global ov00_023255CE +ov00_023255CE: + .space 0x156 + .global ov00_02325724 +ov00_02325724: + .space 0x99C + .global ov00_023260C0 +ov00_023260C0: + .space 0x800 + .global ov00_023268C0 +ov00_023268C0: + .space 0x4 + .global ov00_023268C4 +ov00_023268C4: + .space 0x4 + .global ov00_023268C8 +ov00_023268C8: + .space 0x4 + .global ov00_023268CC +ov00_023268CC: + .space 0x4 + .global ov00_023268D0 +ov00_023268D0: + .space 0x30 + .global ov00_02326900 +ov00_02326900: + .space 0x4 + .global ov00_02326904 +ov00_02326904: + .space 0x20 + .global ov00_02326924 +ov00_02326924: + .space 0x8 + .global ov00_0232692C +ov00_0232692C: + .space 0x4 + .global ov00_02326930 +ov00_02326930: + .space 0x4 + .global ov00_02326934 +ov00_02326934: + .space 0x18 + .global ov00_0232694C +ov00_0232694C: + .space 0x8 + .global ov00_02326954 +ov00_02326954: + .space 0x20 + .global ov00_02326974 +ov00_02326974: + .space 0x38 + .global ov00_023269AC +ov00_023269AC: + .space 0x10 + .global ov00_023269BC +ov00_023269BC: + .space 0x104 + .global ov00_02326AC0 +ov00_02326AC0: + .space 0x8 + .global ov00_02326AC8 +ov00_02326AC8: + .space 0x170 + .global ov00_02326C38 +ov00_02326C38: + .space 0x13 + .global ov00_02326C4B +ov00_02326C4B: + .space 0x1 + .global ov00_02326C4C +ov00_02326C4C: + .space 0x4 + .global ov00_02326C50 +ov00_02326C50: + .space 0x4 + .global ov00_02326C54 +ov00_02326C54: + .space 0x8 + .global ov00_02326C5C +ov00_02326C5C: + .space 0x20 + .global ov00_02326C7C +ov00_02326C7C: + .space 0x4 + .global ov00_02326C80 +ov00_02326C80: + .space 0x10 + .global ov00_02326C90 +ov00_02326C90: + .space 0x14 + .global ov00_02326CA4 +ov00_02326CA4: + .space 0x4 + .global ov00_02326CA8 +ov00_02326CA8: + .space 0xC + .global ov00_02326CB4 +ov00_02326CB4: + .space 0x8 + .global ov00_02326CBC +ov00_02326CBC: + .space 0x4 + .global ov00_02326CC0 +ov00_02326CC0: + .space 0x14 + .global ov00_02326CD4 +ov00_02326CD4: + .space 0x4 + .global ov00_02326CD8 +ov00_02326CD8: + .space 0x4 + .global ov00_02326CDC +ov00_02326CDC: + .space 0x14 + .global ov00_02326CF0 +ov00_02326CF0: + .space 0x1C + .global ov00_02326D0C +ov00_02326D0C: + .space 0x48 + .global ov00_02326D54 +ov00_02326D54: + .space 0x14 + .global ov00_02326D68 +ov00_02326D68: + .space 0x4 + .global ov00_02326D6C +ov00_02326D6C: + .space 0x8 + .global ov00_02326D74 +ov00_02326D74: + .space 0x8 + .global ov00_02326D7C +ov00_02326D7C: + .space 0x8 + .global ov00_02326D84 +ov00_02326D84: + .space 0x4 + .global ov00_02326D88 +ov00_02326D88: + .space 0x18 + .global ov00_02326DA0 +ov00_02326DA0: + .space 0x8 + .global ov00_02326DA8 +ov00_02326DA8: + .space 0x80 + .global ov00_02326E28 +ov00_02326E28: + .space 0x100 + .global ov00_02326F28 +ov00_02326F28: + .space 0xC + .global ov00_02326F34 +ov00_02326F34: + .space 0x14 + .global ov00_02326F48 +ov00_02326F48: + .space 0x20 + .global ov00_02326F68 +ov00_02326F68: + .space 0x20 + .global ov00_02326F88 +ov00_02326F88: + .space 0x1 + .global ov00_02326F89 +ov00_02326F89: + .space 0x7 + .global ov00_02326F90 +ov00_02326F90: + .space 0x730 + .global ov00_023276C0 +ov00_023276C0: + .space 0x8 + .global ov00_023276C8 +ov00_023276C8: + .space 0x4 + .global ov00_023276CC +ov00_023276CC: + .space 0x8 + .global ov00_023276D4 +ov00_023276D4: + .space 0xC + .global ov00_023276E0 +ov00_023276E0: + .space 0x5 + .global ov00_023276E5 +ov00_023276E5: + .space 0x1 + .global ov00_023276E6 +ov00_023276E6: + .space 0x4 + .global ov00_023276EA +ov00_023276EA: + .space 0x2 + .global ov00_023276EC +ov00_023276EC: + .space 0x14 + .global ov00_02327700 +ov00_02327700: + .space 0x20 + .global ov00_02327720 +ov00_02327720: + .space 0x4 + .global ov00_02327724 +ov00_02327724: + .space 0x4 + .global ov00_02327728 +ov00_02327728: + .space 0x4 + .global ov00_0232772C +ov00_0232772C: + .space 0x4 + .global ov00_02327730 +ov00_02327730: + .space 0x4 + .global ov00_02327734 +ov00_02327734: + .space 0x8 + .global ov00_0232773C +ov00_0232773C: + .space 0x4 + .global ov00_02327740 +ov00_02327740: + .space 0x4 + .global ov00_02327744 +ov00_02327744: + .space 0x4 + .global ov00_02327748 +ov00_02327748: + .space 0x4 + .global ov00_0232774C +ov00_0232774C: + .space 0xC + .global ov00_02327758 +ov00_02327758: + .space 0xC + .global ov00_02327764 +ov00_02327764: + .space 0x14 + .global ov00_02327778 +ov00_02327778: + .space 0x18 + .global ov00_02327790 +ov00_02327790: + .space 0x1C + .global ov00_023277AC +ov00_023277AC: + .space 0x24 + .global ov00_023277D0 +ov00_023277D0: + .space 0x8 + .global ov00_023277D8 +ov00_023277D8: + .space 0x34 + .global ov00_0232780C +ov00_0232780C: + .space 0xC + .global ov00_02327818 +ov00_02327818: + .space 0x18 + .global ov00_02327830 +ov00_02327830: + .space 0x5C + .global ov00_0232788C +ov00_0232788C: + .space 0x80 + .global ov00_0232790C +ov00_0232790C: + .space 0x4 + .global ov00_02327910 +ov00_02327910: + .space 0x18 + .global ov00_02327928 +ov00_02327928: + .space 0x18 + .global ov00_02327940 +ov00_02327940: + .space 0x4 + .global ov00_02327944 +ov00_02327944: + .space 0x4 + .global ov00_02327948 +ov00_02327948: + .space 0x4 + .global ov00_0232794C +ov00_0232794C: + .space 0x4 + .global ov00_02327950 +ov00_02327950: + .space 0x4 + .global ov00_02327954 +ov00_02327954: + .space 0x8 + .global ov00_0232795C +ov00_0232795C: + .space 0x4 + .global ov00_02327960 +ov00_02327960: + .space 0x4 + .global ov00_02327964 +ov00_02327964: + .space 0x8C0 + .global ov00_02328224 +ov00_02328224: + .space 0x4 + .global ov00_02328228 +ov00_02328228: + .space 0x18 + .global ov00_02328240 +ov00_02328240: + .space 0x20 + .global ov00_02328260 +ov00_02328260: + .space 0xC0 + .global ov00_02328320 +ov00_02328320: + .space 0x20 + .global ov00_02328340 +ov00_02328340: + .space 0x8 + .global ov00_02328348 +ov00_02328348: + .space 0x4 + .global ov00_0232834C +ov00_0232834C: + .space 0x3C + .global ov00_02328388 +ov00_02328388: + .space 0x9 + .global ov00_02328391 +ov00_02328391: + .space 0x3F7 + .global ov00_02328788 +ov00_02328788: + .space 0x18 + .global ov00_023287A0 +ov00_023287A0: + .space 0x10 + .global ov00_023287B0 +ov00_023287B0: + .space 0x14 + .global ov00_023287C4 +ov00_023287C4: + .space 0x3C + .global ov00_02328800 +ov00_02328800: + .space 0x4 + .global ov00_02328804 +ov00_02328804: + .space 0x40 + .global ov00_02328844 +ov00_02328844: + .space 0x40 + .global ov00_02328884 +ov00_02328884: + .space 0x4 + .global ov00_02328888 +ov00_02328888: + .space 0x4 + .global ov00_0232888C +ov00_0232888C: + .space 0x4 + .global ov00_02328890 +ov00_02328890: + .space 0x5 + .global ov00_02328895 +ov00_02328895: + .space 0x47 + .global ov00_023288DC +ov00_023288DC: + .space 0x4 + .global ov00_023288E0 +ov00_023288E0: + .space 0x4 + .global ov00_023288E4 +ov00_023288E4: + .space 0x4 + .global ov00_023288E8 +ov00_023288E8: + .space 0x84 + .global ov00_0232896C +ov00_0232896C: + .space 0x3C + .global ov00_023289A8 +ov00_023289A8: + .space 0x4 + .global ov00_023289AC +ov00_023289AC: + .space 0x4 + .global ov00_023289B0 +ov00_023289B0: + .space 0x10 + .global ov00_023289C0 +ov00_023289C0: + .space 0x4 + .global ov00_023289C4 +ov00_023289C4: + .space 0x14 + .global ov00_023289D8 +ov00_023289D8: + .space 0x4 + .global ov00_023289DC +ov00_023289DC: + .space 0x4 + .global ov00_023289E0 +ov00_023289E0: + .space 0x8 + .global ov00_023289E8 +ov00_023289E8: + .space 0x30 + .global ov00_02328A18 +ov00_02328A18: + .space 0x100 + .global ov00_02328B18 +ov00_02328B18: + .space 0x100 + .global ov00_02328C18 +ov00_02328C18: + .space 0x200 + .global ov00_02328E18 +ov00_02328E18: + .space 0x4 + .global ov00_02328E1C +ov00_02328E1C: + .space 0x4 + .global ov00_02328E20 +ov00_02328E20: + .space 0x2C + .global ov00_02328E4C +ov00_02328E4C: + .space 0x4C + .global ov00_02328E98 +ov00_02328E98: + .space 0x200 + .global ov00_02329098 +ov00_02329098: + .space 0x8 + .global ov00_023290A0 +ov00_023290A0: + .space 0x24 + .global ov00_023290C4 +ov00_023290C4: + .space 0xD8 + .global ov00_0232919C +ov00_0232919C: + .space 0x200 + .global ov00_0232939C +ov00_0232939C: + .space 0x4 + .global ov00_023293A0 +ov00_023293A0: + .space 0x14 + .global ov00_023293B4 +ov00_023293B4: + .space 0x40 + .global ov00_023293F4 +ov00_023293F4: + .space 0x100 + .global ov00_023294F4 +ov00_023294F4: + .space 0x8 + .global ov00_023294FC +ov00_023294FC: + .space 0x4 + .global ov00_02329500 +ov00_02329500: + .space 0x20 diff --git a/asm/overlay_01.s b/asm/overlay_01.s index 1f347e7f..62fcf933 100644 --- a/asm/overlay_01.s +++ b/asm/overlay_01.s @@ -17527,6001 +17527,3 @@ _02337550: .word ov01_0233C1AC _02337554: .word ov01_0233CA78 _02337558: .word ov01_0233755C arm_func_end ov01_0233723C - - arm_func_start ov01_0233755C -ov01_0233755C: ; 0x0233755C - stmdb sp!, {r3, lr} - ldr r0, _02337588 ; =ov01_0233CA78 - ldr r0, [r0] - cmp r0, #0 - bne _0233757C - mov r0, #8 - bl ov01_023310B8 - ldmia sp!, {r3, pc} -_0233757C: - mov r0, #0 - bl ov01_023310B8 - ldmia sp!, {r3, pc} - .align 2, 0 -_02337588: .word ov01_0233CA78 - arm_func_end ov01_0233755C - - arm_func_start ov01_0233758C -ov01_0233758C: ; 0x0233758C - ldr ip, _02337598 ; =InitMenu - ldr r0, _0233759C ; =ov01_0233BCBC - bx ip - .align 2, 0 -_02337598: .word InitMenu -_0233759C: .word ov01_0233BCBC - arm_func_end ov01_0233758C - - arm_func_start ov01_023375A0 -ov01_023375A0: ; 0x023375A0 - ldr r0, _023375AC ; =ov01_0233C1B0 - ldr r0, [r0] - bx lr - .align 2, 0 -_023375AC: .word ov01_0233C1B0 - arm_func_end ov01_023375A0 - - arm_func_start ov01_023375B0 -ov01_023375B0: ; 0x023375B0 - ldr r1, _023375BC ; =ov01_0233C1B0 - str r0, [r1] - bx lr - .align 2, 0 -_023375BC: .word ov01_0233C1B0 - arm_func_end ov01_023375B0 - - arm_func_start ov01_023375C0 -ov01_023375C0: ; 0x023375C0 - ldr r1, _023375CC ; =ov01_0233C1B8 - ldrsb r0, [r1, r0] - bx lr - .align 2, 0 -_023375CC: .word ov01_0233C1B8 - arm_func_end ov01_023375C0 - - arm_func_start ov01_023375D0 -ov01_023375D0: ; 0x023375D0 - ldr r2, _023375DC ; =ov01_0233C1B8 - strb r1, [r2, r0] - bx lr - .align 2, 0 -_023375DC: .word ov01_0233C1B8 - arm_func_end ov01_023375D0 - - arm_func_start ov01_023375E0 -ov01_023375E0: ; 0x023375E0 - ldr ip, _023375EC ; =InitMenu - ldr r0, _023375F0 ; =ov01_0233BCCC - bx ip - .align 2, 0 -_023375EC: .word InitMenu -_023375F0: .word ov01_0233BCCC - arm_func_end ov01_023375E0 - - arm_func_start ov01_023375F4 -ov01_023375F4: ; 0x023375F4 - stmdb sp!, {r3, lr} - ldr r0, _02337610 ; =ov01_0233BCDC - bl InitMenu - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov01_0232F3F4 - ldmia sp!, {r3, pc} - .align 2, 0 -_02337610: .word ov01_0233BCDC - arm_func_end ov01_023375F4 - - arm_func_start ov01_02337614 -ov01_02337614: ; 0x02337614 - ldr r1, _02337620 ; =ov01_0233C1D4 - ldrsb r0, [r1, r0] - bx lr - .align 2, 0 -_02337620: .word ov01_0233C1D4 - arm_func_end ov01_02337614 - - arm_func_start ov01_02337624 -ov01_02337624: ; 0x02337624 - ldr r2, _02337630 ; =ov01_0233C1D4 - strb r1, [r2, r0] - bx lr - .align 2, 0 -_02337630: .word ov01_0233C1D4 - arm_func_end ov01_02337624 - - arm_func_start ov01_02337634 -ov01_02337634: ; 0x02337634 - ldr ip, _02337640 ; =InitMenu - ldr r0, _02337644 ; =ov01_0233BCEC - bx ip - .align 2, 0 -_02337640: .word InitMenu -_02337644: .word ov01_0233BCEC - arm_func_end ov01_02337634 - - arm_func_start ov01_02337648 -ov01_02337648: ; 0x02337648 - ldr r1, _02337654 ; =ov01_0233C1E0 - ldrsb r0, [r1, r0] - bx lr - .align 2, 0 -_02337654: .word ov01_0233C1E0 - arm_func_end ov01_02337648 - - arm_func_start ov01_02337658 -ov01_02337658: ; 0x02337658 - ldr r2, _02337664 ; =ov01_0233C1E0 - strb r1, [r2, r0] - bx lr - .align 2, 0 -_02337664: .word ov01_0233C1E0 - arm_func_end ov01_02337658 - - arm_func_start ov01_02337668 -ov01_02337668: ; 0x02337668 - ldr ip, _02337674 ; =InitMenu - ldr r0, _02337678 ; =ov01_0233BCFC - bx ip - .align 2, 0 -_02337674: .word InitMenu -_02337678: .word ov01_0233BCFC - arm_func_end ov01_02337668 - - arm_func_start ov01_0233767C -ov01_0233767C: ; 0x0233767C - ldr r1, _02337688 ; =ov01_0233C1E8 - ldrsb r0, [r1, r0] - bx lr - .align 2, 0 -_02337688: .word ov01_0233C1E8 - arm_func_end ov01_0233767C - - arm_func_start ov01_0233768C -ov01_0233768C: ; 0x0233768C - ldr r2, _02337698 ; =ov01_0233C1E8 - strb r1, [r2, r0] - bx lr - .align 2, 0 -_02337698: .word ov01_0233C1E8 - arm_func_end ov01_0233768C - - arm_func_start ov01_0233769C -ov01_0233769C: ; 0x0233769C - stmdb sp!, {r3, lr} - mov r0, #0xa8 - mov r1, #8 - bl MemAlloc - ldr r2, _023376D8 ; =ov01_0233C1F4 - mov r1, #0xa8 - str r0, [r2] - bl MemZero - ldr r0, _023376D8 ; =ov01_0233C1F4 - mov r2, #0 - ldr r1, [r0] - str r2, [r1] - ldr r0, [r0] - str r2, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_023376D8: .word ov01_0233C1F4 - arm_func_end ov01_0233769C - - arm_func_start ov01_023376DC -ov01_023376DC: ; 0x023376DC - stmdb sp!, {r3, lr} - ldr r0, _02337714 ; =ov01_0233C1F4 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #1 - bl ov00_022BCBAC - ldr r0, _02337714 ; =ov01_0233C1F4 - ldr r0, [r0] - bl MemFree - ldr r0, _02337714 ; =ov01_0233C1F4 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02337714: .word ov01_0233C1F4 - arm_func_end ov01_023376DC - - arm_func_start ov01_02337718 -ov01_02337718: ; 0x02337718 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _023378E8 ; =ov01_0233C1F4 - ldr r4, [r0] - ldr r1, [r4] - cmp r1, #0x1000 - bgt _02337754 - bge _023377A4 - cmp r1, #1 - bgt _023378E0 - cmp r1, #0 - blt _023378E0 - beq _02337764 - cmp r1, #1 - beq _02337788 - b _023378E0 -_02337754: - ldr r0, _023378EC ; =0x00001001 - cmp r1, r0 - beq _023377BC - b _023378E0 -_02337764: - ldr r1, _023378F0 ; =0x00003760 - mov r0, #0x1c - mov r2, #0 - bl sub_02046BE8 - ldr r0, _023378E8 ; =ov01_0233C1F4 - mov r1, #1 - ldr r0, [r0] - str r1, [r0] - b _023378E0 -_02337788: - bl ov01_023378FC - cmp r0, #1 - ldreq r0, _023378E8 ; =ov01_0233C1F4 - moveq r1, #0x1000 - ldreq r0, [r0] - streq r1, [r0] - b _023378E0 -_023377A4: - mov r1, #0 - str r1, [r4, #4] - ldr r0, [r0] - ldr r1, _023378EC ; =0x00001001 - str r1, [r0] - b _023378E0 -_023377BC: - ldr r0, [r4, #4] - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _023378AC -_023377CC: ; jump table - b _023377E0 ; case 0 - b _023377FC ; case 1 - b _02337828 ; case 2 - b _02337888 ; case 3 - b _0233789C ; case 4 -_023377E0: - bl ov00_022BD780 - mov r0, #0 - ldr r1, _023378F4 ; =0x0000023B - mov r2, r0 - bl sub_02046BE8 - mov r0, #1 - str r0, [r4, #4] -_023377FC: - bl ov01_023378FC - cmp r0, #1 - bne _023378AC - mov r0, #0xe0 - mov r1, #0x88 - mov r2, #1 - bl sub_02029F88 - mov r0, #2 - str r0, [r4, #4] - bl sub_02003B94 - b _023378AC -_02337828: - mov r0, #3 - bl NoteSaveBase - mov r5, r0 - bl sub_02003BC8 - bl sub_02029FBC - cmp r5, #0 - bne _02337860 -#ifdef JAPAN - ldr r1, _02339168 ; =0x000004CD - mov r0, #0x1c -#else - mov r0, #0x1c - mov r1, #0x23c -#endif - mov r2, #0 - bl sub_02046BE8 - mov r0, #3 - str r0, [r4, #4] - b _023378AC -_02337860: - cmp r5, #1 - moveq r0, #3 - beq _023378B0 - ldr r1, _023378F8 ; =0x00000239 - mov r0, #0x1c - mov r2, #0 - bl sub_02046BE8 - mov r0, #4 - str r0, [r4, #4] - b _023378AC -_02337888: - bl ov01_023378FC - cmp r0, #1 - bne _023378AC - mov r0, #1 - b _023378B0 -_0233789C: - bl ov01_023378FC - cmp r0, #1 - moveq r0, #2 - beq _023378B0 -_023378AC: - mov r0, #0 -_023378B0: - cmp r0, #1 - bne _023378C8 - mov r0, #0 - bl ov00_022BD264 - mov r0, #3 - ldmia sp!, {r3, r4, r5, pc} -_023378C8: - cmp r0, #3 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #2 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} -_023378E0: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023378E8: .word ov01_0233C1F4 -_023378EC: .word 0x00001001 -#if defined(EUROPE) -_023378F0: .word 0x00003762 -_023378F4: .word 0x0000023B -_023378F8: .word 0x00000239 -#elif defined(JAPAN) -_023378F0: .word 0x000033E2 -_023378F4: .word 0x000004CC -_02339168: .word 0x000004CD -_023378F8: .word 0x000004CA -#else -_023378F0: .word 0x00003760 -_023378F4: .word 0x0000023B -_023378F8: .word 0x00000239 -#endif - arm_func_end ov01_02337718 - - arm_func_start ov01_023378FC -ov01_023378FC: ; 0x023378FC - stmdb sp!, {r3, lr} - bl sub_02046C78 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} - arm_func_end ov01_023378FC - - arm_func_start ov01_02337914 -ov01_02337914: ; 0x02337914 - ldr ip, _02337920 ; =InitMenu - ldr r0, _02337924 ; =ov01_0233BD0C - bx ip - .align 2, 0 -_02337920: .word InitMenu -_02337924: .word ov01_0233BD0C - arm_func_end ov01_02337914 - - arm_func_start ov01_02337928 -ov01_02337928: ; 0x02337928 - ldr r1, _02337934 ; =ov01_0233C1F8 - ldrsb r0, [r1, r0] - bx lr - .align 2, 0 -_02337934: .word ov01_0233C1F8 - arm_func_end ov01_02337928 - - arm_func_start ov01_02337938 -ov01_02337938: ; 0x02337938 - ldr r2, _02337944 ; =ov01_0233C1F8 - strb r1, [r2, r0] - bx lr - .align 2, 0 -_02337944: .word ov01_0233C1F8 - arm_func_end ov01_02337938 - - arm_func_start ov01_02337948 -ov01_02337948: ; 0x02337948 - stmdb sp!, {r4, lr} - bl sub_02046B04 - mov r4, r0 - mvn r1, #1 - cmp r4, r1 - moveq r4, #1 - beq _02337980 - sub r0, r1, #1 - cmp r4, r0 - moveq r4, #1 - beq _02337980 - add r0, r1, #1 - cmp r4, r0 - moveq r4, #0 -_02337980: - bl sub_02046BA0 - ldr r1, _02337994 ; =ov01_0233C210 - strb r0, [r1] - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_02337994: .word ov01_0233C210 - arm_func_end ov01_02337948 - - arm_func_start ov01_02337998 -ov01_02337998: ; 0x02337998 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r1 - cmp r3, #0 - movne r1, #0 - moveq r1, #0x1c - mov r1, r1, lsl #0x10 - sub r0, r0, #4 - mov r4, r2 - cmp r0, #0xa - mov r6, r1, lsr #0x10 - mov r7, #0 - addls pc, pc, r0, lsl #2 - b _02337AC4 -_023379CC: ; jump table - b _023379F8 ; case 0 - b _02337A00 ; case 1 - b _02337A10 ; case 2 - b _02337A20 ; case 3 - b _02337A30 ; case 4 - b _02337A40 ; case 5 - b _02337A50 ; case 6 - b _02337A60 ; case 7 - b _02337A78 ; case 8 - b _02337AA8 ; case 9 - b _02337AB8 ; case 10 -_023379F8: - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02337A00: - ldr r0, _02337AE4 ; =ov01_0233BD34 - bl Debug_Print0 - ldr r7, _02337AE8 ; =0x000036DA - b _02337AC4 -_02337A10: - ldr r0, _02337AEC ; =ov01_0233BD48 - bl Debug_Print0 - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_02337A20: - ldr r0, _02337AF0 ; =ov01_0233BD5C - bl Debug_Print0 - ldr r7, _02337AF4 ; =0x000036DB - b _02337AC4 -_02337A30: - ldr r0, _02337AF8 ; =ov01_0233BD70 - bl Debug_Print0 - ldr r7, _02337AFC ; =0x000036E2 - b _02337AC4 -_02337A40: - ldr r0, _02337B00 ; =ov01_0233BD90 - bl Debug_Print0 - ldr r7, _02337B04 ; =0x000036DC - b _02337AC4 -_02337A50: - ldr r0, _02337B08 ; =ov01_0233BDAC - bl Debug_Print0 - ldr r7, _02337B0C ; =0x000036E3 - b _02337AC4 -_02337A60: - ldr r0, _02337B10 ; =ov01_0233BDC8 - bl Debug_Print0 - cmp r5, #0 - ldrne r7, _02337B14 ; =0x000036DD - ldreq r7, _02337B18 ; =0x000036DE - b _02337AC4 -_02337A78: - ldr r0, _02337B1C ; =ov01_0233BDDC - bl Debug_Print0 - cmp r5, #0 - beq _02337AA0 - cmp r4, #2 - ldreq r7, _02337B20 ; =0x000036DF - beq _02337AC4 - cmp r4, #3 - ldreq r7, _02337B24 ; =0x000036E0 - b _02337AC4 -_02337AA0: - ldr r7, _02337B28 ; =0x000036E1 - b _02337AC4 -_02337AA8: - ldr r0, _02337B2C ; =ov01_0233BDF4 - bl Debug_Print0 - ldr r7, _02337B30 ; =0x000036E4 - b _02337AC4 -_02337AB8: - ldr r0, _02337B34 ; =ov01_0233BE0C - bl Debug_Print0 - ldr r7, _02337B38 ; =0x000036E5 -_02337AC4: - cmp r7, #0 - beq _02337ADC - mov r0, r6 - mov r1, r7 - mov r2, #0 - bl sub_02046BE8 -_02337ADC: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -#if defined(EUROPE) -#define OV01_02337998_OFFSET 2 -#elif defined(JAPAN) -#define OV01_02337998_OFFSET -0x37E -#else -#define OV01_02337998_OFFSET 0 -#endif -_02337AE4: .word ov01_0233BD34 -_02337AE8: .word 0x000036DA + OV01_02337998_OFFSET -_02337AEC: .word ov01_0233BD48 -_02337AF0: .word ov01_0233BD5C -_02337AF4: .word 0x000036DB + OV01_02337998_OFFSET -_02337AF8: .word ov01_0233BD70 -_02337AFC: .word 0x000036E2 + OV01_02337998_OFFSET -_02337B00: .word ov01_0233BD90 -_02337B04: .word 0x000036DC + OV01_02337998_OFFSET -_02337B08: .word ov01_0233BDAC -_02337B0C: .word 0x000036E3 + OV01_02337998_OFFSET -_02337B10: .word ov01_0233BDC8 -_02337B14: .word 0x000036DD + OV01_02337998_OFFSET -_02337B18: .word 0x000036DE + OV01_02337998_OFFSET -_02337B1C: .word ov01_0233BDDC -_02337B20: .word 0x000036DF + OV01_02337998_OFFSET -_02337B24: .word 0x000036E0 + OV01_02337998_OFFSET -_02337B28: .word 0x000036E1 + OV01_02337998_OFFSET -_02337B2C: .word ov01_0233BDF4 -_02337B30: .word 0x000036E4 + OV01_02337998_OFFSET -_02337B34: .word ov01_0233BE0C -_02337B38: .word 0x000036E5 + OV01_02337998_OFFSET - arm_func_end ov01_02337998 - - arm_func_start ov01_02337B3C -ov01_02337B3C: ; 0x02337B3C - mov ip, #0 - mov r3, ip - b _02337B58 -_02337B48: - ldrb r2, [r0, r3] - add r3, r3, #1 - add r2, ip, r2 - and ip, r2, #0xff -_02337B58: - cmp r3, r1 - blt _02337B48 - mov r0, ip - bx lr - arm_func_end ov01_02337B3C - - arm_func_start ov01_02337B68 -ov01_02337B68: ; 0x02337B68 - stmdb sp!, {r4, lr} - mov r4, r0 - add r0, r4, #4 - mov r1, #0x14 - bl ov01_02337B3C - ldrb r1, [r4] - cmp r1, #0x11 - movne r0, #2 - ldmneia sp!, {r4, pc} - ldrb r1, [r4, #3] - cmp r0, r1 - movne r0, #3 - moveq r0, #1 - ldmia sp!, {r4, pc} - arm_func_end ov01_02337B68 - - arm_func_start ov01_02337BA0 -ov01_02337BA0: ; 0x02337BA0 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r0, #0x60 - mov r1, #8 - bl MemAlloc - ldr r2, _02337C50 ; =ov01_0233C210 - mov r1, #0x60 - str r0, [r2, #4] - bl MemZero - ldr r0, _02337C50 ; =ov01_0233C210 - mov r2, #0 - ldr r1, [r0, #4] - mov ip, #2 - str r2, [r1] - ldr r1, [r0, #4] - str r2, [r1, #0x30] - ldr r5, [r0, #4] - add lr, r5, #8 -_02337BE8: - ldmia r4!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _02337BE8 - ldr r1, [r4] - mov r0, #1 - str r1, [lr] - mov r4, #0 - ldr r1, _02337C50 ; =ov01_0233C210 - str r4, [r5, #4] - ldr r3, [r1, #4] - sub r2, r0, #2 - strb r0, [r3, #0x3c] - ldr r3, [r1, #4] - strb r4, [r3, #0x3e] - ldr r3, [r1, #4] - str r4, [r3, #0x40] - ldr r3, [r1, #4] - str r4, [r3, #0x44] - ldr r3, [r1, #4] - str r4, [r3, #0x48] - ldr r3, [r1, #4] - str r4, [r3, #0x4c] - ldr r1, [r1, #4] - str r2, [r1, #0x50] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02337C50: .word ov01_0233C210 - arm_func_end ov01_02337BA0 - - arm_func_start ov01_02337C54 -ov01_02337C54: ; 0x02337C54 - stmdb sp!, {r3, lr} - ldr r0, _02337C8C ; =ov01_0233C210 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov01_0233893C - bl ov01_02338978 - ldr r0, _02337C8C ; =ov01_0233C210 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _02337C8C ; =ov01_0233C210 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02337C8C: .word ov01_0233C210 - arm_func_end ov01_02337C54 - - arm_func_start ov01_02337C90 -ov01_02337C90: ; 0x02337C90 - ldr r0, _02337CA8 ; =ov01_0233C210 - ldr r0, [r0, #4] - cmp r0, #0 - ldrne r0, [r0, #0x30] - moveq r0, #0 - bx lr - .align 2, 0 -_02337CA8: .word ov01_0233C210 - arm_func_end ov01_02337C90 - - arm_func_start ov01_02337CAC -ov01_02337CAC: ; 0x02337CAC - stmdb sp!, {r4, lr} - ldr r0, _02337CE0 ; =ov01_0233C210 - ldr r4, [r0, #4] - cmp r4, #0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #0x2c] - cmp r0, #0xb - ldmneia sp!, {r4, pc} - mov r0, #0x1e0 - bl ov01_0232B020 - mov r0, #1 - str r0, [r4, #0x2c] - ldmia sp!, {r4, pc} - .align 2, 0 -_02337CE0: .word ov01_0233C210 - arm_func_end ov01_02337CAC - - arm_func_start ov01_02337CE4 -ov01_02337CE4: ; 0x02337CE4 - ldr r0, _02337CFC ; =ov01_0233C210 - ldr r0, [r0, #4] - cmp r0, #0 - ldrneb r0, [r0, #0x3c] - moveq r0, #1 - bx lr - .align 2, 0 -_02337CFC: .word ov01_0233C210 - arm_func_end ov01_02337CE4 - - arm_func_start ov01_02337D00 -ov01_02337D00: ; 0x02337D00 - ldr r1, _02337D14 ; =ov01_0233C210 - ldr r1, [r1, #4] - cmp r1, #0 - strneb r0, [r1, #0x3c] - bx lr - .align 2, 0 -_02337D14: .word ov01_0233C210 - arm_func_end ov01_02337D00 - - arm_func_start ov01_02337D18 -ov01_02337D18: ; 0x02337D18 - ldr r1, _02337D2C ; =ov01_0233C210 - ldr r1, [r1, #4] - cmp r1, #0 - strneb r0, [r1, #0x3e] - bx lr - .align 2, 0 -_02337D2C: .word ov01_0233C210 - arm_func_end ov01_02337D18 - - arm_func_start ov01_02337D30 -ov01_02337D30: ; 0x02337D30 - stmdb sp!, {r3, lr} - ldr r1, _02337DCC ; =ov01_0233C210 - ldr r0, [r1, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov ip, #0 - str ip, [r0, #0x30] - ldr r0, [r1, #4] - mov r3, #1 - str ip, [r0, #4] - ldr r0, [r1, #4] - sub r2, r3, #2 - strb r3, [r0, #0x3c] - ldr r3, [r1, #4] - mov r0, #0x1e0 - strb ip, [r3, #0x3e] - ldr r3, [r1, #4] - str ip, [r3, #0x40] - ldr r3, [r1, #4] - str ip, [r3, #0x44] - ldr r3, [r1, #4] - str ip, [r3, #0x48] - ldr r3, [r1, #4] - str ip, [r3, #0x4c] - ldr r1, [r1, #4] - str r2, [r1, #0x50] - bl ov01_0232B020 - mov r0, #1 - bl ov01_0232B080 - bl ov01_0232C024 - ldr r0, _02337DCC ; =ov01_0233C210 - ldr r0, [r0, #4] - ldr r0, [r0, #0x18] - bl ov01_0232AED4 - ldr r0, _02337DCC ; =ov01_0233C210 - mov r1, #3 - ldr r0, [r0, #4] - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02337DCC: .word ov01_0233C210 - arm_func_end ov01_02337D30 - - arm_func_start ov01_02337DD0 -ov01_02337DD0: ; 0x02337DD0 - ldr r0, _02337E08 ; =ov01_0233C210 - ldr r1, [r0, #4] - cmp r1, #0 - bxeq lr - ldr r0, [r1, #0x30] - cmp r0, #4 - cmpne r0, #0 - moveq r0, #6 - streq r0, [r1, #0x30] - ldr r0, _02337E08 ; =ov01_0233C210 - mov r1, #9 - ldr r0, [r0, #4] - str r1, [r0] - bx lr - .align 2, 0 -_02337E08: .word ov01_0233C210 - arm_func_end ov01_02337DD0 - - arm_func_start ov01_02337E0C -ov01_02337E0C: ; 0x02337E0C - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - ldr r0, _02338844 ; =ov01_0233C210 - ldr sb, [r0, #4] - ldr r0, [sb] - cmp r0, #0xc - addls pc, pc, r0, lsl #2 - b _02338838 -_02337E2C: ; jump table - b _02337E60 ; case 0 - b _02337E7C ; case 1 - b _02337EFC ; case 2 - b _02337F28 ; case 3 - b _02337F44 ; case 4 - b _02337F58 ; case 5 - b _02337FAC ; case 6 - b _02338674 ; case 7 - b _0233868C ; case 8 - b _023386F4 ; case 9 - b _02338710 ; case 10 - b _02338768 ; case 11 - b _02338828 ; case 12 -_02337E60: - ldr r0, [sb, #0x28] - bl ov01_0232ADC0 - ldr r0, [sb, #0x18] - bl ov01_0232AED4 - mov r0, #1 - str r0, [sb] - b _02338838 -_02337E7C: - ldrb r0, [sb, #0x3e] - mov r1, #0xa0 - mov r2, #0 - cmp r0, #0 - mov r0, #0xe0 - bne _02337ED8 - bl ov01_0232C148 - mov r0, #0xec - mov r1, #0x1c - mov r2, #7 - mov r3, #6 - bl ov01_0232C3AC - ldr r1, _02338844 ; =ov01_0233C210 - mov r0, #0 - ldrsb r4, [r1] - ldr r2, _02338848 ; =ov01_0233BD1C - ldr r3, _0233884C ; =0x000036D8 - mov r1, r0 - str r4, [sp] - bl sub_02046A9C - mov r0, #2 - str r0, [sb] - b _02338838 -_02337ED8: - bl ov01_0232C148 - mov r0, #0xec - mov r1, #0x1c - mov r2, #7 - mov r3, #6 - bl ov01_0232C3AC - mov r0, #3 - str r0, [sb] - b _02338838 -_02337EFC: - bl ov01_02337948 - cmp r0, #2 - moveq r0, #3 - streq r0, [sb] - beq _02338838 - cmp r0, #3 - cmpne r0, #1 - bne _02338838 - bl ov01_0232B2CC - mov r0, #1 - b _0233883C -_02337F28: - mov r0, #0 - ldr r1, _02338850 ; =0x000036D9 - mov r2, r0 - bl sub_02046BE8 - mov r0, #4 - str r0, [sb] - b _02338838 -_02337F44: - bl sub_02046C78 - cmp r0, #0 - movne r0, #5 - strne r0, [sb] - b _02338838 -_02337F58: - bl sub_02003B94 - ldr r0, _02338844 ; =ov01_0233C210 - ldr r1, _02338854 ; =ov01_02338864 - ldr r2, [r0, #4] - mov r0, #0 - str r0, [r2, #0x2c] - bl ov01_0232B5D0 - ldr r0, _02338844 ; =ov01_0233C210 - mov r3, #0 - ldr r1, [r0, #4] - ldr r2, _02338858 ; =ov01_023389D4 - str r3, [r1, #0x34] - ldr r1, [r0, #4] - str r3, [r1, #0x38] - ldr r0, [r0, #4] - ldrh r1, [r0, #0x24] - ldr r0, [r0, #0x20] - bl ov01_0232B124 - mov r0, #6 - str r0, [sb] - b _02338838 -_02337FAC: - ldr r0, [sb, #4] - mov r5, #0 - add r0, sb, r0, lsl #2 - ldr r7, [r0, #0xc] - bl ov01_0232AF4C - mov r6, r0 - bl ov01_0232AFC4 - cmp r0, #0 - beq _0233800C - mov r0, r5 - bl ov01_0232B040 - ldr r0, _02338844 ; =ov01_0233C210 - ldr r1, [r0, #4] - ldr r0, [r1, #0x2c] - cmp r0, #5 - blt _02338000 - cmp r0, #0xb - ldrneb r0, [r1, #0x3d] - cmpne r0, #0 - movne r5, #1 - bne _02338580 -_02338000: - mov r0, #0xa - str r0, [sb, #0x2c] - b _0233809C -_0233800C: - bl ov01_0232BE4C - cmp r0, #0 - bne _02338060 - bl ov01_02337CE4 - cmp r0, #0 - beq _02338060 - add r1, sp, #0xc - mov r0, r5 - bl GetPressedButtons - ldrh r0, [sp, #0xc] - tst r0, #2 - bne _02338054 - bl sub_020467F0 - cmp r0, #0 - bne _02338054 - bl sub_02003B5C - cmp r0, #0 - beq _02338060 -_02338054: - bl ov01_0232BE08 - mov r0, #9 - str r0, [sb, #0x2c] -_02338060: - cmp r6, #5 - addls pc, pc, r6, lsl #2 - b _0233808C -_0233806C: ; jump table - b _0233808C ; case 0 - b _0233808C ; case 1 - b _02338084 ; case 2 - b _0233808C ; case 3 - b _0233808C ; case 4 - b _0233808C ; case 5 -_02338084: - mov r0, #0xa - str r0, [sb, #0x2c] -_0233808C: - bl ov01_0232C008 - cmp r0, #0xa - movge r0, #0xa - strge r0, [sb, #0x2c] -_0233809C: - sub fp, r6, #4 - b _02338574 -_023380A4: - ldr r0, [sb, #0x2c] - mov r5, #1 - cmp r0, #0xb - addls pc, pc, r0, lsl #2 - b _02338574 -_023380B8: ; jump table - b _023380E8 ; case 0 - b _02338104 ; case 1 - b _02338254 ; case 2 - b _023382A8 ; case 3 - b _023383DC ; case 4 - b _02338438 ; case 5 - b _02338474 ; case 6 - b _023384D4 ; case 7 - b _023384E8 ; case 8 - b _023384EC ; case 9 - b _02338528 ; case 10 - b _02338560 ; case 11 -_023380E8: - cmp r6, #0 - beq _023380F8 - cmp fp, #1 - bhi _02338574 -_023380F8: - mov r0, #1 - str r0, [sb, #0x2c] - b _02338574 -_02338104: - ldr r0, _02338844 ; =ov01_0233C210 - ldr sl, [r7] - ldr r0, [r0, #4] - add r1, sl, #0x21 - ldr r0, [r0, #0x40] - bic r8, r1, #0x1f - cmp r0, #0 - ldr r0, [r7, #4] - str r0, [sp, #4] - bne _023381F0 - mov r0, r8 - mov r1, #0xf - bl MemAlloc - mov r4, r0 - mov r0, r8 - mov r1, #8 - bl MemAlloc - ldr ip, _02338844 ; =ov01_0233C210 - ldr r1, [sp, #4] - ldr r3, [ip, #4] - mov r2, sl - str r0, [r3, #0x40] - ldr r3, [ip, #4] - add r0, r4, #2 - str r8, [r3, #0x44] - bl MemcpySimple - add r0, sl, #2 - sub r1, r8, sl - add r0, r4, r0 - sub r1, r1, #2 - bl MemZero - mov r3, #0 - mov r0, r3 - sub r2, r8, #2 - b _023381B0 -_02338190: - add r1, r4, r0 - ldrb sl, [r1, #3] - ldrb r1, [r1, #2] - add r0, r0, #2 - orr r1, r1, sl, lsl #8 - add r1, r3, r1 - mov r1, r1, lsl #0x10 - mov r3, r1, lsr #0x10 -_023381B0: - cmp r0, r2 - blo _02338190 - and r0, r3, #0xff - add r0, r0, r3, asr #8 - and r0, r0, #0xff - add r1, r4, #2 - strh r3, [r4] - bl sub_0204E02C - ldr r0, _02338844 ; =ov01_0233C210 - mov r1, r4 - ldr r0, [r0, #4] - mov r2, r8 - ldr r0, [r0, #0x40] - bl sub_0204DF54 - mov r0, r4 - bl MemFree -_023381F0: - ldr r0, _02338844 ; =ov01_0233C210 - ldr r1, [r7, #8] - ldr r0, [r0, #4] - add r1, r1, #0x21 - ldr r0, [r0, #0x48] - bic r4, r1, #0x1f - cmp r0, #0 - bne _02338230 - mov r0, r4 - mov r1, #8 - bl MemAlloc - ldr r1, _02338844 ; =ov01_0233C210 - ldr r2, [r1, #4] - str r0, [r2, #0x48] - ldr r0, [r1, #4] - str r4, [r0, #0x4c] -_02338230: - mov r1, #0 - strb r1, [sb, #0x54] - ldr r0, [sb, #0x18] - cmp r0, #1 - moveq r1, #0xa - str r1, [sb, #0x5c] - mov r0, #2 - str r0, [sb, #0x2c] - b _02338574 -_02338254: - bl ov01_0232AFB0 - cmp r0, #0 - beq _02338574 - ldr r0, [sb, #0x5c] - sub r0, r0, #1 - str r0, [sb, #0x5c] - cmp r0, #0 - bgt _02338574 - mov r0, #0 - bl ov01_02337D00 - bl ov01_0232B068 - ldr r1, [r7] - ldr r2, [r7, #0xc] - ldmib r7, {r0, r3} - bl ov01_0232B420 - cmp r0, #0 - movne r0, #0x258 - strne r0, [sb, #0x50] - movne r0, #3 - strne r0, [sb, #0x2c] - b _02338574 -_023382A8: - ldr r0, [sb, #0x50] - sub r0, r0, #1 - str r0, [sb, #0x50] - bl ov01_0232B00C - cmp r0, #0 - beq _023383AC - bl ov01_0232B068 - ldr r8, [r7, #8] - ldr r2, [sb, #0x4c] - ldr r4, [sb, #0x48] - mov r0, r8 - mov r1, #0xf - str r2, [sp, #8] - ldr sl, [r7, #0xc] - bl MemAlloc - mov r1, r4 - mov r4, r0 - mov r2, r8 - bl sub_0204DFB0 - ldrb r3, [r4] - ldrb r0, [r4, #1] - add r1, r4, #2 - sub r2, r8, #2 - add r0, r3, r0 - and r0, r0, #0xff - bl sub_0204E0A0 - mov r1, #0 - mov r0, r1 - sub r2, r8, #2 - b _02338340 -_02338320: - add r3, r4, r0 - ldrb r8, [r3, #3] - ldrb r3, [r3, #2] - add r0, r0, #2 - orr r3, r3, r8, lsl #8 - add r1, r1, r3 - mov r1, r1, lsl #0x10 - mov r1, r1, lsr #0x10 -_02338340: - cmp r0, r2 - blo _02338320 - ldrh r0, [r4] - cmp r1, r0 - beq _02338360 - mov r0, r4 - bl MemFree - b _02338378 -_02338360: - ldr r2, [sp, #8] - mov r0, sl - mov r1, r4 - bl MemcpySimple - mov r0, r4 - bl MemFree -_02338378: - ldr r1, [r7, #0x10] - cmp r1, #0 - moveq r0, #1 - beq _02338390 - ldr r0, [r7, #0xc] - blx r1 -_02338390: - str r0, [sb, #0x34] - mov r0, #0 - str r0, [sb, #0x38] - strb r0, [sb, #0x3d] - mov r0, #4 - str r0, [sb, #0x2c] - b _02338574 -_023383AC: - ldr r0, [sb, #0x50] - cmp r0, #0 - bgt _02338574 - ldrb r0, [sb, #0x54] - cmp r0, #0 - moveq r0, r5 - streqb r0, [sb, #0x54] - moveq r0, #2 - streq r0, [sb, #0x2c] - beq _02338574 - mov r5, #4 - b _02338580 -_023383DC: - ldr r0, [sb, #0x18] - cmp r0, #0 - bne _02338424 - ldr r0, [sb, #0x34] - add r2, sp, #0xe - strb r0, [sp, #0xe] - ldr r3, [sb, #0x38] - mov r0, #0 - mov r1, #3 - strb r3, [sp, #0xf] - strb r0, [sp, #0x10] - bl ov01_0232B540 - cmp r0, #0 - movne r0, #0x258 - strne r0, [sb, #0x50] - movne r0, #5 - strne r0, [sb, #0x2c] - b _02338574 -_02338424: - mov r0, #0x258 - str r0, [sb, #0x50] - mov r0, #5 - str r0, [sb, #0x2c] - b _02338574 -_02338438: - ldr r0, [sb, #0x50] - sub r0, r0, #1 - str r0, [sb, #0x50] - ldrb r0, [sb, #0x3d] - cmp r0, #0 - movne r0, #6 - strne r0, [sb, #0x2c] - movne r0, #0x3c - strne r0, [sb, #0x58] - bne _02338574 - ldr r0, [sb, #0x50] - cmp r0, #0 - bgt _02338574 - mov r5, #4 - b _02338580 -_02338474: - ldr r0, [sb, #0x58] - mov r1, #0xa - bl _s32_div_f - cmp r1, #0 - bne _023384B8 - ldr r0, _02338844 ; =ov01_0233C210 - add r2, sp, #0x11 - ldr r4, [r0, #4] - mov r3, r5 - ldr r1, [r4, #0x34] - mov r0, #0 - strb r1, [sp, #0x11] - ldr r4, [r4, #0x38] - mov r1, #3 - strb r4, [sp, #0x12] - strb r3, [sp, #0x13] - bl ov01_0232B540 -_023384B8: - ldr r0, [sb, #0x58] - sub r0, r0, #1 - str r0, [sb, #0x58] - cmp r0, #0 - movle r0, #7 - strle r0, [sb, #0x2c] - b _02338574 -_023384D4: - ldr r0, _0233885C ; =ov01_0233BE24 - bl Debug_Print0 - mov r0, #8 - str r0, [sb, #0x2c] - b _02338574 -_023384E8: - b _02338580 -_023384EC: - bl ov01_0232BDDC - cmp r0, #0 - beq _02338504 - bl ov01_0232BDF0 - mov r5, #2 - b _02338580 -_02338504: - bl ov01_0232BE4C - cmp r0, #0 - beq _0233851C - bl ov01_0232AFB0 - cmp r0, #0 - beq _02338574 -_0233851C: - mov r0, #0 - str r0, [sb, #0x2c] - b _02338574 -_02338528: - ldr r0, _02338860 ; =ov01_0233BE48 - bl Debug_Print0 - bl ov01_0232C008 - cmp r0, #0xa - beq _02338548 - cmp r0, #0xc - beq _02338550 - b _02338558 -_02338548: - mov r5, #4 - b _02338580 -_02338550: - mov r5, #3 - b _02338580 -_02338558: - mov r5, #3 - b _02338580 -_02338560: - bl sub_02003B5C - cmp r0, #0 - movne r5, #3 - moveq r5, #5 - b _02338580 -_02338574: - cmp r5, #0 - beq _023380A4 - mov r5, #0 -_02338580: - cmp r5, #1 - bne _023385FC - bl ov01_0233893C - bl ov01_02338978 - ldr r1, [sb, #4] - ldr r0, [sb, #8] - add r1, r1, #1 - cmp r1, r0 - blo _023385DC - mov r0, #0 - bl ov01_0232C040 - mov r0, #4 - str r0, [sb, #0x30] - bl ov01_023389B4 - cmp r0, #1 - bne _023385D0 - ldrb r0, [sb, #0x26] - cmp r0, #0 - movne r0, #7 - bne _023385D4 -_023385D0: - mov r0, #9 -_023385D4: - str r0, [sb] - b _023385EC -_023385DC: - mov r0, #0xe10 - bl ov01_0232B020 - mov r0, #0xb - str r0, [sb, #0x2c] -_023385EC: - ldr r0, [sb, #4] - add r0, r0, #1 - str r0, [sb, #4] - b _02338838 -_023385FC: - cmp r5, #5 - moveq r0, #0xf - beq _0233883C - cmp r5, #2 - bne _0233862C - bl ov01_0233893C - bl ov01_02338978 - mov r0, #5 - str r0, [sb, #0x30] - mov r0, #9 - str r0, [sb] - b _02338838 -_0233862C: - cmp r5, #4 - bne _02338650 - bl ov01_0233893C - bl ov01_02338978 - mov r0, #7 - str r0, [sb, #0x30] - mov r0, #9 - str r0, [sb] - b _02338838 -_02338650: - cmp r5, #3 - bne _02338838 - bl ov01_0233893C - bl ov01_02338978 - mov r0, #8 - str r0, [sb, #0x30] - mov r0, #9 - str r0, [sb] - b _02338838 -_02338674: - bl ov01_0232B18C - mov r0, #8 - str r0, [sb] - mov r0, #0x258 - str r0, [sb, #0x50] - b _02338838 -_0233868C: - bl ov01_0232AF4C - cmp r0, #2 - cmpne r0, #0 - beq _023386AC - cmp r0, #1 - movne r0, #0 - moveq r0, #1 - b _023386B4 -_023386AC: - bl ov01_0232B2CC - mov r0, #1 -_023386B4: - cmp r0, #0 - movne r0, #0xb - strne r0, [sb] - bne _02338838 - ldr r1, [sb, #0x50] - sub r0, r1, #1 - str r0, [sb, #0x50] - cmp r1, #0 - bge _02338838 - mov r0, #1 - bl ov01_0232B210 - mov r0, #0x258 - str r0, [sb, #0x50] - mov r0, #0xa - str r0, [sb] - b _02338838 -_023386F4: - mov r0, #0 - bl ov01_0232B210 - mov r0, #0xa - str r0, [sb] - mov r0, #0x258 - str r0, [sb, #0x50] - b _02338838 -_02338710: - bl ov01_0232AF4C - cmp r0, #2 - cmpne r0, #0 - movne r0, #0 - bne _0233872C - bl ov01_0232B2CC - mov r0, #1 -_0233872C: - cmp r0, #0 - beq _02338740 - bl sub_02003BC8 - mov r0, #0xb - str r0, [sb] -_02338740: - ldr r1, [sb, #0x50] - sub r0, r1, #1 - str r0, [sb, #0x50] - cmp r1, #0 - bge _02338838 - mov r0, #1 - bl ov01_0232B210 - mov r0, #0x258 - str r0, [sb, #0x50] - b _02338838 -_02338768: - ldr r0, [sb, #0x30] - ldr r4, [sb, #0x20] - cmp r0, #4 - bne _023387F8 - bl ov01_023389B4 - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _02338804 -_02338788: ; jump table - b _02338804 ; case 0 - b _023387A8 ; case 1 - b _023387B0 ; case 2 - b _023387BC ; case 3 - b _023387C8 ; case 4 - b _023387D4 ; case 5 - b _023387E0 ; case 6 - b _023387EC ; case 7 -_023387A8: - mov r0, #4 - b _0233883C -_023387B0: - mov r0, #9 - str r0, [sb, #0x30] - b _02338804 -_023387BC: - mov r0, #0xa - str r0, [sb, #0x30] - b _02338804 -_023387C8: - mov r0, #0xb - str r0, [sb, #0x30] - b _02338804 -_023387D4: - mov r0, #0xc - str r0, [sb, #0x30] - b _02338804 -_023387E0: - mov r0, #0xd - str r0, [sb, #0x30] - b _02338804 -_023387EC: - mov r0, #0xe - str r0, [sb, #0x30] - b _02338804 -_023387F8: - cmp r0, #6 - moveq r0, #6 - beq _0233883C -_02338804: - bl sub_02046BB4 - ldrb r1, [sb, #0x1c] - ldrb r2, [r4] - ldrb r3, [sb, #0x3e] - ldr r0, [sb, #0x30] - bl ov01_02337998 - mov r0, #0xc - str r0, [sb] - b _02338838 -_02338828: - bl sub_02046C78 - cmp r0, #0 - ldrne r0, [sb, #0x30] - bne _0233883C -_02338838: - mov r0, #0 -_0233883C: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02338844: .word ov01_0233C210 -_02338848: .word ov01_0233BD1C -#if defined(EUROPE) -_0233884C: .word 0x000036DA -_02338850: .word 0x000036DB -#elif defined(JAPAN) -_0233884C: .word 0x0000335A -_02338850: .word 0x0000335B -#else -_0233884C: .word 0x000036D8 -_02338850: .word 0x000036D9 -#endif -_02338854: .word ov01_02338864 -_02338858: .word ov01_023389D4 -_0233885C: .word ov01_0233BE24 -_02338860: .word ov01_0233BE48 - arm_func_end ov01_02337E0C - - arm_func_start ov01_02338864 -ov01_02338864: ; 0x02338864 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r2, _02338938 ; =ov01_0233C210 - mov r4, r1 - ldr r2, [r2, #4] - mov r0, #0 - ldr r1, [r2, #0x34] - strb r1, [sp] - ldr r1, [r2, #0x38] - strb r0, [sp, #2] - strb r1, [sp, #1] - ldrb r1, [r4] - ldr r3, [r2, #0x38] - cmp r3, r1 - ldreqb r1, [r4, #1] - ldreq r3, [r2, #0x34] - cmpeq r3, r1 - beq _023388F0 - ldr r0, _02338938 ; =ov01_0233C210 - mov r1, #0 - str r1, [r0, #8] - ldrb r1, [r4] - ldr r0, [r2, #0x38] - cmp r0, r1 - strne r1, [r2, #0x38] - add r2, sp, #0 - mov r0, #0 - mov r1, #3 - bl ov01_0232B540 - cmp r0, #0 - ldreq r0, _02338938 ; =ov01_0233C210 - moveq r1, #0xa - ldreq r0, [r0, #4] - streq r1, [r0, #0x2c] - b _02338930 -_023388F0: - ldrb r1, [r2, #0x3d] - cmp r1, #0 - bne _02338930 - mov r1, #1 - strb r1, [r2, #0x3d] - strb r1, [sp, #2] - add r2, sp, #0 - mov r1, #3 - bl ov01_0232B540 - ldrb r1, [r4, #2] - cmp r1, #0 - cmpeq r0, #0 - ldreq r0, _02338938 ; =ov01_0233C210 - moveq r1, #0xa - ldreq r0, [r0, #4] - streq r1, [r0, #0x2c] -_02338930: - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_02338938: .word ov01_0233C210 - arm_func_end ov01_02338864 - - arm_func_start ov01_0233893C -ov01_0233893C: ; 0x0233893C - stmdb sp!, {r3, lr} - ldr r0, _02338974 ; =ov01_0233C210 - ldr r0, [r0, #4] - ldr r0, [r0, #0x40] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _02338974 ; =ov01_0233C210 - mov r2, #0 - ldr r1, [r0, #4] - str r2, [r1, #0x40] - ldr r0, [r0, #4] - str r2, [r0, #0x44] - ldmia sp!, {r3, pc} - .align 2, 0 -_02338974: .word ov01_0233C210 - arm_func_end ov01_0233893C - - arm_func_start ov01_02338978 -ov01_02338978: ; 0x02338978 - stmdb sp!, {r3, lr} - ldr r0, _023389B0 ; =ov01_0233C210 - ldr r0, [r0, #4] - ldr r0, [r0, #0x48] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _023389B0 ; =ov01_0233C210 - mov r2, #0 - ldr r1, [r0, #4] - str r2, [r1, #0x48] - ldr r0, [r0, #4] - str r2, [r0, #0x4c] - ldmia sp!, {r3, pc} - .align 2, 0 -_023389B0: .word ov01_0233C210 - arm_func_end ov01_02338978 - - arm_func_start ov01_023389B4 -ov01_023389B4: ; 0x023389B4 - ldr r0, _023389D0 ; =ov01_0233C210 - ldr r1, [r0, #4] - ldr r0, [r1, #0x34] - ldr r1, [r1, #0x38] - cmp r0, r1 - movlt r0, r1 - bx lr - .align 2, 0 -_023389D0: .word ov01_0233C210 - arm_func_end ov01_023389B4 - - arm_func_start ov01_023389D4 -ov01_023389D4: ; 0x023389D4 - ldr r1, _02338A20 ; =ov01_0233C210 - ldrb r2, [r0, #0x4a] - ldr r1, [r1, #4] - cmp r2, #0 - ldr r2, [r1, #0x20] - moveq r0, #0 - bxeq lr - ldrb r1, [r0, #0x51] - cmp r1, #0 - ldrneb r1, [r2, #1] - cmpne r1, #0 - movne r0, #0 - bxne lr - ldrb r1, [r0, #0x50] - ldrb r0, [r2] - cmp r1, r0 - moveq r0, #1 - movne r0, #0 - bx lr - .align 2, 0 -_02338A20: .word ov01_0233C210 - arm_func_end ov01_023389D4 - - arm_func_start ov01_02338A24 -ov01_02338A24: ; 0x02338A24 -#ifdef JAPAN - stmdb sp!, {r3, lr} - sub sp, sp, #8 -#else - stmdb sp!, {lr} - sub sp, sp, #0xc -#endif - ldr r0, _02338B00 ; =0x00005004 - mov r1, #8 - bl MemAlloc - ldr r2, _02338B04 ; =ov01_0233C21C - ldr r1, _02338B00 ; =0x00005004 - str r0, [r2, #4] - bl MemZero - ldr r2, _02338B04 ; =ov01_0233C21C - mov r1, #0 - ldr r3, [r2, #4] - add r0, sp, #0 - str r1, [r3] - ldr r3, [r2, #4] - str r1, [r3, #0xc] - ldr r3, [r2, #4] - strb r1, [r3, #0x10] - ldr r3, [r2, #4] - strb r1, [r3, #0x11] - ldr r3, [r2, #4] - strb r1, [r3, #0x12] - ldr r3, [r2, #4] -#ifdef JAPAN - str r1, [r3, #0x24] - ldr r3, [r2, #4] - strb r1, [r3, #0x1e] - ldr r3, [r2, #4] - strb r1, [r3, #0x1f] - ldr r3, [r2, #4] - strb r1, [r3, #0x20] - ldr r3, [r2, #4] - strb r1, [r3, #0x21] - ldr r3, [r2, #4] - strb r1, [r3, #0x22] - ldr r3, [r2, #4] - str r1, [r3, #0x2c] - ldr r3, [r2, #4] - str r1, [r3, #0x30] - ldr r3, [r2, #4] - strb r1, [r3, #0x28] - ldr r2, [r2, #4] - add r2, r2, #0x4000 - str r1, [r2, #0xb50] -#else - str r1, [r3, #0x30] - ldr r3, [r2, #4] - strb r1, [r3, #0x28] - ldr r3, [r2, #4] - strb r1, [r3, #0x29] - ldr r3, [r2, #4] - strb r1, [r3, #0x2a] - ldr r3, [r2, #4] - strb r1, [r3, #0x2b] - ldr r3, [r2, #4] - strb r1, [r3, #0x2c] - ldr r3, [r2, #4] - str r1, [r3, #0x38] - ldr r3, [r2, #4] - str r1, [r3, #0x3c] - ldr r3, [r2, #4] - strb r1, [r3, #0x34] - ldr r2, [r2, #4] - add r2, r2, #0x4000 - str r1, [r2, #0xb5c] -#endif - bl GetMainTeamNameWithCheck - ldr r0, _02338B04 ; =ov01_0233C21C - add r1, sp, #0 - ldr r0, [r0, #4] -#ifdef JAPAN - mov r2, #5 - add r0, r0, #0x14 - bl StrcpyName -#else - mov r2, #0xa - add r0, r0, #0x14 - bl sub_02025404 -#endif - bl ov01_0233A840 - bl ov01_0232C0CC - bl ov01_0232C2E4 -#ifdef JAPAN - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_02338B00: .word 0x00004FF8 -#else - add sp, sp, #0xc - ldmia sp!, {pc} - .align 2, 0 -_02338B00: .word 0x00005004 -#endif -_02338B04: .word ov01_0233C21C - arm_func_end ov01_02338A24 - - arm_func_start ov01_02338B08 -ov01_02338B08: ; 0x02338B08 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x50 - ldr r0, _02338BE8 ; =ov01_0233C21C - ldr r0, [r0, #4] - cmp r0, #0 - beq _02338BDC - bl ov00_022BD274 - cmp r0, #0 - bne _02338BBC - mov r5, #0 - add r4, sp, #0 -_02338B34: - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - bl ov00_022BD2C0 - strb r0, [r4, r5] - add r5, r5, #1 - cmp r5, #0x10 - blt _02338B34 - ldr r0, _02338BE8 ; =ov01_0233C21C - mov r1, r4 - ldr r0, [r0, #4] - mov r2, #0x10 -#ifdef JAPAN - add r0, r0, #0x65 -#else - add r0, r0, #0x71 -#endif - add r0, r0, #0x4f00 - bl ov00_022BD1D4 - cmp r0, #0 - moveq r0, #1 - beq _02338BAC - add r0, sp, #0x10 - mov r1, #0x10 - bl ov00_022BD1A0 - ldr r0, _02338BE8 ; =ov01_0233C21C - add r1, sp, #0x10 - ldr r0, [r0, #4] - mov r2, #0x10 -#ifdef JAPAN - add r0, r0, #0x378 -#else - add r0, r0, #0x384 -#endif - add r0, r0, #0x4c00 - bl ov00_022BD21C - cmp r0, #0 - moveq r0, #1 - movne r0, #0 -_02338BAC: - cmp r0, #0 - beq _02338BBC - mov r0, #1 - bl ov00_022BD264 -_02338BBC: - bl ov01_0232C370 - bl ov01_0232C10C - ldr r0, _02338BE8 ; =ov01_0233C21C - ldr r0, [r0, #4] - bl MemFree - ldr r0, _02338BE8 ; =ov01_0233C21C - mov r1, #0 - str r1, [r0, #4] -_02338BDC: - bl ov00_022BD274 - add sp, sp, #0x50 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02338BE8: .word ov01_0233C21C - arm_func_end ov01_02338B08 - - arm_func_start ov01_02338BEC -ov01_02338BEC: ; 0x02338BEC - cmp r0, #0 - ldrne r0, _02338C24 ; =ov01_0233C21C - movne r2, #0xd - ldreq r0, _02338C24 ; =ov01_0233C21C - moveq r2, #0xb - ldreq ip, [r0, #4] - ldreq r3, [ip] - streq r3, [ip, #4] - ldr r0, [r0, #4] - str r2, [r0] - ldr r0, _02338C24 ; =ov01_0233C21C - ldr r0, [r0, #4] -#ifdef JAPAN - strb r1, [r0, #0x34] -#else - strb r1, [r0, #0x40] -#endif - bx lr - .align 2, 0 -_02338C24: .word ov01_0233C21C - arm_func_end ov01_02338BEC - - arm_func_start ov01_02338C28 -ov01_02338C28: ; 0x02338C28 - ldr ip, _02338C30 ; =ov01_02338BEC - bx ip - .align 2, 0 -_02338C30: .word ov01_02338BEC - arm_func_end ov01_02338C28 - - arm_func_start ov01_02338C34 -ov01_02338C34: ; 0x02338C34 - ldr r0, _02338C48 ; =ov01_0233C21C - mov r1, #0 - ldr r0, [r0, #4] - strb r1, [r0, #0x12] - bx lr - .align 2, 0 -_02338C48: .word ov01_0233C21C - arm_func_end ov01_02338C34 - - arm_func_start ov01_02338C4C -ov01_02338C4C: ; 0x02338C4C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r1 - cmp r0, #0xd - addls pc, pc, r0, lsl #2 - b _02338DA8 -_02338C60: ; jump table - b _02338C98 ; case 0 - b _02338CAC ; case 1 - b _02338CC0 ; case 2 - b _02338CD4 ; case 3 - b _02338CE8 ; case 4 - b _02338CFC ; case 5 - b _02338D10 ; case 6 - b _02338D24 ; case 7 - b _02338D38 ; case 8 - b _02338D4C ; case 9 - b _02338D60 ; case 10 - b _02338D74 ; case 11 - b _02338D88 ; case 12 - b _02338D9C ; case 13 -_02338C98: - ldr r4, _02338DE0 ; =ov01_0233BE88 - bl ov00_022BCCC8 - mov r1, r0 - mov r3, #0xa4 - b _02338DA8 -_02338CAC: - ldr r4, _02338DE4 ; =ov01_0233BEA4 - bl ov00_022BCCC8 - mov r1, r0 - mov r3, #0x98 - b _02338DA8 -_02338CC0: - ldr r4, _02338DE8 ; =ov01_0233BEC4 - bl ov00_022BCCC8 - mov r1, r0 - mov r3, #0x20 - b _02338DA8 -_02338CD4: - ldr r4, _02338DEC ; =ov01_0233BEE0 - bl ov00_022BCCC8 - mov r1, r0 - mov r3, #0xc - b _02338DA8 -_02338CE8: - ldr r4, _02338DF0 ; =ov01_0233BEFC - bl ov00_022BCCC8 - mov r1, r0 - mov r3, #0xc - b _02338DA8 -_02338CFC: - ldr r4, _02338DF4 ; =ov01_0233BF18 - bl ov00_022BCCC8 - mov r1, r0 - mov r3, #0xd4 - b _02338DA8 -_02338D10: - ldr r4, _02338DF8 ; =ov01_0233BF38 - bl ov00_022BCCC8 - mov r1, r0 - mov r3, #0xc - b _02338DA8 -_02338D24: - ldr r4, _02338DFC ; =ov01_0233BF54 - bl ov00_022BCCC8 - mov r1, r0 - mov r3, #0x7c - b _02338DA8 -_02338D38: - ldr r4, _02338E00 ; =ov01_0233BF74 - bl ov00_022BCCC8 - mov r1, r0 - mov r3, #0xc - b _02338DA8 -_02338D4C: - ldr r4, _02338E04 ; =ov01_0233BF94 - bl ov00_022BCCC8 - mov r1, r0 - mov r3, #0x10c - b _02338DA8 -_02338D60: - ldr r4, _02338E08 ; =ov01_0233BFB0 - bl ov00_022BCCC8 - mov r1, r0 - mov r3, #0x18 - b _02338DA8 -_02338D74: - ldr r4, _02338E0C ; =ov01_0233BFC8 - bl ov00_022BCCC8 - mov r1, r0 - mov r3, #0xc - b _02338DA8 -_02338D88: - ldr r4, _02338E10 ; =ov01_0233BFE0 - bl ov00_022BCCC8 - mov r1, r0 - mov r3, #0xc - b _02338DA8 -_02338D9C: - ldr r4, _02338E14 ; =ov01_0233BFF8 - mov r1, #0 - mov r3, #4 -_02338DA8: - mov ip, #0 - mov r0, r4 - mov r2, r5 - str ip, [sp] - bl ov01_0233A05C - cmp r0, #1 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _02338E18 ; =ov01_0233C21C - mov r2, #0x11 - ldr r1, [r0, #4] - mov r0, #1 - str r2, [r1] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02338DE0: .word ov01_0233BE88 -_02338DE4: .word ov01_0233BEA4 -_02338DE8: .word ov01_0233BEC4 -_02338DEC: .word ov01_0233BEE0 -_02338DF0: .word ov01_0233BEFC -_02338DF4: .word ov01_0233BF18 -_02338DF8: .word ov01_0233BF38 -_02338DFC: .word ov01_0233BF54 -_02338E00: .word ov01_0233BF74 -_02338E04: .word ov01_0233BF94 -_02338E08: .word ov01_0233BFB0 -_02338E0C: .word ov01_0233BFC8 -_02338E10: .word ov01_0233BFE0 -_02338E14: .word ov01_0233BFF8 -_02338E18: .word ov01_0233C21C - arm_func_end ov01_02338C4C - - arm_func_start ov01_02338E1C -ov01_02338E1C: ; 0x02338E1C - cmp r0, #0 - ldrne r1, _02338E44 ; =ov01_0233C21C - ldrne r1, [r1, #4] -#ifdef JAPAN - ldrne r1, [r1, #0xb48] -#else - ldrne r1, [r1, #0xb54] -#endif - strne r1, [r0] - ldr r0, _02338E44 ; =ov01_0233C21C - ldr r0, [r0, #4] -#ifdef JAPAN - add r0, r0, #0x34c -#else - add r0, r0, #0x358 -#endif - add r0, r0, #0x800 - bx lr - .align 2, 0 -_02338E44: .word ov01_0233C21C - arm_func_end ov01_02338E1C - - arm_func_start ov01_02338E48 -ov01_02338E48: ; 0x02338E48 - ldr ip, _02338E50 ; =ov01_0233A318 - bx ip - .align 2, 0 -_02338E50: .word ov01_0233A318 - arm_func_end ov01_02338E48 - - arm_func_start ov01_02338E54 -ov01_02338E54: ; 0x02338E54 - ldr r0, _02338E64 ; =ov01_0233C21C - ldr r0, [r0, #4] -#ifdef JAPAN - ldr r0, [r0, #0x3c] -#else - ldr r0, [r0, #0x48] -#endif - bx lr - .align 2, 0 -_02338E64: .word ov01_0233C21C - arm_func_end ov01_02338E54 - - arm_func_start ov01_02338E68 -ov01_02338E68: ; 0x02338E68 - ldr r2, _02338EAC ; =ov01_0233C21C - ldr r3, [r2, #4] -#ifdef JAPAN - ldr r2, [r3, #0x3c] -#else - ldr r2, [r3, #0x48] -#endif - cmp r0, r2 - movge r0, #0 - bxge lr - cmp r1, #0 - movne r2, #0xb0 - mlane r2, r0, r2, r3 -#ifdef JAPAN - ldrne r2, [r2, #0xf0] -#else - ldrne r2, [r2, #0xfc] -#endif - strne r2, [r1] - ldr r1, _02338EAC ; =ov01_0233C21C - ldr r1, [r1, #4] -#ifdef JAPAN - add r1, r1, #0x34c -#else - add r1, r1, #0x358 -#endif - add r1, r1, #0x800 - add r0, r1, r0, lsl #10 - bx lr - .align 2, 0 -_02338EAC: .word ov01_0233C21C - arm_func_end ov01_02338E68 - - arm_func_start ov01_02338EB0 -ov01_02338EB0: ; 0x02338EB0 - ldr r0, _02338EC0 ; =ov01_0233C21C - ldr r0, [r0, #4] -#ifdef JAPAN - ldrb r0, [r0, #0x22] -#else - ldrb r0, [r0, #0x2c] -#endif - bx lr - .align 2, 0 -_02338EC0: .word ov01_0233C21C - arm_func_end ov01_02338EB0 - - arm_func_start ov01_02338EC4 -ov01_02338EC4: ; 0x02338EC4 -#ifdef JAPAN -#define OV01_02338EC4_LOAD_OFFSET -0xC -#define OV01_02338EC4_LOAD_OFFSET_2 -0xA -#else -#define OV01_02338EC4_LOAD_OFFSET 0 -#define OV01_02338EC4_LOAD_OFFSET_2 0 -#endif - stmdb sp!, {r4, r5, lr} -#ifdef EUROPE - sub sp, sp, #0x274 -#else - sub sp, sp, #0x1dc -#endif - ldr r0, _02339804 ; =ov01_0233C21C - ldr r4, [r0, #4] - bl ov01_023399D8 - cmp r0, #2 - bne _02338F14 - ldr r0, [r4] - cmp r0, #0xa - moveq r0, #1 - streqb r0, [r4, #0x12] - ldr r0, [r4] - cmp r0, #0x1a - blt _02338F04 - cmp r0, #0x1f - ble _02338F14 -_02338F04: - ldr r1, [r4] - mov r0, #0x1a - str r1, [r4, #8] - str r0, [r4] -_02338F14: - ldrb r0, [r4, #0x34 + OV01_02338EC4_LOAD_OFFSET] - cmp r0, #0 - beq _02338F40 - bl ov00_022BDC6C - add r0, r0, #6 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl ov01_0232C1D8 - mov r0, #0 - mov r1, r0 - bl ov01_0232C454 -_02338F40: - ldrb r0, [r4, #0x12] - cmp r0, #0 - movne r0, #5 - bne _023397FC - ldr r0, [r4] - cmp r0, #0x21 - addls pc, pc, r0, lsl #2 - b _023397F8 -_02338F60: ; jump table - b _02338FE8 ; case 0 - b _023390F4 ; case 1 - b _0233911C ; case 2 - b _0233915C ; case 3 - b _023391BC ; case 4 - b _023391F0 ; case 5 - b _02339218 ; case 6 - b _02339240 ; case 7 - b _02339254 ; case 8 - b _0233926C ; case 9 - b _02339280 ; case 10 - b _02339288 ; case 11 - b _023392B0 ; case 12 - b _02339308 ; case 13 - b _02339328 ; case 14 - b _0233933C ; case 15 - b _02339368 ; case 16 - b _02339394 ; case 17 - b _023393D8 ; case 18 - b _0233941C ; case 19 - b _0233943C ; case 20 - b _023394B4 ; case 21 - b _023395A8 ; case 22 - b _023395D4 ; case 23 - b _023395F4 ; case 24 - b _02339608 ; case 25 - b _0233961C ; case 26 - b _02339728 ; case 27 - b _0233973C ; case 28 - b _02339750 ; case 29 - b _02339778 ; case 30 - b _023397C8 ; case 31 - b _023397D8 ; case 32 - b _023397E8 ; case 33 -_02338FE8: - bl sub_0204A1CC - bl ov00_022BCA80 - cmp r0, #3 - bne _02339024 - mov r0, #0xe - str r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] - mov r0, #1 - str r0, [r4, #0x3c + OV01_02338EC4_LOAD_OFFSET] - mov r0, #8 - str r0, [r4, #0x30 + OV01_02338EC4_LOAD_OFFSET] - mov r0, #0x1a - str r0, [r4] - mov r0, #0 - str r0, [r4, #8] - b _023397F8 -_02339024: - mov r0, #0xe0 - mov r1, #0xa0 - mov r2, #1 - bl ov01_0232C148 - mov r0, #0xec - mov r1, #0x1c - mov r2, #7 - mov r3, #6 - bl ov01_0232C3AC - bl ov00_022BCCAC - cmp r0, #0 - bne _02339080 - ldr r0, _02339804 ; =ov01_0233C21C - ldr r2, _02339808 ; =ov01_0233BE70 - ldrsb r5, [r0, #1] - ldr r3, _0233980C ; =0x0000375D - mov r0, #0 - mov r1, #8 - str r5, [sp] - bl sub_02046A9C - mov r0, #2 - str r0, [r4] - b _023397F8 -_02339080: - bl ov00_022BCCF4 - cmp r0, #0 - bne _023390C8 - mov r0, #1 -#ifdef EUROPE - str r0, [sp, #0x13c] -#else - str r0, [sp, #0xa4] -#endif - ldr r1, _02339808 ; =ov01_0233BE70 - ldr r0, _02339810 ; =0x0000375E - str r1, [sp] - str r0, [sp, #4] - mov r0, #0 -#ifdef EUROPE - add r3, sp, #0x13c -#else - add r3, sp, #0xa4 -#endif - mov r1, #8 - mov r2, #0x33 - str r0, [sp, #8] - bl sub_02046A20 - mov r0, #3 - str r0, [r4] - b _023397F8 -_023390C8: - ldr r1, _02339804 ; =ov01_0233C21C - mov r0, #0 - ldrsb r5, [r1] - ldr r2, _02339808 ; =ov01_0233BE70 - ldr r3, _02339814 ; =0x0000375C - mov r1, r0 - str r5, [sp] - bl sub_02046A9C - mov r0, #1 - str r0, [r4] - b _023397F8 -_023390F4: - bl ov01_02339838 - cmp r0, #2 - moveq r0, #5 - streq r0, [r4] - beq _023397F8 - cmp r0, #3 - cmpne r0, #1 - moveq r0, #0x20 - streq r0, [r4] - b _023397F8 -_0233911C: - bl ov01_02339860 - cmp r0, #2 - bne _02339148 - add r0, r4, #0x3c4 + OV01_02338EC4_LOAD_OFFSET - add r0, r0, #0x4c00 - bl ov00_022BCD10 - mov r0, #1 - strb r0, [r4, #0x11] - mov r0, #5 - str r0, [r4] - b _023397F8 -_02339148: - cmp r0, #3 - cmpne r0, #1 - moveq r0, #0x20 - streq r0, [r4] - b _023397F8 -_0233915C: - bl sub_02046B04 - bl ov01_023399A8 - cmp r0, #2 - bne _023391A8 - mov r0, #1 -#ifdef EUROPE - str r0, [sp, #0xa4] -#else - str r0, [sp, #0xc] -#endif - ldr r1, _02339808 ; =ov01_0233BE70 - ldr r0, _02339818 ; =0x0000375F - str r1, [sp] - str r0, [sp, #4] - mov r0, #0 -#ifdef EUROPE - add r3, sp, #0xa4 -#else - add r3, sp, #0xc -#endif - mov r1, #8 - mov r2, #0x33 - str r0, [sp, #8] - bl sub_02046A20 - mov r0, #4 - str r0, [r4] - b _023397F8 -_023391A8: - cmp r0, #3 - cmpne r0, #1 - moveq r0, #0x20 - streq r0, [r4] - b _023397F8 -_023391BC: - bl sub_02046B04 - bl ov01_023399A8 - cmp r0, #2 - moveq r0, #1 - streqb r0, [r4, #0x10] - moveq r0, #5 - streq r0, [r4] - beq _023397F8 - cmp r0, #3 - cmpne r0, #1 -#ifdef EUROPE - bne _023397F8 - mov r0, #1 - str r0, [sp, #0xc] - ldr r1, _02339808 ; =ov01_0233BE70 - ldr r0, _02339810 ; =0x00003760 - str r1, [sp] - str r0, [sp, #4] - mov r0, #0 - add r3, sp, #0xc - mov r1, #8 - mov r2, #0x33 - str r0, [sp, #8] - bl sub_02046A20 - mov r0, #3 - str r0, [r4] -#else - moveq r0, #0x20 - streq r0, [r4] -#endif - b _023397F8 -_023391F0: - mov r0, #0 - ldr r1, _0233981C ; =0x00003761 - mov r2, r0 - bl sub_02046BE8 - mov r0, #1 - strb r0, [r4, #0x34 + OV01_02338EC4_LOAD_OFFSET] - bl sub_02003B94 - mov r0, #6 - str r0, [r4] - b _023397F8 -_02339218: - bl sub_02046C78 - cmp r0, #0 - beq _023397F8 - ldr r0, _02339804 ; =ov01_0233C21C - mov r2, #1 - ldr r1, [r0, #4] - mov r0, #7 - str r2, [r1, #0xc] - str r0, [r4] - b _023397F8 -_02339240: - ldrb r0, [r4, #0x2a + OV01_02338EC4_LOAD_OFFSET_2] - cmp r0, #0 - movne r0, #0xa - strne r0, [r4] - b _023397F8 -_02339254: - ldr r1, _02339820 ; =0x00003765 - mov r0, #0x1c - mov r2, #0 - bl sub_02046BE8 - mov r0, #9 - str r0, [r4] -_0233926C: - bl sub_02046C78 - cmp r0, #0 - movne r0, #7 - strne r0, [r4] - b _023397F8 -_02339280: - mov r0, #4 - b _023397FC -_02339288: - ldr r2, _02339808 ; =ov01_0233BE70 - mov r5, #1 - ldr r3, _02339824 ; =0x00003762 - mov r0, #0 - mov r1, #8 - str r5, [sp] - bl sub_02046A9C - mov r0, #0xc - str r0, [r4] - b _023397F8 -_023392B0: - bl sub_02046B04 - bl ov01_023399A8 - cmp r0, #2 - moveq r0, #0xd - streq r0, [r4] - beq _023397F8 - cmp r0, #3 - cmpne r0, #1 - bne _023397F8 - bl ov01_02339958 - ldr r0, [r4, #4] - sub r0, r0, #0x11 - cmp r0, #1 - bhi _023392FC - add r0, r4, #0x61 + OV01_02338EC4_LOAD_OFFSET - add r1, r0, #0x4b00 - mov r0, #0x400 - mov r2, #0 - bl sub_02046C30 -_023392FC: - ldr r0, [r4, #4] - str r0, [r4] - b _023397F8 -_02339308: - mov r0, #0 - ldr r1, _02339828 ; =0x00003763 - mov r2, r0 - bl sub_02046BE8 - bl ov01_02339F80 - mov r0, #0xe - str r0, [r4] - b _023397F8 -_02339328: - bl sub_02046C78 - cmp r0, #0 - movne r0, #0xf - strne r0, [r4] - b _023397F8 -_0233933C: - ldrb r0, [r4, #0x28 + OV01_02338EC4_LOAD_OFFSET_2] - cmp r0, #0 - bne _023397F8 -#ifdef NORTH_AMERICA - mov r0, #0x1c - rsb r1, r0, #0x3780 -#else - ldr r1, _02339F74 ; =0x00003766 - mov r0, #0x1c -#endif - mov r2, #0 - bl sub_02046BE8 - bl sub_02003BC8 - mov r0, #0x10 - str r0, [r4] - b _023397F8 -_02339368: - bl sub_02046C78 - cmp r0, #0 - beq _023397F8 - ldrb r0, [r4, #0x40 + OV01_02338EC4_LOAD_OFFSET] - cmp r0, #0 - mov r0, #0x21 - strne r0, [r4, #4] - movne r0, #0x13 - strne r0, [r4] - streq r0, [r4] - b _023397F8 -_02339394: - ldr r0, [r4, #0xc] - cmp r0, #9 - moveq r0, #0xa - streq r0, [r4] - beq _023397F8 - bl ov01_023398F0 - cmp r0, #0 - beq _023397F8 - bl ov01_02339928 - add r0, r4, #0x61 + OV01_02338EC4_LOAD_OFFSET - add r0, r0, #0x4b00 - mov r1, #0x400 - bl sub_02046D44 - mov r0, #0 - mov r1, r0 - bl ov01_02338BEC - b _023397F8 -_023393D8: - ldr r0, [r4, #0xc] - cmp r0, #9 - moveq r0, #0xa - streq r0, [r4] - beq _023397F8 - bl ov01_023398F0 - cmp r0, #0 - beq _023397F8 - bl ov01_02339928 - add r0, r4, #0x61 + OV01_02338EC4_LOAD_OFFSET - add r0, r0, #0x4b00 - mov r1, #0x400 - bl sub_02046D44 - mov r0, #0 - mov r1, r0 - bl ov01_02338BEC - b _023397F8 -_0233941C: - bl ov00_022BD780 - mov r0, #0 - ldr r1, _0233982C ; =0x0000023B - mov r2, r0 - bl sub_02046BE8 - mov r0, #0x14 - str r0, [r4] - b _023397F8 -_0233943C: - bl sub_02046C78 - cmp r0, #0 - beq _023397F8 - ldrb r0, [r4, #0x34 + OV01_02338EC4_LOAD_OFFSET] - cmp r0, #0 - beq _02339460 - mov r0, #0 - mov r1, r0 - bl ov01_0232C454 -_02339460: - mov r0, #0xe0 - mov r1, #0x88 - mov r2, #1 - bl sub_02029F88 - mov r0, #0x15 - str r0, [r4] - ldrb r0, [r4, #0x10] - cmp r0, #0 - beq _023394B4 - bl ov00_022BD3F4 - bl sub_0205B80C - mov r0, #0 - bl sub_0205B77C - mov r1, #0 - str r1, [r0, #0xc] - str r1, [r0, #0x10] - mov r0, r1 - bl sub_020590DC - bl ov00_022BD4EC - mov r0, #0 - strb r0, [r4, #0x10] -_023394B4: - mov r0, #3 - bl NoteSaveBase - mov r5, r0 - bl sub_02029FBC - cmp r5, #0 - bne _023394FC - ldrb r1, [r4, #0x11] - mov r0, #0x1c - mov r2, #0 - cmp r1, #0 - movne r0, #0 -#ifdef JAPAN - ldr r1, _0233B0A8 ; =0x000004CD -#else - mov r1, #0x23c -#endif - strneb r0, [r4, #0x11] - bl sub_02046BE8 - bl ov01_0233A840 - mov r0, #0x16 - str r0, [r4] - b _023397F8 -_023394FC: - cmp r5, #1 - ldr r0, [r4, #0xc] - bne _02339554 - cmp r0, #6 - bne _02339534 - mov r0, #0x10 - str r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] - mov r0, #7 - str r0, [r4, #0x3c + OV01_02338EC4_LOAD_OFFSET] - mov r0, #8 - str r0, [r4, #0x30 + OV01_02338EC4_LOAD_OFFSET] - mov r0, #0x1a - str r0, [r4] - b _023397F8 -_02339534: - mov r0, #0x400 -#ifdef JAPAN - add r1, r0, #0xc9 -#else - mov r1, #0x238 -#endif - mov r2, #0 - bl sub_02046BE8 - bl ov01_0232C540 - mov r0, #0x19 - str r0, [r4] - b _023397F8 -_02339554: - cmp r0, #6 - bne _02339580 - mov r0, #0xf - str r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] - mov r0, #6 - str r0, [r4, #0x3c + OV01_02338EC4_LOAD_OFFSET] - mov r0, #8 - str r0, [r4, #0x30 + OV01_02338EC4_LOAD_OFFSET] - mov r0, #0x1a - str r0, [r4] - b _023397F8 -_02339580: - ldrb r1, [r4, #0x11] - mov r0, #0x1c - mov r2, #0 - cmp r1, #0 - ldr r1, _02339830 ; =0x00000239 - movne r0, #0 - bl sub_02046BE8 - mov r0, #0x18 - str r0, [r4] - b _023397F8 -_023395A8: - bl sub_02046C78 - cmp r0, #0 - beq _023397F8 - ldr r0, _02339804 ; =ov01_0233C21C - mov r2, #0x3c - ldr r0, [r0, #4] - mov r1, #0x17 - add r0, r0, #0x4000 - str r2, [r0, #0xb5c + OV01_02338EC4_LOAD_OFFSET] - str r1, [r4] - b _023397F8 -_023395D4: - add r0, r4, #0x4000 - ldr r1, [r0, #0xb5c + OV01_02338EC4_LOAD_OFFSET] - sub r1, r1, #1 - str r1, [r0, #0xb5c + OV01_02338EC4_LOAD_OFFSET] - cmp r1, #0 - ldrle r0, [r4, #4] - strle r0, [r4] - b _023397F8 -_023395F4: - bl sub_02046C78 - cmp r0, #0 - beq _023397F8 - mov r0, #8 - b _023397FC -_02339608: - bl sub_02046C78 - cmp r0, #0 - beq _023397F8 - bl CardBackupError -_02339618: - b _02339618 -_0233961C: -#ifdef EUROPE - add r0, sp, #0x224 -#else - add r0, sp, #0x18c -#endif - bl InitPreprocessorArgs - ldr r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] - rsb r0, r0, #0 -#ifdef EUROPE - str r0, [sp, #0x248] -#else - str r0, [sp, #0x1b0] -#endif - bl sub_02046BB4 - ldr r0, [r4, #0x3c + OV01_02338EC4_LOAD_OFFSET] - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _023397F8 -_02339644: ; jump table - b _02339664 ; case 0 - b _02339670 ; case 1 - b _02339670 ; case 2 - b _0233969C ; case 3 - b _0233969C ; case 4 - b _0233969C ; case 5 - b _0233969C ; case 6 - b _023396EC ; case 7 -_02339664: - ldr r0, [r4, #8] - str r0, [r4] - b _023397F8 -_02339670: - bl ov00_022BDE24 - ldr r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] - mov r1, #0 - bl ov01_0233A8B4 - mov r1, r0 -#ifdef EUROPE - add r2, sp, #0x224 -#else - add r2, sp, #0x18c -#endif - mov r0, #0x1c - bl sub_02046BE8 - mov r0, #0x1b - str r0, [r4] - b _023397F8 -_0233969C: - bl ov01_02339F80 - ldrb r0, [r4, #0x11] - cmp r0, #0 - beq _023396C0 - add r0, r4, #0x3c4 + OV01_02338EC4_LOAD_OFFSET - add r0, r0, #0x4c00 - bl ov00_022BCD2C - mov r0, #0 - strb r0, [r4, #0x11] -_023396C0: - bl ov00_022BDE24 - ldr r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] - mov r1, #1 - bl ov01_0233A8B4 - mov r1, r0 -#ifdef EUROPE - add r2, sp, #0x224 -#else - add r2, sp, #0x18c -#endif - mov r0, #0x1c - bl sub_02046BE8 - mov r0, #0x1c - str r0, [r4] - b _023397F8 -_023396EC: - ldr r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] - mov r1, #1 - cmp r0, #0x10 - moveq r5, #0x400 - movne r5, #0x1c - bl ov01_0233A8B4 - mov r3, r5, lsl #0x10 - mov r1, r0 -#ifdef EUROPE - add r2, sp, #0x224 -#else - add r2, sp, #0x18c -#endif - mov r0, r3, lsr #0x10 - bl sub_02046BE8 - bl ov01_0232C540 - mov r0, #0x1e - str r0, [r4] - b _023397F8 -_02339728: - bl sub_02046C78 - cmp r0, #0 - ldrne r0, [r4, #8] - strne r0, [r4] - b _023397F8 -_0233973C: - bl sub_02046C78 - cmp r0, #0 - movne r0, #0x1d - strne r0, [r4] - b _023397F8 -_02339750: - ldrb r0, [r4, #0x28 + OV01_02338EC4_LOAD_OFFSET_2] - cmp r0, #0 - bne _023397F8 - mov r0, #0 - bl ov00_022BCBAC - bl sub_02003BC8 - ldr r0, [r4, #0x30 + OV01_02338EC4_LOAD_OFFSET] - cmp r0, #0 - moveq r0, #8 - b _023397FC -_02339778: - bl sub_02046C78 - cmp r0, #0 - beq _023397F8 - ldr r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] - cmp r0, #0x10 - bne _02339798 - bl CardBackupError -_02339794: - b _02339794 -_02339798: -#ifdef EUROPE - add r0, sp, #0x1d4 -#else - add r0, sp, #0x13c -#endif - bl InitPreprocessorArgs - ldr r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] - ldr r1, _02339834 ; =0x00003785 - rsb r3, r0, #0 -#ifdef EUROPE - add r2, sp, #0x1d4 - mov r0, #0 - str r3, [sp, #0x1f8] -#else - add r2, sp, #0x13c - mov r0, #0 - str r3, [sp, #0x160] -#endif - bl sub_02046BE8 - mov r0, #0x1f - str r0, [r4] - b _023397F8 -_023397C8: - bl sub_02046C78 - cmp r0, #0 - beq _023397F8 -_023397D4: - b _023397D4 -_023397D8: - mov r0, #0 - bl ov00_022BCBAC - mov r0, #1 - b _023397FC -_023397E8: - mov r0, #0 - bl ov00_022BCBAC - mov r0, #6 - b _023397FC -_023397F8: - mov r0, #0 -_023397FC: -#ifdef EUROPE - add sp, sp, #0x274 -#else - add sp, sp, #0x1dc -#endif - ldmia sp!, {r4, r5, pc} - .align 2, 0 -#if defined(EUROPE) -#define OV01_02338EC4_DATA_OFFSET 2 -#elif defined(JAPAN) -#define OV01_02338EC4_DATA_OFFSET -0x37E -#else -#define OV01_02338EC4_DATA_OFFSET 0 -#endif -_02339804: .word ov01_0233C21C -_02339808: .word ov01_0233BE70 -_0233980C: .word 0x0000375D + OV01_02338EC4_DATA_OFFSET -_02339810: .word 0x0000375E + OV01_02338EC4_DATA_OFFSET -_02339814: .word 0x0000375C + OV01_02338EC4_DATA_OFFSET -_02339818: .word 0x0000375F + OV01_02338EC4_DATA_OFFSET -_0233981C: .word 0x00003761 + OV01_02338EC4_DATA_OFFSET -_02339820: .word 0x00003765 + OV01_02338EC4_DATA_OFFSET -_02339824: .word 0x00003762 + OV01_02338EC4_DATA_OFFSET -_02339828: .word 0x00003763 + OV01_02338EC4_DATA_OFFSET -#if defined(EUROPE) -_02339F74: .word 0x00003766 -#elif defined(JAPAN) -_02339F74: .word 0x000033E6 -#endif -#ifdef JAPAN -_0233982C: .word 0x000004CC -_0233B0A8: .word 0x000004CD -_02339830: .word 0x000004CA -#else -_0233982C: .word 0x0000023B -_02339830: .word 0x00000239 -#endif -_02339834: .word 0x00003785 + OV01_02338EC4_DATA_OFFSET - arm_func_end ov01_02338EC4 - - arm_func_start ov01_02339838 -ov01_02339838: ; 0x02339838 - stmdb sp!, {r4, lr} - bl sub_02046B04 - bl ov01_023399A8 - mov r4, r0 - bl sub_02046BA0 - ldr r1, _0233985C ; =ov01_0233C21C - strb r0, [r1] - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_0233985C: .word ov01_0233C21C - arm_func_end ov01_02339838 - - arm_func_start ov01_02339860 -ov01_02339860: ; 0x02339860 - stmdb sp!, {r4, lr} - bl sub_02046B04 - bl ov01_023399A8 - mov r4, r0 - bl sub_02046BA0 - ldr r1, _02339884 ; =ov01_0233C21C - strb r0, [r1, #1] - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_02339884: .word ov01_0233C21C - arm_func_end ov01_02339860 - - arm_func_start ov01_02339888 -ov01_02339888: ; 0x02339888 - ldr ip, _0233989C ; =sub_02046BE8 - ldr r1, _023398A0 ; =0x00003773 - mov r0, #0x1c - mov r2, #0 - bx ip - .align 2, 0 -_0233989C: .word sub_02046BE8 -#if defined(EUROPE) -_023398A0: .word 0x00003775 -#elif defined(JAPAN) -_023398A0: .word 0x000033F5 -#else -_023398A0: .word 0x00003773 -#endif - arm_func_end ov01_02339888 - - arm_func_start ov01_023398A4 -ov01_023398A4: ; 0x023398A4 - ldr ip, _023398AC ; =sub_02046C78 - bx ip - .align 2, 0 -_023398AC: .word sub_02046C78 - arm_func_end ov01_023398A4 - - arm_func_start ov01_023398B0 -ov01_023398B0: ; 0x023398B0 - ldr r2, _023398EC ; =ov01_0233C21C - ldr r3, [r2, #4] - ldr r2, [r3] - cmp r2, #0xa - movne r0, #0 - bxne lr -#ifdef JAPAN - str r0, [r3, #0x2c] - str r1, [r3, #0x30] - mov r1, #8 - mov r0, #0x1a - str r1, [r3, #0x24] -#else - str r0, [r3, #0x38] - str r1, [r3, #0x3c] - mov r1, #8 - mov r0, #0x1a - str r1, [r3, #0x30] -#endif - str r0, [r3] - str r0, [r3, #8] - mov r0, #1 - bx lr - .align 2, 0 -_023398EC: .word ov01_0233C21C - arm_func_end ov01_023398B0 - - arm_func_start ov01_023398F0 -ov01_023398F0: ; 0x023398F0 - stmdb sp!, {r3, lr} - add r1, sp, #0 - mov r0, #0 - bl GetPressedButtons - ldrh r0, [sp] - tst r0, #2 - bne _02339918 - bl sub_020467F0 - cmp r0, #0 - beq _02339920 -_02339918: - mov r0, #1 - ldmia sp!, {r3, pc} -_02339920: - mov r0, #0 - ldmia sp!, {r3, pc} - arm_func_end ov01_023398F0 - - arm_func_start ov01_02339928 -ov01_02339928: ; 0x02339928 - ldr r1, _02339950 ; =ov01_0233C21C - ldr r3, _02339954 ; =0x00002A30 - ldr r0, [r1, #4] - mov r2, #1 - add r0, r0, #0x4000 -#ifdef JAPAN - str r3, [r0, #0xb4c] - ldr r0, [r1, #4] - add r0, r0, #0x4000 - strb r2, [r0, #0xb54] -#else - str r3, [r0, #0xb58] - ldr r0, [r1, #4] - add r0, r0, #0x4000 - strb r2, [r0, #0xb60] -#endif - bx lr - .align 2, 0 -_02339950: .word ov01_0233C21C -_02339954: .word 0x00002A30 - arm_func_end ov01_02339928 - - arm_func_start ov01_02339958 -ov01_02339958: ; 0x02339958 - ldr r1, _02339980 ; =ov01_0233C21C - ldr r3, _02339984 ; =0x00001C20 - ldr r0, [r1, #4] - mov r2, #0 - add r0, r0, #0x4000 -#ifdef JAPAN - str r3, [r0, #0xb4c] - ldr r0, [r1, #4] - add r0, r0, #0x4000 - strb r2, [r0, #0xb54] -#else - str r3, [r0, #0xb58] - ldr r0, [r1, #4] - add r0, r0, #0x4000 - strb r2, [r0, #0xb60] -#endif - bx lr - .align 2, 0 -_02339980: .word ov01_0233C21C -_02339984: .word 0x00001C20 - arm_func_end ov01_02339958 - - arm_func_start ov01_02339988 -ov01_02339988: ; 0x02339988 - ldr r0, _023399A0 ; =ov01_0233C21C - ldr r1, _023399A4 ; =0x00002A30 - ldr r0, [r0, #4] - add r0, r0, #0x4000 -#ifdef JAPAN - str r1, [r0, #0xb4c] -#else - str r1, [r0, #0xb58] -#endif - bx lr - .align 2, 0 -_023399A0: .word ov01_0233C21C -_023399A4: .word 0x00002A30 - arm_func_end ov01_02339988 - - arm_func_start ov01_023399A8 -ov01_023399A8: ; 0x023399A8 - mvn r2, #1 - cmp r0, r2 - moveq r0, #1 - bxeq lr - sub r1, r2, #1 - cmp r0, r1 - moveq r0, #1 - bxeq lr - add r1, r2, #1 - cmp r0, r1 - moveq r0, #0 - bx lr - arm_func_end ov01_023399A8 - - arm_func_start ov01_023399D8 -ov01_023399D8: ; 0x023399D8 -#ifdef JAPAN -#define OV01_023399D8_OFFSET -0xC -#define OV01_023399D8_OFFSET_2 -0xA -#else -#define OV01_023399D8_OFFSET 0 -#define OV01_023399D8_OFFSET_2 0 -#endif - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x4c - ldr r0, _02339F78 ; =ov01_0233C21C - ldr r4, [r0, #4] - ldr r0, [r4, #0xc] - cmp r0, #0xc - addls pc, pc, r0, lsl #2 - b _02339F6C -_023399F8: ; jump table - b _02339F6C ; case 0 - b _02339A2C ; case 1 - b _02339A3C ; case 2 - b _02339AA4 ; case 3 - b _02339ABC ; case 4 - b _02339AE8 ; case 5 - b _02339B54 ; case 6 - b _02339C14 ; case 7 - b _02339C98 ; case 8 - b _02339CDC ; case 9 - b _02339D74 ; case 10 - b _02339EB0 ; case 11 - b _02339F54 ; case 12 -_02339A2C: - bl ov00_022BD798 - mov r0, #2 - str r0, [r4, #0xc] - b _02339F6C -_02339A3C: - bl ov00_022BD7B8 - cmp r0, #0 - beq _02339F6C - bl ov00_022BD7E8 - cmp r0, #4 - beq _02339A68 - bl ov01_0233A7FC - mov r0, #8 - str r0, [r4, #0x30 + OV01_023399D8_OFFSET] - mov r0, #2 - b _02339F70 -_02339A68: - ldrb r0, [r4, #0x10] - cmp r0, #0 - beq _02339A90 - add r0, r4, #0x3c4 + OV01_023399D8_OFFSET - add r0, r0, #0x4c00 - bl ov00_022BCD10 - mov r0, #1 - bl ov00_022BCC30 - mov r0, #1 - strb r0, [r4, #0x11] -_02339A90: - mov r0, #1 - strb r0, [r4, #0x28 + OV01_023399D8_OFFSET_2] - mov r0, #4 - str r0, [r4, #0xc] - b _02339F6C -_02339AA4: - bl ov00_022BD7D8 - cmp r0, #0 - movne r0, #0 - strneb r0, [r4, #0x28 + OV01_023399D8_OFFSET_2] - strne r0, [r4, #0xc] - b _02339F6C -_02339ABC: - add r0, r4, #0x14 - bl ov00_022BD870 - cmp r0, #0 - bne _02339AE0 - bl ov01_0233A7FC - mov r0, #8 - str r0, [r4, #0x30 + OV01_023399D8_OFFSET] - mov r0, #2 - b _02339F70 -_02339AE0: - mov r0, #5 - str r0, [r4, #0xc] -_02339AE8: - bl ov00_022BD8FC - bl ov01_0233A7FC - cmp r0, #0 - movne r0, #2 - bne _02339F70 - bl ov00_022BD908 - cmp r0, #0 - beq _02339F6C - bl ov00_022BCC90 - cmp r0, #0 - beq _02339B48 - ldrb r0, [r4, #0x11] - ldr r1, _02339F7C ; =0x00002A30 - cmp r0, #0 - movne r0, #8 - moveq r0, #7 - str r0, [r4, #4] - add r0, r4, #0x4000 - str r1, [r0, #0xb58 + OV01_023399D8_OFFSET] - mov r0, #0x13 - str r0, [r4] - mov r0, #6 - str r0, [r4, #0xc] - b _02339F6C -_02339B48: - mov r0, #7 - str r0, [r4, #0xc] - b _02339F6C -_02339B54: - bl ov00_022BD8FC - bl ov01_0233A7FC - cmp r0, #0 - movne r0, #2 - bne _02339F70 - ldr r0, [r4] - cmp r0, #7 - moveq r0, #7 - streq r0, [r4, #0xc] - ldr r0, [r4] - cmp r0, #0x16 - cmpne r0, #0x17 - cmpne r0, #0x18 - cmpne r0, #9 - bne _02339F6C - add r1, sp, #2 - mov r0, #0 - bl GetHeldButtons - bl IsTouchScreenNotOff - cmp r0, #0 - moveq r0, #0 - beq _02339BC4 - add r0, sp, #0x28 - bl GetReleasedStylus - add r0, sp, #0x28 - mov r1, #1 - mov r2, #0 - bl sub_02006C8C -_02339BC4: - ldrh r1, [sp, #2] - cmp r1, #0 - cmpeq r0, #0 - ldrne r1, _02339F7C ; =0x00002A30 - addne r0, r4, #0x4000 - strne r1, [r0, #0xb58 + OV01_023399D8_OFFSET] - add r0, r4, #0x4000 - ldr r1, [r0, #0xb58 + OV01_023399D8_OFFSET] - cmp r1, #0 - subgt r1, r1, #1 - strgt r1, [r0, #0xb58 + OV01_023399D8_OFFSET] - bgt _02339F6C - mov r0, #0x12 - str r0, [r4, #0x38 + OV01_023399D8_OFFSET] - mov r0, #6 - str r0, [r4, #0x3c + OV01_023399D8_OFFSET] - mov r0, #8 - str r0, [r4, #0x30 + OV01_023399D8_OFFSET] - mov r0, #2 - b _02339F70 -_02339C14: - bl ov00_022BD8FC - bl ov01_0233A7FC - cmp r0, #0 - movne r0, #2 - bne _02339F70 - ldr r0, [r4] - cmp r0, #7 - bne _02339F6C - bl ov00_022BD918 - cmp r0, #2 - bne _02339C60 - mov r0, #3 - str r0, [r4, #0x38 + OV01_023399D8_OFFSET] - mov r0, #6 - str r0, [r4, #0x3c + OV01_023399D8_OFFSET] - mov r0, #8 - str r0, [r4, #0x30 + OV01_023399D8_OFFSET] - mov r0, #2 - b _02339F70 -_02339C60: - bl ov00_022BD480 - cmp r0, #0 - mov r0, #1 - strneb r0, [r4, #0x29 + OV01_023399D8_OFFSET_2] - movne r0, #8 - strne r0, [r4, #0xc] - bne _02339F6C - str r0, [r4, #0x38 + OV01_023399D8_OFFSET] - mov r0, #6 - str r0, [r4, #0x3c + OV01_023399D8_OFFSET] - mov r0, #8 - str r0, [r4, #0x30 + OV01_023399D8_OFFSET] - mov r0, #2 - b _02339F70 -_02339C98: - bl ov00_022BD8FC - bl ov01_0233A7FC - cmp r0, #0 - movne r0, #2 - bne _02339F70 - bl ov00_022BD4DC - cmp r0, #0 - beq _02339F6C - mov r0, #1 - strb r0, [r4, #0x2c + OV01_023399D8_OFFSET_2] - ldr r1, _02339F7C ; =0x00002A30 - strb r0, [r4, #0x2a + OV01_023399D8_OFFSET_2] - add r0, r4, #0x4000 - str r1, [r0, #0xb58 + OV01_023399D8_OFFSET] - mov r0, #9 - str r0, [r4, #0xc] - b _02339F6C -_02339CDC: - bl ov00_022BD8FC - bl ov01_0233A7FC - cmp r0, #0 - movne r0, #2 - bne _02339F70 - add r1, sp, #0 - mov r0, #0 - bl GetHeldButtons - bl IsTouchScreenNotOff - cmp r0, #0 - moveq r0, #0 - beq _02339D24 - add r0, sp, #4 - bl GetReleasedStylus - add r0, sp, #4 - mov r1, #1 - mov r2, #0 - bl sub_02006C8C -_02339D24: - ldrh r1, [sp] - cmp r1, #0 - cmpeq r0, #0 - ldrne r1, _02339F7C ; =0x00002A30 - addne r0, r4, #0x4000 - strne r1, [r0, #0xb58 + OV01_023399D8_OFFSET] - add r0, r4, #0x4000 - ldr r1, [r0, #0xb58 + OV01_023399D8_OFFSET] - cmp r1, #0 - subgt r1, r1, #1 - strgt r1, [r0, #0xb58 + OV01_023399D8_OFFSET] - bgt _02339F6C - mov r0, #0x12 - str r0, [r4, #0x38 + OV01_023399D8_OFFSET] - mov r0, #6 - str r0, [r4, #0x3c + OV01_023399D8_OFFSET] - mov r0, #8 - str r0, [r4, #0x30 + OV01_023399D8_OFFSET] - mov r0, #2 - b _02339F70 -_02339D74: - bl ov00_022BD8FC - bl ov01_0233A130 - cmp r0, #4 - bne _02339E20 - ldr r1, _02339F7C ; =0x00002A30 - add r0, r4, #0x4000 - str r1, [r0, #0xb58 + OV01_023399D8_OFFSET] - mov r1, #9 - ldr r0, _02339F78 ; =ov01_0233C21C - str r1, [r4, #0xc] - ldr r0, [r0, #4] - add r0, r0, #0x358 + OV01_023399D8_OFFSET - add r0, r0, #0x800 - bl ov01_0232C578 - sub r0, r0, #6 - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _02339E00 -_02339DBC: ; jump table - b _02339DD0 ; case 0 - b _02339DDC ; case 1 - b _02339DE8 ; case 2 - b _02339DF4 ; case 3 - b _02339E00 ; case 4 -_02339DD0: - mov r0, #7 - str r0, [r4, #0x38 + OV01_023399D8_OFFSET] - b _02339E08 -_02339DDC: - mov r0, #8 - str r0, [r4, #0x38 + OV01_023399D8_OFFSET] - b _02339E08 -_02339DE8: - mov r0, #9 - str r0, [r4, #0x38 + OV01_023399D8_OFFSET] - b _02339E08 -_02339DF4: - mov r0, #0xa - str r0, [r4, #0x38 + OV01_023399D8_OFFSET] - b _02339E08 -_02339E00: - mov r0, #0xb - str r0, [r4, #0x38 + OV01_023399D8_OFFSET] -_02339E08: - mov r0, #6 - str r0, [r4, #0x3c + OV01_023399D8_OFFSET] - mov r0, #8 - str r0, [r4, #0x30 + OV01_023399D8_OFFSET] - mov r0, #2 - b _02339F70 -_02339E20: - cmp r0, #5 - bne _02339E48 - mov r0, #0x11 - str r0, [r4, #0x38 + OV01_023399D8_OFFSET] - mov r0, #6 - str r0, [r4, #0x3c + OV01_023399D8_OFFSET] - mov r0, #8 - str r0, [r4, #0x30 + OV01_023399D8_OFFSET] - mov r0, #2 - b _02339F70 -_02339E48: - cmp r0, #6 - bne _02339E70 - mov r0, #0x12 - str r0, [r4, #0x38 + OV01_023399D8_OFFSET] - mov r0, #6 - str r0, [r4, #0x3c + OV01_023399D8_OFFSET] - mov r0, #8 - str r0, [r4, #0x30 + OV01_023399D8_OFFSET] - mov r0, #2 - b _02339F70 -_02339E70: - cmp r0, #0 - beq _02339E9C - ldr r1, _02339F7C ; =0x00002A30 - add r0, r4, #0x4000 - str r1, [r0, #0xb58 + OV01_023399D8_OFFSET] - mov r0, #9 - str r0, [r4, #0xc] - ldrb r0, [r4, #0x2b + OV01_023399D8_OFFSET_2] - cmp r0, #0 - beq _02339E9C - bl ov01_02339F80 -_02339E9C: - bl ov01_0233A7FC - cmp r0, #0 - beq _02339F6C - mov r0, #2 - b _02339F70 -_02339EB0: - bl ov00_022BD8FC - bl ov01_0233A390 - cmp r0, #1 - bne _02339EE8 - ldr r1, _02339F7C ; =0x00002A30 - add r0, r4, #0x4000 - str r1, [r0, #0xb58 + OV01_023399D8_OFFSET] - mov r0, #9 - str r0, [r4, #0xc] - ldrb r0, [r4, #0x2b + OV01_023399D8_OFFSET_2] - cmp r0, #0 - beq _02339F40 - bl ov01_02339F80 - b _02339F40 -_02339EE8: - cmp r0, #2 - bne _02339F18 - mov r0, #0x11 - str r0, [r4, #0x38 + OV01_023399D8_OFFSET] - mov r0, #6 - str r0, [r4, #0x3c + OV01_023399D8_OFFSET] - mov r0, #8 - str r0, [r4, #0x30 + OV01_023399D8_OFFSET] - mov r0, #0xc - str r0, [r4, #0xc] - mov r0, #2 - b _02339F70 -_02339F18: - cmp r0, #3 - bne _02339F40 - mov r0, #0x12 - str r0, [r4, #0x38 + OV01_023399D8_OFFSET] - mov r0, #6 - str r0, [r4, #0x3c + OV01_023399D8_OFFSET] - mov r0, #8 - str r0, [r4, #0x30 + OV01_023399D8_OFFSET] - mov r0, #2 - b _02339F70 -_02339F40: - bl ov01_0233A7FC - cmp r0, #0 - beq _02339F6C - mov r0, #2 - b _02339F70 -_02339F54: - ldrb r0, [r4, #0x2b + OV01_023399D8_OFFSET_2] - cmp r0, #0 - beq _02339F64 - bl ov01_02339F80 -_02339F64: - mov r0, #2 - b _02339F70 -_02339F6C: - mov r0, #0 -_02339F70: - add sp, sp, #0x4c - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_02339F78: .word ov01_0233C21C -_02339F7C: .word 0x00002A30 - arm_func_end ov01_023399D8 - - arm_func_start ov01_02339F80 -ov01_02339F80: ; 0x02339F80 - stmdb sp!, {r3, lr} - ldr r1, _0233A024 ; =ov01_0233C21C - mov r3, #0 - ldr r0, [r1, #4] - mov r2, #1 - add r0, r0, #0x4000 -#ifdef JAPAN - strb r3, [r0, #0xb54] - ldr r0, [r1, #4] - strb r2, [r0, #0x21] -#else - strb r3, [r0, #0xb60] - ldr r0, [r1, #4] - strb r2, [r0, #0x2b] -#endif - ldr r1, [r1, #4] - ldr r0, [r1, #0xc] - cmp r0, #0xc - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, pc} -_02339FB8: ; jump table - ldmia sp!, {r3, pc} ; case 0 - b _02339FEC ; case 1 - b _02339FEC ; case 2 - ldmia sp!, {r3, pc} ; case 3 - b _02339FF8 ; case 4 - b _02339FF8 ; case 5 - b _02339FF8 ; case 6 - b _02339FF8 ; case 7 - b _02339FF8 ; case 8 - b _02339FF8 ; case 9 - b _0233A000 ; case 10 - b _0233A008 ; case 11 - b _0233A010 ; case 12 -_02339FEC: - mov r0, #3 - str r0, [r1, #0xc] - ldmia sp!, {r3, pc} -_02339FF8: - bl ov01_0233A028 - ldmia sp!, {r3, pc} -_0233A000: - bl ov00_022BDA74 - ldmia sp!, {r3, pc} -_0233A008: - bl ov00_022BDBA8 - ldmia sp!, {r3, pc} -_0233A010: - bl ov00_022BDBA8 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov01_0233A028 - ldmia sp!, {r3, pc} - .align 2, 0 -_0233A024: .word ov01_0233C21C - arm_func_end ov01_02339F80 - - arm_func_start ov01_0233A028 -ov01_0233A028: ; 0x0233A028 - stmdb sp!, {r3, lr} - bl ov00_022BD95C - ldr r0, _0233A058 ; =ov01_0233C21C - mov r3, #0 - ldr r2, [r0, #4] - mov r1, #3 -#ifdef JAPAN - strb r3, [r2, #0x1f] - ldr r2, [r0, #4] - strb r3, [r2, #0x20] -#else - strb r3, [r2, #0x29] - ldr r2, [r0, #4] - strb r3, [r2, #0x2a] -#endif - ldr r0, [r0, #4] - str r1, [r0, #0xc] - ldmia sp!, {r3, pc} - .align 2, 0 -_0233A058: .word ov01_0233C21C - arm_func_end ov01_0233A028 - - arm_func_start ov01_0233A05C -ov01_0233A05C: ; 0x0233A05C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr ip, _0233A11C ; =ov01_0233C21C - mov r7, r0 - ldr r0, [ip, #4] - mov r6, r1 - ldr r0, [r0, #0xc] - mov r5, r2 - cmp r0, #9 - mov r4, r3 - movne r0, #2 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - bl ov00_022BD968 - ldr r0, _0233A120 ; =ov01_0233C01C - mov r1, r7 - bl Debug_Print0 - ldr r0, _0233A124 ; =ov01_0233C030 - mov r1, r6 - bl Debug_Print0 - ldr r0, _0233A128 ; =ov01_0233C03C - mov r1, r4 - bl Debug_Print0 - ldr ip, [sp, #0x18] - mov r0, r7 - mov r1, r6 - mov r2, r5 - mov r3, r4 - str ip, [sp] - bl ov00_022BD99C - cmp r0, #1 - cmpne r0, #2 - cmpne r0, #3 - bne _0233A0E4 - mov r0, #3 - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0233A0E4: - ldr r1, _0233A11C ; =ov01_0233C21C - ldr r2, _0233A12C ; =0x00001C20 - ldr r0, [r1, #4] - mov r3, #0xa - add r0, r0, #0x4000 -#ifdef JAPAN - str r2, [r0, #0xb4c] -#else - str r2, [r0, #0xb58] -#endif - ldr r0, [r1, #4] - mov r2, #0 - str r3, [r0, #0xc] - ldr r1, [r1, #4] - mov r0, #1 - add r1, r1, #0x4000 -#ifdef JAPAN - strb r2, [r1, #0xb54] -#else - strb r2, [r1, #0xb60] -#endif - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0233A11C: .word ov01_0233C21C -_0233A120: .word ov01_0233C01C -_0233A124: .word ov01_0233C030 -_0233A128: .word ov01_0233C03C -_0233A12C: .word 0x00001C20 - arm_func_end ov01_0233A05C - - arm_func_start ov01_0233A130 -ov01_0233A130: ; 0x0233A130 -#ifdef JAPAN -#define OV01_0233A130_OFFSET -0xC -#else -#define OV01_0233A130_OFFSET 0 -#endif - stmdb sp!, {r4, lr} - sub sp, sp, #0x28 - ldr r0, _0233A308 ; =ov01_0233C21C - ldr r0, [r0, #4] - add r0, r0, #0x4000 - ldrb r0, [r0, #0xb60 + OV01_0233A130_OFFSET] - cmp r0, #0 - beq _0233A1E4 - add r1, sp, #0 - mov r0, #0 - bl GetHeldButtons - bl IsTouchScreenNotOff - cmp r0, #0 - moveq r0, #0 - beq _0233A184 - add r0, sp, #4 - bl GetReleasedStylus - add r0, sp, #4 - mov r1, #1 - mov r2, #0 - bl sub_02006C8C -_0233A184: - ldrh r1, [sp] - cmp r1, #0 - cmpeq r0, #0 - ldrne r0, _0233A308 ; =ov01_0233C21C - ldrne r1, _0233A30C ; =0x00002A30 - ldrne r0, [r0, #4] - addne r0, r0, #0x4000 - strne r1, [r0, #0xb58 + OV01_0233A130_OFFSET] - ldr r1, _0233A308 ; =ov01_0233C21C - ldr r0, [r1, #4] - add r0, r0, #0x4000 - ldr r2, [r0, #0xb58 + OV01_0233A130_OFFSET] - cmp r2, #0 - ble _0233A1DC - sub r2, r2, #1 - str r2, [r0, #0xb58 + OV01_0233A130_OFFSET] - ldr r0, [r1, #4] - add r0, r0, #0x4000 - ldr r0, [r0, #0xb58 + OV01_0233A130_OFFSET] - cmp r0, #0 - movle r0, #6 - ble _0233A300 -_0233A1DC: - mov r0, #0 - b _0233A300 -_0233A1E4: - bl ov00_022BD9E8 - mov r1, r0 - cmp r1, #8 - addls pc, pc, r1, lsl #2 - b _0233A2B8 -_0233A1F8: ; jump table - b _0233A21C ; case 0 - b _0233A21C ; case 1 - b _0233A2B8 ; case 2 - b _0233A2B8 ; case 3 - b _0233A2B8 ; case 4 - b _0233A2B8 ; case 5 - b _0233A2B8 ; case 6 - b _0233A2B8 ; case 7 - b _0233A238 ; case 8 -_0233A21C: - ldr r0, _0233A308 ; =ov01_0233C21C - mov r1, #0 - ldr r0, [r0, #4] - str r1, [r0, #0xb54 + OV01_0233A130_OFFSET] - bl ov00_022BD980 - mov r0, #8 - b _0233A300 -_0233A238: - ldr r0, _0233A308 ; =ov01_0233C21C - ldr r0, [r0, #4] - add r0, r0, #0x354 + OV01_0233A130_OFFSET - add r0, r0, #0x800 - bl ov00_022BDA68 - ldr r2, _0233A308 ; =ov01_0233C21C - mov r1, r0 - ldr r2, [r2, #4] - add r0, r2, #0x358 + OV01_0233A130_OFFSET - ldr r2, [r2, #0xb54 + OV01_0233A130_OFFSET] - add r0, r0, #0x800 - bl MemcpySimple - bl ov00_022BD980 - ldr r0, _0233A308 ; =ov01_0233C21C - ldr r0, [r0, #4] - add r0, r0, #0x358 + OV01_0233A130_OFFSET - add r0, r0, #0x800 - bl ov01_0232C578 - movs r4, r0 - moveq r0, #7 - beq _0233A300 - ldr r0, _0233A308 ; =ov01_0233C21C - ldr r0, [r0, #4] - add r0, r0, #0x358 + OV01_0233A130_OFFSET - add r0, r0, #0x800 - bl ov01_0232C5AC - mov r2, r0 - ldr r0, _0233A310 ; =ov01_0233C050 - mov r1, r4 - bl Debug_Print0 - mov r0, #4 - b _0233A300 -_0233A2B8: - ldr r2, _0233A308 ; =ov01_0233C21C - ldr r0, [r2, #4] - add r0, r0, #0x4000 - ldr r3, [r0, #0xb58 + OV01_0233A130_OFFSET] - cmp r3, #0 - ble _0233A2FC - sub r3, r3, #1 - str r3, [r0, #0xb58 + OV01_0233A130_OFFSET] - ldr r0, [r2, #4] - add r0, r0, #0x4000 - ldr r0, [r0, #0xb58 + OV01_0233A130_OFFSET] - cmp r0, #0 - bgt _0233A2FC - ldr r0, _0233A314 ; =ov01_0233C068 - bl Debug_Print0 - mov r0, #5 - b _0233A300 -_0233A2FC: - mov r0, #0 -_0233A300: - add sp, sp, #0x28 - ldmia sp!, {r4, pc} - .align 2, 0 -_0233A308: .word ov01_0233C21C -_0233A30C: .word 0x00002A30 -_0233A310: .word ov01_0233C050 -_0233A314: .word ov01_0233C068 - arm_func_end ov01_0233A130 - - arm_func_start ov01_0233A318 -ov01_0233A318: ; 0x0233A318 -#ifdef JAPAN -#define OV01_0233A318_OFFSET -0xC -#else -#define OV01_0233A318_OFFSET 0 -#endif - stmdb sp!, {r4, lr} - ldr r1, _0233A388 ; =ov01_0233C21C - mov r4, r0 - ldr r0, [r1, #4] - ldr r0, [r0, #0xc] - cmp r0, #9 - movne r0, #0 - ldmneia sp!, {r4, pc} - bl ov00_022BDA94 - ldr r2, _0233A388 ; =ov01_0233C21C - mov r3, #0xb - ldr r0, [r2, #4] - mov r1, #0x12 - str r4, [r0, #0xb50 + OV01_0233A318_OFFSET] - ldr r0, [r2, #4] - ldr r4, _0233A38C ; =0x00001C20 - str r3, [r0, #0xc] - ldr r0, [r2, #4] - mov r3, #0 - str r1, [r0] - ldr r1, [r2, #4] - mov r0, #1 - add r1, r1, #0x4000 - str r4, [r1, #0xb58 + OV01_0233A318_OFFSET] - ldr r1, [r2, #4] - add r1, r1, #0x4000 - strb r3, [r1, #0xb60 + OV01_0233A318_OFFSET] - ldmia sp!, {r4, pc} - .align 2, 0 -_0233A388: .word ov01_0233C21C -_0233A38C: .word 0x00001C20 - arm_func_end ov01_0233A318 - - arm_func_start ov01_0233A390 -ov01_0233A390: ; 0x0233A390 -#ifdef JAPAN -#define OV01_0233A390_OFFSET -0xC -#define OV01_0233A390_OFFSET_2 -0xA -#else -#define OV01_0233A390_OFFSET 0 -#define OV01_0233A390_OFFSET_2 0 -#endif - stmdb sp!, {r4, lr} - sub sp, sp, #0x28 - ldr r0, _0233A7F0 ; =ov01_0233C21C - ldr r1, [r0, #4] - add r0, r1, #0x4000 - ldrb r0, [r0, #0xb60 + OV01_0233A390_OFFSET] - cmp r0, #0 - beq _0233A44C - add r1, sp, #0 - mov r0, #0 - bl GetHeldButtons - bl IsTouchScreenNotOff - cmp r0, #0 - moveq r0, #0 - beq _0233A3E4 - add r0, sp, #4 - bl GetReleasedStylus - add r0, sp, #4 - mov r1, #1 - mov r2, #0 - bl sub_02006C8C -_0233A3E4: - ldrh r1, [sp] - cmp r1, #0 - cmpeq r0, #0 - ldrne r0, _0233A7F0 ; =ov01_0233C21C - ldrne r1, _0233A7F4 ; =0x00002A30 - ldrne r0, [r0, #4] - addne r0, r0, #0x4000 - strne r1, [r0, #0xb58 + OV01_0233A390_OFFSET] - ldr r1, _0233A7F0 ; =ov01_0233C21C - ldr r0, [r1, #4] - add r0, r0, #0x4000 - ldr r2, [r0, #0xb58 + OV01_0233A390_OFFSET] - cmp r2, #0 - ble _0233A444 - sub r2, r2, #1 - str r2, [r0, #0xb58 + OV01_0233A390_OFFSET] - ldr r0, [r1, #4] - add r1, r0, #0x4000 - ldr r0, [r1, #0xb58 + OV01_0233A390_OFFSET] - cmp r0, #0 - ldrle r2, _0233A7F8 ; =0x00001C20 - movle r0, #3 - strle r2, [r1, #0xb58 + OV01_0233A390_OFFSET] - ble _0233A7E8 -_0233A444: - mov r0, #0 - b _0233A7E8 -_0233A44C: - ldr r0, [r1, #0x44 + OV01_0233A390_OFFSET] - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _0233A7E4 -_0233A45C: ; jump table - b _0233A470 ; case 0 - b _0233A53C ; case 1 - b _0233A60C ; case 2 - b _0233A6DC ; case 3 - b _0233A7B8 ; case 4 -_0233A470: - bl ov00_022BDACC - cmp r0, #1 - bne _0233A4F0 - ldr r0, _0233A7F0 ; =ov01_0233C21C - ldr r1, [r0, #4] - ldrb r0, [r1, #0x2b + OV01_0233A390_OFFSET_2] - cmp r0, #0 - movne r0, #4 - strne r0, [r1, #0x44 + OV01_0233A390_OFFSET] - movne r0, #0 - bne _0233A7E8 - ldr r0, [r1, #0xb50 + OV01_0233A390_OFFSET] - bl ov00_022BDADC - ldr r0, _0233A7F0 ; =ov01_0233C21C - ldr r0, [r0, #4] - add r0, r0, #0x48 + OV01_0233A390_OFFSET - bl ov00_022BDB04 - cmp r0, #0 - ldreq r0, _0233A7F0 ; =ov01_0233C21C - moveq r1, #4 - ldreq r0, [r0, #4] - streq r1, [r0, #0x44 + OV01_0233A390_OFFSET] - beq _0233A7E4 - ldr r1, _0233A7F0 ; =ov01_0233C21C - ldr r3, _0233A7F8 ; =0x00001C20 - ldr r0, [r1, #4] - mov r2, #1 - add r0, r0, #0x4000 - str r3, [r0, #0xb58 + OV01_0233A390_OFFSET] - ldr r0, [r1, #4] - str r2, [r0, #0x44 + OV01_0233A390_OFFSET] - b _0233A7E4 -_0233A4F0: - ldr r1, _0233A7F0 ; =ov01_0233C21C - ldr r0, [r1, #4] - add r0, r0, #0x4000 - ldr r2, [r0, #0xb58 + OV01_0233A390_OFFSET] - cmp r2, #0 - ble _0233A7E4 - sub r2, r2, #1 - str r2, [r0, #0xb58 + OV01_0233A390_OFFSET] - ldr r0, [r1, #4] - add r0, r0, #0x4000 - ldr r0, [r0, #0xb58 + OV01_0233A390_OFFSET] - cmp r0, #0 - bgt _0233A7E4 - bl ov00_022BDBA8 - ldr r0, _0233A7F0 ; =ov01_0233C21C - mov r1, #4 - ldr r0, [r0, #4] - str r1, [r0, #0x44 + OV01_0233A390_OFFSET] - b _0233A7E4 -_0233A53C: - bl ov00_022BDACC - cmp r0, #1 - bne _0233A5C0 - ldr r0, _0233A7F0 ; =ov01_0233C21C - ldr r1, [r0, #4] - ldrb r0, [r1, #0x2b + OV01_0233A390_OFFSET_2] - cmp r0, #0 - movne r0, #4 - strne r0, [r1, #0x44 + OV01_0233A390_OFFSET] - bne _0233A7E4 - ldr r2, [r1, #0x48 + OV01_0233A390_OFFSET] - cmp r2, #0 - movle r0, #4 - strle r0, [r1, #0x44 + OV01_0233A390_OFFSET] - ble _0233A7E4 - add r0, r1, #0x50 + OV01_0233A390_OFFSET - mov r1, #0 - bl ov00_022BDB38 - cmp r0, #0 - ldreq r0, _0233A7F0 ; =ov01_0233C21C - moveq r1, #4 - ldreq r0, [r0, #4] - streq r1, [r0, #0x44 + OV01_0233A390_OFFSET] - beq _0233A7E4 - ldr r1, _0233A7F0 ; =ov01_0233C21C - ldr r3, _0233A7F8 ; =0x00001C20 - ldr r0, [r1, #4] - mov r2, #2 - add r0, r0, #0x4000 - str r3, [r0, #0xb58 + OV01_0233A390_OFFSET] - ldr r0, [r1, #4] - str r2, [r0, #0x44 + OV01_0233A390_OFFSET] - b _0233A7E4 -_0233A5C0: - ldr r1, _0233A7F0 ; =ov01_0233C21C - ldr r0, [r1, #4] - add r0, r0, #0x4000 - ldr r2, [r0, #0xb58 + OV01_0233A390_OFFSET] - cmp r2, #0 - ble _0233A7E4 - sub r2, r2, #1 - str r2, [r0, #0xb58 + OV01_0233A390_OFFSET] - ldr r0, [r1, #4] - add r0, r0, #0x4000 - ldr r0, [r0, #0xb58 + OV01_0233A390_OFFSET] - cmp r0, #0 - bgt _0233A7E4 - bl ov00_022BDBA8 - ldr r0, _0233A7F0 ; =ov01_0233C21C - mov r1, #4 - ldr r0, [r0, #4] - str r1, [r0, #0x44 + OV01_0233A390_OFFSET] - b _0233A7E4 -_0233A60C: - bl ov00_022BDACC - cmp r0, #1 - bne _0233A690 - ldr r0, _0233A7F0 ; =ov01_0233C21C - mov r2, #0 - ldr r1, [r0, #4] - str r2, [r1, #0x4c + OV01_0233A390_OFFSET] - ldr r3, [r0, #4] - ldrb r0, [r3, #0x2b + OV01_0233A390_OFFSET_2] - cmp r0, #0 - movne r0, #4 - strne r0, [r3, #0x44 + OV01_0233A390_OFFSET] - bne _0233A7E4 - add r1, r3, #0x358 + OV01_0233A390_OFFSET - ldr r2, [r3, #0xfc + OV01_0233A390_OFFSET] - add r0, r3, #0x50 + OV01_0233A390_OFFSET - add r1, r1, #0x800 - bl ov00_022BDB6C - cmp r0, #0 - ldreq r0, _0233A7F0 ; =ov01_0233C21C - moveq r1, #4 - ldreq r0, [r0, #4] - streq r1, [r0, #0x44 + OV01_0233A390_OFFSET] - beq _0233A7E4 - ldr r1, _0233A7F0 ; =ov01_0233C21C - ldr r3, _0233A7F8 ; =0x00001C20 - ldr r0, [r1, #4] - mov r2, #3 - add r0, r0, #0x4000 - str r3, [r0, #0xb58 + OV01_0233A390_OFFSET] - ldr r0, [r1, #4] - str r2, [r0, #0x44 + OV01_0233A390_OFFSET] - b _0233A7E4 -_0233A690: - ldr r1, _0233A7F0 ; =ov01_0233C21C - ldr r0, [r1, #4] - add r0, r0, #0x4000 - ldr r2, [r0, #0xb58 + OV01_0233A390_OFFSET] - cmp r2, #0 - ble _0233A7E4 - sub r2, r2, #1 - str r2, [r0, #0xb58 + OV01_0233A390_OFFSET] - ldr r0, [r1, #4] - add r0, r0, #0x4000 - ldr r0, [r0, #0xb58 + OV01_0233A390_OFFSET] - cmp r0, #0 - bgt _0233A7E4 - bl ov00_022BDBA8 - ldr r0, _0233A7F0 ; =ov01_0233C21C - mov r1, #4 - ldr r0, [r0, #4] - str r1, [r0, #0x44 + OV01_0233A390_OFFSET] - b _0233A7E4 -_0233A6DC: - bl ov00_022BDACC - cmp r0, #1 - bne _0233A76C - ldr r0, _0233A7F0 ; =ov01_0233C21C - ldr r2, [r0, #4] - ldr r1, [r2, #0x4c + OV01_0233A390_OFFSET] - add r1, r1, #1 - str r1, [r2, #0x4c + OV01_0233A390_OFFSET] - ldr r2, [r0, #4] - ldrb r0, [r2, #0x2b + OV01_0233A390_OFFSET_2] - ldr r4, [r2, #0x4c + OV01_0233A390_OFFSET] - cmp r0, #0 - movne r0, #4 - strne r0, [r2, #0x44 + OV01_0233A390_OFFSET] - bne _0233A7E4 - ldr r0, [r2, #0x48 + OV01_0233A390_OFFSET] - cmp r4, r0 - movge r0, #4 - strge r0, [r2, #0x44 + OV01_0233A390_OFFSET] - bge _0233A7E4 - mov r0, #0xb0 - mul lr, r4, r0 - add r0, r2, #0x358 + OV01_0233A390_OFFSET - add r1, r2, lr - add ip, r2, #0x50 + OV01_0233A390_OFFSET - add r3, r0, #0x800 - ldr r2, [r1, #0xfc + OV01_0233A390_OFFSET] - add r0, ip, lr - add r1, r3, r4, lsl #10 - bl ov00_022BDB6C - cmp r0, #0 - ldreq r0, _0233A7F0 ; =ov01_0233C21C - moveq r1, #4 - ldreq r0, [r0, #4] - streq r1, [r0, #0x44 + OV01_0233A390_OFFSET] - b _0233A7E4 -_0233A76C: - ldr r1, _0233A7F0 ; =ov01_0233C21C - ldr r0, [r1, #4] - add r0, r0, #0x4000 - ldr r2, [r0, #0xb58 + OV01_0233A390_OFFSET] - cmp r2, #0 - ble _0233A7E4 - sub r2, r2, #1 - str r2, [r0, #0xb58 + OV01_0233A390_OFFSET] - ldr r0, [r1, #4] - add r0, r0, #0x4000 - ldr r0, [r0, #0xb58 + OV01_0233A390_OFFSET] - cmp r0, #0 - bgt _0233A7E4 - bl ov00_022BDBA8 - ldr r0, _0233A7F0 ; =ov01_0233C21C - mov r1, #4 - ldr r0, [r0, #4] - str r1, [r0, #0x44 + OV01_0233A390_OFFSET] - b _0233A7E4 -_0233A7B8: - bl ov00_022BDBE4 - cmp r0, #0 - beq _0233A7E4 - ldr r0, _0233A7F0 ; =ov01_0233C21C - ldr r0, [r0, #4] - add r0, r0, #0x4000 - ldr r0, [r0, #0xb58 + OV01_0233A390_OFFSET] - cmp r0, #0 - movgt r0, #1 - movle r0, #2 - b _0233A7E8 -_0233A7E4: - mov r0, #0 -_0233A7E8: - add sp, sp, #0x28 - ldmia sp!, {r4, pc} - .align 2, 0 -_0233A7F0: .word ov01_0233C21C -_0233A7F4: .word 0x00002A30 -_0233A7F8: .word 0x00001C20 - arm_func_end ov01_0233A390 - - arm_func_start ov01_0233A7FC -ov01_0233A7FC: ; 0x0233A7FC - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r2, _0233A83C ; =ov01_0233C21C - add r0, sp, #4 - add r1, sp, #0 - ldr r4, [r2, #4] - bl ov00_022BDCB8 - cmp r0, #0 - ldrne r1, [sp, #4] - moveq r0, #0 -#ifdef JAPAN - strne r1, [r4, #0x2c] - ldrne r1, [sp] - movne r0, #1 - strne r1, [r4, #0x30] -#else - strne r1, [r4, #0x38] - ldrne r1, [sp] - movne r0, #1 - strne r1, [r4, #0x3c] -#endif - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_0233A83C: .word ov01_0233C21C - arm_func_end ov01_0233A7FC - - arm_func_start ov01_0233A840 -ov01_0233A840: ; 0x0233A840 -#ifdef JAPAN -#define OV01_0233A840_OFFSET -0xC -#else -#define OV01_0233A840_OFFSET 0 -#endif - stmdb sp!, {r3, r4, r5, lr} - ldr r4, _0233A8B0 ; =ov01_0233C21C - mov r5, #0 -_0233A84C: - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - bl ov00_022BD0A0 - ldr r1, [r4, #4] - mov r2, r5, lsl #0x10 - add r1, r1, r5 - add r1, r1, #0x4000 - strb r0, [r1, #0xf61 + OV01_0233A840_OFFSET] - mov r0, r2, lsr #0x10 - bl ov00_022BD2C0 - ldr r1, [r4, #4] - mov r2, r5, lsl #0x10 - add r1, r1, r5 - add r1, r1, #0x4000 - strb r0, [r1, #0xf71 + OV01_0233A840_OFFSET] - mov r0, r2, lsr #0x10 - bl ov00_022BD170 - ldr r1, [r4, #4] - add r1, r1, r5, lsl #2 - add r1, r1, #0x4000 - add r5, r5, #1 - str r0, [r1, #0xf84 + OV01_0233A840_OFFSET] - cmp r5, #0x10 - blt _0233A84C - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0233A8B0: .word ov01_0233C21C - arm_func_end ov01_0233A840 - - arm_func_start ov01_0233A8B4 -ov01_0233A8B4: ; 0x0233A8B4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - cmp r5, #0 - ble _0233A9C8 - cmp r5, #0x14 - addls pc, pc, r5, lsl #2 - b _0233ACE4 -_0233A8D4: ; jump table - b _0233ACE4 ; case 0 - b _0233A928 ; case 1 - b _0233A930 ; case 2 - b _0233A938 ; case 3 - b _0233A940 ; case 4 - b _0233A948 ; case 5 - b _0233A950 ; case 6 - b _0233A958 ; case 7 - b _0233A960 ; case 8 - b _0233A968 ; case 9 - b _0233A970 ; case 10 - b _0233A978 ; case 11 - b _0233A980 ; case 12 - b _0233A988 ; case 13 - b _0233A990 ; case 14 - b _0233A998 ; case 15 - b _0233A9A0 ; case 16 - b _0233A9A8 ; case 17 - b _0233A9B0 ; case 18 - b _0233A9B8 ; case 19 - b _0233A9C0 ; case 20 -_0233A928: - ldr r0, _0233ACEC ; =0x00003766 - ldmia sp!, {r3, r4, r5, pc} -_0233A930: - ldr r0, _0233ACF0 ; =0x00003767 - ldmia sp!, {r3, r4, r5, pc} -_0233A938: - ldr r0, _0233ACF4 ; =0x00003768 - ldmia sp!, {r3, r4, r5, pc} -_0233A940: - ldr r0, _0233ACF8 ; =0x00003769 - ldmia sp!, {r3, r4, r5, pc} -_0233A948: - ldr r0, _0233ACFC ; =0x0000376A - ldmia sp!, {r3, r4, r5, pc} -_0233A950: - ldr r0, _0233AD00 ; =0x0000376B - ldmia sp!, {r3, r4, r5, pc} -_0233A958: - ldr r0, _0233AD04 ; =0x0000376C - ldmia sp!, {r3, r4, r5, pc} -_0233A960: - ldr r0, _0233AD08 ; =0x0000376D - ldmia sp!, {r3, r4, r5, pc} -_0233A968: - ldr r0, _0233AD0C ; =0x0000376E - ldmia sp!, {r3, r4, r5, pc} -_0233A970: - ldr r0, _0233AD10 ; =0x0000376F - ldmia sp!, {r3, r4, r5, pc} -_0233A978: - ldr r0, _0233AD14 ; =0x00003770 - ldmia sp!, {r3, r4, r5, pc} -_0233A980: - ldr r0, _0233AD18 ; =0x00003771 - ldmia sp!, {r3, r4, r5, pc} -_0233A988: - ldr r0, _0233AD1C ; =0x00003772 - ldmia sp!, {r3, r4, r5, pc} -_0233A990: - ldr r0, _0233AD20 ; =0x00003773 - ldmia sp!, {r3, r4, r5, pc} -_0233A998: - ldr r0, _0233AD24 ; =0x00000239 - ldmia sp!, {r3, r4, r5, pc} -_0233A9A0: -#ifdef JAPAN - ldr r0, _0233C5A4 ; =0x000004C9 -#else - mov r0, #0x238 -#endif - ldmia sp!, {r3, r4, r5, pc} -_0233A9A8: - ldr r0, _0233AD28 ; =0x00003774 - ldmia sp!, {r3, r4, r5, pc} -_0233A9B0: - ldr r0, _0233AD2C ; =0x00003775 - ldmia sp!, {r3, r4, r5, pc} -_0233A9B8: - ldr r0, _0233AD30 ; =0x00003776 - ldmia sp!, {r3, r4, r5, pc} -_0233A9C0: - ldr r0, _0233AD34 ; =0x00003777 - ldmia sp!, {r3, r4, r5, pc} -_0233A9C8: - bge _0233ACE4 - ldr r0, _0233AD38 ; =0xFFFFB1E0 - cmp r5, r0 - bgt _0233A9E4 - sub r0, r0, #0x63 - cmp r5, r0 - bge _0233AAA4 -_0233A9E4: - ldr r1, _0233AD3C ; =0xFFFFB17C - cmp r5, r1 - beq _0233AAA4 - sub r0, r1, #2 - cmp r5, r0 - bgt _0233AA08 - sub r0, r1, #7 - cmp r5, r0 - bge _0233AAA4 -_0233AA08: - ldr r0, _0233AD40 ; =0xFFFFB173 - cmp r5, r0 - beq _0233AAA4 - sub r0, r0, #2 - cmp r5, r0 - bgt _0233AA2C - ldr r0, _0233AD44 ; =0xFFFFADF9 - cmp r5, r0 - bge _0233AAA4 -_0233AA2C: - ldr r0, _0233AD48 ; =0xFFFF34DC - cmp r5, r0 - bgt _0233AA44 - sub r0, r0, #0x5f - cmp r5, r0 - bge _0233AAA4 -_0233AA44: - ldr r0, _0233AD4C ; =0xFFFF3478 - cmp r5, r0 - bgt _0233AA5C - sub r0, r0, #0x5f - cmp r5, r0 - bge _0233AAA4 -_0233AA5C: - ldr r0, _0233AD50 ; =0xFFFF3414 - cmp r5, r0 - bgt _0233AA74 - sub r0, r0, #0x5f - cmp r5, r0 - bge _0233AAA4 -_0233AA74: - ldr r0, _0233AD54 ; =0xFFFF33B4 - cmp r5, r0 - bgt _0233AA8C - sub r0, r0, #0x63 - cmp r5, r0 - bge _0233AAA4 -_0233AA8C: - ldr r0, _0233AD58 ; =0xFFFF30F8 - cmp r5, r0 - bgt _0233AAAC - ldr r0, _0233AD5C ; =0xFFFF2FCD - cmp r5, r0 - blt _0233AAAC -_0233AAA4: - ldr r0, _0233AD60 ; =0x00003778 - ldmia sp!, {r3, r4, r5, pc} -_0233AAAC: - ldr r0, _0233AD64 ; =0xFFFFB174 - cmp r5, r0 - ldreq r0, _0233AD68 ; =0x00003779 - ldmeqia sp!, {r3, r4, r5, pc} - sub r0, r0, #2 - cmp r5, r0 - ldreq r0, _0233AD6C ; =0x0000377A - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _0233AD70 ; =0xFFFF38C8 - cmp r5, r0 - bgt _0233AAE4 - sub r0, r0, #0x66 - cmp r5, r0 - bge _0233AB14 -_0233AAE4: - ldr r0, _0233AD74 ; =0xFFFF3860 - cmp r5, r0 - bgt _0233AAFC - sub r0, r0, #0x5f - cmp r5, r0 - bge _0233AB14 -_0233AAFC: - ldr r0, _0233AD78 ; =0xFFFF379C - cmp r5, r0 - bgt _0233AB1C - sub r0, r0, #0x63 - cmp r5, r0 - blt _0233AB1C -_0233AB14: - ldr r0, _0233AD7C ; =0x0000377B - ldmia sp!, {r3, r4, r5, pc} -_0233AB1C: - ldr r0, _0233AD80 ; =0xFFFF34E0 - cmp r5, r0 - bgt _0233AB34 - sub r0, r0, #3 - cmp r5, r0 - bge _0233AB64 -_0233AB34: - ldr r0, _0233AD84 ; =0xFFFF347C - cmp r5, r0 - bgt _0233AB4C - sub r0, r0, #3 - cmp r5, r0 - bge _0233AB64 -_0233AB4C: - ldr r0, _0233AD88 ; =0xFFFF3418 - cmp r5, r0 - bgt _0233AB6C - sub r0, r0, #3 - cmp r5, r0 - blt _0233AB6C -_0233AB64: - ldr r0, _0233AD8C ; =0x0000377C - ldmia sp!, {r3, r4, r5, pc} -_0233AB6C: - ldr r0, _0233AD90 ; =0xFFFF3861 - cmp r5, r0 - ldreq r0, _0233AD94 ; =0x0000377D - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _0233AD98 ; =0xFFFF3CB0 - cmp r5, r0 - bgt _0233AB98 - sub r0, r0, #0x63 - cmp r5, r0 -#if defined(EUROPE) - movge r0, #0x3780 -#elif defined(JAPAN) - movge r0, #0x3400 -#else - ldrge r0, _0233AD9C ; =0x0000377E -#endif - ldmgeia sp!, {r3, r4, r5, pc} -_0233AB98: - ldr r0, _0233ADA0 ; =0xFFFFB17B - cmp r5, r0 - beq _0233ABBC - ldr r0, _0233ADA4 ; =0xFFFFA628 - cmp r5, r0 - bgt _0233ABC4 - ldr r0, _0233ADA8 ; =0xFFFFA241 - cmp r5, r0 - blt _0233ABC4 -_0233ABBC: - ldr r0, _0233ADAC ; =0x0000377F - ldmia sp!, {r3, r4, r5, pc} -_0233ABC4: - mov r0, #0xc800 - rsb r0, r0, #0 - cmp r5, r0 - bgt _0233ABE4 - sub r0, r0, #0x63 - cmp r5, r0 -#ifdef NORTH_AMERICA - movge r0, #0x3780 -#else - ldrge r0, _0233B4F8 ; =0x00003782 -#endif - ldmgeia sp!, {r3, r4, r5, pc} -_0233ABE4: - ldr r0, _0233ADB0 ; =0xFFFEC5D2 - cmp r5, r0 - ldreq r0, _0233ADB4 ; =0x00003784 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _0233ADB8 ; =0xFFFFA240 - cmp r5, r0 - bgt _0233AC0C - ldr r0, _0233ADBC ; =0xFFFF9E59 - cmp r5, r0 - bge _0233AC78 -_0233AC0C: - ldr r0, _0233ADC0 ; =0xFFFF9E58 - cmp r5, r0 - bgt _0233AC24 - ldr r0, _0233ADC4 ; =0xFFFF9A71 - cmp r5, r0 - bge _0233AC78 -_0233AC24: - ldr r0, _0233ADC8 ; =0xFFFF86E8 - cmp r5, r0 - bgt _0233AC3C - ldr r0, _0233ADCC ; =0xFFFF8301 - cmp r5, r0 - bge _0233AC78 -_0233AC3C: - ldr r0, _0233ADD0 ; =0xFFFF2D10 - cmp r5, r0 - bgt _0233AC54 - sub r0, r0, #0x63 - cmp r5, r0 - bge _0233AC78 -_0233AC54: - ldr r0, _0233ADD4 ; =0xFFFF15A0 - cmp r5, r0 - bgt _0233ACA8 - ldr r0, _0233ADD8 ; =0xFFFE7961 - cmp r5, r0 - blt _0233ACA8 - ldr r0, _0233ADB0 ; =0xFFFEC5D2 - cmp r5, r0 - beq _0233ACA8 -_0233AC78: - cmp r4, #0 - ldrne r0, _0233ADDC ; =0x00003781 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _0233ADC8 ; =0xFFFF86E8 - cmp r5, r0 - bgt _0233ACA0 - ldr r0, _0233ADCC ; =0xFFFF8301 - cmp r5, r0 - ldrge r0, _0233ADE0 ; =0x00003783 - ldmgeia sp!, {r3, r4, r5, pc} -_0233ACA0: - ldr r0, _0233ADE4 ; =0x00003782 - ldmia sp!, {r3, r4, r5, pc} -_0233ACA8: - ldr r0, _0233ADE8 ; =ov01_0233C088 - mov r1, r5 - bl Debug_Print0 - cmp r4, #0 - ldrne r0, _0233ADDC ; =0x00003781 - ldmneia sp!, {r3, r4, r5, pc} - ldr r0, _0233ADC8 ; =0xFFFF86E8 - cmp r5, r0 - bgt _0233ACDC - ldr r0, _0233ADCC ; =0xFFFF8301 - cmp r5, r0 - ldrge r0, _0233ADE0 ; =0x00003783 - ldmgeia sp!, {r3, r4, r5, pc} -_0233ACDC: - ldr r0, _0233ADE4 ; =0x00003782 - ldmia sp!, {r3, r4, r5, pc} -_0233ACE4: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -#if defined(EUROPE) -#define OV01_0233A8B4_OFFSET 2 -#elif defined(JAPAN) -#define OV01_0233A8B4_OFFSET -0x37E -#else -#define OV01_0233A8B4_OFFSET 0 -#endif -_0233ACEC: .word 0x00003766 + OV01_0233A8B4_OFFSET -_0233ACF0: .word 0x00003767 + OV01_0233A8B4_OFFSET -_0233ACF4: .word 0x00003768 + OV01_0233A8B4_OFFSET -_0233ACF8: .word 0x00003769 + OV01_0233A8B4_OFFSET -_0233ACFC: .word 0x0000376A + OV01_0233A8B4_OFFSET -_0233AD00: .word 0x0000376B + OV01_0233A8B4_OFFSET -_0233AD04: .word 0x0000376C + OV01_0233A8B4_OFFSET -_0233AD08: .word 0x0000376D + OV01_0233A8B4_OFFSET -_0233AD0C: .word 0x0000376E + OV01_0233A8B4_OFFSET -_0233AD10: .word 0x0000376F + OV01_0233A8B4_OFFSET -_0233AD14: .word 0x00003770 + OV01_0233A8B4_OFFSET -_0233AD18: .word 0x00003771 + OV01_0233A8B4_OFFSET -_0233AD1C: .word 0x00003772 + OV01_0233A8B4_OFFSET -_0233AD20: .word 0x00003773 + OV01_0233A8B4_OFFSET -#ifdef JAPAN -_0233AD24: .word 0x000004CA -_0233C5A4: .word 0x000004C9 -#else -_0233AD24: .word 0x00000239 -#endif -_0233AD28: .word 0x00003774 + OV01_0233A8B4_OFFSET -_0233AD2C: .word 0x00003775 + OV01_0233A8B4_OFFSET -_0233AD30: .word 0x00003776 + OV01_0233A8B4_OFFSET -_0233AD34: .word 0x00003777 + OV01_0233A8B4_OFFSET -_0233AD38: .word 0xFFFFB1E0 -_0233AD3C: .word 0xFFFFB17C -_0233AD40: .word 0xFFFFB173 -_0233AD44: .word 0xFFFFADF9 -_0233AD48: .word 0xFFFF34DC -_0233AD4C: .word 0xFFFF3478 -_0233AD50: .word 0xFFFF3414 -_0233AD54: .word 0xFFFF33B4 -_0233AD58: .word 0xFFFF30F8 -_0233AD5C: .word 0xFFFF2FCD -_0233AD60: .word 0x00003778 + OV01_0233A8B4_OFFSET -_0233AD64: .word 0xFFFFB174 -_0233AD68: .word 0x00003779 + OV01_0233A8B4_OFFSET -_0233AD6C: .word 0x0000377A + OV01_0233A8B4_OFFSET -_0233AD70: .word 0xFFFF38C8 -_0233AD74: .word 0xFFFF3860 -_0233AD78: .word 0xFFFF379C -_0233AD7C: .word 0x0000377B + OV01_0233A8B4_OFFSET -_0233AD80: .word 0xFFFF34E0 -_0233AD84: .word 0xFFFF347C -_0233AD88: .word 0xFFFF3418 -_0233AD8C: .word 0x0000377C + OV01_0233A8B4_OFFSET -_0233AD90: .word 0xFFFF3861 -_0233AD94: .word 0x0000377D + OV01_0233A8B4_OFFSET -_0233AD98: .word 0xFFFF3CB0 -#if defined(NORTH_AMERICA) -_0233AD9C: .word 0x0000377E -#endif -_0233ADA0: .word 0xFFFFB17B -_0233ADA4: .word 0xFFFFA628 -_0233ADA8: .word 0xFFFFA241 -_0233ADAC: .word 0x0000377F + OV01_0233A8B4_OFFSET -#if defined(EUROPE) -_0233B4F8: .word 0x00003782 -#elif defined(JAPAN) -_0233B4F8: .word 0x00003402 -#endif -_0233ADB0: .word 0xFFFEC5D2 -_0233ADB4: .word 0x00003784 + OV01_0233A8B4_OFFSET -_0233ADB8: .word 0xFFFFA240 -_0233ADBC: .word 0xFFFF9E59 -_0233ADC0: .word 0xFFFF9E58 -_0233ADC4: .word 0xFFFF9A71 -_0233ADC8: .word 0xFFFF86E8 -_0233ADCC: .word 0xFFFF8301 -_0233ADD0: .word 0xFFFF2D10 -_0233ADD4: .word 0xFFFF15A0 -_0233ADD8: .word 0xFFFE7961 -_0233ADDC: .word 0x00003781 + OV01_0233A8B4_OFFSET -_0233ADE0: .word 0x00003783 + OV01_0233A8B4_OFFSET -_0233ADE4: .word 0x00003782 + OV01_0233A8B4_OFFSET -_0233ADE8: .word ov01_0233C088 - arm_func_end ov01_0233A8B4 - - arm_func_start ov01_0233ADEC -ov01_0233ADEC: ; 0x0233ADEC - ldr r0, _0233AE00 ; =ov01_0233CA7C - mov r1, #0 - str r1, [r0] - mov r0, #1 - bx lr - .align 2, 0 -_0233AE00: .word ov01_0233CA7C - arm_func_end ov01_0233ADEC - - arm_func_start ov01_0233AE04 -ov01_0233AE04: ; 0x0233AE04 - stmdb sp!, {r3, lr} - ldr r0, _0233AE60 ; =ov01_0233CA7C - ldr r0, [r0] - cmp r0, #0 - beq _0233AE24 - cmp r0, #1 - beq _0233AE38 - b _0233AE58 -_0233AE24: - bl ov01_02339888 - ldr r0, _0233AE60 ; =ov01_0233CA7C - mov r1, #1 - str r1, [r0] - b _0233AE58 -_0233AE38: - bl ov01_023398A4 - cmp r0, #0 - beq _0233AE58 - bl sub_02046D20 - mov r0, #0x17 - bl ov00_022BE4A8 - mov r0, #4 - ldmia sp!, {r3, pc} -_0233AE58: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_0233AE60: .word ov01_0233CA7C - arm_func_end ov01_0233AE04 - - arm_func_start ov01_0233AE64 -ov01_0233AE64: ; 0x0233AE64 - ldr ip, _0233AE70 ; =InitMenu - ldr r0, _0233AE74 ; =ov01_0233C0A4 - bx ip - .align 2, 0 -_0233AE70: .word InitMenu -_0233AE74: .word ov01_0233C0A4 - arm_func_end ov01_0233AE64 - ; 0x0233AE78 - - .rodata - .global ov01_0233AE78 -ov01_0233AE78: - .byte 0x44, 0x41, 0x54, 0x41, 0x30, 0x30, 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 0x44, 0x41, 0x54, 0x41, 0x30, 0x31, 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 0x44, 0x41, 0x54, 0x41, 0x30, 0x32, 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 0x44, 0x41, 0x54, 0x41, 0x30, 0x33, 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 - .global ov01_0233AEF8 -ov01_0233AEF8: - .byte 0x72, 0x6F, 0x6D, 0x30, 0x3A, 0x46, 0x4F, 0x4E, 0x54, 0x2F, 0x77, 0x5F, 0x69, 0x63, 0x6F, 0x6E - .byte 0x2E, 0x77, 0x61, 0x6E, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233AF10 -ov01_0233AF10: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233AF14 -ov01_0233AF14: - .byte 0x63, 0x68, 0x65, 0x63 - .byte 0x6B, 0x20, 0x69, 0x64, 0x20, 0x3A, 0x20, 0x75, 0x6E, 0x69, 0x71, 0x75, 0x65, 0x20, 0x30, 0x78 - .byte 0x25, 0x30, 0x38, 0x78, 0x20, 0x3A, 0x20, 0x6D, 0x61, 0x63, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38 - .byte 0x78, 0x0A, 0x00, 0x00 - .global ov01_0233AF3C -ov01_0233AF3C: - .byte 0x61, 0x64, 0x64, 0x20, 0x69, 0x64, 0x20, 0x3A, 0x20, 0x75, 0x6E, 0x69 - .byte 0x71, 0x75, 0x65, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x20, 0x3A, 0x20, 0x6D, 0x61, 0x63 - .byte 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233AF64 -ov01_0233AF64: - .byte 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 - .global ov01_0233AF88 -ov01_0233AF88: - .byte 0x00, 0x00, 0x00, 0x00 - .word ov01_0232EDC0 - .word ov01_0232EDEC - .word ov01_0232EE34 - .byte 0x00, 0x00, 0x00, 0x00 - .word ov01_0232EE58 - .byte 0x00, 0x00, 0x00, 0x00 - .word ov01_0232EF28 - .word ov01_0232EF4C - .global ov01_0233AFAC -ov01_0233AFAC: - .byte 0x0D, 0x00, 0x00, 0x00 - .word ov01_0232EFE8 - .word ov01_0232F038 - .word ov01_0232F0C0 - .byte 0x00, 0x00, 0x00, 0x00 - .word ov01_0232F0E0 - .word ov01_0232F28C - .word ov01_0232F338 - .word ov01_0232F384 - .global ov01_0233AFD0 -ov01_0233AFD0: - .word ov01_0233AFD8 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233AFD8 -ov01_0233AFD8: - .byte 0x42, 0x41, 0x43, 0x4B, 0x2F, 0x65, 0x78, 0x70, 0x62, 0x61, 0x63, 0x6B, 0x2E, 0x62, 0x67, 0x70 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233AFEC -ov01_0233AFEC: - .byte 0x00, 0x00, 0x00, 0x00, 0x09, 0x0D, 0x12, 0x04, 0x01, 0xFA, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233AFFC -ov01_0233AFFC: - .byte 0x0D, 0x00, 0x00, 0x00 - .word ov01_0232F41C - .word ov01_0232F478 - .word ov01_0232F538 - .word ov01_0232F558 - .word ov01_0232F55C - .word ov01_0232F73C - .word ov01_0232F7BC - .word ov01_0232F7EC - .global ov01_0233B020 -ov01_0233B020: - .byte 0x42, 0x41, 0x43, 0x4B, 0x2F, 0x73, 0x30, 0x37 - .byte 0x70, 0x30, 0x32, 0x61, 0x2E, 0x62, 0x67, 0x70, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233B034 -ov01_0233B034: - .byte 0x0D, 0x00, 0x00, 0x00 - .word ov01_0232F924 - .word ov01_0232F980 - .word ov01_0232FA30 - .word ov01_0232FA50 - .word ov01_0232FA54 - .word ov01_0232FC28 - .word ov01_0232FD00 - .word ov01_0232FD30 - .global ov01_0233B058 -ov01_0233B058: - .byte 0x42, 0x41, 0x43, 0x4B, 0x2F, 0x65, 0x78, 0x70, 0x62, 0x61, 0x63, 0x6B, 0x2E, 0x62, 0x67, 0x70 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233B06C -ov01_0233B06C: - .byte 0x0D, 0x00, 0x00, 0x00 - .word ov01_0232FDC0 - .word ov01_0232FE1C - .word ov01_0232FECC - .word ov01_0232FEEC - .word ov01_0232FEF0 - .word ov01_023300C4 - .word ov01_0233019C - .word ov01_023301CC - .global ov01_0233B090 -ov01_0233B090: - .byte 0x42, 0x41, 0x43, 0x4B, 0x2F, 0x65, 0x78, 0x70 - .byte 0x62, 0x61, 0x63, 0x6B, 0x2E, 0x62, 0x67, 0x70, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233B0A4 -ov01_0233B0A4: - .byte 0x47, 0x52, 0x4F, 0x55 - .byte 0x4E, 0x44, 0x2F, 0x73, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x34, 0x2E, 0x77, 0x61, 0x6E, 0x00 - .global ov01_0233B0B8 -ov01_0233B0B8: - .byte 0x47, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x2F, 0x73, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x32, 0x2E - .byte 0x77, 0x61, 0x6E, 0x00 - .global ov01_0233B0CC -ov01_0233B0CC: - .byte 0x47, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x2F, 0x73, 0x31, 0x38, 0x70, 0x30 - .byte 0x31, 0x61, 0x33, 0x2E, 0x77, 0x61, 0x6E, 0x00 - .global ov01_0233B0E0 -ov01_0233B0E0: - .byte 0x0D, 0x00, 0x00, 0x00 - .word ov01_02330224 - .word ov01_02330594 - .word ov01_023306DC - .word ov01_023306FC - .word ov01_02330700 - .word ov01_023309F4 - .word ov01_02330ACC - .word ov01_02330D58 - .global ov01_0233B104 -ov01_0233B104: - .byte 0x47, 0x52, 0x4F, 0x55 - .byte 0x4E, 0x44, 0x2F, 0x73, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x31, 0x2E, 0x77, 0x61, 0x6E, 0x00 - .global ov01_0233B118 -ov01_0233B118: - .byte 0x42, 0x41, 0x43, 0x4B, 0x2F, 0x73, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x2E, 0x62, 0x67, 0x70 - .byte 0x00, 0x00, 0x00, 0x00 - .global PRINTS_STRINGS -PRINTS_STRINGS: - .byte 0x61, 0x73, 0x31, 0x30, 0x36, 0x00, 0x00, 0x00 - .global ov01_0233B134 -ov01_0233B134: - .byte 0x61, 0x73, 0x30, 0x39 - .byte 0x37, 0x00, 0x00, 0x00 - .global ov01_0233B13C -ov01_0233B13C: - .byte 0x61, 0x73, 0x31, 0x30, 0x35, 0x00, 0x00, 0x00 - .global ov01_0233B144 -ov01_0233B144: - .byte 0x61, 0x73, 0x31, 0x30 - .byte 0x37, 0x00, 0x00, 0x00 - .global ov01_0233B14C -ov01_0233B14C: - .byte 0x61, 0x73, 0x31, 0x30, 0x33, 0x00, 0x00, 0x00 - .global ov01_0233B154 -ov01_0233B154: - .byte 0x61, 0x73, 0x31, 0x30 - .byte 0x32, 0x00, 0x00, 0x00 - .global ov01_0233B15C -ov01_0233B15C: - .byte 0x61, 0x73, 0x30, 0x39, 0x38, 0x00, 0x00, 0x00 - .global ov01_0233B164 -ov01_0233B164: - .byte 0x61, 0x73, 0x30, 0x37 - .byte 0x32, 0x00, 0x00, 0x00 - .global ov01_0233B16C -ov01_0233B16C: - .byte 0x61, 0x73, 0x30, 0x39, 0x36, 0x00, 0x00, 0x00 - .global ov01_0233B174 -ov01_0233B174: - .byte 0x61, 0x73, 0x30, 0x39 - .byte 0x35, 0x00, 0x00, 0x00 - .global ov01_0233B17C -ov01_0233B17C: - .byte 0x61, 0x73, 0x30, 0x39, 0x34, 0x00, 0x00, 0x00 - .global ov01_0233B184 -ov01_0233B184: - .byte 0x61, 0x73, 0x30, 0x38 - .byte 0x32, 0x00, 0x00, 0x00 - .global ov01_0233B18C -ov01_0233B18C: - .byte 0x61, 0x73, 0x30, 0x35, 0x34, 0x00, 0x00, 0x00 - .global ov01_0233B194 -ov01_0233B194: - .byte 0x61, 0x73, 0x30, 0x38 - .byte 0x31, 0x00, 0x00, 0x00 - .global ov01_0233B19C -ov01_0233B19C: - .byte 0x61, 0x73, 0x30, 0x37, 0x39, 0x00, 0x00, 0x00 - .global ov01_0233B1A4 -ov01_0233B1A4: - .byte 0x61, 0x73, 0x30, 0x37 - .byte 0x37, 0x00, 0x00, 0x00 - .global ov01_0233B1AC -ov01_0233B1AC: - .byte 0x61, 0x73, 0x30, 0x37, 0x36, 0x00, 0x00, 0x00 - .global ov01_0233B1B4 -ov01_0233B1B4: - .byte 0x61, 0x73, 0x30, 0x37 - .byte 0x34, 0x00, 0x00, 0x00 - .global ov01_0233B1BC -ov01_0233B1BC: - .byte 0x61, 0x73, 0x30, 0x37, 0x33, 0x00, 0x00, 0x00 - .global ov01_0233B1C4 -ov01_0233B1C4: - .byte 0x61, 0x73, 0x30, 0x33 - .byte 0x31, 0x00, 0x00, 0x00 - .global ov01_0233B1CC -ov01_0233B1CC: - .byte 0x61, 0x73, 0x30, 0x37, 0x31, 0x00, 0x00, 0x00 - .global ov01_0233B1D4 -ov01_0233B1D4: - .byte 0x61, 0x73, 0x30, 0x36 - .byte 0x38, 0x00, 0x00, 0x00 - .global ov01_0233B1DC -ov01_0233B1DC: - .byte 0x61, 0x73, 0x30, 0x36, 0x37, 0x00, 0x00, 0x00 - .global ov01_0233B1E4 -ov01_0233B1E4: - .byte 0x61, 0x73, 0x30, 0x36 - .byte 0x36, 0x00, 0x00, 0x00 - .global ov01_0233B1EC -ov01_0233B1EC: - .byte 0x61, 0x73, 0x30, 0x36, 0x34, 0x00, 0x00, 0x00 - .global ov01_0233B1F4 -ov01_0233B1F4: - .byte 0x61, 0x73, 0x30, 0x36 - .byte 0x30, 0x00, 0x00, 0x00 - .global ov01_0233B1FC -ov01_0233B1FC: - .byte 0x61, 0x73, 0x30, 0x35, 0x39, 0x00, 0x00, 0x00 - .global ov01_0233B204 -ov01_0233B204: - .byte 0x61, 0x73, 0x30, 0x30 - .byte 0x31, 0x00, 0x00, 0x00 - .global ov01_0233B20C -ov01_0233B20C: - .byte 0x61, 0x73, 0x30, 0x35, 0x36, 0x00, 0x00, 0x00 - .global ov01_0233B214 -ov01_0233B214: - .byte 0x61, 0x73, 0x30, 0x35 - .byte 0x33, 0x00, 0x00, 0x00 - .global ov01_0233B21C -ov01_0233B21C: - .byte 0x61, 0x73, 0x30, 0x35, 0x32, 0x00, 0x00, 0x00 - .global ov01_0233B224 -ov01_0233B224: - .byte 0x61, 0x73, 0x30, 0x35 - .byte 0x31, 0x00, 0x00, 0x00 - .global ov01_0233B22C -ov01_0233B22C: - .byte 0x61, 0x73, 0x30, 0x35, 0x30, 0x00, 0x00, 0x00 - .global ov01_0233B234 -ov01_0233B234: - .byte 0x61, 0x73, 0x30, 0x34 - .byte 0x39, 0x00, 0x00, 0x00 - .global ov01_0233B23C -ov01_0233B23C: - .byte 0x61, 0x73, 0x30, 0x34, 0x38, 0x00, 0x00, 0x00 - .global ov01_0233B244 -ov01_0233B244: - .byte 0x61, 0x73, 0x30, 0x34 - .byte 0x37, 0x00, 0x00, 0x00 - .global ov01_0233B24C -ov01_0233B24C: - .byte 0x61, 0x73, 0x30, 0x34, 0x36, 0x00, 0x00, 0x00 - .global ov01_0233B254 -ov01_0233B254: - .byte 0x61, 0x73, 0x30, 0x34 - .byte 0x34, 0x00, 0x00, 0x00 - .global ov01_0233B25C -ov01_0233B25C: - .byte 0x61, 0x73, 0x30, 0x34, 0x33, 0x00, 0x00, 0x00 - .global ov01_0233B264 -ov01_0233B264: - .byte 0x61, 0x73, 0x30, 0x34 - .byte 0x31, 0x00, 0x00, 0x00 - .global ov01_0233B26C -ov01_0233B26C: - .byte 0x61, 0x73, 0x30, 0x33, 0x38, 0x00, 0x00, 0x00 - .global ov01_0233B274 -ov01_0233B274: - .byte 0x61, 0x73, 0x30, 0x33 - .byte 0x35, 0x00, 0x00, 0x00 - .global ov01_0233B27C -ov01_0233B27C: - .byte 0x61, 0x73, 0x30, 0x33, 0x34, 0x00, 0x00, 0x00 - .global ov01_0233B284 -ov01_0233B284: - .byte 0x61, 0x73, 0x30, 0x38 - .byte 0x38, 0x00, 0x00, 0x00 - .global ov01_0233B28C -ov01_0233B28C: - .byte 0x61, 0x73, 0x30, 0x32, 0x36, 0x00, 0x00, 0x00 - .global ov01_0233B294 -ov01_0233B294: - .byte 0x61, 0x73, 0x30, 0x32 - .byte 0x34, 0x00, 0x00, 0x00 - .global ov01_0233B29C -ov01_0233B29C: - .byte 0x61, 0x73, 0x30, 0x32, 0x33, 0x00, 0x00, 0x00 - .global ov01_0233B2A4 -ov01_0233B2A4: - .byte 0x61, 0x73, 0x30, 0x31 - .byte 0x39, 0x00, 0x00, 0x00 - .global ov01_0233B2AC -ov01_0233B2AC: - .byte 0x61, 0x73, 0x30, 0x31, 0x37, 0x00, 0x00, 0x00 - .global ov01_0233B2B4 -ov01_0233B2B4: - .byte 0x61, 0x73, 0x30, 0x31 - .byte 0x35, 0x00, 0x00, 0x00 - .global ov01_0233B2BC -ov01_0233B2BC: - .byte 0x61, 0x73, 0x30, 0x31, 0x34, 0x00, 0x00, 0x00 - .global ov01_0233B2C4 -ov01_0233B2C4: - .byte 0x61, 0x73, 0x30, 0x31 - .byte 0x33, 0x00, 0x00, 0x00 - .global ov01_0233B2CC -ov01_0233B2CC: - .byte 0x61, 0x73, 0x30, 0x31, 0x32, 0x00, 0x00, 0x00 - .global ov01_0233B2D4 -ov01_0233B2D4: - .byte 0x61, 0x73, 0x30, 0x30 - .byte 0x38, 0x00, 0x00, 0x00 - .global ov01_0233B2DC -ov01_0233B2DC: - .byte 0x61, 0x73, 0x30, 0x30, 0x37, 0x00, 0x00, 0x00 - .global ov01_0233B2E4 -ov01_0233B2E4: - .byte 0x61, 0x73, 0x30, 0x30 - .byte 0x36, 0x00, 0x00, 0x00 - .global ov01_0233B2EC -ov01_0233B2EC: - .byte 0x61, 0x73, 0x30, 0x30, 0x35, 0x00, 0x00, 0x00 - .global ov01_0233B2F4 -ov01_0233B2F4: - .byte 0x61, 0x73, 0x30, 0x30 - .byte 0x33, 0x00, 0x00, 0x00 - .global ov01_0233B2FC -ov01_0233B2FC: - .byte 0x61, 0x73, 0x30, 0x30, 0x32, 0x00, 0x00, 0x00 - .global ov01_0233B304 -ov01_0233B304: - .byte 0x61, 0x73, 0x31, 0x30 - .byte 0x34, 0x00, 0x00, 0x00 - .global ov01_0233B30C -ov01_0233B30C: - .byte 0x61, 0x73, 0x31, 0x30, 0x38, 0x00, 0x00, 0x00 - .global PRINTS_STRUCT -PRINTS_STRUCT: - .byte 0x1B, 0x01, 0x00, 0x00 - .global ov01_0233B318 -ov01_0233B318: - .word ov01_0233B204 - .byte 0x9F, 0x00, 0x00, 0x00 - .word ov01_0233B2FC - .byte 0x85, 0x00, 0x00, 0x00 - .word ov01_0233B2F4 - .byte 0x48, 0x01, 0x00, 0x00 - .word ov01_0233B2EC - .byte 0x49, 0x01, 0x00, 0x00 - .word ov01_0233B2E4 - .byte 0xAE, 0x01, 0x00, 0x00 - .word ov01_0233B2DC - .byte 0xA0, 0x00, 0x00, 0x00 - .word ov01_0233B2D4 - .byte 0x8F, 0x00, 0x00, 0x00 - .word ov01_0233B2CC - .byte 0x08, 0x00, 0x00, 0x00 - .word ov01_0233B2C4 - .byte 0x09, 0x00, 0x00, 0x00 - .word ov01_0233B2BC - .byte 0x18, 0x01, 0x00, 0x00 - .word ov01_0233B2B4 - .byte 0xAB, 0x01, 0x00, 0x00 - .word ov01_0233B2AC - .byte 0xE8, 0x01, 0x00, 0x00 - .word ov01_0233B2A4 - .byte 0x1A, 0x01, 0x00, 0x00 - .word ov01_0233B29C - .byte 0x19, 0x01, 0x00, 0x00 - .word ov01_0233B294 - .byte 0x07, 0x00, 0x00, 0x00 - .word ov01_0233B28C - .byte 0x98, 0x00, 0x00, 0x00 - .word ov01_0233B1C4 - .byte 0xA8, 0x01, 0x00, 0x00 - .word ov01_0233B27C - .byte 0xA6, 0x01, 0x00, 0x00 - .word ov01_0233B274 - .byte 0x34, 0x00, 0x00, 0x00 - .word ov01_0233B26C - .byte 0x1F, 0x01, 0x00, 0x00 - .word ov01_0233B264 - .byte 0x9D, 0x00, 0x00, 0x00 - .word ov01_0233B25C - .byte 0x1D, 0x01, 0x00, 0x00 - .word ov01_0233B254 - .byte 0xA7, 0x01, 0x00, 0x00 - .word ov01_0233B24C - .byte 0x19, 0x00, 0x00, 0x00 - .word ov01_0233B244 - .byte 0xA9, 0x01, 0x00, 0x00 - .word ov01_0233B23C - .byte 0x04, 0x00, 0x00, 0x00 - .word ov01_0233B234 - .byte 0x9B, 0x00, 0x00, 0x00 - .word ov01_0233B22C - .byte 0x02, 0x00, 0x00, 0x00 - .word ov01_0233B224 - .byte 0x01, 0x00, 0x00, 0x00 - .word ov01_0233B21C - .byte 0x03, 0x00, 0x00, 0x00 - .word ov01_0233B214 - .byte 0x99, 0x00, 0x00, 0x00 - .word ov01_0233B18C - .byte 0x35, 0x00, 0x00, 0x00 - .word ov01_0233B20C - .byte 0xAD, 0x01, 0x00, 0x00 - .word ov01_0233B1FC - .byte 0xAC, 0x01, 0x00, 0x00 - .word ov01_0233B1F4 - .byte 0x9C, 0x00, 0x00, 0x00 - .word ov01_0233B1EC - .byte 0x1E, 0x01, 0x00, 0x00 - .word ov01_0233B1E4 - .byte 0x9A, 0x00, 0x00, 0x00 - .word ov01_0233B1DC - .byte 0xAA, 0x01, 0x00, 0x00 - .word ov01_0233B1D4 - .byte 0x1A, 0x00, 0x00, 0x00 - .word ov01_0233B1CC - .byte 0x20, 0x01, 0x00, 0x00 - .word ov01_0233B164 - .byte 0x05, 0x00, 0x00, 0x00 - .word ov01_0233B1BC - .byte 0x06, 0x00, 0x00, 0x00 - .word ov01_0233B1B4 - .byte 0x1C, 0x01, 0x00, 0x00 - .word ov01_0233B1AC - .byte 0x9E, 0x00, 0x00, 0x00 - .word ov01_0233B1A4 - .byte 0x26, 0x00, 0x00, 0x00 - .word ov01_0233B19C - .byte 0x02, 0x01, 0x00, 0x00 - .word ov01_0233B194 - .byte 0xB6, 0x01, 0x00, 0x00 - .word ov01_0233B184 - .byte 0x03, 0x01, 0x00, 0x00 - .word ov01_0233B284 - .byte 0xE9, 0x01, 0x00, 0x00 - .word ov01_0233B17C - .byte 0xEA, 0x01, 0x00, 0x00 - .word ov01_0233B174 - .byte 0xB7, 0x01, 0x00, 0x00 - .word ov01_0233B16C - .byte 0xB8, 0x01, 0x00, 0x00 - .word ov01_0233B134 - .byte 0x25, 0x00, 0x00, 0x00 - .word ov01_0233B15C - .byte 0x86, 0x00, 0x00, 0x00 - .word ov01_0233B154 - .byte 0x87, 0x00, 0x00, 0x00 - .word ov01_0233B14C - .byte 0x88, 0x00, 0x00, 0x00 - .word ov01_0233B304 - .byte 0xC4, 0x00, 0x00, 0x00 - .word ov01_0233B13C - .byte 0xC5, 0x00, 0x00, 0x00 - .word PRINTS_STRINGS - .byte 0x00, 0x02, 0x00, 0x00 - .word ov01_0233B144 - .byte 0x01, 0x02, 0x00, 0x00 - .word ov01_0233B30C - .byte 0x00, 0x00, 0x00, 0x00 - .word ov01_0233B204 - .global ov01_0233B504 -ov01_0233B504: - .byte 0x72, 0x6F, 0x6D, 0x30 - .byte 0x3A, 0x47, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x2F, 0x25, 0x73, 0x2E, 0x77, 0x61, 0x6E, 0x00, 0x00 - .global MAIN_MENU_WINDOW_PARAMS_1 -MAIN_MENU_WINDOW_PARAMS_1: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global MAIN_MENU_WINDOW_PARAMS_2 -MAIN_MENU_WINDOW_PARAMS_2: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global MAIN_MENU_WINDOW_PARAMS_3 -MAIN_MENU_WINDOW_PARAMS_3: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x12, 0x1C, 0x04, 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global MAIN_MENU_WINDOW_PARAMS_4 -MAIN_MENU_WINDOW_PARAMS_4: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233B558 -ov01_0233B558: - .byte 0x04, 0x00, 0x00, 0x00 - .word CreateMainMenus - .word ov01_023316CC - .word ov01_02331784 - .global CONTINUE_CHOICE -CONTINUE_CHOICE: -#ifdef JAPAN - .byte 0x08, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .byte 0x0E, 0x04, 0x00, 0x00 -#else - .byte 0xE0, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xE1, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .byte 0xE6, 0x01, 0x00, 0x00 -#endif - .byte 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00 - .global SUBMENU -SUBMENU: - .byte 0x02, 0x00, 0x00, 0x00 -#ifdef JAPAN - .byte 0xDD, 0x03, 0xDE, 0x03, 0x14, 0x00, 0x00, 0x00, 0xFD, 0x03, 0xFE, 0x03 - .byte 0x08, 0x00, 0x00, 0x00, 0xE7, 0x03, 0xE8, 0x03, 0x09, 0x00, 0x00, 0x00, 0xE9, 0x03, 0xEA, 0x03 - .byte 0x18, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x07, 0x00, 0x00, 0x00, 0xE5, 0x03, 0xE6, 0x03 - .byte 0x10, 0x00, 0x00, 0x00, 0xF5, 0x03, 0xF6, 0x03, 0x21, 0x00, 0x00, 0x00, 0x05, 0x04, 0x06, 0x04 -#else - .byte 0xB5, 0x01, 0xB6, 0x01, 0x14, 0x00, 0x00, 0x00, 0xD5, 0x01, 0xD6, 0x01 - .byte 0x08, 0x00, 0x00, 0x00, 0xBF, 0x01, 0xC0, 0x01, 0x09, 0x00, 0x00, 0x00, 0xC1, 0x01, 0xC2, 0x01 - .byte 0x18, 0x00, 0x00, 0x00, 0xDB, 0x01, 0xDC, 0x01, 0x07, 0x00, 0x00, 0x00, 0xBD, 0x01, 0xBE, 0x01 - .byte 0x10, 0x00, 0x00, 0x00, 0xCD, 0x01, 0xCE, 0x01, 0x21, 0x00, 0x00, 0x00, 0xDD, 0x01, 0xDE, 0x01 -#endif - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global MAIN_MENU -MAIN_MENU: - .byte 0x02, 0x00, 0x00, 0x00 -#ifdef JAPAN - .byte 0xDD, 0x03, 0xDE, 0x03 - .byte 0x07, 0x00, 0x00, 0x00, 0xE5, 0x03, 0xE6, 0x03, 0x03, 0x00, 0x00, 0x00, 0xDF, 0x03, 0xE0, 0x03 - .byte 0x1A, 0x00, 0x00, 0x00, 0xE1, 0x03, 0xE2, 0x03, 0x1B, 0x00, 0x00, 0x00, 0xE1, 0x03, 0xE2, 0x03 - .byte 0x0A, 0x00, 0x00, 0x00, 0xEB, 0x03, 0xEC, 0x03, 0x0B, 0x00, 0x00, 0x00, 0xED, 0x03, 0xEE, 0x03 - .byte 0x0C, 0x00, 0x00, 0x00, 0xEF, 0x03, 0xF0, 0x03, 0x0D, 0x00, 0x00, 0x00, 0xE3, 0x03, 0xE4, 0x03 - .byte 0x0E, 0x00, 0x00, 0x00, 0xF1, 0x03, 0xF2, 0x03, 0x0F, 0x00, 0x00, 0x00, 0xF3, 0x03, 0xF4, 0x03 - .byte 0x11, 0x00, 0x00, 0x00, 0xF7, 0x03, 0xF8, 0x03, 0x12, 0x00, 0x00, 0x00, 0xF9, 0x03, 0xFA, 0x03 - .byte 0x13, 0x00, 0x00, 0x00, 0xFB, 0x03, 0xFC, 0x03, 0x19, 0x00, 0x00, 0x00, 0xDB, 0x03, 0xDC, 0x03 - .byte 0x1C, 0x00, 0x00, 0x00, 0x0A, 0x04, 0x0C, 0x04, 0x1D, 0x00, 0x00, 0x00, 0x0B, 0x04, 0x0C, 0x04 - .byte 0x1E, 0x00, 0x00, 0x00, 0x0A, 0x04, 0x0D, 0x04, 0x1F, 0x00, 0x00, 0x00, 0x0B, 0x04, 0x0D, 0x04 -#else - .byte 0xB5, 0x01, 0xB6, 0x01 - .byte 0x07, 0x00, 0x00, 0x00, 0xBD, 0x01, 0xBE, 0x01, 0x03, 0x00, 0x00, 0x00, 0xB7, 0x01, 0xB8, 0x01 - .byte 0x1A, 0x00, 0x00, 0x00, 0xB9, 0x01, 0xBA, 0x01, 0x1B, 0x00, 0x00, 0x00, 0xB9, 0x01, 0xBA, 0x01 - .byte 0x0A, 0x00, 0x00, 0x00, 0xC3, 0x01, 0xC4, 0x01, 0x0B, 0x00, 0x00, 0x00, 0xC5, 0x01, 0xC6, 0x01 - .byte 0x0C, 0x00, 0x00, 0x00, 0xC7, 0x01, 0xC8, 0x01, 0x0D, 0x00, 0x00, 0x00, 0xBB, 0x01, 0xBC, 0x01 - .byte 0x0E, 0x00, 0x00, 0x00, 0xC9, 0x01, 0xCA, 0x01, 0x0F, 0x00, 0x00, 0x00, 0xCB, 0x01, 0xCC, 0x01 - .byte 0x11, 0x00, 0x00, 0x00, 0xCF, 0x01, 0xD0, 0x01, 0x12, 0x00, 0x00, 0x00, 0xD1, 0x01, 0xD2, 0x01 - .byte 0x13, 0x00, 0x00, 0x00, 0xD3, 0x01, 0xD4, 0x01, 0x19, 0x00, 0x00, 0x00, 0xB3, 0x01, 0xB4, 0x01 - .byte 0x1C, 0x00, 0x00, 0x00, 0xE2, 0x01, 0xE4, 0x01, 0x1D, 0x00, 0x00, 0x00, 0xE3, 0x01, 0xE4, 0x01 - .byte 0x1E, 0x00, 0x00, 0x00, 0xE2, 0x01, 0xE5, 0x01, 0x1F, 0x00, 0x00, 0x00, 0xE3, 0x01, 0xE5, 0x01 -#endif - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233B670 -ov01_0233B670: - .byte 0x5B, 0x53, 0x3A, 0x31, 0x33, 0x5D, 0x00, 0x00 - .global ov01_0233B678 -ov01_0233B678: - .byte 0x5B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3A, 0x30, 0x5D, 0x5B, 0x43, 0x4C, 0x55, 0x4D, 0x5F - .byte 0x53, 0x45, 0x54, 0x3A, 0x32, 0x36, 0x5D, 0x5B, 0x43, 0x53, 0x3A, 0x44, 0x5D, 0x5B, 0x73, 0x74 - .byte 0x72, 0x69, 0x6E, 0x67, 0x3A, 0x31, 0x5D, 0x5B, 0x43, 0x52, 0x5D, 0x00 - .global ov01_0233B6A4 -ov01_0233B6A4: - .byte 0x5B, 0x4D, 0x3A, 0x53 -#ifdef JAPAN - .byte 0x33, 0x5D, 0x00, 0x00 -#else - .byte 0x33, 0x5D, 0x5B, 0x53, 0x3A, 0x35, 0x5D, 0x00 -#endif - .global ov01_0233B6B0 -ov01_0233B6B0: - .byte 0x5B, 0x4D, 0x3A, 0x52 -#ifdef JAPAN - .byte 0x37, 0x5D, 0x00, 0x00 -#else - .byte 0x37, 0x5D, 0x5B, 0x53 - .byte 0x3A, 0x35, 0x5D, 0x00 -#endif - .global ov01_0233B6BC -ov01_0233B6BC: - .byte 0x5B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3A, 0x30, 0x5D, 0x5B, 0x43 - .byte 0x4C, 0x55, 0x4D, 0x5F, 0x53, 0x45, 0x54, 0x3A, 0x32, 0x36, 0x5D, 0x5B, 0x43, 0x53, 0x3A, 0x45 - .byte 0x5D, 0x5B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3A, 0x31, 0x5D, 0x5B, 0x43, 0x52, 0x5D, 0x00 - .byte 0x0D, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x50, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .global ov01_0233B700 -ov01_0233B700: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00 - .global ov01_0233B70C -ov01_0233B70C: - .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .word ov01_023329F8 - .word ov01_02332ACC - .global MAIN_MENU_WINDOW_PARAMS_5 -MAIN_MENU_WINDOW_PARAMS_5: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1C, 0x0E, 0x00, 0xFE, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .global MAIN_MENU_WINDOW_PARAMS_6 -MAIN_MENU_WINDOW_PARAMS_6: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x12, 0x14, 0x04, 0x00, 0xFE, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .global MAIN_MENU_WINDOW_PARAMS_7 -MAIN_MENU_WINDOW_PARAMS_7: - .byte 0x00, 0x00, 0x00, 0x00, 0x18, 0x12, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .global MAIN_MENU_ITEMS_CONFIRM -MAIN_MENU_ITEMS_CONFIRM: -#ifdef JAPAN - .byte 0x21, 0x24, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x22, 0x24, 0x00, 0x00 -#else - .byte 0xF7, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xF8, 0x01, 0x00, 0x00 -#endif - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .global CLEAR_MARK_PERFORMANCE_PROGRESS_FLAGS -CLEAR_MARK_PERFORMANCE_PROGRESS_FLAGS: - .byte 0x0C, 0x00, 0x00, 0x00 - .byte 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 - .byte 0x11, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00 - .byte 0x18, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00 - .global ov01_0233B798 -ov01_0233B798: - .byte 0x63, 0x6F, 0x6E, 0x74, 0x69, 0x6E, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x20, 0x25, 0x64 - .byte 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x0A - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233B7BC -ov01_0233B7BC: - .byte 0x5B, 0x42, 0x41, 0x52, 0x5D, 0x00, 0x00, 0x00 - .global ov01_0233B7C4 -ov01_0233B7C4: - .byte 0x5B, 0x74, 0x69, 0x6D - .byte 0x65, 0x3A, 0x30, 0x5D, 0x00, 0x00, 0x00, 0x00 - .global MAIN_MENU_WINDOW_PARAMS_8 -MAIN_MENU_WINDOW_PARAMS_8: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1C, 0x00 - .byte 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233B7E0 -ov01_0233B7E0: - .byte 0x04, 0x00, 0x00, 0x00 - .word ov01_023336A0 - .word ov01_02333768 - .word ov01_02333794 - .global MAIN_MENU_WINDOW_PARAMS_9 -MAIN_MENU_WINDOW_PARAMS_9: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00 - .byte 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233B800 -ov01_0233B800: - .byte 0x04, 0x00, 0x00, 0x00 - .word ov01_02333994 - .word ov01_023339F8 - .word ov01_02333A34 - .global MAIN_DEBUG_MENU_ITEMS_1 -MAIN_DEBUG_MENU_ITEMS_1: -#ifdef JAPAN -#define MAIN_DEBUG_MENU_1_OFFSET 0x228 -#else -#define MAIN_DEBUG_MENU_1_OFFSET 0 -#endif - .word 0x1EB + MAIN_DEBUG_MENU_1_OFFSET - .byte 0x02, 0x00, 0x00, 0x00 - .word 0x1EC + MAIN_DEBUG_MENU_1_OFFSET - .byte 0x03, 0x00, 0x00, 0x00 - .word 0x1EE + MAIN_DEBUG_MENU_1_OFFSET - .byte 0x05, 0x00, 0x00, 0x00 - .word 0x1EF + MAIN_DEBUG_MENU_1_OFFSET - .byte 0x06, 0x00, 0x00, 0x00 - .word 0x1F0 + MAIN_DEBUG_MENU_1_OFFSET - .byte 0x07, 0x00, 0x00, 0x00 - .word 0x1F1 + MAIN_DEBUG_MENU_1_OFFSET - .byte 0x08, 0x00, 0x00, 0x00 - .word 0x1F2 + MAIN_DEBUG_MENU_1_OFFSET - .byte 0x09, 0x00, 0x00, 0x00 - .word 0x1F3 + MAIN_DEBUG_MENU_1_OFFSET - .byte 0x0A, 0x00, 0x00, 0x00 - .word 0x1F4 + MAIN_DEBUG_MENU_1_OFFSET - .byte 0x0B, 0x00, 0x00, 0x00 - .word 0x1F5 + MAIN_DEBUG_MENU_1_OFFSET - .byte 0x0C, 0x00, 0x00, 0x00 - .word 0x1F6 + MAIN_DEBUG_MENU_1_OFFSET - .byte 0x0D, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00 - .global MAIN_MENU_WINDOW_PARAMS_10 -MAIN_MENU_WINDOW_PARAMS_10: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00 - .byte 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233B880 -ov01_0233B880: - .byte 0x04, 0x00, 0x00, 0x00 - .word ov01_02333C20 - .word ov01_02333C7C - .word ov01_02333CB8 - .global MAIN_DEBUG_MENU_ITEMS_2 -MAIN_DEBUG_MENU_ITEMS_2: -#if defined(EUROPE) -#define MAIN_DEBUG_MENU_2_OFFSET 2 -#elif defined(JAPAN) -#define MAIN_DEBUG_MENU_2_OFFSET -0x379B -#else -#define MAIN_DEBUG_MENU_2_OFFSET 0 -#endif - .word 0x3C86 + MAIN_DEBUG_MENU_2_OFFSET - .byte 0x01, 0x00, 0x00, 0x00 - .word 0x3C87 + MAIN_DEBUG_MENU_2_OFFSET - .byte 0x02, 0x00, 0x00, 0x00 - .word 0x3C88 + MAIN_DEBUG_MENU_2_OFFSET - .byte 0x03, 0x00, 0x00, 0x00 - .word 0x3C89 + MAIN_DEBUG_MENU_2_OFFSET - .byte 0x04, 0x00, 0x00, 0x00 - .word 0x3C84 + MAIN_DEBUG_MENU_2_OFFSET - .byte 0x06, 0x00, 0x00, 0x00 - .word 0x3C85 + MAIN_DEBUG_MENU_2_OFFSET - .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00 - .global ov01_0233B8C8 -ov01_0233B8C8: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x0C, 0x1C, 0x07, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233B8D8 -ov01_0233B8D8: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1C, 0x14, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233B8E8 -ov01_0233B8E8: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1C, 0x08, 0x01, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233B8F8 -ov01_0233B8F8: -#ifdef JAPAN - .byte 0xDC, 0x3B, 0xDD, 0x3B, 0xDE, 0x3B, 0xDF, 0x3B - .byte 0xE0, 0x3B, 0xE1, 0x3B, 0xE2, 0x3B, 0xE3, 0x3B, 0xE4, 0x3B, 0xE5, 0x3B, 0xE6, 0x3B, 0xE7, 0x3B - .byte 0xE8, 0x3B, 0xE9, 0x3B, 0xEA, 0x3B, 0xEB, 0x3B, 0xEC, 0x3B, 0xED, 0x3B, 0xEE, 0x3B, 0xEF, 0x3B - .byte 0xF0, 0x3B, 0xF1, 0x3B, 0xF2, 0x3B, 0xF3, 0x3B, 0xF4, 0x3B, 0xF5, 0x3B, 0xF6, 0x3B, 0xF7, 0x3B - .byte 0xF8, 0x3B, 0xF9, 0x3B, 0xFA, 0x3B, 0xFB, 0x3B, 0xFC, 0x3B, 0xFD, 0x3B, 0xFE, 0x3B, 0xFF, 0x3B - .byte 0x00, 0x3C, 0x01, 0x3C, 0x02, 0x3C, 0x03, 0x3C, 0x04, 0x3C, 0x05, 0x3C, 0x06, 0x3C, 0x07, 0x3C - .byte 0x08, 0x3C, 0x09, 0x3C, 0x0A, 0x3C, 0x0B, 0x3C, 0x0C, 0x3C, 0x0D, 0x3C, 0x0E, 0x3C, 0x0F, 0x3C - .byte 0x10, 0x3C, 0x11, 0x3C, 0x12, 0x3C, 0x13, 0x3C, 0x14, 0x3C, 0x15, 0x3C, 0x16, 0x3C, 0x17, 0x3C - .byte 0x18, 0x3C, 0x19, 0x3C, 0x1A, 0x3C, 0x1B, 0x3C, 0x1C, 0x3C, 0x1D, 0x3C, 0x1E, 0x3C, 0x1F, 0x3C - .byte 0x20, 0x3C, 0x21, 0x3C, 0x22, 0x3C, 0x23, 0x3C, 0x24, 0x3C, 0x25, 0x3C, 0x26, 0x3C, 0x27, 0x3C - .byte 0x28, 0x3C, 0x29, 0x3C, 0x2A, 0x3C, 0x2B, 0x3C, 0x2C, 0x3C, 0x2D, 0x3C, 0x2E, 0x3C, 0x2F, 0x3C - .byte 0x30, 0x3C, 0x31, 0x3C, 0x32, 0x3C, 0x33, 0x3C, 0x34, 0x3C, 0x35, 0x3C, 0x36, 0x3C, 0x37, 0x3C - .byte 0x38, 0x3C, 0x39, 0x3C, 0x3A, 0x3C, 0x3B, 0x3C, 0x3C, 0x3C, 0x3D, 0x3C, 0x3E, 0x3C, 0x3F, 0x3C - .byte 0x40, 0x3C, 0x41, 0x3C, 0x42, 0x3C, 0x43, 0x3C, 0x44, 0x3C, 0x45, 0x3C, 0x46, 0x3C, 0x47, 0x3C - .byte 0x48, 0x3C, 0x49, 0x3C, 0x4A, 0x3C, 0x4B, 0x3C, 0x4C, 0x3C, 0x4D, 0x3C, 0x4E, 0x3C, 0x4F, 0x3C - .byte 0x50, 0x3C, 0x51, 0x3C, 0x52, 0x3C, 0x53, 0x3C, 0x54, 0x3C, 0x55, 0x3C, 0x56, 0x3C, 0x57, 0x3C - .byte 0x58, 0x3C, 0x59, 0x3C, 0x5A, 0x3C, 0x5B, 0x3C, 0x5C, 0x3C, 0x5D, 0x3C, 0x5E, 0x3C, 0x5F, 0x3C - .byte 0x60, 0x3C, 0x61, 0x3C, 0x62, 0x3C, 0x63, 0x3C, 0x64, 0x3C, 0x65, 0x3C, 0x66, 0x3C, 0x67, 0x3C - .byte 0x68, 0x3C, 0x69, 0x3C, 0x6A, 0x3C, 0x6B, 0x3C, 0x6C, 0x3C, 0x6D, 0x3C, 0x6E, 0x3C, 0x6F, 0x3C - .byte 0x70, 0x3C, 0x71, 0x3C, 0x72, 0x3C, 0x73, 0x3C, 0x74, 0x3C, 0x75, 0x3C, 0x76, 0x3C, 0x77, 0x3C - .byte 0x78, 0x3C, 0x79, 0x3C, 0x7A, 0x3C, 0x7B, 0x3C, 0x7C, 0x3C, 0x7D, 0x3C, 0x7E, 0x3C, 0x7F, 0x3C - .byte 0x80, 0x3C, 0x81, 0x3C, 0x82, 0x3C, 0x83, 0x3C, 0x84, 0x3C, 0x85, 0x3C, 0x86, 0x3C, 0x87, 0x3C - .byte 0x88, 0x3C, 0x89, 0x3C, 0x8A, 0x3C, 0x8B, 0x3C, 0x8C, 0x3C, 0x8D, 0x3C, 0x8E, 0x3C, 0x8F, 0x3C - .byte 0x90, 0x3C, 0x91, 0x3C, 0x92, 0x3C, 0x93, 0x3C, 0x94, 0x3C, 0x95, 0x3C, 0x96, 0x3C, 0x97, 0x3C - .byte 0x98, 0x3C, 0x99, 0x3C, 0x9A, 0x3C, 0x9B, 0x3C, 0x9C, 0x3C, 0x9D, 0x3C, 0x9E, 0x3C, 0x9F, 0x3C - .byte 0xA0, 0x3C, 0xA1, 0x3C, 0xA2, 0x3C, 0xA3, 0x3C, 0xA4, 0x3C, 0xA5, 0x3C, 0xA6, 0x3C, 0xA7, 0x3C - .byte 0xA8, 0x3C, 0xA9, 0x3C, 0xAA, 0x3C, 0xAB, 0x3C, 0xAC, 0x3C, 0xAD, 0x3C, 0xAE, 0x3C, 0xAF, 0x3C - .byte 0xB0, 0x3C, 0xB1, 0x3C, 0xB2, 0x3C, 0xB3, 0x3C, 0xB4, 0x3C, 0xB5, 0x3C, 0xB6, 0x3C, 0xB7, 0x3C - .byte 0xB8, 0x3C, 0xB9, 0x3C, 0xBA, 0x3C, 0xBB, 0x3C, 0xBC, 0x3C, 0xBD, 0x3C, 0xBE, 0x3C, 0xBF, 0x3C - .byte 0xC0, 0x3C, 0xC1, 0x3C, 0xC2, 0x3C, 0xC3, 0x3C, 0xC4, 0x3C, 0xC5, 0x3C, 0xC6, 0x3C, 0xC7, 0x3C - .byte 0xC8, 0x3C, 0xC9, 0x3C, 0xCA, 0x3C, 0xCB, 0x3C, 0xCC, 0x3C, 0xCD, 0x3C, 0xCE, 0x3C, 0xCF, 0x3C - .byte 0xD0, 0x3C, 0xD1, 0x3C, 0xD2, 0x3C, 0xD3, 0x3C, 0xD4, 0x3C, 0xD5, 0x3C, 0xD6, 0x3C, 0xD7, 0x3C -#else - .byte 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00 - .byte 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x10, 0x00 - .byte 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00 - .byte 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x20, 0x00 - .byte 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00 - .byte 0x29, 0x00, 0x2A, 0x00, 0x2B, 0x00, 0x2C, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2F, 0x00, 0x30, 0x00 - .byte 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00 - .byte 0x39, 0x00, 0x3A, 0x00, 0x3B, 0x00, 0x3C, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x40, 0x00 - .byte 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00 - .byte 0x49, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x4D, 0x00, 0x4E, 0x00, 0x4F, 0x00, 0x50, 0x00 - .byte 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00 - .byte 0x59, 0x00, 0x5A, 0x00, 0x5B, 0x00, 0x5C, 0x00, 0x5D, 0x00, 0x5E, 0x00, 0x5F, 0x00, 0x60, 0x00 - .byte 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00 - .byte 0x69, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x6D, 0x00, 0x6E, 0x00, 0x6F, 0x00, 0x70, 0x00 - .byte 0x71, 0x00, 0x72, 0x00, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, 0x00, 0x78, 0x00 - .byte 0x79, 0x00, 0x7A, 0x00, 0x7B, 0x00, 0x7C, 0x00, 0x7D, 0x00, 0x7E, 0x00, 0x7F, 0x00, 0x80, 0x00 - .byte 0x81, 0x00, 0x82, 0x00, 0x83, 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00 - .byte 0x89, 0x00, 0x8A, 0x00, 0x8B, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8F, 0x00, 0x90, 0x00 - .byte 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00 - .byte 0x99, 0x00, 0x9A, 0x00, 0x9B, 0x00, 0x9C, 0x00, 0x9D, 0x00, 0x9E, 0x00, 0x9F, 0x00, 0xA0, 0x00 - .byte 0xA1, 0x00, 0xA2, 0x00, 0xA3, 0x00, 0xA4, 0x00, 0xA5, 0x00, 0xA6, 0x00, 0xA7, 0x00, 0xA8, 0x00 - .byte 0xA9, 0x00, 0xAA, 0x00, 0xAB, 0x00, 0xAC, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xB0, 0x00 - .byte 0xB1, 0x00, 0xB2, 0x00, 0xB3, 0x00, 0xB4, 0x00, 0xB5, 0x00, 0xB6, 0x00, 0xB7, 0x00, 0xB8, 0x00 - .byte 0xB9, 0x00, 0xBA, 0x00, 0xBB, 0x00, 0xBC, 0x00, 0xBD, 0x00, 0xBE, 0x00, 0xBF, 0x00, 0xC0, 0x00 - .byte 0xC1, 0x00, 0xC2, 0x00, 0xC3, 0x00, 0xC4, 0x00, 0xC5, 0x00, 0xC6, 0x00, 0xC7, 0x00, 0xC8, 0x00 - .byte 0xC9, 0x00, 0xCA, 0x00, 0xCB, 0x00, 0xCC, 0x00, 0xCD, 0x00, 0xCE, 0x00, 0xCF, 0x00, 0xD0, 0x00 - .byte 0xD1, 0x00, 0xD2, 0x00, 0xD3, 0x00, 0xD4, 0x00, 0xD5, 0x00, 0xD6, 0x00, 0xD7, 0x00, 0xD8, 0x00 - .byte 0xD9, 0x00, 0xDA, 0x00, 0xDB, 0x00, 0xDC, 0x00, 0xDD, 0x00, 0xDE, 0x00, 0xDF, 0x00, 0xE0, 0x00 - .byte 0xE1, 0x00, 0xE2, 0x00, 0xE3, 0x00, 0xE4, 0x00, 0xE5, 0x00, 0xE6, 0x00, 0xE7, 0x00, 0xE8, 0x00 - .byte 0xE9, 0x00, 0xEA, 0x00, 0xEB, 0x00, 0xEC, 0x00, 0xED, 0x00, 0xEE, 0x00, 0xEF, 0x00, 0xF0, 0x00 - .byte 0xF1, 0x00, 0xF2, 0x00, 0xF3, 0x00, 0xF4, 0x00, 0xF5, 0x00, 0xF6, 0x00, 0xF7, 0x00, 0xF8, 0x00 - .byte 0xF9, 0x00, 0xFA, 0x00, 0xFB, 0x00, 0xFC, 0x00 -#endif - .global ov01_0233BAF0 -ov01_0233BAF0: - .byte 0x25, 0x73, 0x00, 0x00 - .global ov01_0233BAF4 -ov01_0233BAF4: - .byte 0x5B, 0x43, 0x53, 0x3A - .byte 0x57, 0x5D, 0x25, 0x73, 0x5B, 0x43, 0x52, 0x5D, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233BB04 -ov01_0233BB04: - .byte 0x5B, 0x4D, 0x3A, 0x54 - .byte 0x32, 0x5D, 0x00, 0x00 - .global ov01_0233BB0C -ov01_0233BB0C: - .byte 0x5B, 0x4D, 0x3A, 0x54, 0x33, 0x5D, 0x00, 0x00 - .global ov01_0233BB14 -ov01_0233BB14: - .byte 0x00, 0x80, 0xFF, 0xFF - .global ov01_0233BB18 -ov01_0233BB18: - .byte 0x00, 0x00, 0x00, 0x00, 0x05, 0x03, 0x16, 0x03, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233BB28 -ov01_0233BB28: - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .global ov01_0233BB38 -ov01_0233BB38: - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 - .global ov01_0233BB48 -ov01_0233BB48: - .byte 0x00, 0x00, 0x00, 0x00, 0x0C, 0x03, 0x07, 0x03, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233BB58 -ov01_0233BB58: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1C, 0x0C, 0x01, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233BB68 -ov01_0233BB68: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x0A, 0x1C, 0x04, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233BB78 -ov01_0233BB78: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x1C, 0x06, 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233BB88 -ov01_0233BB88: -#ifdef JAPAN - .byte 0xE7, 0x3C, 0xE8, 0x3C, 0xE9, 0x3C, 0xEA, 0x3C - .byte 0xEB, 0x3C, 0xEC, 0x3C, 0xED, 0x3C, 0xEE, 0x3C, 0xEF, 0x3C, 0xF0, 0x3C, 0xF1, 0x3C - .global ov01_0233BB9E -ov01_0233BB9E: - .byte 0xE7, 0x3C - .byte 0xE8, 0x3C, 0xE9, 0x3C, 0xEA, 0x3C, 0xEB, 0x3C, 0xEC, 0x3C, 0xED, 0x3C, 0xEE, 0x3C, 0xEF, 0x3C - .byte 0xF0, 0x3C, 0xF1, 0x3C - .global ov01_0233BBB4 -ov01_0233BBB4: - .byte 0xE7, 0x3C, 0xE8, 0x3C, 0xE9, 0x3C, 0xEA, 0x3C, 0xEB, 0x3C, 0xEC, 0x3C - .byte 0xED, 0x3C, 0xEE, 0x3C, 0xEF, 0x3C, 0xF0, 0x3C, 0xF1, 0x3C - .global ov01_0233BBCA -ov01_0233BBCA: - .byte 0xE7, 0x3C, 0xE8, 0x3C, 0xE9, 0x3C - .byte 0xEA, 0x3C, 0xEB, 0x3C, 0xEC, 0x3C, 0xED, 0x3C, 0xEE, 0x3C, 0xEF, 0x3C, 0xF0, 0x3C, 0xE5, 0x3C - .byte 0xE6, 0x3C, 0x00, 0x00 -#else - .byte 0x0C, 0x01, 0x0D, 0x01, 0x0E, 0x01, 0x0F, 0x01, 0x10, 0x01, 0x11, 0x01, 0x12, 0x01, 0x13, 0x01 - .byte 0x14, 0x01, 0x15, 0x01, 0x16, 0x01 - .global ov01_0233BB9E -ov01_0233BB9E: - .byte 0x0C, 0x01, 0x0D, 0x01, 0x0E, 0x01, 0x0F, 0x01, 0x10, 0x01 - .byte 0x11, 0x01, 0x12, 0x01, 0x13, 0x01, 0x14, 0x01, 0x15, 0x01, 0x16, 0x01 - .global ov01_0233BBB4 -ov01_0233BBB4: - .byte 0x0C, 0x01, 0x0D, 0x01 - .byte 0x0E, 0x01, 0x0F, 0x01, 0x10, 0x01, 0x11, 0x01, 0x12, 0x01, 0x13, 0x01, 0x14, 0x01, 0x15, 0x01 - .byte 0x16, 0x01 - .global ov01_0233BBCA -ov01_0233BBCA: - .byte 0x0C, 0x01, 0x0D, 0x01, 0x0E, 0x01, 0x0F, 0x01, 0x10, 0x01, 0x11, 0x01, 0x12, 0x01 - .byte 0x13, 0x01, 0x14, 0x01, 0x15, 0x01, 0x0A, 0x01, 0x0B, 0x01, 0x00, 0x00 -#endif - .global ov01_0233BBE4 -ov01_0233BBE4: - .byte 0x0C, 0x00, 0x00, 0x00 - .byte 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 - .byte 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 - .byte 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00 - .global ov01_0233BC14 -ov01_0233BC14: - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .global ov01_0233BC44 -ov01_0233BC44: - .byte 0x0C, 0x00, 0x00, 0x00 - .byte 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 - .byte 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 - .byte 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00 - .global ov01_0233BC74 -ov01_0233BC74: - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 - .byte 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 - .byte 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 - .global ov01_0233BCA4 -ov01_0233BCA4: - .byte 0x0C, 0x0C, 0x0C, 0x04 - .byte 0x04, 0x00, 0x00, 0x00 - .global ov01_0233BCAC -ov01_0233BCAC: - .byte 0x04, 0x00, 0x00, 0x00 - .word ov01_023371DC - .word ov01_02337210 - .word ov01_0233723C - .global ov01_0233BCBC -ov01_0233BCBC: - .byte 0x06, 0x00, 0x00, 0x00 - .word ov03_0233CB08 - .word ov03_0233CF9C - .word ov03_0233CB94 - .global ov01_0233BCCC -ov01_0233BCCC: - .byte 0x07, 0x00, 0x00, 0x00 - .word ov06_0233D51C - .word ov06_0233DCC0 - .word ov06_0233D5A4 - .global ov01_0233BCDC -ov01_0233BCDC: - .byte 0x07, 0x00, 0x00, 0x00 - .word ov06_0233E958 - .word ov06_0233ECCC - .word ov06_0233EA1C - .global ov01_0233BCEC -ov01_0233BCEC: - .byte 0x08, 0x00, 0x00, 0x00 - .word ov04_0233CBB8 - .word ov04_0233D1A0 - .word ov04_0233CC4C - .global ov01_0233BCFC -ov01_0233BCFC: - .byte 0x09, 0x00, 0x00, 0x00 - .word ov05_0233CB9C - .word ov05_0233D398 - .word ov05_0233CC10 - .global ov01_0233BD0C -ov01_0233BD0C: - .byte 0x0A, 0x00, 0x00, 0x00 - .word ov07_0233F6E0 - .word ov07_0233FCD8 - .word ov07_0233F758 - .global ov01_0233BD1C -ov01_0233BD1C: -#if defined(EUROPE) - .byte 0xD8, 0x36, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xD9, 0x36, 0x00, 0x00 -#elif defined(JAPAN) - .byte 0x58, 0x33, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x59, 0x33, 0x00, 0x00 -#else - .byte 0xD6, 0x36, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xD7, 0x36, 0x00, 0x00 -#endif - .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF - .global ov01_0233BD34 -ov01_0233BD34: - .byte 0x57, 0x69, 0x72, 0x65 - .byte 0x6C, 0x65, 0x73, 0x73, 0x20, 0x43, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x0A, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233BD48 -ov01_0233BD48: - .byte 0x57, 0x69, 0x72, 0x65, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x53, 0x6C, 0x65, 0x65, 0x70, 0x20, 0x45 - .byte 0x6E, 0x64, 0x0A, 0x00 - .global ov01_0233BD5C -ov01_0233BD5C: - .byte 0x57, 0x69, 0x72, 0x65, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x54, 0x69, 0x6D - .byte 0x65, 0x6F, 0x75, 0x74, 0x0A, 0x00, 0x00, 0x00 - .global ov01_0233BD70 -ov01_0233BD70: - .byte 0x57, 0x69, 0x72, 0x65, 0x6C, 0x65, 0x73, 0x73 - .byte 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x75, 0x6E, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x45 - .byte 0x72, 0x72, 0x6F, 0x72, 0x0A, 0x00, 0x00, 0x00 - .global ov01_0233BD90 -ov01_0233BD90: - .byte 0x57, 0x69, 0x72, 0x65, 0x6C, 0x65, 0x73, 0x73 - .byte 0x20, 0x44, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x0A - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233BDAC -ov01_0233BDAC: - .byte 0x57, 0x69, 0x72, 0x65, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x43, 0x68, 0x65 - .byte 0x63, 0x6B, 0x20, 0x53, 0x75, 0x6D, 0x20, 0x45, 0x72, 0x72, 0x6F, 0x72, 0x0A, 0x00, 0x00, 0x00 - .global ov01_0233BDC8 -ov01_0233BDC8: - .byte 0x57, 0x69, 0x72, 0x65, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x45, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6E - .byte 0x67, 0x0A, 0x00, 0x00 - .global ov01_0233BDDC -ov01_0233BDDC: - .byte 0x57, 0x69, 0x72, 0x65, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x43, 0x6F, 0x72 - .byte 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233BDF4 -ov01_0233BDF4: - .byte 0x57, 0x69, 0x72, 0x65 - .byte 0x6C, 0x65, 0x73, 0x73, 0x20, 0x49, 0x6C, 0x6C, 0x65, 0x67, 0x61, 0x6C, 0x20, 0x44, 0x61, 0x74 - .byte 0x61, 0x0A, 0x20, 0x00 - .global ov01_0233BE0C -ov01_0233BE0C: - .byte 0x57, 0x69, 0x72, 0x65, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x4F, 0x74, 0x68 - .byte 0x65, 0x72, 0x20, 0x45, 0x72, 0x72, 0x6F, 0x72, 0x0A, 0x00, 0x00, 0x00 - .global ov01_0233BE24 -ov01_0233BE24: - .byte 0x3D, 0x3D, 0x3D, 0x3D - .byte 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x20, 0x46, 0x49, 0x4E, 0x49, 0x53, 0x48, 0x20 - .byte 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x0A, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233BE48 -ov01_0233BE48: - .byte 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x20, 0x45, 0x20, 0x72, 0x20 - .byte 0x72, 0x20, 0x6F, 0x20, 0x72, 0x20, 0x21, 0x20, 0x21, 0x20, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D - .byte 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x0A, 0x00, 0x00 - .global ov01_0233BE70 -ov01_0233BE70: -#if defined(EUROPE) - .byte 0x5C, 0x37, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x5D, 0x37, 0x00, 0x00 -#elif defined(JAPAN) - .byte 0xDC, 0x33, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0xDD, 0x33, 0x00, 0x00 -#else - .byte 0x5A, 0x37, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .byte 0x5B, 0x37, 0x00, 0x00 -#endif - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF - .global ov01_0233BE88 -ov01_0233BE88: - .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x2F, 0x73, 0x65, 0x74, 0x50 - .byte 0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x61, 0x73, 0x70, 0x00, 0x00 - .global ov01_0233BEA4 -ov01_0233BEA4: - .byte 0x2F, 0x77, 0x65, 0x62 - .byte 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x52, 0x65 - .byte 0x67, 0x69, 0x73, 0x74, 0x2E, 0x61, 0x73, 0x70, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233BEC4 -ov01_0233BEC4: - .byte 0x2F, 0x77, 0x65, 0x62 - .byte 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x4C, 0x69 - .byte 0x73, 0x74, 0x2E, 0x61, 0x73, 0x70, 0x00, 0x00 - .global ov01_0233BEE0 -ov01_0233BEE0: - .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x72, 0x65, 0x73 - .byte 0x63, 0x75, 0x65, 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x2E - .byte 0x61, 0x73, 0x70, 0x00 - .global ov01_0233BEFC -ov01_0233BEFC: - .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x2F - .byte 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x45, 0x6E, 0x74, 0x72, 0x79, 0x2E, 0x61, 0x73, 0x70, 0x00 - .global ov01_0233BF18 -ov01_0233BF18: - .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x2F, 0x72, 0x65, 0x73, 0x63 - .byte 0x75, 0x65, 0x43, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x2E, 0x61, 0x73, 0x70, 0x00, 0x00 - .global ov01_0233BF38 -ov01_0233BF38: - .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x2F, 0x72, 0x65, 0x73, 0x63 - .byte 0x75, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x2E, 0x61, 0x73, 0x70, 0x00 - .global ov01_0233BF54 -ov01_0233BF54: - .byte 0x2F, 0x77, 0x65, 0x62 - .byte 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x54, 0x68 - .byte 0x61, 0x6E, 0x6B, 0x73, 0x2E, 0x61, 0x73, 0x70, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233BF74 -ov01_0233BF74: - .byte 0x2F, 0x77, 0x65, 0x62 - .byte 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x52, 0x65 - .byte 0x63, 0x65, 0x69, 0x76, 0x65, 0x2E, 0x61, 0x73, 0x70, 0x00, 0x00, 0x00 - .global ov01_0233BF94 -ov01_0233BF94: - .byte 0x2F, 0x77, 0x65, 0x62 - .byte 0x2F, 0x74, 0x65, 0x61, 0x6D, 0x2F, 0x74, 0x65, 0x61, 0x6D, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74 - .byte 0x2E, 0x61, 0x73, 0x70, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233BFB0 -ov01_0233BFB0: - .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x74, 0x65, 0x61 - .byte 0x6D, 0x2F, 0x74, 0x65, 0x61, 0x6D, 0x4C, 0x69, 0x73, 0x74, 0x2E, 0x61, 0x73, 0x70, 0x00, 0x00 - .global ov01_0233BFC8 -ov01_0233BFC8: - .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x74, 0x65, 0x61, 0x6D, 0x2F, 0x74, 0x65, 0x61, 0x6D, 0x45, 0x78 - .byte 0x69, 0x73, 0x74, 0x2E, 0x61, 0x73, 0x70, 0x00 - .global ov01_0233BFE0 -ov01_0233BFE0: - .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x74, 0x65, 0x61 - .byte 0x6D, 0x2F, 0x74, 0x65, 0x61, 0x6D, 0x45, 0x6E, 0x74, 0x72, 0x79, 0x2E, 0x61, 0x73, 0x70, 0x00 - .global ov01_0233BFF8 -ov01_0233BFF8: - .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x2F, 0x61, 0x64, 0x6D, 0x69 - .byte 0x6E, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2E - .byte 0x61, 0x73, 0x70, 0x00 - .global ov01_0233C01C -ov01_0233C01C: - .byte 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74 - .byte 0x6F, 0x20, 0x25, 0x73, 0x0A, 0x00, 0x00, 0x00 - .global ov01_0233C030 -ov01_0233C030: - .byte 0x70, 0x69, 0x64, 0x3A, 0x20, 0x25, 0x64, 0x0A - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C03C -ov01_0233C03C: - .byte 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x73, 0x69, 0x7A, 0x65 - .byte 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C050 -ov01_0233C050: - .byte 0x53, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20 - .byte 0x45, 0x72, 0x72, 0x6F, 0x72, 0x3A, 0x20, 0x25, 0x64, 0x20, 0x25, 0x73, 0x0A, 0x00, 0x00, 0x00 - .global ov01_0233C068 -ov01_0233C068: - .byte 0x53, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20 - .byte 0x54, 0x69, 0x6D, 0x65, 0x4F, 0x75, 0x74, 0x2E, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C088 -ov01_0233C088: - .byte 0x55, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x45, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x43, 0x6F - .byte 0x64, 0x65, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x35, 0x64, 0x0A, 0x00, 0x00 - .global ov01_0233C0A4 -ov01_0233C0A4: - .byte 0x04, 0x00, 0x00, 0x00 - .word ov01_0233ADEC - .byte 0x00, 0x00, 0x00, 0x00 - .word ov01_0233AE04 - - .data - .global ov01_0233C0C0 -ov01_0233C0C0: - .byte 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 - .global ov01_0233C0D8 -ov01_0233C0D8: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C0E0 -ov01_0233C0E0: -#if defined(EUROPE) - .byte 0xAC, 0x01, 0x80, 0x00 - .byte 0xAD, 0x01, 0x80, 0x00, 0xAE, 0x01, 0x80, 0x00, 0xAF, 0x01, 0x80, 0x00, 0xB0, 0x01, 0x80, 0x00 - .byte 0xAC, 0x01, 0x80, 0x00, 0xAD, 0x01, 0x80, 0x00, 0xAE, 0x01, 0x80, 0x00, 0xAF, 0x01, 0x80, 0x00 - .byte 0xB0, 0x01, 0x80, 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 -#elif defined(JAPAN) - .byte 0x85, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x77, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -#else - .byte 0x68, 0x05, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x39, 0x09, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -#endif - .global ov01_0233C100 -ov01_0233C100: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0xC8, 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, 0x01, 0x00, 0x00, 0x01, 0x20, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C140 -ov01_0233C140: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C144 -ov01_0233C144: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C148 -ov01_0233C148: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C14C -ov01_0233C14C: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C150 -ov01_0233C150: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C158 -ov01_0233C158: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C15C -ov01_0233C15C: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C160 -ov01_0233C160: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C164 -ov01_0233C164: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C168 -ov01_0233C168: - .word ov01_0233B0B8 - .word ov01_0233B0CC - .word ov01_0233B0A4 - .global ov01_0233C174 -ov01_0233C174: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C178 -ov01_0233C178: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C184 -ov01_0233C184: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C188 -ov01_0233C188: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C190 -ov01_0233C190: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C198 -ov01_0233C198: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C1A0 -ov01_0233C1A0: - .word ov01_0233B8F8 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C1A8 -ov01_0233C1A8: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C1AC -ov01_0233C1AC: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C1B0 -ov01_0233C1B0: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C1B4 -ov01_0233C1B4: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C1B8 -ov01_0233C1B8: - .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 - .global ov01_0233C1D4 -ov01_0233C1D4: - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C1DC -ov01_0233C1DC: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C1E0 -ov01_0233C1E0: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C1E8 -ov01_0233C1E8: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C1F4 -ov01_0233C1F4: - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C1F8 -ov01_0233C1F8: - .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 - .global ov01_0233C210 -ov01_0233C210: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .global ov01_0233C21C -ov01_0233C21C: - .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 - - .bss - .global ov01_0233C240 -ov01_0233C240: - .space 0x80 - .global ov01_0233C2C0 -ov01_0233C2C0: - .space 0x40 - .global ov01_0233C300 -ov01_0233C300: - .space 0x80 - .global ov01_0233C380 -ov01_0233C380: - .space 0x200 - .global ov01_0233C580 -ov01_0233C580: - .space 0x200 - .global ov01_0233C780 -ov01_0233C780: - .space 0x4 - .global ov01_0233C784 -ov01_0233C784: - .space 0x7C - .global ov01_0233C800 -ov01_0233C800: - .space 0x7C - .global ov01_0233C87C -ov01_0233C87C: - .space 0x4 - .global ov01_0233C880 -ov01_0233C880: - .space 0x7C - .global ov01_0233C8FC -ov01_0233C8FC: - .space 0x7C - .global ov01_0233C978 -ov01_0233C978: - .space 0x7C - .global ov01_0233C9F4 -ov01_0233C9F4: - .space 0x7C - .global ov01_0233CA70 -ov01_0233CA70: - .space 0x8 - .global ov01_0233CA78 -ov01_0233CA78: - .space 0x4 - .global ov01_0233CA7C -ov01_0233CA7C: - .space 0x4 diff --git a/asm/overlay_01_02337634.s b/asm/overlay_01_02337634.s new file mode 100644 index 00000000..30167f94 --- /dev/null +++ b/asm/overlay_01_02337634.s @@ -0,0 +1,5897 @@ + .include "asm/macros.inc" + .include "overlay_01_02337634.inc" + + .text + + arm_func_start ov01_02337634 +ov01_02337634: ; 0x02337634 + ldr ip, _02337640 ; =InitMenu + ldr r0, _02337644 ; =ov01_0233BCEC + bx ip + .align 2, 0 +_02337640: .word InitMenu +_02337644: .word ov01_0233BCEC + arm_func_end ov01_02337634 + + arm_func_start ov01_02337648 +ov01_02337648: ; 0x02337648 + ldr r1, _02337654 ; =ov01_0233C1E0 + ldrsb r0, [r1, r0] + bx lr + .align 2, 0 +_02337654: .word ov01_0233C1E0 + arm_func_end ov01_02337648 + + arm_func_start ov01_02337658 +ov01_02337658: ; 0x02337658 + ldr r2, _02337664 ; =ov01_0233C1E0 + strb r1, [r2, r0] + bx lr + .align 2, 0 +_02337664: .word ov01_0233C1E0 + arm_func_end ov01_02337658 + + arm_func_start ov01_02337668 +ov01_02337668: ; 0x02337668 + ldr ip, _02337674 ; =InitMenu + ldr r0, _02337678 ; =ov01_0233BCFC + bx ip + .align 2, 0 +_02337674: .word InitMenu +_02337678: .word ov01_0233BCFC + arm_func_end ov01_02337668 + + arm_func_start ov01_0233767C +ov01_0233767C: ; 0x0233767C + ldr r1, _02337688 ; =ov01_0233C1E8 + ldrsb r0, [r1, r0] + bx lr + .align 2, 0 +_02337688: .word ov01_0233C1E8 + arm_func_end ov01_0233767C + + arm_func_start ov01_0233768C +ov01_0233768C: ; 0x0233768C + ldr r2, _02337698 ; =ov01_0233C1E8 + strb r1, [r2, r0] + bx lr + .align 2, 0 +_02337698: .word ov01_0233C1E8 + arm_func_end ov01_0233768C + + arm_func_start ov01_0233769C +ov01_0233769C: ; 0x0233769C + stmdb sp!, {r3, lr} + mov r0, #0xa8 + mov r1, #8 + bl MemAlloc + ldr r2, _023376D8 ; =ov01_0233C1F4 + mov r1, #0xa8 + str r0, [r2] + bl MemZero + ldr r0, _023376D8 ; =ov01_0233C1F4 + mov r2, #0 + ldr r1, [r0] + str r2, [r1] + ldr r0, [r0] + str r2, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_023376D8: .word ov01_0233C1F4 + arm_func_end ov01_0233769C + + arm_func_start ov01_023376DC +ov01_023376DC: ; 0x023376DC + stmdb sp!, {r3, lr} + ldr r0, _02337714 ; =ov01_0233C1F4 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r0, #1 + bl ov00_022BCBAC + ldr r0, _02337714 ; =ov01_0233C1F4 + ldr r0, [r0] + bl MemFree + ldr r0, _02337714 ; =ov01_0233C1F4 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02337714: .word ov01_0233C1F4 + arm_func_end ov01_023376DC + + arm_func_start ov01_02337718 +ov01_02337718: ; 0x02337718 + stmdb sp!, {r3, r4, r5, lr} + ldr r0, _023378E8 ; =ov01_0233C1F4 + ldr r4, [r0] + ldr r1, [r4] + cmp r1, #0x1000 + bgt _02337754 + bge _023377A4 + cmp r1, #1 + bgt _023378E0 + cmp r1, #0 + blt _023378E0 + beq _02337764 + cmp r1, #1 + beq _02337788 + b _023378E0 +_02337754: + ldr r0, _023378EC ; =0x00001001 + cmp r1, r0 + beq _023377BC + b _023378E0 +_02337764: + ldr r1, _023378F0 ; =0x00003760 + mov r0, #0x1c + mov r2, #0 + bl sub_02046BE8 + ldr r0, _023378E8 ; =ov01_0233C1F4 + mov r1, #1 + ldr r0, [r0] + str r1, [r0] + b _023378E0 +_02337788: + bl ov01_023378FC + cmp r0, #1 + ldreq r0, _023378E8 ; =ov01_0233C1F4 + moveq r1, #0x1000 + ldreq r0, [r0] + streq r1, [r0] + b _023378E0 +_023377A4: + mov r1, #0 + str r1, [r4, #4] + ldr r0, [r0] + ldr r1, _023378EC ; =0x00001001 + str r1, [r0] + b _023378E0 +_023377BC: + ldr r0, [r4, #4] + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _023378AC +_023377CC: ; jump table + b _023377E0 ; case 0 + b _023377FC ; case 1 + b _02337828 ; case 2 + b _02337888 ; case 3 + b _0233789C ; case 4 +_023377E0: + bl ov00_022BD780 + mov r0, #0 + ldr r1, _023378F4 ; =0x0000023B + mov r2, r0 + bl sub_02046BE8 + mov r0, #1 + str r0, [r4, #4] +_023377FC: + bl ov01_023378FC + cmp r0, #1 + bne _023378AC + mov r0, #0xe0 + mov r1, #0x88 + mov r2, #1 + bl sub_02029F88 + mov r0, #2 + str r0, [r4, #4] + bl sub_02003B94 + b _023378AC +_02337828: + mov r0, #3 + bl NoteSaveBase + mov r5, r0 + bl sub_02003BC8 + bl sub_02029FBC + cmp r5, #0 + bne _02337860 +#ifdef JAPAN + ldr r1, _02339168 ; =0x000004CD + mov r0, #0x1c +#else + mov r0, #0x1c + mov r1, #0x23c +#endif + mov r2, #0 + bl sub_02046BE8 + mov r0, #3 + str r0, [r4, #4] + b _023378AC +_02337860: + cmp r5, #1 + moveq r0, #3 + beq _023378B0 + ldr r1, _023378F8 ; =0x00000239 + mov r0, #0x1c + mov r2, #0 + bl sub_02046BE8 + mov r0, #4 + str r0, [r4, #4] + b _023378AC +_02337888: + bl ov01_023378FC + cmp r0, #1 + bne _023378AC + mov r0, #1 + b _023378B0 +_0233789C: + bl ov01_023378FC + cmp r0, #1 + moveq r0, #2 + beq _023378B0 +_023378AC: + mov r0, #0 +_023378B0: + cmp r0, #1 + bne _023378C8 + mov r0, #0 + bl ov00_022BD264 + mov r0, #3 + ldmia sp!, {r3, r4, r5, pc} +_023378C8: + cmp r0, #3 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} + cmp r0, #2 + moveq r0, #1 + ldmeqia sp!, {r3, r4, r5, pc} +_023378E0: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023378E8: .word ov01_0233C1F4 +_023378EC: .word 0x00001001 +#if defined(EUROPE) +_023378F0: .word 0x00003762 +_023378F4: .word 0x0000023B +_023378F8: .word 0x00000239 +#elif defined(JAPAN) +_023378F0: .word 0x000033E2 +_023378F4: .word 0x000004CC +_02339168: .word 0x000004CD +_023378F8: .word 0x000004CA +#else +_023378F0: .word 0x00003760 +_023378F4: .word 0x0000023B +_023378F8: .word 0x00000239 +#endif + arm_func_end ov01_02337718 + + arm_func_start ov01_023378FC +ov01_023378FC: ; 0x023378FC + stmdb sp!, {r3, lr} + bl sub_02046C78 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + ldmia sp!, {r3, pc} + arm_func_end ov01_023378FC + + arm_func_start ov01_02337914 +ov01_02337914: ; 0x02337914 + ldr ip, _02337920 ; =InitMenu + ldr r0, _02337924 ; =ov01_0233BD0C + bx ip + .align 2, 0 +_02337920: .word InitMenu +_02337924: .word ov01_0233BD0C + arm_func_end ov01_02337914 + + arm_func_start ov01_02337928 +ov01_02337928: ; 0x02337928 + ldr r1, _02337934 ; =ov01_0233C1F8 + ldrsb r0, [r1, r0] + bx lr + .align 2, 0 +_02337934: .word ov01_0233C1F8 + arm_func_end ov01_02337928 + + arm_func_start ov01_02337938 +ov01_02337938: ; 0x02337938 + ldr r2, _02337944 ; =ov01_0233C1F8 + strb r1, [r2, r0] + bx lr + .align 2, 0 +_02337944: .word ov01_0233C1F8 + arm_func_end ov01_02337938 + + arm_func_start ov01_02337948 +ov01_02337948: ; 0x02337948 + stmdb sp!, {r4, lr} + bl sub_02046B04 + mov r4, r0 + mvn r1, #1 + cmp r4, r1 + moveq r4, #1 + beq _02337980 + sub r0, r1, #1 + cmp r4, r0 + moveq r4, #1 + beq _02337980 + add r0, r1, #1 + cmp r4, r0 + moveq r4, #0 +_02337980: + bl sub_02046BA0 + ldr r1, _02337994 ; =ov01_0233C210 + strb r0, [r1] + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02337994: .word ov01_0233C210 + arm_func_end ov01_02337948 + + arm_func_start ov01_02337998 +ov01_02337998: ; 0x02337998 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r1 + cmp r3, #0 + movne r1, #0 + moveq r1, #0x1c + mov r1, r1, lsl #0x10 + sub r0, r0, #4 + mov r4, r2 + cmp r0, #0xa + mov r6, r1, lsr #0x10 + mov r7, #0 + addls pc, pc, r0, lsl #2 + b _02337AC4 +_023379CC: ; jump table + b _023379F8 ; case 0 + b _02337A00 ; case 1 + b _02337A10 ; case 2 + b _02337A20 ; case 3 + b _02337A30 ; case 4 + b _02337A40 ; case 5 + b _02337A50 ; case 6 + b _02337A60 ; case 7 + b _02337A78 ; case 8 + b _02337AA8 ; case 9 + b _02337AB8 ; case 10 +_023379F8: + mov r0, r7 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02337A00: + ldr r0, _02337AE4 ; =ov01_0233BD34 + bl Debug_Print0 + ldr r7, _02337AE8 ; =0x000036DA + b _02337AC4 +_02337A10: + ldr r0, _02337AEC ; =ov01_0233BD48 + bl Debug_Print0 + mov r0, r7 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_02337A20: + ldr r0, _02337AF0 ; =ov01_0233BD5C + bl Debug_Print0 + ldr r7, _02337AF4 ; =0x000036DB + b _02337AC4 +_02337A30: + ldr r0, _02337AF8 ; =ov01_0233BD70 + bl Debug_Print0 + ldr r7, _02337AFC ; =0x000036E2 + b _02337AC4 +_02337A40: + ldr r0, _02337B00 ; =ov01_0233BD90 + bl Debug_Print0 + ldr r7, _02337B04 ; =0x000036DC + b _02337AC4 +_02337A50: + ldr r0, _02337B08 ; =ov01_0233BDAC + bl Debug_Print0 + ldr r7, _02337B0C ; =0x000036E3 + b _02337AC4 +_02337A60: + ldr r0, _02337B10 ; =ov01_0233BDC8 + bl Debug_Print0 + cmp r5, #0 + ldrne r7, _02337B14 ; =0x000036DD + ldreq r7, _02337B18 ; =0x000036DE + b _02337AC4 +_02337A78: + ldr r0, _02337B1C ; =ov01_0233BDDC + bl Debug_Print0 + cmp r5, #0 + beq _02337AA0 + cmp r4, #2 + ldreq r7, _02337B20 ; =0x000036DF + beq _02337AC4 + cmp r4, #3 + ldreq r7, _02337B24 ; =0x000036E0 + b _02337AC4 +_02337AA0: + ldr r7, _02337B28 ; =0x000036E1 + b _02337AC4 +_02337AA8: + ldr r0, _02337B2C ; =ov01_0233BDF4 + bl Debug_Print0 + ldr r7, _02337B30 ; =0x000036E4 + b _02337AC4 +_02337AB8: + ldr r0, _02337B34 ; =ov01_0233BE0C + bl Debug_Print0 + ldr r7, _02337B38 ; =0x000036E5 +_02337AC4: + cmp r7, #0 + beq _02337ADC + mov r0, r6 + mov r1, r7 + mov r2, #0 + bl sub_02046BE8 +_02337ADC: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +#if defined(EUROPE) +#define OV01_02337998_OFFSET 2 +#elif defined(JAPAN) +#define OV01_02337998_OFFSET -0x37E +#else +#define OV01_02337998_OFFSET 0 +#endif +_02337AE4: .word ov01_0233BD34 +_02337AE8: .word 0x000036DA + OV01_02337998_OFFSET +_02337AEC: .word ov01_0233BD48 +_02337AF0: .word ov01_0233BD5C +_02337AF4: .word 0x000036DB + OV01_02337998_OFFSET +_02337AF8: .word ov01_0233BD70 +_02337AFC: .word 0x000036E2 + OV01_02337998_OFFSET +_02337B00: .word ov01_0233BD90 +_02337B04: .word 0x000036DC + OV01_02337998_OFFSET +_02337B08: .word ov01_0233BDAC +_02337B0C: .word 0x000036E3 + OV01_02337998_OFFSET +_02337B10: .word ov01_0233BDC8 +_02337B14: .word 0x000036DD + OV01_02337998_OFFSET +_02337B18: .word 0x000036DE + OV01_02337998_OFFSET +_02337B1C: .word ov01_0233BDDC +_02337B20: .word 0x000036DF + OV01_02337998_OFFSET +_02337B24: .word 0x000036E0 + OV01_02337998_OFFSET +_02337B28: .word 0x000036E1 + OV01_02337998_OFFSET +_02337B2C: .word ov01_0233BDF4 +_02337B30: .word 0x000036E4 + OV01_02337998_OFFSET +_02337B34: .word ov01_0233BE0C +_02337B38: .word 0x000036E5 + OV01_02337998_OFFSET + arm_func_end ov01_02337998 + + arm_func_start ov01_02337B3C +ov01_02337B3C: ; 0x02337B3C + mov ip, #0 + mov r3, ip + b _02337B58 +_02337B48: + ldrb r2, [r0, r3] + add r3, r3, #1 + add r2, ip, r2 + and ip, r2, #0xff +_02337B58: + cmp r3, r1 + blt _02337B48 + mov r0, ip + bx lr + arm_func_end ov01_02337B3C + + arm_func_start ov01_02337B68 +ov01_02337B68: ; 0x02337B68 + stmdb sp!, {r4, lr} + mov r4, r0 + add r0, r4, #4 + mov r1, #0x14 + bl ov01_02337B3C + ldrb r1, [r4] + cmp r1, #0x11 + movne r0, #2 + ldmneia sp!, {r4, pc} + ldrb r1, [r4, #3] + cmp r0, r1 + movne r0, #3 + moveq r0, #1 + ldmia sp!, {r4, pc} + arm_func_end ov01_02337B68 + + arm_func_start ov01_02337BA0 +ov01_02337BA0: ; 0x02337BA0 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + mov r0, #0x60 + mov r1, #8 + bl MemAlloc + ldr r2, _02337C50 ; =ov01_0233C210 + mov r1, #0x60 + str r0, [r2, #4] + bl MemZero + ldr r0, _02337C50 ; =ov01_0233C210 + mov r2, #0 + ldr r1, [r0, #4] + mov ip, #2 + str r2, [r1] + ldr r1, [r0, #4] + str r2, [r1, #0x30] + ldr r5, [r0, #4] + add lr, r5, #8 +_02337BE8: + ldmia r4!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _02337BE8 + ldr r1, [r4] + mov r0, #1 + str r1, [lr] + mov r4, #0 + ldr r1, _02337C50 ; =ov01_0233C210 + str r4, [r5, #4] + ldr r3, [r1, #4] + sub r2, r0, #2 + strb r0, [r3, #0x3c] + ldr r3, [r1, #4] + strb r4, [r3, #0x3e] + ldr r3, [r1, #4] + str r4, [r3, #0x40] + ldr r3, [r1, #4] + str r4, [r3, #0x44] + ldr r3, [r1, #4] + str r4, [r3, #0x48] + ldr r3, [r1, #4] + str r4, [r3, #0x4c] + ldr r1, [r1, #4] + str r2, [r1, #0x50] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02337C50: .word ov01_0233C210 + arm_func_end ov01_02337BA0 + + arm_func_start ov01_02337C54 +ov01_02337C54: ; 0x02337C54 + stmdb sp!, {r3, lr} + ldr r0, _02337C8C ; =ov01_0233C210 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl ov01_0233893C + bl ov01_02338978 + ldr r0, _02337C8C ; =ov01_0233C210 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _02337C8C ; =ov01_0233C210 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02337C8C: .word ov01_0233C210 + arm_func_end ov01_02337C54 + + arm_func_start ov01_02337C90 +ov01_02337C90: ; 0x02337C90 + ldr r0, _02337CA8 ; =ov01_0233C210 + ldr r0, [r0, #4] + cmp r0, #0 + ldrne r0, [r0, #0x30] + moveq r0, #0 + bx lr + .align 2, 0 +_02337CA8: .word ov01_0233C210 + arm_func_end ov01_02337C90 + + arm_func_start ov01_02337CAC +ov01_02337CAC: ; 0x02337CAC + stmdb sp!, {r4, lr} + ldr r0, _02337CE0 ; =ov01_0233C210 + ldr r4, [r0, #4] + cmp r4, #0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #0x2c] + cmp r0, #0xb + ldmneia sp!, {r4, pc} + mov r0, #0x1e0 + bl ov01_0232B020 + mov r0, #1 + str r0, [r4, #0x2c] + ldmia sp!, {r4, pc} + .align 2, 0 +_02337CE0: .word ov01_0233C210 + arm_func_end ov01_02337CAC + + arm_func_start ov01_02337CE4 +ov01_02337CE4: ; 0x02337CE4 + ldr r0, _02337CFC ; =ov01_0233C210 + ldr r0, [r0, #4] + cmp r0, #0 + ldrneb r0, [r0, #0x3c] + moveq r0, #1 + bx lr + .align 2, 0 +_02337CFC: .word ov01_0233C210 + arm_func_end ov01_02337CE4 + + arm_func_start ov01_02337D00 +ov01_02337D00: ; 0x02337D00 + ldr r1, _02337D14 ; =ov01_0233C210 + ldr r1, [r1, #4] + cmp r1, #0 + strneb r0, [r1, #0x3c] + bx lr + .align 2, 0 +_02337D14: .word ov01_0233C210 + arm_func_end ov01_02337D00 + + arm_func_start ov01_02337D18 +ov01_02337D18: ; 0x02337D18 + ldr r1, _02337D2C ; =ov01_0233C210 + ldr r1, [r1, #4] + cmp r1, #0 + strneb r0, [r1, #0x3e] + bx lr + .align 2, 0 +_02337D2C: .word ov01_0233C210 + arm_func_end ov01_02337D18 + + arm_func_start ov01_02337D30 +ov01_02337D30: ; 0x02337D30 + stmdb sp!, {r3, lr} + ldr r1, _02337DCC ; =ov01_0233C210 + ldr r0, [r1, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov ip, #0 + str ip, [r0, #0x30] + ldr r0, [r1, #4] + mov r3, #1 + str ip, [r0, #4] + ldr r0, [r1, #4] + sub r2, r3, #2 + strb r3, [r0, #0x3c] + ldr r3, [r1, #4] + mov r0, #0x1e0 + strb ip, [r3, #0x3e] + ldr r3, [r1, #4] + str ip, [r3, #0x40] + ldr r3, [r1, #4] + str ip, [r3, #0x44] + ldr r3, [r1, #4] + str ip, [r3, #0x48] + ldr r3, [r1, #4] + str ip, [r3, #0x4c] + ldr r1, [r1, #4] + str r2, [r1, #0x50] + bl ov01_0232B020 + mov r0, #1 + bl ov01_0232B080 + bl ov01_0232C024 + ldr r0, _02337DCC ; =ov01_0233C210 + ldr r0, [r0, #4] + ldr r0, [r0, #0x18] + bl ov01_0232AED4 + ldr r0, _02337DCC ; =ov01_0233C210 + mov r1, #3 + ldr r0, [r0, #4] + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02337DCC: .word ov01_0233C210 + arm_func_end ov01_02337D30 + + arm_func_start ov01_02337DD0 +ov01_02337DD0: ; 0x02337DD0 + ldr r0, _02337E08 ; =ov01_0233C210 + ldr r1, [r0, #4] + cmp r1, #0 + bxeq lr + ldr r0, [r1, #0x30] + cmp r0, #4 + cmpne r0, #0 + moveq r0, #6 + streq r0, [r1, #0x30] + ldr r0, _02337E08 ; =ov01_0233C210 + mov r1, #9 + ldr r0, [r0, #4] + str r1, [r0] + bx lr + .align 2, 0 +_02337E08: .word ov01_0233C210 + arm_func_end ov01_02337DD0 + + arm_func_start ov01_02337E0C +ov01_02337E0C: ; 0x02337E0C + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + ldr r0, _02338844 ; =ov01_0233C210 + ldr sb, [r0, #4] + ldr r0, [sb] + cmp r0, #0xc + addls pc, pc, r0, lsl #2 + b _02338838 +_02337E2C: ; jump table + b _02337E60 ; case 0 + b _02337E7C ; case 1 + b _02337EFC ; case 2 + b _02337F28 ; case 3 + b _02337F44 ; case 4 + b _02337F58 ; case 5 + b _02337FAC ; case 6 + b _02338674 ; case 7 + b _0233868C ; case 8 + b _023386F4 ; case 9 + b _02338710 ; case 10 + b _02338768 ; case 11 + b _02338828 ; case 12 +_02337E60: + ldr r0, [sb, #0x28] + bl ov01_0232ADC0 + ldr r0, [sb, #0x18] + bl ov01_0232AED4 + mov r0, #1 + str r0, [sb] + b _02338838 +_02337E7C: + ldrb r0, [sb, #0x3e] + mov r1, #0xa0 + mov r2, #0 + cmp r0, #0 + mov r0, #0xe0 + bne _02337ED8 + bl ov01_0232C148 + mov r0, #0xec + mov r1, #0x1c + mov r2, #7 + mov r3, #6 + bl ov01_0232C3AC + ldr r1, _02338844 ; =ov01_0233C210 + mov r0, #0 + ldrsb r4, [r1] + ldr r2, _02338848 ; =ov01_0233BD1C + ldr r3, _0233884C ; =0x000036D8 + mov r1, r0 + str r4, [sp] + bl sub_02046A9C + mov r0, #2 + str r0, [sb] + b _02338838 +_02337ED8: + bl ov01_0232C148 + mov r0, #0xec + mov r1, #0x1c + mov r2, #7 + mov r3, #6 + bl ov01_0232C3AC + mov r0, #3 + str r0, [sb] + b _02338838 +_02337EFC: + bl ov01_02337948 + cmp r0, #2 + moveq r0, #3 + streq r0, [sb] + beq _02338838 + cmp r0, #3 + cmpne r0, #1 + bne _02338838 + bl ov01_0232B2CC + mov r0, #1 + b _0233883C +_02337F28: + mov r0, #0 + ldr r1, _02338850 ; =0x000036D9 + mov r2, r0 + bl sub_02046BE8 + mov r0, #4 + str r0, [sb] + b _02338838 +_02337F44: + bl sub_02046C78 + cmp r0, #0 + movne r0, #5 + strne r0, [sb] + b _02338838 +_02337F58: + bl sub_02003B94 + ldr r0, _02338844 ; =ov01_0233C210 + ldr r1, _02338854 ; =ov01_02338864 + ldr r2, [r0, #4] + mov r0, #0 + str r0, [r2, #0x2c] + bl ov01_0232B5D0 + ldr r0, _02338844 ; =ov01_0233C210 + mov r3, #0 + ldr r1, [r0, #4] + ldr r2, _02338858 ; =ov01_023389D4 + str r3, [r1, #0x34] + ldr r1, [r0, #4] + str r3, [r1, #0x38] + ldr r0, [r0, #4] + ldrh r1, [r0, #0x24] + ldr r0, [r0, #0x20] + bl ov01_0232B124 + mov r0, #6 + str r0, [sb] + b _02338838 +_02337FAC: + ldr r0, [sb, #4] + mov r5, #0 + add r0, sb, r0, lsl #2 + ldr r7, [r0, #0xc] + bl ov01_0232AF4C + mov r6, r0 + bl ov01_0232AFC4 + cmp r0, #0 + beq _0233800C + mov r0, r5 + bl ov01_0232B040 + ldr r0, _02338844 ; =ov01_0233C210 + ldr r1, [r0, #4] + ldr r0, [r1, #0x2c] + cmp r0, #5 + blt _02338000 + cmp r0, #0xb + ldrneb r0, [r1, #0x3d] + cmpne r0, #0 + movne r5, #1 + bne _02338580 +_02338000: + mov r0, #0xa + str r0, [sb, #0x2c] + b _0233809C +_0233800C: + bl ov01_0232BE4C + cmp r0, #0 + bne _02338060 + bl ov01_02337CE4 + cmp r0, #0 + beq _02338060 + add r1, sp, #0xc + mov r0, r5 + bl GetPressedButtons + ldrh r0, [sp, #0xc] + tst r0, #2 + bne _02338054 + bl sub_020467F0 + cmp r0, #0 + bne _02338054 + bl sub_02003B5C + cmp r0, #0 + beq _02338060 +_02338054: + bl ov01_0232BE08 + mov r0, #9 + str r0, [sb, #0x2c] +_02338060: + cmp r6, #5 + addls pc, pc, r6, lsl #2 + b _0233808C +_0233806C: ; jump table + b _0233808C ; case 0 + b _0233808C ; case 1 + b _02338084 ; case 2 + b _0233808C ; case 3 + b _0233808C ; case 4 + b _0233808C ; case 5 +_02338084: + mov r0, #0xa + str r0, [sb, #0x2c] +_0233808C: + bl ov01_0232C008 + cmp r0, #0xa + movge r0, #0xa + strge r0, [sb, #0x2c] +_0233809C: + sub fp, r6, #4 + b _02338574 +_023380A4: + ldr r0, [sb, #0x2c] + mov r5, #1 + cmp r0, #0xb + addls pc, pc, r0, lsl #2 + b _02338574 +_023380B8: ; jump table + b _023380E8 ; case 0 + b _02338104 ; case 1 + b _02338254 ; case 2 + b _023382A8 ; case 3 + b _023383DC ; case 4 + b _02338438 ; case 5 + b _02338474 ; case 6 + b _023384D4 ; case 7 + b _023384E8 ; case 8 + b _023384EC ; case 9 + b _02338528 ; case 10 + b _02338560 ; case 11 +_023380E8: + cmp r6, #0 + beq _023380F8 + cmp fp, #1 + bhi _02338574 +_023380F8: + mov r0, #1 + str r0, [sb, #0x2c] + b _02338574 +_02338104: + ldr r0, _02338844 ; =ov01_0233C210 + ldr sl, [r7] + ldr r0, [r0, #4] + add r1, sl, #0x21 + ldr r0, [r0, #0x40] + bic r8, r1, #0x1f + cmp r0, #0 + ldr r0, [r7, #4] + str r0, [sp, #4] + bne _023381F0 + mov r0, r8 + mov r1, #0xf + bl MemAlloc + mov r4, r0 + mov r0, r8 + mov r1, #8 + bl MemAlloc + ldr ip, _02338844 ; =ov01_0233C210 + ldr r1, [sp, #4] + ldr r3, [ip, #4] + mov r2, sl + str r0, [r3, #0x40] + ldr r3, [ip, #4] + add r0, r4, #2 + str r8, [r3, #0x44] + bl MemcpySimple + add r0, sl, #2 + sub r1, r8, sl + add r0, r4, r0 + sub r1, r1, #2 + bl MemZero + mov r3, #0 + mov r0, r3 + sub r2, r8, #2 + b _023381B0 +_02338190: + add r1, r4, r0 + ldrb sl, [r1, #3] + ldrb r1, [r1, #2] + add r0, r0, #2 + orr r1, r1, sl, lsl #8 + add r1, r3, r1 + mov r1, r1, lsl #0x10 + mov r3, r1, lsr #0x10 +_023381B0: + cmp r0, r2 + blo _02338190 + and r0, r3, #0xff + add r0, r0, r3, asr #8 + and r0, r0, #0xff + add r1, r4, #2 + strh r3, [r4] + bl sub_0204E02C + ldr r0, _02338844 ; =ov01_0233C210 + mov r1, r4 + ldr r0, [r0, #4] + mov r2, r8 + ldr r0, [r0, #0x40] + bl sub_0204DF54 + mov r0, r4 + bl MemFree +_023381F0: + ldr r0, _02338844 ; =ov01_0233C210 + ldr r1, [r7, #8] + ldr r0, [r0, #4] + add r1, r1, #0x21 + ldr r0, [r0, #0x48] + bic r4, r1, #0x1f + cmp r0, #0 + bne _02338230 + mov r0, r4 + mov r1, #8 + bl MemAlloc + ldr r1, _02338844 ; =ov01_0233C210 + ldr r2, [r1, #4] + str r0, [r2, #0x48] + ldr r0, [r1, #4] + str r4, [r0, #0x4c] +_02338230: + mov r1, #0 + strb r1, [sb, #0x54] + ldr r0, [sb, #0x18] + cmp r0, #1 + moveq r1, #0xa + str r1, [sb, #0x5c] + mov r0, #2 + str r0, [sb, #0x2c] + b _02338574 +_02338254: + bl ov01_0232AFB0 + cmp r0, #0 + beq _02338574 + ldr r0, [sb, #0x5c] + sub r0, r0, #1 + str r0, [sb, #0x5c] + cmp r0, #0 + bgt _02338574 + mov r0, #0 + bl ov01_02337D00 + bl ov01_0232B068 + ldr r1, [r7] + ldr r2, [r7, #0xc] + ldmib r7, {r0, r3} + bl ov01_0232B420 + cmp r0, #0 + movne r0, #0x258 + strne r0, [sb, #0x50] + movne r0, #3 + strne r0, [sb, #0x2c] + b _02338574 +_023382A8: + ldr r0, [sb, #0x50] + sub r0, r0, #1 + str r0, [sb, #0x50] + bl ov01_0232B00C + cmp r0, #0 + beq _023383AC + bl ov01_0232B068 + ldr r8, [r7, #8] + ldr r2, [sb, #0x4c] + ldr r4, [sb, #0x48] + mov r0, r8 + mov r1, #0xf + str r2, [sp, #8] + ldr sl, [r7, #0xc] + bl MemAlloc + mov r1, r4 + mov r4, r0 + mov r2, r8 + bl sub_0204DFB0 + ldrb r3, [r4] + ldrb r0, [r4, #1] + add r1, r4, #2 + sub r2, r8, #2 + add r0, r3, r0 + and r0, r0, #0xff + bl sub_0204E0A0 + mov r1, #0 + mov r0, r1 + sub r2, r8, #2 + b _02338340 +_02338320: + add r3, r4, r0 + ldrb r8, [r3, #3] + ldrb r3, [r3, #2] + add r0, r0, #2 + orr r3, r3, r8, lsl #8 + add r1, r1, r3 + mov r1, r1, lsl #0x10 + mov r1, r1, lsr #0x10 +_02338340: + cmp r0, r2 + blo _02338320 + ldrh r0, [r4] + cmp r1, r0 + beq _02338360 + mov r0, r4 + bl MemFree + b _02338378 +_02338360: + ldr r2, [sp, #8] + mov r0, sl + mov r1, r4 + bl MemcpySimple + mov r0, r4 + bl MemFree +_02338378: + ldr r1, [r7, #0x10] + cmp r1, #0 + moveq r0, #1 + beq _02338390 + ldr r0, [r7, #0xc] + blx r1 +_02338390: + str r0, [sb, #0x34] + mov r0, #0 + str r0, [sb, #0x38] + strb r0, [sb, #0x3d] + mov r0, #4 + str r0, [sb, #0x2c] + b _02338574 +_023383AC: + ldr r0, [sb, #0x50] + cmp r0, #0 + bgt _02338574 + ldrb r0, [sb, #0x54] + cmp r0, #0 + moveq r0, r5 + streqb r0, [sb, #0x54] + moveq r0, #2 + streq r0, [sb, #0x2c] + beq _02338574 + mov r5, #4 + b _02338580 +_023383DC: + ldr r0, [sb, #0x18] + cmp r0, #0 + bne _02338424 + ldr r0, [sb, #0x34] + add r2, sp, #0xe + strb r0, [sp, #0xe] + ldr r3, [sb, #0x38] + mov r0, #0 + mov r1, #3 + strb r3, [sp, #0xf] + strb r0, [sp, #0x10] + bl ov01_0232B540 + cmp r0, #0 + movne r0, #0x258 + strne r0, [sb, #0x50] + movne r0, #5 + strne r0, [sb, #0x2c] + b _02338574 +_02338424: + mov r0, #0x258 + str r0, [sb, #0x50] + mov r0, #5 + str r0, [sb, #0x2c] + b _02338574 +_02338438: + ldr r0, [sb, #0x50] + sub r0, r0, #1 + str r0, [sb, #0x50] + ldrb r0, [sb, #0x3d] + cmp r0, #0 + movne r0, #6 + strne r0, [sb, #0x2c] + movne r0, #0x3c + strne r0, [sb, #0x58] + bne _02338574 + ldr r0, [sb, #0x50] + cmp r0, #0 + bgt _02338574 + mov r5, #4 + b _02338580 +_02338474: + ldr r0, [sb, #0x58] + mov r1, #0xa + bl _s32_div_f + cmp r1, #0 + bne _023384B8 + ldr r0, _02338844 ; =ov01_0233C210 + add r2, sp, #0x11 + ldr r4, [r0, #4] + mov r3, r5 + ldr r1, [r4, #0x34] + mov r0, #0 + strb r1, [sp, #0x11] + ldr r4, [r4, #0x38] + mov r1, #3 + strb r4, [sp, #0x12] + strb r3, [sp, #0x13] + bl ov01_0232B540 +_023384B8: + ldr r0, [sb, #0x58] + sub r0, r0, #1 + str r0, [sb, #0x58] + cmp r0, #0 + movle r0, #7 + strle r0, [sb, #0x2c] + b _02338574 +_023384D4: + ldr r0, _0233885C ; =ov01_0233BE24 + bl Debug_Print0 + mov r0, #8 + str r0, [sb, #0x2c] + b _02338574 +_023384E8: + b _02338580 +_023384EC: + bl ov01_0232BDDC + cmp r0, #0 + beq _02338504 + bl ov01_0232BDF0 + mov r5, #2 + b _02338580 +_02338504: + bl ov01_0232BE4C + cmp r0, #0 + beq _0233851C + bl ov01_0232AFB0 + cmp r0, #0 + beq _02338574 +_0233851C: + mov r0, #0 + str r0, [sb, #0x2c] + b _02338574 +_02338528: + ldr r0, _02338860 ; =ov01_0233BE48 + bl Debug_Print0 + bl ov01_0232C008 + cmp r0, #0xa + beq _02338548 + cmp r0, #0xc + beq _02338550 + b _02338558 +_02338548: + mov r5, #4 + b _02338580 +_02338550: + mov r5, #3 + b _02338580 +_02338558: + mov r5, #3 + b _02338580 +_02338560: + bl sub_02003B5C + cmp r0, #0 + movne r5, #3 + moveq r5, #5 + b _02338580 +_02338574: + cmp r5, #0 + beq _023380A4 + mov r5, #0 +_02338580: + cmp r5, #1 + bne _023385FC + bl ov01_0233893C + bl ov01_02338978 + ldr r1, [sb, #4] + ldr r0, [sb, #8] + add r1, r1, #1 + cmp r1, r0 + blo _023385DC + mov r0, #0 + bl ov01_0232C040 + mov r0, #4 + str r0, [sb, #0x30] + bl ov01_023389B4 + cmp r0, #1 + bne _023385D0 + ldrb r0, [sb, #0x26] + cmp r0, #0 + movne r0, #7 + bne _023385D4 +_023385D0: + mov r0, #9 +_023385D4: + str r0, [sb] + b _023385EC +_023385DC: + mov r0, #0xe10 + bl ov01_0232B020 + mov r0, #0xb + str r0, [sb, #0x2c] +_023385EC: + ldr r0, [sb, #4] + add r0, r0, #1 + str r0, [sb, #4] + b _02338838 +_023385FC: + cmp r5, #5 + moveq r0, #0xf + beq _0233883C + cmp r5, #2 + bne _0233862C + bl ov01_0233893C + bl ov01_02338978 + mov r0, #5 + str r0, [sb, #0x30] + mov r0, #9 + str r0, [sb] + b _02338838 +_0233862C: + cmp r5, #4 + bne _02338650 + bl ov01_0233893C + bl ov01_02338978 + mov r0, #7 + str r0, [sb, #0x30] + mov r0, #9 + str r0, [sb] + b _02338838 +_02338650: + cmp r5, #3 + bne _02338838 + bl ov01_0233893C + bl ov01_02338978 + mov r0, #8 + str r0, [sb, #0x30] + mov r0, #9 + str r0, [sb] + b _02338838 +_02338674: + bl ov01_0232B18C + mov r0, #8 + str r0, [sb] + mov r0, #0x258 + str r0, [sb, #0x50] + b _02338838 +_0233868C: + bl ov01_0232AF4C + cmp r0, #2 + cmpne r0, #0 + beq _023386AC + cmp r0, #1 + movne r0, #0 + moveq r0, #1 + b _023386B4 +_023386AC: + bl ov01_0232B2CC + mov r0, #1 +_023386B4: + cmp r0, #0 + movne r0, #0xb + strne r0, [sb] + bne _02338838 + ldr r1, [sb, #0x50] + sub r0, r1, #1 + str r0, [sb, #0x50] + cmp r1, #0 + bge _02338838 + mov r0, #1 + bl ov01_0232B210 + mov r0, #0x258 + str r0, [sb, #0x50] + mov r0, #0xa + str r0, [sb] + b _02338838 +_023386F4: + mov r0, #0 + bl ov01_0232B210 + mov r0, #0xa + str r0, [sb] + mov r0, #0x258 + str r0, [sb, #0x50] + b _02338838 +_02338710: + bl ov01_0232AF4C + cmp r0, #2 + cmpne r0, #0 + movne r0, #0 + bne _0233872C + bl ov01_0232B2CC + mov r0, #1 +_0233872C: + cmp r0, #0 + beq _02338740 + bl sub_02003BC8 + mov r0, #0xb + str r0, [sb] +_02338740: + ldr r1, [sb, #0x50] + sub r0, r1, #1 + str r0, [sb, #0x50] + cmp r1, #0 + bge _02338838 + mov r0, #1 + bl ov01_0232B210 + mov r0, #0x258 + str r0, [sb, #0x50] + b _02338838 +_02338768: + ldr r0, [sb, #0x30] + ldr r4, [sb, #0x20] + cmp r0, #4 + bne _023387F8 + bl ov01_023389B4 + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _02338804 +_02338788: ; jump table + b _02338804 ; case 0 + b _023387A8 ; case 1 + b _023387B0 ; case 2 + b _023387BC ; case 3 + b _023387C8 ; case 4 + b _023387D4 ; case 5 + b _023387E0 ; case 6 + b _023387EC ; case 7 +_023387A8: + mov r0, #4 + b _0233883C +_023387B0: + mov r0, #9 + str r0, [sb, #0x30] + b _02338804 +_023387BC: + mov r0, #0xa + str r0, [sb, #0x30] + b _02338804 +_023387C8: + mov r0, #0xb + str r0, [sb, #0x30] + b _02338804 +_023387D4: + mov r0, #0xc + str r0, [sb, #0x30] + b _02338804 +_023387E0: + mov r0, #0xd + str r0, [sb, #0x30] + b _02338804 +_023387EC: + mov r0, #0xe + str r0, [sb, #0x30] + b _02338804 +_023387F8: + cmp r0, #6 + moveq r0, #6 + beq _0233883C +_02338804: + bl sub_02046BB4 + ldrb r1, [sb, #0x1c] + ldrb r2, [r4] + ldrb r3, [sb, #0x3e] + ldr r0, [sb, #0x30] + bl ov01_02337998 + mov r0, #0xc + str r0, [sb] + b _02338838 +_02338828: + bl sub_02046C78 + cmp r0, #0 + ldrne r0, [sb, #0x30] + bne _0233883C +_02338838: + mov r0, #0 +_0233883C: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02338844: .word ov01_0233C210 +_02338848: .word ov01_0233BD1C +#if defined(EUROPE) +_0233884C: .word 0x000036DA +_02338850: .word 0x000036DB +#elif defined(JAPAN) +_0233884C: .word 0x0000335A +_02338850: .word 0x0000335B +#else +_0233884C: .word 0x000036D8 +_02338850: .word 0x000036D9 +#endif +_02338854: .word ov01_02338864 +_02338858: .word ov01_023389D4 +_0233885C: .word ov01_0233BE24 +_02338860: .word ov01_0233BE48 + arm_func_end ov01_02337E0C + + arm_func_start ov01_02338864 +ov01_02338864: ; 0x02338864 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + ldr r2, _02338938 ; =ov01_0233C210 + mov r4, r1 + ldr r2, [r2, #4] + mov r0, #0 + ldr r1, [r2, #0x34] + strb r1, [sp] + ldr r1, [r2, #0x38] + strb r0, [sp, #2] + strb r1, [sp, #1] + ldrb r1, [r4] + ldr r3, [r2, #0x38] + cmp r3, r1 + ldreqb r1, [r4, #1] + ldreq r3, [r2, #0x34] + cmpeq r3, r1 + beq _023388F0 + ldr r0, _02338938 ; =ov01_0233C210 + mov r1, #0 + str r1, [r0, #8] + ldrb r1, [r4] + ldr r0, [r2, #0x38] + cmp r0, r1 + strne r1, [r2, #0x38] + add r2, sp, #0 + mov r0, #0 + mov r1, #3 + bl ov01_0232B540 + cmp r0, #0 + ldreq r0, _02338938 ; =ov01_0233C210 + moveq r1, #0xa + ldreq r0, [r0, #4] + streq r1, [r0, #0x2c] + b _02338930 +_023388F0: + ldrb r1, [r2, #0x3d] + cmp r1, #0 + bne _02338930 + mov r1, #1 + strb r1, [r2, #0x3d] + strb r1, [sp, #2] + add r2, sp, #0 + mov r1, #3 + bl ov01_0232B540 + ldrb r1, [r4, #2] + cmp r1, #0 + cmpeq r0, #0 + ldreq r0, _02338938 ; =ov01_0233C210 + moveq r1, #0xa + ldreq r0, [r0, #4] + streq r1, [r0, #0x2c] +_02338930: + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_02338938: .word ov01_0233C210 + arm_func_end ov01_02338864 + + arm_func_start ov01_0233893C +ov01_0233893C: ; 0x0233893C + stmdb sp!, {r3, lr} + ldr r0, _02338974 ; =ov01_0233C210 + ldr r0, [r0, #4] + ldr r0, [r0, #0x40] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _02338974 ; =ov01_0233C210 + mov r2, #0 + ldr r1, [r0, #4] + str r2, [r1, #0x40] + ldr r0, [r0, #4] + str r2, [r0, #0x44] + ldmia sp!, {r3, pc} + .align 2, 0 +_02338974: .word ov01_0233C210 + arm_func_end ov01_0233893C + + arm_func_start ov01_02338978 +ov01_02338978: ; 0x02338978 + stmdb sp!, {r3, lr} + ldr r0, _023389B0 ; =ov01_0233C210 + ldr r0, [r0, #4] + ldr r0, [r0, #0x48] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _023389B0 ; =ov01_0233C210 + mov r2, #0 + ldr r1, [r0, #4] + str r2, [r1, #0x48] + ldr r0, [r0, #4] + str r2, [r0, #0x4c] + ldmia sp!, {r3, pc} + .align 2, 0 +_023389B0: .word ov01_0233C210 + arm_func_end ov01_02338978 + + arm_func_start ov01_023389B4 +ov01_023389B4: ; 0x023389B4 + ldr r0, _023389D0 ; =ov01_0233C210 + ldr r1, [r0, #4] + ldr r0, [r1, #0x34] + ldr r1, [r1, #0x38] + cmp r0, r1 + movlt r0, r1 + bx lr + .align 2, 0 +_023389D0: .word ov01_0233C210 + arm_func_end ov01_023389B4 + + arm_func_start ov01_023389D4 +ov01_023389D4: ; 0x023389D4 + ldr r1, _02338A20 ; =ov01_0233C210 + ldrb r2, [r0, #0x4a] + ldr r1, [r1, #4] + cmp r2, #0 + ldr r2, [r1, #0x20] + moveq r0, #0 + bxeq lr + ldrb r1, [r0, #0x51] + cmp r1, #0 + ldrneb r1, [r2, #1] + cmpne r1, #0 + movne r0, #0 + bxne lr + ldrb r1, [r0, #0x50] + ldrb r0, [r2] + cmp r1, r0 + moveq r0, #1 + movne r0, #0 + bx lr + .align 2, 0 +_02338A20: .word ov01_0233C210 + arm_func_end ov01_023389D4 + + arm_func_start ov01_02338A24 +ov01_02338A24: ; 0x02338A24 +#ifdef JAPAN + stmdb sp!, {r3, lr} + sub sp, sp, #8 +#else + stmdb sp!, {lr} + sub sp, sp, #0xc +#endif + ldr r0, _02338B00 ; =0x00005004 + mov r1, #8 + bl MemAlloc + ldr r2, _02338B04 ; =ov01_0233C21C + ldr r1, _02338B00 ; =0x00005004 + str r0, [r2, #4] + bl MemZero + ldr r2, _02338B04 ; =ov01_0233C21C + mov r1, #0 + ldr r3, [r2, #4] + add r0, sp, #0 + str r1, [r3] + ldr r3, [r2, #4] + str r1, [r3, #0xc] + ldr r3, [r2, #4] + strb r1, [r3, #0x10] + ldr r3, [r2, #4] + strb r1, [r3, #0x11] + ldr r3, [r2, #4] + strb r1, [r3, #0x12] + ldr r3, [r2, #4] +#ifdef JAPAN + str r1, [r3, #0x24] + ldr r3, [r2, #4] + strb r1, [r3, #0x1e] + ldr r3, [r2, #4] + strb r1, [r3, #0x1f] + ldr r3, [r2, #4] + strb r1, [r3, #0x20] + ldr r3, [r2, #4] + strb r1, [r3, #0x21] + ldr r3, [r2, #4] + strb r1, [r3, #0x22] + ldr r3, [r2, #4] + str r1, [r3, #0x2c] + ldr r3, [r2, #4] + str r1, [r3, #0x30] + ldr r3, [r2, #4] + strb r1, [r3, #0x28] + ldr r2, [r2, #4] + add r2, r2, #0x4000 + str r1, [r2, #0xb50] +#else + str r1, [r3, #0x30] + ldr r3, [r2, #4] + strb r1, [r3, #0x28] + ldr r3, [r2, #4] + strb r1, [r3, #0x29] + ldr r3, [r2, #4] + strb r1, [r3, #0x2a] + ldr r3, [r2, #4] + strb r1, [r3, #0x2b] + ldr r3, [r2, #4] + strb r1, [r3, #0x2c] + ldr r3, [r2, #4] + str r1, [r3, #0x38] + ldr r3, [r2, #4] + str r1, [r3, #0x3c] + ldr r3, [r2, #4] + strb r1, [r3, #0x34] + ldr r2, [r2, #4] + add r2, r2, #0x4000 + str r1, [r2, #0xb5c] +#endif + bl GetMainTeamNameWithCheck + ldr r0, _02338B04 ; =ov01_0233C21C + add r1, sp, #0 + ldr r0, [r0, #4] +#ifdef JAPAN + mov r2, #5 + add r0, r0, #0x14 + bl StrcpyName +#else + mov r2, #0xa + add r0, r0, #0x14 + bl sub_02025404 +#endif + bl ov01_0233A840 + bl ov01_0232C0CC + bl ov01_0232C2E4 +#ifdef JAPAN + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_02338B00: .word 0x00004FF8 +#else + add sp, sp, #0xc + ldmia sp!, {pc} + .align 2, 0 +_02338B00: .word 0x00005004 +#endif +_02338B04: .word ov01_0233C21C + arm_func_end ov01_02338A24 + + arm_func_start ov01_02338B08 +ov01_02338B08: ; 0x02338B08 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x50 + ldr r0, _02338BE8 ; =ov01_0233C21C + ldr r0, [r0, #4] + cmp r0, #0 + beq _02338BDC + bl ov00_022BD274 + cmp r0, #0 + bne _02338BBC + mov r5, #0 + add r4, sp, #0 +_02338B34: + mov r0, r5, lsl #0x10 + mov r0, r0, lsr #0x10 + bl ov00_022BD2C0 + strb r0, [r4, r5] + add r5, r5, #1 + cmp r5, #0x10 + blt _02338B34 + ldr r0, _02338BE8 ; =ov01_0233C21C + mov r1, r4 + ldr r0, [r0, #4] + mov r2, #0x10 +#ifdef JAPAN + add r0, r0, #0x65 +#else + add r0, r0, #0x71 +#endif + add r0, r0, #0x4f00 + bl ov00_022BD1D4 + cmp r0, #0 + moveq r0, #1 + beq _02338BAC + add r0, sp, #0x10 + mov r1, #0x10 + bl ov00_022BD1A0 + ldr r0, _02338BE8 ; =ov01_0233C21C + add r1, sp, #0x10 + ldr r0, [r0, #4] + mov r2, #0x10 +#ifdef JAPAN + add r0, r0, #0x378 +#else + add r0, r0, #0x384 +#endif + add r0, r0, #0x4c00 + bl ov00_022BD21C + cmp r0, #0 + moveq r0, #1 + movne r0, #0 +_02338BAC: + cmp r0, #0 + beq _02338BBC + mov r0, #1 + bl ov00_022BD264 +_02338BBC: + bl ov01_0232C370 + bl ov01_0232C10C + ldr r0, _02338BE8 ; =ov01_0233C21C + ldr r0, [r0, #4] + bl MemFree + ldr r0, _02338BE8 ; =ov01_0233C21C + mov r1, #0 + str r1, [r0, #4] +_02338BDC: + bl ov00_022BD274 + add sp, sp, #0x50 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02338BE8: .word ov01_0233C21C + arm_func_end ov01_02338B08 + + arm_func_start ov01_02338BEC +ov01_02338BEC: ; 0x02338BEC + cmp r0, #0 + ldrne r0, _02338C24 ; =ov01_0233C21C + movne r2, #0xd + ldreq r0, _02338C24 ; =ov01_0233C21C + moveq r2, #0xb + ldreq ip, [r0, #4] + ldreq r3, [ip] + streq r3, [ip, #4] + ldr r0, [r0, #4] + str r2, [r0] + ldr r0, _02338C24 ; =ov01_0233C21C + ldr r0, [r0, #4] +#ifdef JAPAN + strb r1, [r0, #0x34] +#else + strb r1, [r0, #0x40] +#endif + bx lr + .align 2, 0 +_02338C24: .word ov01_0233C21C + arm_func_end ov01_02338BEC + + arm_func_start ov01_02338C28 +ov01_02338C28: ; 0x02338C28 + ldr ip, _02338C30 ; =ov01_02338BEC + bx ip + .align 2, 0 +_02338C30: .word ov01_02338BEC + arm_func_end ov01_02338C28 + + arm_func_start ov01_02338C34 +ov01_02338C34: ; 0x02338C34 + ldr r0, _02338C48 ; =ov01_0233C21C + mov r1, #0 + ldr r0, [r0, #4] + strb r1, [r0, #0x12] + bx lr + .align 2, 0 +_02338C48: .word ov01_0233C21C + arm_func_end ov01_02338C34 + + arm_func_start ov01_02338C4C +ov01_02338C4C: ; 0x02338C4C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r1 + cmp r0, #0xd + addls pc, pc, r0, lsl #2 + b _02338DA8 +_02338C60: ; jump table + b _02338C98 ; case 0 + b _02338CAC ; case 1 + b _02338CC0 ; case 2 + b _02338CD4 ; case 3 + b _02338CE8 ; case 4 + b _02338CFC ; case 5 + b _02338D10 ; case 6 + b _02338D24 ; case 7 + b _02338D38 ; case 8 + b _02338D4C ; case 9 + b _02338D60 ; case 10 + b _02338D74 ; case 11 + b _02338D88 ; case 12 + b _02338D9C ; case 13 +_02338C98: + ldr r4, _02338DE0 ; =ov01_0233BE88 + bl ov00_022BCCC8 + mov r1, r0 + mov r3, #0xa4 + b _02338DA8 +_02338CAC: + ldr r4, _02338DE4 ; =ov01_0233BEA4 + bl ov00_022BCCC8 + mov r1, r0 + mov r3, #0x98 + b _02338DA8 +_02338CC0: + ldr r4, _02338DE8 ; =ov01_0233BEC4 + bl ov00_022BCCC8 + mov r1, r0 + mov r3, #0x20 + b _02338DA8 +_02338CD4: + ldr r4, _02338DEC ; =ov01_0233BEE0 + bl ov00_022BCCC8 + mov r1, r0 + mov r3, #0xc + b _02338DA8 +_02338CE8: + ldr r4, _02338DF0 ; =ov01_0233BEFC + bl ov00_022BCCC8 + mov r1, r0 + mov r3, #0xc + b _02338DA8 +_02338CFC: + ldr r4, _02338DF4 ; =ov01_0233BF18 + bl ov00_022BCCC8 + mov r1, r0 + mov r3, #0xd4 + b _02338DA8 +_02338D10: + ldr r4, _02338DF8 ; =ov01_0233BF38 + bl ov00_022BCCC8 + mov r1, r0 + mov r3, #0xc + b _02338DA8 +_02338D24: + ldr r4, _02338DFC ; =ov01_0233BF54 + bl ov00_022BCCC8 + mov r1, r0 + mov r3, #0x7c + b _02338DA8 +_02338D38: + ldr r4, _02338E00 ; =ov01_0233BF74 + bl ov00_022BCCC8 + mov r1, r0 + mov r3, #0xc + b _02338DA8 +_02338D4C: + ldr r4, _02338E04 ; =ov01_0233BF94 + bl ov00_022BCCC8 + mov r1, r0 + mov r3, #0x10c + b _02338DA8 +_02338D60: + ldr r4, _02338E08 ; =ov01_0233BFB0 + bl ov00_022BCCC8 + mov r1, r0 + mov r3, #0x18 + b _02338DA8 +_02338D74: + ldr r4, _02338E0C ; =ov01_0233BFC8 + bl ov00_022BCCC8 + mov r1, r0 + mov r3, #0xc + b _02338DA8 +_02338D88: + ldr r4, _02338E10 ; =ov01_0233BFE0 + bl ov00_022BCCC8 + mov r1, r0 + mov r3, #0xc + b _02338DA8 +_02338D9C: + ldr r4, _02338E14 ; =ov01_0233BFF8 + mov r1, #0 + mov r3, #4 +_02338DA8: + mov ip, #0 + mov r0, r4 + mov r2, r5 + str ip, [sp] + bl ov01_0233A05C + cmp r0, #1 + movne r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, _02338E18 ; =ov01_0233C21C + mov r2, #0x11 + ldr r1, [r0, #4] + mov r0, #1 + str r2, [r1] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02338DE0: .word ov01_0233BE88 +_02338DE4: .word ov01_0233BEA4 +_02338DE8: .word ov01_0233BEC4 +_02338DEC: .word ov01_0233BEE0 +_02338DF0: .word ov01_0233BEFC +_02338DF4: .word ov01_0233BF18 +_02338DF8: .word ov01_0233BF38 +_02338DFC: .word ov01_0233BF54 +_02338E00: .word ov01_0233BF74 +_02338E04: .word ov01_0233BF94 +_02338E08: .word ov01_0233BFB0 +_02338E0C: .word ov01_0233BFC8 +_02338E10: .word ov01_0233BFE0 +_02338E14: .word ov01_0233BFF8 +_02338E18: .word ov01_0233C21C + arm_func_end ov01_02338C4C + + arm_func_start ov01_02338E1C +ov01_02338E1C: ; 0x02338E1C + cmp r0, #0 + ldrne r1, _02338E44 ; =ov01_0233C21C + ldrne r1, [r1, #4] +#ifdef JAPAN + ldrne r1, [r1, #0xb48] +#else + ldrne r1, [r1, #0xb54] +#endif + strne r1, [r0] + ldr r0, _02338E44 ; =ov01_0233C21C + ldr r0, [r0, #4] +#ifdef JAPAN + add r0, r0, #0x34c +#else + add r0, r0, #0x358 +#endif + add r0, r0, #0x800 + bx lr + .align 2, 0 +_02338E44: .word ov01_0233C21C + arm_func_end ov01_02338E1C + + arm_func_start ov01_02338E48 +ov01_02338E48: ; 0x02338E48 + ldr ip, _02338E50 ; =ov01_0233A318 + bx ip + .align 2, 0 +_02338E50: .word ov01_0233A318 + arm_func_end ov01_02338E48 + + arm_func_start ov01_02338E54 +ov01_02338E54: ; 0x02338E54 + ldr r0, _02338E64 ; =ov01_0233C21C + ldr r0, [r0, #4] +#ifdef JAPAN + ldr r0, [r0, #0x3c] +#else + ldr r0, [r0, #0x48] +#endif + bx lr + .align 2, 0 +_02338E64: .word ov01_0233C21C + arm_func_end ov01_02338E54 + + arm_func_start ov01_02338E68 +ov01_02338E68: ; 0x02338E68 + ldr r2, _02338EAC ; =ov01_0233C21C + ldr r3, [r2, #4] +#ifdef JAPAN + ldr r2, [r3, #0x3c] +#else + ldr r2, [r3, #0x48] +#endif + cmp r0, r2 + movge r0, #0 + bxge lr + cmp r1, #0 + movne r2, #0xb0 + mlane r2, r0, r2, r3 +#ifdef JAPAN + ldrne r2, [r2, #0xf0] +#else + ldrne r2, [r2, #0xfc] +#endif + strne r2, [r1] + ldr r1, _02338EAC ; =ov01_0233C21C + ldr r1, [r1, #4] +#ifdef JAPAN + add r1, r1, #0x34c +#else + add r1, r1, #0x358 +#endif + add r1, r1, #0x800 + add r0, r1, r0, lsl #10 + bx lr + .align 2, 0 +_02338EAC: .word ov01_0233C21C + arm_func_end ov01_02338E68 + + arm_func_start ov01_02338EB0 +ov01_02338EB0: ; 0x02338EB0 + ldr r0, _02338EC0 ; =ov01_0233C21C + ldr r0, [r0, #4] +#ifdef JAPAN + ldrb r0, [r0, #0x22] +#else + ldrb r0, [r0, #0x2c] +#endif + bx lr + .align 2, 0 +_02338EC0: .word ov01_0233C21C + arm_func_end ov01_02338EB0 + + arm_func_start ov01_02338EC4 +ov01_02338EC4: ; 0x02338EC4 +#ifdef JAPAN +#define OV01_02338EC4_LOAD_OFFSET -0xC +#define OV01_02338EC4_LOAD_OFFSET_2 -0xA +#else +#define OV01_02338EC4_LOAD_OFFSET 0 +#define OV01_02338EC4_LOAD_OFFSET_2 0 +#endif + stmdb sp!, {r4, r5, lr} +#ifdef EUROPE + sub sp, sp, #0x274 +#else + sub sp, sp, #0x1dc +#endif + ldr r0, _02339804 ; =ov01_0233C21C + ldr r4, [r0, #4] + bl ov01_023399D8 + cmp r0, #2 + bne _02338F14 + ldr r0, [r4] + cmp r0, #0xa + moveq r0, #1 + streqb r0, [r4, #0x12] + ldr r0, [r4] + cmp r0, #0x1a + blt _02338F04 + cmp r0, #0x1f + ble _02338F14 +_02338F04: + ldr r1, [r4] + mov r0, #0x1a + str r1, [r4, #8] + str r0, [r4] +_02338F14: + ldrb r0, [r4, #0x34 + OV01_02338EC4_LOAD_OFFSET] + cmp r0, #0 + beq _02338F40 + bl ov00_022BDC6C + add r0, r0, #6 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl ov01_0232C1D8 + mov r0, #0 + mov r1, r0 + bl ov01_0232C454 +_02338F40: + ldrb r0, [r4, #0x12] + cmp r0, #0 + movne r0, #5 + bne _023397FC + ldr r0, [r4] + cmp r0, #0x21 + addls pc, pc, r0, lsl #2 + b _023397F8 +_02338F60: ; jump table + b _02338FE8 ; case 0 + b _023390F4 ; case 1 + b _0233911C ; case 2 + b _0233915C ; case 3 + b _023391BC ; case 4 + b _023391F0 ; case 5 + b _02339218 ; case 6 + b _02339240 ; case 7 + b _02339254 ; case 8 + b _0233926C ; case 9 + b _02339280 ; case 10 + b _02339288 ; case 11 + b _023392B0 ; case 12 + b _02339308 ; case 13 + b _02339328 ; case 14 + b _0233933C ; case 15 + b _02339368 ; case 16 + b _02339394 ; case 17 + b _023393D8 ; case 18 + b _0233941C ; case 19 + b _0233943C ; case 20 + b _023394B4 ; case 21 + b _023395A8 ; case 22 + b _023395D4 ; case 23 + b _023395F4 ; case 24 + b _02339608 ; case 25 + b _0233961C ; case 26 + b _02339728 ; case 27 + b _0233973C ; case 28 + b _02339750 ; case 29 + b _02339778 ; case 30 + b _023397C8 ; case 31 + b _023397D8 ; case 32 + b _023397E8 ; case 33 +_02338FE8: + bl sub_0204A1CC + bl ov00_022BCA80 + cmp r0, #3 + bne _02339024 + mov r0, #0xe + str r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] + mov r0, #1 + str r0, [r4, #0x3c + OV01_02338EC4_LOAD_OFFSET] + mov r0, #8 + str r0, [r4, #0x30 + OV01_02338EC4_LOAD_OFFSET] + mov r0, #0x1a + str r0, [r4] + mov r0, #0 + str r0, [r4, #8] + b _023397F8 +_02339024: + mov r0, #0xe0 + mov r1, #0xa0 + mov r2, #1 + bl ov01_0232C148 + mov r0, #0xec + mov r1, #0x1c + mov r2, #7 + mov r3, #6 + bl ov01_0232C3AC + bl ov00_022BCCAC + cmp r0, #0 + bne _02339080 + ldr r0, _02339804 ; =ov01_0233C21C + ldr r2, _02339808 ; =ov01_0233BE70 + ldrsb r5, [r0, #1] + ldr r3, _0233980C ; =0x0000375D + mov r0, #0 + mov r1, #8 + str r5, [sp] + bl sub_02046A9C + mov r0, #2 + str r0, [r4] + b _023397F8 +_02339080: + bl ov00_022BCCF4 + cmp r0, #0 + bne _023390C8 + mov r0, #1 +#ifdef EUROPE + str r0, [sp, #0x13c] +#else + str r0, [sp, #0xa4] +#endif + ldr r1, _02339808 ; =ov01_0233BE70 + ldr r0, _02339810 ; =0x0000375E + str r1, [sp] + str r0, [sp, #4] + mov r0, #0 +#ifdef EUROPE + add r3, sp, #0x13c +#else + add r3, sp, #0xa4 +#endif + mov r1, #8 + mov r2, #0x33 + str r0, [sp, #8] + bl sub_02046A20 + mov r0, #3 + str r0, [r4] + b _023397F8 +_023390C8: + ldr r1, _02339804 ; =ov01_0233C21C + mov r0, #0 + ldrsb r5, [r1] + ldr r2, _02339808 ; =ov01_0233BE70 + ldr r3, _02339814 ; =0x0000375C + mov r1, r0 + str r5, [sp] + bl sub_02046A9C + mov r0, #1 + str r0, [r4] + b _023397F8 +_023390F4: + bl ov01_02339838 + cmp r0, #2 + moveq r0, #5 + streq r0, [r4] + beq _023397F8 + cmp r0, #3 + cmpne r0, #1 + moveq r0, #0x20 + streq r0, [r4] + b _023397F8 +_0233911C: + bl ov01_02339860 + cmp r0, #2 + bne _02339148 + add r0, r4, #0x3c4 + OV01_02338EC4_LOAD_OFFSET + add r0, r0, #0x4c00 + bl ov00_022BCD10 + mov r0, #1 + strb r0, [r4, #0x11] + mov r0, #5 + str r0, [r4] + b _023397F8 +_02339148: + cmp r0, #3 + cmpne r0, #1 + moveq r0, #0x20 + streq r0, [r4] + b _023397F8 +_0233915C: + bl sub_02046B04 + bl ov01_023399A8 + cmp r0, #2 + bne _023391A8 + mov r0, #1 +#ifdef EUROPE + str r0, [sp, #0xa4] +#else + str r0, [sp, #0xc] +#endif + ldr r1, _02339808 ; =ov01_0233BE70 + ldr r0, _02339818 ; =0x0000375F + str r1, [sp] + str r0, [sp, #4] + mov r0, #0 +#ifdef EUROPE + add r3, sp, #0xa4 +#else + add r3, sp, #0xc +#endif + mov r1, #8 + mov r2, #0x33 + str r0, [sp, #8] + bl sub_02046A20 + mov r0, #4 + str r0, [r4] + b _023397F8 +_023391A8: + cmp r0, #3 + cmpne r0, #1 + moveq r0, #0x20 + streq r0, [r4] + b _023397F8 +_023391BC: + bl sub_02046B04 + bl ov01_023399A8 + cmp r0, #2 + moveq r0, #1 + streqb r0, [r4, #0x10] + moveq r0, #5 + streq r0, [r4] + beq _023397F8 + cmp r0, #3 + cmpne r0, #1 +#ifdef EUROPE + bne _023397F8 + mov r0, #1 + str r0, [sp, #0xc] + ldr r1, _02339808 ; =ov01_0233BE70 + ldr r0, _02339810 ; =0x00003760 + str r1, [sp] + str r0, [sp, #4] + mov r0, #0 + add r3, sp, #0xc + mov r1, #8 + mov r2, #0x33 + str r0, [sp, #8] + bl sub_02046A20 + mov r0, #3 + str r0, [r4] +#else + moveq r0, #0x20 + streq r0, [r4] +#endif + b _023397F8 +_023391F0: + mov r0, #0 + ldr r1, _0233981C ; =0x00003761 + mov r2, r0 + bl sub_02046BE8 + mov r0, #1 + strb r0, [r4, #0x34 + OV01_02338EC4_LOAD_OFFSET] + bl sub_02003B94 + mov r0, #6 + str r0, [r4] + b _023397F8 +_02339218: + bl sub_02046C78 + cmp r0, #0 + beq _023397F8 + ldr r0, _02339804 ; =ov01_0233C21C + mov r2, #1 + ldr r1, [r0, #4] + mov r0, #7 + str r2, [r1, #0xc] + str r0, [r4] + b _023397F8 +_02339240: + ldrb r0, [r4, #0x2a + OV01_02338EC4_LOAD_OFFSET_2] + cmp r0, #0 + movne r0, #0xa + strne r0, [r4] + b _023397F8 +_02339254: + ldr r1, _02339820 ; =0x00003765 + mov r0, #0x1c + mov r2, #0 + bl sub_02046BE8 + mov r0, #9 + str r0, [r4] +_0233926C: + bl sub_02046C78 + cmp r0, #0 + movne r0, #7 + strne r0, [r4] + b _023397F8 +_02339280: + mov r0, #4 + b _023397FC +_02339288: + ldr r2, _02339808 ; =ov01_0233BE70 + mov r5, #1 + ldr r3, _02339824 ; =0x00003762 + mov r0, #0 + mov r1, #8 + str r5, [sp] + bl sub_02046A9C + mov r0, #0xc + str r0, [r4] + b _023397F8 +_023392B0: + bl sub_02046B04 + bl ov01_023399A8 + cmp r0, #2 + moveq r0, #0xd + streq r0, [r4] + beq _023397F8 + cmp r0, #3 + cmpne r0, #1 + bne _023397F8 + bl ov01_02339958 + ldr r0, [r4, #4] + sub r0, r0, #0x11 + cmp r0, #1 + bhi _023392FC + add r0, r4, #0x61 + OV01_02338EC4_LOAD_OFFSET + add r1, r0, #0x4b00 + mov r0, #0x400 + mov r2, #0 + bl sub_02046C30 +_023392FC: + ldr r0, [r4, #4] + str r0, [r4] + b _023397F8 +_02339308: + mov r0, #0 + ldr r1, _02339828 ; =0x00003763 + mov r2, r0 + bl sub_02046BE8 + bl ov01_02339F80 + mov r0, #0xe + str r0, [r4] + b _023397F8 +_02339328: + bl sub_02046C78 + cmp r0, #0 + movne r0, #0xf + strne r0, [r4] + b _023397F8 +_0233933C: + ldrb r0, [r4, #0x28 + OV01_02338EC4_LOAD_OFFSET_2] + cmp r0, #0 + bne _023397F8 +#ifdef NORTH_AMERICA + mov r0, #0x1c + rsb r1, r0, #0x3780 +#else + ldr r1, _02339F74 ; =0x00003766 + mov r0, #0x1c +#endif + mov r2, #0 + bl sub_02046BE8 + bl sub_02003BC8 + mov r0, #0x10 + str r0, [r4] + b _023397F8 +_02339368: + bl sub_02046C78 + cmp r0, #0 + beq _023397F8 + ldrb r0, [r4, #0x40 + OV01_02338EC4_LOAD_OFFSET] + cmp r0, #0 + mov r0, #0x21 + strne r0, [r4, #4] + movne r0, #0x13 + strne r0, [r4] + streq r0, [r4] + b _023397F8 +_02339394: + ldr r0, [r4, #0xc] + cmp r0, #9 + moveq r0, #0xa + streq r0, [r4] + beq _023397F8 + bl ov01_023398F0 + cmp r0, #0 + beq _023397F8 + bl ov01_02339928 + add r0, r4, #0x61 + OV01_02338EC4_LOAD_OFFSET + add r0, r0, #0x4b00 + mov r1, #0x400 + bl sub_02046D44 + mov r0, #0 + mov r1, r0 + bl ov01_02338BEC + b _023397F8 +_023393D8: + ldr r0, [r4, #0xc] + cmp r0, #9 + moveq r0, #0xa + streq r0, [r4] + beq _023397F8 + bl ov01_023398F0 + cmp r0, #0 + beq _023397F8 + bl ov01_02339928 + add r0, r4, #0x61 + OV01_02338EC4_LOAD_OFFSET + add r0, r0, #0x4b00 + mov r1, #0x400 + bl sub_02046D44 + mov r0, #0 + mov r1, r0 + bl ov01_02338BEC + b _023397F8 +_0233941C: + bl ov00_022BD780 + mov r0, #0 + ldr r1, _0233982C ; =0x0000023B + mov r2, r0 + bl sub_02046BE8 + mov r0, #0x14 + str r0, [r4] + b _023397F8 +_0233943C: + bl sub_02046C78 + cmp r0, #0 + beq _023397F8 + ldrb r0, [r4, #0x34 + OV01_02338EC4_LOAD_OFFSET] + cmp r0, #0 + beq _02339460 + mov r0, #0 + mov r1, r0 + bl ov01_0232C454 +_02339460: + mov r0, #0xe0 + mov r1, #0x88 + mov r2, #1 + bl sub_02029F88 + mov r0, #0x15 + str r0, [r4] + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _023394B4 + bl ov00_022BD3F4 + bl sub_0205B80C + mov r0, #0 + bl sub_0205B77C + mov r1, #0 + str r1, [r0, #0xc] + str r1, [r0, #0x10] + mov r0, r1 + bl sub_020590DC + bl ov00_022BD4EC + mov r0, #0 + strb r0, [r4, #0x10] +_023394B4: + mov r0, #3 + bl NoteSaveBase + mov r5, r0 + bl sub_02029FBC + cmp r5, #0 + bne _023394FC + ldrb r1, [r4, #0x11] + mov r0, #0x1c + mov r2, #0 + cmp r1, #0 + movne r0, #0 +#ifdef JAPAN + ldr r1, _0233B0A8 ; =0x000004CD +#else + mov r1, #0x23c +#endif + strneb r0, [r4, #0x11] + bl sub_02046BE8 + bl ov01_0233A840 + mov r0, #0x16 + str r0, [r4] + b _023397F8 +_023394FC: + cmp r5, #1 + ldr r0, [r4, #0xc] + bne _02339554 + cmp r0, #6 + bne _02339534 + mov r0, #0x10 + str r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] + mov r0, #7 + str r0, [r4, #0x3c + OV01_02338EC4_LOAD_OFFSET] + mov r0, #8 + str r0, [r4, #0x30 + OV01_02338EC4_LOAD_OFFSET] + mov r0, #0x1a + str r0, [r4] + b _023397F8 +_02339534: + mov r0, #0x400 +#ifdef JAPAN + add r1, r0, #0xc9 +#else + mov r1, #0x238 +#endif + mov r2, #0 + bl sub_02046BE8 + bl ov01_0232C540 + mov r0, #0x19 + str r0, [r4] + b _023397F8 +_02339554: + cmp r0, #6 + bne _02339580 + mov r0, #0xf + str r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] + mov r0, #6 + str r0, [r4, #0x3c + OV01_02338EC4_LOAD_OFFSET] + mov r0, #8 + str r0, [r4, #0x30 + OV01_02338EC4_LOAD_OFFSET] + mov r0, #0x1a + str r0, [r4] + b _023397F8 +_02339580: + ldrb r1, [r4, #0x11] + mov r0, #0x1c + mov r2, #0 + cmp r1, #0 + ldr r1, _02339830 ; =0x00000239 + movne r0, #0 + bl sub_02046BE8 + mov r0, #0x18 + str r0, [r4] + b _023397F8 +_023395A8: + bl sub_02046C78 + cmp r0, #0 + beq _023397F8 + ldr r0, _02339804 ; =ov01_0233C21C + mov r2, #0x3c + ldr r0, [r0, #4] + mov r1, #0x17 + add r0, r0, #0x4000 + str r2, [r0, #0xb5c + OV01_02338EC4_LOAD_OFFSET] + str r1, [r4] + b _023397F8 +_023395D4: + add r0, r4, #0x4000 + ldr r1, [r0, #0xb5c + OV01_02338EC4_LOAD_OFFSET] + sub r1, r1, #1 + str r1, [r0, #0xb5c + OV01_02338EC4_LOAD_OFFSET] + cmp r1, #0 + ldrle r0, [r4, #4] + strle r0, [r4] + b _023397F8 +_023395F4: + bl sub_02046C78 + cmp r0, #0 + beq _023397F8 + mov r0, #8 + b _023397FC +_02339608: + bl sub_02046C78 + cmp r0, #0 + beq _023397F8 + bl CardBackupError +_02339618: + b _02339618 +_0233961C: +#ifdef EUROPE + add r0, sp, #0x224 +#else + add r0, sp, #0x18c +#endif + bl InitPreprocessorArgs + ldr r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] + rsb r0, r0, #0 +#ifdef EUROPE + str r0, [sp, #0x248] +#else + str r0, [sp, #0x1b0] +#endif + bl sub_02046BB4 + ldr r0, [r4, #0x3c + OV01_02338EC4_LOAD_OFFSET] + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _023397F8 +_02339644: ; jump table + b _02339664 ; case 0 + b _02339670 ; case 1 + b _02339670 ; case 2 + b _0233969C ; case 3 + b _0233969C ; case 4 + b _0233969C ; case 5 + b _0233969C ; case 6 + b _023396EC ; case 7 +_02339664: + ldr r0, [r4, #8] + str r0, [r4] + b _023397F8 +_02339670: + bl ov00_022BDE24 + ldr r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] + mov r1, #0 + bl ov01_0233A8B4 + mov r1, r0 +#ifdef EUROPE + add r2, sp, #0x224 +#else + add r2, sp, #0x18c +#endif + mov r0, #0x1c + bl sub_02046BE8 + mov r0, #0x1b + str r0, [r4] + b _023397F8 +_0233969C: + bl ov01_02339F80 + ldrb r0, [r4, #0x11] + cmp r0, #0 + beq _023396C0 + add r0, r4, #0x3c4 + OV01_02338EC4_LOAD_OFFSET + add r0, r0, #0x4c00 + bl ov00_022BCD2C + mov r0, #0 + strb r0, [r4, #0x11] +_023396C0: + bl ov00_022BDE24 + ldr r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] + mov r1, #1 + bl ov01_0233A8B4 + mov r1, r0 +#ifdef EUROPE + add r2, sp, #0x224 +#else + add r2, sp, #0x18c +#endif + mov r0, #0x1c + bl sub_02046BE8 + mov r0, #0x1c + str r0, [r4] + b _023397F8 +_023396EC: + ldr r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] + mov r1, #1 + cmp r0, #0x10 + moveq r5, #0x400 + movne r5, #0x1c + bl ov01_0233A8B4 + mov r3, r5, lsl #0x10 + mov r1, r0 +#ifdef EUROPE + add r2, sp, #0x224 +#else + add r2, sp, #0x18c +#endif + mov r0, r3, lsr #0x10 + bl sub_02046BE8 + bl ov01_0232C540 + mov r0, #0x1e + str r0, [r4] + b _023397F8 +_02339728: + bl sub_02046C78 + cmp r0, #0 + ldrne r0, [r4, #8] + strne r0, [r4] + b _023397F8 +_0233973C: + bl sub_02046C78 + cmp r0, #0 + movne r0, #0x1d + strne r0, [r4] + b _023397F8 +_02339750: + ldrb r0, [r4, #0x28 + OV01_02338EC4_LOAD_OFFSET_2] + cmp r0, #0 + bne _023397F8 + mov r0, #0 + bl ov00_022BCBAC + bl sub_02003BC8 + ldr r0, [r4, #0x30 + OV01_02338EC4_LOAD_OFFSET] + cmp r0, #0 + moveq r0, #8 + b _023397FC +_02339778: + bl sub_02046C78 + cmp r0, #0 + beq _023397F8 + ldr r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] + cmp r0, #0x10 + bne _02339798 + bl CardBackupError +_02339794: + b _02339794 +_02339798: +#ifdef EUROPE + add r0, sp, #0x1d4 +#else + add r0, sp, #0x13c +#endif + bl InitPreprocessorArgs + ldr r0, [r4, #0x38 + OV01_02338EC4_LOAD_OFFSET] + ldr r1, _02339834 ; =0x00003785 + rsb r3, r0, #0 +#ifdef EUROPE + add r2, sp, #0x1d4 + mov r0, #0 + str r3, [sp, #0x1f8] +#else + add r2, sp, #0x13c + mov r0, #0 + str r3, [sp, #0x160] +#endif + bl sub_02046BE8 + mov r0, #0x1f + str r0, [r4] + b _023397F8 +_023397C8: + bl sub_02046C78 + cmp r0, #0 + beq _023397F8 +_023397D4: + b _023397D4 +_023397D8: + mov r0, #0 + bl ov00_022BCBAC + mov r0, #1 + b _023397FC +_023397E8: + mov r0, #0 + bl ov00_022BCBAC + mov r0, #6 + b _023397FC +_023397F8: + mov r0, #0 +_023397FC: +#ifdef EUROPE + add sp, sp, #0x274 +#else + add sp, sp, #0x1dc +#endif + ldmia sp!, {r4, r5, pc} + .align 2, 0 +#if defined(EUROPE) +#define OV01_02338EC4_DATA_OFFSET 2 +#elif defined(JAPAN) +#define OV01_02338EC4_DATA_OFFSET -0x37E +#else +#define OV01_02338EC4_DATA_OFFSET 0 +#endif +_02339804: .word ov01_0233C21C +_02339808: .word ov01_0233BE70 +_0233980C: .word 0x0000375D + OV01_02338EC4_DATA_OFFSET +_02339810: .word 0x0000375E + OV01_02338EC4_DATA_OFFSET +_02339814: .word 0x0000375C + OV01_02338EC4_DATA_OFFSET +_02339818: .word 0x0000375F + OV01_02338EC4_DATA_OFFSET +_0233981C: .word 0x00003761 + OV01_02338EC4_DATA_OFFSET +_02339820: .word 0x00003765 + OV01_02338EC4_DATA_OFFSET +_02339824: .word 0x00003762 + OV01_02338EC4_DATA_OFFSET +_02339828: .word 0x00003763 + OV01_02338EC4_DATA_OFFSET +#if defined(EUROPE) +_02339F74: .word 0x00003766 +#elif defined(JAPAN) +_02339F74: .word 0x000033E6 +#endif +#ifdef JAPAN +_0233982C: .word 0x000004CC +_0233B0A8: .word 0x000004CD +_02339830: .word 0x000004CA +#else +_0233982C: .word 0x0000023B +_02339830: .word 0x00000239 +#endif +_02339834: .word 0x00003785 + OV01_02338EC4_DATA_OFFSET + arm_func_end ov01_02338EC4 + + arm_func_start ov01_02339838 +ov01_02339838: ; 0x02339838 + stmdb sp!, {r4, lr} + bl sub_02046B04 + bl ov01_023399A8 + mov r4, r0 + bl sub_02046BA0 + ldr r1, _0233985C ; =ov01_0233C21C + strb r0, [r1] + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_0233985C: .word ov01_0233C21C + arm_func_end ov01_02339838 + + arm_func_start ov01_02339860 +ov01_02339860: ; 0x02339860 + stmdb sp!, {r4, lr} + bl sub_02046B04 + bl ov01_023399A8 + mov r4, r0 + bl sub_02046BA0 + ldr r1, _02339884 ; =ov01_0233C21C + strb r0, [r1, #1] + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02339884: .word ov01_0233C21C + arm_func_end ov01_02339860 + + arm_func_start ov01_02339888 +ov01_02339888: ; 0x02339888 + ldr ip, _0233989C ; =sub_02046BE8 + ldr r1, _023398A0 ; =0x00003773 + mov r0, #0x1c + mov r2, #0 + bx ip + .align 2, 0 +_0233989C: .word sub_02046BE8 +#if defined(EUROPE) +_023398A0: .word 0x00003775 +#elif defined(JAPAN) +_023398A0: .word 0x000033F5 +#else +_023398A0: .word 0x00003773 +#endif + arm_func_end ov01_02339888 + + arm_func_start ov01_023398A4 +ov01_023398A4: ; 0x023398A4 + ldr ip, _023398AC ; =sub_02046C78 + bx ip + .align 2, 0 +_023398AC: .word sub_02046C78 + arm_func_end ov01_023398A4 + + arm_func_start ov01_023398B0 +ov01_023398B0: ; 0x023398B0 + ldr r2, _023398EC ; =ov01_0233C21C + ldr r3, [r2, #4] + ldr r2, [r3] + cmp r2, #0xa + movne r0, #0 + bxne lr +#ifdef JAPAN + str r0, [r3, #0x2c] + str r1, [r3, #0x30] + mov r1, #8 + mov r0, #0x1a + str r1, [r3, #0x24] +#else + str r0, [r3, #0x38] + str r1, [r3, #0x3c] + mov r1, #8 + mov r0, #0x1a + str r1, [r3, #0x30] +#endif + str r0, [r3] + str r0, [r3, #8] + mov r0, #1 + bx lr + .align 2, 0 +_023398EC: .word ov01_0233C21C + arm_func_end ov01_023398B0 + + arm_func_start ov01_023398F0 +ov01_023398F0: ; 0x023398F0 + stmdb sp!, {r3, lr} + add r1, sp, #0 + mov r0, #0 + bl GetPressedButtons + ldrh r0, [sp] + tst r0, #2 + bne _02339918 + bl sub_020467F0 + cmp r0, #0 + beq _02339920 +_02339918: + mov r0, #1 + ldmia sp!, {r3, pc} +_02339920: + mov r0, #0 + ldmia sp!, {r3, pc} + arm_func_end ov01_023398F0 + + arm_func_start ov01_02339928 +ov01_02339928: ; 0x02339928 + ldr r1, _02339950 ; =ov01_0233C21C + ldr r3, _02339954 ; =0x00002A30 + ldr r0, [r1, #4] + mov r2, #1 + add r0, r0, #0x4000 +#ifdef JAPAN + str r3, [r0, #0xb4c] + ldr r0, [r1, #4] + add r0, r0, #0x4000 + strb r2, [r0, #0xb54] +#else + str r3, [r0, #0xb58] + ldr r0, [r1, #4] + add r0, r0, #0x4000 + strb r2, [r0, #0xb60] +#endif + bx lr + .align 2, 0 +_02339950: .word ov01_0233C21C +_02339954: .word 0x00002A30 + arm_func_end ov01_02339928 + + arm_func_start ov01_02339958 +ov01_02339958: ; 0x02339958 + ldr r1, _02339980 ; =ov01_0233C21C + ldr r3, _02339984 ; =0x00001C20 + ldr r0, [r1, #4] + mov r2, #0 + add r0, r0, #0x4000 +#ifdef JAPAN + str r3, [r0, #0xb4c] + ldr r0, [r1, #4] + add r0, r0, #0x4000 + strb r2, [r0, #0xb54] +#else + str r3, [r0, #0xb58] + ldr r0, [r1, #4] + add r0, r0, #0x4000 + strb r2, [r0, #0xb60] +#endif + bx lr + .align 2, 0 +_02339980: .word ov01_0233C21C +_02339984: .word 0x00001C20 + arm_func_end ov01_02339958 + + arm_func_start ov01_02339988 +ov01_02339988: ; 0x02339988 + ldr r0, _023399A0 ; =ov01_0233C21C + ldr r1, _023399A4 ; =0x00002A30 + ldr r0, [r0, #4] + add r0, r0, #0x4000 +#ifdef JAPAN + str r1, [r0, #0xb4c] +#else + str r1, [r0, #0xb58] +#endif + bx lr + .align 2, 0 +_023399A0: .word ov01_0233C21C +_023399A4: .word 0x00002A30 + arm_func_end ov01_02339988 + + arm_func_start ov01_023399A8 +ov01_023399A8: ; 0x023399A8 + mvn r2, #1 + cmp r0, r2 + moveq r0, #1 + bxeq lr + sub r1, r2, #1 + cmp r0, r1 + moveq r0, #1 + bxeq lr + add r1, r2, #1 + cmp r0, r1 + moveq r0, #0 + bx lr + arm_func_end ov01_023399A8 + + arm_func_start ov01_023399D8 +ov01_023399D8: ; 0x023399D8 +#ifdef JAPAN +#define OV01_023399D8_OFFSET -0xC +#define OV01_023399D8_OFFSET_2 -0xA +#else +#define OV01_023399D8_OFFSET 0 +#define OV01_023399D8_OFFSET_2 0 +#endif + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x4c + ldr r0, _02339F78 ; =ov01_0233C21C + ldr r4, [r0, #4] + ldr r0, [r4, #0xc] + cmp r0, #0xc + addls pc, pc, r0, lsl #2 + b _02339F6C +_023399F8: ; jump table + b _02339F6C ; case 0 + b _02339A2C ; case 1 + b _02339A3C ; case 2 + b _02339AA4 ; case 3 + b _02339ABC ; case 4 + b _02339AE8 ; case 5 + b _02339B54 ; case 6 + b _02339C14 ; case 7 + b _02339C98 ; case 8 + b _02339CDC ; case 9 + b _02339D74 ; case 10 + b _02339EB0 ; case 11 + b _02339F54 ; case 12 +_02339A2C: + bl ov00_022BD798 + mov r0, #2 + str r0, [r4, #0xc] + b _02339F6C +_02339A3C: + bl ov00_022BD7B8 + cmp r0, #0 + beq _02339F6C + bl ov00_022BD7E8 + cmp r0, #4 + beq _02339A68 + bl ov01_0233A7FC + mov r0, #8 + str r0, [r4, #0x30 + OV01_023399D8_OFFSET] + mov r0, #2 + b _02339F70 +_02339A68: + ldrb r0, [r4, #0x10] + cmp r0, #0 + beq _02339A90 + add r0, r4, #0x3c4 + OV01_023399D8_OFFSET + add r0, r0, #0x4c00 + bl ov00_022BCD10 + mov r0, #1 + bl ov00_022BCC30 + mov r0, #1 + strb r0, [r4, #0x11] +_02339A90: + mov r0, #1 + strb r0, [r4, #0x28 + OV01_023399D8_OFFSET_2] + mov r0, #4 + str r0, [r4, #0xc] + b _02339F6C +_02339AA4: + bl ov00_022BD7D8 + cmp r0, #0 + movne r0, #0 + strneb r0, [r4, #0x28 + OV01_023399D8_OFFSET_2] + strne r0, [r4, #0xc] + b _02339F6C +_02339ABC: + add r0, r4, #0x14 + bl ov00_022BD870 + cmp r0, #0 + bne _02339AE0 + bl ov01_0233A7FC + mov r0, #8 + str r0, [r4, #0x30 + OV01_023399D8_OFFSET] + mov r0, #2 + b _02339F70 +_02339AE0: + mov r0, #5 + str r0, [r4, #0xc] +_02339AE8: + bl ov00_022BD8FC + bl ov01_0233A7FC + cmp r0, #0 + movne r0, #2 + bne _02339F70 + bl ov00_022BD908 + cmp r0, #0 + beq _02339F6C + bl ov00_022BCC90 + cmp r0, #0 + beq _02339B48 + ldrb r0, [r4, #0x11] + ldr r1, _02339F7C ; =0x00002A30 + cmp r0, #0 + movne r0, #8 + moveq r0, #7 + str r0, [r4, #4] + add r0, r4, #0x4000 + str r1, [r0, #0xb58 + OV01_023399D8_OFFSET] + mov r0, #0x13 + str r0, [r4] + mov r0, #6 + str r0, [r4, #0xc] + b _02339F6C +_02339B48: + mov r0, #7 + str r0, [r4, #0xc] + b _02339F6C +_02339B54: + bl ov00_022BD8FC + bl ov01_0233A7FC + cmp r0, #0 + movne r0, #2 + bne _02339F70 + ldr r0, [r4] + cmp r0, #7 + moveq r0, #7 + streq r0, [r4, #0xc] + ldr r0, [r4] + cmp r0, #0x16 + cmpne r0, #0x17 + cmpne r0, #0x18 + cmpne r0, #9 + bne _02339F6C + add r1, sp, #2 + mov r0, #0 + bl GetHeldButtons + bl IsTouchScreenNotOff + cmp r0, #0 + moveq r0, #0 + beq _02339BC4 + add r0, sp, #0x28 + bl GetReleasedStylus + add r0, sp, #0x28 + mov r1, #1 + mov r2, #0 + bl sub_02006C8C +_02339BC4: + ldrh r1, [sp, #2] + cmp r1, #0 + cmpeq r0, #0 + ldrne r1, _02339F7C ; =0x00002A30 + addne r0, r4, #0x4000 + strne r1, [r0, #0xb58 + OV01_023399D8_OFFSET] + add r0, r4, #0x4000 + ldr r1, [r0, #0xb58 + OV01_023399D8_OFFSET] + cmp r1, #0 + subgt r1, r1, #1 + strgt r1, [r0, #0xb58 + OV01_023399D8_OFFSET] + bgt _02339F6C + mov r0, #0x12 + str r0, [r4, #0x38 + OV01_023399D8_OFFSET] + mov r0, #6 + str r0, [r4, #0x3c + OV01_023399D8_OFFSET] + mov r0, #8 + str r0, [r4, #0x30 + OV01_023399D8_OFFSET] + mov r0, #2 + b _02339F70 +_02339C14: + bl ov00_022BD8FC + bl ov01_0233A7FC + cmp r0, #0 + movne r0, #2 + bne _02339F70 + ldr r0, [r4] + cmp r0, #7 + bne _02339F6C + bl ov00_022BD918 + cmp r0, #2 + bne _02339C60 + mov r0, #3 + str r0, [r4, #0x38 + OV01_023399D8_OFFSET] + mov r0, #6 + str r0, [r4, #0x3c + OV01_023399D8_OFFSET] + mov r0, #8 + str r0, [r4, #0x30 + OV01_023399D8_OFFSET] + mov r0, #2 + b _02339F70 +_02339C60: + bl ov00_022BD480 + cmp r0, #0 + mov r0, #1 + strneb r0, [r4, #0x29 + OV01_023399D8_OFFSET_2] + movne r0, #8 + strne r0, [r4, #0xc] + bne _02339F6C + str r0, [r4, #0x38 + OV01_023399D8_OFFSET] + mov r0, #6 + str r0, [r4, #0x3c + OV01_023399D8_OFFSET] + mov r0, #8 + str r0, [r4, #0x30 + OV01_023399D8_OFFSET] + mov r0, #2 + b _02339F70 +_02339C98: + bl ov00_022BD8FC + bl ov01_0233A7FC + cmp r0, #0 + movne r0, #2 + bne _02339F70 + bl ov00_022BD4DC + cmp r0, #0 + beq _02339F6C + mov r0, #1 + strb r0, [r4, #0x2c + OV01_023399D8_OFFSET_2] + ldr r1, _02339F7C ; =0x00002A30 + strb r0, [r4, #0x2a + OV01_023399D8_OFFSET_2] + add r0, r4, #0x4000 + str r1, [r0, #0xb58 + OV01_023399D8_OFFSET] + mov r0, #9 + str r0, [r4, #0xc] + b _02339F6C +_02339CDC: + bl ov00_022BD8FC + bl ov01_0233A7FC + cmp r0, #0 + movne r0, #2 + bne _02339F70 + add r1, sp, #0 + mov r0, #0 + bl GetHeldButtons + bl IsTouchScreenNotOff + cmp r0, #0 + moveq r0, #0 + beq _02339D24 + add r0, sp, #4 + bl GetReleasedStylus + add r0, sp, #4 + mov r1, #1 + mov r2, #0 + bl sub_02006C8C +_02339D24: + ldrh r1, [sp] + cmp r1, #0 + cmpeq r0, #0 + ldrne r1, _02339F7C ; =0x00002A30 + addne r0, r4, #0x4000 + strne r1, [r0, #0xb58 + OV01_023399D8_OFFSET] + add r0, r4, #0x4000 + ldr r1, [r0, #0xb58 + OV01_023399D8_OFFSET] + cmp r1, #0 + subgt r1, r1, #1 + strgt r1, [r0, #0xb58 + OV01_023399D8_OFFSET] + bgt _02339F6C + mov r0, #0x12 + str r0, [r4, #0x38 + OV01_023399D8_OFFSET] + mov r0, #6 + str r0, [r4, #0x3c + OV01_023399D8_OFFSET] + mov r0, #8 + str r0, [r4, #0x30 + OV01_023399D8_OFFSET] + mov r0, #2 + b _02339F70 +_02339D74: + bl ov00_022BD8FC + bl ov01_0233A130 + cmp r0, #4 + bne _02339E20 + ldr r1, _02339F7C ; =0x00002A30 + add r0, r4, #0x4000 + str r1, [r0, #0xb58 + OV01_023399D8_OFFSET] + mov r1, #9 + ldr r0, _02339F78 ; =ov01_0233C21C + str r1, [r4, #0xc] + ldr r0, [r0, #4] + add r0, r0, #0x358 + OV01_023399D8_OFFSET + add r0, r0, #0x800 + bl ov01_0232C578 + sub r0, r0, #6 + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _02339E00 +_02339DBC: ; jump table + b _02339DD0 ; case 0 + b _02339DDC ; case 1 + b _02339DE8 ; case 2 + b _02339DF4 ; case 3 + b _02339E00 ; case 4 +_02339DD0: + mov r0, #7 + str r0, [r4, #0x38 + OV01_023399D8_OFFSET] + b _02339E08 +_02339DDC: + mov r0, #8 + str r0, [r4, #0x38 + OV01_023399D8_OFFSET] + b _02339E08 +_02339DE8: + mov r0, #9 + str r0, [r4, #0x38 + OV01_023399D8_OFFSET] + b _02339E08 +_02339DF4: + mov r0, #0xa + str r0, [r4, #0x38 + OV01_023399D8_OFFSET] + b _02339E08 +_02339E00: + mov r0, #0xb + str r0, [r4, #0x38 + OV01_023399D8_OFFSET] +_02339E08: + mov r0, #6 + str r0, [r4, #0x3c + OV01_023399D8_OFFSET] + mov r0, #8 + str r0, [r4, #0x30 + OV01_023399D8_OFFSET] + mov r0, #2 + b _02339F70 +_02339E20: + cmp r0, #5 + bne _02339E48 + mov r0, #0x11 + str r0, [r4, #0x38 + OV01_023399D8_OFFSET] + mov r0, #6 + str r0, [r4, #0x3c + OV01_023399D8_OFFSET] + mov r0, #8 + str r0, [r4, #0x30 + OV01_023399D8_OFFSET] + mov r0, #2 + b _02339F70 +_02339E48: + cmp r0, #6 + bne _02339E70 + mov r0, #0x12 + str r0, [r4, #0x38 + OV01_023399D8_OFFSET] + mov r0, #6 + str r0, [r4, #0x3c + OV01_023399D8_OFFSET] + mov r0, #8 + str r0, [r4, #0x30 + OV01_023399D8_OFFSET] + mov r0, #2 + b _02339F70 +_02339E70: + cmp r0, #0 + beq _02339E9C + ldr r1, _02339F7C ; =0x00002A30 + add r0, r4, #0x4000 + str r1, [r0, #0xb58 + OV01_023399D8_OFFSET] + mov r0, #9 + str r0, [r4, #0xc] + ldrb r0, [r4, #0x2b + OV01_023399D8_OFFSET_2] + cmp r0, #0 + beq _02339E9C + bl ov01_02339F80 +_02339E9C: + bl ov01_0233A7FC + cmp r0, #0 + beq _02339F6C + mov r0, #2 + b _02339F70 +_02339EB0: + bl ov00_022BD8FC + bl ov01_0233A390 + cmp r0, #1 + bne _02339EE8 + ldr r1, _02339F7C ; =0x00002A30 + add r0, r4, #0x4000 + str r1, [r0, #0xb58 + OV01_023399D8_OFFSET] + mov r0, #9 + str r0, [r4, #0xc] + ldrb r0, [r4, #0x2b + OV01_023399D8_OFFSET_2] + cmp r0, #0 + beq _02339F40 + bl ov01_02339F80 + b _02339F40 +_02339EE8: + cmp r0, #2 + bne _02339F18 + mov r0, #0x11 + str r0, [r4, #0x38 + OV01_023399D8_OFFSET] + mov r0, #6 + str r0, [r4, #0x3c + OV01_023399D8_OFFSET] + mov r0, #8 + str r0, [r4, #0x30 + OV01_023399D8_OFFSET] + mov r0, #0xc + str r0, [r4, #0xc] + mov r0, #2 + b _02339F70 +_02339F18: + cmp r0, #3 + bne _02339F40 + mov r0, #0x12 + str r0, [r4, #0x38 + OV01_023399D8_OFFSET] + mov r0, #6 + str r0, [r4, #0x3c + OV01_023399D8_OFFSET] + mov r0, #8 + str r0, [r4, #0x30 + OV01_023399D8_OFFSET] + mov r0, #2 + b _02339F70 +_02339F40: + bl ov01_0233A7FC + cmp r0, #0 + beq _02339F6C + mov r0, #2 + b _02339F70 +_02339F54: + ldrb r0, [r4, #0x2b + OV01_023399D8_OFFSET_2] + cmp r0, #0 + beq _02339F64 + bl ov01_02339F80 +_02339F64: + mov r0, #2 + b _02339F70 +_02339F6C: + mov r0, #0 +_02339F70: + add sp, sp, #0x4c + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_02339F78: .word ov01_0233C21C +_02339F7C: .word 0x00002A30 + arm_func_end ov01_023399D8 + + arm_func_start ov01_02339F80 +ov01_02339F80: ; 0x02339F80 + stmdb sp!, {r3, lr} + ldr r1, _0233A024 ; =ov01_0233C21C + mov r3, #0 + ldr r0, [r1, #4] + mov r2, #1 + add r0, r0, #0x4000 +#ifdef JAPAN + strb r3, [r0, #0xb54] + ldr r0, [r1, #4] + strb r2, [r0, #0x21] +#else + strb r3, [r0, #0xb60] + ldr r0, [r1, #4] + strb r2, [r0, #0x2b] +#endif + ldr r1, [r1, #4] + ldr r0, [r1, #0xc] + cmp r0, #0xc + addls pc, pc, r0, lsl #2 + ldmia sp!, {r3, pc} +_02339FB8: ; jump table + ldmia sp!, {r3, pc} ; case 0 + b _02339FEC ; case 1 + b _02339FEC ; case 2 + ldmia sp!, {r3, pc} ; case 3 + b _02339FF8 ; case 4 + b _02339FF8 ; case 5 + b _02339FF8 ; case 6 + b _02339FF8 ; case 7 + b _02339FF8 ; case 8 + b _02339FF8 ; case 9 + b _0233A000 ; case 10 + b _0233A008 ; case 11 + b _0233A010 ; case 12 +_02339FEC: + mov r0, #3 + str r0, [r1, #0xc] + ldmia sp!, {r3, pc} +_02339FF8: + bl ov01_0233A028 + ldmia sp!, {r3, pc} +_0233A000: + bl ov00_022BDA74 + ldmia sp!, {r3, pc} +_0233A008: + bl ov00_022BDBA8 + ldmia sp!, {r3, pc} +_0233A010: + bl ov00_022BDBA8 + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl ov01_0233A028 + ldmia sp!, {r3, pc} + .align 2, 0 +_0233A024: .word ov01_0233C21C + arm_func_end ov01_02339F80 + + arm_func_start ov01_0233A028 +ov01_0233A028: ; 0x0233A028 + stmdb sp!, {r3, lr} + bl ov00_022BD95C + ldr r0, _0233A058 ; =ov01_0233C21C + mov r3, #0 + ldr r2, [r0, #4] + mov r1, #3 +#ifdef JAPAN + strb r3, [r2, #0x1f] + ldr r2, [r0, #4] + strb r3, [r2, #0x20] +#else + strb r3, [r2, #0x29] + ldr r2, [r0, #4] + strb r3, [r2, #0x2a] +#endif + ldr r0, [r0, #4] + str r1, [r0, #0xc] + ldmia sp!, {r3, pc} + .align 2, 0 +_0233A058: .word ov01_0233C21C + arm_func_end ov01_0233A028 + + arm_func_start ov01_0233A05C +ov01_0233A05C: ; 0x0233A05C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr ip, _0233A11C ; =ov01_0233C21C + mov r7, r0 + ldr r0, [ip, #4] + mov r6, r1 + ldr r0, [r0, #0xc] + mov r5, r2 + cmp r0, #9 + mov r4, r3 + movne r0, #2 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + bl ov00_022BD968 + ldr r0, _0233A120 ; =ov01_0233C01C + mov r1, r7 + bl Debug_Print0 + ldr r0, _0233A124 ; =ov01_0233C030 + mov r1, r6 + bl Debug_Print0 + ldr r0, _0233A128 ; =ov01_0233C03C + mov r1, r4 + bl Debug_Print0 + ldr ip, [sp, #0x18] + mov r0, r7 + mov r1, r6 + mov r2, r5 + mov r3, r4 + str ip, [sp] + bl ov00_022BD99C + cmp r0, #1 + cmpne r0, #2 + cmpne r0, #3 + bne _0233A0E4 + mov r0, #3 + ldmia sp!, {r3, r4, r5, r6, r7, pc} +_0233A0E4: + ldr r1, _0233A11C ; =ov01_0233C21C + ldr r2, _0233A12C ; =0x00001C20 + ldr r0, [r1, #4] + mov r3, #0xa + add r0, r0, #0x4000 +#ifdef JAPAN + str r2, [r0, #0xb4c] +#else + str r2, [r0, #0xb58] +#endif + ldr r0, [r1, #4] + mov r2, #0 + str r3, [r0, #0xc] + ldr r1, [r1, #4] + mov r0, #1 + add r1, r1, #0x4000 +#ifdef JAPAN + strb r2, [r1, #0xb54] +#else + strb r2, [r1, #0xb60] +#endif + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0233A11C: .word ov01_0233C21C +_0233A120: .word ov01_0233C01C +_0233A124: .word ov01_0233C030 +_0233A128: .word ov01_0233C03C +_0233A12C: .word 0x00001C20 + arm_func_end ov01_0233A05C + + arm_func_start ov01_0233A130 +ov01_0233A130: ; 0x0233A130 +#ifdef JAPAN +#define OV01_0233A130_OFFSET -0xC +#else +#define OV01_0233A130_OFFSET 0 +#endif + stmdb sp!, {r4, lr} + sub sp, sp, #0x28 + ldr r0, _0233A308 ; =ov01_0233C21C + ldr r0, [r0, #4] + add r0, r0, #0x4000 + ldrb r0, [r0, #0xb60 + OV01_0233A130_OFFSET] + cmp r0, #0 + beq _0233A1E4 + add r1, sp, #0 + mov r0, #0 + bl GetHeldButtons + bl IsTouchScreenNotOff + cmp r0, #0 + moveq r0, #0 + beq _0233A184 + add r0, sp, #4 + bl GetReleasedStylus + add r0, sp, #4 + mov r1, #1 + mov r2, #0 + bl sub_02006C8C +_0233A184: + ldrh r1, [sp] + cmp r1, #0 + cmpeq r0, #0 + ldrne r0, _0233A308 ; =ov01_0233C21C + ldrne r1, _0233A30C ; =0x00002A30 + ldrne r0, [r0, #4] + addne r0, r0, #0x4000 + strne r1, [r0, #0xb58 + OV01_0233A130_OFFSET] + ldr r1, _0233A308 ; =ov01_0233C21C + ldr r0, [r1, #4] + add r0, r0, #0x4000 + ldr r2, [r0, #0xb58 + OV01_0233A130_OFFSET] + cmp r2, #0 + ble _0233A1DC + sub r2, r2, #1 + str r2, [r0, #0xb58 + OV01_0233A130_OFFSET] + ldr r0, [r1, #4] + add r0, r0, #0x4000 + ldr r0, [r0, #0xb58 + OV01_0233A130_OFFSET] + cmp r0, #0 + movle r0, #6 + ble _0233A300 +_0233A1DC: + mov r0, #0 + b _0233A300 +_0233A1E4: + bl ov00_022BD9E8 + mov r1, r0 + cmp r1, #8 + addls pc, pc, r1, lsl #2 + b _0233A2B8 +_0233A1F8: ; jump table + b _0233A21C ; case 0 + b _0233A21C ; case 1 + b _0233A2B8 ; case 2 + b _0233A2B8 ; case 3 + b _0233A2B8 ; case 4 + b _0233A2B8 ; case 5 + b _0233A2B8 ; case 6 + b _0233A2B8 ; case 7 + b _0233A238 ; case 8 +_0233A21C: + ldr r0, _0233A308 ; =ov01_0233C21C + mov r1, #0 + ldr r0, [r0, #4] + str r1, [r0, #0xb54 + OV01_0233A130_OFFSET] + bl ov00_022BD980 + mov r0, #8 + b _0233A300 +_0233A238: + ldr r0, _0233A308 ; =ov01_0233C21C + ldr r0, [r0, #4] + add r0, r0, #0x354 + OV01_0233A130_OFFSET + add r0, r0, #0x800 + bl ov00_022BDA68 + ldr r2, _0233A308 ; =ov01_0233C21C + mov r1, r0 + ldr r2, [r2, #4] + add r0, r2, #0x358 + OV01_0233A130_OFFSET + ldr r2, [r2, #0xb54 + OV01_0233A130_OFFSET] + add r0, r0, #0x800 + bl MemcpySimple + bl ov00_022BD980 + ldr r0, _0233A308 ; =ov01_0233C21C + ldr r0, [r0, #4] + add r0, r0, #0x358 + OV01_0233A130_OFFSET + add r0, r0, #0x800 + bl ov01_0232C578 + movs r4, r0 + moveq r0, #7 + beq _0233A300 + ldr r0, _0233A308 ; =ov01_0233C21C + ldr r0, [r0, #4] + add r0, r0, #0x358 + OV01_0233A130_OFFSET + add r0, r0, #0x800 + bl ov01_0232C5AC + mov r2, r0 + ldr r0, _0233A310 ; =ov01_0233C050 + mov r1, r4 + bl Debug_Print0 + mov r0, #4 + b _0233A300 +_0233A2B8: + ldr r2, _0233A308 ; =ov01_0233C21C + ldr r0, [r2, #4] + add r0, r0, #0x4000 + ldr r3, [r0, #0xb58 + OV01_0233A130_OFFSET] + cmp r3, #0 + ble _0233A2FC + sub r3, r3, #1 + str r3, [r0, #0xb58 + OV01_0233A130_OFFSET] + ldr r0, [r2, #4] + add r0, r0, #0x4000 + ldr r0, [r0, #0xb58 + OV01_0233A130_OFFSET] + cmp r0, #0 + bgt _0233A2FC + ldr r0, _0233A314 ; =ov01_0233C068 + bl Debug_Print0 + mov r0, #5 + b _0233A300 +_0233A2FC: + mov r0, #0 +_0233A300: + add sp, sp, #0x28 + ldmia sp!, {r4, pc} + .align 2, 0 +_0233A308: .word ov01_0233C21C +_0233A30C: .word 0x00002A30 +_0233A310: .word ov01_0233C050 +_0233A314: .word ov01_0233C068 + arm_func_end ov01_0233A130 + + arm_func_start ov01_0233A318 +ov01_0233A318: ; 0x0233A318 +#ifdef JAPAN +#define OV01_0233A318_OFFSET -0xC +#else +#define OV01_0233A318_OFFSET 0 +#endif + stmdb sp!, {r4, lr} + ldr r1, _0233A388 ; =ov01_0233C21C + mov r4, r0 + ldr r0, [r1, #4] + ldr r0, [r0, #0xc] + cmp r0, #9 + movne r0, #0 + ldmneia sp!, {r4, pc} + bl ov00_022BDA94 + ldr r2, _0233A388 ; =ov01_0233C21C + mov r3, #0xb + ldr r0, [r2, #4] + mov r1, #0x12 + str r4, [r0, #0xb50 + OV01_0233A318_OFFSET] + ldr r0, [r2, #4] + ldr r4, _0233A38C ; =0x00001C20 + str r3, [r0, #0xc] + ldr r0, [r2, #4] + mov r3, #0 + str r1, [r0] + ldr r1, [r2, #4] + mov r0, #1 + add r1, r1, #0x4000 + str r4, [r1, #0xb58 + OV01_0233A318_OFFSET] + ldr r1, [r2, #4] + add r1, r1, #0x4000 + strb r3, [r1, #0xb60 + OV01_0233A318_OFFSET] + ldmia sp!, {r4, pc} + .align 2, 0 +_0233A388: .word ov01_0233C21C +_0233A38C: .word 0x00001C20 + arm_func_end ov01_0233A318 + + arm_func_start ov01_0233A390 +ov01_0233A390: ; 0x0233A390 +#ifdef JAPAN +#define OV01_0233A390_OFFSET -0xC +#define OV01_0233A390_OFFSET_2 -0xA +#else +#define OV01_0233A390_OFFSET 0 +#define OV01_0233A390_OFFSET_2 0 +#endif + stmdb sp!, {r4, lr} + sub sp, sp, #0x28 + ldr r0, _0233A7F0 ; =ov01_0233C21C + ldr r1, [r0, #4] + add r0, r1, #0x4000 + ldrb r0, [r0, #0xb60 + OV01_0233A390_OFFSET] + cmp r0, #0 + beq _0233A44C + add r1, sp, #0 + mov r0, #0 + bl GetHeldButtons + bl IsTouchScreenNotOff + cmp r0, #0 + moveq r0, #0 + beq _0233A3E4 + add r0, sp, #4 + bl GetReleasedStylus + add r0, sp, #4 + mov r1, #1 + mov r2, #0 + bl sub_02006C8C +_0233A3E4: + ldrh r1, [sp] + cmp r1, #0 + cmpeq r0, #0 + ldrne r0, _0233A7F0 ; =ov01_0233C21C + ldrne r1, _0233A7F4 ; =0x00002A30 + ldrne r0, [r0, #4] + addne r0, r0, #0x4000 + strne r1, [r0, #0xb58 + OV01_0233A390_OFFSET] + ldr r1, _0233A7F0 ; =ov01_0233C21C + ldr r0, [r1, #4] + add r0, r0, #0x4000 + ldr r2, [r0, #0xb58 + OV01_0233A390_OFFSET] + cmp r2, #0 + ble _0233A444 + sub r2, r2, #1 + str r2, [r0, #0xb58 + OV01_0233A390_OFFSET] + ldr r0, [r1, #4] + add r1, r0, #0x4000 + ldr r0, [r1, #0xb58 + OV01_0233A390_OFFSET] + cmp r0, #0 + ldrle r2, _0233A7F8 ; =0x00001C20 + movle r0, #3 + strle r2, [r1, #0xb58 + OV01_0233A390_OFFSET] + ble _0233A7E8 +_0233A444: + mov r0, #0 + b _0233A7E8 +_0233A44C: + ldr r0, [r1, #0x44 + OV01_0233A390_OFFSET] + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _0233A7E4 +_0233A45C: ; jump table + b _0233A470 ; case 0 + b _0233A53C ; case 1 + b _0233A60C ; case 2 + b _0233A6DC ; case 3 + b _0233A7B8 ; case 4 +_0233A470: + bl ov00_022BDACC + cmp r0, #1 + bne _0233A4F0 + ldr r0, _0233A7F0 ; =ov01_0233C21C + ldr r1, [r0, #4] + ldrb r0, [r1, #0x2b + OV01_0233A390_OFFSET_2] + cmp r0, #0 + movne r0, #4 + strne r0, [r1, #0x44 + OV01_0233A390_OFFSET] + movne r0, #0 + bne _0233A7E8 + ldr r0, [r1, #0xb50 + OV01_0233A390_OFFSET] + bl ov00_022BDADC + ldr r0, _0233A7F0 ; =ov01_0233C21C + ldr r0, [r0, #4] + add r0, r0, #0x48 + OV01_0233A390_OFFSET + bl ov00_022BDB04 + cmp r0, #0 + ldreq r0, _0233A7F0 ; =ov01_0233C21C + moveq r1, #4 + ldreq r0, [r0, #4] + streq r1, [r0, #0x44 + OV01_0233A390_OFFSET] + beq _0233A7E4 + ldr r1, _0233A7F0 ; =ov01_0233C21C + ldr r3, _0233A7F8 ; =0x00001C20 + ldr r0, [r1, #4] + mov r2, #1 + add r0, r0, #0x4000 + str r3, [r0, #0xb58 + OV01_0233A390_OFFSET] + ldr r0, [r1, #4] + str r2, [r0, #0x44 + OV01_0233A390_OFFSET] + b _0233A7E4 +_0233A4F0: + ldr r1, _0233A7F0 ; =ov01_0233C21C + ldr r0, [r1, #4] + add r0, r0, #0x4000 + ldr r2, [r0, #0xb58 + OV01_0233A390_OFFSET] + cmp r2, #0 + ble _0233A7E4 + sub r2, r2, #1 + str r2, [r0, #0xb58 + OV01_0233A390_OFFSET] + ldr r0, [r1, #4] + add r0, r0, #0x4000 + ldr r0, [r0, #0xb58 + OV01_0233A390_OFFSET] + cmp r0, #0 + bgt _0233A7E4 + bl ov00_022BDBA8 + ldr r0, _0233A7F0 ; =ov01_0233C21C + mov r1, #4 + ldr r0, [r0, #4] + str r1, [r0, #0x44 + OV01_0233A390_OFFSET] + b _0233A7E4 +_0233A53C: + bl ov00_022BDACC + cmp r0, #1 + bne _0233A5C0 + ldr r0, _0233A7F0 ; =ov01_0233C21C + ldr r1, [r0, #4] + ldrb r0, [r1, #0x2b + OV01_0233A390_OFFSET_2] + cmp r0, #0 + movne r0, #4 + strne r0, [r1, #0x44 + OV01_0233A390_OFFSET] + bne _0233A7E4 + ldr r2, [r1, #0x48 + OV01_0233A390_OFFSET] + cmp r2, #0 + movle r0, #4 + strle r0, [r1, #0x44 + OV01_0233A390_OFFSET] + ble _0233A7E4 + add r0, r1, #0x50 + OV01_0233A390_OFFSET + mov r1, #0 + bl ov00_022BDB38 + cmp r0, #0 + ldreq r0, _0233A7F0 ; =ov01_0233C21C + moveq r1, #4 + ldreq r0, [r0, #4] + streq r1, [r0, #0x44 + OV01_0233A390_OFFSET] + beq _0233A7E4 + ldr r1, _0233A7F0 ; =ov01_0233C21C + ldr r3, _0233A7F8 ; =0x00001C20 + ldr r0, [r1, #4] + mov r2, #2 + add r0, r0, #0x4000 + str r3, [r0, #0xb58 + OV01_0233A390_OFFSET] + ldr r0, [r1, #4] + str r2, [r0, #0x44 + OV01_0233A390_OFFSET] + b _0233A7E4 +_0233A5C0: + ldr r1, _0233A7F0 ; =ov01_0233C21C + ldr r0, [r1, #4] + add r0, r0, #0x4000 + ldr r2, [r0, #0xb58 + OV01_0233A390_OFFSET] + cmp r2, #0 + ble _0233A7E4 + sub r2, r2, #1 + str r2, [r0, #0xb58 + OV01_0233A390_OFFSET] + ldr r0, [r1, #4] + add r0, r0, #0x4000 + ldr r0, [r0, #0xb58 + OV01_0233A390_OFFSET] + cmp r0, #0 + bgt _0233A7E4 + bl ov00_022BDBA8 + ldr r0, _0233A7F0 ; =ov01_0233C21C + mov r1, #4 + ldr r0, [r0, #4] + str r1, [r0, #0x44 + OV01_0233A390_OFFSET] + b _0233A7E4 +_0233A60C: + bl ov00_022BDACC + cmp r0, #1 + bne _0233A690 + ldr r0, _0233A7F0 ; =ov01_0233C21C + mov r2, #0 + ldr r1, [r0, #4] + str r2, [r1, #0x4c + OV01_0233A390_OFFSET] + ldr r3, [r0, #4] + ldrb r0, [r3, #0x2b + OV01_0233A390_OFFSET_2] + cmp r0, #0 + movne r0, #4 + strne r0, [r3, #0x44 + OV01_0233A390_OFFSET] + bne _0233A7E4 + add r1, r3, #0x358 + OV01_0233A390_OFFSET + ldr r2, [r3, #0xfc + OV01_0233A390_OFFSET] + add r0, r3, #0x50 + OV01_0233A390_OFFSET + add r1, r1, #0x800 + bl ov00_022BDB6C + cmp r0, #0 + ldreq r0, _0233A7F0 ; =ov01_0233C21C + moveq r1, #4 + ldreq r0, [r0, #4] + streq r1, [r0, #0x44 + OV01_0233A390_OFFSET] + beq _0233A7E4 + ldr r1, _0233A7F0 ; =ov01_0233C21C + ldr r3, _0233A7F8 ; =0x00001C20 + ldr r0, [r1, #4] + mov r2, #3 + add r0, r0, #0x4000 + str r3, [r0, #0xb58 + OV01_0233A390_OFFSET] + ldr r0, [r1, #4] + str r2, [r0, #0x44 + OV01_0233A390_OFFSET] + b _0233A7E4 +_0233A690: + ldr r1, _0233A7F0 ; =ov01_0233C21C + ldr r0, [r1, #4] + add r0, r0, #0x4000 + ldr r2, [r0, #0xb58 + OV01_0233A390_OFFSET] + cmp r2, #0 + ble _0233A7E4 + sub r2, r2, #1 + str r2, [r0, #0xb58 + OV01_0233A390_OFFSET] + ldr r0, [r1, #4] + add r0, r0, #0x4000 + ldr r0, [r0, #0xb58 + OV01_0233A390_OFFSET] + cmp r0, #0 + bgt _0233A7E4 + bl ov00_022BDBA8 + ldr r0, _0233A7F0 ; =ov01_0233C21C + mov r1, #4 + ldr r0, [r0, #4] + str r1, [r0, #0x44 + OV01_0233A390_OFFSET] + b _0233A7E4 +_0233A6DC: + bl ov00_022BDACC + cmp r0, #1 + bne _0233A76C + ldr r0, _0233A7F0 ; =ov01_0233C21C + ldr r2, [r0, #4] + ldr r1, [r2, #0x4c + OV01_0233A390_OFFSET] + add r1, r1, #1 + str r1, [r2, #0x4c + OV01_0233A390_OFFSET] + ldr r2, [r0, #4] + ldrb r0, [r2, #0x2b + OV01_0233A390_OFFSET_2] + ldr r4, [r2, #0x4c + OV01_0233A390_OFFSET] + cmp r0, #0 + movne r0, #4 + strne r0, [r2, #0x44 + OV01_0233A390_OFFSET] + bne _0233A7E4 + ldr r0, [r2, #0x48 + OV01_0233A390_OFFSET] + cmp r4, r0 + movge r0, #4 + strge r0, [r2, #0x44 + OV01_0233A390_OFFSET] + bge _0233A7E4 + mov r0, #0xb0 + mul lr, r4, r0 + add r0, r2, #0x358 + OV01_0233A390_OFFSET + add r1, r2, lr + add ip, r2, #0x50 + OV01_0233A390_OFFSET + add r3, r0, #0x800 + ldr r2, [r1, #0xfc + OV01_0233A390_OFFSET] + add r0, ip, lr + add r1, r3, r4, lsl #10 + bl ov00_022BDB6C + cmp r0, #0 + ldreq r0, _0233A7F0 ; =ov01_0233C21C + moveq r1, #4 + ldreq r0, [r0, #4] + streq r1, [r0, #0x44 + OV01_0233A390_OFFSET] + b _0233A7E4 +_0233A76C: + ldr r1, _0233A7F0 ; =ov01_0233C21C + ldr r0, [r1, #4] + add r0, r0, #0x4000 + ldr r2, [r0, #0xb58 + OV01_0233A390_OFFSET] + cmp r2, #0 + ble _0233A7E4 + sub r2, r2, #1 + str r2, [r0, #0xb58 + OV01_0233A390_OFFSET] + ldr r0, [r1, #4] + add r0, r0, #0x4000 + ldr r0, [r0, #0xb58 + OV01_0233A390_OFFSET] + cmp r0, #0 + bgt _0233A7E4 + bl ov00_022BDBA8 + ldr r0, _0233A7F0 ; =ov01_0233C21C + mov r1, #4 + ldr r0, [r0, #4] + str r1, [r0, #0x44 + OV01_0233A390_OFFSET] + b _0233A7E4 +_0233A7B8: + bl ov00_022BDBE4 + cmp r0, #0 + beq _0233A7E4 + ldr r0, _0233A7F0 ; =ov01_0233C21C + ldr r0, [r0, #4] + add r0, r0, #0x4000 + ldr r0, [r0, #0xb58 + OV01_0233A390_OFFSET] + cmp r0, #0 + movgt r0, #1 + movle r0, #2 + b _0233A7E8 +_0233A7E4: + mov r0, #0 +_0233A7E8: + add sp, sp, #0x28 + ldmia sp!, {r4, pc} + .align 2, 0 +_0233A7F0: .word ov01_0233C21C +_0233A7F4: .word 0x00002A30 +_0233A7F8: .word 0x00001C20 + arm_func_end ov01_0233A390 + + arm_func_start ov01_0233A7FC +ov01_0233A7FC: ; 0x0233A7FC + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r2, _0233A83C ; =ov01_0233C21C + add r0, sp, #4 + add r1, sp, #0 + ldr r4, [r2, #4] + bl ov00_022BDCB8 + cmp r0, #0 + ldrne r1, [sp, #4] + moveq r0, #0 +#ifdef JAPAN + strne r1, [r4, #0x2c] + ldrne r1, [sp] + movne r0, #1 + strne r1, [r4, #0x30] +#else + strne r1, [r4, #0x38] + ldrne r1, [sp] + movne r0, #1 + strne r1, [r4, #0x3c] +#endif + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_0233A83C: .word ov01_0233C21C + arm_func_end ov01_0233A7FC + + arm_func_start ov01_0233A840 +ov01_0233A840: ; 0x0233A840 +#ifdef JAPAN +#define OV01_0233A840_OFFSET -0xC +#else +#define OV01_0233A840_OFFSET 0 +#endif + stmdb sp!, {r3, r4, r5, lr} + ldr r4, _0233A8B0 ; =ov01_0233C21C + mov r5, #0 +_0233A84C: + mov r0, r5, lsl #0x10 + mov r0, r0, lsr #0x10 + bl ov00_022BD0A0 + ldr r1, [r4, #4] + mov r2, r5, lsl #0x10 + add r1, r1, r5 + add r1, r1, #0x4000 + strb r0, [r1, #0xf61 + OV01_0233A840_OFFSET] + mov r0, r2, lsr #0x10 + bl ov00_022BD2C0 + ldr r1, [r4, #4] + mov r2, r5, lsl #0x10 + add r1, r1, r5 + add r1, r1, #0x4000 + strb r0, [r1, #0xf71 + OV01_0233A840_OFFSET] + mov r0, r2, lsr #0x10 + bl ov00_022BD170 + ldr r1, [r4, #4] + add r1, r1, r5, lsl #2 + add r1, r1, #0x4000 + add r5, r5, #1 + str r0, [r1, #0xf84 + OV01_0233A840_OFFSET] + cmp r5, #0x10 + blt _0233A84C + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0233A8B0: .word ov01_0233C21C + arm_func_end ov01_0233A840 + + arm_func_start ov01_0233A8B4 +ov01_0233A8B4: ; 0x0233A8B4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + cmp r5, #0 + ble _0233A9C8 + cmp r5, #0x14 + addls pc, pc, r5, lsl #2 + b _0233ACE4 +_0233A8D4: ; jump table + b _0233ACE4 ; case 0 + b _0233A928 ; case 1 + b _0233A930 ; case 2 + b _0233A938 ; case 3 + b _0233A940 ; case 4 + b _0233A948 ; case 5 + b _0233A950 ; case 6 + b _0233A958 ; case 7 + b _0233A960 ; case 8 + b _0233A968 ; case 9 + b _0233A970 ; case 10 + b _0233A978 ; case 11 + b _0233A980 ; case 12 + b _0233A988 ; case 13 + b _0233A990 ; case 14 + b _0233A998 ; case 15 + b _0233A9A0 ; case 16 + b _0233A9A8 ; case 17 + b _0233A9B0 ; case 18 + b _0233A9B8 ; case 19 + b _0233A9C0 ; case 20 +_0233A928: + ldr r0, _0233ACEC ; =0x00003766 + ldmia sp!, {r3, r4, r5, pc} +_0233A930: + ldr r0, _0233ACF0 ; =0x00003767 + ldmia sp!, {r3, r4, r5, pc} +_0233A938: + ldr r0, _0233ACF4 ; =0x00003768 + ldmia sp!, {r3, r4, r5, pc} +_0233A940: + ldr r0, _0233ACF8 ; =0x00003769 + ldmia sp!, {r3, r4, r5, pc} +_0233A948: + ldr r0, _0233ACFC ; =0x0000376A + ldmia sp!, {r3, r4, r5, pc} +_0233A950: + ldr r0, _0233AD00 ; =0x0000376B + ldmia sp!, {r3, r4, r5, pc} +_0233A958: + ldr r0, _0233AD04 ; =0x0000376C + ldmia sp!, {r3, r4, r5, pc} +_0233A960: + ldr r0, _0233AD08 ; =0x0000376D + ldmia sp!, {r3, r4, r5, pc} +_0233A968: + ldr r0, _0233AD0C ; =0x0000376E + ldmia sp!, {r3, r4, r5, pc} +_0233A970: + ldr r0, _0233AD10 ; =0x0000376F + ldmia sp!, {r3, r4, r5, pc} +_0233A978: + ldr r0, _0233AD14 ; =0x00003770 + ldmia sp!, {r3, r4, r5, pc} +_0233A980: + ldr r0, _0233AD18 ; =0x00003771 + ldmia sp!, {r3, r4, r5, pc} +_0233A988: + ldr r0, _0233AD1C ; =0x00003772 + ldmia sp!, {r3, r4, r5, pc} +_0233A990: + ldr r0, _0233AD20 ; =0x00003773 + ldmia sp!, {r3, r4, r5, pc} +_0233A998: + ldr r0, _0233AD24 ; =0x00000239 + ldmia sp!, {r3, r4, r5, pc} +_0233A9A0: +#ifdef JAPAN + ldr r0, _0233C5A4 ; =0x000004C9 +#else + mov r0, #0x238 +#endif + ldmia sp!, {r3, r4, r5, pc} +_0233A9A8: + ldr r0, _0233AD28 ; =0x00003774 + ldmia sp!, {r3, r4, r5, pc} +_0233A9B0: + ldr r0, _0233AD2C ; =0x00003775 + ldmia sp!, {r3, r4, r5, pc} +_0233A9B8: + ldr r0, _0233AD30 ; =0x00003776 + ldmia sp!, {r3, r4, r5, pc} +_0233A9C0: + ldr r0, _0233AD34 ; =0x00003777 + ldmia sp!, {r3, r4, r5, pc} +_0233A9C8: + bge _0233ACE4 + ldr r0, _0233AD38 ; =0xFFFFB1E0 + cmp r5, r0 + bgt _0233A9E4 + sub r0, r0, #0x63 + cmp r5, r0 + bge _0233AAA4 +_0233A9E4: + ldr r1, _0233AD3C ; =0xFFFFB17C + cmp r5, r1 + beq _0233AAA4 + sub r0, r1, #2 + cmp r5, r0 + bgt _0233AA08 + sub r0, r1, #7 + cmp r5, r0 + bge _0233AAA4 +_0233AA08: + ldr r0, _0233AD40 ; =0xFFFFB173 + cmp r5, r0 + beq _0233AAA4 + sub r0, r0, #2 + cmp r5, r0 + bgt _0233AA2C + ldr r0, _0233AD44 ; =0xFFFFADF9 + cmp r5, r0 + bge _0233AAA4 +_0233AA2C: + ldr r0, _0233AD48 ; =0xFFFF34DC + cmp r5, r0 + bgt _0233AA44 + sub r0, r0, #0x5f + cmp r5, r0 + bge _0233AAA4 +_0233AA44: + ldr r0, _0233AD4C ; =0xFFFF3478 + cmp r5, r0 + bgt _0233AA5C + sub r0, r0, #0x5f + cmp r5, r0 + bge _0233AAA4 +_0233AA5C: + ldr r0, _0233AD50 ; =0xFFFF3414 + cmp r5, r0 + bgt _0233AA74 + sub r0, r0, #0x5f + cmp r5, r0 + bge _0233AAA4 +_0233AA74: + ldr r0, _0233AD54 ; =0xFFFF33B4 + cmp r5, r0 + bgt _0233AA8C + sub r0, r0, #0x63 + cmp r5, r0 + bge _0233AAA4 +_0233AA8C: + ldr r0, _0233AD58 ; =0xFFFF30F8 + cmp r5, r0 + bgt _0233AAAC + ldr r0, _0233AD5C ; =0xFFFF2FCD + cmp r5, r0 + blt _0233AAAC +_0233AAA4: + ldr r0, _0233AD60 ; =0x00003778 + ldmia sp!, {r3, r4, r5, pc} +_0233AAAC: + ldr r0, _0233AD64 ; =0xFFFFB174 + cmp r5, r0 + ldreq r0, _0233AD68 ; =0x00003779 + ldmeqia sp!, {r3, r4, r5, pc} + sub r0, r0, #2 + cmp r5, r0 + ldreq r0, _0233AD6C ; =0x0000377A + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _0233AD70 ; =0xFFFF38C8 + cmp r5, r0 + bgt _0233AAE4 + sub r0, r0, #0x66 + cmp r5, r0 + bge _0233AB14 +_0233AAE4: + ldr r0, _0233AD74 ; =0xFFFF3860 + cmp r5, r0 + bgt _0233AAFC + sub r0, r0, #0x5f + cmp r5, r0 + bge _0233AB14 +_0233AAFC: + ldr r0, _0233AD78 ; =0xFFFF379C + cmp r5, r0 + bgt _0233AB1C + sub r0, r0, #0x63 + cmp r5, r0 + blt _0233AB1C +_0233AB14: + ldr r0, _0233AD7C ; =0x0000377B + ldmia sp!, {r3, r4, r5, pc} +_0233AB1C: + ldr r0, _0233AD80 ; =0xFFFF34E0 + cmp r5, r0 + bgt _0233AB34 + sub r0, r0, #3 + cmp r5, r0 + bge _0233AB64 +_0233AB34: + ldr r0, _0233AD84 ; =0xFFFF347C + cmp r5, r0 + bgt _0233AB4C + sub r0, r0, #3 + cmp r5, r0 + bge _0233AB64 +_0233AB4C: + ldr r0, _0233AD88 ; =0xFFFF3418 + cmp r5, r0 + bgt _0233AB6C + sub r0, r0, #3 + cmp r5, r0 + blt _0233AB6C +_0233AB64: + ldr r0, _0233AD8C ; =0x0000377C + ldmia sp!, {r3, r4, r5, pc} +_0233AB6C: + ldr r0, _0233AD90 ; =0xFFFF3861 + cmp r5, r0 + ldreq r0, _0233AD94 ; =0x0000377D + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _0233AD98 ; =0xFFFF3CB0 + cmp r5, r0 + bgt _0233AB98 + sub r0, r0, #0x63 + cmp r5, r0 +#if defined(EUROPE) + movge r0, #0x3780 +#elif defined(JAPAN) + movge r0, #0x3400 +#else + ldrge r0, _0233AD9C ; =0x0000377E +#endif + ldmgeia sp!, {r3, r4, r5, pc} +_0233AB98: + ldr r0, _0233ADA0 ; =0xFFFFB17B + cmp r5, r0 + beq _0233ABBC + ldr r0, _0233ADA4 ; =0xFFFFA628 + cmp r5, r0 + bgt _0233ABC4 + ldr r0, _0233ADA8 ; =0xFFFFA241 + cmp r5, r0 + blt _0233ABC4 +_0233ABBC: + ldr r0, _0233ADAC ; =0x0000377F + ldmia sp!, {r3, r4, r5, pc} +_0233ABC4: + mov r0, #0xc800 + rsb r0, r0, #0 + cmp r5, r0 + bgt _0233ABE4 + sub r0, r0, #0x63 + cmp r5, r0 +#ifdef NORTH_AMERICA + movge r0, #0x3780 +#else + ldrge r0, _0233B4F8 ; =0x00003782 +#endif + ldmgeia sp!, {r3, r4, r5, pc} +_0233ABE4: + ldr r0, _0233ADB0 ; =0xFFFEC5D2 + cmp r5, r0 + ldreq r0, _0233ADB4 ; =0x00003784 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _0233ADB8 ; =0xFFFFA240 + cmp r5, r0 + bgt _0233AC0C + ldr r0, _0233ADBC ; =0xFFFF9E59 + cmp r5, r0 + bge _0233AC78 +_0233AC0C: + ldr r0, _0233ADC0 ; =0xFFFF9E58 + cmp r5, r0 + bgt _0233AC24 + ldr r0, _0233ADC4 ; =0xFFFF9A71 + cmp r5, r0 + bge _0233AC78 +_0233AC24: + ldr r0, _0233ADC8 ; =0xFFFF86E8 + cmp r5, r0 + bgt _0233AC3C + ldr r0, _0233ADCC ; =0xFFFF8301 + cmp r5, r0 + bge _0233AC78 +_0233AC3C: + ldr r0, _0233ADD0 ; =0xFFFF2D10 + cmp r5, r0 + bgt _0233AC54 + sub r0, r0, #0x63 + cmp r5, r0 + bge _0233AC78 +_0233AC54: + ldr r0, _0233ADD4 ; =0xFFFF15A0 + cmp r5, r0 + bgt _0233ACA8 + ldr r0, _0233ADD8 ; =0xFFFE7961 + cmp r5, r0 + blt _0233ACA8 + ldr r0, _0233ADB0 ; =0xFFFEC5D2 + cmp r5, r0 + beq _0233ACA8 +_0233AC78: + cmp r4, #0 + ldrne r0, _0233ADDC ; =0x00003781 + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, _0233ADC8 ; =0xFFFF86E8 + cmp r5, r0 + bgt _0233ACA0 + ldr r0, _0233ADCC ; =0xFFFF8301 + cmp r5, r0 + ldrge r0, _0233ADE0 ; =0x00003783 + ldmgeia sp!, {r3, r4, r5, pc} +_0233ACA0: + ldr r0, _0233ADE4 ; =0x00003782 + ldmia sp!, {r3, r4, r5, pc} +_0233ACA8: + ldr r0, _0233ADE8 ; =ov01_0233C088 + mov r1, r5 + bl Debug_Print0 + cmp r4, #0 + ldrne r0, _0233ADDC ; =0x00003781 + ldmneia sp!, {r3, r4, r5, pc} + ldr r0, _0233ADC8 ; =0xFFFF86E8 + cmp r5, r0 + bgt _0233ACDC + ldr r0, _0233ADCC ; =0xFFFF8301 + cmp r5, r0 + ldrge r0, _0233ADE0 ; =0x00003783 + ldmgeia sp!, {r3, r4, r5, pc} +_0233ACDC: + ldr r0, _0233ADE4 ; =0x00003782 + ldmia sp!, {r3, r4, r5, pc} +_0233ACE4: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +#if defined(EUROPE) +#define OV01_0233A8B4_OFFSET 2 +#elif defined(JAPAN) +#define OV01_0233A8B4_OFFSET -0x37E +#else +#define OV01_0233A8B4_OFFSET 0 +#endif +_0233ACEC: .word 0x00003766 + OV01_0233A8B4_OFFSET +_0233ACF0: .word 0x00003767 + OV01_0233A8B4_OFFSET +_0233ACF4: .word 0x00003768 + OV01_0233A8B4_OFFSET +_0233ACF8: .word 0x00003769 + OV01_0233A8B4_OFFSET +_0233ACFC: .word 0x0000376A + OV01_0233A8B4_OFFSET +_0233AD00: .word 0x0000376B + OV01_0233A8B4_OFFSET +_0233AD04: .word 0x0000376C + OV01_0233A8B4_OFFSET +_0233AD08: .word 0x0000376D + OV01_0233A8B4_OFFSET +_0233AD0C: .word 0x0000376E + OV01_0233A8B4_OFFSET +_0233AD10: .word 0x0000376F + OV01_0233A8B4_OFFSET +_0233AD14: .word 0x00003770 + OV01_0233A8B4_OFFSET +_0233AD18: .word 0x00003771 + OV01_0233A8B4_OFFSET +_0233AD1C: .word 0x00003772 + OV01_0233A8B4_OFFSET +_0233AD20: .word 0x00003773 + OV01_0233A8B4_OFFSET +#ifdef JAPAN +_0233AD24: .word 0x000004CA +_0233C5A4: .word 0x000004C9 +#else +_0233AD24: .word 0x00000239 +#endif +_0233AD28: .word 0x00003774 + OV01_0233A8B4_OFFSET +_0233AD2C: .word 0x00003775 + OV01_0233A8B4_OFFSET +_0233AD30: .word 0x00003776 + OV01_0233A8B4_OFFSET +_0233AD34: .word 0x00003777 + OV01_0233A8B4_OFFSET +_0233AD38: .word 0xFFFFB1E0 +_0233AD3C: .word 0xFFFFB17C +_0233AD40: .word 0xFFFFB173 +_0233AD44: .word 0xFFFFADF9 +_0233AD48: .word 0xFFFF34DC +_0233AD4C: .word 0xFFFF3478 +_0233AD50: .word 0xFFFF3414 +_0233AD54: .word 0xFFFF33B4 +_0233AD58: .word 0xFFFF30F8 +_0233AD5C: .word 0xFFFF2FCD +_0233AD60: .word 0x00003778 + OV01_0233A8B4_OFFSET +_0233AD64: .word 0xFFFFB174 +_0233AD68: .word 0x00003779 + OV01_0233A8B4_OFFSET +_0233AD6C: .word 0x0000377A + OV01_0233A8B4_OFFSET +_0233AD70: .word 0xFFFF38C8 +_0233AD74: .word 0xFFFF3860 +_0233AD78: .word 0xFFFF379C +_0233AD7C: .word 0x0000377B + OV01_0233A8B4_OFFSET +_0233AD80: .word 0xFFFF34E0 +_0233AD84: .word 0xFFFF347C +_0233AD88: .word 0xFFFF3418 +_0233AD8C: .word 0x0000377C + OV01_0233A8B4_OFFSET +_0233AD90: .word 0xFFFF3861 +_0233AD94: .word 0x0000377D + OV01_0233A8B4_OFFSET +_0233AD98: .word 0xFFFF3CB0 +#if defined(NORTH_AMERICA) +_0233AD9C: .word 0x0000377E +#endif +_0233ADA0: .word 0xFFFFB17B +_0233ADA4: .word 0xFFFFA628 +_0233ADA8: .word 0xFFFFA241 +_0233ADAC: .word 0x0000377F + OV01_0233A8B4_OFFSET +#if defined(EUROPE) +_0233B4F8: .word 0x00003782 +#elif defined(JAPAN) +_0233B4F8: .word 0x00003402 +#endif +_0233ADB0: .word 0xFFFEC5D2 +_0233ADB4: .word 0x00003784 + OV01_0233A8B4_OFFSET +_0233ADB8: .word 0xFFFFA240 +_0233ADBC: .word 0xFFFF9E59 +_0233ADC0: .word 0xFFFF9E58 +_0233ADC4: .word 0xFFFF9A71 +_0233ADC8: .word 0xFFFF86E8 +_0233ADCC: .word 0xFFFF8301 +_0233ADD0: .word 0xFFFF2D10 +_0233ADD4: .word 0xFFFF15A0 +_0233ADD8: .word 0xFFFE7961 +_0233ADDC: .word 0x00003781 + OV01_0233A8B4_OFFSET +_0233ADE0: .word 0x00003783 + OV01_0233A8B4_OFFSET +_0233ADE4: .word 0x00003782 + OV01_0233A8B4_OFFSET +_0233ADE8: .word ov01_0233C088 + arm_func_end ov01_0233A8B4 + + arm_func_start ov01_0233ADEC +ov01_0233ADEC: ; 0x0233ADEC + ldr r0, _0233AE00 ; =ov01_0233CA7C + mov r1, #0 + str r1, [r0] + mov r0, #1 + bx lr + .align 2, 0 +_0233AE00: .word ov01_0233CA7C + arm_func_end ov01_0233ADEC + + arm_func_start ov01_0233AE04 +ov01_0233AE04: ; 0x0233AE04 + stmdb sp!, {r3, lr} + ldr r0, _0233AE60 ; =ov01_0233CA7C + ldr r0, [r0] + cmp r0, #0 + beq _0233AE24 + cmp r0, #1 + beq _0233AE38 + b _0233AE58 +_0233AE24: + bl ov01_02339888 + ldr r0, _0233AE60 ; =ov01_0233CA7C + mov r1, #1 + str r1, [r0] + b _0233AE58 +_0233AE38: + bl ov01_023398A4 + cmp r0, #0 + beq _0233AE58 + bl sub_02046D20 + mov r0, #0x17 + bl ov00_022BE4A8 + mov r0, #4 + ldmia sp!, {r3, pc} +_0233AE58: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_0233AE60: .word ov01_0233CA7C + arm_func_end ov01_0233AE04 + + arm_func_start ov01_0233AE64 +ov01_0233AE64: ; 0x0233AE64 + ldr ip, _0233AE70 ; =InitMenu + ldr r0, _0233AE74 ; =ov01_0233C0A4 + bx ip + .align 2, 0 +_0233AE70: .word InitMenu +_0233AE74: .word ov01_0233C0A4 + arm_func_end ov01_0233AE64 + ; 0x0233AE78 + + .rodata + .global ov01_0233AE78 +ov01_0233AE78: + .byte 0x44, 0x41, 0x54, 0x41, 0x30, 0x30, 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 0x44, 0x41, 0x54, 0x41, 0x30, 0x31, 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 0x44, 0x41, 0x54, 0x41, 0x30, 0x32, 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 0x44, 0x41, 0x54, 0x41, 0x30, 0x33, 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 + .global ov01_0233AEF8 +ov01_0233AEF8: + .byte 0x72, 0x6F, 0x6D, 0x30, 0x3A, 0x46, 0x4F, 0x4E, 0x54, 0x2F, 0x77, 0x5F, 0x69, 0x63, 0x6F, 0x6E + .byte 0x2E, 0x77, 0x61, 0x6E, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233AF10 +ov01_0233AF10: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233AF14 +ov01_0233AF14: + .byte 0x63, 0x68, 0x65, 0x63 + .byte 0x6B, 0x20, 0x69, 0x64, 0x20, 0x3A, 0x20, 0x75, 0x6E, 0x69, 0x71, 0x75, 0x65, 0x20, 0x30, 0x78 + .byte 0x25, 0x30, 0x38, 0x78, 0x20, 0x3A, 0x20, 0x6D, 0x61, 0x63, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38 + .byte 0x78, 0x0A, 0x00, 0x00 + .global ov01_0233AF3C +ov01_0233AF3C: + .byte 0x61, 0x64, 0x64, 0x20, 0x69, 0x64, 0x20, 0x3A, 0x20, 0x75, 0x6E, 0x69 + .byte 0x71, 0x75, 0x65, 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x20, 0x3A, 0x20, 0x6D, 0x61, 0x63 + .byte 0x20, 0x30, 0x78, 0x25, 0x30, 0x38, 0x78, 0x0A, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233AF64 +ov01_0233AF64: + .byte 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 + .global ov01_0233AF88 +ov01_0233AF88: + .byte 0x00, 0x00, 0x00, 0x00 + .word ov01_0232EDC0 + .word ov01_0232EDEC + .word ov01_0232EE34 + .byte 0x00, 0x00, 0x00, 0x00 + .word ov01_0232EE58 + .byte 0x00, 0x00, 0x00, 0x00 + .word ov01_0232EF28 + .word ov01_0232EF4C + .global ov01_0233AFAC +ov01_0233AFAC: + .byte 0x0D, 0x00, 0x00, 0x00 + .word ov01_0232EFE8 + .word ov01_0232F038 + .word ov01_0232F0C0 + .byte 0x00, 0x00, 0x00, 0x00 + .word ov01_0232F0E0 + .word ov01_0232F28C + .word ov01_0232F338 + .word ov01_0232F384 + .global ov01_0233AFD0 +ov01_0233AFD0: + .word ov01_0233AFD8 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233AFD8 +ov01_0233AFD8: + .byte 0x42, 0x41, 0x43, 0x4B, 0x2F, 0x65, 0x78, 0x70, 0x62, 0x61, 0x63, 0x6B, 0x2E, 0x62, 0x67, 0x70 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233AFEC +ov01_0233AFEC: + .byte 0x00, 0x00, 0x00, 0x00, 0x09, 0x0D, 0x12, 0x04, 0x01, 0xFA, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233AFFC +ov01_0233AFFC: + .byte 0x0D, 0x00, 0x00, 0x00 + .word ov01_0232F41C + .word ov01_0232F478 + .word ov01_0232F538 + .word ov01_0232F558 + .word ov01_0232F55C + .word ov01_0232F73C + .word ov01_0232F7BC + .word ov01_0232F7EC + .global ov01_0233B020 +ov01_0233B020: + .byte 0x42, 0x41, 0x43, 0x4B, 0x2F, 0x73, 0x30, 0x37 + .byte 0x70, 0x30, 0x32, 0x61, 0x2E, 0x62, 0x67, 0x70, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233B034 +ov01_0233B034: + .byte 0x0D, 0x00, 0x00, 0x00 + .word ov01_0232F924 + .word ov01_0232F980 + .word ov01_0232FA30 + .word ov01_0232FA50 + .word ov01_0232FA54 + .word ov01_0232FC28 + .word ov01_0232FD00 + .word ov01_0232FD30 + .global ov01_0233B058 +ov01_0233B058: + .byte 0x42, 0x41, 0x43, 0x4B, 0x2F, 0x65, 0x78, 0x70, 0x62, 0x61, 0x63, 0x6B, 0x2E, 0x62, 0x67, 0x70 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233B06C +ov01_0233B06C: + .byte 0x0D, 0x00, 0x00, 0x00 + .word ov01_0232FDC0 + .word ov01_0232FE1C + .word ov01_0232FECC + .word ov01_0232FEEC + .word ov01_0232FEF0 + .word ov01_023300C4 + .word ov01_0233019C + .word ov01_023301CC + .global ov01_0233B090 +ov01_0233B090: + .byte 0x42, 0x41, 0x43, 0x4B, 0x2F, 0x65, 0x78, 0x70 + .byte 0x62, 0x61, 0x63, 0x6B, 0x2E, 0x62, 0x67, 0x70, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233B0A4 +ov01_0233B0A4: + .byte 0x47, 0x52, 0x4F, 0x55 + .byte 0x4E, 0x44, 0x2F, 0x73, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x34, 0x2E, 0x77, 0x61, 0x6E, 0x00 + .global ov01_0233B0B8 +ov01_0233B0B8: + .byte 0x47, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x2F, 0x73, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x32, 0x2E + .byte 0x77, 0x61, 0x6E, 0x00 + .global ov01_0233B0CC +ov01_0233B0CC: + .byte 0x47, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x2F, 0x73, 0x31, 0x38, 0x70, 0x30 + .byte 0x31, 0x61, 0x33, 0x2E, 0x77, 0x61, 0x6E, 0x00 + .global ov01_0233B0E0 +ov01_0233B0E0: + .byte 0x0D, 0x00, 0x00, 0x00 + .word ov01_02330224 + .word ov01_02330594 + .word ov01_023306DC + .word ov01_023306FC + .word ov01_02330700 + .word ov01_023309F4 + .word ov01_02330ACC + .word ov01_02330D58 + .global ov01_0233B104 +ov01_0233B104: + .byte 0x47, 0x52, 0x4F, 0x55 + .byte 0x4E, 0x44, 0x2F, 0x73, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x31, 0x2E, 0x77, 0x61, 0x6E, 0x00 + .global ov01_0233B118 +ov01_0233B118: + .byte 0x42, 0x41, 0x43, 0x4B, 0x2F, 0x73, 0x31, 0x38, 0x70, 0x30, 0x31, 0x61, 0x2E, 0x62, 0x67, 0x70 + .byte 0x00, 0x00, 0x00, 0x00 + .global PRINTS_STRINGS +PRINTS_STRINGS: + .byte 0x61, 0x73, 0x31, 0x30, 0x36, 0x00, 0x00, 0x00 + .global ov01_0233B134 +ov01_0233B134: + .byte 0x61, 0x73, 0x30, 0x39 + .byte 0x37, 0x00, 0x00, 0x00 + .global ov01_0233B13C +ov01_0233B13C: + .byte 0x61, 0x73, 0x31, 0x30, 0x35, 0x00, 0x00, 0x00 + .global ov01_0233B144 +ov01_0233B144: + .byte 0x61, 0x73, 0x31, 0x30 + .byte 0x37, 0x00, 0x00, 0x00 + .global ov01_0233B14C +ov01_0233B14C: + .byte 0x61, 0x73, 0x31, 0x30, 0x33, 0x00, 0x00, 0x00 + .global ov01_0233B154 +ov01_0233B154: + .byte 0x61, 0x73, 0x31, 0x30 + .byte 0x32, 0x00, 0x00, 0x00 + .global ov01_0233B15C +ov01_0233B15C: + .byte 0x61, 0x73, 0x30, 0x39, 0x38, 0x00, 0x00, 0x00 + .global ov01_0233B164 +ov01_0233B164: + .byte 0x61, 0x73, 0x30, 0x37 + .byte 0x32, 0x00, 0x00, 0x00 + .global ov01_0233B16C +ov01_0233B16C: + .byte 0x61, 0x73, 0x30, 0x39, 0x36, 0x00, 0x00, 0x00 + .global ov01_0233B174 +ov01_0233B174: + .byte 0x61, 0x73, 0x30, 0x39 + .byte 0x35, 0x00, 0x00, 0x00 + .global ov01_0233B17C +ov01_0233B17C: + .byte 0x61, 0x73, 0x30, 0x39, 0x34, 0x00, 0x00, 0x00 + .global ov01_0233B184 +ov01_0233B184: + .byte 0x61, 0x73, 0x30, 0x38 + .byte 0x32, 0x00, 0x00, 0x00 + .global ov01_0233B18C +ov01_0233B18C: + .byte 0x61, 0x73, 0x30, 0x35, 0x34, 0x00, 0x00, 0x00 + .global ov01_0233B194 +ov01_0233B194: + .byte 0x61, 0x73, 0x30, 0x38 + .byte 0x31, 0x00, 0x00, 0x00 + .global ov01_0233B19C +ov01_0233B19C: + .byte 0x61, 0x73, 0x30, 0x37, 0x39, 0x00, 0x00, 0x00 + .global ov01_0233B1A4 +ov01_0233B1A4: + .byte 0x61, 0x73, 0x30, 0x37 + .byte 0x37, 0x00, 0x00, 0x00 + .global ov01_0233B1AC +ov01_0233B1AC: + .byte 0x61, 0x73, 0x30, 0x37, 0x36, 0x00, 0x00, 0x00 + .global ov01_0233B1B4 +ov01_0233B1B4: + .byte 0x61, 0x73, 0x30, 0x37 + .byte 0x34, 0x00, 0x00, 0x00 + .global ov01_0233B1BC +ov01_0233B1BC: + .byte 0x61, 0x73, 0x30, 0x37, 0x33, 0x00, 0x00, 0x00 + .global ov01_0233B1C4 +ov01_0233B1C4: + .byte 0x61, 0x73, 0x30, 0x33 + .byte 0x31, 0x00, 0x00, 0x00 + .global ov01_0233B1CC +ov01_0233B1CC: + .byte 0x61, 0x73, 0x30, 0x37, 0x31, 0x00, 0x00, 0x00 + .global ov01_0233B1D4 +ov01_0233B1D4: + .byte 0x61, 0x73, 0x30, 0x36 + .byte 0x38, 0x00, 0x00, 0x00 + .global ov01_0233B1DC +ov01_0233B1DC: + .byte 0x61, 0x73, 0x30, 0x36, 0x37, 0x00, 0x00, 0x00 + .global ov01_0233B1E4 +ov01_0233B1E4: + .byte 0x61, 0x73, 0x30, 0x36 + .byte 0x36, 0x00, 0x00, 0x00 + .global ov01_0233B1EC +ov01_0233B1EC: + .byte 0x61, 0x73, 0x30, 0x36, 0x34, 0x00, 0x00, 0x00 + .global ov01_0233B1F4 +ov01_0233B1F4: + .byte 0x61, 0x73, 0x30, 0x36 + .byte 0x30, 0x00, 0x00, 0x00 + .global ov01_0233B1FC +ov01_0233B1FC: + .byte 0x61, 0x73, 0x30, 0x35, 0x39, 0x00, 0x00, 0x00 + .global ov01_0233B204 +ov01_0233B204: + .byte 0x61, 0x73, 0x30, 0x30 + .byte 0x31, 0x00, 0x00, 0x00 + .global ov01_0233B20C +ov01_0233B20C: + .byte 0x61, 0x73, 0x30, 0x35, 0x36, 0x00, 0x00, 0x00 + .global ov01_0233B214 +ov01_0233B214: + .byte 0x61, 0x73, 0x30, 0x35 + .byte 0x33, 0x00, 0x00, 0x00 + .global ov01_0233B21C +ov01_0233B21C: + .byte 0x61, 0x73, 0x30, 0x35, 0x32, 0x00, 0x00, 0x00 + .global ov01_0233B224 +ov01_0233B224: + .byte 0x61, 0x73, 0x30, 0x35 + .byte 0x31, 0x00, 0x00, 0x00 + .global ov01_0233B22C +ov01_0233B22C: + .byte 0x61, 0x73, 0x30, 0x35, 0x30, 0x00, 0x00, 0x00 + .global ov01_0233B234 +ov01_0233B234: + .byte 0x61, 0x73, 0x30, 0x34 + .byte 0x39, 0x00, 0x00, 0x00 + .global ov01_0233B23C +ov01_0233B23C: + .byte 0x61, 0x73, 0x30, 0x34, 0x38, 0x00, 0x00, 0x00 + .global ov01_0233B244 +ov01_0233B244: + .byte 0x61, 0x73, 0x30, 0x34 + .byte 0x37, 0x00, 0x00, 0x00 + .global ov01_0233B24C +ov01_0233B24C: + .byte 0x61, 0x73, 0x30, 0x34, 0x36, 0x00, 0x00, 0x00 + .global ov01_0233B254 +ov01_0233B254: + .byte 0x61, 0x73, 0x30, 0x34 + .byte 0x34, 0x00, 0x00, 0x00 + .global ov01_0233B25C +ov01_0233B25C: + .byte 0x61, 0x73, 0x30, 0x34, 0x33, 0x00, 0x00, 0x00 + .global ov01_0233B264 +ov01_0233B264: + .byte 0x61, 0x73, 0x30, 0x34 + .byte 0x31, 0x00, 0x00, 0x00 + .global ov01_0233B26C +ov01_0233B26C: + .byte 0x61, 0x73, 0x30, 0x33, 0x38, 0x00, 0x00, 0x00 + .global ov01_0233B274 +ov01_0233B274: + .byte 0x61, 0x73, 0x30, 0x33 + .byte 0x35, 0x00, 0x00, 0x00 + .global ov01_0233B27C +ov01_0233B27C: + .byte 0x61, 0x73, 0x30, 0x33, 0x34, 0x00, 0x00, 0x00 + .global ov01_0233B284 +ov01_0233B284: + .byte 0x61, 0x73, 0x30, 0x38 + .byte 0x38, 0x00, 0x00, 0x00 + .global ov01_0233B28C +ov01_0233B28C: + .byte 0x61, 0x73, 0x30, 0x32, 0x36, 0x00, 0x00, 0x00 + .global ov01_0233B294 +ov01_0233B294: + .byte 0x61, 0x73, 0x30, 0x32 + .byte 0x34, 0x00, 0x00, 0x00 + .global ov01_0233B29C +ov01_0233B29C: + .byte 0x61, 0x73, 0x30, 0x32, 0x33, 0x00, 0x00, 0x00 + .global ov01_0233B2A4 +ov01_0233B2A4: + .byte 0x61, 0x73, 0x30, 0x31 + .byte 0x39, 0x00, 0x00, 0x00 + .global ov01_0233B2AC +ov01_0233B2AC: + .byte 0x61, 0x73, 0x30, 0x31, 0x37, 0x00, 0x00, 0x00 + .global ov01_0233B2B4 +ov01_0233B2B4: + .byte 0x61, 0x73, 0x30, 0x31 + .byte 0x35, 0x00, 0x00, 0x00 + .global ov01_0233B2BC +ov01_0233B2BC: + .byte 0x61, 0x73, 0x30, 0x31, 0x34, 0x00, 0x00, 0x00 + .global ov01_0233B2C4 +ov01_0233B2C4: + .byte 0x61, 0x73, 0x30, 0x31 + .byte 0x33, 0x00, 0x00, 0x00 + .global ov01_0233B2CC +ov01_0233B2CC: + .byte 0x61, 0x73, 0x30, 0x31, 0x32, 0x00, 0x00, 0x00 + .global ov01_0233B2D4 +ov01_0233B2D4: + .byte 0x61, 0x73, 0x30, 0x30 + .byte 0x38, 0x00, 0x00, 0x00 + .global ov01_0233B2DC +ov01_0233B2DC: + .byte 0x61, 0x73, 0x30, 0x30, 0x37, 0x00, 0x00, 0x00 + .global ov01_0233B2E4 +ov01_0233B2E4: + .byte 0x61, 0x73, 0x30, 0x30 + .byte 0x36, 0x00, 0x00, 0x00 + .global ov01_0233B2EC +ov01_0233B2EC: + .byte 0x61, 0x73, 0x30, 0x30, 0x35, 0x00, 0x00, 0x00 + .global ov01_0233B2F4 +ov01_0233B2F4: + .byte 0x61, 0x73, 0x30, 0x30 + .byte 0x33, 0x00, 0x00, 0x00 + .global ov01_0233B2FC +ov01_0233B2FC: + .byte 0x61, 0x73, 0x30, 0x30, 0x32, 0x00, 0x00, 0x00 + .global ov01_0233B304 +ov01_0233B304: + .byte 0x61, 0x73, 0x31, 0x30 + .byte 0x34, 0x00, 0x00, 0x00 + .global ov01_0233B30C +ov01_0233B30C: + .byte 0x61, 0x73, 0x31, 0x30, 0x38, 0x00, 0x00, 0x00 + .global PRINTS_STRUCT +PRINTS_STRUCT: + .byte 0x1B, 0x01, 0x00, 0x00 + .global ov01_0233B318 +ov01_0233B318: + .word ov01_0233B204 + .byte 0x9F, 0x00, 0x00, 0x00 + .word ov01_0233B2FC + .byte 0x85, 0x00, 0x00, 0x00 + .word ov01_0233B2F4 + .byte 0x48, 0x01, 0x00, 0x00 + .word ov01_0233B2EC + .byte 0x49, 0x01, 0x00, 0x00 + .word ov01_0233B2E4 + .byte 0xAE, 0x01, 0x00, 0x00 + .word ov01_0233B2DC + .byte 0xA0, 0x00, 0x00, 0x00 + .word ov01_0233B2D4 + .byte 0x8F, 0x00, 0x00, 0x00 + .word ov01_0233B2CC + .byte 0x08, 0x00, 0x00, 0x00 + .word ov01_0233B2C4 + .byte 0x09, 0x00, 0x00, 0x00 + .word ov01_0233B2BC + .byte 0x18, 0x01, 0x00, 0x00 + .word ov01_0233B2B4 + .byte 0xAB, 0x01, 0x00, 0x00 + .word ov01_0233B2AC + .byte 0xE8, 0x01, 0x00, 0x00 + .word ov01_0233B2A4 + .byte 0x1A, 0x01, 0x00, 0x00 + .word ov01_0233B29C + .byte 0x19, 0x01, 0x00, 0x00 + .word ov01_0233B294 + .byte 0x07, 0x00, 0x00, 0x00 + .word ov01_0233B28C + .byte 0x98, 0x00, 0x00, 0x00 + .word ov01_0233B1C4 + .byte 0xA8, 0x01, 0x00, 0x00 + .word ov01_0233B27C + .byte 0xA6, 0x01, 0x00, 0x00 + .word ov01_0233B274 + .byte 0x34, 0x00, 0x00, 0x00 + .word ov01_0233B26C + .byte 0x1F, 0x01, 0x00, 0x00 + .word ov01_0233B264 + .byte 0x9D, 0x00, 0x00, 0x00 + .word ov01_0233B25C + .byte 0x1D, 0x01, 0x00, 0x00 + .word ov01_0233B254 + .byte 0xA7, 0x01, 0x00, 0x00 + .word ov01_0233B24C + .byte 0x19, 0x00, 0x00, 0x00 + .word ov01_0233B244 + .byte 0xA9, 0x01, 0x00, 0x00 + .word ov01_0233B23C + .byte 0x04, 0x00, 0x00, 0x00 + .word ov01_0233B234 + .byte 0x9B, 0x00, 0x00, 0x00 + .word ov01_0233B22C + .byte 0x02, 0x00, 0x00, 0x00 + .word ov01_0233B224 + .byte 0x01, 0x00, 0x00, 0x00 + .word ov01_0233B21C + .byte 0x03, 0x00, 0x00, 0x00 + .word ov01_0233B214 + .byte 0x99, 0x00, 0x00, 0x00 + .word ov01_0233B18C + .byte 0x35, 0x00, 0x00, 0x00 + .word ov01_0233B20C + .byte 0xAD, 0x01, 0x00, 0x00 + .word ov01_0233B1FC + .byte 0xAC, 0x01, 0x00, 0x00 + .word ov01_0233B1F4 + .byte 0x9C, 0x00, 0x00, 0x00 + .word ov01_0233B1EC + .byte 0x1E, 0x01, 0x00, 0x00 + .word ov01_0233B1E4 + .byte 0x9A, 0x00, 0x00, 0x00 + .word ov01_0233B1DC + .byte 0xAA, 0x01, 0x00, 0x00 + .word ov01_0233B1D4 + .byte 0x1A, 0x00, 0x00, 0x00 + .word ov01_0233B1CC + .byte 0x20, 0x01, 0x00, 0x00 + .word ov01_0233B164 + .byte 0x05, 0x00, 0x00, 0x00 + .word ov01_0233B1BC + .byte 0x06, 0x00, 0x00, 0x00 + .word ov01_0233B1B4 + .byte 0x1C, 0x01, 0x00, 0x00 + .word ov01_0233B1AC + .byte 0x9E, 0x00, 0x00, 0x00 + .word ov01_0233B1A4 + .byte 0x26, 0x00, 0x00, 0x00 + .word ov01_0233B19C + .byte 0x02, 0x01, 0x00, 0x00 + .word ov01_0233B194 + .byte 0xB6, 0x01, 0x00, 0x00 + .word ov01_0233B184 + .byte 0x03, 0x01, 0x00, 0x00 + .word ov01_0233B284 + .byte 0xE9, 0x01, 0x00, 0x00 + .word ov01_0233B17C + .byte 0xEA, 0x01, 0x00, 0x00 + .word ov01_0233B174 + .byte 0xB7, 0x01, 0x00, 0x00 + .word ov01_0233B16C + .byte 0xB8, 0x01, 0x00, 0x00 + .word ov01_0233B134 + .byte 0x25, 0x00, 0x00, 0x00 + .word ov01_0233B15C + .byte 0x86, 0x00, 0x00, 0x00 + .word ov01_0233B154 + .byte 0x87, 0x00, 0x00, 0x00 + .word ov01_0233B14C + .byte 0x88, 0x00, 0x00, 0x00 + .word ov01_0233B304 + .byte 0xC4, 0x00, 0x00, 0x00 + .word ov01_0233B13C + .byte 0xC5, 0x00, 0x00, 0x00 + .word PRINTS_STRINGS + .byte 0x00, 0x02, 0x00, 0x00 + .word ov01_0233B144 + .byte 0x01, 0x02, 0x00, 0x00 + .word ov01_0233B30C + .byte 0x00, 0x00, 0x00, 0x00 + .word ov01_0233B204 + .global ov01_0233B504 +ov01_0233B504: + .byte 0x72, 0x6F, 0x6D, 0x30 + .byte 0x3A, 0x47, 0x52, 0x4F, 0x55, 0x4E, 0x44, 0x2F, 0x25, 0x73, 0x2E, 0x77, 0x61, 0x6E, 0x00, 0x00 + .global MAIN_MENU_WINDOW_PARAMS_1 +MAIN_MENU_WINDOW_PARAMS_1: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global MAIN_MENU_WINDOW_PARAMS_2 +MAIN_MENU_WINDOW_PARAMS_2: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global MAIN_MENU_WINDOW_PARAMS_3 +MAIN_MENU_WINDOW_PARAMS_3: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x12, 0x1C, 0x04, 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global MAIN_MENU_WINDOW_PARAMS_4 +MAIN_MENU_WINDOW_PARAMS_4: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233B558 +ov01_0233B558: + .byte 0x04, 0x00, 0x00, 0x00 + .word CreateMainMenus + .word ov01_023316CC + .word ov01_02331784 + .global CONTINUE_CHOICE +CONTINUE_CHOICE: +#ifdef JAPAN + .byte 0x08, 0x04, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x09, 0x04, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .byte 0x0E, 0x04, 0x00, 0x00 +#else + .byte 0xE0, 0x01, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0xE1, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .byte 0xE6, 0x01, 0x00, 0x00 +#endif + .byte 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00 + .global SUBMENU +SUBMENU: + .byte 0x02, 0x00, 0x00, 0x00 +#ifdef JAPAN + .byte 0xDD, 0x03, 0xDE, 0x03, 0x14, 0x00, 0x00, 0x00, 0xFD, 0x03, 0xFE, 0x03 + .byte 0x08, 0x00, 0x00, 0x00, 0xE7, 0x03, 0xE8, 0x03, 0x09, 0x00, 0x00, 0x00, 0xE9, 0x03, 0xEA, 0x03 + .byte 0x18, 0x00, 0x00, 0x00, 0x03, 0x04, 0x04, 0x04, 0x07, 0x00, 0x00, 0x00, 0xE5, 0x03, 0xE6, 0x03 + .byte 0x10, 0x00, 0x00, 0x00, 0xF5, 0x03, 0xF6, 0x03, 0x21, 0x00, 0x00, 0x00, 0x05, 0x04, 0x06, 0x04 +#else + .byte 0xB5, 0x01, 0xB6, 0x01, 0x14, 0x00, 0x00, 0x00, 0xD5, 0x01, 0xD6, 0x01 + .byte 0x08, 0x00, 0x00, 0x00, 0xBF, 0x01, 0xC0, 0x01, 0x09, 0x00, 0x00, 0x00, 0xC1, 0x01, 0xC2, 0x01 + .byte 0x18, 0x00, 0x00, 0x00, 0xDB, 0x01, 0xDC, 0x01, 0x07, 0x00, 0x00, 0x00, 0xBD, 0x01, 0xBE, 0x01 + .byte 0x10, 0x00, 0x00, 0x00, 0xCD, 0x01, 0xCE, 0x01, 0x21, 0x00, 0x00, 0x00, 0xDD, 0x01, 0xDE, 0x01 +#endif + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global MAIN_MENU +MAIN_MENU: + .byte 0x02, 0x00, 0x00, 0x00 +#ifdef JAPAN + .byte 0xDD, 0x03, 0xDE, 0x03 + .byte 0x07, 0x00, 0x00, 0x00, 0xE5, 0x03, 0xE6, 0x03, 0x03, 0x00, 0x00, 0x00, 0xDF, 0x03, 0xE0, 0x03 + .byte 0x1A, 0x00, 0x00, 0x00, 0xE1, 0x03, 0xE2, 0x03, 0x1B, 0x00, 0x00, 0x00, 0xE1, 0x03, 0xE2, 0x03 + .byte 0x0A, 0x00, 0x00, 0x00, 0xEB, 0x03, 0xEC, 0x03, 0x0B, 0x00, 0x00, 0x00, 0xED, 0x03, 0xEE, 0x03 + .byte 0x0C, 0x00, 0x00, 0x00, 0xEF, 0x03, 0xF0, 0x03, 0x0D, 0x00, 0x00, 0x00, 0xE3, 0x03, 0xE4, 0x03 + .byte 0x0E, 0x00, 0x00, 0x00, 0xF1, 0x03, 0xF2, 0x03, 0x0F, 0x00, 0x00, 0x00, 0xF3, 0x03, 0xF4, 0x03 + .byte 0x11, 0x00, 0x00, 0x00, 0xF7, 0x03, 0xF8, 0x03, 0x12, 0x00, 0x00, 0x00, 0xF9, 0x03, 0xFA, 0x03 + .byte 0x13, 0x00, 0x00, 0x00, 0xFB, 0x03, 0xFC, 0x03, 0x19, 0x00, 0x00, 0x00, 0xDB, 0x03, 0xDC, 0x03 + .byte 0x1C, 0x00, 0x00, 0x00, 0x0A, 0x04, 0x0C, 0x04, 0x1D, 0x00, 0x00, 0x00, 0x0B, 0x04, 0x0C, 0x04 + .byte 0x1E, 0x00, 0x00, 0x00, 0x0A, 0x04, 0x0D, 0x04, 0x1F, 0x00, 0x00, 0x00, 0x0B, 0x04, 0x0D, 0x04 +#else + .byte 0xB5, 0x01, 0xB6, 0x01 + .byte 0x07, 0x00, 0x00, 0x00, 0xBD, 0x01, 0xBE, 0x01, 0x03, 0x00, 0x00, 0x00, 0xB7, 0x01, 0xB8, 0x01 + .byte 0x1A, 0x00, 0x00, 0x00, 0xB9, 0x01, 0xBA, 0x01, 0x1B, 0x00, 0x00, 0x00, 0xB9, 0x01, 0xBA, 0x01 + .byte 0x0A, 0x00, 0x00, 0x00, 0xC3, 0x01, 0xC4, 0x01, 0x0B, 0x00, 0x00, 0x00, 0xC5, 0x01, 0xC6, 0x01 + .byte 0x0C, 0x00, 0x00, 0x00, 0xC7, 0x01, 0xC8, 0x01, 0x0D, 0x00, 0x00, 0x00, 0xBB, 0x01, 0xBC, 0x01 + .byte 0x0E, 0x00, 0x00, 0x00, 0xC9, 0x01, 0xCA, 0x01, 0x0F, 0x00, 0x00, 0x00, 0xCB, 0x01, 0xCC, 0x01 + .byte 0x11, 0x00, 0x00, 0x00, 0xCF, 0x01, 0xD0, 0x01, 0x12, 0x00, 0x00, 0x00, 0xD1, 0x01, 0xD2, 0x01 + .byte 0x13, 0x00, 0x00, 0x00, 0xD3, 0x01, 0xD4, 0x01, 0x19, 0x00, 0x00, 0x00, 0xB3, 0x01, 0xB4, 0x01 + .byte 0x1C, 0x00, 0x00, 0x00, 0xE2, 0x01, 0xE4, 0x01, 0x1D, 0x00, 0x00, 0x00, 0xE3, 0x01, 0xE4, 0x01 + .byte 0x1E, 0x00, 0x00, 0x00, 0xE2, 0x01, 0xE5, 0x01, 0x1F, 0x00, 0x00, 0x00, 0xE3, 0x01, 0xE5, 0x01 +#endif + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233B670 +ov01_0233B670: + .byte 0x5B, 0x53, 0x3A, 0x31, 0x33, 0x5D, 0x00, 0x00 + .global ov01_0233B678 +ov01_0233B678: + .byte 0x5B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3A, 0x30, 0x5D, 0x5B, 0x43, 0x4C, 0x55, 0x4D, 0x5F + .byte 0x53, 0x45, 0x54, 0x3A, 0x32, 0x36, 0x5D, 0x5B, 0x43, 0x53, 0x3A, 0x44, 0x5D, 0x5B, 0x73, 0x74 + .byte 0x72, 0x69, 0x6E, 0x67, 0x3A, 0x31, 0x5D, 0x5B, 0x43, 0x52, 0x5D, 0x00 + .global ov01_0233B6A4 +ov01_0233B6A4: + .byte 0x5B, 0x4D, 0x3A, 0x53 +#ifdef JAPAN + .byte 0x33, 0x5D, 0x00, 0x00 +#else + .byte 0x33, 0x5D, 0x5B, 0x53, 0x3A, 0x35, 0x5D, 0x00 +#endif + .global ov01_0233B6B0 +ov01_0233B6B0: + .byte 0x5B, 0x4D, 0x3A, 0x52 +#ifdef JAPAN + .byte 0x37, 0x5D, 0x00, 0x00 +#else + .byte 0x37, 0x5D, 0x5B, 0x53 + .byte 0x3A, 0x35, 0x5D, 0x00 +#endif + .global ov01_0233B6BC +ov01_0233B6BC: + .byte 0x5B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3A, 0x30, 0x5D, 0x5B, 0x43 + .byte 0x4C, 0x55, 0x4D, 0x5F, 0x53, 0x45, 0x54, 0x3A, 0x32, 0x36, 0x5D, 0x5B, 0x43, 0x53, 0x3A, 0x45 + .byte 0x5D, 0x5B, 0x73, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x3A, 0x31, 0x5D, 0x5B, 0x43, 0x52, 0x5D, 0x00 + .byte 0x0D, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x50, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .global ov01_0233B700 +ov01_0233B700: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00 + .global ov01_0233B70C +ov01_0233B70C: + .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .word ov01_023329F8 + .word ov01_02332ACC + .global MAIN_MENU_WINDOW_PARAMS_5 +MAIN_MENU_WINDOW_PARAMS_5: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1C, 0x0E, 0x00, 0xFE, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .global MAIN_MENU_WINDOW_PARAMS_6 +MAIN_MENU_WINDOW_PARAMS_6: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x12, 0x14, 0x04, 0x00, 0xFE, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .global MAIN_MENU_WINDOW_PARAMS_7 +MAIN_MENU_WINDOW_PARAMS_7: + .byte 0x00, 0x00, 0x00, 0x00, 0x18, 0x12, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .global MAIN_MENU_ITEMS_CONFIRM +MAIN_MENU_ITEMS_CONFIRM: +#ifdef JAPAN + .byte 0x21, 0x24, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x22, 0x24, 0x00, 0x00 +#else + .byte 0xF7, 0x01, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xF8, 0x01, 0x00, 0x00 +#endif + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .global CLEAR_MARK_PERFORMANCE_PROGRESS_FLAGS +CLEAR_MARK_PERFORMANCE_PROGRESS_FLAGS: + .byte 0x0C, 0x00, 0x00, 0x00 + .byte 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 + .byte 0x11, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00 + .byte 0x18, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00 + .global ov01_0233B798 +ov01_0233B798: + .byte 0x63, 0x6F, 0x6E, 0x74, 0x69, 0x6E, 0x75, 0x65, 0x20, 0x69, 0x6E, 0x66, 0x6F, 0x20, 0x25, 0x64 + .byte 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x20, 0x25, 0x64, 0x0A + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233B7BC +ov01_0233B7BC: + .byte 0x5B, 0x42, 0x41, 0x52, 0x5D, 0x00, 0x00, 0x00 + .global ov01_0233B7C4 +ov01_0233B7C4: + .byte 0x5B, 0x74, 0x69, 0x6D + .byte 0x65, 0x3A, 0x30, 0x5D, 0x00, 0x00, 0x00, 0x00 + .global MAIN_MENU_WINDOW_PARAMS_8 +MAIN_MENU_WINDOW_PARAMS_8: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1C, 0x00 + .byte 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233B7E0 +ov01_0233B7E0: + .byte 0x04, 0x00, 0x00, 0x00 + .word ov01_023336A0 + .word ov01_02333768 + .word ov01_02333794 + .global MAIN_MENU_WINDOW_PARAMS_9 +MAIN_MENU_WINDOW_PARAMS_9: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00 + .byte 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233B800 +ov01_0233B800: + .byte 0x04, 0x00, 0x00, 0x00 + .word ov01_02333994 + .word ov01_023339F8 + .word ov01_02333A34 + .global MAIN_DEBUG_MENU_ITEMS_1 +MAIN_DEBUG_MENU_ITEMS_1: +#ifdef JAPAN +#define MAIN_DEBUG_MENU_1_OFFSET 0x228 +#else +#define MAIN_DEBUG_MENU_1_OFFSET 0 +#endif + .word 0x1EB + MAIN_DEBUG_MENU_1_OFFSET + .byte 0x02, 0x00, 0x00, 0x00 + .word 0x1EC + MAIN_DEBUG_MENU_1_OFFSET + .byte 0x03, 0x00, 0x00, 0x00 + .word 0x1EE + MAIN_DEBUG_MENU_1_OFFSET + .byte 0x05, 0x00, 0x00, 0x00 + .word 0x1EF + MAIN_DEBUG_MENU_1_OFFSET + .byte 0x06, 0x00, 0x00, 0x00 + .word 0x1F0 + MAIN_DEBUG_MENU_1_OFFSET + .byte 0x07, 0x00, 0x00, 0x00 + .word 0x1F1 + MAIN_DEBUG_MENU_1_OFFSET + .byte 0x08, 0x00, 0x00, 0x00 + .word 0x1F2 + MAIN_DEBUG_MENU_1_OFFSET + .byte 0x09, 0x00, 0x00, 0x00 + .word 0x1F3 + MAIN_DEBUG_MENU_1_OFFSET + .byte 0x0A, 0x00, 0x00, 0x00 + .word 0x1F4 + MAIN_DEBUG_MENU_1_OFFSET + .byte 0x0B, 0x00, 0x00, 0x00 + .word 0x1F5 + MAIN_DEBUG_MENU_1_OFFSET + .byte 0x0C, 0x00, 0x00, 0x00 + .word 0x1F6 + MAIN_DEBUG_MENU_1_OFFSET + .byte 0x0D, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00 + .global MAIN_MENU_WINDOW_PARAMS_10 +MAIN_MENU_WINDOW_PARAMS_10: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00 + .byte 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233B880 +ov01_0233B880: + .byte 0x04, 0x00, 0x00, 0x00 + .word ov01_02333C20 + .word ov01_02333C7C + .word ov01_02333CB8 + .global MAIN_DEBUG_MENU_ITEMS_2 +MAIN_DEBUG_MENU_ITEMS_2: +#if defined(EUROPE) +#define MAIN_DEBUG_MENU_2_OFFSET 2 +#elif defined(JAPAN) +#define MAIN_DEBUG_MENU_2_OFFSET -0x379B +#else +#define MAIN_DEBUG_MENU_2_OFFSET 0 +#endif + .word 0x3C86 + MAIN_DEBUG_MENU_2_OFFSET + .byte 0x01, 0x00, 0x00, 0x00 + .word 0x3C87 + MAIN_DEBUG_MENU_2_OFFSET + .byte 0x02, 0x00, 0x00, 0x00 + .word 0x3C88 + MAIN_DEBUG_MENU_2_OFFSET + .byte 0x03, 0x00, 0x00, 0x00 + .word 0x3C89 + MAIN_DEBUG_MENU_2_OFFSET + .byte 0x04, 0x00, 0x00, 0x00 + .word 0x3C84 + MAIN_DEBUG_MENU_2_OFFSET + .byte 0x06, 0x00, 0x00, 0x00 + .word 0x3C85 + MAIN_DEBUG_MENU_2_OFFSET + .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00 + .global ov01_0233B8C8 +ov01_0233B8C8: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x0C, 0x1C, 0x07, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233B8D8 +ov01_0233B8D8: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1C, 0x14, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233B8E8 +ov01_0233B8E8: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1C, 0x08, 0x01, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233B8F8 +ov01_0233B8F8: +#ifdef JAPAN + .byte 0xDC, 0x3B, 0xDD, 0x3B, 0xDE, 0x3B, 0xDF, 0x3B + .byte 0xE0, 0x3B, 0xE1, 0x3B, 0xE2, 0x3B, 0xE3, 0x3B, 0xE4, 0x3B, 0xE5, 0x3B, 0xE6, 0x3B, 0xE7, 0x3B + .byte 0xE8, 0x3B, 0xE9, 0x3B, 0xEA, 0x3B, 0xEB, 0x3B, 0xEC, 0x3B, 0xED, 0x3B, 0xEE, 0x3B, 0xEF, 0x3B + .byte 0xF0, 0x3B, 0xF1, 0x3B, 0xF2, 0x3B, 0xF3, 0x3B, 0xF4, 0x3B, 0xF5, 0x3B, 0xF6, 0x3B, 0xF7, 0x3B + .byte 0xF8, 0x3B, 0xF9, 0x3B, 0xFA, 0x3B, 0xFB, 0x3B, 0xFC, 0x3B, 0xFD, 0x3B, 0xFE, 0x3B, 0xFF, 0x3B + .byte 0x00, 0x3C, 0x01, 0x3C, 0x02, 0x3C, 0x03, 0x3C, 0x04, 0x3C, 0x05, 0x3C, 0x06, 0x3C, 0x07, 0x3C + .byte 0x08, 0x3C, 0x09, 0x3C, 0x0A, 0x3C, 0x0B, 0x3C, 0x0C, 0x3C, 0x0D, 0x3C, 0x0E, 0x3C, 0x0F, 0x3C + .byte 0x10, 0x3C, 0x11, 0x3C, 0x12, 0x3C, 0x13, 0x3C, 0x14, 0x3C, 0x15, 0x3C, 0x16, 0x3C, 0x17, 0x3C + .byte 0x18, 0x3C, 0x19, 0x3C, 0x1A, 0x3C, 0x1B, 0x3C, 0x1C, 0x3C, 0x1D, 0x3C, 0x1E, 0x3C, 0x1F, 0x3C + .byte 0x20, 0x3C, 0x21, 0x3C, 0x22, 0x3C, 0x23, 0x3C, 0x24, 0x3C, 0x25, 0x3C, 0x26, 0x3C, 0x27, 0x3C + .byte 0x28, 0x3C, 0x29, 0x3C, 0x2A, 0x3C, 0x2B, 0x3C, 0x2C, 0x3C, 0x2D, 0x3C, 0x2E, 0x3C, 0x2F, 0x3C + .byte 0x30, 0x3C, 0x31, 0x3C, 0x32, 0x3C, 0x33, 0x3C, 0x34, 0x3C, 0x35, 0x3C, 0x36, 0x3C, 0x37, 0x3C + .byte 0x38, 0x3C, 0x39, 0x3C, 0x3A, 0x3C, 0x3B, 0x3C, 0x3C, 0x3C, 0x3D, 0x3C, 0x3E, 0x3C, 0x3F, 0x3C + .byte 0x40, 0x3C, 0x41, 0x3C, 0x42, 0x3C, 0x43, 0x3C, 0x44, 0x3C, 0x45, 0x3C, 0x46, 0x3C, 0x47, 0x3C + .byte 0x48, 0x3C, 0x49, 0x3C, 0x4A, 0x3C, 0x4B, 0x3C, 0x4C, 0x3C, 0x4D, 0x3C, 0x4E, 0x3C, 0x4F, 0x3C + .byte 0x50, 0x3C, 0x51, 0x3C, 0x52, 0x3C, 0x53, 0x3C, 0x54, 0x3C, 0x55, 0x3C, 0x56, 0x3C, 0x57, 0x3C + .byte 0x58, 0x3C, 0x59, 0x3C, 0x5A, 0x3C, 0x5B, 0x3C, 0x5C, 0x3C, 0x5D, 0x3C, 0x5E, 0x3C, 0x5F, 0x3C + .byte 0x60, 0x3C, 0x61, 0x3C, 0x62, 0x3C, 0x63, 0x3C, 0x64, 0x3C, 0x65, 0x3C, 0x66, 0x3C, 0x67, 0x3C + .byte 0x68, 0x3C, 0x69, 0x3C, 0x6A, 0x3C, 0x6B, 0x3C, 0x6C, 0x3C, 0x6D, 0x3C, 0x6E, 0x3C, 0x6F, 0x3C + .byte 0x70, 0x3C, 0x71, 0x3C, 0x72, 0x3C, 0x73, 0x3C, 0x74, 0x3C, 0x75, 0x3C, 0x76, 0x3C, 0x77, 0x3C + .byte 0x78, 0x3C, 0x79, 0x3C, 0x7A, 0x3C, 0x7B, 0x3C, 0x7C, 0x3C, 0x7D, 0x3C, 0x7E, 0x3C, 0x7F, 0x3C + .byte 0x80, 0x3C, 0x81, 0x3C, 0x82, 0x3C, 0x83, 0x3C, 0x84, 0x3C, 0x85, 0x3C, 0x86, 0x3C, 0x87, 0x3C + .byte 0x88, 0x3C, 0x89, 0x3C, 0x8A, 0x3C, 0x8B, 0x3C, 0x8C, 0x3C, 0x8D, 0x3C, 0x8E, 0x3C, 0x8F, 0x3C + .byte 0x90, 0x3C, 0x91, 0x3C, 0x92, 0x3C, 0x93, 0x3C, 0x94, 0x3C, 0x95, 0x3C, 0x96, 0x3C, 0x97, 0x3C + .byte 0x98, 0x3C, 0x99, 0x3C, 0x9A, 0x3C, 0x9B, 0x3C, 0x9C, 0x3C, 0x9D, 0x3C, 0x9E, 0x3C, 0x9F, 0x3C + .byte 0xA0, 0x3C, 0xA1, 0x3C, 0xA2, 0x3C, 0xA3, 0x3C, 0xA4, 0x3C, 0xA5, 0x3C, 0xA6, 0x3C, 0xA7, 0x3C + .byte 0xA8, 0x3C, 0xA9, 0x3C, 0xAA, 0x3C, 0xAB, 0x3C, 0xAC, 0x3C, 0xAD, 0x3C, 0xAE, 0x3C, 0xAF, 0x3C + .byte 0xB0, 0x3C, 0xB1, 0x3C, 0xB2, 0x3C, 0xB3, 0x3C, 0xB4, 0x3C, 0xB5, 0x3C, 0xB6, 0x3C, 0xB7, 0x3C + .byte 0xB8, 0x3C, 0xB9, 0x3C, 0xBA, 0x3C, 0xBB, 0x3C, 0xBC, 0x3C, 0xBD, 0x3C, 0xBE, 0x3C, 0xBF, 0x3C + .byte 0xC0, 0x3C, 0xC1, 0x3C, 0xC2, 0x3C, 0xC3, 0x3C, 0xC4, 0x3C, 0xC5, 0x3C, 0xC6, 0x3C, 0xC7, 0x3C + .byte 0xC8, 0x3C, 0xC9, 0x3C, 0xCA, 0x3C, 0xCB, 0x3C, 0xCC, 0x3C, 0xCD, 0x3C, 0xCE, 0x3C, 0xCF, 0x3C + .byte 0xD0, 0x3C, 0xD1, 0x3C, 0xD2, 0x3C, 0xD3, 0x3C, 0xD4, 0x3C, 0xD5, 0x3C, 0xD6, 0x3C, 0xD7, 0x3C +#else + .byte 0x01, 0x00, 0x02, 0x00, 0x03, 0x00, 0x04, 0x00, 0x05, 0x00, 0x06, 0x00, 0x07, 0x00, 0x08, 0x00 + .byte 0x09, 0x00, 0x0A, 0x00, 0x0B, 0x00, 0x0C, 0x00, 0x0D, 0x00, 0x0E, 0x00, 0x0F, 0x00, 0x10, 0x00 + .byte 0x11, 0x00, 0x12, 0x00, 0x13, 0x00, 0x14, 0x00, 0x15, 0x00, 0x16, 0x00, 0x17, 0x00, 0x18, 0x00 + .byte 0x19, 0x00, 0x1A, 0x00, 0x1B, 0x00, 0x1C, 0x00, 0x1D, 0x00, 0x1E, 0x00, 0x1F, 0x00, 0x20, 0x00 + .byte 0x21, 0x00, 0x22, 0x00, 0x23, 0x00, 0x24, 0x00, 0x25, 0x00, 0x26, 0x00, 0x27, 0x00, 0x28, 0x00 + .byte 0x29, 0x00, 0x2A, 0x00, 0x2B, 0x00, 0x2C, 0x00, 0x2D, 0x00, 0x2E, 0x00, 0x2F, 0x00, 0x30, 0x00 + .byte 0x31, 0x00, 0x32, 0x00, 0x33, 0x00, 0x34, 0x00, 0x35, 0x00, 0x36, 0x00, 0x37, 0x00, 0x38, 0x00 + .byte 0x39, 0x00, 0x3A, 0x00, 0x3B, 0x00, 0x3C, 0x00, 0x3D, 0x00, 0x3E, 0x00, 0x3F, 0x00, 0x40, 0x00 + .byte 0x41, 0x00, 0x42, 0x00, 0x43, 0x00, 0x44, 0x00, 0x45, 0x00, 0x46, 0x00, 0x47, 0x00, 0x48, 0x00 + .byte 0x49, 0x00, 0x4A, 0x00, 0x4B, 0x00, 0x4C, 0x00, 0x4D, 0x00, 0x4E, 0x00, 0x4F, 0x00, 0x50, 0x00 + .byte 0x51, 0x00, 0x52, 0x00, 0x53, 0x00, 0x54, 0x00, 0x55, 0x00, 0x56, 0x00, 0x57, 0x00, 0x58, 0x00 + .byte 0x59, 0x00, 0x5A, 0x00, 0x5B, 0x00, 0x5C, 0x00, 0x5D, 0x00, 0x5E, 0x00, 0x5F, 0x00, 0x60, 0x00 + .byte 0x61, 0x00, 0x62, 0x00, 0x63, 0x00, 0x64, 0x00, 0x65, 0x00, 0x66, 0x00, 0x67, 0x00, 0x68, 0x00 + .byte 0x69, 0x00, 0x6A, 0x00, 0x6B, 0x00, 0x6C, 0x00, 0x6D, 0x00, 0x6E, 0x00, 0x6F, 0x00, 0x70, 0x00 + .byte 0x71, 0x00, 0x72, 0x00, 0x73, 0x00, 0x74, 0x00, 0x75, 0x00, 0x76, 0x00, 0x77, 0x00, 0x78, 0x00 + .byte 0x79, 0x00, 0x7A, 0x00, 0x7B, 0x00, 0x7C, 0x00, 0x7D, 0x00, 0x7E, 0x00, 0x7F, 0x00, 0x80, 0x00 + .byte 0x81, 0x00, 0x82, 0x00, 0x83, 0x00, 0x84, 0x00, 0x85, 0x00, 0x86, 0x00, 0x87, 0x00, 0x88, 0x00 + .byte 0x89, 0x00, 0x8A, 0x00, 0x8B, 0x00, 0x8C, 0x00, 0x8D, 0x00, 0x8E, 0x00, 0x8F, 0x00, 0x90, 0x00 + .byte 0x91, 0x00, 0x92, 0x00, 0x93, 0x00, 0x94, 0x00, 0x95, 0x00, 0x96, 0x00, 0x97, 0x00, 0x98, 0x00 + .byte 0x99, 0x00, 0x9A, 0x00, 0x9B, 0x00, 0x9C, 0x00, 0x9D, 0x00, 0x9E, 0x00, 0x9F, 0x00, 0xA0, 0x00 + .byte 0xA1, 0x00, 0xA2, 0x00, 0xA3, 0x00, 0xA4, 0x00, 0xA5, 0x00, 0xA6, 0x00, 0xA7, 0x00, 0xA8, 0x00 + .byte 0xA9, 0x00, 0xAA, 0x00, 0xAB, 0x00, 0xAC, 0x00, 0xAD, 0x00, 0xAE, 0x00, 0xAF, 0x00, 0xB0, 0x00 + .byte 0xB1, 0x00, 0xB2, 0x00, 0xB3, 0x00, 0xB4, 0x00, 0xB5, 0x00, 0xB6, 0x00, 0xB7, 0x00, 0xB8, 0x00 + .byte 0xB9, 0x00, 0xBA, 0x00, 0xBB, 0x00, 0xBC, 0x00, 0xBD, 0x00, 0xBE, 0x00, 0xBF, 0x00, 0xC0, 0x00 + .byte 0xC1, 0x00, 0xC2, 0x00, 0xC3, 0x00, 0xC4, 0x00, 0xC5, 0x00, 0xC6, 0x00, 0xC7, 0x00, 0xC8, 0x00 + .byte 0xC9, 0x00, 0xCA, 0x00, 0xCB, 0x00, 0xCC, 0x00, 0xCD, 0x00, 0xCE, 0x00, 0xCF, 0x00, 0xD0, 0x00 + .byte 0xD1, 0x00, 0xD2, 0x00, 0xD3, 0x00, 0xD4, 0x00, 0xD5, 0x00, 0xD6, 0x00, 0xD7, 0x00, 0xD8, 0x00 + .byte 0xD9, 0x00, 0xDA, 0x00, 0xDB, 0x00, 0xDC, 0x00, 0xDD, 0x00, 0xDE, 0x00, 0xDF, 0x00, 0xE0, 0x00 + .byte 0xE1, 0x00, 0xE2, 0x00, 0xE3, 0x00, 0xE4, 0x00, 0xE5, 0x00, 0xE6, 0x00, 0xE7, 0x00, 0xE8, 0x00 + .byte 0xE9, 0x00, 0xEA, 0x00, 0xEB, 0x00, 0xEC, 0x00, 0xED, 0x00, 0xEE, 0x00, 0xEF, 0x00, 0xF0, 0x00 + .byte 0xF1, 0x00, 0xF2, 0x00, 0xF3, 0x00, 0xF4, 0x00, 0xF5, 0x00, 0xF6, 0x00, 0xF7, 0x00, 0xF8, 0x00 + .byte 0xF9, 0x00, 0xFA, 0x00, 0xFB, 0x00, 0xFC, 0x00 +#endif + .global ov01_0233BAF0 +ov01_0233BAF0: + .byte 0x25, 0x73, 0x00, 0x00 + .global ov01_0233BAF4 +ov01_0233BAF4: + .byte 0x5B, 0x43, 0x53, 0x3A + .byte 0x57, 0x5D, 0x25, 0x73, 0x5B, 0x43, 0x52, 0x5D, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233BB04 +ov01_0233BB04: + .byte 0x5B, 0x4D, 0x3A, 0x54 + .byte 0x32, 0x5D, 0x00, 0x00 + .global ov01_0233BB0C +ov01_0233BB0C: + .byte 0x5B, 0x4D, 0x3A, 0x54, 0x33, 0x5D, 0x00, 0x00 + .global ov01_0233BB14 +ov01_0233BB14: + .byte 0x00, 0x80, 0xFF, 0xFF + .global ov01_0233BB18 +ov01_0233BB18: + .byte 0x00, 0x00, 0x00, 0x00, 0x05, 0x03, 0x16, 0x03, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233BB28 +ov01_0233BB28: + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .global ov01_0233BB38 +ov01_0233BB38: + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00 + .global ov01_0233BB48 +ov01_0233BB48: + .byte 0x00, 0x00, 0x00, 0x00, 0x0C, 0x03, 0x07, 0x03, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233BB58 +ov01_0233BB58: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x1C, 0x0C, 0x01, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233BB68 +ov01_0233BB68: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x0A, 0x1C, 0x04, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233BB78 +ov01_0233BB78: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x10, 0x1C, 0x06, 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233BB88 +ov01_0233BB88: +#ifdef JAPAN + .byte 0xE7, 0x3C, 0xE8, 0x3C, 0xE9, 0x3C, 0xEA, 0x3C + .byte 0xEB, 0x3C, 0xEC, 0x3C, 0xED, 0x3C, 0xEE, 0x3C, 0xEF, 0x3C, 0xF0, 0x3C, 0xF1, 0x3C + .global ov01_0233BB9E +ov01_0233BB9E: + .byte 0xE7, 0x3C + .byte 0xE8, 0x3C, 0xE9, 0x3C, 0xEA, 0x3C, 0xEB, 0x3C, 0xEC, 0x3C, 0xED, 0x3C, 0xEE, 0x3C, 0xEF, 0x3C + .byte 0xF0, 0x3C, 0xF1, 0x3C + .global ov01_0233BBB4 +ov01_0233BBB4: + .byte 0xE7, 0x3C, 0xE8, 0x3C, 0xE9, 0x3C, 0xEA, 0x3C, 0xEB, 0x3C, 0xEC, 0x3C + .byte 0xED, 0x3C, 0xEE, 0x3C, 0xEF, 0x3C, 0xF0, 0x3C, 0xF1, 0x3C + .global ov01_0233BBCA +ov01_0233BBCA: + .byte 0xE7, 0x3C, 0xE8, 0x3C, 0xE9, 0x3C + .byte 0xEA, 0x3C, 0xEB, 0x3C, 0xEC, 0x3C, 0xED, 0x3C, 0xEE, 0x3C, 0xEF, 0x3C, 0xF0, 0x3C, 0xE5, 0x3C + .byte 0xE6, 0x3C, 0x00, 0x00 +#else + .byte 0x0C, 0x01, 0x0D, 0x01, 0x0E, 0x01, 0x0F, 0x01, 0x10, 0x01, 0x11, 0x01, 0x12, 0x01, 0x13, 0x01 + .byte 0x14, 0x01, 0x15, 0x01, 0x16, 0x01 + .global ov01_0233BB9E +ov01_0233BB9E: + .byte 0x0C, 0x01, 0x0D, 0x01, 0x0E, 0x01, 0x0F, 0x01, 0x10, 0x01 + .byte 0x11, 0x01, 0x12, 0x01, 0x13, 0x01, 0x14, 0x01, 0x15, 0x01, 0x16, 0x01 + .global ov01_0233BBB4 +ov01_0233BBB4: + .byte 0x0C, 0x01, 0x0D, 0x01 + .byte 0x0E, 0x01, 0x0F, 0x01, 0x10, 0x01, 0x11, 0x01, 0x12, 0x01, 0x13, 0x01, 0x14, 0x01, 0x15, 0x01 + .byte 0x16, 0x01 + .global ov01_0233BBCA +ov01_0233BBCA: + .byte 0x0C, 0x01, 0x0D, 0x01, 0x0E, 0x01, 0x0F, 0x01, 0x10, 0x01, 0x11, 0x01, 0x12, 0x01 + .byte 0x13, 0x01, 0x14, 0x01, 0x15, 0x01, 0x0A, 0x01, 0x0B, 0x01, 0x00, 0x00 +#endif + .global ov01_0233BBE4 +ov01_0233BBE4: + .byte 0x0C, 0x00, 0x00, 0x00 + .byte 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 + .byte 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 + .byte 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00 + .global ov01_0233BC14 +ov01_0233BC14: + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .byte 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .global ov01_0233BC44 +ov01_0233BC44: + .byte 0x0C, 0x00, 0x00, 0x00 + .byte 0x0D, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x0F, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00 + .byte 0x11, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00 + .byte 0x15, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00 + .global ov01_0233BC74 +ov01_0233BC74: + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00 + .byte 0x05, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00 + .byte 0x09, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x00 + .global ov01_0233BCA4 +ov01_0233BCA4: + .byte 0x0C, 0x0C, 0x0C, 0x04 + .byte 0x04, 0x00, 0x00, 0x00 + .global ov01_0233BCAC +ov01_0233BCAC: + .byte 0x04, 0x00, 0x00, 0x00 + .word ov01_023371DC + .word ov01_02337210 + .word ov01_0233723C + .global ov01_0233BCBC +ov01_0233BCBC: + .byte 0x06, 0x00, 0x00, 0x00 + .word ov03_0233CB08 + .word ov03_0233CF9C + .word ov03_0233CB94 + .global ov01_0233BCCC +ov01_0233BCCC: + .byte 0x07, 0x00, 0x00, 0x00 + .word ov06_0233D51C + .word ov06_0233DCC0 + .word ov06_0233D5A4 + .global ov01_0233BCDC +ov01_0233BCDC: + .byte 0x07, 0x00, 0x00, 0x00 + .word ov06_0233E958 + .word ov06_0233ECCC + .word ov06_0233EA1C + .global ov01_0233BCEC +ov01_0233BCEC: + .byte 0x08, 0x00, 0x00, 0x00 + .word ov04_0233CBB8 + .word ov04_0233D1A0 + .word ov04_0233CC4C + .global ov01_0233BCFC +ov01_0233BCFC: + .byte 0x09, 0x00, 0x00, 0x00 + .word ov05_0233CB9C + .word ov05_0233D398 + .word ov05_0233CC10 + .global ov01_0233BD0C +ov01_0233BD0C: + .byte 0x0A, 0x00, 0x00, 0x00 + .word ov07_0233F6E0 + .word ov07_0233FCD8 + .word ov07_0233F758 + .global ov01_0233BD1C +ov01_0233BD1C: +#if defined(EUROPE) + .byte 0xD8, 0x36, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xD9, 0x36, 0x00, 0x00 +#elif defined(JAPAN) + .byte 0x58, 0x33, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x59, 0x33, 0x00, 0x00 +#else + .byte 0xD6, 0x36, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xD7, 0x36, 0x00, 0x00 +#endif + .byte 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF + .global ov01_0233BD34 +ov01_0233BD34: + .byte 0x57, 0x69, 0x72, 0x65 + .byte 0x6C, 0x65, 0x73, 0x73, 0x20, 0x43, 0x61, 0x6E, 0x63, 0x65, 0x6C, 0x0A, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233BD48 +ov01_0233BD48: + .byte 0x57, 0x69, 0x72, 0x65, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x53, 0x6C, 0x65, 0x65, 0x70, 0x20, 0x45 + .byte 0x6E, 0x64, 0x0A, 0x00 + .global ov01_0233BD5C +ov01_0233BD5C: + .byte 0x57, 0x69, 0x72, 0x65, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x54, 0x69, 0x6D + .byte 0x65, 0x6F, 0x75, 0x74, 0x0A, 0x00, 0x00, 0x00 + .global ov01_0233BD70 +ov01_0233BD70: + .byte 0x57, 0x69, 0x72, 0x65, 0x6C, 0x65, 0x73, 0x73 + .byte 0x20, 0x43, 0x6F, 0x6D, 0x6D, 0x75, 0x6E, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x45 + .byte 0x72, 0x72, 0x6F, 0x72, 0x0A, 0x00, 0x00, 0x00 + .global ov01_0233BD90 +ov01_0233BD90: + .byte 0x57, 0x69, 0x72, 0x65, 0x6C, 0x65, 0x73, 0x73 + .byte 0x20, 0x44, 0x69, 0x66, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x74, 0x20, 0x4D, 0x6F, 0x64, 0x65, 0x0A + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233BDAC +ov01_0233BDAC: + .byte 0x57, 0x69, 0x72, 0x65, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x43, 0x68, 0x65 + .byte 0x63, 0x6B, 0x20, 0x53, 0x75, 0x6D, 0x20, 0x45, 0x72, 0x72, 0x6F, 0x72, 0x0A, 0x00, 0x00, 0x00 + .global ov01_0233BDC8 +ov01_0233BDC8: + .byte 0x57, 0x69, 0x72, 0x65, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x45, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6E + .byte 0x67, 0x0A, 0x00, 0x00 + .global ov01_0233BDDC +ov01_0233BDDC: + .byte 0x57, 0x69, 0x72, 0x65, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x43, 0x6F, 0x72 + .byte 0x72, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233BDF4 +ov01_0233BDF4: + .byte 0x57, 0x69, 0x72, 0x65 + .byte 0x6C, 0x65, 0x73, 0x73, 0x20, 0x49, 0x6C, 0x6C, 0x65, 0x67, 0x61, 0x6C, 0x20, 0x44, 0x61, 0x74 + .byte 0x61, 0x0A, 0x20, 0x00 + .global ov01_0233BE0C +ov01_0233BE0C: + .byte 0x57, 0x69, 0x72, 0x65, 0x6C, 0x65, 0x73, 0x73, 0x20, 0x4F, 0x74, 0x68 + .byte 0x65, 0x72, 0x20, 0x45, 0x72, 0x72, 0x6F, 0x72, 0x0A, 0x00, 0x00, 0x00 + .global ov01_0233BE24 +ov01_0233BE24: + .byte 0x3D, 0x3D, 0x3D, 0x3D + .byte 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x20, 0x46, 0x49, 0x4E, 0x49, 0x53, 0x48, 0x20 + .byte 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x0A, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233BE48 +ov01_0233BE48: + .byte 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x20, 0x45, 0x20, 0x72, 0x20 + .byte 0x72, 0x20, 0x6F, 0x20, 0x72, 0x20, 0x21, 0x20, 0x21, 0x20, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x3D + .byte 0x3D, 0x3D, 0x3D, 0x3D, 0x3D, 0x0A, 0x00, 0x00 + .global ov01_0233BE70 +ov01_0233BE70: +#if defined(EUROPE) + .byte 0x5C, 0x37, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x5D, 0x37, 0x00, 0x00 +#elif defined(JAPAN) + .byte 0xDC, 0x33, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0xDD, 0x33, 0x00, 0x00 +#else + .byte 0x5A, 0x37, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .byte 0x5B, 0x37, 0x00, 0x00 +#endif + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF + .global ov01_0233BE88 +ov01_0233BE88: + .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x2F, 0x73, 0x65, 0x74, 0x50 + .byte 0x72, 0x6F, 0x66, 0x69, 0x6C, 0x65, 0x2E, 0x61, 0x73, 0x70, 0x00, 0x00 + .global ov01_0233BEA4 +ov01_0233BEA4: + .byte 0x2F, 0x77, 0x65, 0x62 + .byte 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x52, 0x65 + .byte 0x67, 0x69, 0x73, 0x74, 0x2E, 0x61, 0x73, 0x70, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233BEC4 +ov01_0233BEC4: + .byte 0x2F, 0x77, 0x65, 0x62 + .byte 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x4C, 0x69 + .byte 0x73, 0x74, 0x2E, 0x61, 0x73, 0x70, 0x00, 0x00 + .global ov01_0233BEE0 +ov01_0233BEE0: + .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x72, 0x65, 0x73 + .byte 0x63, 0x75, 0x65, 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x45, 0x78, 0x69, 0x73, 0x74, 0x2E + .byte 0x61, 0x73, 0x70, 0x00 + .global ov01_0233BEFC +ov01_0233BEFC: + .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x2F + .byte 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x45, 0x6E, 0x74, 0x72, 0x79, 0x2E, 0x61, 0x73, 0x70, 0x00 + .global ov01_0233BF18 +ov01_0233BF18: + .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x2F, 0x72, 0x65, 0x73, 0x63 + .byte 0x75, 0x65, 0x43, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x2E, 0x61, 0x73, 0x70, 0x00, 0x00 + .global ov01_0233BF38 +ov01_0233BF38: + .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x2F, 0x72, 0x65, 0x73, 0x63 + .byte 0x75, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6B, 0x2E, 0x61, 0x73, 0x70, 0x00 + .global ov01_0233BF54 +ov01_0233BF54: + .byte 0x2F, 0x77, 0x65, 0x62 + .byte 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x54, 0x68 + .byte 0x61, 0x6E, 0x6B, 0x73, 0x2E, 0x61, 0x73, 0x70, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233BF74 +ov01_0233BF74: + .byte 0x2F, 0x77, 0x65, 0x62 + .byte 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x2F, 0x72, 0x65, 0x73, 0x63, 0x75, 0x65, 0x52, 0x65 + .byte 0x63, 0x65, 0x69, 0x76, 0x65, 0x2E, 0x61, 0x73, 0x70, 0x00, 0x00, 0x00 + .global ov01_0233BF94 +ov01_0233BF94: + .byte 0x2F, 0x77, 0x65, 0x62 + .byte 0x2F, 0x74, 0x65, 0x61, 0x6D, 0x2F, 0x74, 0x65, 0x61, 0x6D, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74 + .byte 0x2E, 0x61, 0x73, 0x70, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233BFB0 +ov01_0233BFB0: + .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x74, 0x65, 0x61 + .byte 0x6D, 0x2F, 0x74, 0x65, 0x61, 0x6D, 0x4C, 0x69, 0x73, 0x74, 0x2E, 0x61, 0x73, 0x70, 0x00, 0x00 + .global ov01_0233BFC8 +ov01_0233BFC8: + .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x74, 0x65, 0x61, 0x6D, 0x2F, 0x74, 0x65, 0x61, 0x6D, 0x45, 0x78 + .byte 0x69, 0x73, 0x74, 0x2E, 0x61, 0x73, 0x70, 0x00 + .global ov01_0233BFE0 +ov01_0233BFE0: + .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x74, 0x65, 0x61 + .byte 0x6D, 0x2F, 0x74, 0x65, 0x61, 0x6D, 0x45, 0x6E, 0x74, 0x72, 0x79, 0x2E, 0x61, 0x73, 0x70, 0x00 + .global ov01_0233BFF8 +ov01_0233BFF8: + .byte 0x2F, 0x77, 0x65, 0x62, 0x2F, 0x63, 0x6F, 0x6D, 0x6D, 0x6F, 0x6E, 0x2F, 0x61, 0x64, 0x6D, 0x69 + .byte 0x6E, 0x47, 0x65, 0x74, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x65, 0x2E + .byte 0x61, 0x73, 0x70, 0x00 + .global ov01_0233C01C +ov01_0233C01C: + .byte 0x43, 0x6F, 0x6E, 0x6E, 0x65, 0x63, 0x74, 0x69, 0x6E, 0x67, 0x20, 0x74 + .byte 0x6F, 0x20, 0x25, 0x73, 0x0A, 0x00, 0x00, 0x00 + .global ov01_0233C030 +ov01_0233C030: + .byte 0x70, 0x69, 0x64, 0x3A, 0x20, 0x25, 0x64, 0x0A + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C03C +ov01_0233C03C: + .byte 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x20, 0x73, 0x69, 0x7A, 0x65 + .byte 0x3A, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C050 +ov01_0233C050: + .byte 0x53, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20 + .byte 0x45, 0x72, 0x72, 0x6F, 0x72, 0x3A, 0x20, 0x25, 0x64, 0x20, 0x25, 0x73, 0x0A, 0x00, 0x00, 0x00 + .global ov01_0233C068 +ov01_0233C068: + .byte 0x53, 0x65, 0x73, 0x73, 0x69, 0x6F, 0x6E, 0x20, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x20 + .byte 0x54, 0x69, 0x6D, 0x65, 0x4F, 0x75, 0x74, 0x2E, 0x20, 0x25, 0x64, 0x0A, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C088 +ov01_0233C088: + .byte 0x55, 0x6E, 0x6B, 0x6E, 0x6F, 0x77, 0x6E, 0x20, 0x45, 0x72, 0x72, 0x6F, 0x72, 0x20, 0x43, 0x6F + .byte 0x64, 0x65, 0x20, 0x3A, 0x20, 0x25, 0x30, 0x35, 0x64, 0x0A, 0x00, 0x00 + .global ov01_0233C0A4 +ov01_0233C0A4: + .byte 0x04, 0x00, 0x00, 0x00 + .word ov01_0233ADEC + .byte 0x00, 0x00, 0x00, 0x00 + .word ov01_0233AE04 + + .data + .global ov01_0233C0C0 +ov01_0233C0C0: + .byte 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 + .global ov01_0233C0D8 +ov01_0233C0D8: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C0E0 +ov01_0233C0E0: +#if defined(EUROPE) + .byte 0xAC, 0x01, 0x80, 0x00 + .byte 0xAD, 0x01, 0x80, 0x00, 0xAE, 0x01, 0x80, 0x00, 0xAF, 0x01, 0x80, 0x00, 0xB0, 0x01, 0x80, 0x00 + .byte 0xAC, 0x01, 0x80, 0x00, 0xAD, 0x01, 0x80, 0x00, 0xAE, 0x01, 0x80, 0x00, 0xAF, 0x01, 0x80, 0x00 + .byte 0xB0, 0x01, 0x80, 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 +#elif defined(JAPAN) + .byte 0x85, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x77, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +#else + .byte 0x68, 0x05, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x39, 0x09, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +#endif + .global ov01_0233C100 +ov01_0233C100: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0xC8, 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, 0x01, 0x00, 0x00, 0x01, 0x20, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C140 +ov01_0233C140: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C144 +ov01_0233C144: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C148 +ov01_0233C148: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C14C +ov01_0233C14C: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C150 +ov01_0233C150: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C158 +ov01_0233C158: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C15C +ov01_0233C15C: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C160 +ov01_0233C160: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C164 +ov01_0233C164: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C168 +ov01_0233C168: + .word ov01_0233B0B8 + .word ov01_0233B0CC + .word ov01_0233B0A4 + .global ov01_0233C174 +ov01_0233C174: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C178 +ov01_0233C178: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C184 +ov01_0233C184: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C188 +ov01_0233C188: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C190 +ov01_0233C190: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C198 +ov01_0233C198: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C1A0 +ov01_0233C1A0: + .word ov01_0233B8F8 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C1A8 +ov01_0233C1A8: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C1AC +ov01_0233C1AC: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C1B0 +ov01_0233C1B0: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C1B4 +ov01_0233C1B4: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C1B8 +ov01_0233C1B8: + .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 + .global ov01_0233C1D4 +ov01_0233C1D4: + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C1DC +ov01_0233C1DC: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C1E0 +ov01_0233C1E0: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C1E8 +ov01_0233C1E8: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C1F4 +ov01_0233C1F4: + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C1F8 +ov01_0233C1F8: + .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 + .global ov01_0233C210 +ov01_0233C210: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .global ov01_0233C21C +ov01_0233C21C: + .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 + + .bss + .global ov01_0233C240 +ov01_0233C240: + .space 0x80 + .global ov01_0233C2C0 +ov01_0233C2C0: + .space 0x40 + .global ov01_0233C300 +ov01_0233C300: + .space 0x80 + .global ov01_0233C380 +ov01_0233C380: + .space 0x200 + .global ov01_0233C580 +ov01_0233C580: + .space 0x200 + .global ov01_0233C780 +ov01_0233C780: + .space 0x4 + .global ov01_0233C784 +ov01_0233C784: + .space 0x7C + .global ov01_0233C800 +ov01_0233C800: + .space 0x7C + .global ov01_0233C87C +ov01_0233C87C: + .space 0x4 + .global ov01_0233C880 +ov01_0233C880: + .space 0x7C + .global ov01_0233C8FC +ov01_0233C8FC: + .space 0x7C + .global ov01_0233C978 +ov01_0233C978: + .space 0x7C + .global ov01_0233C9F4 +ov01_0233C9F4: + .space 0x7C + .global ov01_0233CA70 +ov01_0233CA70: + .space 0x8 + .global ov01_0233CA78 +ov01_0233CA78: + .space 0x4 + .global ov01_0233CA7C +ov01_0233CA7C: + .space 0x4 diff --git a/asm/overlay_04.s b/asm/overlay_04_0233CAF8.s similarity index 97% rename from asm/overlay_04.s rename to asm/overlay_04_0233CAF8.s index 4c668c63..6f0afa31 100644 --- a/asm/overlay_04.s +++ b/asm/overlay_04_0233CAF8.s @@ -1,73 +1,8 @@ .include "asm/macros.inc" - .include "overlay_04.inc" + .include "overlay_04_0233CAF8.inc" .text - arm_func_start ov04_0233CA80 -ov04_0233CA80: ; 0x0233CA80 - ldr ip, _0233CA90 ; =MemZero - ldr r0, _0233CA94 ; =ov04_0233F660 - mov r1, #0x10 - bx ip - .align 2, 0 -_0233CA90: .word MemZero -_0233CA94: .word ov04_0233F660 - arm_func_end ov04_0233CA80 - - arm_func_start ov04_0233CA98 -ov04_0233CA98: ; 0x0233CA98 - ldr r1, _0233CAA4 ; =ov04_0233F660 - str r0, [r1] - bx lr - .align 2, 0 -_0233CAA4: .word ov04_0233F660 - arm_func_end ov04_0233CA98 - - arm_func_start ov04_0233CAA8 -ov04_0233CAA8: ; 0x0233CAA8 - ldr r0, _0233CAB4 ; =ov04_0233F660 - ldr r0, [r0] - bx lr - .align 2, 0 -_0233CAB4: .word ov04_0233F660 - arm_func_end ov04_0233CAA8 - - arm_func_start ov04_0233CAB8 -ov04_0233CAB8: ; 0x0233CAB8 - ldr r1, _0233CAC4 ; =ov04_0233F660 - str r0, [r1, #4] - bx lr - .align 2, 0 -_0233CAC4: .word ov04_0233F660 - arm_func_end ov04_0233CAB8 - - arm_func_start ov04_0233CAC8 -ov04_0233CAC8: ; 0x0233CAC8 - ldr r0, _0233CAD4 ; =ov04_0233F660 - ldr r0, [r0, #4] - bx lr - .align 2, 0 -_0233CAD4: .word ov04_0233F660 - arm_func_end ov04_0233CAC8 - - arm_func_start ov04_0233CAD8 -ov04_0233CAD8: ; 0x0233CAD8 - ldr r1, _0233CAE4 ; =ov04_0233F660 - strb r0, [r1, #0xc] - bx lr - .align 2, 0 -_0233CAE4: .word ov04_0233F660 - arm_func_end ov04_0233CAD8 - - arm_func_start ov04_0233CAE8 -ov04_0233CAE8: ; 0x0233CAE8 - ldr r0, _0233CAF4 ; =ov04_0233F660 - ldrb r0, [r0, #0xc] - bx lr - .align 2, 0 -_0233CAF4: .word ov04_0233F660 - arm_func_end ov04_0233CAE8 - arm_func_start ov04_0233CAF8 ov04_0233CAF8: ; 0x0233CAF8 stmdb sp!, {lr} diff --git a/asm/overlay_06.s b/asm/overlay_06_0233CAB8.s similarity index 98% rename from asm/overlay_06.s rename to asm/overlay_06_0233CAB8.s index 75a7f40b..affe582a 100644 --- a/asm/overlay_06.s +++ b/asm/overlay_06_0233CAB8.s @@ -1,37 +1,8 @@ .include "asm/macros.inc" - .include "overlay_06.inc" + .include "overlay_06_0233CAB8.inc" .text - arm_func_start ov06_0233CA80 -ov06_0233CA80: ; 0x0233CA80 - ldr ip, _0233CA90 ; =MemZero - ldr r0, _0233CA94 ; =ov06_0233EEE0 - mov r1, #0xc - bx ip - .align 2, 0 -_0233CA90: .word MemZero -_0233CA94: .word ov06_0233EEE0 - arm_func_end ov06_0233CA80 - - arm_func_start ov06_0233CA98 -ov06_0233CA98: ; 0x0233CA98 - ldr r1, _0233CAA4 ; =ov06_0233EEE0 - str r0, [r1] - bx lr - .align 2, 0 -_0233CAA4: .word ov06_0233EEE0 - arm_func_end ov06_0233CA98 - - arm_func_start ov06_0233CAA8 -ov06_0233CAA8: ; 0x0233CAA8 - ldr r0, _0233CAB4 ; =ov06_0233EEE0 - ldr r0, [r0] - bx lr - .align 2, 0 -_0233CAB4: .word ov06_0233EEE0 - arm_func_end ov06_0233CAA8 - arm_func_start ov06_0233CAB8 ov06_0233CAB8: ; 0x0233CAB8 ldr r1, _0233CAC4 ; =ov06_0233EEE0 diff --git a/asm/overlay_10_022BCC7C.s b/asm/overlay_10_022BCDF4.s similarity index 50% rename from asm/overlay_10_022BCC7C.s rename to asm/overlay_10_022BCDF4.s index 2bc6f77d..81ad3d0e 100644 --- a/asm/overlay_10_022BCC7C.s +++ b/asm/overlay_10_022BCDF4.s @@ -1,143 +1,8 @@ .include "asm/macros.inc" - .include "overlay_10_022BCC7C.inc" + .include "overlay_10_022BCDF4.inc" .text - arm_func_start ov10_022BCC7C -ov10_022BCC7C: ; 0x022BCC7C - stmdb sp!, {r3, lr} - bl GetWindowContents - mov r1, #1 - str r1, [r0, #0x19c] - mov r1, #0 - strb r1, [r0, #0x1a0] - strb r1, [r0, #0x1a1] - ldr r1, [r0, #0xf8] - bic r1, r1, #0x800000 - str r1, [r0, #0xf8] - add r0, r0, #4 - bl sub_020333FC - ldmia sp!, {r3, pc} - arm_func_end ov10_022BCC7C - - arm_func_start ov10_022BCCB0 -ov10_022BCCB0: ; 0x022BCCB0 - stmdb sp!, {r3, lr} - bl GetWindowContents - ldr r1, [r0, #0x19c] - cmp r1, #3 - moveq r1, #2 - streq r1, [r0, #0x19c] - ldmia sp!, {r3, pc} - arm_func_end ov10_022BCCB0 - - arm_func_start SetInventoryMenuState0 -SetInventoryMenuState0: ; 0x022BCCCC - stmdb sp!, {r3, lr} - bl GetWindowContents - mov r1, #0 - str r1, [r0, #0x19c] - ldmia sp!, {r3, pc} - arm_func_end SetInventoryMenuState0 - - arm_func_start SetInventoryMenuState6 -SetInventoryMenuState6: ; 0x022BCCE0 - stmdb sp!, {r3, lr} - bl GetWindowContents - mov r1, #6 - str r1, [r0, #0x19c] - ldmia sp!, {r3, pc} - arm_func_end SetInventoryMenuState6 - - arm_func_start CloseInventoryMenu -CloseInventoryMenu: ; 0x022BCCF4 - stmdb sp!, {r4, lr} - mov r4, r0 - bl GetWindowContents - bl MemFree - mov r0, r4 - bl DeleteWindow - ldmia sp!, {r4, pc} - arm_func_end CloseInventoryMenu - - arm_func_start ov10_022BCD10 -ov10_022BCD10: ; 0x022BCD10 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl GetWindowContents - mov r4, r0 - ldr r0, [r4, #0x19c] - cmp r0, #6 - moveq r0, #1 - ldmeqia sp!, {r3, r4, r5, pc} - cmp r0, #3 - cmpne r0, #8 - movne r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - mov r2, #1 - strb r2, [r4, #0x1a0] - mov r0, r5 - sub r1, r2, #6 - strb r2, [r4, #0x1a1] - bl sub_0202830C - mov r0, #6 - str r0, [r4, #0x19c] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov10_022BCD10 - - arm_func_start IsInventoryMenuActive -IsInventoryMenuActive: ; 0x022BCD68 - stmdb sp!, {r3, lr} - bl GetWindowContents - ldr r0, [r0, #0x19c] - cmp r0, #7 - cmpne r0, #8 - movne r0, #1 - moveq r0, #0 - ldmia sp!, {r3, pc} - arm_func_end IsInventoryMenuActive - - arm_func_start CheckInventoryMenuField0x1A0 -CheckInventoryMenuField0x1A0: ; 0x022BCD88 - stmdb sp!, {r3, lr} - bl GetWindowContents - ldrb r0, [r0, #0x1a0] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end CheckInventoryMenuField0x1A0 - - arm_func_start ov10_022BCDA8 -ov10_022BCDA8: ; 0x022BCDA8 - stmdb sp!, {r3, lr} - bl GetWindowContents - add r0, r0, #4 - bl sub_02033064 - ldmia sp!, {r3, pc} - arm_func_end ov10_022BCDA8 - - arm_func_start ov10_022BCDBC -ov10_022BCDBC: ; 0x022BCDBC - stmdb sp!, {r3, lr} - bl GetWindowContents - ldrb r1, [r0, #0x1a0] - cmp r1, #0 - beq _022BCDEC - ldrb r1, [r0, #0x1a1] - cmp r1, #0 - mvnne r0, #0 - ldmneia sp!, {r3, pc} - add r0, r0, #4 - bl sub_02033064 - ldmia sp!, {r3, pc} -_022BCDEC: - mvn r0, #0 - ldmia sp!, {r3, pc} - arm_func_end ov10_022BCDBC - arm_func_start ov10_022BCDF4 ov10_022BCDF4: ; 0x022BCDF4 stmdb sp!, {r3, r4, r5, lr} @@ -3700,3296 +3565,3 @@ ov10_022BFD20: ; 0x022BFD20 orr r0, r4, r0 ldmia sp!, {r4, pc} arm_func_end ov10_022BFD20 - - arm_func_start ov10_022BFD58 -ov10_022BFD58: ; 0x022BFD58 - stmdb sp!, {r3, lr} - bl GetMoveAnimation - ldrb r0, [r0, #8] - and r0, r0, #7 - ldmia sp!, {r3, pc} - arm_func_end ov10_022BFD58 - - arm_func_start ov10_022BFD6C -ov10_022BFD6C: ; 0x022BFD6C - stmdb sp!, {r3, lr} - bl GetMoveAnimation - ldrb r0, [r0, #8] - tst r0, #8 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov10_022BFD6C - - arm_func_start ov10_022BFD8C -ov10_022BFD8C: ; 0x022BFD8C - stmdb sp!, {r3, lr} - bl GetMoveAnimation - ldrb r0, [r0, #8] - tst r0, #0x10 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov10_022BFD8C - - arm_func_start ov10_022BFDAC -ov10_022BFDAC: ; 0x022BFDAC - stmdb sp!, {r3, lr} - bl GetMoveAnimation - ldrb r0, [r0, #8] - tst r0, #0x20 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov10_022BFDAC - - arm_func_start ov10_022BFDCC -ov10_022BFDCC: ; 0x022BFDCC - stmdb sp!, {r3, lr} - bl GetMoveAnimation - ldrb r0, [r0, #8] - tst r0, #0x40 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov10_022BFDCC - - arm_func_start ov10_022BFDEC -ov10_022BFDEC: ; 0x022BFDEC - cmp r0, #0x65 - ldrne r1, _022BFE08 ; =0x0000010E - cmpne r0, r1 - cmpne r0, #0x1bc - moveq r0, #1 - movne r0, #0 - bx lr - .align 2, 0 -_022BFE08: .word 0x0000010E - arm_func_end ov10_022BFDEC - - arm_func_start ov10_022BFE0C -ov10_022BFE0C: ; 0x022BFE0C - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bx lr - arm_func_end ov10_022BFE0C - - arm_func_start ov10_022BFE18 -ov10_022BFE18: ; 0x022BFE18 - add r0, r0, #0x10c - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bx lr - arm_func_end ov10_022BFE18 - - arm_func_start ov10_022BFE28 -ov10_022BFE28: ; 0x022BFE28 - add r0, r0, #0x22 - add r0, r0, #0x100 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bx lr - arm_func_end ov10_022BFE28 - - arm_func_start ov10_022BFE3C -ov10_022BFE3C: ; 0x022BFE3C - sub r0, r0, #1 - cmp r0, #3 - movls r0, #1 - movhi r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov10_022BFE3C - - arm_func_start ov10_022BFE54 -ov10_022BFE54: ; 0x022BFE54 - sub r0, r0, #5 - cmp r0, #1 - movls r0, #1 - movhi r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end ov10_022BFE54 - - arm_func_start ov10_022BFE6C -ov10_022BFE6C: ; 0x022BFE6C - stmdb sp!, {r4, lr} - mov r4, r0 - bl sub_02001808 - cmp r0, r4 - movge r0, #0 - ldmgeia sp!, {r4, pc} - ldr r1, _022BFE9C ; =ov10_022DC1C0 - mov r0, #1 - ldr r1, [r1] - add r1, r1, #0x2000 - strb r0, [r1, #0x7a0] - ldmia sp!, {r4, pc} - .align 2, 0 -_022BFE9C: .word ov10_022DC1C0 - arm_func_end ov10_022BFE6C - - arm_func_start GetEffectAnimation -GetEffectAnimation: ; 0x022BFEA0 - ldr r2, _022BFEB0 ; =EFFECT_ANIMATION_INFO - mov r1, #0x1c - mla r0, r1, r0, r2 - bx lr - .align 2, 0 -_022BFEB0: .word EFFECT_ANIMATION_INFO - arm_func_end GetEffectAnimation - - arm_func_start GetMoveAnimation -GetMoveAnimation: ; 0x022BFEB4 - ldr r2, _022BFEC4 ; =MOVE_ANIMATION_INFO - mov r1, #0x18 - mla r0, r1, r0, r2 - bx lr - .align 2, 0 -_022BFEC4: .word MOVE_ANIMATION_INFO - arm_func_end GetMoveAnimation - - arm_func_start GetSpecialMonsterMoveAnimation -GetSpecialMonsterMoveAnimation: ; 0x022BFEC8 - ldr r2, _022BFED8 ; =SPECIAL_MONSTER_MOVE_ANIMATION_INFO - mov r1, #6 - mla r0, r1, r0, r2 - bx lr - .align 2, 0 -_022BFED8: .word SPECIAL_MONSTER_MOVE_ANIMATION_INFO - arm_func_end GetSpecialMonsterMoveAnimation - - arm_func_start GetTrapAnimation -GetTrapAnimation: ; 0x022BFEDC - ldr r1, _022BFEEC ; =TRAP_ANIMATION_INFO - mov r0, r0, lsl #1 - ldrsh r0, [r1, r0] - bx lr - .align 2, 0 -_022BFEEC: .word TRAP_ANIMATION_INFO - arm_func_end GetTrapAnimation - - arm_func_start GetItemAnimation1 -GetItemAnimation1: ; 0x022BFEF0 - ldr r1, _022BFF00 ; =ITEM_ANIMATION_INFO - mov r0, r0, lsl #2 - ldrsh r0, [r1, r0] - bx lr - .align 2, 0 -_022BFF00: .word ITEM_ANIMATION_INFO - arm_func_end GetItemAnimation1 - - arm_func_start GetItemAnimation2 -GetItemAnimation2: ; 0x022BFF04 - ldr r1, _022BFF14 ; =ov10_022C7A86 - mov r0, r0, lsl #2 - ldrsh r0, [r1, r0] - bx lr - .align 2, 0 -_022BFF14: .word ov10_022C7A86 - arm_func_end GetItemAnimation2 - - arm_func_start GetMoveAnimationSpeed -GetMoveAnimationSpeed: ; 0x022BFF18 - mov r1, #0x18 - mul r1, r0, r1 - ldr r0, _022BFF2C ; =ov10_022C9070 - ldr r0, [r0, r1] - bx lr - .align 2, 0 -_022BFF2C: .word ov10_022C9070 - arm_func_end GetMoveAnimationSpeed - - arm_func_start ov10_022BFF30 -ov10_022BFF30: ; 0x022BFF30 - stmdb sp!, {r4, lr} - ldr r1, _022BFF74 ; =ov10_022DC1C4 - mov r4, r0 - ldr r0, [r1] - cmp r0, #0 - bne _022BFF64 - mov r0, #0x84 - mov r1, #0xb - bl MemAlloc - ldr r2, _022BFF74 ; =ov10_022DC1C4 - mov r1, #0x84 - str r0, [r2] - bl MemZero -_022BFF64: - ldr r0, _022BFF74 ; =ov10_022DC1C4 - ldr r0, [r0] - str r4, [r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_022BFF74: .word ov10_022DC1C4 - arm_func_end ov10_022BFF30 - - arm_func_start ov10_022BFF78 -ov10_022BFF78: ; 0x022BFF78 - stmdb sp!, {r3, lr} - ldr r0, _022BFFA0 ; =ov10_022DC1C4 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _022BFFA0 ; =ov10_022DC1C4 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022BFFA0: .word ov10_022DC1C4 - arm_func_end ov10_022BFF78 - - arm_func_start ov10_022BFFA4 -ov10_022BFFA4: ; 0x022BFFA4 - stmdb sp!, {r3, lr} - ldr r0, _022BFFFC ; =ov10_022DC1C4 - mov ip, #0 - ldr r1, [r0] - mov r3, ip - str ip, [r1] - mov r1, ip -_022BFFC0: - mov lr, r3 -_022BFFC4: - ldr r2, [r0] - add r2, r2, #4 - add r2, r2, ip, lsl #6 - str r1, [r2, lr, lsl #5] - add r2, r2, lr, lsl #5 - strh r1, [r2, #6] - add lr, lr, #1 - str r1, [r2, #0xc] - cmp lr, #2 - blt _022BFFC4 - add ip, ip, #1 - cmp ip, #2 - blt _022BFFC0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022BFFFC: .word ov10_022DC1C4 - arm_func_end ov10_022BFFA4 - - arm_func_start ov10_022C0000 -ov10_022C0000: ; 0x022C0000 - stmdb sp!, {r3, lr} - ldr r1, _022C0064 ; =ov10_022DC1C4 - mov lr, r0 - ldr r3, [r1] - mov r2, #0 - b _022C0054 -_022C0018: - ldr r0, [lr, #8] - add r1, r3, r0, lsl #6 - add r0, r1, r2, lsl #5 - ldr r0, [r0, #4] - cmp r0, #0 - bne _022C0050 - add r0, r1, r2, lsl #5 - add ip, r0, #4 - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldmia lr, {r0, r1, r2, r3} - stmia ip, {r0, r1, r2, r3} - mov r0, #1 - ldmia sp!, {r3, pc} -_022C0050: - add r2, r2, #1 -_022C0054: - cmp r2, #2 - blt _022C0018 - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022C0064: .word ov10_022DC1C4 - arm_func_end ov10_022C0000 - - arm_func_start ov10_022C0068 -ov10_022C0068: ; 0x022C0068 - stmdb sp!, {r4, lr} - sub sp, sp, #0x20 - mov r4, r1 - cmp r0, #2 - beq _022C0088 - cmp r0, #3 - beq _022C00C8 - b _022C0104 -_022C0088: - mov r1, #0 - sub r0, r1, #1 - mov ip, #5 - mov r3, #0xe - str ip, [sp] - str r2, [sp, #8] - str r3, [sp, #0x10] - str r1, [sp, #0x14] - str r0, [sp, #0x1c] - bl ov10_022BD744 - cmp r0, #1 - moveq r0, #0 - movne r0, #2 - str r0, [sp, #0x18] - strh r4, [sp, #4] - b _022C0104 -_022C00C8: - mov r1, #0 - sub r0, r1, #1 - mov ip, #6 - mov r3, #0xe - str ip, [sp] - str r2, [sp, #8] - str r3, [sp, #0x10] - str r1, [sp, #0x14] - str r0, [sp, #0x1c] - bl ov10_022BD744 - cmp r0, #1 - moveq r0, #0 - movne r0, #2 - str r0, [sp, #0x18] - strh r4, [sp, #4] -_022C0104: - add r0, sp, #0 - bl ov10_022C0000 - add sp, sp, #0x20 - ldmia sp!, {r4, pc} - arm_func_end ov10_022C0068 - - arm_func_start ov10_022C0114 -ov10_022C0114: ; 0x022C0114 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x20 - sub r4, r1, #1 - mov r7, r0 - mov r6, r2 - mov r5, r3 - cmp r4, #1 - ldr r4, [sp, #0x38] - bls _022C01F4 - cmp r7, #0 - beq _022C01F4 - mov r0, r1 - mov r1, r6 - mov r2, r4 - bl ov10_022C067C - mov r8, r0 - mvn r1, #0 - cmp r8, r1 - beq _022C01F4 - sub r1, r1, #1 - cmp r8, r1 - beq _022C01E8 - mov r1, r6 - mov r2, r4 - bl ov10_022C075C - cmp r8, #0 - beq _022C018C - cmp r8, #1 - beq _022C01B8 - b _022C01E0 -_022C018C: - mov r1, #1 - sub r0, r1, #2 - mov r2, #3 - str r2, [sp] - str r4, [sp, #8] - str r1, [sp, #0x10] - str r0, [sp, #0x14] - str r5, [sp, #0x1c] - str r0, [sp, #0x18] - strh r7, [sp, #6] - b _022C01E0 -_022C01B8: - mov r1, #0 - sub r0, r1, #1 - mov r2, #4 - str r2, [sp] - str r4, [sp, #8] - str r1, [sp, #0x10] - str r0, [sp, #0x14] - str r5, [sp, #0x1c] - str r0, [sp, #0x18] - strh r7, [sp, #6] -_022C01E0: - add r0, sp, #0 - bl ov10_022C0000 -_022C01E8: - mov r0, r6 - mov r1, r4 - bl ov10_022C0780 -_022C01F4: - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - arm_func_end ov10_022C0114 - - arm_func_start ov10_022C01FC -ov10_022C01FC: ; 0x022C01FC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r1 - mov r4, r0 - mov r7, r2 - mov r6, r3 - cmp r5, #5 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - bl sub_0206409C - ldr r0, [r0, #8] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r5 - mov r1, r7 - mov r2, r6 - bl ov10_022C067C - mov r5, r0 - mvn r1, #0 - cmp r5, r1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - sub r1, r1, #1 - cmp r5, r1 - beq _022C0270 - mov r1, r7 - mov r2, r6 - bl ov10_022C075C - mov r0, r5 - mov r1, r4 - mov r2, r6 - bl ov10_022C0068 -_022C0270: - mov r0, r7 - mov r1, r6 - bl ov10_022C0780 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov10_022C01FC - - arm_func_start ov10_022C0280 -ov10_022C0280: ; 0x022C0280 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r5, r1 - mov r4, r0 - mov r7, r2 - mov r6, r3 - cmp r5, #6 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - bl sub_0206409C - ldr r0, [r0, #0xc] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r5 - mov r1, r7 - mov r2, r6 - bl ov10_022C067C - mov r5, r0 - mvn r1, #0 - cmp r5, r1 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - sub r1, r1, #1 - cmp r5, r1 - beq _022C02F4 - mov r1, r7 - mov r2, r6 - bl ov10_022C075C - mov r0, r5 - mov r1, r4 - mov r2, r6 - bl ov10_022C0068 -_022C02F4: - mov r0, r7 - mov r1, r6 - bl ov10_022C0780 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov10_022C0280 - - arm_func_start ov10_022C0304 -ov10_022C0304: ; 0x022C0304 - stmdb sp!, {r4, lr} - mov r4, r1 - ldr r0, [r4] - cmp r0, #0 - ldmeqia sp!, {r4, pc} - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _022C0390 -_022C0324: ; jump table - b _022C0390 ; case 0 - b _022C0390 ; case 1 - b _022C0390 ; case 2 - b _022C0340 ; case 3 - b _022C0390 ; case 4 - b _022C034C ; case 5 - b _022C0390 ; case 6 -_022C0340: - mov r0, #0 - strh r0, [r4, #6] - b _022C0390 -_022C034C: - bl ov10_022BD744 - cmp r0, #0 - bne _022C0364 - mov r0, #5 - mov r1, #0 - bl UnkMapRelatedFunc -_022C0364: - ldr r0, [r4] - cmp r0, #0 - beq _022C0390 - ldrsh r0, [r4, #4] - bl sub_0206409C - ldr r0, [r4, #8] - bl ov10_022BDCA4 - mov r2, r0 - ldrsh r0, [r4, #4] - ldr r1, [r4, #0x14] - bl sub_02064014 -_022C0390: - mov r0, #0 - str r0, [r4] - ldmia sp!, {r4, pc} - arm_func_end ov10_022C0304 - - arm_func_start ov10_022C039C -ov10_022C039C: ; 0x022C039C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r4, _022C03F0 ; =ov10_022DC1C4 - ldr r0, [r4] - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - mov r6, #0 - mov r5, r6 -_022C03B8: - mov r7, r5 -_022C03BC: - ldr r2, [r4] - add r0, r2, #4 - add r1, r0, r6, lsl #6 - ldr r0, [r2] - add r1, r1, r7, lsl #5 - bl ov10_022C0304 - add r7, r7, #1 - cmp r7, #2 - blt _022C03BC - add r6, r6, #1 - cmp r6, #2 - blt _022C03B8 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022C03F0: .word ov10_022DC1C4 - arm_func_end ov10_022C039C - - arm_func_start ov10_022C03F4 -ov10_022C03F4: ; 0x022C03F4 - stmdb sp!, {r3, lr} - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _022C042C -_022C0404: ; jump table - b _022C042C ; case 0 - b _022C042C ; case 1 - b _022C042C ; case 2 - b _022C041C ; case 3 - b _022C041C ; case 4 - b _022C042C ; case 5 -_022C041C: - mov r0, r1, lsl #0x10 - mov r0, r0, asr #0x10 - bl ov10_022BFE0C - mov r2, r0 -_022C042C: - mov r1, #0 - ldr r0, _022C044C ; =WAN_TABLE - str r1, [sp] - ldr r0, [r0] - mov r1, #3 - mov r3, #0xf - bl LoadWanTableEntryFromPack - ldmia sp!, {r3, pc} - .align 2, 0 -_022C044C: .word WAN_TABLE - arm_func_end ov10_022C03F4 - - arm_func_start ov10_022C0450 -ov10_022C0450: ; 0x022C0450 - stmdb sp!, {r3, lr} - cmp r0, #6 - mov r2, #0 - addls pc, pc, r0, lsl #2 - b _022C04C4 -_022C0464: ; jump table - b _022C04C4 ; case 0 - b _022C04C4 ; case 1 - b _022C04C4 ; case 2 - b _022C04C4 ; case 3 - b _022C04C4 ; case 4 - b _022C0480 ; case 5 - b _022C04A4 ; case 6 -_022C0480: - mov r0, r1, lsl #0x10 - mov r0, r0, asr #0x10 - bl ov10_022BFE18 - mov r1, r0 - mov r0, #3 - mov r2, #0xf - bl sub_02063FC8 - mov r2, r0 - b _022C04C4 -_022C04A4: - mov r0, r1, lsl #0x10 - mov r0, r0, asr #0x10 - bl ov10_022BFE28 - mov r1, r0 - mov r0, #3 - mov r2, #0xf - bl sub_02063FC8 - mov r2, r0 -_022C04C4: - mov r0, r2 - ldmia sp!, {r3, pc} - arm_func_end ov10_022C0450 - - arm_func_start ov10_022C04CC -ov10_022C04CC: ; 0x022C04CC - ldr ip, _022C04D4 ; =sub_02063FF4 - bx ip - .align 2, 0 -_022C04D4: .word sub_02063FF4 - arm_func_end ov10_022C04CC - - arm_func_start ov10_022C04D8 -ov10_022C04D8: ; 0x022C04D8 - stmdb sp!, {r4, lr} - ldr r0, _022C0558 ; =ov10_022DC1C8 - ldr r0, [r0] - cmp r0, #0 - bne _022C0508 - mov r0, #0x40 - mov r1, #0xb - bl MemAlloc - ldr r2, _022C0558 ; =ov10_022DC1C8 - mov r1, #0x40 - str r0, [r2] - bl MemZero -_022C0508: - mov lr, #0 - ldr r0, _022C0558 ; =ov10_022DC1C8 - mvn r3, #0 - mov r2, lr - mov ip, lr -_022C051C: - mov r4, ip -_022C0520: - ldr r1, [r0] - add r1, r1, lr, lsl #5 - str r3, [r1, r4, lsl #3] - ldr r1, [r0] - add r1, r1, lr, lsl #5 - add r1, r1, r4, lsl #3 - add r4, r4, #1 - str r2, [r1, #4] - cmp r4, #4 - blt _022C0520 - add lr, lr, #1 - cmp lr, #2 - blt _022C051C - ldmia sp!, {r4, pc} - .align 2, 0 -_022C0558: .word ov10_022DC1C8 - arm_func_end ov10_022C04D8 - - arm_func_start ov10_022C055C -ov10_022C055C: ; 0x022C055C - stmdb sp!, {r3, lr} - ldr r0, _022C0584 ; =ov10_022DC1C8 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _022C0584 ; =ov10_022DC1C8 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022C0584: .word ov10_022DC1C8 - arm_func_end ov10_022C055C - - arm_func_start ov10_022C0588 -ov10_022C0588: ; 0x022C0588 - stmdb sp!, {r4, lr} - mov lr, #0 - ldr r0, _022C05DC ; =ov10_022DC1C8 - mvn r3, #0 - mov r2, lr - mov ip, lr -_022C05A0: - mov r4, ip -_022C05A4: - ldr r1, [r0] - add r1, r1, lr, lsl #5 - str r3, [r1, r4, lsl #3] - ldr r1, [r0] - add r1, r1, lr, lsl #5 - add r1, r1, r4, lsl #3 - add r4, r4, #1 - str r2, [r1, #4] - cmp r4, #4 - blt _022C05A4 - add lr, lr, #1 - cmp lr, #2 - blt _022C05A0 - ldmia sp!, {r4, pc} - .align 2, 0 -_022C05DC: .word ov10_022DC1C8 - arm_func_end ov10_022C0588 - - arm_func_start ov10_022C05E0 -ov10_022C05E0: ; 0x022C05E0 - cmp r0, #3 - bne _022C0604 - ldr r0, _022C0678 ; =ov10_022DC1C8 - ldr r0, [r0] - ldr r0, [r0, r2, lsl #5] - cmp r1, r0 - bne _022C0670 - mov r0, #0 - bx lr -_022C0604: - cmp r0, #4 - bne _022C062C - ldr r0, _022C0678 ; =ov10_022DC1C8 - ldr r0, [r0] - add r0, r0, r2, lsl #5 - ldr r0, [r0, #8] - cmp r1, r0 - bne _022C0670 - mov r0, #1 - bx lr -_022C062C: - cmp r0, #6 - bne _022C0654 - ldr r0, _022C0678 ; =ov10_022DC1C8 - ldr r0, [r0] - add r0, r0, r2, lsl #5 - ldr r0, [r0, #0x18] - cmp r1, r0 - bne _022C0670 - mov r0, #3 - bx lr -_022C0654: - ldr r0, _022C0678 ; =ov10_022DC1C8 - ldr r0, [r0] - add r0, r0, r2, lsl #5 - ldr r0, [r0, #0x10] - cmp r1, r0 - moveq r0, #2 - bxeq lr -_022C0670: - mvn r0, #2 - bx lr - .align 2, 0 -_022C0678: .word ov10_022DC1C8 - arm_func_end ov10_022C05E0 - - arm_func_start ov10_022C067C -ov10_022C067C: ; 0x022C067C - cmp r0, #3 - bne _022C06B4 - ldr r0, _022C0758 ; =ov10_022DC1C8 - ldr r3, [r0] - ldr r0, [r3, r2, lsl #5] - cmp r1, r0 - mvneq r0, #1 - bxeq lr - add r0, r3, r2, lsl #5 - ldr r0, [r0, #4] - cmp r0, #0 - bne _022C0750 - mov r0, #0 - bx lr -_022C06B4: - cmp r0, #4 - bne _022C06EC - ldr r0, _022C0758 ; =ov10_022DC1C8 - ldr r0, [r0] - add r2, r0, r2, lsl #5 - ldr r0, [r2, #8] - cmp r1, r0 - mvneq r0, #1 - bxeq lr - ldr r0, [r2, #0xc] - cmp r0, #0 - bne _022C0750 - mov r0, #1 - bx lr -_022C06EC: - cmp r0, #6 - bne _022C0724 - ldr r0, _022C0758 ; =ov10_022DC1C8 - ldr r0, [r0] - add r2, r0, r2, lsl #5 - ldr r0, [r2, #0x18] - cmp r1, r0 - mvneq r0, #1 - bxeq lr - ldr r0, [r2, #0x1c] - cmp r0, #0 - bne _022C0750 - mov r0, #3 - bx lr -_022C0724: - ldr r0, _022C0758 ; =ov10_022DC1C8 - ldr r0, [r0] - add r2, r0, r2, lsl #5 - ldr r0, [r2, #0x10] - cmp r1, r0 - mvneq r0, #1 - bxeq lr - ldr r0, [r2, #0x14] - cmp r0, #0 - moveq r0, #2 - bxeq lr -_022C0750: - mvn r0, #0 - bx lr - .align 2, 0 -_022C0758: .word ov10_022DC1C8 - arm_func_end ov10_022C067C - - arm_func_start ov10_022C075C -ov10_022C075C: ; 0x022C075C - ldr r3, _022C077C ; =ov10_022DC1C8 - ldr r3, [r3] - add r3, r3, r2, lsl #5 - add r2, r3, r0, lsl #3 - ldr r2, [r2, #4] - cmp r2, #0 - streq r1, [r3, r0, lsl #3] - bx lr - .align 2, 0 -_022C077C: .word ov10_022DC1C8 - arm_func_end ov10_022C075C - - arm_func_start ov10_022C0780 -ov10_022C0780: ; 0x022C0780 - stmdb sp!, {r3, lr} - ldr r2, _022C07CC ; =ov10_022DC1C8 - mov ip, #0 - ldr lr, [r2] - add r3, lr, r1, lsl #5 - b _022C07C0 -_022C0798: - ldr r2, [r3, ip, lsl #3] - cmp r0, r2 - bne _022C07BC - add r0, lr, #4 - add r1, r0, r1, lsl #5 - ldr r0, [r1, ip, lsl #3] - add r0, r0, #1 - str r0, [r1, ip, lsl #3] - ldmia sp!, {r3, pc} -_022C07BC: - add ip, ip, #1 -_022C07C0: - cmp ip, #3 - ble _022C0798 - ldmia sp!, {r3, pc} - .align 2, 0 -_022C07CC: .word ov10_022DC1C8 - arm_func_end ov10_022C0780 - - arm_func_start ov10_022C07D0 -ov10_022C07D0: ; 0x022C07D0 - ldr r2, _022C07E4 ; =ov10_022DC1C8 - ldr r2, [r2] - add r1, r2, r1, lsl #5 - add r0, r1, r0, lsl #3 - bx lr - .align 2, 0 -_022C07E4: .word ov10_022DC1C8 - arm_func_end ov10_022C07D0 - - arm_func_start ov10_022C07E8 -ov10_022C07E8: ; 0x022C07E8 - ldr r2, _022C0810 ; =ov10_022DC1C8 - ldr r2, [r2] - add r1, r2, r1, lsl #5 - add r0, r1, r0, lsl #3 - ldr r0, [r0, #4] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_022C0810: .word ov10_022DC1C8 - arm_func_end ov10_022C07E8 - - arm_func_start ov10_022C0814 -ov10_022C0814: ; 0x022C0814 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r2, _022C0968 ; =ov10_022DC1D0 - mov r8, r0 - ldr r0, [r2] - mov r7, r1 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - mov r0, #0x610 - mov r1, #0xf - bl MemAlloc - ldr r2, _022C0968 ; =ov10_022DC1D0 - mov r1, #0x610 - str r0, [r2] - bl MemZero - ldr r3, _022C0968 ; =ov10_022DC1D0 - mov r1, #0 - ldr r0, [r3] - mov r2, #1 - strb r1, [r0, #0x285] - ldr r0, [r3] - mov r6, r1 - strb r1, [r0, #0x286] - ldr r0, [r3] - strb r1, [r0, #0x5f2] - ldr r0, [r3] - strb r2, [r0, #0x5f3] - mvn r0, #1 -_022C0880: - ldr r4, [r3] - add r2, r1, #1 - add r4, r4, r1 - strb r0, [r4, #0x27c] - ldr r4, [r3] - mov r2, r2, lsl #0x10 - add r4, r4, r1 - strb r0, [r4, #0x280] - ldr r4, [r3] - add r4, r4, r1 - mov r1, r2, asr #0x10 - strb r6, [r4, #0x84] - cmp r1, #4 - blt _022C0880 - ldr r4, _022C0968 ; =ov10_022DC1D0 - mvn r5, #1 - ldr r1, [r4] - mov sb, #0x7c - strb r0, [r1, #0x284] - ldr r0, [r4] - strh r6, [r0, #4] -_022C08D4: - ldr r0, [r4] - add r0, r0, #0x88 - mla r0, r6, sb, r0 - bl InitAnimationControlWithSet__0201C0B0 - add r0, r6, #1 - ldr r1, [r4] - mov r0, r0, lsl #0x10 - add r1, r1, r6 - mov r6, r0, asr #0x10 - strb r5, [r1, #0x278] - cmp r6, #4 - blt _022C08D4 - ldr r0, _022C0968 ; =ov10_022DC1D0 - ldr r0, [r0] - add r0, r0, #0x310 - bl ov10_022C1E50 - ldr r0, _022C0968 ; =ov10_022DC1D0 - ldr r0, [r0] - add r0, r0, #0x480 - bl ov10_022C1E50 - ldr r0, _022C0968 ; =ov10_022DC1D0 - mov r6, #0 - ldr r1, [r0] - strb r7, [r1, #0x5f0] - ldr r1, [r0] - strb r6, [r1, #0x5f1] - ldr r1, [r0] - strb r6, [r1, #0x5f4] - ldr r5, [r0] - ldmia r8!, {r0, r1, r2, r3} - add r4, r5, #0x1f8 - add r4, r4, #0x400 - stmia r4!, {r0, r1, r2, r3} - ldr r0, [r8] - str r0, [r4] - strb r6, [r5, #0x5f5] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022C0968: .word ov10_022DC1D0 - arm_func_end ov10_022C0814 - - arm_func_start ov10_022C096C -ov10_022C096C: ; 0x022C096C - stmdb sp!, {r3, lr} - ldr r0, _022C0994 ; =ov10_022DC1D0 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _022C0994 ; =ov10_022DC1D0 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022C0994: .word ov10_022DC1D0 - arm_func_end ov10_022C096C - - arm_func_start ov10_022C0998 -ov10_022C0998: ; 0x022C0998 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _022C09E4 ; =ov10_022DC1D0 - mov r6, r0 - ldr r4, [r2] - mov r5, r1 - cmp r4, #0 - ldmeqia sp!, {r4, r5, r6, pc} - add lr, r4, #0x310 - mov ip, #0x17 -_022C09BC: - ldmia r6!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _022C09BC - ldrb r0, [r4, #0x5f3] - cmp r0, #0 - movne r0, #0 - strneb r0, [r4, #0x5f2] - streqb r5, [r4, #0x5f2] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022C09E4: .word ov10_022DC1D0 - arm_func_end ov10_022C0998 - - arm_func_start DrawTeamStats -DrawTeamStats: ; 0x022C09E8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x50 - ldr r3, _022C0CC0 ; =ov10_022DC1D0 - mov sl, r0 - ldr r0, [r3] - mov r5, r1 - cmp r0, #0 - mov r4, r2 - moveq r0, #0 - beq _022C0CB8 - mov r1, #0 - ldr r0, _022C0CC4 ; =WAN_TABLE - str r1, [sp] -#ifdef JAPAN - ldr r0, [r0] - mov r1, #4 - mov r2, #0x3f8 -#else - mov r1, #4 - ldr r0, [r0] - add r2, r1, #0x400 -#endif - mov r3, #0xf - bl LoadWanTableEntryFromPack - ldr r1, _022C0CC0 ; =ov10_022DC1D0 - ldr r2, [r1] - strh r0, [r2, #4] - ldr r0, [r1] - add r0, r0, #8 - bl InitAnimationControlWithSet__0201C0B0 - ldr r0, _022C0CC0 ; =ov10_022DC1D0 - ldr r0, [r0] - ldrsh r1, [r0, #4] - add r0, r0, #8 - bl SetSpriteIdForAnimationControl - ldr r0, _022C0CC0 ; =ov10_022DC1D0 - mov r1, #0 - ldr r3, [r0] - ldrh r2, [r3, #0xa] - orr r2, r2, #0x20 - strh r2, [r3, #0xa] - ldr r0, [r0] - add r0, r0, #8 - bl sub_0201D12C - mov r0, #0xd - str r0, [sp] - mov r1, #0 - str r1, [sp, #4] - str r1, [sp, #8] - mov r0, #1 - str r0, [sp, #0xc] - ldr r0, _022C0CC0 ; =ov10_022DC1D0 - mov r2, r1 - ldr r0, [r0] - mov r3, #0x71 - add r0, r0, #8 - bl SetAndPlayAnimationForAnimationControl - mov r3, r4 - ldr r0, _022C0CC0 ; =ov10_022DC1D0 - mov r2, r5 - ldr r1, [r0] - add r0, r1, #0x2d8 - add r1, r1, #0x1f8 - add r1, r1, #0x400 - bl ov10_022C1E80 - cmp r5, #0 - beq _022C0AF4 - ldr r0, _022C0CC0 ; =ov10_022DC1D0 - mov r3, #0 - ldr r2, [r0] - mov r1, #1 - strb r3, [r2, #0x285] - b _022C0B10 -_022C0AF4: - ldr r0, _022C0CC0 ; =ov10_022DC1D0 - mov r3, #1 - ldr r2, [r0] - mov r1, #0 - strb r3, [r2, #0x285] - ldr r2, [r0] - strb r3, [r2, #0x5f4] -_022C0B10: - ldr r0, [r0] - ldr fp, _022C0CC0 ; =ov10_022DC1D0 - strb r1, [r0, #0x60c] - ldr r0, [fp] - mvn r1, #1 - add r0, r0, #0x200 - ldrsb r0, [r0, #0x7c] - cmp r0, r1 - bne _022C0C10 - ldr r0, _022C0CC8 ; =ov10_022DBFEC - ldr r4, _022C0CCC ; =ov10_022DBFDC - add r6, sp, #0x20 - ldmia r0, {r0, r1, r2, r3} - stmia r6, {r0, r1, r2, r3} - ldmia r4, {r0, r1, r2, r3} - add r5, sp, #0x10 - stmia r5, {r0, r1, r2, r3} - mov r7, #0 - add r4, sp, #0x40 -_022C0B5C: - add r0, r7, r7, lsr #31 - mov r1, r0, asr #1 - mov r0, #0xc - mul sb, r1, r0 - mov ip, r7, lsr #0x1f -#ifdef JAPAN - rsb r8, ip, r7, lsl #31 -#endif - ldmia r6, {r0, r1, r2, r3} - stmia r4, {r0, r1, r2, r3} -#ifndef JAPAN - rsb r8, ip, r7, lsl #31 -#endif - add r8, ip, r8, ror #31 - mov r8, r8, lsl #4 -#ifdef JAPAN - add r0, r8, #7 - strb r0, [sp, #0x44] - add r0, sb, #1 -#else - add r0, sb, #7 - add r8, r8, #1 -#endif - strb r0, [sp, #0x45] - ldr r1, _022C0CD0 ; =ProcessTeamStatsNameGender - mov r0, r4 -#ifndef JAPAN - strb r8, [sp, #0x44] -#endif - bl CreateTextBox - ldr r1, [fp] -#ifdef JAPAN - add ip, r8, #1 -#else - add sb, sb, #9 -#endif - add r1, r1, r7 - strb r0, [r1, #0x27c] - ldmia r5, {r0, r1, r2, r3} - stmia r4, {r0, r1, r2, r3} -#ifdef JAPAN - add r8, sb, #7 -#endif - ldr r1, _022C0CD4 ; =ProcessTeamStatsLvHp - mov r0, r4 -#ifdef JAPAN - strb ip, [sp, #0x44] - strb r8, [sp, #0x45] -#else - strb r8, [sp, #0x44] - strb sb, [sp, #0x45] -#endif - bl CreateTextBox - ldr r1, [fp] - add r1, r1, r7 - add r7, r7, #1 - strb r0, [r1, #0x280] - cmp r7, #4 - blt _022C0B5C - ldr r0, _022C0CC0 ; =ov10_022DC1D0 - ldr r0, [r0] - add r0, r0, #0x288 - bl InitPreprocessorArgs - ldr r0, _022C0CC0 ; =ov10_022DC1D0 - mov r3, #0x10000 - ldr r2, [r0] - mov r1, #0 - str r3, [r2, #0x2d4] - ldr r0, [r0] - strb r1, [r0, #0x5f3] -_022C0C10: - bl ov10_022C1990 - ldr r8, _022C0CD8 ; =ov10_022DC1CC - ldr r7, _022C0CDC ; =ov10_022DBFFC - ldr r5, _022C0CC0 ; =ov10_022DC1D0 - mov sb, #0 - add fp, sp, #0x30 - add r6, sp, #0x34 - mvn r4, #1 -_022C0C30: - ldr r0, [r5] - add r0, r0, sb - add r0, r0, #0x200 - ldrsb r0, [r0, #0x78] - cmp r0, r4 - bne _022C0C9C - mov r0, fp - bl InitPortraitParams - mov r0, fp - mov r1, #1 - bl InitPortraitParamsWithMonsterId - ldrb r1, [r8, sb] - mov r0, fp - bl SetPortraitLayout - mov r0, #1 - ldr r1, [r7, sb, lsl #2] - mov r2, r0 - bl CreatePortraitBox - ldr r1, [r5] - add r1, r1, sb - strb r0, [r1, #0x278] - ldr r0, [r5] - ldmia r6, {r1, r2} - add r0, r0, sb - add r0, r0, #0x200 - ldrsb r0, [r0, #0x78] - bl sub_02028770 -_022C0C9C: - add sb, sb, #1 - cmp sb, #4 - blt _022C0C30 - mov r0, sl - mov r1, #0 - bl ov10_022C0998 - mov r0, #1 -_022C0CB8: - add sp, sp, #0x50 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022C0CC0: .word ov10_022DC1D0 -_022C0CC4: .word WAN_TABLE -_022C0CC8: .word ov10_022DBFEC -_022C0CCC: .word ov10_022DBFDC -_022C0CD0: .word ProcessTeamStatsNameGender -_022C0CD4: .word ProcessTeamStatsLvHp -_022C0CD8: .word ov10_022DC1CC -_022C0CDC: .word ov10_022DBFFC - arm_func_end DrawTeamStats - - arm_func_start UpdateTeamStats -UpdateTeamStats: ; 0x022C0CE0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x20 - ldr r0, _022C0F5C ; =ov10_022DC1D0 - mov r2, #0 - ldr r1, [r0] - strb r2, [r1, #0x5f3] - ldr r1, [r0] - ldrb r0, [r1, #0x285] - cmp r0, #0 - movne r0, #1 - strneb r0, [r1, #0x286] - bl ov10_022C1A04 - movs sb, r0 - beq _022C0F54 - ldr r0, _022C0F5C ; =ov10_022DC1D0 - ldr r1, [r0] - ldrb r0, [r1, #0x60c] - cmp r0, #0 - bne _022C0D80 - ldrb r0, [r1, #0x5f2] - cmp r0, #0 - beq _022C0D80 - ldr r1, _022C0F60 ; =0x0000FFFF - mov r0, sb, lsl #0x10 - cmp r1, r0, lsr #16 - bne _022C0D80 - tst sb, #0x80000 - mov r0, #1 - beq _022C0D6C - bl ov29_0234C5EC - mov r0, #4 - mov r1, #0x1000 - mov r2, #1 - bl StartFadeDungeonWrapper - b _022C0D80 -_022C0D6C: - bl ov29_0234C584 - mov r0, #1 - mov r2, r0 - mov r1, #0x1000 - bl StartFadeDungeonWrapper -_022C0D80: - ldr fp, _022C0F5C ; =ov10_022DC1D0 - mov r8, #0 - ldr r1, [fp] - ldr r0, _022C0F64 ; =ov10_022DBFB0 - strb r8, [r1, #0x5f2] - ldr r6, [r0, #0x14] - ldr r5, [r0, #0x18] - str r6, [sp] - str r5, [sp, #4] - mvn r4, #1 -_022C0DA8: - tst sb, #0xf - beq _022C0EA8 - tst sb, #1 - beq _022C0DCC - ldr r0, [fp] - add r0, r0, r8 - add r0, r0, #0x200 - ldrsb r0, [r0, #0x80] - bl ProcessTeamStatsLvHp -_022C0DCC: - tst sb, #2 - beq _022C0DE8 - ldr r0, [fp] - add r0, r0, r8 - add r0, r0, #0x200 - ldrsb r0, [r0, #0x7c] - bl ProcessTeamStatsNameGender -_022C0DE8: - tst sb, #4 - beq _022C0EA8 - ldr r2, [fp] - mov r0, r8, lsl #0x10 - add r1, r2, r0, asr #16 - mov sl, r0, asr #0x10 - add r2, r2, #0x310 - mov r0, #0x5c - mla r7, sl, r0, r2 - str r6, [sp, #8] - str r5, [sp, #0xc] - add r0, r1, #0x200 - ldrsb r0, [r0, #0x78] - cmp r0, r4 - beq _022C0EA8 - add r0, sp, #0x10 - bl InitPortraitParams - ldrb r0, [r7] - cmp r0, #0 - add r0, sp, #0x10 - bne _022C0E48 - mov r1, #1 - bl InitPortraitParamsWithMonsterId - b _022C0E50 -_022C0E48: - ldrsh r1, [r7, #0x42] - bl InitPortraitParamsWithMonsterId -_022C0E50: - add r0, sp, #0x10 - add r1, sp, #8 - bl SetPortraitOffset - ldr r1, _022C0F68 ; =ov10_022DC1CC - add r0, sp, #0x10 - ldrb r1, [r1, sl] - bl SetPortraitLayout - ldrb r0, [r7] - cmp r0, #0 - add r0, sp, #0x10 - bne _022C0E88 - mov r1, r4 - bl SetPortraitEmotion - b _022C0E90 -_022C0E88: - mov r1, #0 - bl SetPortraitEmotion -_022C0E90: - ldr r0, [fp] - add r1, sp, #0x10 - add r0, r0, sl - add r0, r0, #0x200 - ldrsb r0, [r0, #0x78] - bl ShowPortraitInPortraitBox -_022C0EA8: - add r8, r8, #1 - cmp r8, #4 - mov sb, sb, lsr #4 - blo _022C0DA8 - ldr r8, _022C0F5C ; =ov10_022DC1D0 - mov r6, #0 - ldr r0, [r8] - mov r5, r6 - add r4, r0, #0x480 - mov sb, r6 - mov r7, #0x5c -_022C0ED4: - mul r0, r5, r7 - ldrb r0, [r4, r0] - cmp r0, #0 - beq _022C0F04 - ldr r0, [r8] - mov r2, r6, lsl #0x10 - ldrb r3, [r0, #0x5f0] - mov r1, sb - add r0, r0, #0x2d8 - mov r2, r2, asr #0x10 - bl ov10_022C1F90 - add r6, r6, #1 -_022C0F04: - add r5, r5, #1 - cmp r5, #4 - blt _022C0ED4 - mov r5, #1 - ldr r4, _022C0F5C ; =ov10_022DC1D0 - b _022C0F3C -_022C0F1C: - ldr r0, [r4] - mov r2, r6, lsl #0x10 - ldrb r3, [r0, #0x5f0] - mov r1, r5 - add r0, r0, #0x2d8 - mov r2, r2, asr #0x10 - bl ov10_022C1F90 - add r6, r6, #1 -_022C0F3C: - cmp r6, #4 - blt _022C0F1C - ldr r0, _022C0F5C ; =ov10_022DC1D0 - ldr r0, [r0] - add r0, r0, #0x2d8 - bl ov10_022C225C -_022C0F54: - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022C0F5C: .word ov10_022DC1D0 -_022C0F60: .word 0x0000FFFF -_022C0F64: .word ov10_022DBFB0 -_022C0F68: .word ov10_022DC1CC - arm_func_end UpdateTeamStats - - arm_func_start ov10_022C0F6C -ov10_022C0F6C: ; 0x022C0F6C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x20 - ldr r4, _022C11CC ; =ov10_022DC1D0 - mov r7, r0 - ldr r4, [r4] - mov sl, r1 - cmp r4, #0 - ldrneb r0, [r4, #0x285] - mov r6, r2 - mov fp, r3 - cmpne r0, #0 - ldrneb r0, [r4, #0x286] - ldr sb, [sp, #0x54] - cmpne r0, #0 - ldrnesh r5, [sp, #0x4c] - addne r1, r4, #0x88 - movne r0, #0x7c - mlane r4, r5, r0, r1 - cmpne r7, #0 - beq _022C11C4 - ldr r1, _022C11D0 ; =WAN_TABLE - mov r0, #0x38 - ldr r1, [r1] - smlabb r0, r7, r0, r1 - ldr r0, [r0, #0x30] - cmp r0, #0 - beq _022C11C4 - mov r0, r4 - bl sub_0201D1B0 - cmp r0, #0 - beq _022C1010 - ldr r0, _022C11CC ; =ov10_022DC1D0 - ldr r0, [r0] - add r0, r0, r5 - ldrb r0, [r0, #0x84] - cmp r0, #0 - ldreqsh r0, [r4, #0x70] - cmpeq r0, r7 - ldreqsh r0, [r4, #0x76] - cmpeq r0, r6 - beq _022C1094 -_022C1010: - ldr r0, _022C11CC ; =ov10_022DC1D0 - ldr r0, [r0] - add r0, r0, r5 - ldrb r0, [r0, #0x84] - cmp r0, #0 - beq _022C1030 - mov r0, r4 - bl sub_0201CF80 -_022C1030: - mov r0, r4 - mov r1, r7 - bl SetSpriteIdForAnimationControl - bl Rand16Bit - mov r1, r6 - ldrsh r6, [sp, #0x50] - and r7, r0, #3 - mov r2, #0 - and r3, r6, #0xff - stmia sp, {r3, r7} - mov r3, #0x14 - smulbb r3, r6, r3 - str r2, [sp, #8] - mov r0, #1 - mov r3, r3, lsl #0x10 - str r0, [sp, #0xc] - mov r0, r4 - mov r2, #7 - mov r3, r3, asr #0x10 - bl SetAndPlayAnimationForAnimationControl - ldr r0, _022C11CC ; =ov10_022DC1D0 - mov r1, #0 - ldr r0, [r0] - add r0, r0, r5 - strb r1, [r0, #0x84] -_022C1094: -#ifdef JAPAN - ldrh r0, [r4, #2] - ldrsh r7, [sp, #0x4c] - ldrb r1, [sp, #0x5c] - orr r0, r0, #0x10 - strh r0, [r4, #2] - mov r3, #0 - strh r3, [r4, #0x38] - ldrh r2, [r4, #2] - mov r5, r7, lsl #0x1f - ldr r0, _022C11D4 ; =0x0000F3FF - orr r2, r2, #0x20 - strh r2, [r4, #2] - strh r0, [r4, #0x10] - strh r0, [r4, #0x14] - mov r2, r7, asr #1 - mov r0, #0x60 - smulbb r0, r2, r0 - strh r3, [r4, #0x16] - cmp r1, #0 - add r6, r0, #0x50 - ldrneh r0, [r4, #0x16] - mov r5, r5, lsr #0x18 - add r8, r5, #0x60 -#else - ldrsh r8, [sp, #0x4c] - mov r1, #0x60 - mov r0, sl - mov r2, r8, asr #1 - smulbb r1, r2, r1 - mov r3, r8, lsl #0x1f - mov r2, r3, lsr #0x18 - add r7, r2, #0x60 - add r6, r1, #0x28 - bl ov10_022C1CE8 - cmp r0, #0 - cmpeq sl, #0x1a0 - mvneq r1, #7 - movne r1, #0 - mov r0, sl - add r7, r7, r1 - bl ov10_022C1CE8 - cmp r0, #0 - bne _022C1100 - cmp sl, #0x1a0 - moveq r0, #0x11 - beq _022C1104 - mov r0, sl - bl GetBodySize - cmp r0, #4 - moveq r0, #0xc - beq _022C1104 -_022C1100: - mov r0, #0 -_022C1104: - ldrh r2, [r4, #2] - ldrb r1, [sp, #0x5c] - mov r5, #0 - orr r2, r2, #0x10 - strh r2, [r4, #2] - strh r5, [r4, #0x38] - ldrh r3, [r4, #2] - cmp r1, #0 - ldr r2, _022C11D4 ; =0x0000F3FF - orr r1, r3, #0x20 - strh r1, [r4, #2] - strh r2, [r4, #0x10] - strh r2, [r4, #0x14] - strh r5, [r4, #0x16] - add r6, r6, r0 - ldrneh r0, [r4, #0x16] - mov r5, #0 -#endif - orrne r0, r0, #0x400 - strneh r0, [r4, #0x16] - ldrsh r0, [sp, #0x58] -#ifdef JAPAN - mov r5, #0 - add r0, r8, r0 -#else - add r0, r7, r0 -#endif - strh r0, [r4, #0x1c] - strh r6, [r4, #0x1e] - b _022C1178 -_022C1164: - mov r0, r4 - bl SwitchAnimationControlToNextFrame - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 -_022C1178: - cmp r5, sb - blt _022C1164 - mov r0, r4 - bl DisplayAndSwitchAnimationControlCurrentFrame - add r0, sp, #0x10 - mov r2, r4 - mov r1, #4 - bl sub_0201D034 - ldrb r0, [sp, #0x48] - cmp r0, #0 - beq _022C11C4 - add r4, sp, #0x10 - str r6, [sp] - mov r0, fp - mov r1, sl -#ifdef JAPAN - mov r2, r7 - mov r3, r8 -#else - mov r2, r8 - mov r3, r7 -#endif - str r4, [sp, #4] - bl ov29_022DD83C -_022C11C4: - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022C11CC: .word ov10_022DC1D0 -_022C11D0: .word WAN_TABLE -_022C11D4: .word 0x0000F3FF - arm_func_end ov10_022C0F6C - - arm_func_start ov10_022C11D8 -ov10_022C11D8: ; 0x022C11D8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x20 - ldr r0, _022C138C ; =ov10_022DC1D0 - mov r2, #0x80 - ldr r3, [r0] - mov r1, #0x60 - strh r2, [r3, #0x24] - add r0, r3, #8 - strh r1, [r3, #0x26] - bl DisplayAndSwitchAnimationControlCurrentFrame - ldr r0, _022C138C ; =ov10_022DC1D0 - ldr r1, [r0] - ldrb r0, [r1, #0x5f4] - cmp r0, #0 - bne _022C1384 - cmp r1, #0 - ldrneb r0, [r1, #0x285] - cmpne r0, #0 - ldrneb r0, [r1, #0x286] - cmpne r0, #0 - beq _022C1384 - mov r8, #0 - mov r5, r8 - mov r4, #1 - mov fp, r8 -_022C123C: - ldr r0, _022C138C ; =ov10_022DC1D0 - mov sb, #0 - ldr r1, [r0] - mov r0, #0x5c - mul r2, r8, r0 - add r3, r1, #0x480 - add r1, r1, #0x88 - mov r0, #0x7c - mla r6, r8, r0, r1 - ldrb r0, [r3, r2] - add r7, r3, r2 - cmp r0, #0 - ldrnesh r2, [r7, #0x52] - cmpne r2, #0 - beq _022C1378 - ldr r0, _022C1390 ; =WAN_TABLE - ldr r1, [r0] - mov r0, #0x38 - smlabb r0, r2, r0, r1 - ldr r0, [r0, #0x30] - cmp r0, #0 - beq _022C1378 - mov r0, r6 - bl sub_0201D1B0 - cmp r0, #0 - moveq sb, #1 - cmp sb, #0 - beq _022C12EC - ldrsh r1, [r7, #0x52] - mov r0, r6 - bl SetSpriteIdForAnimationControl - bl Rand16Bit - mov r3, #0x14 - and r1, r0, #3 - and r0, r8, #0xff - stmia sp, {r0, r1, r5} - mul r3, r8, r3 - str r4, [sp, #0xc] - mov r3, r3, lsl #0x10 - ldrsh r1, [r7, #0x54] - mov r0, r6 - mov r2, #7 - mov r3, r3, asr #0x10 - bl SetAndPlayAnimationForAnimationControl -_022C12EC: - mov r1, r8, lsr #0x1f - rsb r0, r1, r8, lsl #31 - add r0, r1, r0, ror #31 - mov r0, r0, lsl #7 - add sl, r0, #0x60 - add r0, r8, r8, lsr #31 - mov r1, r0, asr #1 - mov r0, #0x60 - mul r0, r1, r0 - strh fp, [r6, #0x38] - ldrh r1, [r6, #2] - add sb, r0, #0x50 - mov r0, r6 - orr r1, r1, #0x20 - strh r1, [r6, #2] - ldr r1, _022C1394 ; =0x0000F3FF - strh r1, [r6, #0x14] - strh sl, [r6, #0x1c] - strh sb, [r6, #0x1e] - bl DisplayAndSwitchAnimationControlCurrentFrame - mov r2, r6 - add r0, sp, #0x10 - mov r1, #4 - bl sub_0201D034 - ldrb r0, [r7, #0x4f] - cmp r0, #0 - beq _022C1378 - str sb, [sp] - add r0, sp, #0x10 - str r0, [sp, #4] - ldrsh r1, [r7, #0x42] - ldr r0, [r7, #0x44] - mov r3, sl - mov r2, r8 - bl ov29_022DD83C -_022C1378: - add r8, r8, #1 - cmp r8, #4 - blt _022C123C -_022C1384: - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022C138C: .word ov10_022DC1D0 -_022C1390: .word WAN_TABLE -_022C1394: .word 0x0000F3FF - arm_func_end ov10_022C11D8 - - arm_func_start ov10_022C1398 -ov10_022C1398: ; 0x022C1398 - ldr r0, _022C13AC ; =ov10_022DC1D0 - ldr ip, _022C13B0 ; =ov10_022C231C - ldr r0, [r0] - add r0, r0, #0x2d8 - bx ip - .align 2, 0 -_022C13AC: .word ov10_022DC1D0 -_022C13B0: .word ov10_022C231C - arm_func_end ov10_022C1398 - - arm_func_start FreeTeamStats -FreeTeamStats: ; 0x022C13B4 - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _022C14C8 ; =ov10_022DC1D0 - ldr r0, [r0] - add r0, r0, #0x2d8 - bl ov10_022C2278 - ldr r0, _022C14C8 ; =ov10_022DC1D0 - ldr r1, _022C14CC ; =WAN_TABLE - ldr r2, [r0] - ldr r0, [r1] - ldrsh r1, [r2, #4] - bl DeleteWanTableEntryVeneer - ldr r6, _022C14C8 ; =ov10_022DC1D0 - mov r5, #0 - mvn r4, #1 -_022C13EC: - ldr r0, [r6] - add r0, r0, r5 - add r0, r0, #0x200 - ldrsb r0, [r0, #0x78] - cmp r0, r4 - beq _022C143C - bl sub_0202836C - ldr r0, [r6] - add r0, r0, r5 - add r0, r0, #0x200 - ldrsb r0, [r0, #0x78] - bl HidePortraitBox - ldr r0, [r6] - add r0, r0, r5 - add r0, r0, #0x200 - ldrsb r0, [r0, #0x78] - bl ClosePortraitBox - ldr r0, [r6] - add r0, r0, r5 - strb r4, [r0, #0x278] -_022C143C: - add r5, r5, #1 - cmp r5, #4 - blt _022C13EC - ldr r6, _022C14C8 ; =ov10_022DC1D0 - mov r5, #0 - mvn r4, #1 -_022C1454: - ldr r0, [r6] - add r0, r0, r5 - add r0, r0, #0x200 - ldrsb r0, [r0, #0x7c] - cmp r0, r4 - beq _022C147C - bl CloseTextBox - ldr r0, [r6] - add r0, r0, r5 - strb r4, [r0, #0x27c] -_022C147C: - ldr r0, [r6] - add r0, r0, r5 - add r0, r0, #0x200 - ldrsb r0, [r0, #0x80] - cmp r0, r4 - beq _022C14A4 - bl CloseTextBox - ldr r0, [r6] - add r0, r0, r5 - strb r4, [r0, #0x280] -_022C14A4: - add r5, r5, #1 - cmp r5, #4 - blt _022C1454 - ldr r0, _022C14C8 ; =ov10_022DC1D0 - mov r2, #0 - ldr r1, [r0] - mov r0, #1 - strb r2, [r1, #0x285] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022C14C8: .word ov10_022DC1D0 -_022C14CC: .word WAN_TABLE - arm_func_end FreeTeamStats - - arm_func_start ov10_022C14D0 -ov10_022C14D0: ; 0x022C14D0 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr r1, _022C1594 ; =ov10_022DC1D0 - mov r4, r0 - ldr r0, [r1] - cmp r0, #0 - moveq r0, #0 - beq _022C158C - mov r2, #0 - strb r2, [r0, #0x285] - ldr r0, [r1] - mov r3, #1 - strb r2, [r0, #0x286] - ldr r0, [r1] - add r1, r0, #0x1f8 - add r0, r0, #0x2d8 - add r1, r1, #0x400 - bl ov10_022C1E80 - bl ov10_022C1990 - ldr r0, _022C1594 ; =ov10_022DC1D0 - mvn r1, #1 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsb r0, [r0, #0x84] - cmp r0, r1 - bne _022C157C - ldr r0, _022C1598 ; =ov10_022DBFCC - add ip, sp, #0 - ldmia r0, {r0, r1, r2, r3} - stmia ip, {r0, r1, r2, r3} - mov r0, ip - mov r1, #0 - bl CreateTextBox - ldr r1, _022C1594 ; =ov10_022DC1D0 - ldr r2, [r1] - strb r0, [r2, #0x284] - ldr r0, [r1] - add r0, r0, #0x288 - bl InitPreprocessorArgs - ldr r0, _022C1594 ; =ov10_022DC1D0 - mov r1, #0x10000 - ldr r0, [r0] - str r1, [r0, #0x2d4] -_022C157C: - mov r0, r4 - mov r1, #0 - bl ov10_022C0998 - mov r0, #1 -_022C158C: - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022C1594: .word ov10_022DC1D0 -_022C1598: .word ov10_022DBFCC - arm_func_end ov10_022C14D0 - - arm_func_start ov10_022C159C -ov10_022C159C: ; 0x022C159C -#ifdef EUROPE -#define OV10_022C159C_STACK_OFFSET #0x154 -#else -#define OV10_022C159C_STACK_OFFSET #0x54 -#endif - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, OV10_022C159C_STACK_OFFSET - sub sp, sp, #0x400 - ldr r0, _022C16CC ; =ov10_022DC1D0 - mov r2, #0 - ldr r1, [r0] - strb r2, [r1, #0x5f2] - ldr r0, [r0] - strb r2, [r0, #0x286] - bl ov10_022C1A04 - cmp r0, #0 - beq _022C16C0 - ldr r0, _022C16CC ; =ov10_022DC1D0 - ldr r1, [r0] - add r0, r1, #0x200 - ldrsb sl, [r0, #0x84] - add r4, r1, #0x480 - mov r0, sl - bl sub_02027B1C - mov sb, #0 - mov r5, sb - add fp, sp, #4 -_022C15F4: - mov r0, #0x5c - mul r1, r5, r0 - ldrb r0, [r4, r1] - cmp r0, #0 - beq _022C169C - add r0, r4, r1 -#ifdef EUROPE - ldrsh r8, [r0, #0x48] - ldrsh r6, [r0, #0x4a] - ldrsh r7, [r0, #0x4c] -#else - ldrsh r6, [r0, #0x4a] - ldrsh r7, [r0, #0x4c] - ldrsh r8, [r0, #0x48] -#endif - add r1, r0, #1 - add r0, sp, OV10_022C159C_STACK_OFFSET - bl strcpy - mov r0, sl - mov r1, #0 - mov r2, sb - add r3, sp, OV10_022C159C_STACK_OFFSET - bl DrawTextInWindow -#ifdef EUROPE - mov r1, r8 - add r0, sp, #0x54 - bl sub_02025010_EU - ldr r1, _022C16D0 ; =ov10_022DC00C - add r0, sp, #0x154 - add r2, sp, #0x54 -#else - ldr r1, _022C16D0 ; =ov10_022DC00C - mov r2, r8 - add r0, sp, #0x54 -#endif - bl SprintfStatic__022C183C - mov r0, sl -#ifdef JAPAN - mov r1, #0x38 -#else - mov r1, #0x44 -#endif - mov r2, sb - add r3, sp, OV10_022C159C_STACK_OFFSET - bl DrawTextInWindow - mov r0, fp - bl InitPreprocessorArgs - ldr r2, _022C16D4 ; =ov10_022DC014 - str r6, [sp, #0x28] - str r7, [sp, #0x2c] - add r0, sp, OV10_022C159C_STACK_OFFSET - mov r1, #0x400 - mov r3, #0 - str fp, [sp] - bl PreprocessString - mov r0, sl - mov r1, #0x80 - mov r2, sb - add r3, sp, OV10_022C159C_STACK_OFFSET - bl DrawTextInWindow - add sb, sb, #0xc -_022C169C: - add r5, r5, #1 - cmp r5, #4 - blt _022C15F4 - mov r0, sl - bl UpdateWindow - ldr r0, _022C16CC ; =ov10_022DC1D0 - ldr r0, [r0] - add r0, r0, #0x2d8 - bl ov10_022C21D8 -_022C16C0: - add sp, sp, OV10_022C159C_STACK_OFFSET - add sp, sp, #0x400 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022C16CC: .word ov10_022DC1D0 -_022C16D0: .word ov10_022DC00C -_022C16D4: .word ov10_022DC014 - arm_func_end ov10_022C159C - - arm_func_start FreeMapAndTeam -FreeMapAndTeam: ; 0x022C16D8 - stmdb sp!, {r3, lr} - ldr r0, _022C1744 ; =ov10_022DC1D0 - ldr r0, [r0] - add r0, r0, #0x2d8 - bl ov10_022C2278 - ldr r0, _022C1744 ; =ov10_022DC1D0 - mvn r1, #1 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsb r0, [r0, #0x84] - cmp r0, r1 - beq _022C171C - bl CloseTextBox2 - ldr r0, _022C1744 ; =ov10_022DC1D0 - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x284] -_022C171C: - ldr r1, _022C1744 ; =ov10_022DC1D0 - mov r3, #0 - ldr r2, [r1] - mov r0, #1 - strb r3, [r2, #0x285] - ldr r2, [r1] - strb r3, [r2, #0x286] - ldr r1, [r1] - strb r3, [r1, #0x5f2] - ldmia sp!, {r3, pc} - .align 2, 0 -_022C1744: .word ov10_022DC1D0 - arm_func_end FreeMapAndTeam - - arm_func_start ProcessTeamStatsLvHp -ProcessTeamStatsLvHp: ; 0x022C1748 -#if defined(EUROPE) -#define OV10_022C1748_STACK_OFFSET 0x40 -#elif defined(JAPAN) -#define OV10_022C1748_STACK_OFFSET -0x100 -#else -#define OV10_022C1748_STACK_OFFSET 0 -#endif - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x254 + OV10_022C1748_STACK_OFFSET - mov r4, r0 - mvn r0, #1 - cmp r4, r0 - beq _022C182C - ldr r0, _022C1834 ; =ov10_022DC1D0 - mov r3, #0 - ldr r1, [r0] - add r2, r1, #0x480 - b _022C178C -_022C1774: - add r0, r1, r3 - add r0, r0, #0x200 - ldrsb r0, [r0, #0x80] - cmp r4, r0 - beq _022C1794 - add r3, r3, #1 -_022C178C: - cmp r3, #4 - blt _022C1774 -_022C1794: - cmp r3, #4 - beq _022C182C - mov r0, #0x5c - mul r1, r3, r0 - ldrb r0, [r2, r1] - add r5, r2, r1 - cmp r0, #0 - mov r0, r4 - bne _022C17C8 - bl ClearWindow - mov r0, r4 - bl UpdateWindow - b _022C182C -_022C17C8: - bl ClearWindow -#ifdef JAPAN - ldrsh r2, [r5, #0x48] - ldr r1, _022C1838 ; =ov10_022DC02C - add r0, sp, #0x54 - bl SprintfStatic__022C183C - mov r1, #0 - add r3, sp, #0x54 - mov r0, r4 - mov r2, r1 - bl DrawTextInWindow - add r0, sp, #4 - bl InitPreprocessorArgs - ldrsh r1, [r5, #0x4a] - add r3, sp, #4 - ldr r2, _022C2FA4 ; =ov10_022DC014 - str r1, [sp, #0x28] - ldrsh ip, [r5, #0x4c] - add r0, sp, #0x54 - mov r1, #0x100 - str ip, [sp, #0x2c] - str r3, [sp] - mov r3, #0 - bl PreprocessString - mov r0, r4 - mov r1, #0 - mov r2, #0x10 -#else - add r0, sp, #0x104 + OV10_022C1748_STACK_OFFSET - bl InitPreprocessorArgs -#ifdef EUROPE - ldrsh r1, [r5, #0x4a] - add r0, sp, #4 - str r1, [sp, #0x168] - ldrsh r1, [r5, #0x4c] - str r1, [sp, #0x16c] - ldrsh r1, [r5, #0x48] - bl sub_02025010_EU - ldr r1, _022C1838 ; =ov10_022DC02C - add r0, sp, #0x44 - add r2, sp, #4 -#else - ldrsh r2, [r5, #0x4a] - ldr r1, _022C1838 ; =ov10_022DC02C - add r0, sp, #4 - str r2, [sp, #0x128] - ldrsh r2, [r5, #0x4c] - str r2, [sp, #0x12c] - ldrsh r2, [r5, #0x48] -#endif - bl SprintfStatic__022C183C - add r1, sp, #0x104 + OV10_022C1748_STACK_OFFSET - str r1, [sp] - add r0, sp, #0x154 + OV10_022C1748_STACK_OFFSET - mov r1, #0x100 - add r2, sp, #4 + OV10_022C1748_STACK_OFFSET - mov r3, #0 - bl PreprocessString - mov r1, #0 - mov r0, r4 - mov r2, r1 -#endif - add r3, sp, #0x154 + OV10_022C1748_STACK_OFFSET - bl DrawTextInWindow - mov r0, r4 - bl UpdateWindow -_022C182C: - add sp, sp, #0x254 + OV10_022C1748_STACK_OFFSET - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_022C1834: .word ov10_022DC1D0 -#ifdef JAPAN -_022C1838: .word ov10_022DC00C -_022C2FA4: .word ov10_022DC014 -#else -_022C1838: .word ov10_022DC02C -#endif - arm_func_end ProcessTeamStatsLvHp - - arm_func_start SprintfStatic__022C183C -SprintfStatic__022C183C: ; 0x022C183C - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r2, sp, #0xc - bic r2, r2, #3 - ldr r1, [sp, #0xc] - add r2, r2, #4 - bl vsprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end SprintfStatic__022C183C - - arm_func_start ProcessTeamStatsNameGender -ProcessTeamStatsNameGender: ; 0x022C1864 - stmdb sp!, {r3, r4, r5, lr} -#ifdef JAPAN - ldr r1, _022C1984 ; =ov10_022DC1D0 - mov r4, r0 -#else - sub sp, sp, #0x258 - ldr r1, _022C1984 ; =ov10_022DC1D0 - mov r5, r0 -#endif - ldr r1, [r1] - mov r3, #0 - add r2, r1, #0x480 - b _022C189C -_022C1884: - add r0, r1, r3 - add r0, r0, #0x200 - ldrsb r0, [r0, #0x7c] -#ifdef JAPAN - cmp r4, r0 -#else - cmp r5, r0 -#endif - beq _022C18A4 - add r3, r3, #1 -_022C189C: - cmp r3, #4 - blt _022C1884 -_022C18A4: - cmp r3, #4 -#ifdef JAPAN - ldmeqia sp!, {r3, r4, r5, pc} -#else - beq _022C197C -#endif - mov r0, #0x5c - mul r1, r3, r0 - ldrb r0, [r2, r1] -#ifdef JAPAN - add r5, r2, r1 - cmp r0, #0 - mov r0, r4 - bne _022C3040 - bl ClearWindow - mov r0, r4 - bl UpdateWindow - ldmia sp!, {r3, r4, r5, pc} -_022C3040: - bl ClearWindow - mov r1, #0 - mov r0, r4 - mov r2, r1 - add r3, r5, #1 - bl DrawTextInWindow - ldrsh r0, [r5, #0x42] - bl GetMonsterGenderVeneer - cmp r0, #1 - bne _022C3080 - ldr r3, _022C30C4 ; =ov10_022DC02C - mov r0, r4 - mov r1, #0x10 - mov r2, #0xc - bl DrawTextInWindow - b _022C30B4 -_022C3080: - ldrsh r0, [r5, #0x42] - bl GetMonsterGenderVeneer - cmp r0, #2 - mov r1, #0x10 - mov r2, #0xc - bne _022C30A8 - ldr r3, _022C30C8_JP ; =ov10_022DD718_JP - mov r0, r4 - bl DrawTextInWindow - b _022C30B4 -_022C30A8: - ldr r3, _022C30CC ; =ov10_022DD71C_JP - mov r0, r4 - bl DrawTextInWindow -_022C30B4: - mov r0, r4 - bl UpdateWindow -#else - add r4, r2, r1 - cmp r0, #0 - bne _022C18D8 - mov r0, r5 - bl ClearWindow - mov r0, r5 - bl UpdateWindow - b _022C197C -_022C18D8: - ldr r1, _022C1988 ; =ov10_022DBFB0 - mov r0, r5 - ldrb r2, [r1] - strb r2, [sp, #4] - ldrb r1, [r1, #1] - strb r1, [sp, #5] - bl ClearWindow - add r0, sp, #8 - bl InitPreprocessorArgs - ldrsh r0, [r4, #0x42] - bl GetMonsterGenderVeneer - cmp r0, #1 - moveq r0, #0xbd - streqb r0, [sp, #4] - beq _022C1930 - ldrsh r0, [r4, #0x42] - bl GetMonsterGenderVeneer - cmp r0, #2 - moveq r0, #0xbe - streqb r0, [sp, #4] - movne r0, #0x2d - strneb r0, [sp, #4] -_022C1930: - ldr r1, _022C198C ; =ov10_022DC058 - add r0, sp, #0x158 - add r3, sp, #4 - add r2, r4, #1 - bl SprintfStatic__022C183C - add r4, sp, #8 - add r0, sp, #0x58 - add r2, sp, #0x158 - mov r1, #0x100 - mov r3, #0 - str r4, [sp] - bl PreprocessString - mov r1, #0 - add r3, sp, #0x58 - mov r0, r5 - mov r2, r1 - bl DrawTextInWindow - mov r0, r5 - bl UpdateWindow -_022C197C: - add sp, sp, #0x258 -#endif - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022C1984: .word ov10_022DC1D0 -#ifdef JAPAN -_022C30C4: .word ov10_022DC02C -_022C30C8_JP: .word ov10_022DD718_JP -_022C30CC: .word ov10_022DD71C_JP -#else -_022C1988: .word ov10_022DBFB0 -_022C198C: .word ov10_022DC058 -#endif - arm_func_end ProcessTeamStatsNameGender - - arm_func_start ov10_022C1990 -ov10_022C1990: ; 0x022C1990 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r8, _022C1A00 ; =ov10_022DC1D0 - mov r4, #0 - ldr r0, [r8] - mov r6, #0x5c - str r4, [r0] - mov r7, #0x7c -_022C19AC: - mul r5, r4, r6 - ldr r0, [r8] - add r0, r0, #0x310 - add r0, r0, r5 - bl ov10_022C1D40 - ldr r0, [r8] - add r0, r0, #0x480 - add r0, r0, r5 - bl ov10_022C1D40 - ldr r0, [r8] - add r0, r0, #0x88 - mla r0, r4, r7, r0 - bl sub_0201C138 - add r4, r4, #1 - cmp r4, #4 - blt _022C19AC - ldr r0, _022C1A00 ; =ov10_022DC1D0 - mov r1, #0 - ldr r0, [r0] - strb r1, [r0, #0x286] - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022C1A00: .word ov10_022DC1D0 - arm_func_end ov10_022C1990 - - arm_func_start ov10_022C1A04 -ov10_022C1A04: ; 0x022C1A04 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - ldr r0, _022C1CD0 ; =ov10_022DC1D0 - ldr r3, _022C1CD4 ; =ov10_022DBFB6 - ldr r0, [r0] - add r2, sp, #0x10 - ldr sb, [r0] - add fp, r0, #0x310 - add r4, r0, #0x480 - mov r1, #4 -_022C1A2C: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _022C1A2C - ldr r3, _022C1CD8 ; =ov10_022DBFBE - add r2, sp, #0xc - mov r1, #4 -_022C1A48: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _022C1A48 - ldr r3, _022C1CDC ; =ov10_022DBFB2 - add r2, sp, #8 - mov r1, #4 -_022C1A64: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _022C1A64 - ldr r3, _022C1CE0 ; =ov10_022DBFBA - add r2, sp, #4 - mov r1, #4 -_022C1A80: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _022C1A80 - mov sl, #0 - mov r8, sl - str sl, [sp] - mov r7, r8 - b _022C1C1C -_022C1AA4: - mov r0, #0x5c - mul r1, r7, r0 - ldrb r0, [fp, r1] - cmp r0, #0 - beq _022C1C24 - add r5, fp, r1 - ldrsh r0, [r5, #0x54] - add r6, r4, r1 - strh r0, [r6, #0x54] - ldr r1, [r5, #0x44] - ldr r0, [r6, #0x44] - cmp r1, r0 - addne r0, sp, #0x10 - movne r1, #1 - strneb r1, [r0, r7] - add r0, r5, #1 - add r1, r6, #1 - bl strcmp - cmp r0, #0 - addne r0, sp, #8 - movne r1, #1 - strneb r1, [r0, r7] - ldrsh r1, [r5, #0x4a] - ldrsh r0, [r6, #0x4a] - cmp r1, r0 - addne r0, sp, #0x10 - movne r1, #1 - strneb r1, [r0, r7] - ldrsh r1, [r5, #0x4c] - ldrsh r0, [r6, #0x4c] - cmp r1, r0 - addne r0, sp, #0x10 - movne r1, #1 - strneb r1, [r0, r7] - ldrsh r1, [r5, #0x48] - ldrsh r0, [r6, #0x48] - cmp r1, r0 - addne r0, sp, #0x10 - movne r1, #1 - strneb r1, [r0, r7] - ldrsh r0, [r5, #0x42] - ldrsh r1, [r6, #0x42] - cmp r0, r1 - beq _022C1B88 - add r3, sp, #0x10 - mov ip, #1 - add r2, sp, #0xc - add r1, sp, #4 - strb ip, [r3, r7] - strb ip, [r2, r7] - strb ip, [r1, r7] - ldrsh r1, [r6, #0x42] - bl GendersEqual - cmp r0, #0 - addeq r0, sp, #8 - moveq r1, #1 - streqb r1, [r0, r7] -_022C1B88: - ldrb r1, [r5, #0x4e] - ldrb r0, [r6, #0x4e] - cmp r1, r0 - movne r0, #1 - addne r1, sp, #0x10 - strne r0, [sp] - strneb r0, [r1, r7] - add r0, sp, #0x10 - ldrb r0, [r0, r7] - cmp r0, #0 - addeq r0, sp, #0xc - ldreqb r0, [r0, r7] - cmpeq r0, #0 - addeq r0, sp, #8 - ldreqb r0, [r0, r7] - cmpeq r0, #0 - addeq r0, sp, #4 - ldreqb r0, [r0, r7] - cmpeq r0, #0 - beq _022C1C14 - mov ip, #5 -_022C1BDC: - ldmia r5!, {r0, r1, r2, r3} - stmia r6!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _022C1BDC - ldmia r5, {r0, r1, r2} - stmia r6, {r0, r1, r2} - add r0, sp, #4 - ldrb r0, [r0, r7] - cmp r0, #0 - ldrne r0, _022C1CD0 ; =ov10_022DC1D0 - movne r1, #1 - ldrne r0, [r0] - addne r0, r0, r7 - strneb r1, [r0, #0x84] -_022C1C14: - add r8, r8, #1 - add r7, r7, #1 -_022C1C1C: - cmp r7, #4 - blt _022C1AA4 -_022C1C24: - mov r5, #0x5c - b _022C1C38 -_022C1C2C: - mla r0, r7, r5, r4 - bl ov10_022C1D40 - add r7, r7, #1 -_022C1C38: - cmp r7, #4 - blt _022C1C2C - ldr r0, [sp] - ldr r1, _022C1CD0 ; =ov10_022DC1D0 - cmp r0, #0 - ldr r0, [r1] - cmpeq sb, r8 - str r8, [r0] - beq _022C1C6C - ldr r0, _022C1CE4 ; =0x0000FFFF - cmp sb, r8 - orrlt r0, r0, #0x80000 - b _022C1CC8 -_022C1C6C: - mov r7, #0 - mov r5, #1 - mov r3, #2 - add r4, sp, #8 - mov r1, #4 - add r2, sp, #0xc - add r6, sp, #0x10 -_022C1C88: - ldrb r0, [r6, r7] - cmp r0, #0 - movne r0, r7, lsl #2 - orrne sl, sl, r5, lsl r0 - ldrb r0, [r4, r7] - cmp r0, #0 - movne r0, r7, lsl #2 - orrne sl, sl, r3, lsl r0 - ldrb r0, [r2, r7] - cmp r0, #0 - movne r0, r7, lsl #2 - add r7, r7, #1 - orrne sl, sl, r1, lsl r0 - cmp r7, #4 - blt _022C1C88 - mov r0, sl -_022C1CC8: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022C1CD0: .word ov10_022DC1D0 -_022C1CD4: .word ov10_022DBFB6 -_022C1CD8: .word ov10_022DBFBE -_022C1CDC: .word ov10_022DBFB2 -_022C1CE0: .word ov10_022DBFBA -_022C1CE4: .word 0x0000FFFF - arm_func_end ov10_022C1A04 - -#ifndef JAPAN - arm_func_start ov10_022C1CE8 -ov10_022C1CE8: ; 0x022C1CE8 - ldr r2, _022C1D38 ; =0x0000017B - cmp r0, r2 - cmpne r0, #0x17c - addne r1, r2, #2 - cmpne r0, r1 - addne r1, r2, #3 - cmpne r0, r1 - beq _022C1D28 - ldr r1, _022C1D3C ; =0xFFFFFC2D - add r0, r0, r1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #3 - bhi _022C1D30 -_022C1D28: - mov r0, #1 - bx lr -_022C1D30: - mov r0, #0 - bx lr - .align 2, 0 -_022C1D38: .word 0x0000017B -_022C1D3C: .word 0xFFFFFC2D - arm_func_end ov10_022C1CE8 -#endif - - arm_func_start ov10_022C1D40 -ov10_022C1D40: ; 0x022C1D40 - mov r2, #0 - strb r2, [r0] - sub r1, r2, #1 - strh r1, [r0, #0x4a] - strh r1, [r0, #0x4c] - str r1, [r0, #0x44] - strb r2, [r0, #0x4f] - strh r2, [r0, #0x52] - str r2, [r0, #0x58] - ldr ip, _022C1D74 ; =MemZero - add r0, r0, #1 - mov r1, #0x40 - bx ip - .align 2, 0 -_022C1D74: .word MemZero - arm_func_end ov10_022C1D40 - - arm_func_start ov10_022C1D78 -ov10_022C1D78: ; 0x022C1D78 - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - mov r6, r1 - mov ip, #1 - mov r1, r2 - add r0, r4, #1 - mov r5, r3 - strb ip, [r4] - bl strcpy - strh r5, [r4, #0x42] - ldrsh r1, [sp, #0x10] - str r6, [r4, #0x44] - ldrsh r0, [sp, #0x14] - strh r1, [r4, #0x48] - ldrsh r1, [sp, #0x18] - strh r0, [r4, #0x4a] - ldrsh r0, [sp, #0x1c] - strh r1, [r4, #0x4c] - mov r1, #0 - strb r1, [r4, #0x4f] - strb r1, [r4, #0x56] - strh r0, [r4, #0x52] - str r1, [r4, #0x58] - strb r1, [r4, #0x4e] - strh r1, [r4, #0x54] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov10_022C1D78 - - arm_func_start ov10_022C1DE0 -ov10_022C1DE0: ; 0x022C1DE0 - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - mov r6, r1 - mov ip, #1 - mov r1, r2 - add r0, r4, #1 - mov r5, r3 - strb ip, [r4] - bl strcpy - strh r5, [r4, #0x42] - ldrsh r1, [sp, #0x10] - str r6, [r4, #0x44] - ldrsh r0, [sp, #0x14] - strh r1, [r4, #0x48] - ldrsh r1, [sp, #0x18] - strh r0, [r4, #0x4a] - ldrsh r0, [sp, #0x1c] - strh r1, [r4, #0x4c] - mov r1, #1 - strb r1, [r4, #0x4f] - strb r1, [r4, #0x56] - strh r0, [r4, #0x52] - mov r1, #0 - strb r1, [r4, #0x4e] - ldrsh r0, [sp, #0x20] - str r1, [r4, #0x58] - strh r0, [r4, #0x54] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov10_022C1DE0 - - arm_func_start ov10_022C1E50 -ov10_022C1E50: ; 0x022C1E50 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, #0 - mov r4, #0x5c -_022C1E60: - smlabb r0, r5, r4, r6 - bl ov10_022C1D40 - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - cmp r5, #4 - blt _022C1E60 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov10_022C1E50 - - arm_func_start ov10_022C1E80 -ov10_022C1E80: ; 0x022C1E80 - stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x14 - movs r7, r2 - movne r4, #0xf - mov sb, r0 - mov r8, r1 - mov r6, r3 - moveq r4, #0x300 - bl GetGameMode - cmp r0, #3 - moveq r0, #1 - movne r0, #0 - strb r0, [sb, #0x21] - tst r0, #0xff - add r1, sp, #0 - beq _022C1ED0 - ldr r0, _022C1F88 ; =ov10_022DC06C - mov r2, r4 - bl sub_020522F0 - b _022C1EDC -_022C1ED0: - ldr r0, _022C1F8C ; =ov10_022DC080 - mov r2, r4 - bl sub_020522F0 -_022C1EDC: - add r5, sp, #0 - ldmia r5!, {r0, r1, r2, r3} - mov r4, sb - stmia r4!, {r0, r1, r2, r3} - ldr r0, [r5] - mov lr, r8 - str r0, [r4] - ldr r0, [sp, #0xc] - add ip, sb, #0x24 - str r0, [sb, #0x14] - ldr r0, [sp, #4] - mov r5, #0 - str r0, [sb, #0x18] - ldr r4, [sp, #0x10] - str r4, [sb, #0x1c] - ldmia lr!, {r0, r1, r2, r3} - stmia ip!, {r0, r1, r2, r3} - ldr r0, [lr] - str r0, [ip] - strb r7, [sb, #0x20] -_022C1F2C: - mov r1, r5, lsl #0x10 - ldr r0, [r8, #0x10] - mov r2, r4 - mov r1, r1, lsr #0x10 - bl CopyColorToPaletteDataRgba - add r5, r5, #1 - cmp r5, #0xa0 - add r4, r4, #4 - blt _022C1F2C - cmp r6, #0 - beq _022C1F80 - ldr r0, [r8, #0x10] - bl MarkPaletteDataAsNeedingUpdate - mov r1, #1 - mov r2, r1 - mov r0, #0 - bl GetBgRegionArea - ldr r1, [sb, #0x18] - ldr r2, [sb, #8] - mov r3, #0 - bl sub_02051FB4 -_022C1F80: - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022C1F88: .word ov10_022DC06C -_022C1F8C: .word ov10_022DC080 - arm_func_end ov10_022C1E80 - - arm_func_start ov10_022C1F90 -ov10_022C1F90: ; 0x022C1F90 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - mov sl, r0 - mov sb, r2 - mov r8, r3 - cmp r1, #0 - beq _022C2040 - ldr fp, _022C21D0 ; =ov10_022DC1D4 - mov r8, #0 - mov r5, sb, lsl #4 - add r4, fp, sb, lsl #4 -_022C1FBC: - mov r7, #0 - mov r6, r8, lsl #5 -_022C1FC4: - ldrsh r1, [fp, r5] - ldr r2, [sl, #0x14] - ldrsh r0, [r4, #2] - add r3, r7, r1 - add r2, r2, r6, lsl #1 - mov r1, r7, lsl #1 - ldrh sb, [r1, r2] - add r0, r8, r0 - add r1, sp, #8 - str r3, [sp, #8] - str r0, [sp, #0xc] - ldr r0, [sl, #0x2c] - mov r2, #0 - bl sub_0200B3FC - ldr r0, _022C21D4 ; =0x00000FFF - add r1, sp, #8 - and r0, sb, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - orr r0, r0, #0x5000 - mov r0, r0, lsl #0x10 - mov r2, r0, lsr #0x10 - ldr r0, [sl, #0x30] - bl sub_0200B3FC - add r7, r7, #1 - cmp r7, #0x10 - blt _022C1FC4 - add r8, r8, #1 - cmp r8, #0xc - blt _022C1FBC - b _022C21C8 -_022C2040: - ldrb r0, [sl, #0x21] - cmp r0, #0 - movne r7, #1 - bne _022C2064 - cmp r8, #0 - movne r0, #8 - moveq r0, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, lsr #0x10 -_022C2064: - ldr r0, _022C21D0 ; =ov10_022DC1D4 - mov r5, #0 - add r0, r0, sb, lsl #4 - mov fp, sb, lsl #4 - str r0, [sp, #4] -_022C2078: - mov r6, #0 - mov r4, r5, lsl #5 -_022C2080: - ldr r0, [sl, #0x14] - mov r1, r6, lsl #1 - add r0, r0, r4, lsl #1 - ldrh r2, [r1, r0] - ldr r3, _022C21D4 ; =0x00000FFF - ldr r0, _022C21D0 ; =ov10_022DC1D4 - and r2, r2, r3 - ldrsh r1, [r0, fp] - ldr r0, [sp, #4] - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - ldrsh r0, [r0, #2] - orr r2, r2, r7, lsl #12 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - str r2, [sp] - add r1, r6, r1 - str r1, [sp, #8] - add r0, r5, r0 - str r0, [sp, #0xc] - ldr r0, [sl, #0x2c] - add r1, sp, #8 - mov r2, #0 - bl sub_0200B3FC - ldr r2, [sp] - ldr r0, [sl, #0x30] - add r1, sp, #8 - bl sub_0200B3FC - add r6, r6, #1 - cmp r6, #0x10 - blt _022C2080 - add r5, r5, #1 - cmp r5, #0xc - blt _022C2078 - ldrb r0, [sl, #0x21] - cmp r0, #0 - movne r4, #0 - bne _022C212C - cmp r8, #0 - movne r0, #7 - moveq r0, #0 - mov r0, r0, lsl #0x10 - mov r4, r0, lsr #0x10 -_022C212C: - ldrb r0, [sl, #0x20] - cmp r0, #0 - bne _022C21C8 - ldr r0, _022C21D0 ; =ov10_022DC1D4 - ldr fp, _022C21D4 ; =0x00000FFF - mov r7, #0 - add r5, r0, sb, lsl #4 -_022C2148: - mov r8, #0 - mov r6, r7, lsl #5 -_022C2150: - ldr r1, [sl, #0x14] - ldrsh r0, [r5, #4] - add r1, r1, r6, lsl #1 - add r1, r1, r8, lsl #1 - ldrh r3, [r1, #0x20] - add r2, r8, r0 - ldrsh r1, [r5, #6] - and r0, r3, fp - mov r0, r0, lsl #0x10 - add r1, r7, r1 - mov r0, r0, lsr #0x10 - orr r0, r0, r4, lsl #12 - str r2, [sp, #8] - str r1, [sp, #0xc] - mov r3, r0, lsl #0x10 - ldr r0, [sl, #0x2c] - add r1, sp, #8 - mov r2, #0 - mov sb, r3, lsr #0x10 - bl sub_0200B3FC - ldr r0, [sl, #0x30] - mov r2, sb - add r1, sp, #8 - bl sub_0200B3FC - add r8, r8, #1 - cmp r8, #6 - blt _022C2150 - add r7, r7, #1 - cmp r7, #6 - blt _022C2148 -_022C21C8: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022C21D0: .word ov10_022DC1D4 -_022C21D4: .word 0x00000FFF - arm_func_end ov10_022C1F90 - - arm_func_start ov10_022C21D8 -ov10_022C21D8: ; 0x022C21D8 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #8 - mov r5, r0 - ldr r0, [r5, #0x14] - mov r4, #0 - add r0, r0, #0x400 - ldrh sl, [r0, #0x80] - add r7, sp, #0 - mov r6, r4 - mov r8, r4 -_022C2200: - mov sb, r8 -_022C2204: - str sb, [sp] - str r4, [sp, #4] - ldr r0, [r5, #0x2c] - mov r1, r7 - mov r2, r6 - bl sub_0200B3FC - ldr r0, [r5, #0x30] - mov r1, r7 - mov r2, sl - bl sub_0200B3FC - add sb, sb, #1 - cmp sb, #0x20 - blt _022C2204 - add r4, r4, #1 - cmp r4, #0x20 - blt _022C2200 - ldr r0, [r5, #0x2c] - bl sub_0200B330 - ldr r0, [r5, #0x30] - bl sub_0200B330 - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - arm_func_end ov10_022C21D8 - - arm_func_start ov10_022C225C -ov10_022C225C: ; 0x022C225C - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x2c] - bl sub_0200B330 - ldr r0, [r4, #0x30] - bl sub_0200B330 - ldmia sp!, {r4, pc} - arm_func_end ov10_022C225C - - arm_func_start ov10_022C2278 -ov10_022C2278: ; 0x022C2278 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r1, [r4] - cmp r1, #0 - ldmeqia sp!, {r4, pc} - bl sub_02052334 - mov r0, r4 - mov r1, #0x14 - bl MemZero - ldmia sp!, {r4, pc} - arm_func_end ov10_022C2278 - - arm_func_start ov10_022C22A0 -ov10_022C22A0: ; 0x022C22A0 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0 - mov r1, r0 - mov r2, #1 - bl GetBgRegionArea - mov r1, #1 - str r0, [r4] - mov r2, r1 - mov r0, #0 - bl GetBgRegionArea - str r0, [r4, #4] - mov r0, #0 - mov r1, #1 - bl sub_02051DFC - str r0, [r4, #8] - mov r0, #1 - mov r1, r0 - bl sub_02051DFC - str r0, [r4, #0xc] - mov r0, #1 - bl sub_02051ED4 - str r0, [r4, #0x10] - ldmia sp!, {r4, pc} - arm_func_end ov10_022C22A0 - - arm_func_start ov10_022C2300 -ov10_022C2300: ; 0x022C2300 - stmia r0, {r1, r2} - ldr r2, [sp] - str r3, [r0, #8] - ldr r1, [sp, #4] - str r2, [r0, #0xc] - str r1, [r0, #0x10] - bx lr - arm_func_end ov10_022C2300 - - arm_func_start ov10_022C231C -ov10_022C231C: ; 0x022C231C - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, [r4, #0x28] - ldr r1, [r4, #0x18] - ldr r2, [r4, #8] - bl Memcpy32 - ldr r0, [r4, #0x34] - bl MarkPaletteDataAsNeedingUpdate - ldmia sp!, {r4, pc} - arm_func_end ov10_022C231C - - arm_func_start ov10_022C2340 -ov10_022C2340: ; 0x022C2340 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r0, #0xc - mov r1, #0 - bl MemAlloc - ldr r1, _022C23AC ; =ov10_022DC214 - mov r5, r4, lsl #3 - str r0, [r1] - mov r0, r5 - mov r1, #0 - bl MemAlloc - ldr r2, _022C23AC ; =ov10_022DC214 - mov r1, r5 - ldr r3, [r2] - str r0, [r3] - ldr r0, [r2] - ldr r0, [r0] - bl MemZero - ldr r0, _022C23AC ; =ov10_022DC214 - ldr r0, [r0] - str r4, [r0, #4] - bl Rand16Bit - ldr r1, _022C23AC ; =ov10_022DC214 - and r2, r0, #0x400 - ldr r0, [r1] - strh r2, [r0, #8] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022C23AC: .word ov10_022DC214 - arm_func_end ov10_022C2340 - - arm_func_start ov10_022C23B0 -ov10_022C23B0: ; 0x022C23B0 - stmdb sp!, {r3, lr} - ldr r0, _022C23E8 ; =ov10_022DC214 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldr r0, [r0] - bl MemFree - ldr r0, _022C23E8 ; =ov10_022DC214 - ldr r0, [r0] - bl MemFree - ldr r0, _022C23E8 ; =ov10_022DC214 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022C23E8: .word ov10_022DC214 - arm_func_end ov10_022C23B0 - - arm_func_start ov10_022C23EC -ov10_022C23EC: ; 0x022C23EC - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _022C244C ; =ov10_022DC214 - ldr r1, [r0] - cmp r1, #0 - ldmeqia sp!, {r4, r5, r6, pc} - ldr r0, [r1, #4] - ldr r4, [r1] - mov r0, r0, lsl #0x10 - movs r6, r0, lsr #0x10 - mov r5, #0 - ldmeqia sp!, {r4, r5, r6, pc} - b _022C2440 -_022C241C: - ldr r1, [r4] - cmp r1, #0 - beq _022C2430 - mov r0, r4 - blx r1 -_022C2430: - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, lsr #0x10 - add r4, r4, #8 -_022C2440: - cmp r5, r6 - blo _022C241C - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022C244C: .word ov10_022DC214 - arm_func_end ov10_022C23EC - - arm_func_start ov10_022C2450 -ov10_022C2450: ; 0x022C2450 - stmdb sp!, {r4, r5, r6, lr} - ldr r2, _022C24D4 ; =ov10_022DC214 - mov r5, r0 - ldr r6, [r2] - mov r4, r1 - ldr r0, [r6, #4] - ldr r2, [r6] - mov r1, r0, lsl #0x10 - mov r3, #0 - b _022C24A4 -_022C2478: - ldr r0, [r2] - cmp r0, #0 - ldreqh r0, [r6, #8] - orreq r0, r3, r0 - moveq r0, r0, lsl #0x10 - moveq r6, r0, lsr #0x10 - beq _022C24B0 - add r0, r3, #1 - mov r0, r0, lsl #0x10 - mov r3, r0, lsr #0x10 - add r2, r2, #8 -_022C24A4: - cmp r3, r1, lsr #16 - blo _022C2478 - ldr r6, _022C24D8 ; =0x0000FFFF -_022C24B0: - ldr r0, _022C24D8 ; =0x0000FFFF - cmp r6, r0 - beq _022C24CC - mov r0, r6 - bl ov10_022C24E8 - str r5, [r0] - str r4, [r0, #4] -_022C24CC: - mov r0, r6 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022C24D4: .word ov10_022DC214 -_022C24D8: .word 0x0000FFFF - arm_func_end ov10_022C2450 - - arm_func_start ov10_022C24DC -ov10_022C24DC: ; 0x022C24DC - ldr ip, _022C24E4 ; =ov10_022C250C - bx ip - .align 2, 0 -_022C24E4: .word ov10_022C250C - arm_func_end ov10_022C24DC - - arm_func_start ov10_022C24E8 -ov10_022C24E8: ; 0x022C24E8 - ldr r1, _022C2508 ; =ov10_022DC214 - ldr r1, [r1] - ldrh r2, [r1, #8] - ldr r1, [r1] - sub r0, r0, r2 - mov r0, r0, lsl #0x10 - add r0, r1, r0, lsr #13 - bx lr - .align 2, 0 -_022C2508: .word ov10_022DC214 - arm_func_end ov10_022C24E8 - - arm_func_start ov10_022C250C -ov10_022C250C: ; 0x022C250C - ldr r1, [r0, #4] - cmp r1, #0 - movne r1, #0 - strne r1, [r0, #4] - mov r1, #0 - str r1, [r0] - bx lr - arm_func_end ov10_022C250C - - arm_func_start ov10_022C2528 -ov10_022C2528: ; 0x022C2528 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - sub r0, r2, r1 - mov r1, r3 - bl MultiplyByFixedPoint - mov r4, r0 - str r0, [r5] - bl abs - ldr r1, [sp, #0x10] - cmp r0, r1 - bgt _022C256C - cmp r4, #0 - rsblt r0, r1, #0 - strlt r0, [r5] - strge r1, [r5] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_022C256C: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov10_022C2528 diff --git a/asm/overlay_10_022BFF78.s b/asm/overlay_10_022BFF78.s new file mode 100644 index 00000000..cd2023ee --- /dev/null +++ b/asm/overlay_10_022BFF78.s @@ -0,0 +1,3070 @@ + .include "asm/macros.inc" + .include "overlay_10_022BFF78.inc" + + .text + + arm_func_start ov10_022BFF78 +ov10_022BFF78: ; 0x022BFF78 + stmdb sp!, {r3, lr} + ldr r0, _022BFFA0 ; =ov10_022DC1C4 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _022BFFA0 ; =ov10_022DC1C4 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022BFFA0: .word ov10_022DC1C4 + arm_func_end ov10_022BFF78 + + arm_func_start ov10_022BFFA4 +ov10_022BFFA4: ; 0x022BFFA4 + stmdb sp!, {r3, lr} + ldr r0, _022BFFFC ; =ov10_022DC1C4 + mov ip, #0 + ldr r1, [r0] + mov r3, ip + str ip, [r1] + mov r1, ip +_022BFFC0: + mov lr, r3 +_022BFFC4: + ldr r2, [r0] + add r2, r2, #4 + add r2, r2, ip, lsl #6 + str r1, [r2, lr, lsl #5] + add r2, r2, lr, lsl #5 + strh r1, [r2, #6] + add lr, lr, #1 + str r1, [r2, #0xc] + cmp lr, #2 + blt _022BFFC4 + add ip, ip, #1 + cmp ip, #2 + blt _022BFFC0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022BFFFC: .word ov10_022DC1C4 + arm_func_end ov10_022BFFA4 + + arm_func_start ov10_022C0000 +ov10_022C0000: ; 0x022C0000 + stmdb sp!, {r3, lr} + ldr r1, _022C0064 ; =ov10_022DC1C4 + mov lr, r0 + ldr r3, [r1] + mov r2, #0 + b _022C0054 +_022C0018: + ldr r0, [lr, #8] + add r1, r3, r0, lsl #6 + add r0, r1, r2, lsl #5 + ldr r0, [r0, #4] + cmp r0, #0 + bne _022C0050 + add r0, r1, r2, lsl #5 + add ip, r0, #4 + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + ldmia lr, {r0, r1, r2, r3} + stmia ip, {r0, r1, r2, r3} + mov r0, #1 + ldmia sp!, {r3, pc} +_022C0050: + add r2, r2, #1 +_022C0054: + cmp r2, #2 + blt _022C0018 + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022C0064: .word ov10_022DC1C4 + arm_func_end ov10_022C0000 + + arm_func_start ov10_022C0068 +ov10_022C0068: ; 0x022C0068 + stmdb sp!, {r4, lr} + sub sp, sp, #0x20 + mov r4, r1 + cmp r0, #2 + beq _022C0088 + cmp r0, #3 + beq _022C00C8 + b _022C0104 +_022C0088: + mov r1, #0 + sub r0, r1, #1 + mov ip, #5 + mov r3, #0xe + str ip, [sp] + str r2, [sp, #8] + str r3, [sp, #0x10] + str r1, [sp, #0x14] + str r0, [sp, #0x1c] + bl ov10_022BD744 + cmp r0, #1 + moveq r0, #0 + movne r0, #2 + str r0, [sp, #0x18] + strh r4, [sp, #4] + b _022C0104 +_022C00C8: + mov r1, #0 + sub r0, r1, #1 + mov ip, #6 + mov r3, #0xe + str ip, [sp] + str r2, [sp, #8] + str r3, [sp, #0x10] + str r1, [sp, #0x14] + str r0, [sp, #0x1c] + bl ov10_022BD744 + cmp r0, #1 + moveq r0, #0 + movne r0, #2 + str r0, [sp, #0x18] + strh r4, [sp, #4] +_022C0104: + add r0, sp, #0 + bl ov10_022C0000 + add sp, sp, #0x20 + ldmia sp!, {r4, pc} + arm_func_end ov10_022C0068 + + arm_func_start ov10_022C0114 +ov10_022C0114: ; 0x022C0114 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x20 + sub r4, r1, #1 + mov r7, r0 + mov r6, r2 + mov r5, r3 + cmp r4, #1 + ldr r4, [sp, #0x38] + bls _022C01F4 + cmp r7, #0 + beq _022C01F4 + mov r0, r1 + mov r1, r6 + mov r2, r4 + bl ov10_022C067C + mov r8, r0 + mvn r1, #0 + cmp r8, r1 + beq _022C01F4 + sub r1, r1, #1 + cmp r8, r1 + beq _022C01E8 + mov r1, r6 + mov r2, r4 + bl ov10_022C075C + cmp r8, #0 + beq _022C018C + cmp r8, #1 + beq _022C01B8 + b _022C01E0 +_022C018C: + mov r1, #1 + sub r0, r1, #2 + mov r2, #3 + str r2, [sp] + str r4, [sp, #8] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r5, [sp, #0x1c] + str r0, [sp, #0x18] + strh r7, [sp, #6] + b _022C01E0 +_022C01B8: + mov r1, #0 + sub r0, r1, #1 + mov r2, #4 + str r2, [sp] + str r4, [sp, #8] + str r1, [sp, #0x10] + str r0, [sp, #0x14] + str r5, [sp, #0x1c] + str r0, [sp, #0x18] + strh r7, [sp, #6] +_022C01E0: + add r0, sp, #0 + bl ov10_022C0000 +_022C01E8: + mov r0, r6 + mov r1, r4 + bl ov10_022C0780 +_022C01F4: + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + arm_func_end ov10_022C0114 + + arm_func_start ov10_022C01FC +ov10_022C01FC: ; 0x022C01FC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r1 + mov r4, r0 + mov r7, r2 + mov r6, r3 + cmp r5, #5 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + bl sub_0206409C + ldr r0, [r0, #8] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r5 + mov r1, r7 + mov r2, r6 + bl ov10_022C067C + mov r5, r0 + mvn r1, #0 + cmp r5, r1 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + sub r1, r1, #1 + cmp r5, r1 + beq _022C0270 + mov r1, r7 + mov r2, r6 + bl ov10_022C075C + mov r0, r5 + mov r1, r4 + mov r2, r6 + bl ov10_022C0068 +_022C0270: + mov r0, r7 + mov r1, r6 + bl ov10_022C0780 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov10_022C01FC + + arm_func_start ov10_022C0280 +ov10_022C0280: ; 0x022C0280 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r5, r1 + mov r4, r0 + mov r7, r2 + mov r6, r3 + cmp r5, #6 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + bl sub_0206409C + ldr r0, [r0, #0xc] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r0, r5 + mov r1, r7 + mov r2, r6 + bl ov10_022C067C + mov r5, r0 + mvn r1, #0 + cmp r5, r1 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + sub r1, r1, #1 + cmp r5, r1 + beq _022C02F4 + mov r1, r7 + mov r2, r6 + bl ov10_022C075C + mov r0, r5 + mov r1, r4 + mov r2, r6 + bl ov10_022C0068 +_022C02F4: + mov r0, r7 + mov r1, r6 + bl ov10_022C0780 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov10_022C0280 + + arm_func_start ov10_022C0304 +ov10_022C0304: ; 0x022C0304 + stmdb sp!, {r4, lr} + mov r4, r1 + ldr r0, [r4] + cmp r0, #0 + ldmeqia sp!, {r4, pc} + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _022C0390 +_022C0324: ; jump table + b _022C0390 ; case 0 + b _022C0390 ; case 1 + b _022C0390 ; case 2 + b _022C0340 ; case 3 + b _022C0390 ; case 4 + b _022C034C ; case 5 + b _022C0390 ; case 6 +_022C0340: + mov r0, #0 + strh r0, [r4, #6] + b _022C0390 +_022C034C: + bl ov10_022BD744 + cmp r0, #0 + bne _022C0364 + mov r0, #5 + mov r1, #0 + bl UnkMapRelatedFunc +_022C0364: + ldr r0, [r4] + cmp r0, #0 + beq _022C0390 + ldrsh r0, [r4, #4] + bl sub_0206409C + ldr r0, [r4, #8] + bl ov10_022BDCA4 + mov r2, r0 + ldrsh r0, [r4, #4] + ldr r1, [r4, #0x14] + bl sub_02064014 +_022C0390: + mov r0, #0 + str r0, [r4] + ldmia sp!, {r4, pc} + arm_func_end ov10_022C0304 + + arm_func_start ov10_022C039C +ov10_022C039C: ; 0x022C039C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r4, _022C03F0 ; =ov10_022DC1C4 + ldr r0, [r4] + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, r6, r7, pc} + mov r6, #0 + mov r5, r6 +_022C03B8: + mov r7, r5 +_022C03BC: + ldr r2, [r4] + add r0, r2, #4 + add r1, r0, r6, lsl #6 + ldr r0, [r2] + add r1, r1, r7, lsl #5 + bl ov10_022C0304 + add r7, r7, #1 + cmp r7, #2 + blt _022C03BC + add r6, r6, #1 + cmp r6, #2 + blt _022C03B8 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022C03F0: .word ov10_022DC1C4 + arm_func_end ov10_022C039C + + arm_func_start ov10_022C03F4 +ov10_022C03F4: ; 0x022C03F4 + stmdb sp!, {r3, lr} + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _022C042C +_022C0404: ; jump table + b _022C042C ; case 0 + b _022C042C ; case 1 + b _022C042C ; case 2 + b _022C041C ; case 3 + b _022C041C ; case 4 + b _022C042C ; case 5 +_022C041C: + mov r0, r1, lsl #0x10 + mov r0, r0, asr #0x10 + bl ov10_022BFE0C + mov r2, r0 +_022C042C: + mov r1, #0 + ldr r0, _022C044C ; =WAN_TABLE + str r1, [sp] + ldr r0, [r0] + mov r1, #3 + mov r3, #0xf + bl LoadWanTableEntryFromPack + ldmia sp!, {r3, pc} + .align 2, 0 +_022C044C: .word WAN_TABLE + arm_func_end ov10_022C03F4 + + arm_func_start ov10_022C0450 +ov10_022C0450: ; 0x022C0450 + stmdb sp!, {r3, lr} + cmp r0, #6 + mov r2, #0 + addls pc, pc, r0, lsl #2 + b _022C04C4 +_022C0464: ; jump table + b _022C04C4 ; case 0 + b _022C04C4 ; case 1 + b _022C04C4 ; case 2 + b _022C04C4 ; case 3 + b _022C04C4 ; case 4 + b _022C0480 ; case 5 + b _022C04A4 ; case 6 +_022C0480: + mov r0, r1, lsl #0x10 + mov r0, r0, asr #0x10 + bl ov10_022BFE18 + mov r1, r0 + mov r0, #3 + mov r2, #0xf + bl sub_02063FC8 + mov r2, r0 + b _022C04C4 +_022C04A4: + mov r0, r1, lsl #0x10 + mov r0, r0, asr #0x10 + bl ov10_022BFE28 + mov r1, r0 + mov r0, #3 + mov r2, #0xf + bl sub_02063FC8 + mov r2, r0 +_022C04C4: + mov r0, r2 + ldmia sp!, {r3, pc} + arm_func_end ov10_022C0450 + + arm_func_start ov10_022C04CC +ov10_022C04CC: ; 0x022C04CC + ldr ip, _022C04D4 ; =sub_02063FF4 + bx ip + .align 2, 0 +_022C04D4: .word sub_02063FF4 + arm_func_end ov10_022C04CC + + arm_func_start ov10_022C04D8 +ov10_022C04D8: ; 0x022C04D8 + stmdb sp!, {r4, lr} + ldr r0, _022C0558 ; =ov10_022DC1C8 + ldr r0, [r0] + cmp r0, #0 + bne _022C0508 + mov r0, #0x40 + mov r1, #0xb + bl MemAlloc + ldr r2, _022C0558 ; =ov10_022DC1C8 + mov r1, #0x40 + str r0, [r2] + bl MemZero +_022C0508: + mov lr, #0 + ldr r0, _022C0558 ; =ov10_022DC1C8 + mvn r3, #0 + mov r2, lr + mov ip, lr +_022C051C: + mov r4, ip +_022C0520: + ldr r1, [r0] + add r1, r1, lr, lsl #5 + str r3, [r1, r4, lsl #3] + ldr r1, [r0] + add r1, r1, lr, lsl #5 + add r1, r1, r4, lsl #3 + add r4, r4, #1 + str r2, [r1, #4] + cmp r4, #4 + blt _022C0520 + add lr, lr, #1 + cmp lr, #2 + blt _022C051C + ldmia sp!, {r4, pc} + .align 2, 0 +_022C0558: .word ov10_022DC1C8 + arm_func_end ov10_022C04D8 + + arm_func_start ov10_022C055C +ov10_022C055C: ; 0x022C055C + stmdb sp!, {r3, lr} + ldr r0, _022C0584 ; =ov10_022DC1C8 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _022C0584 ; =ov10_022DC1C8 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022C0584: .word ov10_022DC1C8 + arm_func_end ov10_022C055C + + arm_func_start ov10_022C0588 +ov10_022C0588: ; 0x022C0588 + stmdb sp!, {r4, lr} + mov lr, #0 + ldr r0, _022C05DC ; =ov10_022DC1C8 + mvn r3, #0 + mov r2, lr + mov ip, lr +_022C05A0: + mov r4, ip +_022C05A4: + ldr r1, [r0] + add r1, r1, lr, lsl #5 + str r3, [r1, r4, lsl #3] + ldr r1, [r0] + add r1, r1, lr, lsl #5 + add r1, r1, r4, lsl #3 + add r4, r4, #1 + str r2, [r1, #4] + cmp r4, #4 + blt _022C05A4 + add lr, lr, #1 + cmp lr, #2 + blt _022C05A0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022C05DC: .word ov10_022DC1C8 + arm_func_end ov10_022C0588 + + arm_func_start ov10_022C05E0 +ov10_022C05E0: ; 0x022C05E0 + cmp r0, #3 + bne _022C0604 + ldr r0, _022C0678 ; =ov10_022DC1C8 + ldr r0, [r0] + ldr r0, [r0, r2, lsl #5] + cmp r1, r0 + bne _022C0670 + mov r0, #0 + bx lr +_022C0604: + cmp r0, #4 + bne _022C062C + ldr r0, _022C0678 ; =ov10_022DC1C8 + ldr r0, [r0] + add r0, r0, r2, lsl #5 + ldr r0, [r0, #8] + cmp r1, r0 + bne _022C0670 + mov r0, #1 + bx lr +_022C062C: + cmp r0, #6 + bne _022C0654 + ldr r0, _022C0678 ; =ov10_022DC1C8 + ldr r0, [r0] + add r0, r0, r2, lsl #5 + ldr r0, [r0, #0x18] + cmp r1, r0 + bne _022C0670 + mov r0, #3 + bx lr +_022C0654: + ldr r0, _022C0678 ; =ov10_022DC1C8 + ldr r0, [r0] + add r0, r0, r2, lsl #5 + ldr r0, [r0, #0x10] + cmp r1, r0 + moveq r0, #2 + bxeq lr +_022C0670: + mvn r0, #2 + bx lr + .align 2, 0 +_022C0678: .word ov10_022DC1C8 + arm_func_end ov10_022C05E0 + + arm_func_start ov10_022C067C +ov10_022C067C: ; 0x022C067C + cmp r0, #3 + bne _022C06B4 + ldr r0, _022C0758 ; =ov10_022DC1C8 + ldr r3, [r0] + ldr r0, [r3, r2, lsl #5] + cmp r1, r0 + mvneq r0, #1 + bxeq lr + add r0, r3, r2, lsl #5 + ldr r0, [r0, #4] + cmp r0, #0 + bne _022C0750 + mov r0, #0 + bx lr +_022C06B4: + cmp r0, #4 + bne _022C06EC + ldr r0, _022C0758 ; =ov10_022DC1C8 + ldr r0, [r0] + add r2, r0, r2, lsl #5 + ldr r0, [r2, #8] + cmp r1, r0 + mvneq r0, #1 + bxeq lr + ldr r0, [r2, #0xc] + cmp r0, #0 + bne _022C0750 + mov r0, #1 + bx lr +_022C06EC: + cmp r0, #6 + bne _022C0724 + ldr r0, _022C0758 ; =ov10_022DC1C8 + ldr r0, [r0] + add r2, r0, r2, lsl #5 + ldr r0, [r2, #0x18] + cmp r1, r0 + mvneq r0, #1 + bxeq lr + ldr r0, [r2, #0x1c] + cmp r0, #0 + bne _022C0750 + mov r0, #3 + bx lr +_022C0724: + ldr r0, _022C0758 ; =ov10_022DC1C8 + ldr r0, [r0] + add r2, r0, r2, lsl #5 + ldr r0, [r2, #0x10] + cmp r1, r0 + mvneq r0, #1 + bxeq lr + ldr r0, [r2, #0x14] + cmp r0, #0 + moveq r0, #2 + bxeq lr +_022C0750: + mvn r0, #0 + bx lr + .align 2, 0 +_022C0758: .word ov10_022DC1C8 + arm_func_end ov10_022C067C + + arm_func_start ov10_022C075C +ov10_022C075C: ; 0x022C075C + ldr r3, _022C077C ; =ov10_022DC1C8 + ldr r3, [r3] + add r3, r3, r2, lsl #5 + add r2, r3, r0, lsl #3 + ldr r2, [r2, #4] + cmp r2, #0 + streq r1, [r3, r0, lsl #3] + bx lr + .align 2, 0 +_022C077C: .word ov10_022DC1C8 + arm_func_end ov10_022C075C + + arm_func_start ov10_022C0780 +ov10_022C0780: ; 0x022C0780 + stmdb sp!, {r3, lr} + ldr r2, _022C07CC ; =ov10_022DC1C8 + mov ip, #0 + ldr lr, [r2] + add r3, lr, r1, lsl #5 + b _022C07C0 +_022C0798: + ldr r2, [r3, ip, lsl #3] + cmp r0, r2 + bne _022C07BC + add r0, lr, #4 + add r1, r0, r1, lsl #5 + ldr r0, [r1, ip, lsl #3] + add r0, r0, #1 + str r0, [r1, ip, lsl #3] + ldmia sp!, {r3, pc} +_022C07BC: + add ip, ip, #1 +_022C07C0: + cmp ip, #3 + ble _022C0798 + ldmia sp!, {r3, pc} + .align 2, 0 +_022C07CC: .word ov10_022DC1C8 + arm_func_end ov10_022C0780 + + arm_func_start ov10_022C07D0 +ov10_022C07D0: ; 0x022C07D0 + ldr r2, _022C07E4 ; =ov10_022DC1C8 + ldr r2, [r2] + add r1, r2, r1, lsl #5 + add r0, r1, r0, lsl #3 + bx lr + .align 2, 0 +_022C07E4: .word ov10_022DC1C8 + arm_func_end ov10_022C07D0 + + arm_func_start ov10_022C07E8 +ov10_022C07E8: ; 0x022C07E8 + ldr r2, _022C0810 ; =ov10_022DC1C8 + ldr r2, [r2] + add r1, r2, r1, lsl #5 + add r0, r1, r0, lsl #3 + ldr r0, [r0, #4] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_022C0810: .word ov10_022DC1C8 + arm_func_end ov10_022C07E8 + + arm_func_start ov10_022C0814 +ov10_022C0814: ; 0x022C0814 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r2, _022C0968 ; =ov10_022DC1D0 + mov r8, r0 + ldr r0, [r2] + mov r7, r1 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + mov r0, #0x610 + mov r1, #0xf + bl MemAlloc + ldr r2, _022C0968 ; =ov10_022DC1D0 + mov r1, #0x610 + str r0, [r2] + bl MemZero + ldr r3, _022C0968 ; =ov10_022DC1D0 + mov r1, #0 + ldr r0, [r3] + mov r2, #1 + strb r1, [r0, #0x285] + ldr r0, [r3] + mov r6, r1 + strb r1, [r0, #0x286] + ldr r0, [r3] + strb r1, [r0, #0x5f2] + ldr r0, [r3] + strb r2, [r0, #0x5f3] + mvn r0, #1 +_022C0880: + ldr r4, [r3] + add r2, r1, #1 + add r4, r4, r1 + strb r0, [r4, #0x27c] + ldr r4, [r3] + mov r2, r2, lsl #0x10 + add r4, r4, r1 + strb r0, [r4, #0x280] + ldr r4, [r3] + add r4, r4, r1 + mov r1, r2, asr #0x10 + strb r6, [r4, #0x84] + cmp r1, #4 + blt _022C0880 + ldr r4, _022C0968 ; =ov10_022DC1D0 + mvn r5, #1 + ldr r1, [r4] + mov sb, #0x7c + strb r0, [r1, #0x284] + ldr r0, [r4] + strh r6, [r0, #4] +_022C08D4: + ldr r0, [r4] + add r0, r0, #0x88 + mla r0, r6, sb, r0 + bl InitAnimationControlWithSet__0201C0B0 + add r0, r6, #1 + ldr r1, [r4] + mov r0, r0, lsl #0x10 + add r1, r1, r6 + mov r6, r0, asr #0x10 + strb r5, [r1, #0x278] + cmp r6, #4 + blt _022C08D4 + ldr r0, _022C0968 ; =ov10_022DC1D0 + ldr r0, [r0] + add r0, r0, #0x310 + bl ov10_022C1E50 + ldr r0, _022C0968 ; =ov10_022DC1D0 + ldr r0, [r0] + add r0, r0, #0x480 + bl ov10_022C1E50 + ldr r0, _022C0968 ; =ov10_022DC1D0 + mov r6, #0 + ldr r1, [r0] + strb r7, [r1, #0x5f0] + ldr r1, [r0] + strb r6, [r1, #0x5f1] + ldr r1, [r0] + strb r6, [r1, #0x5f4] + ldr r5, [r0] + ldmia r8!, {r0, r1, r2, r3} + add r4, r5, #0x1f8 + add r4, r4, #0x400 + stmia r4!, {r0, r1, r2, r3} + ldr r0, [r8] + str r0, [r4] + strb r6, [r5, #0x5f5] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022C0968: .word ov10_022DC1D0 + arm_func_end ov10_022C0814 + + arm_func_start ov10_022C096C +ov10_022C096C: ; 0x022C096C + stmdb sp!, {r3, lr} + ldr r0, _022C0994 ; =ov10_022DC1D0 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _022C0994 ; =ov10_022DC1D0 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022C0994: .word ov10_022DC1D0 + arm_func_end ov10_022C096C + + arm_func_start ov10_022C0998 +ov10_022C0998: ; 0x022C0998 + stmdb sp!, {r4, r5, r6, lr} + ldr r2, _022C09E4 ; =ov10_022DC1D0 + mov r6, r0 + ldr r4, [r2] + mov r5, r1 + cmp r4, #0 + ldmeqia sp!, {r4, r5, r6, pc} + add lr, r4, #0x310 + mov ip, #0x17 +_022C09BC: + ldmia r6!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _022C09BC + ldrb r0, [r4, #0x5f3] + cmp r0, #0 + movne r0, #0 + strneb r0, [r4, #0x5f2] + streqb r5, [r4, #0x5f2] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022C09E4: .word ov10_022DC1D0 + arm_func_end ov10_022C0998 + + arm_func_start DrawTeamStats +DrawTeamStats: ; 0x022C09E8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x50 + ldr r3, _022C0CC0 ; =ov10_022DC1D0 + mov sl, r0 + ldr r0, [r3] + mov r5, r1 + cmp r0, #0 + mov r4, r2 + moveq r0, #0 + beq _022C0CB8 + mov r1, #0 + ldr r0, _022C0CC4 ; =WAN_TABLE + str r1, [sp] +#ifdef JAPAN + ldr r0, [r0] + mov r1, #4 + mov r2, #0x3f8 +#else + mov r1, #4 + ldr r0, [r0] + add r2, r1, #0x400 +#endif + mov r3, #0xf + bl LoadWanTableEntryFromPack + ldr r1, _022C0CC0 ; =ov10_022DC1D0 + ldr r2, [r1] + strh r0, [r2, #4] + ldr r0, [r1] + add r0, r0, #8 + bl InitAnimationControlWithSet__0201C0B0 + ldr r0, _022C0CC0 ; =ov10_022DC1D0 + ldr r0, [r0] + ldrsh r1, [r0, #4] + add r0, r0, #8 + bl SetSpriteIdForAnimationControl + ldr r0, _022C0CC0 ; =ov10_022DC1D0 + mov r1, #0 + ldr r3, [r0] + ldrh r2, [r3, #0xa] + orr r2, r2, #0x20 + strh r2, [r3, #0xa] + ldr r0, [r0] + add r0, r0, #8 + bl sub_0201D12C + mov r0, #0xd + str r0, [sp] + mov r1, #0 + str r1, [sp, #4] + str r1, [sp, #8] + mov r0, #1 + str r0, [sp, #0xc] + ldr r0, _022C0CC0 ; =ov10_022DC1D0 + mov r2, r1 + ldr r0, [r0] + mov r3, #0x71 + add r0, r0, #8 + bl SetAndPlayAnimationForAnimationControl + mov r3, r4 + ldr r0, _022C0CC0 ; =ov10_022DC1D0 + mov r2, r5 + ldr r1, [r0] + add r0, r1, #0x2d8 + add r1, r1, #0x1f8 + add r1, r1, #0x400 + bl ov10_022C1E80 + cmp r5, #0 + beq _022C0AF4 + ldr r0, _022C0CC0 ; =ov10_022DC1D0 + mov r3, #0 + ldr r2, [r0] + mov r1, #1 + strb r3, [r2, #0x285] + b _022C0B10 +_022C0AF4: + ldr r0, _022C0CC0 ; =ov10_022DC1D0 + mov r3, #1 + ldr r2, [r0] + mov r1, #0 + strb r3, [r2, #0x285] + ldr r2, [r0] + strb r3, [r2, #0x5f4] +_022C0B10: + ldr r0, [r0] + ldr fp, _022C0CC0 ; =ov10_022DC1D0 + strb r1, [r0, #0x60c] + ldr r0, [fp] + mvn r1, #1 + add r0, r0, #0x200 + ldrsb r0, [r0, #0x7c] + cmp r0, r1 + bne _022C0C10 + ldr r0, _022C0CC8 ; =ov10_022DBFEC + ldr r4, _022C0CCC ; =ov10_022DBFDC + add r6, sp, #0x20 + ldmia r0, {r0, r1, r2, r3} + stmia r6, {r0, r1, r2, r3} + ldmia r4, {r0, r1, r2, r3} + add r5, sp, #0x10 + stmia r5, {r0, r1, r2, r3} + mov r7, #0 + add r4, sp, #0x40 +_022C0B5C: + add r0, r7, r7, lsr #31 + mov r1, r0, asr #1 + mov r0, #0xc + mul sb, r1, r0 + mov ip, r7, lsr #0x1f +#ifdef JAPAN + rsb r8, ip, r7, lsl #31 +#endif + ldmia r6, {r0, r1, r2, r3} + stmia r4, {r0, r1, r2, r3} +#ifndef JAPAN + rsb r8, ip, r7, lsl #31 +#endif + add r8, ip, r8, ror #31 + mov r8, r8, lsl #4 +#ifdef JAPAN + add r0, r8, #7 + strb r0, [sp, #0x44] + add r0, sb, #1 +#else + add r0, sb, #7 + add r8, r8, #1 +#endif + strb r0, [sp, #0x45] + ldr r1, _022C0CD0 ; =ProcessTeamStatsNameGender + mov r0, r4 +#ifndef JAPAN + strb r8, [sp, #0x44] +#endif + bl CreateTextBox + ldr r1, [fp] +#ifdef JAPAN + add ip, r8, #1 +#else + add sb, sb, #9 +#endif + add r1, r1, r7 + strb r0, [r1, #0x27c] + ldmia r5, {r0, r1, r2, r3} + stmia r4, {r0, r1, r2, r3} +#ifdef JAPAN + add r8, sb, #7 +#endif + ldr r1, _022C0CD4 ; =ProcessTeamStatsLvHp + mov r0, r4 +#ifdef JAPAN + strb ip, [sp, #0x44] + strb r8, [sp, #0x45] +#else + strb r8, [sp, #0x44] + strb sb, [sp, #0x45] +#endif + bl CreateTextBox + ldr r1, [fp] + add r1, r1, r7 + add r7, r7, #1 + strb r0, [r1, #0x280] + cmp r7, #4 + blt _022C0B5C + ldr r0, _022C0CC0 ; =ov10_022DC1D0 + ldr r0, [r0] + add r0, r0, #0x288 + bl InitPreprocessorArgs + ldr r0, _022C0CC0 ; =ov10_022DC1D0 + mov r3, #0x10000 + ldr r2, [r0] + mov r1, #0 + str r3, [r2, #0x2d4] + ldr r0, [r0] + strb r1, [r0, #0x5f3] +_022C0C10: + bl ov10_022C1990 + ldr r8, _022C0CD8 ; =ov10_022DC1CC + ldr r7, _022C0CDC ; =ov10_022DBFFC + ldr r5, _022C0CC0 ; =ov10_022DC1D0 + mov sb, #0 + add fp, sp, #0x30 + add r6, sp, #0x34 + mvn r4, #1 +_022C0C30: + ldr r0, [r5] + add r0, r0, sb + add r0, r0, #0x200 + ldrsb r0, [r0, #0x78] + cmp r0, r4 + bne _022C0C9C + mov r0, fp + bl InitPortraitParams + mov r0, fp + mov r1, #1 + bl InitPortraitParamsWithMonsterId + ldrb r1, [r8, sb] + mov r0, fp + bl SetPortraitLayout + mov r0, #1 + ldr r1, [r7, sb, lsl #2] + mov r2, r0 + bl CreatePortraitBox + ldr r1, [r5] + add r1, r1, sb + strb r0, [r1, #0x278] + ldr r0, [r5] + ldmia r6, {r1, r2} + add r0, r0, sb + add r0, r0, #0x200 + ldrsb r0, [r0, #0x78] + bl sub_02028770 +_022C0C9C: + add sb, sb, #1 + cmp sb, #4 + blt _022C0C30 + mov r0, sl + mov r1, #0 + bl ov10_022C0998 + mov r0, #1 +_022C0CB8: + add sp, sp, #0x50 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022C0CC0: .word ov10_022DC1D0 +_022C0CC4: .word WAN_TABLE +_022C0CC8: .word ov10_022DBFEC +_022C0CCC: .word ov10_022DBFDC +_022C0CD0: .word ProcessTeamStatsNameGender +_022C0CD4: .word ProcessTeamStatsLvHp +_022C0CD8: .word ov10_022DC1CC +_022C0CDC: .word ov10_022DBFFC + arm_func_end DrawTeamStats + + arm_func_start UpdateTeamStats +UpdateTeamStats: ; 0x022C0CE0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x20 + ldr r0, _022C0F5C ; =ov10_022DC1D0 + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0x5f3] + ldr r1, [r0] + ldrb r0, [r1, #0x285] + cmp r0, #0 + movne r0, #1 + strneb r0, [r1, #0x286] + bl ov10_022C1A04 + movs sb, r0 + beq _022C0F54 + ldr r0, _022C0F5C ; =ov10_022DC1D0 + ldr r1, [r0] + ldrb r0, [r1, #0x60c] + cmp r0, #0 + bne _022C0D80 + ldrb r0, [r1, #0x5f2] + cmp r0, #0 + beq _022C0D80 + ldr r1, _022C0F60 ; =0x0000FFFF + mov r0, sb, lsl #0x10 + cmp r1, r0, lsr #16 + bne _022C0D80 + tst sb, #0x80000 + mov r0, #1 + beq _022C0D6C + bl ov29_0234C5EC + mov r0, #4 + mov r1, #0x1000 + mov r2, #1 + bl StartFadeDungeonWrapper + b _022C0D80 +_022C0D6C: + bl ov29_0234C584 + mov r0, #1 + mov r2, r0 + mov r1, #0x1000 + bl StartFadeDungeonWrapper +_022C0D80: + ldr fp, _022C0F5C ; =ov10_022DC1D0 + mov r8, #0 + ldr r1, [fp] + ldr r0, _022C0F64 ; =ov10_022DBFB0 + strb r8, [r1, #0x5f2] + ldr r6, [r0, #0x14] + ldr r5, [r0, #0x18] + str r6, [sp] + str r5, [sp, #4] + mvn r4, #1 +_022C0DA8: + tst sb, #0xf + beq _022C0EA8 + tst sb, #1 + beq _022C0DCC + ldr r0, [fp] + add r0, r0, r8 + add r0, r0, #0x200 + ldrsb r0, [r0, #0x80] + bl ProcessTeamStatsLvHp +_022C0DCC: + tst sb, #2 + beq _022C0DE8 + ldr r0, [fp] + add r0, r0, r8 + add r0, r0, #0x200 + ldrsb r0, [r0, #0x7c] + bl ProcessTeamStatsNameGender +_022C0DE8: + tst sb, #4 + beq _022C0EA8 + ldr r2, [fp] + mov r0, r8, lsl #0x10 + add r1, r2, r0, asr #16 + mov sl, r0, asr #0x10 + add r2, r2, #0x310 + mov r0, #0x5c + mla r7, sl, r0, r2 + str r6, [sp, #8] + str r5, [sp, #0xc] + add r0, r1, #0x200 + ldrsb r0, [r0, #0x78] + cmp r0, r4 + beq _022C0EA8 + add r0, sp, #0x10 + bl InitPortraitParams + ldrb r0, [r7] + cmp r0, #0 + add r0, sp, #0x10 + bne _022C0E48 + mov r1, #1 + bl InitPortraitParamsWithMonsterId + b _022C0E50 +_022C0E48: + ldrsh r1, [r7, #0x42] + bl InitPortraitParamsWithMonsterId +_022C0E50: + add r0, sp, #0x10 + add r1, sp, #8 + bl SetPortraitOffset + ldr r1, _022C0F68 ; =ov10_022DC1CC + add r0, sp, #0x10 + ldrb r1, [r1, sl] + bl SetPortraitLayout + ldrb r0, [r7] + cmp r0, #0 + add r0, sp, #0x10 + bne _022C0E88 + mov r1, r4 + bl SetPortraitEmotion + b _022C0E90 +_022C0E88: + mov r1, #0 + bl SetPortraitEmotion +_022C0E90: + ldr r0, [fp] + add r1, sp, #0x10 + add r0, r0, sl + add r0, r0, #0x200 + ldrsb r0, [r0, #0x78] + bl ShowPortraitInPortraitBox +_022C0EA8: + add r8, r8, #1 + cmp r8, #4 + mov sb, sb, lsr #4 + blo _022C0DA8 + ldr r8, _022C0F5C ; =ov10_022DC1D0 + mov r6, #0 + ldr r0, [r8] + mov r5, r6 + add r4, r0, #0x480 + mov sb, r6 + mov r7, #0x5c +_022C0ED4: + mul r0, r5, r7 + ldrb r0, [r4, r0] + cmp r0, #0 + beq _022C0F04 + ldr r0, [r8] + mov r2, r6, lsl #0x10 + ldrb r3, [r0, #0x5f0] + mov r1, sb + add r0, r0, #0x2d8 + mov r2, r2, asr #0x10 + bl ov10_022C1F90 + add r6, r6, #1 +_022C0F04: + add r5, r5, #1 + cmp r5, #4 + blt _022C0ED4 + mov r5, #1 + ldr r4, _022C0F5C ; =ov10_022DC1D0 + b _022C0F3C +_022C0F1C: + ldr r0, [r4] + mov r2, r6, lsl #0x10 + ldrb r3, [r0, #0x5f0] + mov r1, r5 + add r0, r0, #0x2d8 + mov r2, r2, asr #0x10 + bl ov10_022C1F90 + add r6, r6, #1 +_022C0F3C: + cmp r6, #4 + blt _022C0F1C + ldr r0, _022C0F5C ; =ov10_022DC1D0 + ldr r0, [r0] + add r0, r0, #0x2d8 + bl ov10_022C225C +_022C0F54: + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022C0F5C: .word ov10_022DC1D0 +_022C0F60: .word 0x0000FFFF +_022C0F64: .word ov10_022DBFB0 +_022C0F68: .word ov10_022DC1CC + arm_func_end UpdateTeamStats + + arm_func_start ov10_022C0F6C +ov10_022C0F6C: ; 0x022C0F6C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x20 + ldr r4, _022C11CC ; =ov10_022DC1D0 + mov r7, r0 + ldr r4, [r4] + mov sl, r1 + cmp r4, #0 + ldrneb r0, [r4, #0x285] + mov r6, r2 + mov fp, r3 + cmpne r0, #0 + ldrneb r0, [r4, #0x286] + ldr sb, [sp, #0x54] + cmpne r0, #0 + ldrnesh r5, [sp, #0x4c] + addne r1, r4, #0x88 + movne r0, #0x7c + mlane r4, r5, r0, r1 + cmpne r7, #0 + beq _022C11C4 + ldr r1, _022C11D0 ; =WAN_TABLE + mov r0, #0x38 + ldr r1, [r1] + smlabb r0, r7, r0, r1 + ldr r0, [r0, #0x30] + cmp r0, #0 + beq _022C11C4 + mov r0, r4 + bl sub_0201D1B0 + cmp r0, #0 + beq _022C1010 + ldr r0, _022C11CC ; =ov10_022DC1D0 + ldr r0, [r0] + add r0, r0, r5 + ldrb r0, [r0, #0x84] + cmp r0, #0 + ldreqsh r0, [r4, #0x70] + cmpeq r0, r7 + ldreqsh r0, [r4, #0x76] + cmpeq r0, r6 + beq _022C1094 +_022C1010: + ldr r0, _022C11CC ; =ov10_022DC1D0 + ldr r0, [r0] + add r0, r0, r5 + ldrb r0, [r0, #0x84] + cmp r0, #0 + beq _022C1030 + mov r0, r4 + bl sub_0201CF80 +_022C1030: + mov r0, r4 + mov r1, r7 + bl SetSpriteIdForAnimationControl + bl Rand16Bit + mov r1, r6 + ldrsh r6, [sp, #0x50] + and r7, r0, #3 + mov r2, #0 + and r3, r6, #0xff + stmia sp, {r3, r7} + mov r3, #0x14 + smulbb r3, r6, r3 + str r2, [sp, #8] + mov r0, #1 + mov r3, r3, lsl #0x10 + str r0, [sp, #0xc] + mov r0, r4 + mov r2, #7 + mov r3, r3, asr #0x10 + bl SetAndPlayAnimationForAnimationControl + ldr r0, _022C11CC ; =ov10_022DC1D0 + mov r1, #0 + ldr r0, [r0] + add r0, r0, r5 + strb r1, [r0, #0x84] +_022C1094: +#ifdef JAPAN + ldrh r0, [r4, #2] + ldrsh r7, [sp, #0x4c] + ldrb r1, [sp, #0x5c] + orr r0, r0, #0x10 + strh r0, [r4, #2] + mov r3, #0 + strh r3, [r4, #0x38] + ldrh r2, [r4, #2] + mov r5, r7, lsl #0x1f + ldr r0, _022C11D4 ; =0x0000F3FF + orr r2, r2, #0x20 + strh r2, [r4, #2] + strh r0, [r4, #0x10] + strh r0, [r4, #0x14] + mov r2, r7, asr #1 + mov r0, #0x60 + smulbb r0, r2, r0 + strh r3, [r4, #0x16] + cmp r1, #0 + add r6, r0, #0x50 + ldrneh r0, [r4, #0x16] + mov r5, r5, lsr #0x18 + add r8, r5, #0x60 +#else + ldrsh r8, [sp, #0x4c] + mov r1, #0x60 + mov r0, sl + mov r2, r8, asr #1 + smulbb r1, r2, r1 + mov r3, r8, lsl #0x1f + mov r2, r3, lsr #0x18 + add r7, r2, #0x60 + add r6, r1, #0x28 + bl ov10_022C1CE8 + cmp r0, #0 + cmpeq sl, #0x1a0 + mvneq r1, #7 + movne r1, #0 + mov r0, sl + add r7, r7, r1 + bl ov10_022C1CE8 + cmp r0, #0 + bne _022C1100 + cmp sl, #0x1a0 + moveq r0, #0x11 + beq _022C1104 + mov r0, sl + bl GetBodySize + cmp r0, #4 + moveq r0, #0xc + beq _022C1104 +_022C1100: + mov r0, #0 +_022C1104: + ldrh r2, [r4, #2] + ldrb r1, [sp, #0x5c] + mov r5, #0 + orr r2, r2, #0x10 + strh r2, [r4, #2] + strh r5, [r4, #0x38] + ldrh r3, [r4, #2] + cmp r1, #0 + ldr r2, _022C11D4 ; =0x0000F3FF + orr r1, r3, #0x20 + strh r1, [r4, #2] + strh r2, [r4, #0x10] + strh r2, [r4, #0x14] + strh r5, [r4, #0x16] + add r6, r6, r0 + ldrneh r0, [r4, #0x16] + mov r5, #0 +#endif + orrne r0, r0, #0x400 + strneh r0, [r4, #0x16] + ldrsh r0, [sp, #0x58] +#ifdef JAPAN + mov r5, #0 + add r0, r8, r0 +#else + add r0, r7, r0 +#endif + strh r0, [r4, #0x1c] + strh r6, [r4, #0x1e] + b _022C1178 +_022C1164: + mov r0, r4 + bl SwitchAnimationControlToNextFrame + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 +_022C1178: + cmp r5, sb + blt _022C1164 + mov r0, r4 + bl DisplayAndSwitchAnimationControlCurrentFrame + add r0, sp, #0x10 + mov r2, r4 + mov r1, #4 + bl sub_0201D034 + ldrb r0, [sp, #0x48] + cmp r0, #0 + beq _022C11C4 + add r4, sp, #0x10 + str r6, [sp] + mov r0, fp + mov r1, sl +#ifdef JAPAN + mov r2, r7 + mov r3, r8 +#else + mov r2, r8 + mov r3, r7 +#endif + str r4, [sp, #4] + bl ov29_022DD83C +_022C11C4: + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022C11CC: .word ov10_022DC1D0 +_022C11D0: .word WAN_TABLE +_022C11D4: .word 0x0000F3FF + arm_func_end ov10_022C0F6C + + arm_func_start ov10_022C11D8 +ov10_022C11D8: ; 0x022C11D8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x20 + ldr r0, _022C138C ; =ov10_022DC1D0 + mov r2, #0x80 + ldr r3, [r0] + mov r1, #0x60 + strh r2, [r3, #0x24] + add r0, r3, #8 + strh r1, [r3, #0x26] + bl DisplayAndSwitchAnimationControlCurrentFrame + ldr r0, _022C138C ; =ov10_022DC1D0 + ldr r1, [r0] + ldrb r0, [r1, #0x5f4] + cmp r0, #0 + bne _022C1384 + cmp r1, #0 + ldrneb r0, [r1, #0x285] + cmpne r0, #0 + ldrneb r0, [r1, #0x286] + cmpne r0, #0 + beq _022C1384 + mov r8, #0 + mov r5, r8 + mov r4, #1 + mov fp, r8 +_022C123C: + ldr r0, _022C138C ; =ov10_022DC1D0 + mov sb, #0 + ldr r1, [r0] + mov r0, #0x5c + mul r2, r8, r0 + add r3, r1, #0x480 + add r1, r1, #0x88 + mov r0, #0x7c + mla r6, r8, r0, r1 + ldrb r0, [r3, r2] + add r7, r3, r2 + cmp r0, #0 + ldrnesh r2, [r7, #0x52] + cmpne r2, #0 + beq _022C1378 + ldr r0, _022C1390 ; =WAN_TABLE + ldr r1, [r0] + mov r0, #0x38 + smlabb r0, r2, r0, r1 + ldr r0, [r0, #0x30] + cmp r0, #0 + beq _022C1378 + mov r0, r6 + bl sub_0201D1B0 + cmp r0, #0 + moveq sb, #1 + cmp sb, #0 + beq _022C12EC + ldrsh r1, [r7, #0x52] + mov r0, r6 + bl SetSpriteIdForAnimationControl + bl Rand16Bit + mov r3, #0x14 + and r1, r0, #3 + and r0, r8, #0xff + stmia sp, {r0, r1, r5} + mul r3, r8, r3 + str r4, [sp, #0xc] + mov r3, r3, lsl #0x10 + ldrsh r1, [r7, #0x54] + mov r0, r6 + mov r2, #7 + mov r3, r3, asr #0x10 + bl SetAndPlayAnimationForAnimationControl +_022C12EC: + mov r1, r8, lsr #0x1f + rsb r0, r1, r8, lsl #31 + add r0, r1, r0, ror #31 + mov r0, r0, lsl #7 + add sl, r0, #0x60 + add r0, r8, r8, lsr #31 + mov r1, r0, asr #1 + mov r0, #0x60 + mul r0, r1, r0 + strh fp, [r6, #0x38] + ldrh r1, [r6, #2] + add sb, r0, #0x50 + mov r0, r6 + orr r1, r1, #0x20 + strh r1, [r6, #2] + ldr r1, _022C1394 ; =0x0000F3FF + strh r1, [r6, #0x14] + strh sl, [r6, #0x1c] + strh sb, [r6, #0x1e] + bl DisplayAndSwitchAnimationControlCurrentFrame + mov r2, r6 + add r0, sp, #0x10 + mov r1, #4 + bl sub_0201D034 + ldrb r0, [r7, #0x4f] + cmp r0, #0 + beq _022C1378 + str sb, [sp] + add r0, sp, #0x10 + str r0, [sp, #4] + ldrsh r1, [r7, #0x42] + ldr r0, [r7, #0x44] + mov r3, sl + mov r2, r8 + bl ov29_022DD83C +_022C1378: + add r8, r8, #1 + cmp r8, #4 + blt _022C123C +_022C1384: + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022C138C: .word ov10_022DC1D0 +_022C1390: .word WAN_TABLE +_022C1394: .word 0x0000F3FF + arm_func_end ov10_022C11D8 + + arm_func_start ov10_022C1398 +ov10_022C1398: ; 0x022C1398 + ldr r0, _022C13AC ; =ov10_022DC1D0 + ldr ip, _022C13B0 ; =ov10_022C231C + ldr r0, [r0] + add r0, r0, #0x2d8 + bx ip + .align 2, 0 +_022C13AC: .word ov10_022DC1D0 +_022C13B0: .word ov10_022C231C + arm_func_end ov10_022C1398 + + arm_func_start FreeTeamStats +FreeTeamStats: ; 0x022C13B4 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _022C14C8 ; =ov10_022DC1D0 + ldr r0, [r0] + add r0, r0, #0x2d8 + bl ov10_022C2278 + ldr r0, _022C14C8 ; =ov10_022DC1D0 + ldr r1, _022C14CC ; =WAN_TABLE + ldr r2, [r0] + ldr r0, [r1] + ldrsh r1, [r2, #4] + bl DeleteWanTableEntryVeneer + ldr r6, _022C14C8 ; =ov10_022DC1D0 + mov r5, #0 + mvn r4, #1 +_022C13EC: + ldr r0, [r6] + add r0, r0, r5 + add r0, r0, #0x200 + ldrsb r0, [r0, #0x78] + cmp r0, r4 + beq _022C143C + bl sub_0202836C + ldr r0, [r6] + add r0, r0, r5 + add r0, r0, #0x200 + ldrsb r0, [r0, #0x78] + bl HidePortraitBox + ldr r0, [r6] + add r0, r0, r5 + add r0, r0, #0x200 + ldrsb r0, [r0, #0x78] + bl ClosePortraitBox + ldr r0, [r6] + add r0, r0, r5 + strb r4, [r0, #0x278] +_022C143C: + add r5, r5, #1 + cmp r5, #4 + blt _022C13EC + ldr r6, _022C14C8 ; =ov10_022DC1D0 + mov r5, #0 + mvn r4, #1 +_022C1454: + ldr r0, [r6] + add r0, r0, r5 + add r0, r0, #0x200 + ldrsb r0, [r0, #0x7c] + cmp r0, r4 + beq _022C147C + bl CloseTextBox + ldr r0, [r6] + add r0, r0, r5 + strb r4, [r0, #0x27c] +_022C147C: + ldr r0, [r6] + add r0, r0, r5 + add r0, r0, #0x200 + ldrsb r0, [r0, #0x80] + cmp r0, r4 + beq _022C14A4 + bl CloseTextBox + ldr r0, [r6] + add r0, r0, r5 + strb r4, [r0, #0x280] +_022C14A4: + add r5, r5, #1 + cmp r5, #4 + blt _022C1454 + ldr r0, _022C14C8 ; =ov10_022DC1D0 + mov r2, #0 + ldr r1, [r0] + mov r0, #1 + strb r2, [r1, #0x285] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022C14C8: .word ov10_022DC1D0 +_022C14CC: .word WAN_TABLE + arm_func_end FreeTeamStats + + arm_func_start ov10_022C14D0 +ov10_022C14D0: ; 0x022C14D0 + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr r1, _022C1594 ; =ov10_022DC1D0 + mov r4, r0 + ldr r0, [r1] + cmp r0, #0 + moveq r0, #0 + beq _022C158C + mov r2, #0 + strb r2, [r0, #0x285] + ldr r0, [r1] + mov r3, #1 + strb r2, [r0, #0x286] + ldr r0, [r1] + add r1, r0, #0x1f8 + add r0, r0, #0x2d8 + add r1, r1, #0x400 + bl ov10_022C1E80 + bl ov10_022C1990 + ldr r0, _022C1594 ; =ov10_022DC1D0 + mvn r1, #1 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x84] + cmp r0, r1 + bne _022C157C + ldr r0, _022C1598 ; =ov10_022DBFCC + add ip, sp, #0 + ldmia r0, {r0, r1, r2, r3} + stmia ip, {r0, r1, r2, r3} + mov r0, ip + mov r1, #0 + bl CreateTextBox + ldr r1, _022C1594 ; =ov10_022DC1D0 + ldr r2, [r1] + strb r0, [r2, #0x284] + ldr r0, [r1] + add r0, r0, #0x288 + bl InitPreprocessorArgs + ldr r0, _022C1594 ; =ov10_022DC1D0 + mov r1, #0x10000 + ldr r0, [r0] + str r1, [r0, #0x2d4] +_022C157C: + mov r0, r4 + mov r1, #0 + bl ov10_022C0998 + mov r0, #1 +_022C158C: + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022C1594: .word ov10_022DC1D0 +_022C1598: .word ov10_022DBFCC + arm_func_end ov10_022C14D0 + + arm_func_start ov10_022C159C +ov10_022C159C: ; 0x022C159C +#ifdef EUROPE +#define OV10_022C159C_STACK_OFFSET #0x154 +#else +#define OV10_022C159C_STACK_OFFSET #0x54 +#endif + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, OV10_022C159C_STACK_OFFSET + sub sp, sp, #0x400 + ldr r0, _022C16CC ; =ov10_022DC1D0 + mov r2, #0 + ldr r1, [r0] + strb r2, [r1, #0x5f2] + ldr r0, [r0] + strb r2, [r0, #0x286] + bl ov10_022C1A04 + cmp r0, #0 + beq _022C16C0 + ldr r0, _022C16CC ; =ov10_022DC1D0 + ldr r1, [r0] + add r0, r1, #0x200 + ldrsb sl, [r0, #0x84] + add r4, r1, #0x480 + mov r0, sl + bl sub_02027B1C + mov sb, #0 + mov r5, sb + add fp, sp, #4 +_022C15F4: + mov r0, #0x5c + mul r1, r5, r0 + ldrb r0, [r4, r1] + cmp r0, #0 + beq _022C169C + add r0, r4, r1 +#ifdef EUROPE + ldrsh r8, [r0, #0x48] + ldrsh r6, [r0, #0x4a] + ldrsh r7, [r0, #0x4c] +#else + ldrsh r6, [r0, #0x4a] + ldrsh r7, [r0, #0x4c] + ldrsh r8, [r0, #0x48] +#endif + add r1, r0, #1 + add r0, sp, OV10_022C159C_STACK_OFFSET + bl strcpy + mov r0, sl + mov r1, #0 + mov r2, sb + add r3, sp, OV10_022C159C_STACK_OFFSET + bl DrawTextInWindow +#ifdef EUROPE + mov r1, r8 + add r0, sp, #0x54 + bl sub_02025010_EU + ldr r1, _022C16D0 ; =ov10_022DC00C + add r0, sp, #0x154 + add r2, sp, #0x54 +#else + ldr r1, _022C16D0 ; =ov10_022DC00C + mov r2, r8 + add r0, sp, #0x54 +#endif + bl SprintfStatic__022C183C + mov r0, sl +#ifdef JAPAN + mov r1, #0x38 +#else + mov r1, #0x44 +#endif + mov r2, sb + add r3, sp, OV10_022C159C_STACK_OFFSET + bl DrawTextInWindow + mov r0, fp + bl InitPreprocessorArgs + ldr r2, _022C16D4 ; =ov10_022DC014 + str r6, [sp, #0x28] + str r7, [sp, #0x2c] + add r0, sp, OV10_022C159C_STACK_OFFSET + mov r1, #0x400 + mov r3, #0 + str fp, [sp] + bl PreprocessString + mov r0, sl + mov r1, #0x80 + mov r2, sb + add r3, sp, OV10_022C159C_STACK_OFFSET + bl DrawTextInWindow + add sb, sb, #0xc +_022C169C: + add r5, r5, #1 + cmp r5, #4 + blt _022C15F4 + mov r0, sl + bl UpdateWindow + ldr r0, _022C16CC ; =ov10_022DC1D0 + ldr r0, [r0] + add r0, r0, #0x2d8 + bl ov10_022C21D8 +_022C16C0: + add sp, sp, OV10_022C159C_STACK_OFFSET + add sp, sp, #0x400 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022C16CC: .word ov10_022DC1D0 +_022C16D0: .word ov10_022DC00C +_022C16D4: .word ov10_022DC014 + arm_func_end ov10_022C159C + + arm_func_start FreeMapAndTeam +FreeMapAndTeam: ; 0x022C16D8 + stmdb sp!, {r3, lr} + ldr r0, _022C1744 ; =ov10_022DC1D0 + ldr r0, [r0] + add r0, r0, #0x2d8 + bl ov10_022C2278 + ldr r0, _022C1744 ; =ov10_022DC1D0 + mvn r1, #1 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x84] + cmp r0, r1 + beq _022C171C + bl CloseTextBox2 + ldr r0, _022C1744 ; =ov10_022DC1D0 + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x284] +_022C171C: + ldr r1, _022C1744 ; =ov10_022DC1D0 + mov r3, #0 + ldr r2, [r1] + mov r0, #1 + strb r3, [r2, #0x285] + ldr r2, [r1] + strb r3, [r2, #0x286] + ldr r1, [r1] + strb r3, [r1, #0x5f2] + ldmia sp!, {r3, pc} + .align 2, 0 +_022C1744: .word ov10_022DC1D0 + arm_func_end FreeMapAndTeam + + arm_func_start ProcessTeamStatsLvHp +ProcessTeamStatsLvHp: ; 0x022C1748 +#if defined(EUROPE) +#define OV10_022C1748_STACK_OFFSET 0x40 +#elif defined(JAPAN) +#define OV10_022C1748_STACK_OFFSET -0x100 +#else +#define OV10_022C1748_STACK_OFFSET 0 +#endif + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x254 + OV10_022C1748_STACK_OFFSET + mov r4, r0 + mvn r0, #1 + cmp r4, r0 + beq _022C182C + ldr r0, _022C1834 ; =ov10_022DC1D0 + mov r3, #0 + ldr r1, [r0] + add r2, r1, #0x480 + b _022C178C +_022C1774: + add r0, r1, r3 + add r0, r0, #0x200 + ldrsb r0, [r0, #0x80] + cmp r4, r0 + beq _022C1794 + add r3, r3, #1 +_022C178C: + cmp r3, #4 + blt _022C1774 +_022C1794: + cmp r3, #4 + beq _022C182C + mov r0, #0x5c + mul r1, r3, r0 + ldrb r0, [r2, r1] + add r5, r2, r1 + cmp r0, #0 + mov r0, r4 + bne _022C17C8 + bl ClearWindow + mov r0, r4 + bl UpdateWindow + b _022C182C +_022C17C8: + bl ClearWindow +#ifdef JAPAN + ldrsh r2, [r5, #0x48] + ldr r1, _022C1838 ; =ov10_022DC02C + add r0, sp, #0x54 + bl SprintfStatic__022C183C + mov r1, #0 + add r3, sp, #0x54 + mov r0, r4 + mov r2, r1 + bl DrawTextInWindow + add r0, sp, #4 + bl InitPreprocessorArgs + ldrsh r1, [r5, #0x4a] + add r3, sp, #4 + ldr r2, _022C2FA4 ; =ov10_022DC014 + str r1, [sp, #0x28] + ldrsh ip, [r5, #0x4c] + add r0, sp, #0x54 + mov r1, #0x100 + str ip, [sp, #0x2c] + str r3, [sp] + mov r3, #0 + bl PreprocessString + mov r0, r4 + mov r1, #0 + mov r2, #0x10 +#else + add r0, sp, #0x104 + OV10_022C1748_STACK_OFFSET + bl InitPreprocessorArgs +#ifdef EUROPE + ldrsh r1, [r5, #0x4a] + add r0, sp, #4 + str r1, [sp, #0x168] + ldrsh r1, [r5, #0x4c] + str r1, [sp, #0x16c] + ldrsh r1, [r5, #0x48] + bl sub_02025010_EU + ldr r1, _022C1838 ; =ov10_022DC02C + add r0, sp, #0x44 + add r2, sp, #4 +#else + ldrsh r2, [r5, #0x4a] + ldr r1, _022C1838 ; =ov10_022DC02C + add r0, sp, #4 + str r2, [sp, #0x128] + ldrsh r2, [r5, #0x4c] + str r2, [sp, #0x12c] + ldrsh r2, [r5, #0x48] +#endif + bl SprintfStatic__022C183C + add r1, sp, #0x104 + OV10_022C1748_STACK_OFFSET + str r1, [sp] + add r0, sp, #0x154 + OV10_022C1748_STACK_OFFSET + mov r1, #0x100 + add r2, sp, #4 + OV10_022C1748_STACK_OFFSET + mov r3, #0 + bl PreprocessString + mov r1, #0 + mov r0, r4 + mov r2, r1 +#endif + add r3, sp, #0x154 + OV10_022C1748_STACK_OFFSET + bl DrawTextInWindow + mov r0, r4 + bl UpdateWindow +_022C182C: + add sp, sp, #0x254 + OV10_022C1748_STACK_OFFSET + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022C1834: .word ov10_022DC1D0 +#ifdef JAPAN +_022C1838: .word ov10_022DC00C +_022C2FA4: .word ov10_022DC014 +#else +_022C1838: .word ov10_022DC02C +#endif + arm_func_end ProcessTeamStatsLvHp + + arm_func_start SprintfStatic__022C183C +SprintfStatic__022C183C: ; 0x022C183C + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, lr} + add r2, sp, #0xc + bic r2, r2, #3 + ldr r1, [sp, #0xc] + add r2, r2, #4 + bl vsprintf + ldmia sp!, {r3, lr} + add sp, sp, #0x10 + bx lr + arm_func_end SprintfStatic__022C183C + + arm_func_start ProcessTeamStatsNameGender +ProcessTeamStatsNameGender: ; 0x022C1864 + stmdb sp!, {r3, r4, r5, lr} +#ifdef JAPAN + ldr r1, _022C1984 ; =ov10_022DC1D0 + mov r4, r0 +#else + sub sp, sp, #0x258 + ldr r1, _022C1984 ; =ov10_022DC1D0 + mov r5, r0 +#endif + ldr r1, [r1] + mov r3, #0 + add r2, r1, #0x480 + b _022C189C +_022C1884: + add r0, r1, r3 + add r0, r0, #0x200 + ldrsb r0, [r0, #0x7c] +#ifdef JAPAN + cmp r4, r0 +#else + cmp r5, r0 +#endif + beq _022C18A4 + add r3, r3, #1 +_022C189C: + cmp r3, #4 + blt _022C1884 +_022C18A4: + cmp r3, #4 +#ifdef JAPAN + ldmeqia sp!, {r3, r4, r5, pc} +#else + beq _022C197C +#endif + mov r0, #0x5c + mul r1, r3, r0 + ldrb r0, [r2, r1] +#ifdef JAPAN + add r5, r2, r1 + cmp r0, #0 + mov r0, r4 + bne _022C3040 + bl ClearWindow + mov r0, r4 + bl UpdateWindow + ldmia sp!, {r3, r4, r5, pc} +_022C3040: + bl ClearWindow + mov r1, #0 + mov r0, r4 + mov r2, r1 + add r3, r5, #1 + bl DrawTextInWindow + ldrsh r0, [r5, #0x42] + bl GetMonsterGenderVeneer + cmp r0, #1 + bne _022C3080 + ldr r3, _022C30C4 ; =ov10_022DC02C + mov r0, r4 + mov r1, #0x10 + mov r2, #0xc + bl DrawTextInWindow + b _022C30B4 +_022C3080: + ldrsh r0, [r5, #0x42] + bl GetMonsterGenderVeneer + cmp r0, #2 + mov r1, #0x10 + mov r2, #0xc + bne _022C30A8 + ldr r3, _022C30C8_JP ; =ov10_022DD718_JP + mov r0, r4 + bl DrawTextInWindow + b _022C30B4 +_022C30A8: + ldr r3, _022C30CC ; =ov10_022DD71C_JP + mov r0, r4 + bl DrawTextInWindow +_022C30B4: + mov r0, r4 + bl UpdateWindow +#else + add r4, r2, r1 + cmp r0, #0 + bne _022C18D8 + mov r0, r5 + bl ClearWindow + mov r0, r5 + bl UpdateWindow + b _022C197C +_022C18D8: + ldr r1, _022C1988 ; =ov10_022DBFB0 + mov r0, r5 + ldrb r2, [r1] + strb r2, [sp, #4] + ldrb r1, [r1, #1] + strb r1, [sp, #5] + bl ClearWindow + add r0, sp, #8 + bl InitPreprocessorArgs + ldrsh r0, [r4, #0x42] + bl GetMonsterGenderVeneer + cmp r0, #1 + moveq r0, #0xbd + streqb r0, [sp, #4] + beq _022C1930 + ldrsh r0, [r4, #0x42] + bl GetMonsterGenderVeneer + cmp r0, #2 + moveq r0, #0xbe + streqb r0, [sp, #4] + movne r0, #0x2d + strneb r0, [sp, #4] +_022C1930: + ldr r1, _022C198C ; =ov10_022DC058 + add r0, sp, #0x158 + add r3, sp, #4 + add r2, r4, #1 + bl SprintfStatic__022C183C + add r4, sp, #8 + add r0, sp, #0x58 + add r2, sp, #0x158 + mov r1, #0x100 + mov r3, #0 + str r4, [sp] + bl PreprocessString + mov r1, #0 + add r3, sp, #0x58 + mov r0, r5 + mov r2, r1 + bl DrawTextInWindow + mov r0, r5 + bl UpdateWindow +_022C197C: + add sp, sp, #0x258 +#endif + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022C1984: .word ov10_022DC1D0 +#ifdef JAPAN +_022C30C4: .word ov10_022DC02C +_022C30C8_JP: .word ov10_022DD718_JP +_022C30CC: .word ov10_022DD71C_JP +#else +_022C1988: .word ov10_022DBFB0 +_022C198C: .word ov10_022DC058 +#endif + arm_func_end ProcessTeamStatsNameGender + + arm_func_start ov10_022C1990 +ov10_022C1990: ; 0x022C1990 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r8, _022C1A00 ; =ov10_022DC1D0 + mov r4, #0 + ldr r0, [r8] + mov r6, #0x5c + str r4, [r0] + mov r7, #0x7c +_022C19AC: + mul r5, r4, r6 + ldr r0, [r8] + add r0, r0, #0x310 + add r0, r0, r5 + bl ov10_022C1D40 + ldr r0, [r8] + add r0, r0, #0x480 + add r0, r0, r5 + bl ov10_022C1D40 + ldr r0, [r8] + add r0, r0, #0x88 + mla r0, r4, r7, r0 + bl sub_0201C138 + add r4, r4, #1 + cmp r4, #4 + blt _022C19AC + ldr r0, _022C1A00 ; =ov10_022DC1D0 + mov r1, #0 + ldr r0, [r0] + strb r1, [r0, #0x286] + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022C1A00: .word ov10_022DC1D0 + arm_func_end ov10_022C1990 + + arm_func_start ov10_022C1A04 +ov10_022C1A04: ; 0x022C1A04 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + ldr r0, _022C1CD0 ; =ov10_022DC1D0 + ldr r3, _022C1CD4 ; =ov10_022DBFB6 + ldr r0, [r0] + add r2, sp, #0x10 + ldr sb, [r0] + add fp, r0, #0x310 + add r4, r0, #0x480 + mov r1, #4 +_022C1A2C: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _022C1A2C + ldr r3, _022C1CD8 ; =ov10_022DBFBE + add r2, sp, #0xc + mov r1, #4 +_022C1A48: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _022C1A48 + ldr r3, _022C1CDC ; =ov10_022DBFB2 + add r2, sp, #8 + mov r1, #4 +_022C1A64: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _022C1A64 + ldr r3, _022C1CE0 ; =ov10_022DBFBA + add r2, sp, #4 + mov r1, #4 +_022C1A80: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _022C1A80 + mov sl, #0 + mov r8, sl + str sl, [sp] + mov r7, r8 + b _022C1C1C +_022C1AA4: + mov r0, #0x5c + mul r1, r7, r0 + ldrb r0, [fp, r1] + cmp r0, #0 + beq _022C1C24 + add r5, fp, r1 + ldrsh r0, [r5, #0x54] + add r6, r4, r1 + strh r0, [r6, #0x54] + ldr r1, [r5, #0x44] + ldr r0, [r6, #0x44] + cmp r1, r0 + addne r0, sp, #0x10 + movne r1, #1 + strneb r1, [r0, r7] + add r0, r5, #1 + add r1, r6, #1 + bl strcmp + cmp r0, #0 + addne r0, sp, #8 + movne r1, #1 + strneb r1, [r0, r7] + ldrsh r1, [r5, #0x4a] + ldrsh r0, [r6, #0x4a] + cmp r1, r0 + addne r0, sp, #0x10 + movne r1, #1 + strneb r1, [r0, r7] + ldrsh r1, [r5, #0x4c] + ldrsh r0, [r6, #0x4c] + cmp r1, r0 + addne r0, sp, #0x10 + movne r1, #1 + strneb r1, [r0, r7] + ldrsh r1, [r5, #0x48] + ldrsh r0, [r6, #0x48] + cmp r1, r0 + addne r0, sp, #0x10 + movne r1, #1 + strneb r1, [r0, r7] + ldrsh r0, [r5, #0x42] + ldrsh r1, [r6, #0x42] + cmp r0, r1 + beq _022C1B88 + add r3, sp, #0x10 + mov ip, #1 + add r2, sp, #0xc + add r1, sp, #4 + strb ip, [r3, r7] + strb ip, [r2, r7] + strb ip, [r1, r7] + ldrsh r1, [r6, #0x42] + bl GendersEqual + cmp r0, #0 + addeq r0, sp, #8 + moveq r1, #1 + streqb r1, [r0, r7] +_022C1B88: + ldrb r1, [r5, #0x4e] + ldrb r0, [r6, #0x4e] + cmp r1, r0 + movne r0, #1 + addne r1, sp, #0x10 + strne r0, [sp] + strneb r0, [r1, r7] + add r0, sp, #0x10 + ldrb r0, [r0, r7] + cmp r0, #0 + addeq r0, sp, #0xc + ldreqb r0, [r0, r7] + cmpeq r0, #0 + addeq r0, sp, #8 + ldreqb r0, [r0, r7] + cmpeq r0, #0 + addeq r0, sp, #4 + ldreqb r0, [r0, r7] + cmpeq r0, #0 + beq _022C1C14 + mov ip, #5 +_022C1BDC: + ldmia r5!, {r0, r1, r2, r3} + stmia r6!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _022C1BDC + ldmia r5, {r0, r1, r2} + stmia r6, {r0, r1, r2} + add r0, sp, #4 + ldrb r0, [r0, r7] + cmp r0, #0 + ldrne r0, _022C1CD0 ; =ov10_022DC1D0 + movne r1, #1 + ldrne r0, [r0] + addne r0, r0, r7 + strneb r1, [r0, #0x84] +_022C1C14: + add r8, r8, #1 + add r7, r7, #1 +_022C1C1C: + cmp r7, #4 + blt _022C1AA4 +_022C1C24: + mov r5, #0x5c + b _022C1C38 +_022C1C2C: + mla r0, r7, r5, r4 + bl ov10_022C1D40 + add r7, r7, #1 +_022C1C38: + cmp r7, #4 + blt _022C1C2C + ldr r0, [sp] + ldr r1, _022C1CD0 ; =ov10_022DC1D0 + cmp r0, #0 + ldr r0, [r1] + cmpeq sb, r8 + str r8, [r0] + beq _022C1C6C + ldr r0, _022C1CE4 ; =0x0000FFFF + cmp sb, r8 + orrlt r0, r0, #0x80000 + b _022C1CC8 +_022C1C6C: + mov r7, #0 + mov r5, #1 + mov r3, #2 + add r4, sp, #8 + mov r1, #4 + add r2, sp, #0xc + add r6, sp, #0x10 +_022C1C88: + ldrb r0, [r6, r7] + cmp r0, #0 + movne r0, r7, lsl #2 + orrne sl, sl, r5, lsl r0 + ldrb r0, [r4, r7] + cmp r0, #0 + movne r0, r7, lsl #2 + orrne sl, sl, r3, lsl r0 + ldrb r0, [r2, r7] + cmp r0, #0 + movne r0, r7, lsl #2 + add r7, r7, #1 + orrne sl, sl, r1, lsl r0 + cmp r7, #4 + blt _022C1C88 + mov r0, sl +_022C1CC8: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022C1CD0: .word ov10_022DC1D0 +_022C1CD4: .word ov10_022DBFB6 +_022C1CD8: .word ov10_022DBFBE +_022C1CDC: .word ov10_022DBFB2 +_022C1CE0: .word ov10_022DBFBA +_022C1CE4: .word 0x0000FFFF + arm_func_end ov10_022C1A04 + +#ifndef JAPAN + arm_func_start ov10_022C1CE8 +ov10_022C1CE8: ; 0x022C1CE8 + ldr r2, _022C1D38 ; =0x0000017B + cmp r0, r2 + cmpne r0, #0x17c + addne r1, r2, #2 + cmpne r0, r1 + addne r1, r2, #3 + cmpne r0, r1 + beq _022C1D28 + ldr r1, _022C1D3C ; =0xFFFFFC2D + add r0, r0, r1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #3 + bhi _022C1D30 +_022C1D28: + mov r0, #1 + bx lr +_022C1D30: + mov r0, #0 + bx lr + .align 2, 0 +_022C1D38: .word 0x0000017B +_022C1D3C: .word 0xFFFFFC2D + arm_func_end ov10_022C1CE8 +#endif + + arm_func_start ov10_022C1D40 +ov10_022C1D40: ; 0x022C1D40 + mov r2, #0 + strb r2, [r0] + sub r1, r2, #1 + strh r1, [r0, #0x4a] + strh r1, [r0, #0x4c] + str r1, [r0, #0x44] + strb r2, [r0, #0x4f] + strh r2, [r0, #0x52] + str r2, [r0, #0x58] + ldr ip, _022C1D74 ; =MemZero + add r0, r0, #1 + mov r1, #0x40 + bx ip + .align 2, 0 +_022C1D74: .word MemZero + arm_func_end ov10_022C1D40 + + arm_func_start ov10_022C1D78 +ov10_022C1D78: ; 0x022C1D78 + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mov r6, r1 + mov ip, #1 + mov r1, r2 + add r0, r4, #1 + mov r5, r3 + strb ip, [r4] + bl strcpy + strh r5, [r4, #0x42] + ldrsh r1, [sp, #0x10] + str r6, [r4, #0x44] + ldrsh r0, [sp, #0x14] + strh r1, [r4, #0x48] + ldrsh r1, [sp, #0x18] + strh r0, [r4, #0x4a] + ldrsh r0, [sp, #0x1c] + strh r1, [r4, #0x4c] + mov r1, #0 + strb r1, [r4, #0x4f] + strb r1, [r4, #0x56] + strh r0, [r4, #0x52] + str r1, [r4, #0x58] + strb r1, [r4, #0x4e] + strh r1, [r4, #0x54] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov10_022C1D78 + + arm_func_start ov10_022C1DE0 +ov10_022C1DE0: ; 0x022C1DE0 + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mov r6, r1 + mov ip, #1 + mov r1, r2 + add r0, r4, #1 + mov r5, r3 + strb ip, [r4] + bl strcpy + strh r5, [r4, #0x42] + ldrsh r1, [sp, #0x10] + str r6, [r4, #0x44] + ldrsh r0, [sp, #0x14] + strh r1, [r4, #0x48] + ldrsh r1, [sp, #0x18] + strh r0, [r4, #0x4a] + ldrsh r0, [sp, #0x1c] + strh r1, [r4, #0x4c] + mov r1, #1 + strb r1, [r4, #0x4f] + strb r1, [r4, #0x56] + strh r0, [r4, #0x52] + mov r1, #0 + strb r1, [r4, #0x4e] + ldrsh r0, [sp, #0x20] + str r1, [r4, #0x58] + strh r0, [r4, #0x54] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov10_022C1DE0 + + arm_func_start ov10_022C1E50 +ov10_022C1E50: ; 0x022C1E50 + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, #0 + mov r4, #0x5c +_022C1E60: + smlabb r0, r5, r4, r6 + bl ov10_022C1D40 + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + cmp r5, #4 + blt _022C1E60 + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov10_022C1E50 + + arm_func_start ov10_022C1E80 +ov10_022C1E80: ; 0x022C1E80 + stmdb sp!, {r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x14 + movs r7, r2 + movne r4, #0xf + mov sb, r0 + mov r8, r1 + mov r6, r3 + moveq r4, #0x300 + bl GetGameMode + cmp r0, #3 + moveq r0, #1 + movne r0, #0 + strb r0, [sb, #0x21] + tst r0, #0xff + add r1, sp, #0 + beq _022C1ED0 + ldr r0, _022C1F88 ; =ov10_022DC06C + mov r2, r4 + bl sub_020522F0 + b _022C1EDC +_022C1ED0: + ldr r0, _022C1F8C ; =ov10_022DC080 + mov r2, r4 + bl sub_020522F0 +_022C1EDC: + add r5, sp, #0 + ldmia r5!, {r0, r1, r2, r3} + mov r4, sb + stmia r4!, {r0, r1, r2, r3} + ldr r0, [r5] + mov lr, r8 + str r0, [r4] + ldr r0, [sp, #0xc] + add ip, sb, #0x24 + str r0, [sb, #0x14] + ldr r0, [sp, #4] + mov r5, #0 + str r0, [sb, #0x18] + ldr r4, [sp, #0x10] + str r4, [sb, #0x1c] + ldmia lr!, {r0, r1, r2, r3} + stmia ip!, {r0, r1, r2, r3} + ldr r0, [lr] + str r0, [ip] + strb r7, [sb, #0x20] +_022C1F2C: + mov r1, r5, lsl #0x10 + ldr r0, [r8, #0x10] + mov r2, r4 + mov r1, r1, lsr #0x10 + bl CopyColorToPaletteDataRgba + add r5, r5, #1 + cmp r5, #0xa0 + add r4, r4, #4 + blt _022C1F2C + cmp r6, #0 + beq _022C1F80 + ldr r0, [r8, #0x10] + bl MarkPaletteDataAsNeedingUpdate + mov r1, #1 + mov r2, r1 + mov r0, #0 + bl GetBgRegionArea + ldr r1, [sb, #0x18] + ldr r2, [sb, #8] + mov r3, #0 + bl sub_02051FB4 +_022C1F80: + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022C1F88: .word ov10_022DC06C +_022C1F8C: .word ov10_022DC080 + arm_func_end ov10_022C1E80 + + arm_func_start ov10_022C1F90 +ov10_022C1F90: ; 0x022C1F90 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + mov sl, r0 + mov sb, r2 + mov r8, r3 + cmp r1, #0 + beq _022C2040 + ldr fp, _022C21D0 ; =ov10_022DC1D4 + mov r8, #0 + mov r5, sb, lsl #4 + add r4, fp, sb, lsl #4 +_022C1FBC: + mov r7, #0 + mov r6, r8, lsl #5 +_022C1FC4: + ldrsh r1, [fp, r5] + ldr r2, [sl, #0x14] + ldrsh r0, [r4, #2] + add r3, r7, r1 + add r2, r2, r6, lsl #1 + mov r1, r7, lsl #1 + ldrh sb, [r1, r2] + add r0, r8, r0 + add r1, sp, #8 + str r3, [sp, #8] + str r0, [sp, #0xc] + ldr r0, [sl, #0x2c] + mov r2, #0 + bl sub_0200B3FC + ldr r0, _022C21D4 ; =0x00000FFF + add r1, sp, #8 + and r0, sb, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + orr r0, r0, #0x5000 + mov r0, r0, lsl #0x10 + mov r2, r0, lsr #0x10 + ldr r0, [sl, #0x30] + bl sub_0200B3FC + add r7, r7, #1 + cmp r7, #0x10 + blt _022C1FC4 + add r8, r8, #1 + cmp r8, #0xc + blt _022C1FBC + b _022C21C8 +_022C2040: + ldrb r0, [sl, #0x21] + cmp r0, #0 + movne r7, #1 + bne _022C2064 + cmp r8, #0 + movne r0, #8 + moveq r0, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, lsr #0x10 +_022C2064: + ldr r0, _022C21D0 ; =ov10_022DC1D4 + mov r5, #0 + add r0, r0, sb, lsl #4 + mov fp, sb, lsl #4 + str r0, [sp, #4] +_022C2078: + mov r6, #0 + mov r4, r5, lsl #5 +_022C2080: + ldr r0, [sl, #0x14] + mov r1, r6, lsl #1 + add r0, r0, r4, lsl #1 + ldrh r2, [r1, r0] + ldr r3, _022C21D4 ; =0x00000FFF + ldr r0, _022C21D0 ; =ov10_022DC1D4 + and r2, r2, r3 + ldrsh r1, [r0, fp] + ldr r0, [sp, #4] + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + ldrsh r0, [r0, #2] + orr r2, r2, r7, lsl #12 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + str r2, [sp] + add r1, r6, r1 + str r1, [sp, #8] + add r0, r5, r0 + str r0, [sp, #0xc] + ldr r0, [sl, #0x2c] + add r1, sp, #8 + mov r2, #0 + bl sub_0200B3FC + ldr r2, [sp] + ldr r0, [sl, #0x30] + add r1, sp, #8 + bl sub_0200B3FC + add r6, r6, #1 + cmp r6, #0x10 + blt _022C2080 + add r5, r5, #1 + cmp r5, #0xc + blt _022C2078 + ldrb r0, [sl, #0x21] + cmp r0, #0 + movne r4, #0 + bne _022C212C + cmp r8, #0 + movne r0, #7 + moveq r0, #0 + mov r0, r0, lsl #0x10 + mov r4, r0, lsr #0x10 +_022C212C: + ldrb r0, [sl, #0x20] + cmp r0, #0 + bne _022C21C8 + ldr r0, _022C21D0 ; =ov10_022DC1D4 + ldr fp, _022C21D4 ; =0x00000FFF + mov r7, #0 + add r5, r0, sb, lsl #4 +_022C2148: + mov r8, #0 + mov r6, r7, lsl #5 +_022C2150: + ldr r1, [sl, #0x14] + ldrsh r0, [r5, #4] + add r1, r1, r6, lsl #1 + add r1, r1, r8, lsl #1 + ldrh r3, [r1, #0x20] + add r2, r8, r0 + ldrsh r1, [r5, #6] + and r0, r3, fp + mov r0, r0, lsl #0x10 + add r1, r7, r1 + mov r0, r0, lsr #0x10 + orr r0, r0, r4, lsl #12 + str r2, [sp, #8] + str r1, [sp, #0xc] + mov r3, r0, lsl #0x10 + ldr r0, [sl, #0x2c] + add r1, sp, #8 + mov r2, #0 + mov sb, r3, lsr #0x10 + bl sub_0200B3FC + ldr r0, [sl, #0x30] + mov r2, sb + add r1, sp, #8 + bl sub_0200B3FC + add r8, r8, #1 + cmp r8, #6 + blt _022C2150 + add r7, r7, #1 + cmp r7, #6 + blt _022C2148 +_022C21C8: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022C21D0: .word ov10_022DC1D4 +_022C21D4: .word 0x00000FFF + arm_func_end ov10_022C1F90 + + arm_func_start ov10_022C21D8 +ov10_022C21D8: ; 0x022C21D8 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #8 + mov r5, r0 + ldr r0, [r5, #0x14] + mov r4, #0 + add r0, r0, #0x400 + ldrh sl, [r0, #0x80] + add r7, sp, #0 + mov r6, r4 + mov r8, r4 +_022C2200: + mov sb, r8 +_022C2204: + str sb, [sp] + str r4, [sp, #4] + ldr r0, [r5, #0x2c] + mov r1, r7 + mov r2, r6 + bl sub_0200B3FC + ldr r0, [r5, #0x30] + mov r1, r7 + mov r2, sl + bl sub_0200B3FC + add sb, sb, #1 + cmp sb, #0x20 + blt _022C2204 + add r4, r4, #1 + cmp r4, #0x20 + blt _022C2200 + ldr r0, [r5, #0x2c] + bl sub_0200B330 + ldr r0, [r5, #0x30] + bl sub_0200B330 + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + arm_func_end ov10_022C21D8 + + arm_func_start ov10_022C225C +ov10_022C225C: ; 0x022C225C + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x2c] + bl sub_0200B330 + ldr r0, [r4, #0x30] + bl sub_0200B330 + ldmia sp!, {r4, pc} + arm_func_end ov10_022C225C + + arm_func_start ov10_022C2278 +ov10_022C2278: ; 0x022C2278 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, [r4] + cmp r1, #0 + ldmeqia sp!, {r4, pc} + bl sub_02052334 + mov r0, r4 + mov r1, #0x14 + bl MemZero + ldmia sp!, {r4, pc} + arm_func_end ov10_022C2278 + + arm_func_start ov10_022C22A0 +ov10_022C22A0: ; 0x022C22A0 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0 + mov r1, r0 + mov r2, #1 + bl GetBgRegionArea + mov r1, #1 + str r0, [r4] + mov r2, r1 + mov r0, #0 + bl GetBgRegionArea + str r0, [r4, #4] + mov r0, #0 + mov r1, #1 + bl sub_02051DFC + str r0, [r4, #8] + mov r0, #1 + mov r1, r0 + bl sub_02051DFC + str r0, [r4, #0xc] + mov r0, #1 + bl sub_02051ED4 + str r0, [r4, #0x10] + ldmia sp!, {r4, pc} + arm_func_end ov10_022C22A0 + + arm_func_start ov10_022C2300 +ov10_022C2300: ; 0x022C2300 + stmia r0, {r1, r2} + ldr r2, [sp] + str r3, [r0, #8] + ldr r1, [sp, #4] + str r2, [r0, #0xc] + str r1, [r0, #0x10] + bx lr + arm_func_end ov10_022C2300 + + arm_func_start ov10_022C231C +ov10_022C231C: ; 0x022C231C + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, [r4, #0x28] + ldr r1, [r4, #0x18] + ldr r2, [r4, #8] + bl Memcpy32 + ldr r0, [r4, #0x34] + bl MarkPaletteDataAsNeedingUpdate + ldmia sp!, {r4, pc} + arm_func_end ov10_022C231C + + arm_func_start ov10_022C2340 +ov10_022C2340: ; 0x022C2340 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + mov r0, #0xc + mov r1, #0 + bl MemAlloc + ldr r1, _022C23AC ; =ov10_022DC214 + mov r5, r4, lsl #3 + str r0, [r1] + mov r0, r5 + mov r1, #0 + bl MemAlloc + ldr r2, _022C23AC ; =ov10_022DC214 + mov r1, r5 + ldr r3, [r2] + str r0, [r3] + ldr r0, [r2] + ldr r0, [r0] + bl MemZero + ldr r0, _022C23AC ; =ov10_022DC214 + ldr r0, [r0] + str r4, [r0, #4] + bl Rand16Bit + ldr r1, _022C23AC ; =ov10_022DC214 + and r2, r0, #0x400 + ldr r0, [r1] + strh r2, [r0, #8] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022C23AC: .word ov10_022DC214 + arm_func_end ov10_022C2340 + + arm_func_start ov10_022C23B0 +ov10_022C23B0: ; 0x022C23B0 + stmdb sp!, {r3, lr} + ldr r0, _022C23E8 ; =ov10_022DC214 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldr r0, [r0] + bl MemFree + ldr r0, _022C23E8 ; =ov10_022DC214 + ldr r0, [r0] + bl MemFree + ldr r0, _022C23E8 ; =ov10_022DC214 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022C23E8: .word ov10_022DC214 + arm_func_end ov10_022C23B0 + + arm_func_start ov10_022C23EC +ov10_022C23EC: ; 0x022C23EC + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _022C244C ; =ov10_022DC214 + ldr r1, [r0] + cmp r1, #0 + ldmeqia sp!, {r4, r5, r6, pc} + ldr r0, [r1, #4] + ldr r4, [r1] + mov r0, r0, lsl #0x10 + movs r6, r0, lsr #0x10 + mov r5, #0 + ldmeqia sp!, {r4, r5, r6, pc} + b _022C2440 +_022C241C: + ldr r1, [r4] + cmp r1, #0 + beq _022C2430 + mov r0, r4 + blx r1 +_022C2430: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, lsr #0x10 + add r4, r4, #8 +_022C2440: + cmp r5, r6 + blo _022C241C + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022C244C: .word ov10_022DC214 + arm_func_end ov10_022C23EC + + arm_func_start ov10_022C2450 +ov10_022C2450: ; 0x022C2450 + stmdb sp!, {r4, r5, r6, lr} + ldr r2, _022C24D4 ; =ov10_022DC214 + mov r5, r0 + ldr r6, [r2] + mov r4, r1 + ldr r0, [r6, #4] + ldr r2, [r6] + mov r1, r0, lsl #0x10 + mov r3, #0 + b _022C24A4 +_022C2478: + ldr r0, [r2] + cmp r0, #0 + ldreqh r0, [r6, #8] + orreq r0, r3, r0 + moveq r0, r0, lsl #0x10 + moveq r6, r0, lsr #0x10 + beq _022C24B0 + add r0, r3, #1 + mov r0, r0, lsl #0x10 + mov r3, r0, lsr #0x10 + add r2, r2, #8 +_022C24A4: + cmp r3, r1, lsr #16 + blo _022C2478 + ldr r6, _022C24D8 ; =0x0000FFFF +_022C24B0: + ldr r0, _022C24D8 ; =0x0000FFFF + cmp r6, r0 + beq _022C24CC + mov r0, r6 + bl ov10_022C24E8 + str r5, [r0] + str r4, [r0, #4] +_022C24CC: + mov r0, r6 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022C24D4: .word ov10_022DC214 +_022C24D8: .word 0x0000FFFF + arm_func_end ov10_022C2450 + + arm_func_start ov10_022C24DC +ov10_022C24DC: ; 0x022C24DC + ldr ip, _022C24E4 ; =ov10_022C250C + bx ip + .align 2, 0 +_022C24E4: .word ov10_022C250C + arm_func_end ov10_022C24DC + + arm_func_start ov10_022C24E8 +ov10_022C24E8: ; 0x022C24E8 + ldr r1, _022C2508 ; =ov10_022DC214 + ldr r1, [r1] + ldrh r2, [r1, #8] + ldr r1, [r1] + sub r0, r0, r2 + mov r0, r0, lsl #0x10 + add r0, r1, r0, lsr #13 + bx lr + .align 2, 0 +_022C2508: .word ov10_022DC214 + arm_func_end ov10_022C24E8 + + arm_func_start ov10_022C250C +ov10_022C250C: ; 0x022C250C + ldr r1, [r0, #4] + cmp r1, #0 + movne r1, #0 + strne r1, [r0, #4] + mov r1, #0 + str r1, [r0] + bx lr + arm_func_end ov10_022C250C + + arm_func_start ov10_022C2528 +ov10_022C2528: ; 0x022C2528 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + sub r0, r2, r1 + mov r1, r3 + bl MultiplyByFixedPoint + mov r4, r0 + str r0, [r5] + bl abs + ldr r1, [sp, #0x10] + cmp r0, r1 + bgt _022C256C + cmp r4, #0 + rsblt r0, r1, #0 + strlt r0, [r5] + strge r1, [r5] + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_022C256C: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov10_022C2528 diff --git a/asm/overlay_11.s b/asm/overlay_11.s index 542281dd..85e25e52 100644 --- a/asm/overlay_11.s +++ b/asm/overlay_11.s @@ -9397,6180 +9397,3 @@ _022E45B8: .word ov11_02319658 _022E45BC: .word ov11_02318614 _022E45C0: .word ov11_02319674 arm_func_end ScriptCaseProcess - - arm_func_start ov11_022E45C4 -ov11_022E45C4: ; 0x022E45C4 - stmdb sp!, {r3, lr} - bl GetLanguage - ldr r1, _022E45D8 ; =ov11_02324F70 - strb r0, [r1] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E45D8: .word ov11_02324F70 - arm_func_end ov11_022E45C4 - - arm_func_start ov11_022E45DC -ov11_022E45DC: ; 0x022E45DC - stmdb sp!, {r3, lr} - bl GetLanguage - ldr r1, _022E45F0 ; =ov11_02324F70 - strb r0, [r1] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E45F0: .word ov11_02324F70 - arm_func_end ov11_022E45DC - - arm_func_start ov11_022E45F4 -ov11_022E45F4: ; 0x022E45F4 - mov r1, #0 - strb r1, [r0] - bx lr - arm_func_end ov11_022E45F4 - - arm_func_start ov11_022E4600 -ov11_022E4600: ; 0x022E4600 - mov r3, #0 - b _022E4624 -_022E4608: - ldrsb r2, [r1], #1 - mov ip, r0 - strb r2, [r0], #1 - ldrsb r2, [ip] - cmp r2, #0 - bxeq lr - add r3, r3, #1 -_022E4624: - cmp r3, #8 - blt _022E4608 - bx lr - arm_func_end ov11_022E4600 - - arm_func_start ov11_022E4630 -ov11_022E4630: ; 0x022E4630 - stmdb sp!, {r3, lr} - cmp r0, #0 - ldrnesb r1, [r0] - cmpne r1, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - ldr r1, _022E4658 ; =ov11_0231968C - mov r2, #8 - bl sub_020023F8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E4658: .word ov11_0231968C - arm_func_end ov11_022E4630 - - arm_func_start ov11_022E465C -ov11_022E465C: ; 0x022E465C - ldr ip, _022E4668 ; =sub_020023F8 - mov r2, #8 - bx ip - .align 2, 0 -_022E4668: .word sub_020023F8 - arm_func_end ov11_022E465C - - arm_func_start ov11_022E466C -ov11_022E466C: ; 0x022E466C - mov r3, #0 - b _022E4688 -_022E4674: - ldrsb r2, [r0], #1 - cmp r2, #0 - beq _022E4690 - strb r2, [r1], #1 - add r3, r3, #1 -_022E4688: - cmp r3, #8 - blt _022E4674 -_022E4690: - mov r0, #0 - strb r0, [r1] - bx lr - arm_func_end ov11_022E466C - - arm_func_start ov11_022E469C -ov11_022E469C: ; 0x022E469C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, #0 - b _022E46C8 -_022E46B0: - ldrsb r0, [r6], #1 - cmp r0, #0 - beq _022E46D0 - bl sub_0200238C - strb r0, [r5], #1 - add r4, r4, #1 -_022E46C8: - cmp r4, #8 - blt _022E46B0 -_022E46D0: - mov r0, #0 - strb r0, [r5] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov11_022E469C - - arm_func_start LoadFileFromRomVeneer -LoadFileFromRomVeneer: ; 0x022E46DC - ldr ip, _022E46E4 ; =LoadFileFromRom - bx ip - .align 2, 0 -_022E46E4: .word LoadFileFromRom - arm_func_end LoadFileFromRomVeneer - - arm_func_start ov11_022E46E8 -ov11_022E46E8: ; 0x022E46E8 - ldr ip, _022E46F8 ; =SsbLoad2 - mov r2, #0 - str r2, [r0] - bx ip - .align 2, 0 -_022E46F8: .word SsbLoad2 - arm_func_end ov11_022E46E8 - - arm_func_start SsbLoad2 -SsbLoad2: ; 0x022E46FC -#ifdef EUROPE -#define SSB_LOAD_2_STACK_OFFSET 8 -#else -#define SSB_LOAD_2_STACK_OFFSET 0 -#endif - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x54 + SSB_LOAD_2_STACK_OFFSET - mov r4, r1 - mov r5, r0 - ldr r1, _022E48A4 ; =ov11_02319694 - mov r2, r4 - mov r0, #2 - bl Debug_Print - bl FileRom_InitDataTransfer - add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET - bl FileRom_Veneer_FileInit - add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET - mov r1, r4 - bl FileRom_HandleOpen - add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET - add r1, sp, #0 -#ifdef EUROPE - mov r2, #0x12 -#else - mov r2, #0xc -#endif - bl FileRom_HandleRead - ldrh r3, [sp, #4] - ldrh r2, [sp, #6] - ldr r0, _022E48A8 ; =ov11_02324F70 - add r1, sp, #0 - add r3, r3, r2 - ldrsb r2, [r0] - ldr r0, [r5] - cmp r0, #0 - add r0, r2, #4 - mov r0, r0, lsl #1 - ldrh r0, [r1, r0] - add r0, r3, r0 - mov r4, r0, lsl #1 - bne _022E4790 - mov r0, r4 - mov r1, #1 - str r4, [r5, #4] - bl MemAlloc - str r0, [r5] -_022E4790: - ldrh r2, [sp, #4] - ldr r1, [r5] - add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET - mov r2, r2, lsl #1 - bl FileRom_HandleRead - ldrh r0, [sp] - cmp r0, #0 - beq _022E47D4 - ldrh r1, [sp, #4] - ldrh r0, [sp, #2] - ldrh r2, [sp, #6] - ldr r3, [r5] - add r1, r1, r0 - add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET - add r1, r3, r1, lsl #1 - mov r2, r2, lsl #1 - bl FileRom_HandleRead -_022E47D4: - ldrh r0, [sp, #2] - cmp r0, #0 - beq _022E488C - ldrh r2, [sp, #4] - ldrh r1, [sp, #6] - ldr r0, _022E48A8 ; =ov11_02324F70 - mov r3, #0 - add r1, r2, r1 -#ifdef EUROPE - add r2, r1, #9 -#else - add r2, r1, #6 -#endif - ldrsb ip, [r0] - add r1, sp, #0 - b _022E4814 -_022E4804: - add r0, r1, r3, lsl #1 - ldrh r0, [r0, #8] - add r3, r3, #1 - add r2, r2, r0 -_022E4814: - cmp r3, ip - blt _022E4804 - mov r1, r2, lsl #1 - add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET - mov r2, #0 - bl FileRom_HandleSeek - ldrh r2, [sp, #2] - ldrh r1, [sp, #4] - ldr r3, [r5] - add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET - add r1, r3, r1, lsl #1 - mov r2, r2, lsl #1 - bl FileRom_HandleRead - ldr r0, _022E48A8 ; =ov11_02324F70 - add r1, sp, #0 - ldrsb r0, [r0] - ldrh ip, [sp, #2] - ldrh r2, [sp, #4] - add r0, r0, #4 - mov r0, r0, lsl #1 - ldrh r0, [r1, r0] - add r1, ip, r2 - ldrh r3, [sp, #6] - sub r2, r0, ip - ldr r5, [r5] - add r1, r3, r1 - add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET - add r1, r5, r1, lsl #1 - mov r2, r2, lsl #1 - bl FileRom_HandleRead -_022E488C: - add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET - bl FileClose - bl FileRom_StopDataTransfer - mov r0, r4 - add sp, sp, #0x54 + SSB_LOAD_2_STACK_OFFSET - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_022E48A4: .word ov11_02319694 -_022E48A8: .word ov11_02324F70 - arm_func_end SsbLoad2 - - arm_func_start ScriptParamToInt -ScriptParamToInt: ; 0x022E48AC - tst r0, #0x4000 - movne r1, #0x8000 - rsbne r1, r1, #0 - orrne r1, r0, r1 - ldreq r1, _022E48DC ; =0x00003FFF - andeq r1, r0, r1 - tst r0, #0x8000 - movne r0, r1, asr #7 - addne r0, r1, r0, lsr #24 - movne r0, r0, asr #8 - moveq r0, r1 - bx lr - .align 2, 0 -_022E48DC: .word 0x00003FFF - arm_func_end ScriptParamToInt - - arm_func_start ScriptParamToFixedPoint16 -ScriptParamToFixedPoint16: ; 0x022E48E0 - tst r0, #0x4000 - movne r1, #0x8000 - rsbne r1, r1, #0 - orrne r1, r0, r1 - ldreq r1, _022E4908 ; =0x00003FFF - andeq r1, r0, r1 - tst r0, #0x8000 - movne r0, r1 - moveq r0, r1, lsl #8 - bx lr - .align 2, 0 -_022E4908: .word 0x00003FFF - arm_func_end ScriptParamToFixedPoint16 - - arm_func_start ov11_022E490C -ov11_022E490C: ; 0x022E490C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - ldrh r0, [r7] - mov r4, r1 - bl ScriptParamToInt - mov r5, r0 - ldrh r0, [r7, #2] - bl ScriptParamToInt - mov r6, r0 - tst r5, #4 - bne _022E4958 - ldrh r0, [r7, #4] - bl ScriptParamToFixedPoint16 - mov r0, r0, lsl #3 - str r0, [r4] - tst r5, #2 - ldrne r0, [r4] - addne r0, r0, #0x400 - strne r0, [r4] -_022E4958: - tst r6, #4 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r0, [r7, #6] - bl ScriptParamToFixedPoint16 - mov r0, r0, lsl #3 - str r0, [r4, #4] - tst r6, #2 - ldrne r0, [r4, #4] - addne r0, r0, #0x400 - strne r0, [r4, #4] - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov11_022E490C - - arm_func_start ov11_022E4984 -ov11_022E4984: ; 0x022E4984 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - ldrh r0, [sl] - mov sb, r1 - mov r8, r2 - mov r7, r3 - bl ScriptParamToInt - mov r5, r0 - ldrh r0, [sl, #2] - bl ScriptParamToInt - mov r6, r0 - ldrh r0, [sl, #8] - bl ScriptParamToFixedPoint16 - mov r4, r0 - ldrh r0, [sl, #0xa] - bl ScriptParamToFixedPoint16 - mov fp, r0 - tst r5, #4 - bne _022E49F4 - ldrh r0, [sl, #4] - bl ScriptParamToFixedPoint16 - mov r0, r0, lsl #3 - str r0, [sb] - tst r5, #2 - ldrne r0, [sb] - addne r0, r0, #0x400 - strne r0, [sb] - b _022E49FC -_022E49F4: - ldr r0, [r7] - str r0, [sb] -_022E49FC: - ldr r0, [sb] - tst r6, #4 - add r0, r0, r4, lsl #3 - str r0, [r8] - bne _022E4A34 - ldrh r0, [sl, #6] - bl ScriptParamToFixedPoint16 - mov r0, r0, lsl #3 - str r0, [sb, #4] - tst r6, #2 - ldrne r0, [sb, #4] - addne r0, r0, #0x400 - strne r0, [sb, #4] - b _022E4A3C -_022E4A34: - ldr r0, [r7, #4] - str r0, [sb, #4] -_022E4A3C: - ldr r0, [sb, #4] - add r0, r0, fp, lsl #3 - str r0, [r8, #4] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - arm_func_end ov11_022E4984 - - arm_func_start ov11_022E4A4C -ov11_022E4A4C: ; 0x022E4A4C - stmdb sp!, {r3, lr} - bl GetLanguage - ldr r1, _022E4AF8 ; =ov11_02324F74 - ldr r2, _022E4AFC ; =ov11_02324C6C - strb r0, [r1, #1] - mov r0, #0x1000 - mov r1, #6 - str r0, [r2, #0x2c] - bl MemAlloc - ldr r2, _022E4AFC ; =ov11_02324C6C - mov r1, #6 - str r0, [r2, #0x28] - mov r0, #0x1000 - str r0, [r2, #0x24] - bl MemAlloc - ldr r2, _022E4AFC ; =ov11_02324C6C - mov r1, #6 - str r0, [r2, #0x20] - mov r0, #0x1000 - str r0, [r2, #4] - bl MemAlloc - ldr r2, _022E4AFC ; =ov11_02324C6C - mov r1, #6 - str r0, [r2] - mov r0, #0x2000 - str r0, [r2, #0xc] - bl MemAlloc - ldr r2, _022E4AFC ; =ov11_02324C6C - mov r1, #6 - str r0, [r2, #8] - mov r0, #0x2000 - str r0, [r2, #0x14] - bl MemAlloc - ldr r2, _022E4AFC ; =ov11_02324C6C - mov r1, #6 - str r0, [r2, #0x10] - mov r0, #0x8000 - str r0, [r2, #0x1c] - bl MemAlloc - ldr r1, _022E4AFC ; =ov11_02324C6C - str r0, [r1, #0x18] - bl ov11_022E4B88 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E4AF8: .word ov11_02324F74 -_022E4AFC: .word ov11_02324C6C - arm_func_end ov11_022E4A4C - - arm_func_start ov11_022E4B00 -ov11_022E4B00: ; 0x022E4B00 - stmdb sp!, {r3, lr} - ldr r0, _022E4B84 ; =ov11_02324C6C - ldr r0, [r0, #0x28] - bl MemFree - ldr r0, _022E4B84 ; =ov11_02324C6C - mov r1, #0 - str r1, [r0, #0x28] - ldr r0, [r0, #0x20] - bl MemFree - ldr r0, _022E4B84 ; =ov11_02324C6C - mov r1, #0 - str r1, [r0, #0x20] - ldr r0, [r0] - bl MemFree - ldr r0, _022E4B84 ; =ov11_02324C6C - mov r1, #0 - str r1, [r0] - ldr r0, [r0, #8] - bl MemFree - ldr r0, _022E4B84 ; =ov11_02324C6C - mov r1, #0 - str r1, [r0, #8] - ldr r0, [r0, #0x10] - bl MemFree - ldr r0, _022E4B84 ; =ov11_02324C6C - mov r1, #0 - str r1, [r0, #0x10] - ldr r0, [r0, #0x18] - bl MemFree - ldr r0, _022E4B84 ; =ov11_02324C6C - mov r1, #0 - str r1, [r0, #0x18] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E4B84: .word ov11_02324C6C - arm_func_end ov11_022E4B00 - - arm_func_start ov11_022E4B88 -ov11_022E4B88: ; 0x022E4B88 - stmdb sp!, {r3, lr} - ldr r1, _022E4BC8 ; =ov11_02324F74 - mvn r2, #0 - strh r2, [r1, #6] - strh r2, [r1, #0xa] - strh r2, [r1, #8] - strh r2, [r1, #2] - strh r2, [r1, #4] - mov r0, #0 - strb r0, [r1] - ldr r0, _022E4BCC ; =ov11_02324F82 - strh r2, [r1, #0xc] - bl ov11_022E45F4 - ldr r0, _022E4BD0 ; =ov11_02324F8A - bl ov11_022E45F4 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E4BC8: .word ov11_02324F74 -_022E4BCC: .word ov11_02324F82 -_022E4BD0: .word ov11_02324F8A - arm_func_end ov11_022E4B88 - - arm_func_start StationLoadHanger -StationLoadHanger: ; 0x022E4BD4 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x8c - mov r5, r0 - mov r4, r1 - cmp r5, #2 - bne _022E4C1C - add r1, sp, #0 - mov r0, r2 - bl ov11_022E469C - mov r0, r4 - bl sub_02064FFC - mov r2, r0 - ldr r1, _022E4CB8 ; =ov11_023196B0 - add r0, sp, #9 - add r3, sp, #0 - bl sprintf - ldr r4, _022E4CBC ; =ov11_02324C8C - b _022E4C84 -_022E4C1C: - cmp r5, #3 - bne _022E4C54 - add r1, sp, #0 - mov r0, r2 - bl ov11_022E469C - mov r0, r4 - bl sub_02064FFC - mov r2, r0 - ldr r1, _022E4CC0 ; =ov11_023196C4 - add r0, sp, #9 - add r3, sp, #0 - bl sprintf - ldr r4, _022E4CC4 ; =ov11_02324C6C - b _022E4C84 -_022E4C54: - mov r0, r4 - bl sub_02064FFC - mov r2, r0 - ldr r1, _022E4CC8 ; =ov11_023196D8 - add r0, sp, #9 - bl sprintf - add r0, sp, #9 - bl sub_02008BA8 - cmp r0, #0 - movle r0, #0 - ble _022E4CB0 - ldr r4, _022E4CCC ; =ov11_02324C94 -_022E4C84: - ldr r1, _022E4CD0 ; =ov11_023196EC - add r3, sp, #9 - mov r2, r5 - mov r0, #2 - bl Debug_Print - ldmia r4, {r0, r1} - bl MemZero - add r1, sp, #9 - mov r0, r4 - bl sub_02008C18 - mov r0, #1 -_022E4CB0: - add sp, sp, #0x8c - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_022E4CB8: .word ov11_023196B0 -_022E4CBC: .word ov11_02324C8C -_022E4CC0: .word ov11_023196C4 -_022E4CC4: .word ov11_02324C6C -_022E4CC8: .word ov11_023196D8 -_022E4CCC: .word ov11_02324C94 -_022E4CD0: .word ov11_023196EC - arm_func_end StationLoadHanger - - arm_func_start ov11_022E4CD4 -ov11_022E4CD4: ; 0x022E4CD4 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x44 - mov sb, r1 - mov sl, r0 - mov r8, r2 - ldr r1, _022E4FC4 ; =ov11_02319714 - mov r2, sl - mov r3, sb - mov r0, #2 - bl Debug_Print - cmp sl, #2 - ldreq r0, _022E4FC8 ; =ov11_02324C6C - ldreq r4, [r0, #0x20] - beq _022E4D20 - cmp sl, #3 - ldreq r0, _022E4FC8 ; =ov11_02324C6C - ldreq r4, [r0] - ldrne r0, _022E4FC8 ; =ov11_02324C6C - ldrne r4, [r0, #0x28] -_022E4D20: - ldrh r1, [r4, #2] - mov r0, #0xa - mvn fp, #0 - mla r0, sb, r0, r1 - add r5, r4, r0, lsl #1 - mov r0, r0, lsl #1 - ldrh r0, [r4, r0] - ldrh r1, [r5, #2] - mov r7, #0 - str r0, [sp, #8] - add r0, fp, #0x10000 - add r6, r4, r1, lsl #1 - str r0, [sp, #0x10] - b _022E4DC0 -_022E4D58: - ldrh r0, [r6] - mov r2, sl - mov r3, sb - strh r0, [sp, #0x38] - ldrh r0, [r6, #2] - sub r0, r0, #1 - strb r0, [sp, #0x3a] - ldrh r0, [r6, #4] - strb r0, [sp, #0x3b] - ldrh r0, [r6, #6] - strb r0, [sp, #0x3c] - ldrh r0, [r6, #8] - strb r0, [sp, #0x3d] - ldrh r0, [r6, #0xa] - strb r0, [sp, #0x3e] - ldrh r1, [r6, #0xc] - ldr r0, [sp, #0x10] - cmp r1, r0 - streqh fp, [sp, #0x40] - strneh r1, [sp, #0x40] - mov r0, fp - add r1, sp, #0x38 - str r8, [sp] - bl ov11_022F7E78 - add r7, r7, #1 - add r6, r6, #0x10 -_022E4DC0: - ldr r0, [sp, #8] - cmp r7, r0 - blt _022E4D58 - ldrh r0, [r5, #4] - ldrh r1, [r5, #6] - mvn fp, #0 - str r0, [sp, #4] - add r0, fp, #0x10000 - mov r7, #0 - add r6, r4, r1, lsl #1 - str r0, [sp, #0x14] - b _022E4E68 -_022E4DF0: - ldrh r0, [r6] - mov r2, sl - mov r3, sb - strh r0, [sp, #0x2c] - ldrh r0, [r6, #2] - sub r0, r0, #1 - strb r0, [sp, #0x2e] - ldrh r0, [r6, #4] - strb r0, [sp, #0x2f] - ldrh r0, [r6, #6] - strb r0, [sp, #0x30] - ldrh r0, [r6, #8] - strb r0, [sp, #0x31] - ldrh r0, [r6, #0xa] - strb r0, [sp, #0x32] - ldrh r0, [r6, #0xc] - strb r0, [sp, #0x33] - ldrh r0, [r6, #0xe] - strb r0, [sp, #0x34] - ldrh r1, [r6, #0x10] - ldr r0, [sp, #0x14] - cmp r1, r0 - streqh fp, [sp, #0x36] - strneh r1, [sp, #0x36] - mov r0, fp - add r1, sp, #0x2c - str r8, [sp] - bl ov11_022FBEC4 - add r7, r7, #1 - add r6, r6, #0x14 -_022E4E68: - ldr r0, [sp, #4] - cmp r7, r0 - blt _022E4DF0 - ldrh r0, [r5, #0xa] - ldrh fp, [r5, #8] - mov r7, #0 - add r6, r4, r0, lsl #1 - mvn r0, #0 - str r0, [sp, #0xc] - b _022E4EF4 -_022E4E90: - ldrh r2, [r6] - ldr r0, [sp, #0xc] - add r1, sp, #0x22 - strh r2, [sp, #0x22] - ldrh ip, [r6, #2] - mov r2, sl - mov r3, sb - sub ip, ip, #1 - strb ip, [sp, #0x24] - ldrh ip, [r6, #4] - strb ip, [sp, #0x25] - ldrh ip, [r6, #6] - strb ip, [sp, #0x26] - ldrh ip, [r6, #8] - strb ip, [sp, #0x27] - ldrh ip, [r6, #0xa] - strb ip, [sp, #0x28] - ldrh ip, [r6, #0xc] - strb ip, [sp, #0x29] - ldrh ip, [r6, #0xe] - strb ip, [sp, #0x2a] - str r8, [sp] - bl ov11_022FD72C - add r7, r7, #1 - add r6, r6, #0x14 -_022E4EF4: - cmp r7, fp - blt _022E4E90 - sub r0, sl, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - bhi _022E4FB8 - ldrh r0, [r5, #0xe] - ldrh r7, [r5, #0xc] - mvn r5, #0 - mov r8, #0 - add r6, r4, r0, lsl #1 - add fp, r5, #0x8000 - b _022E4FB0 -_022E4F34: - ldrh r1, [r6, #0xc] - tst r1, #0x8000 - andne r0, r1, fp - strneh r0, [sp, #0x18] - strneh r5, [sp, #0x20] - bne _022E4F64 - mov r0, r1, lsl #1 - ldrsh r0, [r4, r0] - add r1, r4, r1, lsl #1 - strh r0, [sp, #0x18] - ldrsh r0, [r1, #6] - strh r0, [sp, #0x20] -_022E4F64: - ldrh r2, [r6] - mov r0, r5 - add r1, sp, #0x18 - strb r2, [sp, #0x1a] - ldrh ip, [r6, #2] - mov r2, sl - mov r3, sb - strb ip, [sp, #0x1b] - ldrh ip, [r6, #4] - strb ip, [sp, #0x1c] - ldrh ip, [r6, #6] - strb ip, [sp, #0x1d] - ldrh ip, [r6, #8] - strb ip, [sp, #0x1e] - ldrh ip, [r6, #0xa] - strb ip, [sp, #0x1f] - bl ov11_022FEA98 - add r8, r8, #1 - add r6, r6, #0x10 -_022E4FB0: - cmp r8, r7 - blt _022E4F34 -_022E4FB8: - mov r0, #1 - add sp, sp, #0x44 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E4FC4: .word ov11_02319714 -_022E4FC8: .word ov11_02324C6C - arm_func_end ov11_022E4CD4 - - arm_func_start ov11_022E4FCC -ov11_022E4FCC: ; 0x022E4FCC - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x90 - mov r5, r1 - mov r4, r2 - cmp r0, #3 - bne _022E5014 - add r1, sp, #4 - mov r0, r3 - bl ov11_022E469C - mov r0, r5 - bl sub_02064FFC - mov r2, r0 - ldr r1, _022E512C ; =ov11_02319730 - add r0, sp, #0xd - add r3, sp, #4 - bl sprintf - ldr r0, _022E5130 ; =ov11_02324C84 - b _022E511C -_022E5014: - cmp r0, #5 - bne _022E5050 - add r1, sp, #4 - mov r0, r3 - bl ov11_022E469C - mov r0, r5 - bl sub_02064FFC - mov r2, r0 - ldr r1, _022E5134 ; =ov11_02319744 - add r0, sp, #0xd - add r3, sp, #4 - str r4, [sp] - bl sprintf - ldr r0, _022E5130 ; =ov11_02324C84 - b _022E511C -_022E5050: - cmp r0, #4 - bne _022E507C - mov r0, r5 - bl sub_02064FFC - mov r2, r0 - ldr r1, _022E5138 ; =ov11_0231975C - add r0, sp, #0xd - mov r3, r4 - bl sprintf - ldr r0, _022E5130 ; =ov11_02324C84 - b _022E511C -_022E507C: - cmp r0, #6 - bne _022E50A8 - add r1, sp, #4 - mov r0, r3 - bl ov11_022E469C - ldr r1, _022E513C ; =ov11_02319774 - add r0, sp, #0xd - add r2, sp, #4 - bl sprintf - ldr r0, _022E5130 ; =ov11_02324C84 - b _022E511C -_022E50A8: - cmp r0, #2 - bne _022E50E8 - add r1, sp, #4 - mov r0, r3 - bl ov11_022E469C - mov r0, r5 - bl sub_02064FFC - mov r2, r0 - mov ip, #0 - ldr r1, _022E5134 ; =ov11_02319744 - add r0, sp, #0xd - add r3, sp, #4 - str ip, [sp] - bl sprintf - ldr r0, _022E5140 ; =ov11_02324C7C - b _022E511C -_022E50E8: - mov r0, r5 - bl sub_02064FFC - mov r2, r0 - ldr r1, _022E5138 ; =ov11_0231975C - add r0, sp, #0xd - mov r3, #0 - bl sprintf - add r0, sp, #0xd - bl sub_02008BA8 - cmp r0, #0 - movle r0, #0 - ble _022E5124 - ldr r0, _022E5144 ; =ov11_02324C74 -_022E511C: - add r1, sp, #0xd - bl SsbLoad1 -_022E5124: - add sp, sp, #0x90 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E512C: .word ov11_02319730 -_022E5130: .word ov11_02324C84 -_022E5134: .word ov11_02319744 -_022E5138: .word ov11_0231975C -_022E513C: .word ov11_02319774 -_022E5140: .word ov11_02324C7C -_022E5144: .word ov11_02324C74 - arm_func_end ov11_022E4FCC - - arm_func_start ov11_022E5148 -ov11_022E5148: ; 0x022E5148 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r1, _022E5180 ; =ov11_0231978C - mov r2, r4 - mov r0, #2 - bl Debug_Print - ldr r0, _022E5184 ; =ov11_02324F74 - ldrsh r0, [r0, #6] - cmp r0, r4 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - bl ov11_022DCB28 - mov r0, #1 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E5180: .word ov11_0231978C -_022E5184: .word ov11_02324F74 - arm_func_end ov11_022E5148 - - arm_func_start ov11_022E5188 -ov11_022E5188: ; 0x022E5188 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - mov r5, r0 - mov r0, #2 - mov r4, r1 - bl Debug_GetLogFlag - cmp r0, #0 - beq _022E51C8 - add r1, sp, #0 - mov r0, r4 - bl ov11_022E466C - ldr r1, _022E524C ; =ov11_023197B4 - add r3, sp, #0 - mov r2, r5 - mov r0, #2 - bl Debug_Print -_022E51C8: - mov r0, r5 - bl ov11_022E5148 - cmp r0, #0 - movne r0, #1 - bne _022E5244 - ldr r0, _022E5250 ; =ov11_02324F74 - ldrsh r0, [r0, #2] - cmp r0, r5 - bne _022E5210 - cmp r5, #0 - movlt r0, #0 - blt _022E5244 - ldr r0, _022E5254 ; =ov11_02324F82 - mov r1, r4 - bl ov11_022E465C - cmp r0, #0 - movne r0, #0 - bne _022E5244 -_022E5210: - mov r0, #2 - sub r1, r0, #4 - bl ov11_022F85C0 - mov r0, #2 - sub r1, r0, #4 - bl ov11_022FC494 - mov r0, #2 - sub r1, r0, #4 - bl ov11_022FDC34 - mov r0, #2 - sub r1, r0, #4 - bl ov11_022FEC9C - mov r0, #1 -_022E5244: - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_022E524C: .word ov11_023197B4 -_022E5250: .word ov11_02324F74 -_022E5254: .word ov11_02324F82 - arm_func_end ov11_022E5188 - - arm_func_start ov11_022E5258 -ov11_022E5258: ; 0x022E5258 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - mov r5, r0 - mov r0, #2 - mov r4, r1 - bl Debug_GetLogFlag - cmp r0, #0 - beq _022E5298 - add r1, sp, #0 - mov r0, r4 - bl ov11_022E466C - ldr r1, _022E5308 ; =ov11_023197D8 - add r3, sp, #0 - mov r2, r5 - mov r0, #2 - bl Debug_Print -_022E5298: - ldr r0, _022E530C ; =ov11_02324F74 - ldrsh r0, [r0, #2] - cmp r0, r5 - bne _022E52CC - cmp r5, #0 - movlt r0, #0 - blt _022E5300 - ldr r0, _022E5310 ; =ov11_02324F82 - mov r1, r4 - bl ov11_022E465C - cmp r0, #0 - movne r0, #0 - bne _022E5300 -_022E52CC: - mov r0, #2 - sub r1, r0, #4 - bl ov11_022F85C0 - mov r0, #2 - sub r1, r0, #4 - bl ov11_022FC494 - mov r0, #2 - sub r1, r0, #4 - bl ov11_022FDC34 - mov r0, #2 - sub r1, r0, #4 - bl ov11_022FEC9C - mov r0, #1 -_022E5300: - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_022E5308: .word ov11_023197D8 -_022E530C: .word ov11_02324F74 -_022E5310: .word ov11_02324F82 - arm_func_end ov11_022E5258 - - arm_func_start ov11_022E5314 -ov11_022E5314: ; 0x022E5314 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - mov r5, r0 - mov r0, #2 - mov r4, r1 - bl Debug_GetLogFlag - cmp r0, #0 - beq _022E5354 - add r1, sp, #0 - mov r0, r4 - bl ov11_022E466C - ldr r1, _022E53D8 ; =ov11_02319800 - add r3, sp, #0 - mov r2, r5 - mov r0, #2 - bl Debug_Print -_022E5354: - mov r0, r5 - bl ov11_022E5148 - cmp r0, #0 - movne r0, #1 - bne _022E53D0 - ldr r1, _022E53DC ; =ov11_02324F74 - mvn r0, #0 - ldrsh r2, [r1, #0xc] - cmp r2, r0 - ldreqsh r0, [r1, #4] - cmpeq r0, r5 - bne _022E53A8 - cmp r5, #0 - movlt r0, #0 - blt _022E53D0 - ldr r0, _022E53E0 ; =ov11_02324F8A - mov r1, r4 - bl ov11_022E465C - cmp r0, #0 - movne r0, #0 - bne _022E53D0 -_022E53A8: - mov r0, #3 - sub r1, r0, #5 - bl ov11_022F85C0 - mov r0, #3 - sub r1, r0, #5 - bl ov11_022FC494 - mov r0, #3 - sub r1, r0, #5 - bl ov11_022FDC34 - mov r0, #1 -_022E53D0: - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_022E53D8: .word ov11_02319800 -_022E53DC: .word ov11_02324F74 -_022E53E0: .word ov11_02324F8A - arm_func_end ov11_022E5314 - - arm_func_start ScriptStationLoadTalk -ScriptStationLoadTalk: ; 0x022E53E4 - stmdb sp!, {r3, lr} - ldr r1, _022E5444 ; =ov11_02319828 - mov r2, r0 - mov r0, #2 - bl Debug_Print - ldr r1, _022E5448 ; =ov11_02324F74 - mvn r0, #0 - ldrsh r2, [r1, #0xc] - cmp r2, r0 - ldreqsh r1, [r1, #4] - cmpeq r1, r0 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #3 - sub r1, r0, #5 - bl ov11_022F85C0 - mov r0, #3 - sub r1, r0, #5 - bl ov11_022FC494 - mov r0, #3 - sub r1, r0, #5 - bl ov11_022FDC34 - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E5444: .word ov11_02319828 -_022E5448: .word ov11_02324F74 - arm_func_end ScriptStationLoadTalk - - arm_func_start ov11_022E544C -ov11_022E544C: ; 0x022E544C - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, r0 - ldr r1, _022E550C ; =ov11_0231984C - mov r2, r4 - mov r0, #2 - bl Debug_Print - ldr r1, _022E5510 ; =ov11_02324F74 - ldrsh r0, [r1, #6] - cmp r0, r4 - moveq r0, #0 - beq _022E5504 - mvn r2, #0 - strh r2, [r1, #8] - strh r2, [r1, #0xa] - strh r2, [r1, #2] - ldr r0, _022E5514 ; =ov11_02324F82 - strh r2, [r1, #4] - bl ov11_022E45F4 - ldr r0, _022E5518 ; =ov11_02324F8A - bl ov11_022E45F4 - cmp r4, #0 - ldrlt r0, _022E5510 ; =ov11_02324F74 - mvnlt r1, #0 - strlth r1, [r0, #6] - blt _022E5500 - ldr r0, _022E5510 ; =ov11_02324F74 - strh r4, [r0, #6] - bl ov11_022E5A68 - mov r1, r4 - mov r0, #1 - mov r2, #0 - bl StationLoadHanger - cmp r0, #0 - ldrne r0, _022E5510 ; =ov11_02324F74 - mov r3, #0 - strneh r4, [r0, #8] - mov r0, #1 - mov r1, r4 - sub r2, r0, #2 - str r3, [sp] - bl ov11_022E4FCC - cmp r0, #0 - ldrne r0, _022E5510 ; =ov11_02324F74 - strneh r4, [r0, #0xa] -_022E5500: - mov r0, #1 -_022E5504: - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_022E550C: .word ov11_0231984C -_022E5510: .word ov11_02324F74 -_022E5514: .word ov11_02324F82 -_022E5518: .word ov11_02324F8A - arm_func_end ov11_022E544C - - arm_func_start ov11_022E551C -ov11_022E551C: ; 0x022E551C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - mov r6, r0 - mov r0, #2 - mov r5, r1 - mov r4, r2 - bl Debug_GetLogFlag - cmp r0, #0 - beq _022E5564 - add r1, sp, #4 - mov r0, r5 - bl ov11_022E466C - ldr r1, _022E56AC ; =ov11_0231986C - add r3, sp, #4 - mov r2, r6 - mov r0, #2 - str r4, [sp] - bl Debug_Print -_022E5564: - ldr r0, _022E56B0 ; =ov11_02324F74 - ldrsh r0, [r0, #6] - cmp r0, r6 - beq _022E557C - mov r0, r6 - bl ov11_022E544C -_022E557C: - ldr r0, _022E56B0 ; =ov11_02324F74 - ldrsh r0, [r0, #2] - cmp r0, r6 - bne _022E55B0 - cmp r6, #0 - movlt r0, #0 - blt _022E56A4 - ldr r0, _022E56B4 ; =ov11_02324F82 - mov r1, r5 - bl ov11_022E465C - cmp r0, #0 - movne r0, #0 - bne _022E56A4 -_022E55B0: - mov r0, #2 - sub r1, r0, #4 - bl ov11_022F85C0 - mov r0, #2 - sub r1, r0, #4 - bl ov11_022FC494 - mov r0, #2 - sub r1, r0, #4 - bl ov11_022FDC34 - mov r0, #2 - sub r1, r0, #4 - bl ov11_022FEC9C - cmp r6, #0 - bge _022E5610 - ldr r1, _022E56B0 ; =ov11_02324F74 - mvn r2, #0 - ldr r0, _022E56B4 ; =ov11_02324F82 - strh r2, [r1, #2] - bl ov11_022E45F4 - ldr r0, _022E56B0 ; =ov11_02324F74 - mov r1, #0 - strb r1, [r0] - mov r0, #1 - b _022E56A4 -_022E5610: - mov r1, r6 - mov r2, r5 - mov r0, #2 - bl StationLoadHanger - cmp r0, #0 - beq _022E5684 - ldr r0, _022E56B0 ; =ov11_02324F74 - ldr r2, _022E56B4 ; =ov11_02324F82 - mov r3, r5 - strh r6, [r0, #2] - mov r1, #8 -_022E563C: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _022E563C - mov r0, #2 - mov r1, r6 - mov r3, r5 - sub r2, r0, #3 - str r4, [sp] - bl ov11_022E4FCC - cmp r0, #0 - ldrne r0, _022E56B0 ; =ov11_02324F74 - movne r1, #1 - ldreq r0, _022E56B0 ; =ov11_02324F74 - moveq r1, #0 - strb r1, [r0] - mov r0, #1 - b _022E56A4 -_022E5684: - ldr r1, _022E56B0 ; =ov11_02324F74 - mvn r2, #0 - ldr r0, _022E56B4 ; =ov11_02324F82 - strh r2, [r1, #2] - bl ov11_022E45F4 - ldr r1, _022E56B0 ; =ov11_02324F74 - mov r0, #0 - strb r0, [r1] -_022E56A4: - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E56AC: .word ov11_0231986C -_022E56B0: .word ov11_02324F74 -_022E56B4: .word ov11_02324F82 - arm_func_end ov11_022E551C - - arm_func_start ov11_022E56B8 -ov11_022E56B8: ; 0x022E56B8 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x98 - mov r5, r0 - mov r0, #2 - mov r4, r1 - mov r6, r2 - bl Debug_GetLogFlag - cmp r0, #0 - beq _022E5700 - add r1, sp, #0xd - mov r0, r4 - bl ov11_022E466C - ldr r1, _022E5838 ; =ov11_02319888 - add r3, sp, #0xd - mov r2, r5 - mov r0, #2 - str r6, [sp] - bl Debug_Print -_022E5700: - ldr r0, _022E583C ; =ov11_02324F74 - mvn r1, #0 - strh r1, [r0, #0xc] - ldrsh r0, [r0, #6] - cmp r0, r5 - beq _022E5720 - mov r0, r5 - bl ov11_022E544C -_022E5720: - ldr r0, _022E583C ; =ov11_02324F74 - ldrsh r0, [r0, #4] - cmp r0, r5 - bne _022E5754 - cmp r5, #0 - movlt r0, #0 - blt _022E5830 - ldr r0, _022E5840 ; =ov11_02324F8A - mov r1, r4 - bl ov11_022E465C - cmp r0, #0 - movne r0, #0 - bne _022E5830 -_022E5754: - mov r0, #3 - sub r1, r0, #5 - bl ov11_022F85C0 - mov r0, #3 - sub r1, r0, #5 - bl ov11_022FC494 - mov r0, #3 - sub r1, r0, #5 - bl ov11_022FDC34 - cmp r5, #0 - bge _022E579C - ldr r1, _022E583C ; =ov11_02324F74 - mvn r2, #0 - ldr r0, _022E5840 ; =ov11_02324F8A - strh r2, [r1, #4] - bl ov11_022E45F4 - mov r0, #1 - b _022E5830 -_022E579C: - mov r1, r5 - mov r2, r4 - mov r0, #3 - bl StationLoadHanger - cmp r0, #0 - beq _022E5818 - ldr r0, _022E583C ; =ov11_02324F74 - ldr r2, _022E5840 ; =ov11_02324F8A - mov r3, r4 - strh r5, [r0, #4] - mov r1, #8 -_022E57C8: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _022E57C8 - add r1, sp, #4 - mov r0, r4 - bl ov11_022E469C - mov r0, r5 - bl sub_02064FFC - mov r2, r0 - ldr r1, _022E5844 ; =ov11_02319730 - add r0, sp, #0x16 - add r3, sp, #4 - bl sprintf - ldr r0, _022E5848 ; =ov11_02324C84 - add r1, sp, #0x16 - bl SsbLoad1 - cmp r0, #0 - movne r0, #1 - bne _022E5830 -_022E5818: - ldr r1, _022E583C ; =ov11_02324F74 - mvn r2, #0 - ldr r0, _022E5840 ; =ov11_02324F8A - strh r2, [r1, #4] - bl ov11_022E45F4 - mov r0, #0 -_022E5830: - add sp, sp, #0x98 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E5838: .word ov11_02319888 -_022E583C: .word ov11_02324F74 -_022E5840: .word ov11_02324F8A -_022E5844: .word ov11_02319730 -_022E5848: .word ov11_02324C84 - arm_func_end ov11_022E56B8 - - arm_func_start ov11_022E584C -ov11_022E584C: ; 0x022E584C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #2 - bl Debug_GetLogFlag - cmp r0, #0 - beq _022E5884 - add r1, sp, #4 - mov r0, r4 - bl ov11_022E466C - ldr r1, _022E5900 ; =ov11_023198AC - add r2, sp, #4 - mov r0, #2 - bl Debug_Print -_022E5884: - ldr r1, _022E5904 ; =ov11_02324F74 - mvn r2, #0 - ldr r0, _022E5908 ; =ov11_02324F8A - strh r2, [r1, #4] - bl ov11_022E45F4 - mov r2, #0 - ldr r0, _022E5904 ; =ov11_02324F74 - str r2, [sp] - ldrsh r1, [r0, #8] - mov r3, r4 - mov r0, #6 - bl ov11_022E4FCC - mov r4, r0 - mov r0, #3 - sub r1, r0, #5 - bl ov11_022F85C0 - mov r0, #3 - sub r1, r0, #5 - bl ov11_022FC494 - mov r0, #3 - sub r1, r0, #5 - bl ov11_022FDC34 - cmp r4, #0 - ldrne r0, _022E5904 ; =ov11_02324F74 - movne r1, #6 - ldreq r0, _022E5904 ; =ov11_02324F74 - mvneq r1, #0 - strh r1, [r0, #0xc] - mov r0, r4 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E5900: .word ov11_023198AC -_022E5904: .word ov11_02324F74 -_022E5908: .word ov11_02324F8A - arm_func_end ov11_022E584C - - arm_func_start ov11_022E590C -ov11_022E590C: ; 0x022E590C - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r5, r1 - ldr r1, _022E59D8 ; =ov11_023198D0 - mov r2, r4 - mov r3, r5 - mov r0, #2 - bl Debug_Print - ldr r1, _022E59DC ; =ov11_02324F74 - mvn r2, #0 - ldr r0, _022E59E0 ; =ov11_02324F8A - strh r2, [r1, #4] - bl ov11_022E45F4 - cmp r4, #2 - bne _022E5970 - ldr r0, _022E59DC ; =ov11_02324F74 - mov r1, #0 - str r1, [sp] - ldrsh r1, [r0, #2] - mov r4, #5 - ldr r3, _022E59E4 ; =ov11_02324F82 - mov r0, r4 - mov r2, r5 - bl ov11_022E4FCC - b _022E5990 -_022E5970: - mov r3, #0 - ldr r0, _022E59DC ; =ov11_02324F74 - str r3, [sp] - ldrsh r1, [r0, #8] - mov r4, #4 - mov r0, r4 - mov r2, r5 - bl ov11_022E4FCC -_022E5990: - mov r5, r0 - mov r0, #3 - sub r1, r0, #5 - bl ov11_022F85C0 - mov r0, #3 - sub r1, r0, #5 - bl ov11_022FC494 - mov r0, #3 - sub r1, r0, #5 - bl ov11_022FDC34 - cmp r5, #0 - ldrne r0, _022E59DC ; =ov11_02324F74 - mvneq r1, #0 - strneh r4, [r0, #0xc] - ldreq r0, _022E59DC ; =ov11_02324F74 - streqh r1, [r0, #0xc] - mov r0, r5 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E59D8: .word ov11_023198D0 -_022E59DC: .word ov11_02324F74 -_022E59E0: .word ov11_02324F8A -_022E59E4: .word ov11_02324F82 - arm_func_end ov11_022E590C - - arm_func_start ov11_022E59E8 -ov11_022E59E8: ; 0x022E59E8 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r1, r4 - mov r0, #1 - bl ov11_022FEBFC - mov r1, r4 - mov r0, #1 - mov r2, #0 - bl ov11_022E4CD4 - ldmia sp!, {r4, pc} - arm_func_end ov11_022E59E8 - - arm_func_start ov11_022E5A10 -ov11_022E5A10: ; 0x022E5A10 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r1, r4 - mov r0, #2 - bl ov11_022FEBFC - mov r1, r4 - mov r0, #2 - mov r2, #0 - bl ov11_022E4CD4 - ldmia sp!, {r4, pc} - arm_func_end ov11_022E5A10 - - arm_func_start ov11_022E5A38 -ov11_022E5A38: ; 0x022E5A38 - ldr ip, _022E5A4C ; =ov11_022E4CD4 - mov r1, r0 - mov r0, #3 - mov r2, #0 - bx ip - .align 2, 0 -_022E5A4C: .word ov11_022E4CD4 - arm_func_end ov11_022E5A38 - - arm_func_start ov11_022E5A50 -ov11_022E5A50: ; 0x022E5A50 - ldr ip, _022E5A64 ; =ov11_022E4CD4 - mov r1, r0 - mov r0, #3 - mov r2, #1 - bx ip - .align 2, 0 -_022E5A64: .word ov11_022E4CD4 - arm_func_end ov11_022E5A50 - - arm_func_start ov11_022E5A68 -ov11_022E5A68: ; 0x022E5A68 - stmdb sp!, {r3, lr} - ldr r1, _022E5A94 ; =ov11_023198F0 - mov r0, #2 - bl Debug_Print - mov r0, #0 - bl ov11_022EAFF8 - bl ov11_022FEA28 - bl InitPartnerFollowDataAndLiveActorList - bl ov11_022FBE04 - bl ov11_022FD66C - ldmia sp!, {r3, pc} - .align 2, 0 -_022E5A94: .word ov11_023198F0 - arm_func_end ov11_022E5A68 - - arm_func_start ov11_022E5A98 -ov11_022E5A98: ; 0x022E5A98 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r1, r4 - mov r0, #1 - bl ov11_022F8408 - mov r1, r4 - mov r0, #1 - bl ov11_022FC2DC - mov r1, r4 - mov r0, #1 - bl ov11_022FDA7C - mov r1, r4 - mov r0, #1 - bl ov11_022FEBFC - ldmia sp!, {r4, pc} - arm_func_end ov11_022E5A98 - - arm_func_start ov11_022E5AD4 -ov11_022E5AD4: ; 0x022E5AD4 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r1, r4 - mov r0, #2 - bl ov11_022F8408 - mov r1, r4 - mov r0, #2 - bl ov11_022FC2DC - mov r1, r4 - mov r0, #2 - bl ov11_022FDA7C - mov r1, r4 - mov r0, #2 - bl ov11_022FEBFC - ldmia sp!, {r4, pc} - arm_func_end ov11_022E5AD4 - - arm_func_start ov11_022E5B10 -ov11_022E5B10: ; 0x022E5B10 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r1, r4 - mov r0, #3 - bl ov11_022F8408 - mov r1, r4 - mov r0, #3 - bl ov11_022FC2DC - mov r1, r4 - mov r0, #3 - bl ov11_022FDA7C - ldmia sp!, {r4, pc} - arm_func_end ov11_022E5B10 - - arm_func_start ov11_022E5B40 -ov11_022E5B40: ; 0x022E5B40 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r1, r5 - mov r0, #1 - bl ov11_022F8C18 - mov r4, r0 - mov r1, r5 - mov r0, #1 - bl ov11_022FC8C4 - orr r4, r4, r0 - mov r1, r5 - mov r0, #1 - bl ov11_022FDFD4 - orr r0, r4, r0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov11_022E5B40 - - arm_func_start ov11_022E5B7C -ov11_022E5B7C: ; 0x022E5B7C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r1, r5 - mov r0, #2 - bl ov11_022F8C18 - mov r4, r0 - mov r1, r5 - mov r0, #2 - bl ov11_022FC8C4 - orr r4, r4, r0 - mov r1, r5 - mov r0, #2 - bl ov11_022FDFD4 - orr r0, r4, r0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov11_022E5B7C - - arm_func_start ov11_022E5BB8 -ov11_022E5BB8: ; 0x022E5BB8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r1, r5 - mov r0, #3 - bl ov11_022F8C18 - mov r4, r0 - mov r1, r5 - mov r0, #3 - bl ov11_022FC8C4 - orr r4, r4, r0 - mov r1, r5 - mov r0, #3 - bl ov11_022FDFD4 - orr r0, r4, r0 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov11_022E5BB8 - - arm_func_start ov11_022E5BF4 -ov11_022E5BF4: ; 0x022E5BF4 - stmdb sp!, {r4, lr} - sub sp, sp, #0x20 - mov r1, #0 - str r1, [sp] - ldr r2, _022E5C80 ; =ov11_02324F74 - mov r1, #1 - ldrsh r3, [r2, #0xc] - mov r4, r0 - add r0, sp, #4 - sub r2, r1, #2 - bl ov11_022E5EFC - cmp r0, #0 - moveq r0, #0 - beq _022E5C78 - add r0, sp, #4 - strh r4, [sp, #0x1c] - bl ov11_022F7594 - ldr r1, _022E5C80 ; =ov11_02324F74 - mov r4, r0 - ldrsh r0, [r1, #0xc] - mvn r1, #1 - bl ov11_022F8C18 - ldr r1, _022E5C80 ; =ov11_02324F74 - orr r4, r4, r0 - ldrsh r0, [r1, #0xc] - mvn r1, #1 - bl ov11_022FC8C4 - ldr r1, _022E5C80 ; =ov11_02324F74 - orr r4, r4, r0 - ldrsh r0, [r1, #0xc] - mvn r1, #1 - bl ov11_022FDFD4 - orr r0, r4, r0 -_022E5C78: - add sp, sp, #0x20 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E5C80: .word ov11_02324F74 - arm_func_end ov11_022E5BF4 - - arm_func_start ov11_022E5C84 -ov11_022E5C84: ; 0x022E5C84 - stmdb sp!, {r4, lr} - sub sp, sp, #0x20 - mov r1, #0 - str r1, [sp] - ldr r0, _022E5D10 ; =ov11_02324F74 - mov r1, #1 - ldrsh r3, [r0, #0xc] - add r0, sp, #4 - sub r2, r1, #2 - bl ov11_022E5EFC - cmp r0, #0 - moveq r0, #0 - beq _022E5D08 - mov r1, #1 - add r0, sp, #4 - strh r1, [sp, #0x1c] - bl ov11_022F7594 - ldr r1, _022E5D10 ; =ov11_02324F74 - mov r4, r0 - ldrsh r0, [r1, #0xc] - mvn r1, #1 - bl ov11_022F8C18 - ldr r1, _022E5D10 ; =ov11_02324F74 - orr r4, r4, r0 - ldrsh r0, [r1, #0xc] - mvn r1, #1 - bl ov11_022FC8C4 - ldr r1, _022E5D10 ; =ov11_02324F74 - orr r4, r4, r0 - ldrsh r0, [r1, #0xc] - mvn r1, #1 - bl ov11_022FDFD4 - orr r0, r4, r0 -_022E5D08: - add sp, sp, #0x20 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E5D10: .word ov11_02324F74 - arm_func_end ov11_022E5C84 - - arm_func_start ov11_022E5D14 -ov11_022E5D14: ; 0x022E5D14 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r1, r4 - mov r0, #3 - bl ov11_022F8E70 - mov r1, r4 - mov r0, #3 - bl ov11_022FCA9C - mov r1, r4 - mov r0, #3 - bl ov11_022FE1AC - mov r0, #0 - mov r1, #0xa - bl ov11_022F881C - ldmia sp!, {r4, pc} - arm_func_end ov11_022E5D14 - - arm_func_start SsbLoad1 -SsbLoad1: ; 0x022E5D50 -#ifdef EUROPE -#define SSB_LOAD_1_STACK_OFFSET 8 -#else -#define SSB_LOAD_1_STACK_OFFSET 0 -#endif - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x54 + SSB_LOAD_1_STACK_OFFSET - mov r5, r1 - mov r4, r0 - ldr r1, _022E5EF4 ; =ov11_02319908 - mov r2, r5 - mov r0, #2 - bl Debug_Print - bl FileRom_InitDataTransfer - add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET - bl FileRom_Veneer_FileInit - add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET - mov r1, r5 - bl FileRom_HandleOpen - add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET - add r1, sp, #0 -#ifdef EUROPE - mov r2, #0x12 -#else - mov r2, #0xc -#endif - bl FileRom_HandleRead - ldrh r3, [sp, #4] - ldrh r2, [sp, #6] - ldr r0, _022E5EF8 ; =ov11_02324F74 - add r1, sp, #0 - add r3, r3, r2 - ldrsb r2, [r0, #1] - ldr r0, [r4] - cmp r0, #0 - add r0, r2, #4 - mov r0, r0, lsl #1 - ldrh r0, [r1, r0] - add r0, r3, r0 - mov r0, r0, lsl #1 - bne _022E5DE0 - mov r1, #1 - str r0, [r4, #4] - bl MemAlloc - str r0, [r4] -_022E5DE0: - ldrh r2, [sp, #4] - ldr r1, [r4] - add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET - mov r2, r2, lsl #1 - bl FileRom_HandleRead - ldrh r0, [sp] - cmp r0, #0 - beq _022E5E24 - ldrh r1, [sp, #4] - ldrh r0, [sp, #2] - ldrh r2, [sp, #6] - ldr r3, [r4] - add r1, r1, r0 - add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET - add r1, r3, r1, lsl #1 - mov r2, r2, lsl #1 - bl FileRom_HandleRead -_022E5E24: - ldrh r0, [sp, #2] - cmp r0, #0 - beq _022E5EDC - ldrh r2, [sp, #4] - ldrh r1, [sp, #6] - ldr r0, _022E5EF8 ; =ov11_02324F74 - mov r3, #0 - add r1, r2, r1 -#ifdef EUROPE - add r2, r1, #9 -#else - add r2, r1, #6 -#endif - ldrsb ip, [r0, #1] - add r1, sp, #0 - b _022E5E64 -_022E5E54: - add r0, r1, r3, lsl #1 - ldrh r0, [r0, #8] - add r3, r3, #1 - add r2, r2, r0 -_022E5E64: - cmp r3, ip - blt _022E5E54 - mov r1, r2, lsl #1 - add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET - mov r2, #0 - bl FileRom_HandleSeek - ldrh r2, [sp, #2] - ldrh r1, [sp, #4] - ldr r3, [r4] - add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET - add r1, r3, r1, lsl #1 - mov r2, r2, lsl #1 - bl FileRom_HandleRead - ldr r0, _022E5EF8 ; =ov11_02324F74 - add r1, sp, #0 - ldrsb r0, [r0, #1] - ldrh ip, [sp, #2] - ldrh r2, [sp, #4] - add r0, r0, #4 - mov r0, r0, lsl #1 - ldrh r0, [r1, r0] - add r1, ip, r2 - ldrh r3, [sp, #6] - sub r2, r0, ip - ldr r4, [r4] - add r1, r3, r1 - add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET - add r1, r4, r1, lsl #1 - mov r2, r2, lsl #1 - bl FileRom_HandleRead -_022E5EDC: - add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET - bl FileClose - bl FileRom_StopDataTransfer - mov r0, #1 - add sp, sp, #0x54 + SSB_LOAD_1_STACK_OFFSET - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_022E5EF4: .word ov11_02319908 -_022E5EF8: .word ov11_02324F74 - arm_func_end SsbLoad1 - - arm_func_start ov11_022E5EFC -ov11_022E5EFC: ; 0x022E5EFC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov r7, r3 - mov sl, r0 - cmp r7, #3 - ldreq r0, _022E608C ; =ov11_02324C6C - mov sb, r1 - mov r8, r2 - mov r6, #0 - ldreq r4, [r0, #0x18] - beq _022E5F90 - cmp r7, #5 - ldreq r0, _022E608C ; =ov11_02324C6C - ldreq r4, [r0, #0x18] - beq _022E5F90 - cmp r7, #4 - ldreq r0, _022E608C ; =ov11_02324C6C - ldreq r4, [r0, #0x18] - beq _022E5F90 - cmp r7, #6 - ldreq r0, _022E608C ; =ov11_02324C6C - ldreq r4, [r0, #0x18] - beq _022E5F90 - cmp r7, #2 - ldreq r0, _022E608C ; =ov11_02324C6C - ldreq r4, [r0, #0x10] - beq _022E5F90 - ldr r2, _022E6090 ; =ov11_02324F74 - sub r1, r6, #1 - ldrsh r2, [r2, #0xa] - cmp r2, r1 - bne _022E5F88 - bl ov11_022DC89C - mov r0, r6 - b _022E6084 -_022E5F88: - ldr r0, _022E608C ; =ov11_02324C6C - ldr r4, [r0, #8] -_022E5F90: - ldrh r0, [r4, #2] - cmp sb, #3 - add r5, r4, #4 - str r0, [sp] - bne _022E5FF4 - mov fp, #0 - b _022E5FE4 -_022E5FAC: - ldrh r0, [r5, #2] - cmp r0, sb - bne _022E5FDC - ldrh r1, [r5, #4] - add r0, sp, #4 - strh r1, [sp, #4] - bl sub_02065050 - ldrsh r0, [sp, #4] - cmp r0, r8 - ldreqh r0, [r5] - addeq r6, r4, r0, lsl #1 - beq _022E603C -_022E5FDC: - add r5, r5, #6 - add fp, fp, #1 -_022E5FE4: - ldr r0, [sp] - cmp fp, r0 - blt _022E5FAC - b _022E603C -_022E5FF4: - mov r1, #0 - b _022E6030 -_022E5FFC: - ldrh r0, [r5, #2] - cmp r0, sb - bne _022E6028 - cmp r8, #0 - blt _022E601C - ldrh r0, [r5, #4] - cmp r0, r8 - bne _022E6028 -_022E601C: - ldrh r0, [r5] - add r6, r4, r0, lsl #1 - b _022E603C -_022E6028: - add r5, r5, #6 - add r1, r1, #1 -_022E6030: - ldr r0, [sp] - cmp r1, r0 - blt _022E5FFC -_022E603C: - cmp r6, #0 - beq _022E6078 - stmia sl, {r4, r6} - ldrh r0, [r4] - ldrsb r1, [sp, #0x30] - add r0, r4, r0, lsl #1 - str r0, [sl, #8] - cmp r1, #0 - strh r7, [sl, #0x14] - movlt r1, #0 - strb r1, [sl, #0x16] - mvn r0, #0 - strh r0, [sl, #0x18] - mov r0, #1 - b _022E6084 -_022E6078: - mov r0, sl - bl ov11_022DC89C - mov r0, #0 -_022E6084: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E608C: .word ov11_02324C6C -_022E6090: .word ov11_02324F74 - arm_func_end ov11_022E5EFC - - arm_func_start ov11_022E6094 -ov11_022E6094: ; 0x022E6094 - ldr r0, _022E60A4 ; =ov11_02324C9C - mov r1, #1 - strb r1, [r0] - bx lr - .align 2, 0 -_022E60A4: .word ov11_02324C9C - arm_func_end ov11_022E6094 - - arm_func_start ov11_022E60A8 -ov11_022E60A8: ; 0x022E60A8 - ldr r0, _022E60B8 ; =ov11_02324C9C - mov r1, #1 - strb r1, [r0] - bx lr - .align 2, 0 -_022E60B8: .word ov11_02324C9C - arm_func_end ov11_022E60A8 - - arm_func_start ov11_022E60BC -ov11_022E60BC: ; 0x022E60BC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x144 - mov r5, r0 - mov r4, r1 - ldr r1, _022E68C4 ; =ov11_02319924 - mov r2, r5 - mov r0, #2 - bl Debug_Print - ldr r1, _022E68C8 ; =ov11_02324C9C - mov r0, #1 - strb r0, [r1] - cmp r5, #0x4c - addls pc, pc, r5, lsl #2 - b _022E68AC -_022E60F4: ; jump table - b _022E68AC ; case 0 - b _022E624C ; case 1 - b _022E6260 ; case 2 - b _022E6274 ; case 3 - b _022E6294 ; case 4 - b _022E68AC ; case 5 - b _022E68AC ; case 6 - b _022E68AC ; case 7 - b _022E68AC ; case 8 - b _022E68AC ; case 9 - b _022E68AC ; case 10 - b _022E6704 ; case 11 - b _022E62D4 ; case 12 - b _022E62FC ; case 13 - b _022E68AC ; case 14 - b _022E62E0 ; case 15 - b _022E6304 ; case 16 - b _022E68AC ; case 17 - b _022E62E8 ; case 18 - b _022E62F4 ; case 19 - b _022E6310 ; case 20 - b _022E6398 ; case 21 - b _022E68AC ; case 22 - b _022E63A0 ; case 23 - b _022E68AC ; case 24 - b _022E63A8 ; case 25 - b _022E68AC ; case 26 - b _022E63D0 ; case 27 - b _022E68AC ; case 28 - b _022E63B0 ; case 29 - b _022E63B8 ; case 30 - b _022E63C0 ; case 31 - b _022E63C8 ; case 32 - b _022E68AC ; case 33 - b _022E68AC ; case 34 - b _022E6440 ; case 35 - b _022E6510 ; case 36 - b _022E68AC ; case 37 - b _022E68AC ; case 38 - b _022E6518 ; case 39 - b _022E6524 ; case 40 - b _022E652C ; case 41 - b _022E6474 ; case 42 - b _022E6678 ; case 43 - b _022E68AC ; case 44 - b _022E68AC ; case 45 - b _022E68AC ; case 46 - b _022E68AC ; case 47 - b _022E6228 ; case 48 - b _022E6238 ; case 49 - b _022E68AC ; case 50 - b _022E68AC ; case 51 - b _022E6878 ; case 52 - b _022E6890 ; case 53 - b _022E6718 ; case 54 - b _022E6720 ; case 55 - b _022E6728 ; case 56 - b _022E63D8 ; case 57 - b _022E63EC ; case 58 - b _022E6400 ; case 59 - b _022E642C ; case 60 - b _022E6844 ; case 61 - b _022E686C ; case 62 - b _022E631C ; case 63 - b _022E6338 ; case 64 - b _022E6354 ; case 65 - b _022E6730 ; case 66 - b _022E638C ; case 67 - b _022E6384 ; case 68 - b _022E6378 ; case 69 - b _022E636C ; case 70 - b _022E6758 ; case 71 - b _022E68AC ; case 72 - b _022E67B8 ; case 73 - b _022E67D4 ; case 74 - b _022E67DC ; case 75 - b _022E67E4 ; case 76 -_022E6228: - mov r0, #0x11 - bl LoadOverlay - bl ov28_0238A140 - b _022E68AC -_022E6238: - mov r0, #0x11 - bl UnloadOverlay - mov r0, #0 - str r0, [r4] - b _022E68BC -_022E624C: - mov r0, #0 - mov r1, r0 - mov r2, r0 - bl SetupAndShowKeyboard - b _022E68AC -_022E6260: - mov r1, #0 - mov r2, r1 - mov r0, #3 - bl SetupAndShowKeyboard - b _022E68AC -_022E6274: - add r0, sp, #0xc0 - mov r1, #0xa - bl sub_02065BD8 - add r1, sp, #0xc0 - mov r0, #2 - mov r2, r1 - bl SetupAndShowKeyboard - b _022E68AC -_022E6294: - bl ov11_02310BDC -#ifdef JAPAN - mov r1, #0x400 -#endif - mov r4, #0 - ldr r3, _022E68CC ; =0x0000C402 - add r0, sp, #0x60 -#ifdef JAPAN - add r2, r1, #0xc5 -#else - mov r1, #0x400 - mov r2, #0x234 -#endif - str r4, [sp] - bl PreprocessStringFromId - add r0, sp, #0xa0 - add r1, sp, #0x60 -#ifdef JAPAN - bl sub_02025304_JP -#else - bl StrcpyName -#endif - add r1, sp, #0xa0 - mov r0, #1 - mov r2, r1 - bl SetupAndShowKeyboard - b _022E68AC -_022E62D4: - mov r0, #0 - bl LoadKangaskhanOverlay - b _022E68AC -_022E62E0: - bl LoadDuskullBankOverlay - b _022E68AC -_022E62E8: - mov r0, #0 - bl LoadKecleonShopOverlay - b _022E68AC -_022E62F4: - bl LoadKecleonShopOverlay - b _022E68AC -_022E62FC: - bl LoadKangaskhanOverlay - b _022E68AC -_022E6304: - mov r0, #0 - bl LoadChimechoAssemblyOverlay - b _022E68AC -_022E6310: - mov r0, #0 - bl LoadElectivireLinkShopOverlay - b _022E68AC -_022E631C: - add r1, sp, #0x5a - mov r0, #0 - bl sub_02065CD8 - add r0, sp, #0x5a - mov r1, #0 - bl ov11_02302CE0 - b _022E68AC -_022E6338: - add r1, sp, #0x54 - mov r0, #0 - bl sub_02065CD8 - add r0, sp, #0x54 - mov r1, #1 - bl ov11_02303208 - b _022E68AC -_022E6354: - add r0, sp, #0x100 - bl ov11_022E8090 - add r0, sp, #0x100 - mov r1, #1 - bl ov11_023025E8 - b _022E68AC -_022E636C: - mov r0, #3 - bl ov11_023039AC - b _022E68AC -_022E6378: - mov r0, #2 - bl ov11_023039AC - b _022E68AC -_022E6384: - bl ov11_023039AC - b _022E68AC -_022E638C: - mov r0, #0 - bl ov11_023039AC - b _022E68AC -_022E6398: - bl LoadLuminousSpringOverlay - b _022E68AC -_022E63A0: - bl LoadCroagunkSwapShopOverlay - b _022E68AC -_022E63A8: - bl LoadXatuAppraisalOverlay - b _022E68AC -_022E63B0: - bl LoadSpindaCafeOverlayInit - b _022E68AC -_022E63B8: - bl LoadSpindaCafeOverlayResume - b _022E68AC -_022E63C0: - bl LoadRecycleShopOverlayInit - b _022E68AC -_022E63C8: - bl LoadRecycleShopOverlayResume - b _022E68AC -_022E63D0: - bl LoadChanseyDaycareOverlay - b _022E68AC -_022E63D8: - mov r0, #0x12 - bl LoadOverlay - mov r0, #0 - str r0, [r4] - b _022E68BC -_022E63EC: - mov r0, #0x12 - bl UnloadOverlay - mov r0, #0 - str r0, [r4] - b _022E68BC -_022E6400: - mov r0, #0 - mov r1, #0x5c - bl LoadScriptVariableValue - cmp r0, #1 - bne _022E6420 - mov r0, #1 - bl ov11_0230CB88 - b _022E68AC -_022E6420: - mov r0, #0 - bl ov11_0230CB88 - b _022E68AC -_022E642C: - mov r0, #0x12 - bl LoadOverlay - mov r0, #2 - bl ov11_0230CB88 - b _022E68AC -_022E6440: - mov r0, #2 - mov r1, #0 - bl GetSosMailCount - cmp r0, #0 - ble _022E645C - bl ov11_023043A8 - b _022E68AC -_022E645C: - ldr r0, _022E68D0 ; =ov11_02324F94 - mov r1, #2 - str r1, [r0] - str r1, [r4] - mov r0, #0 - b _022E68BC -_022E6474: - add r0, sp, #0x12 - bl MissionRewardValidateDungeonId - cmp r0, #0 - beq _022E6504 - add r1, sp, #0x50 - add r2, sp, #0x4c - mov r0, #2 - bl LoadScriptVarValuePair - ldr r0, [sp, #0x4c] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - mov r1, r0 - ldrb r2, [sp, #0x12] - add r0, sp, #0x44 - bl WasMissionCompletedToday - cmp r0, #0 - beq _022E6504 - ldrsh r0, [sp, #0x48] - cmp r0, #0 - ldrsh r0, [sp, #0x46] - movne r1, #2 - moveq r1, #0 - cmp r0, #0 - movne r2, #1 - moveq r2, #0 - ldr r0, _022E68D0 ; =ov11_02324F94 - adds r1, r2, r1 - str r1, [r0] - moveq r1, #3 - streq r1, [r0] - ldr r1, _022E68D0 ; =ov11_02324F94 - mov r0, #0 - ldr r1, [r1] - str r1, [r4] - b _022E68BC -_022E6504: - mov r0, #0 - str r0, [r4] - b _022E68BC -_022E6510: - bl ov11_02304514 - b _022E68AC -_022E6518: - mov r0, #0 - bl ov11_02304664 - b _022E68AC -_022E6524: - bl ov11_02304664 - b _022E68AC -_022E652C: - add r0, sp, #0x11 - bl MissionRewardValidateDungeonId - cmp r0, #0 - beq _022E6644 - add r1, sp, #0x40 - add r2, sp, #0x3c - mov r0, #2 - bl LoadScriptVarValuePair - ldrb r1, [sp, #0x11] - ldr r2, [sp, #0x3c] - ldr r0, _022E68D4 ; =ov11_0231993C - bl Debug_Print0 - mov r8, #0 - ldr r0, [sp, #0x3c] - add sb, sp, #0x34 - mov r7, #0x68 - mov r6, r8 - mov r5, #0x69 - ldr fp, _022E68D8 ; =ov11_02319960 - b _022E663C -_022E657C: - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - mov sl, r0 - ldrb r2, [sp, #0x11] - mov r0, sb - mov r1, sl - bl WasMissionCompletedToday - mov r0, r8 - mov r1, r7 - ldrb r2, [sl, #1] - bl SaveScriptVariableValue - mov r0, r6 - mov r1, r5 - ldrb r2, [sl, #2] - bl SaveScriptVariableValue - ldrb r1, [sl] - mov r0, fp - str r1, [sp] - ldrb r1, [sp, #0x34] - str r1, [sp, #4] - ldrsh r1, [sp, #0x36] - str r1, [sp, #8] - ldrsh r1, [sp, #0x38] - str r1, [sp, #0xc] - ldr r1, [sp, #0x3c] - ldrb r2, [sl, #4] - ldrb r3, [sl, #1] - bl Debug_Print0 - ldrb r0, [sp, #0x34] - cmp r0, #0 - beq _022E6630 - ldr r1, [sp, #0x40] - ldr r2, [sp, #0x3c] - mov r0, #2 - bl SetScenarioProgressScriptVar - ldrsh r0, [sp, #0x36] - ldrsh r1, [sp, #0x38] - bl SetRandomRequestNpcs1And2 - ldrb r2, [sl, #1] - ldr r1, _022E68D0 ; =ov11_02324F94 - mov r0, #0 - str r2, [r1] - str r2, [r4] - b _022E68BC -_022E6630: - ldr r0, [sp, #0x3c] - add r0, r0, #1 - str r0, [sp, #0x3c] -_022E663C: - cmp r0, #8 - blt _022E657C -_022E6644: - ldr r0, _022E68D0 ; =ov11_02324F94 - mvn r1, #0 - str r1, [r0] - ldr r0, _022E68DC ; =ov11_023199B4 - str r1, [r4] - bl Debug_Print0 - bl sub_0205F504 - mov r1, #0 - mov r2, r1 - mov r0, #2 - bl SetScenarioProgressScriptVar - mov r0, #0 - b _022E68BC -_022E6678: - add r0, sp, #0x10 - bl MissionRewardValidateDungeonId - cmp r0, #0 - beq _022E66F8 - add r1, sp, #0x30 - add r2, sp, #0x2c - mov r0, #2 - bl LoadScriptVarValuePair - ldr r0, [sp, #0x2c] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - mov r1, r0 - ldrb r2, [sp, #0x10] - add r0, sp, #0x24 - bl WasMissionCompletedToday - ldrsh r1, [sp, #0x28] - ldr r0, _022E68E0 ; =ov11_023199D4 - str r1, [sp] - ldrb r2, [sp, #0x24] - ldrsh r3, [sp, #0x26] - ldr r1, [sp, #0x2c] - bl Debug_Print0 - ldrb r0, [sp, #0x24] - cmp r0, #0 - beq _022E66F8 - bl LoadRecycleShopOverlay - ldr r0, _022E68C8 ; =ov11_02324C9C - mov r1, #0 - strb r1, [r0] - mov r0, #1 - b _022E68BC -_022E66F8: - mov r0, #0 - str r0, [r4] - b _022E68BC -_022E6704: - mov r0, #0 - strb r0, [r1] - bl ov11_022E6EE8 - mov r0, #1 - b _022E68BC -_022E6718: - bl LoadRuleDungeonEffectsOverlay - b _022E68AC -_022E6720: - bl ov11_0230CDF4 - b _022E68AC -_022E6728: - bl ov11_0230CE08 - b _022E68AC -_022E6730: - mov r0, #0 - bl sub_0204F244 - cmp r0, #0 - beq _022E6748 - bl ov11_0230CE1C - b _022E68AC -_022E6748: - mvn r0, #0 - str r0, [r4] - mov r0, #0 - b _022E68BC -_022E6758: - mov r0, #0x20 - bl LoadOverlay - bl GetExecuteSpecialEpisodeType - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _022E67AC -_022E6770: ; jump table - b _022E6784 ; case 0 - b _022E678C ; case 1 - b _022E6794 ; case 2 - b _022E679C ; case 3 - b _022E67A4 ; case 4 -_022E6784: - mov r0, #1 - b _022E67B0 -_022E678C: - mov r0, #2 - b _022E67B0 -_022E6794: - mov r0, #3 - b _022E67B0 -_022E679C: - mov r0, #4 - b _022E67B0 -_022E67A4: - mov r0, #5 - b _022E67B0 -_022E67AC: - mov r0, #0 -_022E67B0: - bl ov28_0238A468 - b _022E68AC -_022E67B8: - mov r0, #0x20 - bl UnloadOverlay - ldr r1, _022E68D0 ; =ov11_02324F94 - mov r0, #1 - ldr r1, [r1] - str r1, [r4] - b _022E68BC -_022E67D4: - bl LoadSpecialEpisodeDiscardOverlay1 - b _022E68AC -_022E67DC: - bl LoadSpecialEpisodeDiscardOverlay2 - b _022E68AC -_022E67E4: - bl GetRank - mov r5, r0 - mov r0, #0 - mov r1, #0x6e - bl LoadScriptVariableValue - and r1, r0, #0xff - mov r0, #0 - str r0, [r4] - cmp r5, r1 - bls _022E683C - cmp r5, #9 - blo _022E682C - cmp r1, #9 - movlo r5, #9 - addhs r0, r1, #1 - andhs r5, r0, #0xff - sub r0, r5, #8 - str r0, [r4] -_022E682C: - mov r2, r5 - mov r0, #0 - mov r1, #0x6e - bl SaveScriptVariableValue -_022E683C: - mov r0, #0 - b _022E68BC -_022E6844: - add r0, sp, #0x20 - bl sub_02049338 - ldr r0, [sp, #0x20] - cmp r0, #0 - beq _022E6860 - mov r0, #1 - bl ScriptSpecialProcess0x16 -_022E6860: - mov r0, #0 - str r0, [r4] - b _022E68BC -_022E686C: - mov r0, #0 - str r0, [r4] - b _022E68BC -_022E6878: - add r0, sp, #0x16 - bl sub_0206C0FC - ldrsh r1, [sp, #0x16] - mov r0, #0xa - bl ov11_022FF1D4 - b _022E68AC -_022E6890: - add r0, sp, #0x14 - bl sub_0206C120 - add r0, sp, #0x18 - bl sub_0206C144 - ldrsh r0, [sp, #0x14] - add r1, sp, #0x18 - bl ov11_022FF490 -_022E68AC: - ldr r0, _022E68C8 ; =ov11_02324C9C - mov r1, #0 - strb r1, [r0] - mov r0, #1 -_022E68BC: - add sp, sp, #0x144 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E68C4: .word ov11_02319924 -_022E68C8: .word ov11_02324C9C -_022E68CC: .word 0x0000C402 -_022E68D0: .word ov11_02324F94 -_022E68D4: .word ov11_0231993C -_022E68D8: .word ov11_02319960 -_022E68DC: .word ov11_023199B4 -_022E68E0: .word ov11_023199D4 - arm_func_end ov11_022E60BC - - arm_func_start ov11_022E68E4 -ov11_022E68E4: ; 0x022E68E4 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x20 - mov r6, r1 - cmp r0, #0x4b - addls pc, pc, r0, lsl #2 - b _022E6E54 -_022E68FC: ; jump table - b _022E6E54 ; case 0 - b _022E6A2C ; case 1 - b _022E6A2C ; case 2 - b _022E6A2C ; case 3 - b _022E6A2C ; case 4 - b _022E6E54 ; case 5 - b _022E6E54 ; case 6 - b _022E6E54 ; case 7 - b _022E6E54 ; case 8 - b _022E6E54 ; case 9 - b _022E6E54 ; case 10 - b _022E6A2C ; case 11 - b _022E6A2C ; case 12 - b _022E6A2C ; case 13 - b _022E6E54 ; case 14 - b _022E6A2C ; case 15 - b _022E6A2C ; case 16 - b _022E6A2C ; case 17 - b _022E6A2C ; case 18 - b _022E6A2C ; case 19 - b _022E6A2C ; case 20 - b _022E6A2C ; case 21 - b _022E6A2C ; case 22 - b _022E6A2C ; case 23 - b _022E6A2C ; case 24 - b _022E6A2C ; case 25 - b _022E6A2C ; case 26 - b _022E6A2C ; case 27 - b _022E6E54 ; case 28 - b _022E6A2C ; case 29 - b _022E6A2C ; case 30 - b _022E6A2C ; case 31 - b _022E6A2C ; case 32 - b _022E6A2C ; case 33 - b _022E6A2C ; case 34 - b _022E6AE0 ; case 35 - b _022E6A2C ; case 36 - b _022E6E54 ; case 37 - b _022E6E54 ; case 38 - b _022E6A9C ; case 39 - b _022E6A9C ; case 40 - b _022E6E54 ; case 41 - b _022E6E54 ; case 42 - b _022E6D0C ; case 43 - b _022E6E54 ; case 44 - b _022E6E54 ; case 45 - b _022E6E54 ; case 46 - b _022E6E54 ; case 47 - b _022E6A2C ; case 48 - b _022E6E54 ; case 49 - b _022E6A2C ; case 50 - b _022E6E54 ; case 51 - b _022E6DB0 ; case 52 - b _022E6DF8 ; case 53 - b _022E6A2C ; case 54 - b _022E6A2C ; case 55 - b _022E6E54 ; case 56 - b _022E6E54 ; case 57 - b _022E6E54 ; case 58 - b _022E6A2C ; case 59 - b _022E6A50 ; case 60 - b _022E6A7C ; case 61 - b _022E6A8C ; case 62 - b _022E6A2C ; case 63 - b _022E6A2C ; case 64 - b _022E6A2C ; case 65 - b _022E6A2C ; case 66 - b _022E6A2C ; case 67 - b _022E6A2C ; case 68 - b _022E6A2C ; case 69 - b _022E6A2C ; case 70 - b _022E6A2C ; case 71 - b _022E6A2C ; case 72 - b _022E6A2C ; case 73 - b _022E6A2C ; case 74 - b _022E6A2C ; case 75 -_022E6A2C: - ldr r0, _022E6E60 ; =ov11_02324C9C - ldrb r0, [r0] - cmp r0, #0 - beq _022E6E54 - ldr r1, _022E6E64 ; =ov11_02324F94 - mov r0, #1 - ldr r1, [r1] - str r1, [r6] - b _022E6E58 -_022E6A50: - ldr r0, _022E6E60 ; =ov11_02324C9C - ldrb r0, [r0] - cmp r0, #0 - beq _022E6E54 - mov r0, #0x12 - bl UnloadOverlay - ldr r1, _022E6E64 ; =ov11_02324F94 - mov r0, #1 - ldr r1, [r1] - str r1, [r6] - b _022E6E58 -_022E6A7C: - mov r0, #0 - str r0, [r6] - mov r0, #1 - b _022E6E58 -_022E6A8C: - mov r0, #0 - str r0, [r6] - mov r0, #1 - b _022E6E58 -_022E6A9C: - ldr r0, _022E6E60 ; =ov11_02324C9C - ldrb r0, [r0] - cmp r0, #0 - beq _022E6E54 - ldr r0, _022E6E64 ; =ov11_02324F94 - ldr r1, [r0] - str r1, [r6] - ldr r0, [r0] - cmp r0, #0 - beq _022E6AD8 - add r0, sp, #4 - bl sub_0206C0FC - ldrsh r0, [sp, #4] - mov r1, #0 - bl ov11_022F7188 -_022E6AD8: - mov r0, #1 - b _022E6E58 -_022E6AE0: - ldr r0, _022E6E60 ; =ov11_02324C9C - ldrb r0, [r0] - cmp r0, #0 - beq _022E6E54 - ldr r0, _022E6E64 ; =ov11_02324F94 - ldr r0, [r0] - cmp r0, #0 - blt _022E6CFC - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205B77C - ldr r1, _022E6E64 ; =ov11_02324F94 - mov r5, r0 - ldr r0, [r1] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl DungeonSwapIdxToId - mov r1, r0, lsl #0x18 - add r0, sp, #0x18 - mov r1, r1, asr #0x18 - bl sub_0205BB7C - ldrb r0, [sp, #0x18] - ldrb r1, [sp, #0x19] - mov r2, #0 - bl sub_0204F488 - mov r4, r0 - tst r4, #4 - movne r0, #3 - strne r0, [r6] - bne _022E6D04 - tst r4, #0x10 - movne r0, #5 - strne r0, [r6] - bne _022E6D04 - tst r4, #8 - movne r0, #4 - strne r0, [r6] - bne _022E6D04 - ldrsb r0, [r5, #0xac] - cmp r0, #0 - movle r0, #6 - strle r0, [r6] - ble _022E6D04 - tst r4, #0x4000 - beq _022E6CC0 - ldr r0, _022E6E64 ; =ov11_02324F94 - ldr r0, [r0] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0204E974 - ldrb r1, [sp, #0x18] - cmp r1, #0x63 - bgt _022E6BEC - bge _022E6C48 - cmp r1, #0x29 - bgt _022E6BDC - cmp r1, #0x26 - blt _022E6D04 - beq _022E6C3C - cmp r1, #0x29 - moveq r0, #0x15 - streq r0, [r6] - b _022E6D04 -_022E6BDC: - cmp r1, #0x3f - moveq r0, #0x16 - streq r0, [r6] - b _022E6D04 -_022E6BEC: - cmp r1, #0x6e - bgt _022E6C2C - subs r0, r1, #0x64 - addpl pc, pc, r0, lsl #2 - b _022E6D04 -_022E6C00: ; jump table - b _022E6C54 ; case 0 - b _022E6C60 ; case 1 - b _022E6C6C ; case 2 - b _022E6C78 ; case 3 - b _022E6C84 ; case 4 - b _022E6D04 ; case 5 - b _022E6D04 ; case 6 - b _022E6C90 ; case 7 - b _022E6C9C ; case 8 - b _022E6CA8 ; case 9 - b _022E6CB4 ; case 10 -_022E6C2C: - cmp r1, #0xae - moveq r0, #0x21 - streq r0, [r6] - b _022E6D04 -_022E6C3C: - mov r0, #0x14 - str r0, [r6] - b _022E6D04 -_022E6C48: - mov r0, #0x17 - str r0, [r6] - b _022E6D04 -_022E6C54: - mov r0, #0x18 - str r0, [r6] - b _022E6D04 -_022E6C60: - mov r0, #0x19 - str r0, [r6] - b _022E6D04 -_022E6C6C: - mov r0, #0x1a - str r0, [r6] - b _022E6D04 -_022E6C78: - mov r0, #0x1b - str r0, [r6] - b _022E6D04 -_022E6C84: - mov r0, #0x1c - str r0, [r6] - b _022E6D04 -_022E6C90: - mov r0, #0x1d - str r0, [r6] - b _022E6D04 -_022E6C9C: - mov r0, #0x1e - str r0, [r6] - b _022E6D04 -_022E6CA8: - mov r0, #0x1f - str r0, [r6] - b _022E6D04 -_022E6CB4: - mov r0, #0x20 - str r0, [r6] - b _022E6D04 -_022E6CC0: - tst r4, #1 - movne r0, #0x12 - strne r0, [r6] - bne _022E6D04 - ldr r0, _022E6E64 ; =ov11_02324F94 - ldr r0, [r0] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0204E974 - cmp r4, #0 - moveq r0, #0 - streq r0, [r6] - movne r0, #0x13 - strne r0, [r6] - b _022E6D04 -_022E6CFC: - mov r0, #1 - str r0, [r6] -_022E6D04: - mov r0, #1 - b _022E6E58 -_022E6D0C: - ldr r0, _022E6E60 ; =ov11_02324C9C - ldrb r0, [r0] - cmp r0, #0 - beq _022E6E54 - ldr r0, _022E6E64 ; =ov11_02324F94 - ldr r0, [r0] - cmp r0, #0 - mov r0, #0 - blt _022E6D6C - mov r1, #0x33 - bl LoadScriptVariableValue - cmp r0, #0x64 - bge _022E6D50 - add r2, r0, #1 - mov r0, #0 - mov r1, #0x33 - bl SaveScriptVariableValue -_022E6D50: - mov r0, #0 - mov r1, #0x5c - mov r2, #1 - bl SaveScriptVariableValue - mov r0, #1 - str r0, [r6] - b _022E6D70 -_022E6D6C: - str r0, [r6] -_022E6D70: - add r1, sp, #0x14 - add r2, sp, #0x10 - mov r0, #2 - bl LoadScriptVarValuePair - ldr r0, [sp, #0x10] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl GetAcceptedMission - bl sub_0205F2B8 - ldr r0, [sp, #0x10] - ldr r1, [sp, #0x14] - add r2, r0, #1 - mov r0, #2 - bl SetScenarioProgressScriptVar - mov r0, #1 - b _022E6E58 -_022E6DB0: - add r0, sp, #2 - bl ov11_022FF460 - cmp r0, #0 - beq _022E6E54 - ldrsh r0, [sp, #2] - mvn r1, #0 - str r0, [r6] - cmp r0, r1 - beq _022E6DE8 - bl sub_0206C110 - bl sub_02048614 - ldrsh r0, [sp, #2] - mov r1, #0 - bl ov11_022F7188 -_022E6DE8: - ldr r1, _022E6E60 ; =ov11_02324C9C - mov r0, #1 - strb r0, [r1] - b _022E6E58 -_022E6DF8: - add r0, sp, #0 - add r1, sp, #6 - bl ov11_022FFA5C - cmp r0, #0 - beq _022E6E54 - ldrsh r0, [sp] - mvn r1, #0 - str r0, [r6] - cmp r0, r1 - beq _022E6E44 - bl sub_0206C134 - add r0, sp, #6 - bl sub_0206C164 - bl sub_02048614 - mov r2, #0 - ldrsh r0, [sp] - add r1, sp, #6 - mov r3, r2 - bl ov11_022F7354 -_022E6E44: - ldr r1, _022E6E60 ; =ov11_02324C9C - mov r0, #1 - strb r0, [r1] - b _022E6E58 -_022E6E54: - mov r0, #0 -_022E6E58: - add sp, sp, #0x20 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E6E60: .word ov11_02324C9C -_022E6E64: .word ov11_02324F94 - arm_func_end ov11_022E68E4 - - arm_func_start ReturnScriptMenuResultZero -ReturnScriptMenuResultZero: ; 0x022E6E68 - ldr r1, _022E6E84 ; =ov11_02324C9C - mov r3, #1 - ldr r0, _022E6E88 ; =ov11_02324F94 - mov r2, #0 - strb r3, [r1] - str r2, [r0] - bx lr - .align 2, 0 -_022E6E84: .word ov11_02324C9C -_022E6E88: .word ov11_02324F94 - arm_func_end ReturnScriptMenuResultZero - - arm_func_start ReturnScriptMenuResult -ReturnScriptMenuResult: ; 0x022E6E8C - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r1, _022E6EBC ; =ov11_02319A20 - mov r2, r4 - mov r0, #2 - bl Debug_Print - ldr r0, _022E6EC0 ; =ov11_02324F94 - ldr r1, _022E6EC4 ; =ov11_02324C9C - mov r2, #1 - strb r2, [r1] - str r4, [r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_022E6EBC: .word ov11_02319A20 -_022E6EC0: .word ov11_02324F94 -_022E6EC4: .word ov11_02324C9C - arm_func_end ReturnScriptMenuResult - - arm_func_start IsScriptMenuReturnDisabled -IsScriptMenuReturnDisabled: ; 0x022E6EC8 - ldr r0, _022E6EE4 ; =ov11_02324C9C - ldrb r0, [r0] - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_022E6EE4: .word ov11_02324C9C - arm_func_end IsScriptMenuReturnDisabled - - arm_func_start ov11_022E6EE8 -ov11_022E6EE8: ; 0x022E6EE8 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x98 - mov r5, r0 - bl GetGameMode - cmp r5, #0 - ldreq r5, _022E6FB4 ; =ov11_022E6FB8 - mov r4, r0 - mov r0, #0 - mov r1, #0x2c - mov r2, #5 - str r5, [sp, #0x84] - str r0, [sp, #0x88] - bl SaveScriptVariableValue - mov r0, #0 - mov r2, r0 - mov r1, #0x2b - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x1c - bl LoadScriptVariableValue - mov r2, r0 - mov r0, #0 - mov r1, #0x1e - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x1d - mov r2, r0 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x5c - bl ZeroInitScriptVariable - cmp r4, #4 - bne _022E6F80 - bl sub_020573A0 - mov r0, #0 - bl sub_0205730C - mov r0, #1 - bl sub_0205730C -_022E6F80: - cmp r4, #1 - beq _022E6FAC - cmp r4, #5 - add r2, sp, #0 - mov r1, #0x100 - bne _022E6FA4 - mov r0, #5 - bl sub_0204964C - b _022E6FAC -_022E6FA4: - mov r0, #6 - bl sub_0204964C -_022E6FAC: - add sp, sp, #0x98 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E6FB4: .word ov11_022E6FB8 - arm_func_end ov11_022E6EE8 - - arm_func_start ov11_022E6FB8 -ov11_022E6FB8: ; 0x022E6FB8 - ldr r0, _022E6FD0 ; =ov11_02324F94 - ldr r2, _022E6FD4 ; =ov11_02324C9C - mov r3, #1 - strb r3, [r2] - str r1, [r0] - bx lr - .align 2, 0 -_022E6FD0: .word ov11_02324F94 -_022E6FD4: .word ov11_02324C9C - arm_func_end ov11_022E6FB8 - - arm_func_start ov11_022E6FD8 -ov11_022E6FD8: ; 0x022E6FD8 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x144 - mov r4, r0 - cmp r1, #5 - addls pc, pc, r1, lsl #2 - b _022E70F0 -_022E6FF0: ; jump table - b _022E7008 ; case 0 - b _022E7014 ; case 1 - b _022E7020 ; case 2 - b _022E7054 ; case 3 - b _022E7088 ; case 4 - b _022E70BC ; case 5 -_022E7008: -#ifdef JAPAN - ldr r1, _022E872C ; =0x000004F2 -#else - mov r1, #0x258 -#endif - bl GetStringFromFileVeneer - b _022E70F8 -_022E7014: - ldr r1, _022E7100 ; =0x00000259 - bl GetStringFromFileVeneer - b _022E70F8 -_022E7020: - add r0, sp, #0xf4 - bl InitPreprocessorArgs - mov r0, #0xa9 - bl CountNbItemsOfTypeInBag - str r0, [sp, #0x118] - add ip, sp, #0xf4 - ldr r2, _022E7104 ; =0x0000025A - mov r0, r4 - mov r1, #0x40 - mov r3, #0x400 - str ip, [sp] - bl PreprocessStringFromId - b _022E70F8 -_022E7054: - add r0, sp, #0xa4 - bl InitPreprocessorArgs - mov r0, #0xaa - bl CountNbItemsOfTypeInBag - str r0, [sp, #0xc8] - add ip, sp, #0xa4 - ldr r2, _022E7108 ; =0x0000025B - mov r0, r4 - mov r1, #0x40 - mov r3, #0x400 - str ip, [sp] - bl PreprocessStringFromId - b _022E70F8 -_022E7088: - add r0, sp, #0x54 - bl InitPreprocessorArgs - mov r0, #0xab - bl CountNbItemsOfTypeInBag - str r0, [sp, #0x78] - add ip, sp, #0x54 -#ifdef JAPAN - ldr r2, _022E873C ; =0x000004F6 - mov r0, r4 - mov r1, #0x40 -#else - mov r0, r4 - mov r1, #0x40 - mov r2, #0x25c -#endif - mov r3, #0x400 - str ip, [sp] - bl PreprocessStringFromId - b _022E70F8 -_022E70BC: - add r0, sp, #4 - bl InitPreprocessorArgs - mov r0, #0xac - bl CountNbItemsOfTypeInBag - str r0, [sp, #0x28] - add ip, sp, #4 - ldr r2, _022E710C ; =0x0000025D - mov r0, r4 - mov r1, #0x40 - mov r3, #0x400 - str ip, [sp] - bl PreprocessStringFromId - b _022E70F8 -_022E70F0: - mov r0, #0 - strb r0, [r4] -_022E70F8: - add sp, sp, #0x144 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -#ifdef JAPAN -_022E872C: .word 0x000004F2 -_022E7100: .word 0x000004F3 -_022E7104: .word 0x000004F4 -_022E7108: .word 0x000004F5 -_022E873C: .word 0x000004F6 -_022E710C: .word 0x000004F7 -#else -_022E7100: .word 0x00000259 -_022E7104: .word 0x0000025A -_022E7108: .word 0x0000025B -_022E710C: .word 0x0000025D -#endif - arm_func_end ov11_022E6FD8 - - arm_func_start ov11_022E7110 -ov11_022E7110: ; 0x022E7110 - bx lr - arm_func_end ov11_022E7110 - - arm_func_start ov11_022E7114 -ov11_022E7114: ; 0x022E7114 - bx lr - arm_func_end ov11_022E7114 - - arm_func_start ScriptSpecialProcessCall -ScriptSpecialProcessCall: ; 0x022E7118 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1b8 - mov r5, r1 - mov r4, r0 - mov r7, r2 - ldr r1, _022E7AC8 ; =ov11_02319A48 - mov r2, r5 - mov r0, #2 - mov r6, r3 - bl Debug_Print - cmp r5, #0x3e - addls pc, pc, r5, lsl #2 - b _022E7ABC -_022E714C: ; jump table - b _022E7ABC ; case 0 - b _022E7248 ; case 1 - b _022E7254 ; case 2 - b _022E7260 ; case 3 - b _022E726C ; case 4 - b _022E7278 ; case 5 - b _022E7284 ; case 6 - b _022E72AC ; case 7 - b _022E72D8 ; case 8 - b _022E7314 ; case 9 - b _022E7364 ; case 10 - b _022E737C ; case 11 - b _022E73BC ; case 12 - b _022E73D8 ; case 13 - b _022E73E0 ; case 14 - b _022E73F8 ; case 15 - b _022E7400 ; case 16 - b _022E7408 ; case 17 - b _022E7410 ; case 18 - b _022E7548 ; case 19 - b _022E7534 ; case 20 - b _022E7548 ; case 21 - b _022E7518 ; case 22 - b _022E75D0 ; case 23 - b _022E75DC ; case 24 - b _022E75DC ; case 25 - b _022E75EC ; case 26 - b _022E75FC ; case 27 - b _022E760C ; case 28 - b _022E7630 ; case 29 - b _022E7660 ; case 30 - b _022E7680 ; case 31 - b _022E76C8 ; case 32 - b _022E76D8 ; case 33 - b _022E76F4 ; case 34 - b _022E7708 ; case 35 - b _022E7724 ; case 36 - b _022E7744 ; case 37 - b _022E776C ; case 38 - b _022E778C ; case 39 - b _022E77B4 ; case 40 - b _022E77FC ; case 41 - b _022E7850 ; case 42 - b _022E7870 ; case 43 - b _022E7898 ; case 44 - b _022E78AC ; case 45 - b _022E78C8 ; case 46 - b _022E78E4 ; case 47 - b _022E7938 ; case 48 - b _022E798C ; case 49 - b _022E79D0 ; case 50 - b _022E79E8 ; case 51 - b _022E79F4 ; case 52 - b _022E7A00 ; case 53 - b _022E7A08 ; case 54 - b _022E7A14 ; case 55 - b _022E7A48 ; case 56 - b _022E7A5C ; case 57 - b _022E7A70 ; case 58 - b _022E7A7C ; case 59 - b _022E7A88 ; case 60 - b _022E7A94 ; case 61 - b _022E7AA8 ; case 62 -_022E7248: - bl GroundMainReturnDungeon - mov r0, #0 - b _022E7AC0 -_022E7254: - bl InitMainTeamAfterQuiz - mov r0, #0 - b _022E7AC0 -_022E7260: - bl InitSpecialEpisodePartners - mov r0, #0 - b _022E7AC0 -_022E726C: - bl InitSpecialEpisodeExtraPartner - mov r0, #0 - b _022E7AC0 -_022E7278: - bl GroundMainNextDay - mov r0, #0 - b _022E7AC0 -_022E7284: - bl sub_0204E70C - cmp r0, #1 - bne _022E72A4 - bl sub_0204E770 - bl DungeonRequestsDoneWrapper - cmp r0, #0 - movgt r0, #1 - bgt _022E7AC0 -_022E72A4: - mov r0, #0 - b _022E7AC0 -_022E72AC: - add r0, sp, #7 - bl MissionRewardValidateDungeonId - cmp r0, #0 - beq _022E72D0 - ldrb r0, [sp, #7] - bl DungeonRequestsDoneWrapper - cmp r0, #0 - movgt r0, #1 - bgt _022E7AC0 -_022E72D0: - mov r0, #0 - b _022E7AC0 -_022E72D8: - add r0, sp, #6 - bl MissionRewardValidateDungeonId - cmp r0, #0 - beq _022E730C - ldrb r2, [sp, #6] - mov r3, #4 - add r1, sp, #5 - mov r0, #6 - strb r3, [sp, #5] - bl sub_0205F464 - cmp r0, #0 - movne r0, #1 - bne _022E7AC0 -_022E730C: - mov r0, #0 - b _022E7AC0 -_022E7314: - add r0, sp, #4 - bl MissionRewardValidateDungeonId - cmp r0, #0 - beq _022E735C - ldrb r2, [sp, #4] - mov r3, #4 - add r1, sp, #3 - mov r0, #6 - strb r3, [sp, #3] - bl sub_0205F464 - movs r1, r0 - beq _022E735C - ldrb r2, [sp, #4] - add r0, sp, #0x60 - bl WasMissionCompletedToday - cmp r0, #0 - movne r0, #1 - bne _022E7AC0 -_022E735C: - mov r0, #0 - b _022E7AC0 -_022E7364: - mov r0, #2 - mov r1, #0 - bl GetSosMailCount - cmp r0, #0 - movle r0, #0 - b _022E7AC0 -_022E737C: - add r0, sp, #2 - bl sub_0204F1B4 - cmp r0, #0 - beq _022E73B4 - ldrsb r0, [sp, #2] - bl sub_0205B77C - ldrsb r4, [r0, #0xac] - ldrsb r1, [sp, #2] - ldr r0, _022E7ACC ; =ov11_02319A68 - mov r2, r4 - bl Debug_Print0 - cmp r4, #0 - movgt r0, r4 - bgt _022E7AC0 -_022E73B4: - mov r0, #0 - b _022E7AC0 -_022E73BC: - mov r0, r7, lsl #0x10 - mov r1, r6, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, r1, asr #0x10 - bl InitRandomNpcJobs - mov r0, #0 - b _022E7AC0 -_022E73D8: - bl GetRandomNpcJobType - b _022E7AC0 -_022E73E0: - bl GetRandomNpcJobSubtype - and r1, r0, #0xff - strb r0, [sp] - mov r0, r1 - strb r1, [sp, #1] - b _022E7AC0 -_022E73F8: - bl GetRandomNpcJobStillAvailable - b _022E7AC0 -_022E7400: - bl AcceptRandomNpcJob - b _022E7AC0 -_022E7408: - mov r0, #0 - b _022E7AC0 -_022E7410: - add r1, sp, #0xc - mov r0, #0 - bl GetHeldButtons - add r1, sp, #0xa - mov r0, #0 - bl GetPressedButtons - ldrh r0, [sp, #0xa] - tst r0, #0xc - movne r0, #0 - bne _022E7AC0 - ldrh r0, [sp, #0xc] - bl ov11_022EAF70 - mvn r1, #0 - cmp r0, r1 - beq _022E7510 - add r1, sp, #0x58 - mov r2, #0x100 - bl sub_02005494 - ldrh r0, [sp, #0xc] - mov sb, #0 - add fp, sp, #0x48 - tst r0, #2 - ldr r0, _022E7AD0 ; =ov11_02319A38 - movne sl, #4 - ldr r8, [r0] - ldr r2, [r0, #4] - ldr r1, [r0, #8] - ldr r7, [r0, #0xc] - moveq sl, #2 - str r8, [sp, #0x18] - str r2, [sp, #0x1c] - str r1, [sp, #0x10] - str r7, [sp, #0x14] - add r5, sp, #0x50 - add r6, sp, #0x58 - b _022E7508 -_022E74A0: - ldr r1, [r4] - ldr r0, [r4, #4] - ldr r2, [r1, #0x44] - mov r1, r6 - blx r2 - cmp r0, #0 - beq _022E7504 - ldr r0, [sp, #0x5c] - str r8, [sp, #0x50] - str r0, [sp, #0x54] - ldr r1, [r4] - ldr r0, [r4, #4] - ldr r2, [r1, #0x44] - mov r1, r5 - blx r2 - cmp r0, #0 - beq _022E7504 - ldr r0, [sp, #0x58] - str r7, [sp, #0x4c] - str r0, [sp, #0x48] - ldr r1, [r4] - ldr r0, [r4, #4] - ldr r2, [r1, #0x44] - mov r1, fp - blx r2 -_022E7504: - add sb, sb, #1 -_022E7508: - cmp sb, sl - blt _022E74A0 -_022E7510: - mvn r0, #0 - b _022E7AC0 -_022E7518: - cmp r7, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bl ScriptSpecialProcess0x16 - mov r0, #0 - b _022E7AC0 -_022E7534: - bl KeyWaitInit - ldr r1, _022E7AD4 ; =ov11_02324CA0 - mov r0, #0 - str r7, [r1] - b _022E7AC0 -_022E7548: - add r1, sp, #8 - mov r0, #0 - bl GetPressedButtons - bl IsTouchScreenNotOff - cmp r0, #0 - add r0, sp, #0x68 - beq _022E756C - bl GetReleasedStylus - b _022E7570 -_022E756C: - bl sub_02006BFC -_022E7570: - ldrh r1, [sp, #8] - ldr r0, _022E7AD8 ; =0x00000F0F - tst r1, r0 - bne _022E7598 - add r0, sp, #0x68 - mov r1, #2 - mov r2, #0 - bl sub_02006C8C - cmp r0, #0 - beq _022E75A0 -_022E7598: - mov r0, #2 - b _022E7AC0 -_022E75A0: - ldr r0, _022E7AD4 ; =ov11_02324CA0 - ldr r1, [r0] - cmp r1, #0 - ble _022E75C0 - subs r1, r1, #1 - str r1, [r0] - moveq r0, #1 - beq _022E7AC0 -_022E75C0: - cmp r5, #0x13 - mvneq r0, #0 - movne r0, #0 - b _022E7AC0 -_022E75D0: - bl RandomizeDemoActors - mov r0, #0 - b _022E7AC0 -_022E75DC: - mov r0, r7 - bl JumpToTitleScreen - mov r0, #0 - b _022E7AC0 -_022E75EC: - mvn r0, #0 - bl JumpToTitleScreen - mov r0, #0 - b _022E7AC0 -_022E75FC: - mov r0, r7 - bl ReturnToTitleScreen - mov r0, #0 - b _022E7AC0 -_022E760C: - mov r0, r7, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetSpecialRecruitmentSpecies - mov r1, #0 - bl IsMonsterOnTeam - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - b _022E7AC0 -_022E7630: - mov r0, r7, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetSpecialRecruitmentSpecies - mov r1, #0 - bl GetRecruitMentryIdBySpecies - mvn r1, #0 - cmp r0, r1 - moveq r0, #0 - beq _022E7AC0 - bl GetTeamMember - ldrb r0, [r0, #1] - b _022E7AC0 -_022E7660: - mov r0, r7, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetSpecialRecruitmentSpecies - bl sub_02056EB8 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - b _022E7AC0 -_022E7680: - mov r0, r7, lsl #0x10 - mov r0, r0, asr #0x10 - bl PrepareMenuAcceptTeamMember - add r0, sp, #0x174 - bl ov11_022E8090 - add r0, sp, #0x100 - ldrsh r0, [r0, #0x78] - bl SetNewFriendActor - add r0, sp, #0x100 - add r0, r0, #0xae - mov r1, #0xa - bl sub_02065C08 - add r0, sp, #0x174 - bl sub_02055CCC - cmp r0, #0 - movge r0, #1 - movlt r0, #0 - b _022E7AC0 -_022E76C8: - mov r0, r7, lsl #0x10 - mov r0, r0, asr #0x10 - bl CountItemTypeInBag - b _022E7AC0 -_022E76D8: - mov r0, r7, lsl #0x10 - add r1, sp, #0x44 - mov r0, r0, asr #0x10 - bl ItemAtTableIdx - ldrsh r0, [sp, #0x44] - bl CountItemTypeInBag - b _022E7AC0 -_022E76F4: - add r0, sp, #0x40 - strh r7, [sp, #0x40] - strh r6, [sp, #0x42] - bl CountItemTypeInStorage - b _022E7AC0 -_022E7708: - mov r0, r7, lsl #0x10 - add r1, sp, #0x3c - mov r0, r0, asr #0x10 - bl ItemAtTableIdx - add r0, sp, #0x3c - bl CountItemTypeInStorage - b _022E7AC0 -_022E7724: - add r0, sp, #0x38 - strh r7, [sp, #0x38] - strh r6, [sp, #0x3a] - bl SpecialProcAddItemToBag - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - b _022E7AC0 -_022E7744: - mov r0, r7, lsl #0x10 - add r1, sp, #0x34 - mov r0, r0, asr #0x10 - bl ItemAtTableIdx - add r0, sp, #0x34 - bl SpecialProcAddItemToBag - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - b _022E7AC0 -_022E776C: - add r0, sp, #0x30 - strh r7, [sp, #0x30] - strh r6, [sp, #0x32] - bl AddBulkItemToStorage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - b _022E7AC0 -_022E778C: - mov r0, r7, lsl #0x10 - add r1, sp, #0x2c - mov r0, r0, asr #0x10 - bl ItemAtTableIdx - add r0, sp, #0x2c - bl AddBulkItemToStorage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - b _022E7AC0 -_022E77B4: - mov r0, r7, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetFirstUnequippedItemOfType - mov r4, r0 - mvn r1, #0 - cmp r4, r1 - beq _022E77F4 - bl GetItemAtIdx - ldrb r0, [r0, #1] - cmp r0, #0 - beq _022E77E4 - bl sub_020582E0 -_022E77E4: - mov r0, r4 - bl RemoveItemNoHole - mov r0, #1 - b _022E7AC0 -_022E77F4: - mov r0, #0 - b _022E7AC0 -_022E77FC: - mov r0, r7, lsl #0x10 - add r1, sp, #0x28 - mov r0, r0, asr #0x10 - bl ItemAtTableIdx - ldrsh r0, [sp, #0x28] - bl GetFirstUnequippedItemOfType - mov r4, r0 - mvn r1, #0 - cmp r4, r1 - beq _022E7848 - bl GetItemAtIdx - ldrb r0, [r0, #1] - cmp r0, #0 - beq _022E7838 - bl sub_020582E0 -_022E7838: - mov r0, r4 - bl RemoveItemNoHole - mov r0, #1 - b _022E7AC0 -_022E7848: - mov r0, #0 - b _022E7AC0 -_022E7850: - add r0, sp, #0x24 - strh r7, [sp, #0x24] - strh r6, [sp, #0x26] - bl RemoveBulkItemInStorage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - b _022E7AC0 -_022E7870: - mov r0, r7, lsl #0x10 - add r1, sp, #0x20 - mov r0, r0, asr #0x10 - bl ItemAtTableIdx - add r0, sp, #0x20 - bl RemoveBulkItemInStorage - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - b _022E7AC0 -_022E7898: - mov r0, r7, lsl #0x10 - mov r0, r0, asr #0x10 - bl PrepareMenuAcceptTeamMember - mov r0, #0 - b _022E7AC0 -_022E78AC: - bl GetHero - cmp r0, #0 - moveq r0, #0 - beq _022E7AC0 - ldrsh r0, [r0, #4] - bl ov11_022E8050 - b _022E7AC0 -_022E78C8: - bl GetPartner - cmp r0, #0 - moveq r0, #0 - beq _022E7AC0 - ldrsh r0, [r0, #4] - bl ov11_022E8050 - b _022E7AC0 -_022E78E4: - bl GetMainCharacter1MemberIdx - mvn r1, #0 - cmp r0, r1 - beq _022E7930 - bl sub_020564B0 - cmp r0, #0 - beq _022E7930 - bl GetMainCharacter2MemberIdx - mvn r1, #0 - cmp r0, r1 - beq _022E7930 - bl sub_02056410 - cmp r0, #0 - beq _022E7930 - mov r0, #0 - bl GetUnitNpcIds - cmp r0, #0 - moveq r0, #1 - beq _022E7AC0 -_022E7930: - mov r0, #0 - b _022E7AC0 -_022E7938: - bl GetMainCharacter2MemberIdx - mvn r1, #0 - cmp r0, r1 - beq _022E7984 - bl sub_020564B0 - cmp r0, #0 - beq _022E7984 - bl GetMainCharacter1MemberIdx - mvn r1, #0 - cmp r0, r1 - beq _022E7984 - bl sub_02056410 - cmp r0, #0 - beq _022E7984 - mov r0, #0 - bl GetUnitNpcIds - cmp r0, #0 - moveq r0, #1 - beq _022E7AC0 -_022E7984: - mov r0, #0 - b _022E7AC0 -_022E798C: - bl GetMainCharacter1MemberIdx - mvn r1, #0 - cmp r0, r1 - beq _022E79C8 - bl sub_02056410 - cmp r0, #0 - beq _022E79C8 - bl GetMainCharacter2MemberIdx - mvn r1, #0 - cmp r0, r1 - beq _022E79C8 - bl sub_02056410 - cmp r0, #0 - movne r0, #1 - bne _022E7AC0 -_022E79C8: - mov r0, #0 - b _022E7AC0 -_022E79D0: - mov r0, #0 - bl GetPartyMembers - cmp r0, #1 - moveq r0, #1 - movne r0, #0 - b _022E7AC0 -_022E79E8: - bl SetTeamSetupHeroAndPartnerOnly - mov r0, #0 - b _022E7AC0 -_022E79F4: - bl SetTeamSetupHeroOnly - mov r0, #0 - b _022E7AC0 -_022E7A00: - mov r0, #0 - b _022E7AC0 -_022E7A08: - bl StatusUpdate - mov r0, #0 - b _022E7AC0 -_022E7A14: - add r0, sp, #0x8c - bl sub_0204F244 - cmp r0, #0 - beq _022E7A40 - add r0, sp, #0x8c - cmp r7, #0 - strgeb r7, [sp, #0xe8] - cmp r6, #0 - mov r1, #1 - strgeb r6, [sp, #0xe9] - bl sub_0204F1F0 -_022E7A40: - mov r0, #0 - b _022E7AC0 -_022E7A48: - bl IsBagFull - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - b _022E7AC0 -_022E7A5C: - bl IsStorageFull - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - b _022E7AC0 -_022E7A70: - bl IncrementNbDungeonsCleared - mov r0, #0 - b _022E7AC0 -_022E7A7C: - bl IncrementNbBigTreasureWins - mov r0, #0 - b _022E7AC0 -_022E7A88: - bl IncrementNbSkyGiftsSent - mov r0, #0 - b _022E7AC0 -_022E7A94: - mov r0, r7, lsl #0x10 - mov r0, r0, asr #0x10 - bl SetActorTalkMain - mov r0, #0 - b _022E7AC0 -_022E7AA8: - mov r0, r7, lsl #0x10 - mov r0, r0, asr #0x10 - bl SetActorTalkSub - mov r0, #0 - b _022E7AC0 -_022E7ABC: - mov r0, #0 -_022E7AC0: - add sp, sp, #0x1b8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E7AC8: .word ov11_02319A48 -_022E7ACC: .word ov11_02319A68 -_022E7AD0: .word ov11_02319A38 -_022E7AD4: .word ov11_02324CA0 -_022E7AD8: .word 0x00000F0F - arm_func_end ScriptSpecialProcessCall - - arm_func_start ov11_022E7ADC -ov11_022E7ADC: ; 0x022E7ADC - bx lr - arm_func_end ov11_022E7ADC - - arm_func_start ov11_022E7AE0 -ov11_022E7AE0: ; 0x022E7AE0 - bx lr - arm_func_end ov11_022E7AE0 - - arm_func_start ov11_022E7AE4 -ov11_022E7AE4: ; 0x022E7AE4 - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - mov r6, r2 - mov r5, r3 - cmp r1, #5 - addls pc, pc, r1, lsl #2 - ldmia sp!, {r4, r5, r6, pc} -_022E7B00: ; jump table - ldmia sp!, {r4, r5, r6, pc} ; case 0 - b _022E7B18 ; case 1 - b _022E7B38 ; case 2 - b _022E7B58 ; case 3 - b _022E7B64 ; case 4 - ldmia sp!, {r4, r5, r6, pc} ; case 5 -_022E7B18: - mov r1, #0 - mov r0, #0xd - strh r1, [r4, #0x46] - bl ov11_02314670 - mov r0, r6 - mov r1, r5 - bl ov11_023159CC - ldmia sp!, {r4, r5, r6, pc} -_022E7B38: - mov r0, #0xd - bl ov11_02314670 - mov r0, r6 - mov r1, r5 - bl ov11_023159CC - mov r0, #0 - strh r0, [r4, #0x46] - ldmia sp!, {r4, r5, r6, pc} -_022E7B58: - mov r0, #0 - strh r0, [r4, #0x46] - ldmia sp!, {r4, r5, r6, pc} -_022E7B64: - mov r0, #0 - strh r0, [r4, #0x46] - ldmia sp!, {r4, r5, r6, pc} - arm_func_end ov11_022E7AE4 - - arm_func_start ov11_022E7B70 -ov11_022E7B70: ; 0x022E7B70 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x1c - mov r8, r0 - mov r7, r1 - mov r6, r2 - cmp r3, #5 - addls pc, pc, r3, lsl #2 - b _022E7E74 -_022E7B90: ; jump table - b _022E7E74 ; case 0 - b _022E7BA8 ; case 1 - b _022E7C20 ; case 2 - b _022E7C98 ; case 3 - b _022E7D10 ; case 4 - b _022E7D88 ; case 5 -_022E7BA8: - ldrsh r0, [r8, #0x46] - cmp r0, #0 - bne _022E7BC0 - mov r2, #2 - ldmia r6, {r0, r1} - bl ov11_023159E8 -_022E7BC0: - ldrsh r0, [r8, #0x46] - add r0, r0, #1 - strh r0, [r8, #0x46] - bl ov11_0231474C - mov r0, #2 - bl ov11_0231598C - ldr r2, [r0, #4] - mov r1, #1 - mov r2, r2, lsr #0xc - mov r2, r2, lsl #8 - str r2, [r6] - ldr r0, [r0, #8] - mov r0, r0, lsr #0xc - mov r0, r0, lsl #8 - str r0, [r6, #4] - ldrsb r0, [r7] - bl sub_020051A0 - strb r0, [r7] - ldrsh r0, [r8, #0x46] - cmp r0, #0x200 - movlt r0, #1 - blt _022E7E78 - bl ov11_023146F8 - b _022E7E74 -_022E7C20: - ldrsh r0, [r8, #0x46] - cmp r0, #0 - bne _022E7C38 - mov r2, #0 - ldmia r6, {r0, r1} - bl ov11_023159E8 -_022E7C38: - ldrsh r0, [r8, #0x46] - add r0, r0, #1 - strh r0, [r8, #0x46] - bl ov11_0231474C - mov r0, #0 - bl ov11_0231598C - ldr r2, [r0, #4] - mov r1, #1 - mov r2, r2, lsr #0xc - mov r2, r2, lsl #8 - str r2, [r6] - ldr r0, [r0, #8] - mov r0, r0, lsr #0xc - mov r0, r0, lsl #8 - str r0, [r6, #4] - ldrsb r0, [r7] - bl sub_020051A0 - strb r0, [r7] - ldrsh r0, [r8, #0x46] - cmp r0, #0x140 - movlt r0, #1 - blt _022E7E78 - bl ov11_023146F8 - b _022E7E74 -_022E7C98: - ldrsh r0, [r8, #0x46] - cmp r0, #0 - bne _022E7CB0 - mov r2, #1 - ldmia r6, {r0, r1} - bl ov11_023159E8 -_022E7CB0: - ldrsh r1, [r8, #0x46] - mov r0, #1 - add r1, r1, #1 - strh r1, [r8, #0x46] - bl ov11_0231598C - cmp r0, #0 - beq _022E7CF0 - ldr r1, [r0, #4] - mov r1, r1, lsr #0xc - mov r1, r1, lsl #8 - str r1, [r6] - ldr r0, [r0, #8] - mov r0, r0, lsr #0xc - mov r0, r0, lsl #8 - str r0, [r6, #4] - b _022E7CF8 -_022E7CF0: - mov r0, #0 - b _022E7E78 -_022E7CF8: - ldrsb r0, [r7] - mov r1, #1 - bl sub_020051A0 - strb r0, [r7] - mov r0, #1 - b _022E7E78 -_022E7D10: - ldrsh r0, [r8, #0x46] - cmp r0, #0 - bne _022E7D28 - mov r2, #2 - ldmia r6, {r0, r1} - bl ov11_023159E8 -_022E7D28: - ldrsh r1, [r8, #0x46] - mov r0, #2 - add r1, r1, #1 - strh r1, [r8, #0x46] - bl ov11_0231598C - cmp r0, #0 - beq _022E7D68 - ldr r1, [r0, #4] - mov r1, r1, lsr #0xc - mov r1, r1, lsl #8 - str r1, [r6] - ldr r0, [r0, #8] - mov r0, r0, lsr #0xc - mov r0, r0, lsl #8 - str r0, [r6, #4] - b _022E7D70 -_022E7D68: - mov r0, #0 - b _022E7E78 -_022E7D70: - ldrsb r0, [r7] - mov r1, #1 - bl sub_020051A0 - strb r0, [r7] - mov r0, #1 - b _022E7E78 -_022E7D88: - ldrsh r0, [r8, #8] - cmp r0, #3 - bne _022E7E74 - mov r0, #0x2e - bl GetLiveActorIdxFromScriptEntityId - mov r4, r0 - mov r0, #0x2f - bl GetLiveActorIdxFromScriptEntityId - ldrsh r1, [r8, #0xa] - mvn r5, #0 - cmp r1, r0 - bne _022E7DDC - ldr r1, [r8] - ldr r0, [r8, #4] - ldr r2, [r1, #0x18] - add r1, sp, #0x18 - blx r2 - ldr r0, [sp, #0x18] - tst r0, #8 - movne r5, r4 - b _022E7DE4 -_022E7DDC: - cmp r1, r4 - moveq r5, r0 -_022E7DE4: - cmp r5, #0 - blt _022E7E74 - ldr r1, [r8] - ldr r0, [r8, #4] - ldr r2, [r1, #0xc] - mov r1, r6 - blx r2 - ldr r1, [r8] - ldr r0, [r8, #4] - ldr r2, [r1, #8] - add r1, sp, #8 - blx r2 - add r1, sp, #0x10 - mov r0, r5 - bl ov11_022F90F4 - mov r0, r5 - add r1, sp, #0 - bl ov11_022F90B4 - mov r0, r6 - add r1, sp, #8 - add r2, sp, #0x10 - add r3, sp, #0 - bl sub_020058A8 - mvn r1, #0 - cmp r0, r1 - bne _022E7E60 - ldr r1, _022E7E80 ; =ov11_02319A90 - add r2, sp, #0x10 - mov r0, r6 - mov r3, r1 - bl sub_020057A8 -_022E7E60: - mvn r1, #0 - cmp r0, r1 - ldrnesb r1, [r7] - cmpne r0, r1 - strneb r0, [r7] -_022E7E74: - mov r0, #0 -_022E7E78: - add sp, sp, #0x1c - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022E7E80: .word ov11_02319A90 - arm_func_end ov11_022E7B70 - - arm_func_start ov11_022E7E84 -ov11_022E7E84: ; 0x022E7E84 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r1, _022E7F24 ; =ov11_02319A98 - mov r2, r4 - mov r0, #2 - bl Debug_Print - add r0, r4, #1 - cmp r0, #9 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r4, pc} -_022E7EAC: ; jump table - b _022E7ED4 ; case 0 - b _022E7EDC ; case 1 - b _022E7EE4 ; case 2 - b _022E7EEC ; case 3 - b _022E7EF4 ; case 4 - b _022E7EFC ; case 5 - b _022E7F04 ; case 6 - b _022E7F0C ; case 7 - b _022E7F14 ; case 8 - b _022E7F1C ; case 9 -_022E7ED4: - bl ov11_0230D000 - ldmia sp!, {r4, pc} -_022E7EDC: - bl ov11_0230CFF4 - ldmia sp!, {r4, pc} -_022E7EE4: - bl ov11_0230D92C - ldmia sp!, {r4, pc} -_022E7EEC: - bl ov11_02313908 - ldmia sp!, {r4, pc} -_022E7EF4: - bl ov11_0230E964 - ldmia sp!, {r4, pc} -_022E7EFC: - bl ov11_02310C40 - ldmia sp!, {r4, pc} -_022E7F04: - bl ov11_0231136C - ldmia sp!, {r4, pc} -_022E7F0C: - bl ov11_0231186C - ldmia sp!, {r4, pc} -_022E7F14: - bl ov11_02311D6C - ldmia sp!, {r4, pc} -_022E7F1C: - bl ov11_02312250 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E7F24: .word ov11_02319A98 - arm_func_end ov11_022E7E84 - - arm_func_start ov11_022E7F28 -ov11_022E7F28: ; 0x022E7F28 - ldr ip, _022E7F30 ; =ov11_0230D318 - bx ip - .align 2, 0 -_022E7F30: .word ov11_0230D318 - arm_func_end ov11_022E7F28 - - arm_func_start ov11_022E7F34 -ov11_022E7F34: ; 0x022E7F34 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r1, _022E7F74 ; =ov11_02319AB4 - add r0, sp, #0 - bl ov11_022E46E8 - ldr r1, [sp, #4] - ldr r0, _022E7F78 ; =ov11_02319AD0 - bl Debug_Print0 - ldr r2, [sp] - ldr r0, _022E7F7C ; =UNIONALL_RAM_ADDRESS - str r2, [r0] - ldrh r1, [r2] - add r1, r2, r1, lsl #1 - str r1, [r0, #4] - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E7F74: .word ov11_02319AB4 -_022E7F78: .word ov11_02319AD0 -_022E7F7C: .word UNIONALL_RAM_ADDRESS - arm_func_end ov11_022E7F34 - - arm_func_start ov11_022E7F80 -ov11_022E7F80: ; 0x022E7F80 - stmdb sp!, {r3, lr} - ldr r0, _022E7FA4 ; =UNIONALL_RAM_ADDRESS - ldr r0, [r0] - bl MemFree - ldr r0, _022E7FA4 ; =UNIONALL_RAM_ADDRESS - mov r1, #0 - str r1, [r0] - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E7FA4: .word UNIONALL_RAM_ADDRESS - arm_func_end ov11_022E7F80 - - arm_func_start ov11_022E7FA8 -ov11_022E7FA8: ; 0x022E7FA8 - ldr r1, _022E7FB4 ; =C_ROUTINES - add r0, r1, r0, lsl #3 - bx lr - .align 2, 0 -_022E7FB4: .word C_ROUTINES - arm_func_end ov11_022E7FA8 - - arm_func_start GetCoroutineInfo -GetCoroutineInfo: ; 0x022E7FB8 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - mov r5, r1 - bl ov11_022DC89C - ldr r0, _022E8020 ; =UNIONALL_RAM_ADDRESS - add r1, r5, r5, lsl #1 - ldr r2, [r0] - add r3, r2, r1, lsl #1 - ldrh r1, [r3, #4] - cmp r1, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - str r2, [r4] - ldrh r2, [r3, #4] - ldr r3, [r0] - mov r1, #0 - add r2, r3, r2, lsl #1 - str r2, [r4, #4] - ldr r2, [r0, #4] - sub r0, r1, #1 - str r2, [r4, #8] - strh r1, [r4, #0x14] - strb r1, [r4, #0x16] - strh r0, [r4, #0x18] - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022E8020: .word UNIONALL_RAM_ADDRESS - arm_func_end GetCoroutineInfo - - arm_func_start ov11_022E8024 -ov11_022E8024: ; 0x022E8024 - ldr r0, _022E8034 ; =ov11_02324F98 - mvn r1, #0 - strh r1, [r0] - bx lr - .align 2, 0 -_022E8034: .word ov11_02324F98 - arm_func_end ov11_022E8024 - - arm_func_start ov11_022E8038 -ov11_022E8038: ; 0x022E8038 - bx lr - arm_func_end ov11_022E8038 - - arm_func_start GetSpecialRecruitmentSpecies -GetSpecialRecruitmentSpecies: ; 0x022E803C - ldr r1, _022E804C ; =RECRUITMENT_TABLE_SPECIES - mov r0, r0, lsl #1 - ldrsh r0, [r1, r0] - bx lr - .align 2, 0 -_022E804C: .word RECRUITMENT_TABLE_SPECIES - arm_func_end GetSpecialRecruitmentSpecies - - arm_func_start ov11_022E8050 -ov11_022E8050: ; 0x022E8050 - ldr r1, _022E807C ; =ov11_02320904 - b _022E8068 -_022E8058: - cmp r0, r2 - ldreqsh r0, [r1] - bxeq lr - add r1, r1, #4 -_022E8068: - ldrsh r2, [r1, #2] - cmp r2, #0 - bne _022E8058 - mov r0, #0 - bx lr - .align 2, 0 -_022E807C: .word ov11_02320904 - arm_func_end ov11_022E8050 - - arm_func_start PrepareMenuAcceptTeamMember -PrepareMenuAcceptTeamMember: ; 0x022E8080 - ldr r1, _022E808C ; =ov11_02324F98 - strh r0, [r1] - bx lr - .align 2, 0 -_022E808C: .word ov11_02324F98 - arm_func_end PrepareMenuAcceptTeamMember - - arm_func_start ov11_022E8090 -ov11_022E8090: ; 0x022E8090 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x14 - mov r4, r0 - mov r1, #1 - strb r1, [r4] - ldr r0, _022E810C ; =ov11_02324F98 - ldr r1, _022E8110 ; =RECRUITMENT_TABLE_SPECIES - ldrsh r2, [r0] - add r0, sp, #0 - mov r2, r2, lsl #1 - ldrsh r1, [r1, r2] - strh r1, [r4, #4] - bl GetNameRaw - add r1, sp, #0 - add r0, r4, #0x3a - mov r2, #0xa - bl StrncpyName - mov r0, r4 - bl SetBaseStatsMovesGroundMonster - ldr r0, _022E810C ; =ov11_02324F98 - ldr r2, _022E8114 ; =RECRUITMENT_TABLE_LEVELS - ldrsh r3, [r0] - ldr r1, _022E8118 ; =RECRUITMENT_TABLE_LOCATIONS - mov r3, r3, lsl #1 - ldrsh r2, [r2, r3] - strb r2, [r4, #1] - ldrsh r0, [r0] - ldrb r0, [r1, r0] - strb r0, [r4, #2] - add sp, sp, #0x14 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_022E810C: .word ov11_02324F98 -_022E8110: .word RECRUITMENT_TABLE_SPECIES -_022E8114: .word RECRUITMENT_TABLE_LEVELS -_022E8118: .word RECRUITMENT_TABLE_LOCATIONS - arm_func_end ov11_022E8090 - - arm_func_start ov11_022E811C -ov11_022E811C: ; 0x022E811C - bx lr - arm_func_end ov11_022E811C - - arm_func_start ov11_022E8120 -ov11_022E8120: ; 0x022E8120 - bx lr - arm_func_end ov11_022E8120 - - arm_func_start InitRandomNpcJobs -InitRandomNpcJobs: ; 0x022E8124 - stmdb sp!, {r3, lr} - sub sp, sp, #8 - ldr r2, _022E8164 ; =ov11_02324F9C - strh r0, [r2, #2] - strh r1, [r2] - bl ov11_022E8168 - movs r1, r0 - beq _022E815C - add r0, sp, #0 - mov r2, #0xff - bl WasMissionCompletedToday - ldrsh r0, [sp, #2] - ldrsh r1, [sp, #4] - bl SetRandomRequestNpcs1And2 -_022E815C: - add sp, sp, #8 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E8164: .word ov11_02324F9C - arm_func_end InitRandomNpcJobs - - arm_func_start ov11_022E8168 -ov11_022E8168: ; 0x022E8168 - stmdb sp!, {r3, lr} - ldr r0, _022E81B8 ; =ov11_02324F9C - ldrsh r1, [r0, #2] - cmp r1, #0 - beq _022E8188 - cmp r1, #1 - beq _022E819C - b _022E81B0 -_022E8188: - ldrsh r0, [r0] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EBD8 - ldmia sp!, {r3, pc} -_022E819C: - ldrsh r0, [r0] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EC38 - ldmia sp!, {r3, pc} -_022E81B0: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E81B8: .word ov11_02324F9C - arm_func_end ov11_022E8168 - - arm_func_start GetRandomNpcJobType -GetRandomNpcJobType: ; 0x022E81BC - stmdb sp!, {r3, lr} - bl ov11_022E8168 - cmp r0, #0 - ldrneb r0, [r0, #1] - moveq r0, #0xd - ldmia sp!, {r3, pc} - arm_func_end GetRandomNpcJobType - - arm_func_start GetRandomNpcJobSubtype -GetRandomNpcJobSubtype: ; 0x022E81D4 - stmdb sp!, {r3, lr} - bl ov11_022E8168 - cmp r0, #0 - ldrnesb r0, [r0, #2] - moveq r0, #0 - streqb r0, [sp] - ldmia sp!, {r3, pc} - arm_func_end GetRandomNpcJobSubtype - - arm_func_start GetRandomNpcJobStillAvailable -GetRandomNpcJobStillAvailable: ; 0x022E81F0 - stmdb sp!, {r3, lr} - ldr r0, _022E8254 ; =ov11_02324F9C - ldrsh r1, [r0, #2] - cmp r1, #0 - beq _022E8210 - cmp r1, #1 - beq _022E8230 - b _022E824C -_022E8210: - ldrsh r0, [r0] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EBF0 - cmp r0, #0 - bne _022E824C - mov r0, #1 - ldmia sp!, {r3, pc} -_022E8230: - ldrsh r0, [r0] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EC50 - cmp r0, #0 - moveq r0, #1 - ldmeqia sp!, {r3, pc} -_022E824C: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E8254: .word ov11_02324F9C - arm_func_end GetRandomNpcJobStillAvailable - -; https://decomp.me/scratch/bAiXn - arm_func_start AcceptRandomNpcJob -AcceptRandomNpcJob: ; 0x022E8258 - stmdb sp!, {r3, lr} - bl ov11_022E8168 - bl AddMissionToJobList - cmp r0, #0 - bne _022E82C0 - bl sub_0205F5A8 - bl sub_0205F710 - ldr r0, _022E82C8 ; =ov11_02324F9C - ldrsh r1, [r0, #2] - cmp r1, #0 - beq _022E8290 - cmp r1, #1 - beq _022E82A8 - b _022E82C0 -_022E8290: - ldrsh r0, [r0] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EC18 - mov r0, #1 - ldmia sp!, {r3, pc} -_022E82A8: - ldrsh r0, [r0] - mov r0, r0, lsl #0x18 - mov r0, r0, asr #0x18 - bl sub_0205EC78 - mov r0, #1 - ldmia sp!, {r3, pc} -_022E82C0: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E82C8: .word ov11_02324F9C - arm_func_end AcceptRandomNpcJob - - arm_func_start ov11_022E82CC -ov11_022E82CC: ; 0x022E82CC - stmdb sp!, {r4, lr} - cmp r0, #0 - movne r4, #0xd - moveq r4, #0xc - cmp r4, #0xc - bne _022E82F0 - mov r0, #0x11 - bl GroundMainLoop - mov r4, r0 -_022E82F0: - cmp r4, #0xc - bne _022E832C - mov r0, #0 - mov r1, #0x5c - bl ZeroInitScriptVariable - mov r0, #0x12 - bl GroundMainLoop - mov r4, r0 - cmp r4, #0xd - bne _022E832C - mov r0, #0 - mov r1, #0x5c - bl LoadScriptVariableValue - cmp r0, #0 - ldmneia sp!, {r4, pc} -_022E832C: - cmp r4, #0xd - ldmneia sp!, {r4, pc} - mov r0, #0x14 - bl GroundMainLoop - ldmia sp!, {r4, pc} - arm_func_end ov11_022E82CC - - arm_func_start ov11_022E8340 -ov11_022E8340: ; 0x022E8340 - stmdb sp!, {r3, lr} - mov r0, #0x198 - mov r1, #8 - bl MemAlloc - ldr r3, _022E83F0 ; =ov11_02324CAC - mov r1, #0 - mov r2, #0x198 - str r0, [r3] - bl MemsetSimple - mvn ip, #0 - ldr r0, _022E83F0 ; =ov11_02324CAC - sub r3, ip, #1 - ldr r1, [r0] - add r2, ip, #0x134 - strb ip, [r1, #6] - ldr r1, [r0] - strb r3, [r1, #4] - ldr r1, [r0] - strb r3, [r1, #5] - ldr r1, [r0] - str r2, [r1, #0x64] - ldr r0, [r0] - add r0, r0, #8 - bl InitPortraitParams - ldr r0, _022E83F0 ; =ov11_02324CAC - ldr r1, _022E83F4 ; =0x00000133 - ldr r0, [r0] - add r0, r0, #8 - bl InitPortraitParamsWithMonsterId - ldr r0, _022E83F0 ; =ov11_02324CAC - mov r1, #0x12 - ldr r0, [r0] - add r0, r0, #8 - bl SetPortraitLayout - ldr r0, _022E83F0 ; =ov11_02324CAC - ldr r0, [r0] - add r0, r0, #6 - bl sub_0204F1B4 - cmp r0, #0 - mov r0, #0 - ldmeqia sp!, {r3, pc} - bl ov11_022E84E4 - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E83F0: .word ov11_02324CAC -_022E83F4: .word 0x00000133 - arm_func_end ov11_022E8340 - - arm_func_start ov11_022E83F8 -ov11_022E83F8: ; 0x022E83F8 - stmdb sp!, {r3, lr} - ldr r0, _022E84A8 ; =ov11_02324CAC - ldr r0, [r0] - ldr r0, [r0] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _022E84A0 -_022E8414: ; jump table - b _022E8424 ; case 0 - b _022E8440 ; case 1 - b _022E8460 ; case 2 - b _022E8498 ; case 3 -_022E8424: - bl ov11_022E8748 - cmp r0, #0 - bne _022E84A0 - bl ov11_022E86E4 - mov r0, #1 - bl ov11_022E84E4 - b _022E84A0 -_022E8440: - bl sub_0203D538 - cmp r0, #1 - bne _022E84A0 - bl FreeMissionRewardStructMain - bl sub_02046D20 - mov r0, #2 - bl ov11_022E84E4 - b _022E84A0 -_022E8460: - bl ov11_022E8748 - cmp r0, #0 - bne _022E84A0 - bl ov11_022E86E4 - ldr r0, _022E84A8 ; =ov11_02324CAC - ldr r0, [r0] - ldrsb r0, [r0, #6] - bl sub_0205B77C - mov r1, #4 - strb r1, [r0], #0xa4 - bl sub_0205B584 - mov r0, #3 - bl ov11_022E84E4 - b _022E84A0 -_022E8498: - mov r0, #2 - ldmia sp!, {r3, pc} -_022E84A0: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_022E84A8: .word ov11_02324CAC - arm_func_end ov11_022E83F8 - - arm_func_start ov11_022E84AC -ov11_022E84AC: ; 0x022E84AC - stmdb sp!, {r3, lr} - ldr r0, _022E84E0 ; =ov11_02324CAC - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov11_022E86E4 - ldr r0, _022E84E0 ; =ov11_02324CAC - ldr r0, [r0] - bl MemFree - ldr r0, _022E84E0 ; =ov11_02324CAC - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E84E0: .word ov11_02324CAC - arm_func_end ov11_022E84AC - - arm_func_start ov11_022E84E4 -ov11_022E84E4: ; 0x022E84E4 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - ldr r1, _022E865C ; =ov11_02324CAC - ldr r2, [r1] - str r0, [r2] - ldr r3, [r1] - ldr r0, [r3] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _022E8654 -_022E850C: ; jump table - b _022E851C ; case 0 - b _022E8558 ; case 1 - b _022E861C ; case 2 - b _022E8654 ; case 3 -_022E851C: - bl ov11_022E866C - bl ov11_022E86A4 - ldr r0, _022E865C ; =ov11_02324CAC - ldr r1, _022E8660 ; =0x00003218 - ldr r3, [r0] - ldr r2, _022E8664 ; =0x0000025F - ldrsb r0, [r3, #4] - add r3, r3, #0x18 - bl ShowStringIdInDialogueBox - ldr r0, _022E865C ; =ov11_02324CAC - ldr r1, [r0] - ldrsb r0, [r1, #5] - add r1, r1, #8 - bl ShowPortraitInPortraitBox - b _022E8654 -_022E8558: - ldr r2, _022E8668 ; =0x00000133 - add r0, r3, #0x100 - strh r2, [r0, #0x68] - ldr r0, [r1] - mov r2, #2 - strb r2, [r0, #0x16a] - ldr r0, [r1] - mov r2, #0 - str r2, [r0, #0x170] - ldr r0, [r1] - ldrsb r0, [r0, #6] - bl sub_0205B77C - mov r4, r0 - add r2, sp, #0 - add r0, r4, #4 - mov r1, #0 - bl RollRandomItemReward - ldr r0, _022E865C ; =ov11_02324CAC - ldrsh r1, [sp] - ldr r0, [r0] - mov r2, #0 - add r0, r0, #0x178 - bl InitStandardItem - bl sub_0206309C - ldr r2, _022E865C ; =ov11_02324CAC - mov r1, #0 - ldr r2, [r2] - add r2, r2, #0x100 - strh r0, [r2, #0x7a] - add r0, r4, #4 - bl sub_02062DC4 - ldr r3, _022E865C ; =ov11_02324CAC - mov r1, #0 - ldr r2, [r3] - mov ip, #1 - str r0, [r2, #0x190] - ldr r0, [r3] - mov r2, #0x10 - add r0, r0, #0x100 - strh r1, [r0, #0x82] - ldr r0, [r3] - add r0, r0, #0x100 - strh r1, [r0, #0x88] - ldr r0, [r3] - str ip, [r0, #0x174] - ldr r0, [r3] - add r0, r0, #0x168 - bl sub_0203D438 - b _022E8654 -_022E861C: - bl ov11_022E866C - bl ov11_022E86A4 - ldr r0, _022E865C ; =ov11_02324CAC - ldr r1, _022E8660 ; =0x00003218 - ldr r3, [r0] -#ifdef JAPAN - mov r2, #0x500 -#else - mov r2, #0x260 -#endif - ldrsb r0, [r3, #4] - add r3, r3, #0x18 - bl ShowStringIdInDialogueBox - ldr r0, _022E865C ; =ov11_02324CAC - ldr r1, [r0] - ldrsb r0, [r1, #5] - add r1, r1, #8 - bl ShowPortraitInPortraitBox -_022E8654: - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_022E865C: .word ov11_02324CAC -_022E8660: .word 0x00003218 -#ifdef JAPAN -_022E8664: .word 0x000004FF -#else -_022E8664: .word 0x0000025F -#endif -_022E8668: .word 0x00000133 - arm_func_end ov11_022E84E4 - - arm_func_start ov11_022E866C -ov11_022E866C: ; 0x022E866C - stmdb sp!, {r3, lr} - ldr r1, _022E86A0 ; =ov11_02324CAC - mvn r0, #1 - ldr r1, [r1] - ldrsb r1, [r1, #4] - cmp r1, r0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl CreateDialogueBox - ldr r1, _022E86A0 ; =ov11_02324CAC - ldr r1, [r1] - strb r0, [r1, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E86A0: .word ov11_02324CAC - arm_func_end ov11_022E866C - - arm_func_start ov11_022E86A4 -ov11_022E86A4: ; 0x022E86A4 - stmdb sp!, {r3, lr} - ldr r1, _022E86E0 ; =ov11_02324CAC - mvn r0, #1 - ldr r1, [r1] - ldrsb r1, [r1, #5] - cmp r1, r0 - ldmneia sp!, {r3, pc} - mov r0, #0 - mov r1, #3 - mov r2, #1 - bl CreatePortraitBox - ldr r1, _022E86E0 ; =ov11_02324CAC - ldr r1, [r1] - strb r0, [r1, #5] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E86E0: .word ov11_02324CAC - arm_func_end ov11_022E86A4 - - arm_func_start ov11_022E86E4 -ov11_022E86E4: ; 0x022E86E4 - stmdb sp!, {r3, lr} - ldr r0, _022E8744 ; =ov11_02324CAC - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #4] - cmp r0, r1 - beq _022E8714 - bl CloseDialogueBox - ldr r0, _022E8744 ; =ov11_02324CAC - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #4] -_022E8714: - ldr r0, _022E8744 ; =ov11_02324CAC - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #5] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl ClosePortraitBox - ldr r0, _022E8744 ; =ov11_02324CAC - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #5] - ldmia sp!, {r3, pc} - .align 2, 0 -_022E8744: .word ov11_02324CAC - arm_func_end ov11_022E86E4 - - arm_func_start ov11_022E8748 -ov11_022E8748: ; 0x022E8748 - stmdb sp!, {r3, lr} - ldr r0, _022E8770 ; =ov11_02324CAC - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #4] - cmp r0, r1 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - bl IsDialogueBoxActive - ldmia sp!, {r3, pc} - .align 2, 0 -_022E8770: .word ov11_02324CAC - arm_func_end ov11_022E8748 - - arm_func_start GroundMainLoop -GroundMainLoop: ; 0x022E8774 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x34 - ldr r2, _022E91E8 ; =ov11_02324FA0 - mov r4, r0 - str r4, [r2, #0x14] - mov r0, #0 - strb r0, [r2, #4] - mov r1, #1 - strb r1, [r2, #2] - strb r0, [r2, #3] - strb r0, [r2, #1] - mov r1, #0x2c - strb r0, [r2] - bl LoadScriptVariableValue - mov r2, r0 - ldr r0, _022E91EC ; =ov11_023209B0 - mov r1, r4 - bl Debug_Print0 - bl sub_02028E2C - mov r0, #0 - mov r1, #0xb0000 - mov r2, #0x20 - mov r3, #1 - bl MemArenaAlloc - ldr r1, _022E91F0 ; =ov11_02324CB0 - ldr r2, _022E91F4 ; =GROUND_MEMORY_ARENA_1 - str r0, [r1, #8] - mov r0, #0x64000 - str r0, [sp, #0xc] - add r0, sp, #8 - mov r1, #0x34 - str r2, [sp, #8] - bl CreateMemArena - ldr r2, _022E91F0 ; =ov11_02324CB0 - ldr r1, _022E91F8 ; =GetFreeArenaGround - str r0, [r2, #4] - ldr r0, _022E91FC ; =GetAllocArenaGround - bl SetMemAllocatorParams - sub r0, r4, #0xc - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _022E88B0 -_022E881C: ; jump table - b _022E8840 ; case 0 - b _022E8840 ; case 1 - b _022E8840 ; case 2 - b _022E88B0 ; case 3 - b _022E88B0 ; case 4 - b _022E885C ; case 5 - b _022E8870 ; case 6 - b _022E889C ; case 7 - b _022E889C ; case 8 -_022E8840: - ldr r0, _022E91E8 ; =ov11_02324FA0 - mov r2, #1 - strb r2, [r0] - mov r1, #0 - strb r1, [r0, #2] - strb r2, [r0, #4] - b _022E88B0 -_022E885C: - ldr r0, _022E91E8 ; =ov11_02324FA0 - mov r1, #1 - strb r1, [r0, #2] - strb r1, [r0, #4] - b _022E88B0 -_022E8870: - add r0, sp, #4 - bl sub_02049338 - ldr r0, [sp, #4] - mov r1, #1 - cmp r0, #0 - moveq r2, #1 - ldr r0, _022E91E8 ; =ov11_02324FA0 - movne r2, #0 - strb r2, [r0, #2] - strb r1, [r0, #4] - b _022E88B0 -_022E889C: - ldr r0, _022E91E8 ; =ov11_02324FA0 - mov r1, #0 - strb r1, [r0, #2] - mov r1, #1 - strb r1, [r0, #4] -_022E88B0: - bl sub_02017A68 - bl ov11_022EB848 - cmp r4, #0x11 - moveq r0, #2 - movne r0, #0 - bl ov11_022E9720 - bl ov11_022EAFD4 - bl ov11_022DC6C4 - bl ov11_022F4518 - bl ov11_022EBA44 - mov r0, #1 - bl sub_02047FFC - bl ov11_022F709C - bl ov11_022F11DC - bl ov11_022EA908 - bl ov11_022FE9E0 - bl AllocAndInitPartnerFollowDataAndLiveActorList - bl ov11_022FBDBC - bl ov11_022FD624 - bl ov11_0230CE78 - bl ov11_0230CFF4 - ldr r1, _022E91E8 ; =ov11_02324FA0 - mov r2, #1 - mov r0, #0 - str r2, [r1, #0x1c] - str r0, [r1, #0x10] - sub r2, r0, #1 - str r2, [r1, #0x18] - mov r1, #0x1c - bl LoadScriptVariableValue - ldr r2, _022E91E8 ; =ov11_02324FA0 - mov r1, #0x1d - strh r0, [r2, #8] - mov r0, #0 - bl LoadScriptVariableValue - ldr r1, _022E91E8 ; =ov11_02324FA0 - mvn r2, #0 - str r0, [r1, #0xc] - strh r2, [r1, #6] - ldr r1, _022E91F0 ; =ov11_02324CB0 - mov r2, #1 - ldr r0, _022E9200 ; =ov11_022E9258 - strb r2, [r1] - bl sub_0200383C -_022E8960: - mvn r0, #0 - strh r0, [sp, #2] - bl sub_020038E8 - bl ov11_022DC808 - ldr r0, _022E91E8 ; =ov11_02324FA0 - ldr r0, [r0, #0x1c] - cmp r0, #1 - cmpne r0, #2 - beq _022E8990 - ldr r0, _022E9204 ; =ov11_023209CC - bl Debug_Print0 - b _022E8FDC -_022E8990: - bl sub_02034D0C - ldr r0, _022E91E8 ; =ov11_02324FA0 - ldr r2, [r0, #0x14] - cmp r2, #0x14 - addls pc, pc, r2, lsl #2 - b _022E8CD4 -_022E89A8: ; jump table - b _022E89FC ; case 0 - b _022E8CD4 ; case 1 - b _022E8A24 ; case 2 - b _022E8CD4 ; case 3 - b _022E8CD4 ; case 4 - b _022E8CD4 ; case 5 - b _022E8CD4 ; case 6 - b _022E8CD4 ; case 7 - b _022E8AE4 ; case 8 - b _022E8AE4 ; case 9 - b _022E8AE4 ; case 10 - b _022E8AE4 ; case 11 - b _022E8C20 ; case 12 - b _022E8C20 ; case 13 - b _022E8A24 ; case 14 - b _022E8BEC ; case 15 - b _022E8A3C ; case 16 - b _022E8CA8 ; case 17 - b _022E8CB4 ; case 18 - b _022E8CC0 ; case 19 - b _022E8CCC ; case 20 -_022E89FC: - ldr r0, _022E9208 ; =ov11_023209EC - bl Debug_Print0 - mov r0, #0 - mov r1, #0x5c - bl ZeroInitScriptVariable - bl GroundMainNextDay - ldr r0, _022E91E8 ; =ov11_02324FA0 - mov r1, #1 - str r1, [r0, #0x14] - b _022E8CD4 -_022E8A24: - add r0, sp, #2 - bl sub_0206C0D8 - ldr r0, _022E91E8 ; =ov11_02324FA0 - mov r1, #1 - str r1, [r0, #0x14] - b _022E8CD4 -_022E8A3C: - bl sub_0204E70C - mov r5, r0 - bl sub_0204E760 - mov r4, r0 - mov r2, r4 - mov r0, #0 - mov r1, #0x27 - bl SaveScriptVariableValue - mov r2, r4 - mov r0, #0 - mov r1, #0x29 - bl SaveScriptVariableValue - ldr r0, _022E920C ; =ov11_02320A08 - mov r1, r5 - mov r2, r4 - bl Debug_Print0 - cmp r5, #2 - ldreq r0, _022E9210 ; =0x0000029D - streqh r0, [sp, #2] - beq _022E8CD4 - cmp r5, #3 - ldreq r0, _022E9214 ; =0x0000029E - streqh r0, [sp, #2] - beq _022E8CD4 - mov r0, #0 - bl GetResolvedPerformanceProgressFlag - cmp r0, #0 - ldrne r0, _022E9218 ; =0x0000029F - strneh r0, [sp, #2] - bne _022E8CD4 - mov r0, r4 - bl GetDungeonModeSpecial - cmp r0, #3 - moveq r0, #0x29c - streqh r0, [sp, #2] - beq _022E8CD4 - cmp r5, #1 - ldreq r0, _022E921C ; =0x0000029B - streqh r0, [sp, #2] - ldrne r0, _022E9220 ; =0x0000029A - strneh r0, [sp, #2] - b _022E8CD4 -_022E8AE4: - mov r0, #0 - mov r1, #0x2b - bl SaveScriptVariableValue - ldr r0, _022E9208 ; =ov11_023209EC - bl Debug_Print0 - mov r0, #0 - mov r1, #0x5c - bl ZeroInitScriptVariable - bl GroundMainNextDay - mov r0, #0 - mov r1, #0x2a - mov r2, #1 - mov r3, #2 - bl CalcAndUpdateScriptVarWithOtherValue - bl sub_0204F034 - mov r4, r0 - bl sub_0204F050 - mov r5, r0 - bl GetDungeonModeSpecial - mov r3, r0 - ldr r0, _022E9224 ; =ov11_02320A28 - mov r1, r4 - mov r2, r5 - bl Debug_Print0 - cmp r4, #2 - cmpne r4, #3 - beq _022E8B94 - mov r0, #0 - bl GetResolvedPerformanceProgressFlag - cmp r0, #0 - ldrne r0, _022E9228 ; =0x000002A5 - strneh r0, [sp, #2] - bne _022E8B94 - mov r0, r5 - bl GetDungeonModeSpecial - cmp r0, #3 - moveq r0, #0x2a4 - streqh r0, [sp, #2] - beq _022E8B94 - cmp r4, #1 - ldreq r0, _022E922C ; =0x000002A1 - streqh r0, [sp, #2] - movne r0, #0x2a0 - strneh r0, [sp, #2] -_022E8B94: - ldr r0, _022E91E8 ; =ov11_02324FA0 - ldr r0, [r0, #0x14] - cmp r0, #8 - bne _022E8BC4 - cmp r4, #0 - cmpne r4, #1 - bne _022E8BC4 - cmp r5, #0xd5 - bge _022E8BC4 - mov r0, r5 - mov r1, #1 - bl SetDungeonConquest -_022E8BC4: - mov r0, #0 - bl GetResolvedPerformanceProgressFlag - cmp r0, #0 - beq _022E8CD4 - ldr r0, _022E91E8 ; =ov11_02324FA0 - mov r1, #1 - strh r1, [r0, #8] - mov r1, #0 - str r1, [r0, #0xc] - b _022E8CD4 -_022E8BEC: - bl sub_0204E760 - mov r4, r0 - mov r2, r4 - mov r0, #0 - mov r1, #0x27 - bl SaveScriptVariableValue - mov r2, r4 - mov r0, #0 - mov r1, #0x29 - bl SaveScriptVariableValue - ldr r0, _022E9230 ; =0x000002A6 - strh r0, [sp, #2] - b _022E8CD4 -_022E8C20: - ldr r0, _022E9208 ; =ov11_023209EC - bl Debug_Print0 - mov r0, #0 - mov r1, #0x5c - bl ZeroInitScriptVariable - bl GroundMainNextDay - ldr r1, _022E91E8 ; =ov11_02324FA0 - mov r0, #0 - ldr r2, [r1, #0x14] - mov r1, #0x2c - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x1e - mov r2, #1 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x1c - mov r2, #1 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x1d - mov r2, r0 - bl SaveScriptVariableValue - ldr r0, _022E91E8 ; =ov11_02324FA0 - mov r1, #1 - ldr r0, [r0, #0x14] - cmp r0, #0xc - moveq r0, #0x46 - streqh r0, [sp, #2] - movne r0, #0x47 - strneh r0, [sp, #2] - ldr r0, _022E91E8 ; =ov11_02324FA0 - str r1, [r0, #0x14] - b _022E8CD4 -_022E8CA8: - mov r0, #0x4e - strh r0, [sp, #2] - b _022E8CD4 -_022E8CB4: - mov r0, #0x4f - strh r0, [sp, #2] - b _022E8CD4 -_022E8CC0: - mov r0, #0x50 - strh r0, [sp, #2] - b _022E8CD4 -_022E8CCC: - mov r0, #0x51 - strh r0, [sp, #2] -_022E8CD4: - ldr r0, _022E91E8 ; =ov11_02324FA0 - ldrb r0, [r0, #4] - cmp r0, #0 - bne _022E8D78 - mov r0, #0 - mov r1, #0x1c - bl LoadScriptVariableValue - ldr r1, _022E91E8 ; =ov11_02324FA0 - mov r4, r0 - ldr r2, [r1, #0x14] - mov r0, #0 - mov r1, #0x2c - bl SaveScriptVariableValue - ldr r1, _022E91E8 ; =ov11_02324FA0 - ldr r0, _022E9234 ; =ov11_02320A44 - ldr r1, [r1, #0x14] - bl Debug_Print0 - ldr r0, _022E91E8 ; =ov11_02324FA0 - ldr r1, [r0, #0x14] - cmp r1, #1 - beq _022E8D50 - cmp r1, #4 - mov r1, #0x1e - bne _022E8D44 - ldrsh r2, [r0, #8] - mov r0, #0 - bl SaveScriptVariableValue - b _022E8D50 -_022E8D44: - mov r2, r4 - mov r0, #0 - bl SaveScriptVariableValue -_022E8D50: - ldr r1, _022E91E8 ; =ov11_02324FA0 - mov r0, #0 - ldrsh r2, [r1, #8] - mov r1, #0x1c - bl SaveScriptVariableValue - ldr r1, _022E91E8 ; =ov11_02324FA0 - mov r0, #0 - ldr r2, [r1, #0xc] - mov r1, #0x1d - bl SaveScriptVariableValue -_022E8D78: - ldr r0, _022E91E8 ; =ov11_02324FA0 - mov r2, #3 - mov r1, #0 - str r2, [r0, #0x14] - str r1, [r0, #0x1c] - str r1, [r0, #0x10] - sub r2, r1, #1 - str r2, [r0, #0x18] - ldrsh r1, [r0, #8] - strh r1, [r0, #0xa] - strh r2, [r0, #8] - bl ov11_022E98CC - bl ov11_022DC718 - bl ov11_022F468C - bl ov11_022F7104 - bl ov11_022F1244 - mov r0, #0 - bl ov11_022EAFF8 - bl ov11_022FEA28 - bl InitPartnerFollowDataAndLiveActorList - bl ov11_022FBE04 - bl ov11_022FD66C - bl ComputeSpecialCounters - ldrsh r0, [sp, #2] - mvn r1, #0 - cmp r0, r1 - mov r1, #0 - beq _022E8DF8 - bl ov11_022F7188 - mvn r0, #0 - strh r0, [sp, #2] - b _022E8E00 -_022E8DF8: - mov r0, #0x3c - bl ov11_022F7188 -_022E8E00: - bl sub_020039E4 - mov fp, #0 - mov r6, #1 - mov r8, #0x1e - ldr r5, _022E91E8 ; =ov11_02324FA0 - ldr r4, _022E9238 ; =0x00000F0F - mov r7, r6 - mov sl, r8 - mov sb, fp -_022E8E24: - bl sub_020038E8 - bl ov11_022DC808 - bl sub_0204F9CC - ldr r1, [r5, #0x1c] - cmp r1, #0 - beq _022E8EBC - ldr r0, [r5, #0x10] - cmp r0, #0 - ble _022E8E88 - sub r0, r0, #1 - str r0, [r5, #0x10] - cmp r0, #0 - bgt _022E8F94 - cmp r1, #1 - cmpne r1, #2 - bne _022E8E70 - ldr r0, [r5, #0x18] - bl ov11_022E9AD8 - b _022E8F94 -_022E8E70: - ldrb r2, [r5, #4] - ldrb r1, [r5, #1] - ldr r0, [r5, #0x18] - orr r1, r2, r1 - bl ov11_022E9AF0 - b _022E8F94 -_022E8E88: - bl ov11_022E9EFC - cmp r0, #0 - bne _022E8F94 - ldr r0, _022E91E8 ; =ov11_02324FA0 - ldr r0, [r0, #0x1c] - cmp r0, #1 - cmpne r0, #2 - bne _022E8FB8 - mov r0, #0 - bl ov11_022E9B24 - mov r0, #0 - bl ov11_022E9B84 - b _022E8FB8 -_022E8EBC: - ldrb r0, [r5, #4] - cmp r0, #0 - ldreqb r0, [r5, #1] - cmpeq r0, #0 - beq _022E8F94 - ldrb r0, [r5, #3] - cmp r0, #0 - beq _022E8F1C - mov r0, sb - bl sub_02034840 - cmp r0, #0 - bne _022E8F94 - bl ov11_022F7628 - cmp r0, #0 - bne _022E8F94 - bl ov11_0230D170 - cmp r0, #0 - bne _022E8F94 - bl ov11_022F7140 - mov r0, r8 - bl ov11_022E9644 - mov r0, sl - bl sub_02017ACC - b _022E8F94 -_022E8F1C: - ldrb r0, [r5, #2] - cmp r0, #0 - bne _022E8F94 - mov r0, fp - add r1, sp, #0 - bl GetPressedButtons - bl IsTouchScreenNotOff - cmp r0, #0 - add r0, sp, #0x10 - beq _022E8F4C - bl GetReleasedStylus - b _022E8F50 -_022E8F4C: - bl sub_02006BFC -_022E8F50: - ldrb r0, [r5, #1] - cmp r0, #0 - beq _022E8F6C - ldrh r0, [sp] - tst r0, #8 - strneb r7, [r5, #3] - b _022E8F94 -_022E8F6C: - ldrh r0, [sp] - tst r0, r4 - bne _022E8F90 - add r0, sp, #0x10 - mov r1, #2 - mov r2, #0 - bl sub_02006C8C - cmp r0, #0 - beq _022E8F94 -_022E8F90: - strb r6, [r5, #3] -_022E8F94: - bl ov11_022F766C - bl ov11_0230D340 - bl sub_020039E4 - bl ov11_022F7BC4 - bl ov11_022F2188 - bl ov11_0230D570 - bl HandleMenus - bl sub_02028848 - b _022E8E24 -_022E8FB8: - bl ov11_022F1244 - mov r0, #0 - bl ov11_022EAFF8 - bl ov11_022FEA28 - bl InitPartnerFollowDataAndLiveActorList - bl ov11_022FBE04 - bl ov11_022FD66C - bl sub_020039E4 - b _022E8960 -_022E8FDC: - mov r0, #0 - bl sub_0200383C - bl sub_02034710 - bl ov11_0230CF00 - mov r0, #0 - bl ov11_022E9FC8 - cmp r0, #2 - bne _022E9008 - mov r0, #1 - bl sub_0204F024 - b _022E9010 -_022E9008: - mov r0, #0 - bl sub_0204F024 -_022E9010: - bl ov11_0230CED4 - bl ov11_022F1214 - bl ov11_022EA91C - bl ov11_022F7DD4 - bl ov11_022FBE4C - bl ov11_022FD6B4 - bl ov11_022FEA70 - bl ov11_022F70D0 - bl sub_0204804C - bl ov11_022F47F4 - bl ov11_022DC7A0 - bl ov11_022EAFF4 - bl ov11_022E9848 - bl ov11_022EB9A4 - mov r0, #0 - mov r1, r0 - bl SetMemAllocatorParams - ldr r0, _022E91F0 ; =ov11_02324CB0 - ldr r0, [r0, #4] - bl sub_020012D8 - ldr r0, _022E91F0 ; =ov11_02324CB0 - ldr r0, [r0, #8] - bl sub_020012D8 - ldr r0, _022E91E8 ; =ov11_02324FA0 - ldrb r1, [r0] - cmp r1, #0 - beq _022E9090 - ldr r0, [r0, #0x1c] - cmp r0, #8 - moveq r0, #0xf - movne r0, #0xe - b _022E91E0 -_022E9090: - ldrb r1, [r0, #4] - ldr r0, [r0, #0x1c] - cmp r1, #0 - beq _022E90D0 - cmp r0, #6 - beq _022E90C0 - cmp r0, #7 - bne _022E90C0 - ldr r0, _022E923C ; =ov11_02320A60 - bl Debug_Print0 - mov r0, #0xd - b _022E91E0 -_022E90C0: - ldr r0, _022E9240 ; =ov11_02320A70 - bl Debug_Print0 - mov r0, #0xc - b _022E91E0 -_022E90D0: - cmp r0, #3 - beq _022E90E4 - cmp r0, #4 - beq _022E914C - b _022E9170 -_022E90E4: - mov r0, #0 - mov r1, #0x2c - mov r2, #0xf - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x2b - mov r2, #0xf - bl SaveScriptVariableValue - bl sub_0204E6FC - mov r5, r0 - bl sub_0204E760 - mov r4, r0 - mov r0, #0 - mov r1, #0x27 - mov r2, r4 - bl SaveScriptVariableValue - mov r0, #0 - mov r1, #0x29 - mov r2, r4 - bl SaveScriptVariableValue - mov r1, r5 - mov r2, r4 - ldr r0, _022E9244 ; =ov11_02320A7C - bl Debug_Print0 - mov r0, #4 - b _022E91E0 -_022E914C: - bl sub_0204E6FC - mov r4, r0 - bl sub_0204E760 - mov r2, r0 - ldr r0, _022E9248 ; =ov11_02320A94 - mov r1, r4 - bl Debug_Print0 - mov r0, #5 - b _022E91E0 -_022E9170: - mov r0, #0 - mov r1, #0x2c - mov r2, #1 - bl SaveScriptVariableValue - ldr r0, _022E91E8 ; =ov11_02324FA0 - ldr r1, [r0, #0x1c] - cmp r1, #5 - bne _022E91A0 - ldr r0, _022E924C ; =ov11_02320AAC - bl Debug_Print0 - mov r0, #9 - b _022E91E0 -_022E91A0: - cmp r1, #7 - bne _022E91D4 - ldrb r0, [r0, #1] - cmp r0, #0 - beq _022E91C4 - ldr r0, _022E924C ; =ov11_02320AAC - bl Debug_Print0 - mov r0, #9 - b _022E91E0 -_022E91C4: - ldr r0, _022E9250 ; =ov11_02320AB8 - bl Debug_Print0 - mov r0, #0xb - b _022E91E0 -_022E91D4: - ldr r0, _022E9254 ; =ov11_02320AC8 - bl Debug_Print0 - mov r0, #0xa -_022E91E0: - add sp, sp, #0x34 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022E91E8: .word ov11_02324FA0 -_022E91EC: .word ov11_023209B0 -_022E91F0: .word ov11_02324CB0 -_022E91F4: .word GROUND_MEMORY_ARENA_1 -_022E91F8: .word GetFreeArenaGround -_022E91FC: .word GetAllocArenaGround -_022E9200: .word ov11_022E9258 -_022E9204: .word ov11_023209CC -_022E9208: .word ov11_023209EC -_022E920C: .word ov11_02320A08 -_022E9210: .word 0x0000029D -_022E9214: .word 0x0000029E -_022E9218: .word 0x0000029F -_022E921C: .word 0x0000029B -_022E9220: .word 0x0000029A -_022E9224: .word ov11_02320A28 -_022E9228: .word 0x000002A5 -_022E922C: .word 0x000002A1 -_022E9230: .word 0x000002A6 -_022E9234: .word ov11_02320A44 -_022E9238: .word 0x00000F0F -_022E923C: .word ov11_02320A60 -_022E9240: .word ov11_02320A70 -_022E9244: .word ov11_02320A7C -_022E9248: .word ov11_02320A94 -_022E924C: .word ov11_02320AAC -_022E9250: .word ov11_02320AB8 -_022E9254: .word ov11_02320AC8 - arm_func_end GroundMainLoop - - arm_func_start ov11_022E9258 -ov11_022E9258: ; 0x022E9258 - stmdb sp!, {r4, lr} - bl sub_020038D8 - cmp r0, #0 - beq _022E9294 - bl sub_02006E14 - bl ov11_022F2178 - bl ov11_022FEE90 - bl ov11_022FAE58 - bl ov11_022FD47C - bl ov11_022FE838 - bl HandleUnlocks - bl ov11_022DC81C - bl ov11_022EA024 - bl sub_02003990 - b _022E92A8 -_022E9294: - bl ov11_022F2178 - bl ov11_022FEE90 - bl ov11_022FAE58 - bl ov11_022FD47C - bl ov11_022FE838 -_022E92A8: - bl sub_0201BF64 - bl sub_02028E40 - bl ov11_022EB3F0 - bl ov11_022F2194 - bl ov11_0230D6C4 - bl ov11_022EA0BC - bl ov11_022EFC54 - bl ov11_022F5274 - bl sub_0201F464 - ldr r0, _022E9358 ; =ov11_02324CB0 - ldrb r0, [r0] - cmp r0, #0 - bne _022E92E0 - bl sub_0201DDFC -_022E92E0: - bl sub_02008F84 - bl sub_0201BE28 - bl sub_02017A80 - bl sub_02003A40 - ldr r1, _022E9358 ; =ov11_02324CB0 - mov r4, r0 - ldrb r0, [r1] - cmp r0, #0 - beq _022E930C - mov r0, #0 - bl sub_02008ED0 -_022E930C: - bl sub_02008F88 - bl G3X_Reset - bl sub_0201DE10 - bl ov11_022F2244 - bl ov11_0230D6F0 - bl ov11_022EFCE4 - bl ov11_022F5B70 - bl ov10_022BF7D4 - mov r0, r4 - bl sub_02028A64 - bl GroupOamAttributesBothScreens - bl sub_0201BE84 - bl sub_02028E88 - bl sub_0201BF4C - mov r0, r4 - mov r2, #0 - ldr r1, _022E9358 ; =ov11_02324CB0 - strb r2, [r1] - ldmia sp!, {r4, pc} - .align 2, 0 -_022E9358: .word ov11_02324CB0 - arm_func_end ov11_022E9258 - - arm_func_start GetAllocArenaGround -GetAllocArenaGround: ; 0x022E935C - cmp r0, #0 - bxne lr - and r0, r1, #0xff - sub r0, r0, #8 - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _022E93B4 -_022E9378: ; jump table - b _022E93A8 ; case 0 - b _022E93B4 ; case 1 - b _022E93B4 ; case 2 - b _022E93B4 ; case 3 - b _022E93B4 ; case 4 - b _022E93B4 ; case 5 - b _022E939C ; case 6 - b _022E93A8 ; case 7 - b _022E93A8 ; case 8 -_022E939C: - ldr r0, _022E93BC ; =ov11_02324CB0 - ldr r0, [r0, #8] - bx lr -_022E93A8: - ldr r0, _022E93BC ; =ov11_02324CB0 - ldr r0, [r0, #4] - bx lr -_022E93B4: - mov r0, #0 - bx lr - .align 2, 0 -_022E93BC: .word ov11_02324CB0 - arm_func_end GetAllocArenaGround - - arm_func_start GetFreeArenaGround -GetFreeArenaGround: ; 0x022E93C0 - stmdb sp!, {r4, lr} - mov r4, r1 - cmp r0, #0 - ldmneia sp!, {r4, pc} - ldr r0, _022E9410 ; =ov11_02324CB0 - ldr r0, [r0, #8] - bl sub_020017B4 - cmp r0, #0 - ldrne r0, _022E9410 ; =ov11_02324CB0 - ldrne r0, [r0, #8] - ldmneia sp!, {r4, pc} - ldr r0, _022E9410 ; =ov11_02324CB0 - mov r1, r4 - ldr r0, [r0, #4] - bl sub_020017B4 - cmp r0, #0 - ldrne r0, _022E9410 ; =ov11_02324CB0 - ldrne r0, [r0, #4] - moveq r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E9410: .word ov11_02324CB0 - arm_func_end GetFreeArenaGround - - arm_func_start GroundMainReturnDungeon -GroundMainReturnDungeon: ; 0x022E9414 - stmdb sp!, {r3, lr} - ldr r0, _022E9434 ; =ov11_023209EC - bl Debug_Print0 - mov r0, #0 - mov r1, #0x5c - bl ZeroInitScriptVariable - bl GroundMainNextDay - ldmia sp!, {r3, pc} - .align 2, 0 -_022E9434: .word ov11_023209EC - arm_func_end GroundMainReturnDungeon - - arm_func_start GroundMainNextDay -GroundMainNextDay: ; 0x022E9438 - stmdb sp!, {r4, lr} - bl GetGameMode - mov r4, r0 - ldr r0, _022E94C8 ; =ov11_02320AD4 - bl Debug_Print0 - cmp r4, #3 - bne _022E9468 - mov r0, #0 - bl GenerateKecleonItems1 - mov r0, #0 - bl GenerateKecleonItems2 - ldmia sp!, {r4, pc} -_022E9468: - cmp r4, #2 - ldmneia sp!, {r4, pc} - bl GetScenarioBalance - cmp r0, #6 - movhs r4, #3 - bhs _022E9498 - cmp r0, #4 - movhs r4, #2 - bhs _022E9498 - cmp r0, #2 - movhs r4, #1 - movlo r4, #0 -_022E9498: - ldr r0, _022E94CC ; =ov11_02320AEC - mov r1, r4 - bl Debug_Print0 - mov r0, r4 - bl GenerateKecleonItems1 - mov r0, r4 - bl GenerateKecleonItems2 - bl GenerateDailyMissions - bl GenerateCroagunkItems - bl DecrementEggHatchTimer - bl UpdateRecycleShop - ldmia sp!, {r4, pc} - .align 2, 0 -_022E94C8: .word ov11_02320AD4 -_022E94CC: .word ov11_02320AEC - arm_func_end GroundMainNextDay - - arm_func_start ov11_022E94D0 -ov11_022E94D0: ; 0x022E94D0 - stmdb sp!, {r4, r5, r6, lr} - ldr r3, _022E9550 ; =ov11_02324FA0 - mov r5, r0 - ldr r0, [r3, #0x1c] - mov r4, r1 - mov r6, r2 - cmp r0, #0 - bne _022E9548 - ldr r1, _022E9554 ; =ov11_02320B10 - mov r2, r5 - mov r3, r6 - mov r0, #1 - bl Debug_Print - ldr r0, _022E9550 ; =ov11_02324FA0 - mov r1, #1 - str r1, [r0, #0x1c] - str r1, [r0, #0x10] - str r6, [r0, #0x18] - cmp r4, #0 - movge r1, #3 - movlt r1, #4 - ldr r0, _022E9550 ; =ov11_02324FA0 - cmp r4, #0 - str r1, [r0, #0x14] - strh r5, [r0, #8] - ldr r1, _022E9550 ; =ov11_02324FA0 - movlt r4, #0 - mov r0, #1 - str r4, [r1, #0xc] - ldmia sp!, {r4, r5, r6, pc} -_022E9548: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022E9550: .word ov11_02324FA0 -_022E9554: .word ov11_02320B10 - arm_func_end ov11_022E94D0 - - arm_func_start ov11_022E9558 -ov11_022E9558: ; 0x022E9558 - ldr r1, _022E9588 ; =ov11_02324FA0 - ldr r2, [r1, #0x1c] - cmp r2, #0 - movne r0, #0 - bxne lr - mov r2, #3 - str r2, [r1, #0x1c] - mov r2, #1 - str r2, [r1, #0x10] - str r0, [r1, #0x18] - mov r0, r2 - bx lr - .align 2, 0 -_022E9588: .word ov11_02324FA0 - arm_func_end ov11_022E9558 - - arm_func_start ov11_022E958C -ov11_022E958C: ; 0x022E958C - stmdb sp!, {r4, lr} - ldr r1, _022E95D4 ; =ov11_02324FA0 - mov r4, r0 - ldr r0, [r1, #0x1c] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, pc} - ldr r1, _022E95D8 ; =ov11_02320B34 - mov r2, r4 - mov r0, #1 - bl Debug_Print - ldr r1, _022E95D4 ; =ov11_02324FA0 - mov r0, #4 - str r0, [r1, #0x1c] - mov r0, #1 - str r0, [r1, #0x10] - str r4, [r1, #0x18] - ldmia sp!, {r4, pc} - .align 2, 0 -_022E95D4: .word ov11_02324FA0 -_022E95D8: .word ov11_02320B34 - arm_func_end ov11_022E958C - - arm_func_start JumpToTitleScreen -JumpToTitleScreen: ; 0x022E95DC - stmdb sp!, {r4, lr} - ldr r1, _022E963C ; =ov11_02324FA0 - mov r4, r0 - ldr r0, [r1, #0x1c] - cmp r0, #0 - bne _022E9634 - ldr r1, _022E9640 ; =ov11_02320B58 - mov r2, r4 - mov r0, #1 - bl Debug_Print - ldr r0, _022E963C ; =ov11_02324FA0 - mov r1, #6 - str r1, [r0, #0x1c] - cmp r4, #0 - movge r1, #1 - strge r1, [r0, #0x10] - strge r4, [r0, #0x18] - movlt r1, #0 - strlt r1, [r0, #0x10] - strlt r1, [r0, #0x18] - mov r0, #1 - ldmia sp!, {r4, pc} -_022E9634: - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E963C: .word ov11_02324FA0 -_022E9640: .word ov11_02320B58 - arm_func_end JumpToTitleScreen - - arm_func_start ov11_022E9644 -ov11_022E9644: ; 0x022E9644 - stmdb sp!, {r4, lr} - ldr r1, _022E968C ; =ov11_02324FA0 - mov r4, r0 - ldr r0, [r1, #0x1c] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, pc} - ldr r1, _022E9690 ; =ov11_02320B78 - mov r2, r4 - mov r0, #1 - bl Debug_Print - ldr r1, _022E968C ; =ov11_02324FA0 - mov r0, #7 - str r0, [r1, #0x1c] - mov r0, #1 - str r0, [r1, #0x10] - str r4, [r1, #0x18] - ldmia sp!, {r4, pc} - .align 2, 0 -_022E968C: .word ov11_02324FA0 -_022E9690: .word ov11_02320B78 - arm_func_end ov11_022E9644 - - arm_func_start ReturnToTitleScreen -ReturnToTitleScreen: ; 0x022E9694 - stmdb sp!, {r4, lr} - ldr r1, _022E96DC ; =ov11_02324FA0 - mov r4, r0 - ldr r0, [r1, #0x1c] - cmp r0, #0 - movne r0, #0 - ldmneia sp!, {r4, pc} - ldr r1, _022E96E0 ; =ov11_02320B9C - mov r2, r4 - mov r0, #1 - bl Debug_Print - ldr r1, _022E96DC ; =ov11_02324FA0 - mov r0, #8 - str r0, [r1, #0x1c] - mov r0, #1 - str r0, [r1, #0x10] - str r4, [r1, #0x18] - ldmia sp!, {r4, pc} - .align 2, 0 -_022E96DC: .word ov11_02324FA0 -_022E96E0: .word ov11_02320B9C - arm_func_end ReturnToTitleScreen diff --git a/asm/overlay_11_022E46FC.s b/asm/overlay_11_022E46FC.s new file mode 100644 index 00000000..c0d3a112 --- /dev/null +++ b/asm/overlay_11_022E46FC.s @@ -0,0 +1,4238 @@ + .include "asm/macros.inc" + .include "overlay_11_022E46FC.inc" + + .text + + arm_func_start SsbLoad2 +SsbLoad2: ; 0x022E46FC +#ifdef EUROPE +#define SSB_LOAD_2_STACK_OFFSET 8 +#else +#define SSB_LOAD_2_STACK_OFFSET 0 +#endif + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x54 + SSB_LOAD_2_STACK_OFFSET + mov r4, r1 + mov r5, r0 + ldr r1, _022E48A4 ; =ov11_02319694 + mov r2, r4 + mov r0, #2 + bl Debug_Print + bl FileRom_InitDataTransfer + add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET + bl FileRom_Veneer_FileInit + add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET + mov r1, r4 + bl FileRom_HandleOpen + add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET + add r1, sp, #0 +#ifdef EUROPE + mov r2, #0x12 +#else + mov r2, #0xc +#endif + bl FileRom_HandleRead + ldrh r3, [sp, #4] + ldrh r2, [sp, #6] + ldr r0, _022E48A8 ; =ov11_02324F70 + add r1, sp, #0 + add r3, r3, r2 + ldrsb r2, [r0] + ldr r0, [r5] + cmp r0, #0 + add r0, r2, #4 + mov r0, r0, lsl #1 + ldrh r0, [r1, r0] + add r0, r3, r0 + mov r4, r0, lsl #1 + bne _022E4790 + mov r0, r4 + mov r1, #1 + str r4, [r5, #4] + bl MemAlloc + str r0, [r5] +_022E4790: + ldrh r2, [sp, #4] + ldr r1, [r5] + add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET + mov r2, r2, lsl #1 + bl FileRom_HandleRead + ldrh r0, [sp] + cmp r0, #0 + beq _022E47D4 + ldrh r1, [sp, #4] + ldrh r0, [sp, #2] + ldrh r2, [sp, #6] + ldr r3, [r5] + add r1, r1, r0 + add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET + add r1, r3, r1, lsl #1 + mov r2, r2, lsl #1 + bl FileRom_HandleRead +_022E47D4: + ldrh r0, [sp, #2] + cmp r0, #0 + beq _022E488C + ldrh r2, [sp, #4] + ldrh r1, [sp, #6] + ldr r0, _022E48A8 ; =ov11_02324F70 + mov r3, #0 + add r1, r2, r1 +#ifdef EUROPE + add r2, r1, #9 +#else + add r2, r1, #6 +#endif + ldrsb ip, [r0] + add r1, sp, #0 + b _022E4814 +_022E4804: + add r0, r1, r3, lsl #1 + ldrh r0, [r0, #8] + add r3, r3, #1 + add r2, r2, r0 +_022E4814: + cmp r3, ip + blt _022E4804 + mov r1, r2, lsl #1 + add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET + mov r2, #0 + bl FileRom_HandleSeek + ldrh r2, [sp, #2] + ldrh r1, [sp, #4] + ldr r3, [r5] + add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET + add r1, r3, r1, lsl #1 + mov r2, r2, lsl #1 + bl FileRom_HandleRead + ldr r0, _022E48A8 ; =ov11_02324F70 + add r1, sp, #0 + ldrsb r0, [r0] + ldrh ip, [sp, #2] + ldrh r2, [sp, #4] + add r0, r0, #4 + mov r0, r0, lsl #1 + ldrh r0, [r1, r0] + add r1, ip, r2 + ldrh r3, [sp, #6] + sub r2, r0, ip + ldr r5, [r5] + add r1, r3, r1 + add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET + add r1, r5, r1, lsl #1 + mov r2, r2, lsl #1 + bl FileRom_HandleRead +_022E488C: + add r0, sp, #0xc + SSB_LOAD_2_STACK_OFFSET + bl FileClose + bl FileRom_StopDataTransfer + mov r0, r4 + add sp, sp, #0x54 + SSB_LOAD_2_STACK_OFFSET + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022E48A4: .word ov11_02319694 +_022E48A8: .word ov11_02324F70 + arm_func_end SsbLoad2 + + arm_func_start ScriptParamToInt +ScriptParamToInt: ; 0x022E48AC + tst r0, #0x4000 + movne r1, #0x8000 + rsbne r1, r1, #0 + orrne r1, r0, r1 + ldreq r1, _022E48DC ; =0x00003FFF + andeq r1, r0, r1 + tst r0, #0x8000 + movne r0, r1, asr #7 + addne r0, r1, r0, lsr #24 + movne r0, r0, asr #8 + moveq r0, r1 + bx lr + .align 2, 0 +_022E48DC: .word 0x00003FFF + arm_func_end ScriptParamToInt + + arm_func_start ScriptParamToFixedPoint16 +ScriptParamToFixedPoint16: ; 0x022E48E0 + tst r0, #0x4000 + movne r1, #0x8000 + rsbne r1, r1, #0 + orrne r1, r0, r1 + ldreq r1, _022E4908 ; =0x00003FFF + andeq r1, r0, r1 + tst r0, #0x8000 + movne r0, r1 + moveq r0, r1, lsl #8 + bx lr + .align 2, 0 +_022E4908: .word 0x00003FFF + arm_func_end ScriptParamToFixedPoint16 + + arm_func_start ov11_022E490C +ov11_022E490C: ; 0x022E490C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + ldrh r0, [r7] + mov r4, r1 + bl ScriptParamToInt + mov r5, r0 + ldrh r0, [r7, #2] + bl ScriptParamToInt + mov r6, r0 + tst r5, #4 + bne _022E4958 + ldrh r0, [r7, #4] + bl ScriptParamToFixedPoint16 + mov r0, r0, lsl #3 + str r0, [r4] + tst r5, #2 + ldrne r0, [r4] + addne r0, r0, #0x400 + strne r0, [r4] +_022E4958: + tst r6, #4 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldrh r0, [r7, #6] + bl ScriptParamToFixedPoint16 + mov r0, r0, lsl #3 + str r0, [r4, #4] + tst r6, #2 + ldrne r0, [r4, #4] + addne r0, r0, #0x400 + strne r0, [r4, #4] + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov11_022E490C + + arm_func_start ov11_022E4984 +ov11_022E4984: ; 0x022E4984 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + ldrh r0, [sl] + mov sb, r1 + mov r8, r2 + mov r7, r3 + bl ScriptParamToInt + mov r5, r0 + ldrh r0, [sl, #2] + bl ScriptParamToInt + mov r6, r0 + ldrh r0, [sl, #8] + bl ScriptParamToFixedPoint16 + mov r4, r0 + ldrh r0, [sl, #0xa] + bl ScriptParamToFixedPoint16 + mov fp, r0 + tst r5, #4 + bne _022E49F4 + ldrh r0, [sl, #4] + bl ScriptParamToFixedPoint16 + mov r0, r0, lsl #3 + str r0, [sb] + tst r5, #2 + ldrne r0, [sb] + addne r0, r0, #0x400 + strne r0, [sb] + b _022E49FC +_022E49F4: + ldr r0, [r7] + str r0, [sb] +_022E49FC: + ldr r0, [sb] + tst r6, #4 + add r0, r0, r4, lsl #3 + str r0, [r8] + bne _022E4A34 + ldrh r0, [sl, #6] + bl ScriptParamToFixedPoint16 + mov r0, r0, lsl #3 + str r0, [sb, #4] + tst r6, #2 + ldrne r0, [sb, #4] + addne r0, r0, #0x400 + strne r0, [sb, #4] + b _022E4A3C +_022E4A34: + ldr r0, [r7, #4] + str r0, [sb, #4] +_022E4A3C: + ldr r0, [sb, #4] + add r0, r0, fp, lsl #3 + str r0, [r8, #4] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + arm_func_end ov11_022E4984 + + arm_func_start ov11_022E4A4C +ov11_022E4A4C: ; 0x022E4A4C + stmdb sp!, {r3, lr} + bl GetLanguage + ldr r1, _022E4AF8 ; =ov11_02324F74 + ldr r2, _022E4AFC ; =ov11_02324C6C + strb r0, [r1, #1] + mov r0, #0x1000 + mov r1, #6 + str r0, [r2, #0x2c] + bl MemAlloc + ldr r2, _022E4AFC ; =ov11_02324C6C + mov r1, #6 + str r0, [r2, #0x28] + mov r0, #0x1000 + str r0, [r2, #0x24] + bl MemAlloc + ldr r2, _022E4AFC ; =ov11_02324C6C + mov r1, #6 + str r0, [r2, #0x20] + mov r0, #0x1000 + str r0, [r2, #4] + bl MemAlloc + ldr r2, _022E4AFC ; =ov11_02324C6C + mov r1, #6 + str r0, [r2] + mov r0, #0x2000 + str r0, [r2, #0xc] + bl MemAlloc + ldr r2, _022E4AFC ; =ov11_02324C6C + mov r1, #6 + str r0, [r2, #8] + mov r0, #0x2000 + str r0, [r2, #0x14] + bl MemAlloc + ldr r2, _022E4AFC ; =ov11_02324C6C + mov r1, #6 + str r0, [r2, #0x10] + mov r0, #0x8000 + str r0, [r2, #0x1c] + bl MemAlloc + ldr r1, _022E4AFC ; =ov11_02324C6C + str r0, [r1, #0x18] + bl ov11_022E4B88 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E4AF8: .word ov11_02324F74 +_022E4AFC: .word ov11_02324C6C + arm_func_end ov11_022E4A4C + + arm_func_start ov11_022E4B00 +ov11_022E4B00: ; 0x022E4B00 + stmdb sp!, {r3, lr} + ldr r0, _022E4B84 ; =ov11_02324C6C + ldr r0, [r0, #0x28] + bl MemFree + ldr r0, _022E4B84 ; =ov11_02324C6C + mov r1, #0 + str r1, [r0, #0x28] + ldr r0, [r0, #0x20] + bl MemFree + ldr r0, _022E4B84 ; =ov11_02324C6C + mov r1, #0 + str r1, [r0, #0x20] + ldr r0, [r0] + bl MemFree + ldr r0, _022E4B84 ; =ov11_02324C6C + mov r1, #0 + str r1, [r0] + ldr r0, [r0, #8] + bl MemFree + ldr r0, _022E4B84 ; =ov11_02324C6C + mov r1, #0 + str r1, [r0, #8] + ldr r0, [r0, #0x10] + bl MemFree + ldr r0, _022E4B84 ; =ov11_02324C6C + mov r1, #0 + str r1, [r0, #0x10] + ldr r0, [r0, #0x18] + bl MemFree + ldr r0, _022E4B84 ; =ov11_02324C6C + mov r1, #0 + str r1, [r0, #0x18] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E4B84: .word ov11_02324C6C + arm_func_end ov11_022E4B00 + + arm_func_start ov11_022E4B88 +ov11_022E4B88: ; 0x022E4B88 + stmdb sp!, {r3, lr} + ldr r1, _022E4BC8 ; =ov11_02324F74 + mvn r2, #0 + strh r2, [r1, #6] + strh r2, [r1, #0xa] + strh r2, [r1, #8] + strh r2, [r1, #2] + strh r2, [r1, #4] + mov r0, #0 + strb r0, [r1] + ldr r0, _022E4BCC ; =ov11_02324F82 + strh r2, [r1, #0xc] + bl ov11_022E45F4 + ldr r0, _022E4BD0 ; =ov11_02324F8A + bl ov11_022E45F4 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E4BC8: .word ov11_02324F74 +_022E4BCC: .word ov11_02324F82 +_022E4BD0: .word ov11_02324F8A + arm_func_end ov11_022E4B88 + + arm_func_start StationLoadHanger +StationLoadHanger: ; 0x022E4BD4 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x8c + mov r5, r0 + mov r4, r1 + cmp r5, #2 + bne _022E4C1C + add r1, sp, #0 + mov r0, r2 + bl ov11_022E469C + mov r0, r4 + bl sub_02064FFC + mov r2, r0 + ldr r1, _022E4CB8 ; =ov11_023196B0 + add r0, sp, #9 + add r3, sp, #0 + bl sprintf + ldr r4, _022E4CBC ; =ov11_02324C8C + b _022E4C84 +_022E4C1C: + cmp r5, #3 + bne _022E4C54 + add r1, sp, #0 + mov r0, r2 + bl ov11_022E469C + mov r0, r4 + bl sub_02064FFC + mov r2, r0 + ldr r1, _022E4CC0 ; =ov11_023196C4 + add r0, sp, #9 + add r3, sp, #0 + bl sprintf + ldr r4, _022E4CC4 ; =ov11_02324C6C + b _022E4C84 +_022E4C54: + mov r0, r4 + bl sub_02064FFC + mov r2, r0 + ldr r1, _022E4CC8 ; =ov11_023196D8 + add r0, sp, #9 + bl sprintf + add r0, sp, #9 + bl sub_02008BA8 + cmp r0, #0 + movle r0, #0 + ble _022E4CB0 + ldr r4, _022E4CCC ; =ov11_02324C94 +_022E4C84: + ldr r1, _022E4CD0 ; =ov11_023196EC + add r3, sp, #9 + mov r2, r5 + mov r0, #2 + bl Debug_Print + ldmia r4, {r0, r1} + bl MemZero + add r1, sp, #9 + mov r0, r4 + bl sub_02008C18 + mov r0, #1 +_022E4CB0: + add sp, sp, #0x8c + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022E4CB8: .word ov11_023196B0 +_022E4CBC: .word ov11_02324C8C +_022E4CC0: .word ov11_023196C4 +_022E4CC4: .word ov11_02324C6C +_022E4CC8: .word ov11_023196D8 +_022E4CCC: .word ov11_02324C94 +_022E4CD0: .word ov11_023196EC + arm_func_end StationLoadHanger + + arm_func_start ov11_022E4CD4 +ov11_022E4CD4: ; 0x022E4CD4 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x44 + mov sb, r1 + mov sl, r0 + mov r8, r2 + ldr r1, _022E4FC4 ; =ov11_02319714 + mov r2, sl + mov r3, sb + mov r0, #2 + bl Debug_Print + cmp sl, #2 + ldreq r0, _022E4FC8 ; =ov11_02324C6C + ldreq r4, [r0, #0x20] + beq _022E4D20 + cmp sl, #3 + ldreq r0, _022E4FC8 ; =ov11_02324C6C + ldreq r4, [r0] + ldrne r0, _022E4FC8 ; =ov11_02324C6C + ldrne r4, [r0, #0x28] +_022E4D20: + ldrh r1, [r4, #2] + mov r0, #0xa + mvn fp, #0 + mla r0, sb, r0, r1 + add r5, r4, r0, lsl #1 + mov r0, r0, lsl #1 + ldrh r0, [r4, r0] + ldrh r1, [r5, #2] + mov r7, #0 + str r0, [sp, #8] + add r0, fp, #0x10000 + add r6, r4, r1, lsl #1 + str r0, [sp, #0x10] + b _022E4DC0 +_022E4D58: + ldrh r0, [r6] + mov r2, sl + mov r3, sb + strh r0, [sp, #0x38] + ldrh r0, [r6, #2] + sub r0, r0, #1 + strb r0, [sp, #0x3a] + ldrh r0, [r6, #4] + strb r0, [sp, #0x3b] + ldrh r0, [r6, #6] + strb r0, [sp, #0x3c] + ldrh r0, [r6, #8] + strb r0, [sp, #0x3d] + ldrh r0, [r6, #0xa] + strb r0, [sp, #0x3e] + ldrh r1, [r6, #0xc] + ldr r0, [sp, #0x10] + cmp r1, r0 + streqh fp, [sp, #0x40] + strneh r1, [sp, #0x40] + mov r0, fp + add r1, sp, #0x38 + str r8, [sp] + bl ov11_022F7E78 + add r7, r7, #1 + add r6, r6, #0x10 +_022E4DC0: + ldr r0, [sp, #8] + cmp r7, r0 + blt _022E4D58 + ldrh r0, [r5, #4] + ldrh r1, [r5, #6] + mvn fp, #0 + str r0, [sp, #4] + add r0, fp, #0x10000 + mov r7, #0 + add r6, r4, r1, lsl #1 + str r0, [sp, #0x14] + b _022E4E68 +_022E4DF0: + ldrh r0, [r6] + mov r2, sl + mov r3, sb + strh r0, [sp, #0x2c] + ldrh r0, [r6, #2] + sub r0, r0, #1 + strb r0, [sp, #0x2e] + ldrh r0, [r6, #4] + strb r0, [sp, #0x2f] + ldrh r0, [r6, #6] + strb r0, [sp, #0x30] + ldrh r0, [r6, #8] + strb r0, [sp, #0x31] + ldrh r0, [r6, #0xa] + strb r0, [sp, #0x32] + ldrh r0, [r6, #0xc] + strb r0, [sp, #0x33] + ldrh r0, [r6, #0xe] + strb r0, [sp, #0x34] + ldrh r1, [r6, #0x10] + ldr r0, [sp, #0x14] + cmp r1, r0 + streqh fp, [sp, #0x36] + strneh r1, [sp, #0x36] + mov r0, fp + add r1, sp, #0x2c + str r8, [sp] + bl ov11_022FBEC4 + add r7, r7, #1 + add r6, r6, #0x14 +_022E4E68: + ldr r0, [sp, #4] + cmp r7, r0 + blt _022E4DF0 + ldrh r0, [r5, #0xa] + ldrh fp, [r5, #8] + mov r7, #0 + add r6, r4, r0, lsl #1 + mvn r0, #0 + str r0, [sp, #0xc] + b _022E4EF4 +_022E4E90: + ldrh r2, [r6] + ldr r0, [sp, #0xc] + add r1, sp, #0x22 + strh r2, [sp, #0x22] + ldrh ip, [r6, #2] + mov r2, sl + mov r3, sb + sub ip, ip, #1 + strb ip, [sp, #0x24] + ldrh ip, [r6, #4] + strb ip, [sp, #0x25] + ldrh ip, [r6, #6] + strb ip, [sp, #0x26] + ldrh ip, [r6, #8] + strb ip, [sp, #0x27] + ldrh ip, [r6, #0xa] + strb ip, [sp, #0x28] + ldrh ip, [r6, #0xc] + strb ip, [sp, #0x29] + ldrh ip, [r6, #0xe] + strb ip, [sp, #0x2a] + str r8, [sp] + bl ov11_022FD72C + add r7, r7, #1 + add r6, r6, #0x14 +_022E4EF4: + cmp r7, fp + blt _022E4E90 + sub r0, sl, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + bhi _022E4FB8 + ldrh r0, [r5, #0xe] + ldrh r7, [r5, #0xc] + mvn r5, #0 + mov r8, #0 + add r6, r4, r0, lsl #1 + add fp, r5, #0x8000 + b _022E4FB0 +_022E4F34: + ldrh r1, [r6, #0xc] + tst r1, #0x8000 + andne r0, r1, fp + strneh r0, [sp, #0x18] + strneh r5, [sp, #0x20] + bne _022E4F64 + mov r0, r1, lsl #1 + ldrsh r0, [r4, r0] + add r1, r4, r1, lsl #1 + strh r0, [sp, #0x18] + ldrsh r0, [r1, #6] + strh r0, [sp, #0x20] +_022E4F64: + ldrh r2, [r6] + mov r0, r5 + add r1, sp, #0x18 + strb r2, [sp, #0x1a] + ldrh ip, [r6, #2] + mov r2, sl + mov r3, sb + strb ip, [sp, #0x1b] + ldrh ip, [r6, #4] + strb ip, [sp, #0x1c] + ldrh ip, [r6, #6] + strb ip, [sp, #0x1d] + ldrh ip, [r6, #8] + strb ip, [sp, #0x1e] + ldrh ip, [r6, #0xa] + strb ip, [sp, #0x1f] + bl ov11_022FEA98 + add r8, r8, #1 + add r6, r6, #0x10 +_022E4FB0: + cmp r8, r7 + blt _022E4F34 +_022E4FB8: + mov r0, #1 + add sp, sp, #0x44 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E4FC4: .word ov11_02319714 +_022E4FC8: .word ov11_02324C6C + arm_func_end ov11_022E4CD4 + + arm_func_start ov11_022E4FCC +ov11_022E4FCC: ; 0x022E4FCC + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x90 + mov r5, r1 + mov r4, r2 + cmp r0, #3 + bne _022E5014 + add r1, sp, #4 + mov r0, r3 + bl ov11_022E469C + mov r0, r5 + bl sub_02064FFC + mov r2, r0 + ldr r1, _022E512C ; =ov11_02319730 + add r0, sp, #0xd + add r3, sp, #4 + bl sprintf + ldr r0, _022E5130 ; =ov11_02324C84 + b _022E511C +_022E5014: + cmp r0, #5 + bne _022E5050 + add r1, sp, #4 + mov r0, r3 + bl ov11_022E469C + mov r0, r5 + bl sub_02064FFC + mov r2, r0 + ldr r1, _022E5134 ; =ov11_02319744 + add r0, sp, #0xd + add r3, sp, #4 + str r4, [sp] + bl sprintf + ldr r0, _022E5130 ; =ov11_02324C84 + b _022E511C +_022E5050: + cmp r0, #4 + bne _022E507C + mov r0, r5 + bl sub_02064FFC + mov r2, r0 + ldr r1, _022E5138 ; =ov11_0231975C + add r0, sp, #0xd + mov r3, r4 + bl sprintf + ldr r0, _022E5130 ; =ov11_02324C84 + b _022E511C +_022E507C: + cmp r0, #6 + bne _022E50A8 + add r1, sp, #4 + mov r0, r3 + bl ov11_022E469C + ldr r1, _022E513C ; =ov11_02319774 + add r0, sp, #0xd + add r2, sp, #4 + bl sprintf + ldr r0, _022E5130 ; =ov11_02324C84 + b _022E511C +_022E50A8: + cmp r0, #2 + bne _022E50E8 + add r1, sp, #4 + mov r0, r3 + bl ov11_022E469C + mov r0, r5 + bl sub_02064FFC + mov r2, r0 + mov ip, #0 + ldr r1, _022E5134 ; =ov11_02319744 + add r0, sp, #0xd + add r3, sp, #4 + str ip, [sp] + bl sprintf + ldr r0, _022E5140 ; =ov11_02324C7C + b _022E511C +_022E50E8: + mov r0, r5 + bl sub_02064FFC + mov r2, r0 + ldr r1, _022E5138 ; =ov11_0231975C + add r0, sp, #0xd + mov r3, #0 + bl sprintf + add r0, sp, #0xd + bl sub_02008BA8 + cmp r0, #0 + movle r0, #0 + ble _022E5124 + ldr r0, _022E5144 ; =ov11_02324C74 +_022E511C: + add r1, sp, #0xd + bl SsbLoad1 +_022E5124: + add sp, sp, #0x90 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E512C: .word ov11_02319730 +_022E5130: .word ov11_02324C84 +_022E5134: .word ov11_02319744 +_022E5138: .word ov11_0231975C +_022E513C: .word ov11_02319774 +_022E5140: .word ov11_02324C7C +_022E5144: .word ov11_02324C74 + arm_func_end ov11_022E4FCC + + arm_func_start ov11_022E5148 +ov11_022E5148: ; 0x022E5148 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, _022E5180 ; =ov11_0231978C + mov r2, r4 + mov r0, #2 + bl Debug_Print + ldr r0, _022E5184 ; =ov11_02324F74 + ldrsh r0, [r0, #6] + cmp r0, r4 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + bl ov11_022DCB28 + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E5180: .word ov11_0231978C +_022E5184: .word ov11_02324F74 + arm_func_end ov11_022E5148 + + arm_func_start ov11_022E5188 +ov11_022E5188: ; 0x022E5188 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r5, r0 + mov r0, #2 + mov r4, r1 + bl Debug_GetLogFlag + cmp r0, #0 + beq _022E51C8 + add r1, sp, #0 + mov r0, r4 + bl ov11_022E466C + ldr r1, _022E524C ; =ov11_023197B4 + add r3, sp, #0 + mov r2, r5 + mov r0, #2 + bl Debug_Print +_022E51C8: + mov r0, r5 + bl ov11_022E5148 + cmp r0, #0 + movne r0, #1 + bne _022E5244 + ldr r0, _022E5250 ; =ov11_02324F74 + ldrsh r0, [r0, #2] + cmp r0, r5 + bne _022E5210 + cmp r5, #0 + movlt r0, #0 + blt _022E5244 + ldr r0, _022E5254 ; =ov11_02324F82 + mov r1, r4 + bl ov11_022E465C + cmp r0, #0 + movne r0, #0 + bne _022E5244 +_022E5210: + mov r0, #2 + sub r1, r0, #4 + bl ov11_022F85C0 + mov r0, #2 + sub r1, r0, #4 + bl ov11_022FC494 + mov r0, #2 + sub r1, r0, #4 + bl ov11_022FDC34 + mov r0, #2 + sub r1, r0, #4 + bl ov11_022FEC9C + mov r0, #1 +_022E5244: + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022E524C: .word ov11_023197B4 +_022E5250: .word ov11_02324F74 +_022E5254: .word ov11_02324F82 + arm_func_end ov11_022E5188 + + arm_func_start ov11_022E5258 +ov11_022E5258: ; 0x022E5258 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r5, r0 + mov r0, #2 + mov r4, r1 + bl Debug_GetLogFlag + cmp r0, #0 + beq _022E5298 + add r1, sp, #0 + mov r0, r4 + bl ov11_022E466C + ldr r1, _022E5308 ; =ov11_023197D8 + add r3, sp, #0 + mov r2, r5 + mov r0, #2 + bl Debug_Print +_022E5298: + ldr r0, _022E530C ; =ov11_02324F74 + ldrsh r0, [r0, #2] + cmp r0, r5 + bne _022E52CC + cmp r5, #0 + movlt r0, #0 + blt _022E5300 + ldr r0, _022E5310 ; =ov11_02324F82 + mov r1, r4 + bl ov11_022E465C + cmp r0, #0 + movne r0, #0 + bne _022E5300 +_022E52CC: + mov r0, #2 + sub r1, r0, #4 + bl ov11_022F85C0 + mov r0, #2 + sub r1, r0, #4 + bl ov11_022FC494 + mov r0, #2 + sub r1, r0, #4 + bl ov11_022FDC34 + mov r0, #2 + sub r1, r0, #4 + bl ov11_022FEC9C + mov r0, #1 +_022E5300: + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022E5308: .word ov11_023197D8 +_022E530C: .word ov11_02324F74 +_022E5310: .word ov11_02324F82 + arm_func_end ov11_022E5258 + + arm_func_start ov11_022E5314 +ov11_022E5314: ; 0x022E5314 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + mov r5, r0 + mov r0, #2 + mov r4, r1 + bl Debug_GetLogFlag + cmp r0, #0 + beq _022E5354 + add r1, sp, #0 + mov r0, r4 + bl ov11_022E466C + ldr r1, _022E53D8 ; =ov11_02319800 + add r3, sp, #0 + mov r2, r5 + mov r0, #2 + bl Debug_Print +_022E5354: + mov r0, r5 + bl ov11_022E5148 + cmp r0, #0 + movne r0, #1 + bne _022E53D0 + ldr r1, _022E53DC ; =ov11_02324F74 + mvn r0, #0 + ldrsh r2, [r1, #0xc] + cmp r2, r0 + ldreqsh r0, [r1, #4] + cmpeq r0, r5 + bne _022E53A8 + cmp r5, #0 + movlt r0, #0 + blt _022E53D0 + ldr r0, _022E53E0 ; =ov11_02324F8A + mov r1, r4 + bl ov11_022E465C + cmp r0, #0 + movne r0, #0 + bne _022E53D0 +_022E53A8: + mov r0, #3 + sub r1, r0, #5 + bl ov11_022F85C0 + mov r0, #3 + sub r1, r0, #5 + bl ov11_022FC494 + mov r0, #3 + sub r1, r0, #5 + bl ov11_022FDC34 + mov r0, #1 +_022E53D0: + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022E53D8: .word ov11_02319800 +_022E53DC: .word ov11_02324F74 +_022E53E0: .word ov11_02324F8A + arm_func_end ov11_022E5314 + + arm_func_start ScriptStationLoadTalk +ScriptStationLoadTalk: ; 0x022E53E4 + stmdb sp!, {r3, lr} + ldr r1, _022E5444 ; =ov11_02319828 + mov r2, r0 + mov r0, #2 + bl Debug_Print + ldr r1, _022E5448 ; =ov11_02324F74 + mvn r0, #0 + ldrsh r2, [r1, #0xc] + cmp r2, r0 + ldreqsh r1, [r1, #4] + cmpeq r1, r0 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + mov r0, #3 + sub r1, r0, #5 + bl ov11_022F85C0 + mov r0, #3 + sub r1, r0, #5 + bl ov11_022FC494 + mov r0, #3 + sub r1, r0, #5 + bl ov11_022FDC34 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E5444: .word ov11_02319828 +_022E5448: .word ov11_02324F74 + arm_func_end ScriptStationLoadTalk + + arm_func_start ov11_022E544C +ov11_022E544C: ; 0x022E544C + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + mov r4, r0 + ldr r1, _022E550C ; =ov11_0231984C + mov r2, r4 + mov r0, #2 + bl Debug_Print + ldr r1, _022E5510 ; =ov11_02324F74 + ldrsh r0, [r1, #6] + cmp r0, r4 + moveq r0, #0 + beq _022E5504 + mvn r2, #0 + strh r2, [r1, #8] + strh r2, [r1, #0xa] + strh r2, [r1, #2] + ldr r0, _022E5514 ; =ov11_02324F82 + strh r2, [r1, #4] + bl ov11_022E45F4 + ldr r0, _022E5518 ; =ov11_02324F8A + bl ov11_022E45F4 + cmp r4, #0 + ldrlt r0, _022E5510 ; =ov11_02324F74 + mvnlt r1, #0 + strlth r1, [r0, #6] + blt _022E5500 + ldr r0, _022E5510 ; =ov11_02324F74 + strh r4, [r0, #6] + bl ov11_022E5A68 + mov r1, r4 + mov r0, #1 + mov r2, #0 + bl StationLoadHanger + cmp r0, #0 + ldrne r0, _022E5510 ; =ov11_02324F74 + mov r3, #0 + strneh r4, [r0, #8] + mov r0, #1 + mov r1, r4 + sub r2, r0, #2 + str r3, [sp] + bl ov11_022E4FCC + cmp r0, #0 + ldrne r0, _022E5510 ; =ov11_02324F74 + strneh r4, [r0, #0xa] +_022E5500: + mov r0, #1 +_022E5504: + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_022E550C: .word ov11_0231984C +_022E5510: .word ov11_02324F74 +_022E5514: .word ov11_02324F82 +_022E5518: .word ov11_02324F8A + arm_func_end ov11_022E544C + + arm_func_start ov11_022E551C +ov11_022E551C: ; 0x022E551C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + mov r6, r0 + mov r0, #2 + mov r5, r1 + mov r4, r2 + bl Debug_GetLogFlag + cmp r0, #0 + beq _022E5564 + add r1, sp, #4 + mov r0, r5 + bl ov11_022E466C + ldr r1, _022E56AC ; =ov11_0231986C + add r3, sp, #4 + mov r2, r6 + mov r0, #2 + str r4, [sp] + bl Debug_Print +_022E5564: + ldr r0, _022E56B0 ; =ov11_02324F74 + ldrsh r0, [r0, #6] + cmp r0, r6 + beq _022E557C + mov r0, r6 + bl ov11_022E544C +_022E557C: + ldr r0, _022E56B0 ; =ov11_02324F74 + ldrsh r0, [r0, #2] + cmp r0, r6 + bne _022E55B0 + cmp r6, #0 + movlt r0, #0 + blt _022E56A4 + ldr r0, _022E56B4 ; =ov11_02324F82 + mov r1, r5 + bl ov11_022E465C + cmp r0, #0 + movne r0, #0 + bne _022E56A4 +_022E55B0: + mov r0, #2 + sub r1, r0, #4 + bl ov11_022F85C0 + mov r0, #2 + sub r1, r0, #4 + bl ov11_022FC494 + mov r0, #2 + sub r1, r0, #4 + bl ov11_022FDC34 + mov r0, #2 + sub r1, r0, #4 + bl ov11_022FEC9C + cmp r6, #0 + bge _022E5610 + ldr r1, _022E56B0 ; =ov11_02324F74 + mvn r2, #0 + ldr r0, _022E56B4 ; =ov11_02324F82 + strh r2, [r1, #2] + bl ov11_022E45F4 + ldr r0, _022E56B0 ; =ov11_02324F74 + mov r1, #0 + strb r1, [r0] + mov r0, #1 + b _022E56A4 +_022E5610: + mov r1, r6 + mov r2, r5 + mov r0, #2 + bl StationLoadHanger + cmp r0, #0 + beq _022E5684 + ldr r0, _022E56B0 ; =ov11_02324F74 + ldr r2, _022E56B4 ; =ov11_02324F82 + mov r3, r5 + strh r6, [r0, #2] + mov r1, #8 +_022E563C: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _022E563C + mov r0, #2 + mov r1, r6 + mov r3, r5 + sub r2, r0, #3 + str r4, [sp] + bl ov11_022E4FCC + cmp r0, #0 + ldrne r0, _022E56B0 ; =ov11_02324F74 + movne r1, #1 + ldreq r0, _022E56B0 ; =ov11_02324F74 + moveq r1, #0 + strb r1, [r0] + mov r0, #1 + b _022E56A4 +_022E5684: + ldr r1, _022E56B0 ; =ov11_02324F74 + mvn r2, #0 + ldr r0, _022E56B4 ; =ov11_02324F82 + strh r2, [r1, #2] + bl ov11_022E45F4 + ldr r1, _022E56B0 ; =ov11_02324F74 + mov r0, #0 + strb r0, [r1] +_022E56A4: + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E56AC: .word ov11_0231986C +_022E56B0: .word ov11_02324F74 +_022E56B4: .word ov11_02324F82 + arm_func_end ov11_022E551C + + arm_func_start ov11_022E56B8 +ov11_022E56B8: ; 0x022E56B8 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x98 + mov r5, r0 + mov r0, #2 + mov r4, r1 + mov r6, r2 + bl Debug_GetLogFlag + cmp r0, #0 + beq _022E5700 + add r1, sp, #0xd + mov r0, r4 + bl ov11_022E466C + ldr r1, _022E5838 ; =ov11_02319888 + add r3, sp, #0xd + mov r2, r5 + mov r0, #2 + str r6, [sp] + bl Debug_Print +_022E5700: + ldr r0, _022E583C ; =ov11_02324F74 + mvn r1, #0 + strh r1, [r0, #0xc] + ldrsh r0, [r0, #6] + cmp r0, r5 + beq _022E5720 + mov r0, r5 + bl ov11_022E544C +_022E5720: + ldr r0, _022E583C ; =ov11_02324F74 + ldrsh r0, [r0, #4] + cmp r0, r5 + bne _022E5754 + cmp r5, #0 + movlt r0, #0 + blt _022E5830 + ldr r0, _022E5840 ; =ov11_02324F8A + mov r1, r4 + bl ov11_022E465C + cmp r0, #0 + movne r0, #0 + bne _022E5830 +_022E5754: + mov r0, #3 + sub r1, r0, #5 + bl ov11_022F85C0 + mov r0, #3 + sub r1, r0, #5 + bl ov11_022FC494 + mov r0, #3 + sub r1, r0, #5 + bl ov11_022FDC34 + cmp r5, #0 + bge _022E579C + ldr r1, _022E583C ; =ov11_02324F74 + mvn r2, #0 + ldr r0, _022E5840 ; =ov11_02324F8A + strh r2, [r1, #4] + bl ov11_022E45F4 + mov r0, #1 + b _022E5830 +_022E579C: + mov r1, r5 + mov r2, r4 + mov r0, #3 + bl StationLoadHanger + cmp r0, #0 + beq _022E5818 + ldr r0, _022E583C ; =ov11_02324F74 + ldr r2, _022E5840 ; =ov11_02324F8A + mov r3, r4 + strh r5, [r0, #4] + mov r1, #8 +_022E57C8: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _022E57C8 + add r1, sp, #4 + mov r0, r4 + bl ov11_022E469C + mov r0, r5 + bl sub_02064FFC + mov r2, r0 + ldr r1, _022E5844 ; =ov11_02319730 + add r0, sp, #0x16 + add r3, sp, #4 + bl sprintf + ldr r0, _022E5848 ; =ov11_02324C84 + add r1, sp, #0x16 + bl SsbLoad1 + cmp r0, #0 + movne r0, #1 + bne _022E5830 +_022E5818: + ldr r1, _022E583C ; =ov11_02324F74 + mvn r2, #0 + ldr r0, _022E5840 ; =ov11_02324F8A + strh r2, [r1, #4] + bl ov11_022E45F4 + mov r0, #0 +_022E5830: + add sp, sp, #0x98 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E5838: .word ov11_02319888 +_022E583C: .word ov11_02324F74 +_022E5840: .word ov11_02324F8A +_022E5844: .word ov11_02319730 +_022E5848: .word ov11_02324C84 + arm_func_end ov11_022E56B8 + + arm_func_start ov11_022E584C +ov11_022E584C: ; 0x022E584C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + mov r4, r0 + mov r0, #2 + bl Debug_GetLogFlag + cmp r0, #0 + beq _022E5884 + add r1, sp, #4 + mov r0, r4 + bl ov11_022E466C + ldr r1, _022E5900 ; =ov11_023198AC + add r2, sp, #4 + mov r0, #2 + bl Debug_Print +_022E5884: + ldr r1, _022E5904 ; =ov11_02324F74 + mvn r2, #0 + ldr r0, _022E5908 ; =ov11_02324F8A + strh r2, [r1, #4] + bl ov11_022E45F4 + mov r2, #0 + ldr r0, _022E5904 ; =ov11_02324F74 + str r2, [sp] + ldrsh r1, [r0, #8] + mov r3, r4 + mov r0, #6 + bl ov11_022E4FCC + mov r4, r0 + mov r0, #3 + sub r1, r0, #5 + bl ov11_022F85C0 + mov r0, #3 + sub r1, r0, #5 + bl ov11_022FC494 + mov r0, #3 + sub r1, r0, #5 + bl ov11_022FDC34 + cmp r4, #0 + ldrne r0, _022E5904 ; =ov11_02324F74 + movne r1, #6 + ldreq r0, _022E5904 ; =ov11_02324F74 + mvneq r1, #0 + strh r1, [r0, #0xc] + mov r0, r4 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E5900: .word ov11_023198AC +_022E5904: .word ov11_02324F74 +_022E5908: .word ov11_02324F8A + arm_func_end ov11_022E584C + + arm_func_start ov11_022E590C +ov11_022E590C: ; 0x022E590C + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + mov r5, r1 + ldr r1, _022E59D8 ; =ov11_023198D0 + mov r2, r4 + mov r3, r5 + mov r0, #2 + bl Debug_Print + ldr r1, _022E59DC ; =ov11_02324F74 + mvn r2, #0 + ldr r0, _022E59E0 ; =ov11_02324F8A + strh r2, [r1, #4] + bl ov11_022E45F4 + cmp r4, #2 + bne _022E5970 + ldr r0, _022E59DC ; =ov11_02324F74 + mov r1, #0 + str r1, [sp] + ldrsh r1, [r0, #2] + mov r4, #5 + ldr r3, _022E59E4 ; =ov11_02324F82 + mov r0, r4 + mov r2, r5 + bl ov11_022E4FCC + b _022E5990 +_022E5970: + mov r3, #0 + ldr r0, _022E59DC ; =ov11_02324F74 + str r3, [sp] + ldrsh r1, [r0, #8] + mov r4, #4 + mov r0, r4 + mov r2, r5 + bl ov11_022E4FCC +_022E5990: + mov r5, r0 + mov r0, #3 + sub r1, r0, #5 + bl ov11_022F85C0 + mov r0, #3 + sub r1, r0, #5 + bl ov11_022FC494 + mov r0, #3 + sub r1, r0, #5 + bl ov11_022FDC34 + cmp r5, #0 + ldrne r0, _022E59DC ; =ov11_02324F74 + mvneq r1, #0 + strneh r4, [r0, #0xc] + ldreq r0, _022E59DC ; =ov11_02324F74 + streqh r1, [r0, #0xc] + mov r0, r5 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E59D8: .word ov11_023198D0 +_022E59DC: .word ov11_02324F74 +_022E59E0: .word ov11_02324F8A +_022E59E4: .word ov11_02324F82 + arm_func_end ov11_022E590C + + arm_func_start ov11_022E59E8 +ov11_022E59E8: ; 0x022E59E8 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r1, r4 + mov r0, #1 + bl ov11_022FEBFC + mov r1, r4 + mov r0, #1 + mov r2, #0 + bl ov11_022E4CD4 + ldmia sp!, {r4, pc} + arm_func_end ov11_022E59E8 + + arm_func_start ov11_022E5A10 +ov11_022E5A10: ; 0x022E5A10 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r1, r4 + mov r0, #2 + bl ov11_022FEBFC + mov r1, r4 + mov r0, #2 + mov r2, #0 + bl ov11_022E4CD4 + ldmia sp!, {r4, pc} + arm_func_end ov11_022E5A10 + + arm_func_start ov11_022E5A38 +ov11_022E5A38: ; 0x022E5A38 + ldr ip, _022E5A4C ; =ov11_022E4CD4 + mov r1, r0 + mov r0, #3 + mov r2, #0 + bx ip + .align 2, 0 +_022E5A4C: .word ov11_022E4CD4 + arm_func_end ov11_022E5A38 + + arm_func_start ov11_022E5A50 +ov11_022E5A50: ; 0x022E5A50 + ldr ip, _022E5A64 ; =ov11_022E4CD4 + mov r1, r0 + mov r0, #3 + mov r2, #1 + bx ip + .align 2, 0 +_022E5A64: .word ov11_022E4CD4 + arm_func_end ov11_022E5A50 + + arm_func_start ov11_022E5A68 +ov11_022E5A68: ; 0x022E5A68 + stmdb sp!, {r3, lr} + ldr r1, _022E5A94 ; =ov11_023198F0 + mov r0, #2 + bl Debug_Print + mov r0, #0 + bl ov11_022EAFF8 + bl ov11_022FEA28 + bl InitPartnerFollowDataAndLiveActorList + bl ov11_022FBE04 + bl ov11_022FD66C + ldmia sp!, {r3, pc} + .align 2, 0 +_022E5A94: .word ov11_023198F0 + arm_func_end ov11_022E5A68 + + arm_func_start ov11_022E5A98 +ov11_022E5A98: ; 0x022E5A98 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r1, r4 + mov r0, #1 + bl ov11_022F8408 + mov r1, r4 + mov r0, #1 + bl ov11_022FC2DC + mov r1, r4 + mov r0, #1 + bl ov11_022FDA7C + mov r1, r4 + mov r0, #1 + bl ov11_022FEBFC + ldmia sp!, {r4, pc} + arm_func_end ov11_022E5A98 + + arm_func_start ov11_022E5AD4 +ov11_022E5AD4: ; 0x022E5AD4 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r1, r4 + mov r0, #2 + bl ov11_022F8408 + mov r1, r4 + mov r0, #2 + bl ov11_022FC2DC + mov r1, r4 + mov r0, #2 + bl ov11_022FDA7C + mov r1, r4 + mov r0, #2 + bl ov11_022FEBFC + ldmia sp!, {r4, pc} + arm_func_end ov11_022E5AD4 + + arm_func_start ov11_022E5B10 +ov11_022E5B10: ; 0x022E5B10 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r1, r4 + mov r0, #3 + bl ov11_022F8408 + mov r1, r4 + mov r0, #3 + bl ov11_022FC2DC + mov r1, r4 + mov r0, #3 + bl ov11_022FDA7C + ldmia sp!, {r4, pc} + arm_func_end ov11_022E5B10 + + arm_func_start ov11_022E5B40 +ov11_022E5B40: ; 0x022E5B40 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r1, r5 + mov r0, #1 + bl ov11_022F8C18 + mov r4, r0 + mov r1, r5 + mov r0, #1 + bl ov11_022FC8C4 + orr r4, r4, r0 + mov r1, r5 + mov r0, #1 + bl ov11_022FDFD4 + orr r0, r4, r0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov11_022E5B40 + + arm_func_start ov11_022E5B7C +ov11_022E5B7C: ; 0x022E5B7C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r1, r5 + mov r0, #2 + bl ov11_022F8C18 + mov r4, r0 + mov r1, r5 + mov r0, #2 + bl ov11_022FC8C4 + orr r4, r4, r0 + mov r1, r5 + mov r0, #2 + bl ov11_022FDFD4 + orr r0, r4, r0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov11_022E5B7C + + arm_func_start ov11_022E5BB8 +ov11_022E5BB8: ; 0x022E5BB8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r1, r5 + mov r0, #3 + bl ov11_022F8C18 + mov r4, r0 + mov r1, r5 + mov r0, #3 + bl ov11_022FC8C4 + orr r4, r4, r0 + mov r1, r5 + mov r0, #3 + bl ov11_022FDFD4 + orr r0, r4, r0 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov11_022E5BB8 + + arm_func_start ov11_022E5BF4 +ov11_022E5BF4: ; 0x022E5BF4 + stmdb sp!, {r4, lr} + sub sp, sp, #0x20 + mov r1, #0 + str r1, [sp] + ldr r2, _022E5C80 ; =ov11_02324F74 + mov r1, #1 + ldrsh r3, [r2, #0xc] + mov r4, r0 + add r0, sp, #4 + sub r2, r1, #2 + bl ov11_022E5EFC + cmp r0, #0 + moveq r0, #0 + beq _022E5C78 + add r0, sp, #4 + strh r4, [sp, #0x1c] + bl ov11_022F7594 + ldr r1, _022E5C80 ; =ov11_02324F74 + mov r4, r0 + ldrsh r0, [r1, #0xc] + mvn r1, #1 + bl ov11_022F8C18 + ldr r1, _022E5C80 ; =ov11_02324F74 + orr r4, r4, r0 + ldrsh r0, [r1, #0xc] + mvn r1, #1 + bl ov11_022FC8C4 + ldr r1, _022E5C80 ; =ov11_02324F74 + orr r4, r4, r0 + ldrsh r0, [r1, #0xc] + mvn r1, #1 + bl ov11_022FDFD4 + orr r0, r4, r0 +_022E5C78: + add sp, sp, #0x20 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E5C80: .word ov11_02324F74 + arm_func_end ov11_022E5BF4 + + arm_func_start ov11_022E5C84 +ov11_022E5C84: ; 0x022E5C84 + stmdb sp!, {r4, lr} + sub sp, sp, #0x20 + mov r1, #0 + str r1, [sp] + ldr r0, _022E5D10 ; =ov11_02324F74 + mov r1, #1 + ldrsh r3, [r0, #0xc] + add r0, sp, #4 + sub r2, r1, #2 + bl ov11_022E5EFC + cmp r0, #0 + moveq r0, #0 + beq _022E5D08 + mov r1, #1 + add r0, sp, #4 + strh r1, [sp, #0x1c] + bl ov11_022F7594 + ldr r1, _022E5D10 ; =ov11_02324F74 + mov r4, r0 + ldrsh r0, [r1, #0xc] + mvn r1, #1 + bl ov11_022F8C18 + ldr r1, _022E5D10 ; =ov11_02324F74 + orr r4, r4, r0 + ldrsh r0, [r1, #0xc] + mvn r1, #1 + bl ov11_022FC8C4 + ldr r1, _022E5D10 ; =ov11_02324F74 + orr r4, r4, r0 + ldrsh r0, [r1, #0xc] + mvn r1, #1 + bl ov11_022FDFD4 + orr r0, r4, r0 +_022E5D08: + add sp, sp, #0x20 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E5D10: .word ov11_02324F74 + arm_func_end ov11_022E5C84 + + arm_func_start ov11_022E5D14 +ov11_022E5D14: ; 0x022E5D14 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r1, r4 + mov r0, #3 + bl ov11_022F8E70 + mov r1, r4 + mov r0, #3 + bl ov11_022FCA9C + mov r1, r4 + mov r0, #3 + bl ov11_022FE1AC + mov r0, #0 + mov r1, #0xa + bl ov11_022F881C + ldmia sp!, {r4, pc} + arm_func_end ov11_022E5D14 + + arm_func_start SsbLoad1 +SsbLoad1: ; 0x022E5D50 +#ifdef EUROPE +#define SSB_LOAD_1_STACK_OFFSET 8 +#else +#define SSB_LOAD_1_STACK_OFFSET 0 +#endif + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0x54 + SSB_LOAD_1_STACK_OFFSET + mov r5, r1 + mov r4, r0 + ldr r1, _022E5EF4 ; =ov11_02319908 + mov r2, r5 + mov r0, #2 + bl Debug_Print + bl FileRom_InitDataTransfer + add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET + bl FileRom_Veneer_FileInit + add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET + mov r1, r5 + bl FileRom_HandleOpen + add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET + add r1, sp, #0 +#ifdef EUROPE + mov r2, #0x12 +#else + mov r2, #0xc +#endif + bl FileRom_HandleRead + ldrh r3, [sp, #4] + ldrh r2, [sp, #6] + ldr r0, _022E5EF8 ; =ov11_02324F74 + add r1, sp, #0 + add r3, r3, r2 + ldrsb r2, [r0, #1] + ldr r0, [r4] + cmp r0, #0 + add r0, r2, #4 + mov r0, r0, lsl #1 + ldrh r0, [r1, r0] + add r0, r3, r0 + mov r0, r0, lsl #1 + bne _022E5DE0 + mov r1, #1 + str r0, [r4, #4] + bl MemAlloc + str r0, [r4] +_022E5DE0: + ldrh r2, [sp, #4] + ldr r1, [r4] + add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET + mov r2, r2, lsl #1 + bl FileRom_HandleRead + ldrh r0, [sp] + cmp r0, #0 + beq _022E5E24 + ldrh r1, [sp, #4] + ldrh r0, [sp, #2] + ldrh r2, [sp, #6] + ldr r3, [r4] + add r1, r1, r0 + add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET + add r1, r3, r1, lsl #1 + mov r2, r2, lsl #1 + bl FileRom_HandleRead +_022E5E24: + ldrh r0, [sp, #2] + cmp r0, #0 + beq _022E5EDC + ldrh r2, [sp, #4] + ldrh r1, [sp, #6] + ldr r0, _022E5EF8 ; =ov11_02324F74 + mov r3, #0 + add r1, r2, r1 +#ifdef EUROPE + add r2, r1, #9 +#else + add r2, r1, #6 +#endif + ldrsb ip, [r0, #1] + add r1, sp, #0 + b _022E5E64 +_022E5E54: + add r0, r1, r3, lsl #1 + ldrh r0, [r0, #8] + add r3, r3, #1 + add r2, r2, r0 +_022E5E64: + cmp r3, ip + blt _022E5E54 + mov r1, r2, lsl #1 + add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET + mov r2, #0 + bl FileRom_HandleSeek + ldrh r2, [sp, #2] + ldrh r1, [sp, #4] + ldr r3, [r4] + add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET + add r1, r3, r1, lsl #1 + mov r2, r2, lsl #1 + bl FileRom_HandleRead + ldr r0, _022E5EF8 ; =ov11_02324F74 + add r1, sp, #0 + ldrsb r0, [r0, #1] + ldrh ip, [sp, #2] + ldrh r2, [sp, #4] + add r0, r0, #4 + mov r0, r0, lsl #1 + ldrh r0, [r1, r0] + add r1, ip, r2 + ldrh r3, [sp, #6] + sub r2, r0, ip + ldr r4, [r4] + add r1, r3, r1 + add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET + add r1, r4, r1, lsl #1 + mov r2, r2, lsl #1 + bl FileRom_HandleRead +_022E5EDC: + add r0, sp, #0xc + SSB_LOAD_1_STACK_OFFSET + bl FileClose + bl FileRom_StopDataTransfer + mov r0, #1 + add sp, sp, #0x54 + SSB_LOAD_1_STACK_OFFSET + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_022E5EF4: .word ov11_02319908 +_022E5EF8: .word ov11_02324F74 + arm_func_end SsbLoad1 + + arm_func_start ov11_022E5EFC +ov11_022E5EFC: ; 0x022E5EFC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov r7, r3 + mov sl, r0 + cmp r7, #3 + ldreq r0, _022E608C ; =ov11_02324C6C + mov sb, r1 + mov r8, r2 + mov r6, #0 + ldreq r4, [r0, #0x18] + beq _022E5F90 + cmp r7, #5 + ldreq r0, _022E608C ; =ov11_02324C6C + ldreq r4, [r0, #0x18] + beq _022E5F90 + cmp r7, #4 + ldreq r0, _022E608C ; =ov11_02324C6C + ldreq r4, [r0, #0x18] + beq _022E5F90 + cmp r7, #6 + ldreq r0, _022E608C ; =ov11_02324C6C + ldreq r4, [r0, #0x18] + beq _022E5F90 + cmp r7, #2 + ldreq r0, _022E608C ; =ov11_02324C6C + ldreq r4, [r0, #0x10] + beq _022E5F90 + ldr r2, _022E6090 ; =ov11_02324F74 + sub r1, r6, #1 + ldrsh r2, [r2, #0xa] + cmp r2, r1 + bne _022E5F88 + bl ov11_022DC89C + mov r0, r6 + b _022E6084 +_022E5F88: + ldr r0, _022E608C ; =ov11_02324C6C + ldr r4, [r0, #8] +_022E5F90: + ldrh r0, [r4, #2] + cmp sb, #3 + add r5, r4, #4 + str r0, [sp] + bne _022E5FF4 + mov fp, #0 + b _022E5FE4 +_022E5FAC: + ldrh r0, [r5, #2] + cmp r0, sb + bne _022E5FDC + ldrh r1, [r5, #4] + add r0, sp, #4 + strh r1, [sp, #4] + bl sub_02065050 + ldrsh r0, [sp, #4] + cmp r0, r8 + ldreqh r0, [r5] + addeq r6, r4, r0, lsl #1 + beq _022E603C +_022E5FDC: + add r5, r5, #6 + add fp, fp, #1 +_022E5FE4: + ldr r0, [sp] + cmp fp, r0 + blt _022E5FAC + b _022E603C +_022E5FF4: + mov r1, #0 + b _022E6030 +_022E5FFC: + ldrh r0, [r5, #2] + cmp r0, sb + bne _022E6028 + cmp r8, #0 + blt _022E601C + ldrh r0, [r5, #4] + cmp r0, r8 + bne _022E6028 +_022E601C: + ldrh r0, [r5] + add r6, r4, r0, lsl #1 + b _022E603C +_022E6028: + add r5, r5, #6 + add r1, r1, #1 +_022E6030: + ldr r0, [sp] + cmp r1, r0 + blt _022E5FFC +_022E603C: + cmp r6, #0 + beq _022E6078 + stmia sl, {r4, r6} + ldrh r0, [r4] + ldrsb r1, [sp, #0x30] + add r0, r4, r0, lsl #1 + str r0, [sl, #8] + cmp r1, #0 + strh r7, [sl, #0x14] + movlt r1, #0 + strb r1, [sl, #0x16] + mvn r0, #0 + strh r0, [sl, #0x18] + mov r0, #1 + b _022E6084 +_022E6078: + mov r0, sl + bl ov11_022DC89C + mov r0, #0 +_022E6084: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E608C: .word ov11_02324C6C +_022E6090: .word ov11_02324F74 + arm_func_end ov11_022E5EFC + + arm_func_start ov11_022E6094 +ov11_022E6094: ; 0x022E6094 + ldr r0, _022E60A4 ; =ov11_02324C9C + mov r1, #1 + strb r1, [r0] + bx lr + .align 2, 0 +_022E60A4: .word ov11_02324C9C + arm_func_end ov11_022E6094 + + arm_func_start ov11_022E60A8 +ov11_022E60A8: ; 0x022E60A8 + ldr r0, _022E60B8 ; =ov11_02324C9C + mov r1, #1 + strb r1, [r0] + bx lr + .align 2, 0 +_022E60B8: .word ov11_02324C9C + arm_func_end ov11_022E60A8 + + arm_func_start ov11_022E60BC +ov11_022E60BC: ; 0x022E60BC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x144 + mov r5, r0 + mov r4, r1 + ldr r1, _022E68C4 ; =ov11_02319924 + mov r2, r5 + mov r0, #2 + bl Debug_Print + ldr r1, _022E68C8 ; =ov11_02324C9C + mov r0, #1 + strb r0, [r1] + cmp r5, #0x4c + addls pc, pc, r5, lsl #2 + b _022E68AC +_022E60F4: ; jump table + b _022E68AC ; case 0 + b _022E624C ; case 1 + b _022E6260 ; case 2 + b _022E6274 ; case 3 + b _022E6294 ; case 4 + b _022E68AC ; case 5 + b _022E68AC ; case 6 + b _022E68AC ; case 7 + b _022E68AC ; case 8 + b _022E68AC ; case 9 + b _022E68AC ; case 10 + b _022E6704 ; case 11 + b _022E62D4 ; case 12 + b _022E62FC ; case 13 + b _022E68AC ; case 14 + b _022E62E0 ; case 15 + b _022E6304 ; case 16 + b _022E68AC ; case 17 + b _022E62E8 ; case 18 + b _022E62F4 ; case 19 + b _022E6310 ; case 20 + b _022E6398 ; case 21 + b _022E68AC ; case 22 + b _022E63A0 ; case 23 + b _022E68AC ; case 24 + b _022E63A8 ; case 25 + b _022E68AC ; case 26 + b _022E63D0 ; case 27 + b _022E68AC ; case 28 + b _022E63B0 ; case 29 + b _022E63B8 ; case 30 + b _022E63C0 ; case 31 + b _022E63C8 ; case 32 + b _022E68AC ; case 33 + b _022E68AC ; case 34 + b _022E6440 ; case 35 + b _022E6510 ; case 36 + b _022E68AC ; case 37 + b _022E68AC ; case 38 + b _022E6518 ; case 39 + b _022E6524 ; case 40 + b _022E652C ; case 41 + b _022E6474 ; case 42 + b _022E6678 ; case 43 + b _022E68AC ; case 44 + b _022E68AC ; case 45 + b _022E68AC ; case 46 + b _022E68AC ; case 47 + b _022E6228 ; case 48 + b _022E6238 ; case 49 + b _022E68AC ; case 50 + b _022E68AC ; case 51 + b _022E6878 ; case 52 + b _022E6890 ; case 53 + b _022E6718 ; case 54 + b _022E6720 ; case 55 + b _022E6728 ; case 56 + b _022E63D8 ; case 57 + b _022E63EC ; case 58 + b _022E6400 ; case 59 + b _022E642C ; case 60 + b _022E6844 ; case 61 + b _022E686C ; case 62 + b _022E631C ; case 63 + b _022E6338 ; case 64 + b _022E6354 ; case 65 + b _022E6730 ; case 66 + b _022E638C ; case 67 + b _022E6384 ; case 68 + b _022E6378 ; case 69 + b _022E636C ; case 70 + b _022E6758 ; case 71 + b _022E68AC ; case 72 + b _022E67B8 ; case 73 + b _022E67D4 ; case 74 + b _022E67DC ; case 75 + b _022E67E4 ; case 76 +_022E6228: + mov r0, #0x11 + bl LoadOverlay + bl ov28_0238A140 + b _022E68AC +_022E6238: + mov r0, #0x11 + bl UnloadOverlay + mov r0, #0 + str r0, [r4] + b _022E68BC +_022E624C: + mov r0, #0 + mov r1, r0 + mov r2, r0 + bl SetupAndShowKeyboard + b _022E68AC +_022E6260: + mov r1, #0 + mov r2, r1 + mov r0, #3 + bl SetupAndShowKeyboard + b _022E68AC +_022E6274: + add r0, sp, #0xc0 + mov r1, #0xa + bl sub_02065BD8 + add r1, sp, #0xc0 + mov r0, #2 + mov r2, r1 + bl SetupAndShowKeyboard + b _022E68AC +_022E6294: + bl ov11_02310BDC +#ifdef JAPAN + mov r1, #0x400 +#endif + mov r4, #0 + ldr r3, _022E68CC ; =0x0000C402 + add r0, sp, #0x60 +#ifdef JAPAN + add r2, r1, #0xc5 +#else + mov r1, #0x400 + mov r2, #0x234 +#endif + str r4, [sp] + bl PreprocessStringFromId + add r0, sp, #0xa0 + add r1, sp, #0x60 +#ifdef JAPAN + bl sub_02025304_JP +#else + bl StrcpyName +#endif + add r1, sp, #0xa0 + mov r0, #1 + mov r2, r1 + bl SetupAndShowKeyboard + b _022E68AC +_022E62D4: + mov r0, #0 + bl LoadKangaskhanOverlay + b _022E68AC +_022E62E0: + bl LoadDuskullBankOverlay + b _022E68AC +_022E62E8: + mov r0, #0 + bl LoadKecleonShopOverlay + b _022E68AC +_022E62F4: + bl LoadKecleonShopOverlay + b _022E68AC +_022E62FC: + bl LoadKangaskhanOverlay + b _022E68AC +_022E6304: + mov r0, #0 + bl LoadChimechoAssemblyOverlay + b _022E68AC +_022E6310: + mov r0, #0 + bl LoadElectivireLinkShopOverlay + b _022E68AC +_022E631C: + add r1, sp, #0x5a + mov r0, #0 + bl sub_02065CD8 + add r0, sp, #0x5a + mov r1, #0 + bl ov11_02302CE0 + b _022E68AC +_022E6338: + add r1, sp, #0x54 + mov r0, #0 + bl sub_02065CD8 + add r0, sp, #0x54 + mov r1, #1 + bl ov11_02303208 + b _022E68AC +_022E6354: + add r0, sp, #0x100 + bl ov11_022E8090 + add r0, sp, #0x100 + mov r1, #1 + bl ov11_023025E8 + b _022E68AC +_022E636C: + mov r0, #3 + bl ov11_023039AC + b _022E68AC +_022E6378: + mov r0, #2 + bl ov11_023039AC + b _022E68AC +_022E6384: + bl ov11_023039AC + b _022E68AC +_022E638C: + mov r0, #0 + bl ov11_023039AC + b _022E68AC +_022E6398: + bl LoadLuminousSpringOverlay + b _022E68AC +_022E63A0: + bl LoadCroagunkSwapShopOverlay + b _022E68AC +_022E63A8: + bl LoadXatuAppraisalOverlay + b _022E68AC +_022E63B0: + bl LoadSpindaCafeOverlayInit + b _022E68AC +_022E63B8: + bl LoadSpindaCafeOverlayResume + b _022E68AC +_022E63C0: + bl LoadRecycleShopOverlayInit + b _022E68AC +_022E63C8: + bl LoadRecycleShopOverlayResume + b _022E68AC +_022E63D0: + bl LoadChanseyDaycareOverlay + b _022E68AC +_022E63D8: + mov r0, #0x12 + bl LoadOverlay + mov r0, #0 + str r0, [r4] + b _022E68BC +_022E63EC: + mov r0, #0x12 + bl UnloadOverlay + mov r0, #0 + str r0, [r4] + b _022E68BC +_022E6400: + mov r0, #0 + mov r1, #0x5c + bl LoadScriptVariableValue + cmp r0, #1 + bne _022E6420 + mov r0, #1 + bl ov11_0230CB88 + b _022E68AC +_022E6420: + mov r0, #0 + bl ov11_0230CB88 + b _022E68AC +_022E642C: + mov r0, #0x12 + bl LoadOverlay + mov r0, #2 + bl ov11_0230CB88 + b _022E68AC +_022E6440: + mov r0, #2 + mov r1, #0 + bl GetSosMailCount + cmp r0, #0 + ble _022E645C + bl ov11_023043A8 + b _022E68AC +_022E645C: + ldr r0, _022E68D0 ; =ov11_02324F94 + mov r1, #2 + str r1, [r0] + str r1, [r4] + mov r0, #0 + b _022E68BC +_022E6474: + add r0, sp, #0x12 + bl MissionRewardValidateDungeonId + cmp r0, #0 + beq _022E6504 + add r1, sp, #0x50 + add r2, sp, #0x4c + mov r0, #2 + bl LoadScriptVarValuePair + ldr r0, [sp, #0x4c] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + mov r1, r0 + ldrb r2, [sp, #0x12] + add r0, sp, #0x44 + bl WasMissionCompletedToday + cmp r0, #0 + beq _022E6504 + ldrsh r0, [sp, #0x48] + cmp r0, #0 + ldrsh r0, [sp, #0x46] + movne r1, #2 + moveq r1, #0 + cmp r0, #0 + movne r2, #1 + moveq r2, #0 + ldr r0, _022E68D0 ; =ov11_02324F94 + adds r1, r2, r1 + str r1, [r0] + moveq r1, #3 + streq r1, [r0] + ldr r1, _022E68D0 ; =ov11_02324F94 + mov r0, #0 + ldr r1, [r1] + str r1, [r4] + b _022E68BC +_022E6504: + mov r0, #0 + str r0, [r4] + b _022E68BC +_022E6510: + bl ov11_02304514 + b _022E68AC +_022E6518: + mov r0, #0 + bl ov11_02304664 + b _022E68AC +_022E6524: + bl ov11_02304664 + b _022E68AC +_022E652C: + add r0, sp, #0x11 + bl MissionRewardValidateDungeonId + cmp r0, #0 + beq _022E6644 + add r1, sp, #0x40 + add r2, sp, #0x3c + mov r0, #2 + bl LoadScriptVarValuePair + ldrb r1, [sp, #0x11] + ldr r2, [sp, #0x3c] + ldr r0, _022E68D4 ; =ov11_0231993C + bl Debug_Print0 + mov r8, #0 + ldr r0, [sp, #0x3c] + add sb, sp, #0x34 + mov r7, #0x68 + mov r6, r8 + mov r5, #0x69 + ldr fp, _022E68D8 ; =ov11_02319960 + b _022E663C +_022E657C: + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + mov sl, r0 + ldrb r2, [sp, #0x11] + mov r0, sb + mov r1, sl + bl WasMissionCompletedToday + mov r0, r8 + mov r1, r7 + ldrb r2, [sl, #1] + bl SaveScriptVariableValue + mov r0, r6 + mov r1, r5 + ldrb r2, [sl, #2] + bl SaveScriptVariableValue + ldrb r1, [sl] + mov r0, fp + str r1, [sp] + ldrb r1, [sp, #0x34] + str r1, [sp, #4] + ldrsh r1, [sp, #0x36] + str r1, [sp, #8] + ldrsh r1, [sp, #0x38] + str r1, [sp, #0xc] + ldr r1, [sp, #0x3c] + ldrb r2, [sl, #4] + ldrb r3, [sl, #1] + bl Debug_Print0 + ldrb r0, [sp, #0x34] + cmp r0, #0 + beq _022E6630 + ldr r1, [sp, #0x40] + ldr r2, [sp, #0x3c] + mov r0, #2 + bl SetScenarioProgressScriptVar + ldrsh r0, [sp, #0x36] + ldrsh r1, [sp, #0x38] + bl SetRandomRequestNpcs1And2 + ldrb r2, [sl, #1] + ldr r1, _022E68D0 ; =ov11_02324F94 + mov r0, #0 + str r2, [r1] + str r2, [r4] + b _022E68BC +_022E6630: + ldr r0, [sp, #0x3c] + add r0, r0, #1 + str r0, [sp, #0x3c] +_022E663C: + cmp r0, #8 + blt _022E657C +_022E6644: + ldr r0, _022E68D0 ; =ov11_02324F94 + mvn r1, #0 + str r1, [r0] + ldr r0, _022E68DC ; =ov11_023199B4 + str r1, [r4] + bl Debug_Print0 + bl sub_0205F504 + mov r1, #0 + mov r2, r1 + mov r0, #2 + bl SetScenarioProgressScriptVar + mov r0, #0 + b _022E68BC +_022E6678: + add r0, sp, #0x10 + bl MissionRewardValidateDungeonId + cmp r0, #0 + beq _022E66F8 + add r1, sp, #0x30 + add r2, sp, #0x2c + mov r0, #2 + bl LoadScriptVarValuePair + ldr r0, [sp, #0x2c] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + mov r1, r0 + ldrb r2, [sp, #0x10] + add r0, sp, #0x24 + bl WasMissionCompletedToday + ldrsh r1, [sp, #0x28] + ldr r0, _022E68E0 ; =ov11_023199D4 + str r1, [sp] + ldrb r2, [sp, #0x24] + ldrsh r3, [sp, #0x26] + ldr r1, [sp, #0x2c] + bl Debug_Print0 + ldrb r0, [sp, #0x24] + cmp r0, #0 + beq _022E66F8 + bl LoadRecycleShopOverlay + ldr r0, _022E68C8 ; =ov11_02324C9C + mov r1, #0 + strb r1, [r0] + mov r0, #1 + b _022E68BC +_022E66F8: + mov r0, #0 + str r0, [r4] + b _022E68BC +_022E6704: + mov r0, #0 + strb r0, [r1] + bl ov11_022E6EE8 + mov r0, #1 + b _022E68BC +_022E6718: + bl LoadRuleDungeonEffectsOverlay + b _022E68AC +_022E6720: + bl ov11_0230CDF4 + b _022E68AC +_022E6728: + bl ov11_0230CE08 + b _022E68AC +_022E6730: + mov r0, #0 + bl sub_0204F244 + cmp r0, #0 + beq _022E6748 + bl ov11_0230CE1C + b _022E68AC +_022E6748: + mvn r0, #0 + str r0, [r4] + mov r0, #0 + b _022E68BC +_022E6758: + mov r0, #0x20 + bl LoadOverlay + bl GetExecuteSpecialEpisodeType + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _022E67AC +_022E6770: ; jump table + b _022E6784 ; case 0 + b _022E678C ; case 1 + b _022E6794 ; case 2 + b _022E679C ; case 3 + b _022E67A4 ; case 4 +_022E6784: + mov r0, #1 + b _022E67B0 +_022E678C: + mov r0, #2 + b _022E67B0 +_022E6794: + mov r0, #3 + b _022E67B0 +_022E679C: + mov r0, #4 + b _022E67B0 +_022E67A4: + mov r0, #5 + b _022E67B0 +_022E67AC: + mov r0, #0 +_022E67B0: + bl ov28_0238A468 + b _022E68AC +_022E67B8: + mov r0, #0x20 + bl UnloadOverlay + ldr r1, _022E68D0 ; =ov11_02324F94 + mov r0, #1 + ldr r1, [r1] + str r1, [r4] + b _022E68BC +_022E67D4: + bl LoadSpecialEpisodeDiscardOverlay1 + b _022E68AC +_022E67DC: + bl LoadSpecialEpisodeDiscardOverlay2 + b _022E68AC +_022E67E4: + bl GetRank + mov r5, r0 + mov r0, #0 + mov r1, #0x6e + bl LoadScriptVariableValue + and r1, r0, #0xff + mov r0, #0 + str r0, [r4] + cmp r5, r1 + bls _022E683C + cmp r5, #9 + blo _022E682C + cmp r1, #9 + movlo r5, #9 + addhs r0, r1, #1 + andhs r5, r0, #0xff + sub r0, r5, #8 + str r0, [r4] +_022E682C: + mov r2, r5 + mov r0, #0 + mov r1, #0x6e + bl SaveScriptVariableValue +_022E683C: + mov r0, #0 + b _022E68BC +_022E6844: + add r0, sp, #0x20 + bl sub_02049338 + ldr r0, [sp, #0x20] + cmp r0, #0 + beq _022E6860 + mov r0, #1 + bl ScriptSpecialProcess0x16 +_022E6860: + mov r0, #0 + str r0, [r4] + b _022E68BC +_022E686C: + mov r0, #0 + str r0, [r4] + b _022E68BC +_022E6878: + add r0, sp, #0x16 + bl sub_0206C0FC + ldrsh r1, [sp, #0x16] + mov r0, #0xa + bl ov11_022FF1D4 + b _022E68AC +_022E6890: + add r0, sp, #0x14 + bl sub_0206C120 + add r0, sp, #0x18 + bl sub_0206C144 + ldrsh r0, [sp, #0x14] + add r1, sp, #0x18 + bl ov11_022FF490 +_022E68AC: + ldr r0, _022E68C8 ; =ov11_02324C9C + mov r1, #0 + strb r1, [r0] + mov r0, #1 +_022E68BC: + add sp, sp, #0x144 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E68C4: .word ov11_02319924 +_022E68C8: .word ov11_02324C9C +_022E68CC: .word 0x0000C402 +_022E68D0: .word ov11_02324F94 +_022E68D4: .word ov11_0231993C +_022E68D8: .word ov11_02319960 +_022E68DC: .word ov11_023199B4 +_022E68E0: .word ov11_023199D4 + arm_func_end ov11_022E60BC + + arm_func_start ov11_022E68E4 +ov11_022E68E4: ; 0x022E68E4 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x20 + mov r6, r1 + cmp r0, #0x4b + addls pc, pc, r0, lsl #2 + b _022E6E54 +_022E68FC: ; jump table + b _022E6E54 ; case 0 + b _022E6A2C ; case 1 + b _022E6A2C ; case 2 + b _022E6A2C ; case 3 + b _022E6A2C ; case 4 + b _022E6E54 ; case 5 + b _022E6E54 ; case 6 + b _022E6E54 ; case 7 + b _022E6E54 ; case 8 + b _022E6E54 ; case 9 + b _022E6E54 ; case 10 + b _022E6A2C ; case 11 + b _022E6A2C ; case 12 + b _022E6A2C ; case 13 + b _022E6E54 ; case 14 + b _022E6A2C ; case 15 + b _022E6A2C ; case 16 + b _022E6A2C ; case 17 + b _022E6A2C ; case 18 + b _022E6A2C ; case 19 + b _022E6A2C ; case 20 + b _022E6A2C ; case 21 + b _022E6A2C ; case 22 + b _022E6A2C ; case 23 + b _022E6A2C ; case 24 + b _022E6A2C ; case 25 + b _022E6A2C ; case 26 + b _022E6A2C ; case 27 + b _022E6E54 ; case 28 + b _022E6A2C ; case 29 + b _022E6A2C ; case 30 + b _022E6A2C ; case 31 + b _022E6A2C ; case 32 + b _022E6A2C ; case 33 + b _022E6A2C ; case 34 + b _022E6AE0 ; case 35 + b _022E6A2C ; case 36 + b _022E6E54 ; case 37 + b _022E6E54 ; case 38 + b _022E6A9C ; case 39 + b _022E6A9C ; case 40 + b _022E6E54 ; case 41 + b _022E6E54 ; case 42 + b _022E6D0C ; case 43 + b _022E6E54 ; case 44 + b _022E6E54 ; case 45 + b _022E6E54 ; case 46 + b _022E6E54 ; case 47 + b _022E6A2C ; case 48 + b _022E6E54 ; case 49 + b _022E6A2C ; case 50 + b _022E6E54 ; case 51 + b _022E6DB0 ; case 52 + b _022E6DF8 ; case 53 + b _022E6A2C ; case 54 + b _022E6A2C ; case 55 + b _022E6E54 ; case 56 + b _022E6E54 ; case 57 + b _022E6E54 ; case 58 + b _022E6A2C ; case 59 + b _022E6A50 ; case 60 + b _022E6A7C ; case 61 + b _022E6A8C ; case 62 + b _022E6A2C ; case 63 + b _022E6A2C ; case 64 + b _022E6A2C ; case 65 + b _022E6A2C ; case 66 + b _022E6A2C ; case 67 + b _022E6A2C ; case 68 + b _022E6A2C ; case 69 + b _022E6A2C ; case 70 + b _022E6A2C ; case 71 + b _022E6A2C ; case 72 + b _022E6A2C ; case 73 + b _022E6A2C ; case 74 + b _022E6A2C ; case 75 +_022E6A2C: + ldr r0, _022E6E60 ; =ov11_02324C9C + ldrb r0, [r0] + cmp r0, #0 + beq _022E6E54 + ldr r1, _022E6E64 ; =ov11_02324F94 + mov r0, #1 + ldr r1, [r1] + str r1, [r6] + b _022E6E58 +_022E6A50: + ldr r0, _022E6E60 ; =ov11_02324C9C + ldrb r0, [r0] + cmp r0, #0 + beq _022E6E54 + mov r0, #0x12 + bl UnloadOverlay + ldr r1, _022E6E64 ; =ov11_02324F94 + mov r0, #1 + ldr r1, [r1] + str r1, [r6] + b _022E6E58 +_022E6A7C: + mov r0, #0 + str r0, [r6] + mov r0, #1 + b _022E6E58 +_022E6A8C: + mov r0, #0 + str r0, [r6] + mov r0, #1 + b _022E6E58 +_022E6A9C: + ldr r0, _022E6E60 ; =ov11_02324C9C + ldrb r0, [r0] + cmp r0, #0 + beq _022E6E54 + ldr r0, _022E6E64 ; =ov11_02324F94 + ldr r1, [r0] + str r1, [r6] + ldr r0, [r0] + cmp r0, #0 + beq _022E6AD8 + add r0, sp, #4 + bl sub_0206C0FC + ldrsh r0, [sp, #4] + mov r1, #0 + bl ov11_022F7188 +_022E6AD8: + mov r0, #1 + b _022E6E58 +_022E6AE0: + ldr r0, _022E6E60 ; =ov11_02324C9C + ldrb r0, [r0] + cmp r0, #0 + beq _022E6E54 + ldr r0, _022E6E64 ; =ov11_02324F94 + ldr r0, [r0] + cmp r0, #0 + blt _022E6CFC + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205B77C + ldr r1, _022E6E64 ; =ov11_02324F94 + mov r5, r0 + ldr r0, [r1] + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl DungeonSwapIdxToId + mov r1, r0, lsl #0x18 + add r0, sp, #0x18 + mov r1, r1, asr #0x18 + bl sub_0205BB7C + ldrb r0, [sp, #0x18] + ldrb r1, [sp, #0x19] + mov r2, #0 + bl sub_0204F488 + mov r4, r0 + tst r4, #4 + movne r0, #3 + strne r0, [r6] + bne _022E6D04 + tst r4, #0x10 + movne r0, #5 + strne r0, [r6] + bne _022E6D04 + tst r4, #8 + movne r0, #4 + strne r0, [r6] + bne _022E6D04 + ldrsb r0, [r5, #0xac] + cmp r0, #0 + movle r0, #6 + strle r0, [r6] + ble _022E6D04 + tst r4, #0x4000 + beq _022E6CC0 + ldr r0, _022E6E64 ; =ov11_02324F94 + ldr r0, [r0] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0204E974 + ldrb r1, [sp, #0x18] + cmp r1, #0x63 + bgt _022E6BEC + bge _022E6C48 + cmp r1, #0x29 + bgt _022E6BDC + cmp r1, #0x26 + blt _022E6D04 + beq _022E6C3C + cmp r1, #0x29 + moveq r0, #0x15 + streq r0, [r6] + b _022E6D04 +_022E6BDC: + cmp r1, #0x3f + moveq r0, #0x16 + streq r0, [r6] + b _022E6D04 +_022E6BEC: + cmp r1, #0x6e + bgt _022E6C2C + subs r0, r1, #0x64 + addpl pc, pc, r0, lsl #2 + b _022E6D04 +_022E6C00: ; jump table + b _022E6C54 ; case 0 + b _022E6C60 ; case 1 + b _022E6C6C ; case 2 + b _022E6C78 ; case 3 + b _022E6C84 ; case 4 + b _022E6D04 ; case 5 + b _022E6D04 ; case 6 + b _022E6C90 ; case 7 + b _022E6C9C ; case 8 + b _022E6CA8 ; case 9 + b _022E6CB4 ; case 10 +_022E6C2C: + cmp r1, #0xae + moveq r0, #0x21 + streq r0, [r6] + b _022E6D04 +_022E6C3C: + mov r0, #0x14 + str r0, [r6] + b _022E6D04 +_022E6C48: + mov r0, #0x17 + str r0, [r6] + b _022E6D04 +_022E6C54: + mov r0, #0x18 + str r0, [r6] + b _022E6D04 +_022E6C60: + mov r0, #0x19 + str r0, [r6] + b _022E6D04 +_022E6C6C: + mov r0, #0x1a + str r0, [r6] + b _022E6D04 +_022E6C78: + mov r0, #0x1b + str r0, [r6] + b _022E6D04 +_022E6C84: + mov r0, #0x1c + str r0, [r6] + b _022E6D04 +_022E6C90: + mov r0, #0x1d + str r0, [r6] + b _022E6D04 +_022E6C9C: + mov r0, #0x1e + str r0, [r6] + b _022E6D04 +_022E6CA8: + mov r0, #0x1f + str r0, [r6] + b _022E6D04 +_022E6CB4: + mov r0, #0x20 + str r0, [r6] + b _022E6D04 +_022E6CC0: + tst r4, #1 + movne r0, #0x12 + strne r0, [r6] + bne _022E6D04 + ldr r0, _022E6E64 ; =ov11_02324F94 + ldr r0, [r0] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0204E974 + cmp r4, #0 + moveq r0, #0 + streq r0, [r6] + movne r0, #0x13 + strne r0, [r6] + b _022E6D04 +_022E6CFC: + mov r0, #1 + str r0, [r6] +_022E6D04: + mov r0, #1 + b _022E6E58 +_022E6D0C: + ldr r0, _022E6E60 ; =ov11_02324C9C + ldrb r0, [r0] + cmp r0, #0 + beq _022E6E54 + ldr r0, _022E6E64 ; =ov11_02324F94 + ldr r0, [r0] + cmp r0, #0 + mov r0, #0 + blt _022E6D6C + mov r1, #0x33 + bl LoadScriptVariableValue + cmp r0, #0x64 + bge _022E6D50 + add r2, r0, #1 + mov r0, #0 + mov r1, #0x33 + bl SaveScriptVariableValue +_022E6D50: + mov r0, #0 + mov r1, #0x5c + mov r2, #1 + bl SaveScriptVariableValue + mov r0, #1 + str r0, [r6] + b _022E6D70 +_022E6D6C: + str r0, [r6] +_022E6D70: + add r1, sp, #0x14 + add r2, sp, #0x10 + mov r0, #2 + bl LoadScriptVarValuePair + ldr r0, [sp, #0x10] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl GetAcceptedMission + bl sub_0205F2B8 + ldr r0, [sp, #0x10] + ldr r1, [sp, #0x14] + add r2, r0, #1 + mov r0, #2 + bl SetScenarioProgressScriptVar + mov r0, #1 + b _022E6E58 +_022E6DB0: + add r0, sp, #2 + bl ov11_022FF460 + cmp r0, #0 + beq _022E6E54 + ldrsh r0, [sp, #2] + mvn r1, #0 + str r0, [r6] + cmp r0, r1 + beq _022E6DE8 + bl sub_0206C110 + bl sub_02048614 + ldrsh r0, [sp, #2] + mov r1, #0 + bl ov11_022F7188 +_022E6DE8: + ldr r1, _022E6E60 ; =ov11_02324C9C + mov r0, #1 + strb r0, [r1] + b _022E6E58 +_022E6DF8: + add r0, sp, #0 + add r1, sp, #6 + bl ov11_022FFA5C + cmp r0, #0 + beq _022E6E54 + ldrsh r0, [sp] + mvn r1, #0 + str r0, [r6] + cmp r0, r1 + beq _022E6E44 + bl sub_0206C134 + add r0, sp, #6 + bl sub_0206C164 + bl sub_02048614 + mov r2, #0 + ldrsh r0, [sp] + add r1, sp, #6 + mov r3, r2 + bl ov11_022F7354 +_022E6E44: + ldr r1, _022E6E60 ; =ov11_02324C9C + mov r0, #1 + strb r0, [r1] + b _022E6E58 +_022E6E54: + mov r0, #0 +_022E6E58: + add sp, sp, #0x20 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E6E60: .word ov11_02324C9C +_022E6E64: .word ov11_02324F94 + arm_func_end ov11_022E68E4 + + arm_func_start ReturnScriptMenuResultZero +ReturnScriptMenuResultZero: ; 0x022E6E68 + ldr r1, _022E6E84 ; =ov11_02324C9C + mov r3, #1 + ldr r0, _022E6E88 ; =ov11_02324F94 + mov r2, #0 + strb r3, [r1] + str r2, [r0] + bx lr + .align 2, 0 +_022E6E84: .word ov11_02324C9C +_022E6E88: .word ov11_02324F94 + arm_func_end ReturnScriptMenuResultZero + + arm_func_start ReturnScriptMenuResult +ReturnScriptMenuResult: ; 0x022E6E8C + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, _022E6EBC ; =ov11_02319A20 + mov r2, r4 + mov r0, #2 + bl Debug_Print + ldr r0, _022E6EC0 ; =ov11_02324F94 + ldr r1, _022E6EC4 ; =ov11_02324C9C + mov r2, #1 + strb r2, [r1] + str r4, [r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_022E6EBC: .word ov11_02319A20 +_022E6EC0: .word ov11_02324F94 +_022E6EC4: .word ov11_02324C9C + arm_func_end ReturnScriptMenuResult + + arm_func_start IsScriptMenuReturnDisabled +IsScriptMenuReturnDisabled: ; 0x022E6EC8 + ldr r0, _022E6EE4 ; =ov11_02324C9C + ldrb r0, [r0] + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_022E6EE4: .word ov11_02324C9C + arm_func_end IsScriptMenuReturnDisabled + + arm_func_start ov11_022E6EE8 +ov11_022E6EE8: ; 0x022E6EE8 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x98 + mov r5, r0 + bl GetGameMode + cmp r5, #0 + ldreq r5, _022E6FB4 ; =ov11_022E6FB8 + mov r4, r0 + mov r0, #0 + mov r1, #0x2c + mov r2, #5 + str r5, [sp, #0x84] + str r0, [sp, #0x88] + bl SaveScriptVariableValue + mov r0, #0 + mov r2, r0 + mov r1, #0x2b + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x1c + bl LoadScriptVariableValue + mov r2, r0 + mov r0, #0 + mov r1, #0x1e + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x1d + mov r2, r0 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x5c + bl ZeroInitScriptVariable + cmp r4, #4 + bne _022E6F80 + bl sub_020573A0 + mov r0, #0 + bl sub_0205730C + mov r0, #1 + bl sub_0205730C +_022E6F80: + cmp r4, #1 + beq _022E6FAC + cmp r4, #5 + add r2, sp, #0 + mov r1, #0x100 + bne _022E6FA4 + mov r0, #5 + bl sub_0204964C + b _022E6FAC +_022E6FA4: + mov r0, #6 + bl sub_0204964C +_022E6FAC: + add sp, sp, #0x98 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E6FB4: .word ov11_022E6FB8 + arm_func_end ov11_022E6EE8 + + arm_func_start ov11_022E6FB8 +ov11_022E6FB8: ; 0x022E6FB8 + ldr r0, _022E6FD0 ; =ov11_02324F94 + ldr r2, _022E6FD4 ; =ov11_02324C9C + mov r3, #1 + strb r3, [r2] + str r1, [r0] + bx lr + .align 2, 0 +_022E6FD0: .word ov11_02324F94 +_022E6FD4: .word ov11_02324C9C + arm_func_end ov11_022E6FB8 + + arm_func_start ov11_022E6FD8 +ov11_022E6FD8: ; 0x022E6FD8 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x144 + mov r4, r0 + cmp r1, #5 + addls pc, pc, r1, lsl #2 + b _022E70F0 +_022E6FF0: ; jump table + b _022E7008 ; case 0 + b _022E7014 ; case 1 + b _022E7020 ; case 2 + b _022E7054 ; case 3 + b _022E7088 ; case 4 + b _022E70BC ; case 5 +_022E7008: +#ifdef JAPAN + ldr r1, _022E872C ; =0x000004F2 +#else + mov r1, #0x258 +#endif + bl GetStringFromFileVeneer + b _022E70F8 +_022E7014: + ldr r1, _022E7100 ; =0x00000259 + bl GetStringFromFileVeneer + b _022E70F8 +_022E7020: + add r0, sp, #0xf4 + bl InitPreprocessorArgs + mov r0, #0xa9 + bl CountNbItemsOfTypeInBag + str r0, [sp, #0x118] + add ip, sp, #0xf4 + ldr r2, _022E7104 ; =0x0000025A + mov r0, r4 + mov r1, #0x40 + mov r3, #0x400 + str ip, [sp] + bl PreprocessStringFromId + b _022E70F8 +_022E7054: + add r0, sp, #0xa4 + bl InitPreprocessorArgs + mov r0, #0xaa + bl CountNbItemsOfTypeInBag + str r0, [sp, #0xc8] + add ip, sp, #0xa4 + ldr r2, _022E7108 ; =0x0000025B + mov r0, r4 + mov r1, #0x40 + mov r3, #0x400 + str ip, [sp] + bl PreprocessStringFromId + b _022E70F8 +_022E7088: + add r0, sp, #0x54 + bl InitPreprocessorArgs + mov r0, #0xab + bl CountNbItemsOfTypeInBag + str r0, [sp, #0x78] + add ip, sp, #0x54 +#ifdef JAPAN + ldr r2, _022E873C ; =0x000004F6 + mov r0, r4 + mov r1, #0x40 +#else + mov r0, r4 + mov r1, #0x40 + mov r2, #0x25c +#endif + mov r3, #0x400 + str ip, [sp] + bl PreprocessStringFromId + b _022E70F8 +_022E70BC: + add r0, sp, #4 + bl InitPreprocessorArgs + mov r0, #0xac + bl CountNbItemsOfTypeInBag + str r0, [sp, #0x28] + add ip, sp, #4 + ldr r2, _022E710C ; =0x0000025D + mov r0, r4 + mov r1, #0x40 + mov r3, #0x400 + str ip, [sp] + bl PreprocessStringFromId + b _022E70F8 +_022E70F0: + mov r0, #0 + strb r0, [r4] +_022E70F8: + add sp, sp, #0x144 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +#ifdef JAPAN +_022E872C: .word 0x000004F2 +_022E7100: .word 0x000004F3 +_022E7104: .word 0x000004F4 +_022E7108: .word 0x000004F5 +_022E873C: .word 0x000004F6 +_022E710C: .word 0x000004F7 +#else +_022E7100: .word 0x00000259 +_022E7104: .word 0x0000025A +_022E7108: .word 0x0000025B +_022E710C: .word 0x0000025D +#endif + arm_func_end ov11_022E6FD8 + + arm_func_start ov11_022E7110 +ov11_022E7110: ; 0x022E7110 + bx lr + arm_func_end ov11_022E7110 + + arm_func_start ov11_022E7114 +ov11_022E7114: ; 0x022E7114 + bx lr + arm_func_end ov11_022E7114 + + arm_func_start ScriptSpecialProcessCall +ScriptSpecialProcessCall: ; 0x022E7118 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1b8 + mov r5, r1 + mov r4, r0 + mov r7, r2 + ldr r1, _022E7AC8 ; =ov11_02319A48 + mov r2, r5 + mov r0, #2 + mov r6, r3 + bl Debug_Print + cmp r5, #0x3e + addls pc, pc, r5, lsl #2 + b _022E7ABC +_022E714C: ; jump table + b _022E7ABC ; case 0 + b _022E7248 ; case 1 + b _022E7254 ; case 2 + b _022E7260 ; case 3 + b _022E726C ; case 4 + b _022E7278 ; case 5 + b _022E7284 ; case 6 + b _022E72AC ; case 7 + b _022E72D8 ; case 8 + b _022E7314 ; case 9 + b _022E7364 ; case 10 + b _022E737C ; case 11 + b _022E73BC ; case 12 + b _022E73D8 ; case 13 + b _022E73E0 ; case 14 + b _022E73F8 ; case 15 + b _022E7400 ; case 16 + b _022E7408 ; case 17 + b _022E7410 ; case 18 + b _022E7548 ; case 19 + b _022E7534 ; case 20 + b _022E7548 ; case 21 + b _022E7518 ; case 22 + b _022E75D0 ; case 23 + b _022E75DC ; case 24 + b _022E75DC ; case 25 + b _022E75EC ; case 26 + b _022E75FC ; case 27 + b _022E760C ; case 28 + b _022E7630 ; case 29 + b _022E7660 ; case 30 + b _022E7680 ; case 31 + b _022E76C8 ; case 32 + b _022E76D8 ; case 33 + b _022E76F4 ; case 34 + b _022E7708 ; case 35 + b _022E7724 ; case 36 + b _022E7744 ; case 37 + b _022E776C ; case 38 + b _022E778C ; case 39 + b _022E77B4 ; case 40 + b _022E77FC ; case 41 + b _022E7850 ; case 42 + b _022E7870 ; case 43 + b _022E7898 ; case 44 + b _022E78AC ; case 45 + b _022E78C8 ; case 46 + b _022E78E4 ; case 47 + b _022E7938 ; case 48 + b _022E798C ; case 49 + b _022E79D0 ; case 50 + b _022E79E8 ; case 51 + b _022E79F4 ; case 52 + b _022E7A00 ; case 53 + b _022E7A08 ; case 54 + b _022E7A14 ; case 55 + b _022E7A48 ; case 56 + b _022E7A5C ; case 57 + b _022E7A70 ; case 58 + b _022E7A7C ; case 59 + b _022E7A88 ; case 60 + b _022E7A94 ; case 61 + b _022E7AA8 ; case 62 +_022E7248: + bl GroundMainReturnDungeon + mov r0, #0 + b _022E7AC0 +_022E7254: + bl InitMainTeamAfterQuiz + mov r0, #0 + b _022E7AC0 +_022E7260: + bl InitSpecialEpisodePartners + mov r0, #0 + b _022E7AC0 +_022E726C: + bl InitSpecialEpisodeExtraPartner + mov r0, #0 + b _022E7AC0 +_022E7278: + bl GroundMainNextDay + mov r0, #0 + b _022E7AC0 +_022E7284: + bl sub_0204E70C + cmp r0, #1 + bne _022E72A4 + bl sub_0204E770 + bl DungeonRequestsDoneWrapper + cmp r0, #0 + movgt r0, #1 + bgt _022E7AC0 +_022E72A4: + mov r0, #0 + b _022E7AC0 +_022E72AC: + add r0, sp, #7 + bl MissionRewardValidateDungeonId + cmp r0, #0 + beq _022E72D0 + ldrb r0, [sp, #7] + bl DungeonRequestsDoneWrapper + cmp r0, #0 + movgt r0, #1 + bgt _022E7AC0 +_022E72D0: + mov r0, #0 + b _022E7AC0 +_022E72D8: + add r0, sp, #6 + bl MissionRewardValidateDungeonId + cmp r0, #0 + beq _022E730C + ldrb r2, [sp, #6] + mov r3, #4 + add r1, sp, #5 + mov r0, #6 + strb r3, [sp, #5] + bl sub_0205F464 + cmp r0, #0 + movne r0, #1 + bne _022E7AC0 +_022E730C: + mov r0, #0 + b _022E7AC0 +_022E7314: + add r0, sp, #4 + bl MissionRewardValidateDungeonId + cmp r0, #0 + beq _022E735C + ldrb r2, [sp, #4] + mov r3, #4 + add r1, sp, #3 + mov r0, #6 + strb r3, [sp, #3] + bl sub_0205F464 + movs r1, r0 + beq _022E735C + ldrb r2, [sp, #4] + add r0, sp, #0x60 + bl WasMissionCompletedToday + cmp r0, #0 + movne r0, #1 + bne _022E7AC0 +_022E735C: + mov r0, #0 + b _022E7AC0 +_022E7364: + mov r0, #2 + mov r1, #0 + bl GetSosMailCount + cmp r0, #0 + movle r0, #0 + b _022E7AC0 +_022E737C: + add r0, sp, #2 + bl sub_0204F1B4 + cmp r0, #0 + beq _022E73B4 + ldrsb r0, [sp, #2] + bl sub_0205B77C + ldrsb r4, [r0, #0xac] + ldrsb r1, [sp, #2] + ldr r0, _022E7ACC ; =ov11_02319A68 + mov r2, r4 + bl Debug_Print0 + cmp r4, #0 + movgt r0, r4 + bgt _022E7AC0 +_022E73B4: + mov r0, #0 + b _022E7AC0 +_022E73BC: + mov r0, r7, lsl #0x10 + mov r1, r6, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, r1, asr #0x10 + bl InitRandomNpcJobs + mov r0, #0 + b _022E7AC0 +_022E73D8: + bl GetRandomNpcJobType + b _022E7AC0 +_022E73E0: + bl GetRandomNpcJobSubtype + and r1, r0, #0xff + strb r0, [sp] + mov r0, r1 + strb r1, [sp, #1] + b _022E7AC0 +_022E73F8: + bl GetRandomNpcJobStillAvailable + b _022E7AC0 +_022E7400: + bl AcceptRandomNpcJob + b _022E7AC0 +_022E7408: + mov r0, #0 + b _022E7AC0 +_022E7410: + add r1, sp, #0xc + mov r0, #0 + bl GetHeldButtons + add r1, sp, #0xa + mov r0, #0 + bl GetPressedButtons + ldrh r0, [sp, #0xa] + tst r0, #0xc + movne r0, #0 + bne _022E7AC0 + ldrh r0, [sp, #0xc] + bl ov11_022EAF70 + mvn r1, #0 + cmp r0, r1 + beq _022E7510 + add r1, sp, #0x58 + mov r2, #0x100 + bl sub_02005494 + ldrh r0, [sp, #0xc] + mov sb, #0 + add fp, sp, #0x48 + tst r0, #2 + ldr r0, _022E7AD0 ; =ov11_02319A38 + movne sl, #4 + ldr r8, [r0] + ldr r2, [r0, #4] + ldr r1, [r0, #8] + ldr r7, [r0, #0xc] + moveq sl, #2 + str r8, [sp, #0x18] + str r2, [sp, #0x1c] + str r1, [sp, #0x10] + str r7, [sp, #0x14] + add r5, sp, #0x50 + add r6, sp, #0x58 + b _022E7508 +_022E74A0: + ldr r1, [r4] + ldr r0, [r4, #4] + ldr r2, [r1, #0x44] + mov r1, r6 + blx r2 + cmp r0, #0 + beq _022E7504 + ldr r0, [sp, #0x5c] + str r8, [sp, #0x50] + str r0, [sp, #0x54] + ldr r1, [r4] + ldr r0, [r4, #4] + ldr r2, [r1, #0x44] + mov r1, r5 + blx r2 + cmp r0, #0 + beq _022E7504 + ldr r0, [sp, #0x58] + str r7, [sp, #0x4c] + str r0, [sp, #0x48] + ldr r1, [r4] + ldr r0, [r4, #4] + ldr r2, [r1, #0x44] + mov r1, fp + blx r2 +_022E7504: + add sb, sb, #1 +_022E7508: + cmp sb, sl + blt _022E74A0 +_022E7510: + mvn r0, #0 + b _022E7AC0 +_022E7518: + cmp r7, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bl ScriptSpecialProcess0x16 + mov r0, #0 + b _022E7AC0 +_022E7534: + bl KeyWaitInit + ldr r1, _022E7AD4 ; =ov11_02324CA0 + mov r0, #0 + str r7, [r1] + b _022E7AC0 +_022E7548: + add r1, sp, #8 + mov r0, #0 + bl GetPressedButtons + bl IsTouchScreenNotOff + cmp r0, #0 + add r0, sp, #0x68 + beq _022E756C + bl GetReleasedStylus + b _022E7570 +_022E756C: + bl sub_02006BFC +_022E7570: + ldrh r1, [sp, #8] + ldr r0, _022E7AD8 ; =0x00000F0F + tst r1, r0 + bne _022E7598 + add r0, sp, #0x68 + mov r1, #2 + mov r2, #0 + bl sub_02006C8C + cmp r0, #0 + beq _022E75A0 +_022E7598: + mov r0, #2 + b _022E7AC0 +_022E75A0: + ldr r0, _022E7AD4 ; =ov11_02324CA0 + ldr r1, [r0] + cmp r1, #0 + ble _022E75C0 + subs r1, r1, #1 + str r1, [r0] + moveq r0, #1 + beq _022E7AC0 +_022E75C0: + cmp r5, #0x13 + mvneq r0, #0 + movne r0, #0 + b _022E7AC0 +_022E75D0: + bl RandomizeDemoActors + mov r0, #0 + b _022E7AC0 +_022E75DC: + mov r0, r7 + bl JumpToTitleScreen + mov r0, #0 + b _022E7AC0 +_022E75EC: + mvn r0, #0 + bl JumpToTitleScreen + mov r0, #0 + b _022E7AC0 +_022E75FC: + mov r0, r7 + bl ReturnToTitleScreen + mov r0, #0 + b _022E7AC0 +_022E760C: + mov r0, r7, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetSpecialRecruitmentSpecies + mov r1, #0 + bl IsMonsterOnTeam + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + b _022E7AC0 +_022E7630: + mov r0, r7, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetSpecialRecruitmentSpecies + mov r1, #0 + bl GetRecruitMentryIdBySpecies + mvn r1, #0 + cmp r0, r1 + moveq r0, #0 + beq _022E7AC0 + bl GetTeamMember + ldrb r0, [r0, #1] + b _022E7AC0 +_022E7660: + mov r0, r7, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetSpecialRecruitmentSpecies + bl sub_02056EB8 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + b _022E7AC0 +_022E7680: + mov r0, r7, lsl #0x10 + mov r0, r0, asr #0x10 + bl PrepareMenuAcceptTeamMember + add r0, sp, #0x174 + bl ov11_022E8090 + add r0, sp, #0x100 + ldrsh r0, [r0, #0x78] + bl SetNewFriendActor + add r0, sp, #0x100 + add r0, r0, #0xae + mov r1, #0xa + bl sub_02065C08 + add r0, sp, #0x174 + bl sub_02055CCC + cmp r0, #0 + movge r0, #1 + movlt r0, #0 + b _022E7AC0 +_022E76C8: + mov r0, r7, lsl #0x10 + mov r0, r0, asr #0x10 + bl CountItemTypeInBag + b _022E7AC0 +_022E76D8: + mov r0, r7, lsl #0x10 + add r1, sp, #0x44 + mov r0, r0, asr #0x10 + bl ItemAtTableIdx + ldrsh r0, [sp, #0x44] + bl CountItemTypeInBag + b _022E7AC0 +_022E76F4: + add r0, sp, #0x40 + strh r7, [sp, #0x40] + strh r6, [sp, #0x42] + bl CountItemTypeInStorage + b _022E7AC0 +_022E7708: + mov r0, r7, lsl #0x10 + add r1, sp, #0x3c + mov r0, r0, asr #0x10 + bl ItemAtTableIdx + add r0, sp, #0x3c + bl CountItemTypeInStorage + b _022E7AC0 +_022E7724: + add r0, sp, #0x38 + strh r7, [sp, #0x38] + strh r6, [sp, #0x3a] + bl SpecialProcAddItemToBag + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + b _022E7AC0 +_022E7744: + mov r0, r7, lsl #0x10 + add r1, sp, #0x34 + mov r0, r0, asr #0x10 + bl ItemAtTableIdx + add r0, sp, #0x34 + bl SpecialProcAddItemToBag + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + b _022E7AC0 +_022E776C: + add r0, sp, #0x30 + strh r7, [sp, #0x30] + strh r6, [sp, #0x32] + bl AddBulkItemToStorage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + b _022E7AC0 +_022E778C: + mov r0, r7, lsl #0x10 + add r1, sp, #0x2c + mov r0, r0, asr #0x10 + bl ItemAtTableIdx + add r0, sp, #0x2c + bl AddBulkItemToStorage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + b _022E7AC0 +_022E77B4: + mov r0, r7, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetFirstUnequippedItemOfType + mov r4, r0 + mvn r1, #0 + cmp r4, r1 + beq _022E77F4 + bl GetItemAtIdx + ldrb r0, [r0, #1] + cmp r0, #0 + beq _022E77E4 + bl sub_020582E0 +_022E77E4: + mov r0, r4 + bl RemoveItemNoHole + mov r0, #1 + b _022E7AC0 +_022E77F4: + mov r0, #0 + b _022E7AC0 +_022E77FC: + mov r0, r7, lsl #0x10 + add r1, sp, #0x28 + mov r0, r0, asr #0x10 + bl ItemAtTableIdx + ldrsh r0, [sp, #0x28] + bl GetFirstUnequippedItemOfType + mov r4, r0 + mvn r1, #0 + cmp r4, r1 + beq _022E7848 + bl GetItemAtIdx + ldrb r0, [r0, #1] + cmp r0, #0 + beq _022E7838 + bl sub_020582E0 +_022E7838: + mov r0, r4 + bl RemoveItemNoHole + mov r0, #1 + b _022E7AC0 +_022E7848: + mov r0, #0 + b _022E7AC0 +_022E7850: + add r0, sp, #0x24 + strh r7, [sp, #0x24] + strh r6, [sp, #0x26] + bl RemoveBulkItemInStorage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + b _022E7AC0 +_022E7870: + mov r0, r7, lsl #0x10 + add r1, sp, #0x20 + mov r0, r0, asr #0x10 + bl ItemAtTableIdx + add r0, sp, #0x20 + bl RemoveBulkItemInStorage + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + b _022E7AC0 +_022E7898: + mov r0, r7, lsl #0x10 + mov r0, r0, asr #0x10 + bl PrepareMenuAcceptTeamMember + mov r0, #0 + b _022E7AC0 +_022E78AC: + bl GetHero + cmp r0, #0 + moveq r0, #0 + beq _022E7AC0 + ldrsh r0, [r0, #4] + bl ov11_022E8050 + b _022E7AC0 +_022E78C8: + bl GetPartner + cmp r0, #0 + moveq r0, #0 + beq _022E7AC0 + ldrsh r0, [r0, #4] + bl ov11_022E8050 + b _022E7AC0 +_022E78E4: + bl GetMainCharacter1MemberIdx + mvn r1, #0 + cmp r0, r1 + beq _022E7930 + bl sub_020564B0 + cmp r0, #0 + beq _022E7930 + bl GetMainCharacter2MemberIdx + mvn r1, #0 + cmp r0, r1 + beq _022E7930 + bl sub_02056410 + cmp r0, #0 + beq _022E7930 + mov r0, #0 + bl GetUnitNpcIds + cmp r0, #0 + moveq r0, #1 + beq _022E7AC0 +_022E7930: + mov r0, #0 + b _022E7AC0 +_022E7938: + bl GetMainCharacter2MemberIdx + mvn r1, #0 + cmp r0, r1 + beq _022E7984 + bl sub_020564B0 + cmp r0, #0 + beq _022E7984 + bl GetMainCharacter1MemberIdx + mvn r1, #0 + cmp r0, r1 + beq _022E7984 + bl sub_02056410 + cmp r0, #0 + beq _022E7984 + mov r0, #0 + bl GetUnitNpcIds + cmp r0, #0 + moveq r0, #1 + beq _022E7AC0 +_022E7984: + mov r0, #0 + b _022E7AC0 +_022E798C: + bl GetMainCharacter1MemberIdx + mvn r1, #0 + cmp r0, r1 + beq _022E79C8 + bl sub_02056410 + cmp r0, #0 + beq _022E79C8 + bl GetMainCharacter2MemberIdx + mvn r1, #0 + cmp r0, r1 + beq _022E79C8 + bl sub_02056410 + cmp r0, #0 + movne r0, #1 + bne _022E7AC0 +_022E79C8: + mov r0, #0 + b _022E7AC0 +_022E79D0: + mov r0, #0 + bl GetPartyMembers + cmp r0, #1 + moveq r0, #1 + movne r0, #0 + b _022E7AC0 +_022E79E8: + bl SetTeamSetupHeroAndPartnerOnly + mov r0, #0 + b _022E7AC0 +_022E79F4: + bl SetTeamSetupHeroOnly + mov r0, #0 + b _022E7AC0 +_022E7A00: + mov r0, #0 + b _022E7AC0 +_022E7A08: + bl StatusUpdate + mov r0, #0 + b _022E7AC0 +_022E7A14: + add r0, sp, #0x8c + bl sub_0204F244 + cmp r0, #0 + beq _022E7A40 + add r0, sp, #0x8c + cmp r7, #0 + strgeb r7, [sp, #0xe8] + cmp r6, #0 + mov r1, #1 + strgeb r6, [sp, #0xe9] + bl sub_0204F1F0 +_022E7A40: + mov r0, #0 + b _022E7AC0 +_022E7A48: + bl IsBagFull + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + b _022E7AC0 +_022E7A5C: + bl IsStorageFull + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + b _022E7AC0 +_022E7A70: + bl IncrementNbDungeonsCleared + mov r0, #0 + b _022E7AC0 +_022E7A7C: + bl IncrementNbBigTreasureWins + mov r0, #0 + b _022E7AC0 +_022E7A88: + bl IncrementNbSkyGiftsSent + mov r0, #0 + b _022E7AC0 +_022E7A94: + mov r0, r7, lsl #0x10 + mov r0, r0, asr #0x10 + bl SetActorTalkMain + mov r0, #0 + b _022E7AC0 +_022E7AA8: + mov r0, r7, lsl #0x10 + mov r0, r0, asr #0x10 + bl SetActorTalkSub + mov r0, #0 + b _022E7AC0 +_022E7ABC: + mov r0, #0 +_022E7AC0: + add sp, sp, #0x1b8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E7AC8: .word ov11_02319A48 +_022E7ACC: .word ov11_02319A68 +_022E7AD0: .word ov11_02319A38 +_022E7AD4: .word ov11_02324CA0 +_022E7AD8: .word 0x00000F0F + arm_func_end ScriptSpecialProcessCall + + arm_func_start ov11_022E7ADC +ov11_022E7ADC: ; 0x022E7ADC + bx lr + arm_func_end ov11_022E7ADC + + arm_func_start ov11_022E7AE0 +ov11_022E7AE0: ; 0x022E7AE0 + bx lr + arm_func_end ov11_022E7AE0 + + arm_func_start ov11_022E7AE4 +ov11_022E7AE4: ; 0x022E7AE4 + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mov r6, r2 + mov r5, r3 + cmp r1, #5 + addls pc, pc, r1, lsl #2 + ldmia sp!, {r4, r5, r6, pc} +_022E7B00: ; jump table + ldmia sp!, {r4, r5, r6, pc} ; case 0 + b _022E7B18 ; case 1 + b _022E7B38 ; case 2 + b _022E7B58 ; case 3 + b _022E7B64 ; case 4 + ldmia sp!, {r4, r5, r6, pc} ; case 5 +_022E7B18: + mov r1, #0 + mov r0, #0xd + strh r1, [r4, #0x46] + bl ov11_02314670 + mov r0, r6 + mov r1, r5 + bl ov11_023159CC + ldmia sp!, {r4, r5, r6, pc} +_022E7B38: + mov r0, #0xd + bl ov11_02314670 + mov r0, r6 + mov r1, r5 + bl ov11_023159CC + mov r0, #0 + strh r0, [r4, #0x46] + ldmia sp!, {r4, r5, r6, pc} +_022E7B58: + mov r0, #0 + strh r0, [r4, #0x46] + ldmia sp!, {r4, r5, r6, pc} +_022E7B64: + mov r0, #0 + strh r0, [r4, #0x46] + ldmia sp!, {r4, r5, r6, pc} + arm_func_end ov11_022E7AE4 + + arm_func_start ov11_022E7B70 +ov11_022E7B70: ; 0x022E7B70 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x1c + mov r8, r0 + mov r7, r1 + mov r6, r2 + cmp r3, #5 + addls pc, pc, r3, lsl #2 + b _022E7E74 +_022E7B90: ; jump table + b _022E7E74 ; case 0 + b _022E7BA8 ; case 1 + b _022E7C20 ; case 2 + b _022E7C98 ; case 3 + b _022E7D10 ; case 4 + b _022E7D88 ; case 5 +_022E7BA8: + ldrsh r0, [r8, #0x46] + cmp r0, #0 + bne _022E7BC0 + mov r2, #2 + ldmia r6, {r0, r1} + bl ov11_023159E8 +_022E7BC0: + ldrsh r0, [r8, #0x46] + add r0, r0, #1 + strh r0, [r8, #0x46] + bl ov11_0231474C + mov r0, #2 + bl ov11_0231598C + ldr r2, [r0, #4] + mov r1, #1 + mov r2, r2, lsr #0xc + mov r2, r2, lsl #8 + str r2, [r6] + ldr r0, [r0, #8] + mov r0, r0, lsr #0xc + mov r0, r0, lsl #8 + str r0, [r6, #4] + ldrsb r0, [r7] + bl sub_020051A0 + strb r0, [r7] + ldrsh r0, [r8, #0x46] + cmp r0, #0x200 + movlt r0, #1 + blt _022E7E78 + bl ov11_023146F8 + b _022E7E74 +_022E7C20: + ldrsh r0, [r8, #0x46] + cmp r0, #0 + bne _022E7C38 + mov r2, #0 + ldmia r6, {r0, r1} + bl ov11_023159E8 +_022E7C38: + ldrsh r0, [r8, #0x46] + add r0, r0, #1 + strh r0, [r8, #0x46] + bl ov11_0231474C + mov r0, #0 + bl ov11_0231598C + ldr r2, [r0, #4] + mov r1, #1 + mov r2, r2, lsr #0xc + mov r2, r2, lsl #8 + str r2, [r6] + ldr r0, [r0, #8] + mov r0, r0, lsr #0xc + mov r0, r0, lsl #8 + str r0, [r6, #4] + ldrsb r0, [r7] + bl sub_020051A0 + strb r0, [r7] + ldrsh r0, [r8, #0x46] + cmp r0, #0x140 + movlt r0, #1 + blt _022E7E78 + bl ov11_023146F8 + b _022E7E74 +_022E7C98: + ldrsh r0, [r8, #0x46] + cmp r0, #0 + bne _022E7CB0 + mov r2, #1 + ldmia r6, {r0, r1} + bl ov11_023159E8 +_022E7CB0: + ldrsh r1, [r8, #0x46] + mov r0, #1 + add r1, r1, #1 + strh r1, [r8, #0x46] + bl ov11_0231598C + cmp r0, #0 + beq _022E7CF0 + ldr r1, [r0, #4] + mov r1, r1, lsr #0xc + mov r1, r1, lsl #8 + str r1, [r6] + ldr r0, [r0, #8] + mov r0, r0, lsr #0xc + mov r0, r0, lsl #8 + str r0, [r6, #4] + b _022E7CF8 +_022E7CF0: + mov r0, #0 + b _022E7E78 +_022E7CF8: + ldrsb r0, [r7] + mov r1, #1 + bl sub_020051A0 + strb r0, [r7] + mov r0, #1 + b _022E7E78 +_022E7D10: + ldrsh r0, [r8, #0x46] + cmp r0, #0 + bne _022E7D28 + mov r2, #2 + ldmia r6, {r0, r1} + bl ov11_023159E8 +_022E7D28: + ldrsh r1, [r8, #0x46] + mov r0, #2 + add r1, r1, #1 + strh r1, [r8, #0x46] + bl ov11_0231598C + cmp r0, #0 + beq _022E7D68 + ldr r1, [r0, #4] + mov r1, r1, lsr #0xc + mov r1, r1, lsl #8 + str r1, [r6] + ldr r0, [r0, #8] + mov r0, r0, lsr #0xc + mov r0, r0, lsl #8 + str r0, [r6, #4] + b _022E7D70 +_022E7D68: + mov r0, #0 + b _022E7E78 +_022E7D70: + ldrsb r0, [r7] + mov r1, #1 + bl sub_020051A0 + strb r0, [r7] + mov r0, #1 + b _022E7E78 +_022E7D88: + ldrsh r0, [r8, #8] + cmp r0, #3 + bne _022E7E74 + mov r0, #0x2e + bl GetLiveActorIdxFromScriptEntityId + mov r4, r0 + mov r0, #0x2f + bl GetLiveActorIdxFromScriptEntityId + ldrsh r1, [r8, #0xa] + mvn r5, #0 + cmp r1, r0 + bne _022E7DDC + ldr r1, [r8] + ldr r0, [r8, #4] + ldr r2, [r1, #0x18] + add r1, sp, #0x18 + blx r2 + ldr r0, [sp, #0x18] + tst r0, #8 + movne r5, r4 + b _022E7DE4 +_022E7DDC: + cmp r1, r4 + moveq r5, r0 +_022E7DE4: + cmp r5, #0 + blt _022E7E74 + ldr r1, [r8] + ldr r0, [r8, #4] + ldr r2, [r1, #0xc] + mov r1, r6 + blx r2 + ldr r1, [r8] + ldr r0, [r8, #4] + ldr r2, [r1, #8] + add r1, sp, #8 + blx r2 + add r1, sp, #0x10 + mov r0, r5 + bl ov11_022F90F4 + mov r0, r5 + add r1, sp, #0 + bl ov11_022F90B4 + mov r0, r6 + add r1, sp, #8 + add r2, sp, #0x10 + add r3, sp, #0 + bl sub_020058A8 + mvn r1, #0 + cmp r0, r1 + bne _022E7E60 + ldr r1, _022E7E80 ; =ov11_02319A90 + add r2, sp, #0x10 + mov r0, r6 + mov r3, r1 + bl sub_020057A8 +_022E7E60: + mvn r1, #0 + cmp r0, r1 + ldrnesb r1, [r7] + cmpne r0, r1 + strneb r0, [r7] +_022E7E74: + mov r0, #0 +_022E7E78: + add sp, sp, #0x1c + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022E7E80: .word ov11_02319A90 + arm_func_end ov11_022E7B70 + + arm_func_start ov11_022E7E84 +ov11_022E7E84: ; 0x022E7E84 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r1, _022E7F24 ; =ov11_02319A98 + mov r2, r4 + mov r0, #2 + bl Debug_Print + add r0, r4, #1 + cmp r0, #9 + addls pc, pc, r0, lsl #2 + ldmia sp!, {r4, pc} +_022E7EAC: ; jump table + b _022E7ED4 ; case 0 + b _022E7EDC ; case 1 + b _022E7EE4 ; case 2 + b _022E7EEC ; case 3 + b _022E7EF4 ; case 4 + b _022E7EFC ; case 5 + b _022E7F04 ; case 6 + b _022E7F0C ; case 7 + b _022E7F14 ; case 8 + b _022E7F1C ; case 9 +_022E7ED4: + bl ov11_0230D000 + ldmia sp!, {r4, pc} +_022E7EDC: + bl ov11_0230CFF4 + ldmia sp!, {r4, pc} +_022E7EE4: + bl ov11_0230D92C + ldmia sp!, {r4, pc} +_022E7EEC: + bl ov11_02313908 + ldmia sp!, {r4, pc} +_022E7EF4: + bl ov11_0230E964 + ldmia sp!, {r4, pc} +_022E7EFC: + bl ov11_02310C40 + ldmia sp!, {r4, pc} +_022E7F04: + bl ov11_0231136C + ldmia sp!, {r4, pc} +_022E7F0C: + bl ov11_0231186C + ldmia sp!, {r4, pc} +_022E7F14: + bl ov11_02311D6C + ldmia sp!, {r4, pc} +_022E7F1C: + bl ov11_02312250 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E7F24: .word ov11_02319A98 + arm_func_end ov11_022E7E84 diff --git a/asm/overlay_11_022E7FB8.s b/asm/overlay_11_022E7FB8.s new file mode 100644 index 00000000..e0411969 --- /dev/null +++ b/asm/overlay_11_022E7FB8.s @@ -0,0 +1,36 @@ + .include "asm/macros.inc" + .include "overlay_11_022E7FB8.inc" + + .text + + arm_func_start GetCoroutineInfo +GetCoroutineInfo: ; 0x022E7FB8 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + mov r5, r1 + bl ov11_022DC89C + ldr r0, _022E8020 ; =UNIONALL_RAM_ADDRESS + add r1, r5, r5, lsl #1 + ldr r2, [r0] + add r3, r2, r1, lsl #1 + ldrh r1, [r3, #4] + cmp r1, #0 + moveq r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + str r2, [r4] + ldrh r2, [r3, #4] + ldr r3, [r0] + mov r1, #0 + add r2, r3, r2, lsl #1 + str r2, [r4, #4] + ldr r2, [r0, #4] + sub r0, r1, #1 + str r2, [r4, #8] + strh r1, [r4, #0x14] + strb r1, [r4, #0x16] + strh r0, [r4, #0x18] + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022E8020: .word UNIONALL_RAM_ADDRESS + arm_func_end GetCoroutineInfo diff --git a/asm/overlay_11_022E8090.s b/asm/overlay_11_022E8090.s new file mode 100644 index 00000000..5f88da7a --- /dev/null +++ b/asm/overlay_11_022E8090.s @@ -0,0 +1,1674 @@ + .include "asm/macros.inc" + .include "overlay_11_022E8090.inc" + + .text + + arm_func_start ov11_022E8090 +ov11_022E8090: ; 0x022E8090 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x14 + mov r4, r0 + mov r1, #1 + strb r1, [r4] + ldr r0, _022E810C ; =ov11_02324F98 + ldr r1, _022E8110 ; =RECRUITMENT_TABLE_SPECIES + ldrsh r2, [r0] + add r0, sp, #0 + mov r2, r2, lsl #1 + ldrsh r1, [r1, r2] + strh r1, [r4, #4] + bl GetNameRaw + add r1, sp, #0 + add r0, r4, #0x3a + mov r2, #0xa + bl StrncpyName + mov r0, r4 + bl SetBaseStatsMovesGroundMonster + ldr r0, _022E810C ; =ov11_02324F98 + ldr r2, _022E8114 ; =RECRUITMENT_TABLE_LEVELS + ldrsh r3, [r0] + ldr r1, _022E8118 ; =RECRUITMENT_TABLE_LOCATIONS + mov r3, r3, lsl #1 + ldrsh r2, [r2, r3] + strb r2, [r4, #1] + ldrsh r0, [r0] + ldrb r0, [r1, r0] + strb r0, [r4, #2] + add sp, sp, #0x14 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_022E810C: .word ov11_02324F98 +_022E8110: .word RECRUITMENT_TABLE_SPECIES +_022E8114: .word RECRUITMENT_TABLE_LEVELS +_022E8118: .word RECRUITMENT_TABLE_LOCATIONS + arm_func_end ov11_022E8090 + + arm_func_start ov11_022E811C +ov11_022E811C: ; 0x022E811C + bx lr + arm_func_end ov11_022E811C + + arm_func_start ov11_022E8120 +ov11_022E8120: ; 0x022E8120 + bx lr + arm_func_end ov11_022E8120 + + arm_func_start InitRandomNpcJobs +InitRandomNpcJobs: ; 0x022E8124 + stmdb sp!, {r3, lr} + sub sp, sp, #8 + ldr r2, _022E8164 ; =ov11_02324F9C + strh r0, [r2, #2] + strh r1, [r2] + bl ov11_022E8168 + movs r1, r0 + beq _022E815C + add r0, sp, #0 + mov r2, #0xff + bl WasMissionCompletedToday + ldrsh r0, [sp, #2] + ldrsh r1, [sp, #4] + bl SetRandomRequestNpcs1And2 +_022E815C: + add sp, sp, #8 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E8164: .word ov11_02324F9C + arm_func_end InitRandomNpcJobs + + arm_func_start ov11_022E8168 +ov11_022E8168: ; 0x022E8168 + stmdb sp!, {r3, lr} + ldr r0, _022E81B8 ; =ov11_02324F9C + ldrsh r1, [r0, #2] + cmp r1, #0 + beq _022E8188 + cmp r1, #1 + beq _022E819C + b _022E81B0 +_022E8188: + ldrsh r0, [r0] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EBD8 + ldmia sp!, {r3, pc} +_022E819C: + ldrsh r0, [r0] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EC38 + ldmia sp!, {r3, pc} +_022E81B0: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E81B8: .word ov11_02324F9C + arm_func_end ov11_022E8168 + + arm_func_start GetRandomNpcJobType +GetRandomNpcJobType: ; 0x022E81BC + stmdb sp!, {r3, lr} + bl ov11_022E8168 + cmp r0, #0 + ldrneb r0, [r0, #1] + moveq r0, #0xd + ldmia sp!, {r3, pc} + arm_func_end GetRandomNpcJobType + + arm_func_start GetRandomNpcJobSubtype +GetRandomNpcJobSubtype: ; 0x022E81D4 + stmdb sp!, {r3, lr} + bl ov11_022E8168 + cmp r0, #0 + ldrnesb r0, [r0, #2] + moveq r0, #0 + streqb r0, [sp] + ldmia sp!, {r3, pc} + arm_func_end GetRandomNpcJobSubtype + + arm_func_start GetRandomNpcJobStillAvailable +GetRandomNpcJobStillAvailable: ; 0x022E81F0 + stmdb sp!, {r3, lr} + ldr r0, _022E8254 ; =ov11_02324F9C + ldrsh r1, [r0, #2] + cmp r1, #0 + beq _022E8210 + cmp r1, #1 + beq _022E8230 + b _022E824C +_022E8210: + ldrsh r0, [r0] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EBF0 + cmp r0, #0 + bne _022E824C + mov r0, #1 + ldmia sp!, {r3, pc} +_022E8230: + ldrsh r0, [r0] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EC50 + cmp r0, #0 + moveq r0, #1 + ldmeqia sp!, {r3, pc} +_022E824C: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E8254: .word ov11_02324F9C + arm_func_end GetRandomNpcJobStillAvailable + +; https://decomp.me/scratch/bAiXn + arm_func_start AcceptRandomNpcJob +AcceptRandomNpcJob: ; 0x022E8258 + stmdb sp!, {r3, lr} + bl ov11_022E8168 + bl AddMissionToJobList + cmp r0, #0 + bne _022E82C0 + bl sub_0205F5A8 + bl sub_0205F710 + ldr r0, _022E82C8 ; =ov11_02324F9C + ldrsh r1, [r0, #2] + cmp r1, #0 + beq _022E8290 + cmp r1, #1 + beq _022E82A8 + b _022E82C0 +_022E8290: + ldrsh r0, [r0] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EC18 + mov r0, #1 + ldmia sp!, {r3, pc} +_022E82A8: + ldrsh r0, [r0] + mov r0, r0, lsl #0x18 + mov r0, r0, asr #0x18 + bl sub_0205EC78 + mov r0, #1 + ldmia sp!, {r3, pc} +_022E82C0: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E82C8: .word ov11_02324F9C + arm_func_end AcceptRandomNpcJob + + arm_func_start ov11_022E82CC +ov11_022E82CC: ; 0x022E82CC + stmdb sp!, {r4, lr} + cmp r0, #0 + movne r4, #0xd + moveq r4, #0xc + cmp r4, #0xc + bne _022E82F0 + mov r0, #0x11 + bl GroundMainLoop + mov r4, r0 +_022E82F0: + cmp r4, #0xc + bne _022E832C + mov r0, #0 + mov r1, #0x5c + bl ZeroInitScriptVariable + mov r0, #0x12 + bl GroundMainLoop + mov r4, r0 + cmp r4, #0xd + bne _022E832C + mov r0, #0 + mov r1, #0x5c + bl LoadScriptVariableValue + cmp r0, #0 + ldmneia sp!, {r4, pc} +_022E832C: + cmp r4, #0xd + ldmneia sp!, {r4, pc} + mov r0, #0x14 + bl GroundMainLoop + ldmia sp!, {r4, pc} + arm_func_end ov11_022E82CC + + arm_func_start ov11_022E8340 +ov11_022E8340: ; 0x022E8340 + stmdb sp!, {r3, lr} + mov r0, #0x198 + mov r1, #8 + bl MemAlloc + ldr r3, _022E83F0 ; =ov11_02324CAC + mov r1, #0 + mov r2, #0x198 + str r0, [r3] + bl MemsetSimple + mvn ip, #0 + ldr r0, _022E83F0 ; =ov11_02324CAC + sub r3, ip, #1 + ldr r1, [r0] + add r2, ip, #0x134 + strb ip, [r1, #6] + ldr r1, [r0] + strb r3, [r1, #4] + ldr r1, [r0] + strb r3, [r1, #5] + ldr r1, [r0] + str r2, [r1, #0x64] + ldr r0, [r0] + add r0, r0, #8 + bl InitPortraitParams + ldr r0, _022E83F0 ; =ov11_02324CAC + ldr r1, _022E83F4 ; =0x00000133 + ldr r0, [r0] + add r0, r0, #8 + bl InitPortraitParamsWithMonsterId + ldr r0, _022E83F0 ; =ov11_02324CAC + mov r1, #0x12 + ldr r0, [r0] + add r0, r0, #8 + bl SetPortraitLayout + ldr r0, _022E83F0 ; =ov11_02324CAC + ldr r0, [r0] + add r0, r0, #6 + bl sub_0204F1B4 + cmp r0, #0 + mov r0, #0 + ldmeqia sp!, {r3, pc} + bl ov11_022E84E4 + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E83F0: .word ov11_02324CAC +_022E83F4: .word 0x00000133 + arm_func_end ov11_022E8340 + + arm_func_start ov11_022E83F8 +ov11_022E83F8: ; 0x022E83F8 + stmdb sp!, {r3, lr} + ldr r0, _022E84A8 ; =ov11_02324CAC + ldr r0, [r0] + ldr r0, [r0] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _022E84A0 +_022E8414: ; jump table + b _022E8424 ; case 0 + b _022E8440 ; case 1 + b _022E8460 ; case 2 + b _022E8498 ; case 3 +_022E8424: + bl ov11_022E8748 + cmp r0, #0 + bne _022E84A0 + bl ov11_022E86E4 + mov r0, #1 + bl ov11_022E84E4 + b _022E84A0 +_022E8440: + bl sub_0203D538 + cmp r0, #1 + bne _022E84A0 + bl FreeMissionRewardStructMain + bl sub_02046D20 + mov r0, #2 + bl ov11_022E84E4 + b _022E84A0 +_022E8460: + bl ov11_022E8748 + cmp r0, #0 + bne _022E84A0 + bl ov11_022E86E4 + ldr r0, _022E84A8 ; =ov11_02324CAC + ldr r0, [r0] + ldrsb r0, [r0, #6] + bl sub_0205B77C + mov r1, #4 + strb r1, [r0], #0xa4 + bl sub_0205B584 + mov r0, #3 + bl ov11_022E84E4 + b _022E84A0 +_022E8498: + mov r0, #2 + ldmia sp!, {r3, pc} +_022E84A0: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_022E84A8: .word ov11_02324CAC + arm_func_end ov11_022E83F8 + + arm_func_start ov11_022E84AC +ov11_022E84AC: ; 0x022E84AC + stmdb sp!, {r3, lr} + ldr r0, _022E84E0 ; =ov11_02324CAC + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl ov11_022E86E4 + ldr r0, _022E84E0 ; =ov11_02324CAC + ldr r0, [r0] + bl MemFree + ldr r0, _022E84E0 ; =ov11_02324CAC + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E84E0: .word ov11_02324CAC + arm_func_end ov11_022E84AC + + arm_func_start ov11_022E84E4 +ov11_022E84E4: ; 0x022E84E4 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + ldr r1, _022E865C ; =ov11_02324CAC + ldr r2, [r1] + str r0, [r2] + ldr r3, [r1] + ldr r0, [r3] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _022E8654 +_022E850C: ; jump table + b _022E851C ; case 0 + b _022E8558 ; case 1 + b _022E861C ; case 2 + b _022E8654 ; case 3 +_022E851C: + bl ov11_022E866C + bl ov11_022E86A4 + ldr r0, _022E865C ; =ov11_02324CAC + ldr r1, _022E8660 ; =0x00003218 + ldr r3, [r0] + ldr r2, _022E8664 ; =0x0000025F + ldrsb r0, [r3, #4] + add r3, r3, #0x18 + bl ShowStringIdInDialogueBox + ldr r0, _022E865C ; =ov11_02324CAC + ldr r1, [r0] + ldrsb r0, [r1, #5] + add r1, r1, #8 + bl ShowPortraitInPortraitBox + b _022E8654 +_022E8558: + ldr r2, _022E8668 ; =0x00000133 + add r0, r3, #0x100 + strh r2, [r0, #0x68] + ldr r0, [r1] + mov r2, #2 + strb r2, [r0, #0x16a] + ldr r0, [r1] + mov r2, #0 + str r2, [r0, #0x170] + ldr r0, [r1] + ldrsb r0, [r0, #6] + bl sub_0205B77C + mov r4, r0 + add r2, sp, #0 + add r0, r4, #4 + mov r1, #0 + bl RollRandomItemReward + ldr r0, _022E865C ; =ov11_02324CAC + ldrsh r1, [sp] + ldr r0, [r0] + mov r2, #0 + add r0, r0, #0x178 + bl InitStandardItem + bl sub_0206309C + ldr r2, _022E865C ; =ov11_02324CAC + mov r1, #0 + ldr r2, [r2] + add r2, r2, #0x100 + strh r0, [r2, #0x7a] + add r0, r4, #4 + bl sub_02062DC4 + ldr r3, _022E865C ; =ov11_02324CAC + mov r1, #0 + ldr r2, [r3] + mov ip, #1 + str r0, [r2, #0x190] + ldr r0, [r3] + mov r2, #0x10 + add r0, r0, #0x100 + strh r1, [r0, #0x82] + ldr r0, [r3] + add r0, r0, #0x100 + strh r1, [r0, #0x88] + ldr r0, [r3] + str ip, [r0, #0x174] + ldr r0, [r3] + add r0, r0, #0x168 + bl sub_0203D438 + b _022E8654 +_022E861C: + bl ov11_022E866C + bl ov11_022E86A4 + ldr r0, _022E865C ; =ov11_02324CAC + ldr r1, _022E8660 ; =0x00003218 + ldr r3, [r0] +#ifdef JAPAN + mov r2, #0x500 +#else + mov r2, #0x260 +#endif + ldrsb r0, [r3, #4] + add r3, r3, #0x18 + bl ShowStringIdInDialogueBox + ldr r0, _022E865C ; =ov11_02324CAC + ldr r1, [r0] + ldrsb r0, [r1, #5] + add r1, r1, #8 + bl ShowPortraitInPortraitBox +_022E8654: + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_022E865C: .word ov11_02324CAC +_022E8660: .word 0x00003218 +#ifdef JAPAN +_022E8664: .word 0x000004FF +#else +_022E8664: .word 0x0000025F +#endif +_022E8668: .word 0x00000133 + arm_func_end ov11_022E84E4 + + arm_func_start ov11_022E866C +ov11_022E866C: ; 0x022E866C + stmdb sp!, {r3, lr} + ldr r1, _022E86A0 ; =ov11_02324CAC + mvn r0, #1 + ldr r1, [r1] + ldrsb r1, [r1, #4] + cmp r1, r0 + ldmneia sp!, {r3, pc} + mov r0, #0 + bl CreateDialogueBox + ldr r1, _022E86A0 ; =ov11_02324CAC + ldr r1, [r1] + strb r0, [r1, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E86A0: .word ov11_02324CAC + arm_func_end ov11_022E866C + + arm_func_start ov11_022E86A4 +ov11_022E86A4: ; 0x022E86A4 + stmdb sp!, {r3, lr} + ldr r1, _022E86E0 ; =ov11_02324CAC + mvn r0, #1 + ldr r1, [r1] + ldrsb r1, [r1, #5] + cmp r1, r0 + ldmneia sp!, {r3, pc} + mov r0, #0 + mov r1, #3 + mov r2, #1 + bl CreatePortraitBox + ldr r1, _022E86E0 ; =ov11_02324CAC + ldr r1, [r1] + strb r0, [r1, #5] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E86E0: .word ov11_02324CAC + arm_func_end ov11_022E86A4 + + arm_func_start ov11_022E86E4 +ov11_022E86E4: ; 0x022E86E4 + stmdb sp!, {r3, lr} + ldr r0, _022E8744 ; =ov11_02324CAC + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #4] + cmp r0, r1 + beq _022E8714 + bl CloseDialogueBox + ldr r0, _022E8744 ; =ov11_02324CAC + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #4] +_022E8714: + ldr r0, _022E8744 ; =ov11_02324CAC + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #5] + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl ClosePortraitBox + ldr r0, _022E8744 ; =ov11_02324CAC + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #5] + ldmia sp!, {r3, pc} + .align 2, 0 +_022E8744: .word ov11_02324CAC + arm_func_end ov11_022E86E4 + + arm_func_start ov11_022E8748 +ov11_022E8748: ; 0x022E8748 + stmdb sp!, {r3, lr} + ldr r0, _022E8770 ; =ov11_02324CAC + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #4] + cmp r0, r1 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + bl IsDialogueBoxActive + ldmia sp!, {r3, pc} + .align 2, 0 +_022E8770: .word ov11_02324CAC + arm_func_end ov11_022E8748 + + arm_func_start GroundMainLoop +GroundMainLoop: ; 0x022E8774 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x34 + ldr r2, _022E91E8 ; =ov11_02324FA0 + mov r4, r0 + str r4, [r2, #0x14] + mov r0, #0 + strb r0, [r2, #4] + mov r1, #1 + strb r1, [r2, #2] + strb r0, [r2, #3] + strb r0, [r2, #1] + mov r1, #0x2c + strb r0, [r2] + bl LoadScriptVariableValue + mov r2, r0 + ldr r0, _022E91EC ; =ov11_023209B0 + mov r1, r4 + bl Debug_Print0 + bl sub_02028E2C + mov r0, #0 + mov r1, #0xb0000 + mov r2, #0x20 + mov r3, #1 + bl MemArenaAlloc + ldr r1, _022E91F0 ; =ov11_02324CB0 + ldr r2, _022E91F4 ; =GROUND_MEMORY_ARENA_1 + str r0, [r1, #8] + mov r0, #0x64000 + str r0, [sp, #0xc] + add r0, sp, #8 + mov r1, #0x34 + str r2, [sp, #8] + bl CreateMemArena + ldr r2, _022E91F0 ; =ov11_02324CB0 + ldr r1, _022E91F8 ; =GetFreeArenaGround + str r0, [r2, #4] + ldr r0, _022E91FC ; =GetAllocArenaGround + bl SetMemAllocatorParams + sub r0, r4, #0xc + cmp r0, #8 + addls pc, pc, r0, lsl #2 + b _022E88B0 +_022E881C: ; jump table + b _022E8840 ; case 0 + b _022E8840 ; case 1 + b _022E8840 ; case 2 + b _022E88B0 ; case 3 + b _022E88B0 ; case 4 + b _022E885C ; case 5 + b _022E8870 ; case 6 + b _022E889C ; case 7 + b _022E889C ; case 8 +_022E8840: + ldr r0, _022E91E8 ; =ov11_02324FA0 + mov r2, #1 + strb r2, [r0] + mov r1, #0 + strb r1, [r0, #2] + strb r2, [r0, #4] + b _022E88B0 +_022E885C: + ldr r0, _022E91E8 ; =ov11_02324FA0 + mov r1, #1 + strb r1, [r0, #2] + strb r1, [r0, #4] + b _022E88B0 +_022E8870: + add r0, sp, #4 + bl sub_02049338 + ldr r0, [sp, #4] + mov r1, #1 + cmp r0, #0 + moveq r2, #1 + ldr r0, _022E91E8 ; =ov11_02324FA0 + movne r2, #0 + strb r2, [r0, #2] + strb r1, [r0, #4] + b _022E88B0 +_022E889C: + ldr r0, _022E91E8 ; =ov11_02324FA0 + mov r1, #0 + strb r1, [r0, #2] + mov r1, #1 + strb r1, [r0, #4] +_022E88B0: + bl sub_02017A68 + bl ov11_022EB848 + cmp r4, #0x11 + moveq r0, #2 + movne r0, #0 + bl ov11_022E9720 + bl ov11_022EAFD4 + bl ov11_022DC6C4 + bl ov11_022F4518 + bl ov11_022EBA44 + mov r0, #1 + bl sub_02047FFC + bl ov11_022F709C + bl ov11_022F11DC + bl ov11_022EA908 + bl ov11_022FE9E0 + bl AllocAndInitPartnerFollowDataAndLiveActorList + bl ov11_022FBDBC + bl ov11_022FD624 + bl ov11_0230CE78 + bl ov11_0230CFF4 + ldr r1, _022E91E8 ; =ov11_02324FA0 + mov r2, #1 + mov r0, #0 + str r2, [r1, #0x1c] + str r0, [r1, #0x10] + sub r2, r0, #1 + str r2, [r1, #0x18] + mov r1, #0x1c + bl LoadScriptVariableValue + ldr r2, _022E91E8 ; =ov11_02324FA0 + mov r1, #0x1d + strh r0, [r2, #8] + mov r0, #0 + bl LoadScriptVariableValue + ldr r1, _022E91E8 ; =ov11_02324FA0 + mvn r2, #0 + str r0, [r1, #0xc] + strh r2, [r1, #6] + ldr r1, _022E91F0 ; =ov11_02324CB0 + mov r2, #1 + ldr r0, _022E9200 ; =ov11_022E9258 + strb r2, [r1] + bl sub_0200383C +_022E8960: + mvn r0, #0 + strh r0, [sp, #2] + bl sub_020038E8 + bl ov11_022DC808 + ldr r0, _022E91E8 ; =ov11_02324FA0 + ldr r0, [r0, #0x1c] + cmp r0, #1 + cmpne r0, #2 + beq _022E8990 + ldr r0, _022E9204 ; =ov11_023209CC + bl Debug_Print0 + b _022E8FDC +_022E8990: + bl sub_02034D0C + ldr r0, _022E91E8 ; =ov11_02324FA0 + ldr r2, [r0, #0x14] + cmp r2, #0x14 + addls pc, pc, r2, lsl #2 + b _022E8CD4 +_022E89A8: ; jump table + b _022E89FC ; case 0 + b _022E8CD4 ; case 1 + b _022E8A24 ; case 2 + b _022E8CD4 ; case 3 + b _022E8CD4 ; case 4 + b _022E8CD4 ; case 5 + b _022E8CD4 ; case 6 + b _022E8CD4 ; case 7 + b _022E8AE4 ; case 8 + b _022E8AE4 ; case 9 + b _022E8AE4 ; case 10 + b _022E8AE4 ; case 11 + b _022E8C20 ; case 12 + b _022E8C20 ; case 13 + b _022E8A24 ; case 14 + b _022E8BEC ; case 15 + b _022E8A3C ; case 16 + b _022E8CA8 ; case 17 + b _022E8CB4 ; case 18 + b _022E8CC0 ; case 19 + b _022E8CCC ; case 20 +_022E89FC: + ldr r0, _022E9208 ; =ov11_023209EC + bl Debug_Print0 + mov r0, #0 + mov r1, #0x5c + bl ZeroInitScriptVariable + bl GroundMainNextDay + ldr r0, _022E91E8 ; =ov11_02324FA0 + mov r1, #1 + str r1, [r0, #0x14] + b _022E8CD4 +_022E8A24: + add r0, sp, #2 + bl sub_0206C0D8 + ldr r0, _022E91E8 ; =ov11_02324FA0 + mov r1, #1 + str r1, [r0, #0x14] + b _022E8CD4 +_022E8A3C: + bl sub_0204E70C + mov r5, r0 + bl sub_0204E760 + mov r4, r0 + mov r2, r4 + mov r0, #0 + mov r1, #0x27 + bl SaveScriptVariableValue + mov r2, r4 + mov r0, #0 + mov r1, #0x29 + bl SaveScriptVariableValue + ldr r0, _022E920C ; =ov11_02320A08 + mov r1, r5 + mov r2, r4 + bl Debug_Print0 + cmp r5, #2 + ldreq r0, _022E9210 ; =0x0000029D + streqh r0, [sp, #2] + beq _022E8CD4 + cmp r5, #3 + ldreq r0, _022E9214 ; =0x0000029E + streqh r0, [sp, #2] + beq _022E8CD4 + mov r0, #0 + bl GetResolvedPerformanceProgressFlag + cmp r0, #0 + ldrne r0, _022E9218 ; =0x0000029F + strneh r0, [sp, #2] + bne _022E8CD4 + mov r0, r4 + bl GetDungeonModeSpecial + cmp r0, #3 + moveq r0, #0x29c + streqh r0, [sp, #2] + beq _022E8CD4 + cmp r5, #1 + ldreq r0, _022E921C ; =0x0000029B + streqh r0, [sp, #2] + ldrne r0, _022E9220 ; =0x0000029A + strneh r0, [sp, #2] + b _022E8CD4 +_022E8AE4: + mov r0, #0 + mov r1, #0x2b + bl SaveScriptVariableValue + ldr r0, _022E9208 ; =ov11_023209EC + bl Debug_Print0 + mov r0, #0 + mov r1, #0x5c + bl ZeroInitScriptVariable + bl GroundMainNextDay + mov r0, #0 + mov r1, #0x2a + mov r2, #1 + mov r3, #2 + bl CalcAndUpdateScriptVarWithOtherValue + bl sub_0204F034 + mov r4, r0 + bl sub_0204F050 + mov r5, r0 + bl GetDungeonModeSpecial + mov r3, r0 + ldr r0, _022E9224 ; =ov11_02320A28 + mov r1, r4 + mov r2, r5 + bl Debug_Print0 + cmp r4, #2 + cmpne r4, #3 + beq _022E8B94 + mov r0, #0 + bl GetResolvedPerformanceProgressFlag + cmp r0, #0 + ldrne r0, _022E9228 ; =0x000002A5 + strneh r0, [sp, #2] + bne _022E8B94 + mov r0, r5 + bl GetDungeonModeSpecial + cmp r0, #3 + moveq r0, #0x2a4 + streqh r0, [sp, #2] + beq _022E8B94 + cmp r4, #1 + ldreq r0, _022E922C ; =0x000002A1 + streqh r0, [sp, #2] + movne r0, #0x2a0 + strneh r0, [sp, #2] +_022E8B94: + ldr r0, _022E91E8 ; =ov11_02324FA0 + ldr r0, [r0, #0x14] + cmp r0, #8 + bne _022E8BC4 + cmp r4, #0 + cmpne r4, #1 + bne _022E8BC4 + cmp r5, #0xd5 + bge _022E8BC4 + mov r0, r5 + mov r1, #1 + bl SetDungeonConquest +_022E8BC4: + mov r0, #0 + bl GetResolvedPerformanceProgressFlag + cmp r0, #0 + beq _022E8CD4 + ldr r0, _022E91E8 ; =ov11_02324FA0 + mov r1, #1 + strh r1, [r0, #8] + mov r1, #0 + str r1, [r0, #0xc] + b _022E8CD4 +_022E8BEC: + bl sub_0204E760 + mov r4, r0 + mov r2, r4 + mov r0, #0 + mov r1, #0x27 + bl SaveScriptVariableValue + mov r2, r4 + mov r0, #0 + mov r1, #0x29 + bl SaveScriptVariableValue + ldr r0, _022E9230 ; =0x000002A6 + strh r0, [sp, #2] + b _022E8CD4 +_022E8C20: + ldr r0, _022E9208 ; =ov11_023209EC + bl Debug_Print0 + mov r0, #0 + mov r1, #0x5c + bl ZeroInitScriptVariable + bl GroundMainNextDay + ldr r1, _022E91E8 ; =ov11_02324FA0 + mov r0, #0 + ldr r2, [r1, #0x14] + mov r1, #0x2c + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x1e + mov r2, #1 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x1c + mov r2, #1 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x1d + mov r2, r0 + bl SaveScriptVariableValue + ldr r0, _022E91E8 ; =ov11_02324FA0 + mov r1, #1 + ldr r0, [r0, #0x14] + cmp r0, #0xc + moveq r0, #0x46 + streqh r0, [sp, #2] + movne r0, #0x47 + strneh r0, [sp, #2] + ldr r0, _022E91E8 ; =ov11_02324FA0 + str r1, [r0, #0x14] + b _022E8CD4 +_022E8CA8: + mov r0, #0x4e + strh r0, [sp, #2] + b _022E8CD4 +_022E8CB4: + mov r0, #0x4f + strh r0, [sp, #2] + b _022E8CD4 +_022E8CC0: + mov r0, #0x50 + strh r0, [sp, #2] + b _022E8CD4 +_022E8CCC: + mov r0, #0x51 + strh r0, [sp, #2] +_022E8CD4: + ldr r0, _022E91E8 ; =ov11_02324FA0 + ldrb r0, [r0, #4] + cmp r0, #0 + bne _022E8D78 + mov r0, #0 + mov r1, #0x1c + bl LoadScriptVariableValue + ldr r1, _022E91E8 ; =ov11_02324FA0 + mov r4, r0 + ldr r2, [r1, #0x14] + mov r0, #0 + mov r1, #0x2c + bl SaveScriptVariableValue + ldr r1, _022E91E8 ; =ov11_02324FA0 + ldr r0, _022E9234 ; =ov11_02320A44 + ldr r1, [r1, #0x14] + bl Debug_Print0 + ldr r0, _022E91E8 ; =ov11_02324FA0 + ldr r1, [r0, #0x14] + cmp r1, #1 + beq _022E8D50 + cmp r1, #4 + mov r1, #0x1e + bne _022E8D44 + ldrsh r2, [r0, #8] + mov r0, #0 + bl SaveScriptVariableValue + b _022E8D50 +_022E8D44: + mov r2, r4 + mov r0, #0 + bl SaveScriptVariableValue +_022E8D50: + ldr r1, _022E91E8 ; =ov11_02324FA0 + mov r0, #0 + ldrsh r2, [r1, #8] + mov r1, #0x1c + bl SaveScriptVariableValue + ldr r1, _022E91E8 ; =ov11_02324FA0 + mov r0, #0 + ldr r2, [r1, #0xc] + mov r1, #0x1d + bl SaveScriptVariableValue +_022E8D78: + ldr r0, _022E91E8 ; =ov11_02324FA0 + mov r2, #3 + mov r1, #0 + str r2, [r0, #0x14] + str r1, [r0, #0x1c] + str r1, [r0, #0x10] + sub r2, r1, #1 + str r2, [r0, #0x18] + ldrsh r1, [r0, #8] + strh r1, [r0, #0xa] + strh r2, [r0, #8] + bl ov11_022E98CC + bl ov11_022DC718 + bl ov11_022F468C + bl ov11_022F7104 + bl ov11_022F1244 + mov r0, #0 + bl ov11_022EAFF8 + bl ov11_022FEA28 + bl InitPartnerFollowDataAndLiveActorList + bl ov11_022FBE04 + bl ov11_022FD66C + bl ComputeSpecialCounters + ldrsh r0, [sp, #2] + mvn r1, #0 + cmp r0, r1 + mov r1, #0 + beq _022E8DF8 + bl ov11_022F7188 + mvn r0, #0 + strh r0, [sp, #2] + b _022E8E00 +_022E8DF8: + mov r0, #0x3c + bl ov11_022F7188 +_022E8E00: + bl sub_020039E4 + mov fp, #0 + mov r6, #1 + mov r8, #0x1e + ldr r5, _022E91E8 ; =ov11_02324FA0 + ldr r4, _022E9238 ; =0x00000F0F + mov r7, r6 + mov sl, r8 + mov sb, fp +_022E8E24: + bl sub_020038E8 + bl ov11_022DC808 + bl sub_0204F9CC + ldr r1, [r5, #0x1c] + cmp r1, #0 + beq _022E8EBC + ldr r0, [r5, #0x10] + cmp r0, #0 + ble _022E8E88 + sub r0, r0, #1 + str r0, [r5, #0x10] + cmp r0, #0 + bgt _022E8F94 + cmp r1, #1 + cmpne r1, #2 + bne _022E8E70 + ldr r0, [r5, #0x18] + bl ov11_022E9AD8 + b _022E8F94 +_022E8E70: + ldrb r2, [r5, #4] + ldrb r1, [r5, #1] + ldr r0, [r5, #0x18] + orr r1, r2, r1 + bl ov11_022E9AF0 + b _022E8F94 +_022E8E88: + bl ov11_022E9EFC + cmp r0, #0 + bne _022E8F94 + ldr r0, _022E91E8 ; =ov11_02324FA0 + ldr r0, [r0, #0x1c] + cmp r0, #1 + cmpne r0, #2 + bne _022E8FB8 + mov r0, #0 + bl ov11_022E9B24 + mov r0, #0 + bl ov11_022E9B84 + b _022E8FB8 +_022E8EBC: + ldrb r0, [r5, #4] + cmp r0, #0 + ldreqb r0, [r5, #1] + cmpeq r0, #0 + beq _022E8F94 + ldrb r0, [r5, #3] + cmp r0, #0 + beq _022E8F1C + mov r0, sb + bl sub_02034840 + cmp r0, #0 + bne _022E8F94 + bl ov11_022F7628 + cmp r0, #0 + bne _022E8F94 + bl ov11_0230D170 + cmp r0, #0 + bne _022E8F94 + bl ov11_022F7140 + mov r0, r8 + bl ov11_022E9644 + mov r0, sl + bl sub_02017ACC + b _022E8F94 +_022E8F1C: + ldrb r0, [r5, #2] + cmp r0, #0 + bne _022E8F94 + mov r0, fp + add r1, sp, #0 + bl GetPressedButtons + bl IsTouchScreenNotOff + cmp r0, #0 + add r0, sp, #0x10 + beq _022E8F4C + bl GetReleasedStylus + b _022E8F50 +_022E8F4C: + bl sub_02006BFC +_022E8F50: + ldrb r0, [r5, #1] + cmp r0, #0 + beq _022E8F6C + ldrh r0, [sp] + tst r0, #8 + strneb r7, [r5, #3] + b _022E8F94 +_022E8F6C: + ldrh r0, [sp] + tst r0, r4 + bne _022E8F90 + add r0, sp, #0x10 + mov r1, #2 + mov r2, #0 + bl sub_02006C8C + cmp r0, #0 + beq _022E8F94 +_022E8F90: + strb r6, [r5, #3] +_022E8F94: + bl ov11_022F766C + bl ov11_0230D340 + bl sub_020039E4 + bl ov11_022F7BC4 + bl ov11_022F2188 + bl ov11_0230D570 + bl HandleMenus + bl sub_02028848 + b _022E8E24 +_022E8FB8: + bl ov11_022F1244 + mov r0, #0 + bl ov11_022EAFF8 + bl ov11_022FEA28 + bl InitPartnerFollowDataAndLiveActorList + bl ov11_022FBE04 + bl ov11_022FD66C + bl sub_020039E4 + b _022E8960 +_022E8FDC: + mov r0, #0 + bl sub_0200383C + bl sub_02034710 + bl ov11_0230CF00 + mov r0, #0 + bl ov11_022E9FC8 + cmp r0, #2 + bne _022E9008 + mov r0, #1 + bl sub_0204F024 + b _022E9010 +_022E9008: + mov r0, #0 + bl sub_0204F024 +_022E9010: + bl ov11_0230CED4 + bl ov11_022F1214 + bl ov11_022EA91C + bl ov11_022F7DD4 + bl ov11_022FBE4C + bl ov11_022FD6B4 + bl ov11_022FEA70 + bl ov11_022F70D0 + bl sub_0204804C + bl ov11_022F47F4 + bl ov11_022DC7A0 + bl ov11_022EAFF4 + bl ov11_022E9848 + bl ov11_022EB9A4 + mov r0, #0 + mov r1, r0 + bl SetMemAllocatorParams + ldr r0, _022E91F0 ; =ov11_02324CB0 + ldr r0, [r0, #4] + bl sub_020012D8 + ldr r0, _022E91F0 ; =ov11_02324CB0 + ldr r0, [r0, #8] + bl sub_020012D8 + ldr r0, _022E91E8 ; =ov11_02324FA0 + ldrb r1, [r0] + cmp r1, #0 + beq _022E9090 + ldr r0, [r0, #0x1c] + cmp r0, #8 + moveq r0, #0xf + movne r0, #0xe + b _022E91E0 +_022E9090: + ldrb r1, [r0, #4] + ldr r0, [r0, #0x1c] + cmp r1, #0 + beq _022E90D0 + cmp r0, #6 + beq _022E90C0 + cmp r0, #7 + bne _022E90C0 + ldr r0, _022E923C ; =ov11_02320A60 + bl Debug_Print0 + mov r0, #0xd + b _022E91E0 +_022E90C0: + ldr r0, _022E9240 ; =ov11_02320A70 + bl Debug_Print0 + mov r0, #0xc + b _022E91E0 +_022E90D0: + cmp r0, #3 + beq _022E90E4 + cmp r0, #4 + beq _022E914C + b _022E9170 +_022E90E4: + mov r0, #0 + mov r1, #0x2c + mov r2, #0xf + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x2b + mov r2, #0xf + bl SaveScriptVariableValue + bl sub_0204E6FC + mov r5, r0 + bl sub_0204E760 + mov r4, r0 + mov r0, #0 + mov r1, #0x27 + mov r2, r4 + bl SaveScriptVariableValue + mov r0, #0 + mov r1, #0x29 + mov r2, r4 + bl SaveScriptVariableValue + mov r1, r5 + mov r2, r4 + ldr r0, _022E9244 ; =ov11_02320A7C + bl Debug_Print0 + mov r0, #4 + b _022E91E0 +_022E914C: + bl sub_0204E6FC + mov r4, r0 + bl sub_0204E760 + mov r2, r0 + ldr r0, _022E9248 ; =ov11_02320A94 + mov r1, r4 + bl Debug_Print0 + mov r0, #5 + b _022E91E0 +_022E9170: + mov r0, #0 + mov r1, #0x2c + mov r2, #1 + bl SaveScriptVariableValue + ldr r0, _022E91E8 ; =ov11_02324FA0 + ldr r1, [r0, #0x1c] + cmp r1, #5 + bne _022E91A0 + ldr r0, _022E924C ; =ov11_02320AAC + bl Debug_Print0 + mov r0, #9 + b _022E91E0 +_022E91A0: + cmp r1, #7 + bne _022E91D4 + ldrb r0, [r0, #1] + cmp r0, #0 + beq _022E91C4 + ldr r0, _022E924C ; =ov11_02320AAC + bl Debug_Print0 + mov r0, #9 + b _022E91E0 +_022E91C4: + ldr r0, _022E9250 ; =ov11_02320AB8 + bl Debug_Print0 + mov r0, #0xb + b _022E91E0 +_022E91D4: + ldr r0, _022E9254 ; =ov11_02320AC8 + bl Debug_Print0 + mov r0, #0xa +_022E91E0: + add sp, sp, #0x34 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022E91E8: .word ov11_02324FA0 +_022E91EC: .word ov11_023209B0 +_022E91F0: .word ov11_02324CB0 +_022E91F4: .word GROUND_MEMORY_ARENA_1 +_022E91F8: .word GetFreeArenaGround +_022E91FC: .word GetAllocArenaGround +_022E9200: .word ov11_022E9258 +_022E9204: .word ov11_023209CC +_022E9208: .word ov11_023209EC +_022E920C: .word ov11_02320A08 +_022E9210: .word 0x0000029D +_022E9214: .word 0x0000029E +_022E9218: .word 0x0000029F +_022E921C: .word 0x0000029B +_022E9220: .word 0x0000029A +_022E9224: .word ov11_02320A28 +_022E9228: .word 0x000002A5 +_022E922C: .word 0x000002A1 +_022E9230: .word 0x000002A6 +_022E9234: .word ov11_02320A44 +_022E9238: .word 0x00000F0F +_022E923C: .word ov11_02320A60 +_022E9240: .word ov11_02320A70 +_022E9244: .word ov11_02320A7C +_022E9248: .word ov11_02320A94 +_022E924C: .word ov11_02320AAC +_022E9250: .word ov11_02320AB8 +_022E9254: .word ov11_02320AC8 + arm_func_end GroundMainLoop + + arm_func_start ov11_022E9258 +ov11_022E9258: ; 0x022E9258 + stmdb sp!, {r4, lr} + bl sub_020038D8 + cmp r0, #0 + beq _022E9294 + bl sub_02006E14 + bl ov11_022F2178 + bl ov11_022FEE90 + bl ov11_022FAE58 + bl ov11_022FD47C + bl ov11_022FE838 + bl HandleUnlocks + bl ov11_022DC81C + bl ov11_022EA024 + bl sub_02003990 + b _022E92A8 +_022E9294: + bl ov11_022F2178 + bl ov11_022FEE90 + bl ov11_022FAE58 + bl ov11_022FD47C + bl ov11_022FE838 +_022E92A8: + bl sub_0201BF64 + bl sub_02028E40 + bl ov11_022EB3F0 + bl ov11_022F2194 + bl ov11_0230D6C4 + bl ov11_022EA0BC + bl ov11_022EFC54 + bl ov11_022F5274 + bl sub_0201F464 + ldr r0, _022E9358 ; =ov11_02324CB0 + ldrb r0, [r0] + cmp r0, #0 + bne _022E92E0 + bl sub_0201DDFC +_022E92E0: + bl sub_02008F84 + bl sub_0201BE28 + bl sub_02017A80 + bl sub_02003A40 + ldr r1, _022E9358 ; =ov11_02324CB0 + mov r4, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _022E930C + mov r0, #0 + bl sub_02008ED0 +_022E930C: + bl sub_02008F88 + bl G3X_Reset + bl sub_0201DE10 + bl ov11_022F2244 + bl ov11_0230D6F0 + bl ov11_022EFCE4 + bl ov11_022F5B70 + bl ov10_022BF7D4 + mov r0, r4 + bl sub_02028A64 + bl GroupOamAttributesBothScreens + bl sub_0201BE84 + bl sub_02028E88 + bl sub_0201BF4C + mov r0, r4 + mov r2, #0 + ldr r1, _022E9358 ; =ov11_02324CB0 + strb r2, [r1] + ldmia sp!, {r4, pc} + .align 2, 0 +_022E9358: .word ov11_02324CB0 + arm_func_end ov11_022E9258 + + arm_func_start GetAllocArenaGround +GetAllocArenaGround: ; 0x022E935C + cmp r0, #0 + bxne lr + and r0, r1, #0xff + sub r0, r0, #8 + cmp r0, #8 + addls pc, pc, r0, lsl #2 + b _022E93B4 +_022E9378: ; jump table + b _022E93A8 ; case 0 + b _022E93B4 ; case 1 + b _022E93B4 ; case 2 + b _022E93B4 ; case 3 + b _022E93B4 ; case 4 + b _022E93B4 ; case 5 + b _022E939C ; case 6 + b _022E93A8 ; case 7 + b _022E93A8 ; case 8 +_022E939C: + ldr r0, _022E93BC ; =ov11_02324CB0 + ldr r0, [r0, #8] + bx lr +_022E93A8: + ldr r0, _022E93BC ; =ov11_02324CB0 + ldr r0, [r0, #4] + bx lr +_022E93B4: + mov r0, #0 + bx lr + .align 2, 0 +_022E93BC: .word ov11_02324CB0 + arm_func_end GetAllocArenaGround + + arm_func_start GetFreeArenaGround +GetFreeArenaGround: ; 0x022E93C0 + stmdb sp!, {r4, lr} + mov r4, r1 + cmp r0, #0 + ldmneia sp!, {r4, pc} + ldr r0, _022E9410 ; =ov11_02324CB0 + ldr r0, [r0, #8] + bl sub_020017B4 + cmp r0, #0 + ldrne r0, _022E9410 ; =ov11_02324CB0 + ldrne r0, [r0, #8] + ldmneia sp!, {r4, pc} + ldr r0, _022E9410 ; =ov11_02324CB0 + mov r1, r4 + ldr r0, [r0, #4] + bl sub_020017B4 + cmp r0, #0 + ldrne r0, _022E9410 ; =ov11_02324CB0 + ldrne r0, [r0, #4] + moveq r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E9410: .word ov11_02324CB0 + arm_func_end GetFreeArenaGround + + arm_func_start GroundMainReturnDungeon +GroundMainReturnDungeon: ; 0x022E9414 + stmdb sp!, {r3, lr} + ldr r0, _022E9434 ; =ov11_023209EC + bl Debug_Print0 + mov r0, #0 + mov r1, #0x5c + bl ZeroInitScriptVariable + bl GroundMainNextDay + ldmia sp!, {r3, pc} + .align 2, 0 +_022E9434: .word ov11_023209EC + arm_func_end GroundMainReturnDungeon + + arm_func_start GroundMainNextDay +GroundMainNextDay: ; 0x022E9438 + stmdb sp!, {r4, lr} + bl GetGameMode + mov r4, r0 + ldr r0, _022E94C8 ; =ov11_02320AD4 + bl Debug_Print0 + cmp r4, #3 + bne _022E9468 + mov r0, #0 + bl GenerateKecleonItems1 + mov r0, #0 + bl GenerateKecleonItems2 + ldmia sp!, {r4, pc} +_022E9468: + cmp r4, #2 + ldmneia sp!, {r4, pc} + bl GetScenarioBalance + cmp r0, #6 + movhs r4, #3 + bhs _022E9498 + cmp r0, #4 + movhs r4, #2 + bhs _022E9498 + cmp r0, #2 + movhs r4, #1 + movlo r4, #0 +_022E9498: + ldr r0, _022E94CC ; =ov11_02320AEC + mov r1, r4 + bl Debug_Print0 + mov r0, r4 + bl GenerateKecleonItems1 + mov r0, r4 + bl GenerateKecleonItems2 + bl GenerateDailyMissions + bl GenerateCroagunkItems + bl DecrementEggHatchTimer + bl UpdateRecycleShop + ldmia sp!, {r4, pc} + .align 2, 0 +_022E94C8: .word ov11_02320AD4 +_022E94CC: .word ov11_02320AEC + arm_func_end GroundMainNextDay + + arm_func_start ov11_022E94D0 +ov11_022E94D0: ; 0x022E94D0 + stmdb sp!, {r4, r5, r6, lr} + ldr r3, _022E9550 ; =ov11_02324FA0 + mov r5, r0 + ldr r0, [r3, #0x1c] + mov r4, r1 + mov r6, r2 + cmp r0, #0 + bne _022E9548 + ldr r1, _022E9554 ; =ov11_02320B10 + mov r2, r5 + mov r3, r6 + mov r0, #1 + bl Debug_Print + ldr r0, _022E9550 ; =ov11_02324FA0 + mov r1, #1 + str r1, [r0, #0x1c] + str r1, [r0, #0x10] + str r6, [r0, #0x18] + cmp r4, #0 + movge r1, #3 + movlt r1, #4 + ldr r0, _022E9550 ; =ov11_02324FA0 + cmp r4, #0 + str r1, [r0, #0x14] + strh r5, [r0, #8] + ldr r1, _022E9550 ; =ov11_02324FA0 + movlt r4, #0 + mov r0, #1 + str r4, [r1, #0xc] + ldmia sp!, {r4, r5, r6, pc} +_022E9548: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022E9550: .word ov11_02324FA0 +_022E9554: .word ov11_02320B10 + arm_func_end ov11_022E94D0 + + arm_func_start ov11_022E9558 +ov11_022E9558: ; 0x022E9558 + ldr r1, _022E9588 ; =ov11_02324FA0 + ldr r2, [r1, #0x1c] + cmp r2, #0 + movne r0, #0 + bxne lr + mov r2, #3 + str r2, [r1, #0x1c] + mov r2, #1 + str r2, [r1, #0x10] + str r0, [r1, #0x18] + mov r0, r2 + bx lr + .align 2, 0 +_022E9588: .word ov11_02324FA0 + arm_func_end ov11_022E9558 + + arm_func_start ov11_022E958C +ov11_022E958C: ; 0x022E958C + stmdb sp!, {r4, lr} + ldr r1, _022E95D4 ; =ov11_02324FA0 + mov r4, r0 + ldr r0, [r1, #0x1c] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, pc} + ldr r1, _022E95D8 ; =ov11_02320B34 + mov r2, r4 + mov r0, #1 + bl Debug_Print + ldr r1, _022E95D4 ; =ov11_02324FA0 + mov r0, #4 + str r0, [r1, #0x1c] + mov r0, #1 + str r0, [r1, #0x10] + str r4, [r1, #0x18] + ldmia sp!, {r4, pc} + .align 2, 0 +_022E95D4: .word ov11_02324FA0 +_022E95D8: .word ov11_02320B34 + arm_func_end ov11_022E958C + + arm_func_start JumpToTitleScreen +JumpToTitleScreen: ; 0x022E95DC + stmdb sp!, {r4, lr} + ldr r1, _022E963C ; =ov11_02324FA0 + mov r4, r0 + ldr r0, [r1, #0x1c] + cmp r0, #0 + bne _022E9634 + ldr r1, _022E9640 ; =ov11_02320B58 + mov r2, r4 + mov r0, #1 + bl Debug_Print + ldr r0, _022E963C ; =ov11_02324FA0 + mov r1, #6 + str r1, [r0, #0x1c] + cmp r4, #0 + movge r1, #1 + strge r1, [r0, #0x10] + strge r4, [r0, #0x18] + movlt r1, #0 + strlt r1, [r0, #0x10] + strlt r1, [r0, #0x18] + mov r0, #1 + ldmia sp!, {r4, pc} +_022E9634: + mov r0, #0 + ldmia sp!, {r4, pc} + .align 2, 0 +_022E963C: .word ov11_02324FA0 +_022E9640: .word ov11_02320B58 + arm_func_end JumpToTitleScreen + + arm_func_start ov11_022E9644 +ov11_022E9644: ; 0x022E9644 + stmdb sp!, {r4, lr} + ldr r1, _022E968C ; =ov11_02324FA0 + mov r4, r0 + ldr r0, [r1, #0x1c] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, pc} + ldr r1, _022E9690 ; =ov11_02320B78 + mov r2, r4 + mov r0, #1 + bl Debug_Print + ldr r1, _022E968C ; =ov11_02324FA0 + mov r0, #7 + str r0, [r1, #0x1c] + mov r0, #1 + str r0, [r1, #0x10] + str r4, [r1, #0x18] + ldmia sp!, {r4, pc} + .align 2, 0 +_022E968C: .word ov11_02324FA0 +_022E9690: .word ov11_02320B78 + arm_func_end ov11_022E9644 + + arm_func_start ReturnToTitleScreen +ReturnToTitleScreen: ; 0x022E9694 + stmdb sp!, {r4, lr} + ldr r1, _022E96DC ; =ov11_02324FA0 + mov r4, r0 + ldr r0, [r1, #0x1c] + cmp r0, #0 + movne r0, #0 + ldmneia sp!, {r4, pc} + ldr r1, _022E96E0 ; =ov11_02320B9C + mov r2, r4 + mov r0, #1 + bl Debug_Print + ldr r1, _022E96DC ; =ov11_02324FA0 + mov r0, #8 + str r0, [r1, #0x1c] + mov r0, #1 + str r0, [r1, #0x10] + str r4, [r1, #0x18] + ldmia sp!, {r4, pc} + .align 2, 0 +_022E96DC: .word ov11_02324FA0 +_022E96E0: .word ov11_02320B9C + arm_func_end ReturnToTitleScreen 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_022EA024.s b/asm/overlay_11_022EA024.s new file mode 100644 index 00000000..faac1cd5 --- /dev/null +++ b/asm/overlay_11_022EA024.s @@ -0,0 +1,11505 @@ + .include "asm/macros.inc" + .include "overlay_11_022EA024.inc" + + .text + + 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..3626b10f 100644 --- a/asm/overlay_11_022EE5E4.s +++ b/asm/overlay_11_022EE5E4.s @@ -15176,34239 +15176,3 @@ GetHeightLiveActor: ; 0x022FAB30 str r0, [r2] bx lr arm_func_end GetHeightLiveActor - - arm_func_start SetHeightLiveActor -SetHeightLiveActor: ; 0x022FAB44 - str r1, [r0, #0x16c] - bx lr - arm_func_end SetHeightLiveActor - - arm_func_start GetDirectionLiveActor -GetDirectionLiveActor: ; 0x022FAB4C - add r0, r0, #0x100 - ldrsb r0, [r0, #0x5a] - strb r0, [r1] - bx lr - arm_func_end GetDirectionLiveActor - - arm_func_start SetDirectionLiveActor -SetDirectionLiveActor: ; 0x022FAB5C - mvn r2, #0 - cmp r1, r2 - strneb r1, [r0, #0x15a] - addne r1, r0, #0x100 - ldrnesb r2, [r1, #0x75] - ldrnesb r1, [r1, #0x5a] - cmpne r2, r1 - movne r1, #1 - strneb r1, [r0, #0x174] - bx lr - arm_func_end SetDirectionLiveActor - - arm_func_start SetAnimationLiveActor -SetAnimationLiveActor: ; 0x022FAB84 - ldrh r2, [r0] - cmp r2, #2 - bhi _022FABC0 - ldrsh r3, [r0, #0xa] - ldr r2, _022FABC8 ; =0x00000119 - cmp r3, r2 - addne r2, r2, #0x258 - cmpne r3, r2 - bne _022FABC0 - and r2, r1, #0xff - cmp r2, #0x16 - andhs r1, r1, #0x1f00 - orrhs r1, r1, #0x53 - movhs r1, r1, lsl #0x10 - movhs r1, r1, lsr #0x10 -_022FABC0: - ldr ip, _022FABCC ; =ChangeActorAnimation - bx ip - .align 2, 0 -_022FABC8: .word 0x00000119 -_022FABCC: .word ChangeActorAnimation - arm_func_end SetAnimationLiveActor - - arm_func_start SetEffectLiveActor -SetEffectLiveActor: ; 0x022FABD0 - add ip, r0, #0x100 - strh r1, [ip, #0x82] - strh r2, [ip, #0x84] - str r3, [r0, #0x188] - bx lr - arm_func_end SetEffectLiveActor - - arm_func_start GetAnimationStatusLiveActor -GetAnimationStatusLiveActor: ; 0x022FABE4 - stmdb sp!, {r3, lr} - ldrb r1, [r0, #0x174] - cmp r1, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - add r0, r0, #0x18c - bl ov11_022F4990 - ldmia sp!, {r3, pc} - arm_func_end GetAnimationStatusLiveActor - - arm_func_start GetEffectStatusLiveActor -GetEffectStatusLiveActor: ; 0x022FAC04 - stmdb sp!, {r3, lr} - add r1, r0, #0x100 - ldrsh r1, [r1, #0x84] - cmp r1, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - add r0, r0, #0x18c - bl ov11_022F49B0 - ldmia sp!, {r3, pc} - arm_func_end GetEffectStatusLiveActor - - arm_func_start GetAttributeBitfieldLiveActor -GetAttributeBitfieldLiveActor: ; 0x022FAC28 - ldr r0, [r0, #0x128] - str r0, [r1] - bx lr - arm_func_end GetAttributeBitfieldLiveActor - - arm_func_start SetAttributeBitfieldLiveActorWrapper -SetAttributeBitfieldLiveActorWrapper: ; 0x022FAC34 - ldr ip, _022FAC40 ; =SetAttributeBitfieldLiveActor - ldrsh r0, [r0] - bx ip - .align 2, 0 -_022FAC40: .word SetAttributeBitfieldLiveActor - arm_func_end SetAttributeBitfieldLiveActorWrapper - - arm_func_start ResetAttributeBitfieldLiveActorWrapper -ResetAttributeBitfieldLiveActorWrapper: ; 0x022FAC44 - ldr ip, _022FAC50 ; =ResetAttributeBitfieldLiveActor - ldrsh r0, [r0] - bx ip - .align 2, 0 -_022FAC50: .word ResetAttributeBitfieldLiveActor - arm_func_end ResetAttributeBitfieldLiveActorWrapper - - arm_func_start SetBlinkLiveActor -SetBlinkLiveActor: ; 0x022FAC54 - ldr ip, _022FAC60 ; =ov11_022F4984 - add r0, r0, #0x18c - bx ip - .align 2, 0 -_022FAC60: .word ov11_022F4984 - arm_func_end SetBlinkLiveActor - - arm_func_start SetPositionOffsetLiveActor -SetPositionOffsetLiveActor: ; 0x022FAC64 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - ldr r2, _022FAE54 ; =ov11_02321684 - mov r5, r0 - ldr r0, [r2, #0xd4] - ldr r3, [r2, #0xd0] - str r0, [sp, #4] - str r3, [sp] - ldr r4, [r5, #0x15c] - ldr r3, [r1] - add r0, r5, #0x38 - add r3, r4, r3 - str r3, [sp] - ldr r4, [r5, #0x160] - ldr r3, [r1, #4] - add r3, r4, r3 - str r3, [sp, #4] - ldr r3, [r2, #0xc8] - ldr r2, [r2, #0xcc] - str r3, [sp, #8] - str r2, [sp, #0xc] - ldr r3, [r5, #0x164] - ldr r2, [r1] - add r2, r3, r2 - str r2, [sp, #8] - ldr r2, [r5, #0x168] - ldr r1, [r1, #4] - add r1, r2, r1 - str r1, [sp, #0xc] - bl ov11_022DC958 - cmp r0, #0 - bne _022FAE0C - ldr r1, [r5, #0x28] - ldr r0, [sp] - mov r4, #0 - cmp r0, r1 - bge _022FAD14 - str r1, [sp] - ldr r1, [r5, #0x28] - ldr r0, [r5, #0xc] - mov r4, #1 - add r0, r1, r0 - str r0, [sp, #8] - b _022FAD3C -_022FAD14: - ldr r1, [r5, #0x30] - ldr r0, [sp, #8] - cmp r0, r1 - blt _022FAD3C - ldr r0, [r5, #0xc] - mov r4, #1 - sub r0, r1, r0 - str r0, [sp] - ldr r0, [r5, #0x30] - str r0, [sp, #8] -_022FAD3C: - ldr r1, [r5, #0x2c] - ldr r0, [sp, #4] - cmp r0, r1 - bge _022FAD68 - str r1, [sp, #4] - ldr r1, [r5, #0x2c] - ldr r0, [r5, #0x10] - mov r4, #1 - add r0, r1, r0 - str r0, [sp, #0xc] - b _022FAD90 -_022FAD68: - ldr r1, [r5, #0x34] - ldr r0, [sp, #0xc] - cmp r0, r1 - blt _022FAD90 - ldr r0, [r5, #0x10] - mov r4, #1 - sub r0, r1, r0 - str r0, [sp, #4] - ldr r0, [r5, #0x34] - str r0, [sp, #0xc] -_022FAD90: - add r1, sp, #0 - add r2, sp, #8 - mov r0, r5 - bl ov11_022F921C - movs r6, r0 - beq _022FADC4 - ldr r0, [r5, #0x128] - tst r0, #0x20 - beq _022FAE48 - ldrsh r0, [r5] - mov r1, #0x1000000 - bl SetAttributeBitfieldLiveActor - b _022FAE48 -_022FADC4: - ldr r1, [sp] - ldr r0, [sp, #4] - cmp r4, #0 - str r1, [r5, #0x15c] - str r0, [r5, #0x160] - ldr r1, [sp, #8] - ldr r0, [sp, #0xc] - str r1, [r5, #0x164] - str r0, [r5, #0x168] - beq _022FAE2C - ldr r0, [r5, #0x128] - tst r0, #0x20 - beq _022FAE04 - ldrsh r0, [r5] - mov r1, #0x1000000 - bl SetAttributeBitfieldLiveActor -_022FAE04: - mov r6, #0x40 - b _022FAE48 -_022FAE0C: - ldr r1, [sp] - ldr r0, [sp, #4] - str r1, [r5, #0x15c] - str r0, [r5, #0x160] - ldr r1, [sp, #8] - ldr r0, [sp, #0xc] - str r1, [r5, #0x164] - str r0, [r5, #0x168] -_022FAE2C: - ldr r0, [r5, #0x128] - tst r0, #0x20 - beq _022FAE44 - ldrsh r0, [r5] - mov r1, #0x1000000 - bl SetAttributeBitfieldLiveActor -_022FAE44: - mov r6, #0 -_022FAE48: - mov r0, r6 - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FAE54: .word ov11_02321684 - arm_func_end SetPositionOffsetLiveActor - - arm_func_start ov11_022FAE58 -ov11_022FAE58: ; 0x022FAE58 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x9c - ldr r1, _022FBA18 ; =ov11_02324CF8 - mvn r2, #0 - ldmia r1, {r0, r5} - add r0, r0, #0x300 - strh r2, [r0, #0x28] - ldr r0, [r1] - mov r4, #0 - ldr fp, _022FBA1C ; =ov11_02321684 - str r4, [r0, #0x32c] - ldr sl, [fp, #0xb8] - ldr sb, [fp, #0xbc] - ldr r8, [fp, #8] - ldr r7, [fp, #0xc] - ldr r6, [fp, #0x150] - ldr r3, [fp, #0x154] - ldr r2, [fp, #0xb0] - ldr r1, [fp, #0xb4] - ldr r0, [fp, #0x158] - ldr fp, [fp, #0x15c] - str sl, [sp, #0x2c] - str sb, [sp, #0x30] - str r8, [sp, #0x24] - str r7, [sp, #0x28] - str r6, [sp, #0x1c] - str r3, [sp, #0x20] - str r2, [sp, #0x14] - str r1, [sp, #0x18] - str r0, [sp, #0xc] - str fp, [sp, #0x10] -_022FAED4: - ldrsh r1, [r5, #2] - mvn r0, #0 - cmp r1, r0 - ldrneb r0, [r5, #4] - cmpne r0, #0 - beq _022FB894 - add r0, r5, #0x38 - bl FuncThatCallsRunNextOpcode - cmp r0, #0 - beq _022FAF24 - mov r1, #1 - strb r1, [r5, #0x152] - strb r1, [r5, #0x156] - mov r1, #0 - str r1, [r5, #0x14c] - cmp r0, #6 - bne _022FB864 - mov r0, r4 - bl DeleteLiveActor - b _022FB894 -_022FAF24: - ldrsh r1, [r5, #6] - mvn r0, #0 - cmp r1, r0 - bne _022FAF4C - mov r0, #1 - strb r0, [r5, #0x152] - strb r0, [r5, #0x156] - mov r0, #0 - str r0, [r5, #0x14c] - b _022FB864 -_022FAF4C: - ldr r1, [r5, #0x128] - tst r1, #1 - beq _022FB39C - mov r1, #0 - str r1, [sp, #0x98] - strb r0, [sp, #8] - str r1, [sp, #0x94] - bl ov11_022F9074 - cmp r0, #0 - moveq r0, #1 - streqb r0, [r5, #0x152] - streqb r0, [r5, #0x156] - beq _022FAFA0 - ldrb r0, [r5, #0x156] - cmp r0, #0 - beq _022FAFA0 - bl sub_02006DC8 - add r0, r5, #0x12c - bl ov11_022EAF60 - mov r0, #0 - strb r0, [r5, #0x156] -_022FAFA0: - ldr r2, _022FBA18 ; =ov11_02324CF8 - add r3, sp, #0x8c - ldr r0, [r2] - add r1, sp, #0x98 - add r0, r0, #0x300 - strh r4, [r0, #0x28] - ldr r0, [r2] - add r2, sp, #8 - str r5, [r0, #0x32c] - str r3, [sp] - ldr r6, [r5, #0x128] - add r3, sp, #0x94 - add r0, r5, #0x12c - str r6, [sp, #4] - bl ov11_022EAA24 - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _022FB864 -_022FAFE8: ; jump table - b _022FB864 ; case 0 - b _022FB00C ; case 1 - b _022FB090 ; case 2 - b _022FB108 ; case 3 - b _022FB270 ; case 4 - b _022FB864 ; case 5 - b _022FB068 ; case 6 - b _022FB864 ; case 7 - b _022FB068 ; case 8 -_022FB00C: - ldr r0, [sp, #0x98] - cmp r0, #0 - beq _022FB024 - sub r0, r0, #3 - cmp r0, #2 - bhi _022FB040 -_022FB024: - ldrsb r1, [sp, #8] - mvn r0, #0 - cmp r1, r0 - beq _022FB048 - add r0, r5, #0x12c - bl ov11_022EAF60 - b _022FB048 -_022FB040: - add r0, r5, #0x12c - bl ov11_022EAF60 -_022FB048: - ldr r1, [sp, #0x94] - mov r0, r5 - str r1, [sp] - ldrsb r2, [sp, #8] - ldr r1, [sp, #0x98] - mov r3, #1 - bl ov11_022FA1DC - b _022FB864 -_022FB068: - add r0, r5, #0x12c - bl ov11_022EAF60 - ldr r1, [sp, #0x94] - mov r0, r5 - str r1, [sp] - ldrsb r2, [sp, #8] - ldr r1, [sp, #0x98] - mov r3, #1 - bl ov11_022FA1DC - b _022FB864 -_022FB090: - ldr r1, [r5, #0x15c] - ldr r0, [r5, #0x14] - ldr r2, [sp, #0x90] - add r1, r1, r0 - mov r0, r1, asr #7 - ldr r3, [sp, #0x8c] - add r0, r1, r0, lsr #24 - sub r0, r3, r0, asr #8 - str r0, [sp, #0x84] - ldr r1, [r5, #0x160] - ldr r0, [r5, #0x18] - add r2, r2, #8 - add r1, r1, r0 - mov r0, r1, asr #7 - add r0, r1, r0, lsr #24 - sub r1, r2, r0, asr #8 - add r0, sp, #0x84 - str r1, [sp, #0x88] - bl sub_020054C0 - strb r0, [sp, #8] - add r0, r5, #0x12c - bl ov11_022EAF60 - mov r0, #0 - str r0, [sp] - ldrsb r2, [sp, #8] - ldr r1, [sp, #0x98] - mov r0, r5 - mov r3, #1 - bl ov11_022FA1DC - b _022FB864 -_022FB108: - ldr r1, [r5, #0x15c] - ldr r0, [r5, #0x14] - ldr r3, [sp, #0x90] - add r1, r1, r0 - mov r0, r1, asr #7 - ldr r2, [sp, #0x8c] - add r0, r1, r0, lsr #24 - sub r0, r2, r0, asr #8 - str r0, [sp, #0x7c] - ldr r2, [r5, #0x160] - ldr r1, [r5, #0x18] - add r3, r3, #8 - add r2, r2, r1 - mov r1, r2, asr #7 - add r1, r2, r1, lsr #24 - sub r2, r3, r1, asr #8 - str r2, [sp, #0x80] - ldr r1, [r5, #0x14c] - sub r1, r1, #3 - cmp r1, #2 - bhi _022FB194 - mvn r1, #3 - cmp r0, r1 - blt _022FB1CC - cmp r0, #4 - bgt _022FB1CC - cmp r2, r1 - blt _022FB1CC - cmp r2, #4 - bgt _022FB1CC - mov r1, #0 - add r0, r5, #0x12c - str r1, [r5, #0x14c] - bl ov11_022EAF60 - b _022FB864 -_022FB194: - mvn r1, #0xb - cmp r0, r1 - blt _022FB1CC - cmp r0, #0xc - bgt _022FB1CC - cmp r2, r1 - blt _022FB1CC - cmp r2, #0xc - bgt _022FB1CC - mov r1, #0 - add r0, r5, #0x12c - str r1, [r5, #0x14c] - bl ov11_022EAF60 - b _022FB864 -_022FB1CC: - add r0, sp, #0x7c - bl sub_020054C0 - strb r0, [sp, #8] - ldrsb r2, [sp, #8] - mvn r0, #0 - cmp r2, r0 - beq _022FB264 - ldr r0, [sp, #0x98] - cmp r0, #0xc - beq _022FB208 - cmp r0, #0xd - beq _022FB224 - cmp r0, #0xe - beq _022FB240 - b _022FB25C -_022FB208: - mov r6, #0 - mov r0, r5 - mov r1, #3 - mov r3, #1 - str r6, [sp] - bl ov11_022FA1DC - b _022FB264 -_022FB224: - mov r6, #0 - mov r0, r5 - mov r1, #4 - mov r3, #1 - str r6, [sp] - bl ov11_022FA1DC - b _022FB264 -_022FB240: - mov r6, #0 - mov r0, r5 - mov r1, #5 - mov r3, #1 - str r6, [sp] - bl ov11_022FA1DC - b _022FB264 -_022FB25C: - mov r0, #0 - str r0, [r5, #0x14c] -_022FB264: - add r0, r5, #0x12c - bl ov11_022EAF60 - b _022FB864 -_022FB270: - ldr r0, [sp, #0x94] - ldr r6, [sp, #0x90] - cmp r0, #0 - ldr r2, [r5, #0x15c] - ldr r0, [r5, #0x14] - ldr r3, [sp, #0x8c] - add r2, r2, r0 - mov r0, r2, asr #7 - add r0, r2, r0, lsr #24 - sub r0, r3, r0, asr #8 - str r0, [sp, #0x74] - ldr r3, [r5, #0x160] - ldr r2, [r5, #0x18] - movne r1, #1 - add r3, r3, r2 - mov r2, r3, asr #7 - add r6, r6, #8 - add r2, r3, r2, lsr #24 - sub r3, r6, r2, asr #8 - moveq r1, #0 - mvn r2, #1 - str r3, [sp, #0x78] - cmp r0, r2 - and r6, r1, #0xff - blt _022FB300 - cmp r0, #2 - bgt _022FB300 - cmp r3, r2 - blt _022FB300 - cmp r3, #2 - bgt _022FB300 - mov r1, #0 - add r0, r5, #0x12c - str r1, [r5, #0x14c] - bl ov11_022EAF60 - b _022FB864 -_022FB300: - add r0, sp, #0x74 - bl sub_020054C0 - strb r0, [sp, #8] - ldrsb r2, [sp, #8] - mvn r0, #0 - cmp r2, r0 - beq _022FB864 - ldr r0, [sp, #0x98] - cmp r0, #0xf - beq _022FB33C - cmp r0, #0x10 - beq _022FB358 - cmp r0, #0x11 - beq _022FB374 - b _022FB390 -_022FB33C: - mov r7, #0 - mov r0, r5 - mov r3, r6 - mov r1, #6 - str r7, [sp] - bl ov11_022FA1DC - b _022FB864 -_022FB358: - mov r7, #0 - mov r0, r5 - mov r3, r6 - mov r1, #7 - str r7, [sp] - bl ov11_022FA1DC - b _022FB864 -_022FB374: - mov r7, #0 - mov r0, r5 - mov r3, r6 - mov r1, #8 - str r7, [sp] - bl ov11_022FA1DC - b _022FB864 -_022FB390: - mov r0, #0 - str r0, [r5, #0x14c] - b _022FB864 -_022FB39C: - tst r1, #2 - beq _022FB864 - mov r0, #0 - str r0, [r5, #0x14c] - add r1, r5, #0x100 - ldr r3, _022FBA18 ; =ov11_02324CF8 - ldrsh r8, [r1, #0x50] - ldr r6, [r3] - mov r2, #0xc - smlabb r7, r8, r2, r6 - cmp r8, #0 - beq _022FB864 - mov r2, #0x300 - strh r2, [r1, #0x76] - mov r2, #1 - strh r2, [r1, #0x78] - ldr r8, [r5, #0x15c] - ldr r6, [r5, #0x14] - ldr r2, [r5, #0x160] - ldr r1, [r5, #0x18] - add r6, r8, r6 - add r2, r2, r1 - str r6, [sp, #0x3c] - str r2, [sp, #0x40] - ldr r1, [r7, #8] - str r6, [sp, #0x34] - str r2, [sp, #0x38] - cmp r1, #0 - bge _022FB42C - ldr r1, [r3] - ldr r1, [r1, #0x24] - cmp r1, #0 - blt _022FB864 - str r1, [r7, #8] - str r0, [r7] - str r0, [r7, #4] -_022FB42C: - ldr sl, [r7] - mov sb, #1 - ldr lr, _022FBA18 ; =ov11_02324CF8 - mov fp, #0xc - b _022FB570 -_022FB440: - ldr ip, [lr] - ldr r0, [r7, #8] - add r1, ip, #0x28 - mla r8, r0, fp, r1 - ldr r6, [r8, #4] - ldr r2, [sp, #0x3c] - ldr r1, [r8, #8] - sub r3, r6, r2 - str r3, [sp, #0x44] - cmp r3, #0 - ldr r0, [sp, #0x40] - sub r0, r1, r0 - str r0, [sp, #0x48] - ble _022FB494 - cmp r3, sl - addgt r0, r2, sl - strgt r0, [sp, #0x3c] - movgt sb, #0 - strle r6, [sp, #0x3c] - ldr r1, [sp, #0x44] - b _022FB4C4 -_022FB494: - cmp r3, #0 - bge _022FB4C0 - rsb r0, sl, #0 - cmp r3, r0 - sublt r0, r2, sl - strlt r0, [sp, #0x3c] - ldr r0, [sp, #0x44] - movlt sb, #0 - strge r6, [sp, #0x3c] - rsb r1, r0, #0 - b _022FB4C4 -_022FB4C0: - mov r1, #0 -_022FB4C4: - ldr r0, [sp, #0x48] - cmp r0, #0 - ble _022FB4FC - cmp r0, sl - ldrgt r0, [sp, #0x40] - movgt sb, #0 - addgt r0, r0, sl - strgt r0, [sp, #0x40] - bgt _022FB530 - ldr r2, [r8, #8] - cmp r0, r1 - str r2, [sp, #0x40] - movgt r1, r0 - b _022FB530 -_022FB4FC: - bge _022FB530 - rsb r2, sl, #0 - cmp r0, r2 - ldrlt r0, [sp, #0x40] - movlt sb, #0 - sublt r0, r0, sl - strlt r0, [sp, #0x40] - blt _022FB530 - ldr r3, [r8, #8] - rsb r2, r1, #0 - cmp r0, r2 - str r3, [sp, #0x40] - rsblt r1, r0, #0 -_022FB530: - cmp sb, #0 - beq _022FB570 - sub sl, sl, r1 - cmp sl, #0 - movle sb, #0 - ble _022FB570 - ldr r0, [ip, #0x24] - ldr r1, [r7, #8] - cmp r1, r0 - moveq sb, #0 - beq _022FB570 - add r0, r1, #1 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #26 - add r0, r1, r0, ror #26 - str r0, [r7, #8] -_022FB570: - cmp sb, #0 - bne _022FB440 - ldr r0, _022FBA18 ; =ov11_02324CF8 - ldr r3, [r7, #8] - ldr r1, [r0] - mov r6, #0 - ldr r0, [r1, #0x24] - cmp r0, r3 - ble _022FB5BC - add sb, r3, #1 - mov r2, #0xc - b _022FB5B0 -_022FB5A0: - mla r8, sb, r2, r1 - ldr r8, [r8, #0x28] - add sb, sb, #1 - add r6, r6, r8 -_022FB5B0: - cmp sb, r0 - blt _022FB5A0 - b _022FB608 -_022FB5BC: - bge _022FB608 - add sb, r3, #1 - mov r2, #0xc - b _022FB5DC -_022FB5CC: - mla r8, sb, r2, r1 - ldr r8, [r8, #0x28] - add sb, sb, #1 - add r6, r6, r8 -_022FB5DC: - cmp sb, #0x40 - blt _022FB5CC - mov sb, #0 - mov r2, #0xc - b _022FB600 -_022FB5F0: - mla r8, sb, r2, r1 - ldr r8, [r8, #0x28] - add sb, sb, #1 - add r6, r6, r8 -_022FB600: - cmp sb, r0 - blt _022FB5F0 -_022FB608: - ldr r0, _022FBA18 ; =ov11_02324CF8 - ldr lr, [sp, #0x14] - ldr r2, [r0] - ldr ip, [sp, #0x18] - add r8, r5, #0x100 - add r0, r2, #0x28 - mov r1, #0xc - mla r0, r3, r1, r0 - ldrsh r3, [r8, #0x50] - ldr sl, _022FBA20 ; =ov11_023217EC - ldr r8, [sp, #0x40] - mla r2, r3, r1, r2 - ldmib r0, {r1, sb} - ldr r0, [sp, #0x3c] - sub r8, sb, r8 - sub r0, r1, r0 - ldr r2, [r2, #-8] - ldr r1, [sl, r3, lsl #2] - str r8, [sp, #0x50] - str lr, [sp, #0x54] - str r0, [sp, #0x4c] - str ip, [sp, #0x58] - add r8, r2, r1 - bl abs - str r0, [sp, #0x54] - ldr r0, [sp, #0x50] - bl abs - ldr r1, [sp, #0x54] - str r0, [sp, #0x58] - cmp r1, r0 - movle r1, r0 - add r1, r6, r1 - str r1, [r7, #4] - cmp r1, r8 - bgt _022FB6A8 - ldr r0, [r7] - cmp r0, #0 - subgt r0, r0, #0x100 - strgt r0, [r7] - b _022FB700 -_022FB6A8: - add r0, r5, #0x100 - ldrsh r2, [r0, #0x50] - mov r0, #0x1800 - mul r0, r2, r0 - cmp r1, r0 - bgt _022FB6D4 - ldr r0, [r7] - cmp r0, #0x100 - addlt r0, r0, #0x100 - strlt r0, [r7] - b _022FB700 -_022FB6D4: - ldr r1, _022FBA18 ; =ov11_02324CF8 - mov r0, #0xc - ldr r1, [r1] - mla r0, r2, r0, r1 - ldr r1, [r0, #-0xc] - ldr r0, [r7] - cmp r1, #0x100 - movlt r1, #0x100 - cmp r0, r1 - addlt r0, r0, #0x100 - strlt r0, [r7] -_022FB700: - ldr r2, _022FBA18 ; =ov11_02324CF8 - ldr r0, [r7, #8] - ldr r1, [r2] - ldr r3, [r1, #0x24] - add r1, r3, #0x40 - sub r0, r1, r0 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #26 - add r0, r1, r0, ror #26 - cmp r0, #0x3c - blt _022FB75C - add r0, r3, #5 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #26 - add r3, r1, r0, ror #26 - str r3, [r7, #8] - ldr r1, [r2] - mov r0, #0xc - mla r0, r3, r0, r1 - ldr r1, [r0, #0x2c] - ldr r0, [r0, #0x30] - str r1, [sp, #0x3c] - str r0, [sp, #0x40] -_022FB75C: - add r1, sp, #0x3c - mov r0, r5 - bl SetPositionLiveActor - cmp r0, #0 - bne _022FB864 - ldr r3, [sp, #0x3c] - ldr r2, [sp, #0x34] - ldr r1, [sp, #0x40] - ldr r0, [sp, #0x38] - sub r2, r3, r2 - sub r1, r1, r0 - add r0, sp, #0x5c - str r2, [sp, #0x5c] - str r1, [sp, #0x60] - bl sub_020054C0 - add r2, r5, #0x100 - mov r1, r0 - ldrsb r0, [r2, #0x5a] - bl sub_02005430 - strb r0, [r5, #0x15a] - ldr r0, [r7] - cmp r0, #0 - ble _022FB7F4 - mov r0, #4 - str r0, [r5, #0x17c] - ldr r0, [r7] - ldr r1, [r5, #0x128] - cmp r0, #0x200 - movgt r0, #0xa00 - movle r0, #0x800 - mov r0, r0, lsl #0x10 - tst r1, #0x20 - mov r6, r0, asr #0x10 - beq _022FB818 - ldrsh r0, [r5] - mov r1, #0x1000000 - bl SetAttributeBitfieldLiveActor - b _022FB818 -_022FB7F4: - mov r0, #0 - str r0, [r5, #0x17c] - ldr r0, [r5, #0x128] - ldr r6, _022FBA24 ; =0x00000807 - tst r0, #0x20 - beq _022FB818 - ldrsh r0, [r5] - mov r1, #0x1000000 - bl SetAttributeBitfieldLiveActor -_022FB818: - ldrb r0, [r5, #0x174] - cmp r0, #0 - addeq r0, r5, #0x100 - ldreqsh r1, [r0, #0x80] - cmpeq r6, r1 - ldreqsb r1, [r0, #0x75] - ldreqsb r0, [r0, #0x5a] - cmpeq r1, r0 - beq _022FB864 - mov r0, #0 - strb r0, [r5, #0x174] - add r2, r5, #0x100 - ldrsb r1, [r2, #0x5a] - add r0, r5, #0x18c - strb r1, [r5, #0x175] - strh r6, [r2, #0x80] - ldrsh r1, [r2, #0x80] - ldrsb r2, [r2, #0x75] - bl SetAnimDataFields2 -_022FB864: - ldrb r0, [r5, #0x174] - cmp r0, #0 - beq _022FB894 - mov r0, #0 - strb r0, [r5, #0x174] - add r2, r5, #0x100 - ldrsb r1, [r2, #0x5a] - add r0, r5, #0x18c - strb r1, [r5, #0x175] - ldrsh r1, [r2, #0x80] - ldrsb r2, [r2, #0x75] - bl SetAnimDataFields2 -_022FB894: - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 - cmp r4, #0x18 - add r5, r5, #0x250 - blt _022FAED4 - ldr r7, _022FBA18 ; =ov11_02324CF8 - mov r2, #0 - ldr r5, [r7] - ldr r1, [r7, #4] - sub r0, r2, #1 - str r2, [r5] - str r2, [r5, #4] - ldrsh r3, [r1, #2] - cmp r3, r0 - bne _022FB8DC - bl InitPartnerFollowData - b _022FBA10 -_022FB8DC: - ldr r0, [r1, #0x128] - tst r0, #2 - beq _022FBA0C - ldr r0, [r7] - ldr r6, [r0, #0x24] - cmp r6, #0 - bge _022FB948 - str r2, [r0, #0x24] - str r2, [r0, #0x28] - ldr r4, [r1, #0x15c] - ldr r3, [r1, #0x14] - add r3, r4, r3 - str r3, [r0, #0x2c] - ldr r3, [r1, #0x160] - ldr r1, [r1, #0x18] - add r1, r3, r1 - str r1, [r0, #0x30] - ldr r1, [r7] - mov r0, r2 -_022FB928: - str r0, [r1, #8] - str r0, [r1] - add r2, r2, #1 - str r0, [r1, #4] - cmp r2, #3 - add r1, r1, #0xc - blt _022FB928 - b _022FBA10 -_022FB948: - add r2, r6, #1 - mov r3, r2, lsr #0x1f - rsb r2, r3, r2, lsl #26 - add r2, r3, r2, ror #26 - str r2, [r0, #0x24] - ldr r3, [r7] - mov r0, #0xc - ldr r2, [r3, #0x24] - add r3, r3, #0x28 - mla r4, r2, r0, r3 - ldr r8, [r1, #0x15c] - ldr r3, [r1, #0x14] - ldr r2, _022FBA1C ; =ov11_02321684 - add r3, r8, r3 - str r3, [r4, #4] - ldr r3, [r1, #0x160] - ldr r1, [r1, #0x18] - add r1, r3, r1 - str r1, [r4, #8] - ldr r1, [r7] - ldr r3, [r2, #0x18] - add r1, r1, #0x28 - mla r7, r6, r0, r1 - ldr r1, [r2, #0x1c] - ldr r0, [r7, #8] - ldr r2, [r4, #8] - ldr r8, [r4, #4] - sub r2, r2, r0 - ldr r7, [r7, #4] - str r2, [sp, #0x70] - sub r0, r8, r7 - str r3, [sp, #0x64] - str r0, [sp, #0x6c] - str r1, [sp, #0x68] - bl abs - str r0, [sp, #0x64] - ldr r0, [sp, #0x70] - bl abs - ldr r1, [sp, #0x64] - str r0, [sp, #0x68] - cmp r1, r0 - movle r1, r0 - cmp r1, #0 - ldrle r0, _022FBA18 ; =ov11_02324CF8 - str r1, [r4] - ldrle r0, [r0] - strle r6, [r0, #0x24] - strgt r1, [r5] - b _022FBA10 -_022FBA0C: - bl InitPartnerFollowData -_022FBA10: - add sp, sp, #0x9c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FBA18: .word ov11_02324CF8 -_022FBA1C: .word ov11_02321684 -_022FBA20: .word ov11_023217EC -_022FBA24: .word 0x00000807 - arm_func_end ov11_022FAE58 - - arm_func_start InitPartnerFollowData -InitPartnerFollowData: ; 0x022FBA28 - ldr r0, _022FBA64 ; =ov11_02324CF8 - mvn r2, #0 - ldr r1, [r0] - mov r3, #0 - str r2, [r1, #0x24] - ldr r1, [r0] - mov r0, r3 -_022FBA44: - str r2, [r1, #8] - str r0, [r1] - add r3, r3, #1 - str r0, [r1, #4] - cmp r3, #3 - add r1, r1, #0xc - blt _022FBA44 - bx lr - .align 2, 0 -_022FBA64: .word ov11_02324CF8 - arm_func_end InitPartnerFollowData - - arm_func_start ov11_022FBA68 -ov11_022FBA68: ; 0x022FBA68 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - ldr r0, _022FBBC0 ; =ov11_02321684 - ldr r1, _022FBBC4 ; =ov11_02324CF8 - ldr r8, [r0, #0x48] - ldr r7, [r0, #0x4c] - mov sb, #0 - ldr sl, [r1, #4] - str r8, [sp, #4] - str r7, [sp, #8] - mov fp, sb - mvn r4, #0 -_022FBA98: - ldrsh r0, [sl, #2] - cmp r0, r4 - ldrneb r0, [sl, #4] - cmpne r0, #0 - beq _022FBBA0 - str r8, [sp, #0xc] - str r7, [sp, #0x10] - ldr r1, [sl, #0x15c] - ldr r0, [sl, #0x14] - add r0, r1, r0 - str r0, [sp, #0xc] - ldr r1, [sl, #0x160] - ldr r0, [sl, #0x18] - add r0, r1, r0 - str r0, [sp, #0x10] - ldr r0, [sl, #0x17c] - ldr r6, [sl, #0x16c] - cmp r0, #0 - ldr r5, [sl, #0x170] - ble _022FBB20 - sub r0, r0, #1 - str r0, [sl, #0x17c] - cmp r0, #0 - bgt _022FBB20 - add r0, sl, #0x100 - ldrh r1, [r0, #0x78] - add r0, r1, #0xff - add r0, r0, #0xff00 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - bhi _022FBB20 - mov r0, sl - bl ChangeActorAnimation -_022FBB20: -#ifdef JAPAN - add r0, sl, #0x18c - bl ov11_022F5FE8_JP - cmp r0, #0 - beq _022FBB54 -#else - add r0, sl, #0x200 - ldrsh r1, [r0, #0x1e] - cmp r1, #0 - bge _022FBB54 - ldrsh r0, [r0, #0x18] - cmp r0, #0 - ble _022FBB54 -#endif - strb fp, [sl, #0x174] - add r0, sl, #0x100 - ldrsh r1, [r0, #0x80] - ldrsb r2, [r0, #0x75] - add r0, sl, #0x18c - bl SetAnimDataFields2 -_022FBB54: - add r3, sl, #0x100 - ldrsh r1, [r3, #0x82] - cmp r1, r4 - beq _022FBB8C - ldr r2, [sl, #0x188] - add r0, sl, #0x18c - str r2, [sp] - ldrsh r2, [r3, #0x84] - ldrsb r3, [r3, #0x5a] - bl ov11_022F5C48 - add r1, sl, #0x100 - strh r4, [r1, #0x82] - mov r0, #0 - strh r0, [r1, #0x84] -_022FBB8C: - ldrsh r1, [sl, #0xa] - add r2, sp, #0xc - add r0, sl, #0x18c - add r3, r6, r5 - bl ov11_022F5C94 -_022FBBA0: - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 - cmp sb, #0x18 - add sl, sl, #0x250 - blt _022FBA98 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FBBC0: .word ov11_02321684 -_022FBBC4: .word ov11_02324CF8 - arm_func_end ov11_022FBA68 - - arm_func_start ov11_022FBBC8 -ov11_022FBBC8: ; 0x022FBBC8 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - mov r5, r1 - mov r4, r0 - add r1, sp, #0 - mov r0, #0 - bl ov11_022EB3C8 - ldr r1, [sp] - ldr r0, [r5] - add r0, r1, r0 - str r0, [r4] - ldr r1, [sp, #4] - ldr r0, [r5, #4] - add r0, r1, r0 - str r0, [r4, #4] - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov11_022FBBC8 - - arm_func_start ov11_022FBC0C -ov11_022FBC0C: ; 0x022FBC0C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x20 - ldr sb, _022FBDB8 ; =ov11_02324CF8 - ldmia r1, {r2, r3} - add r7, r3, #8 - ldr r8, [sb] - sub r6, r2, #0xc - add r3, r2, #0xc - add r1, r7, #0x14 - ldr fp, [r8, #0x32c] - mov ip, r6, lsl #8 - sub r4, r7, #4 - mov r6, r4, lsl #8 - mov r3, r3, lsl #8 - mov lr, r1, lsl #8 - mov r5, #0 - str ip, [sp, #0x10] - str r3, [sp, #8] - str r6, [sp, #0x14] - str lr, [sp, #0xc] - str r5, [sp, #4] - str r2, [sp, #0x18] - ldr r2, [sb, #4] - mov r4, r0 - mov r1, r5 - str r7, [sp, #0x1c] - add r8, r8, #0x300 - mvn sb, #0 - b _022FBD1C -_022FBC80: - ldrsh r0, [r2, #2] - cmp r0, sb - beq _022FBD0C - ldr sl, [r2, #0x15c] - cmp sl, r3 - bge _022FBD0C - ldr sl, [r2, #0x164] - cmp sl, ip - ble _022FBD0C - ldr sl, [r2, #0x160] - cmp sl, lr - bge _022FBD0C - ldr sl, [r2, #0x168] - cmp sl, r6 - ble _022FBD0C - ldrsh sl, [r8, #0x28] - cmp r1, sl - moveq r5, #1 - beq _022FBD0C - cmp r0, #0xd - moveq r0, #1 - streq r0, [sp, #4] - beq _022FBD0C - ldr r0, [r2, #0x128] - tst r0, #0x2000 - beq _022FBD0C - add r2, sp, #8 - str r2, [sp] - add r3, sp, #0x10 - mov r0, fp - mvn r2, #0 - bl ov11_022F9F90 - strb r0, [r4] - mov r0, #0 - b _022FBDB0 -_022FBD0C: - add r0, r1, #1 - mov r0, r0, lsl #0x10 - mov r1, r0, asr #0x10 - add r2, r2, #0x250 -_022FBD1C: - cmp r1, #0x18 - blt _022FBC80 - ldr r0, [sp, #0x18] - sub r1, r7, #6 - sub r3, r0, #6 - mov r6, r1, lsl #8 - add r2, r0, #6 - add r0, r7, #6 - mov r8, r3, lsl #8 - mov r7, r2, lsl #8 - mov r3, r0, lsl #8 - add r1, sp, #0x10 - add r2, sp, #8 - mov r0, #0x2000 - str r8, [sp, #0x10] - str r7, [sp, #8] - str r6, [sp, #0x14] - str r3, [sp, #0xc] - bl ov11_022FCDB0 - movs r2, r0 - bmi _022FBD94 - add r1, sp, #8 - str r1, [sp] - add r3, sp, #0x10 - mov r0, fp - mvn r1, #0 - bl ov11_022F9F90 - strb r0, [r4] - mov r0, #1 - b _022FBDB0 -_022FBD94: - cmp r5, #0 - movne r0, #2 - bne _022FBDB0 - ldr r0, [sp, #4] - cmp r0, #0 - movne r0, #3 - mvneq r0, #0 -_022FBDB0: - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FBDB8: .word ov11_02324CF8 - arm_func_end ov11_022FBC0C - - arm_func_start ov11_022FBDBC -ov11_022FBDBC: ; 0x022FBDBC - stmdb sp!, {r3, lr} - mov r0, #0x2180 - mov r1, #6 - bl MemAlloc - ldr r1, _022FBE00 ; =ov11_02324D00 - mov r3, #0 - str r0, [r1] - mvn r2, #0 -_022FBDDC: - add r1, r3, #1 - mov r1, r1, lsl #0x10 - mov r3, r1, asr #0x10 - strh r2, [r0, #6] - cmp r3, #0x10 - add r0, r0, #0x218 - blt _022FBDDC - bl ov11_022FBE04 - ldmia sp!, {r3, pc} - .align 2, 0 -_022FBE00: .word ov11_02324D00 - arm_func_end ov11_022FBDBC - - arm_func_start ov11_022FBE04 -ov11_022FBE04: ; 0x022FBE04 - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _022FBE48 ; =ov11_02324D00 - mov r5, #0 - ldr r6, [r0] - mvn r4, #0 -_022FBE18: - ldrsh r0, [r6, #6] - cmp r0, r4 - beq _022FBE2C - mov r0, r5 - bl DeleteLiveObject -_022FBE2C: - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - cmp r5, #0x10 - add r6, r6, #0x218 - blt _022FBE18 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FBE48: .word ov11_02324D00 - arm_func_end ov11_022FBE04 - - arm_func_start ov11_022FBE4C -ov11_022FBE4C: ; 0x022FBE4C - stmdb sp!, {r3, lr} - bl ov11_022FBE04 - ldr r0, _022FBE70 ; =ov11_02324D00 - ldr r0, [r0] - bl MemFree - ldr r0, _022FBE70 ; =ov11_02324D00 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022FBE70: .word ov11_02324D00 - arm_func_end ov11_022FBE4C - - arm_func_start ov11_022FBE74 -ov11_022FBE74: ; 0x022FBE74 - mvn r1, #0 - cmp r0, r1 - beq _022FBEB8 - ldr r1, _022FBEC0 ; =ov11_02324D00 - mov r3, #0 - ldr r2, [r1] - b _022FBEB0 -_022FBE90: - ldrsh r1, [r2, #6] - cmp r1, r0 - moveq r0, r3 - bxeq lr - add r1, r3, #1 - mov r1, r1, lsl #0x10 - mov r3, r1, asr #0x10 - add r2, r2, #0x218 -_022FBEB0: - cmp r3, #0x10 - blt _022FBE90 -_022FBEB8: - mvn r0, #0 - bx lr - .align 2, 0 -_022FBEC0: .word ov11_02324D00 - arm_func_end ov11_022FBE74 - - arm_func_start ov11_022FBEC4 -ov11_022FBEC4: ; 0x022FBEC4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x10 - mov r8, r1 - ldrsh r4, [r8] - ldr r5, _022FC2C0 ; =OBJECTS - mov r1, #0xc - mov sb, r0 - smlabb r5, r4, r1, r5 - mov r7, r2 - mov sl, r3 - cmp sb, #0 - bge _022FBF58 - cmp r4, #5 - bne _022FBF08 - mov r0, r4 - bl ov11_022FBE74 - mov sb, r0 -_022FBF08: - cmp sb, #0 - bge _022FBF4C - ldr r0, _022FC2C4 ; =ov11_02324D00 - mov r3, #0 - ldr r2, [r0] - mvn r1, #0 - b _022FBF44 -_022FBF24: - ldrsh r0, [r2, #6] - cmp r0, r1 - moveq sb, r3 - beq _022FBF4C - add r0, r3, #1 - mov r0, r0, lsl #0x10 - mov r3, r0, asr #0x10 - add r2, r2, #0x218 -_022FBF44: - cmp r3, #0x10 - blt _022FBF24 -_022FBF4C: - cmp sb, #0 - mvnlt r0, #0 - blt _022FC2B8 -_022FBF58: - ldr r0, _022FC2C4 ; =ov11_02324D00 - ldrh r1, [r8] - ldr r2, [r0] - mov r0, #0x218 - str r1, [sp] - ldrsh r1, [r5] - smlabb r6, sb, r0, r2 - stmib sp, {r1, r7} - ldr r1, _022FC2C8 ; =ov11_02321E4C - mov r2, sb - mov r3, r4 - str sl, [sp, #0xc] - mov r0, #1 - bl Debug_Print - ldrsh r1, [r6, #6] - mvn r0, #0 - cmp r1, r0 - moveq r0, #1 - movne r0, #0 - ands fp, r0, #0xff - beq _022FBFBC - mov r1, #0 - add r0, r6, #0x154 - strb r1, [r6, #8] - bl ov11_022F4A14 -_022FBFBC: - sub r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - strh sb, [r6, #4] - mov r0, r0, lsr #0x10 - cmp r0, #1 - strh r4, [r6, #6] - strlsh r7, [r6, #0xa] - strlsb sl, [r6, #0xc] - mvnls r0, #0 - strlsb r0, [r6, #0xd] - bls _022FC004 - cmp fp, #0 - mvnne r0, #0 - strneh r0, [r6, #0xa] - strneb r0, [r6, #0xc] - strb sl, [r6, #0xd] -_022FC004: - ldrsh r0, [r5] - cmp r0, #0x10 - addls pc, pc, r0, lsl #2 - b _022FC100 -_022FC014: ; jump table - b _022FC100 ; case 0 - b _022FC058 ; case 1 - b _022FC0F4 ; case 2 - b _022FC0B8 ; case 3 - b _022FC0C4 ; case 4 - b _022FC0C4 ; case 5 - b _022FC0D0 ; case 6 - b _022FC0DC ; case 7 - b _022FC0E8 ; case 8 - b _022FC0AC ; case 9 - b _022FC064 ; case 10 - b _022FC058 ; case 11 - b _022FC070 ; case 12 - b _022FC0A0 ; case 13 - b _022FC094 ; case 14 - b _022FC088 ; case 15 - b _022FC07C ; case 16 -_022FC058: - mov r0, #0 - str r0, [r6, #0x12c] - b _022FC108 -_022FC064: - mov r0, #0x20000 - str r0, [r6, #0x12c] - b _022FC108 -_022FC070: - mov r0, #0x40000 - str r0, [r6, #0x12c] - b _022FC108 -_022FC07C: - mov r0, #0x20000000 - str r0, [r6, #0x12c] - b _022FC108 -_022FC088: - mov r0, #0x20c0000 - str r0, [r6, #0x12c] - b _022FC108 -_022FC094: - mov r0, #0x20c0000 - str r0, [r6, #0x12c] - b _022FC108 -_022FC0A0: - mov r0, #0x10000 - str r0, [r6, #0x12c] - b _022FC108 -_022FC0AC: - mov r0, #0x140 - str r0, [r6, #0x12c] - b _022FC108 -_022FC0B8: - ldr r0, _022FC2CC ; =0x02006100 - str r0, [r6, #0x12c] - b _022FC108 -_022FC0C4: - mov r0, #0x6100 - str r0, [r6, #0x12c] - b _022FC108 -_022FC0D0: - mov r0, #0x1100 - str r0, [r6, #0x12c] - b _022FC108 -_022FC0DC: - mov r0, #0x2100 - str r0, [r6, #0x12c] - b _022FC108 -_022FC0E8: - mov r0, #0x6000 - str r0, [r6, #0x12c] - b _022FC108 -_022FC0F4: - ldr r0, _022FC2D0 ; =0x02003100 - str r0, [r6, #0x12c] - b _022FC108 -_022FC100: - ldr r0, _022FC2D4 ; =0x02006140 - str r0, [r6, #0x12c] -_022FC108: - ldrb r0, [r5, #8] - cmp r0, #0 - ldrne r0, [r6, #0x12c] - orrne r0, r0, #0x80000000 - strne r0, [r6, #0x12c] - ldrb r0, [r5, #2] - cmp r0, #0 - ldreqb r0, [r8, #3] - moveq r0, r0, lsl #0xb - streq r0, [r6, #0x10] - ldreqb r0, [r8, #4] - movne r0, r0, lsl #0xb - strne r0, [r6, #0x10] - ldrneb r0, [r5, #3] - mov r0, r0, lsl #0xb - str r0, [r6, #0x14] - ldr r0, [r6, #0x10] - add r0, r0, r0, lsr #31 - mov r0, r0, asr #1 - str r0, [r6, #0x18] - ldr r0, [r6, #0x14] - add r0, r0, r0, lsr #31 - mov r0, r0, asr #1 - str r0, [r6, #0x1c] - ldrsb r0, [r8, #2] - strb r0, [r6, #0x20] - ldrb r0, [r8, #7] - tst r0, #4 - bne _022FC19C - ldrb r0, [r8, #5] - mov r0, r0, lsl #0xb - str r0, [r6, #0x24] - ldrb r0, [r8, #7] - tst r0, #2 - ldrne r0, [r6, #0x24] - addne r0, r0, #0x400 - strne r0, [r6, #0x24] -_022FC19C: - ldrb r0, [r8, #8] - tst r0, #4 - bne _022FC1C8 - ldrb r0, [r8, #6] - mov r0, r0, lsl #0xb - str r0, [r6, #0x28] - ldrb r0, [r8, #8] - tst r0, #2 - ldrne r0, [r6, #0x28] - addne r0, r0, #0x400 - strne r0, [r6, #0x28] -_022FC1C8: - ldrb r0, [sp, #0x38] - cmp r0, #0 - ldrne r0, [r6, #0x12c] - orrne r0, r0, #0x800000 - strne r0, [r6, #0x12c] - cmp fp, #0 - beq _022FC2A0 - ldrsb r0, [r6, #0x20] - mov r2, #0 - strb r0, [r6, #0x130] - ldr r3, [r6, #0x24] - ldr r1, [r6, #0x18] - add r0, r6, #0x2c - sub r1, r3, r1 - str r1, [r6, #0x134] - ldr r4, [r6, #0x24] - ldr r3, [r6, #0x18] - add r1, r6, #0x34 - add r3, r4, r3 - str r3, [r6, #0x13c] - ldr r4, [r6, #0x28] - ldr r3, [r6, #0x1c] - sub r3, r4, r3 - str r3, [r6, #0x138] - ldr r4, [r6, #0x28] - ldr r3, [r6, #0x1c] - add r3, r4, r3 - str r3, [r6, #0x140] - str r2, [r6, #0x148] - str r2, [r6, #0x144] - bl ov11_022F1F08 - add r0, r6, #0x100 - mov r2, #0x800 - mov r1, #1 - strh r2, [r0, #0x4e] - strb r1, [r6, #0x14c] - sub r1, r1, #2 - strh r1, [r0, #0x50] - mov r1, #0 - strh r1, [r0, #0x52] - ldrsh r1, [r6, #6] - ldr r2, [r6, #0x12c] - add r0, r6, #0x154 - bl LoadObjectAnimData - ldr r1, _022FC2D8 ; =OBJECT_FUNCTION_TABLE - mov r2, r6 - add r0, r6, #0x3c - bl InitScriptRoutine - ldrsh r0, [r5] - cmp r0, #0x10 - bne _022FC2A0 - add r0, r6, #0x154 - mov r1, #0 - bl ov11_022F4974 -_022FC2A0: - ldrsh r2, [r8, #0xa] - add r0, r6, #0x100 - mov r1, #1 - strh r2, [r0, #0x28] - mov r0, sb - strb r1, [r6, #8] -_022FC2B8: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FC2C0: .word OBJECTS -_022FC2C4: .word ov11_02324D00 -_022FC2C8: .word ov11_02321E4C -_022FC2CC: .word 0x02006100 -_022FC2D0: .word 0x02003100 -_022FC2D4: .word 0x02006140 -_022FC2D8: .word OBJECT_FUNCTION_TABLE - arm_func_end ov11_022FBEC4 - - arm_func_start ov11_022FC2DC -ov11_022FC2DC: ; 0x022FC2DC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sl, r0 - mov sb, r1 - ldr r1, _022FC43C ; =ov11_02321E98 - mov r2, sl - mov r3, sb - mov r0, #1 - bl Debug_Print - sub r0, sl, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - mov r8, #0 - bhi _022FC3A4 - ldr r0, _022FC440 ; =ov11_02324D00 - mvn r4, #1 - ldr r7, [r0] - ldr fp, _022FC444 ; =ov11_02321EC4 - add r5, r4, #1 - mov r6, #1 -_022FC338: - ldrsh r3, [r7, #6] - cmp r3, r5 - beq _022FC388 - ldrsh r2, [r7, #0xa] - mov r0, r6 - mov r1, fp - str r2, [sp] - ldrsb ip, [r7, #0xc] - mov r2, r8 - str ip, [sp, #4] - bl Debug_Print - ldrsh r0, [r7, #0xa] - cmp sl, r0 - bne _022FC388 - cmp sb, r4 - ldrnesb r0, [r7, #0xc] - cmpne sb, r0 - bne _022FC388 - mov r0, r8 - bl DeleteLiveObject -_022FC388: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #0x10 - add r7, r7, #0x218 - blt _022FC338 - b _022FC434 -_022FC3A4: - ldr r0, _022FC440 ; =ov11_02324D00 - mvn r5, #1 - add r6, r5, #1 - ldr sl, [r0] - mov r4, r6 - mov r7, r6 - mov fp, #1 -_022FC3C0: - ldrsh r3, [sl, #6] - cmp r3, r7 - beq _022FC41C - ldrsb ip, [sl, #0xd] - ldr r1, _022FC448 ; =ov11_02321EF0 - mov r0, fp - mov r2, r8 - str ip, [sp] - bl Debug_Print - ldrsb r0, [sl, #0xd] - cmp r0, r6 - beq _022FC408 - cmp sb, r5 - cmpne sb, r0 - bne _022FC41C - mov r0, r8 - bl DeleteLiveObject - b _022FC41C -_022FC408: - ldrsh r0, [sl, #0xa] - cmp r0, r4 - bne _022FC41C - mov r0, r8 - bl DeleteLiveObject -_022FC41C: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #0x10 - add sl, sl, #0x218 - blt _022FC3C0 -_022FC434: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FC43C: .word ov11_02321E98 -_022FC440: .word ov11_02324D00 -_022FC444: .word ov11_02321EC4 -_022FC448: .word ov11_02321EF0 - arm_func_end ov11_022FC2DC - - arm_func_start DeleteLiveObject -DeleteLiveObject: ; 0x022FC44C - stmdb sp!, {r4, lr} - ldr r1, _022FC48C ; =ov11_02324D00 - mov r2, r0 - ldr r1, [r1] - mov r0, #0x218 - smlabb r4, r2, r0, r1 - ldr r1, _022FC490 ; =ov11_02321F10 - mov r0, #1 - bl Debug_Print - add r0, r4, #0x154 - bl ov11_022F6EFC - add r0, r4, #0x3c - bl ov11_022DC934 - mvn r0, #0 - strh r0, [r4, #6] - ldmia sp!, {r4, pc} - .align 2, 0 -_022FC48C: .word ov11_02324D00 -_022FC490: .word ov11_02321F10 - arm_func_end DeleteLiveObject - - arm_func_start ov11_022FC494 -ov11_022FC494: ; 0x022FC494 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sl, r0 - mov sb, r1 - ldr r1, _022FC5EC ; =ov11_02321F2C - mov r2, sl - mov r3, sb - mov r0, #1 - bl Debug_Print - sub r0, sl, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - mov r8, #0 - bhi _022FC564 - ldr r0, _022FC5F0 ; =ov11_02324D00 - mvn r5, #0 - ldr r7, [r0] - ldr fp, _022FC5F4 ; =ov11_02321EC4 - sub r4, r5, #1 - mov r6, #1 -_022FC4F0: - ldrsh r3, [r7, #6] - cmp r3, r5 - beq _022FC548 - ldrsh r2, [r7, #0xa] - mov r0, r6 - mov r1, fp - str r2, [sp] - ldrsb ip, [r7, #0xc] - mov r2, r8 - str ip, [sp, #4] - bl Debug_Print - ldrsh r0, [r7, #0xa] - cmp sl, r0 - bne _022FC548 - cmp sb, r4 - ldrnesb r0, [r7, #0xc] - cmpne sb, r0 - bne _022FC548 - mov r1, #0 - add r0, r7, #0x3c - bl ov11_022DCFC4 - strh r5, [r7, #0xa] -_022FC548: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #0x10 - add r7, r7, #0x218 - blt _022FC4F0 - b _022FC5E4 -_022FC564: - ldr r0, _022FC5F0 ; =ov11_02324D00 - mvn r5, #0 - mov r7, #1 - ldr sl, [r0] - ldr r6, _022FC5F4 ; =ov11_02321EC4 - sub r4, r5, #1 - mov fp, r7 -_022FC580: - ldrsh r3, [sl, #6] - cmp r3, r5 - beq _022FC5CC - ldrsh r2, [sl, #0xa] - mov r0, r7 - mov r1, r6 - str r2, [sp] - ldrsb ip, [sl, #0xc] - mov r2, r8 - str ip, [sp, #4] - bl Debug_Print - cmp sb, r4 - ldrnesb r0, [sl, #0xd] - cmpne sb, r0 - bne _022FC5CC - mov r1, fp - add r0, sl, #0x3c - bl ov11_022DCFC4 - strb r5, [sl, #0xd] -_022FC5CC: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #0x10 - add sl, sl, #0x218 - blt _022FC580 -_022FC5E4: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FC5EC: .word ov11_02321F2C -_022FC5F0: .word ov11_02324D00 -_022FC5F4: .word ov11_02321EC4 - arm_func_end ov11_022FC494 - - arm_func_start SetAttributeBitfieldLiveObject -SetAttributeBitfieldLiveObject: ; 0x022FC5F8 - stmdb sp!, {r3, lr} - ldr r3, _022FC634 ; =ov11_02324D00 - mov r2, #0x218 - ldr ip, [r3] - mvn r3, #0 - smlabb ip, r0, r2, ip - ldrsh r0, [ip, #6] - cmp r0, r3 - ldmeqia sp!, {r3, pc} - ldr r2, [ip, #0x12c] - add r0, ip, #0x154 - orr r1, r2, r1 - str r1, [ip, #0x12c] - bl SetAnimDataFieldsWrapper - ldmia sp!, {r3, pc} - .align 2, 0 -_022FC634: .word ov11_02324D00 - arm_func_end SetAttributeBitfieldLiveObject - - arm_func_start ResetAttributeBitfieldLiveObject -ResetAttributeBitfieldLiveObject: ; 0x022FC638 - stmdb sp!, {r3, lr} - ldr r3, _022FC678 ; =ov11_02324D00 - mov r2, #0x218 - ldr ip, [r3] - mvn r3, #0 - smlabb ip, r0, r2, ip - ldrsh r0, [ip, #6] - cmp r0, r3 - ldmeqia sp!, {r3, pc} - ldr r2, [ip, #0x12c] - eor r0, r1, r3 - and r1, r2, r0 - add r0, ip, #0x154 - str r1, [ip, #0x12c] - bl SetAnimDataFieldsWrapper - ldmia sp!, {r3, pc} - .align 2, 0 -_022FC678: .word ov11_02324D00 - arm_func_end ResetAttributeBitfieldLiveObject - - arm_func_start ov11_022FC67C -ov11_022FC67C: ; 0x022FC67C - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - mvn r0, #0 - cmp r4, r0 - beq _022FC6D8 - ldr r0, _022FC6E0 ; =ov11_02324D00 - mov r6, #0 - ldr r5, [r0] - b _022FC6D0 -_022FC6A0: - ldrsh r0, [r5, #6] - cmp r0, r4 - bne _022FC6C0 - add r0, r5, #0x3c - bl ov11_022DC958 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} -_022FC6C0: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - add r5, r5, #0x218 -_022FC6D0: - cmp r6, #0x10 - blt _022FC6A0 -_022FC6D8: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FC6E0: .word ov11_02324D00 - arm_func_end ov11_022FC67C - - arm_func_start ov11_022FC6E4 -ov11_022FC6E4: ; 0x022FC6E4 - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - mvn r0, #0 - cmp r4, r0 - beq _022FC740 - ldr r0, _022FC748 ; =ov11_02324D00 - mov r6, #0 - ldr r5, [r0] - b _022FC738 -_022FC708: - ldrsh r0, [r5, #6] - cmp r0, r4 - bne _022FC728 - add r0, r5, #0x3c - bl ov11_022DC9A0 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} -_022FC728: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - add r5, r5, #0x218 -_022FC738: - cmp r6, #0x10 - blt _022FC708 -_022FC740: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FC748: .word ov11_02324D00 - arm_func_end ov11_022FC6E4 - - arm_func_start ov11_022FC74C -ov11_022FC74C: ; 0x022FC74C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov sb, r0 - mov r0, #0 - sub r3, r0, #1 - mov r8, r1 - mov r7, r2 - cmp sb, r3 - ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - ldr r1, _022FC7B8 ; =ov11_02324D00 - mov r6, r0 - ldr r5, [r1] - mov r4, #1 -_022FC77C: - ldrsh r1, [r5, #6] - cmp r1, sb - bne _022FC79C - mov r1, r8 - mov r2, r7 - add r0, r5, #0x3c - bl ov11_022DCCEC - mov r0, r4 -_022FC79C: - add r1, r6, #1 - mov r1, r1, lsl #0x10 - mov r6, r1, asr #0x10 - cmp r6, #0x10 - add r5, r5, #0x218 - blt _022FC77C - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022FC7B8: .word ov11_02324D00 - arm_func_end ov11_022FC74C - - arm_func_start ov11_022FC7BC -ov11_022FC7BC: ; 0x022FC7BC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r7, #1 - mov sb, r0 - sub r0, r7, #2 - mov r8, r1 - cmp sb, r0 - beq _022FC830 - ldr r0, _022FC838 ; =ov11_02324D00 - mov r6, #0 - ldr r5, [r0] - mov r4, r6 -_022FC7E8: - ldrsh r0, [r5, #6] - cmp r0, sb - bne _022FC818 - add r0, r5, #0x3c - bl ov11_022DC958 - cmp r0, #0 - beq _022FC818 - mov r1, r8 - add r0, r5, #0x3c - bl ov11_022DCA58 - cmp r0, #0 - moveq r7, r4 -_022FC818: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - cmp r6, #0x10 - add r5, r5, #0x218 - blt _022FC7E8 -_022FC830: - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022FC838: .word ov11_02324D00 - arm_func_end ov11_022FC7BC - - arm_func_start ov11_022FC83C -ov11_022FC83C: ; 0x022FC83C - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _022FC8BC ; =ov11_02324D00 - mov r2, r0 - ldr r1, [r1] - mov r0, #0x218 - smlabb r4, r2, r0, r1 - ldrsh r3, [r4, #0xa] - add r0, r4, #0x100 - ldr r1, _022FC8C0 ; =ov11_02321F58 - str r3, [sp] - ldrsh r3, [r0, #0x28] - mov r0, #1 - str r3, [sp, #4] - ldrsh r3, [r4, #6] - bl Debug_Print - ldrsh r1, [r4, #6] - mvn r0, #0 - cmp r1, r0 - addne r1, r4, #0x100 - ldrnesh r1, [r1, #0x28] - cmpne r1, r0 - moveq r0, #0 - beq _022FC8B4 - bl SetActorTalkSub - add r1, r4, #0x100 - ldrsh r0, [r4, #0xa] - ldrsh r1, [r1, #0x28] - bl ov11_022F74A0 - mov r0, #1 -_022FC8B4: - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_022FC8BC: .word ov11_02324D00 -_022FC8C0: .word ov11_02321F58 - arm_func_end ov11_022FC83C - - arm_func_start ov11_022FC8C4 -ov11_022FC8C4: ; 0x022FC8C4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x20 - mov sl, r0 - sub r0, sl, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - mov sb, r1 - mov r8, #0 - mov r0, #1 - bhi _022FC9D4 - ldr r1, _022FCA8C ; =ov11_02321FA0 - mov r2, sl - mov r3, sb - bl Debug_Print - ldr r0, _022FCA90 ; =ov11_02324D00 - mvn r4, #1 - ldr r6, [r0] - mov r7, r8 - add r5, r4, #1 - mov fp, r8 -_022FC920: - ldrsh r3, [r6, #6] - cmp r3, r5 - beq _022FC9B8 - ldrsh r0, [r6, #0xa] - cmp r0, sl - bne _022FC9B8 - cmp sb, r4 - ldrnesb r0, [r6, #0xc] - cmpne r0, sb - bne _022FC9B8 - ldr r1, _022FCA94 ; =ov11_02321FE0 - mov r0, #1 - mov r2, r7 - bl Debug_Print - str sb, [sp] - ldrsh r2, [r6, #6] - add r0, sp, #4 - mov r1, #4 - mov r3, sl - bl ov11_022E5EFC - cmp r0, #0 - beq _022FC9B8 - add r0, r6, #0x3c - add r1, sp, #4 - strh fp, [sp, #0x1c] - bl ov11_022DC9C8 - cmp r0, #0 - bne _022FC9B8 - add r0, r6, #0x2c - add r1, r6, #0x34 - bl ov11_022F1F08 - add r0, r6, #0x3c - mov r1, #0 - add r2, sp, #4 - bl ov11_022DCCEC - orr r8, r8, r0 - mov r0, #1 - strb r0, [r6, #0x14c] -_022FC9B8: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #0x10 - add r6, r6, #0x218 - blt _022FC920 - b _022FCA80 -_022FC9D4: - ldr r1, _022FCA98 ; =ov11_02321FF4 - mov r2, sl - mov r3, sb - bl Debug_Print - ldr r0, _022FCA90 ; =ov11_02324D00 - mvn r4, #1 - ldr r7, [r0] - mov r6, r8 - add r5, r4, #1 - mov fp, #1 -_022FC9FC: - ldrsh r3, [r7, #6] - cmp r3, r5 - beq _022FCA68 - cmp sb, r4 - ldrnesb r0, [r7, #0xd] - cmpne r0, sb - bne _022FCA68 - ldr r1, _022FCA94 ; =ov11_02321FE0 - mov r0, #1 - mov r2, r6 - bl Debug_Print - str sb, [sp] - ldrsh r2, [r7, #6] - add r0, sp, #4 - mov r1, #4 - mov r3, sl - bl ov11_022E5EFC - cmp r0, #0 - beq _022FCA68 - add r0, r7, #0x3c - mov r1, #0 - add r2, sp, #4 - strh fp, [sp, #0x1c] - bl ov11_022DCCEC - orr r8, r8, r0 - mov r0, #1 - strb r0, [r7, #0x14c] -_022FCA68: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - cmp r6, #0x10 - add r7, r7, #0x218 - blt _022FC9FC -_022FCA80: - mov r0, r8 - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FCA8C: .word ov11_02321FA0 -_022FCA90: .word ov11_02324D00 -_022FCA94: .word ov11_02321FE0 -_022FCA98: .word ov11_02321FF4 - arm_func_end ov11_022FC8C4 - - arm_func_start ov11_022FCA9C -ov11_022FCA9C: ; 0x022FCA9C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - sub r0, sl, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - mov sb, r1 - mov r8, #0 - mov r0, #1 - bhi _022FCB54 - ldr r1, _022FCBE0 ; =ov11_02322034 - mov r2, sl - mov r3, sb - bl Debug_Print - ldr r0, _022FCBE4 ; =ov11_02324D00 - mvn r4, #1 - ldr r6, [r0] - mov r7, r8 - add r5, r4, #1 - mov fp, #1 -_022FCAF4: - ldrsh r3, [r6, #6] - cmp r3, r5 - beq _022FCB38 - ldrsh r0, [r6, #0xa] - cmp sl, r0 - bne _022FCB38 - cmp sb, r4 - ldrnesb r0, [r6, #0xc] - cmpne sb, r0 - bne _022FCB38 - ldr r1, _022FCBE8 ; =ov11_02321FE0 - mov r0, fp - mov r2, r7 - bl Debug_Print - add r0, r6, #0x3c - bl ov11_022DCAE0 - orr r8, r8, r0 -_022FCB38: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #0x10 - add r6, r6, #0x218 - blt _022FCAF4 - b _022FCBD8 -_022FCB54: - ldr r1, _022FCBEC ; =ov11_02322074 - mov r2, sl - mov r3, sb - bl Debug_Print - ldr r0, _022FCBE4 ; =ov11_02324D00 - mvn r5, #0 - ldr sl, [r0] - ldr fp, _022FCBE8 ; =ov11_02321FE0 - mov r7, r8 - sub r4, r5, #1 - mov r6, #1 -_022FCB80: - ldrsh r3, [sl, #6] - cmp r3, r5 - beq _022FCBC0 - ldrsb r0, [sl, #0xd] - cmp r0, r5 - cmpne sb, r4 - cmpne sb, r0 - bne _022FCBC0 - mov r0, r6 - mov r1, fp - mov r2, r7 - bl Debug_Print - add r0, sl, #0x3c - bl ov11_022DD080 - strb r5, [sl, #0xd] - orr r8, r8, r0 -_022FCBC0: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #0x10 - add sl, sl, #0x218 - blt _022FCB80 -_022FCBD8: - mov r0, r8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FCBE0: .word ov11_02322034 -_022FCBE4: .word ov11_02324D00 -_022FCBE8: .word ov11_02321FE0 -_022FCBEC: .word ov11_02322074 - arm_func_end ov11_022FCA9C - - arm_func_start ov11_022FCBF0 -ov11_022FCBF0: ; 0x022FCBF0 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r0, _022FCC40 ; =ov11_02324D00 - mov r4, #0 - ldr r7, [r0] - mov r6, r4 - mvn r5, #0 -_022FCC08: - ldrsh r0, [r7, #6] - cmp r0, r5 - beq _022FCC20 - add r0, r7, #0x3c - bl ov11_022DCB00 - orr r4, r4, r0 -_022FCC20: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - cmp r6, #0x10 - add r7, r7, #0x218 - blt _022FCC08 - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022FCC40: .word ov11_02324D00 - arm_func_end ov11_022FCBF0 - - arm_func_start UnlockObjectRoutines -UnlockObjectRoutines: ; 0x022FCC44 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r1, _022FCC9C ; =ov11_02324D00 - mov r5, #0 - ldr r4, [r1] - mov r6, r0 - mov r8, r5 - mvn r7, #0 -_022FCC60: - ldrsh r0, [r4, #6] - cmp r0, r7 - beq _022FCC7C - mov r1, r6 - add r0, r4, #0x3c - bl UnlockRoutine - orr r5, r5, r0 -_022FCC7C: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #0x10 - add r4, r4, #0x218 - blt _022FCC60 - mov r0, r5 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022FCC9C: .word ov11_02324D00 - arm_func_end UnlockObjectRoutines - - arm_func_start ov11_022FCCA0 -ov11_022FCCA0: ; 0x022FCCA0 - ldr r3, _022FCCC0 ; =ov11_02324D00 - mov r2, #0x218 - ldr r3, [r3] - smlabb r2, r0, r2, r3 - ldr r0, [r2, #0x12c] - str r0, [r1] - ldrsh r0, [r2, #6] - bx lr - .align 2, 0 -_022FCCC0: .word ov11_02324D00 - arm_func_end ov11_022FCCA0 - - arm_func_start ov11_022FCCC4 -ov11_022FCCC4: ; 0x022FCCC4 - ldr r3, _022FCD14 ; =ov11_02324D00 - mov r2, #0x218 - ldr ip, [r3] - mvn r3, #0 - smlabb ip, r0, r2, ip - ldrsh r0, [ip, #6] - cmp r0, r3 - moveq r0, #0 - streq r0, [r1] - beq _022FCD08 - ldr r2, [ip, #0x134] - ldr r0, [ip, #0x18] - add r0, r2, r0 - str r0, [r1] - ldr r2, [ip, #0x138] - ldr r0, [ip, #0x1c] - add r0, r2, r0 -_022FCD08: - str r0, [r1, #4] - ldrsh r0, [ip, #6] - bx lr - .align 2, 0 -_022FCD14: .word ov11_02324D00 - arm_func_end ov11_022FCCC4 - - arm_func_start GetCollidingObjectId -GetCollidingObjectId: ; 0x022FCD18 - stmdb sp!, {r3, r4, r5, lr} - ldr ip, _022FCDAC ; =ov11_02324D00 - mov r3, #0 - ldr ip, [ip] - mvn lr, #0 - b _022FCD9C -_022FCD30: - ldrsh r4, [ip, #6] - cmp r4, lr - beq _022FCD8C - ldr r4, [ip, #0x12c] - tst r4, r0 - beq _022FCD8C - ldr r5, [ip, #0x134] - ldr r4, [r2] - cmp r5, r4 - bge _022FCD8C - ldr r5, [ip, #0x13c] - ldr r4, [r1] - cmp r5, r4 - ble _022FCD8C - ldr r5, [ip, #0x138] - ldr r4, [r2, #4] - cmp r5, r4 - bge _022FCD8C - ldr r5, [ip, #0x140] - ldr r4, [r1, #4] - cmp r5, r4 - movgt r0, r3 - ldmgtia sp!, {r3, r4, r5, pc} -_022FCD8C: - add r3, r3, #1 - mov r3, r3, lsl #0x10 - mov r3, r3, asr #0x10 - add ip, ip, #0x218 -_022FCD9C: - cmp r3, #0x10 - blt _022FCD30 - mvn r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FCDAC: .word ov11_02324D00 - arm_func_end GetCollidingObjectId - - arm_func_start ov11_022FCDB0 -ov11_022FCDB0: ; 0x022FCDB0 - stmdb sp!, {r3, r4, r5, lr} - ldr ip, _022FCE44 ; =ov11_02324D00 - mov r3, #0 - ldr ip, [ip] - mvn lr, #0 - b _022FCE34 -_022FCDC8: - ldrsh r4, [ip, #6] - cmp r4, lr - beq _022FCE24 - ldr r4, [ip, #0x12c] - tst r4, r0 - beq _022FCE24 - ldr r5, [ip, #0x134] - ldr r4, [r2] - cmp r5, r4 - bge _022FCE24 - ldr r5, [ip, #0x13c] - ldr r4, [r1] - cmp r5, r4 - ble _022FCE24 - ldr r5, [ip, #0x138] - ldr r4, [r2, #4] - cmp r5, r4 - bge _022FCE24 - ldr r5, [ip, #0x140] - ldr r4, [r1, #4] - cmp r5, r4 - movgt r0, r3 - ldmgtia sp!, {r3, r4, r5, pc} -_022FCE24: - add r3, r3, #1 - mov r3, r3, lsl #0x10 - mov r3, r3, asr #0x10 - add ip, ip, #0x218 -_022FCE34: - cmp r3, #0x10 - blt _022FCDC8 - mvn r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FCE44: .word ov11_02324D00 - arm_func_end ov11_022FCDB0 - - arm_func_start ov11_022FCE48 -ov11_022FCE48: ; 0x022FCE48 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x18 - ldr r3, _022FCF6C ; =ov11_02321D88 - mov r5, r1 - ldr r1, [r3, #0xc] - ldr r3, [r3, #8] - str r1, [sp, #0x14] - str r3, [sp, #0x10] - ldr r1, [r5] - mov r6, r0 - mov r0, r1, asr #2 - add r0, r1, r0, lsr #29 - mov r1, r0, asr #3 - mov r0, r1, asr #7 - add r1, r1, r0, lsr #24 - mov r0, r1, asr #8 - str r0, [sp, #0x10] - ldr r3, [r5, #4] - mov r4, r2 - mov r0, r3, asr #2 - add r0, r3, r0, lsr #29 - mov r2, r0, asr #3 - mov r0, r2, asr #7 - add r2, r2, r0, lsr #24 - mov r0, r2, asr #8 - str r0, [sp, #0x14] - ldr r3, [r4] - ldr r0, [r4, #4] - sub lr, r3, #1 - sub ip, r0, #1 - mov r0, lr, asr #2 - mov r3, ip, asr #2 - add r0, lr, r0, lsr #29 - add r3, ip, r3, lsr #29 - mov lr, r0, asr #3 - mov ip, r3, asr #3 - mov r0, lr, asr #7 - mov r3, ip, asr #7 - add r0, lr, r0, lsr #24 - mov r0, r0, asr #8 - add r3, ip, r3, lsr #24 - mov ip, r3, asr #8 - sub r3, r0, r1, asr #8 - sub r1, ip, r2, asr #8 - add r2, r3, #1 - add r1, r1, #1 - str r0, [sp, #8] - str r2, [sp] - str r1, [sp, #4] - ldr r1, [r6, #0x12c] - str ip, [sp, #0xc] - tst r1, #0x40 - add r0, sp, #0x10 - add r1, sp, #0 - beq _022FCF34 - bl ov11_022F204C - cmp r0, #0 - movne r0, #0x40 - bne _022FCF64 -_022FCF34: - ldr r0, [r6, #0x12c] - tst r0, #0x100 - beq _022FCF60 - mov r2, r5 - mov r3, r4 - mvn r0, #0 - mov r1, #0x100 - bl GetCollidingActorId - cmp r0, #0 - movge r0, #0x100 - bge _022FCF64 -_022FCF60: - mov r0, #0 -_022FCF64: - add sp, sp, #0x18 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FCF6C: .word ov11_02321D88 - arm_func_end ov11_022FCE48 - - arm_func_start SetPositionLiveObject -SetPositionLiveObject: ; 0x022FCF70 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x10 - ldr r5, _022FD05C ; =ov11_02321D88 - mov r4, r0 - ldr r2, [r5, #0x34] - ldr r3, [r5, #0x30] - str r2, [sp, #0xc] - str r3, [sp, #8] - ldr r3, [r1] - ldr r2, [r4, #0x18] - add lr, sp, #8 - sub ip, r3, r2 - str ip, [sp, #8] - ldr r6, [r1, #4] - ldr r3, [r4, #0x1c] - add r2, sp, #0 - sub r3, r6, r3 - str r3, [sp, #0xc] - ldr r6, [r5, #0x28] - ldr r5, [r5, #0x2c] - str r6, [sp] - str r5, [sp, #4] - ldr r6, [r1] - ldr r5, [r4, #0x18] - add r6, r6, r5 - str r6, [sp] - ldr r5, [r1, #4] - ldr r1, [r4, #0x1c] - add r5, r5, r1 - str r5, [sp, #4] - ldr r1, [r4, #0x2c] - cmp ip, r1 - blt _022FD018 - ldr r1, [r4, #0x34] - cmp r6, r1 - bge _022FD018 - ldr r1, [r4, #0x30] - cmp r3, r1 - blt _022FD018 - ldr r1, [r4, #0x38] - cmp r5, r1 - blt _022FD020 -_022FD018: - mov r0, #0x40 - b _022FD054 -_022FD020: - mov r1, lr - bl ov11_022FCE48 - cmp r0, #0 - bne _022FD054 - ldr r2, [sp, #8] - ldr r1, [sp, #0xc] - mov r0, #0 - str r2, [r4, #0x134] - str r1, [r4, #0x138] - ldr r2, [sp] - ldr r1, [sp, #4] - str r2, [r4, #0x13c] - str r1, [r4, #0x140] -_022FD054: - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FD05C: .word ov11_02321D88 - arm_func_end SetPositionLiveObject - - arm_func_start GetIdLiveObject -GetIdLiveObject: ; 0x022FD060 - ldrsh r0, [r0, #4] - bx lr - arm_func_end GetIdLiveObject - - arm_func_start GetCollisionBoxLiveObject -GetCollisionBoxLiveObject: ; 0x022FD068 - ldr r2, [r0, #0x10] - ldr r0, [r0, #0x14] - str r2, [r1] - str r0, [r1, #4] - bx lr - arm_func_end GetCollisionBoxLiveObject - - arm_func_start SetPositionInitialLiveObject -SetPositionInitialLiveObject: ; 0x022FD07C - cmp r1, #0 - beq _022FD0C8 - ldr r3, [r1] - ldr r2, [r0, #0x18] - sub r2, r3, r2 - str r2, [r0, #0x134] - ldr r3, [r1] - ldr r2, [r0, #0x18] - add r2, r3, r2 - str r2, [r0, #0x13c] - ldr r3, [r1, #4] - ldr r2, [r0, #0x1c] - sub r2, r3, r2 - str r2, [r0, #0x138] - ldr r2, [r1, #4] - ldr r1, [r0, #0x1c] - add r1, r2, r1 - str r1, [r0, #0x140] - bx lr -_022FD0C8: - ldr r3, [r0, #0x24] - ldr r1, [r0, #0x18] - mov r2, #0 - sub r1, r3, r1 - str r1, [r0, #0x134] - ldr r3, [r0, #0x24] - ldr r1, [r0, #0x18] - add r1, r3, r1 - str r1, [r0, #0x13c] - ldr ip, [r0, #0x28] - ldr r3, [r0, #0x1c] - add r1, r0, #0x100 - sub r3, ip, r3 - str r3, [r0, #0x138] - ldr ip, [r0, #0x28] - ldr r3, [r0, #0x1c] - add r3, ip, r3 - str r3, [r0, #0x140] - str r2, [r0, #0x148] - str r2, [r0, #0x144] - ldrsb r2, [r1, #0x30] - ldrsb r1, [r0, #0x20] - cmp r2, r1 - movne r1, #1 - strneb r1, [r0, #0x14c] - ldrsb r1, [r0, #0x20] - strb r1, [r0, #0x130] - bx lr - arm_func_end SetPositionInitialLiveObject - - arm_func_start SetMovementRangeLiveObject -SetMovementRangeLiveObject: ; 0x022FD138 - ldr r3, [r1] - ldr r1, [r1, #4] - str r3, [r0, #0x2c] - str r1, [r0, #0x30] - ldr r3, [r2] - ldr r1, [r2, #4] - str r3, [r0, #0x34] - str r1, [r0, #0x38] - bx lr - arm_func_end SetMovementRangeLiveObject - - arm_func_start GetCollisionBoxCenterLiveObject -GetCollisionBoxCenterLiveObject: ; 0x022FD15C - ldr r3, [r0, #0x134] - ldr r2, [r0, #0x18] - add r2, r3, r2 - str r2, [r1] - ldr r2, [r0, #0x138] - ldr r0, [r0, #0x1c] - add r0, r2, r0 - str r0, [r1, #4] - bx lr - arm_func_end GetCollisionBoxCenterLiveObject - - arm_func_start SetPositionLiveObjectVeneer -SetPositionLiveObjectVeneer: ; 0x022FD180 - ldr ip, _022FD188 ; =SetPositionLiveObject - bx ip - .align 2, 0 -_022FD188: .word SetPositionLiveObject - arm_func_end SetPositionLiveObjectVeneer - - arm_func_start GetHeightLiveObject -GetHeightLiveObject: ; 0x022FD18C - ldr r3, [r0, #0x144] - str r3, [r1] - ldr r0, [r0, #0x148] - str r0, [r2] - bx lr - arm_func_end GetHeightLiveObject - - arm_func_start SetHeightLiveObject -SetHeightLiveObject: ; 0x022FD1A0 - str r1, [r0, #0x144] - bx lr - arm_func_end SetHeightLiveObject - - arm_func_start GetDirectionLiveObject -GetDirectionLiveObject: ; 0x022FD1A8 - add r0, r0, #0x100 - ldrsb r0, [r0, #0x30] - strb r0, [r1] - bx lr - arm_func_end GetDirectionLiveObject - - arm_func_start SetDirectionLiveObject -SetDirectionLiveObject: ; 0x022FD1B8 - mvn r2, #0 - cmp r1, r2 - strneb r1, [r0, #0x130] - bx lr - arm_func_end SetDirectionLiveObject - - arm_func_start SetAnimationLiveObject -SetAnimationLiveObject: ; 0x022FD1C8 - and r2, r1, #0x700 - mov r2, r2, lsl #0x10 - and r3, r1, #0xff - tst r1, #0x800 - mov ip, r2, lsr #0x10 - beq _022FD1F8 - add r1, r0, #0x100 - mov r2, #0x400 - strh r2, [r1, #0x4e] - mov r1, #1 - strb r1, [r0, #0x14c] - bx lr -_022FD1F8: - cmp r3, #0 - ldrne r1, _022FD284 ; =ov11_02321DC8 - movne r2, r3, lsl #1 - ldrnesh r3, [r1, r2] - addeq r1, r0, #0x100 - ldreqsh r3, [r1, #0x4e] - cmp ip, #0x200 - bgt _022FD230 - bge _022FD24C - cmp ip, #0x100 - orreq r1, r3, #0x300 - moveq r1, r1, lsl #0x10 - moveq r3, r1, asr #0x10 - b _022FD258 -_022FD230: - cmp ip, #0x300 - ble _022FD258 - cmp ip, #0x400 - orreq r1, r3, #0x200 - moveq r1, r1, lsl #0x10 - moveq r3, r1, asr #0x10 - b _022FD258 -_022FD24C: - orr r1, r3, #0x100 - mov r1, r1, lsl #0x10 - mov r3, r1, asr #0x10 -_022FD258: - add r1, r0, #0x100 - ldrsh r2, [r1, #0x4e] - cmp r2, r3 - strneh r3, [r1, #0x4e] - movne r1, #1 - strneb r1, [r0, #0x14c] - bxne lr - tst r2, #0x1000 - movne r1, #1 - strneb r1, [r0, #0x14c] - bx lr - .align 2, 0 -_022FD284: .word ov11_02321DC8 - arm_func_end SetAnimationLiveObject - - arm_func_start SetEffectLiveObject -SetEffectLiveObject: ; 0x022FD288 - add r0, r0, #0x100 - strh r1, [r0, #0x50] - strh r2, [r0, #0x52] - bx lr - arm_func_end SetEffectLiveObject - - arm_func_start GetAnimationStatusLiveObject -GetAnimationStatusLiveObject: ; 0x022FD298 - stmdb sp!, {r3, lr} - ldrb r1, [r0, #0x14c] - cmp r1, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - add r0, r0, #0x154 - bl ov11_022F4990 - ldmia sp!, {r3, pc} - arm_func_end GetAnimationStatusLiveObject - - arm_func_start GetEffectStatusLiveObject -GetEffectStatusLiveObject: ; 0x022FD2B8 - stmdb sp!, {r3, lr} - add r1, r0, #0x100 - ldrsh r1, [r1, #0x52] - cmp r1, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - add r0, r0, #0x154 - bl ov11_022F49B0 - ldmia sp!, {r3, pc} - arm_func_end GetEffectStatusLiveObject - - arm_func_start GetAttributeBitfieldLiveObject -GetAttributeBitfieldLiveObject: ; 0x022FD2DC - ldr r0, [r0, #0x12c] - str r0, [r1] - bx lr - arm_func_end GetAttributeBitfieldLiveObject - - arm_func_start SetAttributeBitfieldLiveObjectWrapper -SetAttributeBitfieldLiveObjectWrapper: ; 0x022FD2E8 - ldr ip, _022FD2F4 ; =SetAttributeBitfieldLiveObject - ldrsh r0, [r0, #4] - bx ip - .align 2, 0 -_022FD2F4: .word SetAttributeBitfieldLiveObject - arm_func_end SetAttributeBitfieldLiveObjectWrapper - - arm_func_start ResetAttributeBitfieldLiveObjectWrapper -ResetAttributeBitfieldLiveObjectWrapper: ; 0x022FD2F8 - ldr ip, _022FD304 ; =ResetAttributeBitfieldLiveObject - ldrsh r0, [r0, #4] - bx ip - .align 2, 0 -_022FD304: .word ResetAttributeBitfieldLiveObject - arm_func_end ResetAttributeBitfieldLiveObjectWrapper - - arm_func_start SetBlinkLiveObject -SetBlinkLiveObject: ; 0x022FD308 - ldr ip, _022FD314 ; =ov11_022F4984 - add r0, r0, #0x154 - bx ip - .align 2, 0 -_022FD314: .word ov11_022F4984 - arm_func_end SetBlinkLiveObject - - arm_func_start SetPositionOffsetLiveObject -SetPositionOffsetLiveObject: ; 0x022FD318 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - ldr r2, _022FD478 ; =ov11_02321D88 - mov r5, r0 - ldr r0, [r2, #4] - ldr r3, [r2] - str r0, [sp, #4] - str r3, [sp] - ldr r3, [r5, #0x134] - ldr r0, [r1] - mov r4, #0 - add r0, r3, r0 - str r0, [sp] - ldr ip, [r5, #0x138] - ldr r3, [r1, #4] - add r3, ip, r3 - str r3, [sp, #4] - ldr r3, [r2, #0x38] - ldr r2, [r2, #0x3c] - str r3, [sp, #8] - str r2, [sp, #0xc] - ldr r3, [r5, #0x13c] - ldr r2, [r1] - add r3, r3, r2 - str r3, [sp, #8] - ldr r2, [r5, #0x140] - ldr r1, [r1, #4] - add r1, r2, r1 - str r1, [sp, #0xc] - ldr r1, [r5, #0x2c] - cmp r0, r1 - bge _022FD3B4 - str r1, [sp] - ldr r1, [r5, #0x2c] - ldr r0, [r5, #0x10] - mov r4, #1 - add r0, r1, r0 - str r0, [sp, #8] - b _022FD3D8 -_022FD3B4: - ldr r1, [r5, #0x34] - cmp r3, r1 - blt _022FD3D8 - ldr r0, [r5, #0x10] - mov r4, #1 - sub r0, r1, r0 - str r0, [sp] - ldr r0, [r5, #0x34] - str r0, [sp, #8] -_022FD3D8: - ldr r1, [r5, #0x30] - ldr r0, [sp, #4] - cmp r0, r1 - bge _022FD404 - str r1, [sp, #4] - ldr r1, [r5, #0x30] - ldr r0, [r5, #0x14] - mov r4, #1 - add r0, r1, r0 - str r0, [sp, #0xc] - b _022FD42C -_022FD404: - ldr r1, [r5, #0x38] - ldr r0, [sp, #0xc] - cmp r0, r1 - blt _022FD42C - ldr r0, [r5, #0x14] - mov r4, #1 - sub r0, r1, r0 - str r0, [sp, #4] - ldr r0, [r5, #0x38] - str r0, [sp, #0xc] -_022FD42C: - add r1, sp, #0 - add r2, sp, #8 - mov r0, r5 - bl ov11_022FCE48 - cmp r0, #0 - bne _022FD470 - ldr r1, [sp] - ldr r0, [sp, #4] - cmp r4, #0 - str r1, [r5, #0x134] - str r0, [r5, #0x138] - ldr r1, [sp, #8] - ldr r0, [sp, #0xc] - str r1, [r5, #0x13c] - str r0, [r5, #0x140] - movne r0, #0x40 - moveq r0, #0 -_022FD470: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FD478: .word ov11_02321D88 - arm_func_end SetPositionOffsetLiveObject - - arm_func_start ov11_022FD47C -ov11_022FD47C: ; 0x022FD47C - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r0, _022FD50C ; =ov11_02324D00 - mov r4, #0 - ldr r5, [r0] - mov r7, r4 - mvn r6, #0 -_022FD494: - ldrsh r0, [r5, #6] - cmp r0, r6 - ldrneb r0, [r5, #8] - cmpne r0, #0 - beq _022FD4F0 - add r0, r5, #0x3c - bl FuncThatCallsRunNextOpcode - cmp r0, #0 - beq _022FD4CC - cmp r0, #6 - bne _022FD4CC - mov r0, r4 - bl DeleteLiveObject - b _022FD4F0 -_022FD4CC: - ldrb r0, [r5, #0x14c] - cmp r0, #0 - beq _022FD4F0 - strb r7, [r5, #0x14c] - add r0, r5, #0x100 - ldrsh r1, [r0, #0x4e] - mov r2, r7 - add r0, r5, #0x154 - bl SetAnimDataFields2 -_022FD4F0: - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 - cmp r4, #0x10 - add r5, r5, #0x218 - blt _022FD494 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022FD50C: .word ov11_02324D00 - arm_func_end ov11_022FD47C - - arm_func_start ov11_022FD510 -ov11_022FD510: ; 0x022FD510 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - ldr r0, _022FD61C ; =ov11_02321D88 - ldr r1, _022FD620 ; =ov11_02324D00 - ldr r8, [r0, #0x10] - ldr r7, [r0, #0x14] - mov sb, #0 - ldr sl, [r1] - str r8, [sp, #4] - str r7, [sp, #8] - mov fp, sb - mvn r4, #0 -_022FD540: - ldrsh r0, [sl, #6] - cmp r0, r4 - ldrneb r0, [sl, #8] - cmpne r0, #0 - beq _022FD5FC - str r8, [sp, #0xc] - str r7, [sp, #0x10] - ldr r2, [sl, #0x134] - ldr r1, [sl, #0x18] -#ifdef JAPAN - add r0, sl, #0x154 -#else - add r0, sl, #0x100 -#endif - add r1, r2, r1 - str r1, [sp, #0xc] - ldr r2, [sl, #0x138] - ldr r1, [sl, #0x1c] - add r1, r2, r1 - str r1, [sp, #0x10] -#ifndef JAPAN - ldrsh r1, [r0, #0xe6] -#endif - ldr r6, [sl, #0x144] - ldr r5, [sl, #0x148] -#ifdef JAPAN - bl ov11_022F5FE8_JP - cmp r0, #0 - beq _022FD5B4 - strb fp, [sl, #0x14c] - add r0, sl, #0x100 -#else - cmp r1, #0 - bge _022FD5B4 - ldrsh r1, [r0, #0xe0] - cmp r1, #0 - ble _022FD5B4 - strb fp, [sl, #0x14c] -#endif - ldrsh r1, [r0, #0x4e] - mov r2, fp - add r0, sl, #0x154 - bl SetAnimDataFields2 -_022FD5B4: - add r3, sl, #0x100 - ldrsh r1, [r3, #0x50] - cmp r1, r4 - beq _022FD5EC - mov r0, #0 - str r0, [sp] - ldrsh r2, [r3, #0x52] - ldrsb r3, [r3, #0x30] - add r0, sl, #0x154 - bl ov11_022F5408 - add r1, sl, #0x100 - strh r4, [r1, #0x50] - mov r0, #0 - strh r0, [r1, #0x52] -_022FD5EC: - add r1, sp, #0xc - add r0, sl, #0x154 - add r2, r6, r5 - bl AnimRelatedFunction__022F6F14 -_022FD5FC: - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 - cmp sb, #0x10 - add sl, sl, #0x218 - blt _022FD540 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FD61C: .word ov11_02321D88 -_022FD620: .word ov11_02324D00 - arm_func_end ov11_022FD510 - - arm_func_start ov11_022FD624 -ov11_022FD624: ; 0x022FD624 - stmdb sp!, {r3, lr} - mov r0, #0x2140 - mov r1, #6 - bl MemAlloc - ldr r1, _022FD668 ; =ov11_02324D04 - mov r3, #0 - str r0, [r1] - mvn r2, #0 -_022FD644: - add r1, r3, #1 - mov r1, r1, lsl #0x10 - mov r3, r1, asr #0x10 - strh r2, [r0, #6] - cmp r3, #0x10 - add r0, r0, #0x214 - blt _022FD644 - bl ov11_022FD66C - ldmia sp!, {r3, pc} - .align 2, 0 -_022FD668: .word ov11_02324D04 - arm_func_end ov11_022FD624 - - arm_func_start ov11_022FD66C -ov11_022FD66C: ; 0x022FD66C - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _022FD6B0 ; =ov11_02324D04 - mov r5, #0 - ldr r6, [r0] - mvn r4, #0 -_022FD680: - ldrsh r0, [r6, #6] - cmp r0, r4 - beq _022FD694 - mov r0, r5 - bl DeleteLivePerformer -_022FD694: - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - cmp r5, #0x10 - add r6, r6, #0x214 - blt _022FD680 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FD6B0: .word ov11_02324D04 - arm_func_end ov11_022FD66C - - arm_func_start ov11_022FD6B4 -ov11_022FD6B4: ; 0x022FD6B4 - stmdb sp!, {r3, lr} - bl ov11_022FD66C - ldr r0, _022FD6D8 ; =ov11_02324D04 - ldr r0, [r0] - bl MemFree - ldr r0, _022FD6D8 ; =ov11_02324D04 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022FD6D8: .word ov11_02324D04 - arm_func_end ov11_022FD6B4 - - arm_func_start ov11_022FD6DC -ov11_022FD6DC: ; 0x022FD6DC - mvn r1, #0 - cmp r0, r1 - beq _022FD720 - ldr r1, _022FD728 ; =ov11_02324D04 - mov r3, #0 - ldr r2, [r1] - b _022FD718 -_022FD6F8: - ldrsh r1, [r2, #6] - cmp r1, r0 - moveq r0, r3 - bxeq lr - add r1, r3, #1 - mov r1, r1, lsl #0x10 - mov r3, r1, asr #0x10 - add r2, r2, #0x214 -_022FD718: - cmp r3, #0x10 - blt _022FD6F8 -_022FD720: - mvn r0, #0 - bx lr - .align 2, 0 -_022FD728: .word ov11_02324D04 - arm_func_end ov11_022FD6DC - - arm_func_start ov11_022FD72C -ov11_022FD72C: ; 0x022FD72C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0xc - mov r8, r1 - ldrh r5, [r8] - ldr r1, _022FDA68 ; =ov11_02320858 - movs sb, r0 - mov r7, r2 - mov r6, r3 - add r4, r1, r5, lsl #2 - bpl _022FD7C0 - ldrsb r0, [r4] - cmp r0, #1 - bne _022FD770 - mov r0, r5, lsl #0x10 - mov r0, r0, asr #0x10 - bl ov11_022FD6DC - mov sb, r0 -_022FD770: - cmp sb, #0 - bge _022FD7B4 - ldr r0, _022FDA6C ; =ov11_02324D04 - mov r3, #0 - ldr r2, [r0] - mvn r1, #0 - b _022FD7AC -_022FD78C: - ldrsh r0, [r2, #6] - cmp r0, r1 - moveq sb, r3 - beq _022FD7B4 - add r0, r3, #1 - mov r0, r0, lsl #0x10 - mov r3, r0, asr #0x10 - add r2, r2, #0x214 -_022FD7AC: - cmp r3, #0x10 - blt _022FD78C -_022FD7B4: - cmp sb, #0 - mvnlt r0, #0 - blt _022FDA60 -_022FD7C0: - ldr r0, _022FDA6C ; =ov11_02324D04 - ldrsb r1, [r4] - ldr r2, [r0] - mov r0, #0x214 - stmia sp, {r1, r7} - str r6, [sp, #8] - ldrh r3, [r8] - smlabb r5, sb, r0, r2 - ldr r1, _022FDA70 ; =ov11_02322160 - mov r2, sb - mov r0, #1 - bl Debug_Print - ldrsh r1, [r5, #6] - mvn r0, #0 - cmp r1, r0 - moveq r0, #1 - movne r0, #0 - ands sl, r0, #0xff - beq _022FD81C - mov r1, #0 - add r0, r5, #0x150 - strb r1, [r5, #8] - bl ov11_022F4A14 -_022FD81C: - sub r0, r7, #1 - strh sb, [r5, #4] - mov r0, r0, lsl #0x10 - ldrh r1, [r8] - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - strh r1, [r5, #6] - strlsh r7, [r5, #0xa] - strlsb r6, [r5, #0xc] - mvnls r0, #0 - strlsb r0, [r5, #0xd] - bls _022FD868 - cmp sl, #0 - mvnne r0, #0 - strneh r0, [r5, #0xa] - strneb r0, [r5, #0xc] - strb r6, [r5, #0xd] -_022FD868: - ldrsb r0, [r4] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _022FD8CC -_022FD878: ; jump table - b _022FD8CC ; case 0 - b _022FD890 ; case 1 - b _022FD89C ; case 2 - b _022FD8A8 ; case 3 - b _022FD8B4 ; case 4 - b _022FD8C0 ; case 5 -_022FD890: - mov r0, #0x800000 - str r0, [r5, #0x128] - b _022FD8D4 -_022FD89C: - mov r0, #0x20c0000 - str r0, [r5, #0x128] - b _022FD8D4 -_022FD8A8: - mov r0, #0x20c0000 - str r0, [r5, #0x128] - b _022FD8D4 -_022FD8B4: - mov r0, #0x2000000 - str r0, [r5, #0x128] - b _022FD8D4 -_022FD8C0: - ldr r0, _022FDA74 ; =0x02020000 - str r0, [r5, #0x128] - b _022FD8D4 -_022FD8CC: - mov r0, #0x20c0000 - str r0, [r5, #0x128] -_022FD8D4: - ldrb r0, [r4, #3] - cmp r0, #0 - ldrne r0, [r5, #0x128] - orrne r0, r0, #0x80000000 - strne r0, [r5, #0x128] - ldrb r0, [r4, #1] - cmp r0, #0 - ldreqb r0, [r8, #3] - moveq r0, r0, lsl #0xb - streq r0, [r5, #0x10] - ldreqb r0, [r8, #4] - movne r0, r0, lsl #0xb - strne r0, [r5, #0x10] - ldrneb r0, [r4, #2] - mov r0, r0, lsl #0xb - str r0, [r5, #0x14] - ldr r0, [r5, #0x10] - add r0, r0, r0, lsr #31 - mov r0, r0, asr #1 - str r0, [r5, #0x18] - ldr r0, [r5, #0x14] - add r0, r0, r0, lsr #31 - mov r0, r0, asr #1 - str r0, [r5, #0x1c] - ldrsb r0, [r8, #2] - strb r0, [r5, #0x20] - ldrb r0, [r8, #7] - tst r0, #4 - bne _022FD968 - ldrb r0, [r8, #5] - mov r0, r0, lsl #0xb - str r0, [r5, #0x24] - ldrb r0, [r8, #7] - tst r0, #2 - ldrne r0, [r5, #0x24] - addne r0, r0, #0x400 - strne r0, [r5, #0x24] -_022FD968: - ldrb r0, [r8, #8] - tst r0, #4 - bne _022FD994 - ldrb r0, [r8, #6] - mov r0, r0, lsl #0xb - str r0, [r5, #0x28] - ldrb r0, [r8, #8] - tst r0, #2 - ldrne r0, [r5, #0x28] - addne r0, r0, #0x400 - strne r0, [r5, #0x28] -_022FD994: - ldrb r0, [sp, #0x30] - cmp r0, #0 - ldrne r0, [r5, #0x128] - orrne r0, r0, #0x800000 - strne r0, [r5, #0x128] - cmp sl, #0 - beq _022FDA54 - ldrsb r0, [r5, #0x20] - mov r2, #0 - strb r0, [r5, #0x12c] - ldr r3, [r5, #0x24] - ldr r1, [r5, #0x18] - add r0, r5, #0x2c - sub r1, r3, r1 - str r1, [r5, #0x130] - ldr r4, [r5, #0x24] - ldr r3, [r5, #0x18] - add r1, r5, #0x34 - add r3, r4, r3 - str r3, [r5, #0x138] - ldr r4, [r5, #0x28] - ldr r3, [r5, #0x1c] - sub r3, r4, r3 - str r3, [r5, #0x134] - ldr r4, [r5, #0x28] - ldr r3, [r5, #0x1c] - add r3, r4, r3 - str r3, [r5, #0x13c] - str r2, [r5, #0x144] - str r2, [r5, #0x140] - bl ov11_022F1F08 - add r0, r5, #0x100 - mov r2, #0x800 - mov r1, #1 - strh r2, [r0, #0x4a] - strb r1, [r5, #0x148] - sub r1, r1, #2 - strh r1, [r0, #0x4c] - mov r1, #0 - strh r1, [r0, #0x4e] - ldrsh r1, [r5, #6] - ldr r2, [r5, #0x128] - add r0, r5, #0x150 - bl ov11_022F6F4C - ldr r1, _022FDA78 ; =PERFORMER_FUNCTION_TABLE - mov r2, r5 - add r0, r5, #0x3c - bl InitScriptRoutine -_022FDA54: - mov r1, #1 - mov r0, sb - strb r1, [r5, #8] -_022FDA60: - add sp, sp, #0xc - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022FDA68: .word ov11_02320858 -_022FDA6C: .word ov11_02324D04 -_022FDA70: .word ov11_02322160 -_022FDA74: .word 0x02020000 -_022FDA78: .word PERFORMER_FUNCTION_TABLE - arm_func_end ov11_022FD72C - - arm_func_start ov11_022FDA7C -ov11_022FDA7C: ; 0x022FDA7C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sl, r0 - mov sb, r1 - ldr r1, _022FDBDC ; =ov11_023221A8 - mov r2, sl - mov r3, sb - mov r0, #1 - bl Debug_Print - sub r0, sl, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - mov r8, #0 - bhi _022FDB44 - ldr r0, _022FDBE0 ; =ov11_02324D04 - mvn r4, #1 - ldr r7, [r0] - ldr fp, _022FDBE4 ; =ov11_023221D8 - add r5, r4, #1 - mov r6, #1 -_022FDAD8: - ldrsh r3, [r7, #6] - cmp r3, r5 - beq _022FDB28 - ldrsh r2, [r7, #0xa] - mov r0, r6 - mov r1, fp - str r2, [sp] - ldrsb ip, [r7, #0xc] - mov r2, r8 - str ip, [sp, #4] - bl Debug_Print - ldrsh r0, [r7, #0xa] - cmp sl, r0 - bne _022FDB28 - cmp sb, r4 - ldrnesb r0, [r7, #0xc] - cmpne sb, r0 - bne _022FDB28 - mov r0, r8 - bl DeleteLivePerformer -_022FDB28: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #0x10 - add r7, r7, #0x214 - blt _022FDAD8 - b _022FDBD4 -_022FDB44: - ldr r0, _022FDBE0 ; =ov11_02324D04 - mvn r5, #1 - add r6, r5, #1 - ldr sl, [r0] - mov r4, r6 - mov r7, r6 - mov fp, #1 -_022FDB60: - ldrsh r3, [sl, #6] - cmp r3, r7 - beq _022FDBBC - ldrsb ip, [sl, #0xd] - ldr r1, _022FDBE8 ; =ov11_02322204 - mov r0, fp - mov r2, r8 - str ip, [sp] - bl Debug_Print - ldrsb r0, [sl, #0xd] - cmp r0, r6 - beq _022FDBA8 - cmp sb, r5 - cmpne sb, r0 - bne _022FDBBC - mov r0, r8 - bl DeleteLivePerformer - b _022FDBBC -_022FDBA8: - ldrsh r0, [sl, #0xa] - cmp r0, r4 - bne _022FDBBC - mov r0, r8 - bl DeleteLivePerformer -_022FDBBC: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #0x10 - add sl, sl, #0x214 - blt _022FDB60 -_022FDBD4: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FDBDC: .word ov11_023221A8 -_022FDBE0: .word ov11_02324D04 -_022FDBE4: .word ov11_023221D8 -_022FDBE8: .word ov11_02322204 - arm_func_end ov11_022FDA7C - - arm_func_start DeleteLivePerformer -DeleteLivePerformer: ; 0x022FDBEC - stmdb sp!, {r4, lr} - ldr r1, _022FDC2C ; =ov11_02324D04 - mov r2, r0 - ldr r1, [r1] - mov r0, #0x214 - smlabb r4, r2, r0, r1 - ldr r1, _022FDC30 ; =ov11_02322224 - mov r0, #1 - bl Debug_Print - add r0, r4, #0x150 - bl ov11_022F6F9C - add r0, r4, #0x3c - bl ov11_022DC934 - mvn r0, #0 - strh r0, [r4, #6] - ldmia sp!, {r4, pc} - .align 2, 0 -_022FDC2C: .word ov11_02324D04 -_022FDC30: .word ov11_02322224 - arm_func_end DeleteLivePerformer - - arm_func_start ov11_022FDC34 -ov11_022FDC34: ; 0x022FDC34 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sl, r0 - mov sb, r1 - ldr r1, _022FDD8C ; =ov11_023221A8 - mov r2, sl - mov r3, sb - mov r0, #1 - bl Debug_Print - sub r0, sl, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - mov r8, #0 - bhi _022FDD04 - ldr r0, _022FDD90 ; =ov11_02324D04 - mvn r5, #0 - ldr r7, [r0] - ldr fp, _022FDD94 ; =ov11_023221D8 - sub r4, r5, #1 - mov r6, #1 -_022FDC90: - ldrsh r3, [r7, #6] - cmp r3, r5 - beq _022FDCE8 - ldrsh r2, [r7, #0xa] - mov r0, r6 - mov r1, fp - str r2, [sp] - ldrsb ip, [r7, #0xc] - mov r2, r8 - str ip, [sp, #4] - bl Debug_Print - ldrsh r0, [r7, #0xa] - cmp sl, r0 - bne _022FDCE8 - cmp sb, r4 - ldrnesb r0, [r7, #0xc] - cmpne sb, r0 - bne _022FDCE8 - mov r1, #0 - add r0, r7, #0x3c - bl ov11_022DCFC4 - strh r5, [r7, #0xa] -_022FDCE8: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #0x10 - add r7, r7, #0x214 - blt _022FDC90 - b _022FDD84 -_022FDD04: - ldr r0, _022FDD90 ; =ov11_02324D04 - mvn r5, #0 - mov r7, #1 - ldr sl, [r0] - ldr r6, _022FDD94 ; =ov11_023221D8 - sub r4, r5, #1 - mov fp, r7 -_022FDD20: - ldrsh r3, [sl, #6] - cmp r3, r5 - beq _022FDD6C - ldrsh r2, [sl, #0xa] - mov r0, r7 - mov r1, r6 - str r2, [sp] - ldrsb ip, [sl, #0xc] - mov r2, r8 - str ip, [sp, #4] - bl Debug_Print - cmp sb, r4 - ldrnesb r0, [sl, #0xd] - cmpne sb, r0 - bne _022FDD6C - mov r1, fp - add r0, sl, #0x3c - bl ov11_022DCFC4 - strb r5, [sl, #0xd] -_022FDD6C: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #0x10 - add sl, sl, #0x214 - blt _022FDD20 -_022FDD84: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FDD8C: .word ov11_023221A8 -_022FDD90: .word ov11_02324D04 -_022FDD94: .word ov11_023221D8 - arm_func_end ov11_022FDC34 - - arm_func_start SetAttributeBitfieldLivePerformer -SetAttributeBitfieldLivePerformer: ; 0x022FDD98 - stmdb sp!, {r3, lr} - ldr r3, _022FDDD4 ; =ov11_02324D04 - mov r2, #0x214 - ldr ip, [r3] - mvn r3, #0 - smlabb ip, r0, r2, ip - ldrsh r0, [ip, #6] - cmp r0, r3 - ldmeqia sp!, {r3, pc} - ldr r2, [ip, #0x128] - add r0, ip, #0x150 - orr r1, r2, r1 - str r1, [ip, #0x128] - bl SetAnimDataFieldsWrapper - ldmia sp!, {r3, pc} - .align 2, 0 -_022FDDD4: .word ov11_02324D04 - arm_func_end SetAttributeBitfieldLivePerformer - - arm_func_start ResetAttributeBitfieldLivePerformer -ResetAttributeBitfieldLivePerformer: ; 0x022FDDD8 - stmdb sp!, {r3, lr} - ldr r3, _022FDE18 ; =ov11_02324D04 - mov r2, #0x214 - ldr ip, [r3] - mvn r3, #0 - smlabb ip, r0, r2, ip - ldrsh r0, [ip, #6] - cmp r0, r3 - ldmeqia sp!, {r3, pc} - ldr r2, [ip, #0x128] - eor r0, r1, r3 - and r1, r2, r0 - add r0, ip, #0x150 - str r1, [ip, #0x128] - bl SetAnimDataFieldsWrapper - ldmia sp!, {r3, pc} - .align 2, 0 -_022FDE18: .word ov11_02324D04 - arm_func_end ResetAttributeBitfieldLivePerformer - - arm_func_start ov11_022FDE1C -ov11_022FDE1C: ; 0x022FDE1C - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - mvn r0, #0 - cmp r4, r0 - beq _022FDE78 - ldr r0, _022FDE80 ; =ov11_02324D04 - mov r6, #0 - ldr r5, [r0] - b _022FDE70 -_022FDE40: - ldrsh r0, [r5, #6] - cmp r0, r4 - bne _022FDE60 - add r0, r5, #0x3c - bl ov11_022DC958 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} -_022FDE60: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - add r5, r5, #0x214 -_022FDE70: - cmp r6, #0x10 - blt _022FDE40 -_022FDE78: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FDE80: .word ov11_02324D04 - arm_func_end ov11_022FDE1C - - arm_func_start ov11_022FDE84 -ov11_022FDE84: ; 0x022FDE84 - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - mvn r0, #0 - cmp r4, r0 - beq _022FDEE0 - ldr r0, _022FDEE8 ; =ov11_02324D04 - mov r6, #0 - ldr r5, [r0] - b _022FDED8 -_022FDEA8: - ldrsh r0, [r5, #6] - cmp r0, r4 - bne _022FDEC8 - add r0, r5, #0x3c - bl ov11_022DC9A0 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r4, r5, r6, pc} -_022FDEC8: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - add r5, r5, #0x214 -_022FDED8: - cmp r6, #0x10 - blt _022FDEA8 -_022FDEE0: - mov r0, #0 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FDEE8: .word ov11_02324D04 - arm_func_end ov11_022FDE84 - - arm_func_start ov11_022FDEEC -ov11_022FDEEC: ; 0x022FDEEC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - mov r6, r0 - mvn r0, #0 - mov r5, r1 - mov r4, r2 - cmp r6, r0 - beq _022FDF48 - ldr r0, _022FDF50 ; =ov11_02324D04 - mov r8, #0 - ldr r7, [r0] -_022FDF14: - ldrsh r0, [r7, #6] - cmp r0, r6 - bne _022FDF30 - mov r1, r5 - mov r2, r4 - add r0, r7, #0x3c - bl ov11_022DCCEC -_022FDF30: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #0x10 - add r7, r7, #0x214 - blt _022FDF14 -_022FDF48: - mov r0, #0 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022FDF50: .word ov11_02324D04 - arm_func_end ov11_022FDEEC - - arm_func_start ov11_022FDF54 -ov11_022FDF54: ; 0x022FDF54 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - mov r7, #1 - mov sb, r0 - sub r0, r7, #2 - mov r8, r1 - cmp sb, r0 - beq _022FDFC8 - ldr r0, _022FDFD0 ; =ov11_02324D04 - mov r6, #0 - ldr r5, [r0] - mov r4, r6 -_022FDF80: - ldrsh r0, [r5, #6] - cmp r0, sb - bne _022FDFB0 - add r0, r5, #0x3c - bl ov11_022DC958 - cmp r0, #0 - beq _022FDFB0 - mov r1, r8 - add r0, r5, #0x3c - bl ov11_022DCA58 - cmp r0, #0 - moveq r7, r4 -_022FDFB0: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - cmp r6, #0x10 - add r5, r5, #0x214 - blt _022FDF80 -_022FDFC8: - mov r0, r7 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_022FDFD0: .word ov11_02324D04 - arm_func_end ov11_022FDF54 - - arm_func_start ov11_022FDFD4 -ov11_022FDFD4: ; 0x022FDFD4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x20 - mov sl, r0 - sub r0, sl, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - mov sb, r1 - mov r8, #0 - mov r0, #1 - bhi _022FE0E4 - ldr r1, _022FE19C ; =ov11_02322244 - mov r2, sl - mov r3, sb - bl Debug_Print - ldr r0, _022FE1A0 ; =ov11_02324D04 - mvn r4, #1 - ldr r6, [r0] - mov r7, r8 - add r5, r4, #1 - mov fp, r8 -_022FE030: - ldrsh r3, [r6, #6] - cmp r3, r5 - beq _022FE0C8 - ldrsh r0, [r6, #0xa] - cmp r0, sl - bne _022FE0C8 - cmp sb, r4 - ldrnesb r0, [r6, #0xc] - cmpne r0, sb - bne _022FE0C8 - ldr r1, _022FE1A4 ; =ov11_02322288 - mov r0, #1 - mov r2, r7 - bl Debug_Print - str sb, [sp] - ldrsh r2, [r6, #6] - add r0, sp, #4 - mov r1, #5 - mov r3, sl - bl ov11_022E5EFC - cmp r0, #0 - beq _022FE0C8 - add r0, r6, #0x3c - add r1, sp, #4 - strh fp, [sp, #0x1c] - bl ov11_022DC9C8 - cmp r0, #0 - bne _022FE0C8 - add r0, r6, #0x2c - add r1, r6, #0x34 - bl ov11_022F1F08 - add r0, r6, #0x3c - mov r1, #0 - add r2, sp, #4 - bl ov11_022DCCEC - orr r8, r8, r0 - mov r0, #1 - strb r0, [r6, #0x148] -_022FE0C8: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #0x10 - add r6, r6, #0x214 - blt _022FE030 - b _022FE190 -_022FE0E4: - ldr r1, _022FE1A8 ; =ov11_0232229C - mov r2, sl - mov r3, sb - bl Debug_Print - ldr r0, _022FE1A0 ; =ov11_02324D04 - mvn r4, #1 - ldr r7, [r0] - mov r6, r8 - add r5, r4, #1 - mov fp, #1 -_022FE10C: - ldrsh r3, [r7, #6] - cmp r3, r5 - beq _022FE178 - cmp sb, r4 - ldrnesb r0, [r7, #0xd] - cmpne r0, sb - bne _022FE178 - ldr r1, _022FE1A4 ; =ov11_02322288 - mov r0, #1 - mov r2, r6 - bl Debug_Print - str sb, [sp] - ldrsh r2, [r7, #6] - add r0, sp, #4 - mov r1, #5 - mov r3, sl - bl ov11_022E5EFC - cmp r0, #0 - beq _022FE178 - add r0, r7, #0x3c - mov r1, #0 - add r2, sp, #4 - strh fp, [sp, #0x1c] - bl ov11_022DCCEC - orr r8, r8, r0 - mov r0, #1 - strb r0, [r7, #0x148] -_022FE178: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - cmp r6, #0x10 - add r7, r7, #0x214 - blt _022FE10C -_022FE190: - mov r0, r8 - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FE19C: .word ov11_02322244 -_022FE1A0: .word ov11_02324D04 -_022FE1A4: .word ov11_02322288 -_022FE1A8: .word ov11_0232229C - arm_func_end ov11_022FDFD4 - - arm_func_start ov11_022FE1AC -ov11_022FE1AC: ; 0x022FE1AC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov sl, r0 - sub r0, sl, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - mov sb, r1 - mov r8, #0 - mov r0, #1 - bhi _022FE264 - ldr r1, _022FE2F0 ; =ov11_023222E0 - mov r2, sl - mov r3, sb - bl Debug_Print - ldr r0, _022FE2F4 ; =ov11_02324D04 - mvn r4, #1 - ldr r6, [r0] - mov r7, r8 - add r5, r4, #1 - mov fp, #1 -_022FE204: - ldrsh r3, [r6, #6] - cmp r3, r5 - beq _022FE248 - ldrsh r0, [r6, #0xa] - cmp sl, r0 - bne _022FE248 - cmp sb, r4 - ldrnesb r0, [r6, #0xc] - cmpne sb, r0 - bne _022FE248 - ldr r1, _022FE2F8 ; =ov11_02322288 - mov r0, fp - mov r2, r7 - bl Debug_Print - add r0, r6, #0x3c - bl ov11_022DCAE0 - orr r8, r8, r0 -_022FE248: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #0x10 - add r6, r6, #0x214 - blt _022FE204 - b _022FE2E8 -_022FE264: - ldr r1, _022FE2FC ; =ov11_02322324 - mov r2, sl - mov r3, sb - bl Debug_Print - ldr r0, _022FE2F4 ; =ov11_02324D04 - mvn r5, #0 - ldr sl, [r0] - ldr fp, _022FE2F8 ; =ov11_02322288 - mov r7, r8 - sub r4, r5, #1 - mov r6, #1 -_022FE290: - ldrsh r3, [sl, #6] - cmp r3, r5 - beq _022FE2D0 - ldrsb r0, [sl, #0xd] - cmp r0, r5 - cmpne sb, r4 - cmpne sb, r0 - bne _022FE2D0 - mov r0, r6 - mov r1, fp - mov r2, r7 - bl Debug_Print - add r0, sl, #0x3c - bl ov11_022DD080 - strb r5, [sl, #0xd] - orr r8, r8, r0 -_022FE2D0: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #0x10 - add sl, sl, #0x214 - blt _022FE290 -_022FE2E8: - mov r0, r8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FE2F0: .word ov11_023222E0 -_022FE2F4: .word ov11_02324D04 -_022FE2F8: .word ov11_02322288 -_022FE2FC: .word ov11_02322324 - arm_func_end ov11_022FE1AC - - arm_func_start ov11_022FE300 -ov11_022FE300: ; 0x022FE300 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r0, _022FE350 ; =ov11_02324D04 - mov r4, #0 - ldr r7, [r0] - mov r6, r4 - mvn r5, #0 -_022FE318: - ldrsh r0, [r7, #6] - cmp r0, r5 - beq _022FE330 - add r0, r7, #0x3c - bl ov11_022DCB00 - orr r4, r4, r0 -_022FE330: - add r0, r6, #1 - mov r0, r0, lsl #0x10 - mov r6, r0, asr #0x10 - cmp r6, #0x10 - add r7, r7, #0x214 - blt _022FE318 - mov r0, r4 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022FE350: .word ov11_02324D04 - arm_func_end ov11_022FE300 - - arm_func_start UnlockPerformerRoutines -UnlockPerformerRoutines: ; 0x022FE354 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r1, _022FE3AC ; =ov11_02324D04 - mov r5, #0 - ldr r4, [r1] - mov r6, r0 - mov r8, r5 - mvn r7, #0 -_022FE370: - ldrsh r0, [r4, #6] - cmp r0, r7 - beq _022FE38C - mov r1, r6 - add r0, r4, #0x3c - bl UnlockRoutine - orr r5, r5, r0 -_022FE38C: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #0x10 - add r4, r4, #0x214 - blt _022FE370 - mov r0, r5 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022FE3AC: .word ov11_02324D04 - arm_func_end UnlockPerformerRoutines - - arm_func_start ov11_022FE3B0 -ov11_022FE3B0: ; 0x022FE3B0 - ldr r3, _022FE400 ; =ov11_02324D04 - mov r2, #0x214 - ldr ip, [r3] - mvn r3, #0 - smlabb ip, r0, r2, ip - ldrsh r0, [ip, #6] - cmp r0, r3 - moveq r0, #0 - streq r0, [r1] - beq _022FE3F4 - ldr r2, [ip, #0x130] - ldr r0, [ip, #0x18] - add r0, r2, r0 - str r0, [r1] - ldr r2, [ip, #0x134] - ldr r0, [ip, #0x1c] - add r0, r2, r0 -_022FE3F4: - str r0, [r1, #4] - ldrsh r0, [ip, #6] - bx lr - .align 2, 0 -_022FE400: .word ov11_02324D04 - arm_func_end ov11_022FE3B0 - - arm_func_start SetPositionLivePerformer -SetPositionLivePerformer: ; 0x022FE404 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - ldr r5, [r0, #0x18] - ldr r3, [r1] - ldr lr, [r0, #0x1c] - ldr r2, [r1, #4] - sub r4, r3, r5 - ldr r1, [r0, #0x2c] - sub ip, r2, lr - add r3, r3, r5 - add r2, r2, lr - str r4, [sp, #8] - str ip, [sp, #0xc] - str r3, [sp] - str r2, [sp, #4] - cmp r4, r1 - blt _022FE46C - ldr r1, [r0, #0x34] - cmp r3, r1 - bge _022FE46C - ldr r1, [r0, #0x30] - cmp ip, r1 - blt _022FE46C - ldr r1, [r0, #0x38] - cmp r2, r1 - blt _022FE474 -_022FE46C: - mov r0, #0x40 - b _022FE488 -_022FE474: - str r4, [r0, #0x130] - str ip, [r0, #0x134] - str r3, [r0, #0x138] - str r2, [r0, #0x13c] - mov r0, #0 -_022FE488: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end SetPositionLivePerformer - - arm_func_start GetIdLivePerformer -GetIdLivePerformer: ; 0x022FE490 - ldrsh r0, [r0, #4] - bx lr - arm_func_end GetIdLivePerformer - - arm_func_start GetCollisionBoxLivePerformer -GetCollisionBoxLivePerformer: ; 0x022FE498 - ldr r2, [r0, #0x10] - ldr r0, [r0, #0x14] - str r2, [r1] - str r0, [r1, #4] - bx lr - arm_func_end GetCollisionBoxLivePerformer - - arm_func_start SetPositionInitialLivePerformer -SetPositionInitialLivePerformer: ; 0x022FE4AC - cmp r1, #0 - beq _022FE4F8 - ldr r3, [r1] - ldr r2, [r0, #0x18] - sub r2, r3, r2 - str r2, [r0, #0x130] - ldr r3, [r1] - ldr r2, [r0, #0x18] - add r2, r3, r2 - str r2, [r0, #0x138] - ldr r3, [r1, #4] - ldr r2, [r0, #0x1c] - sub r2, r3, r2 - str r2, [r0, #0x134] - ldr r2, [r1, #4] - ldr r1, [r0, #0x1c] - add r1, r2, r1 - str r1, [r0, #0x13c] - bx lr -_022FE4F8: - ldr r3, [r0, #0x24] - ldr r1, [r0, #0x18] - mov r2, #0 - sub r1, r3, r1 - str r1, [r0, #0x130] - ldr r3, [r0, #0x24] - ldr r1, [r0, #0x18] - add r1, r3, r1 - str r1, [r0, #0x138] - ldr ip, [r0, #0x28] - ldr r3, [r0, #0x1c] - add r1, r0, #0x100 - sub r3, ip, r3 - str r3, [r0, #0x134] - ldr ip, [r0, #0x28] - ldr r3, [r0, #0x1c] - add r3, ip, r3 - str r3, [r0, #0x13c] - str r2, [r0, #0x144] - str r2, [r0, #0x140] - ldrsb r2, [r1, #0x2c] - ldrsb r1, [r0, #0x20] - cmp r2, r1 - movne r1, #1 - strneb r1, [r0, #0x148] - ldrsb r1, [r0, #0x20] - strb r1, [r0, #0x12c] - bx lr - arm_func_end SetPositionInitialLivePerformer - - arm_func_start SetMovementRangeLivePerformer -SetMovementRangeLivePerformer: ; 0x022FE568 - ldr r3, [r1] - ldr r1, [r1, #4] - str r3, [r0, #0x2c] - str r1, [r0, #0x30] - ldr r3, [r2] - ldr r1, [r2, #4] - str r3, [r0, #0x34] - str r1, [r0, #0x38] - bx lr - arm_func_end SetMovementRangeLivePerformer - - arm_func_start GetCollisionBoxCenterLivePerformer -GetCollisionBoxCenterLivePerformer: ; 0x022FE58C - ldr r3, [r0, #0x130] - ldr r2, [r0, #0x18] - add r2, r3, r2 - str r2, [r1] - ldr r2, [r0, #0x134] - ldr r0, [r0, #0x1c] - add r0, r2, r0 - str r0, [r1, #4] - bx lr - arm_func_end GetCollisionBoxCenterLivePerformer - - arm_func_start SetPositionLivePerformerVeneer -SetPositionLivePerformerVeneer: ; 0x022FE5B0 - ldr ip, _022FE5B8 ; =SetPositionLivePerformer - bx ip - .align 2, 0 -_022FE5B8: .word SetPositionLivePerformer - arm_func_end SetPositionLivePerformerVeneer - - arm_func_start GetHeightLivePerformer -GetHeightLivePerformer: ; 0x022FE5BC - ldr r3, [r0, #0x140] - str r3, [r1] - ldr r0, [r0, #0x144] - str r0, [r2] - bx lr - arm_func_end GetHeightLivePerformer - - arm_func_start SetHeightLivePerformer -SetHeightLivePerformer: ; 0x022FE5D0 - str r1, [r0, #0x140] - bx lr - arm_func_end SetHeightLivePerformer - - arm_func_start GetDirectionLivePerformer -GetDirectionLivePerformer: ; 0x022FE5D8 - add r0, r0, #0x100 - ldrsb r0, [r0, #0x2c] - strb r0, [r1] - bx lr - arm_func_end GetDirectionLivePerformer - - arm_func_start SetDirectionLivePerformer -SetDirectionLivePerformer: ; 0x022FE5E8 - mvn r2, #0 - cmp r1, r2 - strneb r1, [r0, #0x12c] - bx lr - arm_func_end SetDirectionLivePerformer - - arm_func_start SetAnimationLivePerformer -SetAnimationLivePerformer: ; 0x022FE5F8 - and r2, r1, #0x700 - mov r2, r2, lsl #0x10 - and r3, r1, #0xff - tst r1, #0x800 - mov ip, r2, lsr #0x10 - beq _022FE628 - add r1, r0, #0x100 - mov r2, #0x400 - strh r2, [r1, #0x4a] - mov r1, #1 - strb r1, [r0, #0x148] - bx lr -_022FE628: - cmp r3, #0 - ldrne r1, _022FE6B4 ; =ov11_023220DC - movne r2, r3, lsl #1 - ldrnesh r3, [r1, r2] - addeq r1, r0, #0x100 - ldreqsh r3, [r1, #0x4a] - cmp ip, #0x200 - bgt _022FE660 - bge _022FE67C - cmp ip, #0x100 - orreq r1, r3, #0x300 - moveq r1, r1, lsl #0x10 - moveq r3, r1, asr #0x10 - b _022FE688 -_022FE660: - cmp ip, #0x300 - ble _022FE688 - cmp ip, #0x400 - orreq r1, r3, #0x200 - moveq r1, r1, lsl #0x10 - moveq r3, r1, asr #0x10 - b _022FE688 -_022FE67C: - orr r1, r3, #0x100 - mov r1, r1, lsl #0x10 - mov r3, r1, asr #0x10 -_022FE688: - add r1, r0, #0x100 - ldrsh r2, [r1, #0x4a] - cmp r2, r3 - strneh r3, [r1, #0x4a] - movne r1, #1 - strneb r1, [r0, #0x148] - bxne lr - tst r2, #0x1000 - movne r1, #1 - strneb r1, [r0, #0x148] - bx lr - .align 2, 0 -_022FE6B4: .word ov11_023220DC - arm_func_end SetAnimationLivePerformer - - arm_func_start SetEffectLivePerformer -SetEffectLivePerformer: ; 0x022FE6B8 - add r0, r0, #0x100 - strh r1, [r0, #0x4c] - strh r2, [r0, #0x4e] - bx lr - arm_func_end SetEffectLivePerformer - - arm_func_start GetAnimationStatusLivePerformer -GetAnimationStatusLivePerformer: ; 0x022FE6C8 - stmdb sp!, {r3, lr} - ldrb r1, [r0, #0x148] - cmp r1, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - add r0, r0, #0x150 - bl ov11_022F4990 - ldmia sp!, {r3, pc} - arm_func_end GetAnimationStatusLivePerformer - - arm_func_start GetEffectStatusLivePerformer -GetEffectStatusLivePerformer: ; 0x022FE6E8 - stmdb sp!, {r3, lr} - add r1, r0, #0x100 - ldrsh r3, [r1, #0x4c] - mvn r2, #0 - cmp r3, r2 - movne r0, #1 - ldmneia sp!, {r3, pc} - ldrsh r1, [r1, #0x4e] - cmp r1, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - add r0, r0, #0x150 - bl ov11_022F49B0 - ldmia sp!, {r3, pc} - arm_func_end GetEffectStatusLivePerformer - - arm_func_start GetAttributeBitfieldLivePerformer -GetAttributeBitfieldLivePerformer: ; 0x022FE720 - ldr r0, [r0, #0x128] - str r0, [r1] - bx lr - arm_func_end GetAttributeBitfieldLivePerformer - - arm_func_start SetAttributeBitfieldLivePerformerWrapper -SetAttributeBitfieldLivePerformerWrapper: ; 0x022FE72C - ldr ip, _022FE738 ; =SetAttributeBitfieldLivePerformer - ldrsh r0, [r0, #4] - bx ip - .align 2, 0 -_022FE738: .word SetAttributeBitfieldLivePerformer - arm_func_end SetAttributeBitfieldLivePerformerWrapper - - arm_func_start ResetAttributeBitfieldLivePerformerWrapper -ResetAttributeBitfieldLivePerformerWrapper: ; 0x022FE73C - ldr ip, _022FE748 ; =ResetAttributeBitfieldLivePerformer - ldrsh r0, [r0, #4] - bx ip - .align 2, 0 -_022FE748: .word ResetAttributeBitfieldLivePerformer - arm_func_end ResetAttributeBitfieldLivePerformerWrapper - - arm_func_start SetBlinkLivePerformer -SetBlinkLivePerformer: ; 0x022FE74C - ldr ip, _022FE758 ; =ov11_022F4984 - add r0, r0, #0x150 - bx ip - .align 2, 0 -_022FE758: .word ov11_022F4984 - arm_func_end SetBlinkLivePerformer - - arm_func_start SetPositionOffsetLivePerformer -SetPositionOffsetLivePerformer: ; 0x022FE75C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - ldr ip, [r1] - ldr r2, [r0, #0x130] - ldr lr, [r1, #4] - add r4, r2, ip - ldr r1, [r0, #0x13c] - ldr r3, [r0, #0x138] - ldr r2, [r0, #0x2c] - add r3, r3, ip - add r1, r1, lr - ldr ip, [r0, #0x134] - str r1, [sp, #0xc] - cmp r4, r2 - ldrlt r1, [r0, #0x10] - add ip, ip, lr - str r4, [sp] - str r3, [sp, #8] - addlt r1, r2, r1 - str ip, [sp, #4] - strlt r2, [sp] - strlt r1, [sp, #8] - blt _022FE7D0 - ldr r2, [r0, #0x34] - cmp r3, r2 - ldrge r1, [r0, #0x10] - strge r2, [sp, #8] - subge r1, r2, r1 - strge r1, [sp] -_022FE7D0: - ldr r2, [r0, #0x30] - ldr r1, [sp, #4] - cmp r1, r2 - ldrlt r1, [r0, #0x14] - strlt r2, [sp, #4] - addlt r1, r2, r1 - strlt r1, [sp, #0xc] - blt _022FE80C - ldr r2, [r0, #0x38] - ldr r1, [sp, #0xc] - cmp r1, r2 - ldrge r1, [r0, #0x14] - strge r2, [sp, #0xc] - subge r1, r2, r1 - strge r1, [sp, #4] -_022FE80C: - ldr r2, [sp] - ldr r1, [sp, #4] - str r2, [r0, #0x130] - ldr r2, [sp, #8] - str r1, [r0, #0x134] - ldr r1, [sp, #0xc] - str r2, [r0, #0x138] - str r1, [r0, #0x13c] - mov r0, #0 - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end SetPositionOffsetLivePerformer - - arm_func_start ov11_022FE838 -ov11_022FE838: ; 0x022FE838 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r0, _022FE8C8 ; =ov11_02324D04 - mov r4, #0 - ldr r5, [r0] - mov r7, r4 - mvn r6, #0 -_022FE850: - ldrsh r0, [r5, #6] - cmp r0, r6 - ldrneb r0, [r5, #8] - cmpne r0, #0 - beq _022FE8AC - add r0, r5, #0x3c - bl FuncThatCallsRunNextOpcode - cmp r0, #0 - beq _022FE888 - cmp r0, #6 - bne _022FE888 - mov r0, r4 - bl DeleteLivePerformer - b _022FE8AC -_022FE888: - ldrb r0, [r5, #0x148] - cmp r0, #0 - beq _022FE8AC - strb r7, [r5, #0x148] - add r0, r5, #0x100 - ldrsh r1, [r0, #0x4a] - mov r2, r7 - add r0, r5, #0x150 - bl SetAnimDataFields2 -_022FE8AC: - add r0, r4, #1 - mov r0, r0, lsl #0x10 - mov r4, r0, asr #0x10 - cmp r4, #0x10 - add r5, r5, #0x214 - blt _022FE850 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_022FE8C8: .word ov11_02324D04 - arm_func_end ov11_022FE838 - - arm_func_start ov11_022FE8CC -ov11_022FE8CC: ; 0x022FE8CC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x14 - ldr r0, _022FE9D8 ; =ov11_023220B4 - ldr r1, _022FE9DC ; =ov11_02324D04 - ldr r8, [r0, #0x18] - ldr r7, [r0, #0x1c] - mov sb, #0 - ldr sl, [r1] - str r8, [sp, #4] - str r7, [sp, #8] - mov fp, sb - mvn r4, #0 -_022FE8FC: - ldrsh r0, [sl, #6] - cmp r0, r4 - ldrneb r0, [sl, #8] - cmpne r0, #0 - beq _022FE9B8 - str r8, [sp, #0xc] - str r7, [sp, #0x10] - ldr r2, [sl, #0x130] - ldr r1, [sl, #0x18] -#ifdef JAPAN - add r0, sl, #0x150 -#else - add r0, sl, #0x100 -#endif - add r1, r2, r1 - str r1, [sp, #0xc] - ldr r2, [sl, #0x134] - ldr r1, [sl, #0x1c] - add r1, r2, r1 - str r1, [sp, #0x10] -#ifdef JAPAN - ldr r6, [sl, #0x140] - ldr r5, [sl, #0x144] - bl ov11_022F5FE8_JP - cmp r0, #0 - beq _022FE970 - strb fp, [sl, #0x148] - add r0, sl, #0x100 -#else - ldrsh r1, [r0, #0xe2] - ldr r6, [sl, #0x140] - ldr r5, [sl, #0x144] - cmp r1, #0 - bge _022FE970 - ldrsh r1, [r0, #0xdc] - cmp r1, #0 - ble _022FE970 - strb fp, [sl, #0x148] -#endif - ldrsh r1, [r0, #0x4a] - mov r2, fp - add r0, sl, #0x150 - bl SetAnimDataFields2 -_022FE970: - add r3, sl, #0x100 - ldrsh r1, [r3, #0x4c] - cmp r1, r4 - beq _022FE9A8 - mov r0, #0 - str r0, [sp] - ldrsh r2, [r3, #0x4e] - ldrsb r3, [r3, #0x2c] - add r0, sl, #0x150 - bl ov11_022F5408 - add r1, sl, #0x100 - strh r4, [r1, #0x4c] - mov r0, #0 - strh r0, [r1, #0x4e] -_022FE9A8: - add r1, sp, #0xc - add r0, sl, #0x150 - add r2, r6, r5 - bl ov11_022F6FA8 -_022FE9B8: - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 - cmp sb, #0x10 - add sl, sl, #0x214 - blt _022FE8FC - add sp, sp, #0x14 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FE9D8: .word ov11_023220B4 -_022FE9DC: .word ov11_02324D04 - arm_func_end ov11_022FE8CC - - arm_func_start ov11_022FE9E0 -ov11_022FE9E0: ; 0x022FE9E0 - stmdb sp!, {r3, lr} - mov r0, #0x400 - mov r1, #6 - bl MemAlloc - ldr r1, _022FEA24 ; =ov11_02324D08 - mov r3, #0 - str r0, [r1] - mvn r2, #0 -_022FEA00: - add r1, r3, #1 - mov r1, r1, lsl #0x10 - mov r3, r1, asr #0x10 - strh r2, [r0, #2] - cmp r3, #0x20 - add r0, r0, #0x20 - blt _022FEA00 - bl ov11_022FEA28 - ldmia sp!, {r3, pc} - .align 2, 0 -_022FEA24: .word ov11_02324D08 - arm_func_end ov11_022FE9E0 - - arm_func_start ov11_022FEA28 -ov11_022FEA28: ; 0x022FEA28 - stmdb sp!, {r4, r5, r6, lr} - ldr r0, _022FEA6C ; =ov11_02324D08 - mov r5, #0 - ldr r6, [r0] - mvn r4, #0 -_022FEA3C: - ldrsh r0, [r6, #2] - cmp r0, r4 - beq _022FEA50 - mov r0, r5 - bl DeleteLiveEvent -_022FEA50: - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - cmp r5, #0x20 - add r6, r6, #0x20 - blt _022FEA3C - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FEA6C: .word ov11_02324D08 - arm_func_end ov11_022FEA28 - - arm_func_start ov11_022FEA70 -ov11_022FEA70: ; 0x022FEA70 - stmdb sp!, {r3, lr} - bl ov11_022FEA28 - ldr r0, _022FEA94 ; =ov11_02324D08 - ldr r0, [r0] - bl MemFree - ldr r0, _022FEA94 ; =ov11_02324D08 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_022FEA94: .word ov11_02324D08 - arm_func_end ov11_022FEA70 - - arm_func_start ov11_022FEA98 -ov11_022FEA98: ; 0x022FEA98 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - sub sp, sp, #0x10 - movs sl, r0 - mov sb, r1 - mov r8, r2 - mov r7, r3 - bpl _022FEB00 - ldr r0, _022FEBF4 ; =ov11_02324D08 - mov r2, #0 - ldr r4, [r0] - mvn r1, #0 - b _022FEAE8 -_022FEAC8: - ldrsh r0, [r4, #2] - cmp r0, r1 - moveq sl, r2 - beq _022FEAF0 - add r0, r2, #1 - mov r0, r0, lsl #0x10 - mov r2, r0, asr #0x10 - add r4, r4, #0x20 -_022FEAE8: - cmp r2, #0x20 - blt _022FEAC8 -_022FEAF0: - cmp sl, #0 - bge _022FEB0C - mvn r0, #0 - b _022FEBEC -_022FEB00: - ldr r0, _022FEBF4 ; =ov11_02324D08 - ldr r0, [r0] - add r4, r0, sl, lsl #5 -_022FEB0C: - str r8, [sp] - str r7, [sp, #4] - ldrsh r3, [sb] - ldr r1, _022FEBF8 ; =ov11_02322368 - mov r2, sl - mov r0, #1 - bl Debug_Print - ldrsh r0, [sb] - bl ov11_022E7FA8 - strh sl, [r4] - ldrsh r1, [sb] - strh r1, [r4, #2] - strh r8, [r4, #4] - strb r7, [r4, #6] - ldrsh r1, [sb, #8] - strh r1, [r4, #8] - ldrsh r0, [r0, #2] - cmp r0, #1 - cmpne r0, #2 - beq _022FEB64 - cmp r0, #7 - b _022FEB70 -_022FEB64: - mov r0, #0x1800 - str r0, [r4, #0xc] - b _022FEB78 -_022FEB70: - mov r0, #0x800 - str r0, [r4, #0xc] -_022FEB78: - ldrb r2, [sb, #2] - ldrb r0, [sb, #3] - ldrb r1, [sb, #6] - mov r2, r2, lsl #0xb - mov r0, r0, lsl #0xb - str r2, [sp, #8] - str r0, [sp, #0xc] - tst r1, #4 - bne _022FEBAC - ldrb r0, [sb, #4] - tst r1, #2 - mov r5, r0, lsl #0xb - addne r5, r5, #0x400 -_022FEBAC: - ldrb r1, [sb, #7] - tst r1, #4 - bne _022FEBC8 - ldrb r0, [sb, #5] - tst r1, #2 - mov r6, r0, lsl #0xb - addne r6, r6, #0x400 -_022FEBC8: - ldr r1, [sp, #8] - ldr r0, [sp, #0xc] - str r5, [r4, #0x10] - add r1, r5, r1 - str r1, [r4, #0x18] - str r6, [r4, #0x14] - add r1, r6, r0 - mov r0, sl - str r1, [r4, #0x1c] -_022FEBEC: - add sp, sp, #0x10 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022FEBF4: .word ov11_02324D08 -_022FEBF8: .word ov11_02322368 - arm_func_end ov11_022FEA98 - - arm_func_start ov11_022FEBFC -ov11_022FEBFC: ; 0x022FEBFC - stmdb sp!, {r4, r5, r6, r7, r8, lr} - ldr r2, _022FEC64 ; =ov11_02324D08 - mov r7, r0 - ldr r4, [r2] - mov r6, r1 - mov r5, #0 - mvn r8, #0 -_022FEC18: - ldrsh r0, [r4, #2] - cmp r0, r8 - beq _022FEC48 - ldrsh r0, [r4, #4] - cmp r0, r7 - bne _022FEC48 - cmp r6, r8 - ldrnesb r0, [r4, #6] - cmpne r6, r0 - bne _022FEC48 - mov r0, r5 - bl DeleteLiveEvent -_022FEC48: - add r0, r5, #1 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - cmp r5, #0x20 - add r4, r4, #0x20 - blt _022FEC18 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022FEC64: .word ov11_02324D08 - arm_func_end ov11_022FEBFC - - arm_func_start DeleteLiveEvent -DeleteLiveEvent: ; 0x022FEC68 - stmdb sp!, {r4, lr} - ldr r1, _022FEC94 ; =ov11_02324D08 - mov r2, r0 - ldr r3, [r1] - ldr r1, _022FEC98 ; =ov11_023223A4 - mov r0, #1 - add r4, r3, r2, lsl #5 - bl Debug_Print - mvn r0, #0 - strh r0, [r4, #2] - ldmia sp!, {r4, pc} - .align 2, 0 -_022FEC94: .word ov11_02324D08 -_022FEC98: .word ov11_023223A4 - arm_func_end DeleteLiveEvent - - arm_func_start ov11_022FEC9C -ov11_022FEC9C: ; 0x022FEC9C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #8 - mov sl, r0 - mov sb, r1 - ldr r1, _022FED68 ; =ov11_023223C0 - mov r2, sl - mov r3, sb - mov r0, #1 - bl Debug_Print - sub r0, sl, #1 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - bhi _022FED60 - ldr r0, _022FED6C ; =ov11_02324D08 - mvn r4, #1 - ldr r7, [r0] - ldr fp, _022FED70 ; =ov11_023223EC - mov r8, #0 - add r5, r4, #1 - mov r6, #1 -_022FECF8: - ldrsh r3, [r7, #2] - cmp r3, r5 - beq _022FED48 - ldrsh r2, [r7, #4] - mov r0, r6 - mov r1, fp - str r2, [sp] - ldrsb ip, [r7, #6] - mov r2, r8 - str ip, [sp, #4] - bl Debug_Print - ldrsh r0, [r7, #4] - cmp sl, r0 - bne _022FED48 - cmp sb, r4 - ldrnesb r0, [r7, #6] - cmpne sb, r0 - bne _022FED48 - mov r0, r8 - bl DeleteLiveEvent -_022FED48: - add r0, r8, #1 - mov r0, r0, lsl #0x10 - mov r8, r0, asr #0x10 - cmp r8, #0x20 - add r7, r7, #0x20 - blt _022FECF8 -_022FED60: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_022FED68: .word ov11_023223C0 -_022FED6C: .word ov11_02324D08 -_022FED70: .word ov11_023223EC - arm_func_end ov11_022FEC9C - - arm_func_start ov11_022FED74 -ov11_022FED74: ; 0x022FED74 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r1, _022FEDF0 ; =ov11_02324D08 - mov r2, r0 - ldr r0, [r1] - ldr r1, _022FEDF4 ; =ov11_02322418 - add r4, r0, r2, lsl #5 - ldrsh r3, [r4, #4] - mov r0, #1 - str r3, [sp] - ldrsh r3, [r4, #8] - str r3, [sp, #4] - ldrsh r3, [r4, #2] - bl Debug_Print - ldrsh r0, [r4, #2] - mvn r2, #0 - cmp r0, r2 - beq _022FEDE4 - ldrsh r1, [r4, #8] - cmp r1, r2 - bne _022FEDD4 - mov r1, #0 - bl ov11_022F7188 - b _022FEDDC -_022FEDD4: - ldrsh r0, [r4, #4] - bl ov11_022F74A0 -_022FEDDC: - mov r0, #1 - b _022FEDE8 -_022FEDE4: - mov r0, #0 -_022FEDE8: - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_022FEDF0: .word ov11_02324D08 -_022FEDF4: .word ov11_02322418 - arm_func_end ov11_022FED74 - - arm_func_start GetCollidingEventId -GetCollidingEventId: ; 0x022FEDF8 - stmdb sp!, {r3, r4, r5, lr} - ldr ip, _022FEE8C ; =ov11_02324D08 - mov r3, #0 - ldr ip, [ip] - mvn lr, #0 - b _022FEE7C -_022FEE10: - ldrsh r4, [ip, #2] - cmp r4, lr - beq _022FEE6C - ldr r4, [ip, #0xc] - tst r4, r0 - beq _022FEE6C - ldr r5, [ip, #0x10] - ldr r4, [r2] - cmp r5, r4 - bge _022FEE6C - ldr r5, [ip, #0x18] - ldr r4, [r1] - cmp r5, r4 - ble _022FEE6C - ldr r5, [ip, #0x14] - ldr r4, [r2, #4] - cmp r5, r4 - bge _022FEE6C - ldr r5, [ip, #0x1c] - ldr r4, [r1, #4] - cmp r5, r4 - movgt r0, r3 - ldmgtia sp!, {r3, r4, r5, pc} -_022FEE6C: - add r3, r3, #1 - mov r3, r3, lsl #0x10 - mov r3, r3, asr #0x10 - add ip, ip, #0x20 -_022FEE7C: - cmp r3, #0x20 - blt _022FEE10 - mvn r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FEE8C: .word ov11_02324D08 - arm_func_end GetCollidingEventId - - arm_func_start ov11_022FEE90 -ov11_022FEE90: ; 0x022FEE90 - bx lr - arm_func_end ov11_022FEE90 - - arm_func_start CreateTeamInfoBox -CreateTeamInfoBox: ; 0x022FEE94 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r0, #0x378 - mov r1, #8 - bl MemAlloc - mov r4, r0 - bl GetGameMode - cmp r0, #3 - ldreq r0, _022FEF18 ; =ov11_0232246C - add r5, sp, #0 - ldrne r0, _022FEF1C ; =TEAM_INFO_BOX_DEFAULT_WINDOW_PARAMS - ldmia r0, {r0, r1, r2, r3} - stmia r5, {r0, r1, r2, r3} - ldr r2, _022FEF20 ; =UpdateTeamInfoBox - str r4, [sp, #0xc] - add r0, sp, #0 - mov r1, #1 - str r2, [r4] - bl NewWindowScreenCheck - mov r2, #1 - mov r5, r0 - mov r1, #0 - str r2, [r4, #0x370] - str r1, [r4, #0x374] - sub r1, r1, #2 - add r0, r4, #8 - strb r1, [r4, #4] - bl InitPortraitParams - mov r1, #3 - mov r0, r5 - str r1, [r4, #0x18] - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FEF18: .word ov11_0232246C -_022FEF1C: .word TEAM_INFO_BOX_DEFAULT_WINDOW_PARAMS -_022FEF20: .word UpdateTeamInfoBox - arm_func_end CreateTeamInfoBox - - arm_func_start ov11_022FEF24 -ov11_022FEF24: ; 0x022FEF24 - stmdb sp!, {r3, lr} - bl GetWindowContents - mov r1, #4 - str r1, [r0, #0x370] - ldrsb r0, [r0, #4] - sub r1, r1, #6 - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl sub_0202F954 - ldmia sp!, {r3, pc} - arm_func_end ov11_022FEF24 - - arm_func_start CloseTeamInfoBox -CloseTeamInfoBox: ; 0x022FEF4C - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl GetWindowContents - mov r4, r0 - ldrsb r0, [r4, #4] - mvn r1, #1 - cmp r0, r1 - beq _022FEF70 - bl CloseTextBox -_022FEF70: - mov r0, r4 - bl MemFree - mov r0, r5 - bl DeleteWindow - ldmia sp!, {r3, r4, r5, pc} - arm_func_end CloseTeamInfoBox - - arm_func_start IsTeamInfoBoxActive -IsTeamInfoBoxActive: ; 0x022FEF84 - stmdb sp!, {r3, lr} - bl GetWindowContents - ldr r0, [r0, #0x370] - cmp r0, #5 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end IsTeamInfoBoxActive - - arm_func_start UpdateTeamInfoBox -UpdateTeamInfoBox: ; 0x022FEFA4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x54 - sub sp, sp, #0x400 - mov r8, r0 - ldr r4, [r8, #0xc] - ldr r0, [r4, #0x370] - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _022FF1B4 -_022FEFC8: ; jump table - b _022FF1B4 ; case 0 - b _022FEFDC ; case 1 - b _022FEFFC ; case 2 - b _022FF1B4 ; case 3 - b _022FF17C ; case 4 -_022FEFDC: - ldrsb r0, [r8, #0x10] - bl sub_0202810C - cmp r0, #0 - beq _022FF1B4 - mov r0, #2 - str r0, [r4, #0x370] - mov r0, #1 - str r0, [r4, #0x374] -_022FEFFC: - ldr r6, [r8, #0xc] - bl GetGameMode - mov r5, r0 - ldrsb r0, [r8, #0x10] - bl sub_02027B1C - cmp r5, #3 - beq _022FF118 - bl GetRank - str r0, [sp, #0x14] - bl GetRankupPoints - cmp r0, #0 - ldreq r7, _022FF1C0 ; =0x00000222 - str r0, [sp, #0x28] - add ip, sp, #4 - ldr r2, _022FF1C4 ; =0x0000021F - ldr r3, _022FF1C8 ; =0x0000C402 - add r0, sp, #0x54 - mov r1, #0x100 - ldrne r7, _022FF1CC ; =0x00000221 - str ip, [sp] - bl PreprocessStringFromId - add r0, sp, #0x54 - bl sub_020265A8 - ldrsb r0, [r8, #0x10] - mov r1, #0x3a -#ifdef EUROPE - mov r2, #0xe -#else - mov r2, #4 -#endif - add r3, sp, #0x54 - bl DrawTextInWindow - mov r0, #0x16 - bl GetResolvedPerformanceProgressFlag - cmp r0, #0 - beq _022FF0AC - add r1, sp, #4 - str r1, [sp] - ldr r2, _022FF1D0 ; =0x00000226 - ldr r3, _022FF1C8 ; =0x0000C402 - add r0, sp, #0x54 - mov r1, #0x100 - bl PreprocessStringFromId - ldrsb r0, [r8, #0x10] - add r3, sp, #0x54 - mov r1, #0x28 - mov r2, #0x16 - bl DrawTextInWindow -_022FF0AC: - add r1, sp, #4 - str r1, [sp] - ldr r3, _022FF1C8 ; =0x0000C402 - add r0, sp, #0x54 - mov r2, r7 - mov r1, #0x100 - bl PreprocessStringFromId - ldrsb r0, [r8, #0x10] - add r3, sp, #0x54 - mov r1, #0x3a -#ifdef EUROPE - mov r2, #0x1a -#else - mov r2, #0x16 -#endif - bl DrawTextInWindow - ldrsb r0, [r6, #4] - mvn r1, #1 - cmp r0, r1 - beq _022FF0F8 - bl CloseTextBox - mvn r0, #1 - strb r0, [r6, #4] -_022FF0F8: - bl GetRank - mov r1, #3 - mov r3, r1 - mov r2, #0x12 - bl PrintBadgeMark - strb r0, [r6, #4] - ldrsb r0, [r8, #0x10] - bl UpdateWindow -_022FF118: - bl GetMoneyCarried - str r0, [sp, #0x28] - add r6, sp, #4 -#ifdef JAPAN - ldr r2, _0230083C ; =0x0000042B -#endif - ldr r3, _022FF1C8 ; =0x0000C402 - add r0, sp, #0x54 - mov r1, #0x100 -#ifndef JAPAN - mov r2, #0x224 -#endif - str r6, [sp] - bl PreprocessStringFromId - cmp r5, #3 - ldrsb r0, [r8, #0x10] - add r3, sp, #0x54 -#ifdef EUROPE - mov r2, #2 - beq _022FF15C - mov r1, #0xaa -#else - beq _022FF15C - mov r1, #0x9a - mov r2, #4 -#endif - bl DrawTextInWindow - b _022FF168 -_022FF15C: - mov r1, #0x10 -#ifndef EUROPE - mov r2, #2 -#endif - bl DrawTextInWindow -_022FF168: - mov r0, #3 - str r0, [r4, #0x370] - sub r0, r0, #4 - str r0, [r8, #0xb8] - b _022FF1B4 -_022FF17C: - mov r1, #4 - str r1, [r4, #0x374] - ldrsb r0, [r4, #4] - sub r1, r1, #6 - cmp r0, r1 - beq _022FF198 - bl sub_0202F954 -_022FF198: - ldrsb r0, [r8, #0x10] - bl sub_0202812C - cmp r0, #0 - mvnne r0, #4 - strne r0, [r8, #0xb8] - movne r0, #5 - strne r0, [r4, #0x370] -_022FF1B4: - add sp, sp, #0x54 - add sp, sp, #0x400 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -#ifdef JAPAN -_022FF1C0: .word 0x00000429 -_022FF1C4: .word 0x00000426 -_022FF1C8: .word 0x0000C402 -_022FF1CC: .word 0x00000428 -_022FF1D0: .word 0x0000042D -_0230083C: .word 0x0000042B -#else -_022FF1C0: .word 0x00000222 -_022FF1C4: .word 0x0000021F -_022FF1C8: .word 0x0000C402 -_022FF1CC: .word 0x00000221 -_022FF1D0: .word 0x00000226 -#endif - arm_func_end UpdateTeamInfoBox - - arm_func_start ov11_022FF1D4 -ov11_022FF1D4: ; 0x022FF1D4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, _022FF20C ; =ov11_0232247C - mov r4, r1 - bl InitMenu - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _022FF210 ; =ov11_02324D0C - ldr r0, _022FF214 ; =ov11_0238A074 - ldr r2, _022FF218 ; =0x000002BD - strh r4, [r1] - strh r5, [r0] - strh r2, [r1, #2] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FF20C: .word ov11_0232247C -_022FF210: .word ov11_02324D0C -_022FF214: .word ov11_0238A074 -_022FF218: .word 0x000002BD - arm_func_end ov11_022FF1D4 - - arm_func_start EatOverworldGummiEntryPoint -EatOverworldGummiEntryPoint: ; 0x022FF21C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - mov r0, #0x620 - mov r1, #8 - mov r4, #0 - bl MemAlloc - ldr r1, _022FF304 ; =ov11_02324D0C - str r0, [r1, #4] - add r0, r0, #0xc - bl CopyMenuControlWindowExtraInfo - ldr r3, _022FF304 ; =ov11_02324D0C - mov r1, r4 - ldr ip, [r3, #4] - ldr r2, _022FF308 ; =ov11_0238A074 - str r0, [ip, #8] - ldrsh r2, [r2] - ldr r0, [r3, #4] - ldr lr, _022FF30C ; =C_ROUTINES - strh r2, [r0, #0xa4] - ldr r0, _022FF310 ; =0x000002BD - mov r5, r1 -_022FF270: - ldr r6, [r3, #4] - ldrsh ip, [lr, #2] - ldrsh r2, [r6, #0xa4] - cmp ip, r2 - bne _022FF29C - ldrsh r2, [r3] - cmp r2, r5 - add r2, r6, r1, lsl #1 - moveq r4, r1 - strh r5, [r2, #0xa6] - add r1, r1, #1 -_022FF29C: - add r5, r5, #1 - cmp r5, r0 - add lr, lr, #8 - blt _022FF270 - ldr r2, _022FF304 ; =ov11_02324D0C - mov r3, #0xa - ldr ip, [r2, #4] - ldr r0, _022FF314 ; =ov11_0232248C - str r4, [ip, #0xc] - stmia sp, {r1, r3} - ldr r1, [r2, #4] - ldr r3, _022FF318 ; =ov11_022FF438 - add r2, r1, #0xc - mov r1, #0x33 - bl CreateAdvancedMenu - ldr r1, _022FF304 ; =ov11_02324D0C - mov r4, #0 - ldr r3, [r1, #4] - ldr r2, _022FF310 ; =0x000002BD - strb r0, [r3] - ldr r3, [r1, #4] - mov r0, #1 - str r4, [r3, #4] - strh r2, [r1, #2] - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_022FF304: .word ov11_02324D0C -_022FF308: .word ov11_0238A074 -_022FF30C: .word C_ROUTINES -_022FF310: .word 0x000002BD -_022FF314: .word ov11_0232248C -_022FF318: .word ov11_022FF438 - arm_func_end EatOverworldGummiEntryPoint - - arm_func_start EatOverworldGummiDestructor -EatOverworldGummiDestructor: ; 0x022FF31C - stmdb sp!, {r3, lr} - ldr r0, _022FF354 ; =ov11_02324D0C - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r0, [r0] - bl CloseAdvancedMenu - ldr r0, _022FF354 ; =ov11_02324D0C - ldr r0, [r0, #4] - bl MemFree - ldr r0, _022FF354 ; =ov11_02324D0C - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_022FF354: .word ov11_02324D0C - arm_func_end EatOverworldGummiDestructor - - arm_func_start EatOverworldGummiFrameUpdate -EatOverworldGummiFrameUpdate: ; 0x022FF358 - stmdb sp!, {r3, lr} - ldr r0, _022FF434 ; =ov11_02324D0C - ldr r2, [r0, #4] - ldr r1, [r2, #4] - cmp r1, #0 - beq _022FF384 - cmp r1, #1 - beq _022FF3A4 - cmp r1, #2 - beq _022FF3FC - b _022FF42C -_022FF384: - ldrsb r0, [r2] - bl IsAdvancedMenuActive - cmp r0, #0 - ldreq r0, _022FF434 ; =ov11_02324D0C - moveq r1, #1 - ldreq r0, [r0, #4] - streq r1, [r0, #4] - b _022FF42C -_022FF3A4: - ldrsb r0, [r2] - bl IsAdvancedMenuActive2 - cmp r0, #0 - bne _022FF42C - ldr r0, _022FF434 ; =ov11_02324D0C - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl GetAdvancedMenuResult - cmp r0, #0 - ldrlt r0, _022FF434 ; =ov11_02324D0C - mvnlt r1, #0 - strlth r1, [r0, #2] - ldrge r1, _022FF434 ; =ov11_02324D0C - ldrge r2, [r1, #4] - addge r0, r2, r0, lsl #1 - ldrgesh r0, [r0, #0xa6] - strgeh r0, [r1, #2] - ldr r0, _022FF434 ; =ov11_02324D0C - mov r1, #2 - ldr r0, [r0, #4] - str r1, [r0, #4] - b _022FF42C -_022FF3FC: - mov r1, #3 - str r1, [r2, #4] - ldr r2, [r0, #4] - ldr r1, [r2, #8] - tst r1, #0x100 - beq _022FF424 - ldrsh r1, [r0, #2] - ldr r0, [r2, #0x94] - ldr r2, [r2, #0x90] - blx r2 -_022FF424: - mov r0, #4 - ldmia sp!, {r3, pc} -_022FF42C: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_022FF434: .word ov11_02324D0C - arm_func_end EatOverworldGummiFrameUpdate - - arm_func_start ov11_022FF438 -ov11_022FF438: ; 0x022FF438 - ldr r0, _022FF458 ; =ov11_02324D0C - ldr r2, _022FF45C ; =C_ROUTINES - ldr r0, [r0, #4] - add r0, r0, r1, lsl #1 - ldrsh r0, [r0, #0xa6] - add r0, r2, r0, lsl #3 - ldr r0, [r0, #4] - bx lr - .align 2, 0 -_022FF458: .word ov11_02324D0C -_022FF45C: .word C_ROUTINES - arm_func_end ov11_022FF438 - - arm_func_start ov11_022FF460 -ov11_022FF460: ; 0x022FF460 - ldr r2, _022FF488 ; =ov11_02324D0C - ldr r1, _022FF48C ; =0x000002BD - ldrsh r3, [r2, #2] - strh r3, [r0] - ldrsh r0, [r2, #2] - cmp r0, r1 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_022FF488: .word ov11_02324D0C -_022FF48C: .word 0x000002BD - arm_func_end ov11_022FF460 - - arm_func_start ov11_022FF490 -ov11_022FF490: ; 0x022FF490 - stmdb sp!, {r3, r4, r5, lr} - mov r4, r0 - ldr r0, _022FF4F0 ; =ov11_0232249C - mov r5, r1 - bl InitMenu - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} -#ifdef JAPAN - ldr r0, _022FF4F8 ; =ov11_02324D14 - mov r1, #0x1b4 - strh r1, [r0, #2] - cmp r5, #0 -#else - ldr r1, _022FF4F4 ; =0x000001AF - ldr r0, _022FF4F8 ; =ov11_02324D14 - cmp r5, #0 - strh r1, [r0, #2] -#endif - bne _022FF4CC - ldr r0, _022FF4FC ; =ov11_0238A078 - bl ov11_022E45F4 - b _022FF4E4 -_022FF4CC: - ldr r2, _022FF4FC ; =ov11_0238A078 - mov r1, #8 -_022FF4D4: - ldrb r0, [r5], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _022FF4D4 -_022FF4E4: - ldr r0, _022FF4F8 ; =ov11_02324D14 - strh r4, [r0] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FF4F0: .word ov11_0232249C -#if defined(EUROPE) -_022FF4F4: .word 0x000001CB -#elif !defined(JAPAN) -_022FF4F4: .word 0x000001AF -#endif -_022FF4F8: .word ov11_02324D14 -_022FF4FC: .word ov11_0238A078 - arm_func_end ov11_022FF490 - - arm_func_start ov11_022FF500 -ov11_022FF500: ; 0x022FF500 - stmdb sp!, {r3, lr} - mov r0, #0x20 - mov r1, #8 - bl MemAlloc - ldr r1, _022FF57C ; =ov11_02324D14 - mvn r2, #1 - str r0, [r1, #4] - strb r2, [r0] - ldrsh ip, [r1] - add r0, r2, #1 - ldr r3, _022FF580 ; =ov11_0238A078 - cmp ip, r0 - ldr r0, [r1, #4] - moveq r1, #0 - movne r1, #2 - str r1, [r0, #4] - ldr r0, _022FF57C ; =ov11_02324D14 - mov r1, #8 - ldr r2, [r0, #4] - strh ip, [r2, #0x1c] - ldr r0, [r0, #4] - add r2, r0, #0x14 -_022FF558: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _022FF558 -#ifdef JAPAN - ldr r0, _022FF57C ; =ov11_02324D14 - mov r1, #0x1b4 - strh r1, [r0, #2] - mov r0, #1 -#else - ldr r2, _022FF584 ; =0x000001AF - ldr r1, _022FF57C ; =ov11_02324D14 - mov r0, #1 - strh r2, [r1, #2] -#endif - ldmia sp!, {r3, pc} - .align 2, 0 -_022FF57C: .word ov11_02324D14 -_022FF580: .word ov11_0238A078 -#if defined(EUROPE) -_022FF584: .word 0x000001CB -#elif !defined(JAPAN) -_022FF584: .word 0x000001AF -#endif - arm_func_end ov11_022FF500 - - arm_func_start ov11_022FF588 -ov11_022FF588: ; 0x022FF588 - stmdb sp!, {r3, lr} - ldr r0, _022FF5CC ; =ov11_02324D14 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r0, [r0] - mvn r1, #1 - cmp r0, r1 - beq _022FF5B0 - bl CloseAdvancedMenu -_022FF5B0: - ldr r0, _022FF5CC ; =ov11_02324D14 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _022FF5CC ; =ov11_02324D14 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_022FF5CC: .word ov11_02324D14 - arm_func_end ov11_022FF588 - - arm_func_start ov11_022FF5D0 -ov11_022FF5D0: ; 0x022FF5D0 - stmdb sp!, {r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x128 - ldr r0, _022FF9E0 ; =ov11_02324D14 - ldr r1, [r0, #4] - ldr r0, [r1, #4] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _022FF9D4 -_022FF5F0: ; jump table - b _022FF608 ; case 0 - b _022FF694 ; case 1 - b _022FF724 ; case 2 - b _022FF8B8 ; case 3 - b _022FF950 ; case 4 - b _022FF9C4 ; case 5 -_022FF608: - ldrsb r0, [r1] - mvn r1, #1 - cmp r0, r1 - beq _022FF644 - bl IsAdvancedMenuActive2 - cmp r0, #0 - bne _022FF9D4 - ldr r0, _022FF9E0 ; =ov11_02324D14 - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl CloseAdvancedMenu - ldr r0, _022FF9E0 ; =ov11_02324D14 - mvn r1, #1 - ldr r0, [r0, #4] - strb r1, [r0] -_022FF644: - ldr r0, _022FF9E0 ; =ov11_02324D14 -#ifdef JAPAN - mov r1, #0x1b4 -#else - ldr r1, _022FF9E4 ; =0x000001AF -#endif - ldr r2, [r0, #4] - ldr r0, _022FF9E8 ; =ov11_023224AC - ldrsh r4, [r2, #0x1c] - ldr r3, _022FF9EC ; =ov11_022FF9FC - add r2, sp, #0x90 - str r4, [sp, #0x90] - str r1, [sp] - mov r4, #0xa - mov r1, #0x33 - str r4, [sp, #4] - bl CreateAdvancedMenu - ldr r1, _022FF9E0 ; =ov11_02324D14 - mov r2, #1 - ldr r3, [r1, #4] - strb r0, [r3] - ldr r0, [r1, #4] - str r2, [r0, #4] - b _022FF9D4 -_022FF694: - ldrsb r0, [r1] - bl IsAdvancedMenuActive - cmp r0, #0 - bne _022FF9D4 - ldr r0, _022FF9E0 ; =ov11_02324D14 - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl GetAdvancedMenuResult - cmp r0, #0 - bge _022FF6EC - ldr r0, _022FF9E0 ; =ov11_02324D14 - mvn r2, #0 - ldr r1, [r0, #4] - strh r2, [r1, #0x1c] - ldr r0, [r0, #4] - add r0, r0, #0x14 - bl ov11_022E45F4 - ldr r0, _022FF9E0 ; =ov11_02324D14 - mov r1, #4 - ldr r0, [r0, #4] - str r1, [r0, #4] - b _022FF9D4 -_022FF6EC: - ldr r1, _022FF9E0 ; =ov11_02324D14 - ldr r3, [r1, #4] - ldrsh r2, [r3, #0x1c] - cmp r2, r0 - beq _022FF710 - strh r0, [r3, #0x1c] - ldr r0, [r1, #4] - add r0, r0, #0x14 - bl ov11_022E45F4 -_022FF710: - ldr r0, _022FF9E0 ; =ov11_02324D14 - mov r1, #2 - ldr r0, [r0, #4] - str r1, [r0, #4] - b _022FF9D4 -_022FF724: - ldrsb r0, [r1] - mvn r1, #1 - cmp r0, r1 - beq _022FF760 - bl IsAdvancedMenuActive2 - cmp r0, #0 - bne _022FF9D4 - ldr r0, _022FF9E0 ; =ov11_02324D14 - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl CloseAdvancedMenu - ldr r0, _022FF9E0 ; =ov11_02324D14 - mvn r1, #1 - ldr r0, [r0, #4] - strb r1, [r0] -_022FF760: - ldr r0, _022FF9E0 ; =ov11_02324D14 - ldr r0, [r0, #4] - ldrsh r0, [r0, #0x1c] - bl sub_02064FFC - mov r2, r0 - ldr r1, _022FF9F0 ; =ov11_023224BC - add r0, sp, #0x10 - mov r3, r2 - mov r5, #0 - bl sprintf - add r0, sp, #0x10 - bl sub_02008BA8 - cmp r0, #0 - ldrle r0, _022FF9E0 ; =ov11_02324D14 - movle r1, r5 - ldrle r0, [r0, #4] - strle r1, [r0, #4] - ble _022FF9D4 - ldr r0, _022FF9E0 ; =ov11_02324D14 - add r1, sp, #0x10 - ldr r0, [r0, #4] - mov r2, #8 - add r0, r0, #8 - bl LoadFileFromRomVeneer - ldr r0, _022FF9E0 ; =ov11_02324D14 - ldr r2, [r0, #4] - ldr r1, [r2, #8] - ldrh r1, [r1] - str r1, [r2, #0x10] - ldr r1, [r0, #4] - ldr r0, [r1, #0x10] - cmp r0, #0 - bgt _022FF800 - add r0, r1, #8 - bl UnloadFile - ldr r0, _022FF9E0 ; =ov11_02324D14 - mov r1, r5 - ldr r0, [r0, #4] - str r1, [r0, #4] - b _022FF9D4 -_022FF800: - add r0, r1, #0x14 - bl ov11_022E4630 - cmp r0, #0 - bne _022FF86C - ldr r8, _022FF9E0 ; =ov11_02324D14 - mov r7, r5 - ldr r0, [r8, #4] - add r4, sp, #8 - ldr r6, [r0, #8] - b _022FF85C -_022FF828: - mov r0, r7, lsl #3 - add r1, r0, #2 - mov r0, r4 - add r1, r6, r1 - bl ov11_022E4600 - ldr r1, [r8, #4] - mov r0, r4 - add r1, r1, #0x14 - bl ov11_022E465C - cmp r0, #0 - movne r5, r7 - bne _022FF86C - add r7, r7, #1 -_022FF85C: - ldr r0, [r8, #4] - ldr r0, [r0, #0x10] - cmp r7, r0 - blt _022FF828 -_022FF86C: - ldr r0, _022FF9E0 ; =ov11_02324D14 - str r5, [sp, #0x90] - ldr r1, [r0, #4] - ldr r0, _022FF9E8 ; =ov11_023224AC - ldr r1, [r1, #0x10] - ldr r3, _022FF9F4 ; =ov11_022FFA14 - str r1, [sp] - mov r4, #0xa - add r2, sp, #0x90 - mov r1, #0x33 - str r4, [sp, #4] - bl CreateAdvancedMenu - ldr r1, _022FF9E0 ; =ov11_02324D14 - mov r2, #3 - ldr r3, [r1, #4] - strb r0, [r3] - ldr r0, [r1, #4] - str r2, [r0, #4] - b _022FF9D4 -_022FF8B8: - ldrsb r0, [r1] - bl IsAdvancedMenuActive - cmp r0, #0 - bne _022FF9D4 - ldr r0, _022FF9E0 ; =ov11_02324D14 - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl GetAdvancedMenuResult - cmp r0, #0 - ldrlt r0, _022FF9E0 ; =ov11_02324D14 - movlt r1, #0 - ldrlt r0, [r0, #4] - strlt r1, [r0, #4] - blt _022FF93C - ldr r1, _022FF9E0 ; =ov11_02324D14 - mov r0, r0, lsl #3 - ldr r3, [r1, #4] - add r1, r0, #2 - ldr r2, [r3, #8] - add r0, r3, #0x14 - add r1, r2, r1 - bl ov11_022E4600 - ldr r0, _022FF9E0 ; =ov11_02324D14 - ldr r2, _022FF9F8 ; =ov11_0238A078 - ldr r4, [r0, #4] - mov r1, #8 - add r3, r4, #0x14 -_022FF924: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _022FF924 - mov r0, #4 - str r0, [r4, #4] -_022FF93C: - ldr r0, _022FF9E0 ; =ov11_02324D14 - ldr r0, [r0, #4] - add r0, r0, #8 - bl UnloadFile - b _022FF9D4 -_022FF950: - ldrsb r0, [r1] - mvn r1, #1 - cmp r0, r1 - beq _022FF98C - bl IsAdvancedMenuActive2 - cmp r0, #0 - bne _022FF9D4 - ldr r0, _022FF9E0 ; =ov11_02324D14 - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl CloseAdvancedMenu - ldr r0, _022FF9E0 ; =ov11_02324D14 - mvn r1, #1 - ldr r0, [r0, #4] - strb r1, [r0] -_022FF98C: - ldr r0, _022FF9E0 ; =ov11_02324D14 - ldr r2, _022FF9F8 ; =ov11_0238A078 - ldr r5, [r0, #4] - mov r1, #8 - ldrsh r4, [r5, #0x1c] - add r3, r5, #0x14 - strh r4, [r0, #2] -_022FF9A8: - ldrb r0, [r3], #1 - subs r1, r1, #1 - strb r0, [r2], #1 - bne _022FF9A8 - mov r0, #5 - str r0, [r5, #4] - b _022FF9D4 -_022FF9C4: - mov r0, #6 - str r0, [r1, #4] - mov r0, #4 - b _022FF9D8 -_022FF9D4: - mov r0, #1 -_022FF9D8: - add sp, sp, #0x128 - ldmia sp!, {r4, r5, r6, r7, r8, pc} - .align 2, 0 -_022FF9E0: .word ov11_02324D14 -#if defined(EUROPE) -_022FF9E4: .word 0x000001CB -#elif !defined(JAPAN) -_022FF9E4: .word 0x000001AF -#endif -_022FF9E8: .word ov11_023224AC -_022FF9EC: .word ov11_022FF9FC -_022FF9F0: .word ov11_023224BC -_022FF9F4: .word ov11_022FFA14 -_022FF9F8: .word ov11_0238A078 - arm_func_end ov11_022FF5D0 - - arm_func_start ov11_022FF9FC -ov11_022FF9FC: ; 0x022FF9FC - ldr r2, _022FFA10 ; =EVENTS - mov r0, #0xc - mla r0, r1, r0, r2 - ldr r0, [r0, #8] - bx lr - .align 2, 0 -_022FFA10: .word EVENTS - arm_func_end ov11_022FF9FC - - arm_func_start ov11_022FFA14 -ov11_022FFA14: ; 0x022FFA14 - stmdb sp!, {r4, lr} - sub sp, sp, #8 - ldr r2, _022FFA58 ; =ov11_02324D14 - mov r1, r1, lsl #3 - ldr r2, [r2, #4] - mov r4, r0 - ldr r2, [r2, #8] - add r1, r1, #2 - add r0, sp, #0 - add r1, r2, r1 - bl ov11_022E4600 - add r0, sp, #0 - mov r1, r4 - bl ov11_022E466C - mov r0, r4 - add sp, sp, #8 - ldmia sp!, {r4, pc} - .align 2, 0 -_022FFA58: .word ov11_02324D14 - arm_func_end ov11_022FFA14 - - arm_func_start ov11_022FFA5C -ov11_022FFA5C: ; 0x022FFA5C - ldr r2, _022FFAA0 ; =ov11_02324D14 - ldr r3, _022FFAA4 ; =ov11_0238A078 - ldrsh ip, [r2, #2] - mov r2, #8 - strh ip, [r0] -_022FFA70: - ldrb r0, [r3], #1 - subs r2, r2, #1 - strb r0, [r1], #1 - bne _022FFA70 -#ifdef JAPAN - ldr r0, _022FFAA0 ; =ov11_02324D14 - ldrsh r0, [r0, #2] - cmp r0, #0x1b4 -#else - ldr r1, _022FFAA0 ; =ov11_02324D14 - ldr r0, _022FFAA8 ; =0x000001AF - ldrsh r1, [r1, #2] - cmp r1, r0 -#endif - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_022FFAA0: .word ov11_02324D14 -_022FFAA4: .word ov11_0238A078 -#if defined(EUROPE) -_022FFAA8: .word 0x000001CB -#elif !defined(JAPAN) -_022FFAA8: .word 0x000001AF -#endif - arm_func_end ov11_022FFA5C - - arm_func_start ov11_022FFAAC -ov11_022FFAAC: ; 0x022FFAAC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, _022FFAE4 ; =ov11_023224FC - mov r4, r1 - bl InitMenu - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r1, _022FFAE8 ; =ov11_0238A080 - ldr r0, _022FFAEC ; =ov11_02324D1C - str r5, [r1] - strh r4, [r0, #2] - mov r1, #0xd5 - strh r1, [r0] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_022FFAE4: .word ov11_023224FC -_022FFAE8: .word ov11_0238A080 -_022FFAEC: .word ov11_02324D1C - arm_func_end ov11_022FFAAC - - arm_func_start ov11_022FFAF0 -ov11_022FFAF0: ; 0x022FFAF0 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r0, _022FFE60 ; =0x00000518 - mov r1, #8 - mov r4, #0 - bl MemAlloc - ldr r1, _022FFE64 ; =ov11_0238A080 - ldr r2, _022FFE68 ; =ov11_02324D1C - ldr r1, [r1] - str r0, [r2, #4] - str r1, [r0, #8] - ldr r1, [r2, #4] - ldr r0, [r1, #8] - cmp r0, #0 - cmpne r0, #4 - moveq r0, #1 - streqb r0, [r1, #0xc] - beq _022FFB48 - cmp r0, #1 - moveq r0, #1 - streqb r0, [r1, #0xc] - movne r0, r4 - strneb r0, [r1, #0xc] -_022FFB48: - ldr r5, _022FFE68 ; =ov11_02324D1C - ldr r0, [r5, #4] - ldr r0, [r0, #8] - cmp r0, #2 - bne _022FFBA8 - mov r6, #0 -_022FFB60: - add r0, r6, #0xb4 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - mov r0, r7 - bl GetDungeonMode - cmp r0, #0 - beq _022FFB98 - ldr r1, [r5, #4] - add r1, r1, r4, lsl #1 - strh r7, [r1, #0x18] - ldr r1, [r5, #4] - add r1, r1, r4, lsl #2 - str r0, [r1, #0x1c4] - add r4, r4, #1 -_022FFB98: - add r6, r6, #1 - cmp r6, #0xb - blt _022FFB60 - b _022FFE08 -_022FFBA8: - cmp r0, #3 - bne _022FFBFC - mov r6, #0 -_022FFBB4: - add r0, r6, #0xbf - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - mov r0, r7 - bl GetDungeonMode - cmp r0, #0 - beq _022FFBEC - ldr r1, [r5, #4] - add r1, r1, r4, lsl #1 - strh r7, [r1, #0x18] - ldr r1, [r5, #4] - add r1, r1, r4, lsl #2 - str r0, [r1, #0x1c4] - add r4, r4, #1 -_022FFBEC: - add r6, r6, #1 - cmp r6, #0xa - blt _022FFBB4 - b _022FFE08 -_022FFBFC: - cmp r0, #4 - bne _022FFCB4 - mov r6, #0 -_022FFC08: - mov r0, r6, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #0x6f - blt _022FFC20 - cmp r7, #0xa4 - ble _022FFCA4 -_022FFC20: - mov r0, r7 - bl GetDungeonMode - mov r8, r0 - mov r0, r7 - bl DungeonSwapIdxToId - bl GetMaxReachedFloor - cmp r0, #0 - ble _022FFCA4 - cmp r7, #0x26 - cmpne r7, #0x29 - bne _022FFC78 - sub r0, r8, #2 - cmp r0, #1 - bhi _022FFCA4 - ldr r0, [r5, #4] - add r0, r0, r4, lsl #1 - strh r7, [r0, #0x18] - ldr r0, [r5, #4] - add r0, r0, r4, lsl #2 - str r8, [r0, #0x1c4] - add r4, r4, #1 - b _022FFCA4 -_022FFC78: - cmp r7, #0x36 - beq _022FFCA4 - cmp r8, #3 - bne _022FFCA4 - ldr r0, [r5, #4] - add r0, r0, r4, lsl #1 - strh r7, [r0, #0x18] - ldr r0, [r5, #4] - add r0, r0, r4, lsl #2 - str r8, [r0, #0x1c4] - add r4, r4, #1 -_022FFCA4: - add r6, r6, #1 - cmp r6, #0xae - ble _022FFC08 - b _022FFE08 -_022FFCB4: - cmp r0, #1 - mov r5, #0 - bne _022FFD08 - bl GetExecuteSpecialEpisodeType - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _022FFD08 -_022FFCD0: ; jump table - b _022FFCE4 ; case 0 - b _022FFCEC ; case 1 - b _022FFCF4 ; case 2 - b _022FFCFC ; case 3 - b _022FFD04 ; case 4 -_022FFCE4: - ldr r5, _022FFE6C ; =ov11_023224D0 - b _022FFD08 -_022FFCEC: - ldr r5, _022FFE70 ; =ov11_023224DC - b _022FFD08 -_022FFCF4: - ldr r5, _022FFE74 ; =ov11_023224EA - b _022FFD08 -_022FFCFC: - ldr r5, _022FFE78 ; =ov11_0232251C - b _022FFD08 -_022FFD04: - ldr r5, _022FFE7C ; =ov11_02322548 -_022FFD08: - cmp r5, #0 - beq _022FFD60 - ldr r7, _022FFE68 ; =ov11_02324D1C - mvn r6, #0 - b _022FFD50 -_022FFD1C: - ldrsh r8, [r5], #2 - mov r0, r8 - bl GetDungeonMode - cmp r0, #1 - cmpne r0, #3 - bne _022FFD50 - ldr r1, [r7, #4] - add r1, r1, r4, lsl #1 - strh r8, [r1, #0x18] - ldr r1, [r7, #4] - add r1, r1, r4, lsl #2 - str r0, [r1, #0x1c4] - add r4, r4, #1 -_022FFD50: - ldrsh r0, [r5] - cmp r0, r6 - bne _022FFD1C - b _022FFE08 -_022FFD60: - mov r7, #0xd4 - ldr r5, _022FFE68 ; =ov11_02324D1C - mov r8, #0 - mov r6, r7 -_022FFD70: - ldr r1, [r5, #4] - mov r0, r8, lsl #0x10 - ldr r1, [r1, #8] - mov sb, r0, asr #0x10 - cmp r1, #0 - bne _022FFDA0 - cmp sb, #0xb0 - beq _022FFDFC - cmp sb, #0x7b - blt _022FFDA0 - cmp sb, #0xa4 - ble _022FFDFC -_022FFDA0: - mov r0, sb - bl GetDungeonMode - mov sl, r0 - cmp sl, #1 - cmpne sl, #3 - bne _022FFDFC - ldr r0, [r5, #4] - cmp sb, #6 - add r0, r0, r4, lsl #1 - strh sb, [r0, #0x18] - bne _022FFDEC - mov r0, r7 - bl GetDungeonMode - cmp r0, #1 - cmpne r0, #3 - ldreq r1, [r5, #4] - moveq sl, r0 - addeq r0, r1, r4, lsl #1 - streqh r6, [r0, #0x18] -_022FFDEC: - ldr r0, [r5, #4] - add r0, r0, r4, lsl #2 - str sl, [r0, #0x1c4] - add r4, r4, #1 -_022FFDFC: - add r8, r8, #1 - cmp r8, #0xb4 - blt _022FFD70 -_022FFE08: - ldr r0, _022FFE68 ; =ov11_02324D1C - mvn r2, #1 - ldr r1, [r0, #4] - cmp r4, #0 - strb r2, [r1] - ldr r1, [r0, #4] - strb r2, [r1, #1] - ldr r1, [r0, #4] - strb r2, [r1, #2] - ldr r1, [r0, #4] - str r4, [r1, #0x14] - addeq r1, r2, #1 - streqh r1, [r0] - moveq r0, #0 - ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r1, [r0, #4] - mov r2, #0 - str r2, [r1, #4] - mov r1, #0xd5 - strh r1, [r0] - mov r0, #1 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_022FFE60: .word 0x00000518 -_022FFE64: .word ov11_0238A080 -_022FFE68: .word ov11_02324D1C -_022FFE6C: .word ov11_023224D0 -_022FFE70: .word ov11_023224DC -_022FFE74: .word ov11_023224EA -_022FFE78: .word ov11_0232251C -_022FFE7C: .word ov11_02322548 - arm_func_end ov11_022FFAF0 - - arm_func_start ov11_022FFE80 -ov11_022FFE80: ; 0x022FFE80 - stmdb sp!, {r3, lr} - ldr r0, _022FFEFC ; =ov11_02324D1C - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r0, [r0] - mvn r1, #1 - cmp r0, r1 - beq _022FFEA8 - bl CloseAdvancedMenu -_022FFEA8: - ldr r0, _022FFEFC ; =ov11_02324D1C - mvn r1, #1 - ldr r0, [r0, #4] - ldrsb r0, [r0, #1] - cmp r0, r1 - beq _022FFEC4 - bl CloseDialogueBox -_022FFEC4: - ldr r0, _022FFEFC ; =ov11_02324D1C - mvn r1, #1 - ldr r0, [r0, #4] - ldrsb r0, [r0, #2] - cmp r0, r1 - beq _022FFEE0 - bl CloseParentMenu -_022FFEE0: - ldr r0, _022FFEFC ; =ov11_02324D1C - ldr r0, [r0, #4] - bl MemFree - ldr r0, _022FFEFC ; =ov11_02324D1C - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_022FFEFC: .word ov11_02324D1C - arm_func_end ov11_022FFE80 - - arm_func_start ov11_022FFF00 -ov11_022FFF00: ; 0x022FFF00 - stmdb sp!, {r3, lr} - sub sp, sp, #0xf0 - ldr r0, _0230057C ; =ov11_02324D1C - ldr r2, [r0, #4] - ldr r0, [r2, #4] - cmp r0, #0xa - addls pc, pc, r0, lsl #2 - b _02300570 -_022FFF20: ; jump table - b _022FFF4C ; case 0 - b _022FFF90 ; case 1 - b _02300024 ; case 2 - b _02300040 ; case 3 - b _0230018C ; case 4 - b _02300218 ; case 5 - b _02300300 ; case 6 - b _02300570 ; case 7 - b _023003E4 ; case 8 - b _02300458 ; case 9 - b _02300560 ; case 10 -_022FFF4C: - ldrb r0, [r2, #0xc] - cmp r0, #0 - beq _022FFF84 - bl ov11_0230D220 - cmp r0, #0 - bne _02300570 - mov r0, #2 - bl WorldMapSetMode - bl ov11_0230E964 - ldr r0, _0230057C ; =ov11_02324D1C - mov r1, #1 - ldr r0, [r0, #4] - str r1, [r0, #4] - b _02300570 -_022FFF84: - mov r0, #3 - str r0, [r2, #4] - b _02300570 -_022FFF90: - bl ov11_0230D220 - cmp r0, #0 - bne _02300570 - ldr r0, _0230057C ; =ov11_02324D1C - mov r1, #0 - ldr lr, [r0, #4] - mov r2, r1 - ldrsh r3, [r0, #2] - ldr ip, [lr, #0x14] - b _022FFFD0 -_022FFFB8: - add r0, lr, r2, lsl #1 - ldrsh r0, [r0, #0x18] - cmp r3, r0 - moveq r1, r2 - beq _022FFFD8 - add r2, r2, #1 -_022FFFD0: - cmp r2, ip - blt _022FFFB8 -_022FFFD8: - add r0, lr, r1, lsl #1 - ldrsh r0, [r0, #0x18] - bl DungeonSwapIdxToId - bl sub_0206A84C - ldr r1, _0230057C ; =ov11_02324D1C - ldr r2, [r1, #4] - strh r0, [r2, #0xe] - ldr r0, [r1, #4] - ldrsh r0, [r0, #0xe] - bl ov11_0230F1EC - ldr r0, _0230057C ; =ov11_02324D1C - ldr r0, [r0, #4] - ldrsh r0, [r0, #0xe] - bl WorldMapSetCamera - ldr r0, _0230057C ; =ov11_02324D1C - mov r1, #2 - ldr r0, [r0, #4] - str r1, [r0, #4] - b _02300570 -_02300024: - bl ov11_0230D220 - cmp r0, #0 - bne _02300570 - ldr r0, _0230057C ; =ov11_02324D1C - mov r1, #3 - ldr r0, [r0, #4] - str r1, [r0, #4] -_02300040: - ldr r2, _0230057C ; =ov11_02324D1C - mvn r1, #1 - ldr ip, [r2, #4] - ldrsb r0, [ip, #1] - cmp r0, r1 - ldreqsb r3, [ip, #2] - cmpeq r3, r1 - beq _023000F8 - mvn r1, #1 - cmp r0, r1 - beq _02300078 - bl IsDialogueBoxActive - cmp r0, #0 - bne _02300570 -_02300078: - ldr r0, _0230057C ; =ov11_02324D1C - mvn r1, #1 - ldr r0, [r0, #4] - ldrsb r0, [r0, #2] - cmp r0, r1 - beq _0230009C - bl IsParentMenuActive - cmp r0, #0 - bne _02300570 -_0230009C: - ldr r0, _0230057C ; =ov11_02324D1C - mvn r1, #1 - ldr r0, [r0, #4] - ldrsb r0, [r0, #1] - cmp r0, r1 - beq _023000C8 - bl CloseDialogueBox - ldr r0, _0230057C ; =ov11_02324D1C - mvn r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #1] -_023000C8: - ldr r0, _0230057C ; =ov11_02324D1C - mvn r1, #1 - ldr r0, [r0, #4] - ldrsb r0, [r0, #2] - cmp r0, r1 - beq _02300570 - bl CloseParentMenu - ldr r0, _0230057C ; =ov11_02324D1C - mvn r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #2] - b _02300570 -_023000F8: - ldrsb r0, [ip] - cmp r0, r1 - bne _02300178 - mov r1, #0 - str r1, [sp, #0x58] - ldrsh r2, [r2, #2] - ldr r3, [ip, #0x14] - b _02300130 -_02300118: - add r0, ip, r1, lsl #1 - ldrsh r0, [r0, #0x18] - cmp r2, r0 - streq r1, [sp, #0x58] - beq _02300138 - add r1, r1, #1 -_02300130: - cmp r1, r3 - blt _02300118 -_02300138: - ldr r1, _02300580 ; =0x0000022E - mov r0, #0x10 - strh r1, [sp, #0x60] - str r0, [sp, #0x64] - ldr ip, [ip, #0x14] - ldr r0, _02300584 ; =ov11_0232250C - str ip, [sp] - mov ip, #8 - ldr r1, _02300588 ; =0x00801833 - ldr r3, _0230058C ; =ov11_023005A0 - add r2, sp, #0x58 - str ip, [sp, #4] - bl CreateAdvancedMenu - ldr r1, _0230057C ; =ov11_02324D1C - ldr r1, [r1, #4] - strb r0, [r1] -_02300178: - ldr r0, _0230057C ; =ov11_02324D1C - mov r1, #4 - ldr r0, [r0, #4] - str r1, [r0, #4] - b _02300570 -_0230018C: - ldrb r0, [r2, #0xc] - cmp r0, #0 - beq _023001F4 - bl ov11_0230D220 - cmp r0, #0 - bne _02300570 - ldr r0, _0230057C ; =ov11_02324D1C - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl GetAdvancedMenuCurrentOption - ldr r1, _0230057C ; =ov11_02324D1C - ldr r1, [r1, #4] - add r0, r1, r0, lsl #1 - ldrsh r0, [r0, #0x18] - bl DungeonSwapIdxToId - bl sub_0206A84C - ldr r1, _0230057C ; =ov11_02324D1C - ldr r2, [r1, #4] - strh r0, [r2, #0xe] - ldr r0, [r1, #4] - ldrsh r0, [r0, #0xe] - bl ov11_0230F1EC - ldr r0, _0230057C ; =ov11_02324D1C - ldr r0, [r0, #4] - ldrsh r0, [r0, #0xe] - bl WorldMapSetCamera -_023001F4: - ldr r0, _0230057C ; =ov11_02324D1C - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl ResumeAdvancedMenu - ldr r0, _0230057C ; =ov11_02324D1C - mov r1, #5 - ldr r0, [r0, #4] - str r1, [r0, #4] - b _02300570 -_02300218: - ldrb r0, [r2, #0xc] - cmp r0, #0 - beq _0230027C - ldrsb r0, [r2] - bl GetAdvancedMenuCurrentOption - ldr r1, _0230057C ; =ov11_02324D1C - ldr r1, [r1, #4] - add r0, r1, r0, lsl #1 - ldrsh r0, [r0, #0x18] - bl DungeonSwapIdxToId - bl sub_0206A84C - ldr r1, _0230057C ; =ov11_02324D1C - ldr r3, [r1, #4] - ldrsh r2, [r3, #0xe] - cmp r2, r0 - beq _0230027C - strh r0, [r3, #0xe] - ldr r0, [r1, #4] - ldrsh r0, [r0, #0xe] - bl ov11_0230F1EC - ldr r0, _0230057C ; =ov11_02324D1C - mov r1, #0xc - ldr r0, [r0, #4] - ldrsh r0, [r0, #0xe] - bl ov11_0230F138 -_0230027C: - ldr r0, _0230057C ; =ov11_02324D1C - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl IsAdvancedMenuActive - cmp r0, #0 - bne _02300570 - ldr r0, _0230057C ; =ov11_02324D1C - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl GetAdvancedMenuResult - cmp r0, #0 - bge _023002E4 - ldr r0, _0230057C ; =ov11_02324D1C - ldr r0, [r0, #4] - ldrb r0, [r0, #0xc] - cmp r0, #0 - beq _023002C4 - bl ov11_0230CFF4 -_023002C4: - ldr r0, _0230057C ; =ov11_02324D1C - mvn r3, #0 - ldr r2, [r0, #4] - mov r1, #9 - str r3, [r2, #0x10] - ldr r0, [r0, #4] - str r1, [r0, #4] - b _02300570 -_023002E4: - ldr r1, _0230057C ; =ov11_02324D1C - mov r2, #6 - ldr r3, [r1, #4] - str r0, [r3, #0x10] - ldr r0, [r1, #4] - str r2, [r0, #4] - b _02300570 -_02300300: - ldrsb r0, [r2] - mvn r1, #1 - cmp r0, r1 - beq _02300340 - bl IsAdvancedMenuActive2 - cmp r0, #0 - bne _02300570 - ldr r0, _0230057C ; =ov11_02324D1C - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl CloseAdvancedMenu - ldr r0, _0230057C ; =ov11_02324D1C - mvn r1, #1 - ldr r0, [r0, #4] - strb r1, [r0] - b _02300570 -_02300340: - ldrsb r0, [r2, #1] - cmp r0, r1 - bne _02300398 - mov r0, #0 - bl CreateDialogueBox - ldr r1, _0230057C ; =ov11_02324D1C - ldr r2, [r1, #4] - strb r0, [r2, #1] - ldr r2, [r1, #4] - ldr r0, [r2, #0x10] - add r0, r2, r0, lsl #1 - ldrsh r0, [r0, #0x18] - strh r0, [r1, #2] - bl DungeonSwapIdxToId -#ifdef JAPAN - ldr r2, _0230057C ; =ov11_02324D1C - ldr r1, _02300590 ; =0x00000408 - ldr r2, [r2, #4] - str r0, [sp, #0x18] - ldrsb r0, [r2, #1] - add r3, sp, #8 - add r2, r1, #0x2e -#else - ldr r1, _0230057C ; =ov11_02324D1C - str r0, [sp, #0x18] - ldr r0, [r1, #4] - ldr r1, _02300590 ; =0x00000408 - ldrsb r0, [r0, #1] - ldr r2, _02300594 ; =0x0000022F - add r3, sp, #8 -#endif - bl ShowStringIdInDialogueBox -_02300398: - ldr r1, _0230057C ; =ov11_02324D1C - mvn r0, #1 - ldr r1, [r1, #4] - ldrsb r1, [r1, #2] - cmp r1, r0 - bne _023003D0 - mov r0, #0 - ldr r1, _02300598 ; =0x00400013 - ldr r3, _0230059C ; =ov11_02322530 - mov r2, r0 - bl CreateParentMenuFromStringIds - ldr r1, _0230057C ; =ov11_02324D1C - ldr r1, [r1, #4] - strb r0, [r1, #2] -_023003D0: - ldr r0, _0230057C ; =ov11_02324D1C - mov r1, #8 - ldr r0, [r0, #4] - str r1, [r0, #4] - b _02300570 -_023003E4: - ldrsb r0, [r2, #2] - bl CheckParentMenuField0x1A0 - cmp r0, #0 - bne _02300570 - ldr r0, _0230057C ; =ov11_02324D1C - ldr r0, [r0, #4] - ldrsb r0, [r0, #2] - bl GetSimpleMenuResult__0202AEA4 - cmp r0, #2 - bne _02300430 - ldr r0, _0230057C ; =ov11_02324D1C - ldr r0, [r0, #4] - ldrsb r0, [r0, #1] - bl sub_0202F334 - ldr r0, _0230057C ; =ov11_02324D1C - mov r1, #3 - ldr r0, [r0, #4] - str r1, [r0, #4] - b _02300570 -_02300430: - cmp r0, #1 - ldreq r0, _0230057C ; =ov11_02324D1C - moveq r1, #3 - ldreq r0, [r0, #4] - streq r1, [r0, #4] - ldrne r0, _0230057C ; =ov11_02324D1C - movne r1, #9 - ldrne r0, [r0, #4] - strne r1, [r0, #4] - b _02300570 -_02300458: - ldrsb r0, [r2] - mvn r1, #1 - cmp r0, r1 - beq _02300494 - bl IsAdvancedMenuActive2 - cmp r0, #0 - bne _02300570 - ldr r0, _0230057C ; =ov11_02324D1C - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl CloseAdvancedMenu - ldr r0, _0230057C ; =ov11_02324D1C - mvn r1, #1 - ldr r0, [r0, #4] - strb r1, [r0] -_02300494: - ldr r0, _0230057C ; =ov11_02324D1C - mvn r1, #1 - ldr r0, [r0, #4] - ldrsb r0, [r0, #1] - cmp r0, r1 - beq _023004B8 - bl IsDialogueBoxActive - cmp r0, #0 - bne _02300570 -_023004B8: - ldr r0, _0230057C ; =ov11_02324D1C - mvn r1, #1 - ldr r0, [r0, #4] - ldrsb r0, [r0, #2] - cmp r0, r1 - beq _023004DC - bl IsParentMenuActive - cmp r0, #0 - bne _02300570 -_023004DC: - ldr r0, _0230057C ; =ov11_02324D1C - mvn r1, #1 - ldr r0, [r0, #4] - ldrsb r0, [r0, #1] - cmp r0, r1 - beq _02300508 - bl CloseDialogueBox - ldr r0, _0230057C ; =ov11_02324D1C - mvn r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #1] -_02300508: - ldr r0, _0230057C ; =ov11_02324D1C - mvn r1, #1 - ldr r0, [r0, #4] - ldrsb r0, [r0, #2] - cmp r0, r1 - beq _02300534 - bl CloseParentMenu - ldr r0, _0230057C ; =ov11_02324D1C - mvn r1, #1 - ldr r0, [r0, #4] - strb r1, [r0, #2] -_02300534: - ldr r0, _0230057C ; =ov11_02324D1C - ldr r2, [r0, #4] - ldr r1, [r2, #0x10] - cmp r1, #0 - mvnlt r1, #0 - addge r1, r2, r1, lsl #1 - ldrgesh r1, [r1, #0x18] - strh r1, [r0] - mov r0, #0xa - str r0, [r2, #4] - b _02300570 -_02300560: - mov r0, #0xb - str r0, [r2, #4] - mov r0, #4 - b _02300574 -_02300570: - mov r0, #1 -_02300574: - add sp, sp, #0xf0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230057C: .word ov11_02324D1C -#ifdef JAPAN -_02300580: .word 0x00000435 -#else -_02300580: .word 0x0000022E -#endif -_02300584: .word ov11_0232250C -_02300588: .word 0x00801833 -_0230058C: .word ov11_023005A0 -_02300590: .word 0x00000408 -#ifndef JAPAN -_02300594: .word 0x0000022F -#endif -_02300598: .word 0x00400013 -_0230059C: .word ov11_02322530 - arm_func_end ov11_022FFF00 - - arm_func_start ov11_023005A0 -ov11_023005A0: ; 0x023005A0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #0x54 - ldr r2, _02300660 ; =ov11_02324D1C - mov r8, r0 - ldr r2, [r2, #4] - add r0, r2, r1, lsl #1 - ldrsh r4, [r0, #0x18] - add r0, r2, r1, lsl #2 - ldr r5, [r0, #0x1c4] - mov r0, r4 - bl DungeonSwapIdxToId - ldr r1, _02300660 ; =ov11_02324D1C - mov r6, r0 - ldr r1, [r1, #4] - ldr r7, _02300664 ; =ov11_0232256C - ldr r1, [r1, #8] - cmp r1, #0 - bne _0230060C - cmp r5, #1 - ldreq r7, _02300668 ; =ov11_02322574 - beq _02300630 - cmp r5, #3 - bne _02300630 - bl AnyDungeonRequestsDone - cmp r0, #0 - ldrne r7, _0230066C ; =ov11_02322580 - b _02300630 -_0230060C: - sub r0, r1, #2 - cmp r0, #1 - bhi _02300630 - cmp r4, #0xbe - beq _02300630 - mov r0, r4 - bl sub_0204CF0C - cmp r0, #0 - ldrne r7, _02300670 ; =ov11_0232258C -_02300630: - ldr r2, _02300674 ; =ov11_02322598 - ldr r3, _02300678 ; =0x0000C402 - add r4, sp, #4 - mov r0, r8 - str r6, [sp, #0x14] - str r7, [sp, #0x3c] - mov r1, #0x400 - str r4, [sp] - bl PreprocessString - mov r0, r8 - add sp, sp, #0x54 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_02300660: .word ov11_02324D1C -_02300664: .word ov11_0232256C -_02300668: .word ov11_02322574 -_0230066C: .word ov11_02322580 -_02300670: .word ov11_0232258C -_02300674: .word ov11_02322598 -_02300678: .word 0x0000C402 - arm_func_end ov11_023005A0 - - arm_func_start ov11_0230067C -ov11_0230067C: ; 0x0230067C - ldr r1, _023006A0 ; =ov11_02324D1C - ldrsh r2, [r1] - strh r2, [r0] - ldrsh r0, [r1] - cmp r0, #0xd5 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_023006A0: .word ov11_02324D1C - arm_func_end ov11_0230067C - - arm_func_start ov11_023006A4 -ov11_023006A4: ; 0x023006A4 - stmdb sp!, {r3, lr} - ldr r0, _023006D8 ; =ov11_02324D24 - ldr r0, [r0, #4] - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0x460 - mov r1, #8 - bl MemAlloc - ldr r1, _023006D8 ; =ov11_02324D24 - mov r2, #0 - str r0, [r1, #4] - str r2, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_023006D8: .word ov11_02324D24 - arm_func_end ov11_023006A4 - - arm_func_start ov11_023006DC -ov11_023006DC: ; 0x023006DC - stmdb sp!, {r3, lr} - ldr r0, _02300720 ; =ov11_02324D24 - ldr r1, [r0] - cmp r1, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - ldr r0, [r0, #4] - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} - ldr r0, _02300724 ; =ov11_023225BC - bl sub_02034840 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - .align 2, 0 -_02300720: .word ov11_02324D24 -_02300724: .word ov11_023225BC - arm_func_end ov11_023006DC - - arm_func_start ov11_02300728 -ov11_02300728: ; 0x02300728 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl ov11_023006A4 - ldr r0, _023007A4 ; =ov11_02324D24 - mov r1, r7 - ldr r0, [r0, #4] - add r0, r0, #0x58 - bl strcpy - ldr r0, _023007A4 ; =ov11_02324D24 - mov r1, r6 - ldr r0, [r0, #4] - add r0, r0, #8 - bl CopyOrInitPreprocessorArgs - ldr r1, _023007A4 ; =ov11_02324D24 - ldr r0, _023007A8 ; =ov11_023225BC - ldr r3, [r1, #4] - mov r2, #2 - str r5, [r3, #0x458] - ldr r3, [r1, #4] - str r4, [r3, #0x45c] - ldr r1, [r1, #4] - str r2, [r1] - bl sub_02034840 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _023007A8 ; =ov11_023225BC - bl InitMenu - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_023007A4: .word ov11_02324D24 -_023007A8: .word ov11_023225BC - arm_func_end ov11_02300728 - - arm_func_start ov11_023007AC -ov11_023007AC: ; 0x023007AC - stmdb sp!, {r3, lr} - mov r0, #0x14 - mov r1, #8 - bl MemAlloc - ldr r1, _023007E8 ; =ov11_02324D24 - mov r2, #0 - str r0, [r1] - str r2, [r0, #4] - ldr r0, _023007EC ; =ov11_023225CC - bl CreateDialogueBox - ldr r1, _023007E8 ; =ov11_02324D24 - ldr r1, [r1] - strb r0, [r1] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_023007E8: .word ov11_02324D24 -_023007EC: .word ov11_023225CC - arm_func_end ov11_023007AC - - arm_func_start ov11_023007F0 -ov11_023007F0: ; 0x023007F0 - stmdb sp!, {r3, lr} - ldr r0, _02300848 ; =ov11_02324D24 - ldr r0, [r0] - cmp r0, #0 - beq _02300824 - ldrsb r0, [r0] - bl CloseDialogueBox - ldr r0, _02300848 ; =ov11_02324D24 - ldr r0, [r0] - bl MemFree - ldr r0, _02300848 ; =ov11_02324D24 - mov r1, #0 - str r1, [r0] -_02300824: - ldr r0, _02300848 ; =ov11_02324D24 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _02300848 ; =ov11_02324D24 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02300848: .word ov11_02324D24 - arm_func_end ov11_023007F0 - - arm_func_start ov11_0230084C -ov11_0230084C: ; 0x0230084C - stmdb sp!, {r3, lr} - ldr r0, _02300A20 ; =ov11_02324D24 - ldr r3, [r0] - ldr r1, [r3, #4] - cmp r1, #5 - addls pc, pc, r1, lsl #2 - b _02300A18 -_02300868: ; jump table - b _02300880 ; case 0 - b _023008A4 ; case 1 - b _02300964 ; case 2 - b _02300990 ; case 3 - b _023009C4 ; case 4 - b _023009F4 ; case 5 -_02300880: - ldr r0, [r0, #4] - ldr r0, [r0] - cmp r0, #0 - beq _02300A18 - mov r1, #1 - mov r0, #0 - str r1, [r3, #4] - bl ov11_022E9BD0 - b _02300A18 -_023008A4: - ldr r2, [r0, #4] - ldr r1, _02300A24 ; =0x00000408 - ldr r0, [r2, #0x45c] - cmp r0, #0 - ldr r0, [r2] - movge r1, #0x20 - cmp r0, #1 - beq _023008D0 - cmp r0, #2 - beq _023008EC - b _02300904 -_023008D0: - ldr r2, _02300A20 ; =ov11_02324D24 - ldrsb r0, [r3] - ldr r3, [r2, #4] - ldrh r2, [r3, #4] - add r3, r3, #8 - bl ShowStringIdInDialogueBox - b _02300904 -_023008EC: - ldr r2, _02300A20 ; =ov11_02324D24 - ldrsb r0, [r3] - ldr r3, [r2, #4] - add r2, r3, #0x58 - add r3, r3, #8 - bl ShowStringInDialogueBox -_02300904: - ldr r0, _02300A20 ; =ov11_02324D24 - ldmia r0, {r1, r2} - ldr r2, [r2, #0x458] - str r2, [r1, #8] - ldmia r0, {r1, r2} - ldr r2, [r2, #0x45c] - str r2, [r1, #0xc] - ldr r1, [r0, #4] - ldr r1, [r1, #0x45c] - cmp r1, #0 - blt _02300940 - ldr r0, [r0] - mov r2, r1 - ldrsb r0, [r0] - bl sub_0202F190 -_02300940: - ldr r0, _02300A20 ; =ov11_02324D24 - ldr r0, [r0] - ldr r0, [r0, #8] - bl ov11_022E9B84 - ldr r0, _02300A20 ; =ov11_02324D24 - mov r1, #2 - ldr r0, [r0] - str r1, [r0, #4] - b _02300A18 -_02300964: - bl ov11_022E9F48 - cmp r0, #0 - bne _02300A18 - ldr r0, _02300A20 ; =ov11_02324D24 - mov r2, #3 - ldr r1, [r0] - str r2, [r1, #4] - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_0202F3F8 - b _02300A18 -_02300990: - ldrsb r0, [r3] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02300A18 - ldr r0, _02300A20 ; =ov11_02324D24 - ldr r0, [r0] - ldr r0, [r0, #8] - bl ov11_022E9BD0 - ldr r0, _02300A20 ; =ov11_02324D24 - mov r1, #4 - ldr r0, [r0] - str r1, [r0, #4] - b _02300A18 -_023009C4: - bl ov11_022E9F48 - cmp r0, #0 - bne _02300A18 - ldr r0, _02300A20 ; =ov11_02324D24 - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_0202F334 - ldr r0, _02300A20 ; =ov11_02324D24 - mov r1, #5 - ldr r0, [r0] - str r1, [r0, #4] - b _02300A18 -_023009F4: - ldrsb r0, [r3] - bl sub_020282F4 - mvn r1, #5 - cmp r0, r1 - bne _02300A18 - mov r0, #0 - bl ov11_022E9B84 - mov r0, #4 - ldmia sp!, {r3, pc} -_02300A18: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02300A20: .word ov11_02324D24 -_02300A24: .word 0x00000408 - arm_func_end ov11_0230084C - - arm_func_start ov11_02300A28 -ov11_02300A28: ; 0x02300A28 - stmdb sp!, {r3, lr} - ldr r0, _02300A5C ; =ov11_02324D2C - ldr r0, [r0, #4] - cmp r0, #0 - ldmneia sp!, {r3, pc} - mov r0, #0x460 - mov r1, #8 - bl MemAlloc - ldr r1, _02300A5C ; =ov11_02324D2C - mov r2, #0 - str r0, [r1, #4] - str r2, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02300A5C: .word ov11_02324D2C - arm_func_end ov11_02300A28 - - arm_func_start ov11_02300A60 -ov11_02300A60: ; 0x02300A60 - stmdb sp!, {r3, lr} - ldr r0, _02300AC4 ; =ov11_02324D2C - ldr r1, [r0] - ldr r0, [r0, #4] - cmp r1, #0 - beq _02300A8C - ldr r0, [r0] - cmp r0, #0 - movne r0, #1 - ldreqb r0, [r1, #8] - ldmia sp!, {r3, pc} -_02300A8C: - cmp r0, #0 - beq _02300AA8 - ldr r0, [r0] - cmp r0, #0 - beq _02300ABC - mov r0, #1 - ldmia sp!, {r3, pc} -_02300AA8: - ldr r0, _02300AC8 ; =ov11_023225DC - bl sub_02034840 - cmp r0, #0 - movne r0, #1 - ldmneia sp!, {r3, pc} -_02300ABC: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02300AC4: .word ov11_02324D2C -_02300AC8: .word ov11_023225DC - arm_func_end ov11_02300A60 - - arm_func_start ov11_02300ACC -ov11_02300ACC: ; 0x02300ACC - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r6, r1 - mov r5, r2 - mov r4, r3 - bl ov11_02300A28 - ldr r0, _02300B48 ; =ov11_02324D2C - mov r1, r7 - ldr r0, [r0, #4] - add r0, r0, #0x58 - bl strcpy - ldr r0, _02300B48 ; =ov11_02324D2C - mov r1, r6 - ldr r0, [r0, #4] - add r0, r0, #8 - bl CopyOrInitPreprocessorArgs - ldr r1, _02300B48 ; =ov11_02324D2C - ldr r0, _02300B4C ; =ov11_023225DC - ldr r3, [r1, #4] - mov r2, #2 - str r5, [r3, #0x458] - ldr r3, [r1, #4] - str r4, [r3, #0x45c] - ldr r1, [r1, #4] - str r2, [r1] - bl sub_02034840 - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - ldr r0, _02300B4C ; =ov11_023225DC - bl InitMenu - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_02300B48: .word ov11_02324D2C -_02300B4C: .word ov11_023225DC - arm_func_end ov11_02300ACC - - arm_func_start ov11_02300B50 -ov11_02300B50: ; 0x02300B50 - stmdb sp!, {r3, lr} - mov r0, #0xc - mov r1, #8 - bl MemAlloc - ldr r1, _02300B94 ; =ov11_02324D2C - mov r2, #0 - str r0, [r1] - str r2, [r0, #4] - ldr r1, [r1] - ldr r0, _02300B98 ; =ov11_023225EC - strb r2, [r1, #8] - bl CreateDialogueBox - ldr r1, _02300B94 ; =ov11_02324D2C - ldr r1, [r1] - strb r0, [r1] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02300B94: .word ov11_02324D2C -_02300B98: .word ov11_023225EC - arm_func_end ov11_02300B50 - - arm_func_start ov11_02300B9C -ov11_02300B9C: ; 0x02300B9C - stmdb sp!, {r3, lr} - ldr r0, _02300BF4 ; =ov11_02324D2C - ldr r0, [r0] - cmp r0, #0 - beq _02300BD0 - ldrsb r0, [r0] - bl CloseDialogueBox - ldr r0, _02300BF4 ; =ov11_02324D2C - ldr r0, [r0] - bl MemFree - ldr r0, _02300BF4 ; =ov11_02324D2C - mov r1, #0 - str r1, [r0] -_02300BD0: - ldr r0, _02300BF4 ; =ov11_02324D2C - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _02300BF4 ; =ov11_02324D2C - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02300BF4: .word ov11_02324D2C - arm_func_end ov11_02300B9C - - arm_func_start ov11_02300BF8 -ov11_02300BF8: ; 0x02300BF8 - stmdb sp!, {r3, lr} - ldr r0, _02300D58 ; =ov11_02324D2C - ldr r3, [r0] - ldr r1, [r3, #4] - cmp r1, #0 - beq _02300C24 - cmp r1, #1 - beq _02300CC8 - cmp r1, #2 - beq _02300D38 - b _02300D50 -_02300C24: - ldr r0, [r0, #4] - ldr r2, [r0] - cmp r2, #0 - beq _02300D50 - ldr r0, [r0, #0x458] - mov r1, #0x218 - cmp r0, #0 - movge r1, #0x20 - cmp r2, #1 - beq _02300C58 - cmp r2, #2 - beq _02300C74 - b _02300C8C -_02300C58: - ldr r2, _02300D58 ; =ov11_02324D2C - ldrsb r0, [r3] - ldr r3, [r2, #4] - ldrh r2, [r3, #4] - add r3, r3, #8 - bl ShowStringIdInDialogueBox - b _02300C8C -_02300C74: - ldr r2, _02300D58 ; =ov11_02324D2C - ldrsb r0, [r3] - ldr r3, [r2, #4] - add r2, r3, #0x58 - add r3, r3, #8 - bl ShowStringInDialogueBox -_02300C8C: - ldr r0, _02300D58 ; =ov11_02324D2C - ldr r2, [r0, #4] - ldr r1, [r2, #0x458] - cmp r1, #0 - blt _02300CB0 - ldr r0, [r0] - ldr r2, [r2, #0x45c] - ldrsb r0, [r0] - bl sub_0202F190 -_02300CB0: - ldr r0, _02300D58 ; =ov11_02324D2C - mov r2, #1 - ldr r1, [r0] - strb r2, [r1, #8] - ldr r0, [r0] - str r2, [r0, #4] -_02300CC8: - ldr r0, _02300D58 ; =ov11_02324D2C - ldr r0, [r0] - ldrsb r0, [r0] - bl IsDialogueBoxActive - ldr r1, _02300D58 ; =ov11_02324D2C - cmp r0, #0 - ldr r2, [r1] - strb r0, [r2, #8] - bne _02300D50 - ldr r0, [r1] - ldrsb r0, [r0] - bl sub_0202F16C - cmp r0, #0x10 - cmpne r0, #0 - bne _02300D24 - ldr r0, _02300D58 ; =ov11_02324D2C - mov r3, #2 - ldr r2, [r0] - mov r1, #1 - str r3, [r2, #4] - ldr r0, [r0] - strb r1, [r0, #8] - b _02300D50 -_02300D24: - ldr r0, _02300D58 ; =ov11_02324D2C - ldr r0, [r0] - ldrsb r0, [r0] - bl sub_0202F2C4 - b _02300D50 -_02300D38: - ldrsb r0, [r3] - bl sub_020282F4 - mvn r1, #5 - cmp r0, r1 - moveq r0, #4 - ldmeqia sp!, {r3, pc} -_02300D50: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02300D58: .word ov11_02324D2C - arm_func_end ov11_02300BF8 - - arm_func_start ov11_02300D5C -ov11_02300D5C: ; 0x02300D5C - stmdb sp!, {r3, lr} - ldr r0, _02300D80 ; =ov11_0232260C - bl InitMenu - cmp r0, #0 - ldrne r0, _02300D84 ; =ov11_02324D34 - movne r1, #0 - strne r1, [r0, #8] - strne r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02300D80: .word ov11_0232260C -_02300D84: .word ov11_02324D34 - arm_func_end ov11_02300D5C - - arm_func_start CreateTopGroundMenu -CreateTopGroundMenu: ; 0x02300D88 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x98 - bl GetGameMode - mov r4, r0 - mov r0, #0x14 - mov r1, #8 - bl MemAlloc - add r2, r4, #0xff - ldr r1, _02300ED8 ; =ov11_02324D34 - and r2, r2, #0xff - cmp r2, #1 - str r0, [r1] - ldrls r8, _02300EDC ; =ov11_02322684 - bls _02300DCC - cmp r4, #3 - ldreq r8, _02300EE0 ; =ov11_02322654 - ldrne r8, _02300EE4 ; =ov11_0232262C -_02300DCC: - ldr r0, _02300ED8 ; =ov11_02324D34 - mov fp, #1 - ldr r0, [r0] - mov sb, r8 - add sl, r0, #8 - add r0, r4, #0xff - mov r4, #0 - str sl, [sp, #0x60] - and r6, r0, #0xff - mov r5, r4 - mov r7, fp - b _02300E5C -_02300DFC: - ldr r0, [sb, #4] - cmp r0, #2 - beq _02300E1C - cmp r0, #3 - beq _02300E24 - cmp r0, #4 - beq _02300E2C - b _02300E44 -_02300E1C: - bl IsBagNotEmpty - b _02300E48 -_02300E24: - mov r0, r7 - b _02300E48 -_02300E2C: - cmp r6, #1 - movhi r0, r4 - bhi _02300E48 - mov r0, r5 - bl ov11_0230488C - b _02300E48 -_02300E44: - mov r0, fp -_02300E48: - cmp r0, #0 - movne r0, #0 - moveq r0, #3 - strb r0, [sl], #1 - add sb, sb, #8 -_02300E5C: - ldrh r0, [sb] - cmp r0, #0 - bne _02300DFC - ldr r0, _02300EE8 ; =ov11_023225FC - ldr r1, _02300EEC ; =0x00400213 - add r2, sp, #0 - mov r3, r8 - bl CreateParentMenuFromStringIds - ldr r2, _02300ED8 ; =ov11_02324D34 - mov r1, #0x13 - ldr r3, [r2] - mov r2, #0 - strb r0, [r3] - ldr r0, _02300EF0 ; =ov11_0232261C - mov r3, #0x10000 - bl CreateAreaNameBox - ldr r1, _02300ED8 ; =ov11_02324D34 - ldr r1, [r1] - strb r0, [r1, #1] - bl CreateTeamInfoBox - ldr r1, _02300ED8 ; =ov11_02324D34 - mov r3, #0 - ldr r2, [r1] - strb r0, [r2, #2] - ldr r2, [r1] - mov r0, #1 - str r3, [r2, #4] - str r3, [r1, #8] - str r3, [r1, #4] - add sp, sp, #0x98 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02300ED8: .word ov11_02324D34 -_02300EDC: .word ov11_02322684 -_02300EE0: .word ov11_02322654 -_02300EE4: .word ov11_0232262C -_02300EE8: .word ov11_023225FC -_02300EEC: .word 0x00400213 -_02300EF0: .word ov11_0232261C - arm_func_end CreateTopGroundMenu - - arm_func_start CloseTopGroundMenu -CloseTopGroundMenu: ; 0x02300EF4 - stmdb sp!, {r3, lr} - ldr r0, _02300F4C ; =ov11_02324D34 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r0, [r0] - bl CloseParentMenu - ldr r0, _02300F4C ; =ov11_02324D34 - ldr r0, [r0] - ldrsb r0, [r0, #1] - bl CloseAreaNameBox - ldr r0, _02300F4C ; =ov11_02324D34 - ldr r0, [r0] - ldrsb r0, [r0, #2] - bl CloseTeamInfoBox - ldr r0, _02300F4C ; =ov11_02324D34 - ldr r0, [r0] - bl MemFree - ldr r0, _02300F4C ; =ov11_02324D34 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02300F4C: .word ov11_02324D34 - arm_func_end CloseTopGroundMenu - - arm_func_start UpdateTopGroundMenu -UpdateTopGroundMenu: ; 0x02300F50 - stmdb sp!, {r3, lr} - ldr r0, _02301138 ; =ov11_02324D34 - ldr r2, [r0] - ldr r1, [r2, #4] - cmp r1, #4 - addls pc, pc, r1, lsl #2 - b _02301130 -_02300F6C: ; jump table - b _02300F80 ; case 0 - b _02300FA4 ; case 1 - b _0230100C ; case 2 - b _02301060 ; case 3 - b _023010B0 ; case 4 -_02300F80: - bl ov11_0230D220 - cmp r0, #0 - bne _02301130 - bl ov11_0230D000 - ldr r0, _02301138 ; =ov11_02324D34 - mov r1, #1 - ldr r0, [r0] - str r1, [r0, #4] - b _02301130 -_02300FA4: - ldrsb r0, [r2] - bl CheckParentMenuField0x1A0 - cmp r0, #0 - bne _02301130 - ldr r0, _02301138 ; =ov11_02324D34 - ldr r0, [r0] - ldrsb r0, [r0] - bl GetSimpleMenuResult__0202AEA4 - ldr r1, _02301138 ; =ov11_02324D34 - cmp r0, #1 - str r0, [r1, #8] - ldr r0, [r1] - movne r1, #2 - strne r1, [r0, #4] - bne _02301130 - ldrsb r0, [r0, #1] - bl SetAreaNameBoxState3 - ldr r0, _02301138 ; =ov11_02324D34 - ldr r0, [r0] - ldrsb r0, [r0, #2] - bl ov11_022FEF24 - ldr r0, _02301138 ; =ov11_02324D34 - mov r1, #3 - ldr r0, [r0] - str r1, [r0, #4] - b _02301130 -_0230100C: - ldrsb r0, [r2] - bl IsParentMenuActive - cmp r0, #0 - bne _02301130 - ldr r0, _02301138 ; =ov11_02324D34 - ldr r0, [r0] - ldrsb r0, [r0] - bl SetParentMenuState7 - ldr r0, _02301138 ; =ov11_02324D34 - ldr r0, [r0] - ldrsb r0, [r0, #1] - bl SetAreaNameBoxState3 - ldr r0, _02301138 ; =ov11_02324D34 - ldr r0, [r0] - ldrsb r0, [r0, #2] - bl ov11_022FEF24 - ldr r0, _02301138 ; =ov11_02324D34 - mov r1, #3 - ldr r0, [r0] - str r1, [r0, #4] - b _02301130 -_02301060: - ldrsb r0, [r2] - bl IsParentMenuActive - cmp r0, #0 - bne _02301130 - ldr r0, _02301138 ; =ov11_02324D34 - ldr r0, [r0] - ldrsb r0, [r0, #1] - bl IsAreaNameBoxActive - cmp r0, #0 - bne _02301130 - ldr r0, _02301138 ; =ov11_02324D34 - ldr r0, [r0] - ldrsb r0, [r0, #2] - bl IsTeamInfoBoxActive - cmp r0, #0 - ldreq r0, _02301138 ; =ov11_02324D34 - moveq r1, #4 - ldreq r0, [r0] - streq r1, [r0, #4] - b _02301130 -_023010B0: - mov r1, #5 - str r1, [r2, #4] - ldr r0, [r0, #8] - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _0230111C -_023010C8: ; jump table - b _0230111C ; case 0 - b _0230111C ; case 1 - b _023010E8 ; case 2 - b _023010F4 ; case 3 - b _02301100 ; case 4 - b _02301110 ; case 5 - b _0230111C ; case 6 - b _0230111C ; case 7 -_023010E8: - bl ov11_02304AE0 - mov r0, #4 - ldmia sp!, {r3, pc} -_023010F4: - bl ov11_02304BC4 - mov r0, #4 - ldmia sp!, {r3, pc} -_02301100: - mov r0, #0 - bl ov11_023048AC - mov r0, #4 - ldmia sp!, {r3, pc} -_02301110: - bl ov11_02301174 - mov r0, #4 - ldmia sp!, {r3, pc} -_0230111C: - ldr r1, _02301138 ; =ov11_02324D34 - mov r0, #4 - ldr r2, [r1, #8] - str r2, [r1, #4] - ldmia sp!, {r3, pc} -_02301130: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02301138: .word ov11_02324D34 - arm_func_end UpdateTopGroundMenu - - arm_func_start ov11_0230113C -ov11_0230113C: ; 0x0230113C - ldr r1, _02301148 ; =ov11_02324D34 - str r0, [r1, #4] - bx lr - .align 2, 0 -_02301148: .word ov11_02324D34 - arm_func_end ov11_0230113C - - arm_func_start ov11_0230114C -ov11_0230114C: ; 0x0230114C - ldr r1, _02301170 ; =ov11_02324D34 - ldr r2, [r1, #4] - str r2, [r0] - ldr r0, [r1, #4] - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - and r0, r0, #0xff - bx lr - .align 2, 0 -_02301170: .word ov11_02324D34 - arm_func_end ov11_0230114C - - arm_func_start ov11_02301174 -ov11_02301174: ; 0x02301174 - stmdb sp!, {r3, lr} - ldr r0, _02301194 ; =ov11_023226C4 - bl InitMenu - cmp r0, #0 - ldrne r0, _02301198 ; =ov11_02324D40 - movne r1, #0 - strne r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02301194: .word ov11_023226C4 -_02301198: .word ov11_02324D40 - arm_func_end ov11_02301174 - - arm_func_start GroundBagOthersMenuEntryPoint -GroundBagOthersMenuEntryPoint: ; 0x0230119C - stmdb sp!, {r4, lr} - sub sp, sp, #0x98 - mov r0, #8 - mov r1, r0 - bl MemAlloc - ldr r1, _0230120C ; =ov11_02324D40 - ldr r4, _02301210 ; =0x00000227 - str r0, [r1, #4] - mov lr, #0x10 - mov ip, #0 - ldr r0, _02301214 ; =ov11_023226B4 - ldr r1, _02301218 ; =0x00001813 - ldr r3, _0230121C ; =ov11_023226D4 - add r2, sp, #0 - strh r4, [sp, #8] - str lr, [sp, #0xc] - str ip, [sp] - bl CreateParentMenuFromStringIds - ldr r1, _0230120C ; =ov11_02324D40 - mov r3, #0 - ldr r2, [r1, #4] - strb r0, [r2] - ldr r2, [r1, #4] - mov r0, #1 - str r3, [r2, #4] - str r3, [r1] - add sp, sp, #0x98 - ldmia sp!, {r4, pc} - .align 2, 0 -_0230120C: .word ov11_02324D40 -#ifdef JAPAN -_02301210: .word 0x0000042E -#else -_02301210: .word 0x00000227 -#endif -_02301214: .word ov11_023226B4 -_02301218: .word 0x00001813 -_0230121C: .word ov11_023226D4 - arm_func_end GroundBagOthersMenuEntryPoint - - arm_func_start GroundBagOthersMenuDestructor -GroundBagOthersMenuDestructor: ; 0x02301220 - stmdb sp!, {r3, lr} - ldr r0, _02301258 ; =ov11_02324D40 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r0, [r0] - bl CloseParentMenu - ldr r0, _02301258 ; =ov11_02324D40 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _02301258 ; =ov11_02324D40 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02301258: .word ov11_02324D40 - arm_func_end GroundBagOthersMenuDestructor - - arm_func_start GroundBagOthersMenuFrameUpdate -GroundBagOthersMenuFrameUpdate: ; 0x0230125C - stmdb sp!, {r3, lr} - sub sp, sp, #0x130 - ldr r0, _02301398 ; =ov11_02324D40 - ldr r2, [r0, #4] - ldr r1, [r2, #4] - cmp r1, #0 - beq _0230128C - cmp r1, #1 - beq _023012AC - cmp r1, #2 - beq _023012E4 - b _0230138C -_0230128C: - ldrsb r0, [r2] - bl CheckParentMenuField0x1A0 - cmp r0, #0 - ldreq r0, _02301398 ; =ov11_02324D40 - moveq r1, #1 - ldreq r0, [r0, #4] - streq r1, [r0, #4] - b _0230138C -_023012AC: - ldrsb r0, [r2] - bl IsParentMenuActive - cmp r0, #0 - bne _0230138C - ldr r0, _02301398 ; =ov11_02324D40 - ldr r0, [r0, #4] - ldrsb r0, [r0] - bl GetSimpleMenuResult__0202AEA4 - ldr r1, _02301398 ; =ov11_02324D40 - mov r2, #2 - str r0, [r1] - ldr r0, [r1, #4] - str r2, [r0, #4] - b _0230138C -_023012E4: - mov r1, #3 - str r1, [r2, #4] - ldr r0, [r0] - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _0230137C -_023012FC: ; jump table - b _0230137C ; case 0 - b _0230131C ; case 1 - b _02301328 ; case 2 - b _0230134C ; case 3 - b _0230137C ; case 4 - b _0230137C ; case 5 - b _0230137C ; case 6 - b _02301370 ; case 7 -_0230131C: - bl ov11_02300D5C - mov r0, #4 - b _02301390 -_02301328: - ldr r3, _0230139C ; =ov11_023013A0 - mov r2, #0 - add r1, sp, #0x98 - mov r0, #0x100 - str r3, [sp, #0x11c] - str r2, [sp, #0x120] - bl sub_0203559C - mov r0, #4 - b _02301390 -_0230134C: - ldr r3, _0230139C ; =ov11_023013A0 - mov r0, #0 - add r2, sp, #0 - mov r1, #0x100 - str r3, [sp, #0x84] - str r0, [sp, #0x88] - bl sub_02035CE4 - mov r0, #4 - b _02301390 -_02301370: - bl ov11_0230A07C - mov r0, #4 - b _02301390 -_0230137C: - mov r0, #1 - bl ov11_0230113C - mov r0, #4 - b _02301390 -_0230138C: - mov r0, #1 -_02301390: - add sp, sp, #0x130 - ldmia sp!, {r3, pc} - .align 2, 0 -_02301398: .word ov11_02324D40 -_0230139C: .word ov11_023013A0 - arm_func_end GroundBagOthersMenuFrameUpdate - - arm_func_start ov11_023013A0 -ov11_023013A0: ; 0x023013A0 - stmdb sp!, {r3, lr} - cmp r1, #0 - beq _023013B8 - mov r0, #1 - bl ov11_0230113C - ldmia sp!, {r3, pc} -_023013B8: - ldr r0, _023013D4 ; =ov11_023226C4 - bl InitMenu - cmp r0, #0 - ldrne r0, _023013D8 ; =ov11_02324D40 - movne r1, #0 - strne r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_023013D4: .word ov11_023226C4 -_023013D8: .word ov11_02324D40 - arm_func_end ov11_023013A0 - - arm_func_start ov11_023013DC -ov11_023013DC: ; 0x023013DC - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - mov r0, #0x258 - mov r1, #6 - bl MemAlloc - ldr r1, _023014A8 ; =ov11_02324D48 - mov r2, #0 - str r0, [r1] - str r2, [r0, #0x1c] - ldr r0, [r1] - str r2, [r0, #0x184] - ldr r0, [r1] - str r2, [r0, #0xc] - ldr r0, [r1] - add r0, r0, #0x188 - bl InitPreprocessorArgs - ldr r1, _023014A8 ; =ov11_02324D48 - ldrsh r2, [r5, #4] - ldr r0, [r1] - cmp r4, #0 - add r0, r0, #0x200 - strh r2, [r0, #0x4c] - ldrb r2, [r5, #1] - ldr r0, [r1] - str r2, [r0, #0x250] - ldreq r0, [r1] - mov r2, #0 - streqb r2, [r0, #0x24] - beq _02301468 - ldrb r0, [r5, #2] - ldr r3, [r1] - strb r0, [r3, #0x24] - ldrb r0, [r5, #3] - strb r0, [r3, #0x25] -_02301468: - ldr r0, [r1] - mvn r3, #1 - strb r2, [r0, #0x25] - ldr r2, _023014A8 ; =ov11_02324D48 - mov r0, #0 - ldr r4, [r2] - add r1, r4, #0x200 - ldrsh r1, [r1, #0x4c] - str r1, [r4, #0x188] - ldr r1, [r2] - strb r3, [r1, #0x254] - ldr r1, [r2] - strb r3, [r1, #0x255] - bl ov11_023014AC - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023014A8: .word ov11_02324D48 - arm_func_end ov11_023013DC - - arm_func_start ov11_023014AC -ov11_023014AC: ; 0x023014AC - stmdb sp!, {r3, lr} - ldr r3, _02301A10 ; =ov11_02324D48 - ldr r1, [r3] - str r0, [r1] - ldr r2, [r3] - ldr r0, [r2] - cmp r0, #0x16 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, pc} -_023014D0: ; jump table - b _0230152C ; case 0 - b _023015BC ; case 1 - ldmia sp!, {r3, pc} ; case 2 - b _023015F0 ; case 3 - b _02301618 ; case 4 - b _023017B4 ; case 5 - b _0230187C ; case 6 - b _023015D8 ; case 7 - b _023016E8 ; case 8 - b _02301680 ; case 9 - b _02301780 ; case 10 - ldmia sp!, {r3, pc} ; case 11 - ldmia sp!, {r3, pc} ; case 12 - ldmia sp!, {r3, pc} ; case 13 - b _02301658 ; case 14 - ldmia sp!, {r3, pc} ; case 15 - ldmia sp!, {r3, pc} ; case 16 - b _0230191C ; case 17 - b _02301938 ; case 18 - b _023019A0 ; case 19 - b _023019DC ; case 20 - b _023019F8 ; case 21 - b _02301A04 ; case 22 -_0230152C: - add r0, r2, #0x200 - ldrsb r1, [r0, #0x54] - mvn r0, #1 - cmp r1, r0 - bne _02301554 - mov r0, #0 - bl CreateDialogueBox - ldr r1, _02301A10 ; =ov11_02324D48 - ldr r1, [r1] - strb r0, [r1, #0x254] -_02301554: - ldr r0, _02301A10 ; =ov11_02324D48 - ldr r2, [r0] - add r0, r2, #0x200 - ldrsh r1, [r0, #0x4c] - cmp r1, #0x214 - bne _0230157C - mov r0, #8 - str r0, [r2] - bl ov11_02301A30 - ldmia sp!, {r3, pc} -_0230157C: - ldrsh r1, [r0, #0x4c] - add r0, r2, #0x6e - mov r2, #0x4e - bl GetNameWithGender - ldr r0, _02301A10 ; =ov11_02324D48 - ldr r2, _02301A14 ; =0x000002A5 - ldr ip, [r0] - mov r1, #8 - add r3, ip, #0x6e - str r3, [ip, #0x1c0] - ldr r3, [r0] - add r0, r3, #0x200 - ldrsb r0, [r0, #0x54] - add r3, r3, #0x188 - bl ShowStringIdInDialogueBox - ldmia sp!, {r3, pc} -_023015BC: - bl ov11_02302618 - ldr r0, _02301A10 ; =ov11_02324D48 - mov r1, #2 - ldr r0, [r0] - str r1, [r0] - bl ov11_02301A30 - ldmia sp!, {r3, pc} -_023015D8: - mov r1, #2 - str r1, [r2, #0x20] - ldr r0, [r3] - str r1, [r0] - bl ov11_02301A30 - ldmia sp!, {r3, pc} -_023015F0: - ldr r0, _02301A18 ; =ov11_023226FC - mov r2, #0 - ldr r1, _02301A1C ; =0x00300011 - ldr r3, _02301A20 ; =ov11_0232271C - str r2, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _02301A10 ; =ov11_02324D48 - ldr r1, [r1] - strb r0, [r1, #0x255] - ldmia sp!, {r3, pc} -_02301618: - mov r0, #0xc - str r0, [r2] - ldr r0, [r3] - mov r1, #0xe - str r1, [r0, #4] - ldr ip, [r3] - ldr r2, _02301A24 ; =0x0000038F - ldrsh r0, [ip, #0x14] - mov r1, #8 - str r0, [ip, #0x19c] - ldr r3, [r3] - add r0, r3, #0x200 - ldrsb r0, [r0, #0x54] - add r3, r3, #0x188 - bl ShowStringIdInDialogueBox - ldmia sp!, {r3, pc} -_02301658: - ldr r0, _02301A18 ; =ov11_023226FC - mov r2, #0 - ldr r1, _02301A1C ; =0x00300011 - ldr r3, _02301A20 ; =ov11_0232271C - str r2, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _02301A10 ; =ov11_02324D48 - ldr r1, [r1] - strb r0, [r1, #0x255] - ldmia sp!, {r3, pc} -_02301680: - add r0, r2, #0x1d8 - bl ZeroInitMissionRewardDataStruct - ldr r1, _02301A10 ; =ov11_02324D48 - mov ip, #6 - ldr r2, [r1] - ldr r3, _02301A28 ; =ov11_023226F4 - add r0, r2, #0x200 - ldrsh lr, [r0, #0x4c] - add r0, r2, #0x100 - mov r2, #0 - strh lr, [r0, #0xfc] - ldr r0, [r1] - strb ip, [r0, #0x1da] - ldr ip, [r1] - str r3, [sp] - add r0, ip, #0x200 - ldrsh r1, [r0, #0x4c] - add r0, ip, #0x204 - add r3, ip, #0x24 - bl sub_02052E2C - ldr r0, _02301A10 ; =ov11_02324D48 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x204 - bl ov11_023061E4 - ldmia sp!, {r3, pc} -_023016E8: - add r0, r2, #0x200 - ldrsb r0, [r0, #0x54] - bl sub_0202F2C4 - mov r0, #0x214 - mov r1, #0 - bl IsMonsterOnTeam - cmp r0, #0 - beq _02301730 - ldr r0, _02301A10 ; =ov11_02324D48 - ldr r1, [r0] - add r0, r1, #0x200 - ldrsh r0, [r0, #0x4c] - cmp r0, #0x214 - bne _02301730 - mov r0, #5 - str r0, [r1] - bl ov11_02301A30 - ldmia sp!, {r3, pc} -_02301730: - ldr r0, _02301A10 ; =ov11_02324D48 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x4c] - bl GetFirstEmptyMemberIdx - mvn r1, #0 - cmp r0, r1 - bne _02301768 - ldr r0, _02301A10 ; =ov11_02324D48 - mov r1, #9 - ldr r0, [r0] - str r1, [r0] - bl ov11_02301A30 - ldmia sp!, {r3, pc} -_02301768: - ldr r0, _02301A10 ; =ov11_02324D48 - mov r1, #6 - ldr r0, [r0] - str r1, [r0] - bl ov11_02301A30 - ldmia sp!, {r3, pc} -_02301780: - mov r0, #0xc - str r0, [r2] - ldr r0, [r3] - mov r1, #0 - str r1, [r0, #4] -#ifdef JAPAN - ldr r1, [r3] - ldr r2, _02303080 ; =0x00003288 - add r0, r1, #0x200 - add r3, r1, #0x188 - ldrsb r0, [r0, #0x54] - mov r1, #0x18 -#else - ldr r2, [r3] - mov r1, #0x18 - add r0, r2, #0x200 - ldrsb r0, [r0, #0x54] - add r3, r2, #0x188 - mov r2, #0x3a4 -#endif - bl ShowStringIdInDialogueBox - ldmia sp!, {r3, pc} -_023017B4: - mov r1, #1 - mov r0, #0x214 - str r1, [r2, #0x20] - bl GetFirstMatchingMemberIdx - mvn r1, #0 - cmp r0, r1 - bne _02301804 - ldr r0, _02301A10 ; =ov11_02324D48 - mov r1, #0 - ldr r2, [r0] - ldr r3, _02301A28 ; =ov11_023226F4 - str r1, [sp] - add r0, r2, #0x200 - add r1, r2, #0x6e - ldrsh r0, [r0, #0x4c] - add r1, r1, #0x100 - add r2, r2, #0x24 - bl sub_02055DD0 - ldr r1, _02301A10 ; =ov11_02324D48 - b _0230180C -_02301804: - bl GetTeamMember - ldr r1, _02301A10 ; =ov11_02324D48 -_0230180C: - ldr r1, [r1] - str r0, [r1, #0x248] - ldr r0, _02301A10 ; =ov11_02324D48 - ldr r2, [r0] - add r0, r2, #0x200 - ldrsh r1, [r0, #0x4c] - add r0, r2, #0x5a - bl GetNameRaw - ldr r0, _02301A10 ; =ov11_02324D48 - ldr r1, [r0] - add r0, r1, #0x6e - add r0, r0, #0x100 - add r1, r1, #0x5a -#ifdef JAPAN - bl sub_02025304_JP -#else - bl StrcpyName -#endif - ldr r0, _02301A10 ; =ov11_02324D48 - mov r2, #0 - ldr r0, [r0] - ldr r1, [r0, #0x250] - ldr r0, [r0, #0x248] - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - bl ApplyLevelUpBoostsToGroundMonster - ldr r0, _02301A10 ; =ov11_02324D48 - mov r1, #0x11 - ldr r0, [r0] - str r1, [r0] - bl ov11_02301A30 - ldmia sp!, {r3, pc} -_0230187C: - mov r0, #1 - str r0, [r2, #0x20] - ldr r2, [r3] - mov r0, #0 - str r0, [sp] - add r0, r2, #0x200 - add r1, r2, #0x6e - ldrsh r0, [r0, #0x4c] - ldr r3, _02301A28 ; =ov11_023226F4 - add r1, r1, #0x100 - add r2, r2, #0x24 - bl sub_02055DD0 - ldr r1, _02301A10 ; =ov11_02324D48 - ldr r2, [r1] - str r0, [r2, #0x248] - ldr r2, [r1] - add r0, r2, #0x200 - ldrsh r1, [r0, #0x4c] - add r0, r2, #0x5a - bl GetNameRaw - ldr r0, _02301A10 ; =ov11_02324D48 - ldr r1, [r0] - add r0, r1, #0x6e - add r0, r0, #0x100 - add r1, r1, #0x5a -#ifdef JAPAN - bl sub_02025304_JP -#else - bl StrcpyName -#endif - ldr r0, _02301A10 ; =ov11_02324D48 - mov r2, #0 - ldr r0, [r0] - ldr r1, [r0, #0x250] - ldr r0, [r0, #0x248] - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - bl ApplyLevelUpBoostsToGroundMonster - ldr r0, _02301A10 ; =ov11_02324D48 - mov r1, #0x11 - ldr r0, [r0] - str r1, [r0] - bl ov11_02301A30 - ldmia sp!, {r3, pc} -_0230191C: - bl ov11_0230D220 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02301A10 ; =ov11_02324D48 - mov r1, #0x12 - ldr r0, [r0] - str r1, [r0] -_02301938: - bl ov11_02310BDC - ldr r0, _02301A10 ; =ov11_02324D48 - mov r2, #0 - ldr r1, [r0] - mov r3, #0x19 - str r2, [r1, #0xc] - ldr r1, [r0] - mov r2, #0x4e - str r3, [r1, #4] - ldr r3, [r0] - add r0, r3, #0x200 - ldrsh r1, [r0, #0x4c] - add r0, r3, #0x6e - bl GetNameWithGender - ldr r0, _02301A10 ; =ov11_02324D48 - ldr r2, _02301A2C ; =0x000003A3 - ldr ip, [r0] - mov r1, #0x18 - add r3, ip, #0x6e - str r3, [ip, #0x1c0] - ldr r3, [r0] - add r0, r3, #0x200 - ldrsb r0, [r0, #0x54] - add r3, r3, #0x188 - bl ShowStringIdInDialogueBox - ldmia sp!, {r3, pc} -_023019A0: - add r0, r2, #0x200 - ldrsb r0, [r0, #0x54] - bl CloseDialogueBox - ldr r1, _02301A10 ; =ov11_02324D48 - mvn r3, #1 - ldr r2, [r1] - mov r0, #2 - strb r3, [r2, #0x254] - ldr r1, [r1] - mov r2, #0 - add r3, r1, #0x6e - add r1, r3, #0x100 - add r3, r3, #0x100 - bl ShowKeyboard - ldmia sp!, {r3, pc} -_023019DC: - add r0, r2, #0x6e - add r1, r2, #0x46 - add r3, r0, #0x100 - mov r0, #2 - mov r2, #0 - bl ShowKeyboard - ldmia sp!, {r3, pc} -_023019F8: - mov r0, #0 - str r0, [r2, #0xc] - ldmia sp!, {r3, pc} -_02301A04: - add r0, r2, #0x26 - bl sub_0203909C - ldmia sp!, {r3, pc} - .align 2, 0 -_02301A10: .word ov11_02324D48 -#ifdef JAPAN -_02301A14: .word 0x00002479 -#else -_02301A14: .word 0x000002A5 -#endif -_02301A18: .word ov11_023226FC -_02301A1C: .word 0x00300011 -_02301A20: .word ov11_0232271C -#ifdef JAPAN -_02301A24: .word 0x00003273 -_02301A28: .word ov11_023226F4 -_02303080: .word 0x00003288 -_02301A2C: .word 0x00003287 -#else -_02301A24: .word 0x0000038F -_02301A28: .word ov11_023226F4 -_02301A2C: .word 0x000003A3 -#endif - arm_func_end ov11_023014AC - - arm_func_start ov11_02301A30 -ov11_02301A30: ; 0x02301A30 - stmdb sp!, {r3, lr} - ldr r0, _02301F8C ; =ov11_02324D48 - ldr r2, [r0] - ldr r1, [r2] - cmp r1, #0x16 - addls pc, pc, r1, lsl #2 - ldmia sp!, {r3, pc} -_02301A4C: ; jump table - b _02301AA8 ; case 0 - b _02301B38 ; case 1 - ldmia sp!, {r3, pc} ; case 2 - b _02301B6C ; case 3 - b _02301B94 ; case 4 - b _02301D30 ; case 5 - b _02301DF8 ; case 6 - b _02301B54 ; case 7 - b _02301C64 ; case 8 - b _02301BFC ; case 9 - b _02301CFC ; case 10 - ldmia sp!, {r3, pc} ; case 11 - ldmia sp!, {r3, pc} ; case 12 - ldmia sp!, {r3, pc} ; case 13 - b _02301BD4 ; case 14 - ldmia sp!, {r3, pc} ; case 15 - ldmia sp!, {r3, pc} ; case 16 - b _02301E98 ; case 17 - b _02301EB4 ; case 18 - b _02301F1C ; case 19 - b _02301F58 ; case 20 - b _02301F74 ; case 21 - b _02301F80 ; case 22 -_02301AA8: - add r0, r2, #0x200 - ldrsb r1, [r0, #0x54] - mvn r0, #1 - cmp r1, r0 - bne _02301AD0 - mov r0, #0 - bl CreateDialogueBox - ldr r1, _02301F8C ; =ov11_02324D48 - ldr r1, [r1] - strb r0, [r1, #0x254] -_02301AD0: - ldr r0, _02301F8C ; =ov11_02324D48 - ldr r2, [r0] - add r0, r2, #0x200 - ldrsh r1, [r0, #0x4c] - cmp r1, #0x214 - bne _02301AF8 - mov r0, #8 - str r0, [r2] - bl ov11_02301A30 - ldmia sp!, {r3, pc} -_02301AF8: - ldrsh r1, [r0, #0x4c] - add r0, r2, #0x6e - mov r2, #0x4e - bl GetNameWithGender - ldr r0, _02301F8C ; =ov11_02324D48 - ldr r2, _02301F90 ; =0x000002A5 - ldr ip, [r0] - mov r1, #8 - add r3, ip, #0x6e - str r3, [ip, #0x1c0] - ldr r3, [r0] - add r0, r3, #0x200 - ldrsb r0, [r0, #0x54] - add r3, r3, #0x188 - bl ShowStringIdInDialogueBox - ldmia sp!, {r3, pc} -_02301B38: - bl ov11_02302618 - ldr r0, _02301F8C ; =ov11_02324D48 - mov r1, #2 - ldr r0, [r0] - str r1, [r0] - bl ov11_02301A30 - ldmia sp!, {r3, pc} -_02301B54: - mov r1, #2 - str r1, [r2, #0x20] - ldr r0, [r0] - str r1, [r0] - bl ov11_02301A30 - ldmia sp!, {r3, pc} -_02301B6C: - ldr r0, _02301F94 ; =ov11_023226FC - mov r2, #0 - ldr r1, _02301F98 ; =0x00300011 - ldr r3, _02301F9C ; =ov11_0232271C - str r2, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _02301F8C ; =ov11_02324D48 - ldr r1, [r1] - strb r0, [r1, #0x255] - ldmia sp!, {r3, pc} -_02301B94: - mov r1, #0xc - str r1, [r2] - ldr r1, [r0] - mov r2, #0xe - str r2, [r1, #4] - ldr ip, [r0] - ldr r2, _02301FA0 ; =0x0000038F - ldrsh r3, [ip, #0x14] - mov r1, #8 - str r3, [ip, #0x19c] - ldr r3, [r0] - add r0, r3, #0x200 - ldrsb r0, [r0, #0x54] - add r3, r3, #0x188 - bl ShowStringIdInDialogueBox - ldmia sp!, {r3, pc} -_02301BD4: - ldr r0, _02301F94 ; =ov11_023226FC - mov r2, #0 - ldr r1, _02301F98 ; =0x00300011 - ldr r3, _02301F9C ; =ov11_0232271C - str r2, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _02301F8C ; =ov11_02324D48 - ldr r1, [r1] - strb r0, [r1, #0x255] - ldmia sp!, {r3, pc} -_02301BFC: - add r0, r2, #0x1d8 - bl ZeroInitMissionRewardDataStruct - ldr r1, _02301F8C ; =ov11_02324D48 - mov ip, #6 - ldr r2, [r1] - ldr r3, _02301FA4 ; =ov11_023226F4 - add r0, r2, #0x200 - ldrsh lr, [r0, #0x4c] - add r0, r2, #0x100 - mov r2, #0 - strh lr, [r0, #0xfc] - ldr r0, [r1] - strb ip, [r0, #0x1da] - ldr ip, [r1] - str r3, [sp] - add r0, ip, #0x200 - ldrsh r1, [r0, #0x4c] - add r0, ip, #0x204 - add r3, ip, #0x24 - bl sub_02052E2C - ldr r0, _02301F8C ; =ov11_02324D48 - mov r1, #0 - ldr r0, [r0] - add r0, r0, #0x204 - bl ov11_023061E4 - ldmia sp!, {r3, pc} -_02301C64: - add r0, r2, #0x200 - ldrsb r0, [r0, #0x54] - bl sub_0202F2C4 - mov r0, #0x214 - mov r1, #0 - bl IsMonsterOnTeam - cmp r0, #0 - beq _02301CAC - ldr r0, _02301F8C ; =ov11_02324D48 - ldr r1, [r0] - add r0, r1, #0x200 - ldrsh r0, [r0, #0x4c] - cmp r0, #0x214 - bne _02301CAC - mov r0, #5 - str r0, [r1] - bl ov11_02301A30 - ldmia sp!, {r3, pc} -_02301CAC: - ldr r0, _02301F8C ; =ov11_02324D48 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x4c] - bl GetFirstEmptyMemberIdx - mvn r1, #0 - cmp r0, r1 - bne _02301CE4 - ldr r0, _02301F8C ; =ov11_02324D48 - mov r1, #9 - ldr r0, [r0] - str r1, [r0] - bl ov11_02301A30 - ldmia sp!, {r3, pc} -_02301CE4: - ldr r0, _02301F8C ; =ov11_02324D48 - mov r1, #6 - ldr r0, [r0] - str r1, [r0] - bl ov11_02301A30 - ldmia sp!, {r3, pc} -_02301CFC: - mov r1, #0xc - str r1, [r2] - ldr r1, [r0] - mov r2, #0 - str r2, [r1, #4] -#ifdef JAPAN - ldr r1, [r0] - ldr r2, _02303600 ; =0x00003288 - add r0, r1, #0x200 - add r3, r1, #0x188 - ldrsb r0, [r0, #0x54] - mov r1, #0x18 -#else - ldr r2, [r0] - mov r1, #0x18 - add r0, r2, #0x200 - add r3, r2, #0x188 - ldrsb r0, [r0, #0x54] - mov r2, #0x3a4 -#endif - bl ShowStringIdInDialogueBox - ldmia sp!, {r3, pc} -_02301D30: - mov r1, #1 - mov r0, #0x214 - str r1, [r2, #0x20] - bl GetFirstMatchingMemberIdx - mvn r1, #0 - cmp r0, r1 - bne _02301D80 - ldr r0, _02301F8C ; =ov11_02324D48 - mov r1, #0 - ldr r2, [r0] - ldr r3, _02301FA4 ; =ov11_023226F4 - str r1, [sp] - add r0, r2, #0x200 - add r1, r2, #0x6e - ldrsh r0, [r0, #0x4c] - add r1, r1, #0x100 - add r2, r2, #0x24 - bl sub_02055DD0 - ldr r1, _02301F8C ; =ov11_02324D48 - b _02301D88 -_02301D80: - bl GetTeamMember - ldr r1, _02301F8C ; =ov11_02324D48 -_02301D88: - ldr r1, [r1] - str r0, [r1, #0x248] - ldr r0, _02301F8C ; =ov11_02324D48 - ldr r2, [r0] - add r0, r2, #0x200 - ldrsh r1, [r0, #0x4c] - add r0, r2, #0x5a - bl GetNameRaw - ldr r0, _02301F8C ; =ov11_02324D48 - ldr r1, [r0] - add r0, r1, #0x6e - add r0, r0, #0x100 - add r1, r1, #0x5a -#ifdef JAPAN - bl sub_02025304_JP -#else - bl StrcpyName -#endif - ldr r0, _02301F8C ; =ov11_02324D48 - mov r2, #0 - ldr r0, [r0] - ldr r1, [r0, #0x250] - ldr r0, [r0, #0x248] - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - bl ApplyLevelUpBoostsToGroundMonster - ldr r0, _02301F8C ; =ov11_02324D48 - mov r1, #0x11 - ldr r0, [r0] - str r1, [r0] - bl ov11_02301A30 - ldmia sp!, {r3, pc} -_02301DF8: - mov r1, #1 - str r1, [r2, #0x20] - ldr r2, [r0] - mov r0, #0 - str r0, [sp] - add r0, r2, #0x200 - add r1, r2, #0x6e - ldrsh r0, [r0, #0x4c] - ldr r3, _02301FA4 ; =ov11_023226F4 - add r1, r1, #0x100 - add r2, r2, #0x24 - bl sub_02055DD0 - ldr r1, _02301F8C ; =ov11_02324D48 - ldr r2, [r1] - str r0, [r2, #0x248] - ldr r2, [r1] - add r0, r2, #0x200 - ldrsh r1, [r0, #0x4c] - add r0, r2, #0x5a - bl GetNameRaw - ldr r0, _02301F8C ; =ov11_02324D48 - ldr r1, [r0] - add r0, r1, #0x6e - add r0, r0, #0x100 - add r1, r1, #0x5a -#ifdef JAPAN - bl sub_02025304_JP -#else - bl StrcpyName -#endif - ldr r0, _02301F8C ; =ov11_02324D48 - mov r2, #0 - ldr r0, [r0] - ldr r1, [r0, #0x250] - ldr r0, [r0, #0x248] - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - bl ApplyLevelUpBoostsToGroundMonster - ldr r0, _02301F8C ; =ov11_02324D48 - mov r1, #0x11 - ldr r0, [r0] - str r1, [r0] - bl ov11_02301A30 - ldmia sp!, {r3, pc} -_02301E98: - bl ov11_0230D220 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02301F8C ; =ov11_02324D48 - mov r1, #0x12 - ldr r0, [r0] - str r1, [r0] -_02301EB4: - bl ov11_02310BDC - ldr r0, _02301F8C ; =ov11_02324D48 - mov r2, #0 - ldr r1, [r0] - mov r3, #0x19 - str r2, [r1, #0xc] - ldr r1, [r0] - mov r2, #0x4e - str r3, [r1, #4] - ldr r3, [r0] - add r0, r3, #0x200 - ldrsh r1, [r0, #0x4c] - add r0, r3, #0x6e - bl GetNameWithGender - ldr r0, _02301F8C ; =ov11_02324D48 - ldr r2, _02301FA8 ; =0x000003A3 - ldr ip, [r0] - mov r1, #0x18 - add r3, ip, #0x6e - str r3, [ip, #0x1c0] - ldr r3, [r0] - add r0, r3, #0x200 - ldrsb r0, [r0, #0x54] - add r3, r3, #0x188 - bl ShowStringIdInDialogueBox - ldmia sp!, {r3, pc} -_02301F1C: - add r0, r2, #0x200 - ldrsb r0, [r0, #0x54] - bl CloseDialogueBox - ldr r1, _02301F8C ; =ov11_02324D48 - mvn r3, #1 - ldr r2, [r1] - mov r0, #2 - strb r3, [r2, #0x254] - ldr r1, [r1] - mov r2, #0 - add r3, r1, #0x6e - add r1, r3, #0x100 - add r3, r3, #0x100 - bl ShowKeyboard - ldmia sp!, {r3, pc} -_02301F58: - add r0, r2, #0x6e - add r1, r2, #0x46 - add r3, r0, #0x100 - mov r0, #2 - mov r2, #0 - bl ShowKeyboard - ldmia sp!, {r3, pc} -_02301F74: - mov r0, #0 - str r0, [r2, #0xc] - ldmia sp!, {r3, pc} -_02301F80: - add r0, r2, #0x26 - bl sub_0203909C - ldmia sp!, {r3, pc} - .align 2, 0 -_02301F8C: .word ov11_02324D48 -#ifdef JAPAN -_02301F90: .word 0x00002479 -#else -_02301F90: .word 0x000002A5 -#endif -_02301F94: .word ov11_023226FC -_02301F98: .word 0x00300011 -_02301F9C: .word ov11_0232271C -#ifdef JAPAN -_02301FA0: .word 0x00003273 -_02301FA4: .word ov11_023226F4 -_02303600: .word 0x00003288 -_02301FA8: .word 0x00003287 -#else -_02301FA0: .word 0x0000038F -_02301FA4: .word ov11_023226F4 -_02301FA8: .word 0x000003A3 -#endif - arm_func_end ov11_02301A30 - - arm_func_start ov11_02301FAC -ov11_02301FAC: ; 0x02301FAC - stmdb sp!, {r3, lr} - bl ov11_0230D220 - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02302000 ; =ov11_02324D48 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsb r0, [r0, #0x54] - bl IsDialogueBoxActive - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _02302000 ; =ov11_02324D48 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsb r0, [r0, #0x54] - bl ShowDialogueBox - ldr r0, _02302000 ; =ov11_02324D48 - ldr r0, [r0] - ldr r0, [r0, #4] - bl ov11_023014AC - ldmia sp!, {r3, pc} - .align 2, 0 -_02302000: .word ov11_02324D48 - arm_func_end ov11_02301FAC - - arm_func_start ov11_02302004 -ov11_02302004: ; 0x02302004 - stmdb sp!, {r3, lr} - ldr r0, _0230202C ; =ov11_02324D48 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _0230202C ; =ov11_02324D48 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230202C: .word ov11_02324D48 - arm_func_end ov11_02302004 - - arm_func_start ov11_02302030 -ov11_02302030: ; 0x02302030 - stmdb sp!, {r4, lr} - ldr r1, _023025E4 ; =ov11_02324D48 - ldr r0, [r1] - ldr r2, [r0, #0x184] - cmp r2, #3 - addls pc, pc, r2, lsl #2 - b _023025DC -_0230204C: ; jump table - b _0230205C ; case 0 - b _02302068 ; case 1 - b _023025A4 ; case 2 - b _023025CC ; case 3 -_0230205C: - mov r1, #1 - str r1, [r0, #0x184] - b _023025DC -_02302068: - ldr r2, [r0] - cmp r2, #0x19 - addls pc, pc, r2, lsl #2 - b _02302550 -_02302078: ; jump table - b _023020E0 ; case 0 - b _02302550 ; case 1 - b _023022D4 ; case 2 - b _02302114 ; case 3 - b _0230228C ; case 4 - b _02302550 ; case 5 - b _02302550 ; case 6 - b _02302550 ; case 7 - b _02302550 ; case 8 - b _023021A4 ; case 9 - b _02302550 ; case 10 - b _023022E0 ; case 11 - b _02302550 ; case 12 - b _02302550 ; case 13 - b _0230228C ; case 14 - b _02302480 ; case 15 - b _023024C4 ; case 16 - b _023024EC ; case 17 - b _02302504 ; case 18 - b _0230232C ; case 19 - b _0230232C ; case 20 - b _02302390 ; case 21 - b _023023B8 ; case 22 - b _02302460 ; case 23 - b _02302378 ; case 24 - b _0230250C ; case 25 -_023020E0: - add r0, r0, #0x200 - ldrsb r0, [r0, #0x54] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02302554 - mov r0, #3 - bl ov11_023014AC - ldr r0, _023025E4 ; =ov11_02324D48 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsb r0, [r0, #0x54] - bl ShowDialogueBox - b _02302554 -_02302114: - add r0, r0, #0x200 - ldrsb r0, [r0, #0x55] - bl GetSimpleMenuResult__0202B870 - cmp r0, #1 - beq _02302170 - cmp r0, #4 - beq _0230213C - cmp r0, #5 - beq _02302170 - b _02302554 -_0230213C: - ldr r0, _023025E4 ; =ov11_02324D48 - mov r1, #8 - ldr r0, [r0] - str r1, [r0, #4] - bl ov11_02302618 - ldr r0, _023025E4 ; =ov11_02324D48 - mov r3, #0 - ldr r2, [r0] - mov r1, #0xf - str r3, [r2, #0xc] - ldr r0, [r0] - str r1, [r0] - b _02302554 -_02302170: - bl ov11_02302618 - ldr r0, _023025E4 ; =ov11_02324D48 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x4c] - cmp r0, #0x214 - bne _02302198 - mov r0, #0xa - bl ov11_023014AC - b _02302554 -_02302198: - mov r0, #7 - bl ov11_023014AC - b _02302554 -_023021A4: - bl ov11_02306C9C - cmp r0, #3 - beq _023021D4 - cmp r0, #4 - bne _02302554 - bl ov11_02306C64 - ldr r1, _023025E4 ; =ov11_02324D48 - ldr r1, [r1] - str r0, [r1, #0x248] - mov r0, #7 - bl ov11_023014AC - b _02302554 -_023021D4: - bl ov11_02306C64 - ldr r1, _023025E4 ; =ov11_02324D48 - ldr r2, [r1] - str r0, [r2, #0x248] - ldr r2, [r1] - ldr r0, [r2, #0x248] - cmp r0, #0 - bne _0230221C - add r0, r2, #0x200 - ldrsh r0, [r0, #0x4c] - cmp r0, #0x214 - bne _02302210 - mov r0, #0xa - bl ov11_023014AC - b _02302554 -_02302210: - mov r0, #7 - bl ov11_023014AC - b _02302554 -_0230221C: - mov r0, #1 - str r0, [r2, #0x20] - ldr r2, [r1] - add r0, r2, #0x200 - ldrsh r1, [r0, #0x4c] - add r0, r2, #0x5a - bl GetNameRaw - ldr r0, _023025E4 ; =ov11_02324D48 - ldr r1, [r0] - add r0, r1, #0x6e - add r0, r0, #0x100 - add r1, r1, #0x5a -#ifdef JAPAN - bl sub_02025304_JP -#else - bl StrcpyName -#endif - ldr r0, _023025E4 ; =ov11_02324D48 - mov r2, #0 - ldr r0, [r0] - ldr r1, [r0, #0x250] - ldr r0, [r0, #0x248] - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - bl ApplyLevelUpBoostsToGroundMonster - ldr r0, _023025E4 ; =ov11_02324D48 - mov r2, #0 - ldr r1, [r0] - mov r0, #0x10 - str r2, [r1, #0xc] - bl ov11_023014AC - b _02302554 -_0230228C: - add r0, r0, #0x200 - ldrsb r0, [r0, #0x55] - bl GetSimpleMenuResult__0202B870 - cmp r0, #1 - beq _023022C4 - cmp r0, #4 - beq _023022B4 - cmp r0, #5 - beq _023022C4 - b _02302554 -_023022B4: - bl ov11_02302618 - mov r0, #8 - bl ov11_023014AC - b _02302554 -_023022C4: - bl ov11_02302618 - mov r0, #7 - bl ov11_023014AC - b _02302554 -_023022D4: - bl ov11_0230D71C - mov r0, #3 - b _02302558 -_023022E0: - add r0, r0, #0x200 - ldrsb r0, [r0, #0x54] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02302554 - ldr r0, _023025E4 ; =ov11_02324D48 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsb r0, [r0, #0x54] - bl ShowDialogueBox - ldr r0, _023025E4 ; =ov11_02324D48 - mov r2, #0x1a - ldr r1, [r0] - str r2, [r1] - ldr r0, [r0] - add r0, r0, #0x200 - ldrsb r0, [r0, #0x54] - bl sub_0202F2C4 - b _02302554 -_0230232C: - bl GetKeyboardStatus - cmp r0, #3 - bne _02302554 - bl GetKeyboardStringResult - ldr r1, _023025E4 ; =ov11_02324D48 - mov r4, r0 - ldr r0, [r1] - mov r1, r4 - add r0, r0, #0x26 - mov r2, #0x10 - bl StrncpySimpleNoPadSafe - ldr r0, _023025E4 ; =ov11_02324D48 - mov r1, r4 - ldr r0, [r0] - add r0, r0, #0x46 - bl StrcpySimple - mov r0, #0x18 - bl ov11_023014AC - b _02302554 -_02302378: - bl sub_02037468 - cmp r0, #0 - beq _02302554 - mov r0, #0x15 - bl ov11_023014AC - b _02302554 -_02302390: - ldr r2, [r0, #0xc] - add r2, r2, #1 - str r2, [r0, #0xc] - ldr r0, [r1] - ldr r0, [r0, #0xc] - cmp r0, #0xa - ble _02302554 - mov r0, #0x16 - bl ov11_023014AC - b _02302554 -_023023B8: - bl sub_0203931C - cmp r0, #0 - bne _0230243C - ldr r0, _023025E4 ; =ov11_02324D48 - mov r2, #1 - ldr r1, [r0] - str r2, [r1, #8] - ldr r1, [r0] - add r0, r1, #0x6e - add r0, r0, #0x100 - add r1, r1, #0x46 - bl StrcpySimple - ldr r0, _023025E4 ; =ov11_02324D48 - mov r2, #0xa - ldr r1, [r0] - ldr r0, [r1, #0x248] - add r1, r1, #0x6e - add r0, r0, #0x3a - add r1, r1, #0x100 - bl StrncpySimple - ldr r0, _023025E4 ; =ov11_02324D48 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x4c] - bl SetNewFriendActor - ldr r0, _023025E4 ; =ov11_02324D48 - mov r1, #0xf - ldr r0, [r0] - add r0, r0, #0x46 - bl sub_02065C08 - mov r0, #0x17 - bl ov11_023014AC - b _02302554 -_0230243C: - cmp r0, #1 - bne _02302554 - ldr r0, _023025E4 ; =ov11_02324D48 - mov r2, #0x14 - ldr r1, [r0] - mov r0, #0x17 - str r2, [r1, #8] - bl ov11_023014AC - b _02302554 -_02302460: - bl sub_02039218 - cmp r0, #0 - beq _02302554 - ldr r0, _023025E4 ; =ov11_02324D48 - ldr r0, [r0] - ldr r0, [r0, #8] - bl ov11_023014AC - b _02302554 -_02302480: - ldr r2, [r0, #0xc] - add r2, r2, #1 - str r2, [r0, #0xc] - ldr r1, [r1] - ldr r0, [r1, #0xc] - cmp r0, #1 - cmpne r0, #2 - beq _02302554 - cmp r0, #3 - bne _02302554 - ldr r0, [r1, #4] - bl ov11_023014AC - ldr r0, _023025E4 ; =ov11_02324D48 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0xc] - b _02302554 -_023024C4: - ldr r2, [r0, #0xc] - add r2, r2, #1 - str r2, [r0, #0xc] - ldr r0, [r1] - ldr r0, [r0, #0xc] - cmp r0, #0xa - ble _02302554 - mov r0, #0x11 - bl ov11_023014AC - b _02302554 -_023024EC: - bl ov11_0230D220 - cmp r0, #0 - bne _02302554 - mov r0, #0x12 - bl ov11_023014AC - b _02302554 -_02302504: - bl ov11_02301FAC - b _02302554 -_0230250C: - ldr r2, [r0, #0xc] - add r2, r2, #1 - str r2, [r0, #0xc] - ldr r1, [r1] - ldr r0, [r1, #0xc] - cmp r0, #1 - beq _02302534 - cmp r0, #0xa - beq _02302544 - b _02302554 -_02302534: - add r0, r1, #0x200 - ldrsb r0, [r0, #0x54] - bl sub_0202F2C4 - b _02302554 -_02302544: - mov r0, #0x13 - bl ov11_023014AC - b _02302554 -_02302550: - bl ov11_02301FAC -_02302554: - mov r0, #0 -_02302558: - cmp r0, #3 - bne _023025DC - ldr r0, _023025E4 ; =ov11_02324D48 - mov r3, #2 - ldr r2, [r0] - sub r1, r3, #4 - str r3, [r2, #0x184] - ldr r0, [r0] - add r0, r0, #0x200 - ldrsb r0, [r0, #0x54] - cmp r0, r1 - beq _023025DC - bl sub_0202836C - ldr r0, _023025E4 ; =ov11_02324D48 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsb r0, [r0, #0x54] - bl sub_0202F2C4 - b _023025DC -_023025A4: - mov r2, #3 - str r2, [r0, #0x184] - ldr r0, [r1] - sub r1, r2, #5 - add r0, r0, #0x200 - ldrsb r0, [r0, #0x54] - cmp r0, r1 - beq _023025DC - bl CloseDialogueBox - b _023025DC -_023025CC: - ldr r0, [r0, #0x20] - bl ReturnScriptMenuResult - mov r0, #4 - ldmia sp!, {r4, pc} -_023025DC: - mov r0, #1 - ldmia sp!, {r4, pc} - .align 2, 0 -_023025E4: .word ov11_02324D48 - arm_func_end ov11_02302030 - - arm_func_start ov11_023025E8 -ov11_023025E8: ; 0x023025E8 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, _02302614 ; =ov11_0232270C - mov r4, r1 - bl InitMenu - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - mov r1, r4 - bl ov11_023013DC - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02302614: .word ov11_0232270C - arm_func_end ov11_023025E8 - - arm_func_start ov11_02302618 -ov11_02302618: ; 0x02302618 - stmdb sp!, {r3, lr} - ldr r0, _02302664 ; =ov11_02324D48 - mvn r1, #1 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsb r0, [r0, #0x55] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl sub_0202836C - ldr r0, _02302664 ; =ov11_02324D48 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsb r0, [r0, #0x55] - bl CloseSimpleMenu - ldr r0, _02302664 ; =ov11_02324D48 - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x255] - ldmia sp!, {r3, pc} - .align 2, 0 -_02302664: .word ov11_02324D48 - arm_func_end ov11_02302618 - - arm_func_start ov11_02302668 -ov11_02302668: ; 0x02302668 - stmdb sp!, {r3, lr} - ldr r0, _02302844 ; =ov11_02324D4C - ldr r2, [r0] - ldr r1, [r2] - cmp r1, #0xc - addls pc, pc, r1, lsl #2 - b _023027D0 -_02302684: ; jump table - b _023027D0 ; case 0 - b _02302744 ; case 1 - b _0230283C ; case 2 - b _023027D0 ; case 3 - b _023027D0 ; case 4 - b _023027D0 ; case 5 - b _023027D0 ; case 6 - b _023026B8 ; case 7 - b _0230274C ; case 8 - b _023027D0 ; case 9 - b _023027D0 ; case 10 - b _023027D0 ; case 11 - b _0230278C ; case 12 -_023026B8: - bl ov11_02305B98 - cmp r0, #1 - beq _0230283C - ldr r0, _02302844 ; =ov11_02324D4C - ldr r0, [r0] - add r0, r0, #0xfe - bl ov11_02305B40 - cmp r0, #3 - beq _023026E8 - cmp r0, #5 - beq _0230271C - b _0230283C -_023026E8: - ldr r1, _02302844 ; =ov11_02324D4C - mov r3, #1 - ldr r0, [r1] - ldr r2, _02302848 ; =0x00000276 - str r3, [r0, #0x20] - ldr ip, [r1] - mov r0, #4 - ldrsh r3, [ip, #0xfe] - str r3, [ip, #0x44] - ldr r1, [r1] - str r2, [r1, #0xf8] - bl ov11_02302850 - b _0230283C -_0230271C: - ldr r0, _02302844 ; =ov11_02324D4C - mov r3, #2 - ldr r1, [r0] - ldr r2, _0230284C ; =0x00000287 - str r3, [r1, #0x20] - ldr r1, [r0] - mov r0, #0 - str r2, [r1, #0xf8] - bl ov11_02302850 - b _0230283C -_02302744: - mov r0, #3 - ldmia sp!, {r3, pc} -_0230274C: - ldrsb r0, [r2, #0xfc] - bl IsDialogueBoxActive - cmp r0, #0 - bne _0230283C - ldr r0, _02302844 ; =ov11_02324D4C - ldr r0, [r0] - ldrsb r0, [r0, #0xfc] - bl ShowDialogueBox - ldr r0, _02302844 ; =ov11_02324D4C - mov r2, #0xd - ldr r1, [r0] - str r2, [r1] - ldr r0, [r0] - ldrsb r0, [r0, #0xfc] - bl sub_0202F2C4 - b _0230283C -_0230278C: - ldr r1, [r2, #0xc] - add r1, r1, #1 - str r1, [r2, #0xc] - ldr r1, [r0] - ldr r0, [r1, #0xc] - cmp r0, #1 - cmpne r0, #2 - beq _0230283C - cmp r0, #3 - bne _0230283C - ldr r0, [r1, #4] - bl ov11_02302850 - ldr r0, _02302844 ; =ov11_02324D4C - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0xc] - b _0230283C -_023027D0: - ldrsb r0, [r2, #0xfc] - bl IsDialogueBoxActive - cmp r0, #0 - bne _0230283C - ldr r0, _02302844 ; =ov11_02324D4C - ldr r0, [r0] - ldrsb r0, [r0, #0xfc] - bl ShowDialogueBox - ldr r0, _02302844 ; =ov11_02324D4C - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #0xfc] - cmp r0, r1 - beq _0230282C - bl sub_0202F2C4 - ldr r0, _02302844 ; =ov11_02324D4C - ldr r0, [r0] - ldrsb r0, [r0, #0xfc] - bl CloseDialogueBox - ldr r0, _02302844 ; =ov11_02324D4C - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #0xfc] -_0230282C: - ldr r0, _02302844 ; =ov11_02324D4C - ldr r0, [r0] - ldr r0, [r0, #4] - bl ov11_02302850 -_0230283C: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02302844: .word ov11_02324D4C -#ifdef JAPAN -_02302848: .word 0x0000244A -_0230284C: .word 0x0000245B -#else -_02302848: .word 0x00000276 -_0230284C: .word 0x00000287 -#endif - arm_func_end ov11_02302668 - - arm_func_start ov11_02302850 -ov11_02302850: ; 0x02302850 - stmdb sp!, {lr} - sub sp, sp, #0x14 - ldr r1, _02302A44 ; =ov11_02324D4C - ldr r2, [r1] - str r0, [r2] - ldr ip, [r1] - ldr r0, [ip] - cmp r0, #0xb - addls pc, pc, r0, lsl #2 - b _02302A3C -_02302878: ; jump table - b _023028A8 ; case 0 - b _02302A3C ; case 1 - b _02302A3C ; case 2 - b _02302A3C ; case 3 - b _02302998 ; case 4 - b _023028B4 ; case 5 - b _023028EC ; case 6 - b _023028C0 ; case 7 - b _02302A3C ; case 8 - b _02302A3C ; case 9 - b _02302A3C ; case 10 - b _02302A3C ; case 11 -_023028A8: - mov r0, #1 - str r0, [ip] - b _02302A3C -_023028B4: - mov r0, #1 - str r0, [ip, #4] - b _02302A3C -_023028C0: - ldr r0, [ip, #0xf4] - ldrsh r1, [ip, #0xf0] - mov r2, r0, lsl #0x10 - add r0, sp, #0 - mov r2, r2, asr #0x10 - mov r3, #0 - bl sub_0200CF6C - add r0, sp, #0 - mov r1, #0 - bl ov11_02304CAC - b _02302A3C -_023028EC: - mov r2, #7 - str r2, [ip] - ldr r1, [r1] - ldr r0, [r1] - cmp r0, #0xb - addls pc, pc, r0, lsl #2 - b _02302A3C -_02302908: ; jump table - b _02302938 ; case 0 - b _02302A3C ; case 1 - b _02302A3C ; case 2 - b _02302A3C ; case 3 - b _02302988 ; case 4 - b _02302944 ; case 5 - b _0230297C ; case 6 - b _02302950 ; case 7 - b _02302A3C ; case 8 - b _02302A3C ; case 9 - b _02302A3C ; case 10 - b _02302A3C ; case 11 -_02302938: - mov r0, #1 - str r0, [r1] - b _02302A3C -_02302944: - mov r0, #1 - str r0, [r1, #4] - b _02302A3C -_02302950: - ldr r0, [r1, #0xf4] - ldrsh r1, [r1, #0xf0] - mov r2, r0, lsl #0x10 - add r0, sp, #6 - mov r2, r2, asr #0x10 - mov r3, #0 - bl sub_0200CF6C - add r0, sp, #6 - mov r1, #0 - bl ov11_02304CAC - b _02302A3C -_0230297C: - str r2, [r1] - bl ov11_02302A48 - b _02302A3C -_02302988: - mov r0, #0 - str r0, [r1] - bl ov11_02302A48 - b _02302A3C -_02302998: - mov r3, #0 - str r3, [ip] - ldr r1, [r1] - ldr r0, [r1] - cmp r0, #0xb - addls pc, pc, r0, lsl #2 - b _02302A3C -_023029B4: ; jump table - b _023029E4 ; case 0 - b _02302A3C ; case 1 - b _02302A3C ; case 2 - b _02302A3C ; case 3 - b _02302A34 ; case 4 - b _023029F0 ; case 5 - b _02302A24 ; case 6 - b _023029FC ; case 7 - b _02302A3C ; case 8 - b _02302A3C ; case 9 - b _02302A3C ; case 10 - b _02302A3C ; case 11 -_023029E4: - mov r0, #1 - str r0, [r1] - b _02302A3C -_023029F0: - mov r0, #1 - str r0, [r1, #4] - b _02302A3C -_023029FC: - ldr r0, [r1, #0xf4] - ldrsh r1, [r1, #0xf0] - mov r2, r0, lsl #0x10 - add r0, sp, #0xc - mov r2, r2, asr #0x10 - bl sub_0200CF6C - add r0, sp, #0xc - mov r1, #0 - bl ov11_02304CAC - b _02302A3C -_02302A24: - mov r0, #7 - str r0, [r1] - bl ov11_02302A48 - b _02302A3C -_02302A34: - str r3, [r1] - bl ov11_02302A48 -_02302A3C: - add sp, sp, #0x14 - ldmia sp!, {pc} - .align 2, 0 -_02302A44: .word ov11_02324D4C - arm_func_end ov11_02302850 - - arm_func_start ov11_02302A48 -ov11_02302A48: ; 0x02302A48 - stmdb sp!, {lr} - sub sp, sp, #0x14 - ldr r0, _02302C34 ; =ov11_02324D4C - ldr ip, [r0] - ldr r1, [ip] - cmp r1, #0xb - addls pc, pc, r1, lsl #2 - b _02302C2C -_02302A68: ; jump table - b _02302A98 ; case 0 - b _02302C2C ; case 1 - b _02302C2C ; case 2 - b _02302C2C ; case 3 - b _02302B88 ; case 4 - b _02302AA4 ; case 5 - b _02302ADC ; case 6 - b _02302AB0 ; case 7 - b _02302C2C ; case 8 - b _02302C2C ; case 9 - b _02302C2C ; case 10 - b _02302C2C ; case 11 -_02302A98: - mov r0, #1 - str r0, [ip] - b _02302C2C -_02302AA4: - mov r0, #1 - str r0, [ip, #4] - b _02302C2C -_02302AB0: - ldr r0, [ip, #0xf4] - ldrsh r1, [ip, #0xf0] - mov r2, r0, lsl #0x10 - add r0, sp, #0xc - mov r2, r2, asr #0x10 - mov r3, #0 - bl sub_0200CF6C - add r0, sp, #0xc - mov r1, #0 - bl ov11_02304CAC - b _02302C2C -_02302ADC: - mov r2, #7 - str r2, [ip] - ldr r1, [r0] - ldr r0, [r1] - cmp r0, #0xb - addls pc, pc, r0, lsl #2 - b _02302C2C -_02302AF8: ; jump table - b _02302B28 ; case 0 - b _02302C2C ; case 1 - b _02302C2C ; case 2 - b _02302C2C ; case 3 - b _02302B78 ; case 4 - b _02302B34 ; case 5 - b _02302B6C ; case 6 - b _02302B40 ; case 7 - b _02302C2C ; case 8 - b _02302C2C ; case 9 - b _02302C2C ; case 10 - b _02302C2C ; case 11 -_02302B28: - mov r0, #1 - str r0, [r1] - b _02302C2C -_02302B34: - mov r0, #1 - str r0, [r1, #4] - b _02302C2C -_02302B40: - ldr r0, [r1, #0xf4] - ldrsh r1, [r1, #0xf0] - mov r2, r0, lsl #0x10 - add r0, sp, #6 - mov r2, r2, asr #0x10 - mov r3, #0 - bl sub_0200CF6C - add r0, sp, #6 - mov r1, #0 - bl ov11_02304CAC - b _02302C2C -_02302B6C: - str r2, [r1] - bl ov11_02302A48 - b _02302C2C -_02302B78: - mov r0, #0 - str r0, [r1] - bl ov11_02302A48 - b _02302C2C -_02302B88: - mov r3, #0 - str r3, [ip] - ldr r1, [r0] - ldr r0, [r1] - cmp r0, #0xb - addls pc, pc, r0, lsl #2 - b _02302C2C -_02302BA4: ; jump table - b _02302BD4 ; case 0 - b _02302C2C ; case 1 - b _02302C2C ; case 2 - b _02302C2C ; case 3 - b _02302C24 ; case 4 - b _02302BE0 ; case 5 - b _02302C14 ; case 6 - b _02302BEC ; case 7 - b _02302C2C ; case 8 - b _02302C2C ; case 9 - b _02302C2C ; case 10 - b _02302C2C ; case 11 -_02302BD4: - mov r0, #1 - str r0, [r1] - b _02302C2C -_02302BE0: - mov r0, #1 - str r0, [r1, #4] - b _02302C2C -_02302BEC: - ldr r0, [r1, #0xf4] - ldrsh r1, [r1, #0xf0] - mov r2, r0, lsl #0x10 - add r0, sp, #0 - mov r2, r2, asr #0x10 - bl sub_0200CF6C - add r0, sp, #0 - mov r1, #0 - bl ov11_02304CAC - b _02302C2C -_02302C14: - mov r0, #7 - str r0, [r1] - bl ov11_02302A48 - b _02302C2C -_02302C24: - str r3, [r1] - bl ov11_02302A48 -_02302C2C: - add sp, sp, #0x14 - ldmia sp!, {pc} - .align 2, 0 -_02302C34: .word ov11_02324D4C - arm_func_end ov11_02302A48 - - arm_func_start ov11_02302C38 -ov11_02302C38: ; 0x02302C38 - stmdb sp!, {r3, lr} - ldr r0, _02302C60 ; =ov11_02324D4C - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _02302C60 ; =ov11_02324D4C - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02302C60: .word ov11_02324D4C - arm_func_end ov11_02302C38 - - arm_func_start ov11_02302C64 -ov11_02302C64: ; 0x02302C64 - stmdb sp!, {r3, lr} - ldr r0, _02302CDC ; =ov11_02324D4C - ldr r1, [r0] - ldr r0, [r1, #0x28] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _02302CD4 -_02302C80: ; jump table - b _02302C90 ; case 0 - b _02302C9C ; case 1 - b _02302CB8 ; case 2 - b _02302CC4 ; case 3 -_02302C90: - mov r0, #1 - str r0, [r1, #0x28] - b _02302CD4 -_02302C9C: - bl ov11_02302668 - cmp r0, #3 - ldreq r0, _02302CDC ; =ov11_02324D4C - moveq r1, #2 - ldreq r0, [r0] - streq r1, [r0, #0x28] - b _02302CD4 -_02302CB8: - mov r0, #3 - str r0, [r1, #0x28] - b _02302CD4 -_02302CC4: - ldr r0, [r1, #0x20] - bl ReturnScriptMenuResult - mov r0, #4 - ldmia sp!, {r3, pc} -_02302CD4: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02302CDC: .word ov11_02324D4C - arm_func_end ov11_02302C64 - - arm_func_start ov11_02302CE0 -ov11_02302CE0: ; 0x02302CE0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, _02302D84 ; =ov11_02322740 - mov r4, r1 - bl InitMenu - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, #0x104 - mov r1, #6 - bl MemAlloc - ldr r2, _02302D88 ; =ov11_02324D4C - mov r1, #0 - str r0, [r2] - str r1, [r0, #0x1c] - ldr r0, [r2] - sub r3, r1, #2 - str r1, [r0, #0x28] - ldr r0, [r2] - str r1, [r0, #0xc] - ldrsh ip, [r5, #4] - ldr r0, [r2] - strh ip, [r0, #0xf0] - ldrh ip, [r5, #2] - ldr r0, [r2] - str ip, [r0, #0xf4] - ldr r0, [r2] - strb r4, [r0, #0x100] - ldr r0, [r2] - strh r1, [r0, #0xfe] - ldr r0, [r2] - strb r3, [r0, #0xfc] - ldr r0, [r2] - add r0, r0, #0x2c - bl InitPreprocessorArgs - ldr r0, _02302D88 ; =ov11_02324D4C - ldrsh r2, [r5, #4] - ldr r1, [r0] - mov r0, #7 - str r2, [r1, #0x3c] - bl ov11_02302850 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02302D84: .word ov11_02322740 -_02302D88: .word ov11_02324D4C - arm_func_end ov11_02302CE0 - - arm_func_start ov11_02302D8C -ov11_02302D8C: ; 0x02302D8C - stmdb sp!, {r3, lr} - ldr r0, _02302DB4 ; =ov11_02324D4C - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _02302DB4 ; =ov11_02324D4C - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02302DB4: .word ov11_02324D4C - arm_func_end ov11_02302D8C - - arm_func_start ov11_02302DB8 -ov11_02302DB8: ; 0x02302DB8 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr sb, _023031E4 ; =ov11_02324D4C -#ifdef JAPAN - ldr r1, [sb, #4] - ldr r0, [r1] -#else - ldr r3, [sb, #4] - ldr r0, [r3] -#endif - cmp r0, #0xd - addls pc, pc, r0, lsl #2 - b _023031DC -_02302DD4: ; jump table - b _02302E0C ; case 0 - b _02302E4C ; case 1 - b _02302E74 ; case 2 - b _02302EA8 ; case 3 - b _02302F4C ; case 4 - b _02302FF4 ; case 5 - b _0230301C ; case 6 - b _02303050 ; case 7 - b _02303088 ; case 8 - b _023030F4 ; case 9 - b _0230311C ; case 10 - b _0230313C ; case 11 - b _023031A4 ; case 12 - b _023031C0 ; case 13 -_02302E0C: -#ifdef JAPAN - add r0, r1, #0x3c - str r0, [r1, #0x174] -#else - add r0, r3, #0x3c - str r0, [r3, #0x174] -#endif - ldr r1, [sb, #4] - mvn r0, #1 - ldrsb r1, [r1, #9] - cmp r1, r0 - bne _023031DC - mov r0, #0 - bl CreateDialogueBox - mov r1, sb - ldr r3, [r1, #4] - mov r2, #1 - strb r0, [r3, #9] - ldr r0, [r1, #4] - str r2, [r0] - b _023031DC -_02302E4C: -#ifdef JAPAN - ldrsb r0, [r1, #9] -#else - ldrsb r0, [r3, #9] -#endif - ldr r2, _023031E8 ; =0x000002C5 - mov r1, #0x10 - mov r3, #0 - bl ShowStringIdInDialogueBox - mov r0, sb - ldr r0, [r0, #4] - mov r1, #2 - str r1, [r0] - b _023031DC -_02302E74: -#ifdef JAPAN - ldrsb r0, [r1, #9] -#else - ldrsb r0, [r3, #9] -#endif - bl IsDialogueBoxActive - cmp r0, #0 - bne _023031DC - mov r0, sb - ldr r0, [r0, #4] - ldrsb r0, [r0, #9] - bl ShowDialogueBox - mov r0, sb - ldr r0, [r0, #4] - mov r1, #3 - str r1, [r0] - b _023031DC -_02302EA8: -#ifdef JAPAN - add r0, r1, #0x3c - mov r7, #0 - ldr r5, _023031EC ; =ov11_02322780 - str r0, [r1, #0x174] -#else - add r0, r3, #0x3c - mov r7, #0 - ldr r5, _023031EC ; =ov11_02322780 - str r0, [r3, #0x174] -#endif - mov r6, #0x100 - mov r4, r7 -_02302EC0: - ldr r3, [sb, #4] - mov r0, r7, lsl #3 - add r1, r3, #0x13c - str r1, [sp] - ldrh r2, [r5, r0] - add r8, r7, r7, lsl #6 - add r0, r3, #0x18c - mov r1, r6 - mov r3, r4 - add r0, r0, r8, lsl #2 - bl PreprocessStringFromId - add r1, r5, r7, lsl #3 - ldr r0, [sb, #4] - add r7, r7, #1 - ldr r1, [r1, #4] - add r0, r0, r8, lsl #2 - str r1, [r0, #0x28c] - cmp r7, #3 - blt _02302EC0 - mov r1, #3 - ldr r0, _023031E4 ; =ov11_02324D4C - str r1, [sp] - ldr r2, [r0, #4] - ldr r0, _023031F0 ; =ov11_02322750 - ldr r1, _023031F4 ; =0x00300011 - add r3, r2, #0x18c - mov r2, #0 - bl CreateSimpleMenu - ldr r1, _023031E4 ; =ov11_02324D4C - mov r2, #4 - ldr r3, [r1, #4] - strb r0, [r3, #0xa] - ldr r0, [r1, #4] - str r2, [r0] - b _023031DC -_02302F4C: -#ifdef JAPAN - ldrsb r0, [r1, #0xa] -#else - ldrsb r0, [r3, #0xa] -#endif - bl IsSimpleMenuActive - cmp r0, #0 - bne _023031DC - mov r0, sb - ldr r0, [r0, #4] - ldrsb r0, [r0, #0xa] - bl GetSimpleMenuResult__0202B870 - mov r1, sb - ldr r2, [r1, #4] - str r0, [r2, #4] - ldr r0, [r1, #4] - ldrsb r0, [r0, #0xa] - bl CloseSimpleMenu - mov r0, sb - ldr r1, [r0, #4] - ldr r0, [r1, #4] - cmp r0, #0 - beq _02302FA8 - cmp r0, #1 - beq _02302FC4 - cmp r0, #2 - b _02302FE8 -_02302FA8: - ldrsb r0, [r1, #9] - bl CloseDialogueBox - mov r0, sb - ldr r0, [r0, #4] - mov r1, #0xb - str r1, [r0] - b _023031DC -_02302FC4: - ldrsb r0, [r1, #9] - bl CloseDialogueBox - mov r0, sb - ldr r0, [r0, #4] - mov r1, #1 - ldr r0, [r0, #0xc] - bl ov11_02302CE0 - mov r0, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_02302FE8: - mov r0, #5 - str r0, [r1] - b _023031DC -_02302FF4: -#ifdef JAPAN - ldrsb r0, [r1, #9] - ldr r2, _023031F8 ; =0x000002C9 - add r3, r1, #0x13c -#else - ldrsb r0, [r3, #9] - ldr r2, _023031F8 ; =0x000002C9 - add r3, r3, #0x13c -#endif - mov r1, #0x10 - bl ShowStringIdInDialogueBox - mov r0, sb - ldr r0, [r0, #4] - mov r1, #6 - str r1, [r0] - b _023031DC -_0230301C: -#ifdef JAPAN - ldrsb r0, [r1, #9] -#else - ldrsb r0, [r3, #9] -#endif - bl IsDialogueBoxActive - cmp r0, #0 - bne _023031DC - mov r0, sb - ldr r0, [r0, #4] - ldrsb r0, [r0, #9] - bl ShowDialogueBox - mov r0, sb - ldr r0, [r0, #4] - mov r1, #7 - str r1, [r0] - b _023031DC -_02303050: - ldr r0, _023031FC ; =ov11_02322760 - mov r4, #2 - ldr r1, _02303200 ; =0x00300013 - ldr r3, _02303204 ; =ov11_02322798 - mov r2, #0 - str r4, [sp] - bl CreateSimpleMenuFromStringIds - mov r1, sb - ldr r3, [r1, #4] - mov r2, #8 - strb r0, [r3, #0xa] - ldr r0, [r1, #4] - str r2, [r0] - b _023031DC -_02303088: -#ifdef JAPAN - ldrsb r0, [r1, #0xa] -#else - ldrsb r0, [r3, #0xa] -#endif - bl IsSimpleMenuActive - cmp r0, #0 - bne _023031DC - mov r0, sb - ldr r0, [r0, #4] - ldrsb r0, [r0, #0xa] - bl GetSimpleMenuResult__0202B870 - mov r1, sb - ldr r2, [r1, #4] - str r0, [r2, #4] - ldr r0, [r1, #4] - ldrsb r0, [r0, #0xa] - bl CloseSimpleMenu - mov r0, sb - ldr r1, [r0, #4] - ldr r0, [r1, #4] - cmp r0, #3 - beq _023030DC - cmp r0, #4 - b _023030E8 -_023030DC: - mov r0, #9 - str r0, [r1] - b _023031DC -_023030E8: - mov r0, #1 - str r0, [r1] - b _023031DC -_023030F4: -#ifdef JAPAN - ldrsb r0, [r1, #9] - ldr r2, _02304864_JP ; =0x00002FEA - add r3, r1, #0x13c - mov r1, #0x218 -#else - ldrsb r0, [r3, #9] - mov r1, #0x218 - add r2, r1, #0xb2 - add r3, r3, #0x13c -#endif - bl ShowStringIdInDialogueBox - mov r0, sb - ldr r0, [r0, #4] - mov r1, #0xa - str r1, [r0] - b _023031DC -_0230311C: -#ifdef JAPAN - ldrsb r0, [r1, #9] -#else - ldrsb r0, [r3, #9] -#endif - bl IsDialogueBoxActive - cmp r0, #0 - moveq r0, sb - ldreq r0, [r0, #4] - moveq r1, #0xd - streq r1, [r0] - b _023031DC -_0230313C: -#ifdef JAPAN - add r0, r1, #0x10 -#else - add r0, r3, #0x10 -#endif - bl ZeroInitMissionRewardDataStruct - mov r0, sb - ldr r1, [r0, #4] - mov r3, #1 - str r3, [r1, #0x1c] - ldr r2, [r0, #4] - ldr r1, [r2, #0xc] - ldrh r0, [r1] - strh r0, [r2, #0x20] - ldrh r0, [r1, #2] - strh r0, [r2, #0x22] - ldrh r0, [r1, #4] - mov r1, #0 - strh r0, [r2, #0x24] - ldrb r0, [r2, #8] - cmp r0, #0 - movne r3, #8 - add r0, r2, #0x10 - orr r2, r3, #6 - bl sub_0203D438 - ldr r0, _023031E4 ; =ov11_02324D4C - mov r1, #0xc - ldr r0, [r0, #4] - str r1, [r0] - b _023031DC -_023031A4: - bl sub_0203D538 - cmp r0, #1 - bne _023031DC - bl FreeMissionRewardStructMain - bl ReturnScriptMenuResultZero - mov r0, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_023031C0: - bl ReturnScriptMenuResultZero - mov r0, sb - ldr r0, [r0, #4] - ldrsb r0, [r0, #9] - bl CloseDialogueBox - mov r0, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} -_023031DC: - mov r0, #1 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_023031E4: .word ov11_02324D4C -#ifdef JAPAN -_023031E8: .word 0x00002FE5 -#else -_023031E8: .word 0x000002C5 -#endif -_023031EC: .word ov11_02322780 -_023031F0: .word ov11_02322750 -_023031F4: .word 0x00300011 -#ifdef JAPAN -_023031F8: .word 0x00002FE9 -#else -_023031F8: .word 0x000002C9 -#endif -_023031FC: .word ov11_02322760 -_02303200: .word 0x00300013 -_02303204: .word ov11_02322798 -#ifdef JAPAN -_02304864_JP: .word 0x00002FEA -#endif - arm_func_end ov11_02302DB8 - - arm_func_start ov11_02303208 -ov11_02303208: ; 0x02303208 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, _023032B4 ; =ov11_02322770 - mov r4, r1 - bl InitMenu - cmp r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _023032B8 ; =ov11_02324D4C - ldr r0, [r0, #4] - cmp r0, #0 - bne _02303248 - ldr r0, _023032BC ; =0x00000498 - mov r1, #6 - bl MemAlloc - ldr r1, _023032B8 ; =ov11_02324D4C - str r0, [r1, #4] -_02303248: - ldr r0, _023032B8 ; =ov11_02324D4C - mvn r3, #1 - ldr r2, [r0, #4] - mov r1, #0 - strb r3, [r2, #9] - ldr r3, [r0, #4] - ldr r2, _023032C0 ; =ov11_02322734 - str r5, [r3, #0xc] - ldr r5, [r0, #4] - mov r3, #1 - strb r4, [r5, #8] - ldr r0, [r0, #4] - str r1, [sp] - ldr r1, [r0, #0xc] - add r0, r0, #0x3c - bl MaybeGetFormattedItemName - ldr r0, _023032B8 ; =ov11_02324D4C - ldr r0, [r0, #4] - add r0, r0, #0x13c - bl InitPreprocessorArgs - ldr r0, _023032B8 ; =ov11_02324D4C - cmp r4, #0 - movne r1, #0xb - ldr r0, [r0, #4] - moveq r1, #0 - str r1, [r0] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_023032B4: .word ov11_02322770 -_023032B8: .word ov11_02324D4C -_023032BC: .word 0x00000498 -_023032C0: .word ov11_02322734 - arm_func_end ov11_02303208 - - arm_func_start InitDiaryAndFaqBoardMenu -InitDiaryAndFaqBoardMenu: ; 0x023032C4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} - sub sp, sp, #4 - mov r4, r0 - mov r0, #0xc80 - mov r1, #6 - bl MemAlloc - ldr r2, _023033F0 ; =ov11_02324D54 - mov r1, #0x5c - str r0, [r2] - mov r0, #0 - bl LoadScriptVariableValue - ldr r1, _023033F0 ; =ov11_02324D54 - mov r3, #0 - ldr r2, [r1] - str r0, [r2, #0x10] - ldr r1, [r1] - sub r2, r3, #2 - ldr r0, [r1, #0x10] - cmp r0, #0 - movle r0, #5 - strle r0, [r1, #0x10] - ldr r0, _023033F0 ; =ov11_02324D54 - ldr r1, [r0] - str r3, [r1, #0x1c] - ldr r1, [r0] - str r3, [r1, #0xc24] - ldr r1, [r0] - str r3, [r1, #0x14] - ldr r1, [r0] - str r4, [r1, #4] - ldr r1, [r0] - strb r2, [r1, #0xc7d] - ldr r0, [r0] - add r0, r0, #0x28 - add r0, r0, #0xc00 - bl InitPreprocessorArgs - ldr r0, _023033F0 ; =ov11_02324D54 -#ifdef JAPAN - ldr r2, _02304A54 ; =0x000032FC - ldr r1, [r0] - ldr r3, _023033F4 ; =0x0000C402 - add r0, r1, #0x28 - add r4, r0, #0xc00 - add r0, r1, #0x24 - mov r1, #0x400 -#else - mov r1, #0x400 - ldr r2, [r0] - ldr r3, _023033F4 ; =0x0000C402 - add r0, r2, #0x28 - add r4, r0, #0xc00 - add r0, r2, #0x24 - add r2, r1, #0x4a -#endif - str r4, [sp] - bl PreprocessStringFromId - ldr r6, _023033F8 ; =ov11_023227B0 - ldr r5, _023033F4 ; =0x0000C402 - ldr r4, _023033F0 ; =ov11_02324D54 - mov r8, #0 - mov r7, #0x400 -_02303390: - ldr r3, [r4] - mov r1, r7 - add r0, r3, #0x28 - add r0, r0, #0xc00 - str r0, [sp] - ldr r2, [r3, #4] - add r0, r3, #0x24 - mov r2, r2, lsl #1 - ldrh r2, [r6, r2] - add ip, r0, #0x400 - mov r3, r5 - add r0, r8, r2 - mov r2, r0, lsl #0x10 - add r0, ip, r8, lsl #6 - mov r2, r2, lsr #0x10 - bl PreprocessStringFromId - add r8, r8, #1 - cmp r8, #0x1e - blt _02303390 - mov r0, #0 - bl ov11_023035C0 - mov r0, #1 - add sp, sp, #4 - ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} - .align 2, 0 -_023033F0: .word ov11_02324D54 -#ifdef JAPAN -_02304A54: .word 0x000032FC -#endif -_023033F4: .word 0x0000C402 -_023033F8: .word ov11_023227B0 - arm_func_end InitDiaryAndFaqBoardMenu - - arm_func_start ov11_023033FC -ov11_023033FC: ; 0x023033FC - stmdb sp!, {r3, lr} - ldr r0, _023035BC ; =ov11_02324D54 - ldr r2, [r0] - ldr r1, [r2] - cmp r1, #0xc - addls pc, pc, r1, lsl #2 - b _02303538 -_02303418: ; jump table - b _0230344C ; case 0 - b _02303538 ; case 1 - b _023034A0 ; case 2 - b _023035B4 ; case 3 - b _02303538 ; case 4 - b _02303538 ; case 5 - b _02303538 ; case 6 - b _02303538 ; case 7 - b _023034A8 ; case 8 - b _02303538 ; case 9 - b _02303538 ; case 10 - b _02303538 ; case 11 - b _023034F4 ; case 12 -_0230344C: - add r0, r2, #0xc00 - ldrsb r0, [r0, #0x7c] - bl IsAdvancedMenuActive2 - cmp r0, #0 - bne _023035B4 - ldr r0, _023035BC ; =ov11_02324D54 - ldr r0, [r0] - add r0, r0, #0xc00 - ldrsb r0, [r0, #0x7c] - bl GetAdvancedMenuResult - ldr r1, _023035BC ; =ov11_02324D54 - add r2, r0, #1 - ldr r0, [r1] - str r2, [r0, #0x18] - ldr r0, [r1] - add r0, r0, #0xc00 - ldrsb r0, [r0, #0x7c] - bl CloseAdvancedMenu - mov r0, #2 - bl ov11_023035C0 - b _023035B4 -_023034A0: - mov r0, #3 - ldmia sp!, {r3, pc} -_023034A8: - add r0, r2, #0xc00 - ldrsb r0, [r0, #0x7d] - bl IsDialogueBoxActive - cmp r0, #0 - bne _023035B4 - ldr r0, _023035BC ; =ov11_02324D54 - ldr r0, [r0] - add r0, r0, #0xc00 - ldrsb r0, [r0, #0x7d] - bl ShowDialogueBox - ldr r0, _023035BC ; =ov11_02324D54 - mov r2, #0xd - ldr r1, [r0] - str r2, [r1] - ldr r0, [r0] - add r0, r0, #0xc00 - ldrsb r0, [r0, #0x7d] - bl sub_0202F2C4 - b _023035B4 -_023034F4: - ldr r1, [r2, #0x14] - add r1, r1, #1 - str r1, [r2, #0x14] - ldr r1, [r0] - ldr r0, [r1, #0x14] - cmp r0, #1 - cmpne r0, #2 - beq _023035B4 - cmp r0, #3 - bne _023035B4 - ldr r0, [r1, #8] - bl ov11_023035C0 - ldr r0, _023035BC ; =ov11_02324D54 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x14] - b _023035B4 -_02303538: - add r0, r2, #0xc00 - ldrsb r0, [r0, #0x7d] - bl IsDialogueBoxActive - cmp r0, #0 - bne _023035B4 - ldr r0, _023035BC ; =ov11_02324D54 - ldr r0, [r0] - add r0, r0, #0xc00 - ldrsb r0, [r0, #0x7d] - bl ShowDialogueBox - ldr r0, _023035BC ; =ov11_02324D54 - mvn r1, #1 - ldr r0, [r0] - add r0, r0, #0xc00 - ldrsb r0, [r0, #0x7d] - cmp r0, r1 - beq _023035A4 - bl sub_0202F2C4 - ldr r0, _023035BC ; =ov11_02324D54 - ldr r0, [r0] - add r0, r0, #0xc00 - ldrsb r0, [r0, #0x7d] - bl CloseDialogueBox - ldr r0, _023035BC ; =ov11_02324D54 - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #0xc7d] -_023035A4: - ldr r0, _023035BC ; =ov11_02324D54 - ldr r0, [r0] - ldr r0, [r0, #8] - bl ov11_023035C0 -_023035B4: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_023035BC: .word ov11_02324D54 - arm_func_end ov11_023033FC - - arm_func_start ov11_023035C0 -ov11_023035C0: ; 0x023035C0 - stmdb sp!, {r3, lr} - sub sp, sp, #0xa0 - ldr r1, _02303724 ; =ov11_02324D54 - ldr r2, [r1] - str r0, [r2] - ldr r3, [r1] - ldr r0, [r3] - cmp r0, #0xb - addls pc, pc, r0, lsl #2 - b _0230371C -_023035E8: ; jump table - b _02303618 ; case 0 - b _023036A4 ; case 1 - b _023036C0 ; case 2 - b _023036E8 ; case 3 - b _0230371C ; case 4 - b _02303700 ; case 5 - b _023036CC ; case 6 - b _0230371C ; case 7 - b _0230371C ; case 8 - b _0230371C ; case 9 - b _0230371C ; case 10 - b _023036F4 ; case 11 -_02303618: - ldr r0, [r3, #4] - mov r1, #0 -#ifdef JAPAN - add r0, r0, #0xfe - add r2, r0, #0x3200 -#else - add r0, r0, #0x4c - add r2, r0, #0x400 -#endif - mov r0, #0x10 - strh r2, [sp, #0x10] - str r1, [sp, #0x7c] - str r1, [sp, #0x84] - str r0, [sp, #0x14] - ldr r0, [r3, #4] - ldr ip, [r3, #0x10] - cmp r0, #2 - ldr r1, _02303728 ; =0x00001813 - add r2, sp, #8 - beq _0230367C - ldr r0, _0230372C ; =ov11_023227D8 - str ip, [sp] - mov ip, #8 - ldr r3, _02303730 ; =ov11_02303750 - str ip, [sp, #4] - bl CreateAdvancedMenu - ldr r1, _02303724 ; =ov11_02324D54 - ldr r1, [r1] - strb r0, [r1, #0xc7c] - b _0230371C -_0230367C: - ldr r0, _02303734 ; =ov11_023227B8 - str ip, [sp] - mov ip, #8 - ldr r3, _02303730 ; =ov11_02303750 - str ip, [sp, #4] - bl CreateAdvancedMenu - ldr r1, _02303724 ; =ov11_02324D54 - ldr r1, [r1] - strb r0, [r1, #0xc7c] - b _0230371C -_023036A4: - ldr r0, _02303738 ; =ov11_023227E8 - bl Debug_Print0 - ldr r0, _02303724 ; =ov11_02324D54 - mov r1, #2 - ldr r0, [r0] - str r1, [r0] - b _0230371C -_023036C0: - ldr r0, _0230373C ; =ov11_02322808 - bl Debug_Print0 - b _0230371C -_023036CC: - ldr r0, _02303740 ; =ov11_02322828 - bl Debug_Print0 - ldr r0, _02303724 ; =ov11_02324D54 - mov r1, #2 - ldr r0, [r0] - str r1, [r0, #8] - b _0230371C -_023036E8: - ldr r0, _02303744 ; =ov11_02322850 - bl Debug_Print0 - b _0230371C -_023036F4: - ldr r0, _02303748 ; =ov11_0232287C - bl Debug_Print0 - b _0230371C -_02303700: - ldr r0, _0230374C ; =ov11_02322894 - bl Debug_Print0 - ldr r0, _02303724 ; =ov11_02324D54 - mov r1, #1 - ldr r0, [r0] - str r1, [r0] - bl ov11_0230377C -_0230371C: - add sp, sp, #0xa0 - ldmia sp!, {r3, pc} - .align 2, 0 -_02303724: .word ov11_02324D54 -_02303728: .word 0x00001813 -_0230372C: .word ov11_023227D8 -_02303730: .word ov11_02303750 -_02303734: .word ov11_023227B8 -_02303738: .word ov11_023227E8 -_0230373C: .word ov11_02322808 -_02303740: .word ov11_02322828 -_02303744: .word ov11_02322850 -_02303748: .word ov11_0232287C -_0230374C: .word ov11_02322894 - arm_func_end ov11_023035C0 - - arm_func_start ov11_02303750 -ov11_02303750: ; 0x02303750 - stmdb sp!, {r4, lr} - ldr r2, _02303778 ; =ov11_02324D54 - mov r4, r0 - ldr r2, [r2] - add r2, r2, #0x24 - add r2, r2, #0x400 - add r1, r2, r1, lsl #6 - bl strcpy - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_02303778: .word ov11_02324D54 - arm_func_end ov11_02303750 - - arm_func_start ov11_0230377C -ov11_0230377C: ; 0x0230377C - stmdb sp!, {r3, lr} - sub sp, sp, #0xa0 - ldr r0, _023038D8 ; =ov11_02324D54 - ldr r3, [r0] - ldr r0, [r3] - cmp r0, #0xb - addls pc, pc, r0, lsl #2 - b _023038D0 -_0230379C: ; jump table - b _023037CC ; case 0 - b _02303858 ; case 1 - b _02303874 ; case 2 - b _0230389C ; case 3 - b _023038D0 ; case 4 - b _023038B4 ; case 5 - b _02303880 ; case 6 - b _023038D0 ; case 7 - b _023038D0 ; case 8 - b _023038D0 ; case 9 - b _023038D0 ; case 10 - b _023038A8 ; case 11 -_023037CC: - ldr r0, [r3, #4] - mov r1, #0 -#ifdef JAPAN - add r0, r0, #0xfe - add r2, r0, #0x3200 -#else - add r0, r0, #0x4c - add r2, r0, #0x400 -#endif - mov r0, #0x10 - strh r2, [sp, #0x10] - str r1, [sp, #0x7c] - str r1, [sp, #0x84] - str r0, [sp, #0x14] - ldr r0, [r3, #4] - ldr ip, [r3, #0x10] - cmp r0, #2 - ldr r1, _023038DC ; =0x00001813 - add r2, sp, #8 - beq _02303830 - ldr r0, _023038E0 ; =ov11_023227D8 - str ip, [sp] - mov ip, #8 - ldr r3, _023038E4 ; =ov11_02303750 - str ip, [sp, #4] - bl CreateAdvancedMenu - ldr r1, _023038D8 ; =ov11_02324D54 - ldr r1, [r1] - strb r0, [r1, #0xc7c] - b _023038D0 -_02303830: - ldr r0, _023038E8 ; =ov11_023227B8 - str ip, [sp] - mov ip, #8 - ldr r3, _023038E4 ; =ov11_02303750 - str ip, [sp, #4] - bl CreateAdvancedMenu - ldr r1, _023038D8 ; =ov11_02324D54 - ldr r1, [r1] - strb r0, [r1, #0xc7c] - b _023038D0 -_02303858: - ldr r0, _023038EC ; =ov11_023227E8 - bl Debug_Print0 - ldr r0, _023038D8 ; =ov11_02324D54 - mov r1, #2 - ldr r0, [r0] - str r1, [r0] - b _023038D0 -_02303874: - ldr r0, _023038F0 ; =ov11_02322808 - bl Debug_Print0 - b _023038D0 -_02303880: - ldr r0, _023038F4 ; =ov11_02322828 - bl Debug_Print0 - ldr r0, _023038D8 ; =ov11_02324D54 - mov r1, #2 - ldr r0, [r0] - str r1, [r0, #8] - b _023038D0 -_0230389C: - ldr r0, _023038F8 ; =ov11_02322850 - bl Debug_Print0 - b _023038D0 -_023038A8: - ldr r0, _023038FC ; =ov11_0232287C - bl Debug_Print0 - b _023038D0 -_023038B4: - ldr r0, _02303900 ; =ov11_02322894 - bl Debug_Print0 - ldr r0, _023038D8 ; =ov11_02324D54 - mov r1, #1 - ldr r0, [r0] - str r1, [r0] - bl ov11_0230377C -_023038D0: - add sp, sp, #0xa0 - ldmia sp!, {r3, pc} - .align 2, 0 -_023038D8: .word ov11_02324D54 -_023038DC: .word 0x00001813 -_023038E0: .word ov11_023227D8 -_023038E4: .word ov11_02303750 -_023038E8: .word ov11_023227B8 -_023038EC: .word ov11_023227E8 -_023038F0: .word ov11_02322808 -_023038F4: .word ov11_02322828 -_023038F8: .word ov11_02322850 -_023038FC: .word ov11_0232287C -_02303900: .word ov11_02322894 - arm_func_end ov11_0230377C - - arm_func_start FreeDiaryAndFaqBoardMenuMenu -FreeDiaryAndFaqBoardMenuMenu: ; 0x02303904 - stmdb sp!, {r3, lr} - ldr r0, _0230392C ; =ov11_02324D54 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _0230392C ; =ov11_02324D54 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230392C: .word ov11_02324D54 - arm_func_end FreeDiaryAndFaqBoardMenuMenu - - arm_func_start DiaryAndFaqBoardMenuFrameUpdate -DiaryAndFaqBoardMenuFrameUpdate: ; 0x02303930 - stmdb sp!, {r3, lr} - ldr r0, _023039A8 ; =ov11_02324D54 - ldr r1, [r0] - ldr r0, [r1, #0xc24] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _023039A0 -_0230394C: ; jump table - b _0230395C ; case 0 - b _02303968 ; case 1 - b _02303984 ; case 2 - b _02303990 ; case 3 -_0230395C: - mov r0, #1 - str r0, [r1, #0xc24] - b _023039A0 -_02303968: - bl ov11_023033FC - cmp r0, #3 - ldreq r0, _023039A8 ; =ov11_02324D54 - moveq r1, #2 - ldreq r0, [r0] - streq r1, [r0, #0xc24] - b _023039A0 -_02303984: - mov r0, #3 - str r0, [r1, #0xc24] - b _023039A0 -_02303990: - ldr r0, [r1, #0x18] - bl ReturnScriptMenuResult - mov r0, #4 - ldmia sp!, {r3, pc} -_023039A0: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_023039A8: .word ov11_02324D54 - arm_func_end DiaryAndFaqBoardMenuFrameUpdate - - arm_func_start ov11_023039AC -ov11_023039AC: ; 0x023039AC - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, _023039D0 ; =ov11_023227C8 - bl InitMenu - cmp r0, #0 - ldmeqia sp!, {r4, pc} - mov r0, r4 - bl InitDiaryAndFaqBoardMenu - ldmia sp!, {r4, pc} - .align 2, 0 -_023039D0: .word ov11_023227C8 - arm_func_end ov11_023039AC - - arm_func_start ov11_023039D4 -ov11_023039D4: ; 0x023039D4 - stmdb sp!, {r4, lr} - mov r4, r0 - mov r0, #0x21c - mov r1, #8 - bl MemAlloc - ldr r1, _02303AF8 ; =ov11_02324D58 - cmp r4, #0 - str r0, [r1, #4] - str r4, [r0, #0x14] - bne _02303A14 - ldr r0, [r1, #4] - add r0, r0, #0x60 - bl CopyMenuControlWindowExtraInfo - ldr r1, _02303AF8 ; =ov11_02324D58 - ldr r1, [r1, #4] - str r0, [r1, #0x5c] -_02303A14: - mov r2, #0 - ldr r0, _02303AF8 ; =ov11_02324D58 - mov r3, r2 -_02303A20: - ldr r1, [r0, #4] - add r1, r1, r2, lsl #2 - add r2, r2, #1 - str r3, [r1, #0x38] - cmp r2, #8 - blt _02303A20 - ldr r2, _02303AF8 ; =ov11_02324D58 - mov lr, #1 - ldr r0, [r2, #4] - mov ip, #4 - str r3, [r0, #0x18] - ldr r1, [r2, #4] - ldr r0, _02303AFC ; =ov11_023228E0 - str r3, [r1, #0x1c] - ldr r3, [r2, #4] - ldr r1, _02303B00 ; =ov11_023042A8 - str lr, [r3, #0x20] - ldr r3, [r2, #4] - str lr, [r3, #0x24] - ldr r3, [r2, #4] - str lr, [r3, #0x28] - ldr r3, [r2, #4] - str lr, [r3, #0x2c] - ldr r3, [r2, #4] - str lr, [r3, #0x30] - ldr r3, [r2, #4] - str lr, [r3, #0x34] - ldr r3, [r2, #4] - str ip, [r3, #0x40] - ldr r3, [r2, #4] - ldr r2, [r3, #0x40] - sub r2, r2, #2 - str r2, [r3, #0x10] - bl CreateTextBox - ldr r1, _02303AF8 ; =ov11_02324D58 - mov r2, #1 - ldr r3, [r1, #4] - strb r0, [r3, #1] - ldr r0, [r1, #4] - str r2, [r0, #8] - ldr r0, [r1, #4] - ldr r0, [r0, #8] - bl ov11_02303BC0 - ldr r0, _02303AF8 ; =ov11_02324D58 - ldr r0, [r0, #4] - add r0, r0, #0x1bc - bl InitPreprocessorArgs - ldr r1, _02303AF8 ; =ov11_02324D58 - mov r3, #0 - ldr r2, [r1, #4] - mov r0, #1 - str r3, [r2, #4] - strb r3, [r1] - ldmia sp!, {r4, pc} - .align 2, 0 -_02303AF8: .word ov11_02324D58 -_02303AFC: .word ov11_023228E0 -_02303B00: .word ov11_023042A8 - arm_func_end ov11_023039D4 - - arm_func_start ov11_02303B04 -ov11_02303B04: ; 0x02303B04 - stmdb sp!, {r3, lr} - ldr r0, _02303B4C ; =ov11_02324D58 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - ldrsb r0, [r0, #1] - bl sub_0202836C - ldr r0, _02303B4C ; =ov11_02324D58 - ldr r0, [r0, #4] - ldrsb r0, [r0, #1] - bl CloseTextBox - ldr r0, _02303B4C ; =ov11_02324D58 - ldr r0, [r0, #4] - bl MemFree - ldr r0, _02303B4C ; =ov11_02324D58 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02303B4C: .word ov11_02324D58 - arm_func_end ov11_02303B04 - - arm_func_start ov11_02303B50 -ov11_02303B50: ; 0x02303B50 - stmdb sp!, {r3, lr} - ldr r0, _02303BBC ; =ov11_02324D58 - ldr r2, [r0, #4] - ldr r1, [r2, #4] - cmp r1, #0 - beq _02303B7C - cmp r1, #1 - beq _02303BB4 - cmp r1, #2 - beq _02303B84 - b _02303BB4 -_02303B7C: - bl ov11_02303D80 - b _02303BB4 -_02303B84: - mov r1, #3 - str r1, [r2, #4] - ldr r2, [r0, #4] - ldr r1, [r2, #0x5c] - tst r1, #0x100 - beq _02303BAC - ldrb r1, [r0] - ldr r0, [r2, #0xe8] - ldr r2, [r2, #0xe4] - blx r2 -_02303BAC: - mov r0, #4 - ldmia sp!, {r3, pc} -_02303BB4: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02303BBC: .word ov11_02324D58 - arm_func_end ov11_02303B50 - - arm_func_start ov11_02303BC0 -ov11_02303BC0: ; 0x02303BC0 - stmdb sp!, {r3, lr} - ldr r1, _02303D68 ; =ov11_02324D58 - ldr r2, [r1, #4] - str r0, [r2, #8] - ldr r3, [r1, #4] - ldr r0, [r3, #8] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - ldmia sp!, {r3, pc} -_02303BE4: ; jump table - ldmia sp!, {r3, pc} ; case 0 - b _02303BFC ; case 1 - b _02303C5C ; case 2 - b _02303C94 ; case 3 - ldmia sp!, {r3, pc} ; case 4 - b _02303D4C ; case 5 -_02303BFC: - ldr r2, _02303D6C ; =0x00003CFF - add r0, r3, #0x100 - strh r2, [r0] - ldr r0, [r1, #4] - mov r2, #0x10 - str r2, [r0, #0x104] - ldr ip, [r1, #4] - mov r2, #4 - ldr r3, [ip, #0x3c] - ldr r0, _02303D70 ; =ov11_023228D0 - str r3, [ip, #0xf8] - str r2, [sp] - ldr r1, [r1, #4] - ldr r3, _02303D74 ; =ov11_023228F0 - add r2, r1, #0xf8 - mov r1, #0x33 - bl CreateSimpleMenuFromStringIds - ldr r1, _02303D68 ; =ov11_02324D58 - ldr r2, [r1, #4] - strb r0, [r2, #2] - ldr r0, [r1, #4] - ldrsb r0, [r0, #1] - bl ov11_023042A8 - ldmia sp!, {r3, pc} -_02303C5C: - ldr r2, [r3, #0x40] - mov r0, #3 - str r2, [r3, #0xf8] - str r0, [sp] - ldr r1, [r1, #4] - ldr r0, _02303D70 ; =ov11_023228D0 - add r2, r1, #0xf8 - ldr r3, _02303D78 ; =ov11_02322910 - mov r1, #0x33 - bl CreateSimpleMenuFromStringIds - ldr r1, _02303D68 ; =ov11_02324D58 - ldr r1, [r1, #4] - strb r0, [r1, #2] - ldmia sp!, {r3, pc} -_02303C94: - mov r0, #0 - str r0, [r3, #0x198] - ldr r0, [r1, #4] - mov r2, #0x50 - str r2, [r0, #0x1b0] - ldr r0, [r1, #4] - mov r2, #4 - str r2, [r0, #0x1b4] - ldr r0, [r1, #4] - mov ip, #0x12 - str ip, [r0, #0x1a8] - ldr r0, [r1, #4] - mov r3, #0xc - str r3, [r0, #0x1ac] - ldr r2, [r1, #4] - ldr r0, [r2, #0x10] - cmp r0, #0 - bne _02303CF4 - mov r0, #0x1f - str r0, [r2, #0x19c] - ldr r0, [r1, #4] - ldr r1, _02303D7C ; =0x0000FFF2 - str r1, [r0, #0x1a0] - b _02303D24 -_02303CF4: - cmp r0, #1 - addne r0, ip, #0x470 - strne r0, [r2, #0x19c] - ldrne r0, [r1, #4] - rsbne r1, r3, #0x10000 - strne r1, [r0, #0x1a0] - bne _02303D24 - mov r0, #0x14 - str r0, [r2, #0x19c] - ldr r0, [r1, #4] - ldr r1, _02303D7C ; =0x0000FFF2 - str r1, [r0, #0x1a0] -_02303D24: - ldr r0, _02303D68 ; =ov11_02324D58 - ldr r2, [r0, #4] - ldr r1, [r2, #0x10] - add r1, r2, r1, lsl #2 - ldr r1, [r1, #0x18] - str r1, [r2, #0x194] - ldr r0, [r0, #4] - add r0, r0, #0x190 - bl DigitInputMenuInit - ldmia sp!, {r3, pc} -_02303D4C: - ldrsb r0, [r3, #2] - bl CloseSimpleMenu - ldr r0, _02303D68 ; =ov11_02324D58 - mov r1, #4 - ldr r0, [r0, #4] - str r1, [r0, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_02303D68: .word ov11_02324D58 -#if defined(EUROPE) -_02303D6C: .word 0x00003D01 -#elif defined(JAPAN) -_02303D6C: .word 0x000004A6 -#else -_02303D6C: .word 0x00003CFF -#endif -_02303D70: .word ov11_023228D0 -_02303D74: .word ov11_023228F0 -_02303D78: .word ov11_02322910 -_02303D7C: .word 0x0000FFF2 - arm_func_end ov11_02303BC0 - - arm_func_start ov11_02303D80 -ov11_02303D80: ; 0x02303D80 - stmdb sp!, {r4, lr} - sub sp, sp, #0xa8 - ldr r0, _02304298 ; =ov11_02324D58 - ldr r2, [r0, #4] - ldr r1, [r2, #8] - cmp r1, #6 - addls pc, pc, r1, lsl #2 - b _0230428C -_02303DA0: ; jump table - b _0230428C ; case 0 - b _02303DBC ; case 1 - b _0230406C ; case 2 - b _0230417C ; case 3 - b _02304250 ; case 4 - b _02304268 ; case 5 - b _0230422C ; case 6 -_02303DBC: - ldrsb r0, [r2, #2] - bl GetSimpleMenuResult__0202B870 - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _0230428C -_02303DD0: ; jump table - b _0230428C ; case 0 - b _0230404C ; case 1 - b _02303DE8 ; case 2 - b _02303E10 ; case 3 - b _02303E38 ; case 4 - b _02303E60 ; case 5 -_02303DE8: - ldr r1, _02304298 ; =ov11_02324D58 - mov r4, #5 - ldr r2, [r1, #4] - mov r3, #2 - str r4, [r2, #8] - ldr r2, [r1, #4] - str r3, [r2, #0xc] - ldr r1, [r1, #4] - str r0, [r1, #0x3c] - b _0230428C -_02303E10: - ldr r1, _02304298 ; =ov11_02324D58 - mov r4, #5 - ldr r2, [r1, #4] - mov r3, #3 - str r4, [r2, #8] - ldr r2, [r1, #4] - str r3, [r2, #0xc] - ldr r1, [r1, #4] - str r0, [r1, #0x3c] - b _0230428C -_02303E38: - ldr r1, _02304298 ; =ov11_02324D58 - mov r3, #5 - ldr r4, [r1, #4] - mov r2, #1 - str r0, [r4, #0x3c] - ldr r0, [r1, #4] - str r3, [r0, #8] - ldr r0, [r1, #4] - str r2, [r0, #0xc] - b _0230428C -_02303E60: - ldr r1, _02304298 ; =ov11_02324D58 - ldr r2, [r1, #4] - str r0, [r2, #0x3c] - ldr r3, [r1, #4] - ldr r0, [r3, #0x10] - cmp r0, #0 - beq _02303E90 - cmp r0, #1 - beq _02303F30 - cmp r0, #2 - beq _02303FD0 - b _0230402C -_02303E90: - ldr r0, [r3, #0x14] - cmp r0, #0 - bne _02303F00 - bl GetHero - ldr r1, _02304298 ; =ov11_02324D58 - mov r4, r0 - ldr r0, [r1, #4] - ldr r1, _0230429C ; =ov11_02322978 - ldr r2, [r0, #0x18] - add r0, sp, #6 - mov r2, r2, lsl #1 - ldrsh r1, [r1, r2] - strh r1, [r4, #4] - bl GetNameRaw - add r1, sp, #6 - add r0, r4, #0x3a - mov r2, #0xa - bl StrncpyName - ldrsh r2, [r4, #4] - mov r0, #0 - mov r1, #0x3e - bl SaveScriptVariableValue - add r1, r4, #0x3a - mov r0, #0x3f - mov r2, #0xa - bl SaveScriptVariableValueBytes - bl sub_020572EC - b _0230402C -_02303F00: - add r0, sp, #0x1c - bl sub_02048764 - ldr r0, _02304298 ; =ov11_02324D58 - ldr r1, _0230429C ; =ov11_02322978 - ldr r2, [r0, #4] - add r0, sp, #0x1c - ldr r2, [r2, #0x18] - mov r2, r2, lsl #1 - ldrsh r1, [r1, r2] - strh r1, [sp, #0x1c] - bl sub_02048794 - b _0230402C -_02303F30: - ldr r0, [r3, #0x14] - cmp r0, #0 - bne _02303FA0 - bl GetPartner - ldr r1, _02304298 ; =ov11_02324D58 - mov r4, r0 - ldr r0, [r1, #4] - ldr r1, _023042A0 ; =ov11_02322930 - ldr r2, [r0, #0x1c] - add r0, sp, #6 - mov r2, r2, lsl #1 - ldrsh r1, [r1, r2] - strh r1, [r4, #4] - bl GetNameRaw - add r1, sp, #6 - add r0, r4, #0x3a - mov r2, #0xa - bl StrncpyName - ldrsh r2, [r4, #4] - mov r0, #0 - mov r1, #0x40 - bl SaveScriptVariableValue - add r1, r4, #0x3a - mov r0, #0x41 - mov r2, #0xa - bl SaveScriptVariableValueBytes - bl sub_020572EC - b _0230402C -_02303FA0: - add r0, sp, #0x58 - bl sub_02048764 - ldr r0, _02304298 ; =ov11_02324D58 - ldr r1, _023042A0 ; =ov11_02322930 - ldr r2, [r0, #4] - add r0, sp, #0x58 - ldr r2, [r2, #0x1c] - mov r2, r2, lsl #1 - ldrsh r1, [r1, r2] - strh r1, [sp, #0x5a] - bl sub_02048794 - b _0230402C -_02303FD0: - ldr r1, _023042A4 ; =ov11_023228BC - add r0, sp, #0x94 - ldrb r2, [r1] - strb r2, [sp, #4] - ldrb r1, [r1, #1] - strb r1, [sp, #5] - ldr r1, [r3, #0x20] - mov r1, r1, lsl #0x10 - mov r1, r1, asr #0x10 - bl GetNameRaw - add r0, sp, #0x94 - mov r1, r0 -#ifdef JAPAN - bl sub_02025304_JP -#else - bl StrcpyName -#endif - mov r3, #0 - ldr r0, _02304298 ; =ov11_02324D58 - str r3, [sp] - ldr r0, [r0, #4] - add r1, sp, #0x94 - ldr r0, [r0, #0x20] - add r2, sp, #4 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl sub_02055DD0 -_0230402C: - ldr r0, _02304298 ; =ov11_02324D58 - mov r3, #5 - ldr r2, [r0, #4] - mov r1, #1 - str r3, [r2, #8] - ldr r0, [r0, #4] - str r1, [r0, #0xc] - b _0230428C -_0230404C: - ldr r0, _02304298 ; =ov11_02324D58 - mov r3, #5 - ldr r2, [r0, #4] - mov r1, #6 - str r3, [r2, #8] - ldr r0, [r0, #4] - str r1, [r0, #0xc] - b _0230428C -_0230406C: - ldrsb r0, [r2, #2] - bl GetSimpleMenuResult__0202B870 - cmp r0, #4 - addls pc, pc, r0, lsl #2 - b _0230428C -_02304080: ; jump table - b _0230428C ; case 0 - b _02304150 ; case 1 - b _02304094 ; case 2 - b _023040D4 ; case 3 - b _02304110 ; case 4 -_02304094: - ldr r1, _02304298 ; =ov11_02324D58 - mov ip, #0 - ldr r2, [r1, #4] - mov r3, #5 - str r0, [r2, #0x40] - ldr r0, [r1, #4] - mov r2, #1 - str ip, [r0, #0x10] - ldr r0, [r1, #4] - str r3, [r0, #8] - ldr r0, [r1, #4] - str r2, [r0, #0xc] - ldr r0, [r1, #4] - ldrsb r0, [r0, #1] - bl ov11_023042A8 - b _0230428C -_023040D4: - ldr r1, _02304298 ; =ov11_02324D58 - mov r3, #1 - ldr ip, [r1, #4] - mov r2, #5 - str r0, [ip, #0x40] - ldr r0, [r1, #4] - str r3, [r0, #0x10] - ldr r0, [r1, #4] - str r2, [r0, #8] - ldr r0, [r1, #4] - str r3, [r0, #0xc] - ldr r0, [r1, #4] - ldrsb r0, [r0, #1] - bl ov11_023042A8 - b _0230428C -_02304110: - ldr r1, _02304298 ; =ov11_02324D58 - mov ip, #2 - ldr r2, [r1, #4] - mov r3, #5 - str r0, [r2, #0x40] - ldr r0, [r1, #4] - mov r2, #1 - str ip, [r0, #0x10] - ldr r0, [r1, #4] - str r3, [r0, #8] - ldr r0, [r1, #4] - str r2, [r0, #0xc] - ldr r0, [r1, #4] - ldrsb r0, [r0, #1] - bl ov11_023042A8 - b _0230428C -_02304150: - ldr r0, _02304298 ; =ov11_02324D58 - mov r3, #5 - ldr r1, [r0, #4] - mov r2, #1 - str r3, [r1, #8] - ldr r1, [r0, #4] - str r2, [r1, #0xc] - ldr r0, [r0, #4] - ldrsb r0, [r0, #1] - bl ov11_023042A8 - b _0230428C -_0230417C: - add r0, r2, #0x190 - ldr r4, [r2, #0x190] - bl DigitInputMenuReturn - mvn r1, #1 - cmp r0, r1 - beq _023041D8 - add r1, r1, #1 - cmp r0, r1 - ldr r1, _02304298 ; =ov11_02324D58 - ldreq r0, _02304298 ; =ov11_02324D58 - ldr lr, [r1, #4] - ldreq r0, [r0, #4] - ldr ip, [lr, #0x10] - ldreq r0, [r0, #0x194] - add ip, lr, ip, lsl #2 - str r0, [ip, #0x18] - ldr r0, [r1, #4] - mov r3, #4 - str r3, [r0, #8] - ldr r0, [r1, #4] - mov r2, #1 - str r2, [r0, #0xc] - b _0230428C -_023041D8: - ldr r0, _02304298 ; =ov11_02324D58 - ldr r0, [r0, #4] - ldr r3, [r0, #0x190] - cmp r4, r3 - bne _023041F8 - ldr r0, [r0, #0x58] - cmp r0, #0xff - bne _0230428C -_023041F8: - ldr r0, _02304298 ; =ov11_02324D58 - ldr r2, [r0, #4] - ldr r1, [r2, #0x10] - add r1, r2, r1, lsl #2 - str r3, [r1, #0x18] - ldr r0, [r0, #4] - ldrsb r0, [r0, #1] - bl ov11_023042A8 - ldr r0, _02304298 ; =ov11_02324D58 - mov r1, #0 - ldr r0, [r0, #4] - str r1, [r0, #0x58] - b _0230428C -_0230422C: - mov r1, #2 - str r1, [r2, #4] - ldr r0, [r0, #4] - ldr r0, [r0, #0x14] - cmp r0, #1 - bne _02304248 - bl ov11_02303B04 -_02304248: - mvn r0, #0 - b _02304290 -_02304250: - ldr r1, [r2, #0xc] - str r1, [r2, #8] - ldr r0, [r0, #4] - ldr r0, [r0, #8] - bl ov11_02303BC0 - b _0230428C -_02304268: - ldrsb r0, [r2, #2] - bl CloseSimpleMenu - ldr r0, _02304298 ; =ov11_02324D58 - mvn r3, #1 - ldr r2, [r0, #4] - mov r1, #4 - strb r3, [r2, #2] - ldr r0, [r0, #4] - str r1, [r0, #8] -_0230428C: - mov r0, #0 -_02304290: - add sp, sp, #0xa8 - ldmia sp!, {r4, pc} - .align 2, 0 -_02304298: .word ov11_02324D58 -_0230429C: .word ov11_02322978 -_023042A0: .word ov11_02322930 -_023042A4: .word ov11_023228BC - arm_func_end ov11_02303D80 - - arm_func_start ov11_023042A8 -ov11_023042A8: ; 0x023042A8 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - sub sp, sp, #0x400 - mov r4, r0 - bl sub_02027B1C - ldr r0, _02304390 ; =ov11_02324D58 - ldr r2, _02304394 ; =ov11_02324D60 - ldr r1, [r0, #4] - mov r0, r4 - ldr r3, [r1, #0x10] - mov r1, #1 - ldr r3, [r2, r3, lsl #2] - mov r2, #3 - bl DrawTextInWindow - ldr r0, _02304390 ; =ov11_02324D58 - ldr r3, [r0, #4] - ldr r0, [r3, #0x10] - cmp r0, #0 - beq _02304300 - cmp r0, #1 - beq _02304314 - b _02304328 -_02304300: - ldr r1, [r3, #0x18] - ldr r0, _02304398 ; =ov11_02322978 - mov r1, r1, lsl #1 - ldrsh r2, [r0, r1] - b _02304334 -_02304314: - ldr r1, [r3, #0x1c] - ldr r0, _0230439C ; =ov11_02322930 - mov r1, r1, lsl #1 - ldrsh r2, [r0, r1] - b _02304334 -_02304328: - ldr r0, [r3, #0x20] - mov r0, r0, lsl #0x10 - mov r2, r0, asr #0x10 -_02304334: - ldr r0, _02304390 ; =ov11_02324D58 - str r2, [r3, #0x1bc] - ldr r1, [r0, #4] - orr r2, r2, #0x10000 - str r2, [r1, #0x1cc] - ldr r1, [r0, #4] - ldr r2, _023043A0 ; =ov11_023229B8 - add ip, r1, #0x1bc - ldr r3, _023043A4 ; =0x0000C402 - add r0, sp, #4 - mov r1, #0x400 - str ip, [sp] - bl PreprocessString - add r3, sp, #4 - mov r0, r4 - mov r1, #0x3c - mov r2, #3 - bl DrawTextInWindow - mov r0, r4 - bl UpdateWindow - add sp, sp, #4 - add sp, sp, #0x400 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_02304390: .word ov11_02324D58 -_02304394: .word ov11_02324D60 -_02304398: .word ov11_02322978 -_0230439C: .word ov11_02322930 -_023043A0: .word ov11_023229B8 -_023043A4: .word 0x0000C402 - arm_func_end ov11_023042A8 - - arm_func_start ov11_023043A8 -ov11_023043A8: ; 0x023043A8 - ldr ip, _023043B4 ; =InitMenu - ldr r0, _023043B8 ; =ov11_023229DC - bx ip - .align 2, 0 -_023043B4: .word InitMenu -_023043B8: .word ov11_023229DC - arm_func_end ov11_023043A8 - - arm_func_start ov11_023043BC -ov11_023043BC: ; 0x023043BC - stmdb sp!, {r3, lr} - mov r0, #8 - mov r1, r0 - bl MemAlloc - ldr r1, _023043E4 ; =ov11_02324D6C - mov r2, #0 - str r0, [r1] - str r2, [r0, #4] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_023043E4: .word ov11_02324D6C - arm_func_end ov11_023043BC - - arm_func_start ov11_023043E8 -ov11_023043E8: ; 0x023043E8 - stmdb sp!, {r3, lr} - ldr r0, _02304410 ; =ov11_02324D6C - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _02304410 ; =ov11_02324D6C - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02304410: .word ov11_02324D6C - arm_func_end ov11_023043E8 - - arm_func_start ov11_02304414 -ov11_02304414: ; 0x02304414 - stmdb sp!, {r3, lr} - ldr r0, _02304510 ; =ov11_02324D6C - ldr r0, [r0] - ldr r0, [r0, #4] - cmp r0, #0 - beq _02304440 - cmp r0, #1 - beq _02304478 - cmp r0, #2 - beq _023044C4 - b _02304508 -_02304440: - mov r0, #9 - bl sub_02067584 - cmp r0, #0 - beq _02304460 - mvn r0, #0 - bl ReturnScriptMenuResult - mov r0, #4 - ldmia sp!, {r3, pc} -_02304460: - bl ov11_0230D71C - ldr r0, _02304510 ; =ov11_02324D6C - mov r1, #1 - ldr r0, [r0] - str r1, [r0, #4] - b _02304508 -_02304478: - bl ov11_0230D220 - cmp r0, #0 - bne _02304508 - mov r0, #9 - bl sub_020668B4 - cmp r0, #0 - bne _023044AC - bl sub_02067664 - mvn r0, #0 - bl ReturnScriptMenuResult - bl ov11_0230D000 - mov r0, #4 - ldmia sp!, {r3, pc} -_023044AC: - bl ov11_02310BDC - ldr r0, _02304510 ; =ov11_02324D6C - mov r1, #2 - ldr r0, [r0] - str r1, [r0, #4] - b _02304508 -_023044C4: - bl sub_02066A44 - cmp r0, #0 - beq _02304508 - mvn r1, #0 - cmp r0, r1 - bne _023044E8 - mov r0, r1 - bl ReturnScriptMenuResult - b _023044F8 -_023044E8: - cmp r0, #1 - bne _023044F8 - bl sub_020674CC - bl ReturnScriptMenuResult -_023044F8: - bl sub_02067664 - bl ov11_0230D000 - mov r0, #4 - ldmia sp!, {r3, pc} -_02304508: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02304510: .word ov11_02324D6C - arm_func_end ov11_02304414 - - arm_func_start ov11_02304514 -ov11_02304514: ; 0x02304514 - ldr ip, _02304520 ; =InitMenu - ldr r0, _02304524 ; =ov11_023229EC - bx ip - .align 2, 0 -_02304520: .word InitMenu -_02304524: .word ov11_023229EC - arm_func_end ov11_02304514 - - arm_func_start ov11_02304528 -ov11_02304528: ; 0x02304528 - stmdb sp!, {r3, lr} - mov r0, #0xc - mov r1, #8 - bl MemAlloc - ldr r1, _02304550 ; =ov11_02324D70 - mov r2, #0 - str r0, [r1] - str r2, [r0, #4] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02304550: .word ov11_02324D70 - arm_func_end ov11_02304528 - - arm_func_start ov11_02304554 -ov11_02304554: ; 0x02304554 - stmdb sp!, {r3, lr} - ldr r0, _0230457C ; =ov11_02324D70 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _0230457C ; =ov11_02324D70 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230457C: .word ov11_02324D70 - arm_func_end ov11_02304554 - - arm_func_start ov11_02304580 -ov11_02304580: ; 0x02304580 - stmdb sp!, {r3, lr} - ldr r0, _02304660 ; =ov11_02324D70 - ldr r1, [r0] - ldr r0, [r1, #4] - cmp r0, #0 - beq _023045AC - cmp r0, #1 - beq _023045E0 - cmp r0, #2 - beq _02304630 - b _02304658 -_023045AC: - bl ov11_022E8340 - cmp r0, #0 - bne _023045CC - bl ov11_022E84AC - mvn r0, #0 - bl ReturnScriptMenuResult - mov r0, #4 - ldmia sp!, {r3, pc} -_023045CC: - ldr r0, _02304660 ; =ov11_02324D70 - mov r1, #1 - ldr r0, [r0] - str r1, [r0, #4] - b _02304658 -_023045E0: - bl ov11_022E83F8 - cmp r0, #0 - beq _02304658 - cmp r0, #1 - bne _02304608 - mvn r0, #0 - bl ReturnScriptMenuResult - bl ov11_022E84AC - mov r0, #4 - ldmia sp!, {r3, pc} -_02304608: - cmp r0, #2 - bne _02304658 - ldr r0, _02304660 ; =ov11_02324D70 - mov r3, #0xa - ldr r2, [r0] - mov r1, #2 - str r3, [r2, #8] - ldr r0, [r0] - str r1, [r0, #4] - b _02304658 -_02304630: - ldr r0, [r1, #8] - cmp r0, #0 - subgt r0, r0, #1 - strgt r0, [r1, #8] - bgt _02304658 - bl ov11_022E84AC - mov r0, #0 - bl ov11_022E6EE8 - mov r0, #3 - ldmia sp!, {r3, pc} -_02304658: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02304660: .word ov11_02324D70 - arm_func_end ov11_02304580 - - arm_func_start ov11_02304664 -ov11_02304664: ; 0x02304664 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, _02304684 ; =ov11_023229FC - bl InitMenu - cmp r0, #0 - ldrne r0, _02304688 ; =ov11_0238A084 - strne r4, [r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_02304684: .word ov11_023229FC -_02304688: .word ov11_0238A084 - arm_func_end ov11_02304664 - - arm_func_start ov11_0230468C -ov11_0230468C: ; 0x0230468C - stmdb sp!, {r3, lr} - mov r0, #0xc - mov r1, #8 - bl MemAlloc - ldr r1, _023046B4 ; =ov11_02324D74 - mov r2, #0 - str r0, [r1] - str r2, [r0, #4] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_023046B4: .word ov11_02324D74 - arm_func_end ov11_0230468C - - arm_func_start ov11_023046B8 -ov11_023046B8: ; 0x023046B8 - stmdb sp!, {r3, lr} - ldr r0, _023046E0 ; =ov11_02324D74 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _023046E0 ; =ov11_02324D74 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_023046E0: .word ov11_02324D74 - arm_func_end ov11_023046B8 - - arm_func_start ov11_023046E4 -ov11_023046E4: ; 0x023046E4 - stmdb sp!, {r3, lr} - ldr r0, _02304880 ; =ov11_02324D74 - ldr r0, [r0] - ldr r0, [r0, #4] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _02304878 -_02304700: ; jump table - b _02304718 ; case 0 - b _0230473C ; case 1 - b _023047AC ; case 2 - b _023047C8 ; case 3 - b _023047EC ; case 4 - b _02304810 ; case 5 -_02304718: - bl ov11_0230D220 - cmp r0, #0 - bne _02304878 - bl ov11_0230D71C - ldr r0, _02304880 ; =ov11_02324D74 - mov r1, #1 - ldr r0, [r0] - str r1, [r0, #4] - b _02304878 -_0230473C: - bl ov11_0230D220 - cmp r0, #0 - bne _02304878 - ldr r0, _02304884 ; =ov11_0238A084 - ldr r0, [r0] - cmp r0, #0 - moveq r0, #0 - movne r0, #1 - bl sub_020664B8 - cmp r0, #0 - bne _0230477C - bl sub_02066888 - mvn r0, #0 - bl ReturnScriptMenuResult - mov r0, #4 - ldmia sp!, {r3, pc} -_0230477C: - ldr r0, _02304884 ; =ov11_0238A084 - ldr r0, [r0] - cmp r0, #0 - bne _02304794 - bl ov11_02310BF0 - b _02304798 -_02304794: - bl ov11_02310C04 -_02304798: - ldr r0, _02304880 ; =ov11_02324D74 - mov r1, #2 - ldr r0, [r0] - str r1, [r0, #4] - b _02304878 -_023047AC: - bl ov11_0230D220 - cmp r0, #0 - bne _02304878 - ldr r0, _02304880 ; =ov11_02324D74 - mov r1, #3 - ldr r0, [r0] - str r1, [r0, #4] -_023047C8: - bl sub_02066510 - cmp r0, #0 - beq _02304878 - ldr r1, _02304880 ; =ov11_02324D74 - mov r2, #4 - ldr r3, [r1] - str r0, [r3, #8] - ldr r0, [r1] - str r2, [r0, #4] -_023047EC: - bl ov11_0230D220 - cmp r0, #0 - bne _02304878 - bl ov11_0230D71C - ldr r0, _02304880 ; =ov11_02324D74 - mov r1, #5 - ldr r0, [r0] - str r1, [r0, #4] - b _02304878 -_02304810: - bl ov11_0230D220 - cmp r0, #0 - bne _02304878 - ldr r0, _02304880 ; =ov11_02324D74 - ldr r1, _02304888 ; =ov11_02322A0C - ldr r2, [r0] - b _0230483C -_0230482C: - ldr r0, [r2, #8] - cmp r0, r3 - beq _02304848 - add r1, r1, #8 -_0230483C: - ldr r3, [r1] - cmp r3, #0 - bne _0230482C -_02304848: - cmp r3, #0 - beq _02304864 - ldrsh r0, [r1, #4] - bl sub_0206C110 - mov r0, #1 - bl ReturnScriptMenuResult - b _0230486C -_02304864: - mov r0, #0 - bl ReturnScriptMenuResult -_0230486C: - bl sub_02066888 - mov r0, #4 - ldmia sp!, {r3, pc} -_02304878: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02304880: .word ov11_02324D74 -_02304884: .word ov11_0238A084 -_02304888: .word ov11_02322A0C - arm_func_end ov11_023046E4 - - arm_func_start ov11_0230488C -ov11_0230488C: ; 0x0230488C - stmdb sp!, {r3, lr} - mov r0, #0xe - bl sub_02067584 - cmp r0, #0 - moveq r0, #1 - movne r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end ov11_0230488C - - arm_func_start ov11_023048AC -ov11_023048AC: ; 0x023048AC - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, _023048CC ; =ov11_02322AB4 - bl InitMenu - cmp r0, #0 - ldrne r0, _023048D0 ; =ov11_0238A088 - strne r4, [r0] - ldmia sp!, {r4, pc} - .align 2, 0 -_023048CC: .word ov11_02322AB4 -_023048D0: .word ov11_0238A088 - arm_func_end ov11_023048AC - - arm_func_start ov11_023048D4 -ov11_023048D4: ; 0x023048D4 - stmdb sp!, {r3, lr} - mov r0, #0xc - mov r1, #8 - bl MemAlloc - ldr r1, _023048FC ; =ov11_02324D78 - mov r2, #0 - str r0, [r1] - str r2, [r0, #4] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_023048FC: .word ov11_02324D78 - arm_func_end ov11_023048D4 - - arm_func_start ov11_02304900 -ov11_02304900: ; 0x02304900 - stmdb sp!, {r3, lr} - ldr r0, _02304928 ; =ov11_02324D78 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _02304928 ; =ov11_02324D78 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02304928: .word ov11_02324D78 - arm_func_end ov11_02304900 - - arm_func_start ov11_0230492C -ov11_0230492C: ; 0x0230492C - stmdb sp!, {r3, lr} - ldr r0, _02304ABC ; =ov11_02324D78 - ldr r0, [r0] - ldr r0, [r0, #4] - cmp r0, #5 - addls pc, pc, r0, lsl #2 - b _02304AB4 -_02304948: ; jump table - b _02304960 ; case 0 - b _023049A4 ; case 1 - b _023049D0 ; case 2 - b _023049EC ; case 3 - b _02304A10 ; case 4 - b _02304A34 ; case 5 -_02304960: - bl ov11_0230D220 - cmp r0, #0 - bne _02304AB4 - mov r0, #0xe - bl sub_02067584 - cmp r0, #0 - beq _0230498C - mvn r0, #0 - bl ReturnScriptMenuResult - mov r0, #4 - ldmia sp!, {r3, pc} -_0230498C: - bl ov11_0230D71C - ldr r0, _02304ABC ; =ov11_02324D78 - mov r1, #1 - ldr r0, [r0] - str r1, [r0, #4] - b _02304AB4 -_023049A4: - bl ov11_0230D220 - cmp r0, #0 - bne _02304AB4 - mov r0, #0xe - bl sub_020668B4 - bl ov11_02310BDC - ldr r0, _02304ABC ; =ov11_02324D78 - mov r1, #2 - ldr r0, [r0] - str r1, [r0, #4] - b _02304AB4 -_023049D0: - bl ov11_0230D220 - cmp r0, #0 - bne _02304AB4 - ldr r0, _02304ABC ; =ov11_02324D78 - mov r1, #3 - ldr r0, [r0] - str r1, [r0, #4] -_023049EC: - bl sub_02066A44 - cmp r0, #0 - beq _02304AB4 - ldr r1, _02304ABC ; =ov11_02324D78 - mov r2, #4 - ldr r3, [r1] - str r0, [r3, #8] - ldr r0, [r1] - str r2, [r0, #4] -_02304A10: - bl ov11_0230D220 - cmp r0, #0 - bne _02304AB4 - bl ov11_0230D71C - ldr r0, _02304ABC ; =ov11_02324D78 - mov r1, #5 - ldr r0, [r0] - str r1, [r0, #4] - b _02304AB4 -_02304A34: - bl ov11_0230D220 - cmp r0, #0 - bne _02304AB4 - ldr r1, _02304ABC ; =ov11_02324D78 - mvn r0, #0 - ldr r2, [r1] - ldr r1, [r2, #8] - cmp r1, r0 - bne _02304A60 - bl ov11_02300D5C - b _02304AA8 -_02304A60: - ldr r1, _02304AC0 ; =ov11_02322AC4 - b _02304A78 -_02304A68: - ldr r0, [r2, #8] - cmp r0, r3 - beq _02304A84 - add r1, r1, #8 -_02304A78: - ldr r3, [r1] - cmp r3, #0 - bne _02304A68 -_02304A84: - cmp r3, #0 - beq _02304AA0 - ldrsh r0, [r1, #4] - bl sub_0206C110 - mov r0, #6 - bl ov11_0230113C - b _02304AA8 -_02304AA0: - mov r0, #1 - bl ov11_0230113C -_02304AA8: - bl sub_02067664 - mov r0, #4 - ldmia sp!, {r3, pc} -_02304AB4: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02304ABC: .word ov11_02324D78 -_02304AC0: .word ov11_02322AC4 - arm_func_end ov11_0230492C - - arm_func_start IsBagNotEmpty -IsBagNotEmpty: ; 0x02304AC4 - stmdb sp!, {r3, lr} - bl GetNbItemsInBag - cmp r0, #0 - movgt r0, #1 - movle r0, #0 - and r0, r0, #0xff - ldmia sp!, {r3, pc} - arm_func_end IsBagNotEmpty - - arm_func_start ov11_02304AE0 -ov11_02304AE0: ; 0x02304AE0 - ldr ip, _02304AEC ; =InitMenu - ldr r0, _02304AF0 ; =ov11_02322B6C - bx ip - .align 2, 0 -_02304AEC: .word InitMenu -_02304AF0: .word ov11_02322B6C - arm_func_end ov11_02304AE0 - - arm_func_start ov11_02304AF4 -ov11_02304AF4: ; 0x02304AF4 - stmdb sp!, {r3, lr} - mov r0, #8 - mov r1, r0 - bl MemAlloc - ldr r1, _02304B1C ; =ov11_02324D7C - mov r2, #0 - str r0, [r1] - str r2, [r0, #4] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02304B1C: .word ov11_02324D7C - arm_func_end ov11_02304AF4 - - arm_func_start ov11_02304B20 -ov11_02304B20: ; 0x02304B20 - stmdb sp!, {r3, lr} - ldr r0, _02304B48 ; =ov11_02324D7C - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _02304B48 ; =ov11_02324D7C - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02304B48: .word ov11_02324D7C - arm_func_end ov11_02304B20 - - arm_func_start ov11_02304B4C -ov11_02304B4C: ; 0x02304B4C - stmdb sp!, {r3, lr} - ldr r0, _02304BC0 ; =ov11_02324D7C - ldr r0, [r0] - ldr r0, [r0, #4] - cmp r0, #0 - beq _02304B70 - cmp r0, #1 - beq _02304B9C - b _02304BB8 -_02304B70: - bl ov11_02307244 - cmp r0, #0 - bne _02304B88 - bl ov11_02308D1C - mov r0, #4 - ldmia sp!, {r3, pc} -_02304B88: - ldr r0, _02304BC0 ; =ov11_02324D7C - mov r1, #1 - ldr r0, [r0] - str r1, [r0, #4] - b _02304BB8 -_02304B9C: - bl ov11_02307334 - cmp r0, #0 - beq _02304BB8 - bl ov11_02300D5C - bl ov11_02308D1C - mov r0, #4 - ldmia sp!, {r3, pc} -_02304BB8: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02304BC0: .word ov11_02324D7C - arm_func_end ov11_02304B4C - - arm_func_start ov11_02304BC4 -ov11_02304BC4: ; 0x02304BC4 - ldr ip, _02304BD0 ; =InitMenu - ldr r0, _02304BD4 ; =ov11_02322B7C - bx ip - .align 2, 0 -_02304BD0: .word InitMenu -_02304BD4: .word ov11_02322B7C - arm_func_end ov11_02304BC4 - - arm_func_start ov11_02304BD8 -ov11_02304BD8: ; 0x02304BD8 - stmdb sp!, {r3, lr} - mov r0, #8 - mov r1, r0 - bl MemAlloc - ldr r1, _02304C00 ; =ov11_02324D80 - mov r2, #0 - str r0, [r1] - str r2, [r0, #4] - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02304C00: .word ov11_02324D80 - arm_func_end ov11_02304BD8 - - arm_func_start ov11_02304C04 -ov11_02304C04: ; 0x02304C04 - stmdb sp!, {r3, lr} - ldr r0, _02304C2C ; =ov11_02324D80 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _02304C2C ; =ov11_02324D80 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02304C2C: .word ov11_02324D80 - arm_func_end ov11_02304C04 - - arm_func_start ov11_02304C30 -ov11_02304C30: ; 0x02304C30 - stmdb sp!, {r3, lr} - ldr r0, _02304CA8 ; =ov11_02324D80 - ldr r0, [r0] - ldr r0, [r0, #4] - cmp r0, #0 - beq _02304C54 - cmp r0, #1 - beq _02304C84 - b _02304CA0 -_02304C54: - mov r0, #0 - bl ov11_02309040 - cmp r0, #0 - bne _02304C70 - bl ov11_02309DF8 - mov r0, #4 - ldmia sp!, {r3, pc} -_02304C70: - ldr r0, _02304CA8 ; =ov11_02324D80 - mov r1, #1 - ldr r0, [r0] - str r1, [r0, #4] - b _02304CA0 -_02304C84: - bl ov11_023090DC - cmp r0, #0 - beq _02304CA0 - bl ov11_02309DF8 - bl ov11_02300D5C - mov r0, #4 - ldmia sp!, {r3, pc} -_02304CA0: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02304CA8: .word ov11_02324D80 - arm_func_end ov11_02304C30 - - arm_func_start ov11_02304CAC -ov11_02304CAC: ; 0x02304CAC - stmdb sp!, {r3, r4, r5, lr} - ldr r2, _02304D8C ; =ov11_02324D84 - mov r5, r0 - ldr r0, [r2] - mov r4, r1 - cmp r0, #0 - bne _02304CDC - ldr r0, _02304D90 ; =0x000004C4 - mov r1, #8 - bl MemAlloc - ldr r1, _02304D8C ; =ov11_02324D84 - str r0, [r1] -_02304CDC: - ldr r0, _02304D8C ; =ov11_02324D84 - ldrh r1, [r5] - ldr r2, [r0] - strh r1, [r2] - ldrh r1, [r5, #2] - add r0, r2, #0x54 - strh r1, [r2, #2] - ldrh r1, [r5, #4] - strh r1, [r2, #4] - bl ItemZInit - ldr r0, _02304D8C ; =ov11_02324D84 - ldr r0, [r0] - add r0, r0, #0x15c - bl InitPreprocessorArgs - ldr r0, _02304D8C ; =ov11_02324D84 - mov r3, #0 - ldr r1, [r0] - sub r2, r3, #2 - str r3, [r1, #0x50] - ldr r1, [r0] - strb r2, [r1, #0x48] - ldr r1, [r0] - strb r2, [r1, #0x4a] - ldr r1, [r0] - strb r2, [r1, #0x49] - ldr r1, [r0] - strb r2, [r1, #0x4b] - ldr r1, [r0] - str r3, [r1, #0x44] -_02304D50: - ldr r1, [r0] - add r1, r1, r3 - strb r3, [r1, #0x4bc] - add r3, r3, #1 - cmp r3, #5 - blt _02304D50 - ldr r1, _02304D8C ; =ov11_02324D84 - mov r0, #0 - ldr r2, [r1] - str r0, [r2, #0x1ac] - ldr r1, [r1] - strb r4, [r1, #0x4c] - bl ov11_02304DC8 - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02304D8C: .word ov11_02324D84 -_02304D90: .word 0x000004C4 - arm_func_end ov11_02304CAC - - arm_func_start ov11_02304D94 -ov11_02304D94: ; 0x02304D94 - stmdb sp!, {r4, lr} - ldr ip, _02304DC4 ; =ov11_02324D84 - mov r3, r2 - ldr r2, [ip] - mov lr, #0 - add ip, r2, r1 - mov r2, #1 - mov r4, r0 - strb lr, [ip, #6] - bl ov10_022BD394 - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_02304DC4: .word ov11_02324D84 - arm_func_end ov11_02304D94 - - arm_func_start ov11_02304DC8 -ov11_02304DC8: ; 0x02304DC8 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x198 - ldr r1, _02305444 ; =ov11_02324D84 - ldr r2, [r1] - str r0, [r2, #0x38] - ldr r4, [r1] - ldr r0, [r4, #0x38] - cmp r0, #0x17 - addls pc, pc, r0, lsl #2 - b _0230543C -_02304DF0: ; jump table - b _02304E50 ; case 0 - b _02304EA8 ; case 1 - b _02304EDC ; case 2 - b _02304F24 ; case 3 - b _0230527C ; case 4 - b _023052D0 ; case 5 - b _023050BC ; case 6 - b _0230543C ; case 7 - b _0230543C ; case 8 - b _0230543C ; case 9 - b _0230543C ; case 10 - b _02305138 ; case 11 - b _0230523C ; case 12 - b _02305300 ; case 13 - b _02305310 ; case 14 - b _02305374 ; case 15 - b _023053CC ; case 16 - b _0230543C ; case 17 - b _0230543C ; case 18 - b _02305348 ; case 19 - b _02304FE4 ; case 20 - b _0230508C ; case 21 - b _0230543C ; case 22 - b _02305408 ; case 23 -_02304E50: - bl IsBagFull - cmp r0, #0 - beq _02304E90 - ldr r0, _02305444 ; =ov11_02324D84 - ldr r1, [r0] - ldrb r0, [r1, #0x4c] - cmp r0, #0 - beq _02304E80 - mov r0, #0x17 - str r0, [r1, #0x38] - bl ov11_02305488 - b _0230543C -_02304E80: - mov r0, #1 - str r0, [r1, #0x38] - bl ov11_02305488 - b _02304EA8 -_02304E90: - ldr r0, _02305444 ; =ov11_02324D84 - mov r1, #0xc - ldr r0, [r0] - str r1, [r0, #0x38] - bl ov11_02305488 - b _0230543C -_02304EA8: - ldr r0, _02305444 ; =ov11_02324D84 - mov r1, #3 - ldr r0, [r0] - str r1, [r0, #0x3c] - bl ov11_02306194 - ldr r0, _02305444 ; =ov11_02324D84 - ldr r2, _02305448 ; =0x000002D7 - ldr r3, [r0] - mov r1, #8 - ldrsb r0, [r3, #0x48] - add r3, r3, #0x15c - bl ShowStringIdInDialogueBox - b _0230543C -_02304EDC: - mov r0, #3 - str r0, [r4, #0x3c] - bl ov11_02306194 - ldr r0, _02305444 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x48] - bl ShowDialogueBox - ldr r0, _02305444 ; =ov11_02324D84 - mov r3, #3 - ldr r1, [r0] -#ifdef JAPAN - ldr r2, _02306AB0 ; =0x00002FB1 -#else - rsb r2, r3, #0x2e0 -#endif - str r3, [r1, #0x3c] - ldr r3, [r0] - mov r1, #8 - ldrsb r0, [r3, #0x48] - add r3, r3, #0x15c - bl ShowStringIdInDialogueBox - b _0230543C -_02304F24: -#ifdef JAPAN - ldr r1, _02306AB4 ; =0x00002FAC - add r0, r4, #0x1b0 -#else - add r0, r4, #0x1b0 - mov r1, #0x2d8 -#endif - bl GetStringFromFileVeneer - mov r1, #2 - add r0, sp, #0x18 - str r1, [r4, #0x2b0] - bl InitPreprocessorArgs - mov r1, #0 - ldr r0, _02305444 ; =ov11_02324D84 - str r1, [sp] - ldr r1, [r0] - ldr r2, _0230544C ; =ov11_02322B8C - add r0, r1, #0x5a - mov r3, #1 - bl MaybeGetFormattedItemName - ldr r0, _02305444 ; =ov11_02324D84 - ldr r2, _02305450 ; =0x000002D9 - ldr r5, [r0] - add ip, sp, #0x18 - ldrsh r3, [r5, #4] - add r0, r4, #0x2b4 - mov r1, #0x100 - orr r3, r3, #0x10000 - str r3, [sp, #0x28] - ldrh lr, [r5, #2] - mov r3, #0 - str lr, [sp, #0x3c] - ldrb lr, [r5] - str lr, [sp, #0x40] - str ip, [sp] - bl PreprocessStringFromId - mov r2, #3 - str r2, [r4, #0x3b4] - mov r0, #0 - strb r0, [r4, #0x3b8] - mov r1, #1 - str r1, [r4, #0x4b8] - str r2, [sp] - ldr r3, _02305444 ; =ov11_02324D84 - mov r1, #0x11 - ldr r3, [r3] - mov r2, r0 - add r3, r3, #0x1b0 - bl CreateSimpleMenu - ldr r1, _02305444 ; =ov11_02324D84 - ldr r1, [r1] - strb r0, [r1, #0x4a] - b _0230543C -_02304FE4: - ldr r0, [r4, #0x44] - add r1, r4, #0x54 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl CopyItemAtIdx - ldr r0, _02305444 ; =ov11_02324D84 - mov r4, #0 - ldr lr, [r0] - mov r3, #0x15 - ldrh ip, [lr, #0x54] - ldr r2, _0230544C ; =ov11_02322B8C - add r1, sp, #0xc - strh ip, [sp, #0xc] - ldrh ip, [lr, #0x56] - strh ip, [sp, #0xe] - ldrh ip, [lr, #0x58] - strh ip, [sp, #0x10] - strb r4, [sp, #0xc] - str r3, [lr, #0x3c] - ldr r0, [r0] - add r0, r0, #0xda - bl MaybeGetColoredFormattedItemName - ldr r0, _02305444 ; =ov11_02324D84 - ldr r1, [r0] - add r0, r1, #0xda - str r0, [r1, #0x194] - bl ov11_02306194 - ldr r0, _02305444 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x48] - bl ShowDialogueBox - ldr r0, _02305444 ; =ov11_02324D84 - mov r4, #0x15 - ldr r3, [r0] -#ifdef JAPAN - ldr r2, _02306AC0 ; =0x00002FC5 - str r4, [r3, #0x3c] - ldr r3, [r0] - mov r1, #8 -#else - mov r1, #8 - str r4, [r3, #0x3c] - ldr r3, [r0] - add r2, r4, #0x2bc -#endif - ldrsb r0, [r3, #0x48] - add r3, r3, #0x15c - bl ShowStringIdInDialogueBox - b _0230543C -_0230508C: - mov r4, #3 - str r4, [sp, #0x68] - ldr r0, _02305454 ; =ov11_02322B98 - ldr r1, _02305458 ; =0x00300033 - ldr r3, _0230545C ; =ov11_02322BC8 - add r2, sp, #0x68 - str r4, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _02305444 ; =ov11_02324D84 - ldr r1, [r1] - strb r0, [r1, #0x4a] - b _0230543C -_023050BC: - ldr r0, [r4, #0x44] - add r1, r4, #0x54 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl CopyItemAtIdx - ldr r4, _02305444 ; =ov11_02324D84 - ldr r0, _02305460 ; =ov11_02322BA8 - ldr lr, [r4] - ldr r1, _02305464 ; =0x00001013 - ldrsh ip, [lr, #0x58] - ldr r3, _02305468 ; =0x000008E4 - mov r2, #0 - str ip, [lr, #0x16c] - ldr lr, [r4] - ldrh ip, [lr, #0x56] - add ip, ip, #0xbc - str ip, [lr, #0x174] - ldr r4, [r4] - add ip, r4, #0x15c - str ip, [sp] - ldrsh r4, [r4, #0x58] -#if defined(EUROPE) - add r4, r4, #0xd3 - add r4, r4, #0x2900 -#elif defined(JAPAN) - add r4, r4, #0xce - add r4, r4, #0x4100 -#else - add r4, r4, #0xd1 - add r4, r4, #0x2900 -#endif - mov r4, r4, lsl #0x10 - mov r4, r4, lsr #0x10 - stmib sp, {r4, ip} - bl CreateScrollBoxSingle - ldr r1, _02305444 ; =ov11_02324D84 - ldr r1, [r1] - strb r0, [r1, #0x4b] - b _0230543C -_02305138: - ldr r0, [r4, #0x44] - add r1, r4, #0x54 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl CopyItemAtIdx - ldr r0, _02305444 ; =ov11_02324D84 - mov r1, #0 - ldr r2, [r0] - ldrh r0, [r2, #0x54] - strh r0, [sp, #0x12] - ldrh r0, [r2, #0x56] - strh r0, [sp, #0x14] - ldrh r0, [r2, #0x58] - strh r0, [sp, #0x16] - strb r1, [sp, #0x12] - bl ov11_02306194 - ldr r0, _02305444 ; =ov11_02324D84 - ldrsh r3, [sp, #0x16] - ldr r2, [r0] - add r1, sp, #0x12 - str r3, [r2, #0x16c] - ldr r0, [r0] - ldr r2, _0230544C ; =ov11_02322B8C - add r0, r0, #0x5a - bl MaybeGetColoredFormattedItemName - ldr r0, _02305444 ; =ov11_02324D84 - ldr r2, _0230544C ; =ov11_02322B8C - ldr r3, [r0] - add r1, r3, #0x5a - str r1, [r3, #0x194] - ldr r3, [r0] - ldrsh r1, [r3, #4] - str r1, [r3, #0x174] - ldr r1, [r0] - add r0, r1, #0xda - bl MaybeGetColoredFormattedItemName - ldr r0, _02305444 ; =ov11_02324D84 - ldr r2, _0230546C ; =0x000002DF - ldr r4, [r0] - mov r1, #0x18 - add r3, r4, #0xda - str r3, [r4, #0x198] - ldr r3, [r0] - ldrsb r0, [r3, #0x48] - add r3, r3, #0x15c - bl ShowStringIdInDialogueBox - ldr r0, _02305444 ; =ov11_02324D84 - ldr r0, [r0] - ldr r0, [r0, #0x44] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl RemoveItemNoHole - ldr r0, _02305444 ; =ov11_02324D84 - ldr r0, [r0] - bl AddItemToBagNoHeld - cmp r0, #0 - ldrne r0, _02305444 ; =ov11_02324D84 - movne r1, #7 - ldrne r0, [r0] - strne r1, [r0, #0x3c] - ldreq r0, _02305444 ; =ov11_02324D84 - moveq r1, #0xa - ldreq r0, [r0] - streq r1, [r0, #0x3c] - b _0230543C -_0230523C: - mov r0, r4 - bl AddItemToBagNoHeld - cmp r0, #0 - beq _02305264 - ldr r0, _02305444 ; =ov11_02324D84 - mov r1, #8 - ldr r0, [r0] - str r1, [r0, #0x38] - bl ov11_02305488 - b _0230543C -_02305264: - ldr r0, _02305444 ; =ov11_02324D84 - mov r1, #0xa - ldr r0, [r0] - str r1, [r0, #0x38] - bl ov11_02305488 - b _0230543C -_0230527C: - add r0, r4, #0x5a - str r0, [r4, #0x19c] - ldr r0, [r1] - mov r1, #5 - str r1, [r0, #0x3c] - bl ov11_02306194 - ldr r0, _02305444 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x48] - bl ShowDialogueBox - ldr r0, _02305444 ; =ov11_02324D84 - mov r3, #5 - ldr r1, [r0] - ldr r2, _02305470 ; =0x000002D6 - str r3, [r1, #0x3c] - ldr r3, [r0] - mov r1, #8 - ldrsb r0, [r3, #0x48] - add r3, r3, #0x15c - bl ShowStringIdInDialogueBox - b _0230543C -_023052D0: - mov r4, #3 - str r4, [sp, #0x100] - ldr r0, _02305454 ; =ov11_02322B98 - ldr r1, _02305458 ; =0x00300033 - ldr r3, _0230545C ; =ov11_02322BC8 - add r2, sp, #0x100 - str r4, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _02305444 ; =ov11_02324D84 - ldr r1, [r1] - strb r0, [r1, #0x4a] - b _0230543C -_02305300: - mov r0, #9 - str r0, [r4, #0x38] - bl ov11_02305488 - b _0230543C -_02305310: - mov r0, #0xa - str r0, [r4, #0x3c] - bl ov11_02306194 - ldr r0, _02305444 ; =ov11_02324D84 - ldr r2, _02305474 ; =0x000002DE - ldr r4, [r0] - mov r1, #0x18 - add r3, r4, #0x5a - str r3, [r4, #0x19c] - ldr r3, [r0] - ldrsb r0, [r3, #0x48] - add r3, r3, #0x15c - bl ShowStringIdInDialogueBox - b _0230543C -_02305348: - ldr r0, _02305478 ; =ov11_02322BB8 - mov r4, #3 - ldr r3, _0230547C ; =ov11_02322BE0 - mov r1, #0x13 - mov r2, #0 - str r4, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _02305444 ; =ov11_02324D84 - ldr r1, [r1] - strb r0, [r1, #0x4a] - b _0230543C -_02305374: - ldrsb r0, [r4, #0x48] - bl CloseDialogueBox - ldr r0, _02305444 ; =ov11_02324D84 - mvn r2, #1 - ldr r1, [r0] - strb r2, [r1, #0x48] - ldr r4, [r0] - bl GetNbItemsInBag - ldr r2, _02305480 ; =ov11_02304D94 - add r1, r4, #0xbc - str r2, [sp] - add r1, r1, #0x400 - str r1, [sp, #4] - mov r1, #0 - str r1, [sp, #8] - ldr r2, [r4, #0x44] - add r3, r4, #6 - bl CreateInventoryMenuOuter - ldr r1, _02305444 ; =ov11_02324D84 - ldr r1, [r1] - strb r0, [r1, #0x49] - b _0230543C -_023053CC: - bl GetNbItemsInBag - ldr r2, _02305480 ; =ov11_02304D94 - add r1, r4, #0xbc - str r2, [sp] - add r1, r1, #0x400 - str r1, [sp, #4] - mov r1, #0 - str r1, [sp, #8] - ldr r2, [r4, #0x44] - add r3, r4, #6 - bl CreateInventoryMenuOuter - ldr r1, _02305444 ; =ov11_02324D84 - ldr r1, [r1] - strb r0, [r1, #0x49] - b _0230543C -_02305408: - mov r0, #0xf - str r0, [r4, #0x3c] - ldr r0, [r1] - mov r1, #0x16 - str r1, [r0, #0x38] - bl ov11_02306194 - ldr r0, _02305444 ; =ov11_02324D84 - ldr r2, _02305484 ; =0x000002DA - ldr r3, [r0] - mov r1, #0x18 - ldrsb r0, [r3, #0x48] - add r3, r3, #0x15c - bl ShowStringIdInDialogueBox -_0230543C: - add sp, sp, #0x198 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -#ifdef JAPAN -#define OV11_02304DC8_OFFSET 0x2CD4 -#else -#define OV11_02304DC8_OFFSET 0 -#endif -_02305444: .word ov11_02324D84 -_02305448: .word 0x000002D7 + OV11_02304DC8_OFFSET -#ifdef JAPAN -_02306AB0: .word 0x00002FB1 -_02306AB4: .word 0x00002FAC -#endif -_0230544C: .word ov11_02322B8C -_02305450: .word 0x000002D9 + OV11_02304DC8_OFFSET -#ifdef JAPAN -_02306AC0: .word 0x00002FC5 -#endif -_02305454: .word ov11_02322B98 -_02305458: .word 0x00300033 -_0230545C: .word ov11_02322BC8 -_02305460: .word ov11_02322BA8 -_02305464: .word 0x00001013 -#ifdef JAPAN -_02305468: .word 0x00001D3C -_0230546C: .word 0x00002FB3 -_02305470: .word 0x00002FCA -#else -_02305468: .word 0x000008E4 -_0230546C: .word 0x000002DF -_02305470: .word 0x000002D6 -#endif -_02305474: .word 0x000002DE + OV11_02304DC8_OFFSET -_02305478: .word ov11_02322BB8 -_0230547C: .word ov11_02322BE0 -_02305480: .word ov11_02304D94 -_02305484: .word 0x000002DA + OV11_02304DC8_OFFSET - arm_func_end ov11_02304DC8 - - arm_func_start ov11_02305488 -ov11_02305488: ; 0x02305488 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x198 - ldr r0, _02305AFC ; =ov11_02324D84 - ldr r4, [r0] - ldr r1, [r4, #0x38] - cmp r1, #0x17 - addls pc, pc, r1, lsl #2 - b _02305AF4 -_023054A8: ; jump table - b _02305508 ; case 0 - b _02305560 ; case 1 - b _02305594 ; case 2 - b _023055DC ; case 3 - b _02305934 ; case 4 - b _02305988 ; case 5 - b _02305774 ; case 6 - b _02305AF4 ; case 7 - b _02305AF4 ; case 8 - b _02305AF4 ; case 9 - b _02305AF4 ; case 10 - b _023057F0 ; case 11 - b _023058F4 ; case 12 - b _023059B8 ; case 13 - b _023059C8 ; case 14 - b _02305A2C ; case 15 - b _02305A84 ; case 16 - b _02305AF4 ; case 17 - b _02305AF4 ; case 18 - b _02305A00 ; case 19 - b _0230569C ; case 20 - b _02305744 ; case 21 - b _02305AF4 ; case 22 - b _02305AC0 ; case 23 -_02305508: - bl IsBagFull - cmp r0, #0 - beq _02305548 - ldr r0, _02305AFC ; =ov11_02324D84 - ldr r1, [r0] - ldrb r0, [r1, #0x4c] - cmp r0, #0 - beq _02305538 - mov r0, #0x17 - str r0, [r1, #0x38] - bl ov11_02305488 - b _02305AF4 -_02305538: - mov r0, #1 - str r0, [r1, #0x38] - bl ov11_02305488 - b _02305560 -_02305548: - ldr r0, _02305AFC ; =ov11_02324D84 - mov r1, #0xc - ldr r0, [r0] - str r1, [r0, #0x38] - bl ov11_02305488 - b _02305AF4 -_02305560: - ldr r0, _02305AFC ; =ov11_02324D84 - mov r1, #3 - ldr r0, [r0] - str r1, [r0, #0x3c] - bl ov11_02306194 - ldr r0, _02305AFC ; =ov11_02324D84 - ldr r2, _02305B00 ; =0x000002D7 - ldr r3, [r0] - mov r1, #8 - ldrsb r0, [r3, #0x48] - add r3, r3, #0x15c - bl ShowStringIdInDialogueBox - b _02305AF4 -_02305594: - mov r0, #3 - str r0, [r4, #0x3c] - bl ov11_02306194 - ldr r0, _02305AFC ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x48] - bl ShowDialogueBox - ldr r0, _02305AFC ; =ov11_02324D84 - mov r3, #3 - ldr r1, [r0] -#ifdef JAPAN - ldr r2, _02307174 ; =0x00002FB1 -#else - rsb r2, r3, #0x2e0 -#endif - str r3, [r1, #0x3c] - ldr r3, [r0] - mov r1, #8 - ldrsb r0, [r3, #0x48] - add r3, r3, #0x15c - bl ShowStringIdInDialogueBox - b _02305AF4 -_023055DC: -#ifdef JAPAN - ldr r1, _02307178 ; =0x00002FAC - add r0, r4, #0x1b0 -#else - add r0, r4, #0x1b0 - mov r1, #0x2d8 -#endif - bl GetStringFromFileVeneer - mov r1, #2 - add r0, sp, #0x148 - str r1, [r4, #0x2b0] - bl InitPreprocessorArgs - mov r1, #0 - ldr r0, _02305AFC ; =ov11_02324D84 - str r1, [sp] - ldr r1, [r0] - ldr r2, _02305B04 ; =ov11_02322B8C - add r0, r1, #0x5a - mov r3, #1 - bl MaybeGetFormattedItemName - ldr r0, _02305AFC ; =ov11_02324D84 - ldr r2, _02305B08 ; =0x000002D9 - ldr r5, [r0] - add ip, sp, #0x148 - ldrsh r3, [r5, #4] - add r0, r4, #0x2b4 - mov r1, #0x100 - orr r3, r3, #0x10000 - str r3, [sp, #0x158] - ldrh lr, [r5, #2] - mov r3, #0 - str lr, [sp, #0x16c] - ldrb lr, [r5] - str lr, [sp, #0x170] - str ip, [sp] - bl PreprocessStringFromId - mov r2, #3 - str r2, [r4, #0x3b4] - mov r0, #0 - strb r0, [r4, #0x3b8] - mov r1, #1 - str r1, [r4, #0x4b8] - str r2, [sp] - ldr r3, _02305AFC ; =ov11_02324D84 - mov r1, #0x11 - ldr r3, [r3] - mov r2, r0 - add r3, r3, #0x1b0 - bl CreateSimpleMenu - ldr r1, _02305AFC ; =ov11_02324D84 - ldr r1, [r1] - strb r0, [r1, #0x4a] - b _02305AF4 -_0230569C: - ldr r0, [r4, #0x44] - add r1, r4, #0x54 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl CopyItemAtIdx - ldr r0, _02305AFC ; =ov11_02324D84 - mov r4, #0 - ldr lr, [r0] - mov r3, #0x15 - ldrh ip, [lr, #0x54] - ldr r2, _02305B04 ; =ov11_02322B8C - add r1, sp, #0x12 - strh ip, [sp, #0x12] - ldrh ip, [lr, #0x56] - strh ip, [sp, #0x14] - ldrh ip, [lr, #0x58] - strh ip, [sp, #0x16] - strb r4, [sp, #0x12] - str r3, [lr, #0x3c] - ldr r0, [r0] - add r0, r0, #0xda - bl MaybeGetColoredFormattedItemName - ldr r0, _02305AFC ; =ov11_02324D84 - ldr r1, [r0] - add r0, r1, #0xda - str r0, [r1, #0x194] - bl ov11_02306194 - ldr r0, _02305AFC ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x48] - bl ShowDialogueBox - ldr r0, _02305AFC ; =ov11_02324D84 - mov r4, #0x15 - ldr r3, [r0] -#ifdef JAPAN - ldr r2, _02307184 ; =0x00002FC5 - str r4, [r3, #0x3c] - ldr r3, [r0] - mov r1, #8 -#else - mov r1, #8 - str r4, [r3, #0x3c] - ldr r3, [r0] - add r2, r4, #0x2bc -#endif - ldrsb r0, [r3, #0x48] - add r3, r3, #0x15c - bl ShowStringIdInDialogueBox - b _02305AF4 -_02305744: - mov r4, #3 - str r4, [sp, #0xb0] - ldr r0, _02305B0C ; =ov11_02322B98 - ldr r1, _02305B10 ; =0x00300033 - ldr r3, _02305B14 ; =ov11_02322BC8 - add r2, sp, #0xb0 - str r4, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _02305AFC ; =ov11_02324D84 - ldr r1, [r1] - strb r0, [r1, #0x4a] - b _02305AF4 -_02305774: - ldr r0, [r4, #0x44] - add r1, r4, #0x54 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl CopyItemAtIdx - ldr r4, _02305AFC ; =ov11_02324D84 - ldr r0, _02305B18 ; =ov11_02322BA8 - ldr lr, [r4] - ldr r1, _02305B1C ; =0x00001013 - ldrsh ip, [lr, #0x58] - ldr r3, _02305B20 ; =0x000008E4 - mov r2, #0 - str ip, [lr, #0x16c] - ldr lr, [r4] - ldrh ip, [lr, #0x56] - add ip, ip, #0xbc - str ip, [lr, #0x174] - ldr r4, [r4] - add ip, r4, #0x15c - str ip, [sp] - ldrsh r4, [r4, #0x58] -#if defined(EUROPE) - add r4, r4, #0xd3 - add r4, r4, #0x2900 -#elif defined(JAPAN) - add r4, r4, #0xce - add r4, r4, #0x4100 -#else - add r4, r4, #0xd1 - add r4, r4, #0x2900 -#endif - mov r4, r4, lsl #0x10 - mov r4, r4, lsr #0x10 - stmib sp, {r4, ip} - bl CreateScrollBoxSingle - ldr r1, _02305AFC ; =ov11_02324D84 - ldr r1, [r1] - strb r0, [r1, #0x4b] - b _02305AF4 -_023057F0: - ldr r0, [r4, #0x44] - add r1, r4, #0x54 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl CopyItemAtIdx - ldr r0, _02305AFC ; =ov11_02324D84 - mov r1, #0 - ldr r2, [r0] - ldrh r0, [r2, #0x54] - strh r0, [sp, #0xc] - ldrh r0, [r2, #0x56] - strh r0, [sp, #0xe] - ldrh r0, [r2, #0x58] - strh r0, [sp, #0x10] - strb r1, [sp, #0xc] - bl ov11_02306194 - ldr r0, _02305AFC ; =ov11_02324D84 - ldrsh r3, [sp, #0x10] - ldr r2, [r0] - add r1, sp, #0xc - str r3, [r2, #0x16c] - ldr r0, [r0] - ldr r2, _02305B04 ; =ov11_02322B8C - add r0, r0, #0x5a - bl MaybeGetColoredFormattedItemName - ldr r0, _02305AFC ; =ov11_02324D84 - ldr r2, _02305B04 ; =ov11_02322B8C - ldr r3, [r0] - add r1, r3, #0x5a - str r1, [r3, #0x194] - ldr r3, [r0] - ldrsh r1, [r3, #4] - str r1, [r3, #0x174] - ldr r1, [r0] - add r0, r1, #0xda - bl MaybeGetColoredFormattedItemName - ldr r0, _02305AFC ; =ov11_02324D84 - ldr r2, _02305B24 ; =0x000002DF - ldr r4, [r0] - mov r1, #0x18 - add r3, r4, #0xda - str r3, [r4, #0x198] - ldr r3, [r0] - ldrsb r0, [r3, #0x48] - add r3, r3, #0x15c - bl ShowStringIdInDialogueBox - ldr r0, _02305AFC ; =ov11_02324D84 - ldr r0, [r0] - ldr r0, [r0, #0x44] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl RemoveItemNoHole - ldr r0, _02305AFC ; =ov11_02324D84 - ldr r0, [r0] - bl AddItemToBagNoHeld - cmp r0, #0 - ldrne r0, _02305AFC ; =ov11_02324D84 - movne r1, #7 - ldrne r0, [r0] - strne r1, [r0, #0x3c] - ldreq r0, _02305AFC ; =ov11_02324D84 - moveq r1, #0xa - ldreq r0, [r0] - streq r1, [r0, #0x3c] - b _02305AF4 -_023058F4: - mov r0, r4 - bl AddItemToBagNoHeld - cmp r0, #0 - beq _0230591C - ldr r0, _02305AFC ; =ov11_02324D84 - mov r1, #8 - ldr r0, [r0] - str r1, [r0, #0x38] - bl ov11_02305488 - b _02305AF4 -_0230591C: - ldr r0, _02305AFC ; =ov11_02324D84 - mov r1, #0xa - ldr r0, [r0] - str r1, [r0, #0x38] - bl ov11_02305488 - b _02305AF4 -_02305934: - add r1, r4, #0x5a - str r1, [r4, #0x19c] - ldr r0, [r0] - mov r1, #5 - str r1, [r0, #0x3c] - bl ov11_02306194 - ldr r0, _02305AFC ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x48] - bl ShowDialogueBox - ldr r0, _02305AFC ; =ov11_02324D84 - mov r3, #5 - ldr r1, [r0] - ldr r2, _02305B28 ; =0x000002D6 - str r3, [r1, #0x3c] - ldr r3, [r0] - mov r1, #8 - ldrsb r0, [r3, #0x48] - add r3, r3, #0x15c - bl ShowStringIdInDialogueBox - b _02305AF4 -_02305988: - mov r4, #3 - str r4, [sp, #0x18] - ldr r0, _02305B0C ; =ov11_02322B98 - ldr r1, _02305B10 ; =0x00300033 - ldr r3, _02305B14 ; =ov11_02322BC8 - add r2, sp, #0x18 - str r4, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _02305AFC ; =ov11_02324D84 - ldr r1, [r1] - strb r0, [r1, #0x4a] - b _02305AF4 -_023059B8: - mov r0, #9 - str r0, [r4, #0x38] - bl ov11_02305488 - b _02305AF4 -_023059C8: - mov r0, #0xa - str r0, [r4, #0x3c] - bl ov11_02306194 - ldr r0, _02305AFC ; =ov11_02324D84 - ldr r2, _02305B2C ; =0x000002DE - ldr r4, [r0] - mov r1, #0x18 - add r3, r4, #0x5a - str r3, [r4, #0x19c] - ldr r3, [r0] - ldrsb r0, [r3, #0x48] - add r3, r3, #0x15c - bl ShowStringIdInDialogueBox - b _02305AF4 -_02305A00: - ldr r0, _02305B30 ; =ov11_02322BB8 - mov r4, #3 - ldr r3, _02305B34 ; =ov11_02322BE0 - mov r1, #0x13 - mov r2, #0 - str r4, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _02305AFC ; =ov11_02324D84 - ldr r1, [r1] - strb r0, [r1, #0x4a] - b _02305AF4 -_02305A2C: - ldrsb r0, [r4, #0x48] - bl CloseDialogueBox - ldr r0, _02305AFC ; =ov11_02324D84 - mvn r2, #1 - ldr r1, [r0] - strb r2, [r1, #0x48] - ldr r4, [r0] - bl GetNbItemsInBag - ldr r2, _02305B38 ; =ov11_02304D94 - add r1, r4, #0xbc - str r2, [sp] - add r1, r1, #0x400 - str r1, [sp, #4] - mov r1, #0 - str r1, [sp, #8] - ldr r2, [r4, #0x44] - add r3, r4, #6 - bl CreateInventoryMenuOuter - ldr r1, _02305AFC ; =ov11_02324D84 - ldr r1, [r1] - strb r0, [r1, #0x49] - b _02305AF4 -_02305A84: - bl GetNbItemsInBag - ldr r2, _02305B38 ; =ov11_02304D94 - add r1, r4, #0xbc - str r2, [sp] - add r1, r1, #0x400 - str r1, [sp, #4] - mov r1, #0 - str r1, [sp, #8] - ldr r2, [r4, #0x44] - add r3, r4, #6 - bl CreateInventoryMenuOuter - ldr r1, _02305AFC ; =ov11_02324D84 - ldr r1, [r1] - strb r0, [r1, #0x49] - b _02305AF4 -_02305AC0: - mov r1, #0xf - str r1, [r4, #0x3c] - ldr r0, [r0] - mov r1, #0x16 - str r1, [r0, #0x38] - bl ov11_02306194 - ldr r0, _02305AFC ; =ov11_02324D84 - ldr r2, _02305B3C ; =0x000002DA - ldr r3, [r0] - mov r1, #0x18 - ldrsb r0, [r3, #0x48] - add r3, r3, #0x15c - bl ShowStringIdInDialogueBox -_02305AF4: - add sp, sp, #0x198 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -#ifdef JAPAN -#define OV11_02305488_OFFSET 0x2CD4 -#else -#define OV11_02305488_OFFSET 0 -#endif -_02305AFC: .word ov11_02324D84 -_02305B00: .word 0x000002D7 + OV11_02305488_OFFSET -#ifdef JAPAN -_02307174: .word 0x00002FB1 -_02307178: .word 0x00002FAC -#endif -_02305B04: .word ov11_02322B8C -_02305B08: .word 0x000002D9 + OV11_02305488_OFFSET -#ifdef JAPAN -_02307184: .word 0x00002FC5 -#endif -_02305B0C: .word ov11_02322B98 -_02305B10: .word 0x00300033 -_02305B14: .word ov11_02322BC8 -_02305B18: .word ov11_02322BA8 -_02305B1C: .word 0x00001013 -#ifdef JAPAN -_02305B20: .word 0x00001D3C -_02305B24: .word 0x00002FB3 -_02305B28: .word 0x00002FCA -#else -_02305B20: .word 0x000008E4 -_02305B24: .word 0x000002DF -_02305B28: .word 0x000002D6 -#endif -_02305B2C: .word 0x000002DE + OV11_02305488_OFFSET -_02305B30: .word ov11_02322BB8 -_02305B34: .word ov11_02322BE0 -_02305B38: .word ov11_02304D94 -_02305B3C: .word 0x000002DA + OV11_02305488_OFFSET - arm_func_end ov11_02305488 - - arm_func_start ov11_02305B40 -ov11_02305B40: ; 0x02305B40 - stmdb sp!, {r4, lr} - ldr r1, _02305B94 ; =ov11_02324D84 - mov r4, #0 - ldr r1, [r1] - cmp r1, #0 - beq _02305B84 - cmp r0, #0 - ldr r4, [r1, #0x1ac] - ldrnesh r1, [r1, #0x58] - strneh r1, [r0] - ldr r0, _02305B94 ; =ov11_02324D84 - ldr r0, [r0] - bl MemFree - ldr r0, _02305B94 ; =ov11_02324D84 - mov r1, #0 - str r1, [r0] - b _02305B8C -_02305B84: - cmp r0, #0 - strneh r4, [r0] -_02305B8C: - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_02305B94: .word ov11_02324D84 - arm_func_end ov11_02305B40 - - arm_func_start ov11_02305B98 -ov11_02305B98: ; 0x02305B98 - stmdb sp!, {r3, lr} - ldr r0, _02306148 ; =ov11_02324D84 - ldr r3, [r0] - ldr r1, [r3, #0x50] - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _02306140 -_02305BB4: ; jump table - b _02305BC4 ; case 0 - b _02305BD0 ; case 1 - b _02306120 ; case 2 - b _02306138 ; case 3 -_02305BC4: - mov r0, #1 - str r0, [r3, #0x50] - b _02306140 -_02305BD0: - ldr r1, [r3, #0x38] - cmp r1, #0x16 - addls pc, pc, r1, lsl #2 - b _02306090 -_02305BE0: ; jump table - b _023060C0 ; case 0 - b _02306090 ; case 1 - b _02306090 ; case 2 - b _02305C3C ; case 3 - b _02306090 ; case 4 - b _02305CC4 ; case 5 - b _02305FE0 ; case 6 - b _0230602C ; case 7 - b _02306038 ; case 8 - b _02306044 ; case 9 - b _02306044 ; case 10 - b _02306090 ; case 11 - b _023060C0 ; case 12 - b _02306090 ; case 13 - b _02306090 ; case 14 - b _02305D08 ; case 15 - b _02305D08 ; case 16 - b _02305ECC ; case 17 - b _02305F00 ; case 18 - b _02305F24 ; case 19 - b _02306090 ; case 20 - b _02305C80 ; case 21 - b _02306050 ; case 22 -_02305C3C: - ldrsb r0, [r3, #0x4a] - bl GetSimpleMenuResult__0202B870 - cmp r0, #1 - beq _02305C70 - cmp r0, #2 - beq _02305C60 - cmp r0, #3 - beq _02305C70 - b _023060C0 -_02305C60: - bl ov11_0230614C - mov r0, #0x17 - bl ov11_02304DC8 - b _023060C0 -_02305C70: - bl ov11_0230614C - mov r0, #4 - bl ov11_02304DC8 - b _023060C0 -_02305C80: - ldrsb r0, [r3, #0x4a] - bl GetSimpleMenuResult__0202B870 - cmp r0, #1 - beq _02305CB4 - cmp r0, #2 - beq _02305CA4 - cmp r0, #3 - beq _02305CB4 - b _023060C0 -_02305CA4: - bl ov11_0230614C - mov r0, #0xb - bl ov11_02304DC8 - b _023060C0 -_02305CB4: - bl ov11_0230614C - mov r0, #0x17 - bl ov11_02304DC8 - b _023060C0 -_02305CC4: - ldrsb r0, [r3, #0x4a] - bl GetSimpleMenuResult__0202B870 - cmp r0, #1 - beq _02305CF8 - cmp r0, #2 - beq _02305CE8 - cmp r0, #3 - beq _02305CF8 - b _023060C0 -_02305CE8: - bl ov11_0230614C - mov r0, #0xe - bl ov11_02304DC8 - b _023060C0 -_02305CF8: - bl ov11_0230614C - mov r0, #0 - bl ov11_02304DC8 - b _023060C0 -_02305D08: - add r1, sp, #0 - mov r0, #0 - bl GetPressedButtons - ldrh r0, [sp] - tst r0, #8 - beq _02305D9C - ldr r0, _02306148 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x49] - bl IsInventoryMenuState3 - cmp r0, #0 - beq _02305D9C - ldr r0, _02306148 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x49] - bl ov10_022BCDA8 - cmp r0, #0 - blt _02305D9C - ldr r1, _02306148 ; =ov11_02324D84 - ldr r1, [r1] - str r0, [r1, #0x44] - mov r0, #0 - bl PlaySeVolumeWrapper - ldr r0, _02306148 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x49] - bl ov10_022BCD10 - ldr r0, _02306148 ; =ov11_02324D84 - mov r3, #2 - ldr r1, [r0] - mov r2, #6 - str r3, [r1, #0x40] - ldr r1, [r0] - mov r0, #0x12 - str r2, [r1, #0x3c] - bl ov11_02304DC8 - b _023060C0 -_02305D9C: - ldr r0, _02306148 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x49] - bl IsInventoryMenuState3 - cmp r0, #0 - beq _02305E44 - ldr r0, _02306148 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x49] - bl PopInventoryMenuField0x1A3 - ldrh r1, [sp] - tst r1, #4 - cmpeq r0, #0 - beq _02305E44 - cmp r0, #0 - bne _02305DE4 - mov r0, #5 - bl PlaySeVolumeWrapper -_02305DE4: - bl SortItemsInBag - bl GetNbItemsInBag - ldr r2, _02306148 ; =ov11_02324D84 - mov r1, r0 - ldr r0, [r2] - ldrsb r0, [r0, #0x49] - bl ov10_022BCC60 - ldr r0, _02306148 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x49] - bl ov10_022BCCB0 - bl IsBagFull - cmp r0, #0 - bne _02305E44 - ldr r0, _02306148 ; =ov11_02324D84 - mov r3, #2 - ldr r1, [r0] - mov r2, #0 - str r3, [r1, #0x40] - ldr r1, [r0] - mov r0, #0x11 - str r2, [r1, #0x3c] - bl ov11_02304DC8 - b _023060C0 -_02305E44: - ldr r0, _02306148 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x49] - bl IsInventoryMenuActive - cmp r0, #0 - bne _023060C0 - ldr r0, _02306148 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x49] - bl CheckInventoryMenuField0x1A0 - cmp r0, #0 - bne _023060C0 - ldr r0, _02306148 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x49] - bl ov10_022BCDBC - mvn r1, #0 - cmp r0, r1 - bne _02305EB4 - ldr r1, _02306148 ; =ov11_02324D84 - mov r3, #2 - ldr r2, [r1] - mov r0, #0x11 - str r3, [r2, #0x40] - ldr r1, [r1] - str r3, [r1, #0x3c] - bl ov11_02304DC8 - b _023060C0 -_02305EB4: - ldr r1, _02306148 ; =ov11_02324D84 - ldr r1, [r1] - str r0, [r1, #0x44] - mov r0, #0x13 - bl ov11_02304DC8 - b _023060C0 -_02305ECC: - ldr r2, [r3, #0x40] - sub r1, r2, #1 - str r1, [r3, #0x40] - cmp r2, #0 - bne _023060C0 - ldr r0, [r0] - ldrsb r0, [r0, #0x49] - bl CloseInventoryMenu - ldr r0, _02306148 ; =ov11_02324D84 - ldr r0, [r0] - ldr r0, [r0, #0x3c] - bl ov11_02304DC8 - b _023060C0 -_02305F00: - ldr r2, [r3, #0x40] - sub r1, r2, #1 - str r1, [r3, #0x40] - cmp r2, #0 - bne _023060C0 - ldr r0, [r0] - ldr r0, [r0, #0x3c] - bl ov11_02304DC8 - b _023060C0 -_02305F24: - ldrsb r0, [r3, #0x4a] - bl GetSimpleMenuResult__0202B870 - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _023060C0 -_02305F38: ; jump table - b _023060C0 ; case 0 - b _02305FBC ; case 1 - b _023060C0 ; case 2 - b _023060C0 ; case 3 - b _02305F54 ; case 4 - b _02305F80 ; case 5 - b _02305FBC ; case 6 -_02305F54: - bl ov11_0230614C - ldr r0, _02306148 ; =ov11_02324D84 - mov r3, #2 - ldr r1, [r0] - mov r2, #0x14 - str r3, [r1, #0x40] - ldr r1, [r0] - mov r0, #0x11 - str r2, [r1, #0x3c] - bl ov11_02304DC8 - b _023060C0 -_02305F80: - bl ov11_0230614C - ldr r0, _02306148 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x49] - bl SetInventoryMenuState6 - ldr r0, _02306148 ; =ov11_02324D84 - mov r3, #2 - ldr r1, [r0] - mov r2, #6 - str r3, [r1, #0x40] - ldr r1, [r0] - mov r0, #0x12 - str r2, [r1, #0x3c] - bl ov11_02304DC8 - b _023060C0 -_02305FBC: - bl ov11_0230614C - ldr r0, _02306148 ; =ov11_02324D84 - mov r2, #0xf - ldr r1, [r0] - str r2, [r1, #0x38] - ldr r0, [r0] - ldrsb r0, [r0, #0x49] - bl ov10_022BCC7C - b _023060C0 -_02305FE0: - ldrsb r0, [r3, #0x4b] - bl IsScrollBoxActive - cmp r0, #0 - bne _023060C0 - ldr r0, _02306148 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x4b] - bl CloseScrollBox - ldr r0, _02306148 ; =ov11_02324D84 - mvn r3, #1 - ldr r1, [r0] - mov r2, #0xf - strb r3, [r1, #0x4b] - ldr r1, [r0] - str r2, [r1, #0x38] - ldr r0, [r0] - ldrsb r0, [r0, #0x49] - bl SetInventoryMenuState0 - b _023060C0 -_0230602C: - bl ov11_022DC504 - mov r2, #3 - b _023060C4 -_02306038: - bl ov11_022DC504 - mov r2, #2 - b _023060C4 -_02306044: - bl ov11_022DC504 - mov r2, #5 - b _023060C4 -_02306050: - ldrsb r0, [r3, #0x48] - bl IsDialogueBoxActive - cmp r0, #0 - bne _023060C0 - ldr r0, _02306148 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x48] - bl ShowDialogueBox - ldr r0, _02306148 ; =ov11_02324D84 - mov r2, #0x18 - ldr r1, [r0] - str r2, [r1, #0x38] - ldr r0, [r0] - ldrsb r0, [r0, #0x48] - bl sub_0202F2C4 - b _023060C0 -_02306090: - ldrsb r0, [r3, #0x48] - bl IsDialogueBoxActive - cmp r0, #0 - bne _023060C0 - ldr r0, _02306148 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x48] - bl ShowDialogueBox - ldr r0, _02306148 ; =ov11_02324D84 - ldr r0, [r0] - ldr r0, [r0, #0x3c] - bl ov11_02304DC8 -_023060C0: - mov r2, #1 -_023060C4: - ldr r0, _02306148 ; =ov11_02324D84 - ldr r1, [r0] - str r2, [r1, #0x1ac] - ldr r2, [r0] - ldr r1, [r2, #0x1ac] - cmp r1, #1 - beq _02306140 - cmp r1, #2 - moveq r1, #3 - streq r1, [r2, #0x1ac] - ldreq r0, [r0] - streq r1, [r0, #0x50] - beq _02306140 - mov r1, #2 - str r1, [r2, #0x50] - ldr r0, [r0] - ldrsb r0, [r0, #0x48] - bl sub_0202836C - ldr r0, _02306148 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x48] - bl sub_0202F2C4 - b _02306140 -_02306120: - mov r1, #3 - str r1, [r3, #0x50] - ldr r0, [r0] - ldrsb r0, [r0, #0x48] - bl CloseDialogueBox - b _02306140 -_02306138: - mov r0, #4 - ldmia sp!, {r3, pc} -_02306140: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_02306148: .word ov11_02324D84 - arm_func_end ov11_02305B98 - - arm_func_start ov11_0230614C -ov11_0230614C: ; 0x0230614C - stmdb sp!, {r3, lr} - ldr r0, _02306190 ; =ov11_02324D84 - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #0x4a] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl sub_0202836C - ldr r0, _02306190 ; =ov11_02324D84 - ldr r0, [r0] - ldrsb r0, [r0, #0x4a] - bl CloseSimpleMenu - ldr r0, _02306190 ; =ov11_02324D84 - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x4a] - ldmia sp!, {r3, pc} - .align 2, 0 -_02306190: .word ov11_02324D84 - arm_func_end ov11_0230614C - - arm_func_start ov11_02306194 -ov11_02306194: ; 0x02306194 - stmdb sp!, {r3, lr} - ldr r1, _023061C8 ; =ov11_02324D84 - mvn r0, #1 - ldr r1, [r1] - ldrsb r1, [r1, #0x48] - cmp r1, r0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl CreateDialogueBox - ldr r1, _023061C8 ; =ov11_02324D84 - ldr r1, [r1] - strb r0, [r1, #0x48] - ldmia sp!, {r3, pc} - .align 2, 0 -_023061C8: .word ov11_02324D84 - arm_func_end ov11_02306194 - - arm_func_start ov11_023061CC -ov11_023061CC: ; 0x023061CC - ldr ip, _023061E0 ; =ov11_023061FC -#ifdef JAPAN - mov r1, #0 - mov r2, #1 -#else - mov r2, #1 - mov r3, r2 - mov r1, #3 -#endif - bx ip - .align 2, 0 -_023061E0: .word ov11_023061FC - arm_func_end ov11_023061CC - - arm_func_start ov11_023061E4 -ov11_023061E4: ; 0x023061E4 - ldr ip, _023061F8 ; =ov11_023061FC - mov r2, r1 - mov r1, #3 -#ifndef JAPAN - mov r3, #0 -#endif - bx ip - .align 2, 0 -_023061F8: .word ov11_023061FC - arm_func_end ov11_023061E4 - - arm_func_start ov11_023061FC -ov11_023061FC: ; 0x023061FC -#ifdef JAPAN -#define OV11_023061FC_OFFSET -4 -#else -#define OV11_023061FC_OFFSET 0 -#endif -#ifdef JAPAN - stmdb sp!, {r4, r5, r6, lr} - ldr r3, _023062B8 ; =ov11_02324D88 - mov r6, r0 - ldr r0, [r3] - mov r5, r1 - mov r4, r2 -#else - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r4, _023062B8 ; =ov11_02324D88 - mov r7, r0 - ldr r0, [r4] - mov r6, r1 - mov r5, r2 - mov r4, r3 -#endif - cmp r0, #0 - bne _02306234 - mov r0, #0x124 + OV11_023061FC_OFFSET - mov r1, #8 - bl MemAlloc - ldr r1, _023062B8 ; =ov11_02324D88 - str r0, [r1] -_02306234: - ldr r0, _023062B8 ; =ov11_02324D88 - mov r2, #0 - ldr r1, [r0] -#ifdef JAPAN - str r5, [r1, #0x84] - ldr r1, [r0] - strb r4, [r1, #0x20] - ldr r1, [r0] - str r6, [r1] -#else - str r4, [r1, #0x24] - ldr r1, [r0] - str r6, [r1, #0x88] - ldr r1, [r0] - strb r5, [r1, #0x20] - ldr r1, [r0] - str r7, [r1] -#endif - ldr r1, [r0] - str r2, [r1, #8] - ldr r0, [r0] - add r0, r0, #0x30 + OV11_023061FC_OFFSET - bl InitPreprocessorArgs - ldr r1, _023062B8 ; =ov11_02324D88 - mov r0, #0 - ldr r2, [r1] - sub r3, r0, #2 - str r0, [r2, #0x7c + OV11_023061FC_OFFSET] - ldr r2, [r1] - str r0, [r2, #0x30 + OV11_023061FC_OFFSET] - ldr r2, [r1] - str r0, [r2, #0x28 + OV11_023061FC_OFFSET] - ldr r2, [r1] - strb r3, [r2, #0x21] - ldr r2, [r1] - strb r3, [r2, #0x22] - ldr r1, [r1] - str r0, [r1, #0x80 + OV11_023061FC_OFFSET] - bl ov11_023062BC - mov r0, #1 -#ifdef JAPAN - ldmia sp!, {r4, r5, r6, pc} -#else - ldmia sp!, {r3, r4, r5, r6, r7, pc} -#endif - .align 2, 0 -_023062B8: .word ov11_02324D88 - arm_func_end ov11_023061FC - - arm_func_start ov11_023062BC -ov11_023062BC: ; 0x023062BC -#ifdef JAPAN -#define OV11_023062BC_OFFSET -4 -#else -#define OV11_023062BC_OFFSET 0 -#endif - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x7c - ldr r1, _02306768 ; =ov11_02324D88 - ldr r2, [r1] - str r0, [r2, #0x10] - ldr r2, [r1] - ldr r0, [r2, #0x10] - cmp r0, #0x17 - addls pc, pc, r0, lsl #2 - b _02306760 -_023062E4: ; jump table - b _02306344 ; case 0 - b _02306388 ; case 1 - b _023063BC ; case 2 - b _02306404 ; case 3 - b _02306430 ; case 4 - b _02306474 ; case 5 - b _023064B8 ; case 6 - b _02306760 ; case 7 - b _02306760 ; case 8 - b _02306760 ; case 9 - b _02306760 ; case 10 - b _02306524 ; case 11 - b _023065CC ; case 12 - b _02306760 ; case 13 - b _02306600 ; case 14 - b _023066F4 ; case 15 - b _02306760 ; case 16 - b _0230671C ; case 17 - b _02306760 ; case 18 - b _02306610 ; case 19 - b _0230663C ; case 20 - b _0230666C ; case 21 - b _02306760 ; case 22 - b _0230672C ; case 23 -_02306344: - mov r0, #0 - bl GetFirstEmptyMemberIdx - mvn r1, #0 - cmp r0, r1 - bne _02306370 - ldr r0, _02306768 ; =ov11_02324D88 - mov r1, #1 - ldr r0, [r0] - str r1, [r0, #0x10] - bl ov11_02306794 - b _02306388 -_02306370: - ldr r0, _02306768 ; =ov11_02324D88 - mov r1, #0xc - ldr r0, [r0] - str r1, [r0, #0x10] - bl ov11_02306794 - b _02306760 -_02306388: - ldr r0, _02306768 ; =ov11_02324D88 - mov r1, #3 - ldr r0, [r0] - str r1, [r0, #0x14] - bl ov11_0230720C - ldr r0, _02306768 ; =ov11_02324D88 -#ifdef JAPAN - ldr r2, _02307D74 ; =0x00002FB4 - ldr r3, [r0] - mov r1, #8 -#else - mov r1, #8 - ldr r3, [r0] - mov r2, #0x2e0 -#endif - ldrsb r0, [r3, #0x21] - add r3, r3, #0x30 + OV11_023062BC_OFFSET - bl ShowStringIdInDialogueBox - b _02306760 -_023063BC: - mov r0, #3 - str r0, [r2, #0x14] - bl ov11_0230720C - ldr r0, _02306768 ; =ov11_02324D88 - ldr r0, [r0] - ldrsb r0, [r0, #0x21] - bl ShowDialogueBox - ldr r0, _02306768 ; =ov11_02324D88 - mov r3, #3 - ldr r1, [r0] -#ifdef JAPAN - rsb r2, r3, #0x2fc0 -#else - rsb r2, r3, #0x2ec -#endif - str r3, [r1, #0x14] - ldr r3, [r0] - mov r1, #8 - ldrsb r0, [r3, #0x21] - add r3, r3, #0x30 + OV11_023062BC_OFFSET - bl ShowStringIdInDialogueBox - b _02306760 -_02306404: - ldr r0, _0230676C ; =ov11_02322C10 - mov r4, #3 - ldr r1, _02306770 ; =0x00300011 - ldr r3, _02306774 ; =ov11_02322C38 - mov r2, #0 - str r4, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _02306768 ; =ov11_02324D88 - ldr r1, [r1] - strb r0, [r1, #0x22] - b _02306760 -_02306430: - bl ov11_0230720C - ldr r0, _02306768 ; =ov11_02324D88 - ldr r0, [r0] - ldrsb r0, [r0, #0x21] - bl ShowDialogueBox - ldr r0, _02306768 ; =ov11_02324D88 - ldr r2, _02306778 ; =0x000002EA - ldr r3, [r0] - mov r1, #8 - ldrsb r0, [r3, #0x21] - add r3, r3, #0x30 + OV11_023062BC_OFFSET - bl ShowStringIdInDialogueBox - ldr r0, _02306768 ; =ov11_02324D88 - mov r1, #5 - ldr r0, [r0] - str r1, [r0, #0x14] - b _02306760 -_02306474: - mov r0, #3 - str r0, [r2, #0x8c + OV11_023062BC_OFFSET] - mov r0, #2 - str r0, [sp] - ldr r2, [r1] - ldr r0, _0230676C ; =ov11_02322C10 - ldr r1, _0230677C ; =0x00300031 - ldr r3, _02306780 ; =ov11_02322C20 - add r2, r2, #0x8c + OV11_023062BC_OFFSET - bl CreateSimpleMenuFromStringIds - ldr r1, _02306768 ; =ov11_02324D88 - mov r2, #6 - ldr r3, [r1] - strb r0, [r3, #0x22] - ldr r0, [r1] - str r2, [r0, #0x14] - b _02306760 -_023064B8: - ldrsb r0, [r2, #0x22] - bl IsSimpleMenuActive - cmp r0, #0 - bne _02306760 - ldr r0, _02306768 ; =ov11_02324D88 - ldr r0, [r0] - ldrsb r0, [r0, #0x22] - bl GetSimpleMenuResult__0202B870 - ldr r1, _02306768 ; =ov11_02324D88 - mov r4, r0 - ldr r0, [r1] - ldrsb r0, [r0, #0x22] - bl CloseSimpleMenu - cmp r4, #2 - beq _023064FC - cmp r4, #3 - b _02306510 -_023064FC: - ldr r0, _02306768 ; =ov11_02324D88 - mov r1, #0xb - ldr r0, [r0] - str r1, [r0, #0x14] - b _02306760 -_02306510: - ldr r0, _02306768 ; =ov11_02324D88 - mov r1, #2 - ldr r0, [r0] - str r1, [r0, #0x14] - b _02306760 -_02306524: - ldrb r0, [r2, #0x20] - cmp r0, #0 - beq _02306538 - mov r0, #3 - bl sub_02017C50 -_02306538: - ldr r0, _02306768 ; =ov11_02324D88 - mov r3, #0xa - ldr r2, [r0] - mov r1, #7 - str r3, [r2, #0x2c + OV11_023062BC_OFFSET] - ldr r0, [r0] - str r1, [r0, #0x14] - bl ov11_0230720C - ldr r0, _02306768 ; =ov11_02324D88 -#ifdef JAPAN - ldr r2, _02307D90_JP ; =0x00002FB8 - ldr ip, [r0] - mov r1, #0x218 -#else - mov r1, #0x218 - ldr ip, [r0] - mov r2, #0x2e4 -#endif - ldr r3, [ip, #4] - ldrsh r3, [r3, #4] - str r3, [ip, #0x30 + OV11_023062BC_OFFSET] - ldr r3, [r0] - ldrsb r0, [r3, #0x21] - add r3, r3, #0x30 + OV11_023062BC_OFFSET - bl ShowStringIdInDialogueBox - ldr r0, _02306768 ; =ov11_02324D88 - ldr r0, [r0] - ldrsh r0, [r0, #0xc] - bl sub_02055B20 -#ifndef JAPAN - bl sub_0203AF0C -#endif - bl sub_02057180 - ldr r0, _02306768 ; =ov11_02324D88 - ldr r1, [r0] - ldr r0, [r1] - cmp r0, #0 - moveq r0, #0 - streq r0, [r1, #8] - beq _02306760 - bl sub_02055D4C - ldr r1, _02306768 ; =ov11_02324D88 - ldr r1, [r1] - str r0, [r1, #8] - b _02306760 -_023065CC: - ldr r0, [r2] - cmp r0, #0 - beq _023065E8 - bl sub_02055D4C - ldr r1, _02306768 ; =ov11_02324D88 - ldr r1, [r1] - str r0, [r1, #8] -_023065E8: - ldr r0, _02306768 ; =ov11_02324D88 - mov r1, #9 - ldr r0, [r0] - str r1, [r0, #0x10] - bl ov11_02306794 - b _02306760 -_02306600: - mov r0, #0xa - str r0, [r2, #0x10] - bl ov11_02306794 - b _02306760 -_02306610: - ldr r0, _02306784 ; =ov11_02322C00 - mov ip, #4 - ldr r3, _02306788 ; =ov11_02322C50 - mov r1, #0x13 - mov r2, #0 - str ip, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _02306768 ; =ov11_02324D88 - ldr r1, [r1] - strb r0, [r1, #0x22] - b _02306760 -_0230663C: - ldrsh r1, [r2, #0xc] - add r0, sp, #4 - bl sub_0205B028 - ldr r1, _02306768 ; =ov11_02324D88 - add r0, sp, #4 - ldr r1, [r1] - ldr r1, [r1, #0x88 + OV11_023062BC_OFFSET] - bl sub_0203F150 - ldr r1, _02306768 ; =ov11_02324D88 - ldr r1, [r1] - strb r0, [r1, #0x84 + OV11_023062BC_OFFSET] - b _02306760 -_0230666C: -#ifdef JAPAN - ldr r0, _0230678C ; =TEAM_MEMBER_TABLE_PTR - ldrsh r2, [r2, #0xc] - ldr r1, [r0] - mov r0, #0x44 -#else - ldr r0, [r2, #0x24] - cmp r0, #0 - bne _023066C0 - bl sub_0205633C - cmp r0, #0 - beq _023066C0 - ldr r0, _02306768 ; =ov11_02324D88 - ldr r0, [r0] - ldrsh r0, [r0, #0xc] - bl GetActiveRosterIndex - mvn r1, #0 - cmp r0, r1 - beq _023066C0 - bl GetActiveTeamMember - mov r1, r0 - ldrsh r0, [r1, #0xc] - ldrsh r2, [r1, #6] - add r1, r1, #0x4c - mov r3, #0 - bl PrintIqSkillsMenu - b _02306760 -_023066C0: - ldr r1, _02306768 ; =ov11_02324D88 - ldr r0, _0230678C ; =TEAM_MEMBER_TABLE_PTR - ldr r2, [r1] - ldr r1, [r0] - ldrsh r2, [r2, #0xc] - mov r0, #0x44 - mov r3, #0 -#endif - smlabb r1, r2, r0, r1 - ldrsh r0, [r1, #4] - ldrsh r2, [r1, #8] - add r1, r1, #0x14 -#ifdef JAPAN - mov r3, #0 -#endif - bl PrintIqSkillsMenu - b _02306760 -_023066F4: - ldrsb r0, [r2, #0x21] - bl CloseDialogueBox - ldr r0, _02306768 ; =ov11_02324D88 - mvn r3, #1 - ldr r2, [r0] - mov r0, #4 - mov r1, #0 - strb r3, [r2, #0x21] - bl sub_02039C2C - b _02306760 -_0230671C: - mov r0, #4 - mov r1, #0 - bl sub_02039C2C - b _02306760 -_0230672C: - mov r0, #0xf - str r0, [r2, #0x14] - ldr r0, [r1] - mov r1, #0x16 - str r1, [r0, #0x10] - bl ov11_0230720C - ldr r0, _02306768 ; =ov11_02324D88 - ldr r2, _02306790 ; =0x000002E3 - ldr r3, [r0] - mov r1, #0x18 - ldrsb r0, [r3, #0x21] - add r3, r3, #0x30 + OV11_023062BC_OFFSET - bl ShowStringIdInDialogueBox -_02306760: - add sp, sp, #0x7c - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_02306768: .word ov11_02324D88 -#ifdef JAPAN -_02307D74: .word 0x00002FB4 -#endif -_0230676C: .word ov11_02322C10 -_02306770: .word 0x00300011 -_02306774: .word ov11_02322C38 -#ifdef JAPAN -_02306778: .word 0x00002FBE -#else -_02306778: .word 0x000002EA -#endif -_0230677C: .word 0x00300031 -_02306780: .word ov11_02322C20 -#ifdef JAPAN -_02307D90_JP: .word 0x00002FB8 -#endif -_02306784: .word ov11_02322C00 -_02306788: .word ov11_02322C50 -_0230678C: .word TEAM_MEMBER_TABLE_PTR -#ifdef JAPAN -_02306790: .word 0x00002FB7 -#else -_02306790: .word 0x000002E3 -#endif - arm_func_end ov11_023062BC - - arm_func_start ov11_02306794 -ov11_02306794: ; 0x02306794 -#ifdef JAPAN -#define OV11_02306794_OFFSET -4 -#else -#define OV11_02306794_OFFSET 0 -#endif - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x7c - ldr r0, _02306C38 ; =ov11_02324D88 - ldr r2, [r0] - ldr r1, [r2, #0x10] - cmp r1, #0x17 - addls pc, pc, r1, lsl #2 - b _02306C30 -_023067B4: ; jump table - b _02306814 ; case 0 - b _02306858 ; case 1 - b _0230688C ; case 2 - b _023068D4 ; case 3 - b _02306900 ; case 4 - b _02306944 ; case 5 - b _02306988 ; case 6 - b _02306C30 ; case 7 - b _02306C30 ; case 8 - b _02306C30 ; case 9 - b _02306C30 ; case 10 - b _023069F4 ; case 11 - b _02306A9C ; case 12 - b _02306C30 ; case 13 - b _02306AD0 ; case 14 - b _02306BC4 ; case 15 - b _02306C30 ; case 16 - b _02306BEC ; case 17 - b _02306C30 ; case 18 - b _02306AE0 ; case 19 - b _02306B0C ; case 20 - b _02306B3C ; case 21 - b _02306C30 ; case 22 - b _02306BFC ; case 23 -_02306814: - mov r0, #0 - bl GetFirstEmptyMemberIdx - mvn r1, #0 - cmp r0, r1 - bne _02306840 - ldr r0, _02306C38 ; =ov11_02324D88 - mov r1, #1 - ldr r0, [r0] - str r1, [r0, #0x10] - bl ov11_02306794 - b _02306858 -_02306840: - ldr r0, _02306C38 ; =ov11_02324D88 - mov r1, #0xc - ldr r0, [r0] - str r1, [r0, #0x10] - bl ov11_02306794 - b _02306C30 -_02306858: - ldr r0, _02306C38 ; =ov11_02324D88 - mov r1, #3 - ldr r0, [r0] - str r1, [r0, #0x14] - bl ov11_0230720C - ldr r0, _02306C38 ; =ov11_02324D88 -#ifdef JAPAN - ldr r2, _023081EC ; =0x00002FB4 - ldr r3, [r0] - mov r1, #8 -#else - mov r1, #8 - ldr r3, [r0] - mov r2, #0x2e0 -#endif - ldrsb r0, [r3, #0x21] - add r3, r3, #0x30 + OV11_02306794_OFFSET - bl ShowStringIdInDialogueBox - b _02306C30 -_0230688C: - mov r0, #3 - str r0, [r2, #0x14] - bl ov11_0230720C - ldr r0, _02306C38 ; =ov11_02324D88 - ldr r0, [r0] - ldrsb r0, [r0, #0x21] - bl ShowDialogueBox - ldr r0, _02306C38 ; =ov11_02324D88 - mov r3, #3 - ldr r1, [r0] -#ifdef JAPAN - rsb r2, r3, #0x2fc0 -#else - rsb r2, r3, #0x2ec -#endif - str r3, [r1, #0x14] - ldr r3, [r0] - mov r1, #8 - ldrsb r0, [r3, #0x21] - add r3, r3, #0x30 + OV11_02306794_OFFSET - bl ShowStringIdInDialogueBox - b _02306C30 -_023068D4: - ldr r0, _02306C3C ; =ov11_02322C10 - mov r4, #3 - ldr r1, _02306C40 ; =0x00300011 - ldr r3, _02306C44 ; =ov11_02322C38 - mov r2, #0 - str r4, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _02306C38 ; =ov11_02324D88 - ldr r1, [r1] - strb r0, [r1, #0x22] - b _02306C30 -_02306900: - bl ov11_0230720C - ldr r0, _02306C38 ; =ov11_02324D88 - ldr r0, [r0] - ldrsb r0, [r0, #0x21] - bl ShowDialogueBox - ldr r0, _02306C38 ; =ov11_02324D88 - ldr r2, _02306C48 ; =0x000002EA - ldr r3, [r0] - mov r1, #8 - ldrsb r0, [r3, #0x21] - add r3, r3, #0x30 + OV11_02306794_OFFSET - bl ShowStringIdInDialogueBox - ldr r0, _02306C38 ; =ov11_02324D88 - mov r1, #5 - ldr r0, [r0] - str r1, [r0, #0x14] - b _02306C30 -_02306944: - mov r1, #3 - str r1, [r2, #0x8c + OV11_02306794_OFFSET] - mov r1, #2 - str r1, [sp] - ldr r2, [r0] - ldr r0, _02306C3C ; =ov11_02322C10 - ldr r1, _02306C4C ; =0x00300031 - ldr r3, _02306C50 ; =ov11_02322C20 - add r2, r2, #0x8c + OV11_02306794_OFFSET - bl CreateSimpleMenuFromStringIds - ldr r1, _02306C38 ; =ov11_02324D88 - mov r2, #6 - ldr r3, [r1] - strb r0, [r3, #0x22] - ldr r0, [r1] - str r2, [r0, #0x14] - b _02306C30 -_02306988: - ldrsb r0, [r2, #0x22] - bl IsSimpleMenuActive - cmp r0, #0 - bne _02306C30 - ldr r0, _02306C38 ; =ov11_02324D88 - ldr r0, [r0] - ldrsb r0, [r0, #0x22] - bl GetSimpleMenuResult__0202B870 - ldr r1, _02306C38 ; =ov11_02324D88 - mov r4, r0 - ldr r0, [r1] - ldrsb r0, [r0, #0x22] - bl CloseSimpleMenu - cmp r4, #2 - beq _023069CC - cmp r4, #3 - b _023069E0 -_023069CC: - ldr r0, _02306C38 ; =ov11_02324D88 - mov r1, #0xb - ldr r0, [r0] - str r1, [r0, #0x14] - b _02306C30 -_023069E0: - ldr r0, _02306C38 ; =ov11_02324D88 - mov r1, #2 - ldr r0, [r0] - str r1, [r0, #0x14] - b _02306C30 -_023069F4: - ldrb r0, [r2, #0x20] - cmp r0, #0 - beq _02306A08 - mov r0, #3 - bl sub_02017C50 -_02306A08: - ldr r0, _02306C38 ; =ov11_02324D88 - mov r3, #0xa - ldr r2, [r0] - mov r1, #7 - str r3, [r2, #0x2c + OV11_02306794_OFFSET] - ldr r0, [r0] - str r1, [r0, #0x14] - bl ov11_0230720C - ldr r0, _02306C38 ; =ov11_02324D88 -#ifdef JAPAN - ldr r2, _02308208 ; =0x00002FB8 - ldr ip, [r0] - mov r1, #0x218 -#else - mov r1, #0x218 - ldr ip, [r0] - mov r2, #0x2e4 -#endif - ldr r3, [ip, #4] - ldrsh r3, [r3, #4] - str r3, [ip, #0x30 + OV11_02306794_OFFSET] - ldr r3, [r0] - ldrsb r0, [r3, #0x21] - add r3, r3, #0x30 + OV11_02306794_OFFSET - bl ShowStringIdInDialogueBox - ldr r0, _02306C38 ; =ov11_02324D88 - ldr r0, [r0] - ldrsh r0, [r0, #0xc] - bl sub_02055B20 -#ifndef JAPAN - bl sub_0203AF0C -#endif - bl sub_02057180 - ldr r0, _02306C38 ; =ov11_02324D88 - ldr r1, [r0] - ldr r0, [r1] - cmp r0, #0 - moveq r0, #0 - streq r0, [r1, #8] - beq _02306C30 - bl sub_02055D4C - ldr r1, _02306C38 ; =ov11_02324D88 - ldr r1, [r1] - str r0, [r1, #8] - b _02306C30 -_02306A9C: - ldr r0, [r2] - cmp r0, #0 - beq _02306AB8 - bl sub_02055D4C - ldr r1, _02306C38 ; =ov11_02324D88 - ldr r1, [r1] - str r0, [r1, #8] -_02306AB8: - ldr r0, _02306C38 ; =ov11_02324D88 - mov r1, #9 - ldr r0, [r0] - str r1, [r0, #0x10] - bl ov11_02306794 - b _02306C30 -_02306AD0: - mov r0, #0xa - str r0, [r2, #0x10] - bl ov11_02306794 - b _02306C30 -_02306AE0: - ldr r0, _02306C54 ; =ov11_02322C00 - mov ip, #4 - ldr r3, _02306C58 ; =ov11_02322C50 - mov r1, #0x13 - mov r2, #0 - str ip, [sp] - bl CreateSimpleMenuFromStringIds - ldr r1, _02306C38 ; =ov11_02324D88 - ldr r1, [r1] - strb r0, [r1, #0x22] - b _02306C30 -_02306B0C: - ldrsh r1, [r2, #0xc] - add r0, sp, #4 - bl sub_0205B028 - ldr r1, _02306C38 ; =ov11_02324D88 - add r0, sp, #4 - ldr r1, [r1] - ldr r1, [r1, #0x88 + OV11_02306794_OFFSET] - bl sub_0203F150 - ldr r1, _02306C38 ; =ov11_02324D88 - ldr r1, [r1] - strb r0, [r1, #0x84 + OV11_02306794_OFFSET] - b _02306C30 -_02306B3C: -#ifdef JAPAN - ldr r0, _02306C5C ; =TEAM_MEMBER_TABLE_PTR - ldrsh r2, [r2, #0xc] - ldr r1, [r0] - mov r0, #0x44 -#else - ldr r0, [r2, #0x24] - cmp r0, #0 - bne _02306B90 - bl sub_0205633C - cmp r0, #0 - beq _02306B90 - ldr r0, _02306C38 ; =ov11_02324D88 - ldr r0, [r0] - ldrsh r0, [r0, #0xc] - bl GetActiveRosterIndex - mvn r1, #0 - cmp r0, r1 - beq _02306B90 - bl GetActiveTeamMember - mov r1, r0 - ldrsh r0, [r1, #0xc] - ldrsh r2, [r1, #6] - add r1, r1, #0x4c - mov r3, #0 - bl PrintIqSkillsMenu - b _02306C30 -_02306B90: - ldr r1, _02306C38 ; =ov11_02324D88 - ldr r0, _02306C5C ; =TEAM_MEMBER_TABLE_PTR - ldr r2, [r1] - ldr r1, [r0] - ldrsh r2, [r2, #0xc] - mov r0, #0x44 - mov r3, #0 -#endif - smlabb r1, r2, r0, r1 - ldrsh r0, [r1, #4] - ldrsh r2, [r1, #8] - add r1, r1, #0x14 -#ifdef JAPAN - mov r3, #0 -#endif - bl PrintIqSkillsMenu - b _02306C30 -_02306BC4: - ldrsb r0, [r2, #0x21] - bl CloseDialogueBox - ldr r0, _02306C38 ; =ov11_02324D88 - mvn r3, #1 - ldr r2, [r0] - mov r0, #4 - mov r1, #0 - strb r3, [r2, #0x21] - bl sub_02039C2C - b _02306C30 -_02306BEC: - mov r0, #4 - mov r1, #0 - bl sub_02039C2C - b _02306C30 -_02306BFC: - mov r1, #0xf - str r1, [r2, #0x14] - ldr r0, [r0] - mov r1, #0x16 - str r1, [r0, #0x10] - bl ov11_0230720C - ldr r0, _02306C38 ; =ov11_02324D88 - ldr r2, _02306C60 ; =0x000002E3 - ldr r3, [r0] - mov r1, #0x18 - ldrsb r0, [r3, #0x21] - add r3, r3, #0x30 + OV11_02306794_OFFSET - bl ShowStringIdInDialogueBox -_02306C30: - add sp, sp, #0x7c - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_02306C38: .word ov11_02324D88 -#ifdef JAPAN -_023081EC: .word 0x00002FB4 -#endif -_02306C3C: .word ov11_02322C10 -_02306C40: .word 0x00300011 -_02306C44: .word ov11_02322C38 -#ifdef JAPAN -_02306C48: .word 0x00002FBE -#else -_02306C48: .word 0x000002EA -#endif -_02306C4C: .word 0x00300031 -_02306C50: .word ov11_02322C20 -#ifdef JAPAN -_02308208: .word 0x00002FB8 -#endif -_02306C54: .word ov11_02322C00 -_02306C58: .word ov11_02322C50 -_02306C5C: .word TEAM_MEMBER_TABLE_PTR -#ifdef JAPAN -_02306C60: .word 0x00002FB7 -#else -_02306C60: .word 0x000002E3 -#endif - arm_func_end ov11_02306794 - - arm_func_start ov11_02306C64 -ov11_02306C64: ; 0x02306C64 - stmdb sp!, {r4, lr} - ldr r0, _02306C98 ; =ov11_02324D88 - mov r4, #0 - ldr r0, [r0] - cmp r0, #0 - beq _02306C90 - ldr r4, [r0, #8] - bl MemFree - ldr r0, _02306C98 ; =ov11_02324D88 - mov r1, #0 - str r1, [r0] -_02306C90: - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_02306C98: .word ov11_02324D88 - arm_func_end ov11_02306C64 - - arm_func_start ov11_02306C9C -ov11_02306C9C: ; 0x02306C9C -#ifdef JAPAN -#define OV11_02306C9C_OFFSET -4 -#else -#define OV11_02306C9C_OFFSET 0 -#endif - stmdb sp!, {r3, lr} - ldr r0, _023071C0 ; =ov11_02324D88 - ldr r2, [r0] - ldr r1, [r2, #0x28 + OV11_02306C9C_OFFSET] - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _023071B8 -_02306CB8: ; jump table - b _02306CC8 ; case 0 - b _02306CD4 ; case 1 - b _0230717C ; case 2 - b _023071B0 ; case 3 -_02306CC8: - mov r0, #1 - str r0, [r2, #0x28 + OV11_02306C9C_OFFSET] - b _023071B8 -_02306CD4: - ldr r0, [r2, #0x10] - cmp r0, #0x16 - addls pc, pc, r0, lsl #2 - b _023070B0 -_02306CE4: ; jump table - b _02307120 ; case 0 - b _023070B0 ; case 1 - b _023070B0 ; case 2 - b _02306D40 ; case 3 - b _023070B0 ; case 4 - b _023070B0 ; case 5 - b _023070B0 ; case 6 - b _023070E4 ; case 7 - b _02307058 ; case 8 - b _02307060 ; case 9 - b _02307068 ; case 10 - b _023070B0 ; case 11 - b _02307120 ; case 12 - b _02307104 ; case 13 - b _023070B0 ; case 14 - b _02306DE8 ; case 15 - b _02306DDC ; case 16 - b _02306DE8 ; case 17 - b _02306ED0 ; case 18 - b _02306EFC ; case 19 - b _02306FDC ; case 20 - b _02307018 ; case 21 - b _02307070 ; case 22 -_02306D40: - ldrsb r0, [r2, #0x22] - bl GetSimpleMenuResult__0202B870 - cmp r0, #1 - ldrne r1, _023071C0 ; =ov11_02324D88 - ldrne r1, [r1] - strne r0, [r1, #0x1c] - cmp r0, #1 - beq _02306D84 - cmp r0, #2 - beq _02306D74 - cmp r0, #3 - beq _02306D84 - b _02307120 -_02306D74: - bl ov11_023071C4 - mov r0, #0x17 - bl ov11_023062BC - b _02307120 -_02306D84: - ldr r0, _023071C0 ; =ov11_02324D88 - ldr r0, [r0] - ldrb r0, [r0, #0x20] - cmp r0, #0 - beq _02306DA0 - mov r0, #3 - bl sub_02017C50 -_02306DA0: - bl ov11_023071C4 - ldr r0, _023071C0 ; =ov11_02324D88 - ldr r0, [r0] - ldrsb r0, [r0, #0x21] - bl CloseDialogueBox - ldr r0, _023071C0 ; =ov11_02324D88 - mvn r3, #1 - ldr r1, [r0] - mov r2, #0xa - strb r3, [r1, #0x21] - ldr r1, [r0] - mov r0, #0xd - str r2, [r1, #0x2c + OV11_02306C9C_OFFSET] - bl ov11_023062BC - b _02307120 -_02306DDC: - mov r0, #0x11 - bl ov11_023062BC - b _02307120 -_02306DE8: - bl sub_0203A5A8 - cmp r0, #0 - beq _02306E70 - bl sub_0203A9EC - cmp r0, #0 - beq _02307120 - add r1, sp, #0 - mov r0, #0 - bl GetPressedButtons - ldrh r0, [sp] - tst r0, #8 - beq _02307120 - bl sub_0203AAB0 - ldr r1, _023071C0 ; =ov11_02324D88 - ldr r1, [r1] - strh r0, [r1, #0xc] - bl GetTeamMember - ldr r1, _023071C0 ; =ov11_02324D88 - ldr r1, [r1] - str r0, [r1, #4] - mov r0, #0 - bl PlaySeVolumeWrapper - bl sub_0203A5F0 - bl sub_0203A51C - ldr r0, _023071C0 ; =ov11_02324D88 - mov r3, #0xc - ldr r1, [r0] - mov r2, #0x14 - str r3, [r1, #0x18] - ldr r1, [r0] - mov r0, #0x12 - str r2, [r1, #0x14] - bl ov11_023062BC - b _02307120 -_02306E70: - bl sub_0203AA20 - mvn r1, #0 - cmp r0, r1 - bne _02306EA8 - bl sub_0203A51C - ldr r1, _023071C0 ; =ov11_02324D88 - mov r3, #2 - ldr r2, [r1] - mov r0, #0x12 - str r3, [r2, #0x18] - ldr r1, [r1] - str r3, [r1, #0x14] - bl ov11_023062BC - b _02307120 -_02306EA8: - ldr r1, _023071C0 ; =ov11_02324D88 - ldr r1, [r1] - strh r0, [r1, #0xc] - bl GetTeamMember - ldr r1, _023071C0 ; =ov11_02324D88 - ldr r1, [r1] - str r0, [r1, #4] - mov r0, #0x13 - bl ov11_023062BC - b _02307120 -_02306ED0: - ldr r1, [r2, #0x18] - sub r0, r1, #1 - str r0, [r2, #0x18] - cmp r1, #0 - bne _02307120 - bl sub_0203A51C - ldr r0, _023071C0 ; =ov11_02324D88 - ldr r0, [r0] - ldr r0, [r0, #0x14] - bl ov11_023062BC - b _02307120 -_02306EFC: - ldrsb r0, [r2, #0x22] - bl GetSimpleMenuResult__0202B870 - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _02307120 -_02306F10: ; jump table - b _02307120 ; case 0 - b _02306FC0 ; case 1 - b _02307120 ; case 2 - b _02307120 ; case 3 - b _02306F30 ; case 4 - b _02306F60 ; case 5 - b _02306F90 ; case 6 - b _02306FC0 ; case 7 -_02306F30: - bl ov11_023071C4 - bl sub_0203A51C - ldr r0, _023071C0 ; =ov11_02324D88 - mov r3, #2 - ldr r1, [r0] - mov r2, #4 - str r3, [r1, #0x18] - ldr r1, [r0] - mov r0, #0x12 - str r2, [r1, #0x14] - bl ov11_023062BC - b _02307120 -_02306F60: - bl ov11_023071C4 - bl sub_0203A51C - ldr r0, _023071C0 ; =ov11_02324D88 - mov r3, #2 - ldr r1, [r0] - mov r2, #0x14 - str r3, [r1, #0x18] - ldr r1, [r0] - mov r0, #0x12 - str r2, [r1, #0x14] - bl ov11_023062BC - b _02307120 -_02306F90: - bl ov11_023071C4 - bl sub_0203A51C - ldr r0, _023071C0 ; =ov11_02324D88 - mov r3, #2 - ldr r1, [r0] - mov r2, #0x15 - str r3, [r1, #0x18] - ldr r1, [r0] - mov r0, #0x12 - str r2, [r1, #0x14] - bl ov11_023062BC - b _02307120 -_02306FC0: - bl ov11_023071C4 - ldr r0, _023071C0 ; =ov11_02324D88 - mov r1, #0xf - ldr r0, [r0] - str r1, [r0, #0x10] - bl sub_0203A638 - b _02307120 -_02306FDC: - bl sub_0203F398 - cmp r0, #1 - bne _02307120 - ldr r0, _023071C0 ; =ov11_02324D88 - ldr r0, [r0] - ldrsb r0, [r0, #0x84 + OV11_02306C9C_OFFSET] - bl sub_0202836C - bl sub_0203F990 - ldr r0, _023071C0 ; =ov11_02324D88 - mvn r2, #1 - ldr r1, [r0] - mov r0, #0x10 - strb r2, [r1, #0x84 + OV11_02306C9C_OFFSET] - bl ov11_023062BC - b _02307120 -_02307018: - bl sub_02041B7C - cmp r0, #1 - bne _02307120 - bl sub_020420F4 -#ifndef JAPAN - ldr r0, _023071C0 ; =ov11_02324D88 - ldr r0, [r0] - ldr r0, [r0, #0x24] - cmp r0, #0 - bne _0230704C - bl sub_0205633C - cmp r0, #0 - bne _0230704C -#endif - bl sub_020572EC -_0230704C: - mov r0, #0x10 - bl ov11_023062BC - b _02307120 -_02307058: - mov r2, #3 - b _02307124 -_02307060: - mov r2, #2 - b _02307124 -_02307068: - mov r2, #4 - b _02307124 -_02307070: - ldrsb r0, [r2, #0x21] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02307120 - ldr r0, _023071C0 ; =ov11_02324D88 - ldr r0, [r0] - ldrsb r0, [r0, #0x21] - bl ShowDialogueBox - ldr r0, _023071C0 ; =ov11_02324D88 - mov r2, #0x18 - ldr r1, [r0] - str r2, [r1, #0x10] - ldr r0, [r0] - ldrsb r0, [r0, #0x21] - bl sub_0202F2C4 - b _02307120 -_023070B0: - ldrsb r0, [r2, #0x21] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02307120 - ldr r0, _023071C0 ; =ov11_02324D88 - ldr r0, [r0] - ldrsb r0, [r0, #0x21] - bl ShowDialogueBox - ldr r0, _023071C0 ; =ov11_02324D88 - ldr r0, [r0] - ldr r0, [r0, #0x14] - bl ov11_023062BC - b _02307120 -_023070E4: - ldr r1, [r2, #0x2c + OV11_02306C9C_OFFSET] - sub r0, r1, #1 - str r0, [r2, #0x2c + OV11_02306C9C_OFFSET] - cmp r1, #0 - bgt _02307120 - mov r0, #8 - bl ov11_023062BC - b _02307120 -_02307104: - ldr r1, [r2, #0x2c + OV11_02306C9C_OFFSET] - sub r0, r1, #1 - str r0, [r2, #0x2c + OV11_02306C9C_OFFSET] - cmp r1, #0 - bgt _02307120 - mov r0, #0xe - bl ov11_023062BC -_02307120: - mov r2, #1 -_02307124: - ldr r0, _023071C0 ; =ov11_02324D88 - ldr r1, [r0] - str r2, [r1, #0x80 + OV11_02306C9C_OFFSET] - ldr r2, [r0] - ldr r1, [r2, #0x80 + OV11_02306C9C_OFFSET] - cmp r1, #1 - beq _023071B8 - cmp r1, #2 - moveq r1, #3 - streq r1, [r2, #0x80 + OV11_02306C9C_OFFSET] - ldreq r0, [r0] - streq r1, [r0, #0x28 + OV11_02306C9C_OFFSET] - beq _023071B8 - mov r1, #2 - str r1, [r2, #0x28 + OV11_02306C9C_OFFSET] - ldr r0, [r0] - sub r1, r1, #4 - ldrsb r0, [r0, #0x21] - cmp r0, r1 - beq _023071B8 - bl sub_0202F2C4 - b _023071B8 -_0230717C: - mov r1, #3 - str r1, [r2, #0x28 + OV11_02306C9C_OFFSET] - ldr r0, [r0] - sub r1, r1, #5 - ldrsb r0, [r0, #0x21] - cmp r0, r1 - beq _023071B8 - bl CloseDialogueBox - ldr r0, _023071C0 ; =ov11_02324D88 - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x21] - b _023071B8 -_023071B0: - ldr r0, [r2, #0x80 + OV11_02306C9C_OFFSET] - ldmia sp!, {r3, pc} -_023071B8: - mov r0, #1 - ldmia sp!, {r3, pc} - .align 2, 0 -_023071C0: .word ov11_02324D88 - arm_func_end ov11_02306C9C - - arm_func_start ov11_023071C4 -ov11_023071C4: ; 0x023071C4 - stmdb sp!, {r3, lr} - ldr r0, _02307208 ; =ov11_02324D88 - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #0x22] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl sub_0202836C - ldr r0, _02307208 ; =ov11_02324D88 - ldr r0, [r0] - ldrsb r0, [r0, #0x22] - bl CloseSimpleMenu - ldr r0, _02307208 ; =ov11_02324D88 - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #0x22] - ldmia sp!, {r3, pc} - .align 2, 0 -_02307208: .word ov11_02324D88 - arm_func_end ov11_023071C4 - - arm_func_start ov11_0230720C -ov11_0230720C: ; 0x0230720C - stmdb sp!, {r3, lr} - ldr r1, _02307240 ; =ov11_02324D88 - mvn r0, #1 - ldr r1, [r1] - ldrsb r1, [r1, #0x21] - cmp r1, r0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl CreateDialogueBox - ldr r1, _02307240 ; =ov11_02324D88 - ldr r1, [r1] - strb r0, [r1, #0x21] - ldmia sp!, {r3, pc} - .align 2, 0 -_02307240: .word ov11_02324D88 - arm_func_end ov11_0230720C - - arm_func_start ov11_02307244 -ov11_02307244: ; 0x02307244 - stmdb sp!, {r3, lr} - mov r0, #0x330 - mov r1, #8 - bl MemAlloc - ldr r1, _023072FC ; =ov11_02324D8C - cmp r0, #0 - str r0, [r1] - moveq r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r0, #0x31c - bl ValidateTeamMembers - ldr r2, _023072FC ; =ov11_02324D8C - mvn lr, #1 - ldr r0, [r2] - add ip, lr, #1 - strb lr, [r0, #4] - ldr r0, [r2] - mov r3, #0 - strb lr, [r0, #5] - ldr r1, [r2] - mov r0, #1 - strb lr, [r1, #6] - ldr r1, [r2] - strb lr, [r1, #7] - ldr r1, [r2] - strb lr, [r1, #8] - ldr r1, [r2] - strb lr, [r1, #9] - ldr r1, [r2] - strb lr, [r1, #0xa] - ldr r1, [r2] - strb lr, [r1, #0xb] - ldr r1, [r2] - strb lr, [r1, #0xc] - ldr r1, [r2] - str ip, [r1, #0x18] - ldr r1, [r2] - str r3, [r1, #0x10] - ldr r1, [r2] - add r1, r1, #0x200 - strh ip, [r1, #0x54] - ldr r1, [r2] - str r3, [r1] - ldr r1, [r2] - str r3, [r1, #0x324] - ldmia sp!, {r3, pc} - .align 2, 0 -_023072FC: .word ov11_02324D8C - arm_func_end ov11_02307244 - - arm_func_start ov11_02307300 -ov11_02307300: ; 0x02307300 - stmdb sp!, {r4, lr} - ldr ip, _02307330 ; =ov11_02324D8C - mov r3, r2 - ldr r2, [ip] - mov lr, #0 - add ip, r2, r1 - mov r2, #1 - mov r4, r0 - strb lr, [ip, #0x104] - bl ov10_022BD394 - mov r0, r4 - ldmia sp!, {r4, pc} - .align 2, 0 -_02307330: .word ov11_02324D8C - arm_func_end ov11_02307300 - - arm_func_start ov11_02307334 -ov11_02307334: ; 0x02307334 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - sub sp, sp, #0x5a0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r4, [r0] - ldr r1, [r4] - cmp r1, #0x29 - addls pc, pc, r1, lsl #2 - b _02308CF0 -_02307354: ; jump table - b _023073FC ; case 0 - b _023074B8 ; case 1 - b _02307464 ; case 2 - b _023078D4 ; case 3 - b _02308844 ; case 4 - b _02308940 ; case 5 - b _023089C0 ; case 6 - b _02308A14 ; case 7 - b _02308A54 ; case 8 - b _02308A88 ; case 9 - b _02308AB4 ; case 10 - b _02308B70 ; case 11 - b _02308BB0 ; case 12 - b _02308C4C ; case 13 - b _02308C84 ; case 14 - b _02308C90 ; case 15 - b _02308CE8 ; case 16 - b _02307A14 ; case 17 - b _02307A30 ; case 18 - b _02307C14 ; case 19 - b _02307CD0 ; case 20 - b _02307D08 ; case 21 - b _02307E68 ; case 22 - b _02307F20 ; case 23 - b _02307F58 ; case 24 - b _02307F84 ; case 25 - b _02308658 ; case 26 - b _0230871C ; case 27 - b _02308748 ; case 28 - b _023087A0 ; case 29 - b _023087D4 ; case 30 - b _023081D0 ; case 31 - b _02308214 ; case 32 - b _02308054 ; case 33 - b _023080BC ; case 34 - b _023083E0 ; case 35 - b _02308450 ; case 36 - b _02308470 ; case 37 - b _023084AC ; case 38 - b _023085C8 ; case 39 - b _02308614 ; case 40 - b _0230880C ; case 41 -_023073FC: - bl GetNbItemsInBag - ldr r2, _023082B8 ; =ov11_02307300 - add r1, r4, #0x31c - str r2, [sp] - str r1, [sp, #4] - mov r1, #0 - str r1, [sp, #8] - ldr r2, [r4, #0x10] - add r3, r4, #0x104 - bl CreateInventoryMenuOuter - ldr r2, _023082B4 ; =ov11_02324D8C - mov r1, #0 - ldr r2, [r2] - strb r0, [r2, #4] - ldr r0, _023082BC ; =ov11_02322C88 - bl CreateTextBox - ldr r1, _023082B4 ; =ov11_02324D8C - mvn r3, #0 - ldr r4, [r1] - mov r2, #1 - strb r0, [r4, #5] - ldr r0, [r1] - str r3, [r0, #0x18] - ldr r0, [r1] - str r2, [r0] - b _02308CF0 -_02307464: - bl IsBagNotEmpty - cmp r0, #0 - bne _02307494 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl SetInventoryMenuState6 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0xc - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02307494: - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl ov10_022BCC7C - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #1 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_023074B8: - add r1, sp, #0xe - mov r0, #0 - bl GetPressedButtons - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl PopInventoryMenuField0x1A3 - ldrh r1, [sp, #0xe] - tst r1, #4 - bne _023074EC - tst r1, #0x800 - cmpeq r0, #0 - beq _02307548 -_023074EC: - cmp r0, #0 - bne _023074FC - mov r0, #5 - bl PlaySeVolumeWrapper -_023074FC: - bl SortItemsInBag - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x10] - bl GetNbItemsInBag - ldr r2, _023082B4 ; =ov11_02324D8C - mov r1, r0 - ldr r0, [r2] - ldrsb r0, [r0, #4] - bl ov10_022BCC60 - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r2, #0 - ldr r1, [r0] - str r2, [r1, #0x18] - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl ov10_022BCCB0 - b _02308CF0 -_02307548: - ldr r1, _023082B4 ; =ov11_02324D8C - mvn r0, #1 - ldr r1, [r1] - ldrsb r5, [r1, #5] - cmp r5, r0 - beq _0230760C - ldrsb r0, [r1, #4] - bl ov10_022BCDA8 - ldr r1, _023082B4 ; =ov11_02324D8C - mov r4, r0 - ldr r0, [r1] - ldr r0, [r0, #0x18] - cmp r0, r4 - beq _0230760C - mov r0, r4, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetItemAtIdx - ldr r1, _023082B4 ; =ov11_02324D8C - mov r6, r0 - ldr r1, [r1] - mov r0, r5 - str r4, [r1, #0x18] - bl sub_02027B1C - ldrb r0, [r6] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _023075E4 - ldrsh r0, [r6, #4] -#if defined(EUROPE) - add r0, r0, #0x4b - add r0, r0, #0x2f00 -#elif defined(JAPAN) - add r0, r0, #0x41 - add r0, r0, #0x1d00 -#else - add r0, r0, #0x49 - add r0, r0, #0x2f00 -#endif - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - bl StringFromId - mov r1, r0 - add r0, sp, #0x20 - bl strcpy - b _023075F0 -_023075E4: - ldr r1, _023082C0 ; =ov11_02322DB0 - add r0, sp, #0x20 - bl strcpy -_023075F0: - mov r1, #2 - add r3, sp, #0x20 - mov r0, r5 - mov r2, r1 - bl DrawTextInWindow - mov r0, r5 - bl UpdateWindow -_0230760C: - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl IsInventoryMenuActive - cmp r0, #0 - bne _02307840 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl ov10_022BCDBC - cmp r0, #0 - blt _0230781C - ldr r1, _023082B4 ; =ov11_02324D8C - ldr r2, [r1] - str r0, [r2, #0x10] - ldr r0, [r1] - ldr r0, [r0, #0x10] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetItemAtIdx - ldr r1, _023082B4 ; =ov11_02324D8C - mov r4, r0 - ldr r0, [r1] - ldrsh r1, [r4, #4] - add r0, r0, #0x200 - strh r1, [r0, #0x4e] - ldrb r0, [r4] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - ldrne r0, _023082B4 ; =ov11_02324D8C - ldrnesh r1, [r4, #4] - ldreq r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - moveq r1, #0 - add r0, r0, #0x200 - strh r1, [r0, #0x4e] - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x4e] - bl GetItemCategoryVeneer - mov r5, r0 - bl GetGameMode - mov r6, r0 - cmp r5, #5 - bne _0230777C - cmp r6, #4 - cmpne r6, #5 - beq _0230777C - mov sb, #0 - mov r8, sb - mov r7, #3 - ldr r6, _023082C4 ; =ov11_02322D38 - ldr r5, _023082B4 ; =ov11_02324D8C - ldr r4, _023082C8 ; =0x000002B6 - b _02307734 -_023076F4: - ldr r0, [r5] - cmp r1, r4 - add r0, r0, sb - strb r8, [r0, #0x276] - bne _02307728 - ldr r0, [r5] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x4e] - bl ov11_02309E48 - cmp r0, #0 - ldreq r0, [r5] - addeq r0, r0, sb - streqb r7, [r0, #0x276] -_02307728: - add r0, sb, #1 - mov r0, r0, lsl #0x10 - mov sb, r0, asr #0x10 -_02307734: - mov r0, sb, lsl #3 - ldrh r1, [r6, r0] - cmp r1, #0 - bne _023076F4 - ldr r1, _023082B4 ; =ov11_02324D8C - ldr r0, _023082CC ; =ov11_02322CB8 - ldr r2, [r1] - ldr r1, _023082D0 ; =0x00400213 - add r2, r2, #0x76 - add r4, r2, #0x200 - add r2, sp, #0x470 - mov r3, r6 - str r4, [sp, #0x4d0] - bl CreateParentMenuFromStringIds - ldr r1, _023082B4 ; =ov11_02324D8C - ldr r1, [r1] - strb r0, [r1, #6] - b _02307808 -_0230777C: - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x4e] - bl IsGummi - cmp r0, #0 - cmpne r6, #4 - cmpne r6, #5 - ldr r1, _023082D4 ; =0x00400013 - beq _023077C4 - ldr r0, _023082CC ; =ov11_02322CB8 - ldr r3, _023082D8 ; =ov11_02322D88 - mov r2, #0 - bl CreateParentMenuFromStringIds - ldr r1, _023082B4 ; =ov11_02324D8C - ldr r1, [r1] - strb r0, [r1, #6] - b _02307808 -_023077C4: - ldrb r0, [r4, #1] - mov r2, #0 - cmp r0, #0 - beq _023077F0 - ldr r0, _023082DC ; =ov11_02322CA8 - ldr r3, _023082E0 ; =ov11_02322D10 - bl CreateParentMenuFromStringIds - ldr r1, _023082B4 ; =ov11_02324D8C - ldr r1, [r1] - strb r0, [r1, #6] - b _02307808 -_023077F0: - ldr r0, _023082DC ; =ov11_02322CA8 - ldr r3, _023082E4 ; =ov11_02322D60 - bl CreateParentMenuFromStringIds - ldr r1, _023082B4 ; =ov11_02324D8C - ldr r1, [r1] - strb r0, [r1, #6] -_02307808: - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #3 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_0230781C: - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl ov10_022BCD10 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0xe - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02307840: - add r1, sp, #0xc - mov r0, #0 - bl GetPressedButtons - ldrh r0, [sp, #0xc] - tst r0, #8 - beq _02308CF0 - mov r0, #0 - bl PlaySeVolumeWrapper - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl ov10_022BCDF4 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl ov10_022BCDA8 - ldr r1, _023082B4 ; =ov11_02324D8C - ldr r2, [r1] - str r0, [r2, #0x10] - ldr r0, [r1] - ldrsb r0, [r0, #5] - bl CloseTextBox2 - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r2, #1 - ldr r1, [r0] - strb r2, [r1, #5] - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl CloseInventoryMenu - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r3, #1 - ldr r2, [r0] - mov r1, #0xa - strb r3, [r2, #4] - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_023078D4: - ldrsb r0, [r4, #6] - bl IsParentMenuActive - cmp r0, #0 - bne _02308CF0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #6] - bl GetSimpleMenuResult__0202AEA4 - cmp r0, #8 - beq _023079E4 - ldr r1, _023082B4 ; =ov11_02324D8C - cmp r0, #0 - ldr r1, [r1] - str r0, [r1, #0x14] - bne _02307928 - bl ov11_02308D48 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #7 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02307928: - cmp r0, #1 - bne _02307948 - bl ov11_02308D48 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #9 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02307948: - cmp r0, #2 - bne _0230798C - add r2, sp, #0x500 - mov r4, #5 - ldr r0, _023082E8 ; =ov11_02322C98 - ldr r3, _023082EC ; =ov11_02322CD8 - add r2, r2, #8 - mov r1, #0x33 - str r4, [sp, #0x508] - bl CreateParentMenuFromStringIds - ldr r1, _023082B4 ; =ov11_02324D8C - mov r2, #4 - ldr r3, [r1] - strb r0, [r3, #7] - ldr r0, [r1] - str r2, [r0] - b _02308CF0 -_0230798C: - cmp r0, #6 - bne _023079AC - bl ov11_02308D48 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x11 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_023079AC: - cmp r0, #7 - bne _023079CC - bl ov11_02308D48 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x18 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_023079CC: - bl ov11_02308D48 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0xa - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_023079E4: - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #6] - bl CloseParentMenu - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r3, #1 - ldr r2, [r0] - mov r1, #2 - strb r3, [r2, #6] - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02307A14: - mov r0, #1 - bl ov11_02309040 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x12 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02307A30: - bl ov11_023090DC - cmp r0, #0 - beq _02308CF0 - bl ov11_02309E24 - mvn r1, #0 - cmp r0, r1 - beq _02307BFC - ldr r1, _023082B4 ; =ov11_02324D8C - add r0, sp, #0x18 - ldr r4, [r1] - add r5, r4, #0x238 - bl ov11_02309DAC - add r1, sp, #0x18 - mov r0, r5 - bl ov11_02308F4C - ldr r2, [r5, #0x10] - ldr r0, _023082B4 ; =ov11_02324D8C - ldrsh r1, [r5, #8] - ldr r0, [r0] - ldrsh r2, [r2] - add r0, r0, #0x280 - bl GetLearnableIqSkills - ldr r1, _023082B4 ; =ov11_02324D8C - mvn r2, #0 - ldr r3, [r1] - str r0, [r3, #0x30c] - ldr r0, [r1] - add r0, r0, #0x200 - strh r2, [r0, #0x50] - ldr r2, [r5, #0x10] - ldr r0, [r1] - ldrsh r2, [r2] - str r2, [r0, #0x318] - ldr r6, [r1] - ldr r1, [r4, #0x238] - add r0, r6, #0x200 - cmp r1, #0 - ldrsh r4, [r0, #0x4e] - bne _02307AE8 - ldrsh r0, [r5, #4] - bl GetTeamMember - mov r1, r4 - add r3, r6, #0x250 - mov r2, #1 - bl ApplyGummiBoostsToGroundMonster - b _02307B08 -_02307AE8: - cmp r1, #1 - bne _02307B08 - ldrsh r0, [r5, #4] - bl GetActiveTeamMember - mov r1, r4 - add r3, r6, #0x250 - mov r2, #1 - bl ApplyGummiBoostsToTeamMember -_02307B08: - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r1, [r5, #0x10] - ldr r2, [r0] - ldrsh r0, [r1] - ldr r1, [r2, #0x318] - sub r0, r1, r0 - str r0, [r2, #0x318] - bl ov11_022DC504 - ldr r0, [r5] - cmp r0, #1 - bne _02307B3C - ldrsh r0, [r5, #4] - bl sub_02058794 -_02307B3C: - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r2, [r5, #0x10] - ldr r0, [r0] - ldrsh r1, [r5, #8] - add r0, r0, #0xc5 - ldrsh r2, [r2] - add r0, r0, #0x200 - bl GetLearnableIqSkills - ldr r1, _023082B4 ; =ov11_02324D8C - mov r2, #1 - ldr r3, [r1] - str r0, [r3, #0x310] - ldr r0, [r1] - str r2, [r0, #0x314] - ldr r0, [r1] - add r0, r0, #0x200 - ldrsh r4, [r0, #0x50] - bl ov11_02308EDC - cmp r4, #0 - blt _02307BCC - cmp r4, #3 - bgt _02307BCC - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldr r0, [r0, #0x10] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl RemoveItemNoHoleCheck - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r3, #0 - ldr r2, [r0] - mov r1, #0x13 - str r3, [r2, #0x18] - ldr r0, [r0] - str r1, [r0] - b _02307C0C -_02307BCC: - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r2, _023082F0 ; =0x000002BE - ldr r3, [r0] - mov r1, #0x18 - ldrsb r0, [r3, #8] - add r3, r3, #0xb4 - bl ShowStringIdInDialogueBox - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0xd - ldr r0, [r0] - str r1, [r0] - b _02307C0C -_02307BFC: - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0 - ldr r0, [r0] - str r1, [r0] -_02307C0C: - bl ov11_02309DF8 - b _02308CF0 -_02307C14: - add r0, r4, #0x200 - ldrsh r1, [r0, #0x50] - cmp r1, #3 - addls pc, pc, r1, lsl #2 - b _02307C58 -_02307C28: ; jump table - b _02307C38 ; case 0 - b _02307C40 ; case 1 - b _02307C48 ; case 2 - b _02307C50 ; case 3 -_02307C38: - ldr r5, _023082F4 ; =0x000002B9 - b _02307C5C -_02307C40: - ldr r5, _023082F8 ; =0x000002BA - b _02307C5C -_02307C48: - ldr r5, _023082FC ; =0x000002BB - b _02307C5C -_02307C50: -#ifdef JAPAN - ldr r5, _02309898 ; =0x00002FDC -#else - mov r5, #0x2bc -#endif - b _02307C5C -_02307C58: - mov r5, #0 -_02307C5C: - ldr r0, [r4, #0x318] - cmp r0, #0 - bne _02307C78 - cmp r1, #0 - blt _02307C78 - cmp r1, #3 - ldrle r5, _02308300 ; =0x000002BD -_02307C78: - cmp r5, #0 - moveq r0, #0x10 - streq r0, [r4] - beq _02308CF0 - add r0, r4, #0x238 - bl ov11_0230901C - ldr r1, _023082B4 ; =ov11_02324D8C - ldr r1, [r1] - str r0, [r1, #0xb4] - bl ov11_02308EDC - ldr r0, _023082B4 ; =ov11_02324D8C - mov r2, r5 - ldr r3, [r0] - mov r1, #0x18 - ldrsb r0, [r3, #8] - add r3, r3, #0xb4 - bl ShowStringIdInDialogueBox - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x14 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02307CD0: - ldrsb r0, [r4, #8] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02308CF0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #8] - bl ShowDialogueBox - bl ov11_02308F14 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x15 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02307D08: - mov r2, #1 - mov r1, #0 - mov r0, r2 - mov r3, r1 -_02307D18: - ldr r6, _023082B4 ; =ov11_02324D8C - mov r5, r3 - ldr ip, [r6] - mov r6, r3 - mov sb, r3 - ldr lr, [ip, #0x30c] - b _02307D50 -_02307D34: - add r7, ip, sb - ldrb r7, [r7, #0x280] - ldr r8, [ip, #0x314] - cmp r8, r7 - moveq r5, r2 - beq _02307D58 - add sb, sb, #1 -_02307D50: - cmp sb, lr - blt _02307D34 -_02307D58: - ldr r8, _023082B4 ; =ov11_02324D8C - mov r7, r1 - ldr ip, [r8] - ldr lr, [ip, #0x310] - b _02307D88 -_02307D6C: - add r8, ip, r7 - ldrb r8, [r8, #0x2c5] - ldr sb, [ip, #0x314] - cmp sb, r8 - moveq r6, r0 - beq _02307D90 - add r7, r7, #1 -_02307D88: - cmp r7, lr - blt _02307D6C -_02307D90: - cmp r5, r6 - beq _02307E2C - add r0, r4, #0x238 - bl ov11_0230901C - ldr r1, _023082B4 ; =ov11_02324D8C - ldr r2, [r1] - str r0, [r2, #0xb4] - ldr r2, [r1] - mov r0, #4 - ldr r1, [r2, #0x314] - str r1, [r2, #0xc4] - bl sub_02017C50 - bl ov11_02308EDC - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r2, _02308304 ; =0x000002BF - ldr r3, [r0] - mov r1, #0x18 - ldrsb r0, [r3, #8] - add r3, r3, #0xb4 - bl ShowStringIdInDialogueBox - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r1, [r0] - ldr r0, [r1, #0x244] - ldr r1, [r1, #0x314] - and r1, r1, #0xff - bl EnableIqSkill - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - add r0, r0, #0x238 - bl ov11_02308FD0 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x14 - ldr r3, [r0] - ldr r2, [r3, #0x314] - add r2, r2, #1 - str r2, [r3, #0x314] - ldr r0, [r0] - str r1, [r0] - b _02307E4C -_02307E2C: - ldr r6, [r4, #0x314] - ldr r5, _023082B4 ; =ov11_02324D8C - add r6, r6, #1 - str r6, [r4, #0x314] - ldr r4, [r5] - ldr r5, [r4, #0x314] - cmp r5, #0x45 - blt _02307D18 -_02307E4C: - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r1, [r0] - ldr r0, [r1, #0x314] - cmp r0, #0x45 - movge r0, #0x16 - strge r0, [r1] - b _02308CF0 -_02307E68: - add r0, r4, #0x200 - ldrh r0, [r0, #0x52] - cmp r0, #8 - addls pc, pc, r0, lsl #2 - b _02307EC8 -_02307E7C: ; jump table - b _02307EA0 ; case 0 - b _02307EA8 ; case 1 - b _02307EB0 ; case 2 - b _02307EC8 ; case 3 - b _02307EB8 ; case 4 - b _02307EC8 ; case 5 - b _02307EC8 ; case 6 - b _02307EC8 ; case 7 - b _02307EC0 ; case 8 -_02307EA0: - mov r0, #0 - b _02307ECC -_02307EA8: - ldr r0, _02308308 ; =0x000002C1 - b _02307ECC -_02307EB0: - ldr r0, _0230830C ; =0x000002C2 - b _02307ECC -_02307EB8: - ldr r0, _02308310 ; =0x000002C3 - b _02307ECC -_02307EC0: -#ifdef JAPAN - ldr r0, _023098B0 ; =0x00002FE4 - b _02307ECC -_02307EC8: - ldr r0, _023098B4 ; =0x00002FE0 -#else - mov r0, #0x2c4 - b _02307ECC -_02307EC8: - mov r0, #0x2c0 -#endif -_02307ECC: - cmp r0, #0 - moveq r0, #0x10 - streq r0, [r4] - beq _02308CF0 - bl ov11_02308EDC - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r2, _02308304 ; =0x000002BF - ldr r3, [r0] - mov r1, #0x18 - ldrsb r0, [r3, #8] - add r3, r3, #0xb4 - bl ShowStringIdInDialogueBox - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x17 - ldr r3, [r0] - ldr r2, [r3, #0x314] - add r2, r2, #1 - str r2, [r3, #0x314] - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02307F20: - ldrsb r0, [r4, #8] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02308CF0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #8] - bl ShowDialogueBox - bl ov11_02308F14 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x10 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02307F58: - ldr r0, [r4, #0x10] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetItemAtIdx - ldrsh r0, [r0, #4] - bl ov11_02309084 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x19 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02307F84: - bl ov11_023090DC - cmp r0, #0 - beq _02308CF0 - bl ov11_02309E24 - mvn r1, #0 - cmp r0, r1 - beq _0230803C - ldr r1, _023082B4 ; =ov11_02324D8C - add r0, sp, #0x10 - ldr r4, [r1] - bl ov11_02309DAC - add r1, sp, #0x10 - add r0, r4, #0x238 - bl ov11_02308F4C - add r0, r4, #0x238 - bl ov11_02308FEC - bl sub_020415BC - cmp r0, #0 - ldrne r0, _023082B4 ; =ov11_02324D8C - movne r1, #0x1d - ldrne r0, [r0] - strne r1, [r0] - bne _0230804C - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldr r0, [r0, #0x10] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetItemAtIdx - mov r4, r0 - ldrsh r0, [r4, #4] - bl IsHM - cmp r0, #0 - bne _02308028 - ldrsh r2, [r4, #4] - mov r0, r4 - mov r1, #0xbb - sub r2, r2, #0xbc - strh r2, [r4, #2] - strh r1, [r4, #4] - bl SetItemAcquired -_02308028: - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x1a - ldr r0, [r0] - str r1, [r0] - b _0230804C -_0230803C: - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0 - ldr r0, [r0] - str r1, [r0] -_0230804C: - bl ov11_02309DF8 - b _02308CF0 -_02308054: - add r0, r4, #0x200 - ldrsh r2, [r0, #0x40] - ldrb r3, [r4, #0x242] - add r0, r4, #0x328 - mov r1, #2 - bl sub_02053CA0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x4e] - bl GetItemMoveId16 - bl sub_0203FD14 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0 - ldr r0, [r0] - mov r2, r1 - add r3, r0, #0x328 - mov r0, #6 - bl sub_0204019C - ldr r1, _023082B4 ; =ov11_02324D8C - mov r2, #0x22 - ldr r3, [r1] - strb r0, [r3, #0xa] - ldr r0, [r1] - str r2, [r0] - b _02308CF0 -_023080BC: - bl sub_020407EC - cmp r0, #1 - beq _023080F0 - cmp r0, #2 - beq _023080DC - cmp r0, #7 - beq _02308124 - b _02308CF0 -_023080DC: - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x1f - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_023080F0: - bl sub_020407C0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #0xa] - bl CloseAdvancedTextBox - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r3, #1 - ldr r2, [r0] - mov r1, #0x18 - strb r3, [r2, #0xa] - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02308124: - bl sub_02041094 - cmp r0, #4 - bge _02308168 - bl sub_0203FD38 - ldr r2, _023082B4 ; =ov11_02324D8C - mov r1, r0 - ldr r0, [r2] - mov r2, #0x20 - add r0, r0, #0x56 - add r0, r0, #0x200 - bl memcpy - bl sub_02041094 - ldr r1, _023082B4 ; =ov11_02324D8C - ldr r1, [r1] - add r1, r1, #0x200 - strh r0, [r1, #0x54] - b _0230819C -_02308168: - bl sub_0203FD2C - ldr r2, _023082B4 ; =ov11_02324D8C - mov r1, r0 - ldr r0, [r2] - mov r2, #8 - add r0, r0, #0x56 - add r0, r0, #0x200 - bl memcpy - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0x200 - strh r1, [r0, #0x54] -_0230819C: - bl sub_020407C0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #0xa] - bl CloseAdvancedTextBox - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r3, #1 - ldr r2, [r0] - mov r1, #0x27 - strb r3, [r2, #0xa] - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_023081D0: - mov r1, #1 - str r1, [r4, #0x1c] - mov r1, #3 - str r1, [sp] - ldr r1, [r0] - ldr r0, _02308314 ; =ov11_02322CC8 - ldr r3, _02308318 ; =ov11_02322CF0 - add r2, r1, #0x1c - mov r1, #0x33 - bl CreateSimpleMenuFromStringIds - ldr r1, _023082B4 ; =ov11_02324D8C - mov r2, #0x20 - ldr r3, [r1] - strb r0, [r3, #0xc] - ldr r0, [r1] - str r2, [r0] - b _02308CF0 -_02308214: - ldrsb r0, [r4, #0xc] - bl IsSimpleMenuActive - cmp r0, #0 - bne _02308CF0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #0xc] - bl GetSimpleMenuResult__0202B870 - ldr r1, _023082B4 ; =ov11_02324D8C - mov r4, r0 - ldr r0, [r1] - ldrsb r0, [r0, #0xc] - bl CloseSimpleMenu - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r1, #1 - ldr r0, [r0] - cmp r4, #0 - strb r1, [r0, #0xc] - beq _02308274 - cmp r4, #1 - beq _0230831C - cmp r4, #2 - beq _023083C8 - b _02308CF0 -_02308274: - bl sub_02041094 - ldr r2, _023082B4 ; =ov11_02324D8C - ldr r1, [r2] - add r1, r1, #0x200 - strh r0, [r1, #0x4c] - ldr r0, [r2] - ldrsb r0, [r0, #0xa] - bl CloseAdvancedTextBox - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r3, #1 - ldr r2, [r0] - mov r1, #0x23 - strb r3, [r2, #0xa] - ldr r0, [r0] - str r1, [r0] - b _02308CF0 - .align 2, 0 -#ifdef JAPAN -#define OV11_02307334_OFFSET 0x2D20 -#else -#define OV11_02307334_OFFSET 0 -#endif -_023082B4: .word ov11_02324D8C -_023082B8: .word ov11_02307300 -_023082BC: .word ov11_02322C88 -_023082C0: .word ov11_02322DB0 -_023082C4: .word ov11_02322D38 -_023082C8: .word 0x000002B6 + OV11_02307334_OFFSET -_023082CC: .word ov11_02322CB8 -_023082D0: .word 0x00400213 -_023082D4: .word 0x00400013 -_023082D8: .word ov11_02322D88 -_023082DC: .word ov11_02322CA8 -_023082E0: .word ov11_02322D10 -_023082E4: .word ov11_02322D60 -_023082E8: .word ov11_02322C98 -_023082EC: .word ov11_02322CD8 -_023082F0: .word 0x000002BE + OV11_02307334_OFFSET -_023082F4: .word 0x000002B9 + OV11_02307334_OFFSET -_023082F8: .word 0x000002BA + OV11_02307334_OFFSET -_023082FC: .word 0x000002BB + OV11_02307334_OFFSET -#ifdef JAPAN -_02309898: .word 0x00002FDC -#endif -_02308300: .word 0x000002BD + OV11_02307334_OFFSET -_02308304: .word 0x000002BF + OV11_02307334_OFFSET -_02308308: .word 0x000002C1 + OV11_02307334_OFFSET -_0230830C: .word 0x000002C2 + OV11_02307334_OFFSET -_02308310: .word 0x000002C3 + OV11_02307334_OFFSET -#ifdef JAPAN -_023098B0: .word 0x00002FE4 -_023098B4: .word 0x00002FE0 -#endif -_02308314: .word ov11_02322CC8 -_02308318: .word ov11_02322CF0 -_0230831C: - bl sub_02041094 - cmp r0, #4 - bge _02308360 - bl sub_0203FD38 - ldr r2, _023082B4 ; =ov11_02324D8C - mov r1, r0 - ldr r0, [r2] - mov r2, #0x20 - add r0, r0, #0x56 - add r0, r0, #0x200 - bl memcpy - bl sub_02041094 - ldr r1, _023082B4 ; =ov11_02324D8C - ldr r1, [r1] - add r1, r1, #0x200 - strh r0, [r1, #0x54] - b _02308394 -_02308360: - bl sub_0203FD2C - ldr r2, _023082B4 ; =ov11_02324D8C - mov r1, r0 - ldr r0, [r2] - mov r2, #8 - add r0, r0, #0x56 - add r0, r0, #0x200 - bl memcpy - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r1, #0 - ldr r0, [r0] - add r0, r0, #0x200 - strh r1, [r0, #0x54] -_02308394: - bl sub_020407C0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #0xa] - bl CloseAdvancedTextBox - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r3, #1 - ldr r2, [r0] - mov r1, #0x27 - strb r3, [r2, #0xa] - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_023083C8: - bl sub_020416FC - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x22 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_023083E0: - add r0, r4, #0x200 - ldrsh r0, [r0, #0x4c] - bl sub_02041154 - ldr r1, _023082B4 ; =ov11_02324D8C - ldr r4, _02308CFC ; =0x000008D7 - ldr r2, [r1] - str r0, [r2, #0xc4] - ldr r0, [r1] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x4c] - cmp r0, #3 - bge _0230841C - bl sub_02041364 - cmp r0, #0 - subne r4, r4, #1 -_0230841C: - bl ov11_02308EDC - ldr r0, _023082B4 ; =ov11_02324D8C - mov r2, r4 - ldr r3, [r0] - mov r1, #0x18 - ldrsb r0, [r3, #8] - add r3, r3, #0xb4 - bl ShowStringIdInDialogueBox - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x24 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02308450: - ldrsb r0, [r4, #8] - bl IsDialogueBoxActive - cmp r0, #0 - ldreq r0, _023082B4 ; =ov11_02324D8C - moveq r1, #0x25 - ldreq r0, [r0] - streq r1, [r0] - b _02308CF0 -_02308470: - add r2, sp, #0x500 - mov r4, #5 - ldr r3, _023082EC ; =ov11_02322CD8 - add r2, r2, #8 - mov r0, #0 - mov r1, #0x33 - str r4, [sp, #0x508] - bl CreateParentMenuFromStringIds - ldr r1, _023082B4 ; =ov11_02324D8C - mov r2, #0x26 - ldr r3, [r1] - strb r0, [r3, #7] - ldr r0, [r1] - str r2, [r0] - b _02308CF0 -_023084AC: - ldrsb r0, [r4, #7] - bl IsParentMenuActive - cmp r0, #0 - bne _02308CF0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #7] - bl GetSimpleMenuResult__0202AEA4 - cmp r0, #4 - bne _02308570 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldr r0, [r0, #0x10] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetItemAtIdx - mov r4, r0 - ldrsh r0, [r4, #4] - bl IsHM - cmp r0, #0 - bne _0230852C - ldrb r0, [r4, #1] - cmp r0, #0 - beq _02308510 - bl sub_020582E0 -_02308510: - ldrsh r2, [r4, #4] - mov r0, r4 - mov r1, #0xbb - sub r2, r2, #0xbc - strh r2, [r4, #2] - strh r1, [r4, #4] - bl SetItemAcquired -_0230852C: - ldr r0, _023082B4 ; =ov11_02324D8C - mov r2, #0x1a - ldr r1, [r0] - str r2, [r1] - ldr r1, [r0] - add r0, r1, #0x200 - ldrsh r0, [r0, #0x4c] - cmp r0, #4 - movge r0, #0x1b - strge r0, [r1] - bge _02308594 - bl sub_02041484 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x1a - ldr r0, [r0] - str r1, [r0] - b _02308594 -_02308570: - bl sub_020407C0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - add r0, r0, #0x238 - bl ov11_02308FEC - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x21 - ldr r0, [r0] - str r1, [r0] -_02308594: - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #7] - bl CloseParentMenu - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r2, #1 - ldr r1, [r0] - strb r2, [r1, #7] - ldr r0, [r0] - ldrsb r0, [r0, #8] - bl ShowDialogueBox - bl ov11_02308F14 - b _02308CF0 -_023085C8: - add r0, r4, #0x200 - ldrsh r0, [r0, #0x54] - mov r3, #1 - cmp r0, #0 - movlt r2, #0 - movge r2, r0 - cmp r0, #0 - movlt r1, #1 - add r0, r4, #0x56 - movge r1, #4 - add r0, r0, #0x200 - bl sub_020417A8 - ldr r1, _023082B4 ; =ov11_02324D8C - mov r2, #0x28 - ldr r3, [r1] - strb r0, [r3, #0xb] - ldr r0, [r1] - str r2, [r0] - b _02308CF0 -_02308614: - ldrsb r0, [r4, #0xb] - bl IsScrollBoxActive - cmp r0, #0 - bne _02308CF0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #0xb] - bl CloseScrollBox - bl sub_02041A00 - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r3, #1 - ldr r2, [r0] - mov r1, #0x21 - strb r3, [r2, #0xb] - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02308658: - add r0, r4, #0x200 - ldrsh r0, [r0, #0x4e] - bl GetItemMoveId16 - mov r4, r0 - ldr r0, _02308D00 ; =0x0000131B - mov r1, #0x100 - bl sub_02017C74 - mov r0, r4 - bl sub_02041614 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r1, [r0] - ldr r0, [r1, #0x238] - add r1, r1, #0x238 - cmp r0, #0 - bne _023086A0 - ldrsh r0, [r1, #4] - bl sub_0203FD80 - b _023086B0 -_023086A0: - cmp r0, #1 - bne _023086B0 - ldrsh r0, [r1, #4] - bl sub_0203FDEC -_023086B0: - bl sub_020407C0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r1, [r0] - str r4, [r1, #0xc4] - ldr r0, [r0] - add r0, r0, #0x238 - bl ov11_02308DD8 - ldr r1, _023082B4 ; =ov11_02324D8C - ldr r1, [r1] - str r0, [r1, #0xec] - bl ov11_02308EDC - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r2, _02308D04 ; =0x00000F23 - ldr r3, [r0] - mov r1, #0x18 - ldrsb r0, [r3, #8] - add r3, r3, #0xb4 - bl ShowStringIdInDialogueBox - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - add r0, r0, #0x238 - bl ov11_02308FD0 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x29 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_0230871C: - bl sub_020407C0 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x1c - ldr r0, [r0] - str r1, [r0] - bl sub_020037A4 - ldr r1, _023082B4 ; =ov11_02324D8C - add r2, r0, #0xa - ldr r0, [r1] - str r2, [r0, #0x32c] - b _02308CF0 -_02308748: - bl sub_020037A4 - ldr r1, [r4, #0x32c] - cmp r0, r1 - ble _02308CF0 - add r0, r4, #0x238 - bl ov11_02308DD8 - ldr r1, _023082B4 ; =ov11_02324D8C - ldr r1, [r1] - str r0, [r1, #0xec] - bl ov11_02308EDC - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r2, _02308D08 ; =0x00000F24 - ldr r3, [r0] - mov r1, #0x18 - ldrsb r0, [r3, #8] - add r3, r3, #0xb4 - bl ShowStringIdInDialogueBox - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x29 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_023087A0: - bl ov11_02308EDC - ldr r0, _023082B4 ; =ov11_02324D8C -#ifdef JAPAN - ldr r2, _0230A2B0_JP ; =0x0000248F - ldr r0, [r0] - mov r1, #0x18 -#else - mov r1, #0x18 - ldr r0, [r0] - add r2, r1, #0xf10 -#endif - ldrsb r0, [r0, #8] - mov r3, #0 - bl ShowStringIdInDialogueBox - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x1e - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_023087D4: - ldrsb r0, [r4, #8] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02308CF0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #8] - bl ShowDialogueBox - bl ov11_02308F14 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x21 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_0230880C: - ldrsb r0, [r4, #8] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02308CF0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #8] - bl ShowDialogueBox - bl ov11_02308F14 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02308844: - ldrsb r0, [r4, #7] - bl IsParentMenuActive - cmp r0, #0 - bne _02308CF0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #7] - bl GetSimpleMenuResult__0202AEA4 - ldr r1, _023082B4 ; =ov11_02324D8C - mov r3, #2 - ldr r2, [r1] - cmp r0, #8 - str r3, [r2] - beq _02308900 - cmp r0, #4 - bne _02308900 - ldr r3, [r1] - mov r2, #0 - add r0, r3, #0x200 - ldrsh r0, [r0, #0x4e] - str r0, [r3, #0xc4] - ldr r0, [r1] - str r2, [r0, #0xd8] - ldr r0, [r1] - ldr r0, [r0, #0x10] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl RemoveItemNoHoleCheck - bl ov11_022DC504 - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r1, #0 - ldr r0, [r0] - str r1, [r0, #0x18] - bl GetNbItemsInBag - ldr r2, _023082B4 ; =ov11_02324D8C - mov r1, r0 - ldr r0, [r2] - ldrsb r0, [r0, #4] - bl ov10_022BCC60 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl SetInventoryMenuState6 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #5 - ldr r0, [r0] - str r1, [r0] -_02308900: - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #7] - bl CloseParentMenu - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r2, #1 - ldr r1, [r0] - strb r2, [r1, #7] - ldr r0, [r0] - ldrsb r0, [r0, #6] - bl CloseParentMenu - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #6] - b _02308CF0 -_02308940: - ldrsb r0, [r4, #4] - bl IsInventoryMenuActive - cmp r0, #0 - bne _02308CF0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #5] - bl CloseTextBox2 - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r2, #1 - ldr r1, [r0] - strb r2, [r1, #5] - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl CloseInventoryMenu - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #4] - bl ov11_02308EDC - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r2, _02308D0C ; =0x000002CB - ldr r3, [r0] - mov r1, #0x18 - ldrsb r0, [r3, #8] - add r3, r3, #0xb4 - bl ShowStringIdInDialogueBox - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #6 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_023089C0: - ldrsb r0, [r4, #8] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02308CF0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #8] - bl ShowDialogueBox - bl IsBagNotEmpty - cmp r0, #0 - ldreq r0, _023082B4 ; =ov11_02324D8C - moveq r1, #0xc - ldreq r0, [r0] - streq r1, [r0] - beq _02308CF0 - bl ov11_02308F14 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02308A14: - mov r2, #0 - str r2, [sp] - str r2, [sp, #4] - ldr r0, [r4, #0x10] - mov r3, r2 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r1, #2 - bl sub_02044688 - ldr r1, _023082B4 ; =ov11_02324D8C - mov r2, #8 - ldr r3, [r1] - str r0, [r3, #0x324] - ldr r0, [r1] - str r2, [r0] - b _02308CF0 -_02308A54: - ldr r0, [r4, #0x324] - bl sub_02044800 - cmp r0, #1 - bne _02308CF0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - add r0, r0, #0x324 - bl sub_020448EC - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02308A88: - ldr r0, [r4, #0x10] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetItemAtIdx - ldrb r0, [r0, #1] - bl sub_020582E0 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02308AB4: - ldr r0, [r4, #0x10] - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - bl GetItemAtIdx - mov r4, r0 - ldrb r0, [r4] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - ldrne r0, _023082B4 ; =ov11_02324D8C - ldrnesh r1, [r4, #4] - ldreq r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - moveq r1, #0 - add r0, r0, #0x200 - strh r1, [r0, #0x4e] - add r0, sp, #0x420 - bl InitPreprocessorArgs - ldr r0, _023082B4 ; =ov11_02324D8C - add r6, sp, #0x420 - ldr r1, [r0] - ldr r0, _02308D10 ; =ov11_02322C78 - add r5, r1, #0x200 - ldrsh r2, [r5, #0x4e] - ldr r1, _02308D14 ; =0x00001013 - ldr r3, _02308D18 ; =0x000008E4 - str r2, [sp, #0x430] - ldrh r4, [r4, #2] - mov r2, #0 - add r4, r4, #0xbc - str r4, [sp, #0x438] - str r6, [sp] - ldrsh r4, [r5, #0x4e] -#if defined(EUROPE) - add r4, r4, #0xd3 - add r4, r4, #0x2900 -#elif defined(JAPAN) - add r4, r4, #0xce - add r4, r4, #0x4100 -#else - add r4, r4, #0xd1 - add r4, r4, #0x2900 -#endif - mov r4, r4, lsl #0x10 - mov r4, r4, lsr #0x10 - stmib sp, {r4, r6} - bl CreateScrollBoxSingle - ldr r1, _023082B4 ; =ov11_02324D8C - mov r2, #0xb - ldr r3, [r1] - strb r0, [r3, #9] - ldr r0, [r1] - str r2, [r0] - b _02308CF0 -_02308B70: - ldrsb r0, [r4, #9] - bl IsScrollBoxActive - cmp r0, #0 - bne _02308CF0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #9] - bl CloseScrollBox - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r3, #1 - ldr r2, [r0] - mov r1, #0 - strb r3, [r2, #9] - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02308BB0: - ldrsb r0, [r4, #5] - mvn r1, #1 - cmp r0, r1 - beq _02308BD4 - bl CloseTextBox2 - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #5] -_02308BD4: - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #4] - cmp r0, r1 - beq _02308C00 - bl CloseInventoryMenu - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #4] -_02308C00: - ldr r1, _023082B4 ; =ov11_02324D8C - mvn r0, #1 - ldr r1, [r1] - ldrsb r1, [r1, #8] - cmp r1, r0 - bne _02308C1C - bl ov11_02308EDC -_02308C1C: - ldr r0, _023082B4 ; =ov11_02324D8C -#ifdef JAPAN - ldr r2, _0230A2C4_JP ; =0x00002FD4 - ldr r0, [r0] - mov r1, #0x18 -#else - mov r1, #0x18 - ldr r0, [r0] - mov r2, #0x2b4 -#endif - ldrsb r0, [r0, #8] - mov r3, #0 - bl ShowStringIdInDialogueBox - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0xd - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02308C4C: - ldrsb r0, [r4, #8] - bl IsDialogueBoxActive - cmp r0, #0 - bne _02308CF0 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #8] - bl ShowDialogueBox - bl ov11_02308F14 - ldr r0, _023082B4 ; =ov11_02324D8C - mov r1, #0x10 - ldr r0, [r0] - str r1, [r0] - b _02308CF0 -_02308C84: - mov r0, #0xf - str r0, [r4] - b _02308CF0 -_02308C90: - ldrsb r0, [r4, #4] - bl IsInventoryMenuActive - cmp r0, #0 - bne _02308CE8 - ldr r0, _023082B4 ; =ov11_02324D8C - ldr r0, [r0] - ldrsb r0, [r0, #5] - bl CloseTextBox2 - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r2, #1 - ldr r1, [r0] - strb r2, [r1, #5] - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl CloseInventoryMenu - ldr r0, _023082B4 ; =ov11_02324D8C - mvn r3, #1 - ldr r2, [r0] - mov r1, #0x10 - strb r3, [r2, #4] - ldr r0, [r0] - str r1, [r0] -_02308CE8: - mov r0, #1 - b _02308CF4 -_02308CF0: - mov r0, #0 -_02308CF4: - add sp, sp, #0x5a0 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -#ifdef JAPAN -_02308CFC: .word 0x00001D2F -_02308D00: .word 0x0000131B -_02308D04: .word 0x0000248A -_02308D08: .word 0x0000248B -_0230A2B0_JP: .word 0x0000248F -#else -_02308CFC: .word 0x000008D7 -_02308D00: .word 0x0000131B -_02308D04: .word 0x00000F23 -_02308D08: .word 0x00000F24 -#endif -_02308D0C: .word 0x000002CB + OV11_02307334_OFFSET -_02308D10: .word ov11_02322C78 -_02308D14: .word 0x00001013 -#ifdef JAPAN -_02308D18: .word 0x00001D3C -_0230A2C4_JP: .word 0x00002FD4 -#else -_02308D18: .word 0x000008E4 -#endif - arm_func_end ov11_02307334 - - arm_func_start ov11_02308D1C -ov11_02308D1C: ; 0x02308D1C - stmdb sp!, {r3, lr} - ldr r0, _02308D44 ; =ov11_02324D8C - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _02308D44 ; =ov11_02324D8C - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02308D44: .word ov11_02324D8C - arm_func_end ov11_02308D1C - - arm_func_start ov11_02308D48 -ov11_02308D48: ; 0x02308D48 - stmdb sp!, {r3, lr} - ldr r0, _02308DD4 ; =ov11_02324D8C - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #6] - cmp r0, r1 - beq _02308D78 - bl CloseParentMenu - ldr r0, _02308DD4 ; =ov11_02324D8C - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #6] -_02308D78: - ldr r0, _02308DD4 ; =ov11_02324D8C - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #5] - cmp r0, r1 - beq _02308DA4 - bl CloseTextBox2 - ldr r0, _02308DD4 ; =ov11_02324D8C - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #5] -_02308DA4: - ldr r0, _02308DD4 ; =ov11_02324D8C - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #4] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl CloseInventoryMenu - ldr r0, _02308DD4 ; =ov11_02324D8C - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_02308DD4: .word ov11_02324D8C - arm_func_end ov11_02308D48 - - arm_func_start ov11_02308DD8 -ov11_02308DD8: ; 0x02308DD8 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0xc - ldr r1, [r0] - cmp r1, #0 - bne _02308E20 - ldrsh r0, [r0, #4] - bl GetTeamMember - mov r4, r0 - bl sub_02055894 - bl sub_020564B0 - ldr r1, _02308EAC ; =ov11_02324D8C - mov r2, r0 - ldr r0, [r1] - mov r1, r4 - add r0, r0, #0x36 - add r0, r0, #0x100 - bl sub_02056094 - b _02308E94 -_02308E20: - cmp r1, #1 - bne _02308E94 - ldrsh r0, [r0, #4] - bl GetActiveTeamMember - mov r4, r0 - add r0, sp, #0 - add r1, r4, #0x5e - mov r2, #0xa - bl StrncpySimpleNoPadSafe - ldrb r0, [r4] - mov r2, #0x44 - ldr r1, _02308EB0 ; =ov11_02322DB8 - tst r0, #2 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - ldrb r0, [r4, #1] - movne r2, #0x46 - add r3, sp, #0 - cmp r0, #0 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - ldr r0, _02308EAC ; =ov11_02324D8C - movne r2, #0x59 - ldr r0, [r0] - add r0, r0, #0x36 - add r0, r0, #0x100 - bl ov11_02308EB4 -_02308E94: - ldr r0, _02308EAC ; =ov11_02324D8C - ldr r0, [r0] - add r0, r0, #0x36 - add r0, r0, #0x100 - add sp, sp, #0xc - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_02308EAC: .word ov11_02324D8C -_02308EB0: .word ov11_02322DB8 - arm_func_end ov11_02308DD8 - - arm_func_start ov11_02308EB4 -ov11_02308EB4: ; 0x02308EB4 - stmdb sp!, {r0, r1, r2, r3} - stmdb sp!, {r3, lr} - add r2, sp, #0xc - bic r2, r2, #3 - ldr r1, [sp, #0xc] - add r2, r2, #4 - bl vsprintf - ldmia sp!, {r3, lr} - add sp, sp, #0x10 - bx lr - arm_func_end ov11_02308EB4 - - arm_func_start ov11_02308EDC -ov11_02308EDC: ; 0x02308EDC - stmdb sp!, {r3, lr} - ldr r1, _02308F10 ; =ov11_02324D8C - mvn r0, #1 - ldr r1, [r1] - ldrsb r1, [r1, #8] - cmp r1, r0 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl CreateDialogueBox - ldr r1, _02308F10 ; =ov11_02324D8C - ldr r1, [r1] - strb r0, [r1, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_02308F10: .word ov11_02324D8C - arm_func_end ov11_02308EDC - - arm_func_start ov11_02308F14 -ov11_02308F14: ; 0x02308F14 - stmdb sp!, {r3, lr} - ldr r0, _02308F48 ; =ov11_02324D8C - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #8] - cmp r0, r1 - ldmeqia sp!, {r3, pc} - bl CloseDialogueBox - ldr r0, _02308F48 ; =ov11_02324D8C - mvn r1, #1 - ldr r0, [r0] - strb r1, [r0, #8] - ldmia sp!, {r3, pc} - .align 2, 0 -_02308F48: .word ov11_02324D8C - arm_func_end ov11_02308F14 - - arm_func_start ov11_02308F4C -ov11_02308F4C: ; 0x02308F4C - stmdb sp!, {r4, lr} - ldr r2, [r1] - ldr r1, [r1, #4] - mov r4, r0 - str r2, [r4] - str r1, [r4, #4] - ldr r0, [r4] - cmp r0, #0 - bne _02308F9C - ldrsh r0, [r4, #4] - bl GetTeamMember - ldrsh r3, [r0, #4] - add r2, r0, #0x14 - add r1, r0, #8 - strh r3, [r4, #8] - ldrb r0, [r0, #2] - strb r0, [r4, #0xa] - str r2, [r4, #0xc] - str r1, [r4, #0x10] - ldmia sp!, {r4, pc} -_02308F9C: - cmp r0, #1 - ldmneia sp!, {r4, pc} - ldrsh r0, [r4, #4] - bl GetActiveTeamMember - ldrsh r3, [r0, #0xc] - add r2, r0, #0x4c - add r1, r0, #6 - strh r3, [r4, #8] - ldrb r0, [r0, #3] - strb r0, [r4, #0xa] - str r2, [r4, #0xc] - str r1, [r4, #0x10] - ldmia sp!, {r4, pc} - arm_func_end ov11_02308F4C - - arm_func_start ov11_02308FD0 -ov11_02308FD0: ; 0x02308FD0 - stmdb sp!, {r3, lr} - ldr r1, [r0] - cmp r1, #1 - ldmneia sp!, {r3, pc} - ldrsh r0, [r0, #4] - bl sub_02058794 - ldmia sp!, {r3, pc} - arm_func_end ov11_02308FD0 - - arm_func_start ov11_02308FEC -ov11_02308FEC: ; 0x02308FEC - stmdb sp!, {r3, lr} - ldr r1, [r0] - cmp r1, #0 - bne _02309008 - ldrsh r0, [r0, #4] - bl sub_0203FA64 - ldmia sp!, {r3, pc} -_02309008: - cmp r1, #1 - ldmneia sp!, {r3, pc} - ldrsh r0, [r0, #4] - bl sub_0203FBD4 - ldmia sp!, {r3, pc} - arm_func_end ov11_02308FEC - - arm_func_start ov11_0230901C -ov11_0230901C: ; 0x0230901C - ldr r1, [r0] - cmp r1, #0 - ldreqsh r0, [r0, #4] - orreq r0, r0, #0x20000 - bxeq lr - cmp r1, #1 - ldreqsh r0, [r0, #4] - orreq r0, r0, #0x30000 - bx lr - arm_func_end ov11_0230901C - - arm_func_start ov11_02309040 -ov11_02309040: ; 0x02309040 - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, _0230907C ; =0x00000794 - mov r1, #8 - bl MemAlloc - ldr r1, _02309080 ; =ov11_02324D90 - cmp r0, #0 - str r0, [r1] - moveq r0, #0 -#ifdef JAPAN - strne r4, [r0, #0xf4] -#else - strne r4, [r0, #0x114] -#endif - ldrne r0, [r1] - movne r1, #0 - strne r1, [r0] - movne r0, #1 - ldmia sp!, {r4, pc} - .align 2, 0 -#ifdef JAPAN -_0230907C: .word 0x00000774 -#else -_0230907C: .word 0x00000794 -#endif -_02309080: .word ov11_02324D90 - arm_func_end ov11_02309040 - - arm_func_start ov11_02309084 -ov11_02309084: ; 0x02309084 -#ifdef JAPAN -#define OV11_02309084_OFFSET -0x20 -#else -#define OV11_02309084_OFFSET 0 -#endif - stmdb sp!, {r4, lr} - mov r4, r0 - ldr r0, _023090D4 ; =0x00000794 - mov r1, #8 - bl MemAlloc - ldr r1, _023090D8 ; =ov11_02324D90 - cmp r0, #0 - str r0, [r1] - moveq r0, #0 - ldmeqia sp!, {r4, pc} - mov r2, #2 - str r2, [r0, #0x114 + OV11_02309084_OFFSET] - ldr r0, [r1] - mov r2, #0 - str r2, [r0] - ldr r1, [r1] - mov r0, #1 -#ifdef JAPAN - strh r4, [r1, #0xf8] -#else - add r1, r1, #0x100 - strh r4, [r1, #0x18] -#endif - ldmia sp!, {r4, pc} - .align 2, 0 -#ifdef JAPAN -_023090D4: .word 0x00000774 -#else -_023090D4: .word 0x00000794 -#endif -_023090D8: .word ov11_02324D90 - arm_func_end ov11_02309084 - - arm_func_start ov11_023090DC -ov11_023090DC: ; 0x023090DC - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x124 - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r3, [r0] - ldr r0, [r3] - cmp r0, #0x1b - addls pc, pc, r0, lsl #2 - b _02309D74 -_023090FC: ; jump table - b _0230916C ; case 0 - b _0230955C ; case 1 - b _02309518 ; case 2 - b _02309724 ; case 3 - b _023097EC ; case 4 - b _0230984C ; case 5 - b _0230987C ; case 6 - b _023098A8 ; case 7 - b _023098E4 ; case 8 - b _023099B0 ; case 9 - b _023099CC ; case 10 - b _023099F8 ; case 11 - b _02309A2C ; case 12 - b _02309A68 ; case 13 - b _02309A8C ; case 14 - b _02309AB4 ; case 15 - b _02309AD0 ; case 16 - b _02309B40 ; case 17 - b _02309B5C ; case 18 - b _02309BA4 ; case 19 - b _02309C04 ; case 20 - b _02309CA4 ; case 21 - b _02309CE0 ; case 22 - b _02309CF8 ; case 23 - b _02309D20 ; case 24 - b _02309D38 ; case 25 - b _02309D54 ; case 26 - b _02309D6C ; case 27 -_0230916C: - ldr r5, [r3, #0x114 + OV11_02309084_OFFSET] - mov r0, #0 - str r0, [sp, #4] - ldr r8, [sp, #4] - add r4, r3, #0x11c + OV11_02309084_OFFSET - mov r2, r8 -#ifdef JAPAN - str r2, [sp, #8] - ldrsh r2, [r3, #0xf8] -#else - add r3, r3, #0x100 - str r2, [sp, #8] - ldrsh r2, [r3, #0x18] -#endif - mov r0, r4 - mov r1, r5 - str r2, [sp, #0x10] - ldr r2, _02309D84 ; =0x00401833 - add r7, r4, #0x38 - str r2, [sp, #0x14] - bl ov11_02309EE4 - mov r2, #0 - mov r1, r2 - b _023091C4 -_023091B8: - add r0, r4, r2 - strb r1, [r0, #0x70] - add r2, r2, #1 -_023091C4: - ldr r0, [r4, #0x30] - cmp r2, r0 - blt _023091B8 - cmp r5, #2 - bne _023092FC - mov sl, #0 - b _023092F0 -_023091E0: - ldr r0, [sp, #0x10] - add fp, r4, sl, lsl #3 - bl GetItemMoveId16 - ldr r1, [r4, sl, lsl #3] - mov r6, r0 - cmp r1, #1 - bne _02309258 - ldrsh r0, [fp, #4] - bl GetTeamMember - ldrsh r1, [r0, #4] - mov sb, #0 - mov r3, sb - str r1, [sp, #0xc] - mov fp, #1 - mov r1, #6 - b _0230924C -_02309220: - mla ip, sb, r1, r0 - ldrb r2, [ip, #0x22] - tst r2, #1 - movne r2, fp - moveq r2, r3 - tst r2, #0xff - beq _02309248 - ldrh r2, [ip, #0x24] - cmp r6, r2 - beq _023092B8 -_02309248: - add sb, sb, #1 -_0230924C: - cmp sb, #4 - blt _02309220 - b _023092B8 -_02309258: - cmp r1, #2 - bne _023092B8 - ldrsh r0, [fp, #4] - bl GetActiveTeamMember - ldrsh r1, [r0, #0xc] - mov sb, #0 - mov r2, sb - str r1, [sp, #0xc] - mov r3, #1 - b _023092B0 -_02309280: - add r1, r0, sb, lsl #3 - ldrb r1, [r1, #0x1c] - tst r1, #1 - movne r1, r3 - moveq r1, r2 - tst r1, #0xff - beq _023092AC - add r1, r0, sb, lsl #3 - ldrh r1, [r1, #0x20] - cmp r6, r1 - beq _023092B8 -_023092AC: - add sb, sb, #1 -_023092B0: - cmp sb, #4 - blt _02309280 -_023092B8: - ldr r1, [sp, #0xc] - mov r0, r6 - bl sub_02053D1C - cmp r0, #0 - beq _023092E0 - cmp sb, #4 - addlt r0, r4, sl - movlt r1, #3 - strltb r1, [r0, #0x70] - b _023092EC -_023092E0: - add r0, r4, sl - mov r1, #3 - strb r1, [r0, #0x70] -_023092EC: - add sl, sl, #1 -_023092F0: - ldr r0, [r4, #0x30] - cmp sl, r0 - blt _023091E0 -_023092FC: - mov sl, #0 - add r6, r4, #0x76 - add fp, sp, #0x5c - b _02309450 -_0230930C: - add sb, r4, sl, lsl #3 - ldr r0, [r4, sl, lsl #3] - cmp r0, #1 - bne _0230935C - ldrsh r0, [sb, #4] - bl GetTeamMember - ldrsh r1, [sb, #4] - mov sb, r0 - orr r0, r1, #0x20000 - str r0, [sp, #0x5c] - ldrsh r0, [sb, #4] - bl GetDexNumber - str r0, [sp, #0x80] - add r1, sb, #0x3a - add r0, sp, #0x1a - mov r2, #0 - bl RecolorNameString - add r0, sp, #0x1a - str r0, [sp, #0x94] - b _023093A0 -_0230935C: - cmp r0, #2 - bne _023093A0 - ldrsh r0, [sb, #4] - bl GetActiveTeamMember - ldrsh r1, [sb, #4] - mov sb, r0 - orr r0, r1, #0x30000 - str r0, [sp, #0x5c] - ldrsh r0, [sb, #0xc] - bl GetDexNumber - str r0, [sp, #0x80] - add r1, sb, #0x5e - add r0, sp, #0x1a - mov r2, #0 - bl RecolorNameString - add r0, sp, #0x1a - str r0, [sp, #0x94] -_023093A0: - cmp r5, #1 - mov r1, #0x100 - mov r3, #0 - bne _023093C8 - ldr r2, _02309D88 ; =ov11_02322E58 - add r0, r6, r8, lsl #8 - str fp, [sp] - mov sb, r8, lsl #8 - bl PreprocessString - b _0230941C -_023093C8: - cmp r5, #2 - bne _02309408 - add r0, r4, sl - ldrb r0, [r0, #0x70] - mov sb, r8, lsl #8 - tst r0, #2 - str fp, [sp] - beq _023093F8 - ldr r2, _02309D8C ; =ov11_02322E7C - add r0, r6, r8, lsl #8 - bl PreprocessString - b _0230941C -_023093F8: - ldr r2, _02309D88 ; =ov11_02322E58 - add r0, r6, r8, lsl #8 - bl PreprocessString - b _0230941C -_02309408: - ldr r2, _02309D90 ; =ov11_02322EA0 - add r0, r6, r8, lsl #8 - str fp, [sp] - mov sb, r8, lsl #8 - bl PreprocessString -_0230941C: - add r0, r4, sl - ldrb r0, [r0, #0x70] - add r8, r8, #1 - cmp r0, #0 - ldreq r0, [sp, #4] - cmpeq r0, #0 - moveq r0, #1 - streq r0, [sp, #4] - add r0, r6, sb - stmia r7, {r0, sl} - streq sl, [sp, #8] - add r7, r7, #8 - add sl, sl, #1 -_02309450: - ldr r0, [r4, #0x30] - cmp sl, r0 - blt _0230930C - mov r3, #0 - str r3, [r7] - sub r0, r3, #1 - str r0, [r7, #4] - ldr r0, [sp, #8] - ldr r1, _02309D80 ; =ov11_02324D90 - str r0, [r4, #0x34] - ldr r0, [r1] - mov r2, #0x10 - str r2, [r0, #0x88 + OV11_02309084_OFFSET] - ldr r0, [r1] - str r3, [r0, #0x7c + OV11_02309084_OFFSET] - ldr r3, [r1] - ldr r0, [r3, #0x114 + OV11_02309084_OFFSET] - cmp r0, #1 - ldreq r0, _02309D94 ; =0x000002F2 - streqh r0, [r3, #0x84 + OV11_02309084_OFFSET] - beq _023094E0 - cmp r0, #2 - ldrne r0, _02309D98 ; =0x00000A3A - strneh r0, [r3, #0x84 + OV11_02309084_OFFSET] - bne _023094E0 - ldr r2, _02309D94 ; =0x000002F2 - ldr r0, [sp, #0x14] - strh r2, [r3, #0x84 + OV11_02309084_OFFSET] - orr r0, r0, #0x200 - ldr r2, [r1] - str r0, [sp, #0x14] - add r0, r2, #0x18c + OV11_02309084_OFFSET - str r0, [r2, #0xdc + OV11_02309084_OFFSET] - ldr r1, [r1] - ldr r0, [r1, #0x150 + OV11_02309084_OFFSET] - str r0, [r1, #0x7c + OV11_02309084_OFFSET] -_023094E0: - ldr r1, _02309D80 ; =ov11_02324D90 - ldr r0, _02309D9C ; =ov11_02322DD0 - ldr r3, [r1] - ldr r1, [sp, #0x14] - add r2, r3, #0x7c + OV11_02309084_OFFSET - add r3, r3, #0x154 + OV11_02309084_OFFSET - bl CreateParentMenu - ldr r1, _02309D80 ; =ov11_02324D90 - mov r2, #1 - ldr r3, [r1] - strb r0, [r3, #4] - ldr r0, [r1] - str r2, [r0] - b _02309D74 -_02309518: - ldrsb r0, [r3, #4] - bl sub_02028354 - cmp r0, #3 - bne _02309538 - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl sub_0202810C -_02309538: - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl ResumeParentMenu - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #1 - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_0230955C: - add r1, sp, #0x18 - mov r0, #0 - ldr r5, [r3, #0x114 + OV11_02309084_OFFSET] - bl GetPressedButtons - ldrh r0, [sp, #0x18] - tst r0, #8 - beq _02309584 - cmp r5, #0 - moveq r0, #1 - beq _02309588 -_02309584: - mov r0, #0 -_02309588: - cmp r0, #0 - beq _023095E0 - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r4, [r0] - ldrsb r0, [r4, #4] - bl GetWindowIdSelectedItemOnPage - add r0, r4, r0, lsl #3 - ldr r1, [r0, #0x158 + OV11_02309084_OFFSET] - ldr r0, _02309D80 ; =ov11_02324D90 - str r1, [r4, #0x10] - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl sub_0202B030 - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl sub_0202812C - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #4 - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_023095E0: - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl IsParentMenuActive - cmp r0, #0 - bne _02309D74 - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl GetSimpleMenuResult__0202AEA4 - cmp r0, #0 - blt _02309704 - ldr r1, _02309D80 ; =ov11_02324D90 - ldr r2, [r1] - str r0, [r2, #0x10] - ldr r1, [r1] - add r2, r1, #0x11c + OV11_02309084_OFFSET - ldr r1, [r2, r0, lsl #3] - add r5, r2, r0, lsl #3 - cmp r1, #1 - bne _02309644 - ldrsh r0, [r5, #4] - bl GetTeamMember - ldrsh r4, [r0, #4] - b _02309658 -_02309644: - cmp r1, #2 - bne _02309658 - ldrsh r0, [r5, #4] - bl GetActiveTeamMember - ldrsh r4, [r0, #0xc] -_02309658: - mov r0, r5 - bl ov11_0230A044 - ldr r1, _02309D80 ; =ov11_02324D90 - mov r5, r0 - ldr r1, [r1] - ldr r0, [r1, #0x114 + OV11_02309084_OFFSET] - sub r0, r0, #1 - cmp r0, #1 - movls r0, #0x1a - strls r0, [r1] - bls _02309D74 - bl GetGameMode - cmp r0, #5 - beq _023096D0 - cmp r4, #0x140 - bne _023096D0 - mov r0, r5 - mov r1, r4 - bl StrcmpMonsterName - cmp r0, #0 - beq _023096D0 - ldr r0, _02309DA0 ; =ov11_02322DE0 - ldr r3, _02309DA4 ; =ov11_02322E28 - mov r1, #0x13 - mov r2, #0 - bl CreateParentMenuFromStringIds - ldr r1, _02309D80 ; =ov11_02324D90 - ldr r1, [r1] - strb r0, [r1, #5] - b _023096F0 -_023096D0: - ldr r0, _02309DA0 ; =ov11_02322DE0 - ldr r3, _02309DA8 ; =ov11_02322E00 - mov r1, #0x13 - mov r2, #0 - bl CreateParentMenuFromStringIds - ldr r1, _02309D80 ; =ov11_02324D90 - ldr r1, [r1] - strb r0, [r1, #5] -_023096F0: - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #3 - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_02309704: - ldr r0, _02309D80 ; =ov11_02324D90 - mov r3, #0x1a - ldr r2, [r0] - sub r1, r3, #0x1b - str r3, [r2] - ldr r0, [r0] - str r1, [r0, #0x10] - b _02309D74 -_02309724: - ldrsb r0, [r3, #5] - bl IsParentMenuActive - cmp r0, #0 - bne _02309D74 - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r0, [r0] - ldrsb r0, [r0, #5] - bl GetSimpleMenuResult__0202AEA4 - mvn r1, #0 - cmp r0, r1 - beq _023097C8 - ldr r1, _02309D80 ; =ov11_02324D90 - cmp r0, #3 - ldr r2, [r1] - str r0, [r2, #0x14] - addls pc, pc, r0, lsl #2 - b _023097B4 -_02309768: ; jump table - b _02309778 ; case 0 - b _02309788 ; case 1 - b _02309798 ; case 2 - b _023097A8 ; case 3 -_02309778: - ldr r0, [r1] - mov r1, #4 - str r1, [r0] - b _023097B4 -_02309788: - ldr r0, [r1] - mov r1, #7 - str r1, [r0] - b _023097B4 -_02309798: - ldr r0, [r1] - mov r1, #0xc - str r1, [r0] - b _023097B4 -_023097A8: - ldr r0, [r1] - mov r1, #0xe - str r1, [r0] -_023097B4: - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl sub_0202812C - b _023097D8 -_023097C8: - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #2 - ldr r0, [r0] - str r1, [r0] -_023097D8: - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r0, [r0] - ldrsb r0, [r0, #5] - bl CloseParentMenu - b _02309D74 -_023097EC: - ldr r0, [r3, #0x10] - add r1, r3, #0x11c + OV11_02309084_OFFSET - add r4, r1, r0, lsl #3 - ldrsh r0, [r4, #4] - bl GetActiveTeamMember - ldrb r0, [r0, #1] - cmp r0, #0 - movne r5, #1 - ldrsh r0, [r4, #4] - moveq r5, #0 - bl GetActiveTeamMember - mov r1, r0 - add r0, sp, #0xac - and r2, r5, #0xff - bl CreateMonsterSummaryFromTeamMember - add r0, sp, #0xac - mov r1, #3 - bl sub_0203F150 - ldr r1, _02309D80 ; =ov11_02324D90 - mov r2, #5 - ldr r3, [r1] - strb r0, [r3, #9] - ldr r0, [r1] - str r2, [r0] -_0230984C: - bl sub_0203F398 - cmp r0, #1 - bne _02309D74 - bl sub_0203F974 - ldr r0, _02309D80 ; =ov11_02324D90 - mov r3, #1 - ldr r2, [r0] - mov r1, #6 - str r3, [r2, #0x18] - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_0230987C: - ldr r1, [r3, #0x18] - sub r0, r1, #1 - str r0, [r3, #0x18] - cmp r1, #0 - bne _02309D74 - bl sub_0203F990 - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #2 - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_023098A8: - ldr r0, [r3, #0x10] -#ifdef JAPAN - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 -#else - add r0, r3, r0, lsl #3 - add r0, r0, #0x100 - ldrsh r0, [r0, #0x20] -#endif - bl sub_0203FBD4 - mov r1, #0 - mov r2, r1 - mov r0, #9 - bl sub_0204018C - ldr r1, _02309D80 ; =ov11_02324D90 - mov r2, #8 - ldr r3, [r1] - strb r0, [r3, #0xa] - ldr r0, [r1] - str r2, [r0] -_023098E4: - bl sub_020407EC - cmp r0, #1 - bne _02309934 - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r1, [r0] - ldr r0, [r1, #0x10] - add r0, r1, r0, lsl #3 - add r0, r0, #0x100 - ldrsh r0, [r0, #0x20 + OV11_02309084_OFFSET] - bl sub_0203FDEC - bl sub_020407C0 - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r0, [r0] - ldrsb r0, [r0, #0xa] - bl CloseAdvancedTextBox - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #2 - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_02309934: - cmp r0, #2 - cmpne r0, #7 - bne _02309D74 - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r1, [r0] - ldr r0, [r1, #0x10] - add r1, r1, #0x11c + OV11_02309084_OFFSET - add r4, r1, r0, lsl #3 - bl sub_0203FD38 - ldr r2, _02309D80 ; =ov11_02324D90 - mov r1, r0 - ldr r0, [r2] - mov r2, #0x20 - add r0, r0, #0x1e - bl MemcpySimple - bl sub_02041094 - ldr r1, _02309D80 ; =ov11_02324D90 - ldr r1, [r1] - strh r0, [r1, #0x1c] - ldrsh r0, [r4, #4] - bl sub_0203FDEC - bl sub_020407C0 - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r0, [r0] - ldrsb r0, [r0, #0xa] - bl CloseAdvancedTextBox - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #0xa - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_023099B0: - ldrsb r0, [r3, #0xa] - bl sub_020307EC - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #8 - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_023099CC: - ldrsh r2, [r3, #0x1c] - add r0, r3, #0x1e - mov r1, #4 - mov r3, #1 - bl sub_020417A8 - ldr r1, _02309D80 ; =ov11_02324D90 - mov r2, #0xb - ldr r3, [r1] - strb r0, [r3, #0xb] - ldr r0, [r1] - str r2, [r0] -_023099F8: - bl sub_02041A18 - cmp r0, #1 - bne _02309D74 - bl sub_02041A00 - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r0, [r0] - ldrsb r0, [r0, #0xb] - bl CloseScrollBox - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #7 - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_02309A2C: - ldr r0, [r3, #0x10] - add r0, r3, r0, lsl #3 - add r0, r0, #0x100 - ldrsh r0, [r0, #0x20 + OV11_02309084_OFFSET] - bl GetActiveTeamMember - mov r1, r0 - ldrsh r0, [r1, #0xc] - ldrsh r2, [r1, #6] - add r1, r1, #0x4c - mov r3, #0 - bl PrintIqSkillsMenu - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #0xd - ldr r0, [r0] - str r1, [r0] -_02309A68: - bl sub_02041B7C - cmp r0, #1 - bne _02309D74 - bl sub_020420F4 - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #2 - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_02309A8C: - bl ov11_0230D92C - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl CloseParentMenu - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #0xf - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_02309AB4: - bl ov11_0230D220 - cmp r0, #0 - ldreq r0, _02309D80 ; =ov11_02324D90 - moveq r1, #0x10 - ldreq r0, [r0] - streq r1, [r0] - b _02309D74 -_02309AD0: - ldr r0, [r3, #0x10] - add r1, r3, #0x11c + OV11_02309084_OFFSET - add r0, r1, r0, lsl #3 - bl ov11_0230A044 - ldr r2, _02309D80 ; =ov11_02324D90 - mov r1, r0 - ldr r0, [r2] - mov r2, #0xa - add r0, r0, #0x3e - bl StrncpySimpleNoPad - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r1, [r0] -#ifdef JAPAN - add r0, r1, #0x48 -#else - add r0, r1, #0x52 -#endif - add r1, r1, #0x3e - bl StrcpySimple - ldr r1, _02309D80 ; =ov11_02324D90 - mov r0, #2 - ldr r3, [r1] - mov r2, #0 - add r1, r3, #0x3e -#ifdef JAPAN - add r3, r3, #0x48 -#else - add r3, r3, #0x52 -#endif - bl ShowKeyboard - bl ov11_02310BDC - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #0x11 - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_02309B40: - bl ov11_0230D220 - cmp r0, #0 - ldreq r0, _02309D80 ; =ov11_02324D90 - moveq r1, #0x12 - ldreq r0, [r0] - streq r1, [r0] - b _02309D74 -_02309B5C: - bl GetKeyboardStatus - cmp r0, #3 - bne _02309D74 - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #0xa - ldr r0, [r0] - str r1, [r0, #0x18] - bl GetKeyboardStringResult - ldr r2, _02309D80 ; =ov11_02324D90 - mov r1, r0 - ldr r0, [r2] - add r0, r0, #0x3e - bl StrcpySimple - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #0x13 - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_02309BA4: - bl sub_02037468 - cmp r0, #0 - beq _02309D74 - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r3, [r0] - ldr r2, [r3, #0x18] - sub r1, r2, #1 - str r1, [r3, #0x18] - cmp r2, #0 - bgt _02309D74 - ldr r1, [r0] - mov r2, #0xa -#ifdef JAPAN - add r0, r1, #0x52 -#else - add r0, r1, #0x66 -#endif - add r1, r1, #0x3e - bl StrncpySimpleNoPadSafe - ldr r0, _02309D80 ; =ov11_02324D90 - ldr r0, [r0] -#ifdef JAPAN - add r0, r0, #0x52 -#else - add r0, r0, #0x66 -#endif - bl sub_0203909C - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #0x14 - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_02309C04: - ldr r0, [r3, #0x10] - add r1, r3, #0x11c + OV11_02309084_OFFSET - add r4, r1, r0, lsl #3 - mov r0, r4 - bl ov11_0230A044 - mov r5, r0 - bl sub_0203931C - mvn r1, #0 - cmp r0, r1 - beq _02309D74 - cmp r0, #0 - beq _02309C4C - cmp r0, #1 - ldreq r0, _02309D80 ; =ov11_02324D90 - moveq r1, #0x15 - ldreq r0, [r0] - streq r1, [r0] - b _02309D74 -_02309C4C: - ldr r1, _02309D80 ; =ov11_02324D90 - mov r0, r5 - ldr r1, [r1] - mov r2, #0xa - add r1, r1, #0x3e - bl StrncpySimple - ldr r1, _02309D80 ; =ov11_02324D90 - mov r0, r5 - ldr r1, [r1] - mov r2, #0xa - add r1, r1, #0x3e - bl StrncpySimple - ldr r0, [r4] - cmp r0, #2 - bne _02309C90 - ldrsh r0, [r4, #4] - bl sub_02058794 -_02309C90: - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #0x16 - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_02309CA4: - bl sub_02039218 - cmp r0, #0 - beq _02309D74 - ldr r1, _02309D80 ; =ov11_02324D90 - mov r0, #2 - ldr r3, [r1] - mov r2, #0 - add r1, r3, #0x3e -#ifdef JAPAN - add r3, r3, #0x48 -#else - add r3, r3, #0x52 -#endif - bl ShowKeyboard - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #0x12 - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_02309CE0: - bl ov11_0230D92C - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #0x17 - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_02309CF8: - bl ov11_0230D220 - cmp r0, #0 - bne _02309D74 - bl sub_02039218 - cmp r0, #0 - ldrne r0, _02309D80 ; =ov11_02324D90 - movne r1, #0x18 - ldrne r0, [r0] - strne r1, [r0] - b _02309D74 -_02309D20: - bl ov11_0230D000 - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #0x19 - ldr r0, [r0] - str r1, [r0] - b _02309D74 -_02309D38: - bl ov11_0230D220 - cmp r0, #0 - ldreq r0, _02309D80 ; =ov11_02324D90 - moveq r1, #0 - ldreq r0, [r0] - streq r1, [r0] - b _02309D74 -_02309D54: - ldrsb r0, [r3, #4] - bl CloseParentMenu - ldr r0, _02309D80 ; =ov11_02324D90 - mov r1, #0x1b - ldr r0, [r0] - str r1, [r0] -_02309D6C: - mov r0, #1 - b _02309D78 -_02309D74: - mov r0, #0 -_02309D78: - add sp, sp, #0x124 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_02309D80: .word ov11_02324D90 -_02309D84: .word 0x00401833 -_02309D88: .word ov11_02322E58 -_02309D8C: .word ov11_02322E7C -_02309D90: .word ov11_02322EA0 -#ifdef JAPAN -_02309D94: .word 0x00002FF2 -_02309D98: .word 0x00000875 -#else -_02309D94: .word 0x000002F2 -_02309D98: .word 0x00000A3A -#endif -_02309D9C: .word ov11_02322DD0 -_02309DA0: .word ov11_02322DE0 -_02309DA4: .word ov11_02322E28 -_02309DA8: .word ov11_02322E00 - arm_func_end ov11_023090DC - - arm_func_start ov11_02309DAC -ov11_02309DAC: ; 0x02309DAC - ldr r1, _02309DF4 ; =ov11_02324D90 - ldr r1, [r1] - ldr r2, [r1, #0x10] -#ifdef JAPAN - add r3, r1, #0xfc -#else - add r3, r1, #0x11c -#endif - ldr r1, [r3, r2, lsl #3] - add r2, r3, r2, lsl #3 - cmp r1, #1 - moveq r1, #0 - streq r1, [r0] - ldreqsh r1, [r2, #4] - streqh r1, [r0, #4] - bxeq lr - cmp r1, #2 - moveq r1, #1 - streq r1, [r0] - ldreqsh r1, [r2, #4] - streqh r1, [r0, #4] - bx lr - .align 2, 0 -_02309DF4: .word ov11_02324D90 - arm_func_end ov11_02309DAC - - arm_func_start ov11_02309DF8 -ov11_02309DF8: ; 0x02309DF8 - stmdb sp!, {r3, lr} - ldr r0, _02309E20 ; =ov11_02324D90 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _02309E20 ; =ov11_02324D90 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_02309E20: .word ov11_02324D90 - arm_func_end ov11_02309DF8 - - arm_func_start ov11_02309E24 -ov11_02309E24: ; 0x02309E24 - ldr r0, _02309E44 ; =ov11_02324D90 - ldr r0, [r0] - cmp r0, #0 - ldrne r0, [r0, #0x10] - movne r0, r0, lsl #0x10 - movne r0, r0, asr #0x10 - mvneq r0, #0 - bx lr - .align 2, 0 -_02309E44: .word ov11_02324D90 - arm_func_end ov11_02309E24 - - arm_func_start ov11_02309E48 -ov11_02309E48: ; 0x02309E48 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r7, r0 - mov r0, #0x34 - mov r1, #0 - mov r5, #1 - bl MemAlloc - mov r1, #2 - mov r4, r0 - bl ov11_02309EE4 - mov r6, #0 - b _02309EBC -_02309E74: - ldr r0, [r4, r6, lsl #3] - add r1, r4, r6, lsl #3 - cmp r0, #1 - bne _02309E9C - ldrsh r0, [r1, #4] - mov r1, r7 - bl sub_02055FCC - cmp r0, #0 - bne _02309EC8 - b _02309EB8 -_02309E9C: - cmp r0, #2 - bne _02309EB8 - ldrsh r0, [r1, #4] - mov r1, r7 - bl sub_020586F0 - cmp r0, #0 - bne _02309EC8 -_02309EB8: - add r6, r6, #1 -_02309EBC: - ldr r0, [r4, #0x30] - cmp r6, r0 - blt _02309E74 -_02309EC8: - ldr r0, [r4, #0x30] - cmp r6, r0 - mov r0, r4 - moveq r5, #0 - bl MemFree - mov r0, r5 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - arm_func_end ov11_02309E48 - - arm_func_start ov11_02309EE4 -ov11_02309EE4: ; 0x02309EE4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r4, #0 - mov sl, r0 - mov r5, r1 - mov r1, r4 - str r4, [sl, #0x30] - mov r0, r4 -_02309F00: - str r0, [sl, r1, lsl #3] - add r1, r1, #1 - cmp r1, #6 - blt _02309F00 - bl sub_0204E210 - mvn r1, #0 - cmp r0, r1 - bne _02309F2C - bl sub_0205633C - cmp r0, #0 - moveq r4, #1 -_02309F2C: - cmp r4, #0 - beq _02309FD4 - sub r0, r5, #1 - cmp r0, #1 - bhi _02309FD4 - bl GetGameMode - cmp r0, #1 - ldrls sb, _0230A03C ; =ov11_02322DC8 - mov fp, #2 - ldrhi sb, _0230A040 ; =ov11_02322DF0 - mov r5, #1 - mvn r4, #0 - b _02309FB8 -_02309F60: - ldrsh r0, [sb], #2 - bl GetActorMatchingStorageId - ldr r1, [sl, #0x30] - mov r7, r0 - cmp r7, r4 - add r8, sl, r1, lsl #3 - beq _02309FB8 - bl GetActiveRosterIndex - mov r6, r0 - cmp r6, r4 - streq r5, [r8] - streqh r7, [r8, #4] - beq _02309FAC - bl GetActiveTeamMember - ldrsh r0, [r0, #8] - bl CheckTeamMemberIdx - cmp r0, #0 - streq fp, [r8] - streqh r6, [r8, #4] -_02309FAC: - ldr r0, [sl, #0x30] - add r0, r0, #1 - str r0, [sl, #0x30] -_02309FB8: - ldrsh r0, [sb] - cmp r0, r4 - beq _0230A034 - ldr r0, [sl, #0x30] - cmp r0, #6 - blt _02309F60 - b _0230A034 -_02309FD4: - mov r7, #0 - mov r8, sl - mov r5, r7 - mov r6, #1 - mov r4, #2 -_02309FE8: - mov r0, r7 - bl GetActiveTeamMember - ldrb r0, [r0] - tst r0, #1 - movne r0, r6 - moveq r0, r5 - tst r0, #0xff - beq _0230A020 - str r4, [r8] - strh r7, [r8, #4] - ldr r0, [sl, #0x30] - add r8, r8, #8 - add r0, r0, #1 - str r0, [sl, #0x30] -_0230A020: - add r0, r7, #1 - mov r0, r0, lsl #0x10 - mov r7, r0, asr #0x10 - cmp r7, #4 - blt _02309FE8 -_0230A034: - ldr r0, [sl, #0x30] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230A03C: .word ov11_02322DC8 -_0230A040: .word ov11_02322DF0 - arm_func_end ov11_02309EE4 - - arm_func_start ov11_0230A044 -ov11_0230A044: ; 0x0230A044 - stmdb sp!, {r3, lr} - ldr r1, [r0] - cmp r1, #1 - bne _0230A064 - ldrsh r0, [r0, #4] - bl GetTeamMember - add r0, r0, #0x3a - ldmia sp!, {r3, pc} -_0230A064: - cmp r1, #2 - ldmneia sp!, {r3, pc} - ldrsh r0, [r0, #4] - bl GetActiveTeamMember - add r0, r0, #0x5e - ldmia sp!, {r3, pc} - arm_func_end ov11_0230A044 - - arm_func_start ov11_0230A07C -ov11_0230A07C: ; 0x0230A07C - stmdb sp!, {r3, lr} - ldr r0, _0230A0CC ; =ov11_02322ECC - bl InitMenu - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0xc - mov r1, #8 - bl MemAlloc - ldr r1, _0230A0D0 ; =ov11_02324D94 - mov r3, #0 - str r0, [r1] - str r3, [r0, #4] - ldr r0, [r1] - sub r2, r3, #2 - str r3, [r0, #8] - ldr r0, [r1] - strb r2, [r0] - ldr r0, [r1] - strb r2, [r0, #1] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230A0CC: .word ov11_02322ECC -_0230A0D0: .word ov11_02324D94 - arm_func_end ov11_0230A07C - - arm_func_start ov11_0230A0D4 -ov11_0230A0D4: ; 0x0230A0D4 - stmdb sp!, {r3, lr} - ldr r0, _0230A0FC ; =ov11_02324D94 - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _0230A0FC ; =ov11_02324D94 - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230A0FC: .word ov11_02324D94 - arm_func_end ov11_0230A0D4 - - arm_func_start ov11_0230A100 -ov11_0230A100: ; 0x0230A100 - stmdb sp!, {r4, lr} - sub sp, sp, #0x138 - ldr r0, _0230A2B0 ; =ov11_02324D94 - ldr r2, [r0] - ldr r0, [r2, #8] - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _0230A2A4 -_0230A120: ; jump table - b _0230A13C ; case 0 - b _0230A184 ; case 1 - b _0230A13C ; case 2 - b _0230A1F4 ; case 3 - b _0230A258 ; case 4 - b _0230A298 ; case 5 - b _0230A298 ; case 6 -_0230A13C: - ldr lr, [r2, #4] - ldr ip, _0230A2B4 ; =0x00003FB8 - mov r4, #0x10 - ldr r0, _0230A2B8 ; =ov11_02322EAC - ldr r1, _0230A2BC ; =0x00401833 - ldr r3, _0230A2C0 ; =ov11_02322EDC - add r2, sp, #0xa0 - str lr, [sp, #0xa0] - strh ip, [sp, #0xa8] - str r4, [sp, #0xac] - bl CreateParentMenuFromStringIds - ldr r1, _0230A2B0 ; =ov11_02324D94 - mov r2, #1 - ldr r3, [r1] - strb r0, [r3] - ldr r0, [r1] - str r2, [r0, #8] - b _0230A2A4 -_0230A184: - ldrsb r0, [r2] - bl IsParentMenuActive - cmp r0, #0 - bne _0230A2A4 - ldr r0, _0230A2B0 ; =ov11_02324D94 - ldr r0, [r0] - ldrsb r0, [r0] - bl GetSimpleMenuResult__0202AEA4 - ldr r1, _0230A2B0 ; =ov11_02324D94 - mov r4, r0 - ldr r0, [r1] - ldrsb r0, [r0] - bl CloseParentMenu - ldr r0, _0230A2B0 ; =ov11_02324D94 - mvn r2, #1 - ldr r1, [r0] - cmp r4, #0 - strb r2, [r1] - ldrlt r0, [r0] - movlt r1, #6 - strlt r1, [r0, #8] - blt _0230A2A4 - ldr r2, [r0] - mov r1, #3 - str r4, [r2, #4] - ldr r0, [r0] - str r1, [r0, #8] - b _0230A2A4 -_0230A1F4: - mov r0, #0x10 - str r0, [sp, #0x14] - ldr r1, [r2, #4] - ldr r0, _0230A2C0 ; =ov11_02322EDC - mov r1, r1, lsl #3 - ldrh r1, [r0, r1] - mov r4, #8 - ldr r0, _0230A2C4 ; =ov11_02322EBC - strh r1, [sp, #0x10] - ldr r2, [r2, #4] - ldr r1, _0230A2C8 ; =0x00009833 - str r2, [sp, #8] - str r4, [sp] - mov r4, #1 - ldr r3, _0230A2CC ; =ov11_0230A2D0 - add r2, sp, #8 - str r4, [sp, #4] - bl CreateAdvancedTextBox - ldr r1, _0230A2B0 ; =ov11_02324D94 - mov r2, #4 - ldr r3, [r1] - strb r0, [r3, #1] - ldr r0, [r1] - str r2, [r0, #8] - b _0230A2A4 -_0230A258: - ldrsb r0, [r2, #1] - bl IsAdvancedTextBoxActive - cmp r0, #0 - bne _0230A2A4 - ldr r0, _0230A2B0 ; =ov11_02324D94 - ldr r0, [r0] - ldrsb r0, [r0, #1] - bl CloseAdvancedTextBox - ldr r0, _0230A2B0 ; =ov11_02324D94 - mvn r3, #1 - ldr r2, [r0] - mov r1, #2 - strb r3, [r2, #1] - ldr r0, [r0] - str r1, [r0, #8] - b _0230A2A4 -_0230A298: - bl ov11_02301174 - mov r0, #4 - b _0230A2A8 -_0230A2A4: - mov r0, #1 -_0230A2A8: - add sp, sp, #0x138 - ldmia sp!, {r4, pc} - .align 2, 0 -_0230A2B0: .word ov11_02324D94 -#if defined(EUROPE) -_0230A2B4: .word 0x00003FBA -#elif defined(JAPAN) -_0230A2B4: .word 0x000049BB -#else -_0230A2B4: .word 0x00003FB8 -#endif -_0230A2B8: .word ov11_02322EAC -_0230A2BC: .word 0x00401833 -_0230A2C0: .word ov11_02322EDC -_0230A2C4: .word ov11_02322EBC -_0230A2C8: .word 0x00009833 -_0230A2CC: .word ov11_0230A2D0 - arm_func_end ov11_0230A100 - - arm_func_start ov11_0230A2D0 -ov11_0230A2D0: ; 0x0230A2D0 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - bl GetWindowIdPageStart - mov r4, r0 - ldr r0, _0230A318 ; =ov11_02322EDC - mov r1, r4, lsl #3 - ldrh r1, [r0, r1] - mov r0, r5 - bl SetWindowTitle -#if defined(EUROPE) - add r0, r4, #0xc3 - add r0, r0, #0x3f00 -#elif defined(JAPAN) - add r0, r4, #0x1c4 - add r0, r0, #0x4800 -#else - add r0, r4, #0xc1 - add r0, r0, #0x3f00 -#endif - mov r1, r0, lsl #0x10 - mov r0, r5 - mov r3, r1, lsr #0x10 - mov r1, #4 - mov r2, #0x10 - bl AppendStandardStringToMission - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230A318: .word ov11_02322EDC - arm_func_end ov11_0230A2D0 - - arm_func_start ov11_0230A31C -ov11_0230A31C: ; 0x0230A31C - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r0, #0x148 - mov r1, #8 - bl MemAlloc - ldr r2, _0230A38C ; =ov11_02324D98 - mov r1, #0x148 - str r0, [r2, #4] - bl MemZero - ldr r0, _0230A38C ; =ov11_02324D98 - mov ip, #4 - ldr r4, [r0, #4] - stmib r4, {r5, r6} - add lr, r4, #0xc -_0230A358: - ldmia r6!, {r0, r1, r2, r3} - stmia lr!, {r0, r1, r2, r3} - subs ip, ip, #1 - bne _0230A358 - ldr r1, [r6] - mvn r0, #1 - str r1, [lr] - strb r0, [r4, #0x74] - strb r0, [r4, #0x78] - mov r0, #0 - str r0, [r4] - str r0, [r4, #0x144] - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0230A38C: .word ov11_02324D98 - arm_func_end ov11_0230A31C - - arm_func_start ov11_0230A390 -ov11_0230A390: ; 0x0230A390 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x1b4 - ldr r0, _0230AD0C ; =ov11_02324D98 - ldr sb, [r0, #4] - ldr r0, [sb] - cmp r0, #0xe - addls pc, pc, r0, lsl #2 - b _0230AD00 -_0230A3B0: ; jump table - b _0230A3EC ; case 0 - b _0230A41C ; case 1 - b _0230A4B8 ; case 2 - b _0230A510 ; case 3 - b _0230A68C ; case 4 - b _0230A68C ; case 5 - b _0230A6C8 ; case 6 - b _0230A6E4 ; case 7 - b _0230A750 ; case 8 - b _0230A844 ; case 9 - b _0230A958 ; case 10 - b _0230A98C ; case 11 - b _0230A9D0 ; case 12 - b _0230AB1C ; case 13 - b _0230ACE4 ; case 14 -_0230A3EC: - ldr r0, [sb, #8] - ldrb r0, [r0, #1] - cmp r0, #0x64 - bhs _0230A410 - ldr r0, [sb, #4] - cmp r0, #0 - ble _0230A410 - mov r0, #1 - bl sub_02017C50 -_0230A410: - mov r0, #1 - str r0, [sb] - b _0230AD00 -_0230A41C: - ldr r5, [sb, #8] - ldrb r2, [r5, #1] - cmp r2, #0x64 - bhs _0230A440 - ldrb r1, [sb, #0xd] - ldr r0, [sb, #4] - add r0, r1, r0 - cmp r2, r0 - blt _0230A44C -_0230A440: - mov r0, #0xd - str r0, [sb] - b _0230AD00 -_0230A44C: - mov r0, #0x100 - mov r1, #0xf - bl MemAlloc - mov r4, r0 - mov r0, r5 - bl sub_020546E8 - add r0, sp, #0x164 - bl InitPreprocessorArgs - mov r0, r5 - bl sub_02055894 - bl sub_020564B0 - mov r2, r0 - mov r0, r4 - mov r1, r5 - bl sub_02056094 - str r4, [sp, #0x19c] - ldrb r2, [r5, #1] - ldr r1, _0230AD10 ; =0x000004A6 - mov r0, #0x1c - str r2, [sp, #0x188] - add r2, sp, #0x164 - bl sub_02046BE8 - mov r0, r4 - bl MemFree - mov r0, #2 - str r0, [sb] - b _0230AD00 -_0230A4B8: - bl sub_02046C78 - cmp r0, #0 - movne r0, #6 - moveq r0, #0 - cmp r0, #6 - bne _0230AD00 -#ifdef JAPAN - ldr r0, [sb, #8] - ldr r3, _0230C2B4 ; =0x000003E7 - ldrsh r1, [r0, #4] - ldrb r2, [r0, #1] - add r0, sb, #0x54 -#else - ldr r3, [sb, #8] - add r0, sb, #0x54 - ldrsh r1, [r3, #4] - ldrb r2, [r3, #1] - ldrsh r3, [r3, #8] -#endif - bl sub_02053A0C - strh r0, [sb, #0x50] - mov r0, #0 - strh r0, [sb, #0x52] - ldrh r0, [sb, #0x50] - cmp r0, #0 - movne r0, #3 - strne r0, [sb] - moveq r0, #1 - streq r0, [sb] - b _0230AD00 -_0230A510: - ldrh r1, [sb, #0x52] - ldrh r0, [sb, #0x50] - ldr r4, [sb, #8] - mov r8, #0 - cmp r1, r0 - movhs r0, #1 - sub r5, r8, #1 - strhs r0, [sb] - bhs _0230AD00 - mov sl, r8 - add r2, sb, r1, lsl #1 - mov r6, r8 - mov r7, #1 - mov r0, #6 - b _0230A58C -_0230A54C: - mla r3, sl, r0, r4 - ldrb r1, [r3, #0x22] - tst r1, #1 - movne r1, r7 - moveq r1, r6 - tst r1, #0xff - beq _0230A580 - ldrh r3, [r3, #0x24] - ldrh r1, [r2, #0x54] - cmp r3, r1 - bne _0230A588 - mov r8, #1 - b _0230A594 -_0230A580: - cmp r5, #0 - movlt r5, sl -_0230A588: - add sl, sl, #1 -_0230A58C: - cmp sl, #4 - blt _0230A54C -_0230A594: - cmp r8, #0 - ldrneh r0, [sb, #0x52] - addne r0, r0, #1 - strneh r0, [sb, #0x52] - bne _0230AD00 - add r0, sp, #0x114 - bl InitPreprocessorArgs - mov r0, #0x100 - mov r1, #0xf - bl MemAlloc - mov r6, r0 - mov r0, r4 - bl sub_02055894 - bl sub_020564B0 - mov r2, r0 - mov r0, r6 - mov r1, r4 - bl sub_02056094 - str r6, [sp, #0x14c] - cmp r5, #0 - blt _0230A644 - ldrh r1, [sb, #0x52] - add r2, r4, #0x22 - mov r0, #6 - add r1, sb, r1, lsl #1 - mla r0, r5, r0, r2 - ldrh r1, [r1, #0x54] - bl GetInfoMoveGround - ldrh r2, [sb, #0x52] - ldr r0, _0230AD14 ; =0x0000131B - mov r1, #0x100 - add r2, sb, r2, lsl #1 - ldrh r2, [r2, #0x54] - str r2, [sp, #0x124] - bl sub_02017C74 - ldr r1, _0230AD18 ; =0x000004A8 - add r2, sp, #0x114 - mov r0, #0x1c - bl sub_02046BE8 - ldrh r1, [sb, #0x52] - mov r0, #4 - add r1, r1, #1 - strh r1, [sb, #0x52] - b _0230A67C -_0230A644: - ldrsh r2, [r4, #4] - ldr r0, _0230AD1C ; =0xFFFFFE5E - ldr r1, _0230AD20 ; =0x000004A9 -#ifdef JAPAN - add r0, r2, r0 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #3 - addls r1, r1, #1 -#else - add r2, r2, r0 - mov r2, r2, lsl #0x10 - mov r2, r2, asr #0x10 - mov r2, r2, lsl #0x10 - mov r2, r2, lsr #0x10 - cmp r2, #3 - rsbls r1, r0, #0x308 -#endif - add r2, sp, #0x114 - mov r0, #0x1c - bl sub_02046BE8 - mov r0, #5 -_0230A67C: - str r0, [sb] - mov r0, r6 - bl MemFree - b _0230AD00 -_0230A68C: - bl sub_02046C78 - cmp r0, #0 - movne r0, #6 - moveq r0, #0 - cmp r0, #6 - bne _0230AD00 - ldr r0, [sb] - cmp r0, #5 - moveq r0, #0 - streqh r0, [sb, #0x76] - moveq r0, #6 - streq r0, [sb] - movne r0, #1 - strne r0, [sb] - b _0230AD00 -_0230A6C8: - bl sub_02046D20 - mov r0, #7 - str r0, [sb] - bl sub_020037A4 - add r0, r0, #0xa - str r0, [sb, #0x144] - b _0230AD00 -_0230A6E4: - bl sub_020037A4 - ldr r1, [sb, #0x144] - cmp r1, r0 - bge _0230AD00 - ldr r1, _0230AD0C ; =ov11_02324D98 - mvn r0, #1 - ldr r4, [r1, #4] - ldrsb r1, [r4, #0x74] - cmp r1, r0 - bne _0230A744 - ldrh r0, [r4, #0x52] - add r0, r4, r0, lsl #1 - ldrh r0, [r0, #0x54] - bl sub_0203FD14 - ldr r0, [r4, #8] - bl sub_02055894 - bl sub_0203FA64 - mov r1, #0 - mov r2, r1 - mov r0, #3 - bl sub_0204018C - strb r0, [r4, #0x74] - ldrsh r0, [r4, #0x76] - bl sub_020410A4 -_0230A744: - mov r0, #8 - str r0, [sb] - b _0230AD00 -_0230A750: - bl sub_020407EC - cmp r0, #1 - beq _0230AD00 - cmp r0, #7 - bne _0230A7A4 - bl sub_02041094 - strh r0, [sb, #0x76] - bl sub_0203FD38 - mov r1, r0 - add r0, sb, #0x7a - mov r2, #0x20 - bl MemcpySimple - ldrh r1, [sb, #0x52] - add r0, sb, #0x9a - add r1, sb, r1, lsl #1 - ldrh r1, [r1, #0x54] - bl InitMove - bl ov11_0230ADCC - mov r0, #0xa - str r0, [sb] - b _0230AD00 -_0230A7A4: - cmp r0, #2 - bne _0230AD00 - bl sub_02041094 - strh r0, [sb, #0x76] - add r0, sb, #0xa4 - mov r1, #0x98 - bl MemZero - mov r2, #0 - mov r1, r2 -_0230A7C8: - add r0, sb, r2 - add r2, r2, #1 - strb r1, [r0, #0x13c] - cmp r2, #5 - blt _0230A7C8 - ldrsh r0, [sb, #0x76] - cmp r0, #4 - bge _0230A7F4 - bl sub_02041364 - cmp r0, #0 - bne _0230A7FC -_0230A7F4: - mov r0, #3 - strb r0, [sb, #0x13d] -_0230A7FC: - ldr r0, _0230AD0C ; =ov11_02324D98 - ldr r1, _0230AD24 ; =ov11_02322F5C - ldrsb r3, [r0] - add r2, sb, #0x13c - ldr r0, _0230AD28 ; =ov11_02322F58 - ldr r3, [r1, r3, lsl #3] - mov r1, #0 - str r3, [sb, #0xa4] - str r2, [sb, #0x104] - stmia sp, {r0, r1} - ldr r0, _0230AD2C ; =ov11_02322F30 - ldr r2, _0230AD30 ; =0x00000233 - add r3, sb, #0xa4 - str r1, [sp, #8] - bl sub_02046A20 - mov r0, #9 - str r0, [sb] - b _0230AD00 -_0230A844: - bl ov11_0230AD94 - mov r4, r0 - bl sub_02046BA0 - ldr r1, _0230AD0C ; =ov11_02324D98 - cmp r4, #6 - strb r0, [r1] - bne _0230A870 - bl sub_020416FC - mov r0, #6 - str r0, [sb] - b _0230AD00 -_0230A870: - cmp r4, #1 - bne _0230A8F8 - ldrsh r0, [sb, #0x76] - cmp r0, #4 - bge _0230A890 - bl sub_02041364 - cmp r0, #0 - bne _0230A898 -_0230A890: - ldr r4, _0230AD34 ; =0x000004AC - b _0230A89C -_0230A898: - ldr r4, _0230AD38 ; =0x000004AB -_0230A89C: - add r0, sp, #0xc4 - bl InitPreprocessorArgs - ldrsh r0, [sb, #0x76] - bl sub_02041154 - str r0, [sp, #0xd4] - bl ov11_0230ADCC - add r0, sb, #0xa4 - mov r1, #0x98 - bl MemZero - mov r0, #5 - str r0, [sb, #0xa4] - ldr r1, _0230AD3C ; =ov11_02322F40 - add r0, sp, #0xc4 - stmia sp, {r1, r4} - str r0, [sp, #8] - mov r0, #0 - mov r1, r0 - mov r2, #0x33 - add r3, sb, #0xa4 - bl sub_02046A20 - mov r0, #0xc - str r0, [sb] - b _0230AD00 -_0230A8F8: - cmp r4, #2 - bne _0230A918 - ldrsh r0, [sb, #0x76] - bl sub_02041394 - bl ov11_0230ADCC - mov r0, #6 - str r0, [sb] - b _0230AD00 -_0230A918: - cmp r4, #3 - bne _0230AD00 - bl sub_0203FD38 - mov r1, r0 - add r0, sb, #0x7a - mov r2, #0x20 - bl MemcpySimple - ldrh r1, [sb, #0x52] - add r0, sb, #0x9a - add r1, sb, r1, lsl #1 - ldrh r1, [r1, #0x54] - bl InitMove - bl ov11_0230ADCC - mov r0, #0xa - str r0, [sb] - b _0230AD00 -_0230A958: - ldrsb r1, [sb, #0x78] - mvn r0, #1 - cmp r1, r0 - bne _0230A980 - ldrsh r2, [sb, #0x76] - add r0, sb, #0x7a - mov r1, #5 - mov r3, #1 - bl sub_020417A8 - strb r0, [sb, #0x78] -_0230A980: - mov r0, #0xb - str r0, [sb] - b _0230AD00 -_0230A98C: - bl sub_02041A18 - cmp r0, #1 - bne _0230AD00 - ldr r1, _0230AD0C ; =ov11_02324D98 - mvn r0, #1 - ldr r4, [r1, #4] - ldrsb r1, [r4, #0x78] - cmp r1, r0 - beq _0230A9C4 - bl sub_02041A00 - ldrsb r0, [r4, #0x78] - bl CloseScrollBox - mvn r0, #1 - strb r0, [r4, #0x78] -_0230A9C4: - mov r0, #6 - str r0, [sb] - b _0230AD00 -_0230A9D0: - bl ov11_0230AD94 - cmp r0, #4 - bne _0230AB08 - ldrsh r0, [sb, #0x76] - cmp r0, #4 - blt _0230AA00 - ldrh r1, [sb, #0x52] - mov r0, #1 - add r1, r1, #1 - strh r1, [sb, #0x52] - str r0, [sb] - b _0230AAFC -_0230AA00: - ldr r7, [sb, #8] - mvn r5, #0 - bl sub_02041484 - bl sub_0203FD38 - mov r6, r0 - mov r8, #0 - add r4, r7, #0x22 - mov fp, #6 -_0230AA20: - mul sl, r8, fp - add r0, r4, sl - add r1, r6, r8, lsl #3 - bl DungeonMoveToGroundMove - cmp r5, #0 - bge _0230AA54 - add r0, r7, sl - ldrb r0, [r0, #0x22] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - moveq r5, r8 -_0230AA54: - add r8, r8, #1 - cmp r8, #4 - blt _0230AA20 - add r0, sp, #0x74 - bl InitPreprocessorArgs - mov r0, #0x100 - mov r1, #0xf - bl MemAlloc - mov r4, r0 - mov r0, r7 - bl sub_02055894 - bl sub_020564B0 - mov r2, r0 - mov r0, r4 - mov r1, r7 - bl sub_02056094 - add r1, r7, #0x22 - mov r0, #6 - str r4, [sp, #0xac] - mla r0, r5, r0, r1 - ldrh r1, [sb, #0x52] - add r1, sb, r1, lsl #1 - ldrh r1, [r1, #0x54] - bl GetInfoMoveGround - ldrh r2, [sb, #0x52] - ldr r0, _0230AD14 ; =0x0000131B - mov r1, #0x100 - add r2, sb, r2, lsl #1 - ldrh r2, [r2, #0x54] - str r2, [sp, #0x84] - bl sub_02017C74 - ldr r1, _0230AD18 ; =0x000004A8 - mov r0, #0x1c - add r2, sp, #0x74 - bl sub_02046BE8 - ldrh r2, [sb, #0x52] - mov r0, r4 - mov r1, #4 - add r2, r2, #1 - strh r2, [sb, #0x52] - str r1, [sb] - bl MemFree -_0230AAFC: - mov r0, #0 - bl sub_020410A4 - b _0230AD00 -_0230AB08: - sub r0, r0, #5 - cmp r0, #1 - movls r0, #6 - strls r0, [sb] - b _0230AD00 -_0230AB1C: - mov r0, #0x400 - mov r1, #0xf - ldr r6, [sb, #8] - mov r7, #0 - bl MemAlloc - mov r4, r0 - mov r0, #0x100 - mov r1, #0xf - bl MemAlloc - str r0, [sp, #0xc] - mov r0, #0x100 - mov r1, #0xf - bl MemAlloc - mov r5, r0 - mov r0, r7 - strb r0, [r4] - mov r0, r6 - bl sub_02055894 - bl sub_020564B0 - mov r2, r0 - mov r0, r5 - mov r1, r6 - bl sub_02056094 - add r0, sp, #0x24 - bl InitPreprocessorArgs - mov r8, r7 - ldrb r1, [r6, #0xc] - ldrb r0, [sb, #0x18] - ldrsh r3, [r6, #0xa] - ldrsh r2, [sb, #0x16] - sub r0, r1, r0 - str r0, [sp, #0x14] - sub r2, r3, r2 - str r2, [sp, #0x10] - ldrb r1, [r6, #0xe] - ldrb r0, [sb, #0x1a] - ldrb r3, [r6, #0xd] - ldrb r2, [sb, #0x19] - sub r0, r1, r0 - str r0, [sp, #0x1c] - sub r2, r3, r2 - ldrb r1, [r6, #0xf] - ldrb r0, [sb, #0x1b] - str r2, [sp, #0x18] - mov sl, r8 - sub r0, r1, r0 - str r0, [sp, #0x20] -_0230ABD8: - add r0, sp, #0x10 - ldr fp, [r0, sl, lsl #2] - cmp fp, #0 - ble _0230AC58 - cmp r7, #0 - beq _0230AC10 - cmp r8, #3 - beq _0230AC04 - ldr r1, _0230AD40 ; =ov11_02322F80 - mov r0, r4 - bl strcat -_0230AC04: - ldr r1, _0230AD44 ; =ov11_02322F84 - mov r0, r4 - bl strcat -_0230AC10: - add r0, sp, #0x24 - ldr r2, _0230AD48 ; =ov11_02322F24 - mov r3, sl, lsl #1 - ldrh r2, [r2, r3] - str r5, [sp, #0x5c] - add r0, r0, sl, lsl #2 - str fp, [r0, #0x24] - add r0, sp, #0x24 - str r0, [sp] - ldr r0, [sp, #0xc] - mov r1, #0x100 - mov r3, #0 - bl PreprocessStringFromId - ldr r1, [sp, #0xc] - mov r0, r4 - bl strcat - mov r7, #1 - add r8, r8, #1 -_0230AC58: - add sl, sl, #1 - cmp sl, #5 - blt _0230ABD8 - ldr r1, _0230AD44 ; =ov11_02322F84 - mov r0, r4 - bl strcat - cmp r7, #0 - beq _0230AC8C - add r2, sp, #0x24 - mov r1, r4 - mov r0, #0x1c - bl sub_02046C30 - b _0230ACB4 -_0230AC8C: - ldrb r1, [r6, #1] - ldrb r0, [sb, #0xd] - cmp r1, r0 - bne _0230ACB4 - ldr r1, _0230AD4C ; =0x000004A7 - add r2, sp, #0x24 - mov r0, #0x1c - str r5, [sp, #0x5c] - bl sub_02046BE8 - mov r7, #1 -_0230ACB4: - mov r0, r4 - bl MemFree - ldr r0, [sp, #0xc] - bl MemFree - mov r0, r5 - bl MemFree - cmp r7, #0 - movne r0, #0xe - strne r0, [sb] - bne _0230AD00 - mov r0, #1 - b _0230AD04 -_0230ACE4: - bl sub_02046C78 - cmp r0, #0 - movne r0, #6 - moveq r0, #0 - cmp r0, #6 - moveq r0, #1 - beq _0230AD04 -_0230AD00: - mov r0, #0 -_0230AD04: - add sp, sp, #0x1b4 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -#ifdef JAPAN -#define OV11_0230A390_OFFSET 0x3725 -#else -#define OV11_0230A390_OFFSET 0 -#endif -_0230AD0C: .word ov11_02324D98 -_0230AD10: .word 0x000004A6 + OV11_0230A390_OFFSET -#ifdef JAPAN -_0230C2B4: .word 0x000003E7 -#endif -_0230AD14: .word 0x0000131B -_0230AD18: .word 0x000004A8 + OV11_0230A390_OFFSET -_0230AD1C: .word 0xFFFFFE5E -_0230AD20: .word 0x000004A9 + OV11_0230A390_OFFSET -_0230AD24: .word ov11_02322F5C -_0230AD28: .word ov11_02322F58 -_0230AD2C: .word ov11_02322F30 -_0230AD30: .word 0x00000233 -_0230AD34: .word 0x000004AC + OV11_0230A390_OFFSET -_0230AD38: .word 0x000004AB + OV11_0230A390_OFFSET -_0230AD3C: .word ov11_02322F40 -_0230AD40: .word ov11_02322F80 -_0230AD44: .word ov11_02322F84 -_0230AD48: .word ov11_02322F24 -_0230AD4C: .word 0x000004A7 + OV11_0230A390_OFFSET - arm_func_end ov11_0230A390 - - arm_func_start ov11_0230AD50 -ov11_0230AD50: ; 0x0230AD50 - stmdb sp!, {r3, lr} - ldr r0, _0230AD78 ; =ov11_02324D98 - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl MemFree - ldr r0, _0230AD78 ; =ov11_02324D98 - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230AD78: .word ov11_02324D98 - arm_func_end ov11_0230AD50 - - arm_func_start IsGroundMonsterAtMaxLevel -IsGroundMonsterAtMaxLevel: ; 0x0230AD7C - ldrb r0, [r0, #1] - cmp r0, #0x64 - movhs r0, #1 - movlo r0, #0 - and r0, r0, #0xff - bx lr - arm_func_end IsGroundMonsterAtMaxLevel - - arm_func_start ov11_0230AD94 -ov11_0230AD94: ; 0x0230AD94 - stmdb sp!, {r3, lr} - bl sub_02046B04 - mvn r2, #0 - cmp r0, r2 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - sub r1, r2, #1 - cmp r0, r1 - moveq r0, #6 - ldmeqia sp!, {r3, pc} - sub r1, r2, #2 - cmp r0, r1 - moveq r0, #6 - ldmia sp!, {r3, pc} - arm_func_end ov11_0230AD94 - - arm_func_start ov11_0230ADCC -ov11_0230ADCC: ; 0x0230ADCC - stmdb sp!, {r4, lr} - ldr r1, _0230AE0C ; =ov11_02324D98 - mvn r0, #1 - ldr r4, [r1, #4] - ldrsb r1, [r4, #0x74] - cmp r1, r0 - ldmeqia sp!, {r4, pc} - ldr r0, [r4, #8] - bl sub_02055894 - bl sub_0203FD80 - bl sub_020407C0 - ldrsb r0, [r4, #0x74] - bl CloseAdvancedTextBox - mvn r0, #1 - strb r0, [r4, #0x74] - ldmia sp!, {r4, pc} - .align 2, 0 -_0230AE0C: .word ov11_02324D98 - arm_func_end ov11_0230ADCC - - arm_func_start ov11_0230AE10 -ov11_0230AE10: ; 0x0230AE10 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - ldr r0, [r5] - cmp r0, #0 - cmpne r0, #1 - ldmneia sp!, {r3, r4, r5, pc} - mov r0, #0x10 - mov r1, #8 - bl MemAlloc - ldr r2, _0230AE78 ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR - mov r1, #0x10 - str r0, [r2] - bl MemZero - ldr r0, _0230AE78 ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR - ldmia r5, {r1, r2} - ldr r4, [r0] - str r1, [r4] - add r0, r4, #0xc - add r1, r4, #0xe - str r2, [r4, #4] - bl ov11_0230C050 - ldr r1, _0230AE7C ; =ov11_02322F98 - ldr r2, _0230AE80 ; =GetExclusiveItemRequirements - add r0, r4, #8 - bl sub_0204707C - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230AE78: .word EXCLUSIVE_ITEM_REQUIREMENTS_PTR -_0230AE7C: .word ov11_02322F98 -_0230AE80: .word GetExclusiveItemRequirements - arm_func_end ov11_0230AE10 - - arm_func_start ov11_0230AE84 -ov11_0230AE84: ; 0x0230AE84 - stmdb sp!, {r3, lr} - ldr r0, _0230AECC ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR - ldr r0, [r0] - cmp r0, #0 - ldrne r0, [r0, #8] - cmpne r0, #0 - beq _0230AEC4 - bl sub_020470D0 - ldr r0, _0230AECC ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR - ldr r0, [r0] - ldr r0, [r0, #8] - bl sub_02047148 - mvn r1, #0 - cmp r0, r1 - moveq r0, #1 - ldmeqia sp!, {r3, pc} -_0230AEC4: - mov r0, #0 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230AECC: .word EXCLUSIVE_ITEM_REQUIREMENTS_PTR - arm_func_end ov11_0230AE84 - - arm_func_start ov11_0230AED0 -ov11_0230AED0: ; 0x0230AED0 - stmdb sp!, {r3, lr} - ldr r0, _0230AF08 ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR - ldr r0, [r0] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r0, #8 - bl sub_02047150 - ldr r0, _0230AF08 ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR - ldr r0, [r0] - bl MemFree - ldr r0, _0230AF08 ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230AF08: .word EXCLUSIVE_ITEM_REQUIREMENTS_PTR - arm_func_end ov11_0230AED0 - - arm_func_start ov11_0230AF0C -ov11_0230AF0C: ; 0x0230AF0C - ldr r1, _0230AF30 ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR - ldr r2, [r0] - ldr r3, [r1] - ldr r1, [r0, #4] - ldr ip, _0230AF34 ; =sub_02047188 - str r2, [r3] - add r0, r3, #8 - str r1, [r3, #4] - bx ip - .align 2, 0 -_0230AF30: .word EXCLUSIVE_ITEM_REQUIREMENTS_PTR -_0230AF34: .word sub_02047188 - arm_func_end ov11_0230AF0C - - arm_func_start GetExclusiveItemRequirements -GetExclusiveItemRequirements: ; 0x0230AF38 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x15c - ldr r1, _0230B1DC ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR - mov r7, r0 - ldr r6, [r1] - add r0, sp, #0xa - ldrsh r8, [r6, #4] - mov r2, #0 - mov r3, #1 - add r1, sp, #4 - strh r8, [sp, #8] - strh r2, [sp, #6] - strb r3, [sp, #4] - mov sb, #0x10 - bl MaybeGetColoredFormattedItemName - add r0, sp, #0x10c - bl InitPreprocessorArgs - mov r0, r7 - mov r1, #0x18 - mov r2, sb - add r3, sp, #0xa - bl DrawTextInWindow - mov r0, r8 - bl ov11_0230C068 - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _0230AFF8 -_0230AFA4: ; jump table - b _0230AFB4 ; case 0 - b _0230AFB4 ; case 1 - b _0230AFCC ; case 2 - b _0230AFE4 ; case 3 -_0230AFB4: - ldr r3, _0230B1E0 ; =SWAP_SHOP_ONE_STAR_STR - mov r0, r7 - mov r1, #0x6c - mov r2, sb - bl DrawTextInWindow - b _0230AFF8 -_0230AFCC: - ldr r3, _0230B1E4 ; =SWAP_SHOP_TWO_STAR_STR - mov r0, r7 - mov r1, #0x6c - mov r2, sb - bl DrawTextInWindow - b _0230AFF8 -_0230AFE4: - ldr r3, _0230B1E8 ; =SWAP_SHOP_THREE_STAR_STR - mov r0, r7 - mov r1, #0x6c - mov r2, sb - bl DrawTextInWindow -_0230AFF8: - ldr r0, [r6] - cmp r0, #0 - bne _0230B144 - ldr r3, _0230B1EC ; =0x000004B2 - mov r0, r7 - mov r1, #0x18 - mov r2, #0x28 - mov r4, #0 - bl AppendStandardStringToMission - ldr r3, _0230B1F0 ; =0x000004B3 - mov r0, r7 - mov r1, #0x7a - mov r2, #0x28 - bl AppendStandardStringToMission - mov r0, r8 - add sb, sb, #0x30 - bl GetExclusiveItemType - cmp r0, #0xa - addls pc, pc, r0, lsl #2 - b _0230B0E0 -_0230B048: ; jump table - b _0230B0E0 ; case 0 - b _0230B0E0 ; case 1 - b _0230B0E0 ; case 2 - b _0230B074 ; case 3 - b _0230B088 ; case 4 - b _0230B0E0 ; case 5 - b _0230B0E0 ; case 6 - b _0230B074 ; case 7 - b _0230B088 ; case 8 - b _0230B0E0 ; case 9 - b _0230B09C ; case 10 -_0230B074: - sub r0, r8, #2 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - mov r4, #2 - b _0230B0E0 -_0230B088: - sub r0, r8, #3 - mov r0, r0, lsl #0x10 - mov r5, r0, asr #0x10 - mov r4, #3 - b _0230B0E0 -_0230B09C: - sub r0, r8, #0x1bc - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #7 - ldrls r5, _0230B1F4 ; =0x000002FE - movls r4, #3 - bls _0230B0E0 - sub r0, r8, #0x1c4 - mov r0, r0, lsl #0x10 - mov r0, r0, asr #0x10 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #3 - ldrls r5, _0230B1F8 ; =0x00000336 - movls r4, #3 -_0230B0E0: - mov sl, #0 - add fp, sp, #0x10c - b _0230B138 -_0230B0EC: - mov r0, r5 - str r5, [sp, #0x11c] - bl CountNbItemsOfTypeInBag - mov r8, r0 - mov r0, r5 - bl CountNbItemsOfTypeInStorage - add r0, r8, r0 - str r0, [sp, #0x130] - ldr r3, _0230B1FC ; =0x000004B5 - mov r0, r7 - mov r1, #0x18 - mov r2, sb - str fp, [sp] - bl sub_020262E0 - add r0, r5, #1 - mov r0, r0, lsl #0x10 - add sb, sb, #0xc - mov r5, r0, asr #0x10 - add sl, sl, #1 -_0230B138: - cmp sl, r4 - blt _0230B0EC - b _0230B184 -_0230B144: - cmp r0, #1 - bne _0230B184 - ldr r3, _0230B1EC ; =0x000004B2 - mov r0, r7 - mov r1, #0x18 - mov r2, #0x28 - bl AppendStandardStringToMission - ldrh r0, [r6, #6] - ldr r3, _0230B200 ; =0x000004B4 - add r4, sp, #0x10c - str r0, [sp, #0x130] - mov r0, r7 - mov r1, #0x18 - mov r2, #0x40 - str r4, [sp] - bl sub_020262E0 -_0230B184: - ldrh r0, [r6, #0xc] - add r1, sp, #0x10c - ldr r3, _0230B204 ; =0x000004B6 - str r0, [sp, #0x130] - str r1, [sp] - mov r0, r7 - mov r1, #0x1c - mov r2, #0x7e - bl sub_020262E0 - ldrh r0, [r6, #0xe] - ldr r3, _0230B208 ; =0x000004B7 - add r4, sp, #0x10c - str r0, [sp, #0x130] - mov r0, r7 - mov r1, #0x1c - mov r2, #0x8a - str r4, [sp] - bl sub_020262E0 - mov r0, r7 - bl UpdateWindow - add sp, sp, #0x15c - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -#ifdef JAPAN -#define GET_EXCLUSIVE_ITEM_REQUIREMENTS_OFFSET 0x3528 -#else -#define GET_EXCLUSIVE_ITEM_REQUIREMENTS_OFFSET 0 -#endif -_0230B1DC: .word EXCLUSIVE_ITEM_REQUIREMENTS_PTR -_0230B1E0: .word SWAP_SHOP_ONE_STAR_STR -_0230B1E4: .word SWAP_SHOP_TWO_STAR_STR -_0230B1E8: .word SWAP_SHOP_THREE_STAR_STR -_0230B1EC: .word 0x000004B2 + GET_EXCLUSIVE_ITEM_REQUIREMENTS_OFFSET -_0230B1F0: .word 0x000004B3 + GET_EXCLUSIVE_ITEM_REQUIREMENTS_OFFSET -_0230B1F4: .word 0x000002FE -_0230B1F8: .word 0x00000336 -_0230B1FC: .word 0x000004B5 + GET_EXCLUSIVE_ITEM_REQUIREMENTS_OFFSET -_0230B200: .word 0x000004B4 + GET_EXCLUSIVE_ITEM_REQUIREMENTS_OFFSET -_0230B204: .word 0x000004B6 + GET_EXCLUSIVE_ITEM_REQUIREMENTS_OFFSET -_0230B208: .word 0x000004B7 + GET_EXCLUSIVE_ITEM_REQUIREMENTS_OFFSET - arm_func_end GetExclusiveItemRequirements - - arm_func_start SwapShopInventoryManager -SwapShopInventoryManager: ; 0x0230B20C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - sub sp, sp, #0x20 - ldr r2, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS - mov r4, r0 - ldr r0, [r2, #4] - mov r8, r1 - cmp r0, #0 - ldr r5, _0230B668 ; =0x00401A33 - mov r6, #0 - ldr r7, _0230B66C ; =ov11_0230BD5C - bne _0230B24C - ldr r0, _0230B670 ; =0x000046D4 - mov r1, #8 - bl MemAlloc - ldr r1, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS - str r0, [r1, #4] -_0230B24C: - ldr r0, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - str r4, [r0] - bl ov11_0230BF98 - bl LoadSynthBin - ldr sb, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS - mov r2, #0 - ldr r3, [sb, #4] - mov r1, #0x10 - add r3, r3, #0x4000 - strb r0, [r3, #0x6c4] - ldr r0, [sb, #4] - cmp r4, #3 - add r0, r0, #0x4000 - str r2, [r0, #0x6c8] - ldr r0, [sb, #4] - add r0, r0, #0x4000 - str r2, [r0, #0x6cc] - ldr r0, [sb, #4] - add r0, r0, #0x4000 - str r1, [r0, #0x638] - addls pc, pc, r4, lsl #2 - b _0230B474 -_0230B2A8: ; jump table - b _0230B2B8 ; case 0 - b _0230B2EC ; case 1 - b _0230B308 ; case 2 - b _0230B428 ; case 3 -_0230B2B8: - bl ov11_0230C3CC - bl ov11_0230C61C - mov r0, sb - ldr r0, [r0, #4] - add r0, r0, #0xe6 - add r0, r0, #0x4500 - bl GetCroagunkItemTemplates - mov r0, sb - ldr r0, [r0, #4] - ldr r1, _0230B674 ; =0x000003A6 - add r0, r0, #0x4600 - strh r1, [r0, #0x34] - b _0230B474 -_0230B2EC: - bl ov11_0230C4D4 - mov r0, sb - ldr r0, [r0, #4] - ldr r1, _0230B678 ; =0x000003A7 - add r0, r0, #0x4600 - strh r1, [r0, #0x34] - b _0230B474 -_0230B308: - mov r0, r8, lsl #0x10 - mov r0, r0, asr #0x10 - bl sub_02011420 - mov sb, #0 - mov sl, sb - str r0, [sp, #0x14] - mov fp, sb - b _0230B370 -_0230B328: - ldr r1, [r1] - mov r0, sl, lsl #1 - ldrsh r0, [r1, r0] - bl GetExclusiveItemType - cmp r0, #1 - blt _0230B348 - cmp r0, #4 - ble _0230B36C -_0230B348: - ldr r1, [sp, #0x14] - mov r0, sb, lsl #0x10 - ldr r2, [r1] - mov r1, sl, lsl #1 - ldrh r2, [r2, r1] - mov r1, fp - mov r0, r0, lsr #0x10 - bl ov11_0230C924 - add sb, sb, #1 -_0230B36C: - add sl, sl, #1 -_0230B370: - ldr r1, [sp, #0x14] - ldr r0, [r1, #4] - cmp sl, r0 - blt _0230B328 - mov sl, #0 - mov fp, sl - b _0230B3D4 -_0230B38C: - ldr r1, [r0] - mov r0, sl, lsl #1 - ldrsh r0, [r1, r0] - bl GetExclusiveItemType - cmp r0, #1 - blt _0230B3D0 - cmp r0, #4 - bgt _0230B3D0 - ldr r1, [sp, #0x14] - mov r0, sb, lsl #0x10 - ldr r2, [r1] - mov r1, sl, lsl #1 - ldrh r2, [r2, r1] - mov r1, fp - mov r0, r0, lsr #0x10 - bl ov11_0230C924 - add sb, sb, #1 -_0230B3D0: - add sl, sl, #1 -_0230B3D4: - ldr r0, [sp, #0x14] - ldr r2, [r0, #4] - cmp sl, r2 - blt _0230B38C - ldr r1, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS - add r0, sp, #0x14 - ldr r1, [r1, #4] - add r1, r1, #0x4600 - strh r2, [r1, #0x26] - bl SwapShopFreeDoublePointer - ldr r1, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS - mov r0, r8, lsl #0x10 - ldr r2, [r1, #4] - mov r3, r0, asr #0x10 - add r0, r2, #0x4000 - str r3, [r0, #0x63c] - ldr r0, [r1, #4] -#ifdef JAPAN - ldr r1, _0230CC20_JP ; =0x000032B2 -#else - mov r1, #0x3a8 -#endif - add r0, r0, #0x4600 - strh r1, [r0, #0x34] - b _0230B474 -_0230B428: - add r1, sp, #0xc - add r2, sp, #0xe - mov r0, #1 - bl ov11_0230C1D0 - mov r3, sb - ldr r1, [r3, #4] - ldr r7, _0230B67C ; =0x0000032F - add r1, r1, #0x4600 - strh r0, [r1, #0x26] - ldr r0, [r3, #4] - ldr r2, _0230B680 ; =0x80040004 - add r0, r0, #0x4600 - strh r7, [r0, #0x34] - ldr r0, [r3, #4] - ldr r6, _0230B684 ; =ov11_0230B78C - add r0, r0, #0x4600 - ldr r7, _0230B688 ; =ov11_0230BE34 - strh r8, [r0, #0x28] - orr r5, r5, r2 -_0230B474: - cmp r4, #0 - bne _0230B5A8 - ldr r0, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS - mov r1, #6 - ldrsh r2, [r0] - ldr r0, [r0, #4] - add r0, r0, #0xe6 - smulbb r8, r2, r1 - add sb, r0, #0x1400 - ldrh r0, [sb, r8] - add sl, sb, r8 - bl ov11_0230C9EC - ldr r1, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS - str r0, [sp, #0x18] - ldrh r0, [r1] - bl ov11_0230C970 - strh r0, [sp, #0x1c] - ldrh r0, [sb, r8] - cmp r0, #1 - movne r0, #0 - strneh r0, [sp, #0x1e] - bne _0230B4E8 - ldr r0, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS - ldrh r1, [sl, #2] - ldr r0, [r0, #4] - add r0, r0, r1, lsl #3 - add r0, r0, #0x4500 - ldrh r0, [r0, #0xea] - strh r0, [sp, #0x1e] -_0230B4E8: - add r0, sp, #0x18 - bl ov11_0230AE10 - ldr r0, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS - add r1, sp, #0x12 - ldr r2, [r0, #4] - ldrsh r8, [r0] - add r3, r2, #0x4600 - add r2, sp, #0x10 - mov r0, #0 - strh r8, [r3, #0xd0] - bl ov11_0230C1D0 - ldr fp, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS - ldrh r2, [sp, #0x12] - ldr r0, [fp, #4] - ldrh r1, [sp, #0x10] - add r0, r0, #0x4600 - ldrh r8, [r0, #0x26] - add sb, r2, r1 - mov sl, #0 - b _0230B5A0 -_0230B538: - mov r0, sl, lsl #0x10 - mov r1, r0, lsr #0x10 - ldr r2, [fp, #4] - mov r0, #6 - mla r0, r1, r0, r2 - add r0, r0, #0x1400 - ldrh r0, [r0, #0xe6] - bl ov11_0230C9EC - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - cmp r0, #1 - bne _0230B59C - ldr r0, [fp, #4] - mov r1, #6 - mla r1, sl, r1, r0 - add r1, r1, #0x1400 - ldrh r1, [r1, #0xe8] - add r1, r0, r1, lsl #3 - add r1, r1, #0x4500 - ldrh r1, [r1, #0xea] - cmp r1, sb - addgt r0, r0, sl - addgt r1, r0, #0x1000 - movgt r0, #2 - strgtb r0, [r1, #0xb8] -_0230B59C: - add sl, sl, #1 -_0230B5A0: - cmp sl, r8 - blt _0230B538 -_0230B5A8: - ldr r8, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS - mov r1, r5 - ldr sb, [r8, #4] - mov r3, r7 - add r2, sb, #0x4600 - ldrh r2, [r2, #0x26] - ldr r0, _0230B68C ; =ov11_02322FE4 - mov r5, #8 - str r2, [sb, #4] - ldr r2, [r8, #4] - ldrsh r7, [r8] - add r2, r2, #0x4000 - str r7, [r2, #0x62c] - ldr sb, [r8, #4] - add r2, sb, #0xb8 - add r7, r2, #0x1000 - add r2, sb, #0x4000 - str r7, [r2, #0x68c] - ldr r2, [r8, #4] - str r6, [sp] - ldr r6, [r2, #4] - add r2, r2, #0x22c - str r6, [sp, #4] - add r2, r2, #0x4400 - str r5, [sp, #8] - bl CreateCollectionMenu - mov r2, r8 - ldr r1, [r2, #4] - cmp r4, #3 - add r1, r1, #0x1000 - strb r0, [r1, #0x4e4] - bne _0230B65C - ldr r0, [r2, #4] - mov r1, #1 - add r0, r0, #0x1400 - ldrsb r0, [r0, #0xe4] - bl SetCollectionMenuField0x1C8 - mov r0, r8 - ldr r0, [r0, #4] - ldr r1, _0230B690 ; =ov11_0230BF38 - add r0, r0, #0x1400 - ldrsb r0, [r0, #0xe4] - bl SetCollectionMenuField0x1A4 - bl ov11_0230CAA4 - bl ov11_0230C9F8 -_0230B65C: - add sp, sp, #0x20 - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230B664: .word SWAP_SHOP_INVENTORY_PTRS -_0230B668: .word 0x00401A33 -_0230B66C: .word ov11_0230BD5C -_0230B670: .word 0x000046D4 -#ifdef JAPAN -_0230B674: .word 0x000032B0 -_0230B678: .word 0x000032B1 -_0230CC20_JP: .word 0x000032B2 -_0230B67C: .word 0x000031F4 -#else -_0230B674: .word 0x000003A6 -_0230B678: .word 0x000003A7 -_0230B67C: .word 0x0000032F -#endif -_0230B680: .word 0x80040004 -_0230B684: .word ov11_0230B78C -_0230B688: .word ov11_0230BE34 -_0230B68C: .word ov11_02322FE4 -_0230B690: .word ov11_0230BF38 - arm_func_end SwapShopInventoryManager - - arm_func_start ov11_0230B694 -ov11_0230B694: ; 0x0230B694 - stmdb sp!, {r4, lr} - ldr r0, _0230B71C ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - cmp r0, #0 - bne _0230B6BC - ldr r0, _0230B720 ; =0x000046D4 - mov r1, #8 - bl MemAlloc - ldr r1, _0230B71C ; =SWAP_SHOP_INVENTORY_PTRS - str r0, [r1, #4] -_0230B6BC: - bl LoadSynthBin - mov r4, r0 - bl ov11_0230BF98 - bl ov11_0230C3CC - bl ov11_0230C61C - mov r0, #0 - bl GetCroagunkItemTemplates - ldr r1, _0230B71C ; =SWAP_SHOP_INVENTORY_PTRS - cmp r4, #0 - ldr r1, [r1, #4] - add r1, r1, #0x4600 - ldrh r1, [r1, #0x26] - add r4, r1, r0 - beq _0230B6F8 - bl CloseSynthBin -_0230B6F8: - ldr r0, _0230B71C ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - bl MemFree - ldr r1, _0230B71C ; =SWAP_SHOP_INVENTORY_PTRS - mov r0, #0 - str r0, [r1, #4] - cmp r4, #0 - movne r0, #1 - ldmia sp!, {r4, pc} - .align 2, 0 -_0230B71C: .word SWAP_SHOP_INVENTORY_PTRS -_0230B720: .word 0x000046D4 - arm_func_end ov11_0230B694 - - arm_func_start ov11_0230B724 -ov11_0230B724: ; 0x0230B724 - stmdb sp!, {r4, lr} - ldr r0, _0230B784 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - cmp r0, #0 - bne _0230B74C - ldr r0, _0230B788 ; =0x000046D4 - mov r1, #8 - bl MemAlloc - ldr r1, _0230B784 ; =SWAP_SHOP_INVENTORY_PTRS - str r0, [r1, #4] -_0230B74C: - bl ov11_0230BF98 - bl ov11_0230C4D4 - ldr r0, _0230B784 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - add r1, r0, #0x4600 - ldrh r4, [r1, #0x26] - bl MemFree - ldr r0, _0230B784 ; =SWAP_SHOP_INVENTORY_PTRS - mov r1, #0 - str r1, [r0, #4] - cmp r4, #0 - movne r1, #1 - and r0, r1, #0xff - ldmia sp!, {r4, pc} - .align 2, 0 -_0230B784: .word SWAP_SHOP_INVENTORY_PTRS -_0230B788: .word 0x000046D4 - arm_func_end ov11_0230B724 - - arm_func_start ov11_0230B78C -ov11_0230B78C: ; 0x0230B78C - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _0230B870 ; =SWAP_SHOP_INVENTORY_PTRS - tst r0, #0x400 - ldr r4, [r1, #4] - beq _0230B868 - add r0, r4, #0x1400 - ldrsb r0, [r0, #0xe4] - bl GetWindowIdSelectedMenuItemIdx - add r1, r4, #0xe6 - add r2, r1, #0x1400 - mov r1, #6 - mla r5, r0, r1, r2 - ldrb r0, [r5, #4] - cmp r0, #0 - beq _0230B7E8 - mov r0, r1 - bl PlaySeVolumeWrapper - mov r1, #0 - strb r1, [r5, #4] - add r0, r4, #0x1400 - ldrsb r0, [r0, #0xe4] - bl sub_0202D07C - b _0230B83C -_0230B7E8: - bl ov11_0230B874 - add r1, r4, #0x4600 - ldrh r1, [r1, #0x28] - cmp r0, r1 - bge _0230B834 - mov r0, #6 - bl PlaySeVolumeWrapper - mov r0, #1 - strb r0, [r5, #4] - bl ov11_0230B874 - add r1, r4, #0x4600 - ldrh r1, [r1, #0x28] - cmp r1, r0 - bne _0230B83C - add r0, r4, #0x1400 - ldrsb r0, [r0, #0xe4] - mov r1, #1 - bl sub_0202D07C - b _0230B83C -_0230B834: - mov r0, #2 - bl PlaySeVolumeWrapper -_0230B83C: - ldr r0, _0230B870 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r1, [r0, #4] - add r0, r1, #0x4000 - ldr r0, [r0, #0x6c8] - cmp r0, #0 - beq _0230B860 - add r0, r1, #0x2c8 - add r0, r0, #0x4400 - bl sub_02047188 -_0230B860: - mov r0, #1 - ldmia sp!, {r3, r4, r5, pc} -_0230B868: - mov r0, #0 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230B870: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230B78C - - arm_func_start ov11_0230B874 -ov11_0230B874: ; 0x0230B874 - stmdb sp!, {r3, lr} - ldr r1, _0230B8BC ; =SWAP_SHOP_INVENTORY_PTRS - mov r0, #0 - ldr ip, [r1, #4] - mov r3, r0 - add r1, ip, #0x4600 - ldrh lr, [r1, #0x26] - mov r1, #6 - b _0230B8B0 -_0230B898: - mla r2, r3, r1, ip - add r2, r2, #0x1000 - ldrb r2, [r2, #0x4ea] - add r3, r3, #1 - cmp r2, #0 - addne r0, r0, #1 -_0230B8B0: - cmp r3, lr - blt _0230B898 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230B8BC: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230B874 - - arm_func_start ov11_0230B8C0 -ov11_0230B8C0: ; 0x0230B8C0 - stmdb sp!, {r3, r4, r5, lr} - ldr r1, _0230B910 ; =SWAP_SHOP_INVENTORY_PTRS - mov r4, r0 - ldr r0, [r1, #4] - add r0, r0, #0x1400 - ldrsb r0, [r0, #0xe4] - bl sub_0202D0EC - mov r5, r0 - mov r0, r5, lsl #0x10 - mov r0, r0, lsr #0x10 - bl ov11_0230C970 - ldr r1, _0230B910 ; =SWAP_SHOP_INVENTORY_PTRS - strh r0, [r4] - ldr r0, [r1, #4] - add r0, r0, r5, lsl #1 - add r0, r0, #0x2d00 - ldrh r0, [r0, #0xee] - strh r0, [r4, #2] - ldrsh r0, [r4] - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230B910: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230B8C0 - - arm_func_start ov11_0230B914 -ov11_0230B914: ; 0x0230B914 - stmdb sp!, {r3, lr} - ldr r0, _0230B954 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - add r0, r0, #0x1400 - ldrsb r0, [r0, #0xe4] - bl sub_0202D0EC - ldr r1, _0230B954 ; =SWAP_SHOP_INVENTORY_PTRS - mov r0, r0, lsl #0x10 - ldr r2, [r1, #4] - mov r1, r0, lsr #0x10 - mov r0, #6 - mla r0, r1, r0, r2 - add r0, r0, #0x1400 - ldrh r0, [r0, #0xe6] - bl ov11_0230C9EC - ldmia sp!, {r3, pc} - .align 2, 0 -_0230B954: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230B914 - - arm_func_start ov11_0230B958 -ov11_0230B958: ; 0x0230B958 - stmdb sp!, {r3, lr} - ldr r0, _0230B9B8 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - add r0, r0, #0x1400 - ldrsb r0, [r0, #0xe4] - bl sub_0202D0EC - ldr r2, _0230B9B8 ; =SWAP_SHOP_INVENTORY_PTRS - mov r1, r0, lsl #0x10 - mov r3, r1, lsr #0x10 - ldr ip, [r2, #4] - mov r1, #6 - mla r2, r3, r1, ip - add r2, r2, #0x1400 - ldrh r2, [r2, #0xe6] - cmp r2, #1 - movne r0, #0 - ldmneia sp!, {r3, pc} - mla r1, r0, r1, ip - add r0, r1, #0x1400 - ldrh r0, [r0, #0xe8] - add r0, ip, r0, lsl #3 - add r0, r0, #0x4500 - ldrh r0, [r0, #0xea] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230B9B8: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230B958 - - arm_func_start ov11_0230B9BC -ov11_0230B9BC: ; 0x0230B9BC - stmdb sp!, {r3, lr} - ldr r0, _0230BA60 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - bl ov11_0230AED0 - bl ov11_0230CAE4 - bl ov11_0230CA38 - ldr r0, _0230BA60 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - add r0, r0, #0x4000 - ldrb r0, [r0, #0x6c4] - cmp r0, #0 - beq _0230B9F8 - bl CloseSynthBin -_0230B9F8: - ldr r0, _0230BA60 ; =SWAP_SHOP_INVENTORY_PTRS - mvn r1, #1 - ldr r0, [r0, #4] - add r0, r0, #0x1400 - ldrsb r0, [r0, #0xe4] - cmp r0, r1 - beq _0230BA44 - bl sub_0202D0EC - ldr r1, _0230BA60 ; =SWAP_SHOP_INVENTORY_PTRS - strh r0, [r1] - ldr r0, [r1, #4] - add r0, r0, #0x1400 - ldrsb r0, [r0, #0xe4] - bl sub_0202836C - ldr r0, _0230BA60 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - add r0, r0, #0x1400 - ldrsb r0, [r0, #0xe4] - bl CloseCollectionMenu -_0230BA44: - ldr r0, _0230BA60 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - bl MemFree - ldr r0, _0230BA60 ; =SWAP_SHOP_INVENTORY_PTRS - mov r1, #0 - str r1, [r0, #4] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230BA60: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230B9BC - - arm_func_start ov11_0230BA64 -ov11_0230BA64: ; 0x0230BA64 - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #8 - ldr r0, _0230BB18 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r4, [r0, #4] - cmp r4, #0 - moveq r0, #0 - beq _0230BB10 - add r0, r4, #0x1400 - ldrsb r0, [r0, #0xe4] - bl sub_0202D0EC - mov r5, r0 - bl ov11_0230AE84 - cmp r0, #0 - addne r0, r4, #0x4600 - ldrneh r0, [r0, #0xd0] - cmpne r0, r5 - beq _0230BAD8 - bl ov11_0230B914 - mov r1, r5, lsl #0x10 - str r0, [sp] - mov r0, r1, lsr #0x10 - bl ov11_0230C970 - strh r0, [sp, #4] - bl ov11_0230B958 - strh r0, [sp, #6] - add r0, sp, #0 - bl ov11_0230AF0C - add r0, r4, #0x4600 - strh r5, [r0, #0xd0] -_0230BAD8: - add r0, r4, #0x1400 - ldrsb r0, [r0, #0xe4] - bl IsCollectionMenuActive - cmp r0, #0 - bne _0230BB0C - add r0, r4, #0x1400 - ldrsb r0, [r0, #0xe4] - bl sub_0202C75C - mvn r1, #0 - cmp r0, r1 - moveq r0, #2 - movne r0, #3 - b _0230BB10 -_0230BB0C: - mov r0, #0 -_0230BB10: - add sp, sp, #8 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0230BB18: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230BA64 - - arm_func_start ov11_0230BB1C -ov11_0230BB1C: ; 0x0230BB1C - stmdb sp!, {r3, lr} - ldr r0, _0230BB94 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - cmp r0, #0 - addne r0, r0, #0x1400 - ldrnesb r0, [r0, #0xe4] - mvnne r1, #1 - cmpne r0, r1 - ldmeqia sp!, {r3, pc} - bl sub_0202D0EC - ldr r1, _0230BB94 ; =SWAP_SHOP_INVENTORY_PTRS - strh r0, [r1] - bl ov11_0230CA38 - bl ov11_0230CAE4 - ldr r0, _0230BB94 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - add r0, r0, #0x1400 - ldrsb r0, [r0, #0xe4] - bl sub_0202836C - ldr r0, _0230BB94 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - add r0, r0, #0x1400 - ldrsb r0, [r0, #0xe4] - bl CloseCollectionMenu - ldr r0, _0230BB94 ; =SWAP_SHOP_INVENTORY_PTRS - mvn r1, #1 - ldr r0, [r0, #4] - add r0, r0, #0x1000 - strb r1, [r0, #0x4e4] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230BB94: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230BB1C - - arm_func_start ov11_0230BB98 -ov11_0230BB98: ; 0x0230BB98 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0xc - ldr r0, _0230BCD8 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r2, [r0, #4] - cmp r2, #0 - beq _0230BCD0 - add r0, r2, #0x1400 - ldrsb r1, [r0, #0xe4] - mvn r0, #1 - cmp r1, r0 - bne _0230BCD0 - ldr r0, [r2] - ldr r1, _0230BCDC ; =0x00401833 - ldr r3, _0230BCE0 ; =ov11_0230BD5C - cmp r0, #3 - mov r5, #0 - addls pc, pc, r0, lsl #2 - b _0230BC00 -_0230BBE0: ; jump table - b _0230BC00 ; case 0 - b _0230BC00 ; case 1 - b _0230BC00 ; case 2 - b _0230BBF0 ; case 3 -_0230BBF0: - ldr r0, _0230BCE4 ; =0x80040004 - ldr r5, _0230BCE8 ; =ov11_0230B78C - ldr r3, _0230BCEC ; =ov11_0230BE34 - orr r1, r1, r0 -_0230BC00: - ldr ip, _0230BCD8 ; =SWAP_SHOP_INVENTORY_PTRS - add r2, r2, #0x4000 - ldrsh r4, [ip] - ldr r0, _0230BCF0 ; =ov11_02322FE4 - mov lr, #8 - str r4, [r2, #0x62c] - ldr r2, [ip, #4] - str r5, [sp] - ldr ip, [r2, #4] - add r2, r2, #0x22c - add r2, r2, #0x4400 - stmib sp, {ip, lr} - bl CreateCollectionMenu - ldr r2, _0230BCD8 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r1, [r2, #4] - add r1, r1, #0x1000 - strb r0, [r1, #0x4e4] - ldr r1, [r2, #4] - ldr r0, [r1] - cmp r0, #3 - bne _0230BCD0 - add r0, r1, #0x1400 - ldrsb r0, [r0, #0xe4] - mov r1, #1 - bl SetCollectionMenuField0x1C8 - ldr r0, _0230BCD8 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r1, _0230BCF4 ; =ov11_0230BF38 - ldr r0, [r0, #4] - add r0, r0, #0x1400 - ldrsb r0, [r0, #0xe4] - bl SetCollectionMenuField0x1A4 - bl ov11_0230CAA4 - bl ov11_0230C9F8 - ldr r0, _0230BCD8 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r4, [r0, #4] - ldr r0, [r4] - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _0230BCD0 -_0230BC9C: ; jump table - b _0230BCD0 ; case 0 - b _0230BCD0 ; case 1 - b _0230BCD0 ; case 2 - b _0230BCAC ; case 3 -_0230BCAC: - bl ov11_0230B874 - add r1, r4, #0x4600 - ldrh r1, [r1, #0x28] - cmp r1, r0 - bne _0230BCD0 - add r0, r4, #0x1400 - ldrsb r0, [r0, #0xe4] - mov r1, #1 - bl sub_0202D07C -_0230BCD0: - add sp, sp, #0xc - ldmia sp!, {r4, r5, pc} - .align 2, 0 -_0230BCD8: .word SWAP_SHOP_INVENTORY_PTRS -_0230BCDC: .word 0x00401833 -_0230BCE0: .word ov11_0230BD5C -_0230BCE4: .word 0x80040004 -_0230BCE8: .word ov11_0230B78C -_0230BCEC: .word ov11_0230BE34 -_0230BCF0: .word ov11_02322FE4 -_0230BCF4: .word ov11_0230BF38 - arm_func_end ov11_0230BB98 - - arm_func_start ov11_0230BCF8 -ov11_0230BCF8: ; 0x0230BCF8 - stmdb sp!, {r3, lr} - ldr r0, _0230BD24 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - cmp r0, #0 - addne r0, r0, #0x1400 - ldrnesb r0, [r0, #0xe4] - mvnne r1, #1 - cmpne r0, r1 - ldmeqia sp!, {r3, pc} - bl sub_0202C620 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230BD24: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230BCF8 - - arm_func_start ov11_0230BD28 -ov11_0230BD28: ; 0x0230BD28 - stmdb sp!, {r3, lr} - ldr r0, _0230BD58 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - cmp r0, #0 - addne r0, r0, #0x1400 - ldrnesb r0, [r0, #0xe4] - mvnne r1, #1 - cmpne r0, r1 - moveq r0, #0 - ldmeqia sp!, {r3, pc} - bl IsCollectionMenuState3 - ldmia sp!, {r3, pc} - .align 2, 0 -_0230BD58: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230BD28 - - arm_func_start ov11_0230BD5C -ov11_0230BD5C: ; 0x0230BD5C - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #0x58 - mov r5, r1 - mov r1, r5, lsl #0x10 - mov r6, r0 - mov r0, r1, lsr #0x10 - mov r4, r2 - bl ov11_0230C970 - ldr r1, _0230BE28 ; =SWAP_SHOP_INVENTORY_PTRS - strh r0, [sp, #4] - ldr r3, [r1, #4] - mov r1, #1 - add r0, r3, r5, lsl #1 - add r0, r0, #0x2d00 - ldrh r2, [r0, #0xee] - add r0, r3, r5 - add r0, r0, #0x1000 - strh r2, [sp, #2] - strb r1, [sp] - ldrb r0, [r0, #0xb8] - add r1, sp, #0 - mov r2, #0 - tst r0, #2 - beq _0230BDEC - add r0, sp, #6 - bl MaybeGetUncoloredFormattedItemName - ldr r1, _0230BE2C ; =SWAP_SHOP_RED_TEXT_TAG_STR - mov r0, r6 - bl strcpy - add r1, sp, #6 - mov r0, r6 - bl strcat - ldr r1, _0230BE30 ; =SWAP_SHOP_UNCENTER_TEXT_TAG_STR - mov r0, r6 - bl strcat - b _0230BDF4 -_0230BDEC: - mov r0, r6 - bl MaybeGetColoredFormattedItemName -_0230BDF4: - ldr r1, _0230BE28 ; =SWAP_SHOP_INVENTORY_PTRS - mov r0, #6 - ldr r1, [r1, #4] - mla r0, r5, r0, r1 - add r0, r0, #0x1000 - ldrb r0, [r0, #0x4ea] - cmp r0, #0 - movne r1, #1 - moveq r1, #0 - mov r0, r6 - str r1, [r4] - add sp, sp, #0x58 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0230BE28: .word SWAP_SHOP_INVENTORY_PTRS -_0230BE2C: .word SWAP_SHOP_RED_TEXT_TAG_STR -_0230BE30: .word SWAP_SHOP_UNCENTER_TEXT_TAG_STR - arm_func_end ov11_0230BD5C - - arm_func_start ov11_0230BE34 -ov11_0230BE34: ; 0x0230BE34 - stmdb sp!, {r4, r5, r6, lr} - sub sp, sp, #8 - ldr r3, _0230BF28 ; =SWAP_SHOP_INVENTORY_PTRS - mov r5, r1 - mov r1, r5, lsl #0x10 - mov r6, r0 - mov r0, r1, lsr #0x10 - ldr r3, [r3, #4] - mov r1, #6 - mla r1, r0, r1, r3 - add r1, r1, #0x1400 - ldrh r1, [r1, #0xe6] - mov r4, r2 - cmp r1, #4 - moveq r0, #0 - beq _0230BF20 - bl ov11_0230C970 - ldr r1, _0230BF28 ; =SWAP_SHOP_INVENTORY_PTRS - strh r0, [sp, #4] - ldr r0, [r1, #4] - add r1, sp, #0 - add r0, r0, r5, lsl #1 - add r0, r0, #0x2d00 - ldrh ip, [r0, #0xee] - mov r3, #1 - mov r0, r6 - mov r2, #0 - strh ip, [sp, #2] - strb r3, [sp] - bl MaybeGetColoredFormattedItemName - ldrsh r0, [sp, #4] - bl ov11_0230C068 - cmp r0, #3 - addls pc, pc, r0, lsl #2 - b _0230BEE8 -_0230BEC0: ; jump table - b _0230BED0 ; case 0 - b _0230BED0 ; case 1 - b _0230BED8 ; case 2 - b _0230BEE0 ; case 3 -_0230BED0: - ldr r1, _0230BF2C ; =SWAP_SHOP_CLUMSET_ONE_STAR_STR - b _0230BEEC -_0230BED8: - ldr r1, _0230BF30 ; =SWAP_SHOP_CLUMSET_TWO_STAR_STR - b _0230BEEC -_0230BEE0: - ldr r1, _0230BF34 ; =SWAP_SHOP_CLUMSET_THREE_STAR_STR - b _0230BEEC -_0230BEE8: - mov r1, #0 -_0230BEEC: - mov r0, r6 - bl strcat - ldr r1, _0230BF28 ; =SWAP_SHOP_INVENTORY_PTRS - mov r0, #6 - ldr r1, [r1, #4] - mla r0, r5, r0, r1 - add r0, r0, #0x1000 - ldrb r0, [r0, #0x4ea] - cmp r0, #0 - movne r1, #1 - moveq r1, #0 - mov r0, r6 - str r1, [r4] -_0230BF20: - add sp, sp, #8 - ldmia sp!, {r4, r5, r6, pc} - .align 2, 0 -_0230BF28: .word SWAP_SHOP_INVENTORY_PTRS -_0230BF2C: .word SWAP_SHOP_CLUMSET_ONE_STAR_STR -_0230BF30: .word SWAP_SHOP_CLUMSET_TWO_STAR_STR -_0230BF34: .word SWAP_SHOP_CLUMSET_THREE_STAR_STR - arm_func_end ov11_0230BE34 - - arm_func_start ov11_0230BF38 -ov11_0230BF38: ; 0x0230BF38 - stmdb sp!, {r3, lr} - ldr r3, _0230BF8C ; =SWAP_SHOP_INVENTORY_PTRS - mov r2, r2, lsl #0x10 - ldr ip, [r3, #4] - mov r3, r2, lsr #0x10 - mov r2, #6 - mla r2, r3, r2, ip - add r2, r2, #0x1400 - ldrh r2, [r2, #0xe6] - mov r3, r0 - cmp r2, #2 - ldreq r0, _0230BF90 ; =0x0000032F - streqh r0, [r1, #0x1c] - beq _0230BF7C - cmp r2, #3 - ldreq r0, _0230BF94 ; =0x00004623 - streqh r0, [r1, #0x1c] -_0230BF7C: - mov r0, r1 - mov r1, r3 - bl sub_0202A03C - ldmia sp!, {r3, pc} - .align 2, 0 -_0230BF8C: .word SWAP_SHOP_INVENTORY_PTRS -#if defined(EUROPE) -_0230BF90: .word 0x0000032F -_0230BF94: .word 0x00004642 -#elif defined(JAPAN) -_0230BF90: .word 0x000031F4 -_0230BF94: .word 0x00001CDF -#else -_0230BF90: .word 0x0000032F -_0230BF94: .word 0x00004623 -#endif - arm_func_end ov11_0230BF38 - - arm_func_start ov11_0230BF98 -ov11_0230BF98: ; 0x0230BF98 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r4, #0 - ldr r3, _0230C048 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r2, _0230C04C ; =0x0000042C - mov r0, r4 -_0230BFAC: - ldr r1, [r3, #4] - add r1, r1, r4, lsl #2 - str r0, [r1, #8] - ldr r1, [r3, #4] - add r1, r1, r4 - add r1, r1, #0x1000 - add r4, r4, #1 - strb r0, [r1, #0xb8] - cmp r4, r2 - blt _0230BFAC - ldr r2, _0230C048 ; =SWAP_SHOP_INVENTORY_PTRS - mov r5, #0 -_0230BFDC: - ldr r1, [r2, #4] - add r1, r1, r0, lsl #1 - add r1, r1, #0x3e00 - strh r5, [r1, #0x16] - ldr r1, [r2, #4] - add r1, r1, r0, lsl #1 - add r1, r1, #0x3600 - add r0, r0, #1 - strh r5, [r1, #0x46] - cmp r0, #0x3e8 - blt _0230BFDC - ldr r7, _0230C048 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r6, _0230C04C ; =0x0000042C - mov r4, #0 -_0230C014: - ldr r1, [r7, #4] - mov r0, r5, lsl #0x10 - add r1, r1, r5, lsl #1 - add r3, r1, #0x2d00 - mov r1, r4 - mov r2, r4 - mov r0, r0, lsr #0x10 - strh r4, [r3, #0xee] - bl ov11_0230C924 - add r5, r5, #1 - cmp r5, r6 - blt _0230C014 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0230C048: .word SWAP_SHOP_INVENTORY_PTRS -_0230C04C: .word 0x0000042C - arm_func_end ov11_0230BF98 - - arm_func_start ov11_0230C050 -ov11_0230C050: ; 0x0230C050 - ldr ip, _0230C064 ; =ov11_0230C1D0 - mov r2, r1 - mov r1, r0 - mov r0, #0 - bx ip - .align 2, 0 -_0230C064: .word ov11_0230C1D0 - arm_func_end ov11_0230C050 - - arm_func_start ov11_0230C068 -ov11_0230C068: ; 0x0230C068 - cmp r0, #0x1bc - blt _0230C080 - ldr r1, _0230C0FC ; =0x000001C3 - cmp r0, r1 - movle r0, #3 - bxle lr -_0230C080: - cmp r0, #0x1c4 - blt _0230C098 - ldr r1, _0230C100 ; =0x000001C7 - cmp r0, r1 - movle r0, #3 - bxle lr -_0230C098: - cmp r0, #0x1c8 - blt _0230C0B0 - ldr r1, _0230C104 ; =0x000001D7 - cmp r0, r1 - movle r0, #3 - bxle lr -_0230C0B0: - cmp r0, #0x1d8 - blt _0230C0C8 - ldr r1, _0230C108 ; =0x000001F9 - cmp r0, r1 - movle r0, #3 - bxle lr -_0230C0C8: - ldr r1, _0230C10C ; =0x000003F6 - cmp r0, r1 - blt _0230C0E4 - ldr r1, _0230C110 ; =0x00000547 - cmp r0, r1 - movle r0, #3 - bxle lr -_0230C0E4: - ldr r1, _0230C114 ; =0xFFFFFE06 - add r0, r0, r1 - mov r1, r0, lsr #0x1f - rsb r0, r1, r0, lsl #30 - add r0, r1, r0, ror #30 - bx lr - .align 2, 0 -_0230C0FC: .word 0x000001C3 -_0230C100: .word 0x000001C7 -_0230C104: .word 0x000001D7 -_0230C108: .word 0x000001F9 -_0230C10C: .word 0x000003F6 -_0230C110: .word 0x00000547 -_0230C114: .word 0xFFFFFE06 - arm_func_end ov11_0230C068 - - arm_func_start ov11_0230C118 -ov11_0230C118: ; 0x0230C118 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r6, _0230C1CC ; =SWAP_SHOP_INVENTORY_PTRS - mov lr, #0 - ldr r7, [r6, #4] - mov r4, lr - add r6, r7, #0xe6 - add ip, r6, #0x1400 - add r6, r7, #0x4600 - mov r5, lr - mov r7, #6 - b _0230C1AC -_0230C144: - mla sb, r5, r7, ip - ldrb r8, [sb, #4] - cmp r8, #0 - beq _0230C1A8 - ldrh r8, [sb] - cmp r8, #2 - beq _0230C16C - cmp r8, #3 - beq _0230C18C - b _0230C1A8 -_0230C16C: - cmp r1, #0 - ldrneh sb, [sb, #2] - movne r8, lr, lsl #1 - strneh sb, [r1, r8] - add r8, lr, #1 - mov lr, r8, lsl #0x10 - mov lr, lr, lsr #0x10 - b _0230C1A8 -_0230C18C: - cmp r3, #0 - movne r8, r4, lsl #1 - ldrneh sb, [sb, #2] - add r4, r4, #1 - mov r4, r4, lsl #0x10 - strneh sb, [r3, r8] - mov r4, r4, lsr #0x10 -_0230C1A8: - add r5, r5, #1 -_0230C1AC: - ldrh r8, [r6, #0x26] - cmp r5, r8 - blt _0230C144 - cmp r0, #0 - strneh lr, [r0] - cmp r2, #0 - strneh r4, [r2] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0230C1CC: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230C118 - - arm_func_start ov11_0230C1D0 -ov11_0230C1D0: ; 0x0230C1D0 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl GetCurrentBagCapacity - mov fp, r0 - bl sub_0200FD48 - mov r8, #0 - mov r7, r0 - mov sb, r8 - mov sl, r8 - cmp r5, #0 - beq _0230C288 - b _0230C278 -_0230C208: - ldr r0, _0230C3C4 ; =BAG_ITEMS_PTR_MIRROR - ldr r1, [r0] - mov r0, #6 - mul r0, sl, r0 - ldr r1, [r1, #0x384] - add r2, r1, r0 - ldrb r0, [r1, r0] - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0230C274 - ldrsh r1, [r2, #4] - cmp r1, #0x1bc - blt _0230C274 - ldr r0, _0230C3C8 ; =0x00000547 - cmp r1, r0 - bgt _0230C274 - cmp r6, #0 - beq _0230C270 - mov r0, r8, lsl #0x10 - mov r2, sl, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #2 - mov r2, r2, lsr #0x10 - bl ov11_0230C924 -_0230C270: - add r8, r8, #1 -_0230C274: - add sl, sl, #1 -_0230C278: - cmp sl, fp - blt _0230C208 - mov sl, r8 - strh r8, [r5] -_0230C288: - cmp r4, #0 - beq _0230C3BC - ldr r0, _0230C3C4 ; =BAG_ITEMS_PTR_MIRROR - mov r5, #0 - ldr r2, [r0] - ldr r0, _0230C3C8 ; =0x00000547 - b _0230C2CC -_0230C2A4: - add r1, r2, r5, lsl #1 - add r1, r1, #0x300 - ldrsh r1, [r1, #0x8a] - cmp r1, #0 - beq _0230C2D4 - cmp r1, #0x1bc - blt _0230C2C8 - cmp r1, r0 - ble _0230C2D4 -_0230C2C8: - add r5, r5, #1 -_0230C2CC: - cmp r5, r7 - blt _0230C2A4 -_0230C2D4: - cmp r5, r7 - bge _0230C31C - add r0, r2, r5, lsl #1 - add r0, r0, #0x300 - ldrsh r0, [r0, #0x8a] - cmp r0, #0 - beq _0230C31C - tst r8, #7 - cmpne r6, #0 - beq _0230C31C - mov r0, r8, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #4 - mov r2, #0 - bl ov11_0230C924 - add r8, r8, #1 - add r0, r8, #7 - bic sl, r0, #7 -_0230C31C: - ldr fp, _0230C3C4 ; =BAG_ITEMS_PTR_MIRROR - b _0230C37C -_0230C324: - ldr r0, [fp] - add r0, r0, r5, lsl #1 - add r0, r0, #0x300 - ldrsh r1, [r0, #0x8a] - cmp r1, #0 - beq _0230C384 - cmp r1, #0x1bc - blt _0230C378 - ldr r0, _0230C3C8 ; =0x00000547 - cmp r1, r0 - bgt _0230C378 - cmp r6, #0 - beq _0230C374 - add r0, sl, sb - mov r0, r0, lsl #0x10 - mov r2, r5, lsl #0x10 - mov r1, #3 - mov r0, r0, lsr #0x10 - mov r2, r2, lsr #0x10 - bl ov11_0230C924 -_0230C374: - add sb, sb, #1 -_0230C378: - add r5, r5, #1 -_0230C37C: - cmp r5, r7 - blt _0230C324 -_0230C384: - strh sb, [r4] - cmp r8, #0 - ble _0230C3B8 - tst sb, #7 - cmpne r6, #0 - beq _0230C3B8 - add r0, sl, sb - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #4 - mov r2, #0 - bl ov11_0230C924 - add sb, sb, #1 -_0230C3B8: - add sl, sl, sb -_0230C3BC: - mov r0, sl - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230C3C4: .word BAG_ITEMS_PTR_MIRROR -_0230C3C8: .word 0x00000547 - arm_func_end ov11_0230C1D0 - - arm_func_start ov11_0230C3CC -ov11_0230C3CC: ; 0x0230C3CC - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bl GetCurrentBagCapacity - mov r7, r0 - bl sub_0200FD48 - mov sb, #0 - mov r8, r0 - mov sl, sb - mov fp, #1 - ldr r6, _0230C4C8 ; =BAG_ITEMS_PTR_MIRROR - mov r5, #6 - ldr r4, _0230C4CC ; =0x000003F5 - b _0230C450 -_0230C3FC: - mul r1, sl, r5 - ldr r0, [r6] - ldr r2, [r0, #0x384] - ldrb r0, [r2, r1] - add r1, r2, r1 - tst r0, #1 - movne r0, fp - moveq r0, #0 - tst r0, #0xff - beq _0230C44C - ldrsh r0, [r1, #4] - cmp r0, r4, lsr #1 - blt _0230C44C - cmp r0, r4 - bgt _0230C44C - ldrh r1, [r1, #2] - mov r2, sb - bl ov11_0230C5A0 - cmp r0, #0 - addne sb, sb, #1 -_0230C44C: - add sl, sl, #1 -_0230C450: - cmp sl, r7 - blt _0230C3FC - mov r4, #0 - ldr r6, _0230C4C8 ; =BAG_ITEMS_PTR_MIRROR - ldr r5, _0230C4CC ; =0x000003F5 - b _0230C4AC -_0230C468: - ldr r0, [r6] - add r1, r0, r4, lsl #1 - add r0, r1, #0x300 - ldrsh r0, [r0, #0x8a] - cmp r0, #0 - beq _0230C4B4 - cmp r0, r5, lsr #1 - blt _0230C4A8 - cmp r0, r5 - bgt _0230C4A8 - add r1, r1, #0xb00 - ldrh r1, [r1, #0x5a] - mov r2, sb - bl ov11_0230C5A0 - cmp r0, #0 - addne sb, sb, #1 -_0230C4A8: - add r4, r4, #1 -_0230C4AC: - cmp r4, r8 - blt _0230C468 -_0230C4B4: - ldr r0, _0230C4D0 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - add r0, r0, #0x4600 - strh sb, [r0, #0x28] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230C4C8: .word BAG_ITEMS_PTR_MIRROR -_0230C4CC: .word 0x000003F5 -_0230C4D0: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230C3CC - - arm_func_start ov11_0230C4D4 -ov11_0230C4D4: ; 0x0230C4D4 - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} - bl GetCurrentBagCapacity - mov r8, #0 - mov r7, r0 - mov sb, r8 - mov r4, #6 - ldr r6, _0230C594 ; =BAG_ITEMS_PTR_MIRROR - ldr r5, _0230C598 ; =SWAP_SHOP_INVENTORY_PTRS - ldr fp, _0230C59C ; =0x0000018F - b _0230C578 -_0230C4FC: - mul sl, sb, r4 - ldr r0, [r6] - ldr r1, [r0, #0x384] - ldrb r0, [r1, sl] - add r1, r1, sl - tst r0, #1 - movne r0, #1 - moveq r0, #0 - tst r0, #0xff - beq _0230C574 - ldrsh r0, [r1, #4] - cmp r0, #0x16c - blt _0230C574 - cmp r0, fp - bgt _0230C574 - mov r0, r8, lsl #0x10 - mov r2, sb, lsl #0x10 - mov r1, #2 - mov r0, r0, lsr #0x10 - mov r2, r2, lsr #0x10 - bl ov11_0230C924 - ldr r1, [r6] - ldr r0, [r5, #4] - ldr r1, [r1, #0x384] - add r0, r0, r8, lsl #1 - add r1, r1, sl - ldrh r1, [r1, #2] - add r0, r0, #0x2d00 - add r8, r8, #1 - strh r1, [r0, #0xee] -_0230C574: - add sb, sb, #1 -_0230C578: - cmp sb, r7 - blt _0230C4FC - ldr r0, _0230C598 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - add r0, r0, #0x4600 - strh r8, [r0, #0x26] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} - .align 2, 0 -_0230C594: .word BAG_ITEMS_PTR_MIRROR -_0230C598: .word SWAP_SHOP_INVENTORY_PTRS -_0230C59C: .word 0x0000018F - arm_func_end ov11_0230C4D4 - - arm_func_start ov11_0230C5A0 -ov11_0230C5A0: ; 0x0230C5A0 - stmdb sp!, {r4, lr} - cmp r2, #0 - beq _0230C5EC - ldr r3, _0230C618 ; =SWAP_SHOP_INVENTORY_PTRS - mov lr, #0 - ldr r4, [r3, #4] - b _0230C5E4 -_0230C5BC: - add ip, r4, lr, lsl #1 - add r3, ip, #0x3600 - ldrh r3, [r3, #0x46] - cmp r0, r3 - addeq r3, ip, #0x3e00 - ldreqh r3, [r3, #0x16] - cmpeq r1, r3 - moveq r0, #0 - ldmeqia sp!, {r4, pc} - add lr, lr, #1 -_0230C5E4: - cmp lr, r2 - blt _0230C5BC -_0230C5EC: - ldr ip, _0230C618 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r3, [ip, #4] - add r3, r3, r2, lsl #1 - add r3, r3, #0x3600 - strh r0, [r3, #0x46] - ldr r3, [ip, #4] - mov r0, #1 - add r2, r3, r2, lsl #1 - add r2, r2, #0x3e00 - strh r1, [r2, #0x16] - ldmia sp!, {r4, pc} - .align 2, 0 -_0230C618: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230C5A0 - - arm_func_start ov11_0230C61C -ov11_0230C61C: ; 0x0230C61C - stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} - ldr r4, _0230C8DC ; =0x000001FA - mov r5, #0 -_0230C628: - ldr r0, _0230C8E0 ; =SWAP_SHOP_INVENTORY_PTRS - ldr lr, [r0, #4] - add r0, lr, #0x4600 - ldrh ip, [r0, #0x28] - cmp ip, #0 - moveq r0, #0 - beq _0230C6C0 - mov r0, r4, lsl #0x10 - mov r3, #0 - mov r2, r0, asr #0x10 - add r1, r2, #1 - add r0, r2, #2 - mov r7, r3 - mov r8, r3 - mov sb, r3 - b _0230C698 -_0230C668: - add r6, lr, r3, lsl #1 - add r6, r6, #0x3600 - ldrh r6, [r6, #0x46] - cmp r2, r6 - moveq r2, sb - beq _0230C694 - cmp r1, r6 - moveq r1, r8 - beq _0230C694 - cmp r0, r6 - moveq r0, r7 -_0230C694: - add r3, r3, #1 -_0230C698: - cmp r3, ip - blt _0230C668 - cmp r2, #0 - cmpeq r1, #0 - bne _0230C6BC - cmp r0, #0 - moveq r0, #2 - movne r0, #1 - b _0230C6C0 -_0230C6BC: - mov r0, #0 -_0230C6C0: - cmp r0, #1 - beq _0230C834 - cmp r0, #2 - bne _0230C86C - add r0, lr, r5, lsl #1 - ldr r2, _0230C8E4 ; =0x000002FE - add r0, r0, #0x2d00 - mov r1, #0 - strh r1, [r0, #0xee] - cmp r4, r2 - bne _0230C7AC - mov r0, r5, lsl #0x10 - ldr r2, _0230C8E8 ; =0x000001BD - mov r0, r0, lsr #0x10 - bl ov11_0230C924 - add r0, r5, #1 - mov r0, r0, lsl #0x10 - ldr r2, _0230C8EC ; =0x000001BE - mov r0, r0, lsr #0x10 - mov r1, #0 - bl ov11_0230C924 - add r0, r5, #2 - mov r0, r0, lsl #0x10 - ldr r2, _0230C8F0 ; =0x000001BF - mov r0, r0, lsr #0x10 - mov r1, #0 - bl ov11_0230C924 - add r0, r5, #3 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0 - mov r2, #0x1c0 - bl ov11_0230C924 - add r0, r5, #4 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0 - ldr r2, _0230C8F4 ; =0x000001C1 - bl ov11_0230C924 - add r0, r5, #5 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0 - ldr r2, _0230C8F8 ; =0x000001C2 - bl ov11_0230C924 - add r0, r5, #6 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0 - ldr r2, _0230C8FC ; =0x000001C3 - bl ov11_0230C924 - add r0, r5, #7 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - add r5, r5, #8 - mov r1, #0 - mov r2, #0x1bc - bl ov11_0230C924 - b _0230C834 -_0230C7AC: - add r0, r2, #0x38 - cmp r4, r0 - bne _0230C818 - mov r0, r5, lsl #0x10 - ldr r2, _0230C900 ; =0x000001C5 - mov r0, r0, lsr #0x10 - bl ov11_0230C924 - add r0, r5, #1 - mov r0, r0, lsl #0x10 - ldr r2, _0230C904 ; =0x000001C6 - mov r0, r0, lsr #0x10 - mov r1, #0 - bl ov11_0230C924 - add r0, r5, #2 - mov r0, r0, lsl #0x10 - ldr r2, _0230C908 ; =0x000001C7 - mov r0, r0, lsr #0x10 - mov r1, #0 - bl ov11_0230C924 - add r0, r5, #3 - mov r0, r0, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r1, #0 - mov r2, #0x1c4 - add r5, r5, #4 - bl ov11_0230C924 - b _0230C834 -_0230C818: - add r2, r4, #3 - mov r0, r5, lsl #0x10 - mov r2, r2, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r2, r2, lsr #0x10 - add r5, r5, #1 - bl ov11_0230C924 -_0230C834: - add r1, r4, #2 - mov r0, r5, lsl #0x10 - mov r1, r1, lsl #0x10 - mov r0, r0, lsr #0x10 - mov r2, r1, lsr #0x10 - mov r1, #0 - bl ov11_0230C924 - ldr r0, _0230C8E0 ; =SWAP_SHOP_INVENTORY_PTRS - mov r1, #0 - ldr r0, [r0, #4] - add r0, r0, r5, lsl #1 - add r0, r0, #0x2d00 - strh r1, [r0, #0xee] - add r5, r5, #1 -_0230C86C: - ldr r0, _0230C90C ; =0x000003F6 - add r4, r4, #4 - cmp r4, r0 - blt _0230C628 - ldr r0, _0230C8E0 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - add r0, r0, #0xe6 - add r0, r0, #0x4500 - bl GetCroagunkItemTemplates - mov r6, r0 - mov r7, #0 - mov r4, #1 - b _0230C8C0 -_0230C8A0: - mov r0, r5, lsl #0x10 - mov r2, r7, lsl #0x10 - mov r1, r4 - mov r0, r0, lsr #0x10 - mov r2, r2, lsr #0x10 - add r5, r5, #1 - bl ov11_0230C924 - add r7, r7, #1 -_0230C8C0: - cmp r7, r6 - blt _0230C8A0 - ldr r0, _0230C8E0 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r0, [r0, #4] - add r0, r0, #0x4600 - strh r5, [r0, #0x26] - ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} - .align 2, 0 -_0230C8DC: .word 0x000001FA -_0230C8E0: .word SWAP_SHOP_INVENTORY_PTRS -_0230C8E4: .word 0x000002FE -_0230C8E8: .word 0x000001BD -_0230C8EC: .word 0x000001BE -_0230C8F0: .word 0x000001BF -_0230C8F4: .word 0x000001C1 -_0230C8F8: .word 0x000001C2 -_0230C8FC: .word 0x000001C3 -_0230C900: .word 0x000001C5 -_0230C904: .word 0x000001C6 -_0230C908: .word 0x000001C7 -_0230C90C: .word 0x000003F6 - arm_func_end ov11_0230C61C - - arm_func_start ov11_0230C910 -ov11_0230C910: ; 0x0230C910 - ldr r0, _0230C920 ; =SWAP_SHOP_INVENTORY_PTRS - mov r1, #0 - strh r1, [r0] - bx lr - .align 2, 0 -_0230C920: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230C910 - - arm_func_start ov11_0230C924 -ov11_0230C924: ; 0x0230C924 - stmdb sp!, {r3, lr} - mov r3, #6 - mul lr, r0, r3 - ldr r3, _0230C96C ; =SWAP_SHOP_INVENTORY_PTRS - mov ip, #0 - ldr r0, [r3, #4] - add r0, r0, lr - add r0, r0, #0x1400 - strh r1, [r0, #0xe6] - ldr r0, [r3, #4] - add r0, r0, lr - add r0, r0, #0x1400 - strh r2, [r0, #0xe8] - ldr r0, [r3, #4] - add r0, r0, lr - add r0, r0, #0x1000 - strb ip, [r0, #0x4ea] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230C96C: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230C924 - - arm_func_start ov11_0230C970 -ov11_0230C970: ; 0x0230C970 - stmdb sp!, {r3, lr} - mov r1, #6 - ldr r2, _0230C9E8 ; =SWAP_SHOP_INVENTORY_PTRS - mul r1, r0, r1 - ldr r3, [r2, #4] - add r0, r3, #0xe6 - add r2, r0, #0x1400 - ldrh r0, [r2, r1] - add r1, r2, r1 - cmp r0, #1 - beq _0230C9B0 - cmp r0, #2 - beq _0230C9C4 - cmp r0, #3 - beq _0230C9D4 - b _0230C9E0 -_0230C9B0: - ldrh r0, [r1, #2] - add r0, r3, r0, lsl #3 - add r0, r0, #0x4500 - ldrsh r0, [r0, #0xe6] - ldmia sp!, {r3, pc} -_0230C9C4: - ldrsh r0, [r1, #2] - bl GetItemAtIdx - ldrsh r0, [r0, #4] - ldmia sp!, {r3, pc} -_0230C9D4: - ldrsh r0, [r1, #2] - bl sub_02010044 - ldmia sp!, {r3, pc} -_0230C9E0: - ldrsh r0, [r1, #2] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230C9E8: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230C970 - - arm_func_start ov11_0230C9EC -ov11_0230C9EC: ; 0x0230C9EC - cmp r0, #4 - moveq r0, #4 - bx lr - arm_func_end ov11_0230C9EC - - arm_func_start ov11_0230C9F8 -ov11_0230C9F8: ; 0x0230C9F8 - stmdb sp!, {r3, lr} - ldr r0, _0230CA2C ; =SWAP_SHOP_INVENTORY_PTRS - ldr r1, [r0, #4] - add r0, r1, #0x4000 - ldr r0, [r0, #0x6cc] - cmp r0, #0 - ldmneia sp!, {r3, pc} - add r0, r1, #0x2cc - ldr r1, _0230CA30 ; =ov11_02322FF4 - ldr r2, _0230CA34 ; =ov11_0230CA7C - add r0, r0, #0x4400 - bl sub_0204707C - ldmia sp!, {r3, pc} - .align 2, 0 -_0230CA2C: .word SWAP_SHOP_INVENTORY_PTRS -_0230CA30: .word ov11_02322FF4 -_0230CA34: .word ov11_0230CA7C - arm_func_end ov11_0230C9F8 - - arm_func_start ov11_0230CA38 -ov11_0230CA38: ; 0x0230CA38 - stmdb sp!, {r3, lr} - ldr r0, _0230CA78 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r1, [r0, #4] - add r0, r1, #0x4000 - ldr r0, [r0, #0x6cc] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r1, #0x2cc - add r0, r0, #0x4400 - bl sub_02047150 - ldr r0, _0230CA78 ; =SWAP_SHOP_INVENTORY_PTRS - mov r1, #0 - ldr r0, [r0, #4] - add r0, r0, #0x4000 - str r1, [r0, #0x6cc] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230CA78: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230CA38 - - arm_func_start ov11_0230CA7C -ov11_0230CA7C: ; 0x0230CA7C - stmdb sp!, {r4, lr} - ldr r3, _0230CAA0 ; =0x000003A9 - mov r4, r0 - mov r1, #6 - mov r2, #2 - bl AppendStandardStringToMission - mov r0, r4 - bl UpdateWindow - ldmia sp!, {r4, pc} - .align 2, 0 -#ifdef JAPAN -_0230CAA0: .word 0x000032B3 -#else -_0230CAA0: .word 0x000003A9 -#endif - arm_func_end ov11_0230CA7C - - arm_func_start ov11_0230CAA4 -ov11_0230CAA4: ; 0x0230CAA4 - stmdb sp!, {r3, lr} - ldr r0, _0230CAD8 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r1, [r0, #4] - add r0, r1, #0x4000 - ldr r0, [r0, #0x6c8] - cmp r0, #0 - ldmneia sp!, {r3, pc} - add r0, r1, #0x2c8 - ldr r1, _0230CADC ; =ov11_02322FD4 - ldr r2, _0230CAE0 ; =ov11_0230CB28 - add r0, r0, #0x4400 - bl sub_0204707C - ldmia sp!, {r3, pc} - .align 2, 0 -_0230CAD8: .word SWAP_SHOP_INVENTORY_PTRS -_0230CADC: .word ov11_02322FD4 -_0230CAE0: .word ov11_0230CB28 - arm_func_end ov11_0230CAA4 - - arm_func_start ov11_0230CAE4 -ov11_0230CAE4: ; 0x0230CAE4 - stmdb sp!, {r3, lr} - ldr r0, _0230CB24 ; =SWAP_SHOP_INVENTORY_PTRS - ldr r1, [r0, #4] - add r0, r1, #0x4000 - ldr r0, [r0, #0x6c8] - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r0, r1, #0x2c8 - add r0, r0, #0x4400 - bl sub_02047150 - ldr r0, _0230CB24 ; =SWAP_SHOP_INVENTORY_PTRS - mov r1, #0 - ldr r0, [r0, #4] - add r0, r0, #0x4000 - str r1, [r0, #0x6c8] - ldmia sp!, {r3, pc} - .align 2, 0 -_0230CB24: .word SWAP_SHOP_INVENTORY_PTRS - arm_func_end ov11_0230CAE4 - - arm_func_start ov11_0230CB28 -ov11_0230CB28: ; 0x0230CB28 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #0x54 - mov r4, r0 - add r0, sp, #4 - bl InitPreprocessorArgs - bl ov11_0230B874 - ldr r1, _0230CB84 ; =SWAP_SHOP_INVENTORY_PTRS - str r0, [sp, #0x28] - ldr r0, [r1, #4] -#ifdef JAPAN - add r2, sp, #4 - add r0, r0, #0x4600 - ldrh r1, [r0, #0x28] - ldr r3, _0230E130 ; =0x000032B4 - mov r0, r4 - str r1, [sp, #0x2c] - str r2, [sp] - mov r1, #6 - mov r2, #2 -#else - mov r2, #2 - add r0, r0, #0x4600 - ldrh r3, [r0, #0x28] - add r1, sp, #4 - mov r0, r4 - str r3, [sp, #0x2c] - str r1, [sp] - add r3, r2, #0x3a8 - mov r1, #6 -#endif - bl sub_020262E0 - mov r0, r4 - bl UpdateWindow - add sp, sp, #0x54 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_0230CB84: .word SWAP_SHOP_INVENTORY_PTRS -#ifdef JAPAN -_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_022FAC54.s b/asm/overlay_11_022FAC54.s new file mode 100644 index 00000000..aa2c3adf --- /dev/null +++ b/asm/overlay_11_022FAC54.s @@ -0,0 +1,2753 @@ + .include "asm/macros.inc" + .include "overlay_11_022FAC54.inc" + + .text + + arm_func_start SetBlinkLiveActor +SetBlinkLiveActor: ; 0x022FAC54 + ldr ip, _022FAC60 ; =ov11_022F4984 + add r0, r0, #0x18c + bx ip + .align 2, 0 +_022FAC60: .word ov11_022F4984 + arm_func_end SetBlinkLiveActor + + arm_func_start SetPositionOffsetLiveActor +SetPositionOffsetLiveActor: ; 0x022FAC64 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + ldr r2, _022FAE54 ; =ov11_02321684 + mov r5, r0 + ldr r0, [r2, #0xd4] + ldr r3, [r2, #0xd0] + str r0, [sp, #4] + str r3, [sp] + ldr r4, [r5, #0x15c] + ldr r3, [r1] + add r0, r5, #0x38 + add r3, r4, r3 + str r3, [sp] + ldr r4, [r5, #0x160] + ldr r3, [r1, #4] + add r3, r4, r3 + str r3, [sp, #4] + ldr r3, [r2, #0xc8] + ldr r2, [r2, #0xcc] + str r3, [sp, #8] + str r2, [sp, #0xc] + ldr r3, [r5, #0x164] + ldr r2, [r1] + add r2, r3, r2 + str r2, [sp, #8] + ldr r2, [r5, #0x168] + ldr r1, [r1, #4] + add r1, r2, r1 + str r1, [sp, #0xc] + bl ov11_022DC958 + cmp r0, #0 + bne _022FAE0C + ldr r1, [r5, #0x28] + ldr r0, [sp] + mov r4, #0 + cmp r0, r1 + bge _022FAD14 + str r1, [sp] + ldr r1, [r5, #0x28] + ldr r0, [r5, #0xc] + mov r4, #1 + add r0, r1, r0 + str r0, [sp, #8] + b _022FAD3C +_022FAD14: + ldr r1, [r5, #0x30] + ldr r0, [sp, #8] + cmp r0, r1 + blt _022FAD3C + ldr r0, [r5, #0xc] + mov r4, #1 + sub r0, r1, r0 + str r0, [sp] + ldr r0, [r5, #0x30] + str r0, [sp, #8] +_022FAD3C: + ldr r1, [r5, #0x2c] + ldr r0, [sp, #4] + cmp r0, r1 + bge _022FAD68 + str r1, [sp, #4] + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x10] + mov r4, #1 + add r0, r1, r0 + str r0, [sp, #0xc] + b _022FAD90 +_022FAD68: + ldr r1, [r5, #0x34] + ldr r0, [sp, #0xc] + cmp r0, r1 + blt _022FAD90 + ldr r0, [r5, #0x10] + mov r4, #1 + sub r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r5, #0x34] + str r0, [sp, #0xc] +_022FAD90: + add r1, sp, #0 + add r2, sp, #8 + mov r0, r5 + bl ov11_022F921C + movs r6, r0 + beq _022FADC4 + ldr r0, [r5, #0x128] + tst r0, #0x20 + beq _022FAE48 + ldrsh r0, [r5] + mov r1, #0x1000000 + bl SetAttributeBitfieldLiveActor + b _022FAE48 +_022FADC4: + ldr r1, [sp] + ldr r0, [sp, #4] + cmp r4, #0 + str r1, [r5, #0x15c] + str r0, [r5, #0x160] + ldr r1, [sp, #8] + ldr r0, [sp, #0xc] + str r1, [r5, #0x164] + str r0, [r5, #0x168] + beq _022FAE2C + ldr r0, [r5, #0x128] + tst r0, #0x20 + beq _022FAE04 + ldrsh r0, [r5] + mov r1, #0x1000000 + bl SetAttributeBitfieldLiveActor +_022FAE04: + mov r6, #0x40 + b _022FAE48 +_022FAE0C: + ldr r1, [sp] + ldr r0, [sp, #4] + str r1, [r5, #0x15c] + str r0, [r5, #0x160] + ldr r1, [sp, #8] + ldr r0, [sp, #0xc] + str r1, [r5, #0x164] + str r0, [r5, #0x168] +_022FAE2C: + ldr r0, [r5, #0x128] + tst r0, #0x20 + beq _022FAE44 + ldrsh r0, [r5] + mov r1, #0x1000000 + bl SetAttributeBitfieldLiveActor +_022FAE44: + mov r6, #0 +_022FAE48: + mov r0, r6 + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FAE54: .word ov11_02321684 + arm_func_end SetPositionOffsetLiveActor + + arm_func_start ov11_022FAE58 +ov11_022FAE58: ; 0x022FAE58 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x9c + ldr r1, _022FBA18 ; =ov11_02324CF8 + mvn r2, #0 + ldmia r1, {r0, r5} + add r0, r0, #0x300 + strh r2, [r0, #0x28] + ldr r0, [r1] + mov r4, #0 + ldr fp, _022FBA1C ; =ov11_02321684 + str r4, [r0, #0x32c] + ldr sl, [fp, #0xb8] + ldr sb, [fp, #0xbc] + ldr r8, [fp, #8] + ldr r7, [fp, #0xc] + ldr r6, [fp, #0x150] + ldr r3, [fp, #0x154] + ldr r2, [fp, #0xb0] + ldr r1, [fp, #0xb4] + ldr r0, [fp, #0x158] + ldr fp, [fp, #0x15c] + str sl, [sp, #0x2c] + str sb, [sp, #0x30] + str r8, [sp, #0x24] + str r7, [sp, #0x28] + str r6, [sp, #0x1c] + str r3, [sp, #0x20] + str r2, [sp, #0x14] + str r1, [sp, #0x18] + str r0, [sp, #0xc] + str fp, [sp, #0x10] +_022FAED4: + ldrsh r1, [r5, #2] + mvn r0, #0 + cmp r1, r0 + ldrneb r0, [r5, #4] + cmpne r0, #0 + beq _022FB894 + add r0, r5, #0x38 + bl FuncThatCallsRunNextOpcode + cmp r0, #0 + beq _022FAF24 + mov r1, #1 + strb r1, [r5, #0x152] + strb r1, [r5, #0x156] + mov r1, #0 + str r1, [r5, #0x14c] + cmp r0, #6 + bne _022FB864 + mov r0, r4 + bl DeleteLiveActor + b _022FB894 +_022FAF24: + ldrsh r1, [r5, #6] + mvn r0, #0 + cmp r1, r0 + bne _022FAF4C + mov r0, #1 + strb r0, [r5, #0x152] + strb r0, [r5, #0x156] + mov r0, #0 + str r0, [r5, #0x14c] + b _022FB864 +_022FAF4C: + ldr r1, [r5, #0x128] + tst r1, #1 + beq _022FB39C + mov r1, #0 + str r1, [sp, #0x98] + strb r0, [sp, #8] + str r1, [sp, #0x94] + bl ov11_022F9074 + cmp r0, #0 + moveq r0, #1 + streqb r0, [r5, #0x152] + streqb r0, [r5, #0x156] + beq _022FAFA0 + ldrb r0, [r5, #0x156] + cmp r0, #0 + beq _022FAFA0 + bl sub_02006DC8 + add r0, r5, #0x12c + bl ov11_022EAF60 + mov r0, #0 + strb r0, [r5, #0x156] +_022FAFA0: + ldr r2, _022FBA18 ; =ov11_02324CF8 + add r3, sp, #0x8c + ldr r0, [r2] + add r1, sp, #0x98 + add r0, r0, #0x300 + strh r4, [r0, #0x28] + ldr r0, [r2] + add r2, sp, #8 + str r5, [r0, #0x32c] + str r3, [sp] + ldr r6, [r5, #0x128] + add r3, sp, #0x94 + add r0, r5, #0x12c + str r6, [sp, #4] + bl ov11_022EAA24 + cmp r0, #8 + addls pc, pc, r0, lsl #2 + b _022FB864 +_022FAFE8: ; jump table + b _022FB864 ; case 0 + b _022FB00C ; case 1 + b _022FB090 ; case 2 + b _022FB108 ; case 3 + b _022FB270 ; case 4 + b _022FB864 ; case 5 + b _022FB068 ; case 6 + b _022FB864 ; case 7 + b _022FB068 ; case 8 +_022FB00C: + ldr r0, [sp, #0x98] + cmp r0, #0 + beq _022FB024 + sub r0, r0, #3 + cmp r0, #2 + bhi _022FB040 +_022FB024: + ldrsb r1, [sp, #8] + mvn r0, #0 + cmp r1, r0 + beq _022FB048 + add r0, r5, #0x12c + bl ov11_022EAF60 + b _022FB048 +_022FB040: + add r0, r5, #0x12c + bl ov11_022EAF60 +_022FB048: + ldr r1, [sp, #0x94] + mov r0, r5 + str r1, [sp] + ldrsb r2, [sp, #8] + ldr r1, [sp, #0x98] + mov r3, #1 + bl ov11_022FA1DC + b _022FB864 +_022FB068: + add r0, r5, #0x12c + bl ov11_022EAF60 + ldr r1, [sp, #0x94] + mov r0, r5 + str r1, [sp] + ldrsb r2, [sp, #8] + ldr r1, [sp, #0x98] + mov r3, #1 + bl ov11_022FA1DC + b _022FB864 +_022FB090: + ldr r1, [r5, #0x15c] + ldr r0, [r5, #0x14] + ldr r2, [sp, #0x90] + add r1, r1, r0 + mov r0, r1, asr #7 + ldr r3, [sp, #0x8c] + add r0, r1, r0, lsr #24 + sub r0, r3, r0, asr #8 + str r0, [sp, #0x84] + ldr r1, [r5, #0x160] + ldr r0, [r5, #0x18] + add r2, r2, #8 + add r1, r1, r0 + mov r0, r1, asr #7 + add r0, r1, r0, lsr #24 + sub r1, r2, r0, asr #8 + add r0, sp, #0x84 + str r1, [sp, #0x88] + bl sub_020054C0 + strb r0, [sp, #8] + add r0, r5, #0x12c + bl ov11_022EAF60 + mov r0, #0 + str r0, [sp] + ldrsb r2, [sp, #8] + ldr r1, [sp, #0x98] + mov r0, r5 + mov r3, #1 + bl ov11_022FA1DC + b _022FB864 +_022FB108: + ldr r1, [r5, #0x15c] + ldr r0, [r5, #0x14] + ldr r3, [sp, #0x90] + add r1, r1, r0 + mov r0, r1, asr #7 + ldr r2, [sp, #0x8c] + add r0, r1, r0, lsr #24 + sub r0, r2, r0, asr #8 + str r0, [sp, #0x7c] + ldr r2, [r5, #0x160] + ldr r1, [r5, #0x18] + add r3, r3, #8 + add r2, r2, r1 + mov r1, r2, asr #7 + add r1, r2, r1, lsr #24 + sub r2, r3, r1, asr #8 + str r2, [sp, #0x80] + ldr r1, [r5, #0x14c] + sub r1, r1, #3 + cmp r1, #2 + bhi _022FB194 + mvn r1, #3 + cmp r0, r1 + blt _022FB1CC + cmp r0, #4 + bgt _022FB1CC + cmp r2, r1 + blt _022FB1CC + cmp r2, #4 + bgt _022FB1CC + mov r1, #0 + add r0, r5, #0x12c + str r1, [r5, #0x14c] + bl ov11_022EAF60 + b _022FB864 +_022FB194: + mvn r1, #0xb + cmp r0, r1 + blt _022FB1CC + cmp r0, #0xc + bgt _022FB1CC + cmp r2, r1 + blt _022FB1CC + cmp r2, #0xc + bgt _022FB1CC + mov r1, #0 + add r0, r5, #0x12c + str r1, [r5, #0x14c] + bl ov11_022EAF60 + b _022FB864 +_022FB1CC: + add r0, sp, #0x7c + bl sub_020054C0 + strb r0, [sp, #8] + ldrsb r2, [sp, #8] + mvn r0, #0 + cmp r2, r0 + beq _022FB264 + ldr r0, [sp, #0x98] + cmp r0, #0xc + beq _022FB208 + cmp r0, #0xd + beq _022FB224 + cmp r0, #0xe + beq _022FB240 + b _022FB25C +_022FB208: + mov r6, #0 + mov r0, r5 + mov r1, #3 + mov r3, #1 + str r6, [sp] + bl ov11_022FA1DC + b _022FB264 +_022FB224: + mov r6, #0 + mov r0, r5 + mov r1, #4 + mov r3, #1 + str r6, [sp] + bl ov11_022FA1DC + b _022FB264 +_022FB240: + mov r6, #0 + mov r0, r5 + mov r1, #5 + mov r3, #1 + str r6, [sp] + bl ov11_022FA1DC + b _022FB264 +_022FB25C: + mov r0, #0 + str r0, [r5, #0x14c] +_022FB264: + add r0, r5, #0x12c + bl ov11_022EAF60 + b _022FB864 +_022FB270: + ldr r0, [sp, #0x94] + ldr r6, [sp, #0x90] + cmp r0, #0 + ldr r2, [r5, #0x15c] + ldr r0, [r5, #0x14] + ldr r3, [sp, #0x8c] + add r2, r2, r0 + mov r0, r2, asr #7 + add r0, r2, r0, lsr #24 + sub r0, r3, r0, asr #8 + str r0, [sp, #0x74] + ldr r3, [r5, #0x160] + ldr r2, [r5, #0x18] + movne r1, #1 + add r3, r3, r2 + mov r2, r3, asr #7 + add r6, r6, #8 + add r2, r3, r2, lsr #24 + sub r3, r6, r2, asr #8 + moveq r1, #0 + mvn r2, #1 + str r3, [sp, #0x78] + cmp r0, r2 + and r6, r1, #0xff + blt _022FB300 + cmp r0, #2 + bgt _022FB300 + cmp r3, r2 + blt _022FB300 + cmp r3, #2 + bgt _022FB300 + mov r1, #0 + add r0, r5, #0x12c + str r1, [r5, #0x14c] + bl ov11_022EAF60 + b _022FB864 +_022FB300: + add r0, sp, #0x74 + bl sub_020054C0 + strb r0, [sp, #8] + ldrsb r2, [sp, #8] + mvn r0, #0 + cmp r2, r0 + beq _022FB864 + ldr r0, [sp, #0x98] + cmp r0, #0xf + beq _022FB33C + cmp r0, #0x10 + beq _022FB358 + cmp r0, #0x11 + beq _022FB374 + b _022FB390 +_022FB33C: + mov r7, #0 + mov r0, r5 + mov r3, r6 + mov r1, #6 + str r7, [sp] + bl ov11_022FA1DC + b _022FB864 +_022FB358: + mov r7, #0 + mov r0, r5 + mov r3, r6 + mov r1, #7 + str r7, [sp] + bl ov11_022FA1DC + b _022FB864 +_022FB374: + mov r7, #0 + mov r0, r5 + mov r3, r6 + mov r1, #8 + str r7, [sp] + bl ov11_022FA1DC + b _022FB864 +_022FB390: + mov r0, #0 + str r0, [r5, #0x14c] + b _022FB864 +_022FB39C: + tst r1, #2 + beq _022FB864 + mov r0, #0 + str r0, [r5, #0x14c] + add r1, r5, #0x100 + ldr r3, _022FBA18 ; =ov11_02324CF8 + ldrsh r8, [r1, #0x50] + ldr r6, [r3] + mov r2, #0xc + smlabb r7, r8, r2, r6 + cmp r8, #0 + beq _022FB864 + mov r2, #0x300 + strh r2, [r1, #0x76] + mov r2, #1 + strh r2, [r1, #0x78] + ldr r8, [r5, #0x15c] + ldr r6, [r5, #0x14] + ldr r2, [r5, #0x160] + ldr r1, [r5, #0x18] + add r6, r8, r6 + add r2, r2, r1 + str r6, [sp, #0x3c] + str r2, [sp, #0x40] + ldr r1, [r7, #8] + str r6, [sp, #0x34] + str r2, [sp, #0x38] + cmp r1, #0 + bge _022FB42C + ldr r1, [r3] + ldr r1, [r1, #0x24] + cmp r1, #0 + blt _022FB864 + str r1, [r7, #8] + str r0, [r7] + str r0, [r7, #4] +_022FB42C: + ldr sl, [r7] + mov sb, #1 + ldr lr, _022FBA18 ; =ov11_02324CF8 + mov fp, #0xc + b _022FB570 +_022FB440: + ldr ip, [lr] + ldr r0, [r7, #8] + add r1, ip, #0x28 + mla r8, r0, fp, r1 + ldr r6, [r8, #4] + ldr r2, [sp, #0x3c] + ldr r1, [r8, #8] + sub r3, r6, r2 + str r3, [sp, #0x44] + cmp r3, #0 + ldr r0, [sp, #0x40] + sub r0, r1, r0 + str r0, [sp, #0x48] + ble _022FB494 + cmp r3, sl + addgt r0, r2, sl + strgt r0, [sp, #0x3c] + movgt sb, #0 + strle r6, [sp, #0x3c] + ldr r1, [sp, #0x44] + b _022FB4C4 +_022FB494: + cmp r3, #0 + bge _022FB4C0 + rsb r0, sl, #0 + cmp r3, r0 + sublt r0, r2, sl + strlt r0, [sp, #0x3c] + ldr r0, [sp, #0x44] + movlt sb, #0 + strge r6, [sp, #0x3c] + rsb r1, r0, #0 + b _022FB4C4 +_022FB4C0: + mov r1, #0 +_022FB4C4: + ldr r0, [sp, #0x48] + cmp r0, #0 + ble _022FB4FC + cmp r0, sl + ldrgt r0, [sp, #0x40] + movgt sb, #0 + addgt r0, r0, sl + strgt r0, [sp, #0x40] + bgt _022FB530 + ldr r2, [r8, #8] + cmp r0, r1 + str r2, [sp, #0x40] + movgt r1, r0 + b _022FB530 +_022FB4FC: + bge _022FB530 + rsb r2, sl, #0 + cmp r0, r2 + ldrlt r0, [sp, #0x40] + movlt sb, #0 + sublt r0, r0, sl + strlt r0, [sp, #0x40] + blt _022FB530 + ldr r3, [r8, #8] + rsb r2, r1, #0 + cmp r0, r2 + str r3, [sp, #0x40] + rsblt r1, r0, #0 +_022FB530: + cmp sb, #0 + beq _022FB570 + sub sl, sl, r1 + cmp sl, #0 + movle sb, #0 + ble _022FB570 + ldr r0, [ip, #0x24] + ldr r1, [r7, #8] + cmp r1, r0 + moveq sb, #0 + beq _022FB570 + add r0, r1, #1 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #26 + add r0, r1, r0, ror #26 + str r0, [r7, #8] +_022FB570: + cmp sb, #0 + bne _022FB440 + ldr r0, _022FBA18 ; =ov11_02324CF8 + ldr r3, [r7, #8] + ldr r1, [r0] + mov r6, #0 + ldr r0, [r1, #0x24] + cmp r0, r3 + ble _022FB5BC + add sb, r3, #1 + mov r2, #0xc + b _022FB5B0 +_022FB5A0: + mla r8, sb, r2, r1 + ldr r8, [r8, #0x28] + add sb, sb, #1 + add r6, r6, r8 +_022FB5B0: + cmp sb, r0 + blt _022FB5A0 + b _022FB608 +_022FB5BC: + bge _022FB608 + add sb, r3, #1 + mov r2, #0xc + b _022FB5DC +_022FB5CC: + mla r8, sb, r2, r1 + ldr r8, [r8, #0x28] + add sb, sb, #1 + add r6, r6, r8 +_022FB5DC: + cmp sb, #0x40 + blt _022FB5CC + mov sb, #0 + mov r2, #0xc + b _022FB600 +_022FB5F0: + mla r8, sb, r2, r1 + ldr r8, [r8, #0x28] + add sb, sb, #1 + add r6, r6, r8 +_022FB600: + cmp sb, r0 + blt _022FB5F0 +_022FB608: + ldr r0, _022FBA18 ; =ov11_02324CF8 + ldr lr, [sp, #0x14] + ldr r2, [r0] + ldr ip, [sp, #0x18] + add r8, r5, #0x100 + add r0, r2, #0x28 + mov r1, #0xc + mla r0, r3, r1, r0 + ldrsh r3, [r8, #0x50] + ldr sl, _022FBA20 ; =ov11_023217EC + ldr r8, [sp, #0x40] + mla r2, r3, r1, r2 + ldmib r0, {r1, sb} + ldr r0, [sp, #0x3c] + sub r8, sb, r8 + sub r0, r1, r0 + ldr r2, [r2, #-8] + ldr r1, [sl, r3, lsl #2] + str r8, [sp, #0x50] + str lr, [sp, #0x54] + str r0, [sp, #0x4c] + str ip, [sp, #0x58] + add r8, r2, r1 + bl abs + str r0, [sp, #0x54] + ldr r0, [sp, #0x50] + bl abs + ldr r1, [sp, #0x54] + str r0, [sp, #0x58] + cmp r1, r0 + movle r1, r0 + add r1, r6, r1 + str r1, [r7, #4] + cmp r1, r8 + bgt _022FB6A8 + ldr r0, [r7] + cmp r0, #0 + subgt r0, r0, #0x100 + strgt r0, [r7] + b _022FB700 +_022FB6A8: + add r0, r5, #0x100 + ldrsh r2, [r0, #0x50] + mov r0, #0x1800 + mul r0, r2, r0 + cmp r1, r0 + bgt _022FB6D4 + ldr r0, [r7] + cmp r0, #0x100 + addlt r0, r0, #0x100 + strlt r0, [r7] + b _022FB700 +_022FB6D4: + ldr r1, _022FBA18 ; =ov11_02324CF8 + mov r0, #0xc + ldr r1, [r1] + mla r0, r2, r0, r1 + ldr r1, [r0, #-0xc] + ldr r0, [r7] + cmp r1, #0x100 + movlt r1, #0x100 + cmp r0, r1 + addlt r0, r0, #0x100 + strlt r0, [r7] +_022FB700: + ldr r2, _022FBA18 ; =ov11_02324CF8 + ldr r0, [r7, #8] + ldr r1, [r2] + ldr r3, [r1, #0x24] + add r1, r3, #0x40 + sub r0, r1, r0 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #26 + add r0, r1, r0, ror #26 + cmp r0, #0x3c + blt _022FB75C + add r0, r3, #5 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #26 + add r3, r1, r0, ror #26 + str r3, [r7, #8] + ldr r1, [r2] + mov r0, #0xc + mla r0, r3, r0, r1 + ldr r1, [r0, #0x2c] + ldr r0, [r0, #0x30] + str r1, [sp, #0x3c] + str r0, [sp, #0x40] +_022FB75C: + add r1, sp, #0x3c + mov r0, r5 + bl SetPositionLiveActor + cmp r0, #0 + bne _022FB864 + ldr r3, [sp, #0x3c] + ldr r2, [sp, #0x34] + ldr r1, [sp, #0x40] + ldr r0, [sp, #0x38] + sub r2, r3, r2 + sub r1, r1, r0 + add r0, sp, #0x5c + str r2, [sp, #0x5c] + str r1, [sp, #0x60] + bl sub_020054C0 + add r2, r5, #0x100 + mov r1, r0 + ldrsb r0, [r2, #0x5a] + bl sub_02005430 + strb r0, [r5, #0x15a] + ldr r0, [r7] + cmp r0, #0 + ble _022FB7F4 + mov r0, #4 + str r0, [r5, #0x17c] + ldr r0, [r7] + ldr r1, [r5, #0x128] + cmp r0, #0x200 + movgt r0, #0xa00 + movle r0, #0x800 + mov r0, r0, lsl #0x10 + tst r1, #0x20 + mov r6, r0, asr #0x10 + beq _022FB818 + ldrsh r0, [r5] + mov r1, #0x1000000 + bl SetAttributeBitfieldLiveActor + b _022FB818 +_022FB7F4: + mov r0, #0 + str r0, [r5, #0x17c] + ldr r0, [r5, #0x128] + ldr r6, _022FBA24 ; =0x00000807 + tst r0, #0x20 + beq _022FB818 + ldrsh r0, [r5] + mov r1, #0x1000000 + bl SetAttributeBitfieldLiveActor +_022FB818: + ldrb r0, [r5, #0x174] + cmp r0, #0 + addeq r0, r5, #0x100 + ldreqsh r1, [r0, #0x80] + cmpeq r6, r1 + ldreqsb r1, [r0, #0x75] + ldreqsb r0, [r0, #0x5a] + cmpeq r1, r0 + beq _022FB864 + mov r0, #0 + strb r0, [r5, #0x174] + add r2, r5, #0x100 + ldrsb r1, [r2, #0x5a] + add r0, r5, #0x18c + strb r1, [r5, #0x175] + strh r6, [r2, #0x80] + ldrsh r1, [r2, #0x80] + ldrsb r2, [r2, #0x75] + bl SetAnimDataFields2 +_022FB864: + ldrb r0, [r5, #0x174] + cmp r0, #0 + beq _022FB894 + mov r0, #0 + strb r0, [r5, #0x174] + add r2, r5, #0x100 + ldrsb r1, [r2, #0x5a] + add r0, r5, #0x18c + strb r1, [r5, #0x175] + ldrsh r1, [r2, #0x80] + ldrsb r2, [r2, #0x75] + bl SetAnimDataFields2 +_022FB894: + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 + cmp r4, #0x18 + add r5, r5, #0x250 + blt _022FAED4 + ldr r7, _022FBA18 ; =ov11_02324CF8 + mov r2, #0 + ldr r5, [r7] + ldr r1, [r7, #4] + sub r0, r2, #1 + str r2, [r5] + str r2, [r5, #4] + ldrsh r3, [r1, #2] + cmp r3, r0 + bne _022FB8DC + bl InitPartnerFollowData + b _022FBA10 +_022FB8DC: + ldr r0, [r1, #0x128] + tst r0, #2 + beq _022FBA0C + ldr r0, [r7] + ldr r6, [r0, #0x24] + cmp r6, #0 + bge _022FB948 + str r2, [r0, #0x24] + str r2, [r0, #0x28] + ldr r4, [r1, #0x15c] + ldr r3, [r1, #0x14] + add r3, r4, r3 + str r3, [r0, #0x2c] + ldr r3, [r1, #0x160] + ldr r1, [r1, #0x18] + add r1, r3, r1 + str r1, [r0, #0x30] + ldr r1, [r7] + mov r0, r2 +_022FB928: + str r0, [r1, #8] + str r0, [r1] + add r2, r2, #1 + str r0, [r1, #4] + cmp r2, #3 + add r1, r1, #0xc + blt _022FB928 + b _022FBA10 +_022FB948: + add r2, r6, #1 + mov r3, r2, lsr #0x1f + rsb r2, r3, r2, lsl #26 + add r2, r3, r2, ror #26 + str r2, [r0, #0x24] + ldr r3, [r7] + mov r0, #0xc + ldr r2, [r3, #0x24] + add r3, r3, #0x28 + mla r4, r2, r0, r3 + ldr r8, [r1, #0x15c] + ldr r3, [r1, #0x14] + ldr r2, _022FBA1C ; =ov11_02321684 + add r3, r8, r3 + str r3, [r4, #4] + ldr r3, [r1, #0x160] + ldr r1, [r1, #0x18] + add r1, r3, r1 + str r1, [r4, #8] + ldr r1, [r7] + ldr r3, [r2, #0x18] + add r1, r1, #0x28 + mla r7, r6, r0, r1 + ldr r1, [r2, #0x1c] + ldr r0, [r7, #8] + ldr r2, [r4, #8] + ldr r8, [r4, #4] + sub r2, r2, r0 + ldr r7, [r7, #4] + str r2, [sp, #0x70] + sub r0, r8, r7 + str r3, [sp, #0x64] + str r0, [sp, #0x6c] + str r1, [sp, #0x68] + bl abs + str r0, [sp, #0x64] + ldr r0, [sp, #0x70] + bl abs + ldr r1, [sp, #0x64] + str r0, [sp, #0x68] + cmp r1, r0 + movle r1, r0 + cmp r1, #0 + ldrle r0, _022FBA18 ; =ov11_02324CF8 + str r1, [r4] + ldrle r0, [r0] + strle r6, [r0, #0x24] + strgt r1, [r5] + b _022FBA10 +_022FBA0C: + bl InitPartnerFollowData +_022FBA10: + add sp, sp, #0x9c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FBA18: .word ov11_02324CF8 +_022FBA1C: .word ov11_02321684 +_022FBA20: .word ov11_023217EC +_022FBA24: .word 0x00000807 + arm_func_end ov11_022FAE58 + + arm_func_start InitPartnerFollowData +InitPartnerFollowData: ; 0x022FBA28 + ldr r0, _022FBA64 ; =ov11_02324CF8 + mvn r2, #0 + ldr r1, [r0] + mov r3, #0 + str r2, [r1, #0x24] + ldr r1, [r0] + mov r0, r3 +_022FBA44: + str r2, [r1, #8] + str r0, [r1] + add r3, r3, #1 + str r0, [r1, #4] + cmp r3, #3 + add r1, r1, #0xc + blt _022FBA44 + bx lr + .align 2, 0 +_022FBA64: .word ov11_02324CF8 + arm_func_end InitPartnerFollowData + + arm_func_start ov11_022FBA68 +ov11_022FBA68: ; 0x022FBA68 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + ldr r0, _022FBBC0 ; =ov11_02321684 + ldr r1, _022FBBC4 ; =ov11_02324CF8 + ldr r8, [r0, #0x48] + ldr r7, [r0, #0x4c] + mov sb, #0 + ldr sl, [r1, #4] + str r8, [sp, #4] + str r7, [sp, #8] + mov fp, sb + mvn r4, #0 +_022FBA98: + ldrsh r0, [sl, #2] + cmp r0, r4 + ldrneb r0, [sl, #4] + cmpne r0, #0 + beq _022FBBA0 + str r8, [sp, #0xc] + str r7, [sp, #0x10] + ldr r1, [sl, #0x15c] + ldr r0, [sl, #0x14] + add r0, r1, r0 + str r0, [sp, #0xc] + ldr r1, [sl, #0x160] + ldr r0, [sl, #0x18] + add r0, r1, r0 + str r0, [sp, #0x10] + ldr r0, [sl, #0x17c] + ldr r6, [sl, #0x16c] + cmp r0, #0 + ldr r5, [sl, #0x170] + ble _022FBB20 + sub r0, r0, #1 + str r0, [sl, #0x17c] + cmp r0, #0 + bgt _022FBB20 + add r0, sl, #0x100 + ldrh r1, [r0, #0x78] + add r0, r1, #0xff + add r0, r0, #0xff00 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + bhi _022FBB20 + mov r0, sl + bl ChangeActorAnimation +_022FBB20: +#ifdef JAPAN + add r0, sl, #0x18c + bl ov11_022F5FE8_JP + cmp r0, #0 + beq _022FBB54 +#else + add r0, sl, #0x200 + ldrsh r1, [r0, #0x1e] + cmp r1, #0 + bge _022FBB54 + ldrsh r0, [r0, #0x18] + cmp r0, #0 + ble _022FBB54 +#endif + strb fp, [sl, #0x174] + add r0, sl, #0x100 + ldrsh r1, [r0, #0x80] + ldrsb r2, [r0, #0x75] + add r0, sl, #0x18c + bl SetAnimDataFields2 +_022FBB54: + add r3, sl, #0x100 + ldrsh r1, [r3, #0x82] + cmp r1, r4 + beq _022FBB8C + ldr r2, [sl, #0x188] + add r0, sl, #0x18c + str r2, [sp] + ldrsh r2, [r3, #0x84] + ldrsb r3, [r3, #0x5a] + bl ov11_022F5C48 + add r1, sl, #0x100 + strh r4, [r1, #0x82] + mov r0, #0 + strh r0, [r1, #0x84] +_022FBB8C: + ldrsh r1, [sl, #0xa] + add r2, sp, #0xc + add r0, sl, #0x18c + add r3, r6, r5 + bl ov11_022F5C94 +_022FBBA0: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 + cmp sb, #0x18 + add sl, sl, #0x250 + blt _022FBA98 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FBBC0: .word ov11_02321684 +_022FBBC4: .word ov11_02324CF8 + arm_func_end ov11_022FBA68 + + arm_func_start ov11_022FBBC8 +ov11_022FBBC8: ; 0x022FBBC8 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + mov r5, r1 + mov r4, r0 + add r1, sp, #0 + mov r0, #0 + bl ov11_022EB3C8 + ldr r1, [sp] + ldr r0, [r5] + add r0, r1, r0 + str r0, [r4] + ldr r1, [sp, #4] + ldr r0, [r5, #4] + add r0, r1, r0 + str r0, [r4, #4] + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end ov11_022FBBC8 + + arm_func_start ov11_022FBC0C +ov11_022FBC0C: ; 0x022FBC0C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x20 + ldr sb, _022FBDB8 ; =ov11_02324CF8 + ldmia r1, {r2, r3} + add r7, r3, #8 + ldr r8, [sb] + sub r6, r2, #0xc + add r3, r2, #0xc + add r1, r7, #0x14 + ldr fp, [r8, #0x32c] + mov ip, r6, lsl #8 + sub r4, r7, #4 + mov r6, r4, lsl #8 + mov r3, r3, lsl #8 + mov lr, r1, lsl #8 + mov r5, #0 + str ip, [sp, #0x10] + str r3, [sp, #8] + str r6, [sp, #0x14] + str lr, [sp, #0xc] + str r5, [sp, #4] + str r2, [sp, #0x18] + ldr r2, [sb, #4] + mov r4, r0 + mov r1, r5 + str r7, [sp, #0x1c] + add r8, r8, #0x300 + mvn sb, #0 + b _022FBD1C +_022FBC80: + ldrsh r0, [r2, #2] + cmp r0, sb + beq _022FBD0C + ldr sl, [r2, #0x15c] + cmp sl, r3 + bge _022FBD0C + ldr sl, [r2, #0x164] + cmp sl, ip + ble _022FBD0C + ldr sl, [r2, #0x160] + cmp sl, lr + bge _022FBD0C + ldr sl, [r2, #0x168] + cmp sl, r6 + ble _022FBD0C + ldrsh sl, [r8, #0x28] + cmp r1, sl + moveq r5, #1 + beq _022FBD0C + cmp r0, #0xd + moveq r0, #1 + streq r0, [sp, #4] + beq _022FBD0C + ldr r0, [r2, #0x128] + tst r0, #0x2000 + beq _022FBD0C + add r2, sp, #8 + str r2, [sp] + add r3, sp, #0x10 + mov r0, fp + mvn r2, #0 + bl ov11_022F9F90 + strb r0, [r4] + mov r0, #0 + b _022FBDB0 +_022FBD0C: + add r0, r1, #1 + mov r0, r0, lsl #0x10 + mov r1, r0, asr #0x10 + add r2, r2, #0x250 +_022FBD1C: + cmp r1, #0x18 + blt _022FBC80 + ldr r0, [sp, #0x18] + sub r1, r7, #6 + sub r3, r0, #6 + mov r6, r1, lsl #8 + add r2, r0, #6 + add r0, r7, #6 + mov r8, r3, lsl #8 + mov r7, r2, lsl #8 + mov r3, r0, lsl #8 + add r1, sp, #0x10 + add r2, sp, #8 + mov r0, #0x2000 + str r8, [sp, #0x10] + str r7, [sp, #8] + str r6, [sp, #0x14] + str r3, [sp, #0xc] + bl ov11_022FCDB0 + movs r2, r0 + bmi _022FBD94 + add r1, sp, #8 + str r1, [sp] + add r3, sp, #0x10 + mov r0, fp + mvn r1, #0 + bl ov11_022F9F90 + strb r0, [r4] + mov r0, #1 + b _022FBDB0 +_022FBD94: + cmp r5, #0 + movne r0, #2 + bne _022FBDB0 + ldr r0, [sp, #4] + cmp r0, #0 + movne r0, #3 + mvneq r0, #0 +_022FBDB0: + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FBDB8: .word ov11_02324CF8 + arm_func_end ov11_022FBC0C + + arm_func_start ov11_022FBDBC +ov11_022FBDBC: ; 0x022FBDBC + stmdb sp!, {r3, lr} + mov r0, #0x2180 + mov r1, #6 + bl MemAlloc + ldr r1, _022FBE00 ; =ov11_02324D00 + mov r3, #0 + str r0, [r1] + mvn r2, #0 +_022FBDDC: + add r1, r3, #1 + mov r1, r1, lsl #0x10 + mov r3, r1, asr #0x10 + strh r2, [r0, #6] + cmp r3, #0x10 + add r0, r0, #0x218 + blt _022FBDDC + bl ov11_022FBE04 + ldmia sp!, {r3, pc} + .align 2, 0 +_022FBE00: .word ov11_02324D00 + arm_func_end ov11_022FBDBC + + arm_func_start ov11_022FBE04 +ov11_022FBE04: ; 0x022FBE04 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _022FBE48 ; =ov11_02324D00 + mov r5, #0 + ldr r6, [r0] + mvn r4, #0 +_022FBE18: + ldrsh r0, [r6, #6] + cmp r0, r4 + beq _022FBE2C + mov r0, r5 + bl DeleteLiveObject +_022FBE2C: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + cmp r5, #0x10 + add r6, r6, #0x218 + blt _022FBE18 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FBE48: .word ov11_02324D00 + arm_func_end ov11_022FBE04 + + arm_func_start ov11_022FBE4C +ov11_022FBE4C: ; 0x022FBE4C + stmdb sp!, {r3, lr} + bl ov11_022FBE04 + ldr r0, _022FBE70 ; =ov11_02324D00 + ldr r0, [r0] + bl MemFree + ldr r0, _022FBE70 ; =ov11_02324D00 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022FBE70: .word ov11_02324D00 + arm_func_end ov11_022FBE4C + + arm_func_start ov11_022FBE74 +ov11_022FBE74: ; 0x022FBE74 + mvn r1, #0 + cmp r0, r1 + beq _022FBEB8 + ldr r1, _022FBEC0 ; =ov11_02324D00 + mov r3, #0 + ldr r2, [r1] + b _022FBEB0 +_022FBE90: + ldrsh r1, [r2, #6] + cmp r1, r0 + moveq r0, r3 + bxeq lr + add r1, r3, #1 + mov r1, r1, lsl #0x10 + mov r3, r1, asr #0x10 + add r2, r2, #0x218 +_022FBEB0: + cmp r3, #0x10 + blt _022FBE90 +_022FBEB8: + mvn r0, #0 + bx lr + .align 2, 0 +_022FBEC0: .word ov11_02324D00 + arm_func_end ov11_022FBE74 + + arm_func_start ov11_022FBEC4 +ov11_022FBEC4: ; 0x022FBEC4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x10 + mov r8, r1 + ldrsh r4, [r8] + ldr r5, _022FC2C0 ; =OBJECTS + mov r1, #0xc + mov sb, r0 + smlabb r5, r4, r1, r5 + mov r7, r2 + mov sl, r3 + cmp sb, #0 + bge _022FBF58 + cmp r4, #5 + bne _022FBF08 + mov r0, r4 + bl ov11_022FBE74 + mov sb, r0 +_022FBF08: + cmp sb, #0 + bge _022FBF4C + ldr r0, _022FC2C4 ; =ov11_02324D00 + mov r3, #0 + ldr r2, [r0] + mvn r1, #0 + b _022FBF44 +_022FBF24: + ldrsh r0, [r2, #6] + cmp r0, r1 + moveq sb, r3 + beq _022FBF4C + add r0, r3, #1 + mov r0, r0, lsl #0x10 + mov r3, r0, asr #0x10 + add r2, r2, #0x218 +_022FBF44: + cmp r3, #0x10 + blt _022FBF24 +_022FBF4C: + cmp sb, #0 + mvnlt r0, #0 + blt _022FC2B8 +_022FBF58: + ldr r0, _022FC2C4 ; =ov11_02324D00 + ldrh r1, [r8] + ldr r2, [r0] + mov r0, #0x218 + str r1, [sp] + ldrsh r1, [r5] + smlabb r6, sb, r0, r2 + stmib sp, {r1, r7} + ldr r1, _022FC2C8 ; =ov11_02321E4C + mov r2, sb + mov r3, r4 + str sl, [sp, #0xc] + mov r0, #1 + bl Debug_Print + ldrsh r1, [r6, #6] + mvn r0, #0 + cmp r1, r0 + moveq r0, #1 + movne r0, #0 + ands fp, r0, #0xff + beq _022FBFBC + mov r1, #0 + add r0, r6, #0x154 + strb r1, [r6, #8] + bl ov11_022F4A14 +_022FBFBC: + sub r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + strh sb, [r6, #4] + mov r0, r0, lsr #0x10 + cmp r0, #1 + strh r4, [r6, #6] + strlsh r7, [r6, #0xa] + strlsb sl, [r6, #0xc] + mvnls r0, #0 + strlsb r0, [r6, #0xd] + bls _022FC004 + cmp fp, #0 + mvnne r0, #0 + strneh r0, [r6, #0xa] + strneb r0, [r6, #0xc] + strb sl, [r6, #0xd] +_022FC004: + ldrsh r0, [r5] + cmp r0, #0x10 + addls pc, pc, r0, lsl #2 + b _022FC100 +_022FC014: ; jump table + b _022FC100 ; case 0 + b _022FC058 ; case 1 + b _022FC0F4 ; case 2 + b _022FC0B8 ; case 3 + b _022FC0C4 ; case 4 + b _022FC0C4 ; case 5 + b _022FC0D0 ; case 6 + b _022FC0DC ; case 7 + b _022FC0E8 ; case 8 + b _022FC0AC ; case 9 + b _022FC064 ; case 10 + b _022FC058 ; case 11 + b _022FC070 ; case 12 + b _022FC0A0 ; case 13 + b _022FC094 ; case 14 + b _022FC088 ; case 15 + b _022FC07C ; case 16 +_022FC058: + mov r0, #0 + str r0, [r6, #0x12c] + b _022FC108 +_022FC064: + mov r0, #0x20000 + str r0, [r6, #0x12c] + b _022FC108 +_022FC070: + mov r0, #0x40000 + str r0, [r6, #0x12c] + b _022FC108 +_022FC07C: + mov r0, #0x20000000 + str r0, [r6, #0x12c] + b _022FC108 +_022FC088: + mov r0, #0x20c0000 + str r0, [r6, #0x12c] + b _022FC108 +_022FC094: + mov r0, #0x20c0000 + str r0, [r6, #0x12c] + b _022FC108 +_022FC0A0: + mov r0, #0x10000 + str r0, [r6, #0x12c] + b _022FC108 +_022FC0AC: + mov r0, #0x140 + str r0, [r6, #0x12c] + b _022FC108 +_022FC0B8: + ldr r0, _022FC2CC ; =0x02006100 + str r0, [r6, #0x12c] + b _022FC108 +_022FC0C4: + mov r0, #0x6100 + str r0, [r6, #0x12c] + b _022FC108 +_022FC0D0: + mov r0, #0x1100 + str r0, [r6, #0x12c] + b _022FC108 +_022FC0DC: + mov r0, #0x2100 + str r0, [r6, #0x12c] + b _022FC108 +_022FC0E8: + mov r0, #0x6000 + str r0, [r6, #0x12c] + b _022FC108 +_022FC0F4: + ldr r0, _022FC2D0 ; =0x02003100 + str r0, [r6, #0x12c] + b _022FC108 +_022FC100: + ldr r0, _022FC2D4 ; =0x02006140 + str r0, [r6, #0x12c] +_022FC108: + ldrb r0, [r5, #8] + cmp r0, #0 + ldrne r0, [r6, #0x12c] + orrne r0, r0, #0x80000000 + strne r0, [r6, #0x12c] + ldrb r0, [r5, #2] + cmp r0, #0 + ldreqb r0, [r8, #3] + moveq r0, r0, lsl #0xb + streq r0, [r6, #0x10] + ldreqb r0, [r8, #4] + movne r0, r0, lsl #0xb + strne r0, [r6, #0x10] + ldrneb r0, [r5, #3] + mov r0, r0, lsl #0xb + str r0, [r6, #0x14] + ldr r0, [r6, #0x10] + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 + str r0, [r6, #0x18] + ldr r0, [r6, #0x14] + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 + str r0, [r6, #0x1c] + ldrsb r0, [r8, #2] + strb r0, [r6, #0x20] + ldrb r0, [r8, #7] + tst r0, #4 + bne _022FC19C + ldrb r0, [r8, #5] + mov r0, r0, lsl #0xb + str r0, [r6, #0x24] + ldrb r0, [r8, #7] + tst r0, #2 + ldrne r0, [r6, #0x24] + addne r0, r0, #0x400 + strne r0, [r6, #0x24] +_022FC19C: + ldrb r0, [r8, #8] + tst r0, #4 + bne _022FC1C8 + ldrb r0, [r8, #6] + mov r0, r0, lsl #0xb + str r0, [r6, #0x28] + ldrb r0, [r8, #8] + tst r0, #2 + ldrne r0, [r6, #0x28] + addne r0, r0, #0x400 + strne r0, [r6, #0x28] +_022FC1C8: + ldrb r0, [sp, #0x38] + cmp r0, #0 + ldrne r0, [r6, #0x12c] + orrne r0, r0, #0x800000 + strne r0, [r6, #0x12c] + cmp fp, #0 + beq _022FC2A0 + ldrsb r0, [r6, #0x20] + mov r2, #0 + strb r0, [r6, #0x130] + ldr r3, [r6, #0x24] + ldr r1, [r6, #0x18] + add r0, r6, #0x2c + sub r1, r3, r1 + str r1, [r6, #0x134] + ldr r4, [r6, #0x24] + ldr r3, [r6, #0x18] + add r1, r6, #0x34 + add r3, r4, r3 + str r3, [r6, #0x13c] + ldr r4, [r6, #0x28] + ldr r3, [r6, #0x1c] + sub r3, r4, r3 + str r3, [r6, #0x138] + ldr r4, [r6, #0x28] + ldr r3, [r6, #0x1c] + add r3, r4, r3 + str r3, [r6, #0x140] + str r2, [r6, #0x148] + str r2, [r6, #0x144] + bl ov11_022F1F08 + add r0, r6, #0x100 + mov r2, #0x800 + mov r1, #1 + strh r2, [r0, #0x4e] + strb r1, [r6, #0x14c] + sub r1, r1, #2 + strh r1, [r0, #0x50] + mov r1, #0 + strh r1, [r0, #0x52] + ldrsh r1, [r6, #6] + ldr r2, [r6, #0x12c] + add r0, r6, #0x154 + bl LoadObjectAnimData + ldr r1, _022FC2D8 ; =OBJECT_FUNCTION_TABLE + mov r2, r6 + add r0, r6, #0x3c + bl InitScriptRoutine + ldrsh r0, [r5] + cmp r0, #0x10 + bne _022FC2A0 + add r0, r6, #0x154 + mov r1, #0 + bl ov11_022F4974 +_022FC2A0: + ldrsh r2, [r8, #0xa] + add r0, r6, #0x100 + mov r1, #1 + strh r2, [r0, #0x28] + mov r0, sb + strb r1, [r6, #8] +_022FC2B8: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FC2C0: .word OBJECTS +_022FC2C4: .word ov11_02324D00 +_022FC2C8: .word ov11_02321E4C +_022FC2CC: .word 0x02006100 +_022FC2D0: .word 0x02003100 +_022FC2D4: .word 0x02006140 +_022FC2D8: .word OBJECT_FUNCTION_TABLE + arm_func_end ov11_022FBEC4 + + arm_func_start ov11_022FC2DC +ov11_022FC2DC: ; 0x022FC2DC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov sl, r0 + mov sb, r1 + ldr r1, _022FC43C ; =ov11_02321E98 + mov r2, sl + mov r3, sb + mov r0, #1 + bl Debug_Print + sub r0, sl, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + mov r8, #0 + bhi _022FC3A4 + ldr r0, _022FC440 ; =ov11_02324D00 + mvn r4, #1 + ldr r7, [r0] + ldr fp, _022FC444 ; =ov11_02321EC4 + add r5, r4, #1 + mov r6, #1 +_022FC338: + ldrsh r3, [r7, #6] + cmp r3, r5 + beq _022FC388 + ldrsh r2, [r7, #0xa] + mov r0, r6 + mov r1, fp + str r2, [sp] + ldrsb ip, [r7, #0xc] + mov r2, r8 + str ip, [sp, #4] + bl Debug_Print + ldrsh r0, [r7, #0xa] + cmp sl, r0 + bne _022FC388 + cmp sb, r4 + ldrnesb r0, [r7, #0xc] + cmpne sb, r0 + bne _022FC388 + mov r0, r8 + bl DeleteLiveObject +_022FC388: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #0x10 + add r7, r7, #0x218 + blt _022FC338 + b _022FC434 +_022FC3A4: + ldr r0, _022FC440 ; =ov11_02324D00 + mvn r5, #1 + add r6, r5, #1 + ldr sl, [r0] + mov r4, r6 + mov r7, r6 + mov fp, #1 +_022FC3C0: + ldrsh r3, [sl, #6] + cmp r3, r7 + beq _022FC41C + ldrsb ip, [sl, #0xd] + ldr r1, _022FC448 ; =ov11_02321EF0 + mov r0, fp + mov r2, r8 + str ip, [sp] + bl Debug_Print + ldrsb r0, [sl, #0xd] + cmp r0, r6 + beq _022FC408 + cmp sb, r5 + cmpne sb, r0 + bne _022FC41C + mov r0, r8 + bl DeleteLiveObject + b _022FC41C +_022FC408: + ldrsh r0, [sl, #0xa] + cmp r0, r4 + bne _022FC41C + mov r0, r8 + bl DeleteLiveObject +_022FC41C: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #0x10 + add sl, sl, #0x218 + blt _022FC3C0 +_022FC434: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FC43C: .word ov11_02321E98 +_022FC440: .word ov11_02324D00 +_022FC444: .word ov11_02321EC4 +_022FC448: .word ov11_02321EF0 + arm_func_end ov11_022FC2DC + + arm_func_start DeleteLiveObject +DeleteLiveObject: ; 0x022FC44C + stmdb sp!, {r4, lr} + ldr r1, _022FC48C ; =ov11_02324D00 + mov r2, r0 + ldr r1, [r1] + mov r0, #0x218 + smlabb r4, r2, r0, r1 + ldr r1, _022FC490 ; =ov11_02321F10 + mov r0, #1 + bl Debug_Print + add r0, r4, #0x154 + bl ov11_022F6EFC + add r0, r4, #0x3c + bl ov11_022DC934 + mvn r0, #0 + strh r0, [r4, #6] + ldmia sp!, {r4, pc} + .align 2, 0 +_022FC48C: .word ov11_02324D00 +_022FC490: .word ov11_02321F10 + arm_func_end DeleteLiveObject + + arm_func_start ov11_022FC494 +ov11_022FC494: ; 0x022FC494 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov sl, r0 + mov sb, r1 + ldr r1, _022FC5EC ; =ov11_02321F2C + mov r2, sl + mov r3, sb + mov r0, #1 + bl Debug_Print + sub r0, sl, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + mov r8, #0 + bhi _022FC564 + ldr r0, _022FC5F0 ; =ov11_02324D00 + mvn r5, #0 + ldr r7, [r0] + ldr fp, _022FC5F4 ; =ov11_02321EC4 + sub r4, r5, #1 + mov r6, #1 +_022FC4F0: + ldrsh r3, [r7, #6] + cmp r3, r5 + beq _022FC548 + ldrsh r2, [r7, #0xa] + mov r0, r6 + mov r1, fp + str r2, [sp] + ldrsb ip, [r7, #0xc] + mov r2, r8 + str ip, [sp, #4] + bl Debug_Print + ldrsh r0, [r7, #0xa] + cmp sl, r0 + bne _022FC548 + cmp sb, r4 + ldrnesb r0, [r7, #0xc] + cmpne sb, r0 + bne _022FC548 + mov r1, #0 + add r0, r7, #0x3c + bl ov11_022DCFC4 + strh r5, [r7, #0xa] +_022FC548: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #0x10 + add r7, r7, #0x218 + blt _022FC4F0 + b _022FC5E4 +_022FC564: + ldr r0, _022FC5F0 ; =ov11_02324D00 + mvn r5, #0 + mov r7, #1 + ldr sl, [r0] + ldr r6, _022FC5F4 ; =ov11_02321EC4 + sub r4, r5, #1 + mov fp, r7 +_022FC580: + ldrsh r3, [sl, #6] + cmp r3, r5 + beq _022FC5CC + ldrsh r2, [sl, #0xa] + mov r0, r7 + mov r1, r6 + str r2, [sp] + ldrsb ip, [sl, #0xc] + mov r2, r8 + str ip, [sp, #4] + bl Debug_Print + cmp sb, r4 + ldrnesb r0, [sl, #0xd] + cmpne sb, r0 + bne _022FC5CC + mov r1, fp + add r0, sl, #0x3c + bl ov11_022DCFC4 + strb r5, [sl, #0xd] +_022FC5CC: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #0x10 + add sl, sl, #0x218 + blt _022FC580 +_022FC5E4: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FC5EC: .word ov11_02321F2C +_022FC5F0: .word ov11_02324D00 +_022FC5F4: .word ov11_02321EC4 + arm_func_end ov11_022FC494 + + arm_func_start SetAttributeBitfieldLiveObject +SetAttributeBitfieldLiveObject: ; 0x022FC5F8 + stmdb sp!, {r3, lr} + ldr r3, _022FC634 ; =ov11_02324D00 + mov r2, #0x218 + ldr ip, [r3] + mvn r3, #0 + smlabb ip, r0, r2, ip + ldrsh r0, [ip, #6] + cmp r0, r3 + ldmeqia sp!, {r3, pc} + ldr r2, [ip, #0x12c] + add r0, ip, #0x154 + orr r1, r2, r1 + str r1, [ip, #0x12c] + bl SetAnimDataFieldsWrapper + ldmia sp!, {r3, pc} + .align 2, 0 +_022FC634: .word ov11_02324D00 + arm_func_end SetAttributeBitfieldLiveObject + + arm_func_start ResetAttributeBitfieldLiveObject +ResetAttributeBitfieldLiveObject: ; 0x022FC638 + stmdb sp!, {r3, lr} + ldr r3, _022FC678 ; =ov11_02324D00 + mov r2, #0x218 + ldr ip, [r3] + mvn r3, #0 + smlabb ip, r0, r2, ip + ldrsh r0, [ip, #6] + cmp r0, r3 + ldmeqia sp!, {r3, pc} + ldr r2, [ip, #0x12c] + eor r0, r1, r3 + and r1, r2, r0 + add r0, ip, #0x154 + str r1, [ip, #0x12c] + bl SetAnimDataFieldsWrapper + ldmia sp!, {r3, pc} + .align 2, 0 +_022FC678: .word ov11_02324D00 + arm_func_end ResetAttributeBitfieldLiveObject + + arm_func_start ov11_022FC67C +ov11_022FC67C: ; 0x022FC67C + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mvn r0, #0 + cmp r4, r0 + beq _022FC6D8 + ldr r0, _022FC6E0 ; =ov11_02324D00 + mov r6, #0 + ldr r5, [r0] + b _022FC6D0 +_022FC6A0: + ldrsh r0, [r5, #6] + cmp r0, r4 + bne _022FC6C0 + add r0, r5, #0x3c + bl ov11_022DC958 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} +_022FC6C0: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + add r5, r5, #0x218 +_022FC6D0: + cmp r6, #0x10 + blt _022FC6A0 +_022FC6D8: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FC6E0: .word ov11_02324D00 + arm_func_end ov11_022FC67C + + arm_func_start ov11_022FC6E4 +ov11_022FC6E4: ; 0x022FC6E4 + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mvn r0, #0 + cmp r4, r0 + beq _022FC740 + ldr r0, _022FC748 ; =ov11_02324D00 + mov r6, #0 + ldr r5, [r0] + b _022FC738 +_022FC708: + ldrsh r0, [r5, #6] + cmp r0, r4 + bne _022FC728 + add r0, r5, #0x3c + bl ov11_022DC9A0 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} +_022FC728: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + add r5, r5, #0x218 +_022FC738: + cmp r6, #0x10 + blt _022FC708 +_022FC740: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FC748: .word ov11_02324D00 + arm_func_end ov11_022FC6E4 + + arm_func_start ov11_022FC74C +ov11_022FC74C: ; 0x022FC74C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov sb, r0 + mov r0, #0 + sub r3, r0, #1 + mov r8, r1 + mov r7, r2 + cmp sb, r3 + ldmeqia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + ldr r1, _022FC7B8 ; =ov11_02324D00 + mov r6, r0 + ldr r5, [r1] + mov r4, #1 +_022FC77C: + ldrsh r1, [r5, #6] + cmp r1, sb + bne _022FC79C + mov r1, r8 + mov r2, r7 + add r0, r5, #0x3c + bl ov11_022DCCEC + mov r0, r4 +_022FC79C: + add r1, r6, #1 + mov r1, r1, lsl #0x10 + mov r6, r1, asr #0x10 + cmp r6, #0x10 + add r5, r5, #0x218 + blt _022FC77C + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022FC7B8: .word ov11_02324D00 + arm_func_end ov11_022FC74C + + arm_func_start ov11_022FC7BC +ov11_022FC7BC: ; 0x022FC7BC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r7, #1 + mov sb, r0 + sub r0, r7, #2 + mov r8, r1 + cmp sb, r0 + beq _022FC830 + ldr r0, _022FC838 ; =ov11_02324D00 + mov r6, #0 + ldr r5, [r0] + mov r4, r6 +_022FC7E8: + ldrsh r0, [r5, #6] + cmp r0, sb + bne _022FC818 + add r0, r5, #0x3c + bl ov11_022DC958 + cmp r0, #0 + beq _022FC818 + mov r1, r8 + add r0, r5, #0x3c + bl ov11_022DCA58 + cmp r0, #0 + moveq r7, r4 +_022FC818: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + cmp r6, #0x10 + add r5, r5, #0x218 + blt _022FC7E8 +_022FC830: + mov r0, r7 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022FC838: .word ov11_02324D00 + arm_func_end ov11_022FC7BC + + arm_func_start ov11_022FC83C +ov11_022FC83C: ; 0x022FC83C + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022FC8BC ; =ov11_02324D00 + mov r2, r0 + ldr r1, [r1] + mov r0, #0x218 + smlabb r4, r2, r0, r1 + ldrsh r3, [r4, #0xa] + add r0, r4, #0x100 + ldr r1, _022FC8C0 ; =ov11_02321F58 + str r3, [sp] + ldrsh r3, [r0, #0x28] + mov r0, #1 + str r3, [sp, #4] + ldrsh r3, [r4, #6] + bl Debug_Print + ldrsh r1, [r4, #6] + mvn r0, #0 + cmp r1, r0 + addne r1, r4, #0x100 + ldrnesh r1, [r1, #0x28] + cmpne r1, r0 + moveq r0, #0 + beq _022FC8B4 + bl SetActorTalkSub + add r1, r4, #0x100 + ldrsh r0, [r4, #0xa] + ldrsh r1, [r1, #0x28] + bl ov11_022F74A0 + mov r0, #1 +_022FC8B4: + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022FC8BC: .word ov11_02324D00 +_022FC8C0: .word ov11_02321F58 + arm_func_end ov11_022FC83C + + arm_func_start ov11_022FC8C4 +ov11_022FC8C4: ; 0x022FC8C4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x20 + mov sl, r0 + sub r0, sl, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + mov sb, r1 + mov r8, #0 + mov r0, #1 + bhi _022FC9D4 + ldr r1, _022FCA8C ; =ov11_02321FA0 + mov r2, sl + mov r3, sb + bl Debug_Print + ldr r0, _022FCA90 ; =ov11_02324D00 + mvn r4, #1 + ldr r6, [r0] + mov r7, r8 + add r5, r4, #1 + mov fp, r8 +_022FC920: + ldrsh r3, [r6, #6] + cmp r3, r5 + beq _022FC9B8 + ldrsh r0, [r6, #0xa] + cmp r0, sl + bne _022FC9B8 + cmp sb, r4 + ldrnesb r0, [r6, #0xc] + cmpne r0, sb + bne _022FC9B8 + ldr r1, _022FCA94 ; =ov11_02321FE0 + mov r0, #1 + mov r2, r7 + bl Debug_Print + str sb, [sp] + ldrsh r2, [r6, #6] + add r0, sp, #4 + mov r1, #4 + mov r3, sl + bl ov11_022E5EFC + cmp r0, #0 + beq _022FC9B8 + add r0, r6, #0x3c + add r1, sp, #4 + strh fp, [sp, #0x1c] + bl ov11_022DC9C8 + cmp r0, #0 + bne _022FC9B8 + add r0, r6, #0x2c + add r1, r6, #0x34 + bl ov11_022F1F08 + add r0, r6, #0x3c + mov r1, #0 + add r2, sp, #4 + bl ov11_022DCCEC + orr r8, r8, r0 + mov r0, #1 + strb r0, [r6, #0x14c] +_022FC9B8: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #0x10 + add r6, r6, #0x218 + blt _022FC920 + b _022FCA80 +_022FC9D4: + ldr r1, _022FCA98 ; =ov11_02321FF4 + mov r2, sl + mov r3, sb + bl Debug_Print + ldr r0, _022FCA90 ; =ov11_02324D00 + mvn r4, #1 + ldr r7, [r0] + mov r6, r8 + add r5, r4, #1 + mov fp, #1 +_022FC9FC: + ldrsh r3, [r7, #6] + cmp r3, r5 + beq _022FCA68 + cmp sb, r4 + ldrnesb r0, [r7, #0xd] + cmpne r0, sb + bne _022FCA68 + ldr r1, _022FCA94 ; =ov11_02321FE0 + mov r0, #1 + mov r2, r6 + bl Debug_Print + str sb, [sp] + ldrsh r2, [r7, #6] + add r0, sp, #4 + mov r1, #4 + mov r3, sl + bl ov11_022E5EFC + cmp r0, #0 + beq _022FCA68 + add r0, r7, #0x3c + mov r1, #0 + add r2, sp, #4 + strh fp, [sp, #0x1c] + bl ov11_022DCCEC + orr r8, r8, r0 + mov r0, #1 + strb r0, [r7, #0x14c] +_022FCA68: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + cmp r6, #0x10 + add r7, r7, #0x218 + blt _022FC9FC +_022FCA80: + mov r0, r8 + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FCA8C: .word ov11_02321FA0 +_022FCA90: .word ov11_02324D00 +_022FCA94: .word ov11_02321FE0 +_022FCA98: .word ov11_02321FF4 + arm_func_end ov11_022FC8C4 + + arm_func_start ov11_022FCA9C +ov11_022FCA9C: ; 0x022FCA9C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + sub r0, sl, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + mov sb, r1 + mov r8, #0 + mov r0, #1 + bhi _022FCB54 + ldr r1, _022FCBE0 ; =ov11_02322034 + mov r2, sl + mov r3, sb + bl Debug_Print + ldr r0, _022FCBE4 ; =ov11_02324D00 + mvn r4, #1 + ldr r6, [r0] + mov r7, r8 + add r5, r4, #1 + mov fp, #1 +_022FCAF4: + ldrsh r3, [r6, #6] + cmp r3, r5 + beq _022FCB38 + ldrsh r0, [r6, #0xa] + cmp sl, r0 + bne _022FCB38 + cmp sb, r4 + ldrnesb r0, [r6, #0xc] + cmpne sb, r0 + bne _022FCB38 + ldr r1, _022FCBE8 ; =ov11_02321FE0 + mov r0, fp + mov r2, r7 + bl Debug_Print + add r0, r6, #0x3c + bl ov11_022DCAE0 + orr r8, r8, r0 +_022FCB38: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #0x10 + add r6, r6, #0x218 + blt _022FCAF4 + b _022FCBD8 +_022FCB54: + ldr r1, _022FCBEC ; =ov11_02322074 + mov r2, sl + mov r3, sb + bl Debug_Print + ldr r0, _022FCBE4 ; =ov11_02324D00 + mvn r5, #0 + ldr sl, [r0] + ldr fp, _022FCBE8 ; =ov11_02321FE0 + mov r7, r8 + sub r4, r5, #1 + mov r6, #1 +_022FCB80: + ldrsh r3, [sl, #6] + cmp r3, r5 + beq _022FCBC0 + ldrsb r0, [sl, #0xd] + cmp r0, r5 + cmpne sb, r4 + cmpne sb, r0 + bne _022FCBC0 + mov r0, r6 + mov r1, fp + mov r2, r7 + bl Debug_Print + add r0, sl, #0x3c + bl ov11_022DD080 + strb r5, [sl, #0xd] + orr r8, r8, r0 +_022FCBC0: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #0x10 + add sl, sl, #0x218 + blt _022FCB80 +_022FCBD8: + mov r0, r8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FCBE0: .word ov11_02322034 +_022FCBE4: .word ov11_02324D00 +_022FCBE8: .word ov11_02321FE0 +_022FCBEC: .word ov11_02322074 + arm_func_end ov11_022FCA9C + + arm_func_start ov11_022FCBF0 +ov11_022FCBF0: ; 0x022FCBF0 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r0, _022FCC40 ; =ov11_02324D00 + mov r4, #0 + ldr r7, [r0] + mov r6, r4 + mvn r5, #0 +_022FCC08: + ldrsh r0, [r7, #6] + cmp r0, r5 + beq _022FCC20 + add r0, r7, #0x3c + bl ov11_022DCB00 + orr r4, r4, r0 +_022FCC20: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + cmp r6, #0x10 + add r7, r7, #0x218 + blt _022FCC08 + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022FCC40: .word ov11_02324D00 + arm_func_end ov11_022FCBF0 + + arm_func_start UnlockObjectRoutines +UnlockObjectRoutines: ; 0x022FCC44 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _022FCC9C ; =ov11_02324D00 + mov r5, #0 + ldr r4, [r1] + mov r6, r0 + mov r8, r5 + mvn r7, #0 +_022FCC60: + ldrsh r0, [r4, #6] + cmp r0, r7 + beq _022FCC7C + mov r1, r6 + add r0, r4, #0x3c + bl UnlockRoutine + orr r5, r5, r0 +_022FCC7C: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #0x10 + add r4, r4, #0x218 + blt _022FCC60 + mov r0, r5 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022FCC9C: .word ov11_02324D00 + arm_func_end UnlockObjectRoutines + + arm_func_start ov11_022FCCA0 +ov11_022FCCA0: ; 0x022FCCA0 + ldr r3, _022FCCC0 ; =ov11_02324D00 + mov r2, #0x218 + ldr r3, [r3] + smlabb r2, r0, r2, r3 + ldr r0, [r2, #0x12c] + str r0, [r1] + ldrsh r0, [r2, #6] + bx lr + .align 2, 0 +_022FCCC0: .word ov11_02324D00 + arm_func_end ov11_022FCCA0 + + arm_func_start ov11_022FCCC4 +ov11_022FCCC4: ; 0x022FCCC4 + ldr r3, _022FCD14 ; =ov11_02324D00 + mov r2, #0x218 + ldr ip, [r3] + mvn r3, #0 + smlabb ip, r0, r2, ip + ldrsh r0, [ip, #6] + cmp r0, r3 + moveq r0, #0 + streq r0, [r1] + beq _022FCD08 + ldr r2, [ip, #0x134] + ldr r0, [ip, #0x18] + add r0, r2, r0 + str r0, [r1] + ldr r2, [ip, #0x138] + ldr r0, [ip, #0x1c] + add r0, r2, r0 +_022FCD08: + str r0, [r1, #4] + ldrsh r0, [ip, #6] + bx lr + .align 2, 0 +_022FCD14: .word ov11_02324D00 + arm_func_end ov11_022FCCC4 + + arm_func_start GetCollidingObjectId +GetCollidingObjectId: ; 0x022FCD18 + stmdb sp!, {r3, r4, r5, lr} + ldr ip, _022FCDAC ; =ov11_02324D00 + mov r3, #0 + ldr ip, [ip] + mvn lr, #0 + b _022FCD9C +_022FCD30: + ldrsh r4, [ip, #6] + cmp r4, lr + beq _022FCD8C + ldr r4, [ip, #0x12c] + tst r4, r0 + beq _022FCD8C + ldr r5, [ip, #0x134] + ldr r4, [r2] + cmp r5, r4 + bge _022FCD8C + ldr r5, [ip, #0x13c] + ldr r4, [r1] + cmp r5, r4 + ble _022FCD8C + ldr r5, [ip, #0x138] + ldr r4, [r2, #4] + cmp r5, r4 + bge _022FCD8C + ldr r5, [ip, #0x140] + ldr r4, [r1, #4] + cmp r5, r4 + movgt r0, r3 + ldmgtia sp!, {r3, r4, r5, pc} +_022FCD8C: + add r3, r3, #1 + mov r3, r3, lsl #0x10 + mov r3, r3, asr #0x10 + add ip, ip, #0x218 +_022FCD9C: + cmp r3, #0x10 + blt _022FCD30 + mvn r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FCDAC: .word ov11_02324D00 + arm_func_end GetCollidingObjectId + + arm_func_start ov11_022FCDB0 +ov11_022FCDB0: ; 0x022FCDB0 + stmdb sp!, {r3, r4, r5, lr} + ldr ip, _022FCE44 ; =ov11_02324D00 + mov r3, #0 + ldr ip, [ip] + mvn lr, #0 + b _022FCE34 +_022FCDC8: + ldrsh r4, [ip, #6] + cmp r4, lr + beq _022FCE24 + ldr r4, [ip, #0x12c] + tst r4, r0 + beq _022FCE24 + ldr r5, [ip, #0x134] + ldr r4, [r2] + cmp r5, r4 + bge _022FCE24 + ldr r5, [ip, #0x13c] + ldr r4, [r1] + cmp r5, r4 + ble _022FCE24 + ldr r5, [ip, #0x138] + ldr r4, [r2, #4] + cmp r5, r4 + bge _022FCE24 + ldr r5, [ip, #0x140] + ldr r4, [r1, #4] + cmp r5, r4 + movgt r0, r3 + ldmgtia sp!, {r3, r4, r5, pc} +_022FCE24: + add r3, r3, #1 + mov r3, r3, lsl #0x10 + mov r3, r3, asr #0x10 + add ip, ip, #0x218 +_022FCE34: + cmp r3, #0x10 + blt _022FCDC8 + mvn r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FCE44: .word ov11_02324D00 + arm_func_end ov11_022FCDB0 + + arm_func_start ov11_022FCE48 +ov11_022FCE48: ; 0x022FCE48 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x18 + ldr r3, _022FCF6C ; =ov11_02321D88 + mov r5, r1 + ldr r1, [r3, #0xc] + ldr r3, [r3, #8] + str r1, [sp, #0x14] + str r3, [sp, #0x10] + ldr r1, [r5] + mov r6, r0 + mov r0, r1, asr #2 + add r0, r1, r0, lsr #29 + mov r1, r0, asr #3 + mov r0, r1, asr #7 + add r1, r1, r0, lsr #24 + mov r0, r1, asr #8 + str r0, [sp, #0x10] + ldr r3, [r5, #4] + mov r4, r2 + mov r0, r3, asr #2 + add r0, r3, r0, lsr #29 + mov r2, r0, asr #3 + mov r0, r2, asr #7 + add r2, r2, r0, lsr #24 + mov r0, r2, asr #8 + str r0, [sp, #0x14] + ldr r3, [r4] + ldr r0, [r4, #4] + sub lr, r3, #1 + sub ip, r0, #1 + mov r0, lr, asr #2 + mov r3, ip, asr #2 + add r0, lr, r0, lsr #29 + add r3, ip, r3, lsr #29 + mov lr, r0, asr #3 + mov ip, r3, asr #3 + mov r0, lr, asr #7 + mov r3, ip, asr #7 + add r0, lr, r0, lsr #24 + mov r0, r0, asr #8 + add r3, ip, r3, lsr #24 + mov ip, r3, asr #8 + sub r3, r0, r1, asr #8 + sub r1, ip, r2, asr #8 + add r2, r3, #1 + add r1, r1, #1 + str r0, [sp, #8] + str r2, [sp] + str r1, [sp, #4] + ldr r1, [r6, #0x12c] + str ip, [sp, #0xc] + tst r1, #0x40 + add r0, sp, #0x10 + add r1, sp, #0 + beq _022FCF34 + bl ov11_022F204C + cmp r0, #0 + movne r0, #0x40 + bne _022FCF64 +_022FCF34: + ldr r0, [r6, #0x12c] + tst r0, #0x100 + beq _022FCF60 + mov r2, r5 + mov r3, r4 + mvn r0, #0 + mov r1, #0x100 + bl GetCollidingActorId + cmp r0, #0 + movge r0, #0x100 + bge _022FCF64 +_022FCF60: + mov r0, #0 +_022FCF64: + add sp, sp, #0x18 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FCF6C: .word ov11_02321D88 + arm_func_end ov11_022FCE48 + + arm_func_start SetPositionLiveObject +SetPositionLiveObject: ; 0x022FCF70 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x10 + ldr r5, _022FD05C ; =ov11_02321D88 + mov r4, r0 + ldr r2, [r5, #0x34] + ldr r3, [r5, #0x30] + str r2, [sp, #0xc] + str r3, [sp, #8] + ldr r3, [r1] + ldr r2, [r4, #0x18] + add lr, sp, #8 + sub ip, r3, r2 + str ip, [sp, #8] + ldr r6, [r1, #4] + ldr r3, [r4, #0x1c] + add r2, sp, #0 + sub r3, r6, r3 + str r3, [sp, #0xc] + ldr r6, [r5, #0x28] + ldr r5, [r5, #0x2c] + str r6, [sp] + str r5, [sp, #4] + ldr r6, [r1] + ldr r5, [r4, #0x18] + add r6, r6, r5 + str r6, [sp] + ldr r5, [r1, #4] + ldr r1, [r4, #0x1c] + add r5, r5, r1 + str r5, [sp, #4] + ldr r1, [r4, #0x2c] + cmp ip, r1 + blt _022FD018 + ldr r1, [r4, #0x34] + cmp r6, r1 + bge _022FD018 + ldr r1, [r4, #0x30] + cmp r3, r1 + blt _022FD018 + ldr r1, [r4, #0x38] + cmp r5, r1 + blt _022FD020 +_022FD018: + mov r0, #0x40 + b _022FD054 +_022FD020: + mov r1, lr + bl ov11_022FCE48 + cmp r0, #0 + bne _022FD054 + ldr r2, [sp, #8] + ldr r1, [sp, #0xc] + mov r0, #0 + str r2, [r4, #0x134] + str r1, [r4, #0x138] + ldr r2, [sp] + ldr r1, [sp, #4] + str r2, [r4, #0x13c] + str r1, [r4, #0x140] +_022FD054: + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FD05C: .word ov11_02321D88 + arm_func_end SetPositionLiveObject + + arm_func_start GetIdLiveObject +GetIdLiveObject: ; 0x022FD060 + ldrsh r0, [r0, #4] + bx lr + arm_func_end GetIdLiveObject + + arm_func_start GetCollisionBoxLiveObject +GetCollisionBoxLiveObject: ; 0x022FD068 + ldr r2, [r0, #0x10] + ldr r0, [r0, #0x14] + str r2, [r1] + str r0, [r1, #4] + bx lr + arm_func_end GetCollisionBoxLiveObject + + arm_func_start SetPositionInitialLiveObject +SetPositionInitialLiveObject: ; 0x022FD07C + cmp r1, #0 + beq _022FD0C8 + ldr r3, [r1] + ldr r2, [r0, #0x18] + sub r2, r3, r2 + str r2, [r0, #0x134] + ldr r3, [r1] + ldr r2, [r0, #0x18] + add r2, r3, r2 + str r2, [r0, #0x13c] + ldr r3, [r1, #4] + ldr r2, [r0, #0x1c] + sub r2, r3, r2 + str r2, [r0, #0x138] + ldr r2, [r1, #4] + ldr r1, [r0, #0x1c] + add r1, r2, r1 + str r1, [r0, #0x140] + bx lr +_022FD0C8: + ldr r3, [r0, #0x24] + ldr r1, [r0, #0x18] + mov r2, #0 + sub r1, r3, r1 + str r1, [r0, #0x134] + ldr r3, [r0, #0x24] + ldr r1, [r0, #0x18] + add r1, r3, r1 + str r1, [r0, #0x13c] + ldr ip, [r0, #0x28] + ldr r3, [r0, #0x1c] + add r1, r0, #0x100 + sub r3, ip, r3 + str r3, [r0, #0x138] + ldr ip, [r0, #0x28] + ldr r3, [r0, #0x1c] + add r3, ip, r3 + str r3, [r0, #0x140] + str r2, [r0, #0x148] + str r2, [r0, #0x144] + ldrsb r2, [r1, #0x30] + ldrsb r1, [r0, #0x20] + cmp r2, r1 + movne r1, #1 + strneb r1, [r0, #0x14c] + ldrsb r1, [r0, #0x20] + strb r1, [r0, #0x130] + bx lr + arm_func_end SetPositionInitialLiveObject + + arm_func_start SetMovementRangeLiveObject +SetMovementRangeLiveObject: ; 0x022FD138 + ldr r3, [r1] + ldr r1, [r1, #4] + str r3, [r0, #0x2c] + str r1, [r0, #0x30] + ldr r3, [r2] + ldr r1, [r2, #4] + str r3, [r0, #0x34] + str r1, [r0, #0x38] + bx lr + arm_func_end SetMovementRangeLiveObject + + arm_func_start GetCollisionBoxCenterLiveObject +GetCollisionBoxCenterLiveObject: ; 0x022FD15C + ldr r3, [r0, #0x134] + ldr r2, [r0, #0x18] + add r2, r3, r2 + str r2, [r1] + ldr r2, [r0, #0x138] + ldr r0, [r0, #0x1c] + add r0, r2, r0 + str r0, [r1, #4] + bx lr + arm_func_end GetCollisionBoxCenterLiveObject + + arm_func_start SetPositionLiveObjectVeneer +SetPositionLiveObjectVeneer: ; 0x022FD180 + ldr ip, _022FD188 ; =SetPositionLiveObject + bx ip + .align 2, 0 +_022FD188: .word SetPositionLiveObject + arm_func_end SetPositionLiveObjectVeneer + + arm_func_start GetHeightLiveObject +GetHeightLiveObject: ; 0x022FD18C + ldr r3, [r0, #0x144] + str r3, [r1] + ldr r0, [r0, #0x148] + str r0, [r2] + bx lr + arm_func_end GetHeightLiveObject diff --git a/asm/overlay_11_022FD308.s b/asm/overlay_11_022FD308.s new file mode 100644 index 00000000..dbf31dcd --- /dev/null +++ b/asm/overlay_11_022FD308.s @@ -0,0 +1,1343 @@ + .include "asm/macros.inc" + .include "overlay_11_022FD308.inc" + + .text + + arm_func_start SetBlinkLiveObject +SetBlinkLiveObject: ; 0x022FD308 + ldr ip, _022FD314 ; =ov11_022F4984 + add r0, r0, #0x154 + bx ip + .align 2, 0 +_022FD314: .word ov11_022F4984 + arm_func_end SetBlinkLiveObject + + arm_func_start SetPositionOffsetLiveObject +SetPositionOffsetLiveObject: ; 0x022FD318 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + ldr r2, _022FD478 ; =ov11_02321D88 + mov r5, r0 + ldr r0, [r2, #4] + ldr r3, [r2] + str r0, [sp, #4] + str r3, [sp] + ldr r3, [r5, #0x134] + ldr r0, [r1] + mov r4, #0 + add r0, r3, r0 + str r0, [sp] + ldr ip, [r5, #0x138] + ldr r3, [r1, #4] + add r3, ip, r3 + str r3, [sp, #4] + ldr r3, [r2, #0x38] + ldr r2, [r2, #0x3c] + str r3, [sp, #8] + str r2, [sp, #0xc] + ldr r3, [r5, #0x13c] + ldr r2, [r1] + add r3, r3, r2 + str r3, [sp, #8] + ldr r2, [r5, #0x140] + ldr r1, [r1, #4] + add r1, r2, r1 + str r1, [sp, #0xc] + ldr r1, [r5, #0x2c] + cmp r0, r1 + bge _022FD3B4 + str r1, [sp] + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x10] + mov r4, #1 + add r0, r1, r0 + str r0, [sp, #8] + b _022FD3D8 +_022FD3B4: + ldr r1, [r5, #0x34] + cmp r3, r1 + blt _022FD3D8 + ldr r0, [r5, #0x10] + mov r4, #1 + sub r0, r1, r0 + str r0, [sp] + ldr r0, [r5, #0x34] + str r0, [sp, #8] +_022FD3D8: + ldr r1, [r5, #0x30] + ldr r0, [sp, #4] + cmp r0, r1 + bge _022FD404 + str r1, [sp, #4] + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x14] + mov r4, #1 + add r0, r1, r0 + str r0, [sp, #0xc] + b _022FD42C +_022FD404: + ldr r1, [r5, #0x38] + ldr r0, [sp, #0xc] + cmp r0, r1 + blt _022FD42C + ldr r0, [r5, #0x14] + mov r4, #1 + sub r0, r1, r0 + str r0, [sp, #4] + ldr r0, [r5, #0x38] + str r0, [sp, #0xc] +_022FD42C: + add r1, sp, #0 + add r2, sp, #8 + mov r0, r5 + bl ov11_022FCE48 + cmp r0, #0 + bne _022FD470 + ldr r1, [sp] + ldr r0, [sp, #4] + cmp r4, #0 + str r1, [r5, #0x134] + str r0, [r5, #0x138] + ldr r1, [sp, #8] + ldr r0, [sp, #0xc] + str r1, [r5, #0x13c] + str r0, [r5, #0x140] + movne r0, #0x40 + moveq r0, #0 +_022FD470: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FD478: .word ov11_02321D88 + arm_func_end SetPositionOffsetLiveObject + + arm_func_start ov11_022FD47C +ov11_022FD47C: ; 0x022FD47C + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r0, _022FD50C ; =ov11_02324D00 + mov r4, #0 + ldr r5, [r0] + mov r7, r4 + mvn r6, #0 +_022FD494: + ldrsh r0, [r5, #6] + cmp r0, r6 + ldrneb r0, [r5, #8] + cmpne r0, #0 + beq _022FD4F0 + add r0, r5, #0x3c + bl FuncThatCallsRunNextOpcode + cmp r0, #0 + beq _022FD4CC + cmp r0, #6 + bne _022FD4CC + mov r0, r4 + bl DeleteLiveObject + b _022FD4F0 +_022FD4CC: + ldrb r0, [r5, #0x14c] + cmp r0, #0 + beq _022FD4F0 + strb r7, [r5, #0x14c] + add r0, r5, #0x100 + ldrsh r1, [r0, #0x4e] + mov r2, r7 + add r0, r5, #0x154 + bl SetAnimDataFields2 +_022FD4F0: + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 + cmp r4, #0x10 + add r5, r5, #0x218 + blt _022FD494 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022FD50C: .word ov11_02324D00 + arm_func_end ov11_022FD47C + + arm_func_start ov11_022FD510 +ov11_022FD510: ; 0x022FD510 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + ldr r0, _022FD61C ; =ov11_02321D88 + ldr r1, _022FD620 ; =ov11_02324D00 + ldr r8, [r0, #0x10] + ldr r7, [r0, #0x14] + mov sb, #0 + ldr sl, [r1] + str r8, [sp, #4] + str r7, [sp, #8] + mov fp, sb + mvn r4, #0 +_022FD540: + ldrsh r0, [sl, #6] + cmp r0, r4 + ldrneb r0, [sl, #8] + cmpne r0, #0 + beq _022FD5FC + str r8, [sp, #0xc] + str r7, [sp, #0x10] + ldr r2, [sl, #0x134] + ldr r1, [sl, #0x18] +#ifdef JAPAN + add r0, sl, #0x154 +#else + add r0, sl, #0x100 +#endif + add r1, r2, r1 + str r1, [sp, #0xc] + ldr r2, [sl, #0x138] + ldr r1, [sl, #0x1c] + add r1, r2, r1 + str r1, [sp, #0x10] +#ifndef JAPAN + ldrsh r1, [r0, #0xe6] +#endif + ldr r6, [sl, #0x144] + ldr r5, [sl, #0x148] +#ifdef JAPAN + bl ov11_022F5FE8_JP + cmp r0, #0 + beq _022FD5B4 + strb fp, [sl, #0x14c] + add r0, sl, #0x100 +#else + cmp r1, #0 + bge _022FD5B4 + ldrsh r1, [r0, #0xe0] + cmp r1, #0 + ble _022FD5B4 + strb fp, [sl, #0x14c] +#endif + ldrsh r1, [r0, #0x4e] + mov r2, fp + add r0, sl, #0x154 + bl SetAnimDataFields2 +_022FD5B4: + add r3, sl, #0x100 + ldrsh r1, [r3, #0x50] + cmp r1, r4 + beq _022FD5EC + mov r0, #0 + str r0, [sp] + ldrsh r2, [r3, #0x52] + ldrsb r3, [r3, #0x30] + add r0, sl, #0x154 + bl ov11_022F5408 + add r1, sl, #0x100 + strh r4, [r1, #0x50] + mov r0, #0 + strh r0, [r1, #0x52] +_022FD5EC: + add r1, sp, #0xc + add r0, sl, #0x154 + add r2, r6, r5 + bl AnimRelatedFunction__022F6F14 +_022FD5FC: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 + cmp sb, #0x10 + add sl, sl, #0x218 + blt _022FD540 + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FD61C: .word ov11_02321D88 +_022FD620: .word ov11_02324D00 + arm_func_end ov11_022FD510 + + arm_func_start ov11_022FD624 +ov11_022FD624: ; 0x022FD624 + stmdb sp!, {r3, lr} + mov r0, #0x2140 + mov r1, #6 + bl MemAlloc + ldr r1, _022FD668 ; =ov11_02324D04 + mov r3, #0 + str r0, [r1] + mvn r2, #0 +_022FD644: + add r1, r3, #1 + mov r1, r1, lsl #0x10 + mov r3, r1, asr #0x10 + strh r2, [r0, #6] + cmp r3, #0x10 + add r0, r0, #0x214 + blt _022FD644 + bl ov11_022FD66C + ldmia sp!, {r3, pc} + .align 2, 0 +_022FD668: .word ov11_02324D04 + arm_func_end ov11_022FD624 + + arm_func_start ov11_022FD66C +ov11_022FD66C: ; 0x022FD66C + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _022FD6B0 ; =ov11_02324D04 + mov r5, #0 + ldr r6, [r0] + mvn r4, #0 +_022FD680: + ldrsh r0, [r6, #6] + cmp r0, r4 + beq _022FD694 + mov r0, r5 + bl DeleteLivePerformer +_022FD694: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + cmp r5, #0x10 + add r6, r6, #0x214 + blt _022FD680 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FD6B0: .word ov11_02324D04 + arm_func_end ov11_022FD66C + + arm_func_start ov11_022FD6B4 +ov11_022FD6B4: ; 0x022FD6B4 + stmdb sp!, {r3, lr} + bl ov11_022FD66C + ldr r0, _022FD6D8 ; =ov11_02324D04 + ldr r0, [r0] + bl MemFree + ldr r0, _022FD6D8 ; =ov11_02324D04 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022FD6D8: .word ov11_02324D04 + arm_func_end ov11_022FD6B4 + + arm_func_start ov11_022FD6DC +ov11_022FD6DC: ; 0x022FD6DC + mvn r1, #0 + cmp r0, r1 + beq _022FD720 + ldr r1, _022FD728 ; =ov11_02324D04 + mov r3, #0 + ldr r2, [r1] + b _022FD718 +_022FD6F8: + ldrsh r1, [r2, #6] + cmp r1, r0 + moveq r0, r3 + bxeq lr + add r1, r3, #1 + mov r1, r1, lsl #0x10 + mov r3, r1, asr #0x10 + add r2, r2, #0x214 +_022FD718: + cmp r3, #0x10 + blt _022FD6F8 +_022FD720: + mvn r0, #0 + bx lr + .align 2, 0 +_022FD728: .word ov11_02324D04 + arm_func_end ov11_022FD6DC + + arm_func_start ov11_022FD72C +ov11_022FD72C: ; 0x022FD72C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0xc + mov r8, r1 + ldrh r5, [r8] + ldr r1, _022FDA68 ; =ov11_02320858 + movs sb, r0 + mov r7, r2 + mov r6, r3 + add r4, r1, r5, lsl #2 + bpl _022FD7C0 + ldrsb r0, [r4] + cmp r0, #1 + bne _022FD770 + mov r0, r5, lsl #0x10 + mov r0, r0, asr #0x10 + bl ov11_022FD6DC + mov sb, r0 +_022FD770: + cmp sb, #0 + bge _022FD7B4 + ldr r0, _022FDA6C ; =ov11_02324D04 + mov r3, #0 + ldr r2, [r0] + mvn r1, #0 + b _022FD7AC +_022FD78C: + ldrsh r0, [r2, #6] + cmp r0, r1 + moveq sb, r3 + beq _022FD7B4 + add r0, r3, #1 + mov r0, r0, lsl #0x10 + mov r3, r0, asr #0x10 + add r2, r2, #0x214 +_022FD7AC: + cmp r3, #0x10 + blt _022FD78C +_022FD7B4: + cmp sb, #0 + mvnlt r0, #0 + blt _022FDA60 +_022FD7C0: + ldr r0, _022FDA6C ; =ov11_02324D04 + ldrsb r1, [r4] + ldr r2, [r0] + mov r0, #0x214 + stmia sp, {r1, r7} + str r6, [sp, #8] + ldrh r3, [r8] + smlabb r5, sb, r0, r2 + ldr r1, _022FDA70 ; =ov11_02322160 + mov r2, sb + mov r0, #1 + bl Debug_Print + ldrsh r1, [r5, #6] + mvn r0, #0 + cmp r1, r0 + moveq r0, #1 + movne r0, #0 + ands sl, r0, #0xff + beq _022FD81C + mov r1, #0 + add r0, r5, #0x150 + strb r1, [r5, #8] + bl ov11_022F4A14 +_022FD81C: + sub r0, r7, #1 + strh sb, [r5, #4] + mov r0, r0, lsl #0x10 + ldrh r1, [r8] + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + strh r1, [r5, #6] + strlsh r7, [r5, #0xa] + strlsb r6, [r5, #0xc] + mvnls r0, #0 + strlsb r0, [r5, #0xd] + bls _022FD868 + cmp sl, #0 + mvnne r0, #0 + strneh r0, [r5, #0xa] + strneb r0, [r5, #0xc] + strb r6, [r5, #0xd] +_022FD868: + ldrsb r0, [r4] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _022FD8CC +_022FD878: ; jump table + b _022FD8CC ; case 0 + b _022FD890 ; case 1 + b _022FD89C ; case 2 + b _022FD8A8 ; case 3 + b _022FD8B4 ; case 4 + b _022FD8C0 ; case 5 +_022FD890: + mov r0, #0x800000 + str r0, [r5, #0x128] + b _022FD8D4 +_022FD89C: + mov r0, #0x20c0000 + str r0, [r5, #0x128] + b _022FD8D4 +_022FD8A8: + mov r0, #0x20c0000 + str r0, [r5, #0x128] + b _022FD8D4 +_022FD8B4: + mov r0, #0x2000000 + str r0, [r5, #0x128] + b _022FD8D4 +_022FD8C0: + ldr r0, _022FDA74 ; =0x02020000 + str r0, [r5, #0x128] + b _022FD8D4 +_022FD8CC: + mov r0, #0x20c0000 + str r0, [r5, #0x128] +_022FD8D4: + ldrb r0, [r4, #3] + cmp r0, #0 + ldrne r0, [r5, #0x128] + orrne r0, r0, #0x80000000 + strne r0, [r5, #0x128] + ldrb r0, [r4, #1] + cmp r0, #0 + ldreqb r0, [r8, #3] + moveq r0, r0, lsl #0xb + streq r0, [r5, #0x10] + ldreqb r0, [r8, #4] + movne r0, r0, lsl #0xb + strne r0, [r5, #0x10] + ldrneb r0, [r4, #2] + mov r0, r0, lsl #0xb + str r0, [r5, #0x14] + ldr r0, [r5, #0x10] + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 + str r0, [r5, #0x18] + ldr r0, [r5, #0x14] + add r0, r0, r0, lsr #31 + mov r0, r0, asr #1 + str r0, [r5, #0x1c] + ldrsb r0, [r8, #2] + strb r0, [r5, #0x20] + ldrb r0, [r8, #7] + tst r0, #4 + bne _022FD968 + ldrb r0, [r8, #5] + mov r0, r0, lsl #0xb + str r0, [r5, #0x24] + ldrb r0, [r8, #7] + tst r0, #2 + ldrne r0, [r5, #0x24] + addne r0, r0, #0x400 + strne r0, [r5, #0x24] +_022FD968: + ldrb r0, [r8, #8] + tst r0, #4 + bne _022FD994 + ldrb r0, [r8, #6] + mov r0, r0, lsl #0xb + str r0, [r5, #0x28] + ldrb r0, [r8, #8] + tst r0, #2 + ldrne r0, [r5, #0x28] + addne r0, r0, #0x400 + strne r0, [r5, #0x28] +_022FD994: + ldrb r0, [sp, #0x30] + cmp r0, #0 + ldrne r0, [r5, #0x128] + orrne r0, r0, #0x800000 + strne r0, [r5, #0x128] + cmp sl, #0 + beq _022FDA54 + ldrsb r0, [r5, #0x20] + mov r2, #0 + strb r0, [r5, #0x12c] + ldr r3, [r5, #0x24] + ldr r1, [r5, #0x18] + add r0, r5, #0x2c + sub r1, r3, r1 + str r1, [r5, #0x130] + ldr r4, [r5, #0x24] + ldr r3, [r5, #0x18] + add r1, r5, #0x34 + add r3, r4, r3 + str r3, [r5, #0x138] + ldr r4, [r5, #0x28] + ldr r3, [r5, #0x1c] + sub r3, r4, r3 + str r3, [r5, #0x134] + ldr r4, [r5, #0x28] + ldr r3, [r5, #0x1c] + add r3, r4, r3 + str r3, [r5, #0x13c] + str r2, [r5, #0x144] + str r2, [r5, #0x140] + bl ov11_022F1F08 + add r0, r5, #0x100 + mov r2, #0x800 + mov r1, #1 + strh r2, [r0, #0x4a] + strb r1, [r5, #0x148] + sub r1, r1, #2 + strh r1, [r0, #0x4c] + mov r1, #0 + strh r1, [r0, #0x4e] + ldrsh r1, [r5, #6] + ldr r2, [r5, #0x128] + add r0, r5, #0x150 + bl ov11_022F6F4C + ldr r1, _022FDA78 ; =PERFORMER_FUNCTION_TABLE + mov r2, r5 + add r0, r5, #0x3c + bl InitScriptRoutine +_022FDA54: + mov r1, #1 + mov r0, sb + strb r1, [r5, #8] +_022FDA60: + add sp, sp, #0xc + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022FDA68: .word ov11_02320858 +_022FDA6C: .word ov11_02324D04 +_022FDA70: .word ov11_02322160 +_022FDA74: .word 0x02020000 +_022FDA78: .word PERFORMER_FUNCTION_TABLE + arm_func_end ov11_022FD72C + + arm_func_start ov11_022FDA7C +ov11_022FDA7C: ; 0x022FDA7C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov sl, r0 + mov sb, r1 + ldr r1, _022FDBDC ; =ov11_023221A8 + mov r2, sl + mov r3, sb + mov r0, #1 + bl Debug_Print + sub r0, sl, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + mov r8, #0 + bhi _022FDB44 + ldr r0, _022FDBE0 ; =ov11_02324D04 + mvn r4, #1 + ldr r7, [r0] + ldr fp, _022FDBE4 ; =ov11_023221D8 + add r5, r4, #1 + mov r6, #1 +_022FDAD8: + ldrsh r3, [r7, #6] + cmp r3, r5 + beq _022FDB28 + ldrsh r2, [r7, #0xa] + mov r0, r6 + mov r1, fp + str r2, [sp] + ldrsb ip, [r7, #0xc] + mov r2, r8 + str ip, [sp, #4] + bl Debug_Print + ldrsh r0, [r7, #0xa] + cmp sl, r0 + bne _022FDB28 + cmp sb, r4 + ldrnesb r0, [r7, #0xc] + cmpne sb, r0 + bne _022FDB28 + mov r0, r8 + bl DeleteLivePerformer +_022FDB28: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #0x10 + add r7, r7, #0x214 + blt _022FDAD8 + b _022FDBD4 +_022FDB44: + ldr r0, _022FDBE0 ; =ov11_02324D04 + mvn r5, #1 + add r6, r5, #1 + ldr sl, [r0] + mov r4, r6 + mov r7, r6 + mov fp, #1 +_022FDB60: + ldrsh r3, [sl, #6] + cmp r3, r7 + beq _022FDBBC + ldrsb ip, [sl, #0xd] + ldr r1, _022FDBE8 ; =ov11_02322204 + mov r0, fp + mov r2, r8 + str ip, [sp] + bl Debug_Print + ldrsb r0, [sl, #0xd] + cmp r0, r6 + beq _022FDBA8 + cmp sb, r5 + cmpne sb, r0 + bne _022FDBBC + mov r0, r8 + bl DeleteLivePerformer + b _022FDBBC +_022FDBA8: + ldrsh r0, [sl, #0xa] + cmp r0, r4 + bne _022FDBBC + mov r0, r8 + bl DeleteLivePerformer +_022FDBBC: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #0x10 + add sl, sl, #0x214 + blt _022FDB60 +_022FDBD4: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FDBDC: .word ov11_023221A8 +_022FDBE0: .word ov11_02324D04 +_022FDBE4: .word ov11_023221D8 +_022FDBE8: .word ov11_02322204 + arm_func_end ov11_022FDA7C + + arm_func_start DeleteLivePerformer +DeleteLivePerformer: ; 0x022FDBEC + stmdb sp!, {r4, lr} + ldr r1, _022FDC2C ; =ov11_02324D04 + mov r2, r0 + ldr r1, [r1] + mov r0, #0x214 + smlabb r4, r2, r0, r1 + ldr r1, _022FDC30 ; =ov11_02322224 + mov r0, #1 + bl Debug_Print + add r0, r4, #0x150 + bl ov11_022F6F9C + add r0, r4, #0x3c + bl ov11_022DC934 + mvn r0, #0 + strh r0, [r4, #6] + ldmia sp!, {r4, pc} + .align 2, 0 +_022FDC2C: .word ov11_02324D04 +_022FDC30: .word ov11_02322224 + arm_func_end DeleteLivePerformer + + arm_func_start ov11_022FDC34 +ov11_022FDC34: ; 0x022FDC34 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov sl, r0 + mov sb, r1 + ldr r1, _022FDD8C ; =ov11_023221A8 + mov r2, sl + mov r3, sb + mov r0, #1 + bl Debug_Print + sub r0, sl, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + mov r8, #0 + bhi _022FDD04 + ldr r0, _022FDD90 ; =ov11_02324D04 + mvn r5, #0 + ldr r7, [r0] + ldr fp, _022FDD94 ; =ov11_023221D8 + sub r4, r5, #1 + mov r6, #1 +_022FDC90: + ldrsh r3, [r7, #6] + cmp r3, r5 + beq _022FDCE8 + ldrsh r2, [r7, #0xa] + mov r0, r6 + mov r1, fp + str r2, [sp] + ldrsb ip, [r7, #0xc] + mov r2, r8 + str ip, [sp, #4] + bl Debug_Print + ldrsh r0, [r7, #0xa] + cmp sl, r0 + bne _022FDCE8 + cmp sb, r4 + ldrnesb r0, [r7, #0xc] + cmpne sb, r0 + bne _022FDCE8 + mov r1, #0 + add r0, r7, #0x3c + bl ov11_022DCFC4 + strh r5, [r7, #0xa] +_022FDCE8: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #0x10 + add r7, r7, #0x214 + blt _022FDC90 + b _022FDD84 +_022FDD04: + ldr r0, _022FDD90 ; =ov11_02324D04 + mvn r5, #0 + mov r7, #1 + ldr sl, [r0] + ldr r6, _022FDD94 ; =ov11_023221D8 + sub r4, r5, #1 + mov fp, r7 +_022FDD20: + ldrsh r3, [sl, #6] + cmp r3, r5 + beq _022FDD6C + ldrsh r2, [sl, #0xa] + mov r0, r7 + mov r1, r6 + str r2, [sp] + ldrsb ip, [sl, #0xc] + mov r2, r8 + str ip, [sp, #4] + bl Debug_Print + cmp sb, r4 + ldrnesb r0, [sl, #0xd] + cmpne sb, r0 + bne _022FDD6C + mov r1, fp + add r0, sl, #0x3c + bl ov11_022DCFC4 + strb r5, [sl, #0xd] +_022FDD6C: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #0x10 + add sl, sl, #0x214 + blt _022FDD20 +_022FDD84: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FDD8C: .word ov11_023221A8 +_022FDD90: .word ov11_02324D04 +_022FDD94: .word ov11_023221D8 + arm_func_end ov11_022FDC34 + + arm_func_start SetAttributeBitfieldLivePerformer +SetAttributeBitfieldLivePerformer: ; 0x022FDD98 + stmdb sp!, {r3, lr} + ldr r3, _022FDDD4 ; =ov11_02324D04 + mov r2, #0x214 + ldr ip, [r3] + mvn r3, #0 + smlabb ip, r0, r2, ip + ldrsh r0, [ip, #6] + cmp r0, r3 + ldmeqia sp!, {r3, pc} + ldr r2, [ip, #0x128] + add r0, ip, #0x150 + orr r1, r2, r1 + str r1, [ip, #0x128] + bl SetAnimDataFieldsWrapper + ldmia sp!, {r3, pc} + .align 2, 0 +_022FDDD4: .word ov11_02324D04 + arm_func_end SetAttributeBitfieldLivePerformer + + arm_func_start ResetAttributeBitfieldLivePerformer +ResetAttributeBitfieldLivePerformer: ; 0x022FDDD8 + stmdb sp!, {r3, lr} + ldr r3, _022FDE18 ; =ov11_02324D04 + mov r2, #0x214 + ldr ip, [r3] + mvn r3, #0 + smlabb ip, r0, r2, ip + ldrsh r0, [ip, #6] + cmp r0, r3 + ldmeqia sp!, {r3, pc} + ldr r2, [ip, #0x128] + eor r0, r1, r3 + and r1, r2, r0 + add r0, ip, #0x150 + str r1, [ip, #0x128] + bl SetAnimDataFieldsWrapper + ldmia sp!, {r3, pc} + .align 2, 0 +_022FDE18: .word ov11_02324D04 + arm_func_end ResetAttributeBitfieldLivePerformer + + arm_func_start ov11_022FDE1C +ov11_022FDE1C: ; 0x022FDE1C + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mvn r0, #0 + cmp r4, r0 + beq _022FDE78 + ldr r0, _022FDE80 ; =ov11_02324D04 + mov r6, #0 + ldr r5, [r0] + b _022FDE70 +_022FDE40: + ldrsh r0, [r5, #6] + cmp r0, r4 + bne _022FDE60 + add r0, r5, #0x3c + bl ov11_022DC958 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} +_022FDE60: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + add r5, r5, #0x214 +_022FDE70: + cmp r6, #0x10 + blt _022FDE40 +_022FDE78: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FDE80: .word ov11_02324D04 + arm_func_end ov11_022FDE1C + + arm_func_start ov11_022FDE84 +ov11_022FDE84: ; 0x022FDE84 + stmdb sp!, {r4, r5, r6, lr} + mov r4, r0 + mvn r0, #0 + cmp r4, r0 + beq _022FDEE0 + ldr r0, _022FDEE8 ; =ov11_02324D04 + mov r6, #0 + ldr r5, [r0] + b _022FDED8 +_022FDEA8: + ldrsh r0, [r5, #6] + cmp r0, r4 + bne _022FDEC8 + add r0, r5, #0x3c + bl ov11_022DC9A0 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r4, r5, r6, pc} +_022FDEC8: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + add r5, r5, #0x214 +_022FDED8: + cmp r6, #0x10 + blt _022FDEA8 +_022FDEE0: + mov r0, #0 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FDEE8: .word ov11_02324D04 + arm_func_end ov11_022FDE84 + + arm_func_start ov11_022FDEEC +ov11_022FDEEC: ; 0x022FDEEC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + mov r6, r0 + mvn r0, #0 + mov r5, r1 + mov r4, r2 + cmp r6, r0 + beq _022FDF48 + ldr r0, _022FDF50 ; =ov11_02324D04 + mov r8, #0 + ldr r7, [r0] +_022FDF14: + ldrsh r0, [r7, #6] + cmp r0, r6 + bne _022FDF30 + mov r1, r5 + mov r2, r4 + add r0, r7, #0x3c + bl ov11_022DCCEC +_022FDF30: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #0x10 + add r7, r7, #0x214 + blt _022FDF14 +_022FDF48: + mov r0, #0 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022FDF50: .word ov11_02324D04 + arm_func_end ov11_022FDEEC + + arm_func_start ov11_022FDF54 +ov11_022FDF54: ; 0x022FDF54 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + mov r7, #1 + mov sb, r0 + sub r0, r7, #2 + mov r8, r1 + cmp sb, r0 + beq _022FDFC8 + ldr r0, _022FDFD0 ; =ov11_02324D04 + mov r6, #0 + ldr r5, [r0] + mov r4, r6 +_022FDF80: + ldrsh r0, [r5, #6] + cmp r0, sb + bne _022FDFB0 + add r0, r5, #0x3c + bl ov11_022DC958 + cmp r0, #0 + beq _022FDFB0 + mov r1, r8 + add r0, r5, #0x3c + bl ov11_022DCA58 + cmp r0, #0 + moveq r7, r4 +_022FDFB0: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + cmp r6, #0x10 + add r5, r5, #0x214 + blt _022FDF80 +_022FDFC8: + mov r0, r7 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_022FDFD0: .word ov11_02324D04 + arm_func_end ov11_022FDF54 + + arm_func_start ov11_022FDFD4 +ov11_022FDFD4: ; 0x022FDFD4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x20 + mov sl, r0 + sub r0, sl, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + mov sb, r1 + mov r8, #0 + mov r0, #1 + bhi _022FE0E4 + ldr r1, _022FE19C ; =ov11_02322244 + mov r2, sl + mov r3, sb + bl Debug_Print + ldr r0, _022FE1A0 ; =ov11_02324D04 + mvn r4, #1 + ldr r6, [r0] + mov r7, r8 + add r5, r4, #1 + mov fp, r8 +_022FE030: + ldrsh r3, [r6, #6] + cmp r3, r5 + beq _022FE0C8 + ldrsh r0, [r6, #0xa] + cmp r0, sl + bne _022FE0C8 + cmp sb, r4 + ldrnesb r0, [r6, #0xc] + cmpne r0, sb + bne _022FE0C8 + ldr r1, _022FE1A4 ; =ov11_02322288 + mov r0, #1 + mov r2, r7 + bl Debug_Print + str sb, [sp] + ldrsh r2, [r6, #6] + add r0, sp, #4 + mov r1, #5 + mov r3, sl + bl ov11_022E5EFC + cmp r0, #0 + beq _022FE0C8 + add r0, r6, #0x3c + add r1, sp, #4 + strh fp, [sp, #0x1c] + bl ov11_022DC9C8 + cmp r0, #0 + bne _022FE0C8 + add r0, r6, #0x2c + add r1, r6, #0x34 + bl ov11_022F1F08 + add r0, r6, #0x3c + mov r1, #0 + add r2, sp, #4 + bl ov11_022DCCEC + orr r8, r8, r0 + mov r0, #1 + strb r0, [r6, #0x148] +_022FE0C8: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #0x10 + add r6, r6, #0x214 + blt _022FE030 + b _022FE190 +_022FE0E4: + ldr r1, _022FE1A8 ; =ov11_0232229C + mov r2, sl + mov r3, sb + bl Debug_Print + ldr r0, _022FE1A0 ; =ov11_02324D04 + mvn r4, #1 + ldr r7, [r0] + mov r6, r8 + add r5, r4, #1 + mov fp, #1 +_022FE10C: + ldrsh r3, [r7, #6] + cmp r3, r5 + beq _022FE178 + cmp sb, r4 + ldrnesb r0, [r7, #0xd] + cmpne r0, sb + bne _022FE178 + ldr r1, _022FE1A4 ; =ov11_02322288 + mov r0, #1 + mov r2, r6 + bl Debug_Print + str sb, [sp] + ldrsh r2, [r7, #6] + add r0, sp, #4 + mov r1, #5 + mov r3, sl + bl ov11_022E5EFC + cmp r0, #0 + beq _022FE178 + add r0, r7, #0x3c + mov r1, #0 + add r2, sp, #4 + strh fp, [sp, #0x1c] + bl ov11_022DCCEC + orr r8, r8, r0 + mov r0, #1 + strb r0, [r7, #0x148] +_022FE178: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + cmp r6, #0x10 + add r7, r7, #0x214 + blt _022FE10C +_022FE190: + mov r0, r8 + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FE19C: .word ov11_02322244 +_022FE1A0: .word ov11_02324D04 +_022FE1A4: .word ov11_02322288 +_022FE1A8: .word ov11_0232229C + arm_func_end ov11_022FDFD4 + + arm_func_start ov11_022FE1AC +ov11_022FE1AC: ; 0x022FE1AC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov sl, r0 + sub r0, sl, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + mov sb, r1 + mov r8, #0 + mov r0, #1 + bhi _022FE264 + ldr r1, _022FE2F0 ; =ov11_023222E0 + mov r2, sl + mov r3, sb + bl Debug_Print + ldr r0, _022FE2F4 ; =ov11_02324D04 + mvn r4, #1 + ldr r6, [r0] + mov r7, r8 + add r5, r4, #1 + mov fp, #1 +_022FE204: + ldrsh r3, [r6, #6] + cmp r3, r5 + beq _022FE248 + ldrsh r0, [r6, #0xa] + cmp sl, r0 + bne _022FE248 + cmp sb, r4 + ldrnesb r0, [r6, #0xc] + cmpne sb, r0 + bne _022FE248 + ldr r1, _022FE2F8 ; =ov11_02322288 + mov r0, fp + mov r2, r7 + bl Debug_Print + add r0, r6, #0x3c + bl ov11_022DCAE0 + orr r8, r8, r0 +_022FE248: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #0x10 + add r6, r6, #0x214 + blt _022FE204 + b _022FE2E8 +_022FE264: + ldr r1, _022FE2FC ; =ov11_02322324 + mov r2, sl + mov r3, sb + bl Debug_Print + ldr r0, _022FE2F4 ; =ov11_02324D04 + mvn r5, #0 + ldr sl, [r0] + ldr fp, _022FE2F8 ; =ov11_02322288 + mov r7, r8 + sub r4, r5, #1 + mov r6, #1 +_022FE290: + ldrsh r3, [sl, #6] + cmp r3, r5 + beq _022FE2D0 + ldrsb r0, [sl, #0xd] + cmp r0, r5 + cmpne sb, r4 + cmpne sb, r0 + bne _022FE2D0 + mov r0, r6 + mov r1, fp + mov r2, r7 + bl Debug_Print + add r0, sl, #0x3c + bl ov11_022DD080 + strb r5, [sl, #0xd] + orr r8, r8, r0 +_022FE2D0: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #0x10 + add sl, sl, #0x214 + blt _022FE290 +_022FE2E8: + mov r0, r8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FE2F0: .word ov11_023222E0 +_022FE2F4: .word ov11_02324D04 +_022FE2F8: .word ov11_02322288 +_022FE2FC: .word ov11_02322324 + arm_func_end ov11_022FE1AC + + arm_func_start ov11_022FE300 +ov11_022FE300: ; 0x022FE300 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r0, _022FE350 ; =ov11_02324D04 + mov r4, #0 + ldr r7, [r0] + mov r6, r4 + mvn r5, #0 +_022FE318: + ldrsh r0, [r7, #6] + cmp r0, r5 + beq _022FE330 + add r0, r7, #0x3c + bl ov11_022DCB00 + orr r4, r4, r0 +_022FE330: + add r0, r6, #1 + mov r0, r0, lsl #0x10 + mov r6, r0, asr #0x10 + cmp r6, #0x10 + add r7, r7, #0x214 + blt _022FE318 + mov r0, r4 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022FE350: .word ov11_02324D04 + arm_func_end ov11_022FE300 + + arm_func_start UnlockPerformerRoutines +UnlockPerformerRoutines: ; 0x022FE354 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r1, _022FE3AC ; =ov11_02324D04 + mov r5, #0 + ldr r4, [r1] + mov r6, r0 + mov r8, r5 + mvn r7, #0 +_022FE370: + ldrsh r0, [r4, #6] + cmp r0, r7 + beq _022FE38C + mov r1, r6 + add r0, r4, #0x3c + bl UnlockRoutine + orr r5, r5, r0 +_022FE38C: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #0x10 + add r4, r4, #0x214 + blt _022FE370 + mov r0, r5 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022FE3AC: .word ov11_02324D04 + arm_func_end UnlockPerformerRoutines + + arm_func_start ov11_022FE3B0 +ov11_022FE3B0: ; 0x022FE3B0 + ldr r3, _022FE400 ; =ov11_02324D04 + mov r2, #0x214 + ldr ip, [r3] + mvn r3, #0 + smlabb ip, r0, r2, ip + ldrsh r0, [ip, #6] + cmp r0, r3 + moveq r0, #0 + streq r0, [r1] + beq _022FE3F4 + ldr r2, [ip, #0x130] + ldr r0, [ip, #0x18] + add r0, r2, r0 + str r0, [r1] + ldr r2, [ip, #0x134] + ldr r0, [ip, #0x1c] + add r0, r2, r0 +_022FE3F4: + str r0, [r1, #4] + ldrsh r0, [ip, #6] + bx lr + .align 2, 0 +_022FE400: .word ov11_02324D04 + arm_func_end ov11_022FE3B0 + + arm_func_start SetPositionLivePerformer +SetPositionLivePerformer: ; 0x022FE404 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + ldr r5, [r0, #0x18] + ldr r3, [r1] + ldr lr, [r0, #0x1c] + ldr r2, [r1, #4] + sub r4, r3, r5 + ldr r1, [r0, #0x2c] + sub ip, r2, lr + add r3, r3, r5 + add r2, r2, lr + str r4, [sp, #8] + str ip, [sp, #0xc] + str r3, [sp] + str r2, [sp, #4] + cmp r4, r1 + blt _022FE46C + ldr r1, [r0, #0x34] + cmp r3, r1 + bge _022FE46C + ldr r1, [r0, #0x30] + cmp ip, r1 + blt _022FE46C + ldr r1, [r0, #0x38] + cmp r2, r1 + blt _022FE474 +_022FE46C: + mov r0, #0x40 + b _022FE488 +_022FE474: + str r4, [r0, #0x130] + str ip, [r0, #0x134] + str r3, [r0, #0x138] + str r2, [r0, #0x13c] + mov r0, #0 +_022FE488: + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + arm_func_end SetPositionLivePerformer diff --git a/asm/overlay_11_022FE4AC.s b/asm/overlay_11_022FE4AC.s new file mode 100644 index 00000000..474b63fb --- /dev/null +++ b/asm/overlay_11_022FE4AC.s @@ -0,0 +1,56 @@ + .include "asm/macros.inc" + .include "overlay_11_022FE4AC.inc" + + .text + + arm_func_start SetPositionInitialLivePerformer +SetPositionInitialLivePerformer: ; 0x022FE4AC + cmp r1, #0 + beq _022FE4F8 + ldr r3, [r1] + ldr r2, [r0, #0x18] + sub r2, r3, r2 + str r2, [r0, #0x130] + ldr r3, [r1] + ldr r2, [r0, #0x18] + add r2, r3, r2 + str r2, [r0, #0x138] + ldr r3, [r1, #4] + ldr r2, [r0, #0x1c] + sub r2, r3, r2 + str r2, [r0, #0x134] + ldr r2, [r1, #4] + ldr r1, [r0, #0x1c] + add r1, r2, r1 + str r1, [r0, #0x13c] + bx lr +_022FE4F8: + ldr r3, [r0, #0x24] + ldr r1, [r0, #0x18] + mov r2, #0 + sub r1, r3, r1 + str r1, [r0, #0x130] + ldr r3, [r0, #0x24] + ldr r1, [r0, #0x18] + add r1, r3, r1 + str r1, [r0, #0x138] + ldr ip, [r0, #0x28] + ldr r3, [r0, #0x1c] + add r1, r0, #0x100 + sub r3, ip, r3 + str r3, [r0, #0x134] + ldr ip, [r0, #0x28] + ldr r3, [r0, #0x1c] + add r3, ip, r3 + str r3, [r0, #0x13c] + str r2, [r0, #0x144] + str r2, [r0, #0x140] + ldrsb r2, [r1, #0x2c] + ldrsb r1, [r0, #0x20] + cmp r2, r1 + movne r1, #1 + strneb r1, [r0, #0x148] + ldrsb r1, [r0, #0x20] + strb r1, [r0, #0x12c] + bx lr + arm_func_end SetPositionInitialLivePerformer diff --git a/asm/overlay_11_022FE5F8.s b/asm/overlay_11_022FE5F8.s new file mode 100644 index 00000000..c90d406b --- /dev/null +++ b/asm/overlay_11_022FE5F8.s @@ -0,0 +1,17529 @@ + .include "asm/macros.inc" + .include "overlay_11_022FE5F8.inc" + + .text + + arm_func_start SetAnimationLivePerformer +SetAnimationLivePerformer: ; 0x022FE5F8 + and r2, r1, #0x700 + mov r2, r2, lsl #0x10 + and r3, r1, #0xff + tst r1, #0x800 + mov ip, r2, lsr #0x10 + beq _022FE628 + add r1, r0, #0x100 + mov r2, #0x400 + strh r2, [r1, #0x4a] + mov r1, #1 + strb r1, [r0, #0x148] + bx lr +_022FE628: + cmp r3, #0 + ldrne r1, _022FE6B4 ; =ov11_023220DC + movne r2, r3, lsl #1 + ldrnesh r3, [r1, r2] + addeq r1, r0, #0x100 + ldreqsh r3, [r1, #0x4a] + cmp ip, #0x200 + bgt _022FE660 + bge _022FE67C + cmp ip, #0x100 + orreq r1, r3, #0x300 + moveq r1, r1, lsl #0x10 + moveq r3, r1, asr #0x10 + b _022FE688 +_022FE660: + cmp ip, #0x300 + ble _022FE688 + cmp ip, #0x400 + orreq r1, r3, #0x200 + moveq r1, r1, lsl #0x10 + moveq r3, r1, asr #0x10 + b _022FE688 +_022FE67C: + orr r1, r3, #0x100 + mov r1, r1, lsl #0x10 + mov r3, r1, asr #0x10 +_022FE688: + add r1, r0, #0x100 + ldrsh r2, [r1, #0x4a] + cmp r2, r3 + strneh r3, [r1, #0x4a] + movne r1, #1 + strneb r1, [r0, #0x148] + bxne lr + tst r2, #0x1000 + movne r1, #1 + strneb r1, [r0, #0x148] + bx lr + .align 2, 0 +_022FE6B4: .word ov11_023220DC + arm_func_end SetAnimationLivePerformer + + arm_func_start SetEffectLivePerformer +SetEffectLivePerformer: ; 0x022FE6B8 + add r0, r0, #0x100 + strh r1, [r0, #0x4c] + strh r2, [r0, #0x4e] + bx lr + arm_func_end SetEffectLivePerformer + + arm_func_start GetAnimationStatusLivePerformer +GetAnimationStatusLivePerformer: ; 0x022FE6C8 + stmdb sp!, {r3, lr} + ldrb r1, [r0, #0x148] + cmp r1, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} + add r0, r0, #0x150 + bl ov11_022F4990 + ldmia sp!, {r3, pc} + arm_func_end GetAnimationStatusLivePerformer + + arm_func_start GetEffectStatusLivePerformer +GetEffectStatusLivePerformer: ; 0x022FE6E8 + stmdb sp!, {r3, lr} + add r1, r0, #0x100 + ldrsh r3, [r1, #0x4c] + mvn r2, #0 + cmp r3, r2 + movne r0, #1 + ldmneia sp!, {r3, pc} + ldrsh r1, [r1, #0x4e] + cmp r1, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} + add r0, r0, #0x150 + bl ov11_022F49B0 + ldmia sp!, {r3, pc} + arm_func_end GetEffectStatusLivePerformer + + arm_func_start GetAttributeBitfieldLivePerformer +GetAttributeBitfieldLivePerformer: ; 0x022FE720 + ldr r0, [r0, #0x128] + str r0, [r1] + bx lr + arm_func_end GetAttributeBitfieldLivePerformer + + arm_func_start SetAttributeBitfieldLivePerformerWrapper +SetAttributeBitfieldLivePerformerWrapper: ; 0x022FE72C + ldr ip, _022FE738 ; =SetAttributeBitfieldLivePerformer + ldrsh r0, [r0, #4] + bx ip + .align 2, 0 +_022FE738: .word SetAttributeBitfieldLivePerformer + arm_func_end SetAttributeBitfieldLivePerformerWrapper + + arm_func_start ResetAttributeBitfieldLivePerformerWrapper +ResetAttributeBitfieldLivePerformerWrapper: ; 0x022FE73C + ldr ip, _022FE748 ; =ResetAttributeBitfieldLivePerformer + ldrsh r0, [r0, #4] + bx ip + .align 2, 0 +_022FE748: .word ResetAttributeBitfieldLivePerformer + arm_func_end ResetAttributeBitfieldLivePerformerWrapper + + arm_func_start SetBlinkLivePerformer +SetBlinkLivePerformer: ; 0x022FE74C + ldr ip, _022FE758 ; =ov11_022F4984 + add r0, r0, #0x150 + bx ip + .align 2, 0 +_022FE758: .word ov11_022F4984 + arm_func_end SetBlinkLivePerformer + + arm_func_start SetPositionOffsetLivePerformer +SetPositionOffsetLivePerformer: ; 0x022FE75C + stmdb sp!, {r4, lr} + sub sp, sp, #0x10 + ldr ip, [r1] + ldr r2, [r0, #0x130] + ldr lr, [r1, #4] + add r4, r2, ip + ldr r1, [r0, #0x13c] + ldr r3, [r0, #0x138] + ldr r2, [r0, #0x2c] + add r3, r3, ip + add r1, r1, lr + ldr ip, [r0, #0x134] + str r1, [sp, #0xc] + cmp r4, r2 + ldrlt r1, [r0, #0x10] + add ip, ip, lr + str r4, [sp] + str r3, [sp, #8] + addlt r1, r2, r1 + str ip, [sp, #4] + strlt r2, [sp] + strlt r1, [sp, #8] + blt _022FE7D0 + ldr r2, [r0, #0x34] + cmp r3, r2 + ldrge r1, [r0, #0x10] + strge r2, [sp, #8] + subge r1, r2, r1 + strge r1, [sp] +_022FE7D0: + ldr r2, [r0, #0x30] + ldr r1, [sp, #4] + cmp r1, r2 + ldrlt r1, [r0, #0x14] + strlt r2, [sp, #4] + addlt r1, r2, r1 + strlt r1, [sp, #0xc] + blt _022FE80C + ldr r2, [r0, #0x38] + ldr r1, [sp, #0xc] + cmp r1, r2 + ldrge r1, [r0, #0x14] + strge r2, [sp, #0xc] + subge r1, r2, r1 + strge r1, [sp, #4] +_022FE80C: + ldr r2, [sp] + ldr r1, [sp, #4] + str r2, [r0, #0x130] + ldr r2, [sp, #8] + str r1, [r0, #0x134] + ldr r1, [sp, #0xc] + str r2, [r0, #0x138] + str r1, [r0, #0x13c] + mov r0, #0 + add sp, sp, #0x10 + ldmia sp!, {r4, pc} + arm_func_end SetPositionOffsetLivePerformer + + arm_func_start ov11_022FE838 +ov11_022FE838: ; 0x022FE838 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r0, _022FE8C8 ; =ov11_02324D04 + mov r4, #0 + ldr r5, [r0] + mov r7, r4 + mvn r6, #0 +_022FE850: + ldrsh r0, [r5, #6] + cmp r0, r6 + ldrneb r0, [r5, #8] + cmpne r0, #0 + beq _022FE8AC + add r0, r5, #0x3c + bl FuncThatCallsRunNextOpcode + cmp r0, #0 + beq _022FE888 + cmp r0, #6 + bne _022FE888 + mov r0, r4 + bl DeleteLivePerformer + b _022FE8AC +_022FE888: + ldrb r0, [r5, #0x148] + cmp r0, #0 + beq _022FE8AC + strb r7, [r5, #0x148] + add r0, r5, #0x100 + ldrsh r1, [r0, #0x4a] + mov r2, r7 + add r0, r5, #0x150 + bl SetAnimDataFields2 +_022FE8AC: + add r0, r4, #1 + mov r0, r0, lsl #0x10 + mov r4, r0, asr #0x10 + cmp r4, #0x10 + add r5, r5, #0x214 + blt _022FE850 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_022FE8C8: .word ov11_02324D04 + arm_func_end ov11_022FE838 + + arm_func_start ov11_022FE8CC +ov11_022FE8CC: ; 0x022FE8CC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x14 + ldr r0, _022FE9D8 ; =ov11_023220B4 + ldr r1, _022FE9DC ; =ov11_02324D04 + ldr r8, [r0, #0x18] + ldr r7, [r0, #0x1c] + mov sb, #0 + ldr sl, [r1] + str r8, [sp, #4] + str r7, [sp, #8] + mov fp, sb + mvn r4, #0 +_022FE8FC: + ldrsh r0, [sl, #6] + cmp r0, r4 + ldrneb r0, [sl, #8] + cmpne r0, #0 + beq _022FE9B8 + str r8, [sp, #0xc] + str r7, [sp, #0x10] + ldr r2, [sl, #0x130] + ldr r1, [sl, #0x18] +#ifdef JAPAN + add r0, sl, #0x150 +#else + add r0, sl, #0x100 +#endif + add r1, r2, r1 + str r1, [sp, #0xc] + ldr r2, [sl, #0x134] + ldr r1, [sl, #0x1c] + add r1, r2, r1 + str r1, [sp, #0x10] +#ifdef JAPAN + ldr r6, [sl, #0x140] + ldr r5, [sl, #0x144] + bl ov11_022F5FE8_JP + cmp r0, #0 + beq _022FE970 + strb fp, [sl, #0x148] + add r0, sl, #0x100 +#else + ldrsh r1, [r0, #0xe2] + ldr r6, [sl, #0x140] + ldr r5, [sl, #0x144] + cmp r1, #0 + bge _022FE970 + ldrsh r1, [r0, #0xdc] + cmp r1, #0 + ble _022FE970 + strb fp, [sl, #0x148] +#endif + ldrsh r1, [r0, #0x4a] + mov r2, fp + add r0, sl, #0x150 + bl SetAnimDataFields2 +_022FE970: + add r3, sl, #0x100 + ldrsh r1, [r3, #0x4c] + cmp r1, r4 + beq _022FE9A8 + mov r0, #0 + str r0, [sp] + ldrsh r2, [r3, #0x4e] + ldrsb r3, [r3, #0x2c] + add r0, sl, #0x150 + bl ov11_022F5408 + add r1, sl, #0x100 + strh r4, [r1, #0x4c] + mov r0, #0 + strh r0, [r1, #0x4e] +_022FE9A8: + add r1, sp, #0xc + add r0, sl, #0x150 + add r2, r6, r5 + bl ov11_022F6FA8 +_022FE9B8: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 + cmp sb, #0x10 + add sl, sl, #0x214 + blt _022FE8FC + add sp, sp, #0x14 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FE9D8: .word ov11_023220B4 +_022FE9DC: .word ov11_02324D04 + arm_func_end ov11_022FE8CC + + arm_func_start ov11_022FE9E0 +ov11_022FE9E0: ; 0x022FE9E0 + stmdb sp!, {r3, lr} + mov r0, #0x400 + mov r1, #6 + bl MemAlloc + ldr r1, _022FEA24 ; =ov11_02324D08 + mov r3, #0 + str r0, [r1] + mvn r2, #0 +_022FEA00: + add r1, r3, #1 + mov r1, r1, lsl #0x10 + mov r3, r1, asr #0x10 + strh r2, [r0, #2] + cmp r3, #0x20 + add r0, r0, #0x20 + blt _022FEA00 + bl ov11_022FEA28 + ldmia sp!, {r3, pc} + .align 2, 0 +_022FEA24: .word ov11_02324D08 + arm_func_end ov11_022FE9E0 + + arm_func_start ov11_022FEA28 +ov11_022FEA28: ; 0x022FEA28 + stmdb sp!, {r4, r5, r6, lr} + ldr r0, _022FEA6C ; =ov11_02324D08 + mov r5, #0 + ldr r6, [r0] + mvn r4, #0 +_022FEA3C: + ldrsh r0, [r6, #2] + cmp r0, r4 + beq _022FEA50 + mov r0, r5 + bl DeleteLiveEvent +_022FEA50: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + cmp r5, #0x20 + add r6, r6, #0x20 + blt _022FEA3C + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FEA6C: .word ov11_02324D08 + arm_func_end ov11_022FEA28 + + arm_func_start ov11_022FEA70 +ov11_022FEA70: ; 0x022FEA70 + stmdb sp!, {r3, lr} + bl ov11_022FEA28 + ldr r0, _022FEA94 ; =ov11_02324D08 + ldr r0, [r0] + bl MemFree + ldr r0, _022FEA94 ; =ov11_02324D08 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_022FEA94: .word ov11_02324D08 + arm_func_end ov11_022FEA70 + + arm_func_start ov11_022FEA98 +ov11_022FEA98: ; 0x022FEA98 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + sub sp, sp, #0x10 + movs sl, r0 + mov sb, r1 + mov r8, r2 + mov r7, r3 + bpl _022FEB00 + ldr r0, _022FEBF4 ; =ov11_02324D08 + mov r2, #0 + ldr r4, [r0] + mvn r1, #0 + b _022FEAE8 +_022FEAC8: + ldrsh r0, [r4, #2] + cmp r0, r1 + moveq sl, r2 + beq _022FEAF0 + add r0, r2, #1 + mov r0, r0, lsl #0x10 + mov r2, r0, asr #0x10 + add r4, r4, #0x20 +_022FEAE8: + cmp r2, #0x20 + blt _022FEAC8 +_022FEAF0: + cmp sl, #0 + bge _022FEB0C + mvn r0, #0 + b _022FEBEC +_022FEB00: + ldr r0, _022FEBF4 ; =ov11_02324D08 + ldr r0, [r0] + add r4, r0, sl, lsl #5 +_022FEB0C: + str r8, [sp] + str r7, [sp, #4] + ldrsh r3, [sb] + ldr r1, _022FEBF8 ; =ov11_02322368 + mov r2, sl + mov r0, #1 + bl Debug_Print + ldrsh r0, [sb] + bl ov11_022E7FA8 + strh sl, [r4] + ldrsh r1, [sb] + strh r1, [r4, #2] + strh r8, [r4, #4] + strb r7, [r4, #6] + ldrsh r1, [sb, #8] + strh r1, [r4, #8] + ldrsh r0, [r0, #2] + cmp r0, #1 + cmpne r0, #2 + beq _022FEB64 + cmp r0, #7 + b _022FEB70 +_022FEB64: + mov r0, #0x1800 + str r0, [r4, #0xc] + b _022FEB78 +_022FEB70: + mov r0, #0x800 + str r0, [r4, #0xc] +_022FEB78: + ldrb r2, [sb, #2] + ldrb r0, [sb, #3] + ldrb r1, [sb, #6] + mov r2, r2, lsl #0xb + mov r0, r0, lsl #0xb + str r2, [sp, #8] + str r0, [sp, #0xc] + tst r1, #4 + bne _022FEBAC + ldrb r0, [sb, #4] + tst r1, #2 + mov r5, r0, lsl #0xb + addne r5, r5, #0x400 +_022FEBAC: + ldrb r1, [sb, #7] + tst r1, #4 + bne _022FEBC8 + ldrb r0, [sb, #5] + tst r1, #2 + mov r6, r0, lsl #0xb + addne r6, r6, #0x400 +_022FEBC8: + ldr r1, [sp, #8] + ldr r0, [sp, #0xc] + str r5, [r4, #0x10] + add r1, r5, r1 + str r1, [r4, #0x18] + str r6, [r4, #0x14] + add r1, r6, r0 + mov r0, sl + str r1, [r4, #0x1c] +_022FEBEC: + add sp, sp, #0x10 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022FEBF4: .word ov11_02324D08 +_022FEBF8: .word ov11_02322368 + arm_func_end ov11_022FEA98 + + arm_func_start ov11_022FEBFC +ov11_022FEBFC: ; 0x022FEBFC + stmdb sp!, {r4, r5, r6, r7, r8, lr} + ldr r2, _022FEC64 ; =ov11_02324D08 + mov r7, r0 + ldr r4, [r2] + mov r6, r1 + mov r5, #0 + mvn r8, #0 +_022FEC18: + ldrsh r0, [r4, #2] + cmp r0, r8 + beq _022FEC48 + ldrsh r0, [r4, #4] + cmp r0, r7 + bne _022FEC48 + cmp r6, r8 + ldrnesb r0, [r4, #6] + cmpne r6, r0 + bne _022FEC48 + mov r0, r5 + bl DeleteLiveEvent +_022FEC48: + add r0, r5, #1 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + cmp r5, #0x20 + add r4, r4, #0x20 + blt _022FEC18 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022FEC64: .word ov11_02324D08 + arm_func_end ov11_022FEBFC + + arm_func_start DeleteLiveEvent +DeleteLiveEvent: ; 0x022FEC68 + stmdb sp!, {r4, lr} + ldr r1, _022FEC94 ; =ov11_02324D08 + mov r2, r0 + ldr r3, [r1] + ldr r1, _022FEC98 ; =ov11_023223A4 + mov r0, #1 + add r4, r3, r2, lsl #5 + bl Debug_Print + mvn r0, #0 + strh r0, [r4, #2] + ldmia sp!, {r4, pc} + .align 2, 0 +_022FEC94: .word ov11_02324D08 +_022FEC98: .word ov11_023223A4 + arm_func_end DeleteLiveEvent + + arm_func_start ov11_022FEC9C +ov11_022FEC9C: ; 0x022FEC9C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #8 + mov sl, r0 + mov sb, r1 + ldr r1, _022FED68 ; =ov11_023223C0 + mov r2, sl + mov r3, sb + mov r0, #1 + bl Debug_Print + sub r0, sl, #1 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + bhi _022FED60 + ldr r0, _022FED6C ; =ov11_02324D08 + mvn r4, #1 + ldr r7, [r0] + ldr fp, _022FED70 ; =ov11_023223EC + mov r8, #0 + add r5, r4, #1 + mov r6, #1 +_022FECF8: + ldrsh r3, [r7, #2] + cmp r3, r5 + beq _022FED48 + ldrsh r2, [r7, #4] + mov r0, r6 + mov r1, fp + str r2, [sp] + ldrsb ip, [r7, #6] + mov r2, r8 + str ip, [sp, #4] + bl Debug_Print + ldrsh r0, [r7, #4] + cmp sl, r0 + bne _022FED48 + cmp sb, r4 + ldrnesb r0, [r7, #6] + cmpne sb, r0 + bne _022FED48 + mov r0, r8 + bl DeleteLiveEvent +_022FED48: + add r0, r8, #1 + mov r0, r0, lsl #0x10 + mov r8, r0, asr #0x10 + cmp r8, #0x20 + add r7, r7, #0x20 + blt _022FECF8 +_022FED60: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_022FED68: .word ov11_023223C0 +_022FED6C: .word ov11_02324D08 +_022FED70: .word ov11_023223EC + arm_func_end ov11_022FEC9C + + arm_func_start ov11_022FED74 +ov11_022FED74: ; 0x022FED74 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r1, _022FEDF0 ; =ov11_02324D08 + mov r2, r0 + ldr r0, [r1] + ldr r1, _022FEDF4 ; =ov11_02322418 + add r4, r0, r2, lsl #5 + ldrsh r3, [r4, #4] + mov r0, #1 + str r3, [sp] + ldrsh r3, [r4, #8] + str r3, [sp, #4] + ldrsh r3, [r4, #2] + bl Debug_Print + ldrsh r0, [r4, #2] + mvn r2, #0 + cmp r0, r2 + beq _022FEDE4 + ldrsh r1, [r4, #8] + cmp r1, r2 + bne _022FEDD4 + mov r1, #0 + bl ov11_022F7188 + b _022FEDDC +_022FEDD4: + ldrsh r0, [r4, #4] + bl ov11_022F74A0 +_022FEDDC: + mov r0, #1 + b _022FEDE8 +_022FEDE4: + mov r0, #0 +_022FEDE8: + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022FEDF0: .word ov11_02324D08 +_022FEDF4: .word ov11_02322418 + arm_func_end ov11_022FED74 + + arm_func_start GetCollidingEventId +GetCollidingEventId: ; 0x022FEDF8 + stmdb sp!, {r3, r4, r5, lr} + ldr ip, _022FEE8C ; =ov11_02324D08 + mov r3, #0 + ldr ip, [ip] + mvn lr, #0 + b _022FEE7C +_022FEE10: + ldrsh r4, [ip, #2] + cmp r4, lr + beq _022FEE6C + ldr r4, [ip, #0xc] + tst r4, r0 + beq _022FEE6C + ldr r5, [ip, #0x10] + ldr r4, [r2] + cmp r5, r4 + bge _022FEE6C + ldr r5, [ip, #0x18] + ldr r4, [r1] + cmp r5, r4 + ble _022FEE6C + ldr r5, [ip, #0x14] + ldr r4, [r2, #4] + cmp r5, r4 + bge _022FEE6C + ldr r5, [ip, #0x1c] + ldr r4, [r1, #4] + cmp r5, r4 + movgt r0, r3 + ldmgtia sp!, {r3, r4, r5, pc} +_022FEE6C: + add r3, r3, #1 + mov r3, r3, lsl #0x10 + mov r3, r3, asr #0x10 + add ip, ip, #0x20 +_022FEE7C: + cmp r3, #0x20 + blt _022FEE10 + mvn r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FEE8C: .word ov11_02324D08 + arm_func_end GetCollidingEventId + + arm_func_start ov11_022FEE90 +ov11_022FEE90: ; 0x022FEE90 + bx lr + arm_func_end ov11_022FEE90 + + arm_func_start CreateTeamInfoBox +CreateTeamInfoBox: ; 0x022FEE94 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x10 + mov r0, #0x378 + mov r1, #8 + bl MemAlloc + mov r4, r0 + bl GetGameMode + cmp r0, #3 + ldreq r0, _022FEF18 ; =ov11_0232246C + add r5, sp, #0 + ldrne r0, _022FEF1C ; =TEAM_INFO_BOX_DEFAULT_WINDOW_PARAMS + ldmia r0, {r0, r1, r2, r3} + stmia r5, {r0, r1, r2, r3} + ldr r2, _022FEF20 ; =UpdateTeamInfoBox + str r4, [sp, #0xc] + add r0, sp, #0 + mov r1, #1 + str r2, [r4] + bl NewWindowScreenCheck + mov r2, #1 + mov r5, r0 + mov r1, #0 + str r2, [r4, #0x370] + str r1, [r4, #0x374] + sub r1, r1, #2 + add r0, r4, #8 + strb r1, [r4, #4] + bl InitPortraitParams + mov r1, #3 + mov r0, r5 + str r1, [r4, #0x18] + add sp, sp, #0x10 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FEF18: .word ov11_0232246C +_022FEF1C: .word TEAM_INFO_BOX_DEFAULT_WINDOW_PARAMS +_022FEF20: .word UpdateTeamInfoBox + arm_func_end CreateTeamInfoBox + + arm_func_start ov11_022FEF24 +ov11_022FEF24: ; 0x022FEF24 + stmdb sp!, {r3, lr} + bl GetWindowContents + mov r1, #4 + str r1, [r0, #0x370] + ldrsb r0, [r0, #4] + sub r1, r1, #6 + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl sub_0202F954 + ldmia sp!, {r3, pc} + arm_func_end ov11_022FEF24 + + arm_func_start CloseTeamInfoBox +CloseTeamInfoBox: ; 0x022FEF4C + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl GetWindowContents + mov r4, r0 + ldrsb r0, [r4, #4] + mvn r1, #1 + cmp r0, r1 + beq _022FEF70 + bl CloseTextBox +_022FEF70: + mov r0, r4 + bl MemFree + mov r0, r5 + bl DeleteWindow + ldmia sp!, {r3, r4, r5, pc} + arm_func_end CloseTeamInfoBox + + arm_func_start IsTeamInfoBoxActive +IsTeamInfoBoxActive: ; 0x022FEF84 + stmdb sp!, {r3, lr} + bl GetWindowContents + ldr r0, [r0, #0x370] + cmp r0, #5 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end IsTeamInfoBoxActive + + arm_func_start UpdateTeamInfoBox +UpdateTeamInfoBox: ; 0x022FEFA4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x54 + sub sp, sp, #0x400 + mov r8, r0 + ldr r4, [r8, #0xc] + ldr r0, [r4, #0x370] + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _022FF1B4 +_022FEFC8: ; jump table + b _022FF1B4 ; case 0 + b _022FEFDC ; case 1 + b _022FEFFC ; case 2 + b _022FF1B4 ; case 3 + b _022FF17C ; case 4 +_022FEFDC: + ldrsb r0, [r8, #0x10] + bl sub_0202810C + cmp r0, #0 + beq _022FF1B4 + mov r0, #2 + str r0, [r4, #0x370] + mov r0, #1 + str r0, [r4, #0x374] +_022FEFFC: + ldr r6, [r8, #0xc] + bl GetGameMode + mov r5, r0 + ldrsb r0, [r8, #0x10] + bl sub_02027B1C + cmp r5, #3 + beq _022FF118 + bl GetRank + str r0, [sp, #0x14] + bl GetRankupPoints + cmp r0, #0 + ldreq r7, _022FF1C0 ; =0x00000222 + str r0, [sp, #0x28] + add ip, sp, #4 + ldr r2, _022FF1C4 ; =0x0000021F + ldr r3, _022FF1C8 ; =0x0000C402 + add r0, sp, #0x54 + mov r1, #0x100 + ldrne r7, _022FF1CC ; =0x00000221 + str ip, [sp] + bl PreprocessStringFromId + add r0, sp, #0x54 + bl sub_020265A8 + ldrsb r0, [r8, #0x10] + mov r1, #0x3a +#ifdef EUROPE + mov r2, #0xe +#else + mov r2, #4 +#endif + add r3, sp, #0x54 + bl DrawTextInWindow + mov r0, #0x16 + bl GetResolvedPerformanceProgressFlag + cmp r0, #0 + beq _022FF0AC + add r1, sp, #4 + str r1, [sp] + ldr r2, _022FF1D0 ; =0x00000226 + ldr r3, _022FF1C8 ; =0x0000C402 + add r0, sp, #0x54 + mov r1, #0x100 + bl PreprocessStringFromId + ldrsb r0, [r8, #0x10] + add r3, sp, #0x54 + mov r1, #0x28 + mov r2, #0x16 + bl DrawTextInWindow +_022FF0AC: + add r1, sp, #4 + str r1, [sp] + ldr r3, _022FF1C8 ; =0x0000C402 + add r0, sp, #0x54 + mov r2, r7 + mov r1, #0x100 + bl PreprocessStringFromId + ldrsb r0, [r8, #0x10] + add r3, sp, #0x54 + mov r1, #0x3a +#ifdef EUROPE + mov r2, #0x1a +#else + mov r2, #0x16 +#endif + bl DrawTextInWindow + ldrsb r0, [r6, #4] + mvn r1, #1 + cmp r0, r1 + beq _022FF0F8 + bl CloseTextBox + mvn r0, #1 + strb r0, [r6, #4] +_022FF0F8: + bl GetRank + mov r1, #3 + mov r3, r1 + mov r2, #0x12 + bl PrintBadgeMark + strb r0, [r6, #4] + ldrsb r0, [r8, #0x10] + bl UpdateWindow +_022FF118: + bl GetMoneyCarried + str r0, [sp, #0x28] + add r6, sp, #4 +#ifdef JAPAN + ldr r2, _0230083C ; =0x0000042B +#endif + ldr r3, _022FF1C8 ; =0x0000C402 + add r0, sp, #0x54 + mov r1, #0x100 +#ifndef JAPAN + mov r2, #0x224 +#endif + str r6, [sp] + bl PreprocessStringFromId + cmp r5, #3 + ldrsb r0, [r8, #0x10] + add r3, sp, #0x54 +#ifdef EUROPE + mov r2, #2 + beq _022FF15C + mov r1, #0xaa +#else + beq _022FF15C + mov r1, #0x9a + mov r2, #4 +#endif + bl DrawTextInWindow + b _022FF168 +_022FF15C: + mov r1, #0x10 +#ifndef EUROPE + mov r2, #2 +#endif + bl DrawTextInWindow +_022FF168: + mov r0, #3 + str r0, [r4, #0x370] + sub r0, r0, #4 + str r0, [r8, #0xb8] + b _022FF1B4 +_022FF17C: + mov r1, #4 + str r1, [r4, #0x374] + ldrsb r0, [r4, #4] + sub r1, r1, #6 + cmp r0, r1 + beq _022FF198 + bl sub_0202F954 +_022FF198: + ldrsb r0, [r8, #0x10] + bl sub_0202812C + cmp r0, #0 + mvnne r0, #4 + strne r0, [r8, #0xb8] + movne r0, #5 + strne r0, [r4, #0x370] +_022FF1B4: + add sp, sp, #0x54 + add sp, sp, #0x400 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +#ifdef JAPAN +_022FF1C0: .word 0x00000429 +_022FF1C4: .word 0x00000426 +_022FF1C8: .word 0x0000C402 +_022FF1CC: .word 0x00000428 +_022FF1D0: .word 0x0000042D +_0230083C: .word 0x0000042B +#else +_022FF1C0: .word 0x00000222 +_022FF1C4: .word 0x0000021F +_022FF1C8: .word 0x0000C402 +_022FF1CC: .word 0x00000221 +_022FF1D0: .word 0x00000226 +#endif + arm_func_end UpdateTeamInfoBox + + arm_func_start ov11_022FF1D4 +ov11_022FF1D4: ; 0x022FF1D4 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, _022FF20C ; =ov11_0232247C + mov r4, r1 + bl InitMenu + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, _022FF210 ; =ov11_02324D0C + ldr r0, _022FF214 ; =ov11_0238A074 + ldr r2, _022FF218 ; =0x000002BD + strh r4, [r1] + strh r5, [r0] + strh r2, [r1, #2] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FF20C: .word ov11_0232247C +_022FF210: .word ov11_02324D0C +_022FF214: .word ov11_0238A074 +_022FF218: .word 0x000002BD + arm_func_end ov11_022FF1D4 + + arm_func_start EatOverworldGummiEntryPoint +EatOverworldGummiEntryPoint: ; 0x022FF21C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + mov r0, #0x620 + mov r1, #8 + mov r4, #0 + bl MemAlloc + ldr r1, _022FF304 ; =ov11_02324D0C + str r0, [r1, #4] + add r0, r0, #0xc + bl CopyMenuControlWindowExtraInfo + ldr r3, _022FF304 ; =ov11_02324D0C + mov r1, r4 + ldr ip, [r3, #4] + ldr r2, _022FF308 ; =ov11_0238A074 + str r0, [ip, #8] + ldrsh r2, [r2] + ldr r0, [r3, #4] + ldr lr, _022FF30C ; =C_ROUTINES + strh r2, [r0, #0xa4] + ldr r0, _022FF310 ; =0x000002BD + mov r5, r1 +_022FF270: + ldr r6, [r3, #4] + ldrsh ip, [lr, #2] + ldrsh r2, [r6, #0xa4] + cmp ip, r2 + bne _022FF29C + ldrsh r2, [r3] + cmp r2, r5 + add r2, r6, r1, lsl #1 + moveq r4, r1 + strh r5, [r2, #0xa6] + add r1, r1, #1 +_022FF29C: + add r5, r5, #1 + cmp r5, r0 + add lr, lr, #8 + blt _022FF270 + ldr r2, _022FF304 ; =ov11_02324D0C + mov r3, #0xa + ldr ip, [r2, #4] + ldr r0, _022FF314 ; =ov11_0232248C + str r4, [ip, #0xc] + stmia sp, {r1, r3} + ldr r1, [r2, #4] + ldr r3, _022FF318 ; =ov11_022FF438 + add r2, r1, #0xc + mov r1, #0x33 + bl CreateAdvancedMenu + ldr r1, _022FF304 ; =ov11_02324D0C + mov r4, #0 + ldr r3, [r1, #4] + ldr r2, _022FF310 ; =0x000002BD + strb r0, [r3] + ldr r3, [r1, #4] + mov r0, #1 + str r4, [r3, #4] + strh r2, [r1, #2] + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_022FF304: .word ov11_02324D0C +_022FF308: .word ov11_0238A074 +_022FF30C: .word C_ROUTINES +_022FF310: .word 0x000002BD +_022FF314: .word ov11_0232248C +_022FF318: .word ov11_022FF438 + arm_func_end EatOverworldGummiEntryPoint + + arm_func_start EatOverworldGummiDestructor +EatOverworldGummiDestructor: ; 0x022FF31C + stmdb sp!, {r3, lr} + ldr r0, _022FF354 ; =ov11_02324D0C + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0] + bl CloseAdvancedMenu + ldr r0, _022FF354 ; =ov11_02324D0C + ldr r0, [r0, #4] + bl MemFree + ldr r0, _022FF354 ; =ov11_02324D0C + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_022FF354: .word ov11_02324D0C + arm_func_end EatOverworldGummiDestructor + + arm_func_start EatOverworldGummiFrameUpdate +EatOverworldGummiFrameUpdate: ; 0x022FF358 + stmdb sp!, {r3, lr} + ldr r0, _022FF434 ; =ov11_02324D0C + ldr r2, [r0, #4] + ldr r1, [r2, #4] + cmp r1, #0 + beq _022FF384 + cmp r1, #1 + beq _022FF3A4 + cmp r1, #2 + beq _022FF3FC + b _022FF42C +_022FF384: + ldrsb r0, [r2] + bl IsAdvancedMenuActive + cmp r0, #0 + ldreq r0, _022FF434 ; =ov11_02324D0C + moveq r1, #1 + ldreq r0, [r0, #4] + streq r1, [r0, #4] + b _022FF42C +_022FF3A4: + ldrsb r0, [r2] + bl IsAdvancedMenuActive2 + cmp r0, #0 + bne _022FF42C + ldr r0, _022FF434 ; =ov11_02324D0C + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl GetAdvancedMenuResult + cmp r0, #0 + ldrlt r0, _022FF434 ; =ov11_02324D0C + mvnlt r1, #0 + strlth r1, [r0, #2] + ldrge r1, _022FF434 ; =ov11_02324D0C + ldrge r2, [r1, #4] + addge r0, r2, r0, lsl #1 + ldrgesh r0, [r0, #0xa6] + strgeh r0, [r1, #2] + ldr r0, _022FF434 ; =ov11_02324D0C + mov r1, #2 + ldr r0, [r0, #4] + str r1, [r0, #4] + b _022FF42C +_022FF3FC: + mov r1, #3 + str r1, [r2, #4] + ldr r2, [r0, #4] + ldr r1, [r2, #8] + tst r1, #0x100 + beq _022FF424 + ldrsh r1, [r0, #2] + ldr r0, [r2, #0x94] + ldr r2, [r2, #0x90] + blx r2 +_022FF424: + mov r0, #4 + ldmia sp!, {r3, pc} +_022FF42C: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_022FF434: .word ov11_02324D0C + arm_func_end EatOverworldGummiFrameUpdate + + arm_func_start ov11_022FF438 +ov11_022FF438: ; 0x022FF438 + ldr r0, _022FF458 ; =ov11_02324D0C + ldr r2, _022FF45C ; =C_ROUTINES + ldr r0, [r0, #4] + add r0, r0, r1, lsl #1 + ldrsh r0, [r0, #0xa6] + add r0, r2, r0, lsl #3 + ldr r0, [r0, #4] + bx lr + .align 2, 0 +_022FF458: .word ov11_02324D0C +_022FF45C: .word C_ROUTINES + arm_func_end ov11_022FF438 + + arm_func_start ov11_022FF460 +ov11_022FF460: ; 0x022FF460 + ldr r2, _022FF488 ; =ov11_02324D0C + ldr r1, _022FF48C ; =0x000002BD + ldrsh r3, [r2, #2] + strh r3, [r0] + ldrsh r0, [r2, #2] + cmp r0, r1 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_022FF488: .word ov11_02324D0C +_022FF48C: .word 0x000002BD + arm_func_end ov11_022FF460 + + arm_func_start ov11_022FF490 +ov11_022FF490: ; 0x022FF490 + stmdb sp!, {r3, r4, r5, lr} + mov r4, r0 + ldr r0, _022FF4F0 ; =ov11_0232249C + mov r5, r1 + bl InitMenu + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} +#ifdef JAPAN + ldr r0, _022FF4F8 ; =ov11_02324D14 + mov r1, #0x1b4 + strh r1, [r0, #2] + cmp r5, #0 +#else + ldr r1, _022FF4F4 ; =0x000001AF + ldr r0, _022FF4F8 ; =ov11_02324D14 + cmp r5, #0 + strh r1, [r0, #2] +#endif + bne _022FF4CC + ldr r0, _022FF4FC ; =ov11_0238A078 + bl ov11_022E45F4 + b _022FF4E4 +_022FF4CC: + ldr r2, _022FF4FC ; =ov11_0238A078 + mov r1, #8 +_022FF4D4: + ldrb r0, [r5], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _022FF4D4 +_022FF4E4: + ldr r0, _022FF4F8 ; =ov11_02324D14 + strh r4, [r0] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FF4F0: .word ov11_0232249C +#if defined(EUROPE) +_022FF4F4: .word 0x000001CB +#elif !defined(JAPAN) +_022FF4F4: .word 0x000001AF +#endif +_022FF4F8: .word ov11_02324D14 +_022FF4FC: .word ov11_0238A078 + arm_func_end ov11_022FF490 + + arm_func_start ov11_022FF500 +ov11_022FF500: ; 0x022FF500 + stmdb sp!, {r3, lr} + mov r0, #0x20 + mov r1, #8 + bl MemAlloc + ldr r1, _022FF57C ; =ov11_02324D14 + mvn r2, #1 + str r0, [r1, #4] + strb r2, [r0] + ldrsh ip, [r1] + add r0, r2, #1 + ldr r3, _022FF580 ; =ov11_0238A078 + cmp ip, r0 + ldr r0, [r1, #4] + moveq r1, #0 + movne r1, #2 + str r1, [r0, #4] + ldr r0, _022FF57C ; =ov11_02324D14 + mov r1, #8 + ldr r2, [r0, #4] + strh ip, [r2, #0x1c] + ldr r0, [r0, #4] + add r2, r0, #0x14 +_022FF558: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _022FF558 +#ifdef JAPAN + ldr r0, _022FF57C ; =ov11_02324D14 + mov r1, #0x1b4 + strh r1, [r0, #2] + mov r0, #1 +#else + ldr r2, _022FF584 ; =0x000001AF + ldr r1, _022FF57C ; =ov11_02324D14 + mov r0, #1 + strh r2, [r1, #2] +#endif + ldmia sp!, {r3, pc} + .align 2, 0 +_022FF57C: .word ov11_02324D14 +_022FF580: .word ov11_0238A078 +#if defined(EUROPE) +_022FF584: .word 0x000001CB +#elif !defined(JAPAN) +_022FF584: .word 0x000001AF +#endif + arm_func_end ov11_022FF500 + + arm_func_start ov11_022FF588 +ov11_022FF588: ; 0x022FF588 + stmdb sp!, {r3, lr} + ldr r0, _022FF5CC ; =ov11_02324D14 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0] + mvn r1, #1 + cmp r0, r1 + beq _022FF5B0 + bl CloseAdvancedMenu +_022FF5B0: + ldr r0, _022FF5CC ; =ov11_02324D14 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _022FF5CC ; =ov11_02324D14 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_022FF5CC: .word ov11_02324D14 + arm_func_end ov11_022FF588 + + arm_func_start ov11_022FF5D0 +ov11_022FF5D0: ; 0x022FF5D0 + stmdb sp!, {r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x128 + ldr r0, _022FF9E0 ; =ov11_02324D14 + ldr r1, [r0, #4] + ldr r0, [r1, #4] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _022FF9D4 +_022FF5F0: ; jump table + b _022FF608 ; case 0 + b _022FF694 ; case 1 + b _022FF724 ; case 2 + b _022FF8B8 ; case 3 + b _022FF950 ; case 4 + b _022FF9C4 ; case 5 +_022FF608: + ldrsb r0, [r1] + mvn r1, #1 + cmp r0, r1 + beq _022FF644 + bl IsAdvancedMenuActive2 + cmp r0, #0 + bne _022FF9D4 + ldr r0, _022FF9E0 ; =ov11_02324D14 + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl CloseAdvancedMenu + ldr r0, _022FF9E0 ; =ov11_02324D14 + mvn r1, #1 + ldr r0, [r0, #4] + strb r1, [r0] +_022FF644: + ldr r0, _022FF9E0 ; =ov11_02324D14 +#ifdef JAPAN + mov r1, #0x1b4 +#else + ldr r1, _022FF9E4 ; =0x000001AF +#endif + ldr r2, [r0, #4] + ldr r0, _022FF9E8 ; =ov11_023224AC + ldrsh r4, [r2, #0x1c] + ldr r3, _022FF9EC ; =ov11_022FF9FC + add r2, sp, #0x90 + str r4, [sp, #0x90] + str r1, [sp] + mov r4, #0xa + mov r1, #0x33 + str r4, [sp, #4] + bl CreateAdvancedMenu + ldr r1, _022FF9E0 ; =ov11_02324D14 + mov r2, #1 + ldr r3, [r1, #4] + strb r0, [r3] + ldr r0, [r1, #4] + str r2, [r0, #4] + b _022FF9D4 +_022FF694: + ldrsb r0, [r1] + bl IsAdvancedMenuActive + cmp r0, #0 + bne _022FF9D4 + ldr r0, _022FF9E0 ; =ov11_02324D14 + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl GetAdvancedMenuResult + cmp r0, #0 + bge _022FF6EC + ldr r0, _022FF9E0 ; =ov11_02324D14 + mvn r2, #0 + ldr r1, [r0, #4] + strh r2, [r1, #0x1c] + ldr r0, [r0, #4] + add r0, r0, #0x14 + bl ov11_022E45F4 + ldr r0, _022FF9E0 ; =ov11_02324D14 + mov r1, #4 + ldr r0, [r0, #4] + str r1, [r0, #4] + b _022FF9D4 +_022FF6EC: + ldr r1, _022FF9E0 ; =ov11_02324D14 + ldr r3, [r1, #4] + ldrsh r2, [r3, #0x1c] + cmp r2, r0 + beq _022FF710 + strh r0, [r3, #0x1c] + ldr r0, [r1, #4] + add r0, r0, #0x14 + bl ov11_022E45F4 +_022FF710: + ldr r0, _022FF9E0 ; =ov11_02324D14 + mov r1, #2 + ldr r0, [r0, #4] + str r1, [r0, #4] + b _022FF9D4 +_022FF724: + ldrsb r0, [r1] + mvn r1, #1 + cmp r0, r1 + beq _022FF760 + bl IsAdvancedMenuActive2 + cmp r0, #0 + bne _022FF9D4 + ldr r0, _022FF9E0 ; =ov11_02324D14 + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl CloseAdvancedMenu + ldr r0, _022FF9E0 ; =ov11_02324D14 + mvn r1, #1 + ldr r0, [r0, #4] + strb r1, [r0] +_022FF760: + ldr r0, _022FF9E0 ; =ov11_02324D14 + ldr r0, [r0, #4] + ldrsh r0, [r0, #0x1c] + bl sub_02064FFC + mov r2, r0 + ldr r1, _022FF9F0 ; =ov11_023224BC + add r0, sp, #0x10 + mov r3, r2 + mov r5, #0 + bl sprintf + add r0, sp, #0x10 + bl sub_02008BA8 + cmp r0, #0 + ldrle r0, _022FF9E0 ; =ov11_02324D14 + movle r1, r5 + ldrle r0, [r0, #4] + strle r1, [r0, #4] + ble _022FF9D4 + ldr r0, _022FF9E0 ; =ov11_02324D14 + add r1, sp, #0x10 + ldr r0, [r0, #4] + mov r2, #8 + add r0, r0, #8 + bl LoadFileFromRomVeneer + ldr r0, _022FF9E0 ; =ov11_02324D14 + ldr r2, [r0, #4] + ldr r1, [r2, #8] + ldrh r1, [r1] + str r1, [r2, #0x10] + ldr r1, [r0, #4] + ldr r0, [r1, #0x10] + cmp r0, #0 + bgt _022FF800 + add r0, r1, #8 + bl UnloadFile + ldr r0, _022FF9E0 ; =ov11_02324D14 + mov r1, r5 + ldr r0, [r0, #4] + str r1, [r0, #4] + b _022FF9D4 +_022FF800: + add r0, r1, #0x14 + bl ov11_022E4630 + cmp r0, #0 + bne _022FF86C + ldr r8, _022FF9E0 ; =ov11_02324D14 + mov r7, r5 + ldr r0, [r8, #4] + add r4, sp, #8 + ldr r6, [r0, #8] + b _022FF85C +_022FF828: + mov r0, r7, lsl #3 + add r1, r0, #2 + mov r0, r4 + add r1, r6, r1 + bl ov11_022E4600 + ldr r1, [r8, #4] + mov r0, r4 + add r1, r1, #0x14 + bl ov11_022E465C + cmp r0, #0 + movne r5, r7 + bne _022FF86C + add r7, r7, #1 +_022FF85C: + ldr r0, [r8, #4] + ldr r0, [r0, #0x10] + cmp r7, r0 + blt _022FF828 +_022FF86C: + ldr r0, _022FF9E0 ; =ov11_02324D14 + str r5, [sp, #0x90] + ldr r1, [r0, #4] + ldr r0, _022FF9E8 ; =ov11_023224AC + ldr r1, [r1, #0x10] + ldr r3, _022FF9F4 ; =ov11_022FFA14 + str r1, [sp] + mov r4, #0xa + add r2, sp, #0x90 + mov r1, #0x33 + str r4, [sp, #4] + bl CreateAdvancedMenu + ldr r1, _022FF9E0 ; =ov11_02324D14 + mov r2, #3 + ldr r3, [r1, #4] + strb r0, [r3] + ldr r0, [r1, #4] + str r2, [r0, #4] + b _022FF9D4 +_022FF8B8: + ldrsb r0, [r1] + bl IsAdvancedMenuActive + cmp r0, #0 + bne _022FF9D4 + ldr r0, _022FF9E0 ; =ov11_02324D14 + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl GetAdvancedMenuResult + cmp r0, #0 + ldrlt r0, _022FF9E0 ; =ov11_02324D14 + movlt r1, #0 + ldrlt r0, [r0, #4] + strlt r1, [r0, #4] + blt _022FF93C + ldr r1, _022FF9E0 ; =ov11_02324D14 + mov r0, r0, lsl #3 + ldr r3, [r1, #4] + add r1, r0, #2 + ldr r2, [r3, #8] + add r0, r3, #0x14 + add r1, r2, r1 + bl ov11_022E4600 + ldr r0, _022FF9E0 ; =ov11_02324D14 + ldr r2, _022FF9F8 ; =ov11_0238A078 + ldr r4, [r0, #4] + mov r1, #8 + add r3, r4, #0x14 +_022FF924: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _022FF924 + mov r0, #4 + str r0, [r4, #4] +_022FF93C: + ldr r0, _022FF9E0 ; =ov11_02324D14 + ldr r0, [r0, #4] + add r0, r0, #8 + bl UnloadFile + b _022FF9D4 +_022FF950: + ldrsb r0, [r1] + mvn r1, #1 + cmp r0, r1 + beq _022FF98C + bl IsAdvancedMenuActive2 + cmp r0, #0 + bne _022FF9D4 + ldr r0, _022FF9E0 ; =ov11_02324D14 + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl CloseAdvancedMenu + ldr r0, _022FF9E0 ; =ov11_02324D14 + mvn r1, #1 + ldr r0, [r0, #4] + strb r1, [r0] +_022FF98C: + ldr r0, _022FF9E0 ; =ov11_02324D14 + ldr r2, _022FF9F8 ; =ov11_0238A078 + ldr r5, [r0, #4] + mov r1, #8 + ldrsh r4, [r5, #0x1c] + add r3, r5, #0x14 + strh r4, [r0, #2] +_022FF9A8: + ldrb r0, [r3], #1 + subs r1, r1, #1 + strb r0, [r2], #1 + bne _022FF9A8 + mov r0, #5 + str r0, [r5, #4] + b _022FF9D4 +_022FF9C4: + mov r0, #6 + str r0, [r1, #4] + mov r0, #4 + b _022FF9D8 +_022FF9D4: + mov r0, #1 +_022FF9D8: + add sp, sp, #0x128 + ldmia sp!, {r4, r5, r6, r7, r8, pc} + .align 2, 0 +_022FF9E0: .word ov11_02324D14 +#if defined(EUROPE) +_022FF9E4: .word 0x000001CB +#elif !defined(JAPAN) +_022FF9E4: .word 0x000001AF +#endif +_022FF9E8: .word ov11_023224AC +_022FF9EC: .word ov11_022FF9FC +_022FF9F0: .word ov11_023224BC +_022FF9F4: .word ov11_022FFA14 +_022FF9F8: .word ov11_0238A078 + arm_func_end ov11_022FF5D0 + + arm_func_start ov11_022FF9FC +ov11_022FF9FC: ; 0x022FF9FC + ldr r2, _022FFA10 ; =EVENTS + mov r0, #0xc + mla r0, r1, r0, r2 + ldr r0, [r0, #8] + bx lr + .align 2, 0 +_022FFA10: .word EVENTS + arm_func_end ov11_022FF9FC + + arm_func_start ov11_022FFA14 +ov11_022FFA14: ; 0x022FFA14 + stmdb sp!, {r4, lr} + sub sp, sp, #8 + ldr r2, _022FFA58 ; =ov11_02324D14 + mov r1, r1, lsl #3 + ldr r2, [r2, #4] + mov r4, r0 + ldr r2, [r2, #8] + add r1, r1, #2 + add r0, sp, #0 + add r1, r2, r1 + bl ov11_022E4600 + add r0, sp, #0 + mov r1, r4 + bl ov11_022E466C + mov r0, r4 + add sp, sp, #8 + ldmia sp!, {r4, pc} + .align 2, 0 +_022FFA58: .word ov11_02324D14 + arm_func_end ov11_022FFA14 + + arm_func_start ov11_022FFA5C +ov11_022FFA5C: ; 0x022FFA5C + ldr r2, _022FFAA0 ; =ov11_02324D14 + ldr r3, _022FFAA4 ; =ov11_0238A078 + ldrsh ip, [r2, #2] + mov r2, #8 + strh ip, [r0] +_022FFA70: + ldrb r0, [r3], #1 + subs r2, r2, #1 + strb r0, [r1], #1 + bne _022FFA70 +#ifdef JAPAN + ldr r0, _022FFAA0 ; =ov11_02324D14 + ldrsh r0, [r0, #2] + cmp r0, #0x1b4 +#else + ldr r1, _022FFAA0 ; =ov11_02324D14 + ldr r0, _022FFAA8 ; =0x000001AF + ldrsh r1, [r1, #2] + cmp r1, r0 +#endif + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_022FFAA0: .word ov11_02324D14 +_022FFAA4: .word ov11_0238A078 +#if defined(EUROPE) +_022FFAA8: .word 0x000001CB +#elif !defined(JAPAN) +_022FFAA8: .word 0x000001AF +#endif + arm_func_end ov11_022FFA5C + + arm_func_start ov11_022FFAAC +ov11_022FFAAC: ; 0x022FFAAC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, _022FFAE4 ; =ov11_023224FC + mov r4, r1 + bl InitMenu + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r1, _022FFAE8 ; =ov11_0238A080 + ldr r0, _022FFAEC ; =ov11_02324D1C + str r5, [r1] + strh r4, [r0, #2] + mov r1, #0xd5 + strh r1, [r0] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_022FFAE4: .word ov11_023224FC +_022FFAE8: .word ov11_0238A080 +_022FFAEC: .word ov11_02324D1C + arm_func_end ov11_022FFAAC + + arm_func_start ov11_022FFAF0 +ov11_022FFAF0: ; 0x022FFAF0 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r0, _022FFE60 ; =0x00000518 + mov r1, #8 + mov r4, #0 + bl MemAlloc + ldr r1, _022FFE64 ; =ov11_0238A080 + ldr r2, _022FFE68 ; =ov11_02324D1C + ldr r1, [r1] + str r0, [r2, #4] + str r1, [r0, #8] + ldr r1, [r2, #4] + ldr r0, [r1, #8] + cmp r0, #0 + cmpne r0, #4 + moveq r0, #1 + streqb r0, [r1, #0xc] + beq _022FFB48 + cmp r0, #1 + moveq r0, #1 + streqb r0, [r1, #0xc] + movne r0, r4 + strneb r0, [r1, #0xc] +_022FFB48: + ldr r5, _022FFE68 ; =ov11_02324D1C + ldr r0, [r5, #4] + ldr r0, [r0, #8] + cmp r0, #2 + bne _022FFBA8 + mov r6, #0 +_022FFB60: + add r0, r6, #0xb4 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + mov r0, r7 + bl GetDungeonMode + cmp r0, #0 + beq _022FFB98 + ldr r1, [r5, #4] + add r1, r1, r4, lsl #1 + strh r7, [r1, #0x18] + ldr r1, [r5, #4] + add r1, r1, r4, lsl #2 + str r0, [r1, #0x1c4] + add r4, r4, #1 +_022FFB98: + add r6, r6, #1 + cmp r6, #0xb + blt _022FFB60 + b _022FFE08 +_022FFBA8: + cmp r0, #3 + bne _022FFBFC + mov r6, #0 +_022FFBB4: + add r0, r6, #0xbf + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + mov r0, r7 + bl GetDungeonMode + cmp r0, #0 + beq _022FFBEC + ldr r1, [r5, #4] + add r1, r1, r4, lsl #1 + strh r7, [r1, #0x18] + ldr r1, [r5, #4] + add r1, r1, r4, lsl #2 + str r0, [r1, #0x1c4] + add r4, r4, #1 +_022FFBEC: + add r6, r6, #1 + cmp r6, #0xa + blt _022FFBB4 + b _022FFE08 +_022FFBFC: + cmp r0, #4 + bne _022FFCB4 + mov r6, #0 +_022FFC08: + mov r0, r6, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #0x6f + blt _022FFC20 + cmp r7, #0xa4 + ble _022FFCA4 +_022FFC20: + mov r0, r7 + bl GetDungeonMode + mov r8, r0 + mov r0, r7 + bl DungeonSwapIdxToId + bl GetMaxReachedFloor + cmp r0, #0 + ble _022FFCA4 + cmp r7, #0x26 + cmpne r7, #0x29 + bne _022FFC78 + sub r0, r8, #2 + cmp r0, #1 + bhi _022FFCA4 + ldr r0, [r5, #4] + add r0, r0, r4, lsl #1 + strh r7, [r0, #0x18] + ldr r0, [r5, #4] + add r0, r0, r4, lsl #2 + str r8, [r0, #0x1c4] + add r4, r4, #1 + b _022FFCA4 +_022FFC78: + cmp r7, #0x36 + beq _022FFCA4 + cmp r8, #3 + bne _022FFCA4 + ldr r0, [r5, #4] + add r0, r0, r4, lsl #1 + strh r7, [r0, #0x18] + ldr r0, [r5, #4] + add r0, r0, r4, lsl #2 + str r8, [r0, #0x1c4] + add r4, r4, #1 +_022FFCA4: + add r6, r6, #1 + cmp r6, #0xae + ble _022FFC08 + b _022FFE08 +_022FFCB4: + cmp r0, #1 + mov r5, #0 + bne _022FFD08 + bl GetExecuteSpecialEpisodeType + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _022FFD08 +_022FFCD0: ; jump table + b _022FFCE4 ; case 0 + b _022FFCEC ; case 1 + b _022FFCF4 ; case 2 + b _022FFCFC ; case 3 + b _022FFD04 ; case 4 +_022FFCE4: + ldr r5, _022FFE6C ; =ov11_023224D0 + b _022FFD08 +_022FFCEC: + ldr r5, _022FFE70 ; =ov11_023224DC + b _022FFD08 +_022FFCF4: + ldr r5, _022FFE74 ; =ov11_023224EA + b _022FFD08 +_022FFCFC: + ldr r5, _022FFE78 ; =ov11_0232251C + b _022FFD08 +_022FFD04: + ldr r5, _022FFE7C ; =ov11_02322548 +_022FFD08: + cmp r5, #0 + beq _022FFD60 + ldr r7, _022FFE68 ; =ov11_02324D1C + mvn r6, #0 + b _022FFD50 +_022FFD1C: + ldrsh r8, [r5], #2 + mov r0, r8 + bl GetDungeonMode + cmp r0, #1 + cmpne r0, #3 + bne _022FFD50 + ldr r1, [r7, #4] + add r1, r1, r4, lsl #1 + strh r8, [r1, #0x18] + ldr r1, [r7, #4] + add r1, r1, r4, lsl #2 + str r0, [r1, #0x1c4] + add r4, r4, #1 +_022FFD50: + ldrsh r0, [r5] + cmp r0, r6 + bne _022FFD1C + b _022FFE08 +_022FFD60: + mov r7, #0xd4 + ldr r5, _022FFE68 ; =ov11_02324D1C + mov r8, #0 + mov r6, r7 +_022FFD70: + ldr r1, [r5, #4] + mov r0, r8, lsl #0x10 + ldr r1, [r1, #8] + mov sb, r0, asr #0x10 + cmp r1, #0 + bne _022FFDA0 + cmp sb, #0xb0 + beq _022FFDFC + cmp sb, #0x7b + blt _022FFDA0 + cmp sb, #0xa4 + ble _022FFDFC +_022FFDA0: + mov r0, sb + bl GetDungeonMode + mov sl, r0 + cmp sl, #1 + cmpne sl, #3 + bne _022FFDFC + ldr r0, [r5, #4] + cmp sb, #6 + add r0, r0, r4, lsl #1 + strh sb, [r0, #0x18] + bne _022FFDEC + mov r0, r7 + bl GetDungeonMode + cmp r0, #1 + cmpne r0, #3 + ldreq r1, [r5, #4] + moveq sl, r0 + addeq r0, r1, r4, lsl #1 + streqh r6, [r0, #0x18] +_022FFDEC: + ldr r0, [r5, #4] + add r0, r0, r4, lsl #2 + str sl, [r0, #0x1c4] + add r4, r4, #1 +_022FFDFC: + add r8, r8, #1 + cmp r8, #0xb4 + blt _022FFD70 +_022FFE08: + ldr r0, _022FFE68 ; =ov11_02324D1C + mvn r2, #1 + ldr r1, [r0, #4] + cmp r4, #0 + strb r2, [r1] + ldr r1, [r0, #4] + strb r2, [r1, #1] + ldr r1, [r0, #4] + strb r2, [r1, #2] + ldr r1, [r0, #4] + str r4, [r1, #0x14] + addeq r1, r2, #1 + streqh r1, [r0] + moveq r0, #0 + ldmeqia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r1, [r0, #4] + mov r2, #0 + str r2, [r1, #4] + mov r1, #0xd5 + strh r1, [r0] + mov r0, #1 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_022FFE60: .word 0x00000518 +_022FFE64: .word ov11_0238A080 +_022FFE68: .word ov11_02324D1C +_022FFE6C: .word ov11_023224D0 +_022FFE70: .word ov11_023224DC +_022FFE74: .word ov11_023224EA +_022FFE78: .word ov11_0232251C +_022FFE7C: .word ov11_02322548 + arm_func_end ov11_022FFAF0 + + arm_func_start ov11_022FFE80 +ov11_022FFE80: ; 0x022FFE80 + stmdb sp!, {r3, lr} + ldr r0, _022FFEFC ; =ov11_02324D1C + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0] + mvn r1, #1 + cmp r0, r1 + beq _022FFEA8 + bl CloseAdvancedMenu +_022FFEA8: + ldr r0, _022FFEFC ; =ov11_02324D1C + mvn r1, #1 + ldr r0, [r0, #4] + ldrsb r0, [r0, #1] + cmp r0, r1 + beq _022FFEC4 + bl CloseDialogueBox +_022FFEC4: + ldr r0, _022FFEFC ; =ov11_02324D1C + mvn r1, #1 + ldr r0, [r0, #4] + ldrsb r0, [r0, #2] + cmp r0, r1 + beq _022FFEE0 + bl CloseParentMenu +_022FFEE0: + ldr r0, _022FFEFC ; =ov11_02324D1C + ldr r0, [r0, #4] + bl MemFree + ldr r0, _022FFEFC ; =ov11_02324D1C + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_022FFEFC: .word ov11_02324D1C + arm_func_end ov11_022FFE80 + + arm_func_start ov11_022FFF00 +ov11_022FFF00: ; 0x022FFF00 + stmdb sp!, {r3, lr} + sub sp, sp, #0xf0 + ldr r0, _0230057C ; =ov11_02324D1C + ldr r2, [r0, #4] + ldr r0, [r2, #4] + cmp r0, #0xa + addls pc, pc, r0, lsl #2 + b _02300570 +_022FFF20: ; jump table + b _022FFF4C ; case 0 + b _022FFF90 ; case 1 + b _02300024 ; case 2 + b _02300040 ; case 3 + b _0230018C ; case 4 + b _02300218 ; case 5 + b _02300300 ; case 6 + b _02300570 ; case 7 + b _023003E4 ; case 8 + b _02300458 ; case 9 + b _02300560 ; case 10 +_022FFF4C: + ldrb r0, [r2, #0xc] + cmp r0, #0 + beq _022FFF84 + bl ov11_0230D220 + cmp r0, #0 + bne _02300570 + mov r0, #2 + bl WorldMapSetMode + bl ov11_0230E964 + ldr r0, _0230057C ; =ov11_02324D1C + mov r1, #1 + ldr r0, [r0, #4] + str r1, [r0, #4] + b _02300570 +_022FFF84: + mov r0, #3 + str r0, [r2, #4] + b _02300570 +_022FFF90: + bl ov11_0230D220 + cmp r0, #0 + bne _02300570 + ldr r0, _0230057C ; =ov11_02324D1C + mov r1, #0 + ldr lr, [r0, #4] + mov r2, r1 + ldrsh r3, [r0, #2] + ldr ip, [lr, #0x14] + b _022FFFD0 +_022FFFB8: + add r0, lr, r2, lsl #1 + ldrsh r0, [r0, #0x18] + cmp r3, r0 + moveq r1, r2 + beq _022FFFD8 + add r2, r2, #1 +_022FFFD0: + cmp r2, ip + blt _022FFFB8 +_022FFFD8: + add r0, lr, r1, lsl #1 + ldrsh r0, [r0, #0x18] + bl DungeonSwapIdxToId + bl sub_0206A84C + ldr r1, _0230057C ; =ov11_02324D1C + ldr r2, [r1, #4] + strh r0, [r2, #0xe] + ldr r0, [r1, #4] + ldrsh r0, [r0, #0xe] + bl ov11_0230F1EC + ldr r0, _0230057C ; =ov11_02324D1C + ldr r0, [r0, #4] + ldrsh r0, [r0, #0xe] + bl WorldMapSetCamera + ldr r0, _0230057C ; =ov11_02324D1C + mov r1, #2 + ldr r0, [r0, #4] + str r1, [r0, #4] + b _02300570 +_02300024: + bl ov11_0230D220 + cmp r0, #0 + bne _02300570 + ldr r0, _0230057C ; =ov11_02324D1C + mov r1, #3 + ldr r0, [r0, #4] + str r1, [r0, #4] +_02300040: + ldr r2, _0230057C ; =ov11_02324D1C + mvn r1, #1 + ldr ip, [r2, #4] + ldrsb r0, [ip, #1] + cmp r0, r1 + ldreqsb r3, [ip, #2] + cmpeq r3, r1 + beq _023000F8 + mvn r1, #1 + cmp r0, r1 + beq _02300078 + bl IsDialogueBoxActive + cmp r0, #0 + bne _02300570 +_02300078: + ldr r0, _0230057C ; =ov11_02324D1C + mvn r1, #1 + ldr r0, [r0, #4] + ldrsb r0, [r0, #2] + cmp r0, r1 + beq _0230009C + bl IsParentMenuActive + cmp r0, #0 + bne _02300570 +_0230009C: + ldr r0, _0230057C ; =ov11_02324D1C + mvn r1, #1 + ldr r0, [r0, #4] + ldrsb r0, [r0, #1] + cmp r0, r1 + beq _023000C8 + bl CloseDialogueBox + ldr r0, _0230057C ; =ov11_02324D1C + mvn r1, #1 + ldr r0, [r0, #4] + strb r1, [r0, #1] +_023000C8: + ldr r0, _0230057C ; =ov11_02324D1C + mvn r1, #1 + ldr r0, [r0, #4] + ldrsb r0, [r0, #2] + cmp r0, r1 + beq _02300570 + bl CloseParentMenu + ldr r0, _0230057C ; =ov11_02324D1C + mvn r1, #1 + ldr r0, [r0, #4] + strb r1, [r0, #2] + b _02300570 +_023000F8: + ldrsb r0, [ip] + cmp r0, r1 + bne _02300178 + mov r1, #0 + str r1, [sp, #0x58] + ldrsh r2, [r2, #2] + ldr r3, [ip, #0x14] + b _02300130 +_02300118: + add r0, ip, r1, lsl #1 + ldrsh r0, [r0, #0x18] + cmp r2, r0 + streq r1, [sp, #0x58] + beq _02300138 + add r1, r1, #1 +_02300130: + cmp r1, r3 + blt _02300118 +_02300138: + ldr r1, _02300580 ; =0x0000022E + mov r0, #0x10 + strh r1, [sp, #0x60] + str r0, [sp, #0x64] + ldr ip, [ip, #0x14] + ldr r0, _02300584 ; =ov11_0232250C + str ip, [sp] + mov ip, #8 + ldr r1, _02300588 ; =0x00801833 + ldr r3, _0230058C ; =ov11_023005A0 + add r2, sp, #0x58 + str ip, [sp, #4] + bl CreateAdvancedMenu + ldr r1, _0230057C ; =ov11_02324D1C + ldr r1, [r1, #4] + strb r0, [r1] +_02300178: + ldr r0, _0230057C ; =ov11_02324D1C + mov r1, #4 + ldr r0, [r0, #4] + str r1, [r0, #4] + b _02300570 +_0230018C: + ldrb r0, [r2, #0xc] + cmp r0, #0 + beq _023001F4 + bl ov11_0230D220 + cmp r0, #0 + bne _02300570 + ldr r0, _0230057C ; =ov11_02324D1C + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl GetAdvancedMenuCurrentOption + ldr r1, _0230057C ; =ov11_02324D1C + ldr r1, [r1, #4] + add r0, r1, r0, lsl #1 + ldrsh r0, [r0, #0x18] + bl DungeonSwapIdxToId + bl sub_0206A84C + ldr r1, _0230057C ; =ov11_02324D1C + ldr r2, [r1, #4] + strh r0, [r2, #0xe] + ldr r0, [r1, #4] + ldrsh r0, [r0, #0xe] + bl ov11_0230F1EC + ldr r0, _0230057C ; =ov11_02324D1C + ldr r0, [r0, #4] + ldrsh r0, [r0, #0xe] + bl WorldMapSetCamera +_023001F4: + ldr r0, _0230057C ; =ov11_02324D1C + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl ResumeAdvancedMenu + ldr r0, _0230057C ; =ov11_02324D1C + mov r1, #5 + ldr r0, [r0, #4] + str r1, [r0, #4] + b _02300570 +_02300218: + ldrb r0, [r2, #0xc] + cmp r0, #0 + beq _0230027C + ldrsb r0, [r2] + bl GetAdvancedMenuCurrentOption + ldr r1, _0230057C ; =ov11_02324D1C + ldr r1, [r1, #4] + add r0, r1, r0, lsl #1 + ldrsh r0, [r0, #0x18] + bl DungeonSwapIdxToId + bl sub_0206A84C + ldr r1, _0230057C ; =ov11_02324D1C + ldr r3, [r1, #4] + ldrsh r2, [r3, #0xe] + cmp r2, r0 + beq _0230027C + strh r0, [r3, #0xe] + ldr r0, [r1, #4] + ldrsh r0, [r0, #0xe] + bl ov11_0230F1EC + ldr r0, _0230057C ; =ov11_02324D1C + mov r1, #0xc + ldr r0, [r0, #4] + ldrsh r0, [r0, #0xe] + bl ov11_0230F138 +_0230027C: + ldr r0, _0230057C ; =ov11_02324D1C + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl IsAdvancedMenuActive + cmp r0, #0 + bne _02300570 + ldr r0, _0230057C ; =ov11_02324D1C + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl GetAdvancedMenuResult + cmp r0, #0 + bge _023002E4 + ldr r0, _0230057C ; =ov11_02324D1C + ldr r0, [r0, #4] + ldrb r0, [r0, #0xc] + cmp r0, #0 + beq _023002C4 + bl ov11_0230CFF4 +_023002C4: + ldr r0, _0230057C ; =ov11_02324D1C + mvn r3, #0 + ldr r2, [r0, #4] + mov r1, #9 + str r3, [r2, #0x10] + ldr r0, [r0, #4] + str r1, [r0, #4] + b _02300570 +_023002E4: + ldr r1, _0230057C ; =ov11_02324D1C + mov r2, #6 + ldr r3, [r1, #4] + str r0, [r3, #0x10] + ldr r0, [r1, #4] + str r2, [r0, #4] + b _02300570 +_02300300: + ldrsb r0, [r2] + mvn r1, #1 + cmp r0, r1 + beq _02300340 + bl IsAdvancedMenuActive2 + cmp r0, #0 + bne _02300570 + ldr r0, _0230057C ; =ov11_02324D1C + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl CloseAdvancedMenu + ldr r0, _0230057C ; =ov11_02324D1C + mvn r1, #1 + ldr r0, [r0, #4] + strb r1, [r0] + b _02300570 +_02300340: + ldrsb r0, [r2, #1] + cmp r0, r1 + bne _02300398 + mov r0, #0 + bl CreateDialogueBox + ldr r1, _0230057C ; =ov11_02324D1C + ldr r2, [r1, #4] + strb r0, [r2, #1] + ldr r2, [r1, #4] + ldr r0, [r2, #0x10] + add r0, r2, r0, lsl #1 + ldrsh r0, [r0, #0x18] + strh r0, [r1, #2] + bl DungeonSwapIdxToId +#ifdef JAPAN + ldr r2, _0230057C ; =ov11_02324D1C + ldr r1, _02300590 ; =0x00000408 + ldr r2, [r2, #4] + str r0, [sp, #0x18] + ldrsb r0, [r2, #1] + add r3, sp, #8 + add r2, r1, #0x2e +#else + ldr r1, _0230057C ; =ov11_02324D1C + str r0, [sp, #0x18] + ldr r0, [r1, #4] + ldr r1, _02300590 ; =0x00000408 + ldrsb r0, [r0, #1] + ldr r2, _02300594 ; =0x0000022F + add r3, sp, #8 +#endif + bl ShowStringIdInDialogueBox +_02300398: + ldr r1, _0230057C ; =ov11_02324D1C + mvn r0, #1 + ldr r1, [r1, #4] + ldrsb r1, [r1, #2] + cmp r1, r0 + bne _023003D0 + mov r0, #0 + ldr r1, _02300598 ; =0x00400013 + ldr r3, _0230059C ; =ov11_02322530 + mov r2, r0 + bl CreateParentMenuFromStringIds + ldr r1, _0230057C ; =ov11_02324D1C + ldr r1, [r1, #4] + strb r0, [r1, #2] +_023003D0: + ldr r0, _0230057C ; =ov11_02324D1C + mov r1, #8 + ldr r0, [r0, #4] + str r1, [r0, #4] + b _02300570 +_023003E4: + ldrsb r0, [r2, #2] + bl CheckParentMenuField0x1A0 + cmp r0, #0 + bne _02300570 + ldr r0, _0230057C ; =ov11_02324D1C + ldr r0, [r0, #4] + ldrsb r0, [r0, #2] + bl GetSimpleMenuResult__0202AEA4 + cmp r0, #2 + bne _02300430 + ldr r0, _0230057C ; =ov11_02324D1C + ldr r0, [r0, #4] + ldrsb r0, [r0, #1] + bl sub_0202F334 + ldr r0, _0230057C ; =ov11_02324D1C + mov r1, #3 + ldr r0, [r0, #4] + str r1, [r0, #4] + b _02300570 +_02300430: + cmp r0, #1 + ldreq r0, _0230057C ; =ov11_02324D1C + moveq r1, #3 + ldreq r0, [r0, #4] + streq r1, [r0, #4] + ldrne r0, _0230057C ; =ov11_02324D1C + movne r1, #9 + ldrne r0, [r0, #4] + strne r1, [r0, #4] + b _02300570 +_02300458: + ldrsb r0, [r2] + mvn r1, #1 + cmp r0, r1 + beq _02300494 + bl IsAdvancedMenuActive2 + cmp r0, #0 + bne _02300570 + ldr r0, _0230057C ; =ov11_02324D1C + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl CloseAdvancedMenu + ldr r0, _0230057C ; =ov11_02324D1C + mvn r1, #1 + ldr r0, [r0, #4] + strb r1, [r0] +_02300494: + ldr r0, _0230057C ; =ov11_02324D1C + mvn r1, #1 + ldr r0, [r0, #4] + ldrsb r0, [r0, #1] + cmp r0, r1 + beq _023004B8 + bl IsDialogueBoxActive + cmp r0, #0 + bne _02300570 +_023004B8: + ldr r0, _0230057C ; =ov11_02324D1C + mvn r1, #1 + ldr r0, [r0, #4] + ldrsb r0, [r0, #2] + cmp r0, r1 + beq _023004DC + bl IsParentMenuActive + cmp r0, #0 + bne _02300570 +_023004DC: + ldr r0, _0230057C ; =ov11_02324D1C + mvn r1, #1 + ldr r0, [r0, #4] + ldrsb r0, [r0, #1] + cmp r0, r1 + beq _02300508 + bl CloseDialogueBox + ldr r0, _0230057C ; =ov11_02324D1C + mvn r1, #1 + ldr r0, [r0, #4] + strb r1, [r0, #1] +_02300508: + ldr r0, _0230057C ; =ov11_02324D1C + mvn r1, #1 + ldr r0, [r0, #4] + ldrsb r0, [r0, #2] + cmp r0, r1 + beq _02300534 + bl CloseParentMenu + ldr r0, _0230057C ; =ov11_02324D1C + mvn r1, #1 + ldr r0, [r0, #4] + strb r1, [r0, #2] +_02300534: + ldr r0, _0230057C ; =ov11_02324D1C + ldr r2, [r0, #4] + ldr r1, [r2, #0x10] + cmp r1, #0 + mvnlt r1, #0 + addge r1, r2, r1, lsl #1 + ldrgesh r1, [r1, #0x18] + strh r1, [r0] + mov r0, #0xa + str r0, [r2, #4] + b _02300570 +_02300560: + mov r0, #0xb + str r0, [r2, #4] + mov r0, #4 + b _02300574 +_02300570: + mov r0, #1 +_02300574: + add sp, sp, #0xf0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230057C: .word ov11_02324D1C +#ifdef JAPAN +_02300580: .word 0x00000435 +#else +_02300580: .word 0x0000022E +#endif +_02300584: .word ov11_0232250C +_02300588: .word 0x00801833 +_0230058C: .word ov11_023005A0 +_02300590: .word 0x00000408 +#ifndef JAPAN +_02300594: .word 0x0000022F +#endif +_02300598: .word 0x00400013 +_0230059C: .word ov11_02322530 + arm_func_end ov11_022FFF00 + + arm_func_start ov11_023005A0 +ov11_023005A0: ; 0x023005A0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #0x54 + ldr r2, _02300660 ; =ov11_02324D1C + mov r8, r0 + ldr r2, [r2, #4] + add r0, r2, r1, lsl #1 + ldrsh r4, [r0, #0x18] + add r0, r2, r1, lsl #2 + ldr r5, [r0, #0x1c4] + mov r0, r4 + bl DungeonSwapIdxToId + ldr r1, _02300660 ; =ov11_02324D1C + mov r6, r0 + ldr r1, [r1, #4] + ldr r7, _02300664 ; =ov11_0232256C + ldr r1, [r1, #8] + cmp r1, #0 + bne _0230060C + cmp r5, #1 + ldreq r7, _02300668 ; =ov11_02322574 + beq _02300630 + cmp r5, #3 + bne _02300630 + bl AnyDungeonRequestsDone + cmp r0, #0 + ldrne r7, _0230066C ; =ov11_02322580 + b _02300630 +_0230060C: + sub r0, r1, #2 + cmp r0, #1 + bhi _02300630 + cmp r4, #0xbe + beq _02300630 + mov r0, r4 + bl sub_0204CF0C + cmp r0, #0 + ldrne r7, _02300670 ; =ov11_0232258C +_02300630: + ldr r2, _02300674 ; =ov11_02322598 + ldr r3, _02300678 ; =0x0000C402 + add r4, sp, #4 + mov r0, r8 + str r6, [sp, #0x14] + str r7, [sp, #0x3c] + mov r1, #0x400 + str r4, [sp] + bl PreprocessString + mov r0, r8 + add sp, sp, #0x54 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_02300660: .word ov11_02324D1C +_02300664: .word ov11_0232256C +_02300668: .word ov11_02322574 +_0230066C: .word ov11_02322580 +_02300670: .word ov11_0232258C +_02300674: .word ov11_02322598 +_02300678: .word 0x0000C402 + arm_func_end ov11_023005A0 + + arm_func_start ov11_0230067C +ov11_0230067C: ; 0x0230067C + ldr r1, _023006A0 ; =ov11_02324D1C + ldrsh r2, [r1] + strh r2, [r0] + ldrsh r0, [r1] + cmp r0, #0xd5 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_023006A0: .word ov11_02324D1C + arm_func_end ov11_0230067C + + arm_func_start ov11_023006A4 +ov11_023006A4: ; 0x023006A4 + stmdb sp!, {r3, lr} + ldr r0, _023006D8 ; =ov11_02324D24 + ldr r0, [r0, #4] + cmp r0, #0 + ldmneia sp!, {r3, pc} + mov r0, #0x460 + mov r1, #8 + bl MemAlloc + ldr r1, _023006D8 ; =ov11_02324D24 + mov r2, #0 + str r0, [r1, #4] + str r2, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_023006D8: .word ov11_02324D24 + arm_func_end ov11_023006A4 + + arm_func_start ov11_023006DC +ov11_023006DC: ; 0x023006DC + stmdb sp!, {r3, lr} + ldr r0, _02300720 ; =ov11_02324D24 + ldr r1, [r0] + cmp r1, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} + ldr r0, [r0, #4] + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} + ldr r0, _02300724 ; =ov11_023225BC + bl sub_02034840 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + .align 2, 0 +_02300720: .word ov11_02324D24 +_02300724: .word ov11_023225BC + arm_func_end ov11_023006DC + + arm_func_start ov11_02300728 +ov11_02300728: ; 0x02300728 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl ov11_023006A4 + ldr r0, _023007A4 ; =ov11_02324D24 + mov r1, r7 + ldr r0, [r0, #4] + add r0, r0, #0x58 + bl strcpy + ldr r0, _023007A4 ; =ov11_02324D24 + mov r1, r6 + ldr r0, [r0, #4] + add r0, r0, #8 + bl CopyOrInitPreprocessorArgs + ldr r1, _023007A4 ; =ov11_02324D24 + ldr r0, _023007A8 ; =ov11_023225BC + ldr r3, [r1, #4] + mov r2, #2 + str r5, [r3, #0x458] + ldr r3, [r1, #4] + str r4, [r3, #0x45c] + ldr r1, [r1, #4] + str r2, [r1] + bl sub_02034840 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, _023007A8 ; =ov11_023225BC + bl InitMenu + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_023007A4: .word ov11_02324D24 +_023007A8: .word ov11_023225BC + arm_func_end ov11_02300728 + + arm_func_start ov11_023007AC +ov11_023007AC: ; 0x023007AC + stmdb sp!, {r3, lr} + mov r0, #0x14 + mov r1, #8 + bl MemAlloc + ldr r1, _023007E8 ; =ov11_02324D24 + mov r2, #0 + str r0, [r1] + str r2, [r0, #4] + ldr r0, _023007EC ; =ov11_023225CC + bl CreateDialogueBox + ldr r1, _023007E8 ; =ov11_02324D24 + ldr r1, [r1] + strb r0, [r1] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023007E8: .word ov11_02324D24 +_023007EC: .word ov11_023225CC + arm_func_end ov11_023007AC + + arm_func_start ov11_023007F0 +ov11_023007F0: ; 0x023007F0 + stmdb sp!, {r3, lr} + ldr r0, _02300848 ; =ov11_02324D24 + ldr r0, [r0] + cmp r0, #0 + beq _02300824 + ldrsb r0, [r0] + bl CloseDialogueBox + ldr r0, _02300848 ; =ov11_02324D24 + ldr r0, [r0] + bl MemFree + ldr r0, _02300848 ; =ov11_02324D24 + mov r1, #0 + str r1, [r0] +_02300824: + ldr r0, _02300848 ; =ov11_02324D24 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _02300848 ; =ov11_02324D24 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02300848: .word ov11_02324D24 + arm_func_end ov11_023007F0 + + arm_func_start ov11_0230084C +ov11_0230084C: ; 0x0230084C + stmdb sp!, {r3, lr} + ldr r0, _02300A20 ; =ov11_02324D24 + ldr r3, [r0] + ldr r1, [r3, #4] + cmp r1, #5 + addls pc, pc, r1, lsl #2 + b _02300A18 +_02300868: ; jump table + b _02300880 ; case 0 + b _023008A4 ; case 1 + b _02300964 ; case 2 + b _02300990 ; case 3 + b _023009C4 ; case 4 + b _023009F4 ; case 5 +_02300880: + ldr r0, [r0, #4] + ldr r0, [r0] + cmp r0, #0 + beq _02300A18 + mov r1, #1 + mov r0, #0 + str r1, [r3, #4] + bl ov11_022E9BD0 + b _02300A18 +_023008A4: + ldr r2, [r0, #4] + ldr r1, _02300A24 ; =0x00000408 + ldr r0, [r2, #0x45c] + cmp r0, #0 + ldr r0, [r2] + movge r1, #0x20 + cmp r0, #1 + beq _023008D0 + cmp r0, #2 + beq _023008EC + b _02300904 +_023008D0: + ldr r2, _02300A20 ; =ov11_02324D24 + ldrsb r0, [r3] + ldr r3, [r2, #4] + ldrh r2, [r3, #4] + add r3, r3, #8 + bl ShowStringIdInDialogueBox + b _02300904 +_023008EC: + ldr r2, _02300A20 ; =ov11_02324D24 + ldrsb r0, [r3] + ldr r3, [r2, #4] + add r2, r3, #0x58 + add r3, r3, #8 + bl ShowStringInDialogueBox +_02300904: + ldr r0, _02300A20 ; =ov11_02324D24 + ldmia r0, {r1, r2} + ldr r2, [r2, #0x458] + str r2, [r1, #8] + ldmia r0, {r1, r2} + ldr r2, [r2, #0x45c] + str r2, [r1, #0xc] + ldr r1, [r0, #4] + ldr r1, [r1, #0x45c] + cmp r1, #0 + blt _02300940 + ldr r0, [r0] + mov r2, r1 + ldrsb r0, [r0] + bl sub_0202F190 +_02300940: + ldr r0, _02300A20 ; =ov11_02324D24 + ldr r0, [r0] + ldr r0, [r0, #8] + bl ov11_022E9B84 + ldr r0, _02300A20 ; =ov11_02324D24 + mov r1, #2 + ldr r0, [r0] + str r1, [r0, #4] + b _02300A18 +_02300964: + bl ov11_022E9F48 + cmp r0, #0 + bne _02300A18 + ldr r0, _02300A20 ; =ov11_02324D24 + mov r2, #3 + ldr r1, [r0] + str r2, [r1, #4] + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_0202F3F8 + b _02300A18 +_02300990: + ldrsb r0, [r3] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02300A18 + ldr r0, _02300A20 ; =ov11_02324D24 + ldr r0, [r0] + ldr r0, [r0, #8] + bl ov11_022E9BD0 + ldr r0, _02300A20 ; =ov11_02324D24 + mov r1, #4 + ldr r0, [r0] + str r1, [r0, #4] + b _02300A18 +_023009C4: + bl ov11_022E9F48 + cmp r0, #0 + bne _02300A18 + ldr r0, _02300A20 ; =ov11_02324D24 + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_0202F334 + ldr r0, _02300A20 ; =ov11_02324D24 + mov r1, #5 + ldr r0, [r0] + str r1, [r0, #4] + b _02300A18 +_023009F4: + ldrsb r0, [r3] + bl sub_020282F4 + mvn r1, #5 + cmp r0, r1 + bne _02300A18 + mov r0, #0 + bl ov11_022E9B84 + mov r0, #4 + ldmia sp!, {r3, pc} +_02300A18: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02300A20: .word ov11_02324D24 +_02300A24: .word 0x00000408 + arm_func_end ov11_0230084C + + arm_func_start ov11_02300A28 +ov11_02300A28: ; 0x02300A28 + stmdb sp!, {r3, lr} + ldr r0, _02300A5C ; =ov11_02324D2C + ldr r0, [r0, #4] + cmp r0, #0 + ldmneia sp!, {r3, pc} + mov r0, #0x460 + mov r1, #8 + bl MemAlloc + ldr r1, _02300A5C ; =ov11_02324D2C + mov r2, #0 + str r0, [r1, #4] + str r2, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02300A5C: .word ov11_02324D2C + arm_func_end ov11_02300A28 + + arm_func_start ov11_02300A60 +ov11_02300A60: ; 0x02300A60 + stmdb sp!, {r3, lr} + ldr r0, _02300AC4 ; =ov11_02324D2C + ldr r1, [r0] + ldr r0, [r0, #4] + cmp r1, #0 + beq _02300A8C + ldr r0, [r0] + cmp r0, #0 + movne r0, #1 + ldreqb r0, [r1, #8] + ldmia sp!, {r3, pc} +_02300A8C: + cmp r0, #0 + beq _02300AA8 + ldr r0, [r0] + cmp r0, #0 + beq _02300ABC + mov r0, #1 + ldmia sp!, {r3, pc} +_02300AA8: + ldr r0, _02300AC8 ; =ov11_023225DC + bl sub_02034840 + cmp r0, #0 + movne r0, #1 + ldmneia sp!, {r3, pc} +_02300ABC: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02300AC4: .word ov11_02324D2C +_02300AC8: .word ov11_023225DC + arm_func_end ov11_02300A60 + + arm_func_start ov11_02300ACC +ov11_02300ACC: ; 0x02300ACC + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r6, r1 + mov r5, r2 + mov r4, r3 + bl ov11_02300A28 + ldr r0, _02300B48 ; =ov11_02324D2C + mov r1, r7 + ldr r0, [r0, #4] + add r0, r0, #0x58 + bl strcpy + ldr r0, _02300B48 ; =ov11_02324D2C + mov r1, r6 + ldr r0, [r0, #4] + add r0, r0, #8 + bl CopyOrInitPreprocessorArgs + ldr r1, _02300B48 ; =ov11_02324D2C + ldr r0, _02300B4C ; =ov11_023225DC + ldr r3, [r1, #4] + mov r2, #2 + str r5, [r3, #0x458] + ldr r3, [r1, #4] + str r4, [r3, #0x45c] + ldr r1, [r1, #4] + str r2, [r1] + bl sub_02034840 + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, r6, r7, pc} + ldr r0, _02300B4C ; =ov11_023225DC + bl InitMenu + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_02300B48: .word ov11_02324D2C +_02300B4C: .word ov11_023225DC + arm_func_end ov11_02300ACC + + arm_func_start ov11_02300B50 +ov11_02300B50: ; 0x02300B50 + stmdb sp!, {r3, lr} + mov r0, #0xc + mov r1, #8 + bl MemAlloc + ldr r1, _02300B94 ; =ov11_02324D2C + mov r2, #0 + str r0, [r1] + str r2, [r0, #4] + ldr r1, [r1] + ldr r0, _02300B98 ; =ov11_023225EC + strb r2, [r1, #8] + bl CreateDialogueBox + ldr r1, _02300B94 ; =ov11_02324D2C + ldr r1, [r1] + strb r0, [r1] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02300B94: .word ov11_02324D2C +_02300B98: .word ov11_023225EC + arm_func_end ov11_02300B50 + + arm_func_start ov11_02300B9C +ov11_02300B9C: ; 0x02300B9C + stmdb sp!, {r3, lr} + ldr r0, _02300BF4 ; =ov11_02324D2C + ldr r0, [r0] + cmp r0, #0 + beq _02300BD0 + ldrsb r0, [r0] + bl CloseDialogueBox + ldr r0, _02300BF4 ; =ov11_02324D2C + ldr r0, [r0] + bl MemFree + ldr r0, _02300BF4 ; =ov11_02324D2C + mov r1, #0 + str r1, [r0] +_02300BD0: + ldr r0, _02300BF4 ; =ov11_02324D2C + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _02300BF4 ; =ov11_02324D2C + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02300BF4: .word ov11_02324D2C + arm_func_end ov11_02300B9C + + arm_func_start ov11_02300BF8 +ov11_02300BF8: ; 0x02300BF8 + stmdb sp!, {r3, lr} + ldr r0, _02300D58 ; =ov11_02324D2C + ldr r3, [r0] + ldr r1, [r3, #4] + cmp r1, #0 + beq _02300C24 + cmp r1, #1 + beq _02300CC8 + cmp r1, #2 + beq _02300D38 + b _02300D50 +_02300C24: + ldr r0, [r0, #4] + ldr r2, [r0] + cmp r2, #0 + beq _02300D50 + ldr r0, [r0, #0x458] + mov r1, #0x218 + cmp r0, #0 + movge r1, #0x20 + cmp r2, #1 + beq _02300C58 + cmp r2, #2 + beq _02300C74 + b _02300C8C +_02300C58: + ldr r2, _02300D58 ; =ov11_02324D2C + ldrsb r0, [r3] + ldr r3, [r2, #4] + ldrh r2, [r3, #4] + add r3, r3, #8 + bl ShowStringIdInDialogueBox + b _02300C8C +_02300C74: + ldr r2, _02300D58 ; =ov11_02324D2C + ldrsb r0, [r3] + ldr r3, [r2, #4] + add r2, r3, #0x58 + add r3, r3, #8 + bl ShowStringInDialogueBox +_02300C8C: + ldr r0, _02300D58 ; =ov11_02324D2C + ldr r2, [r0, #4] + ldr r1, [r2, #0x458] + cmp r1, #0 + blt _02300CB0 + ldr r0, [r0] + ldr r2, [r2, #0x45c] + ldrsb r0, [r0] + bl sub_0202F190 +_02300CB0: + ldr r0, _02300D58 ; =ov11_02324D2C + mov r2, #1 + ldr r1, [r0] + strb r2, [r1, #8] + ldr r0, [r0] + str r2, [r0, #4] +_02300CC8: + ldr r0, _02300D58 ; =ov11_02324D2C + ldr r0, [r0] + ldrsb r0, [r0] + bl IsDialogueBoxActive + ldr r1, _02300D58 ; =ov11_02324D2C + cmp r0, #0 + ldr r2, [r1] + strb r0, [r2, #8] + bne _02300D50 + ldr r0, [r1] + ldrsb r0, [r0] + bl sub_0202F16C + cmp r0, #0x10 + cmpne r0, #0 + bne _02300D24 + ldr r0, _02300D58 ; =ov11_02324D2C + mov r3, #2 + ldr r2, [r0] + mov r1, #1 + str r3, [r2, #4] + ldr r0, [r0] + strb r1, [r0, #8] + b _02300D50 +_02300D24: + ldr r0, _02300D58 ; =ov11_02324D2C + ldr r0, [r0] + ldrsb r0, [r0] + bl sub_0202F2C4 + b _02300D50 +_02300D38: + ldrsb r0, [r3] + bl sub_020282F4 + mvn r1, #5 + cmp r0, r1 + moveq r0, #4 + ldmeqia sp!, {r3, pc} +_02300D50: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02300D58: .word ov11_02324D2C + arm_func_end ov11_02300BF8 + + arm_func_start ov11_02300D5C +ov11_02300D5C: ; 0x02300D5C + stmdb sp!, {r3, lr} + ldr r0, _02300D80 ; =ov11_0232260C + bl InitMenu + cmp r0, #0 + ldrne r0, _02300D84 ; =ov11_02324D34 + movne r1, #0 + strne r1, [r0, #8] + strne r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02300D80: .word ov11_0232260C +_02300D84: .word ov11_02324D34 + arm_func_end ov11_02300D5C + + arm_func_start CreateTopGroundMenu +CreateTopGroundMenu: ; 0x02300D88 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x98 + bl GetGameMode + mov r4, r0 + mov r0, #0x14 + mov r1, #8 + bl MemAlloc + add r2, r4, #0xff + ldr r1, _02300ED8 ; =ov11_02324D34 + and r2, r2, #0xff + cmp r2, #1 + str r0, [r1] + ldrls r8, _02300EDC ; =ov11_02322684 + bls _02300DCC + cmp r4, #3 + ldreq r8, _02300EE0 ; =ov11_02322654 + ldrne r8, _02300EE4 ; =ov11_0232262C +_02300DCC: + ldr r0, _02300ED8 ; =ov11_02324D34 + mov fp, #1 + ldr r0, [r0] + mov sb, r8 + add sl, r0, #8 + add r0, r4, #0xff + mov r4, #0 + str sl, [sp, #0x60] + and r6, r0, #0xff + mov r5, r4 + mov r7, fp + b _02300E5C +_02300DFC: + ldr r0, [sb, #4] + cmp r0, #2 + beq _02300E1C + cmp r0, #3 + beq _02300E24 + cmp r0, #4 + beq _02300E2C + b _02300E44 +_02300E1C: + bl IsBagNotEmpty + b _02300E48 +_02300E24: + mov r0, r7 + b _02300E48 +_02300E2C: + cmp r6, #1 + movhi r0, r4 + bhi _02300E48 + mov r0, r5 + bl ov11_0230488C + b _02300E48 +_02300E44: + mov r0, fp +_02300E48: + cmp r0, #0 + movne r0, #0 + moveq r0, #3 + strb r0, [sl], #1 + add sb, sb, #8 +_02300E5C: + ldrh r0, [sb] + cmp r0, #0 + bne _02300DFC + ldr r0, _02300EE8 ; =ov11_023225FC + ldr r1, _02300EEC ; =0x00400213 + add r2, sp, #0 + mov r3, r8 + bl CreateParentMenuFromStringIds + ldr r2, _02300ED8 ; =ov11_02324D34 + mov r1, #0x13 + ldr r3, [r2] + mov r2, #0 + strb r0, [r3] + ldr r0, _02300EF0 ; =ov11_0232261C + mov r3, #0x10000 + bl CreateAreaNameBox + ldr r1, _02300ED8 ; =ov11_02324D34 + ldr r1, [r1] + strb r0, [r1, #1] + bl CreateTeamInfoBox + ldr r1, _02300ED8 ; =ov11_02324D34 + mov r3, #0 + ldr r2, [r1] + strb r0, [r2, #2] + ldr r2, [r1] + mov r0, #1 + str r3, [r2, #4] + str r3, [r1, #8] + str r3, [r1, #4] + add sp, sp, #0x98 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02300ED8: .word ov11_02324D34 +_02300EDC: .word ov11_02322684 +_02300EE0: .word ov11_02322654 +_02300EE4: .word ov11_0232262C +_02300EE8: .word ov11_023225FC +_02300EEC: .word 0x00400213 +_02300EF0: .word ov11_0232261C + arm_func_end CreateTopGroundMenu + + arm_func_start CloseTopGroundMenu +CloseTopGroundMenu: ; 0x02300EF4 + stmdb sp!, {r3, lr} + ldr r0, _02300F4C ; =ov11_02324D34 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0] + bl CloseParentMenu + ldr r0, _02300F4C ; =ov11_02324D34 + ldr r0, [r0] + ldrsb r0, [r0, #1] + bl CloseAreaNameBox + ldr r0, _02300F4C ; =ov11_02324D34 + ldr r0, [r0] + ldrsb r0, [r0, #2] + bl CloseTeamInfoBox + ldr r0, _02300F4C ; =ov11_02324D34 + ldr r0, [r0] + bl MemFree + ldr r0, _02300F4C ; =ov11_02324D34 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02300F4C: .word ov11_02324D34 + arm_func_end CloseTopGroundMenu + + arm_func_start UpdateTopGroundMenu +UpdateTopGroundMenu: ; 0x02300F50 + stmdb sp!, {r3, lr} + ldr r0, _02301138 ; =ov11_02324D34 + ldr r2, [r0] + ldr r1, [r2, #4] + cmp r1, #4 + addls pc, pc, r1, lsl #2 + b _02301130 +_02300F6C: ; jump table + b _02300F80 ; case 0 + b _02300FA4 ; case 1 + b _0230100C ; case 2 + b _02301060 ; case 3 + b _023010B0 ; case 4 +_02300F80: + bl ov11_0230D220 + cmp r0, #0 + bne _02301130 + bl ov11_0230D000 + ldr r0, _02301138 ; =ov11_02324D34 + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #4] + b _02301130 +_02300FA4: + ldrsb r0, [r2] + bl CheckParentMenuField0x1A0 + cmp r0, #0 + bne _02301130 + ldr r0, _02301138 ; =ov11_02324D34 + ldr r0, [r0] + ldrsb r0, [r0] + bl GetSimpleMenuResult__0202AEA4 + ldr r1, _02301138 ; =ov11_02324D34 + cmp r0, #1 + str r0, [r1, #8] + ldr r0, [r1] + movne r1, #2 + strne r1, [r0, #4] + bne _02301130 + ldrsb r0, [r0, #1] + bl SetAreaNameBoxState3 + ldr r0, _02301138 ; =ov11_02324D34 + ldr r0, [r0] + ldrsb r0, [r0, #2] + bl ov11_022FEF24 + ldr r0, _02301138 ; =ov11_02324D34 + mov r1, #3 + ldr r0, [r0] + str r1, [r0, #4] + b _02301130 +_0230100C: + ldrsb r0, [r2] + bl IsParentMenuActive + cmp r0, #0 + bne _02301130 + ldr r0, _02301138 ; =ov11_02324D34 + ldr r0, [r0] + ldrsb r0, [r0] + bl SetParentMenuState7 + ldr r0, _02301138 ; =ov11_02324D34 + ldr r0, [r0] + ldrsb r0, [r0, #1] + bl SetAreaNameBoxState3 + ldr r0, _02301138 ; =ov11_02324D34 + ldr r0, [r0] + ldrsb r0, [r0, #2] + bl ov11_022FEF24 + ldr r0, _02301138 ; =ov11_02324D34 + mov r1, #3 + ldr r0, [r0] + str r1, [r0, #4] + b _02301130 +_02301060: + ldrsb r0, [r2] + bl IsParentMenuActive + cmp r0, #0 + bne _02301130 + ldr r0, _02301138 ; =ov11_02324D34 + ldr r0, [r0] + ldrsb r0, [r0, #1] + bl IsAreaNameBoxActive + cmp r0, #0 + bne _02301130 + ldr r0, _02301138 ; =ov11_02324D34 + ldr r0, [r0] + ldrsb r0, [r0, #2] + bl IsTeamInfoBoxActive + cmp r0, #0 + ldreq r0, _02301138 ; =ov11_02324D34 + moveq r1, #4 + ldreq r0, [r0] + streq r1, [r0, #4] + b _02301130 +_023010B0: + mov r1, #5 + str r1, [r2, #4] + ldr r0, [r0, #8] + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _0230111C +_023010C8: ; jump table + b _0230111C ; case 0 + b _0230111C ; case 1 + b _023010E8 ; case 2 + b _023010F4 ; case 3 + b _02301100 ; case 4 + b _02301110 ; case 5 + b _0230111C ; case 6 + b _0230111C ; case 7 +_023010E8: + bl ov11_02304AE0 + mov r0, #4 + ldmia sp!, {r3, pc} +_023010F4: + bl ov11_02304BC4 + mov r0, #4 + ldmia sp!, {r3, pc} +_02301100: + mov r0, #0 + bl ov11_023048AC + mov r0, #4 + ldmia sp!, {r3, pc} +_02301110: + bl ov11_02301174 + mov r0, #4 + ldmia sp!, {r3, pc} +_0230111C: + ldr r1, _02301138 ; =ov11_02324D34 + mov r0, #4 + ldr r2, [r1, #8] + str r2, [r1, #4] + ldmia sp!, {r3, pc} +_02301130: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02301138: .word ov11_02324D34 + arm_func_end UpdateTopGroundMenu + + arm_func_start ov11_0230113C +ov11_0230113C: ; 0x0230113C + ldr r1, _02301148 ; =ov11_02324D34 + str r0, [r1, #4] + bx lr + .align 2, 0 +_02301148: .word ov11_02324D34 + arm_func_end ov11_0230113C + + arm_func_start ov11_0230114C +ov11_0230114C: ; 0x0230114C + ldr r1, _02301170 ; =ov11_02324D34 + ldr r2, [r1, #4] + str r2, [r0] + ldr r0, [r1, #4] + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + and r0, r0, #0xff + bx lr + .align 2, 0 +_02301170: .word ov11_02324D34 + arm_func_end ov11_0230114C + + arm_func_start ov11_02301174 +ov11_02301174: ; 0x02301174 + stmdb sp!, {r3, lr} + ldr r0, _02301194 ; =ov11_023226C4 + bl InitMenu + cmp r0, #0 + ldrne r0, _02301198 ; =ov11_02324D40 + movne r1, #0 + strne r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02301194: .word ov11_023226C4 +_02301198: .word ov11_02324D40 + arm_func_end ov11_02301174 + + arm_func_start GroundBagOthersMenuEntryPoint +GroundBagOthersMenuEntryPoint: ; 0x0230119C + stmdb sp!, {r4, lr} + sub sp, sp, #0x98 + mov r0, #8 + mov r1, r0 + bl MemAlloc + ldr r1, _0230120C ; =ov11_02324D40 + ldr r4, _02301210 ; =0x00000227 + str r0, [r1, #4] + mov lr, #0x10 + mov ip, #0 + ldr r0, _02301214 ; =ov11_023226B4 + ldr r1, _02301218 ; =0x00001813 + ldr r3, _0230121C ; =ov11_023226D4 + add r2, sp, #0 + strh r4, [sp, #8] + str lr, [sp, #0xc] + str ip, [sp] + bl CreateParentMenuFromStringIds + ldr r1, _0230120C ; =ov11_02324D40 + mov r3, #0 + ldr r2, [r1, #4] + strb r0, [r2] + ldr r2, [r1, #4] + mov r0, #1 + str r3, [r2, #4] + str r3, [r1] + add sp, sp, #0x98 + ldmia sp!, {r4, pc} + .align 2, 0 +_0230120C: .word ov11_02324D40 +#ifdef JAPAN +_02301210: .word 0x0000042E +#else +_02301210: .word 0x00000227 +#endif +_02301214: .word ov11_023226B4 +_02301218: .word 0x00001813 +_0230121C: .word ov11_023226D4 + arm_func_end GroundBagOthersMenuEntryPoint + + arm_func_start GroundBagOthersMenuDestructor +GroundBagOthersMenuDestructor: ; 0x02301220 + stmdb sp!, {r3, lr} + ldr r0, _02301258 ; =ov11_02324D40 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0] + bl CloseParentMenu + ldr r0, _02301258 ; =ov11_02324D40 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _02301258 ; =ov11_02324D40 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02301258: .word ov11_02324D40 + arm_func_end GroundBagOthersMenuDestructor + + arm_func_start GroundBagOthersMenuFrameUpdate +GroundBagOthersMenuFrameUpdate: ; 0x0230125C + stmdb sp!, {r3, lr} + sub sp, sp, #0x130 + ldr r0, _02301398 ; =ov11_02324D40 + ldr r2, [r0, #4] + ldr r1, [r2, #4] + cmp r1, #0 + beq _0230128C + cmp r1, #1 + beq _023012AC + cmp r1, #2 + beq _023012E4 + b _0230138C +_0230128C: + ldrsb r0, [r2] + bl CheckParentMenuField0x1A0 + cmp r0, #0 + ldreq r0, _02301398 ; =ov11_02324D40 + moveq r1, #1 + ldreq r0, [r0, #4] + streq r1, [r0, #4] + b _0230138C +_023012AC: + ldrsb r0, [r2] + bl IsParentMenuActive + cmp r0, #0 + bne _0230138C + ldr r0, _02301398 ; =ov11_02324D40 + ldr r0, [r0, #4] + ldrsb r0, [r0] + bl GetSimpleMenuResult__0202AEA4 + ldr r1, _02301398 ; =ov11_02324D40 + mov r2, #2 + str r0, [r1] + ldr r0, [r1, #4] + str r2, [r0, #4] + b _0230138C +_023012E4: + mov r1, #3 + str r1, [r2, #4] + ldr r0, [r0] + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _0230137C +_023012FC: ; jump table + b _0230137C ; case 0 + b _0230131C ; case 1 + b _02301328 ; case 2 + b _0230134C ; case 3 + b _0230137C ; case 4 + b _0230137C ; case 5 + b _0230137C ; case 6 + b _02301370 ; case 7 +_0230131C: + bl ov11_02300D5C + mov r0, #4 + b _02301390 +_02301328: + ldr r3, _0230139C ; =ov11_023013A0 + mov r2, #0 + add r1, sp, #0x98 + mov r0, #0x100 + str r3, [sp, #0x11c] + str r2, [sp, #0x120] + bl sub_0203559C + mov r0, #4 + b _02301390 +_0230134C: + ldr r3, _0230139C ; =ov11_023013A0 + mov r0, #0 + add r2, sp, #0 + mov r1, #0x100 + str r3, [sp, #0x84] + str r0, [sp, #0x88] + bl sub_02035CE4 + mov r0, #4 + b _02301390 +_02301370: + bl ov11_0230A07C + mov r0, #4 + b _02301390 +_0230137C: + mov r0, #1 + bl ov11_0230113C + mov r0, #4 + b _02301390 +_0230138C: + mov r0, #1 +_02301390: + add sp, sp, #0x130 + ldmia sp!, {r3, pc} + .align 2, 0 +_02301398: .word ov11_02324D40 +_0230139C: .word ov11_023013A0 + arm_func_end GroundBagOthersMenuFrameUpdate + + arm_func_start ov11_023013A0 +ov11_023013A0: ; 0x023013A0 + stmdb sp!, {r3, lr} + cmp r1, #0 + beq _023013B8 + mov r0, #1 + bl ov11_0230113C + ldmia sp!, {r3, pc} +_023013B8: + ldr r0, _023013D4 ; =ov11_023226C4 + bl InitMenu + cmp r0, #0 + ldrne r0, _023013D8 ; =ov11_02324D40 + movne r1, #0 + strne r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_023013D4: .word ov11_023226C4 +_023013D8: .word ov11_02324D40 + arm_func_end ov11_023013A0 + + arm_func_start ov11_023013DC +ov11_023013DC: ; 0x023013DC + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + mov r4, r1 + mov r0, #0x258 + mov r1, #6 + bl MemAlloc + ldr r1, _023014A8 ; =ov11_02324D48 + mov r2, #0 + str r0, [r1] + str r2, [r0, #0x1c] + ldr r0, [r1] + str r2, [r0, #0x184] + ldr r0, [r1] + str r2, [r0, #0xc] + ldr r0, [r1] + add r0, r0, #0x188 + bl InitPreprocessorArgs + ldr r1, _023014A8 ; =ov11_02324D48 + ldrsh r2, [r5, #4] + ldr r0, [r1] + cmp r4, #0 + add r0, r0, #0x200 + strh r2, [r0, #0x4c] + ldrb r2, [r5, #1] + ldr r0, [r1] + str r2, [r0, #0x250] + ldreq r0, [r1] + mov r2, #0 + streqb r2, [r0, #0x24] + beq _02301468 + ldrb r0, [r5, #2] + ldr r3, [r1] + strb r0, [r3, #0x24] + ldrb r0, [r5, #3] + strb r0, [r3, #0x25] +_02301468: + ldr r0, [r1] + mvn r3, #1 + strb r2, [r0, #0x25] + ldr r2, _023014A8 ; =ov11_02324D48 + mov r0, #0 + ldr r4, [r2] + add r1, r4, #0x200 + ldrsh r1, [r1, #0x4c] + str r1, [r4, #0x188] + ldr r1, [r2] + strb r3, [r1, #0x254] + ldr r1, [r2] + strb r3, [r1, #0x255] + bl ov11_023014AC + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023014A8: .word ov11_02324D48 + arm_func_end ov11_023013DC + + arm_func_start ov11_023014AC +ov11_023014AC: ; 0x023014AC + stmdb sp!, {r3, lr} + ldr r3, _02301A10 ; =ov11_02324D48 + ldr r1, [r3] + str r0, [r1] + ldr r2, [r3] + ldr r0, [r2] + cmp r0, #0x16 + addls pc, pc, r0, lsl #2 + ldmia sp!, {r3, pc} +_023014D0: ; jump table + b _0230152C ; case 0 + b _023015BC ; case 1 + ldmia sp!, {r3, pc} ; case 2 + b _023015F0 ; case 3 + b _02301618 ; case 4 + b _023017B4 ; case 5 + b _0230187C ; case 6 + b _023015D8 ; case 7 + b _023016E8 ; case 8 + b _02301680 ; case 9 + b _02301780 ; case 10 + ldmia sp!, {r3, pc} ; case 11 + ldmia sp!, {r3, pc} ; case 12 + ldmia sp!, {r3, pc} ; case 13 + b _02301658 ; case 14 + ldmia sp!, {r3, pc} ; case 15 + ldmia sp!, {r3, pc} ; case 16 + b _0230191C ; case 17 + b _02301938 ; case 18 + b _023019A0 ; case 19 + b _023019DC ; case 20 + b _023019F8 ; case 21 + b _02301A04 ; case 22 +_0230152C: + add r0, r2, #0x200 + ldrsb r1, [r0, #0x54] + mvn r0, #1 + cmp r1, r0 + bne _02301554 + mov r0, #0 + bl CreateDialogueBox + ldr r1, _02301A10 ; =ov11_02324D48 + ldr r1, [r1] + strb r0, [r1, #0x254] +_02301554: + ldr r0, _02301A10 ; =ov11_02324D48 + ldr r2, [r0] + add r0, r2, #0x200 + ldrsh r1, [r0, #0x4c] + cmp r1, #0x214 + bne _0230157C + mov r0, #8 + str r0, [r2] + bl ov11_02301A30 + ldmia sp!, {r3, pc} +_0230157C: + ldrsh r1, [r0, #0x4c] + add r0, r2, #0x6e + mov r2, #0x4e + bl GetNameWithGender + ldr r0, _02301A10 ; =ov11_02324D48 + ldr r2, _02301A14 ; =0x000002A5 + ldr ip, [r0] + mov r1, #8 + add r3, ip, #0x6e + str r3, [ip, #0x1c0] + ldr r3, [r0] + add r0, r3, #0x200 + ldrsb r0, [r0, #0x54] + add r3, r3, #0x188 + bl ShowStringIdInDialogueBox + ldmia sp!, {r3, pc} +_023015BC: + bl ov11_02302618 + ldr r0, _02301A10 ; =ov11_02324D48 + mov r1, #2 + ldr r0, [r0] + str r1, [r0] + bl ov11_02301A30 + ldmia sp!, {r3, pc} +_023015D8: + mov r1, #2 + str r1, [r2, #0x20] + ldr r0, [r3] + str r1, [r0] + bl ov11_02301A30 + ldmia sp!, {r3, pc} +_023015F0: + ldr r0, _02301A18 ; =ov11_023226FC + mov r2, #0 + ldr r1, _02301A1C ; =0x00300011 + ldr r3, _02301A20 ; =ov11_0232271C + str r2, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _02301A10 ; =ov11_02324D48 + ldr r1, [r1] + strb r0, [r1, #0x255] + ldmia sp!, {r3, pc} +_02301618: + mov r0, #0xc + str r0, [r2] + ldr r0, [r3] + mov r1, #0xe + str r1, [r0, #4] + ldr ip, [r3] + ldr r2, _02301A24 ; =0x0000038F + ldrsh r0, [ip, #0x14] + mov r1, #8 + str r0, [ip, #0x19c] + ldr r3, [r3] + add r0, r3, #0x200 + ldrsb r0, [r0, #0x54] + add r3, r3, #0x188 + bl ShowStringIdInDialogueBox + ldmia sp!, {r3, pc} +_02301658: + ldr r0, _02301A18 ; =ov11_023226FC + mov r2, #0 + ldr r1, _02301A1C ; =0x00300011 + ldr r3, _02301A20 ; =ov11_0232271C + str r2, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _02301A10 ; =ov11_02324D48 + ldr r1, [r1] + strb r0, [r1, #0x255] + ldmia sp!, {r3, pc} +_02301680: + add r0, r2, #0x1d8 + bl ZeroInitMissionRewardDataStruct + ldr r1, _02301A10 ; =ov11_02324D48 + mov ip, #6 + ldr r2, [r1] + ldr r3, _02301A28 ; =ov11_023226F4 + add r0, r2, #0x200 + ldrsh lr, [r0, #0x4c] + add r0, r2, #0x100 + mov r2, #0 + strh lr, [r0, #0xfc] + ldr r0, [r1] + strb ip, [r0, #0x1da] + ldr ip, [r1] + str r3, [sp] + add r0, ip, #0x200 + ldrsh r1, [r0, #0x4c] + add r0, ip, #0x204 + add r3, ip, #0x24 + bl sub_02052E2C + ldr r0, _02301A10 ; =ov11_02324D48 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x204 + bl ov11_023061E4 + ldmia sp!, {r3, pc} +_023016E8: + add r0, r2, #0x200 + ldrsb r0, [r0, #0x54] + bl sub_0202F2C4 + mov r0, #0x214 + mov r1, #0 + bl IsMonsterOnTeam + cmp r0, #0 + beq _02301730 + ldr r0, _02301A10 ; =ov11_02324D48 + ldr r1, [r0] + add r0, r1, #0x200 + ldrsh r0, [r0, #0x4c] + cmp r0, #0x214 + bne _02301730 + mov r0, #5 + str r0, [r1] + bl ov11_02301A30 + ldmia sp!, {r3, pc} +_02301730: + ldr r0, _02301A10 ; =ov11_02324D48 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x4c] + bl GetFirstEmptyMemberIdx + mvn r1, #0 + cmp r0, r1 + bne _02301768 + ldr r0, _02301A10 ; =ov11_02324D48 + mov r1, #9 + ldr r0, [r0] + str r1, [r0] + bl ov11_02301A30 + ldmia sp!, {r3, pc} +_02301768: + ldr r0, _02301A10 ; =ov11_02324D48 + mov r1, #6 + ldr r0, [r0] + str r1, [r0] + bl ov11_02301A30 + ldmia sp!, {r3, pc} +_02301780: + mov r0, #0xc + str r0, [r2] + ldr r0, [r3] + mov r1, #0 + str r1, [r0, #4] +#ifdef JAPAN + ldr r1, [r3] + ldr r2, _02303080 ; =0x00003288 + add r0, r1, #0x200 + add r3, r1, #0x188 + ldrsb r0, [r0, #0x54] + mov r1, #0x18 +#else + ldr r2, [r3] + mov r1, #0x18 + add r0, r2, #0x200 + ldrsb r0, [r0, #0x54] + add r3, r2, #0x188 + mov r2, #0x3a4 +#endif + bl ShowStringIdInDialogueBox + ldmia sp!, {r3, pc} +_023017B4: + mov r1, #1 + mov r0, #0x214 + str r1, [r2, #0x20] + bl GetFirstMatchingMemberIdx + mvn r1, #0 + cmp r0, r1 + bne _02301804 + ldr r0, _02301A10 ; =ov11_02324D48 + mov r1, #0 + ldr r2, [r0] + ldr r3, _02301A28 ; =ov11_023226F4 + str r1, [sp] + add r0, r2, #0x200 + add r1, r2, #0x6e + ldrsh r0, [r0, #0x4c] + add r1, r1, #0x100 + add r2, r2, #0x24 + bl sub_02055DD0 + ldr r1, _02301A10 ; =ov11_02324D48 + b _0230180C +_02301804: + bl GetTeamMember + ldr r1, _02301A10 ; =ov11_02324D48 +_0230180C: + ldr r1, [r1] + str r0, [r1, #0x248] + ldr r0, _02301A10 ; =ov11_02324D48 + ldr r2, [r0] + add r0, r2, #0x200 + ldrsh r1, [r0, #0x4c] + add r0, r2, #0x5a + bl GetNameRaw + ldr r0, _02301A10 ; =ov11_02324D48 + ldr r1, [r0] + add r0, r1, #0x6e + add r0, r0, #0x100 + add r1, r1, #0x5a +#ifdef JAPAN + bl sub_02025304_JP +#else + bl StrcpyName +#endif + ldr r0, _02301A10 ; =ov11_02324D48 + mov r2, #0 + ldr r0, [r0] + ldr r1, [r0, #0x250] + ldr r0, [r0, #0x248] + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + bl ApplyLevelUpBoostsToGroundMonster + ldr r0, _02301A10 ; =ov11_02324D48 + mov r1, #0x11 + ldr r0, [r0] + str r1, [r0] + bl ov11_02301A30 + ldmia sp!, {r3, pc} +_0230187C: + mov r0, #1 + str r0, [r2, #0x20] + ldr r2, [r3] + mov r0, #0 + str r0, [sp] + add r0, r2, #0x200 + add r1, r2, #0x6e + ldrsh r0, [r0, #0x4c] + ldr r3, _02301A28 ; =ov11_023226F4 + add r1, r1, #0x100 + add r2, r2, #0x24 + bl sub_02055DD0 + ldr r1, _02301A10 ; =ov11_02324D48 + ldr r2, [r1] + str r0, [r2, #0x248] + ldr r2, [r1] + add r0, r2, #0x200 + ldrsh r1, [r0, #0x4c] + add r0, r2, #0x5a + bl GetNameRaw + ldr r0, _02301A10 ; =ov11_02324D48 + ldr r1, [r0] + add r0, r1, #0x6e + add r0, r0, #0x100 + add r1, r1, #0x5a +#ifdef JAPAN + bl sub_02025304_JP +#else + bl StrcpyName +#endif + ldr r0, _02301A10 ; =ov11_02324D48 + mov r2, #0 + ldr r0, [r0] + ldr r1, [r0, #0x250] + ldr r0, [r0, #0x248] + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + bl ApplyLevelUpBoostsToGroundMonster + ldr r0, _02301A10 ; =ov11_02324D48 + mov r1, #0x11 + ldr r0, [r0] + str r1, [r0] + bl ov11_02301A30 + ldmia sp!, {r3, pc} +_0230191C: + bl ov11_0230D220 + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _02301A10 ; =ov11_02324D48 + mov r1, #0x12 + ldr r0, [r0] + str r1, [r0] +_02301938: + bl ov11_02310BDC + ldr r0, _02301A10 ; =ov11_02324D48 + mov r2, #0 + ldr r1, [r0] + mov r3, #0x19 + str r2, [r1, #0xc] + ldr r1, [r0] + mov r2, #0x4e + str r3, [r1, #4] + ldr r3, [r0] + add r0, r3, #0x200 + ldrsh r1, [r0, #0x4c] + add r0, r3, #0x6e + bl GetNameWithGender + ldr r0, _02301A10 ; =ov11_02324D48 + ldr r2, _02301A2C ; =0x000003A3 + ldr ip, [r0] + mov r1, #0x18 + add r3, ip, #0x6e + str r3, [ip, #0x1c0] + ldr r3, [r0] + add r0, r3, #0x200 + ldrsb r0, [r0, #0x54] + add r3, r3, #0x188 + bl ShowStringIdInDialogueBox + ldmia sp!, {r3, pc} +_023019A0: + add r0, r2, #0x200 + ldrsb r0, [r0, #0x54] + bl CloseDialogueBox + ldr r1, _02301A10 ; =ov11_02324D48 + mvn r3, #1 + ldr r2, [r1] + mov r0, #2 + strb r3, [r2, #0x254] + ldr r1, [r1] + mov r2, #0 + add r3, r1, #0x6e + add r1, r3, #0x100 + add r3, r3, #0x100 + bl ShowKeyboard + ldmia sp!, {r3, pc} +_023019DC: + add r0, r2, #0x6e + add r1, r2, #0x46 + add r3, r0, #0x100 + mov r0, #2 + mov r2, #0 + bl ShowKeyboard + ldmia sp!, {r3, pc} +_023019F8: + mov r0, #0 + str r0, [r2, #0xc] + ldmia sp!, {r3, pc} +_02301A04: + add r0, r2, #0x26 + bl sub_0203909C + ldmia sp!, {r3, pc} + .align 2, 0 +_02301A10: .word ov11_02324D48 +#ifdef JAPAN +_02301A14: .word 0x00002479 +#else +_02301A14: .word 0x000002A5 +#endif +_02301A18: .word ov11_023226FC +_02301A1C: .word 0x00300011 +_02301A20: .word ov11_0232271C +#ifdef JAPAN +_02301A24: .word 0x00003273 +_02301A28: .word ov11_023226F4 +_02303080: .word 0x00003288 +_02301A2C: .word 0x00003287 +#else +_02301A24: .word 0x0000038F +_02301A28: .word ov11_023226F4 +_02301A2C: .word 0x000003A3 +#endif + arm_func_end ov11_023014AC + + arm_func_start ov11_02301A30 +ov11_02301A30: ; 0x02301A30 + stmdb sp!, {r3, lr} + ldr r0, _02301F8C ; =ov11_02324D48 + ldr r2, [r0] + ldr r1, [r2] + cmp r1, #0x16 + addls pc, pc, r1, lsl #2 + ldmia sp!, {r3, pc} +_02301A4C: ; jump table + b _02301AA8 ; case 0 + b _02301B38 ; case 1 + ldmia sp!, {r3, pc} ; case 2 + b _02301B6C ; case 3 + b _02301B94 ; case 4 + b _02301D30 ; case 5 + b _02301DF8 ; case 6 + b _02301B54 ; case 7 + b _02301C64 ; case 8 + b _02301BFC ; case 9 + b _02301CFC ; case 10 + ldmia sp!, {r3, pc} ; case 11 + ldmia sp!, {r3, pc} ; case 12 + ldmia sp!, {r3, pc} ; case 13 + b _02301BD4 ; case 14 + ldmia sp!, {r3, pc} ; case 15 + ldmia sp!, {r3, pc} ; case 16 + b _02301E98 ; case 17 + b _02301EB4 ; case 18 + b _02301F1C ; case 19 + b _02301F58 ; case 20 + b _02301F74 ; case 21 + b _02301F80 ; case 22 +_02301AA8: + add r0, r2, #0x200 + ldrsb r1, [r0, #0x54] + mvn r0, #1 + cmp r1, r0 + bne _02301AD0 + mov r0, #0 + bl CreateDialogueBox + ldr r1, _02301F8C ; =ov11_02324D48 + ldr r1, [r1] + strb r0, [r1, #0x254] +_02301AD0: + ldr r0, _02301F8C ; =ov11_02324D48 + ldr r2, [r0] + add r0, r2, #0x200 + ldrsh r1, [r0, #0x4c] + cmp r1, #0x214 + bne _02301AF8 + mov r0, #8 + str r0, [r2] + bl ov11_02301A30 + ldmia sp!, {r3, pc} +_02301AF8: + ldrsh r1, [r0, #0x4c] + add r0, r2, #0x6e + mov r2, #0x4e + bl GetNameWithGender + ldr r0, _02301F8C ; =ov11_02324D48 + ldr r2, _02301F90 ; =0x000002A5 + ldr ip, [r0] + mov r1, #8 + add r3, ip, #0x6e + str r3, [ip, #0x1c0] + ldr r3, [r0] + add r0, r3, #0x200 + ldrsb r0, [r0, #0x54] + add r3, r3, #0x188 + bl ShowStringIdInDialogueBox + ldmia sp!, {r3, pc} +_02301B38: + bl ov11_02302618 + ldr r0, _02301F8C ; =ov11_02324D48 + mov r1, #2 + ldr r0, [r0] + str r1, [r0] + bl ov11_02301A30 + ldmia sp!, {r3, pc} +_02301B54: + mov r1, #2 + str r1, [r2, #0x20] + ldr r0, [r0] + str r1, [r0] + bl ov11_02301A30 + ldmia sp!, {r3, pc} +_02301B6C: + ldr r0, _02301F94 ; =ov11_023226FC + mov r2, #0 + ldr r1, _02301F98 ; =0x00300011 + ldr r3, _02301F9C ; =ov11_0232271C + str r2, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _02301F8C ; =ov11_02324D48 + ldr r1, [r1] + strb r0, [r1, #0x255] + ldmia sp!, {r3, pc} +_02301B94: + mov r1, #0xc + str r1, [r2] + ldr r1, [r0] + mov r2, #0xe + str r2, [r1, #4] + ldr ip, [r0] + ldr r2, _02301FA0 ; =0x0000038F + ldrsh r3, [ip, #0x14] + mov r1, #8 + str r3, [ip, #0x19c] + ldr r3, [r0] + add r0, r3, #0x200 + ldrsb r0, [r0, #0x54] + add r3, r3, #0x188 + bl ShowStringIdInDialogueBox + ldmia sp!, {r3, pc} +_02301BD4: + ldr r0, _02301F94 ; =ov11_023226FC + mov r2, #0 + ldr r1, _02301F98 ; =0x00300011 + ldr r3, _02301F9C ; =ov11_0232271C + str r2, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _02301F8C ; =ov11_02324D48 + ldr r1, [r1] + strb r0, [r1, #0x255] + ldmia sp!, {r3, pc} +_02301BFC: + add r0, r2, #0x1d8 + bl ZeroInitMissionRewardDataStruct + ldr r1, _02301F8C ; =ov11_02324D48 + mov ip, #6 + ldr r2, [r1] + ldr r3, _02301FA4 ; =ov11_023226F4 + add r0, r2, #0x200 + ldrsh lr, [r0, #0x4c] + add r0, r2, #0x100 + mov r2, #0 + strh lr, [r0, #0xfc] + ldr r0, [r1] + strb ip, [r0, #0x1da] + ldr ip, [r1] + str r3, [sp] + add r0, ip, #0x200 + ldrsh r1, [r0, #0x4c] + add r0, ip, #0x204 + add r3, ip, #0x24 + bl sub_02052E2C + ldr r0, _02301F8C ; =ov11_02324D48 + mov r1, #0 + ldr r0, [r0] + add r0, r0, #0x204 + bl ov11_023061E4 + ldmia sp!, {r3, pc} +_02301C64: + add r0, r2, #0x200 + ldrsb r0, [r0, #0x54] + bl sub_0202F2C4 + mov r0, #0x214 + mov r1, #0 + bl IsMonsterOnTeam + cmp r0, #0 + beq _02301CAC + ldr r0, _02301F8C ; =ov11_02324D48 + ldr r1, [r0] + add r0, r1, #0x200 + ldrsh r0, [r0, #0x4c] + cmp r0, #0x214 + bne _02301CAC + mov r0, #5 + str r0, [r1] + bl ov11_02301A30 + ldmia sp!, {r3, pc} +_02301CAC: + ldr r0, _02301F8C ; =ov11_02324D48 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x4c] + bl GetFirstEmptyMemberIdx + mvn r1, #0 + cmp r0, r1 + bne _02301CE4 + ldr r0, _02301F8C ; =ov11_02324D48 + mov r1, #9 + ldr r0, [r0] + str r1, [r0] + bl ov11_02301A30 + ldmia sp!, {r3, pc} +_02301CE4: + ldr r0, _02301F8C ; =ov11_02324D48 + mov r1, #6 + ldr r0, [r0] + str r1, [r0] + bl ov11_02301A30 + ldmia sp!, {r3, pc} +_02301CFC: + mov r1, #0xc + str r1, [r2] + ldr r1, [r0] + mov r2, #0 + str r2, [r1, #4] +#ifdef JAPAN + ldr r1, [r0] + ldr r2, _02303600 ; =0x00003288 + add r0, r1, #0x200 + add r3, r1, #0x188 + ldrsb r0, [r0, #0x54] + mov r1, #0x18 +#else + ldr r2, [r0] + mov r1, #0x18 + add r0, r2, #0x200 + add r3, r2, #0x188 + ldrsb r0, [r0, #0x54] + mov r2, #0x3a4 +#endif + bl ShowStringIdInDialogueBox + ldmia sp!, {r3, pc} +_02301D30: + mov r1, #1 + mov r0, #0x214 + str r1, [r2, #0x20] + bl GetFirstMatchingMemberIdx + mvn r1, #0 + cmp r0, r1 + bne _02301D80 + ldr r0, _02301F8C ; =ov11_02324D48 + mov r1, #0 + ldr r2, [r0] + ldr r3, _02301FA4 ; =ov11_023226F4 + str r1, [sp] + add r0, r2, #0x200 + add r1, r2, #0x6e + ldrsh r0, [r0, #0x4c] + add r1, r1, #0x100 + add r2, r2, #0x24 + bl sub_02055DD0 + ldr r1, _02301F8C ; =ov11_02324D48 + b _02301D88 +_02301D80: + bl GetTeamMember + ldr r1, _02301F8C ; =ov11_02324D48 +_02301D88: + ldr r1, [r1] + str r0, [r1, #0x248] + ldr r0, _02301F8C ; =ov11_02324D48 + ldr r2, [r0] + add r0, r2, #0x200 + ldrsh r1, [r0, #0x4c] + add r0, r2, #0x5a + bl GetNameRaw + ldr r0, _02301F8C ; =ov11_02324D48 + ldr r1, [r0] + add r0, r1, #0x6e + add r0, r0, #0x100 + add r1, r1, #0x5a +#ifdef JAPAN + bl sub_02025304_JP +#else + bl StrcpyName +#endif + ldr r0, _02301F8C ; =ov11_02324D48 + mov r2, #0 + ldr r0, [r0] + ldr r1, [r0, #0x250] + ldr r0, [r0, #0x248] + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + bl ApplyLevelUpBoostsToGroundMonster + ldr r0, _02301F8C ; =ov11_02324D48 + mov r1, #0x11 + ldr r0, [r0] + str r1, [r0] + bl ov11_02301A30 + ldmia sp!, {r3, pc} +_02301DF8: + mov r1, #1 + str r1, [r2, #0x20] + ldr r2, [r0] + mov r0, #0 + str r0, [sp] + add r0, r2, #0x200 + add r1, r2, #0x6e + ldrsh r0, [r0, #0x4c] + ldr r3, _02301FA4 ; =ov11_023226F4 + add r1, r1, #0x100 + add r2, r2, #0x24 + bl sub_02055DD0 + ldr r1, _02301F8C ; =ov11_02324D48 + ldr r2, [r1] + str r0, [r2, #0x248] + ldr r2, [r1] + add r0, r2, #0x200 + ldrsh r1, [r0, #0x4c] + add r0, r2, #0x5a + bl GetNameRaw + ldr r0, _02301F8C ; =ov11_02324D48 + ldr r1, [r0] + add r0, r1, #0x6e + add r0, r0, #0x100 + add r1, r1, #0x5a +#ifdef JAPAN + bl sub_02025304_JP +#else + bl StrcpyName +#endif + ldr r0, _02301F8C ; =ov11_02324D48 + mov r2, #0 + ldr r0, [r0] + ldr r1, [r0, #0x250] + ldr r0, [r0, #0x248] + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + bl ApplyLevelUpBoostsToGroundMonster + ldr r0, _02301F8C ; =ov11_02324D48 + mov r1, #0x11 + ldr r0, [r0] + str r1, [r0] + bl ov11_02301A30 + ldmia sp!, {r3, pc} +_02301E98: + bl ov11_0230D220 + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _02301F8C ; =ov11_02324D48 + mov r1, #0x12 + ldr r0, [r0] + str r1, [r0] +_02301EB4: + bl ov11_02310BDC + ldr r0, _02301F8C ; =ov11_02324D48 + mov r2, #0 + ldr r1, [r0] + mov r3, #0x19 + str r2, [r1, #0xc] + ldr r1, [r0] + mov r2, #0x4e + str r3, [r1, #4] + ldr r3, [r0] + add r0, r3, #0x200 + ldrsh r1, [r0, #0x4c] + add r0, r3, #0x6e + bl GetNameWithGender + ldr r0, _02301F8C ; =ov11_02324D48 + ldr r2, _02301FA8 ; =0x000003A3 + ldr ip, [r0] + mov r1, #0x18 + add r3, ip, #0x6e + str r3, [ip, #0x1c0] + ldr r3, [r0] + add r0, r3, #0x200 + ldrsb r0, [r0, #0x54] + add r3, r3, #0x188 + bl ShowStringIdInDialogueBox + ldmia sp!, {r3, pc} +_02301F1C: + add r0, r2, #0x200 + ldrsb r0, [r0, #0x54] + bl CloseDialogueBox + ldr r1, _02301F8C ; =ov11_02324D48 + mvn r3, #1 + ldr r2, [r1] + mov r0, #2 + strb r3, [r2, #0x254] + ldr r1, [r1] + mov r2, #0 + add r3, r1, #0x6e + add r1, r3, #0x100 + add r3, r3, #0x100 + bl ShowKeyboard + ldmia sp!, {r3, pc} +_02301F58: + add r0, r2, #0x6e + add r1, r2, #0x46 + add r3, r0, #0x100 + mov r0, #2 + mov r2, #0 + bl ShowKeyboard + ldmia sp!, {r3, pc} +_02301F74: + mov r0, #0 + str r0, [r2, #0xc] + ldmia sp!, {r3, pc} +_02301F80: + add r0, r2, #0x26 + bl sub_0203909C + ldmia sp!, {r3, pc} + .align 2, 0 +_02301F8C: .word ov11_02324D48 +#ifdef JAPAN +_02301F90: .word 0x00002479 +#else +_02301F90: .word 0x000002A5 +#endif +_02301F94: .word ov11_023226FC +_02301F98: .word 0x00300011 +_02301F9C: .word ov11_0232271C +#ifdef JAPAN +_02301FA0: .word 0x00003273 +_02301FA4: .word ov11_023226F4 +_02303600: .word 0x00003288 +_02301FA8: .word 0x00003287 +#else +_02301FA0: .word 0x0000038F +_02301FA4: .word ov11_023226F4 +_02301FA8: .word 0x000003A3 +#endif + arm_func_end ov11_02301A30 + + arm_func_start ov11_02301FAC +ov11_02301FAC: ; 0x02301FAC + stmdb sp!, {r3, lr} + bl ov11_0230D220 + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _02302000 ; =ov11_02324D48 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + bl IsDialogueBoxActive + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _02302000 ; =ov11_02324D48 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + bl ShowDialogueBox + ldr r0, _02302000 ; =ov11_02324D48 + ldr r0, [r0] + ldr r0, [r0, #4] + bl ov11_023014AC + ldmia sp!, {r3, pc} + .align 2, 0 +_02302000: .word ov11_02324D48 + arm_func_end ov11_02301FAC + + arm_func_start ov11_02302004 +ov11_02302004: ; 0x02302004 + stmdb sp!, {r3, lr} + ldr r0, _0230202C ; =ov11_02324D48 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _0230202C ; =ov11_02324D48 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230202C: .word ov11_02324D48 + arm_func_end ov11_02302004 + + arm_func_start ov11_02302030 +ov11_02302030: ; 0x02302030 + stmdb sp!, {r4, lr} + ldr r1, _023025E4 ; =ov11_02324D48 + ldr r0, [r1] + ldr r2, [r0, #0x184] + cmp r2, #3 + addls pc, pc, r2, lsl #2 + b _023025DC +_0230204C: ; jump table + b _0230205C ; case 0 + b _02302068 ; case 1 + b _023025A4 ; case 2 + b _023025CC ; case 3 +_0230205C: + mov r1, #1 + str r1, [r0, #0x184] + b _023025DC +_02302068: + ldr r2, [r0] + cmp r2, #0x19 + addls pc, pc, r2, lsl #2 + b _02302550 +_02302078: ; jump table + b _023020E0 ; case 0 + b _02302550 ; case 1 + b _023022D4 ; case 2 + b _02302114 ; case 3 + b _0230228C ; case 4 + b _02302550 ; case 5 + b _02302550 ; case 6 + b _02302550 ; case 7 + b _02302550 ; case 8 + b _023021A4 ; case 9 + b _02302550 ; case 10 + b _023022E0 ; case 11 + b _02302550 ; case 12 + b _02302550 ; case 13 + b _0230228C ; case 14 + b _02302480 ; case 15 + b _023024C4 ; case 16 + b _023024EC ; case 17 + b _02302504 ; case 18 + b _0230232C ; case 19 + b _0230232C ; case 20 + b _02302390 ; case 21 + b _023023B8 ; case 22 + b _02302460 ; case 23 + b _02302378 ; case 24 + b _0230250C ; case 25 +_023020E0: + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02302554 + mov r0, #3 + bl ov11_023014AC + ldr r0, _023025E4 ; =ov11_02324D48 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + bl ShowDialogueBox + b _02302554 +_02302114: + add r0, r0, #0x200 + ldrsb r0, [r0, #0x55] + bl GetSimpleMenuResult__0202B870 + cmp r0, #1 + beq _02302170 + cmp r0, #4 + beq _0230213C + cmp r0, #5 + beq _02302170 + b _02302554 +_0230213C: + ldr r0, _023025E4 ; =ov11_02324D48 + mov r1, #8 + ldr r0, [r0] + str r1, [r0, #4] + bl ov11_02302618 + ldr r0, _023025E4 ; =ov11_02324D48 + mov r3, #0 + ldr r2, [r0] + mov r1, #0xf + str r3, [r2, #0xc] + ldr r0, [r0] + str r1, [r0] + b _02302554 +_02302170: + bl ov11_02302618 + ldr r0, _023025E4 ; =ov11_02324D48 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x4c] + cmp r0, #0x214 + bne _02302198 + mov r0, #0xa + bl ov11_023014AC + b _02302554 +_02302198: + mov r0, #7 + bl ov11_023014AC + b _02302554 +_023021A4: + bl ov11_02306C9C + cmp r0, #3 + beq _023021D4 + cmp r0, #4 + bne _02302554 + bl ov11_02306C64 + ldr r1, _023025E4 ; =ov11_02324D48 + ldr r1, [r1] + str r0, [r1, #0x248] + mov r0, #7 + bl ov11_023014AC + b _02302554 +_023021D4: + bl ov11_02306C64 + ldr r1, _023025E4 ; =ov11_02324D48 + ldr r2, [r1] + str r0, [r2, #0x248] + ldr r2, [r1] + ldr r0, [r2, #0x248] + cmp r0, #0 + bne _0230221C + add r0, r2, #0x200 + ldrsh r0, [r0, #0x4c] + cmp r0, #0x214 + bne _02302210 + mov r0, #0xa + bl ov11_023014AC + b _02302554 +_02302210: + mov r0, #7 + bl ov11_023014AC + b _02302554 +_0230221C: + mov r0, #1 + str r0, [r2, #0x20] + ldr r2, [r1] + add r0, r2, #0x200 + ldrsh r1, [r0, #0x4c] + add r0, r2, #0x5a + bl GetNameRaw + ldr r0, _023025E4 ; =ov11_02324D48 + ldr r1, [r0] + add r0, r1, #0x6e + add r0, r0, #0x100 + add r1, r1, #0x5a +#ifdef JAPAN + bl sub_02025304_JP +#else + bl StrcpyName +#endif + ldr r0, _023025E4 ; =ov11_02324D48 + mov r2, #0 + ldr r0, [r0] + ldr r1, [r0, #0x250] + ldr r0, [r0, #0x248] + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + bl ApplyLevelUpBoostsToGroundMonster + ldr r0, _023025E4 ; =ov11_02324D48 + mov r2, #0 + ldr r1, [r0] + mov r0, #0x10 + str r2, [r1, #0xc] + bl ov11_023014AC + b _02302554 +_0230228C: + add r0, r0, #0x200 + ldrsb r0, [r0, #0x55] + bl GetSimpleMenuResult__0202B870 + cmp r0, #1 + beq _023022C4 + cmp r0, #4 + beq _023022B4 + cmp r0, #5 + beq _023022C4 + b _02302554 +_023022B4: + bl ov11_02302618 + mov r0, #8 + bl ov11_023014AC + b _02302554 +_023022C4: + bl ov11_02302618 + mov r0, #7 + bl ov11_023014AC + b _02302554 +_023022D4: + bl ov11_0230D71C + mov r0, #3 + b _02302558 +_023022E0: + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02302554 + ldr r0, _023025E4 ; =ov11_02324D48 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + bl ShowDialogueBox + ldr r0, _023025E4 ; =ov11_02324D48 + mov r2, #0x1a + ldr r1, [r0] + str r2, [r1] + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + bl sub_0202F2C4 + b _02302554 +_0230232C: + bl GetKeyboardStatus + cmp r0, #3 + bne _02302554 + bl GetKeyboardStringResult + ldr r1, _023025E4 ; =ov11_02324D48 + mov r4, r0 + ldr r0, [r1] + mov r1, r4 + add r0, r0, #0x26 + mov r2, #0x10 + bl StrncpySimpleNoPadSafe + ldr r0, _023025E4 ; =ov11_02324D48 + mov r1, r4 + ldr r0, [r0] + add r0, r0, #0x46 + bl StrcpySimple + mov r0, #0x18 + bl ov11_023014AC + b _02302554 +_02302378: + bl sub_02037468 + cmp r0, #0 + beq _02302554 + mov r0, #0x15 + bl ov11_023014AC + b _02302554 +_02302390: + ldr r2, [r0, #0xc] + add r2, r2, #1 + str r2, [r0, #0xc] + ldr r0, [r1] + ldr r0, [r0, #0xc] + cmp r0, #0xa + ble _02302554 + mov r0, #0x16 + bl ov11_023014AC + b _02302554 +_023023B8: + bl sub_0203931C + cmp r0, #0 + bne _0230243C + ldr r0, _023025E4 ; =ov11_02324D48 + mov r2, #1 + ldr r1, [r0] + str r2, [r1, #8] + ldr r1, [r0] + add r0, r1, #0x6e + add r0, r0, #0x100 + add r1, r1, #0x46 + bl StrcpySimple + ldr r0, _023025E4 ; =ov11_02324D48 + mov r2, #0xa + ldr r1, [r0] + ldr r0, [r1, #0x248] + add r1, r1, #0x6e + add r0, r0, #0x3a + add r1, r1, #0x100 + bl StrncpySimple + ldr r0, _023025E4 ; =ov11_02324D48 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x4c] + bl SetNewFriendActor + ldr r0, _023025E4 ; =ov11_02324D48 + mov r1, #0xf + ldr r0, [r0] + add r0, r0, #0x46 + bl sub_02065C08 + mov r0, #0x17 + bl ov11_023014AC + b _02302554 +_0230243C: + cmp r0, #1 + bne _02302554 + ldr r0, _023025E4 ; =ov11_02324D48 + mov r2, #0x14 + ldr r1, [r0] + mov r0, #0x17 + str r2, [r1, #8] + bl ov11_023014AC + b _02302554 +_02302460: + bl sub_02039218 + cmp r0, #0 + beq _02302554 + ldr r0, _023025E4 ; =ov11_02324D48 + ldr r0, [r0] + ldr r0, [r0, #8] + bl ov11_023014AC + b _02302554 +_02302480: + ldr r2, [r0, #0xc] + add r2, r2, #1 + str r2, [r0, #0xc] + ldr r1, [r1] + ldr r0, [r1, #0xc] + cmp r0, #1 + cmpne r0, #2 + beq _02302554 + cmp r0, #3 + bne _02302554 + ldr r0, [r1, #4] + bl ov11_023014AC + ldr r0, _023025E4 ; =ov11_02324D48 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0xc] + b _02302554 +_023024C4: + ldr r2, [r0, #0xc] + add r2, r2, #1 + str r2, [r0, #0xc] + ldr r0, [r1] + ldr r0, [r0, #0xc] + cmp r0, #0xa + ble _02302554 + mov r0, #0x11 + bl ov11_023014AC + b _02302554 +_023024EC: + bl ov11_0230D220 + cmp r0, #0 + bne _02302554 + mov r0, #0x12 + bl ov11_023014AC + b _02302554 +_02302504: + bl ov11_02301FAC + b _02302554 +_0230250C: + ldr r2, [r0, #0xc] + add r2, r2, #1 + str r2, [r0, #0xc] + ldr r1, [r1] + ldr r0, [r1, #0xc] + cmp r0, #1 + beq _02302534 + cmp r0, #0xa + beq _02302544 + b _02302554 +_02302534: + add r0, r1, #0x200 + ldrsb r0, [r0, #0x54] + bl sub_0202F2C4 + b _02302554 +_02302544: + mov r0, #0x13 + bl ov11_023014AC + b _02302554 +_02302550: + bl ov11_02301FAC +_02302554: + mov r0, #0 +_02302558: + cmp r0, #3 + bne _023025DC + ldr r0, _023025E4 ; =ov11_02324D48 + mov r3, #2 + ldr r2, [r0] + sub r1, r3, #4 + str r3, [r2, #0x184] + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + cmp r0, r1 + beq _023025DC + bl sub_0202836C + ldr r0, _023025E4 ; =ov11_02324D48 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + bl sub_0202F2C4 + b _023025DC +_023025A4: + mov r2, #3 + str r2, [r0, #0x184] + ldr r0, [r1] + sub r1, r2, #5 + add r0, r0, #0x200 + ldrsb r0, [r0, #0x54] + cmp r0, r1 + beq _023025DC + bl CloseDialogueBox + b _023025DC +_023025CC: + ldr r0, [r0, #0x20] + bl ReturnScriptMenuResult + mov r0, #4 + ldmia sp!, {r4, pc} +_023025DC: + mov r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_023025E4: .word ov11_02324D48 + arm_func_end ov11_02302030 + + arm_func_start ov11_023025E8 +ov11_023025E8: ; 0x023025E8 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, _02302614 ; =ov11_0232270C + mov r4, r1 + bl InitMenu + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, r5 + mov r1, r4 + bl ov11_023013DC + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02302614: .word ov11_0232270C + arm_func_end ov11_023025E8 + + arm_func_start ov11_02302618 +ov11_02302618: ; 0x02302618 + stmdb sp!, {r3, lr} + ldr r0, _02302664 ; =ov11_02324D48 + mvn r1, #1 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x55] + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl sub_0202836C + ldr r0, _02302664 ; =ov11_02324D48 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsb r0, [r0, #0x55] + bl CloseSimpleMenu + ldr r0, _02302664 ; =ov11_02324D48 + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x255] + ldmia sp!, {r3, pc} + .align 2, 0 +_02302664: .word ov11_02324D48 + arm_func_end ov11_02302618 + + arm_func_start ov11_02302668 +ov11_02302668: ; 0x02302668 + stmdb sp!, {r3, lr} + ldr r0, _02302844 ; =ov11_02324D4C + ldr r2, [r0] + ldr r1, [r2] + cmp r1, #0xc + addls pc, pc, r1, lsl #2 + b _023027D0 +_02302684: ; jump table + b _023027D0 ; case 0 + b _02302744 ; case 1 + b _0230283C ; case 2 + b _023027D0 ; case 3 + b _023027D0 ; case 4 + b _023027D0 ; case 5 + b _023027D0 ; case 6 + b _023026B8 ; case 7 + b _0230274C ; case 8 + b _023027D0 ; case 9 + b _023027D0 ; case 10 + b _023027D0 ; case 11 + b _0230278C ; case 12 +_023026B8: + bl ov11_02305B98 + cmp r0, #1 + beq _0230283C + ldr r0, _02302844 ; =ov11_02324D4C + ldr r0, [r0] + add r0, r0, #0xfe + bl ov11_02305B40 + cmp r0, #3 + beq _023026E8 + cmp r0, #5 + beq _0230271C + b _0230283C +_023026E8: + ldr r1, _02302844 ; =ov11_02324D4C + mov r3, #1 + ldr r0, [r1] + ldr r2, _02302848 ; =0x00000276 + str r3, [r0, #0x20] + ldr ip, [r1] + mov r0, #4 + ldrsh r3, [ip, #0xfe] + str r3, [ip, #0x44] + ldr r1, [r1] + str r2, [r1, #0xf8] + bl ov11_02302850 + b _0230283C +_0230271C: + ldr r0, _02302844 ; =ov11_02324D4C + mov r3, #2 + ldr r1, [r0] + ldr r2, _0230284C ; =0x00000287 + str r3, [r1, #0x20] + ldr r1, [r0] + mov r0, #0 + str r2, [r1, #0xf8] + bl ov11_02302850 + b _0230283C +_02302744: + mov r0, #3 + ldmia sp!, {r3, pc} +_0230274C: + ldrsb r0, [r2, #0xfc] + bl IsDialogueBoxActive + cmp r0, #0 + bne _0230283C + ldr r0, _02302844 ; =ov11_02324D4C + ldr r0, [r0] + ldrsb r0, [r0, #0xfc] + bl ShowDialogueBox + ldr r0, _02302844 ; =ov11_02324D4C + mov r2, #0xd + ldr r1, [r0] + str r2, [r1] + ldr r0, [r0] + ldrsb r0, [r0, #0xfc] + bl sub_0202F2C4 + b _0230283C +_0230278C: + ldr r1, [r2, #0xc] + add r1, r1, #1 + str r1, [r2, #0xc] + ldr r1, [r0] + ldr r0, [r1, #0xc] + cmp r0, #1 + cmpne r0, #2 + beq _0230283C + cmp r0, #3 + bne _0230283C + ldr r0, [r1, #4] + bl ov11_02302850 + ldr r0, _02302844 ; =ov11_02324D4C + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0xc] + b _0230283C +_023027D0: + ldrsb r0, [r2, #0xfc] + bl IsDialogueBoxActive + cmp r0, #0 + bne _0230283C + ldr r0, _02302844 ; =ov11_02324D4C + ldr r0, [r0] + ldrsb r0, [r0, #0xfc] + bl ShowDialogueBox + ldr r0, _02302844 ; =ov11_02324D4C + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #0xfc] + cmp r0, r1 + beq _0230282C + bl sub_0202F2C4 + ldr r0, _02302844 ; =ov11_02324D4C + ldr r0, [r0] + ldrsb r0, [r0, #0xfc] + bl CloseDialogueBox + ldr r0, _02302844 ; =ov11_02324D4C + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #0xfc] +_0230282C: + ldr r0, _02302844 ; =ov11_02324D4C + ldr r0, [r0] + ldr r0, [r0, #4] + bl ov11_02302850 +_0230283C: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02302844: .word ov11_02324D4C +#ifdef JAPAN +_02302848: .word 0x0000244A +_0230284C: .word 0x0000245B +#else +_02302848: .word 0x00000276 +_0230284C: .word 0x00000287 +#endif + arm_func_end ov11_02302668 + + arm_func_start ov11_02302850 +ov11_02302850: ; 0x02302850 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr r1, _02302A44 ; =ov11_02324D4C + ldr r2, [r1] + str r0, [r2] + ldr ip, [r1] + ldr r0, [ip] + cmp r0, #0xb + addls pc, pc, r0, lsl #2 + b _02302A3C +_02302878: ; jump table + b _023028A8 ; case 0 + b _02302A3C ; case 1 + b _02302A3C ; case 2 + b _02302A3C ; case 3 + b _02302998 ; case 4 + b _023028B4 ; case 5 + b _023028EC ; case 6 + b _023028C0 ; case 7 + b _02302A3C ; case 8 + b _02302A3C ; case 9 + b _02302A3C ; case 10 + b _02302A3C ; case 11 +_023028A8: + mov r0, #1 + str r0, [ip] + b _02302A3C +_023028B4: + mov r0, #1 + str r0, [ip, #4] + b _02302A3C +_023028C0: + ldr r0, [ip, #0xf4] + ldrsh r1, [ip, #0xf0] + mov r2, r0, lsl #0x10 + add r0, sp, #0 + mov r2, r2, asr #0x10 + mov r3, #0 + bl sub_0200CF6C + add r0, sp, #0 + mov r1, #0 + bl ov11_02304CAC + b _02302A3C +_023028EC: + mov r2, #7 + str r2, [ip] + ldr r1, [r1] + ldr r0, [r1] + cmp r0, #0xb + addls pc, pc, r0, lsl #2 + b _02302A3C +_02302908: ; jump table + b _02302938 ; case 0 + b _02302A3C ; case 1 + b _02302A3C ; case 2 + b _02302A3C ; case 3 + b _02302988 ; case 4 + b _02302944 ; case 5 + b _0230297C ; case 6 + b _02302950 ; case 7 + b _02302A3C ; case 8 + b _02302A3C ; case 9 + b _02302A3C ; case 10 + b _02302A3C ; case 11 +_02302938: + mov r0, #1 + str r0, [r1] + b _02302A3C +_02302944: + mov r0, #1 + str r0, [r1, #4] + b _02302A3C +_02302950: + ldr r0, [r1, #0xf4] + ldrsh r1, [r1, #0xf0] + mov r2, r0, lsl #0x10 + add r0, sp, #6 + mov r2, r2, asr #0x10 + mov r3, #0 + bl sub_0200CF6C + add r0, sp, #6 + mov r1, #0 + bl ov11_02304CAC + b _02302A3C +_0230297C: + str r2, [r1] + bl ov11_02302A48 + b _02302A3C +_02302988: + mov r0, #0 + str r0, [r1] + bl ov11_02302A48 + b _02302A3C +_02302998: + mov r3, #0 + str r3, [ip] + ldr r1, [r1] + ldr r0, [r1] + cmp r0, #0xb + addls pc, pc, r0, lsl #2 + b _02302A3C +_023029B4: ; jump table + b _023029E4 ; case 0 + b _02302A3C ; case 1 + b _02302A3C ; case 2 + b _02302A3C ; case 3 + b _02302A34 ; case 4 + b _023029F0 ; case 5 + b _02302A24 ; case 6 + b _023029FC ; case 7 + b _02302A3C ; case 8 + b _02302A3C ; case 9 + b _02302A3C ; case 10 + b _02302A3C ; case 11 +_023029E4: + mov r0, #1 + str r0, [r1] + b _02302A3C +_023029F0: + mov r0, #1 + str r0, [r1, #4] + b _02302A3C +_023029FC: + ldr r0, [r1, #0xf4] + ldrsh r1, [r1, #0xf0] + mov r2, r0, lsl #0x10 + add r0, sp, #0xc + mov r2, r2, asr #0x10 + bl sub_0200CF6C + add r0, sp, #0xc + mov r1, #0 + bl ov11_02304CAC + b _02302A3C +_02302A24: + mov r0, #7 + str r0, [r1] + bl ov11_02302A48 + b _02302A3C +_02302A34: + str r3, [r1] + bl ov11_02302A48 +_02302A3C: + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_02302A44: .word ov11_02324D4C + arm_func_end ov11_02302850 + + arm_func_start ov11_02302A48 +ov11_02302A48: ; 0x02302A48 + stmdb sp!, {lr} + sub sp, sp, #0x14 + ldr r0, _02302C34 ; =ov11_02324D4C + ldr ip, [r0] + ldr r1, [ip] + cmp r1, #0xb + addls pc, pc, r1, lsl #2 + b _02302C2C +_02302A68: ; jump table + b _02302A98 ; case 0 + b _02302C2C ; case 1 + b _02302C2C ; case 2 + b _02302C2C ; case 3 + b _02302B88 ; case 4 + b _02302AA4 ; case 5 + b _02302ADC ; case 6 + b _02302AB0 ; case 7 + b _02302C2C ; case 8 + b _02302C2C ; case 9 + b _02302C2C ; case 10 + b _02302C2C ; case 11 +_02302A98: + mov r0, #1 + str r0, [ip] + b _02302C2C +_02302AA4: + mov r0, #1 + str r0, [ip, #4] + b _02302C2C +_02302AB0: + ldr r0, [ip, #0xf4] + ldrsh r1, [ip, #0xf0] + mov r2, r0, lsl #0x10 + add r0, sp, #0xc + mov r2, r2, asr #0x10 + mov r3, #0 + bl sub_0200CF6C + add r0, sp, #0xc + mov r1, #0 + bl ov11_02304CAC + b _02302C2C +_02302ADC: + mov r2, #7 + str r2, [ip] + ldr r1, [r0] + ldr r0, [r1] + cmp r0, #0xb + addls pc, pc, r0, lsl #2 + b _02302C2C +_02302AF8: ; jump table + b _02302B28 ; case 0 + b _02302C2C ; case 1 + b _02302C2C ; case 2 + b _02302C2C ; case 3 + b _02302B78 ; case 4 + b _02302B34 ; case 5 + b _02302B6C ; case 6 + b _02302B40 ; case 7 + b _02302C2C ; case 8 + b _02302C2C ; case 9 + b _02302C2C ; case 10 + b _02302C2C ; case 11 +_02302B28: + mov r0, #1 + str r0, [r1] + b _02302C2C +_02302B34: + mov r0, #1 + str r0, [r1, #4] + b _02302C2C +_02302B40: + ldr r0, [r1, #0xf4] + ldrsh r1, [r1, #0xf0] + mov r2, r0, lsl #0x10 + add r0, sp, #6 + mov r2, r2, asr #0x10 + mov r3, #0 + bl sub_0200CF6C + add r0, sp, #6 + mov r1, #0 + bl ov11_02304CAC + b _02302C2C +_02302B6C: + str r2, [r1] + bl ov11_02302A48 + b _02302C2C +_02302B78: + mov r0, #0 + str r0, [r1] + bl ov11_02302A48 + b _02302C2C +_02302B88: + mov r3, #0 + str r3, [ip] + ldr r1, [r0] + ldr r0, [r1] + cmp r0, #0xb + addls pc, pc, r0, lsl #2 + b _02302C2C +_02302BA4: ; jump table + b _02302BD4 ; case 0 + b _02302C2C ; case 1 + b _02302C2C ; case 2 + b _02302C2C ; case 3 + b _02302C24 ; case 4 + b _02302BE0 ; case 5 + b _02302C14 ; case 6 + b _02302BEC ; case 7 + b _02302C2C ; case 8 + b _02302C2C ; case 9 + b _02302C2C ; case 10 + b _02302C2C ; case 11 +_02302BD4: + mov r0, #1 + str r0, [r1] + b _02302C2C +_02302BE0: + mov r0, #1 + str r0, [r1, #4] + b _02302C2C +_02302BEC: + ldr r0, [r1, #0xf4] + ldrsh r1, [r1, #0xf0] + mov r2, r0, lsl #0x10 + add r0, sp, #0 + mov r2, r2, asr #0x10 + bl sub_0200CF6C + add r0, sp, #0 + mov r1, #0 + bl ov11_02304CAC + b _02302C2C +_02302C14: + mov r0, #7 + str r0, [r1] + bl ov11_02302A48 + b _02302C2C +_02302C24: + str r3, [r1] + bl ov11_02302A48 +_02302C2C: + add sp, sp, #0x14 + ldmia sp!, {pc} + .align 2, 0 +_02302C34: .word ov11_02324D4C + arm_func_end ov11_02302A48 + + arm_func_start ov11_02302C38 +ov11_02302C38: ; 0x02302C38 + stmdb sp!, {r3, lr} + ldr r0, _02302C60 ; =ov11_02324D4C + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _02302C60 ; =ov11_02324D4C + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02302C60: .word ov11_02324D4C + arm_func_end ov11_02302C38 + + arm_func_start ov11_02302C64 +ov11_02302C64: ; 0x02302C64 + stmdb sp!, {r3, lr} + ldr r0, _02302CDC ; =ov11_02324D4C + ldr r1, [r0] + ldr r0, [r1, #0x28] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _02302CD4 +_02302C80: ; jump table + b _02302C90 ; case 0 + b _02302C9C ; case 1 + b _02302CB8 ; case 2 + b _02302CC4 ; case 3 +_02302C90: + mov r0, #1 + str r0, [r1, #0x28] + b _02302CD4 +_02302C9C: + bl ov11_02302668 + cmp r0, #3 + ldreq r0, _02302CDC ; =ov11_02324D4C + moveq r1, #2 + ldreq r0, [r0] + streq r1, [r0, #0x28] + b _02302CD4 +_02302CB8: + mov r0, #3 + str r0, [r1, #0x28] + b _02302CD4 +_02302CC4: + ldr r0, [r1, #0x20] + bl ReturnScriptMenuResult + mov r0, #4 + ldmia sp!, {r3, pc} +_02302CD4: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02302CDC: .word ov11_02324D4C + arm_func_end ov11_02302C64 + + arm_func_start ov11_02302CE0 +ov11_02302CE0: ; 0x02302CE0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, _02302D84 ; =ov11_02322740 + mov r4, r1 + bl InitMenu + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + mov r0, #0x104 + mov r1, #6 + bl MemAlloc + ldr r2, _02302D88 ; =ov11_02324D4C + mov r1, #0 + str r0, [r2] + str r1, [r0, #0x1c] + ldr r0, [r2] + sub r3, r1, #2 + str r1, [r0, #0x28] + ldr r0, [r2] + str r1, [r0, #0xc] + ldrsh ip, [r5, #4] + ldr r0, [r2] + strh ip, [r0, #0xf0] + ldrh ip, [r5, #2] + ldr r0, [r2] + str ip, [r0, #0xf4] + ldr r0, [r2] + strb r4, [r0, #0x100] + ldr r0, [r2] + strh r1, [r0, #0xfe] + ldr r0, [r2] + strb r3, [r0, #0xfc] + ldr r0, [r2] + add r0, r0, #0x2c + bl InitPreprocessorArgs + ldr r0, _02302D88 ; =ov11_02324D4C + ldrsh r2, [r5, #4] + ldr r1, [r0] + mov r0, #7 + str r2, [r1, #0x3c] + bl ov11_02302850 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02302D84: .word ov11_02322740 +_02302D88: .word ov11_02324D4C + arm_func_end ov11_02302CE0 + + arm_func_start ov11_02302D8C +ov11_02302D8C: ; 0x02302D8C + stmdb sp!, {r3, lr} + ldr r0, _02302DB4 ; =ov11_02324D4C + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _02302DB4 ; =ov11_02324D4C + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02302DB4: .word ov11_02324D4C + arm_func_end ov11_02302D8C + + arm_func_start ov11_02302DB8 +ov11_02302DB8: ; 0x02302DB8 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr sb, _023031E4 ; =ov11_02324D4C +#ifdef JAPAN + ldr r1, [sb, #4] + ldr r0, [r1] +#else + ldr r3, [sb, #4] + ldr r0, [r3] +#endif + cmp r0, #0xd + addls pc, pc, r0, lsl #2 + b _023031DC +_02302DD4: ; jump table + b _02302E0C ; case 0 + b _02302E4C ; case 1 + b _02302E74 ; case 2 + b _02302EA8 ; case 3 + b _02302F4C ; case 4 + b _02302FF4 ; case 5 + b _0230301C ; case 6 + b _02303050 ; case 7 + b _02303088 ; case 8 + b _023030F4 ; case 9 + b _0230311C ; case 10 + b _0230313C ; case 11 + b _023031A4 ; case 12 + b _023031C0 ; case 13 +_02302E0C: +#ifdef JAPAN + add r0, r1, #0x3c + str r0, [r1, #0x174] +#else + add r0, r3, #0x3c + str r0, [r3, #0x174] +#endif + ldr r1, [sb, #4] + mvn r0, #1 + ldrsb r1, [r1, #9] + cmp r1, r0 + bne _023031DC + mov r0, #0 + bl CreateDialogueBox + mov r1, sb + ldr r3, [r1, #4] + mov r2, #1 + strb r0, [r3, #9] + ldr r0, [r1, #4] + str r2, [r0] + b _023031DC +_02302E4C: +#ifdef JAPAN + ldrsb r0, [r1, #9] +#else + ldrsb r0, [r3, #9] +#endif + ldr r2, _023031E8 ; =0x000002C5 + mov r1, #0x10 + mov r3, #0 + bl ShowStringIdInDialogueBox + mov r0, sb + ldr r0, [r0, #4] + mov r1, #2 + str r1, [r0] + b _023031DC +_02302E74: +#ifdef JAPAN + ldrsb r0, [r1, #9] +#else + ldrsb r0, [r3, #9] +#endif + bl IsDialogueBoxActive + cmp r0, #0 + bne _023031DC + mov r0, sb + ldr r0, [r0, #4] + ldrsb r0, [r0, #9] + bl ShowDialogueBox + mov r0, sb + ldr r0, [r0, #4] + mov r1, #3 + str r1, [r0] + b _023031DC +_02302EA8: +#ifdef JAPAN + add r0, r1, #0x3c + mov r7, #0 + ldr r5, _023031EC ; =ov11_02322780 + str r0, [r1, #0x174] +#else + add r0, r3, #0x3c + mov r7, #0 + ldr r5, _023031EC ; =ov11_02322780 + str r0, [r3, #0x174] +#endif + mov r6, #0x100 + mov r4, r7 +_02302EC0: + ldr r3, [sb, #4] + mov r0, r7, lsl #3 + add r1, r3, #0x13c + str r1, [sp] + ldrh r2, [r5, r0] + add r8, r7, r7, lsl #6 + add r0, r3, #0x18c + mov r1, r6 + mov r3, r4 + add r0, r0, r8, lsl #2 + bl PreprocessStringFromId + add r1, r5, r7, lsl #3 + ldr r0, [sb, #4] + add r7, r7, #1 + ldr r1, [r1, #4] + add r0, r0, r8, lsl #2 + str r1, [r0, #0x28c] + cmp r7, #3 + blt _02302EC0 + mov r1, #3 + ldr r0, _023031E4 ; =ov11_02324D4C + str r1, [sp] + ldr r2, [r0, #4] + ldr r0, _023031F0 ; =ov11_02322750 + ldr r1, _023031F4 ; =0x00300011 + add r3, r2, #0x18c + mov r2, #0 + bl CreateSimpleMenu + ldr r1, _023031E4 ; =ov11_02324D4C + mov r2, #4 + ldr r3, [r1, #4] + strb r0, [r3, #0xa] + ldr r0, [r1, #4] + str r2, [r0] + b _023031DC +_02302F4C: +#ifdef JAPAN + ldrsb r0, [r1, #0xa] +#else + ldrsb r0, [r3, #0xa] +#endif + bl IsSimpleMenuActive + cmp r0, #0 + bne _023031DC + mov r0, sb + ldr r0, [r0, #4] + ldrsb r0, [r0, #0xa] + bl GetSimpleMenuResult__0202B870 + mov r1, sb + ldr r2, [r1, #4] + str r0, [r2, #4] + ldr r0, [r1, #4] + ldrsb r0, [r0, #0xa] + bl CloseSimpleMenu + mov r0, sb + ldr r1, [r0, #4] + ldr r0, [r1, #4] + cmp r0, #0 + beq _02302FA8 + cmp r0, #1 + beq _02302FC4 + cmp r0, #2 + b _02302FE8 +_02302FA8: + ldrsb r0, [r1, #9] + bl CloseDialogueBox + mov r0, sb + ldr r0, [r0, #4] + mov r1, #0xb + str r1, [r0] + b _023031DC +_02302FC4: + ldrsb r0, [r1, #9] + bl CloseDialogueBox + mov r0, sb + ldr r0, [r0, #4] + mov r1, #1 + ldr r0, [r0, #0xc] + bl ov11_02302CE0 + mov r0, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_02302FE8: + mov r0, #5 + str r0, [r1] + b _023031DC +_02302FF4: +#ifdef JAPAN + ldrsb r0, [r1, #9] + ldr r2, _023031F8 ; =0x000002C9 + add r3, r1, #0x13c +#else + ldrsb r0, [r3, #9] + ldr r2, _023031F8 ; =0x000002C9 + add r3, r3, #0x13c +#endif + mov r1, #0x10 + bl ShowStringIdInDialogueBox + mov r0, sb + ldr r0, [r0, #4] + mov r1, #6 + str r1, [r0] + b _023031DC +_0230301C: +#ifdef JAPAN + ldrsb r0, [r1, #9] +#else + ldrsb r0, [r3, #9] +#endif + bl IsDialogueBoxActive + cmp r0, #0 + bne _023031DC + mov r0, sb + ldr r0, [r0, #4] + ldrsb r0, [r0, #9] + bl ShowDialogueBox + mov r0, sb + ldr r0, [r0, #4] + mov r1, #7 + str r1, [r0] + b _023031DC +_02303050: + ldr r0, _023031FC ; =ov11_02322760 + mov r4, #2 + ldr r1, _02303200 ; =0x00300013 + ldr r3, _02303204 ; =ov11_02322798 + mov r2, #0 + str r4, [sp] + bl CreateSimpleMenuFromStringIds + mov r1, sb + ldr r3, [r1, #4] + mov r2, #8 + strb r0, [r3, #0xa] + ldr r0, [r1, #4] + str r2, [r0] + b _023031DC +_02303088: +#ifdef JAPAN + ldrsb r0, [r1, #0xa] +#else + ldrsb r0, [r3, #0xa] +#endif + bl IsSimpleMenuActive + cmp r0, #0 + bne _023031DC + mov r0, sb + ldr r0, [r0, #4] + ldrsb r0, [r0, #0xa] + bl GetSimpleMenuResult__0202B870 + mov r1, sb + ldr r2, [r1, #4] + str r0, [r2, #4] + ldr r0, [r1, #4] + ldrsb r0, [r0, #0xa] + bl CloseSimpleMenu + mov r0, sb + ldr r1, [r0, #4] + ldr r0, [r1, #4] + cmp r0, #3 + beq _023030DC + cmp r0, #4 + b _023030E8 +_023030DC: + mov r0, #9 + str r0, [r1] + b _023031DC +_023030E8: + mov r0, #1 + str r0, [r1] + b _023031DC +_023030F4: +#ifdef JAPAN + ldrsb r0, [r1, #9] + ldr r2, _02304864_JP ; =0x00002FEA + add r3, r1, #0x13c + mov r1, #0x218 +#else + ldrsb r0, [r3, #9] + mov r1, #0x218 + add r2, r1, #0xb2 + add r3, r3, #0x13c +#endif + bl ShowStringIdInDialogueBox + mov r0, sb + ldr r0, [r0, #4] + mov r1, #0xa + str r1, [r0] + b _023031DC +_0230311C: +#ifdef JAPAN + ldrsb r0, [r1, #9] +#else + ldrsb r0, [r3, #9] +#endif + bl IsDialogueBoxActive + cmp r0, #0 + moveq r0, sb + ldreq r0, [r0, #4] + moveq r1, #0xd + streq r1, [r0] + b _023031DC +_0230313C: +#ifdef JAPAN + add r0, r1, #0x10 +#else + add r0, r3, #0x10 +#endif + bl ZeroInitMissionRewardDataStruct + mov r0, sb + ldr r1, [r0, #4] + mov r3, #1 + str r3, [r1, #0x1c] + ldr r2, [r0, #4] + ldr r1, [r2, #0xc] + ldrh r0, [r1] + strh r0, [r2, #0x20] + ldrh r0, [r1, #2] + strh r0, [r2, #0x22] + ldrh r0, [r1, #4] + mov r1, #0 + strh r0, [r2, #0x24] + ldrb r0, [r2, #8] + cmp r0, #0 + movne r3, #8 + add r0, r2, #0x10 + orr r2, r3, #6 + bl sub_0203D438 + ldr r0, _023031E4 ; =ov11_02324D4C + mov r1, #0xc + ldr r0, [r0, #4] + str r1, [r0] + b _023031DC +_023031A4: + bl sub_0203D538 + cmp r0, #1 + bne _023031DC + bl FreeMissionRewardStructMain + bl ReturnScriptMenuResultZero + mov r0, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_023031C0: + bl ReturnScriptMenuResultZero + mov r0, sb + ldr r0, [r0, #4] + ldrsb r0, [r0, #9] + bl CloseDialogueBox + mov r0, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} +_023031DC: + mov r0, #1 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_023031E4: .word ov11_02324D4C +#ifdef JAPAN +_023031E8: .word 0x00002FE5 +#else +_023031E8: .word 0x000002C5 +#endif +_023031EC: .word ov11_02322780 +_023031F0: .word ov11_02322750 +_023031F4: .word 0x00300011 +#ifdef JAPAN +_023031F8: .word 0x00002FE9 +#else +_023031F8: .word 0x000002C9 +#endif +_023031FC: .word ov11_02322760 +_02303200: .word 0x00300013 +_02303204: .word ov11_02322798 +#ifdef JAPAN +_02304864_JP: .word 0x00002FEA +#endif + arm_func_end ov11_02302DB8 + + arm_func_start ov11_02303208 +ov11_02303208: ; 0x02303208 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, _023032B4 ; =ov11_02322770 + mov r4, r1 + bl InitMenu + cmp r0, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _023032B8 ; =ov11_02324D4C + ldr r0, [r0, #4] + cmp r0, #0 + bne _02303248 + ldr r0, _023032BC ; =0x00000498 + mov r1, #6 + bl MemAlloc + ldr r1, _023032B8 ; =ov11_02324D4C + str r0, [r1, #4] +_02303248: + ldr r0, _023032B8 ; =ov11_02324D4C + mvn r3, #1 + ldr r2, [r0, #4] + mov r1, #0 + strb r3, [r2, #9] + ldr r3, [r0, #4] + ldr r2, _023032C0 ; =ov11_02322734 + str r5, [r3, #0xc] + ldr r5, [r0, #4] + mov r3, #1 + strb r4, [r5, #8] + ldr r0, [r0, #4] + str r1, [sp] + ldr r1, [r0, #0xc] + add r0, r0, #0x3c + bl MaybeGetFormattedItemName + ldr r0, _023032B8 ; =ov11_02324D4C + ldr r0, [r0, #4] + add r0, r0, #0x13c + bl InitPreprocessorArgs + ldr r0, _023032B8 ; =ov11_02324D4C + cmp r4, #0 + movne r1, #0xb + ldr r0, [r0, #4] + moveq r1, #0 + str r1, [r0] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_023032B4: .word ov11_02322770 +_023032B8: .word ov11_02324D4C +_023032BC: .word 0x00000498 +_023032C0: .word ov11_02322734 + arm_func_end ov11_02303208 + + arm_func_start InitDiaryAndFaqBoardMenu +InitDiaryAndFaqBoardMenu: ; 0x023032C4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, lr} + sub sp, sp, #4 + mov r4, r0 + mov r0, #0xc80 + mov r1, #6 + bl MemAlloc + ldr r2, _023033F0 ; =ov11_02324D54 + mov r1, #0x5c + str r0, [r2] + mov r0, #0 + bl LoadScriptVariableValue + ldr r1, _023033F0 ; =ov11_02324D54 + mov r3, #0 + ldr r2, [r1] + str r0, [r2, #0x10] + ldr r1, [r1] + sub r2, r3, #2 + ldr r0, [r1, #0x10] + cmp r0, #0 + movle r0, #5 + strle r0, [r1, #0x10] + ldr r0, _023033F0 ; =ov11_02324D54 + ldr r1, [r0] + str r3, [r1, #0x1c] + ldr r1, [r0] + str r3, [r1, #0xc24] + ldr r1, [r0] + str r3, [r1, #0x14] + ldr r1, [r0] + str r4, [r1, #4] + ldr r1, [r0] + strb r2, [r1, #0xc7d] + ldr r0, [r0] + add r0, r0, #0x28 + add r0, r0, #0xc00 + bl InitPreprocessorArgs + ldr r0, _023033F0 ; =ov11_02324D54 +#ifdef JAPAN + ldr r2, _02304A54 ; =0x000032FC + ldr r1, [r0] + ldr r3, _023033F4 ; =0x0000C402 + add r0, r1, #0x28 + add r4, r0, #0xc00 + add r0, r1, #0x24 + mov r1, #0x400 +#else + mov r1, #0x400 + ldr r2, [r0] + ldr r3, _023033F4 ; =0x0000C402 + add r0, r2, #0x28 + add r4, r0, #0xc00 + add r0, r2, #0x24 + add r2, r1, #0x4a +#endif + str r4, [sp] + bl PreprocessStringFromId + ldr r6, _023033F8 ; =ov11_023227B0 + ldr r5, _023033F4 ; =0x0000C402 + ldr r4, _023033F0 ; =ov11_02324D54 + mov r8, #0 + mov r7, #0x400 +_02303390: + ldr r3, [r4] + mov r1, r7 + add r0, r3, #0x28 + add r0, r0, #0xc00 + str r0, [sp] + ldr r2, [r3, #4] + add r0, r3, #0x24 + mov r2, r2, lsl #1 + ldrh r2, [r6, r2] + add ip, r0, #0x400 + mov r3, r5 + add r0, r8, r2 + mov r2, r0, lsl #0x10 + add r0, ip, r8, lsl #6 + mov r2, r2, lsr #0x10 + bl PreprocessStringFromId + add r8, r8, #1 + cmp r8, #0x1e + blt _02303390 + mov r0, #0 + bl ov11_023035C0 + mov r0, #1 + add sp, sp, #4 + ldmia sp!, {r3, r4, r5, r6, r7, r8, pc} + .align 2, 0 +_023033F0: .word ov11_02324D54 +#ifdef JAPAN +_02304A54: .word 0x000032FC +#endif +_023033F4: .word 0x0000C402 +_023033F8: .word ov11_023227B0 + arm_func_end InitDiaryAndFaqBoardMenu + + arm_func_start ov11_023033FC +ov11_023033FC: ; 0x023033FC + stmdb sp!, {r3, lr} + ldr r0, _023035BC ; =ov11_02324D54 + ldr r2, [r0] + ldr r1, [r2] + cmp r1, #0xc + addls pc, pc, r1, lsl #2 + b _02303538 +_02303418: ; jump table + b _0230344C ; case 0 + b _02303538 ; case 1 + b _023034A0 ; case 2 + b _023035B4 ; case 3 + b _02303538 ; case 4 + b _02303538 ; case 5 + b _02303538 ; case 6 + b _02303538 ; case 7 + b _023034A8 ; case 8 + b _02303538 ; case 9 + b _02303538 ; case 10 + b _02303538 ; case 11 + b _023034F4 ; case 12 +_0230344C: + add r0, r2, #0xc00 + ldrsb r0, [r0, #0x7c] + bl IsAdvancedMenuActive2 + cmp r0, #0 + bne _023035B4 + ldr r0, _023035BC ; =ov11_02324D54 + ldr r0, [r0] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0x7c] + bl GetAdvancedMenuResult + ldr r1, _023035BC ; =ov11_02324D54 + add r2, r0, #1 + ldr r0, [r1] + str r2, [r0, #0x18] + ldr r0, [r1] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0x7c] + bl CloseAdvancedMenu + mov r0, #2 + bl ov11_023035C0 + b _023035B4 +_023034A0: + mov r0, #3 + ldmia sp!, {r3, pc} +_023034A8: + add r0, r2, #0xc00 + ldrsb r0, [r0, #0x7d] + bl IsDialogueBoxActive + cmp r0, #0 + bne _023035B4 + ldr r0, _023035BC ; =ov11_02324D54 + ldr r0, [r0] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0x7d] + bl ShowDialogueBox + ldr r0, _023035BC ; =ov11_02324D54 + mov r2, #0xd + ldr r1, [r0] + str r2, [r1] + ldr r0, [r0] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0x7d] + bl sub_0202F2C4 + b _023035B4 +_023034F4: + ldr r1, [r2, #0x14] + add r1, r1, #1 + str r1, [r2, #0x14] + ldr r1, [r0] + ldr r0, [r1, #0x14] + cmp r0, #1 + cmpne r0, #2 + beq _023035B4 + cmp r0, #3 + bne _023035B4 + ldr r0, [r1, #8] + bl ov11_023035C0 + ldr r0, _023035BC ; =ov11_02324D54 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x14] + b _023035B4 +_02303538: + add r0, r2, #0xc00 + ldrsb r0, [r0, #0x7d] + bl IsDialogueBoxActive + cmp r0, #0 + bne _023035B4 + ldr r0, _023035BC ; =ov11_02324D54 + ldr r0, [r0] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0x7d] + bl ShowDialogueBox + ldr r0, _023035BC ; =ov11_02324D54 + mvn r1, #1 + ldr r0, [r0] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0x7d] + cmp r0, r1 + beq _023035A4 + bl sub_0202F2C4 + ldr r0, _023035BC ; =ov11_02324D54 + ldr r0, [r0] + add r0, r0, #0xc00 + ldrsb r0, [r0, #0x7d] + bl CloseDialogueBox + ldr r0, _023035BC ; =ov11_02324D54 + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #0xc7d] +_023035A4: + ldr r0, _023035BC ; =ov11_02324D54 + ldr r0, [r0] + ldr r0, [r0, #8] + bl ov11_023035C0 +_023035B4: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_023035BC: .word ov11_02324D54 + arm_func_end ov11_023033FC + + arm_func_start ov11_023035C0 +ov11_023035C0: ; 0x023035C0 + stmdb sp!, {r3, lr} + sub sp, sp, #0xa0 + ldr r1, _02303724 ; =ov11_02324D54 + ldr r2, [r1] + str r0, [r2] + ldr r3, [r1] + ldr r0, [r3] + cmp r0, #0xb + addls pc, pc, r0, lsl #2 + b _0230371C +_023035E8: ; jump table + b _02303618 ; case 0 + b _023036A4 ; case 1 + b _023036C0 ; case 2 + b _023036E8 ; case 3 + b _0230371C ; case 4 + b _02303700 ; case 5 + b _023036CC ; case 6 + b _0230371C ; case 7 + b _0230371C ; case 8 + b _0230371C ; case 9 + b _0230371C ; case 10 + b _023036F4 ; case 11 +_02303618: + ldr r0, [r3, #4] + mov r1, #0 +#ifdef JAPAN + add r0, r0, #0xfe + add r2, r0, #0x3200 +#else + add r0, r0, #0x4c + add r2, r0, #0x400 +#endif + mov r0, #0x10 + strh r2, [sp, #0x10] + str r1, [sp, #0x7c] + str r1, [sp, #0x84] + str r0, [sp, #0x14] + ldr r0, [r3, #4] + ldr ip, [r3, #0x10] + cmp r0, #2 + ldr r1, _02303728 ; =0x00001813 + add r2, sp, #8 + beq _0230367C + ldr r0, _0230372C ; =ov11_023227D8 + str ip, [sp] + mov ip, #8 + ldr r3, _02303730 ; =ov11_02303750 + str ip, [sp, #4] + bl CreateAdvancedMenu + ldr r1, _02303724 ; =ov11_02324D54 + ldr r1, [r1] + strb r0, [r1, #0xc7c] + b _0230371C +_0230367C: + ldr r0, _02303734 ; =ov11_023227B8 + str ip, [sp] + mov ip, #8 + ldr r3, _02303730 ; =ov11_02303750 + str ip, [sp, #4] + bl CreateAdvancedMenu + ldr r1, _02303724 ; =ov11_02324D54 + ldr r1, [r1] + strb r0, [r1, #0xc7c] + b _0230371C +_023036A4: + ldr r0, _02303738 ; =ov11_023227E8 + bl Debug_Print0 + ldr r0, _02303724 ; =ov11_02324D54 + mov r1, #2 + ldr r0, [r0] + str r1, [r0] + b _0230371C +_023036C0: + ldr r0, _0230373C ; =ov11_02322808 + bl Debug_Print0 + b _0230371C +_023036CC: + ldr r0, _02303740 ; =ov11_02322828 + bl Debug_Print0 + ldr r0, _02303724 ; =ov11_02324D54 + mov r1, #2 + ldr r0, [r0] + str r1, [r0, #8] + b _0230371C +_023036E8: + ldr r0, _02303744 ; =ov11_02322850 + bl Debug_Print0 + b _0230371C +_023036F4: + ldr r0, _02303748 ; =ov11_0232287C + bl Debug_Print0 + b _0230371C +_02303700: + ldr r0, _0230374C ; =ov11_02322894 + bl Debug_Print0 + ldr r0, _02303724 ; =ov11_02324D54 + mov r1, #1 + ldr r0, [r0] + str r1, [r0] + bl ov11_0230377C +_0230371C: + add sp, sp, #0xa0 + ldmia sp!, {r3, pc} + .align 2, 0 +_02303724: .word ov11_02324D54 +_02303728: .word 0x00001813 +_0230372C: .word ov11_023227D8 +_02303730: .word ov11_02303750 +_02303734: .word ov11_023227B8 +_02303738: .word ov11_023227E8 +_0230373C: .word ov11_02322808 +_02303740: .word ov11_02322828 +_02303744: .word ov11_02322850 +_02303748: .word ov11_0232287C +_0230374C: .word ov11_02322894 + arm_func_end ov11_023035C0 + + arm_func_start ov11_02303750 +ov11_02303750: ; 0x02303750 + stmdb sp!, {r4, lr} + ldr r2, _02303778 ; =ov11_02324D54 + mov r4, r0 + ldr r2, [r2] + add r2, r2, #0x24 + add r2, r2, #0x400 + add r1, r2, r1, lsl #6 + bl strcpy + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02303778: .word ov11_02324D54 + arm_func_end ov11_02303750 + + arm_func_start ov11_0230377C +ov11_0230377C: ; 0x0230377C + stmdb sp!, {r3, lr} + sub sp, sp, #0xa0 + ldr r0, _023038D8 ; =ov11_02324D54 + ldr r3, [r0] + ldr r0, [r3] + cmp r0, #0xb + addls pc, pc, r0, lsl #2 + b _023038D0 +_0230379C: ; jump table + b _023037CC ; case 0 + b _02303858 ; case 1 + b _02303874 ; case 2 + b _0230389C ; case 3 + b _023038D0 ; case 4 + b _023038B4 ; case 5 + b _02303880 ; case 6 + b _023038D0 ; case 7 + b _023038D0 ; case 8 + b _023038D0 ; case 9 + b _023038D0 ; case 10 + b _023038A8 ; case 11 +_023037CC: + ldr r0, [r3, #4] + mov r1, #0 +#ifdef JAPAN + add r0, r0, #0xfe + add r2, r0, #0x3200 +#else + add r0, r0, #0x4c + add r2, r0, #0x400 +#endif + mov r0, #0x10 + strh r2, [sp, #0x10] + str r1, [sp, #0x7c] + str r1, [sp, #0x84] + str r0, [sp, #0x14] + ldr r0, [r3, #4] + ldr ip, [r3, #0x10] + cmp r0, #2 + ldr r1, _023038DC ; =0x00001813 + add r2, sp, #8 + beq _02303830 + ldr r0, _023038E0 ; =ov11_023227D8 + str ip, [sp] + mov ip, #8 + ldr r3, _023038E4 ; =ov11_02303750 + str ip, [sp, #4] + bl CreateAdvancedMenu + ldr r1, _023038D8 ; =ov11_02324D54 + ldr r1, [r1] + strb r0, [r1, #0xc7c] + b _023038D0 +_02303830: + ldr r0, _023038E8 ; =ov11_023227B8 + str ip, [sp] + mov ip, #8 + ldr r3, _023038E4 ; =ov11_02303750 + str ip, [sp, #4] + bl CreateAdvancedMenu + ldr r1, _023038D8 ; =ov11_02324D54 + ldr r1, [r1] + strb r0, [r1, #0xc7c] + b _023038D0 +_02303858: + ldr r0, _023038EC ; =ov11_023227E8 + bl Debug_Print0 + ldr r0, _023038D8 ; =ov11_02324D54 + mov r1, #2 + ldr r0, [r0] + str r1, [r0] + b _023038D0 +_02303874: + ldr r0, _023038F0 ; =ov11_02322808 + bl Debug_Print0 + b _023038D0 +_02303880: + ldr r0, _023038F4 ; =ov11_02322828 + bl Debug_Print0 + ldr r0, _023038D8 ; =ov11_02324D54 + mov r1, #2 + ldr r0, [r0] + str r1, [r0, #8] + b _023038D0 +_0230389C: + ldr r0, _023038F8 ; =ov11_02322850 + bl Debug_Print0 + b _023038D0 +_023038A8: + ldr r0, _023038FC ; =ov11_0232287C + bl Debug_Print0 + b _023038D0 +_023038B4: + ldr r0, _02303900 ; =ov11_02322894 + bl Debug_Print0 + ldr r0, _023038D8 ; =ov11_02324D54 + mov r1, #1 + ldr r0, [r0] + str r1, [r0] + bl ov11_0230377C +_023038D0: + add sp, sp, #0xa0 + ldmia sp!, {r3, pc} + .align 2, 0 +_023038D8: .word ov11_02324D54 +_023038DC: .word 0x00001813 +_023038E0: .word ov11_023227D8 +_023038E4: .word ov11_02303750 +_023038E8: .word ov11_023227B8 +_023038EC: .word ov11_023227E8 +_023038F0: .word ov11_02322808 +_023038F4: .word ov11_02322828 +_023038F8: .word ov11_02322850 +_023038FC: .word ov11_0232287C +_02303900: .word ov11_02322894 + arm_func_end ov11_0230377C + + arm_func_start FreeDiaryAndFaqBoardMenuMenu +FreeDiaryAndFaqBoardMenuMenu: ; 0x02303904 + stmdb sp!, {r3, lr} + ldr r0, _0230392C ; =ov11_02324D54 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _0230392C ; =ov11_02324D54 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230392C: .word ov11_02324D54 + arm_func_end FreeDiaryAndFaqBoardMenuMenu + + arm_func_start DiaryAndFaqBoardMenuFrameUpdate +DiaryAndFaqBoardMenuFrameUpdate: ; 0x02303930 + stmdb sp!, {r3, lr} + ldr r0, _023039A8 ; =ov11_02324D54 + ldr r1, [r0] + ldr r0, [r1, #0xc24] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _023039A0 +_0230394C: ; jump table + b _0230395C ; case 0 + b _02303968 ; case 1 + b _02303984 ; case 2 + b _02303990 ; case 3 +_0230395C: + mov r0, #1 + str r0, [r1, #0xc24] + b _023039A0 +_02303968: + bl ov11_023033FC + cmp r0, #3 + ldreq r0, _023039A8 ; =ov11_02324D54 + moveq r1, #2 + ldreq r0, [r0] + streq r1, [r0, #0xc24] + b _023039A0 +_02303984: + mov r0, #3 + str r0, [r1, #0xc24] + b _023039A0 +_02303990: + ldr r0, [r1, #0x18] + bl ReturnScriptMenuResult + mov r0, #4 + ldmia sp!, {r3, pc} +_023039A0: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023039A8: .word ov11_02324D54 + arm_func_end DiaryAndFaqBoardMenuFrameUpdate + + arm_func_start ov11_023039AC +ov11_023039AC: ; 0x023039AC + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _023039D0 ; =ov11_023227C8 + bl InitMenu + cmp r0, #0 + ldmeqia sp!, {r4, pc} + mov r0, r4 + bl InitDiaryAndFaqBoardMenu + ldmia sp!, {r4, pc} + .align 2, 0 +_023039D0: .word ov11_023227C8 + arm_func_end ov11_023039AC + + arm_func_start ov11_023039D4 +ov11_023039D4: ; 0x023039D4 + stmdb sp!, {r4, lr} + mov r4, r0 + mov r0, #0x21c + mov r1, #8 + bl MemAlloc + ldr r1, _02303AF8 ; =ov11_02324D58 + cmp r4, #0 + str r0, [r1, #4] + str r4, [r0, #0x14] + bne _02303A14 + ldr r0, [r1, #4] + add r0, r0, #0x60 + bl CopyMenuControlWindowExtraInfo + ldr r1, _02303AF8 ; =ov11_02324D58 + ldr r1, [r1, #4] + str r0, [r1, #0x5c] +_02303A14: + mov r2, #0 + ldr r0, _02303AF8 ; =ov11_02324D58 + mov r3, r2 +_02303A20: + ldr r1, [r0, #4] + add r1, r1, r2, lsl #2 + add r2, r2, #1 + str r3, [r1, #0x38] + cmp r2, #8 + blt _02303A20 + ldr r2, _02303AF8 ; =ov11_02324D58 + mov lr, #1 + ldr r0, [r2, #4] + mov ip, #4 + str r3, [r0, #0x18] + ldr r1, [r2, #4] + ldr r0, _02303AFC ; =ov11_023228E0 + str r3, [r1, #0x1c] + ldr r3, [r2, #4] + ldr r1, _02303B00 ; =ov11_023042A8 + str lr, [r3, #0x20] + ldr r3, [r2, #4] + str lr, [r3, #0x24] + ldr r3, [r2, #4] + str lr, [r3, #0x28] + ldr r3, [r2, #4] + str lr, [r3, #0x2c] + ldr r3, [r2, #4] + str lr, [r3, #0x30] + ldr r3, [r2, #4] + str lr, [r3, #0x34] + ldr r3, [r2, #4] + str ip, [r3, #0x40] + ldr r3, [r2, #4] + ldr r2, [r3, #0x40] + sub r2, r2, #2 + str r2, [r3, #0x10] + bl CreateTextBox + ldr r1, _02303AF8 ; =ov11_02324D58 + mov r2, #1 + ldr r3, [r1, #4] + strb r0, [r3, #1] + ldr r0, [r1, #4] + str r2, [r0, #8] + ldr r0, [r1, #4] + ldr r0, [r0, #8] + bl ov11_02303BC0 + ldr r0, _02303AF8 ; =ov11_02324D58 + ldr r0, [r0, #4] + add r0, r0, #0x1bc + bl InitPreprocessorArgs + ldr r1, _02303AF8 ; =ov11_02324D58 + mov r3, #0 + ldr r2, [r1, #4] + mov r0, #1 + str r3, [r2, #4] + strb r3, [r1] + ldmia sp!, {r4, pc} + .align 2, 0 +_02303AF8: .word ov11_02324D58 +_02303AFC: .word ov11_023228E0 +_02303B00: .word ov11_023042A8 + arm_func_end ov11_023039D4 + + arm_func_start ov11_02303B04 +ov11_02303B04: ; 0x02303B04 + stmdb sp!, {r3, lr} + ldr r0, _02303B4C ; =ov11_02324D58 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + ldrsb r0, [r0, #1] + bl sub_0202836C + ldr r0, _02303B4C ; =ov11_02324D58 + ldr r0, [r0, #4] + ldrsb r0, [r0, #1] + bl CloseTextBox + ldr r0, _02303B4C ; =ov11_02324D58 + ldr r0, [r0, #4] + bl MemFree + ldr r0, _02303B4C ; =ov11_02324D58 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02303B4C: .word ov11_02324D58 + arm_func_end ov11_02303B04 + + arm_func_start ov11_02303B50 +ov11_02303B50: ; 0x02303B50 + stmdb sp!, {r3, lr} + ldr r0, _02303BBC ; =ov11_02324D58 + ldr r2, [r0, #4] + ldr r1, [r2, #4] + cmp r1, #0 + beq _02303B7C + cmp r1, #1 + beq _02303BB4 + cmp r1, #2 + beq _02303B84 + b _02303BB4 +_02303B7C: + bl ov11_02303D80 + b _02303BB4 +_02303B84: + mov r1, #3 + str r1, [r2, #4] + ldr r2, [r0, #4] + ldr r1, [r2, #0x5c] + tst r1, #0x100 + beq _02303BAC + ldrb r1, [r0] + ldr r0, [r2, #0xe8] + ldr r2, [r2, #0xe4] + blx r2 +_02303BAC: + mov r0, #4 + ldmia sp!, {r3, pc} +_02303BB4: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02303BBC: .word ov11_02324D58 + arm_func_end ov11_02303B50 + + arm_func_start ov11_02303BC0 +ov11_02303BC0: ; 0x02303BC0 + stmdb sp!, {r3, lr} + ldr r1, _02303D68 ; =ov11_02324D58 + ldr r2, [r1, #4] + str r0, [r2, #8] + ldr r3, [r1, #4] + ldr r0, [r3, #8] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + ldmia sp!, {r3, pc} +_02303BE4: ; jump table + ldmia sp!, {r3, pc} ; case 0 + b _02303BFC ; case 1 + b _02303C5C ; case 2 + b _02303C94 ; case 3 + ldmia sp!, {r3, pc} ; case 4 + b _02303D4C ; case 5 +_02303BFC: + ldr r2, _02303D6C ; =0x00003CFF + add r0, r3, #0x100 + strh r2, [r0] + ldr r0, [r1, #4] + mov r2, #0x10 + str r2, [r0, #0x104] + ldr ip, [r1, #4] + mov r2, #4 + ldr r3, [ip, #0x3c] + ldr r0, _02303D70 ; =ov11_023228D0 + str r3, [ip, #0xf8] + str r2, [sp] + ldr r1, [r1, #4] + ldr r3, _02303D74 ; =ov11_023228F0 + add r2, r1, #0xf8 + mov r1, #0x33 + bl CreateSimpleMenuFromStringIds + ldr r1, _02303D68 ; =ov11_02324D58 + ldr r2, [r1, #4] + strb r0, [r2, #2] + ldr r0, [r1, #4] + ldrsb r0, [r0, #1] + bl ov11_023042A8 + ldmia sp!, {r3, pc} +_02303C5C: + ldr r2, [r3, #0x40] + mov r0, #3 + str r2, [r3, #0xf8] + str r0, [sp] + ldr r1, [r1, #4] + ldr r0, _02303D70 ; =ov11_023228D0 + add r2, r1, #0xf8 + ldr r3, _02303D78 ; =ov11_02322910 + mov r1, #0x33 + bl CreateSimpleMenuFromStringIds + ldr r1, _02303D68 ; =ov11_02324D58 + ldr r1, [r1, #4] + strb r0, [r1, #2] + ldmia sp!, {r3, pc} +_02303C94: + mov r0, #0 + str r0, [r3, #0x198] + ldr r0, [r1, #4] + mov r2, #0x50 + str r2, [r0, #0x1b0] + ldr r0, [r1, #4] + mov r2, #4 + str r2, [r0, #0x1b4] + ldr r0, [r1, #4] + mov ip, #0x12 + str ip, [r0, #0x1a8] + ldr r0, [r1, #4] + mov r3, #0xc + str r3, [r0, #0x1ac] + ldr r2, [r1, #4] + ldr r0, [r2, #0x10] + cmp r0, #0 + bne _02303CF4 + mov r0, #0x1f + str r0, [r2, #0x19c] + ldr r0, [r1, #4] + ldr r1, _02303D7C ; =0x0000FFF2 + str r1, [r0, #0x1a0] + b _02303D24 +_02303CF4: + cmp r0, #1 + addne r0, ip, #0x470 + strne r0, [r2, #0x19c] + ldrne r0, [r1, #4] + rsbne r1, r3, #0x10000 + strne r1, [r0, #0x1a0] + bne _02303D24 + mov r0, #0x14 + str r0, [r2, #0x19c] + ldr r0, [r1, #4] + ldr r1, _02303D7C ; =0x0000FFF2 + str r1, [r0, #0x1a0] +_02303D24: + ldr r0, _02303D68 ; =ov11_02324D58 + ldr r2, [r0, #4] + ldr r1, [r2, #0x10] + add r1, r2, r1, lsl #2 + ldr r1, [r1, #0x18] + str r1, [r2, #0x194] + ldr r0, [r0, #4] + add r0, r0, #0x190 + bl DigitInputMenuInit + ldmia sp!, {r3, pc} +_02303D4C: + ldrsb r0, [r3, #2] + bl CloseSimpleMenu + ldr r0, _02303D68 ; =ov11_02324D58 + mov r1, #4 + ldr r0, [r0, #4] + str r1, [r0, #8] + ldmia sp!, {r3, pc} + .align 2, 0 +_02303D68: .word ov11_02324D58 +#if defined(EUROPE) +_02303D6C: .word 0x00003D01 +#elif defined(JAPAN) +_02303D6C: .word 0x000004A6 +#else +_02303D6C: .word 0x00003CFF +#endif +_02303D70: .word ov11_023228D0 +_02303D74: .word ov11_023228F0 +_02303D78: .word ov11_02322910 +_02303D7C: .word 0x0000FFF2 + arm_func_end ov11_02303BC0 + + arm_func_start ov11_02303D80 +ov11_02303D80: ; 0x02303D80 + stmdb sp!, {r4, lr} + sub sp, sp, #0xa8 + ldr r0, _02304298 ; =ov11_02324D58 + ldr r2, [r0, #4] + ldr r1, [r2, #8] + cmp r1, #6 + addls pc, pc, r1, lsl #2 + b _0230428C +_02303DA0: ; jump table + b _0230428C ; case 0 + b _02303DBC ; case 1 + b _0230406C ; case 2 + b _0230417C ; case 3 + b _02304250 ; case 4 + b _02304268 ; case 5 + b _0230422C ; case 6 +_02303DBC: + ldrsb r0, [r2, #2] + bl GetSimpleMenuResult__0202B870 + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _0230428C +_02303DD0: ; jump table + b _0230428C ; case 0 + b _0230404C ; case 1 + b _02303DE8 ; case 2 + b _02303E10 ; case 3 + b _02303E38 ; case 4 + b _02303E60 ; case 5 +_02303DE8: + ldr r1, _02304298 ; =ov11_02324D58 + mov r4, #5 + ldr r2, [r1, #4] + mov r3, #2 + str r4, [r2, #8] + ldr r2, [r1, #4] + str r3, [r2, #0xc] + ldr r1, [r1, #4] + str r0, [r1, #0x3c] + b _0230428C +_02303E10: + ldr r1, _02304298 ; =ov11_02324D58 + mov r4, #5 + ldr r2, [r1, #4] + mov r3, #3 + str r4, [r2, #8] + ldr r2, [r1, #4] + str r3, [r2, #0xc] + ldr r1, [r1, #4] + str r0, [r1, #0x3c] + b _0230428C +_02303E38: + ldr r1, _02304298 ; =ov11_02324D58 + mov r3, #5 + ldr r4, [r1, #4] + mov r2, #1 + str r0, [r4, #0x3c] + ldr r0, [r1, #4] + str r3, [r0, #8] + ldr r0, [r1, #4] + str r2, [r0, #0xc] + b _0230428C +_02303E60: + ldr r1, _02304298 ; =ov11_02324D58 + ldr r2, [r1, #4] + str r0, [r2, #0x3c] + ldr r3, [r1, #4] + ldr r0, [r3, #0x10] + cmp r0, #0 + beq _02303E90 + cmp r0, #1 + beq _02303F30 + cmp r0, #2 + beq _02303FD0 + b _0230402C +_02303E90: + ldr r0, [r3, #0x14] + cmp r0, #0 + bne _02303F00 + bl GetHero + ldr r1, _02304298 ; =ov11_02324D58 + mov r4, r0 + ldr r0, [r1, #4] + ldr r1, _0230429C ; =ov11_02322978 + ldr r2, [r0, #0x18] + add r0, sp, #6 + mov r2, r2, lsl #1 + ldrsh r1, [r1, r2] + strh r1, [r4, #4] + bl GetNameRaw + add r1, sp, #6 + add r0, r4, #0x3a + mov r2, #0xa + bl StrncpyName + ldrsh r2, [r4, #4] + mov r0, #0 + mov r1, #0x3e + bl SaveScriptVariableValue + add r1, r4, #0x3a + mov r0, #0x3f + mov r2, #0xa + bl SaveScriptVariableValueBytes + bl sub_020572EC + b _0230402C +_02303F00: + add r0, sp, #0x1c + bl sub_02048764 + ldr r0, _02304298 ; =ov11_02324D58 + ldr r1, _0230429C ; =ov11_02322978 + ldr r2, [r0, #4] + add r0, sp, #0x1c + ldr r2, [r2, #0x18] + mov r2, r2, lsl #1 + ldrsh r1, [r1, r2] + strh r1, [sp, #0x1c] + bl sub_02048794 + b _0230402C +_02303F30: + ldr r0, [r3, #0x14] + cmp r0, #0 + bne _02303FA0 + bl GetPartner + ldr r1, _02304298 ; =ov11_02324D58 + mov r4, r0 + ldr r0, [r1, #4] + ldr r1, _023042A0 ; =ov11_02322930 + ldr r2, [r0, #0x1c] + add r0, sp, #6 + mov r2, r2, lsl #1 + ldrsh r1, [r1, r2] + strh r1, [r4, #4] + bl GetNameRaw + add r1, sp, #6 + add r0, r4, #0x3a + mov r2, #0xa + bl StrncpyName + ldrsh r2, [r4, #4] + mov r0, #0 + mov r1, #0x40 + bl SaveScriptVariableValue + add r1, r4, #0x3a + mov r0, #0x41 + mov r2, #0xa + bl SaveScriptVariableValueBytes + bl sub_020572EC + b _0230402C +_02303FA0: + add r0, sp, #0x58 + bl sub_02048764 + ldr r0, _02304298 ; =ov11_02324D58 + ldr r1, _023042A0 ; =ov11_02322930 + ldr r2, [r0, #4] + add r0, sp, #0x58 + ldr r2, [r2, #0x1c] + mov r2, r2, lsl #1 + ldrsh r1, [r1, r2] + strh r1, [sp, #0x5a] + bl sub_02048794 + b _0230402C +_02303FD0: + ldr r1, _023042A4 ; =ov11_023228BC + add r0, sp, #0x94 + ldrb r2, [r1] + strb r2, [sp, #4] + ldrb r1, [r1, #1] + strb r1, [sp, #5] + ldr r1, [r3, #0x20] + mov r1, r1, lsl #0x10 + mov r1, r1, asr #0x10 + bl GetNameRaw + add r0, sp, #0x94 + mov r1, r0 +#ifdef JAPAN + bl sub_02025304_JP +#else + bl StrcpyName +#endif + mov r3, #0 + ldr r0, _02304298 ; =ov11_02324D58 + str r3, [sp] + ldr r0, [r0, #4] + add r1, sp, #0x94 + ldr r0, [r0, #0x20] + add r2, sp, #4 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl sub_02055DD0 +_0230402C: + ldr r0, _02304298 ; =ov11_02324D58 + mov r3, #5 + ldr r2, [r0, #4] + mov r1, #1 + str r3, [r2, #8] + ldr r0, [r0, #4] + str r1, [r0, #0xc] + b _0230428C +_0230404C: + ldr r0, _02304298 ; =ov11_02324D58 + mov r3, #5 + ldr r2, [r0, #4] + mov r1, #6 + str r3, [r2, #8] + ldr r0, [r0, #4] + str r1, [r0, #0xc] + b _0230428C +_0230406C: + ldrsb r0, [r2, #2] + bl GetSimpleMenuResult__0202B870 + cmp r0, #4 + addls pc, pc, r0, lsl #2 + b _0230428C +_02304080: ; jump table + b _0230428C ; case 0 + b _02304150 ; case 1 + b _02304094 ; case 2 + b _023040D4 ; case 3 + b _02304110 ; case 4 +_02304094: + ldr r1, _02304298 ; =ov11_02324D58 + mov ip, #0 + ldr r2, [r1, #4] + mov r3, #5 + str r0, [r2, #0x40] + ldr r0, [r1, #4] + mov r2, #1 + str ip, [r0, #0x10] + ldr r0, [r1, #4] + str r3, [r0, #8] + ldr r0, [r1, #4] + str r2, [r0, #0xc] + ldr r0, [r1, #4] + ldrsb r0, [r0, #1] + bl ov11_023042A8 + b _0230428C +_023040D4: + ldr r1, _02304298 ; =ov11_02324D58 + mov r3, #1 + ldr ip, [r1, #4] + mov r2, #5 + str r0, [ip, #0x40] + ldr r0, [r1, #4] + str r3, [r0, #0x10] + ldr r0, [r1, #4] + str r2, [r0, #8] + ldr r0, [r1, #4] + str r3, [r0, #0xc] + ldr r0, [r1, #4] + ldrsb r0, [r0, #1] + bl ov11_023042A8 + b _0230428C +_02304110: + ldr r1, _02304298 ; =ov11_02324D58 + mov ip, #2 + ldr r2, [r1, #4] + mov r3, #5 + str r0, [r2, #0x40] + ldr r0, [r1, #4] + mov r2, #1 + str ip, [r0, #0x10] + ldr r0, [r1, #4] + str r3, [r0, #8] + ldr r0, [r1, #4] + str r2, [r0, #0xc] + ldr r0, [r1, #4] + ldrsb r0, [r0, #1] + bl ov11_023042A8 + b _0230428C +_02304150: + ldr r0, _02304298 ; =ov11_02324D58 + mov r3, #5 + ldr r1, [r0, #4] + mov r2, #1 + str r3, [r1, #8] + ldr r1, [r0, #4] + str r2, [r1, #0xc] + ldr r0, [r0, #4] + ldrsb r0, [r0, #1] + bl ov11_023042A8 + b _0230428C +_0230417C: + add r0, r2, #0x190 + ldr r4, [r2, #0x190] + bl DigitInputMenuReturn + mvn r1, #1 + cmp r0, r1 + beq _023041D8 + add r1, r1, #1 + cmp r0, r1 + ldr r1, _02304298 ; =ov11_02324D58 + ldreq r0, _02304298 ; =ov11_02324D58 + ldr lr, [r1, #4] + ldreq r0, [r0, #4] + ldr ip, [lr, #0x10] + ldreq r0, [r0, #0x194] + add ip, lr, ip, lsl #2 + str r0, [ip, #0x18] + ldr r0, [r1, #4] + mov r3, #4 + str r3, [r0, #8] + ldr r0, [r1, #4] + mov r2, #1 + str r2, [r0, #0xc] + b _0230428C +_023041D8: + ldr r0, _02304298 ; =ov11_02324D58 + ldr r0, [r0, #4] + ldr r3, [r0, #0x190] + cmp r4, r3 + bne _023041F8 + ldr r0, [r0, #0x58] + cmp r0, #0xff + bne _0230428C +_023041F8: + ldr r0, _02304298 ; =ov11_02324D58 + ldr r2, [r0, #4] + ldr r1, [r2, #0x10] + add r1, r2, r1, lsl #2 + str r3, [r1, #0x18] + ldr r0, [r0, #4] + ldrsb r0, [r0, #1] + bl ov11_023042A8 + ldr r0, _02304298 ; =ov11_02324D58 + mov r1, #0 + ldr r0, [r0, #4] + str r1, [r0, #0x58] + b _0230428C +_0230422C: + mov r1, #2 + str r1, [r2, #4] + ldr r0, [r0, #4] + ldr r0, [r0, #0x14] + cmp r0, #1 + bne _02304248 + bl ov11_02303B04 +_02304248: + mvn r0, #0 + b _02304290 +_02304250: + ldr r1, [r2, #0xc] + str r1, [r2, #8] + ldr r0, [r0, #4] + ldr r0, [r0, #8] + bl ov11_02303BC0 + b _0230428C +_02304268: + ldrsb r0, [r2, #2] + bl CloseSimpleMenu + ldr r0, _02304298 ; =ov11_02324D58 + mvn r3, #1 + ldr r2, [r0, #4] + mov r1, #4 + strb r3, [r2, #2] + ldr r0, [r0, #4] + str r1, [r0, #8] +_0230428C: + mov r0, #0 +_02304290: + add sp, sp, #0xa8 + ldmia sp!, {r4, pc} + .align 2, 0 +_02304298: .word ov11_02324D58 +_0230429C: .word ov11_02322978 +_023042A0: .word ov11_02322930 +_023042A4: .word ov11_023228BC + arm_func_end ov11_02303D80 + + arm_func_start ov11_023042A8 +ov11_023042A8: ; 0x023042A8 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + sub sp, sp, #0x400 + mov r4, r0 + bl sub_02027B1C + ldr r0, _02304390 ; =ov11_02324D58 + ldr r2, _02304394 ; =ov11_02324D60 + ldr r1, [r0, #4] + mov r0, r4 + ldr r3, [r1, #0x10] + mov r1, #1 + ldr r3, [r2, r3, lsl #2] + mov r2, #3 + bl DrawTextInWindow + ldr r0, _02304390 ; =ov11_02324D58 + ldr r3, [r0, #4] + ldr r0, [r3, #0x10] + cmp r0, #0 + beq _02304300 + cmp r0, #1 + beq _02304314 + b _02304328 +_02304300: + ldr r1, [r3, #0x18] + ldr r0, _02304398 ; =ov11_02322978 + mov r1, r1, lsl #1 + ldrsh r2, [r0, r1] + b _02304334 +_02304314: + ldr r1, [r3, #0x1c] + ldr r0, _0230439C ; =ov11_02322930 + mov r1, r1, lsl #1 + ldrsh r2, [r0, r1] + b _02304334 +_02304328: + ldr r0, [r3, #0x20] + mov r0, r0, lsl #0x10 + mov r2, r0, asr #0x10 +_02304334: + ldr r0, _02304390 ; =ov11_02324D58 + str r2, [r3, #0x1bc] + ldr r1, [r0, #4] + orr r2, r2, #0x10000 + str r2, [r1, #0x1cc] + ldr r1, [r0, #4] + ldr r2, _023043A0 ; =ov11_023229B8 + add ip, r1, #0x1bc + ldr r3, _023043A4 ; =0x0000C402 + add r0, sp, #4 + mov r1, #0x400 + str ip, [sp] + bl PreprocessString + add r3, sp, #4 + mov r0, r4 + mov r1, #0x3c + mov r2, #3 + bl DrawTextInWindow + mov r0, r4 + bl UpdateWindow + add sp, sp, #4 + add sp, sp, #0x400 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_02304390: .word ov11_02324D58 +_02304394: .word ov11_02324D60 +_02304398: .word ov11_02322978 +_0230439C: .word ov11_02322930 +_023043A0: .word ov11_023229B8 +_023043A4: .word 0x0000C402 + arm_func_end ov11_023042A8 + + arm_func_start ov11_023043A8 +ov11_023043A8: ; 0x023043A8 + ldr ip, _023043B4 ; =InitMenu + ldr r0, _023043B8 ; =ov11_023229DC + bx ip + .align 2, 0 +_023043B4: .word InitMenu +_023043B8: .word ov11_023229DC + arm_func_end ov11_023043A8 + + arm_func_start ov11_023043BC +ov11_023043BC: ; 0x023043BC + stmdb sp!, {r3, lr} + mov r0, #8 + mov r1, r0 + bl MemAlloc + ldr r1, _023043E4 ; =ov11_02324D6C + mov r2, #0 + str r0, [r1] + str r2, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023043E4: .word ov11_02324D6C + arm_func_end ov11_023043BC + + arm_func_start ov11_023043E8 +ov11_023043E8: ; 0x023043E8 + stmdb sp!, {r3, lr} + ldr r0, _02304410 ; =ov11_02324D6C + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _02304410 ; =ov11_02324D6C + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02304410: .word ov11_02324D6C + arm_func_end ov11_023043E8 + + arm_func_start ov11_02304414 +ov11_02304414: ; 0x02304414 + stmdb sp!, {r3, lr} + ldr r0, _02304510 ; =ov11_02324D6C + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + beq _02304440 + cmp r0, #1 + beq _02304478 + cmp r0, #2 + beq _023044C4 + b _02304508 +_02304440: + mov r0, #9 + bl sub_02067584 + cmp r0, #0 + beq _02304460 + mvn r0, #0 + bl ReturnScriptMenuResult + mov r0, #4 + ldmia sp!, {r3, pc} +_02304460: + bl ov11_0230D71C + ldr r0, _02304510 ; =ov11_02324D6C + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #4] + b _02304508 +_02304478: + bl ov11_0230D220 + cmp r0, #0 + bne _02304508 + mov r0, #9 + bl sub_020668B4 + cmp r0, #0 + bne _023044AC + bl sub_02067664 + mvn r0, #0 + bl ReturnScriptMenuResult + bl ov11_0230D000 + mov r0, #4 + ldmia sp!, {r3, pc} +_023044AC: + bl ov11_02310BDC + ldr r0, _02304510 ; =ov11_02324D6C + mov r1, #2 + ldr r0, [r0] + str r1, [r0, #4] + b _02304508 +_023044C4: + bl sub_02066A44 + cmp r0, #0 + beq _02304508 + mvn r1, #0 + cmp r0, r1 + bne _023044E8 + mov r0, r1 + bl ReturnScriptMenuResult + b _023044F8 +_023044E8: + cmp r0, #1 + bne _023044F8 + bl sub_020674CC + bl ReturnScriptMenuResult +_023044F8: + bl sub_02067664 + bl ov11_0230D000 + mov r0, #4 + ldmia sp!, {r3, pc} +_02304508: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02304510: .word ov11_02324D6C + arm_func_end ov11_02304414 + + arm_func_start ov11_02304514 +ov11_02304514: ; 0x02304514 + ldr ip, _02304520 ; =InitMenu + ldr r0, _02304524 ; =ov11_023229EC + bx ip + .align 2, 0 +_02304520: .word InitMenu +_02304524: .word ov11_023229EC + arm_func_end ov11_02304514 + + arm_func_start ov11_02304528 +ov11_02304528: ; 0x02304528 + stmdb sp!, {r3, lr} + mov r0, #0xc + mov r1, #8 + bl MemAlloc + ldr r1, _02304550 ; =ov11_02324D70 + mov r2, #0 + str r0, [r1] + str r2, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02304550: .word ov11_02324D70 + arm_func_end ov11_02304528 + + arm_func_start ov11_02304554 +ov11_02304554: ; 0x02304554 + stmdb sp!, {r3, lr} + ldr r0, _0230457C ; =ov11_02324D70 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _0230457C ; =ov11_02324D70 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230457C: .word ov11_02324D70 + arm_func_end ov11_02304554 + + arm_func_start ov11_02304580 +ov11_02304580: ; 0x02304580 + stmdb sp!, {r3, lr} + ldr r0, _02304660 ; =ov11_02324D70 + ldr r1, [r0] + ldr r0, [r1, #4] + cmp r0, #0 + beq _023045AC + cmp r0, #1 + beq _023045E0 + cmp r0, #2 + beq _02304630 + b _02304658 +_023045AC: + bl ov11_022E8340 + cmp r0, #0 + bne _023045CC + bl ov11_022E84AC + mvn r0, #0 + bl ReturnScriptMenuResult + mov r0, #4 + ldmia sp!, {r3, pc} +_023045CC: + ldr r0, _02304660 ; =ov11_02324D70 + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #4] + b _02304658 +_023045E0: + bl ov11_022E83F8 + cmp r0, #0 + beq _02304658 + cmp r0, #1 + bne _02304608 + mvn r0, #0 + bl ReturnScriptMenuResult + bl ov11_022E84AC + mov r0, #4 + ldmia sp!, {r3, pc} +_02304608: + cmp r0, #2 + bne _02304658 + ldr r0, _02304660 ; =ov11_02324D70 + mov r3, #0xa + ldr r2, [r0] + mov r1, #2 + str r3, [r2, #8] + ldr r0, [r0] + str r1, [r0, #4] + b _02304658 +_02304630: + ldr r0, [r1, #8] + cmp r0, #0 + subgt r0, r0, #1 + strgt r0, [r1, #8] + bgt _02304658 + bl ov11_022E84AC + mov r0, #0 + bl ov11_022E6EE8 + mov r0, #3 + ldmia sp!, {r3, pc} +_02304658: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02304660: .word ov11_02324D70 + arm_func_end ov11_02304580 + + arm_func_start ov11_02304664 +ov11_02304664: ; 0x02304664 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _02304684 ; =ov11_023229FC + bl InitMenu + cmp r0, #0 + ldrne r0, _02304688 ; =ov11_0238A084 + strne r4, [r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_02304684: .word ov11_023229FC +_02304688: .word ov11_0238A084 + arm_func_end ov11_02304664 + + arm_func_start ov11_0230468C +ov11_0230468C: ; 0x0230468C + stmdb sp!, {r3, lr} + mov r0, #0xc + mov r1, #8 + bl MemAlloc + ldr r1, _023046B4 ; =ov11_02324D74 + mov r2, #0 + str r0, [r1] + str r2, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023046B4: .word ov11_02324D74 + arm_func_end ov11_0230468C + + arm_func_start ov11_023046B8 +ov11_023046B8: ; 0x023046B8 + stmdb sp!, {r3, lr} + ldr r0, _023046E0 ; =ov11_02324D74 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _023046E0 ; =ov11_02324D74 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_023046E0: .word ov11_02324D74 + arm_func_end ov11_023046B8 + + arm_func_start ov11_023046E4 +ov11_023046E4: ; 0x023046E4 + stmdb sp!, {r3, lr} + ldr r0, _02304880 ; =ov11_02324D74 + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _02304878 +_02304700: ; jump table + b _02304718 ; case 0 + b _0230473C ; case 1 + b _023047AC ; case 2 + b _023047C8 ; case 3 + b _023047EC ; case 4 + b _02304810 ; case 5 +_02304718: + bl ov11_0230D220 + cmp r0, #0 + bne _02304878 + bl ov11_0230D71C + ldr r0, _02304880 ; =ov11_02324D74 + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #4] + b _02304878 +_0230473C: + bl ov11_0230D220 + cmp r0, #0 + bne _02304878 + ldr r0, _02304884 ; =ov11_0238A084 + ldr r0, [r0] + cmp r0, #0 + moveq r0, #0 + movne r0, #1 + bl sub_020664B8 + cmp r0, #0 + bne _0230477C + bl sub_02066888 + mvn r0, #0 + bl ReturnScriptMenuResult + mov r0, #4 + ldmia sp!, {r3, pc} +_0230477C: + ldr r0, _02304884 ; =ov11_0238A084 + ldr r0, [r0] + cmp r0, #0 + bne _02304794 + bl ov11_02310BF0 + b _02304798 +_02304794: + bl ov11_02310C04 +_02304798: + ldr r0, _02304880 ; =ov11_02324D74 + mov r1, #2 + ldr r0, [r0] + str r1, [r0, #4] + b _02304878 +_023047AC: + bl ov11_0230D220 + cmp r0, #0 + bne _02304878 + ldr r0, _02304880 ; =ov11_02324D74 + mov r1, #3 + ldr r0, [r0] + str r1, [r0, #4] +_023047C8: + bl sub_02066510 + cmp r0, #0 + beq _02304878 + ldr r1, _02304880 ; =ov11_02324D74 + mov r2, #4 + ldr r3, [r1] + str r0, [r3, #8] + ldr r0, [r1] + str r2, [r0, #4] +_023047EC: + bl ov11_0230D220 + cmp r0, #0 + bne _02304878 + bl ov11_0230D71C + ldr r0, _02304880 ; =ov11_02324D74 + mov r1, #5 + ldr r0, [r0] + str r1, [r0, #4] + b _02304878 +_02304810: + bl ov11_0230D220 + cmp r0, #0 + bne _02304878 + ldr r0, _02304880 ; =ov11_02324D74 + ldr r1, _02304888 ; =ov11_02322A0C + ldr r2, [r0] + b _0230483C +_0230482C: + ldr r0, [r2, #8] + cmp r0, r3 + beq _02304848 + add r1, r1, #8 +_0230483C: + ldr r3, [r1] + cmp r3, #0 + bne _0230482C +_02304848: + cmp r3, #0 + beq _02304864 + ldrsh r0, [r1, #4] + bl sub_0206C110 + mov r0, #1 + bl ReturnScriptMenuResult + b _0230486C +_02304864: + mov r0, #0 + bl ReturnScriptMenuResult +_0230486C: + bl sub_02066888 + mov r0, #4 + ldmia sp!, {r3, pc} +_02304878: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02304880: .word ov11_02324D74 +_02304884: .word ov11_0238A084 +_02304888: .word ov11_02322A0C + arm_func_end ov11_023046E4 + + arm_func_start ov11_0230488C +ov11_0230488C: ; 0x0230488C + stmdb sp!, {r3, lr} + mov r0, #0xe + bl sub_02067584 + cmp r0, #0 + moveq r0, #1 + movne r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end ov11_0230488C + + arm_func_start ov11_023048AC +ov11_023048AC: ; 0x023048AC + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _023048CC ; =ov11_02322AB4 + bl InitMenu + cmp r0, #0 + ldrne r0, _023048D0 ; =ov11_0238A088 + strne r4, [r0] + ldmia sp!, {r4, pc} + .align 2, 0 +_023048CC: .word ov11_02322AB4 +_023048D0: .word ov11_0238A088 + arm_func_end ov11_023048AC + + arm_func_start ov11_023048D4 +ov11_023048D4: ; 0x023048D4 + stmdb sp!, {r3, lr} + mov r0, #0xc + mov r1, #8 + bl MemAlloc + ldr r1, _023048FC ; =ov11_02324D78 + mov r2, #0 + str r0, [r1] + str r2, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023048FC: .word ov11_02324D78 + arm_func_end ov11_023048D4 + + arm_func_start ov11_02304900 +ov11_02304900: ; 0x02304900 + stmdb sp!, {r3, lr} + ldr r0, _02304928 ; =ov11_02324D78 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _02304928 ; =ov11_02324D78 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02304928: .word ov11_02324D78 + arm_func_end ov11_02304900 + + arm_func_start ov11_0230492C +ov11_0230492C: ; 0x0230492C + stmdb sp!, {r3, lr} + ldr r0, _02304ABC ; =ov11_02324D78 + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #5 + addls pc, pc, r0, lsl #2 + b _02304AB4 +_02304948: ; jump table + b _02304960 ; case 0 + b _023049A4 ; case 1 + b _023049D0 ; case 2 + b _023049EC ; case 3 + b _02304A10 ; case 4 + b _02304A34 ; case 5 +_02304960: + bl ov11_0230D220 + cmp r0, #0 + bne _02304AB4 + mov r0, #0xe + bl sub_02067584 + cmp r0, #0 + beq _0230498C + mvn r0, #0 + bl ReturnScriptMenuResult + mov r0, #4 + ldmia sp!, {r3, pc} +_0230498C: + bl ov11_0230D71C + ldr r0, _02304ABC ; =ov11_02324D78 + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #4] + b _02304AB4 +_023049A4: + bl ov11_0230D220 + cmp r0, #0 + bne _02304AB4 + mov r0, #0xe + bl sub_020668B4 + bl ov11_02310BDC + ldr r0, _02304ABC ; =ov11_02324D78 + mov r1, #2 + ldr r0, [r0] + str r1, [r0, #4] + b _02304AB4 +_023049D0: + bl ov11_0230D220 + cmp r0, #0 + bne _02304AB4 + ldr r0, _02304ABC ; =ov11_02324D78 + mov r1, #3 + ldr r0, [r0] + str r1, [r0, #4] +_023049EC: + bl sub_02066A44 + cmp r0, #0 + beq _02304AB4 + ldr r1, _02304ABC ; =ov11_02324D78 + mov r2, #4 + ldr r3, [r1] + str r0, [r3, #8] + ldr r0, [r1] + str r2, [r0, #4] +_02304A10: + bl ov11_0230D220 + cmp r0, #0 + bne _02304AB4 + bl ov11_0230D71C + ldr r0, _02304ABC ; =ov11_02324D78 + mov r1, #5 + ldr r0, [r0] + str r1, [r0, #4] + b _02304AB4 +_02304A34: + bl ov11_0230D220 + cmp r0, #0 + bne _02304AB4 + ldr r1, _02304ABC ; =ov11_02324D78 + mvn r0, #0 + ldr r2, [r1] + ldr r1, [r2, #8] + cmp r1, r0 + bne _02304A60 + bl ov11_02300D5C + b _02304AA8 +_02304A60: + ldr r1, _02304AC0 ; =ov11_02322AC4 + b _02304A78 +_02304A68: + ldr r0, [r2, #8] + cmp r0, r3 + beq _02304A84 + add r1, r1, #8 +_02304A78: + ldr r3, [r1] + cmp r3, #0 + bne _02304A68 +_02304A84: + cmp r3, #0 + beq _02304AA0 + ldrsh r0, [r1, #4] + bl sub_0206C110 + mov r0, #6 + bl ov11_0230113C + b _02304AA8 +_02304AA0: + mov r0, #1 + bl ov11_0230113C +_02304AA8: + bl sub_02067664 + mov r0, #4 + ldmia sp!, {r3, pc} +_02304AB4: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02304ABC: .word ov11_02324D78 +_02304AC0: .word ov11_02322AC4 + arm_func_end ov11_0230492C + + arm_func_start IsBagNotEmpty +IsBagNotEmpty: ; 0x02304AC4 + stmdb sp!, {r3, lr} + bl GetNbItemsInBag + cmp r0, #0 + movgt r0, #1 + movle r0, #0 + and r0, r0, #0xff + ldmia sp!, {r3, pc} + arm_func_end IsBagNotEmpty + + arm_func_start ov11_02304AE0 +ov11_02304AE0: ; 0x02304AE0 + ldr ip, _02304AEC ; =InitMenu + ldr r0, _02304AF0 ; =ov11_02322B6C + bx ip + .align 2, 0 +_02304AEC: .word InitMenu +_02304AF0: .word ov11_02322B6C + arm_func_end ov11_02304AE0 + + arm_func_start ov11_02304AF4 +ov11_02304AF4: ; 0x02304AF4 + stmdb sp!, {r3, lr} + mov r0, #8 + mov r1, r0 + bl MemAlloc + ldr r1, _02304B1C ; =ov11_02324D7C + mov r2, #0 + str r0, [r1] + str r2, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02304B1C: .word ov11_02324D7C + arm_func_end ov11_02304AF4 + + arm_func_start ov11_02304B20 +ov11_02304B20: ; 0x02304B20 + stmdb sp!, {r3, lr} + ldr r0, _02304B48 ; =ov11_02324D7C + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _02304B48 ; =ov11_02324D7C + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02304B48: .word ov11_02324D7C + arm_func_end ov11_02304B20 + + arm_func_start ov11_02304B4C +ov11_02304B4C: ; 0x02304B4C + stmdb sp!, {r3, lr} + ldr r0, _02304BC0 ; =ov11_02324D7C + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + beq _02304B70 + cmp r0, #1 + beq _02304B9C + b _02304BB8 +_02304B70: + bl ov11_02307244 + cmp r0, #0 + bne _02304B88 + bl ov11_02308D1C + mov r0, #4 + ldmia sp!, {r3, pc} +_02304B88: + ldr r0, _02304BC0 ; =ov11_02324D7C + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #4] + b _02304BB8 +_02304B9C: + bl ov11_02307334 + cmp r0, #0 + beq _02304BB8 + bl ov11_02300D5C + bl ov11_02308D1C + mov r0, #4 + ldmia sp!, {r3, pc} +_02304BB8: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02304BC0: .word ov11_02324D7C + arm_func_end ov11_02304B4C + + arm_func_start ov11_02304BC4 +ov11_02304BC4: ; 0x02304BC4 + ldr ip, _02304BD0 ; =InitMenu + ldr r0, _02304BD4 ; =ov11_02322B7C + bx ip + .align 2, 0 +_02304BD0: .word InitMenu +_02304BD4: .word ov11_02322B7C + arm_func_end ov11_02304BC4 + + arm_func_start ov11_02304BD8 +ov11_02304BD8: ; 0x02304BD8 + stmdb sp!, {r3, lr} + mov r0, #8 + mov r1, r0 + bl MemAlloc + ldr r1, _02304C00 ; =ov11_02324D80 + mov r2, #0 + str r0, [r1] + str r2, [r0, #4] + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02304C00: .word ov11_02324D80 + arm_func_end ov11_02304BD8 + + arm_func_start ov11_02304C04 +ov11_02304C04: ; 0x02304C04 + stmdb sp!, {r3, lr} + ldr r0, _02304C2C ; =ov11_02324D80 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _02304C2C ; =ov11_02324D80 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02304C2C: .word ov11_02324D80 + arm_func_end ov11_02304C04 + + arm_func_start ov11_02304C30 +ov11_02304C30: ; 0x02304C30 + stmdb sp!, {r3, lr} + ldr r0, _02304CA8 ; =ov11_02324D80 + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + beq _02304C54 + cmp r0, #1 + beq _02304C84 + b _02304CA0 +_02304C54: + mov r0, #0 + bl ov11_02309040 + cmp r0, #0 + bne _02304C70 + bl ov11_02309DF8 + mov r0, #4 + ldmia sp!, {r3, pc} +_02304C70: + ldr r0, _02304CA8 ; =ov11_02324D80 + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #4] + b _02304CA0 +_02304C84: + bl ov11_023090DC + cmp r0, #0 + beq _02304CA0 + bl ov11_02309DF8 + bl ov11_02300D5C + mov r0, #4 + ldmia sp!, {r3, pc} +_02304CA0: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02304CA8: .word ov11_02324D80 + arm_func_end ov11_02304C30 + + arm_func_start ov11_02304CAC +ov11_02304CAC: ; 0x02304CAC + stmdb sp!, {r3, r4, r5, lr} + ldr r2, _02304D8C ; =ov11_02324D84 + mov r5, r0 + ldr r0, [r2] + mov r4, r1 + cmp r0, #0 + bne _02304CDC + ldr r0, _02304D90 ; =0x000004C4 + mov r1, #8 + bl MemAlloc + ldr r1, _02304D8C ; =ov11_02324D84 + str r0, [r1] +_02304CDC: + ldr r0, _02304D8C ; =ov11_02324D84 + ldrh r1, [r5] + ldr r2, [r0] + strh r1, [r2] + ldrh r1, [r5, #2] + add r0, r2, #0x54 + strh r1, [r2, #2] + ldrh r1, [r5, #4] + strh r1, [r2, #4] + bl ItemZInit + ldr r0, _02304D8C ; =ov11_02324D84 + ldr r0, [r0] + add r0, r0, #0x15c + bl InitPreprocessorArgs + ldr r0, _02304D8C ; =ov11_02324D84 + mov r3, #0 + ldr r1, [r0] + sub r2, r3, #2 + str r3, [r1, #0x50] + ldr r1, [r0] + strb r2, [r1, #0x48] + ldr r1, [r0] + strb r2, [r1, #0x4a] + ldr r1, [r0] + strb r2, [r1, #0x49] + ldr r1, [r0] + strb r2, [r1, #0x4b] + ldr r1, [r0] + str r3, [r1, #0x44] +_02304D50: + ldr r1, [r0] + add r1, r1, r3 + strb r3, [r1, #0x4bc] + add r3, r3, #1 + cmp r3, #5 + blt _02304D50 + ldr r1, _02304D8C ; =ov11_02324D84 + mov r0, #0 + ldr r2, [r1] + str r0, [r2, #0x1ac] + ldr r1, [r1] + strb r4, [r1, #0x4c] + bl ov11_02304DC8 + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_02304D8C: .word ov11_02324D84 +_02304D90: .word 0x000004C4 + arm_func_end ov11_02304CAC + + arm_func_start ov11_02304D94 +ov11_02304D94: ; 0x02304D94 + stmdb sp!, {r4, lr} + ldr ip, _02304DC4 ; =ov11_02324D84 + mov r3, r2 + ldr r2, [ip] + mov lr, #0 + add ip, r2, r1 + mov r2, #1 + mov r4, r0 + strb lr, [ip, #6] + bl ov10_022BD394 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02304DC4: .word ov11_02324D84 + arm_func_end ov11_02304D94 + + arm_func_start ov11_02304DC8 +ov11_02304DC8: ; 0x02304DC8 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x198 + ldr r1, _02305444 ; =ov11_02324D84 + ldr r2, [r1] + str r0, [r2, #0x38] + ldr r4, [r1] + ldr r0, [r4, #0x38] + cmp r0, #0x17 + addls pc, pc, r0, lsl #2 + b _0230543C +_02304DF0: ; jump table + b _02304E50 ; case 0 + b _02304EA8 ; case 1 + b _02304EDC ; case 2 + b _02304F24 ; case 3 + b _0230527C ; case 4 + b _023052D0 ; case 5 + b _023050BC ; case 6 + b _0230543C ; case 7 + b _0230543C ; case 8 + b _0230543C ; case 9 + b _0230543C ; case 10 + b _02305138 ; case 11 + b _0230523C ; case 12 + b _02305300 ; case 13 + b _02305310 ; case 14 + b _02305374 ; case 15 + b _023053CC ; case 16 + b _0230543C ; case 17 + b _0230543C ; case 18 + b _02305348 ; case 19 + b _02304FE4 ; case 20 + b _0230508C ; case 21 + b _0230543C ; case 22 + b _02305408 ; case 23 +_02304E50: + bl IsBagFull + cmp r0, #0 + beq _02304E90 + ldr r0, _02305444 ; =ov11_02324D84 + ldr r1, [r0] + ldrb r0, [r1, #0x4c] + cmp r0, #0 + beq _02304E80 + mov r0, #0x17 + str r0, [r1, #0x38] + bl ov11_02305488 + b _0230543C +_02304E80: + mov r0, #1 + str r0, [r1, #0x38] + bl ov11_02305488 + b _02304EA8 +_02304E90: + ldr r0, _02305444 ; =ov11_02324D84 + mov r1, #0xc + ldr r0, [r0] + str r1, [r0, #0x38] + bl ov11_02305488 + b _0230543C +_02304EA8: + ldr r0, _02305444 ; =ov11_02324D84 + mov r1, #3 + ldr r0, [r0] + str r1, [r0, #0x3c] + bl ov11_02306194 + ldr r0, _02305444 ; =ov11_02324D84 + ldr r2, _02305448 ; =0x000002D7 + ldr r3, [r0] + mov r1, #8 + ldrsb r0, [r3, #0x48] + add r3, r3, #0x15c + bl ShowStringIdInDialogueBox + b _0230543C +_02304EDC: + mov r0, #3 + str r0, [r4, #0x3c] + bl ov11_02306194 + ldr r0, _02305444 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x48] + bl ShowDialogueBox + ldr r0, _02305444 ; =ov11_02324D84 + mov r3, #3 + ldr r1, [r0] +#ifdef JAPAN + ldr r2, _02306AB0 ; =0x00002FB1 +#else + rsb r2, r3, #0x2e0 +#endif + str r3, [r1, #0x3c] + ldr r3, [r0] + mov r1, #8 + ldrsb r0, [r3, #0x48] + add r3, r3, #0x15c + bl ShowStringIdInDialogueBox + b _0230543C +_02304F24: +#ifdef JAPAN + ldr r1, _02306AB4 ; =0x00002FAC + add r0, r4, #0x1b0 +#else + add r0, r4, #0x1b0 + mov r1, #0x2d8 +#endif + bl GetStringFromFileVeneer + mov r1, #2 + add r0, sp, #0x18 + str r1, [r4, #0x2b0] + bl InitPreprocessorArgs + mov r1, #0 + ldr r0, _02305444 ; =ov11_02324D84 + str r1, [sp] + ldr r1, [r0] + ldr r2, _0230544C ; =ov11_02322B8C + add r0, r1, #0x5a + mov r3, #1 + bl MaybeGetFormattedItemName + ldr r0, _02305444 ; =ov11_02324D84 + ldr r2, _02305450 ; =0x000002D9 + ldr r5, [r0] + add ip, sp, #0x18 + ldrsh r3, [r5, #4] + add r0, r4, #0x2b4 + mov r1, #0x100 + orr r3, r3, #0x10000 + str r3, [sp, #0x28] + ldrh lr, [r5, #2] + mov r3, #0 + str lr, [sp, #0x3c] + ldrb lr, [r5] + str lr, [sp, #0x40] + str ip, [sp] + bl PreprocessStringFromId + mov r2, #3 + str r2, [r4, #0x3b4] + mov r0, #0 + strb r0, [r4, #0x3b8] + mov r1, #1 + str r1, [r4, #0x4b8] + str r2, [sp] + ldr r3, _02305444 ; =ov11_02324D84 + mov r1, #0x11 + ldr r3, [r3] + mov r2, r0 + add r3, r3, #0x1b0 + bl CreateSimpleMenu + ldr r1, _02305444 ; =ov11_02324D84 + ldr r1, [r1] + strb r0, [r1, #0x4a] + b _0230543C +_02304FE4: + ldr r0, [r4, #0x44] + add r1, r4, #0x54 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl CopyItemAtIdx + ldr r0, _02305444 ; =ov11_02324D84 + mov r4, #0 + ldr lr, [r0] + mov r3, #0x15 + ldrh ip, [lr, #0x54] + ldr r2, _0230544C ; =ov11_02322B8C + add r1, sp, #0xc + strh ip, [sp, #0xc] + ldrh ip, [lr, #0x56] + strh ip, [sp, #0xe] + ldrh ip, [lr, #0x58] + strh ip, [sp, #0x10] + strb r4, [sp, #0xc] + str r3, [lr, #0x3c] + ldr r0, [r0] + add r0, r0, #0xda + bl MaybeGetColoredFormattedItemName + ldr r0, _02305444 ; =ov11_02324D84 + ldr r1, [r0] + add r0, r1, #0xda + str r0, [r1, #0x194] + bl ov11_02306194 + ldr r0, _02305444 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x48] + bl ShowDialogueBox + ldr r0, _02305444 ; =ov11_02324D84 + mov r4, #0x15 + ldr r3, [r0] +#ifdef JAPAN + ldr r2, _02306AC0 ; =0x00002FC5 + str r4, [r3, #0x3c] + ldr r3, [r0] + mov r1, #8 +#else + mov r1, #8 + str r4, [r3, #0x3c] + ldr r3, [r0] + add r2, r4, #0x2bc +#endif + ldrsb r0, [r3, #0x48] + add r3, r3, #0x15c + bl ShowStringIdInDialogueBox + b _0230543C +_0230508C: + mov r4, #3 + str r4, [sp, #0x68] + ldr r0, _02305454 ; =ov11_02322B98 + ldr r1, _02305458 ; =0x00300033 + ldr r3, _0230545C ; =ov11_02322BC8 + add r2, sp, #0x68 + str r4, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _02305444 ; =ov11_02324D84 + ldr r1, [r1] + strb r0, [r1, #0x4a] + b _0230543C +_023050BC: + ldr r0, [r4, #0x44] + add r1, r4, #0x54 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl CopyItemAtIdx + ldr r4, _02305444 ; =ov11_02324D84 + ldr r0, _02305460 ; =ov11_02322BA8 + ldr lr, [r4] + ldr r1, _02305464 ; =0x00001013 + ldrsh ip, [lr, #0x58] + ldr r3, _02305468 ; =0x000008E4 + mov r2, #0 + str ip, [lr, #0x16c] + ldr lr, [r4] + ldrh ip, [lr, #0x56] + add ip, ip, #0xbc + str ip, [lr, #0x174] + ldr r4, [r4] + add ip, r4, #0x15c + str ip, [sp] + ldrsh r4, [r4, #0x58] +#if defined(EUROPE) + add r4, r4, #0xd3 + add r4, r4, #0x2900 +#elif defined(JAPAN) + add r4, r4, #0xce + add r4, r4, #0x4100 +#else + add r4, r4, #0xd1 + add r4, r4, #0x2900 +#endif + mov r4, r4, lsl #0x10 + mov r4, r4, lsr #0x10 + stmib sp, {r4, ip} + bl CreateScrollBoxSingle + ldr r1, _02305444 ; =ov11_02324D84 + ldr r1, [r1] + strb r0, [r1, #0x4b] + b _0230543C +_02305138: + ldr r0, [r4, #0x44] + add r1, r4, #0x54 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl CopyItemAtIdx + ldr r0, _02305444 ; =ov11_02324D84 + mov r1, #0 + ldr r2, [r0] + ldrh r0, [r2, #0x54] + strh r0, [sp, #0x12] + ldrh r0, [r2, #0x56] + strh r0, [sp, #0x14] + ldrh r0, [r2, #0x58] + strh r0, [sp, #0x16] + strb r1, [sp, #0x12] + bl ov11_02306194 + ldr r0, _02305444 ; =ov11_02324D84 + ldrsh r3, [sp, #0x16] + ldr r2, [r0] + add r1, sp, #0x12 + str r3, [r2, #0x16c] + ldr r0, [r0] + ldr r2, _0230544C ; =ov11_02322B8C + add r0, r0, #0x5a + bl MaybeGetColoredFormattedItemName + ldr r0, _02305444 ; =ov11_02324D84 + ldr r2, _0230544C ; =ov11_02322B8C + ldr r3, [r0] + add r1, r3, #0x5a + str r1, [r3, #0x194] + ldr r3, [r0] + ldrsh r1, [r3, #4] + str r1, [r3, #0x174] + ldr r1, [r0] + add r0, r1, #0xda + bl MaybeGetColoredFormattedItemName + ldr r0, _02305444 ; =ov11_02324D84 + ldr r2, _0230546C ; =0x000002DF + ldr r4, [r0] + mov r1, #0x18 + add r3, r4, #0xda + str r3, [r4, #0x198] + ldr r3, [r0] + ldrsb r0, [r3, #0x48] + add r3, r3, #0x15c + bl ShowStringIdInDialogueBox + ldr r0, _02305444 ; =ov11_02324D84 + ldr r0, [r0] + ldr r0, [r0, #0x44] + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl RemoveItemNoHole + ldr r0, _02305444 ; =ov11_02324D84 + ldr r0, [r0] + bl AddItemToBagNoHeld + cmp r0, #0 + ldrne r0, _02305444 ; =ov11_02324D84 + movne r1, #7 + ldrne r0, [r0] + strne r1, [r0, #0x3c] + ldreq r0, _02305444 ; =ov11_02324D84 + moveq r1, #0xa + ldreq r0, [r0] + streq r1, [r0, #0x3c] + b _0230543C +_0230523C: + mov r0, r4 + bl AddItemToBagNoHeld + cmp r0, #0 + beq _02305264 + ldr r0, _02305444 ; =ov11_02324D84 + mov r1, #8 + ldr r0, [r0] + str r1, [r0, #0x38] + bl ov11_02305488 + b _0230543C +_02305264: + ldr r0, _02305444 ; =ov11_02324D84 + mov r1, #0xa + ldr r0, [r0] + str r1, [r0, #0x38] + bl ov11_02305488 + b _0230543C +_0230527C: + add r0, r4, #0x5a + str r0, [r4, #0x19c] + ldr r0, [r1] + mov r1, #5 + str r1, [r0, #0x3c] + bl ov11_02306194 + ldr r0, _02305444 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x48] + bl ShowDialogueBox + ldr r0, _02305444 ; =ov11_02324D84 + mov r3, #5 + ldr r1, [r0] + ldr r2, _02305470 ; =0x000002D6 + str r3, [r1, #0x3c] + ldr r3, [r0] + mov r1, #8 + ldrsb r0, [r3, #0x48] + add r3, r3, #0x15c + bl ShowStringIdInDialogueBox + b _0230543C +_023052D0: + mov r4, #3 + str r4, [sp, #0x100] + ldr r0, _02305454 ; =ov11_02322B98 + ldr r1, _02305458 ; =0x00300033 + ldr r3, _0230545C ; =ov11_02322BC8 + add r2, sp, #0x100 + str r4, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _02305444 ; =ov11_02324D84 + ldr r1, [r1] + strb r0, [r1, #0x4a] + b _0230543C +_02305300: + mov r0, #9 + str r0, [r4, #0x38] + bl ov11_02305488 + b _0230543C +_02305310: + mov r0, #0xa + str r0, [r4, #0x3c] + bl ov11_02306194 + ldr r0, _02305444 ; =ov11_02324D84 + ldr r2, _02305474 ; =0x000002DE + ldr r4, [r0] + mov r1, #0x18 + add r3, r4, #0x5a + str r3, [r4, #0x19c] + ldr r3, [r0] + ldrsb r0, [r3, #0x48] + add r3, r3, #0x15c + bl ShowStringIdInDialogueBox + b _0230543C +_02305348: + ldr r0, _02305478 ; =ov11_02322BB8 + mov r4, #3 + ldr r3, _0230547C ; =ov11_02322BE0 + mov r1, #0x13 + mov r2, #0 + str r4, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _02305444 ; =ov11_02324D84 + ldr r1, [r1] + strb r0, [r1, #0x4a] + b _0230543C +_02305374: + ldrsb r0, [r4, #0x48] + bl CloseDialogueBox + ldr r0, _02305444 ; =ov11_02324D84 + mvn r2, #1 + ldr r1, [r0] + strb r2, [r1, #0x48] + ldr r4, [r0] + bl GetNbItemsInBag + ldr r2, _02305480 ; =ov11_02304D94 + add r1, r4, #0xbc + str r2, [sp] + add r1, r1, #0x400 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + ldr r2, [r4, #0x44] + add r3, r4, #6 + bl CreateInventoryMenuOuter + ldr r1, _02305444 ; =ov11_02324D84 + ldr r1, [r1] + strb r0, [r1, #0x49] + b _0230543C +_023053CC: + bl GetNbItemsInBag + ldr r2, _02305480 ; =ov11_02304D94 + add r1, r4, #0xbc + str r2, [sp] + add r1, r1, #0x400 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + ldr r2, [r4, #0x44] + add r3, r4, #6 + bl CreateInventoryMenuOuter + ldr r1, _02305444 ; =ov11_02324D84 + ldr r1, [r1] + strb r0, [r1, #0x49] + b _0230543C +_02305408: + mov r0, #0xf + str r0, [r4, #0x3c] + ldr r0, [r1] + mov r1, #0x16 + str r1, [r0, #0x38] + bl ov11_02306194 + ldr r0, _02305444 ; =ov11_02324D84 + ldr r2, _02305484 ; =0x000002DA + ldr r3, [r0] + mov r1, #0x18 + ldrsb r0, [r3, #0x48] + add r3, r3, #0x15c + bl ShowStringIdInDialogueBox +_0230543C: + add sp, sp, #0x198 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +#ifdef JAPAN +#define OV11_02304DC8_OFFSET 0x2CD4 +#else +#define OV11_02304DC8_OFFSET 0 +#endif +_02305444: .word ov11_02324D84 +_02305448: .word 0x000002D7 + OV11_02304DC8_OFFSET +#ifdef JAPAN +_02306AB0: .word 0x00002FB1 +_02306AB4: .word 0x00002FAC +#endif +_0230544C: .word ov11_02322B8C +_02305450: .word 0x000002D9 + OV11_02304DC8_OFFSET +#ifdef JAPAN +_02306AC0: .word 0x00002FC5 +#endif +_02305454: .word ov11_02322B98 +_02305458: .word 0x00300033 +_0230545C: .word ov11_02322BC8 +_02305460: .word ov11_02322BA8 +_02305464: .word 0x00001013 +#ifdef JAPAN +_02305468: .word 0x00001D3C +_0230546C: .word 0x00002FB3 +_02305470: .word 0x00002FCA +#else +_02305468: .word 0x000008E4 +_0230546C: .word 0x000002DF +_02305470: .word 0x000002D6 +#endif +_02305474: .word 0x000002DE + OV11_02304DC8_OFFSET +_02305478: .word ov11_02322BB8 +_0230547C: .word ov11_02322BE0 +_02305480: .word ov11_02304D94 +_02305484: .word 0x000002DA + OV11_02304DC8_OFFSET + arm_func_end ov11_02304DC8 + + arm_func_start ov11_02305488 +ov11_02305488: ; 0x02305488 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #0x198 + ldr r0, _02305AFC ; =ov11_02324D84 + ldr r4, [r0] + ldr r1, [r4, #0x38] + cmp r1, #0x17 + addls pc, pc, r1, lsl #2 + b _02305AF4 +_023054A8: ; jump table + b _02305508 ; case 0 + b _02305560 ; case 1 + b _02305594 ; case 2 + b _023055DC ; case 3 + b _02305934 ; case 4 + b _02305988 ; case 5 + b _02305774 ; case 6 + b _02305AF4 ; case 7 + b _02305AF4 ; case 8 + b _02305AF4 ; case 9 + b _02305AF4 ; case 10 + b _023057F0 ; case 11 + b _023058F4 ; case 12 + b _023059B8 ; case 13 + b _023059C8 ; case 14 + b _02305A2C ; case 15 + b _02305A84 ; case 16 + b _02305AF4 ; case 17 + b _02305AF4 ; case 18 + b _02305A00 ; case 19 + b _0230569C ; case 20 + b _02305744 ; case 21 + b _02305AF4 ; case 22 + b _02305AC0 ; case 23 +_02305508: + bl IsBagFull + cmp r0, #0 + beq _02305548 + ldr r0, _02305AFC ; =ov11_02324D84 + ldr r1, [r0] + ldrb r0, [r1, #0x4c] + cmp r0, #0 + beq _02305538 + mov r0, #0x17 + str r0, [r1, #0x38] + bl ov11_02305488 + b _02305AF4 +_02305538: + mov r0, #1 + str r0, [r1, #0x38] + bl ov11_02305488 + b _02305560 +_02305548: + ldr r0, _02305AFC ; =ov11_02324D84 + mov r1, #0xc + ldr r0, [r0] + str r1, [r0, #0x38] + bl ov11_02305488 + b _02305AF4 +_02305560: + ldr r0, _02305AFC ; =ov11_02324D84 + mov r1, #3 + ldr r0, [r0] + str r1, [r0, #0x3c] + bl ov11_02306194 + ldr r0, _02305AFC ; =ov11_02324D84 + ldr r2, _02305B00 ; =0x000002D7 + ldr r3, [r0] + mov r1, #8 + ldrsb r0, [r3, #0x48] + add r3, r3, #0x15c + bl ShowStringIdInDialogueBox + b _02305AF4 +_02305594: + mov r0, #3 + str r0, [r4, #0x3c] + bl ov11_02306194 + ldr r0, _02305AFC ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x48] + bl ShowDialogueBox + ldr r0, _02305AFC ; =ov11_02324D84 + mov r3, #3 + ldr r1, [r0] +#ifdef JAPAN + ldr r2, _02307174 ; =0x00002FB1 +#else + rsb r2, r3, #0x2e0 +#endif + str r3, [r1, #0x3c] + ldr r3, [r0] + mov r1, #8 + ldrsb r0, [r3, #0x48] + add r3, r3, #0x15c + bl ShowStringIdInDialogueBox + b _02305AF4 +_023055DC: +#ifdef JAPAN + ldr r1, _02307178 ; =0x00002FAC + add r0, r4, #0x1b0 +#else + add r0, r4, #0x1b0 + mov r1, #0x2d8 +#endif + bl GetStringFromFileVeneer + mov r1, #2 + add r0, sp, #0x148 + str r1, [r4, #0x2b0] + bl InitPreprocessorArgs + mov r1, #0 + ldr r0, _02305AFC ; =ov11_02324D84 + str r1, [sp] + ldr r1, [r0] + ldr r2, _02305B04 ; =ov11_02322B8C + add r0, r1, #0x5a + mov r3, #1 + bl MaybeGetFormattedItemName + ldr r0, _02305AFC ; =ov11_02324D84 + ldr r2, _02305B08 ; =0x000002D9 + ldr r5, [r0] + add ip, sp, #0x148 + ldrsh r3, [r5, #4] + add r0, r4, #0x2b4 + mov r1, #0x100 + orr r3, r3, #0x10000 + str r3, [sp, #0x158] + ldrh lr, [r5, #2] + mov r3, #0 + str lr, [sp, #0x16c] + ldrb lr, [r5] + str lr, [sp, #0x170] + str ip, [sp] + bl PreprocessStringFromId + mov r2, #3 + str r2, [r4, #0x3b4] + mov r0, #0 + strb r0, [r4, #0x3b8] + mov r1, #1 + str r1, [r4, #0x4b8] + str r2, [sp] + ldr r3, _02305AFC ; =ov11_02324D84 + mov r1, #0x11 + ldr r3, [r3] + mov r2, r0 + add r3, r3, #0x1b0 + bl CreateSimpleMenu + ldr r1, _02305AFC ; =ov11_02324D84 + ldr r1, [r1] + strb r0, [r1, #0x4a] + b _02305AF4 +_0230569C: + ldr r0, [r4, #0x44] + add r1, r4, #0x54 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl CopyItemAtIdx + ldr r0, _02305AFC ; =ov11_02324D84 + mov r4, #0 + ldr lr, [r0] + mov r3, #0x15 + ldrh ip, [lr, #0x54] + ldr r2, _02305B04 ; =ov11_02322B8C + add r1, sp, #0x12 + strh ip, [sp, #0x12] + ldrh ip, [lr, #0x56] + strh ip, [sp, #0x14] + ldrh ip, [lr, #0x58] + strh ip, [sp, #0x16] + strb r4, [sp, #0x12] + str r3, [lr, #0x3c] + ldr r0, [r0] + add r0, r0, #0xda + bl MaybeGetColoredFormattedItemName + ldr r0, _02305AFC ; =ov11_02324D84 + ldr r1, [r0] + add r0, r1, #0xda + str r0, [r1, #0x194] + bl ov11_02306194 + ldr r0, _02305AFC ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x48] + bl ShowDialogueBox + ldr r0, _02305AFC ; =ov11_02324D84 + mov r4, #0x15 + ldr r3, [r0] +#ifdef JAPAN + ldr r2, _02307184 ; =0x00002FC5 + str r4, [r3, #0x3c] + ldr r3, [r0] + mov r1, #8 +#else + mov r1, #8 + str r4, [r3, #0x3c] + ldr r3, [r0] + add r2, r4, #0x2bc +#endif + ldrsb r0, [r3, #0x48] + add r3, r3, #0x15c + bl ShowStringIdInDialogueBox + b _02305AF4 +_02305744: + mov r4, #3 + str r4, [sp, #0xb0] + ldr r0, _02305B0C ; =ov11_02322B98 + ldr r1, _02305B10 ; =0x00300033 + ldr r3, _02305B14 ; =ov11_02322BC8 + add r2, sp, #0xb0 + str r4, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _02305AFC ; =ov11_02324D84 + ldr r1, [r1] + strb r0, [r1, #0x4a] + b _02305AF4 +_02305774: + ldr r0, [r4, #0x44] + add r1, r4, #0x54 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl CopyItemAtIdx + ldr r4, _02305AFC ; =ov11_02324D84 + ldr r0, _02305B18 ; =ov11_02322BA8 + ldr lr, [r4] + ldr r1, _02305B1C ; =0x00001013 + ldrsh ip, [lr, #0x58] + ldr r3, _02305B20 ; =0x000008E4 + mov r2, #0 + str ip, [lr, #0x16c] + ldr lr, [r4] + ldrh ip, [lr, #0x56] + add ip, ip, #0xbc + str ip, [lr, #0x174] + ldr r4, [r4] + add ip, r4, #0x15c + str ip, [sp] + ldrsh r4, [r4, #0x58] +#if defined(EUROPE) + add r4, r4, #0xd3 + add r4, r4, #0x2900 +#elif defined(JAPAN) + add r4, r4, #0xce + add r4, r4, #0x4100 +#else + add r4, r4, #0xd1 + add r4, r4, #0x2900 +#endif + mov r4, r4, lsl #0x10 + mov r4, r4, lsr #0x10 + stmib sp, {r4, ip} + bl CreateScrollBoxSingle + ldr r1, _02305AFC ; =ov11_02324D84 + ldr r1, [r1] + strb r0, [r1, #0x4b] + b _02305AF4 +_023057F0: + ldr r0, [r4, #0x44] + add r1, r4, #0x54 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl CopyItemAtIdx + ldr r0, _02305AFC ; =ov11_02324D84 + mov r1, #0 + ldr r2, [r0] + ldrh r0, [r2, #0x54] + strh r0, [sp, #0xc] + ldrh r0, [r2, #0x56] + strh r0, [sp, #0xe] + ldrh r0, [r2, #0x58] + strh r0, [sp, #0x10] + strb r1, [sp, #0xc] + bl ov11_02306194 + ldr r0, _02305AFC ; =ov11_02324D84 + ldrsh r3, [sp, #0x10] + ldr r2, [r0] + add r1, sp, #0xc + str r3, [r2, #0x16c] + ldr r0, [r0] + ldr r2, _02305B04 ; =ov11_02322B8C + add r0, r0, #0x5a + bl MaybeGetColoredFormattedItemName + ldr r0, _02305AFC ; =ov11_02324D84 + ldr r2, _02305B04 ; =ov11_02322B8C + ldr r3, [r0] + add r1, r3, #0x5a + str r1, [r3, #0x194] + ldr r3, [r0] + ldrsh r1, [r3, #4] + str r1, [r3, #0x174] + ldr r1, [r0] + add r0, r1, #0xda + bl MaybeGetColoredFormattedItemName + ldr r0, _02305AFC ; =ov11_02324D84 + ldr r2, _02305B24 ; =0x000002DF + ldr r4, [r0] + mov r1, #0x18 + add r3, r4, #0xda + str r3, [r4, #0x198] + ldr r3, [r0] + ldrsb r0, [r3, #0x48] + add r3, r3, #0x15c + bl ShowStringIdInDialogueBox + ldr r0, _02305AFC ; =ov11_02324D84 + ldr r0, [r0] + ldr r0, [r0, #0x44] + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl RemoveItemNoHole + ldr r0, _02305AFC ; =ov11_02324D84 + ldr r0, [r0] + bl AddItemToBagNoHeld + cmp r0, #0 + ldrne r0, _02305AFC ; =ov11_02324D84 + movne r1, #7 + ldrne r0, [r0] + strne r1, [r0, #0x3c] + ldreq r0, _02305AFC ; =ov11_02324D84 + moveq r1, #0xa + ldreq r0, [r0] + streq r1, [r0, #0x3c] + b _02305AF4 +_023058F4: + mov r0, r4 + bl AddItemToBagNoHeld + cmp r0, #0 + beq _0230591C + ldr r0, _02305AFC ; =ov11_02324D84 + mov r1, #8 + ldr r0, [r0] + str r1, [r0, #0x38] + bl ov11_02305488 + b _02305AF4 +_0230591C: + ldr r0, _02305AFC ; =ov11_02324D84 + mov r1, #0xa + ldr r0, [r0] + str r1, [r0, #0x38] + bl ov11_02305488 + b _02305AF4 +_02305934: + add r1, r4, #0x5a + str r1, [r4, #0x19c] + ldr r0, [r0] + mov r1, #5 + str r1, [r0, #0x3c] + bl ov11_02306194 + ldr r0, _02305AFC ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x48] + bl ShowDialogueBox + ldr r0, _02305AFC ; =ov11_02324D84 + mov r3, #5 + ldr r1, [r0] + ldr r2, _02305B28 ; =0x000002D6 + str r3, [r1, #0x3c] + ldr r3, [r0] + mov r1, #8 + ldrsb r0, [r3, #0x48] + add r3, r3, #0x15c + bl ShowStringIdInDialogueBox + b _02305AF4 +_02305988: + mov r4, #3 + str r4, [sp, #0x18] + ldr r0, _02305B0C ; =ov11_02322B98 + ldr r1, _02305B10 ; =0x00300033 + ldr r3, _02305B14 ; =ov11_02322BC8 + add r2, sp, #0x18 + str r4, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _02305AFC ; =ov11_02324D84 + ldr r1, [r1] + strb r0, [r1, #0x4a] + b _02305AF4 +_023059B8: + mov r0, #9 + str r0, [r4, #0x38] + bl ov11_02305488 + b _02305AF4 +_023059C8: + mov r0, #0xa + str r0, [r4, #0x3c] + bl ov11_02306194 + ldr r0, _02305AFC ; =ov11_02324D84 + ldr r2, _02305B2C ; =0x000002DE + ldr r4, [r0] + mov r1, #0x18 + add r3, r4, #0x5a + str r3, [r4, #0x19c] + ldr r3, [r0] + ldrsb r0, [r3, #0x48] + add r3, r3, #0x15c + bl ShowStringIdInDialogueBox + b _02305AF4 +_02305A00: + ldr r0, _02305B30 ; =ov11_02322BB8 + mov r4, #3 + ldr r3, _02305B34 ; =ov11_02322BE0 + mov r1, #0x13 + mov r2, #0 + str r4, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _02305AFC ; =ov11_02324D84 + ldr r1, [r1] + strb r0, [r1, #0x4a] + b _02305AF4 +_02305A2C: + ldrsb r0, [r4, #0x48] + bl CloseDialogueBox + ldr r0, _02305AFC ; =ov11_02324D84 + mvn r2, #1 + ldr r1, [r0] + strb r2, [r1, #0x48] + ldr r4, [r0] + bl GetNbItemsInBag + ldr r2, _02305B38 ; =ov11_02304D94 + add r1, r4, #0xbc + str r2, [sp] + add r1, r1, #0x400 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + ldr r2, [r4, #0x44] + add r3, r4, #6 + bl CreateInventoryMenuOuter + ldr r1, _02305AFC ; =ov11_02324D84 + ldr r1, [r1] + strb r0, [r1, #0x49] + b _02305AF4 +_02305A84: + bl GetNbItemsInBag + ldr r2, _02305B38 ; =ov11_02304D94 + add r1, r4, #0xbc + str r2, [sp] + add r1, r1, #0x400 + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + ldr r2, [r4, #0x44] + add r3, r4, #6 + bl CreateInventoryMenuOuter + ldr r1, _02305AFC ; =ov11_02324D84 + ldr r1, [r1] + strb r0, [r1, #0x49] + b _02305AF4 +_02305AC0: + mov r1, #0xf + str r1, [r4, #0x3c] + ldr r0, [r0] + mov r1, #0x16 + str r1, [r0, #0x38] + bl ov11_02306194 + ldr r0, _02305AFC ; =ov11_02324D84 + ldr r2, _02305B3C ; =0x000002DA + ldr r3, [r0] + mov r1, #0x18 + ldrsb r0, [r3, #0x48] + add r3, r3, #0x15c + bl ShowStringIdInDialogueBox +_02305AF4: + add sp, sp, #0x198 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +#ifdef JAPAN +#define OV11_02305488_OFFSET 0x2CD4 +#else +#define OV11_02305488_OFFSET 0 +#endif +_02305AFC: .word ov11_02324D84 +_02305B00: .word 0x000002D7 + OV11_02305488_OFFSET +#ifdef JAPAN +_02307174: .word 0x00002FB1 +_02307178: .word 0x00002FAC +#endif +_02305B04: .word ov11_02322B8C +_02305B08: .word 0x000002D9 + OV11_02305488_OFFSET +#ifdef JAPAN +_02307184: .word 0x00002FC5 +#endif +_02305B0C: .word ov11_02322B98 +_02305B10: .word 0x00300033 +_02305B14: .word ov11_02322BC8 +_02305B18: .word ov11_02322BA8 +_02305B1C: .word 0x00001013 +#ifdef JAPAN +_02305B20: .word 0x00001D3C +_02305B24: .word 0x00002FB3 +_02305B28: .word 0x00002FCA +#else +_02305B20: .word 0x000008E4 +_02305B24: .word 0x000002DF +_02305B28: .word 0x000002D6 +#endif +_02305B2C: .word 0x000002DE + OV11_02305488_OFFSET +_02305B30: .word ov11_02322BB8 +_02305B34: .word ov11_02322BE0 +_02305B38: .word ov11_02304D94 +_02305B3C: .word 0x000002DA + OV11_02305488_OFFSET + arm_func_end ov11_02305488 + + arm_func_start ov11_02305B40 +ov11_02305B40: ; 0x02305B40 + stmdb sp!, {r4, lr} + ldr r1, _02305B94 ; =ov11_02324D84 + mov r4, #0 + ldr r1, [r1] + cmp r1, #0 + beq _02305B84 + cmp r0, #0 + ldr r4, [r1, #0x1ac] + ldrnesh r1, [r1, #0x58] + strneh r1, [r0] + ldr r0, _02305B94 ; =ov11_02324D84 + ldr r0, [r0] + bl MemFree + ldr r0, _02305B94 ; =ov11_02324D84 + mov r1, #0 + str r1, [r0] + b _02305B8C +_02305B84: + cmp r0, #0 + strneh r4, [r0] +_02305B8C: + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02305B94: .word ov11_02324D84 + arm_func_end ov11_02305B40 + + arm_func_start ov11_02305B98 +ov11_02305B98: ; 0x02305B98 + stmdb sp!, {r3, lr} + ldr r0, _02306148 ; =ov11_02324D84 + ldr r3, [r0] + ldr r1, [r3, #0x50] + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _02306140 +_02305BB4: ; jump table + b _02305BC4 ; case 0 + b _02305BD0 ; case 1 + b _02306120 ; case 2 + b _02306138 ; case 3 +_02305BC4: + mov r0, #1 + str r0, [r3, #0x50] + b _02306140 +_02305BD0: + ldr r1, [r3, #0x38] + cmp r1, #0x16 + addls pc, pc, r1, lsl #2 + b _02306090 +_02305BE0: ; jump table + b _023060C0 ; case 0 + b _02306090 ; case 1 + b _02306090 ; case 2 + b _02305C3C ; case 3 + b _02306090 ; case 4 + b _02305CC4 ; case 5 + b _02305FE0 ; case 6 + b _0230602C ; case 7 + b _02306038 ; case 8 + b _02306044 ; case 9 + b _02306044 ; case 10 + b _02306090 ; case 11 + b _023060C0 ; case 12 + b _02306090 ; case 13 + b _02306090 ; case 14 + b _02305D08 ; case 15 + b _02305D08 ; case 16 + b _02305ECC ; case 17 + b _02305F00 ; case 18 + b _02305F24 ; case 19 + b _02306090 ; case 20 + b _02305C80 ; case 21 + b _02306050 ; case 22 +_02305C3C: + ldrsb r0, [r3, #0x4a] + bl GetSimpleMenuResult__0202B870 + cmp r0, #1 + beq _02305C70 + cmp r0, #2 + beq _02305C60 + cmp r0, #3 + beq _02305C70 + b _023060C0 +_02305C60: + bl ov11_0230614C + mov r0, #0x17 + bl ov11_02304DC8 + b _023060C0 +_02305C70: + bl ov11_0230614C + mov r0, #4 + bl ov11_02304DC8 + b _023060C0 +_02305C80: + ldrsb r0, [r3, #0x4a] + bl GetSimpleMenuResult__0202B870 + cmp r0, #1 + beq _02305CB4 + cmp r0, #2 + beq _02305CA4 + cmp r0, #3 + beq _02305CB4 + b _023060C0 +_02305CA4: + bl ov11_0230614C + mov r0, #0xb + bl ov11_02304DC8 + b _023060C0 +_02305CB4: + bl ov11_0230614C + mov r0, #0x17 + bl ov11_02304DC8 + b _023060C0 +_02305CC4: + ldrsb r0, [r3, #0x4a] + bl GetSimpleMenuResult__0202B870 + cmp r0, #1 + beq _02305CF8 + cmp r0, #2 + beq _02305CE8 + cmp r0, #3 + beq _02305CF8 + b _023060C0 +_02305CE8: + bl ov11_0230614C + mov r0, #0xe + bl ov11_02304DC8 + b _023060C0 +_02305CF8: + bl ov11_0230614C + mov r0, #0 + bl ov11_02304DC8 + b _023060C0 +_02305D08: + add r1, sp, #0 + mov r0, #0 + bl GetPressedButtons + ldrh r0, [sp] + tst r0, #8 + beq _02305D9C + ldr r0, _02306148 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x49] + bl IsInventoryMenuState3 + cmp r0, #0 + beq _02305D9C + ldr r0, _02306148 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x49] + bl ov10_022BCDA8 + cmp r0, #0 + blt _02305D9C + ldr r1, _02306148 ; =ov11_02324D84 + ldr r1, [r1] + str r0, [r1, #0x44] + mov r0, #0 + bl PlaySeVolumeWrapper + ldr r0, _02306148 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x49] + bl ov10_022BCD10 + ldr r0, _02306148 ; =ov11_02324D84 + mov r3, #2 + ldr r1, [r0] + mov r2, #6 + str r3, [r1, #0x40] + ldr r1, [r0] + mov r0, #0x12 + str r2, [r1, #0x3c] + bl ov11_02304DC8 + b _023060C0 +_02305D9C: + ldr r0, _02306148 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x49] + bl IsInventoryMenuState3 + cmp r0, #0 + beq _02305E44 + ldr r0, _02306148 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x49] + bl PopInventoryMenuField0x1A3 + ldrh r1, [sp] + tst r1, #4 + cmpeq r0, #0 + beq _02305E44 + cmp r0, #0 + bne _02305DE4 + mov r0, #5 + bl PlaySeVolumeWrapper +_02305DE4: + bl SortItemsInBag + bl GetNbItemsInBag + ldr r2, _02306148 ; =ov11_02324D84 + mov r1, r0 + ldr r0, [r2] + ldrsb r0, [r0, #0x49] + bl ov10_022BCC60 + ldr r0, _02306148 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x49] + bl ov10_022BCCB0 + bl IsBagFull + cmp r0, #0 + bne _02305E44 + ldr r0, _02306148 ; =ov11_02324D84 + mov r3, #2 + ldr r1, [r0] + mov r2, #0 + str r3, [r1, #0x40] + ldr r1, [r0] + mov r0, #0x11 + str r2, [r1, #0x3c] + bl ov11_02304DC8 + b _023060C0 +_02305E44: + ldr r0, _02306148 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x49] + bl IsInventoryMenuActive + cmp r0, #0 + bne _023060C0 + ldr r0, _02306148 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x49] + bl CheckInventoryMenuField0x1A0 + cmp r0, #0 + bne _023060C0 + ldr r0, _02306148 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x49] + bl ov10_022BCDBC + mvn r1, #0 + cmp r0, r1 + bne _02305EB4 + ldr r1, _02306148 ; =ov11_02324D84 + mov r3, #2 + ldr r2, [r1] + mov r0, #0x11 + str r3, [r2, #0x40] + ldr r1, [r1] + str r3, [r1, #0x3c] + bl ov11_02304DC8 + b _023060C0 +_02305EB4: + ldr r1, _02306148 ; =ov11_02324D84 + ldr r1, [r1] + str r0, [r1, #0x44] + mov r0, #0x13 + bl ov11_02304DC8 + b _023060C0 +_02305ECC: + ldr r2, [r3, #0x40] + sub r1, r2, #1 + str r1, [r3, #0x40] + cmp r2, #0 + bne _023060C0 + ldr r0, [r0] + ldrsb r0, [r0, #0x49] + bl CloseInventoryMenu + ldr r0, _02306148 ; =ov11_02324D84 + ldr r0, [r0] + ldr r0, [r0, #0x3c] + bl ov11_02304DC8 + b _023060C0 +_02305F00: + ldr r2, [r3, #0x40] + sub r1, r2, #1 + str r1, [r3, #0x40] + cmp r2, #0 + bne _023060C0 + ldr r0, [r0] + ldr r0, [r0, #0x3c] + bl ov11_02304DC8 + b _023060C0 +_02305F24: + ldrsb r0, [r3, #0x4a] + bl GetSimpleMenuResult__0202B870 + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _023060C0 +_02305F38: ; jump table + b _023060C0 ; case 0 + b _02305FBC ; case 1 + b _023060C0 ; case 2 + b _023060C0 ; case 3 + b _02305F54 ; case 4 + b _02305F80 ; case 5 + b _02305FBC ; case 6 +_02305F54: + bl ov11_0230614C + ldr r0, _02306148 ; =ov11_02324D84 + mov r3, #2 + ldr r1, [r0] + mov r2, #0x14 + str r3, [r1, #0x40] + ldr r1, [r0] + mov r0, #0x11 + str r2, [r1, #0x3c] + bl ov11_02304DC8 + b _023060C0 +_02305F80: + bl ov11_0230614C + ldr r0, _02306148 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x49] + bl SetInventoryMenuState6 + ldr r0, _02306148 ; =ov11_02324D84 + mov r3, #2 + ldr r1, [r0] + mov r2, #6 + str r3, [r1, #0x40] + ldr r1, [r0] + mov r0, #0x12 + str r2, [r1, #0x3c] + bl ov11_02304DC8 + b _023060C0 +_02305FBC: + bl ov11_0230614C + ldr r0, _02306148 ; =ov11_02324D84 + mov r2, #0xf + ldr r1, [r0] + str r2, [r1, #0x38] + ldr r0, [r0] + ldrsb r0, [r0, #0x49] + bl ov10_022BCC7C + b _023060C0 +_02305FE0: + ldrsb r0, [r3, #0x4b] + bl IsScrollBoxActive + cmp r0, #0 + bne _023060C0 + ldr r0, _02306148 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x4b] + bl CloseScrollBox + ldr r0, _02306148 ; =ov11_02324D84 + mvn r3, #1 + ldr r1, [r0] + mov r2, #0xf + strb r3, [r1, #0x4b] + ldr r1, [r0] + str r2, [r1, #0x38] + ldr r0, [r0] + ldrsb r0, [r0, #0x49] + bl SetInventoryMenuState0 + b _023060C0 +_0230602C: + bl ov11_022DC504 + mov r2, #3 + b _023060C4 +_02306038: + bl ov11_022DC504 + mov r2, #2 + b _023060C4 +_02306044: + bl ov11_022DC504 + mov r2, #5 + b _023060C4 +_02306050: + ldrsb r0, [r3, #0x48] + bl IsDialogueBoxActive + cmp r0, #0 + bne _023060C0 + ldr r0, _02306148 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x48] + bl ShowDialogueBox + ldr r0, _02306148 ; =ov11_02324D84 + mov r2, #0x18 + ldr r1, [r0] + str r2, [r1, #0x38] + ldr r0, [r0] + ldrsb r0, [r0, #0x48] + bl sub_0202F2C4 + b _023060C0 +_02306090: + ldrsb r0, [r3, #0x48] + bl IsDialogueBoxActive + cmp r0, #0 + bne _023060C0 + ldr r0, _02306148 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x48] + bl ShowDialogueBox + ldr r0, _02306148 ; =ov11_02324D84 + ldr r0, [r0] + ldr r0, [r0, #0x3c] + bl ov11_02304DC8 +_023060C0: + mov r2, #1 +_023060C4: + ldr r0, _02306148 ; =ov11_02324D84 + ldr r1, [r0] + str r2, [r1, #0x1ac] + ldr r2, [r0] + ldr r1, [r2, #0x1ac] + cmp r1, #1 + beq _02306140 + cmp r1, #2 + moveq r1, #3 + streq r1, [r2, #0x1ac] + ldreq r0, [r0] + streq r1, [r0, #0x50] + beq _02306140 + mov r1, #2 + str r1, [r2, #0x50] + ldr r0, [r0] + ldrsb r0, [r0, #0x48] + bl sub_0202836C + ldr r0, _02306148 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x48] + bl sub_0202F2C4 + b _02306140 +_02306120: + mov r1, #3 + str r1, [r3, #0x50] + ldr r0, [r0] + ldrsb r0, [r0, #0x48] + bl CloseDialogueBox + b _02306140 +_02306138: + mov r0, #4 + ldmia sp!, {r3, pc} +_02306140: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_02306148: .word ov11_02324D84 + arm_func_end ov11_02305B98 + + arm_func_start ov11_0230614C +ov11_0230614C: ; 0x0230614C + stmdb sp!, {r3, lr} + ldr r0, _02306190 ; =ov11_02324D84 + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #0x4a] + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl sub_0202836C + ldr r0, _02306190 ; =ov11_02324D84 + ldr r0, [r0] + ldrsb r0, [r0, #0x4a] + bl CloseSimpleMenu + ldr r0, _02306190 ; =ov11_02324D84 + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x4a] + ldmia sp!, {r3, pc} + .align 2, 0 +_02306190: .word ov11_02324D84 + arm_func_end ov11_0230614C + + arm_func_start ov11_02306194 +ov11_02306194: ; 0x02306194 + stmdb sp!, {r3, lr} + ldr r1, _023061C8 ; =ov11_02324D84 + mvn r0, #1 + ldr r1, [r1] + ldrsb r1, [r1, #0x48] + cmp r1, r0 + ldmneia sp!, {r3, pc} + mov r0, #0 + bl CreateDialogueBox + ldr r1, _023061C8 ; =ov11_02324D84 + ldr r1, [r1] + strb r0, [r1, #0x48] + ldmia sp!, {r3, pc} + .align 2, 0 +_023061C8: .word ov11_02324D84 + arm_func_end ov11_02306194 + + arm_func_start ov11_023061CC +ov11_023061CC: ; 0x023061CC + ldr ip, _023061E0 ; =ov11_023061FC +#ifdef JAPAN + mov r1, #0 + mov r2, #1 +#else + mov r2, #1 + mov r3, r2 + mov r1, #3 +#endif + bx ip + .align 2, 0 +_023061E0: .word ov11_023061FC + arm_func_end ov11_023061CC + + arm_func_start ov11_023061E4 +ov11_023061E4: ; 0x023061E4 + ldr ip, _023061F8 ; =ov11_023061FC + mov r2, r1 + mov r1, #3 +#ifndef JAPAN + mov r3, #0 +#endif + bx ip + .align 2, 0 +_023061F8: .word ov11_023061FC + arm_func_end ov11_023061E4 + + arm_func_start ov11_023061FC +ov11_023061FC: ; 0x023061FC +#ifdef JAPAN +#define OV11_023061FC_OFFSET -4 +#else +#define OV11_023061FC_OFFSET 0 +#endif +#ifdef JAPAN + stmdb sp!, {r4, r5, r6, lr} + ldr r3, _023062B8 ; =ov11_02324D88 + mov r6, r0 + ldr r0, [r3] + mov r5, r1 + mov r4, r2 +#else + stmdb sp!, {r3, r4, r5, r6, r7, lr} + ldr r4, _023062B8 ; =ov11_02324D88 + mov r7, r0 + ldr r0, [r4] + mov r6, r1 + mov r5, r2 + mov r4, r3 +#endif + cmp r0, #0 + bne _02306234 + mov r0, #0x124 + OV11_023061FC_OFFSET + mov r1, #8 + bl MemAlloc + ldr r1, _023062B8 ; =ov11_02324D88 + str r0, [r1] +_02306234: + ldr r0, _023062B8 ; =ov11_02324D88 + mov r2, #0 + ldr r1, [r0] +#ifdef JAPAN + str r5, [r1, #0x84] + ldr r1, [r0] + strb r4, [r1, #0x20] + ldr r1, [r0] + str r6, [r1] +#else + str r4, [r1, #0x24] + ldr r1, [r0] + str r6, [r1, #0x88] + ldr r1, [r0] + strb r5, [r1, #0x20] + ldr r1, [r0] + str r7, [r1] +#endif + ldr r1, [r0] + str r2, [r1, #8] + ldr r0, [r0] + add r0, r0, #0x30 + OV11_023061FC_OFFSET + bl InitPreprocessorArgs + ldr r1, _023062B8 ; =ov11_02324D88 + mov r0, #0 + ldr r2, [r1] + sub r3, r0, #2 + str r0, [r2, #0x7c + OV11_023061FC_OFFSET] + ldr r2, [r1] + str r0, [r2, #0x30 + OV11_023061FC_OFFSET] + ldr r2, [r1] + str r0, [r2, #0x28 + OV11_023061FC_OFFSET] + ldr r2, [r1] + strb r3, [r2, #0x21] + ldr r2, [r1] + strb r3, [r2, #0x22] + ldr r1, [r1] + str r0, [r1, #0x80 + OV11_023061FC_OFFSET] + bl ov11_023062BC + mov r0, #1 +#ifdef JAPAN + ldmia sp!, {r4, r5, r6, pc} +#else + ldmia sp!, {r3, r4, r5, r6, r7, pc} +#endif + .align 2, 0 +_023062B8: .word ov11_02324D88 + arm_func_end ov11_023061FC + + arm_func_start ov11_023062BC +ov11_023062BC: ; 0x023062BC +#ifdef JAPAN +#define OV11_023062BC_OFFSET -4 +#else +#define OV11_023062BC_OFFSET 0 +#endif + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x7c + ldr r1, _02306768 ; =ov11_02324D88 + ldr r2, [r1] + str r0, [r2, #0x10] + ldr r2, [r1] + ldr r0, [r2, #0x10] + cmp r0, #0x17 + addls pc, pc, r0, lsl #2 + b _02306760 +_023062E4: ; jump table + b _02306344 ; case 0 + b _02306388 ; case 1 + b _023063BC ; case 2 + b _02306404 ; case 3 + b _02306430 ; case 4 + b _02306474 ; case 5 + b _023064B8 ; case 6 + b _02306760 ; case 7 + b _02306760 ; case 8 + b _02306760 ; case 9 + b _02306760 ; case 10 + b _02306524 ; case 11 + b _023065CC ; case 12 + b _02306760 ; case 13 + b _02306600 ; case 14 + b _023066F4 ; case 15 + b _02306760 ; case 16 + b _0230671C ; case 17 + b _02306760 ; case 18 + b _02306610 ; case 19 + b _0230663C ; case 20 + b _0230666C ; case 21 + b _02306760 ; case 22 + b _0230672C ; case 23 +_02306344: + mov r0, #0 + bl GetFirstEmptyMemberIdx + mvn r1, #0 + cmp r0, r1 + bne _02306370 + ldr r0, _02306768 ; =ov11_02324D88 + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #0x10] + bl ov11_02306794 + b _02306388 +_02306370: + ldr r0, _02306768 ; =ov11_02324D88 + mov r1, #0xc + ldr r0, [r0] + str r1, [r0, #0x10] + bl ov11_02306794 + b _02306760 +_02306388: + ldr r0, _02306768 ; =ov11_02324D88 + mov r1, #3 + ldr r0, [r0] + str r1, [r0, #0x14] + bl ov11_0230720C + ldr r0, _02306768 ; =ov11_02324D88 +#ifdef JAPAN + ldr r2, _02307D74 ; =0x00002FB4 + ldr r3, [r0] + mov r1, #8 +#else + mov r1, #8 + ldr r3, [r0] + mov r2, #0x2e0 +#endif + ldrsb r0, [r3, #0x21] + add r3, r3, #0x30 + OV11_023062BC_OFFSET + bl ShowStringIdInDialogueBox + b _02306760 +_023063BC: + mov r0, #3 + str r0, [r2, #0x14] + bl ov11_0230720C + ldr r0, _02306768 ; =ov11_02324D88 + ldr r0, [r0] + ldrsb r0, [r0, #0x21] + bl ShowDialogueBox + ldr r0, _02306768 ; =ov11_02324D88 + mov r3, #3 + ldr r1, [r0] +#ifdef JAPAN + rsb r2, r3, #0x2fc0 +#else + rsb r2, r3, #0x2ec +#endif + str r3, [r1, #0x14] + ldr r3, [r0] + mov r1, #8 + ldrsb r0, [r3, #0x21] + add r3, r3, #0x30 + OV11_023062BC_OFFSET + bl ShowStringIdInDialogueBox + b _02306760 +_02306404: + ldr r0, _0230676C ; =ov11_02322C10 + mov r4, #3 + ldr r1, _02306770 ; =0x00300011 + ldr r3, _02306774 ; =ov11_02322C38 + mov r2, #0 + str r4, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _02306768 ; =ov11_02324D88 + ldr r1, [r1] + strb r0, [r1, #0x22] + b _02306760 +_02306430: + bl ov11_0230720C + ldr r0, _02306768 ; =ov11_02324D88 + ldr r0, [r0] + ldrsb r0, [r0, #0x21] + bl ShowDialogueBox + ldr r0, _02306768 ; =ov11_02324D88 + ldr r2, _02306778 ; =0x000002EA + ldr r3, [r0] + mov r1, #8 + ldrsb r0, [r3, #0x21] + add r3, r3, #0x30 + OV11_023062BC_OFFSET + bl ShowStringIdInDialogueBox + ldr r0, _02306768 ; =ov11_02324D88 + mov r1, #5 + ldr r0, [r0] + str r1, [r0, #0x14] + b _02306760 +_02306474: + mov r0, #3 + str r0, [r2, #0x8c + OV11_023062BC_OFFSET] + mov r0, #2 + str r0, [sp] + ldr r2, [r1] + ldr r0, _0230676C ; =ov11_02322C10 + ldr r1, _0230677C ; =0x00300031 + ldr r3, _02306780 ; =ov11_02322C20 + add r2, r2, #0x8c + OV11_023062BC_OFFSET + bl CreateSimpleMenuFromStringIds + ldr r1, _02306768 ; =ov11_02324D88 + mov r2, #6 + ldr r3, [r1] + strb r0, [r3, #0x22] + ldr r0, [r1] + str r2, [r0, #0x14] + b _02306760 +_023064B8: + ldrsb r0, [r2, #0x22] + bl IsSimpleMenuActive + cmp r0, #0 + bne _02306760 + ldr r0, _02306768 ; =ov11_02324D88 + ldr r0, [r0] + ldrsb r0, [r0, #0x22] + bl GetSimpleMenuResult__0202B870 + ldr r1, _02306768 ; =ov11_02324D88 + mov r4, r0 + ldr r0, [r1] + ldrsb r0, [r0, #0x22] + bl CloseSimpleMenu + cmp r4, #2 + beq _023064FC + cmp r4, #3 + b _02306510 +_023064FC: + ldr r0, _02306768 ; =ov11_02324D88 + mov r1, #0xb + ldr r0, [r0] + str r1, [r0, #0x14] + b _02306760 +_02306510: + ldr r0, _02306768 ; =ov11_02324D88 + mov r1, #2 + ldr r0, [r0] + str r1, [r0, #0x14] + b _02306760 +_02306524: + ldrb r0, [r2, #0x20] + cmp r0, #0 + beq _02306538 + mov r0, #3 + bl sub_02017C50 +_02306538: + ldr r0, _02306768 ; =ov11_02324D88 + mov r3, #0xa + ldr r2, [r0] + mov r1, #7 + str r3, [r2, #0x2c + OV11_023062BC_OFFSET] + ldr r0, [r0] + str r1, [r0, #0x14] + bl ov11_0230720C + ldr r0, _02306768 ; =ov11_02324D88 +#ifdef JAPAN + ldr r2, _02307D90_JP ; =0x00002FB8 + ldr ip, [r0] + mov r1, #0x218 +#else + mov r1, #0x218 + ldr ip, [r0] + mov r2, #0x2e4 +#endif + ldr r3, [ip, #4] + ldrsh r3, [r3, #4] + str r3, [ip, #0x30 + OV11_023062BC_OFFSET] + ldr r3, [r0] + ldrsb r0, [r3, #0x21] + add r3, r3, #0x30 + OV11_023062BC_OFFSET + bl ShowStringIdInDialogueBox + ldr r0, _02306768 ; =ov11_02324D88 + ldr r0, [r0] + ldrsh r0, [r0, #0xc] + bl sub_02055B20 +#ifndef JAPAN + bl sub_0203AF0C +#endif + bl sub_02057180 + ldr r0, _02306768 ; =ov11_02324D88 + ldr r1, [r0] + ldr r0, [r1] + cmp r0, #0 + moveq r0, #0 + streq r0, [r1, #8] + beq _02306760 + bl sub_02055D4C + ldr r1, _02306768 ; =ov11_02324D88 + ldr r1, [r1] + str r0, [r1, #8] + b _02306760 +_023065CC: + ldr r0, [r2] + cmp r0, #0 + beq _023065E8 + bl sub_02055D4C + ldr r1, _02306768 ; =ov11_02324D88 + ldr r1, [r1] + str r0, [r1, #8] +_023065E8: + ldr r0, _02306768 ; =ov11_02324D88 + mov r1, #9 + ldr r0, [r0] + str r1, [r0, #0x10] + bl ov11_02306794 + b _02306760 +_02306600: + mov r0, #0xa + str r0, [r2, #0x10] + bl ov11_02306794 + b _02306760 +_02306610: + ldr r0, _02306784 ; =ov11_02322C00 + mov ip, #4 + ldr r3, _02306788 ; =ov11_02322C50 + mov r1, #0x13 + mov r2, #0 + str ip, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _02306768 ; =ov11_02324D88 + ldr r1, [r1] + strb r0, [r1, #0x22] + b _02306760 +_0230663C: + ldrsh r1, [r2, #0xc] + add r0, sp, #4 + bl sub_0205B028 + ldr r1, _02306768 ; =ov11_02324D88 + add r0, sp, #4 + ldr r1, [r1] + ldr r1, [r1, #0x88 + OV11_023062BC_OFFSET] + bl sub_0203F150 + ldr r1, _02306768 ; =ov11_02324D88 + ldr r1, [r1] + strb r0, [r1, #0x84 + OV11_023062BC_OFFSET] + b _02306760 +_0230666C: +#ifdef JAPAN + ldr r0, _0230678C ; =TEAM_MEMBER_TABLE_PTR + ldrsh r2, [r2, #0xc] + ldr r1, [r0] + mov r0, #0x44 +#else + ldr r0, [r2, #0x24] + cmp r0, #0 + bne _023066C0 + bl sub_0205633C + cmp r0, #0 + beq _023066C0 + ldr r0, _02306768 ; =ov11_02324D88 + ldr r0, [r0] + ldrsh r0, [r0, #0xc] + bl GetActiveRosterIndex + mvn r1, #0 + cmp r0, r1 + beq _023066C0 + bl GetActiveTeamMember + mov r1, r0 + ldrsh r0, [r1, #0xc] + ldrsh r2, [r1, #6] + add r1, r1, #0x4c + mov r3, #0 + bl PrintIqSkillsMenu + b _02306760 +_023066C0: + ldr r1, _02306768 ; =ov11_02324D88 + ldr r0, _0230678C ; =TEAM_MEMBER_TABLE_PTR + ldr r2, [r1] + ldr r1, [r0] + ldrsh r2, [r2, #0xc] + mov r0, #0x44 + mov r3, #0 +#endif + smlabb r1, r2, r0, r1 + ldrsh r0, [r1, #4] + ldrsh r2, [r1, #8] + add r1, r1, #0x14 +#ifdef JAPAN + mov r3, #0 +#endif + bl PrintIqSkillsMenu + b _02306760 +_023066F4: + ldrsb r0, [r2, #0x21] + bl CloseDialogueBox + ldr r0, _02306768 ; =ov11_02324D88 + mvn r3, #1 + ldr r2, [r0] + mov r0, #4 + mov r1, #0 + strb r3, [r2, #0x21] + bl sub_02039C2C + b _02306760 +_0230671C: + mov r0, #4 + mov r1, #0 + bl sub_02039C2C + b _02306760 +_0230672C: + mov r0, #0xf + str r0, [r2, #0x14] + ldr r0, [r1] + mov r1, #0x16 + str r1, [r0, #0x10] + bl ov11_0230720C + ldr r0, _02306768 ; =ov11_02324D88 + ldr r2, _02306790 ; =0x000002E3 + ldr r3, [r0] + mov r1, #0x18 + ldrsb r0, [r3, #0x21] + add r3, r3, #0x30 + OV11_023062BC_OFFSET + bl ShowStringIdInDialogueBox +_02306760: + add sp, sp, #0x7c + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_02306768: .word ov11_02324D88 +#ifdef JAPAN +_02307D74: .word 0x00002FB4 +#endif +_0230676C: .word ov11_02322C10 +_02306770: .word 0x00300011 +_02306774: .word ov11_02322C38 +#ifdef JAPAN +_02306778: .word 0x00002FBE +#else +_02306778: .word 0x000002EA +#endif +_0230677C: .word 0x00300031 +_02306780: .word ov11_02322C20 +#ifdef JAPAN +_02307D90_JP: .word 0x00002FB8 +#endif +_02306784: .word ov11_02322C00 +_02306788: .word ov11_02322C50 +_0230678C: .word TEAM_MEMBER_TABLE_PTR +#ifdef JAPAN +_02306790: .word 0x00002FB7 +#else +_02306790: .word 0x000002E3 +#endif + arm_func_end ov11_023062BC + + arm_func_start ov11_02306794 +ov11_02306794: ; 0x02306794 +#ifdef JAPAN +#define OV11_02306794_OFFSET -4 +#else +#define OV11_02306794_OFFSET 0 +#endif + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x7c + ldr r0, _02306C38 ; =ov11_02324D88 + ldr r2, [r0] + ldr r1, [r2, #0x10] + cmp r1, #0x17 + addls pc, pc, r1, lsl #2 + b _02306C30 +_023067B4: ; jump table + b _02306814 ; case 0 + b _02306858 ; case 1 + b _0230688C ; case 2 + b _023068D4 ; case 3 + b _02306900 ; case 4 + b _02306944 ; case 5 + b _02306988 ; case 6 + b _02306C30 ; case 7 + b _02306C30 ; case 8 + b _02306C30 ; case 9 + b _02306C30 ; case 10 + b _023069F4 ; case 11 + b _02306A9C ; case 12 + b _02306C30 ; case 13 + b _02306AD0 ; case 14 + b _02306BC4 ; case 15 + b _02306C30 ; case 16 + b _02306BEC ; case 17 + b _02306C30 ; case 18 + b _02306AE0 ; case 19 + b _02306B0C ; case 20 + b _02306B3C ; case 21 + b _02306C30 ; case 22 + b _02306BFC ; case 23 +_02306814: + mov r0, #0 + bl GetFirstEmptyMemberIdx + mvn r1, #0 + cmp r0, r1 + bne _02306840 + ldr r0, _02306C38 ; =ov11_02324D88 + mov r1, #1 + ldr r0, [r0] + str r1, [r0, #0x10] + bl ov11_02306794 + b _02306858 +_02306840: + ldr r0, _02306C38 ; =ov11_02324D88 + mov r1, #0xc + ldr r0, [r0] + str r1, [r0, #0x10] + bl ov11_02306794 + b _02306C30 +_02306858: + ldr r0, _02306C38 ; =ov11_02324D88 + mov r1, #3 + ldr r0, [r0] + str r1, [r0, #0x14] + bl ov11_0230720C + ldr r0, _02306C38 ; =ov11_02324D88 +#ifdef JAPAN + ldr r2, _023081EC ; =0x00002FB4 + ldr r3, [r0] + mov r1, #8 +#else + mov r1, #8 + ldr r3, [r0] + mov r2, #0x2e0 +#endif + ldrsb r0, [r3, #0x21] + add r3, r3, #0x30 + OV11_02306794_OFFSET + bl ShowStringIdInDialogueBox + b _02306C30 +_0230688C: + mov r0, #3 + str r0, [r2, #0x14] + bl ov11_0230720C + ldr r0, _02306C38 ; =ov11_02324D88 + ldr r0, [r0] + ldrsb r0, [r0, #0x21] + bl ShowDialogueBox + ldr r0, _02306C38 ; =ov11_02324D88 + mov r3, #3 + ldr r1, [r0] +#ifdef JAPAN + rsb r2, r3, #0x2fc0 +#else + rsb r2, r3, #0x2ec +#endif + str r3, [r1, #0x14] + ldr r3, [r0] + mov r1, #8 + ldrsb r0, [r3, #0x21] + add r3, r3, #0x30 + OV11_02306794_OFFSET + bl ShowStringIdInDialogueBox + b _02306C30 +_023068D4: + ldr r0, _02306C3C ; =ov11_02322C10 + mov r4, #3 + ldr r1, _02306C40 ; =0x00300011 + ldr r3, _02306C44 ; =ov11_02322C38 + mov r2, #0 + str r4, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _02306C38 ; =ov11_02324D88 + ldr r1, [r1] + strb r0, [r1, #0x22] + b _02306C30 +_02306900: + bl ov11_0230720C + ldr r0, _02306C38 ; =ov11_02324D88 + ldr r0, [r0] + ldrsb r0, [r0, #0x21] + bl ShowDialogueBox + ldr r0, _02306C38 ; =ov11_02324D88 + ldr r2, _02306C48 ; =0x000002EA + ldr r3, [r0] + mov r1, #8 + ldrsb r0, [r3, #0x21] + add r3, r3, #0x30 + OV11_02306794_OFFSET + bl ShowStringIdInDialogueBox + ldr r0, _02306C38 ; =ov11_02324D88 + mov r1, #5 + ldr r0, [r0] + str r1, [r0, #0x14] + b _02306C30 +_02306944: + mov r1, #3 + str r1, [r2, #0x8c + OV11_02306794_OFFSET] + mov r1, #2 + str r1, [sp] + ldr r2, [r0] + ldr r0, _02306C3C ; =ov11_02322C10 + ldr r1, _02306C4C ; =0x00300031 + ldr r3, _02306C50 ; =ov11_02322C20 + add r2, r2, #0x8c + OV11_02306794_OFFSET + bl CreateSimpleMenuFromStringIds + ldr r1, _02306C38 ; =ov11_02324D88 + mov r2, #6 + ldr r3, [r1] + strb r0, [r3, #0x22] + ldr r0, [r1] + str r2, [r0, #0x14] + b _02306C30 +_02306988: + ldrsb r0, [r2, #0x22] + bl IsSimpleMenuActive + cmp r0, #0 + bne _02306C30 + ldr r0, _02306C38 ; =ov11_02324D88 + ldr r0, [r0] + ldrsb r0, [r0, #0x22] + bl GetSimpleMenuResult__0202B870 + ldr r1, _02306C38 ; =ov11_02324D88 + mov r4, r0 + ldr r0, [r1] + ldrsb r0, [r0, #0x22] + bl CloseSimpleMenu + cmp r4, #2 + beq _023069CC + cmp r4, #3 + b _023069E0 +_023069CC: + ldr r0, _02306C38 ; =ov11_02324D88 + mov r1, #0xb + ldr r0, [r0] + str r1, [r0, #0x14] + b _02306C30 +_023069E0: + ldr r0, _02306C38 ; =ov11_02324D88 + mov r1, #2 + ldr r0, [r0] + str r1, [r0, #0x14] + b _02306C30 +_023069F4: + ldrb r0, [r2, #0x20] + cmp r0, #0 + beq _02306A08 + mov r0, #3 + bl sub_02017C50 +_02306A08: + ldr r0, _02306C38 ; =ov11_02324D88 + mov r3, #0xa + ldr r2, [r0] + mov r1, #7 + str r3, [r2, #0x2c + OV11_02306794_OFFSET] + ldr r0, [r0] + str r1, [r0, #0x14] + bl ov11_0230720C + ldr r0, _02306C38 ; =ov11_02324D88 +#ifdef JAPAN + ldr r2, _02308208 ; =0x00002FB8 + ldr ip, [r0] + mov r1, #0x218 +#else + mov r1, #0x218 + ldr ip, [r0] + mov r2, #0x2e4 +#endif + ldr r3, [ip, #4] + ldrsh r3, [r3, #4] + str r3, [ip, #0x30 + OV11_02306794_OFFSET] + ldr r3, [r0] + ldrsb r0, [r3, #0x21] + add r3, r3, #0x30 + OV11_02306794_OFFSET + bl ShowStringIdInDialogueBox + ldr r0, _02306C38 ; =ov11_02324D88 + ldr r0, [r0] + ldrsh r0, [r0, #0xc] + bl sub_02055B20 +#ifndef JAPAN + bl sub_0203AF0C +#endif + bl sub_02057180 + ldr r0, _02306C38 ; =ov11_02324D88 + ldr r1, [r0] + ldr r0, [r1] + cmp r0, #0 + moveq r0, #0 + streq r0, [r1, #8] + beq _02306C30 + bl sub_02055D4C + ldr r1, _02306C38 ; =ov11_02324D88 + ldr r1, [r1] + str r0, [r1, #8] + b _02306C30 +_02306A9C: + ldr r0, [r2] + cmp r0, #0 + beq _02306AB8 + bl sub_02055D4C + ldr r1, _02306C38 ; =ov11_02324D88 + ldr r1, [r1] + str r0, [r1, #8] +_02306AB8: + ldr r0, _02306C38 ; =ov11_02324D88 + mov r1, #9 + ldr r0, [r0] + str r1, [r0, #0x10] + bl ov11_02306794 + b _02306C30 +_02306AD0: + mov r0, #0xa + str r0, [r2, #0x10] + bl ov11_02306794 + b _02306C30 +_02306AE0: + ldr r0, _02306C54 ; =ov11_02322C00 + mov ip, #4 + ldr r3, _02306C58 ; =ov11_02322C50 + mov r1, #0x13 + mov r2, #0 + str ip, [sp] + bl CreateSimpleMenuFromStringIds + ldr r1, _02306C38 ; =ov11_02324D88 + ldr r1, [r1] + strb r0, [r1, #0x22] + b _02306C30 +_02306B0C: + ldrsh r1, [r2, #0xc] + add r0, sp, #4 + bl sub_0205B028 + ldr r1, _02306C38 ; =ov11_02324D88 + add r0, sp, #4 + ldr r1, [r1] + ldr r1, [r1, #0x88 + OV11_02306794_OFFSET] + bl sub_0203F150 + ldr r1, _02306C38 ; =ov11_02324D88 + ldr r1, [r1] + strb r0, [r1, #0x84 + OV11_02306794_OFFSET] + b _02306C30 +_02306B3C: +#ifdef JAPAN + ldr r0, _02306C5C ; =TEAM_MEMBER_TABLE_PTR + ldrsh r2, [r2, #0xc] + ldr r1, [r0] + mov r0, #0x44 +#else + ldr r0, [r2, #0x24] + cmp r0, #0 + bne _02306B90 + bl sub_0205633C + cmp r0, #0 + beq _02306B90 + ldr r0, _02306C38 ; =ov11_02324D88 + ldr r0, [r0] + ldrsh r0, [r0, #0xc] + bl GetActiveRosterIndex + mvn r1, #0 + cmp r0, r1 + beq _02306B90 + bl GetActiveTeamMember + mov r1, r0 + ldrsh r0, [r1, #0xc] + ldrsh r2, [r1, #6] + add r1, r1, #0x4c + mov r3, #0 + bl PrintIqSkillsMenu + b _02306C30 +_02306B90: + ldr r1, _02306C38 ; =ov11_02324D88 + ldr r0, _02306C5C ; =TEAM_MEMBER_TABLE_PTR + ldr r2, [r1] + ldr r1, [r0] + ldrsh r2, [r2, #0xc] + mov r0, #0x44 + mov r3, #0 +#endif + smlabb r1, r2, r0, r1 + ldrsh r0, [r1, #4] + ldrsh r2, [r1, #8] + add r1, r1, #0x14 +#ifdef JAPAN + mov r3, #0 +#endif + bl PrintIqSkillsMenu + b _02306C30 +_02306BC4: + ldrsb r0, [r2, #0x21] + bl CloseDialogueBox + ldr r0, _02306C38 ; =ov11_02324D88 + mvn r3, #1 + ldr r2, [r0] + mov r0, #4 + mov r1, #0 + strb r3, [r2, #0x21] + bl sub_02039C2C + b _02306C30 +_02306BEC: + mov r0, #4 + mov r1, #0 + bl sub_02039C2C + b _02306C30 +_02306BFC: + mov r1, #0xf + str r1, [r2, #0x14] + ldr r0, [r0] + mov r1, #0x16 + str r1, [r0, #0x10] + bl ov11_0230720C + ldr r0, _02306C38 ; =ov11_02324D88 + ldr r2, _02306C60 ; =0x000002E3 + ldr r3, [r0] + mov r1, #0x18 + ldrsb r0, [r3, #0x21] + add r3, r3, #0x30 + OV11_02306794_OFFSET + bl ShowStringIdInDialogueBox +_02306C30: + add sp, sp, #0x7c + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_02306C38: .word ov11_02324D88 +#ifdef JAPAN +_023081EC: .word 0x00002FB4 +#endif +_02306C3C: .word ov11_02322C10 +_02306C40: .word 0x00300011 +_02306C44: .word ov11_02322C38 +#ifdef JAPAN +_02306C48: .word 0x00002FBE +#else +_02306C48: .word 0x000002EA +#endif +_02306C4C: .word 0x00300031 +_02306C50: .word ov11_02322C20 +#ifdef JAPAN +_02308208: .word 0x00002FB8 +#endif +_02306C54: .word ov11_02322C00 +_02306C58: .word ov11_02322C50 +_02306C5C: .word TEAM_MEMBER_TABLE_PTR +#ifdef JAPAN +_02306C60: .word 0x00002FB7 +#else +_02306C60: .word 0x000002E3 +#endif + arm_func_end ov11_02306794 + + arm_func_start ov11_02306C64 +ov11_02306C64: ; 0x02306C64 + stmdb sp!, {r4, lr} + ldr r0, _02306C98 ; =ov11_02324D88 + mov r4, #0 + ldr r0, [r0] + cmp r0, #0 + beq _02306C90 + ldr r4, [r0, #8] + bl MemFree + ldr r0, _02306C98 ; =ov11_02324D88 + mov r1, #0 + str r1, [r0] +_02306C90: + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02306C98: .word ov11_02324D88 + arm_func_end ov11_02306C64 + + arm_func_start ov11_02306C9C +ov11_02306C9C: ; 0x02306C9C +#ifdef JAPAN +#define OV11_02306C9C_OFFSET -4 +#else +#define OV11_02306C9C_OFFSET 0 +#endif + stmdb sp!, {r3, lr} + ldr r0, _023071C0 ; =ov11_02324D88 + ldr r2, [r0] + ldr r1, [r2, #0x28 + OV11_02306C9C_OFFSET] + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _023071B8 +_02306CB8: ; jump table + b _02306CC8 ; case 0 + b _02306CD4 ; case 1 + b _0230717C ; case 2 + b _023071B0 ; case 3 +_02306CC8: + mov r0, #1 + str r0, [r2, #0x28 + OV11_02306C9C_OFFSET] + b _023071B8 +_02306CD4: + ldr r0, [r2, #0x10] + cmp r0, #0x16 + addls pc, pc, r0, lsl #2 + b _023070B0 +_02306CE4: ; jump table + b _02307120 ; case 0 + b _023070B0 ; case 1 + b _023070B0 ; case 2 + b _02306D40 ; case 3 + b _023070B0 ; case 4 + b _023070B0 ; case 5 + b _023070B0 ; case 6 + b _023070E4 ; case 7 + b _02307058 ; case 8 + b _02307060 ; case 9 + b _02307068 ; case 10 + b _023070B0 ; case 11 + b _02307120 ; case 12 + b _02307104 ; case 13 + b _023070B0 ; case 14 + b _02306DE8 ; case 15 + b _02306DDC ; case 16 + b _02306DE8 ; case 17 + b _02306ED0 ; case 18 + b _02306EFC ; case 19 + b _02306FDC ; case 20 + b _02307018 ; case 21 + b _02307070 ; case 22 +_02306D40: + ldrsb r0, [r2, #0x22] + bl GetSimpleMenuResult__0202B870 + cmp r0, #1 + ldrne r1, _023071C0 ; =ov11_02324D88 + ldrne r1, [r1] + strne r0, [r1, #0x1c] + cmp r0, #1 + beq _02306D84 + cmp r0, #2 + beq _02306D74 + cmp r0, #3 + beq _02306D84 + b _02307120 +_02306D74: + bl ov11_023071C4 + mov r0, #0x17 + bl ov11_023062BC + b _02307120 +_02306D84: + ldr r0, _023071C0 ; =ov11_02324D88 + ldr r0, [r0] + ldrb r0, [r0, #0x20] + cmp r0, #0 + beq _02306DA0 + mov r0, #3 + bl sub_02017C50 +_02306DA0: + bl ov11_023071C4 + ldr r0, _023071C0 ; =ov11_02324D88 + ldr r0, [r0] + ldrsb r0, [r0, #0x21] + bl CloseDialogueBox + ldr r0, _023071C0 ; =ov11_02324D88 + mvn r3, #1 + ldr r1, [r0] + mov r2, #0xa + strb r3, [r1, #0x21] + ldr r1, [r0] + mov r0, #0xd + str r2, [r1, #0x2c + OV11_02306C9C_OFFSET] + bl ov11_023062BC + b _02307120 +_02306DDC: + mov r0, #0x11 + bl ov11_023062BC + b _02307120 +_02306DE8: + bl sub_0203A5A8 + cmp r0, #0 + beq _02306E70 + bl sub_0203A9EC + cmp r0, #0 + beq _02307120 + add r1, sp, #0 + mov r0, #0 + bl GetPressedButtons + ldrh r0, [sp] + tst r0, #8 + beq _02307120 + bl sub_0203AAB0 + ldr r1, _023071C0 ; =ov11_02324D88 + ldr r1, [r1] + strh r0, [r1, #0xc] + bl GetTeamMember + ldr r1, _023071C0 ; =ov11_02324D88 + ldr r1, [r1] + str r0, [r1, #4] + mov r0, #0 + bl PlaySeVolumeWrapper + bl sub_0203A5F0 + bl sub_0203A51C + ldr r0, _023071C0 ; =ov11_02324D88 + mov r3, #0xc + ldr r1, [r0] + mov r2, #0x14 + str r3, [r1, #0x18] + ldr r1, [r0] + mov r0, #0x12 + str r2, [r1, #0x14] + bl ov11_023062BC + b _02307120 +_02306E70: + bl sub_0203AA20 + mvn r1, #0 + cmp r0, r1 + bne _02306EA8 + bl sub_0203A51C + ldr r1, _023071C0 ; =ov11_02324D88 + mov r3, #2 + ldr r2, [r1] + mov r0, #0x12 + str r3, [r2, #0x18] + ldr r1, [r1] + str r3, [r1, #0x14] + bl ov11_023062BC + b _02307120 +_02306EA8: + ldr r1, _023071C0 ; =ov11_02324D88 + ldr r1, [r1] + strh r0, [r1, #0xc] + bl GetTeamMember + ldr r1, _023071C0 ; =ov11_02324D88 + ldr r1, [r1] + str r0, [r1, #4] + mov r0, #0x13 + bl ov11_023062BC + b _02307120 +_02306ED0: + ldr r1, [r2, #0x18] + sub r0, r1, #1 + str r0, [r2, #0x18] + cmp r1, #0 + bne _02307120 + bl sub_0203A51C + ldr r0, _023071C0 ; =ov11_02324D88 + ldr r0, [r0] + ldr r0, [r0, #0x14] + bl ov11_023062BC + b _02307120 +_02306EFC: + ldrsb r0, [r2, #0x22] + bl GetSimpleMenuResult__0202B870 + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _02307120 +_02306F10: ; jump table + b _02307120 ; case 0 + b _02306FC0 ; case 1 + b _02307120 ; case 2 + b _02307120 ; case 3 + b _02306F30 ; case 4 + b _02306F60 ; case 5 + b _02306F90 ; case 6 + b _02306FC0 ; case 7 +_02306F30: + bl ov11_023071C4 + bl sub_0203A51C + ldr r0, _023071C0 ; =ov11_02324D88 + mov r3, #2 + ldr r1, [r0] + mov r2, #4 + str r3, [r1, #0x18] + ldr r1, [r0] + mov r0, #0x12 + str r2, [r1, #0x14] + bl ov11_023062BC + b _02307120 +_02306F60: + bl ov11_023071C4 + bl sub_0203A51C + ldr r0, _023071C0 ; =ov11_02324D88 + mov r3, #2 + ldr r1, [r0] + mov r2, #0x14 + str r3, [r1, #0x18] + ldr r1, [r0] + mov r0, #0x12 + str r2, [r1, #0x14] + bl ov11_023062BC + b _02307120 +_02306F90: + bl ov11_023071C4 + bl sub_0203A51C + ldr r0, _023071C0 ; =ov11_02324D88 + mov r3, #2 + ldr r1, [r0] + mov r2, #0x15 + str r3, [r1, #0x18] + ldr r1, [r0] + mov r0, #0x12 + str r2, [r1, #0x14] + bl ov11_023062BC + b _02307120 +_02306FC0: + bl ov11_023071C4 + ldr r0, _023071C0 ; =ov11_02324D88 + mov r1, #0xf + ldr r0, [r0] + str r1, [r0, #0x10] + bl sub_0203A638 + b _02307120 +_02306FDC: + bl sub_0203F398 + cmp r0, #1 + bne _02307120 + ldr r0, _023071C0 ; =ov11_02324D88 + ldr r0, [r0] + ldrsb r0, [r0, #0x84 + OV11_02306C9C_OFFSET] + bl sub_0202836C + bl sub_0203F990 + ldr r0, _023071C0 ; =ov11_02324D88 + mvn r2, #1 + ldr r1, [r0] + mov r0, #0x10 + strb r2, [r1, #0x84 + OV11_02306C9C_OFFSET] + bl ov11_023062BC + b _02307120 +_02307018: + bl sub_02041B7C + cmp r0, #1 + bne _02307120 + bl sub_020420F4 +#ifndef JAPAN + ldr r0, _023071C0 ; =ov11_02324D88 + ldr r0, [r0] + ldr r0, [r0, #0x24] + cmp r0, #0 + bne _0230704C + bl sub_0205633C + cmp r0, #0 + bne _0230704C +#endif + bl sub_020572EC +_0230704C: + mov r0, #0x10 + bl ov11_023062BC + b _02307120 +_02307058: + mov r2, #3 + b _02307124 +_02307060: + mov r2, #2 + b _02307124 +_02307068: + mov r2, #4 + b _02307124 +_02307070: + ldrsb r0, [r2, #0x21] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02307120 + ldr r0, _023071C0 ; =ov11_02324D88 + ldr r0, [r0] + ldrsb r0, [r0, #0x21] + bl ShowDialogueBox + ldr r0, _023071C0 ; =ov11_02324D88 + mov r2, #0x18 + ldr r1, [r0] + str r2, [r1, #0x10] + ldr r0, [r0] + ldrsb r0, [r0, #0x21] + bl sub_0202F2C4 + b _02307120 +_023070B0: + ldrsb r0, [r2, #0x21] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02307120 + ldr r0, _023071C0 ; =ov11_02324D88 + ldr r0, [r0] + ldrsb r0, [r0, #0x21] + bl ShowDialogueBox + ldr r0, _023071C0 ; =ov11_02324D88 + ldr r0, [r0] + ldr r0, [r0, #0x14] + bl ov11_023062BC + b _02307120 +_023070E4: + ldr r1, [r2, #0x2c + OV11_02306C9C_OFFSET] + sub r0, r1, #1 + str r0, [r2, #0x2c + OV11_02306C9C_OFFSET] + cmp r1, #0 + bgt _02307120 + mov r0, #8 + bl ov11_023062BC + b _02307120 +_02307104: + ldr r1, [r2, #0x2c + OV11_02306C9C_OFFSET] + sub r0, r1, #1 + str r0, [r2, #0x2c + OV11_02306C9C_OFFSET] + cmp r1, #0 + bgt _02307120 + mov r0, #0xe + bl ov11_023062BC +_02307120: + mov r2, #1 +_02307124: + ldr r0, _023071C0 ; =ov11_02324D88 + ldr r1, [r0] + str r2, [r1, #0x80 + OV11_02306C9C_OFFSET] + ldr r2, [r0] + ldr r1, [r2, #0x80 + OV11_02306C9C_OFFSET] + cmp r1, #1 + beq _023071B8 + cmp r1, #2 + moveq r1, #3 + streq r1, [r2, #0x80 + OV11_02306C9C_OFFSET] + ldreq r0, [r0] + streq r1, [r0, #0x28 + OV11_02306C9C_OFFSET] + beq _023071B8 + mov r1, #2 + str r1, [r2, #0x28 + OV11_02306C9C_OFFSET] + ldr r0, [r0] + sub r1, r1, #4 + ldrsb r0, [r0, #0x21] + cmp r0, r1 + beq _023071B8 + bl sub_0202F2C4 + b _023071B8 +_0230717C: + mov r1, #3 + str r1, [r2, #0x28 + OV11_02306C9C_OFFSET] + ldr r0, [r0] + sub r1, r1, #5 + ldrsb r0, [r0, #0x21] + cmp r0, r1 + beq _023071B8 + bl CloseDialogueBox + ldr r0, _023071C0 ; =ov11_02324D88 + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x21] + b _023071B8 +_023071B0: + ldr r0, [r2, #0x80 + OV11_02306C9C_OFFSET] + ldmia sp!, {r3, pc} +_023071B8: + mov r0, #1 + ldmia sp!, {r3, pc} + .align 2, 0 +_023071C0: .word ov11_02324D88 + arm_func_end ov11_02306C9C + + arm_func_start ov11_023071C4 +ov11_023071C4: ; 0x023071C4 + stmdb sp!, {r3, lr} + ldr r0, _02307208 ; =ov11_02324D88 + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #0x22] + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl sub_0202836C + ldr r0, _02307208 ; =ov11_02324D88 + ldr r0, [r0] + ldrsb r0, [r0, #0x22] + bl CloseSimpleMenu + ldr r0, _02307208 ; =ov11_02324D88 + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #0x22] + ldmia sp!, {r3, pc} + .align 2, 0 +_02307208: .word ov11_02324D88 + arm_func_end ov11_023071C4 + + arm_func_start ov11_0230720C +ov11_0230720C: ; 0x0230720C + stmdb sp!, {r3, lr} + ldr r1, _02307240 ; =ov11_02324D88 + mvn r0, #1 + ldr r1, [r1] + ldrsb r1, [r1, #0x21] + cmp r1, r0 + ldmneia sp!, {r3, pc} + mov r0, #0 + bl CreateDialogueBox + ldr r1, _02307240 ; =ov11_02324D88 + ldr r1, [r1] + strb r0, [r1, #0x21] + ldmia sp!, {r3, pc} + .align 2, 0 +_02307240: .word ov11_02324D88 + arm_func_end ov11_0230720C + + arm_func_start ov11_02307244 +ov11_02307244: ; 0x02307244 + stmdb sp!, {r3, lr} + mov r0, #0x330 + mov r1, #8 + bl MemAlloc + ldr r1, _023072FC ; =ov11_02324D8C + cmp r0, #0 + str r0, [r1] + moveq r0, #0 + ldmeqia sp!, {r3, pc} + add r0, r0, #0x31c + bl ValidateTeamMembers + ldr r2, _023072FC ; =ov11_02324D8C + mvn lr, #1 + ldr r0, [r2] + add ip, lr, #1 + strb lr, [r0, #4] + ldr r0, [r2] + mov r3, #0 + strb lr, [r0, #5] + ldr r1, [r2] + mov r0, #1 + strb lr, [r1, #6] + ldr r1, [r2] + strb lr, [r1, #7] + ldr r1, [r2] + strb lr, [r1, #8] + ldr r1, [r2] + strb lr, [r1, #9] + ldr r1, [r2] + strb lr, [r1, #0xa] + ldr r1, [r2] + strb lr, [r1, #0xb] + ldr r1, [r2] + strb lr, [r1, #0xc] + ldr r1, [r2] + str ip, [r1, #0x18] + ldr r1, [r2] + str r3, [r1, #0x10] + ldr r1, [r2] + add r1, r1, #0x200 + strh ip, [r1, #0x54] + ldr r1, [r2] + str r3, [r1] + ldr r1, [r2] + str r3, [r1, #0x324] + ldmia sp!, {r3, pc} + .align 2, 0 +_023072FC: .word ov11_02324D8C + arm_func_end ov11_02307244 + + arm_func_start ov11_02307300 +ov11_02307300: ; 0x02307300 + stmdb sp!, {r4, lr} + ldr ip, _02307330 ; =ov11_02324D8C + mov r3, r2 + ldr r2, [ip] + mov lr, #0 + add ip, r2, r1 + mov r2, #1 + mov r4, r0 + strb lr, [ip, #0x104] + bl ov10_022BD394 + mov r0, r4 + ldmia sp!, {r4, pc} + .align 2, 0 +_02307330: .word ov11_02324D8C + arm_func_end ov11_02307300 + + arm_func_start ov11_02307334 +ov11_02307334: ; 0x02307334 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + sub sp, sp, #0x5a0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r4, [r0] + ldr r1, [r4] + cmp r1, #0x29 + addls pc, pc, r1, lsl #2 + b _02308CF0 +_02307354: ; jump table + b _023073FC ; case 0 + b _023074B8 ; case 1 + b _02307464 ; case 2 + b _023078D4 ; case 3 + b _02308844 ; case 4 + b _02308940 ; case 5 + b _023089C0 ; case 6 + b _02308A14 ; case 7 + b _02308A54 ; case 8 + b _02308A88 ; case 9 + b _02308AB4 ; case 10 + b _02308B70 ; case 11 + b _02308BB0 ; case 12 + b _02308C4C ; case 13 + b _02308C84 ; case 14 + b _02308C90 ; case 15 + b _02308CE8 ; case 16 + b _02307A14 ; case 17 + b _02307A30 ; case 18 + b _02307C14 ; case 19 + b _02307CD0 ; case 20 + b _02307D08 ; case 21 + b _02307E68 ; case 22 + b _02307F20 ; case 23 + b _02307F58 ; case 24 + b _02307F84 ; case 25 + b _02308658 ; case 26 + b _0230871C ; case 27 + b _02308748 ; case 28 + b _023087A0 ; case 29 + b _023087D4 ; case 30 + b _023081D0 ; case 31 + b _02308214 ; case 32 + b _02308054 ; case 33 + b _023080BC ; case 34 + b _023083E0 ; case 35 + b _02308450 ; case 36 + b _02308470 ; case 37 + b _023084AC ; case 38 + b _023085C8 ; case 39 + b _02308614 ; case 40 + b _0230880C ; case 41 +_023073FC: + bl GetNbItemsInBag + ldr r2, _023082B8 ; =ov11_02307300 + add r1, r4, #0x31c + str r2, [sp] + str r1, [sp, #4] + mov r1, #0 + str r1, [sp, #8] + ldr r2, [r4, #0x10] + add r3, r4, #0x104 + bl CreateInventoryMenuOuter + ldr r2, _023082B4 ; =ov11_02324D8C + mov r1, #0 + ldr r2, [r2] + strb r0, [r2, #4] + ldr r0, _023082BC ; =ov11_02322C88 + bl CreateTextBox + ldr r1, _023082B4 ; =ov11_02324D8C + mvn r3, #0 + ldr r4, [r1] + mov r2, #1 + strb r0, [r4, #5] + ldr r0, [r1] + str r3, [r0, #0x18] + ldr r0, [r1] + str r2, [r0] + b _02308CF0 +_02307464: + bl IsBagNotEmpty + cmp r0, #0 + bne _02307494 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl SetInventoryMenuState6 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0xc + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02307494: + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl ov10_022BCC7C + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #1 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_023074B8: + add r1, sp, #0xe + mov r0, #0 + bl GetPressedButtons + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl PopInventoryMenuField0x1A3 + ldrh r1, [sp, #0xe] + tst r1, #4 + bne _023074EC + tst r1, #0x800 + cmpeq r0, #0 + beq _02307548 +_023074EC: + cmp r0, #0 + bne _023074FC + mov r0, #5 + bl PlaySeVolumeWrapper +_023074FC: + bl SortItemsInBag + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x10] + bl GetNbItemsInBag + ldr r2, _023082B4 ; =ov11_02324D8C + mov r1, r0 + ldr r0, [r2] + ldrsb r0, [r0, #4] + bl ov10_022BCC60 + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r2, #0 + ldr r1, [r0] + str r2, [r1, #0x18] + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl ov10_022BCCB0 + b _02308CF0 +_02307548: + ldr r1, _023082B4 ; =ov11_02324D8C + mvn r0, #1 + ldr r1, [r1] + ldrsb r5, [r1, #5] + cmp r5, r0 + beq _0230760C + ldrsb r0, [r1, #4] + bl ov10_022BCDA8 + ldr r1, _023082B4 ; =ov11_02324D8C + mov r4, r0 + ldr r0, [r1] + ldr r0, [r0, #0x18] + cmp r0, r4 + beq _0230760C + mov r0, r4, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetItemAtIdx + ldr r1, _023082B4 ; =ov11_02324D8C + mov r6, r0 + ldr r1, [r1] + mov r0, r5 + str r4, [r1, #0x18] + bl sub_02027B1C + ldrb r0, [r6] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _023075E4 + ldrsh r0, [r6, #4] +#if defined(EUROPE) + add r0, r0, #0x4b + add r0, r0, #0x2f00 +#elif defined(JAPAN) + add r0, r0, #0x41 + add r0, r0, #0x1d00 +#else + add r0, r0, #0x49 + add r0, r0, #0x2f00 +#endif + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + bl StringFromId + mov r1, r0 + add r0, sp, #0x20 + bl strcpy + b _023075F0 +_023075E4: + ldr r1, _023082C0 ; =ov11_02322DB0 + add r0, sp, #0x20 + bl strcpy +_023075F0: + mov r1, #2 + add r3, sp, #0x20 + mov r0, r5 + mov r2, r1 + bl DrawTextInWindow + mov r0, r5 + bl UpdateWindow +_0230760C: + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl IsInventoryMenuActive + cmp r0, #0 + bne _02307840 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl ov10_022BCDBC + cmp r0, #0 + blt _0230781C + ldr r1, _023082B4 ; =ov11_02324D8C + ldr r2, [r1] + str r0, [r2, #0x10] + ldr r0, [r1] + ldr r0, [r0, #0x10] + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetItemAtIdx + ldr r1, _023082B4 ; =ov11_02324D8C + mov r4, r0 + ldr r0, [r1] + ldrsh r1, [r4, #4] + add r0, r0, #0x200 + strh r1, [r0, #0x4e] + ldrb r0, [r4] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + ldrne r0, _023082B4 ; =ov11_02324D8C + ldrnesh r1, [r4, #4] + ldreq r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + moveq r1, #0 + add r0, r0, #0x200 + strh r1, [r0, #0x4e] + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x4e] + bl GetItemCategoryVeneer + mov r5, r0 + bl GetGameMode + mov r6, r0 + cmp r5, #5 + bne _0230777C + cmp r6, #4 + cmpne r6, #5 + beq _0230777C + mov sb, #0 + mov r8, sb + mov r7, #3 + ldr r6, _023082C4 ; =ov11_02322D38 + ldr r5, _023082B4 ; =ov11_02324D8C + ldr r4, _023082C8 ; =0x000002B6 + b _02307734 +_023076F4: + ldr r0, [r5] + cmp r1, r4 + add r0, r0, sb + strb r8, [r0, #0x276] + bne _02307728 + ldr r0, [r5] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x4e] + bl ov11_02309E48 + cmp r0, #0 + ldreq r0, [r5] + addeq r0, r0, sb + streqb r7, [r0, #0x276] +_02307728: + add r0, sb, #1 + mov r0, r0, lsl #0x10 + mov sb, r0, asr #0x10 +_02307734: + mov r0, sb, lsl #3 + ldrh r1, [r6, r0] + cmp r1, #0 + bne _023076F4 + ldr r1, _023082B4 ; =ov11_02324D8C + ldr r0, _023082CC ; =ov11_02322CB8 + ldr r2, [r1] + ldr r1, _023082D0 ; =0x00400213 + add r2, r2, #0x76 + add r4, r2, #0x200 + add r2, sp, #0x470 + mov r3, r6 + str r4, [sp, #0x4d0] + bl CreateParentMenuFromStringIds + ldr r1, _023082B4 ; =ov11_02324D8C + ldr r1, [r1] + strb r0, [r1, #6] + b _02307808 +_0230777C: + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x4e] + bl IsGummi + cmp r0, #0 + cmpne r6, #4 + cmpne r6, #5 + ldr r1, _023082D4 ; =0x00400013 + beq _023077C4 + ldr r0, _023082CC ; =ov11_02322CB8 + ldr r3, _023082D8 ; =ov11_02322D88 + mov r2, #0 + bl CreateParentMenuFromStringIds + ldr r1, _023082B4 ; =ov11_02324D8C + ldr r1, [r1] + strb r0, [r1, #6] + b _02307808 +_023077C4: + ldrb r0, [r4, #1] + mov r2, #0 + cmp r0, #0 + beq _023077F0 + ldr r0, _023082DC ; =ov11_02322CA8 + ldr r3, _023082E0 ; =ov11_02322D10 + bl CreateParentMenuFromStringIds + ldr r1, _023082B4 ; =ov11_02324D8C + ldr r1, [r1] + strb r0, [r1, #6] + b _02307808 +_023077F0: + ldr r0, _023082DC ; =ov11_02322CA8 + ldr r3, _023082E4 ; =ov11_02322D60 + bl CreateParentMenuFromStringIds + ldr r1, _023082B4 ; =ov11_02324D8C + ldr r1, [r1] + strb r0, [r1, #6] +_02307808: + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #3 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_0230781C: + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl ov10_022BCD10 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0xe + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02307840: + add r1, sp, #0xc + mov r0, #0 + bl GetPressedButtons + ldrh r0, [sp, #0xc] + tst r0, #8 + beq _02308CF0 + mov r0, #0 + bl PlaySeVolumeWrapper + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl ov10_022BCDF4 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl ov10_022BCDA8 + ldr r1, _023082B4 ; =ov11_02324D8C + ldr r2, [r1] + str r0, [r2, #0x10] + ldr r0, [r1] + ldrsb r0, [r0, #5] + bl CloseTextBox2 + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r2, #1 + ldr r1, [r0] + strb r2, [r1, #5] + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl CloseInventoryMenu + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r3, #1 + ldr r2, [r0] + mov r1, #0xa + strb r3, [r2, #4] + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_023078D4: + ldrsb r0, [r4, #6] + bl IsParentMenuActive + cmp r0, #0 + bne _02308CF0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #6] + bl GetSimpleMenuResult__0202AEA4 + cmp r0, #8 + beq _023079E4 + ldr r1, _023082B4 ; =ov11_02324D8C + cmp r0, #0 + ldr r1, [r1] + str r0, [r1, #0x14] + bne _02307928 + bl ov11_02308D48 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #7 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02307928: + cmp r0, #1 + bne _02307948 + bl ov11_02308D48 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #9 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02307948: + cmp r0, #2 + bne _0230798C + add r2, sp, #0x500 + mov r4, #5 + ldr r0, _023082E8 ; =ov11_02322C98 + ldr r3, _023082EC ; =ov11_02322CD8 + add r2, r2, #8 + mov r1, #0x33 + str r4, [sp, #0x508] + bl CreateParentMenuFromStringIds + ldr r1, _023082B4 ; =ov11_02324D8C + mov r2, #4 + ldr r3, [r1] + strb r0, [r3, #7] + ldr r0, [r1] + str r2, [r0] + b _02308CF0 +_0230798C: + cmp r0, #6 + bne _023079AC + bl ov11_02308D48 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x11 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_023079AC: + cmp r0, #7 + bne _023079CC + bl ov11_02308D48 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x18 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_023079CC: + bl ov11_02308D48 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0xa + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_023079E4: + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #6] + bl CloseParentMenu + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r3, #1 + ldr r2, [r0] + mov r1, #2 + strb r3, [r2, #6] + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02307A14: + mov r0, #1 + bl ov11_02309040 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x12 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02307A30: + bl ov11_023090DC + cmp r0, #0 + beq _02308CF0 + bl ov11_02309E24 + mvn r1, #0 + cmp r0, r1 + beq _02307BFC + ldr r1, _023082B4 ; =ov11_02324D8C + add r0, sp, #0x18 + ldr r4, [r1] + add r5, r4, #0x238 + bl ov11_02309DAC + add r1, sp, #0x18 + mov r0, r5 + bl ov11_02308F4C + ldr r2, [r5, #0x10] + ldr r0, _023082B4 ; =ov11_02324D8C + ldrsh r1, [r5, #8] + ldr r0, [r0] + ldrsh r2, [r2] + add r0, r0, #0x280 + bl GetLearnableIqSkills + ldr r1, _023082B4 ; =ov11_02324D8C + mvn r2, #0 + ldr r3, [r1] + str r0, [r3, #0x30c] + ldr r0, [r1] + add r0, r0, #0x200 + strh r2, [r0, #0x50] + ldr r2, [r5, #0x10] + ldr r0, [r1] + ldrsh r2, [r2] + str r2, [r0, #0x318] + ldr r6, [r1] + ldr r1, [r4, #0x238] + add r0, r6, #0x200 + cmp r1, #0 + ldrsh r4, [r0, #0x4e] + bne _02307AE8 + ldrsh r0, [r5, #4] + bl GetTeamMember + mov r1, r4 + add r3, r6, #0x250 + mov r2, #1 + bl ApplyGummiBoostsToGroundMonster + b _02307B08 +_02307AE8: + cmp r1, #1 + bne _02307B08 + ldrsh r0, [r5, #4] + bl GetActiveTeamMember + mov r1, r4 + add r3, r6, #0x250 + mov r2, #1 + bl ApplyGummiBoostsToTeamMember +_02307B08: + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r1, [r5, #0x10] + ldr r2, [r0] + ldrsh r0, [r1] + ldr r1, [r2, #0x318] + sub r0, r1, r0 + str r0, [r2, #0x318] + bl ov11_022DC504 + ldr r0, [r5] + cmp r0, #1 + bne _02307B3C + ldrsh r0, [r5, #4] + bl sub_02058794 +_02307B3C: + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r2, [r5, #0x10] + ldr r0, [r0] + ldrsh r1, [r5, #8] + add r0, r0, #0xc5 + ldrsh r2, [r2] + add r0, r0, #0x200 + bl GetLearnableIqSkills + ldr r1, _023082B4 ; =ov11_02324D8C + mov r2, #1 + ldr r3, [r1] + str r0, [r3, #0x310] + ldr r0, [r1] + str r2, [r0, #0x314] + ldr r0, [r1] + add r0, r0, #0x200 + ldrsh r4, [r0, #0x50] + bl ov11_02308EDC + cmp r4, #0 + blt _02307BCC + cmp r4, #3 + bgt _02307BCC + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldr r0, [r0, #0x10] + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl RemoveItemNoHoleCheck + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r3, #0 + ldr r2, [r0] + mov r1, #0x13 + str r3, [r2, #0x18] + ldr r0, [r0] + str r1, [r0] + b _02307C0C +_02307BCC: + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r2, _023082F0 ; =0x000002BE + ldr r3, [r0] + mov r1, #0x18 + ldrsb r0, [r3, #8] + add r3, r3, #0xb4 + bl ShowStringIdInDialogueBox + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0xd + ldr r0, [r0] + str r1, [r0] + b _02307C0C +_02307BFC: + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0 + ldr r0, [r0] + str r1, [r0] +_02307C0C: + bl ov11_02309DF8 + b _02308CF0 +_02307C14: + add r0, r4, #0x200 + ldrsh r1, [r0, #0x50] + cmp r1, #3 + addls pc, pc, r1, lsl #2 + b _02307C58 +_02307C28: ; jump table + b _02307C38 ; case 0 + b _02307C40 ; case 1 + b _02307C48 ; case 2 + b _02307C50 ; case 3 +_02307C38: + ldr r5, _023082F4 ; =0x000002B9 + b _02307C5C +_02307C40: + ldr r5, _023082F8 ; =0x000002BA + b _02307C5C +_02307C48: + ldr r5, _023082FC ; =0x000002BB + b _02307C5C +_02307C50: +#ifdef JAPAN + ldr r5, _02309898 ; =0x00002FDC +#else + mov r5, #0x2bc +#endif + b _02307C5C +_02307C58: + mov r5, #0 +_02307C5C: + ldr r0, [r4, #0x318] + cmp r0, #0 + bne _02307C78 + cmp r1, #0 + blt _02307C78 + cmp r1, #3 + ldrle r5, _02308300 ; =0x000002BD +_02307C78: + cmp r5, #0 + moveq r0, #0x10 + streq r0, [r4] + beq _02308CF0 + add r0, r4, #0x238 + bl ov11_0230901C + ldr r1, _023082B4 ; =ov11_02324D8C + ldr r1, [r1] + str r0, [r1, #0xb4] + bl ov11_02308EDC + ldr r0, _023082B4 ; =ov11_02324D8C + mov r2, r5 + ldr r3, [r0] + mov r1, #0x18 + ldrsb r0, [r3, #8] + add r3, r3, #0xb4 + bl ShowStringIdInDialogueBox + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x14 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02307CD0: + ldrsb r0, [r4, #8] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02308CF0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #8] + bl ShowDialogueBox + bl ov11_02308F14 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x15 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02307D08: + mov r2, #1 + mov r1, #0 + mov r0, r2 + mov r3, r1 +_02307D18: + ldr r6, _023082B4 ; =ov11_02324D8C + mov r5, r3 + ldr ip, [r6] + mov r6, r3 + mov sb, r3 + ldr lr, [ip, #0x30c] + b _02307D50 +_02307D34: + add r7, ip, sb + ldrb r7, [r7, #0x280] + ldr r8, [ip, #0x314] + cmp r8, r7 + moveq r5, r2 + beq _02307D58 + add sb, sb, #1 +_02307D50: + cmp sb, lr + blt _02307D34 +_02307D58: + ldr r8, _023082B4 ; =ov11_02324D8C + mov r7, r1 + ldr ip, [r8] + ldr lr, [ip, #0x310] + b _02307D88 +_02307D6C: + add r8, ip, r7 + ldrb r8, [r8, #0x2c5] + ldr sb, [ip, #0x314] + cmp sb, r8 + moveq r6, r0 + beq _02307D90 + add r7, r7, #1 +_02307D88: + cmp r7, lr + blt _02307D6C +_02307D90: + cmp r5, r6 + beq _02307E2C + add r0, r4, #0x238 + bl ov11_0230901C + ldr r1, _023082B4 ; =ov11_02324D8C + ldr r2, [r1] + str r0, [r2, #0xb4] + ldr r2, [r1] + mov r0, #4 + ldr r1, [r2, #0x314] + str r1, [r2, #0xc4] + bl sub_02017C50 + bl ov11_02308EDC + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r2, _02308304 ; =0x000002BF + ldr r3, [r0] + mov r1, #0x18 + ldrsb r0, [r3, #8] + add r3, r3, #0xb4 + bl ShowStringIdInDialogueBox + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r1, [r0] + ldr r0, [r1, #0x244] + ldr r1, [r1, #0x314] + and r1, r1, #0xff + bl EnableIqSkill + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + add r0, r0, #0x238 + bl ov11_02308FD0 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x14 + ldr r3, [r0] + ldr r2, [r3, #0x314] + add r2, r2, #1 + str r2, [r3, #0x314] + ldr r0, [r0] + str r1, [r0] + b _02307E4C +_02307E2C: + ldr r6, [r4, #0x314] + ldr r5, _023082B4 ; =ov11_02324D8C + add r6, r6, #1 + str r6, [r4, #0x314] + ldr r4, [r5] + ldr r5, [r4, #0x314] + cmp r5, #0x45 + blt _02307D18 +_02307E4C: + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r1, [r0] + ldr r0, [r1, #0x314] + cmp r0, #0x45 + movge r0, #0x16 + strge r0, [r1] + b _02308CF0 +_02307E68: + add r0, r4, #0x200 + ldrh r0, [r0, #0x52] + cmp r0, #8 + addls pc, pc, r0, lsl #2 + b _02307EC8 +_02307E7C: ; jump table + b _02307EA0 ; case 0 + b _02307EA8 ; case 1 + b _02307EB0 ; case 2 + b _02307EC8 ; case 3 + b _02307EB8 ; case 4 + b _02307EC8 ; case 5 + b _02307EC8 ; case 6 + b _02307EC8 ; case 7 + b _02307EC0 ; case 8 +_02307EA0: + mov r0, #0 + b _02307ECC +_02307EA8: + ldr r0, _02308308 ; =0x000002C1 + b _02307ECC +_02307EB0: + ldr r0, _0230830C ; =0x000002C2 + b _02307ECC +_02307EB8: + ldr r0, _02308310 ; =0x000002C3 + b _02307ECC +_02307EC0: +#ifdef JAPAN + ldr r0, _023098B0 ; =0x00002FE4 + b _02307ECC +_02307EC8: + ldr r0, _023098B4 ; =0x00002FE0 +#else + mov r0, #0x2c4 + b _02307ECC +_02307EC8: + mov r0, #0x2c0 +#endif +_02307ECC: + cmp r0, #0 + moveq r0, #0x10 + streq r0, [r4] + beq _02308CF0 + bl ov11_02308EDC + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r2, _02308304 ; =0x000002BF + ldr r3, [r0] + mov r1, #0x18 + ldrsb r0, [r3, #8] + add r3, r3, #0xb4 + bl ShowStringIdInDialogueBox + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x17 + ldr r3, [r0] + ldr r2, [r3, #0x314] + add r2, r2, #1 + str r2, [r3, #0x314] + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02307F20: + ldrsb r0, [r4, #8] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02308CF0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #8] + bl ShowDialogueBox + bl ov11_02308F14 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x10 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02307F58: + ldr r0, [r4, #0x10] + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetItemAtIdx + ldrsh r0, [r0, #4] + bl ov11_02309084 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x19 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02307F84: + bl ov11_023090DC + cmp r0, #0 + beq _02308CF0 + bl ov11_02309E24 + mvn r1, #0 + cmp r0, r1 + beq _0230803C + ldr r1, _023082B4 ; =ov11_02324D8C + add r0, sp, #0x10 + ldr r4, [r1] + bl ov11_02309DAC + add r1, sp, #0x10 + add r0, r4, #0x238 + bl ov11_02308F4C + add r0, r4, #0x238 + bl ov11_02308FEC + bl sub_020415BC + cmp r0, #0 + ldrne r0, _023082B4 ; =ov11_02324D8C + movne r1, #0x1d + ldrne r0, [r0] + strne r1, [r0] + bne _0230804C + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldr r0, [r0, #0x10] + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetItemAtIdx + mov r4, r0 + ldrsh r0, [r4, #4] + bl IsHM + cmp r0, #0 + bne _02308028 + ldrsh r2, [r4, #4] + mov r0, r4 + mov r1, #0xbb + sub r2, r2, #0xbc + strh r2, [r4, #2] + strh r1, [r4, #4] + bl SetItemAcquired +_02308028: + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x1a + ldr r0, [r0] + str r1, [r0] + b _0230804C +_0230803C: + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0 + ldr r0, [r0] + str r1, [r0] +_0230804C: + bl ov11_02309DF8 + b _02308CF0 +_02308054: + add r0, r4, #0x200 + ldrsh r2, [r0, #0x40] + ldrb r3, [r4, #0x242] + add r0, r4, #0x328 + mov r1, #2 + bl sub_02053CA0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x4e] + bl GetItemMoveId16 + bl sub_0203FD14 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0 + ldr r0, [r0] + mov r2, r1 + add r3, r0, #0x328 + mov r0, #6 + bl sub_0204019C + ldr r1, _023082B4 ; =ov11_02324D8C + mov r2, #0x22 + ldr r3, [r1] + strb r0, [r3, #0xa] + ldr r0, [r1] + str r2, [r0] + b _02308CF0 +_023080BC: + bl sub_020407EC + cmp r0, #1 + beq _023080F0 + cmp r0, #2 + beq _023080DC + cmp r0, #7 + beq _02308124 + b _02308CF0 +_023080DC: + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x1f + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_023080F0: + bl sub_020407C0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #0xa] + bl CloseAdvancedTextBox + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r3, #1 + ldr r2, [r0] + mov r1, #0x18 + strb r3, [r2, #0xa] + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02308124: + bl sub_02041094 + cmp r0, #4 + bge _02308168 + bl sub_0203FD38 + ldr r2, _023082B4 ; =ov11_02324D8C + mov r1, r0 + ldr r0, [r2] + mov r2, #0x20 + add r0, r0, #0x56 + add r0, r0, #0x200 + bl memcpy + bl sub_02041094 + ldr r1, _023082B4 ; =ov11_02324D8C + ldr r1, [r1] + add r1, r1, #0x200 + strh r0, [r1, #0x54] + b _0230819C +_02308168: + bl sub_0203FD2C + ldr r2, _023082B4 ; =ov11_02324D8C + mov r1, r0 + ldr r0, [r2] + mov r2, #8 + add r0, r0, #0x56 + add r0, r0, #0x200 + bl memcpy + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x200 + strh r1, [r0, #0x54] +_0230819C: + bl sub_020407C0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #0xa] + bl CloseAdvancedTextBox + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r3, #1 + ldr r2, [r0] + mov r1, #0x27 + strb r3, [r2, #0xa] + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_023081D0: + mov r1, #1 + str r1, [r4, #0x1c] + mov r1, #3 + str r1, [sp] + ldr r1, [r0] + ldr r0, _02308314 ; =ov11_02322CC8 + ldr r3, _02308318 ; =ov11_02322CF0 + add r2, r1, #0x1c + mov r1, #0x33 + bl CreateSimpleMenuFromStringIds + ldr r1, _023082B4 ; =ov11_02324D8C + mov r2, #0x20 + ldr r3, [r1] + strb r0, [r3, #0xc] + ldr r0, [r1] + str r2, [r0] + b _02308CF0 +_02308214: + ldrsb r0, [r4, #0xc] + bl IsSimpleMenuActive + cmp r0, #0 + bne _02308CF0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #0xc] + bl GetSimpleMenuResult__0202B870 + ldr r1, _023082B4 ; =ov11_02324D8C + mov r4, r0 + ldr r0, [r1] + ldrsb r0, [r0, #0xc] + bl CloseSimpleMenu + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r1, #1 + ldr r0, [r0] + cmp r4, #0 + strb r1, [r0, #0xc] + beq _02308274 + cmp r4, #1 + beq _0230831C + cmp r4, #2 + beq _023083C8 + b _02308CF0 +_02308274: + bl sub_02041094 + ldr r2, _023082B4 ; =ov11_02324D8C + ldr r1, [r2] + add r1, r1, #0x200 + strh r0, [r1, #0x4c] + ldr r0, [r2] + ldrsb r0, [r0, #0xa] + bl CloseAdvancedTextBox + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r3, #1 + ldr r2, [r0] + mov r1, #0x23 + strb r3, [r2, #0xa] + ldr r0, [r0] + str r1, [r0] + b _02308CF0 + .align 2, 0 +#ifdef JAPAN +#define OV11_02307334_OFFSET 0x2D20 +#else +#define OV11_02307334_OFFSET 0 +#endif +_023082B4: .word ov11_02324D8C +_023082B8: .word ov11_02307300 +_023082BC: .word ov11_02322C88 +_023082C0: .word ov11_02322DB0 +_023082C4: .word ov11_02322D38 +_023082C8: .word 0x000002B6 + OV11_02307334_OFFSET +_023082CC: .word ov11_02322CB8 +_023082D0: .word 0x00400213 +_023082D4: .word 0x00400013 +_023082D8: .word ov11_02322D88 +_023082DC: .word ov11_02322CA8 +_023082E0: .word ov11_02322D10 +_023082E4: .word ov11_02322D60 +_023082E8: .word ov11_02322C98 +_023082EC: .word ov11_02322CD8 +_023082F0: .word 0x000002BE + OV11_02307334_OFFSET +_023082F4: .word 0x000002B9 + OV11_02307334_OFFSET +_023082F8: .word 0x000002BA + OV11_02307334_OFFSET +_023082FC: .word 0x000002BB + OV11_02307334_OFFSET +#ifdef JAPAN +_02309898: .word 0x00002FDC +#endif +_02308300: .word 0x000002BD + OV11_02307334_OFFSET +_02308304: .word 0x000002BF + OV11_02307334_OFFSET +_02308308: .word 0x000002C1 + OV11_02307334_OFFSET +_0230830C: .word 0x000002C2 + OV11_02307334_OFFSET +_02308310: .word 0x000002C3 + OV11_02307334_OFFSET +#ifdef JAPAN +_023098B0: .word 0x00002FE4 +_023098B4: .word 0x00002FE0 +#endif +_02308314: .word ov11_02322CC8 +_02308318: .word ov11_02322CF0 +_0230831C: + bl sub_02041094 + cmp r0, #4 + bge _02308360 + bl sub_0203FD38 + ldr r2, _023082B4 ; =ov11_02324D8C + mov r1, r0 + ldr r0, [r2] + mov r2, #0x20 + add r0, r0, #0x56 + add r0, r0, #0x200 + bl memcpy + bl sub_02041094 + ldr r1, _023082B4 ; =ov11_02324D8C + ldr r1, [r1] + add r1, r1, #0x200 + strh r0, [r1, #0x54] + b _02308394 +_02308360: + bl sub_0203FD2C + ldr r2, _023082B4 ; =ov11_02324D8C + mov r1, r0 + ldr r0, [r2] + mov r2, #8 + add r0, r0, #0x56 + add r0, r0, #0x200 + bl memcpy + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r1, #0 + ldr r0, [r0] + add r0, r0, #0x200 + strh r1, [r0, #0x54] +_02308394: + bl sub_020407C0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #0xa] + bl CloseAdvancedTextBox + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r3, #1 + ldr r2, [r0] + mov r1, #0x27 + strb r3, [r2, #0xa] + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_023083C8: + bl sub_020416FC + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x22 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_023083E0: + add r0, r4, #0x200 + ldrsh r0, [r0, #0x4c] + bl sub_02041154 + ldr r1, _023082B4 ; =ov11_02324D8C + ldr r4, _02308CFC ; =0x000008D7 + ldr r2, [r1] + str r0, [r2, #0xc4] + ldr r0, [r1] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x4c] + cmp r0, #3 + bge _0230841C + bl sub_02041364 + cmp r0, #0 + subne r4, r4, #1 +_0230841C: + bl ov11_02308EDC + ldr r0, _023082B4 ; =ov11_02324D8C + mov r2, r4 + ldr r3, [r0] + mov r1, #0x18 + ldrsb r0, [r3, #8] + add r3, r3, #0xb4 + bl ShowStringIdInDialogueBox + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x24 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02308450: + ldrsb r0, [r4, #8] + bl IsDialogueBoxActive + cmp r0, #0 + ldreq r0, _023082B4 ; =ov11_02324D8C + moveq r1, #0x25 + ldreq r0, [r0] + streq r1, [r0] + b _02308CF0 +_02308470: + add r2, sp, #0x500 + mov r4, #5 + ldr r3, _023082EC ; =ov11_02322CD8 + add r2, r2, #8 + mov r0, #0 + mov r1, #0x33 + str r4, [sp, #0x508] + bl CreateParentMenuFromStringIds + ldr r1, _023082B4 ; =ov11_02324D8C + mov r2, #0x26 + ldr r3, [r1] + strb r0, [r3, #7] + ldr r0, [r1] + str r2, [r0] + b _02308CF0 +_023084AC: + ldrsb r0, [r4, #7] + bl IsParentMenuActive + cmp r0, #0 + bne _02308CF0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #7] + bl GetSimpleMenuResult__0202AEA4 + cmp r0, #4 + bne _02308570 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldr r0, [r0, #0x10] + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetItemAtIdx + mov r4, r0 + ldrsh r0, [r4, #4] + bl IsHM + cmp r0, #0 + bne _0230852C + ldrb r0, [r4, #1] + cmp r0, #0 + beq _02308510 + bl sub_020582E0 +_02308510: + ldrsh r2, [r4, #4] + mov r0, r4 + mov r1, #0xbb + sub r2, r2, #0xbc + strh r2, [r4, #2] + strh r1, [r4, #4] + bl SetItemAcquired +_0230852C: + ldr r0, _023082B4 ; =ov11_02324D8C + mov r2, #0x1a + ldr r1, [r0] + str r2, [r1] + ldr r1, [r0] + add r0, r1, #0x200 + ldrsh r0, [r0, #0x4c] + cmp r0, #4 + movge r0, #0x1b + strge r0, [r1] + bge _02308594 + bl sub_02041484 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x1a + ldr r0, [r0] + str r1, [r0] + b _02308594 +_02308570: + bl sub_020407C0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + add r0, r0, #0x238 + bl ov11_02308FEC + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x21 + ldr r0, [r0] + str r1, [r0] +_02308594: + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #7] + bl CloseParentMenu + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r2, #1 + ldr r1, [r0] + strb r2, [r1, #7] + ldr r0, [r0] + ldrsb r0, [r0, #8] + bl ShowDialogueBox + bl ov11_02308F14 + b _02308CF0 +_023085C8: + add r0, r4, #0x200 + ldrsh r0, [r0, #0x54] + mov r3, #1 + cmp r0, #0 + movlt r2, #0 + movge r2, r0 + cmp r0, #0 + movlt r1, #1 + add r0, r4, #0x56 + movge r1, #4 + add r0, r0, #0x200 + bl sub_020417A8 + ldr r1, _023082B4 ; =ov11_02324D8C + mov r2, #0x28 + ldr r3, [r1] + strb r0, [r3, #0xb] + ldr r0, [r1] + str r2, [r0] + b _02308CF0 +_02308614: + ldrsb r0, [r4, #0xb] + bl IsScrollBoxActive + cmp r0, #0 + bne _02308CF0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #0xb] + bl CloseScrollBox + bl sub_02041A00 + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r3, #1 + ldr r2, [r0] + mov r1, #0x21 + strb r3, [r2, #0xb] + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02308658: + add r0, r4, #0x200 + ldrsh r0, [r0, #0x4e] + bl GetItemMoveId16 + mov r4, r0 + ldr r0, _02308D00 ; =0x0000131B + mov r1, #0x100 + bl sub_02017C74 + mov r0, r4 + bl sub_02041614 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r1, [r0] + ldr r0, [r1, #0x238] + add r1, r1, #0x238 + cmp r0, #0 + bne _023086A0 + ldrsh r0, [r1, #4] + bl sub_0203FD80 + b _023086B0 +_023086A0: + cmp r0, #1 + bne _023086B0 + ldrsh r0, [r1, #4] + bl sub_0203FDEC +_023086B0: + bl sub_020407C0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r1, [r0] + str r4, [r1, #0xc4] + ldr r0, [r0] + add r0, r0, #0x238 + bl ov11_02308DD8 + ldr r1, _023082B4 ; =ov11_02324D8C + ldr r1, [r1] + str r0, [r1, #0xec] + bl ov11_02308EDC + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r2, _02308D04 ; =0x00000F23 + ldr r3, [r0] + mov r1, #0x18 + ldrsb r0, [r3, #8] + add r3, r3, #0xb4 + bl ShowStringIdInDialogueBox + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + add r0, r0, #0x238 + bl ov11_02308FD0 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x29 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_0230871C: + bl sub_020407C0 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x1c + ldr r0, [r0] + str r1, [r0] + bl sub_020037A4 + ldr r1, _023082B4 ; =ov11_02324D8C + add r2, r0, #0xa + ldr r0, [r1] + str r2, [r0, #0x32c] + b _02308CF0 +_02308748: + bl sub_020037A4 + ldr r1, [r4, #0x32c] + cmp r0, r1 + ble _02308CF0 + add r0, r4, #0x238 + bl ov11_02308DD8 + ldr r1, _023082B4 ; =ov11_02324D8C + ldr r1, [r1] + str r0, [r1, #0xec] + bl ov11_02308EDC + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r2, _02308D08 ; =0x00000F24 + ldr r3, [r0] + mov r1, #0x18 + ldrsb r0, [r3, #8] + add r3, r3, #0xb4 + bl ShowStringIdInDialogueBox + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x29 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_023087A0: + bl ov11_02308EDC + ldr r0, _023082B4 ; =ov11_02324D8C +#ifdef JAPAN + ldr r2, _0230A2B0_JP ; =0x0000248F + ldr r0, [r0] + mov r1, #0x18 +#else + mov r1, #0x18 + ldr r0, [r0] + add r2, r1, #0xf10 +#endif + ldrsb r0, [r0, #8] + mov r3, #0 + bl ShowStringIdInDialogueBox + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x1e + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_023087D4: + ldrsb r0, [r4, #8] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02308CF0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #8] + bl ShowDialogueBox + bl ov11_02308F14 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x21 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_0230880C: + ldrsb r0, [r4, #8] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02308CF0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #8] + bl ShowDialogueBox + bl ov11_02308F14 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02308844: + ldrsb r0, [r4, #7] + bl IsParentMenuActive + cmp r0, #0 + bne _02308CF0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #7] + bl GetSimpleMenuResult__0202AEA4 + ldr r1, _023082B4 ; =ov11_02324D8C + mov r3, #2 + ldr r2, [r1] + cmp r0, #8 + str r3, [r2] + beq _02308900 + cmp r0, #4 + bne _02308900 + ldr r3, [r1] + mov r2, #0 + add r0, r3, #0x200 + ldrsh r0, [r0, #0x4e] + str r0, [r3, #0xc4] + ldr r0, [r1] + str r2, [r0, #0xd8] + ldr r0, [r1] + ldr r0, [r0, #0x10] + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl RemoveItemNoHoleCheck + bl ov11_022DC504 + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r1, #0 + ldr r0, [r0] + str r1, [r0, #0x18] + bl GetNbItemsInBag + ldr r2, _023082B4 ; =ov11_02324D8C + mov r1, r0 + ldr r0, [r2] + ldrsb r0, [r0, #4] + bl ov10_022BCC60 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl SetInventoryMenuState6 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #5 + ldr r0, [r0] + str r1, [r0] +_02308900: + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #7] + bl CloseParentMenu + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r2, #1 + ldr r1, [r0] + strb r2, [r1, #7] + ldr r0, [r0] + ldrsb r0, [r0, #6] + bl CloseParentMenu + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #6] + b _02308CF0 +_02308940: + ldrsb r0, [r4, #4] + bl IsInventoryMenuActive + cmp r0, #0 + bne _02308CF0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #5] + bl CloseTextBox2 + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r2, #1 + ldr r1, [r0] + strb r2, [r1, #5] + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl CloseInventoryMenu + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #4] + bl ov11_02308EDC + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r2, _02308D0C ; =0x000002CB + ldr r3, [r0] + mov r1, #0x18 + ldrsb r0, [r3, #8] + add r3, r3, #0xb4 + bl ShowStringIdInDialogueBox + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #6 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_023089C0: + ldrsb r0, [r4, #8] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02308CF0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #8] + bl ShowDialogueBox + bl IsBagNotEmpty + cmp r0, #0 + ldreq r0, _023082B4 ; =ov11_02324D8C + moveq r1, #0xc + ldreq r0, [r0] + streq r1, [r0] + beq _02308CF0 + bl ov11_02308F14 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02308A14: + mov r2, #0 + str r2, [sp] + str r2, [sp, #4] + ldr r0, [r4, #0x10] + mov r3, r2 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r1, #2 + bl sub_02044688 + ldr r1, _023082B4 ; =ov11_02324D8C + mov r2, #8 + ldr r3, [r1] + str r0, [r3, #0x324] + ldr r0, [r1] + str r2, [r0] + b _02308CF0 +_02308A54: + ldr r0, [r4, #0x324] + bl sub_02044800 + cmp r0, #1 + bne _02308CF0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + add r0, r0, #0x324 + bl sub_020448EC + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02308A88: + ldr r0, [r4, #0x10] + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetItemAtIdx + ldrb r0, [r0, #1] + bl sub_020582E0 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02308AB4: + ldr r0, [r4, #0x10] + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + bl GetItemAtIdx + mov r4, r0 + ldrb r0, [r4] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + ldrne r0, _023082B4 ; =ov11_02324D8C + ldrnesh r1, [r4, #4] + ldreq r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + moveq r1, #0 + add r0, r0, #0x200 + strh r1, [r0, #0x4e] + add r0, sp, #0x420 + bl InitPreprocessorArgs + ldr r0, _023082B4 ; =ov11_02324D8C + add r6, sp, #0x420 + ldr r1, [r0] + ldr r0, _02308D10 ; =ov11_02322C78 + add r5, r1, #0x200 + ldrsh r2, [r5, #0x4e] + ldr r1, _02308D14 ; =0x00001013 + ldr r3, _02308D18 ; =0x000008E4 + str r2, [sp, #0x430] + ldrh r4, [r4, #2] + mov r2, #0 + add r4, r4, #0xbc + str r4, [sp, #0x438] + str r6, [sp] + ldrsh r4, [r5, #0x4e] +#if defined(EUROPE) + add r4, r4, #0xd3 + add r4, r4, #0x2900 +#elif defined(JAPAN) + add r4, r4, #0xce + add r4, r4, #0x4100 +#else + add r4, r4, #0xd1 + add r4, r4, #0x2900 +#endif + mov r4, r4, lsl #0x10 + mov r4, r4, lsr #0x10 + stmib sp, {r4, r6} + bl CreateScrollBoxSingle + ldr r1, _023082B4 ; =ov11_02324D8C + mov r2, #0xb + ldr r3, [r1] + strb r0, [r3, #9] + ldr r0, [r1] + str r2, [r0] + b _02308CF0 +_02308B70: + ldrsb r0, [r4, #9] + bl IsScrollBoxActive + cmp r0, #0 + bne _02308CF0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #9] + bl CloseScrollBox + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r3, #1 + ldr r2, [r0] + mov r1, #0 + strb r3, [r2, #9] + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02308BB0: + ldrsb r0, [r4, #5] + mvn r1, #1 + cmp r0, r1 + beq _02308BD4 + bl CloseTextBox2 + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #5] +_02308BD4: + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #4] + cmp r0, r1 + beq _02308C00 + bl CloseInventoryMenu + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #4] +_02308C00: + ldr r1, _023082B4 ; =ov11_02324D8C + mvn r0, #1 + ldr r1, [r1] + ldrsb r1, [r1, #8] + cmp r1, r0 + bne _02308C1C + bl ov11_02308EDC +_02308C1C: + ldr r0, _023082B4 ; =ov11_02324D8C +#ifdef JAPAN + ldr r2, _0230A2C4_JP ; =0x00002FD4 + ldr r0, [r0] + mov r1, #0x18 +#else + mov r1, #0x18 + ldr r0, [r0] + mov r2, #0x2b4 +#endif + ldrsb r0, [r0, #8] + mov r3, #0 + bl ShowStringIdInDialogueBox + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0xd + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02308C4C: + ldrsb r0, [r4, #8] + bl IsDialogueBoxActive + cmp r0, #0 + bne _02308CF0 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #8] + bl ShowDialogueBox + bl ov11_02308F14 + ldr r0, _023082B4 ; =ov11_02324D8C + mov r1, #0x10 + ldr r0, [r0] + str r1, [r0] + b _02308CF0 +_02308C84: + mov r0, #0xf + str r0, [r4] + b _02308CF0 +_02308C90: + ldrsb r0, [r4, #4] + bl IsInventoryMenuActive + cmp r0, #0 + bne _02308CE8 + ldr r0, _023082B4 ; =ov11_02324D8C + ldr r0, [r0] + ldrsb r0, [r0, #5] + bl CloseTextBox2 + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r2, #1 + ldr r1, [r0] + strb r2, [r1, #5] + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl CloseInventoryMenu + ldr r0, _023082B4 ; =ov11_02324D8C + mvn r3, #1 + ldr r2, [r0] + mov r1, #0x10 + strb r3, [r2, #4] + ldr r0, [r0] + str r1, [r0] +_02308CE8: + mov r0, #1 + b _02308CF4 +_02308CF0: + mov r0, #0 +_02308CF4: + add sp, sp, #0x5a0 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +#ifdef JAPAN +_02308CFC: .word 0x00001D2F +_02308D00: .word 0x0000131B +_02308D04: .word 0x0000248A +_02308D08: .word 0x0000248B +_0230A2B0_JP: .word 0x0000248F +#else +_02308CFC: .word 0x000008D7 +_02308D00: .word 0x0000131B +_02308D04: .word 0x00000F23 +_02308D08: .word 0x00000F24 +#endif +_02308D0C: .word 0x000002CB + OV11_02307334_OFFSET +_02308D10: .word ov11_02322C78 +_02308D14: .word 0x00001013 +#ifdef JAPAN +_02308D18: .word 0x00001D3C +_0230A2C4_JP: .word 0x00002FD4 +#else +_02308D18: .word 0x000008E4 +#endif + arm_func_end ov11_02307334 + + arm_func_start ov11_02308D1C +ov11_02308D1C: ; 0x02308D1C + stmdb sp!, {r3, lr} + ldr r0, _02308D44 ; =ov11_02324D8C + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _02308D44 ; =ov11_02324D8C + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02308D44: .word ov11_02324D8C + arm_func_end ov11_02308D1C + + arm_func_start ov11_02308D48 +ov11_02308D48: ; 0x02308D48 + stmdb sp!, {r3, lr} + ldr r0, _02308DD4 ; =ov11_02324D8C + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #6] + cmp r0, r1 + beq _02308D78 + bl CloseParentMenu + ldr r0, _02308DD4 ; =ov11_02324D8C + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #6] +_02308D78: + ldr r0, _02308DD4 ; =ov11_02324D8C + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #5] + cmp r0, r1 + beq _02308DA4 + bl CloseTextBox2 + ldr r0, _02308DD4 ; =ov11_02324D8C + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #5] +_02308DA4: + ldr r0, _02308DD4 ; =ov11_02324D8C + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #4] + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl CloseInventoryMenu + ldr r0, _02308DD4 ; =ov11_02324D8C + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_02308DD4: .word ov11_02324D8C + arm_func_end ov11_02308D48 + + arm_func_start ov11_02308DD8 +ov11_02308DD8: ; 0x02308DD8 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0xc + ldr r1, [r0] + cmp r1, #0 + bne _02308E20 + ldrsh r0, [r0, #4] + bl GetTeamMember + mov r4, r0 + bl sub_02055894 + bl sub_020564B0 + ldr r1, _02308EAC ; =ov11_02324D8C + mov r2, r0 + ldr r0, [r1] + mov r1, r4 + add r0, r0, #0x36 + add r0, r0, #0x100 + bl sub_02056094 + b _02308E94 +_02308E20: + cmp r1, #1 + bne _02308E94 + ldrsh r0, [r0, #4] + bl GetActiveTeamMember + mov r4, r0 + add r0, sp, #0 + add r1, r4, #0x5e + mov r2, #0xa + bl StrncpySimpleNoPadSafe + ldrb r0, [r4] + mov r2, #0x44 + ldr r1, _02308EB0 ; =ov11_02322DB8 + tst r0, #2 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + ldrb r0, [r4, #1] + movne r2, #0x46 + add r3, sp, #0 + cmp r0, #0 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + ldr r0, _02308EAC ; =ov11_02324D8C + movne r2, #0x59 + ldr r0, [r0] + add r0, r0, #0x36 + add r0, r0, #0x100 + bl ov11_02308EB4 +_02308E94: + ldr r0, _02308EAC ; =ov11_02324D8C + ldr r0, [r0] + add r0, r0, #0x36 + add r0, r0, #0x100 + add sp, sp, #0xc + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_02308EAC: .word ov11_02324D8C +_02308EB0: .word ov11_02322DB8 + arm_func_end ov11_02308DD8 + + arm_func_start ov11_02308EB4 +ov11_02308EB4: ; 0x02308EB4 + stmdb sp!, {r0, r1, r2, r3} + stmdb sp!, {r3, lr} + add r2, sp, #0xc + bic r2, r2, #3 + ldr r1, [sp, #0xc] + add r2, r2, #4 + bl vsprintf + ldmia sp!, {r3, lr} + add sp, sp, #0x10 + bx lr + arm_func_end ov11_02308EB4 + + arm_func_start ov11_02308EDC +ov11_02308EDC: ; 0x02308EDC + stmdb sp!, {r3, lr} + ldr r1, _02308F10 ; =ov11_02324D8C + mvn r0, #1 + ldr r1, [r1] + ldrsb r1, [r1, #8] + cmp r1, r0 + ldmneia sp!, {r3, pc} + mov r0, #0 + bl CreateDialogueBox + ldr r1, _02308F10 ; =ov11_02324D8C + ldr r1, [r1] + strb r0, [r1, #8] + ldmia sp!, {r3, pc} + .align 2, 0 +_02308F10: .word ov11_02324D8C + arm_func_end ov11_02308EDC + + arm_func_start ov11_02308F14 +ov11_02308F14: ; 0x02308F14 + stmdb sp!, {r3, lr} + ldr r0, _02308F48 ; =ov11_02324D8C + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #8] + cmp r0, r1 + ldmeqia sp!, {r3, pc} + bl CloseDialogueBox + ldr r0, _02308F48 ; =ov11_02324D8C + mvn r1, #1 + ldr r0, [r0] + strb r1, [r0, #8] + ldmia sp!, {r3, pc} + .align 2, 0 +_02308F48: .word ov11_02324D8C + arm_func_end ov11_02308F14 + + arm_func_start ov11_02308F4C +ov11_02308F4C: ; 0x02308F4C + stmdb sp!, {r4, lr} + ldr r2, [r1] + ldr r1, [r1, #4] + mov r4, r0 + str r2, [r4] + str r1, [r4, #4] + ldr r0, [r4] + cmp r0, #0 + bne _02308F9C + ldrsh r0, [r4, #4] + bl GetTeamMember + ldrsh r3, [r0, #4] + add r2, r0, #0x14 + add r1, r0, #8 + strh r3, [r4, #8] + ldrb r0, [r0, #2] + strb r0, [r4, #0xa] + str r2, [r4, #0xc] + str r1, [r4, #0x10] + ldmia sp!, {r4, pc} +_02308F9C: + cmp r0, #1 + ldmneia sp!, {r4, pc} + ldrsh r0, [r4, #4] + bl GetActiveTeamMember + ldrsh r3, [r0, #0xc] + add r2, r0, #0x4c + add r1, r0, #6 + strh r3, [r4, #8] + ldrb r0, [r0, #3] + strb r0, [r4, #0xa] + str r2, [r4, #0xc] + str r1, [r4, #0x10] + ldmia sp!, {r4, pc} + arm_func_end ov11_02308F4C + + arm_func_start ov11_02308FD0 +ov11_02308FD0: ; 0x02308FD0 + stmdb sp!, {r3, lr} + ldr r1, [r0] + cmp r1, #1 + ldmneia sp!, {r3, pc} + ldrsh r0, [r0, #4] + bl sub_02058794 + ldmia sp!, {r3, pc} + arm_func_end ov11_02308FD0 + + arm_func_start ov11_02308FEC +ov11_02308FEC: ; 0x02308FEC + stmdb sp!, {r3, lr} + ldr r1, [r0] + cmp r1, #0 + bne _02309008 + ldrsh r0, [r0, #4] + bl sub_0203FA64 + ldmia sp!, {r3, pc} +_02309008: + cmp r1, #1 + ldmneia sp!, {r3, pc} + ldrsh r0, [r0, #4] + bl sub_0203FBD4 + ldmia sp!, {r3, pc} + arm_func_end ov11_02308FEC + + arm_func_start ov11_0230901C +ov11_0230901C: ; 0x0230901C + ldr r1, [r0] + cmp r1, #0 + ldreqsh r0, [r0, #4] + orreq r0, r0, #0x20000 + bxeq lr + cmp r1, #1 + ldreqsh r0, [r0, #4] + orreq r0, r0, #0x30000 + bx lr + arm_func_end ov11_0230901C + + arm_func_start ov11_02309040 +ov11_02309040: ; 0x02309040 + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _0230907C ; =0x00000794 + mov r1, #8 + bl MemAlloc + ldr r1, _02309080 ; =ov11_02324D90 + cmp r0, #0 + str r0, [r1] + moveq r0, #0 +#ifdef JAPAN + strne r4, [r0, #0xf4] +#else + strne r4, [r0, #0x114] +#endif + ldrne r0, [r1] + movne r1, #0 + strne r1, [r0] + movne r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +#ifdef JAPAN +_0230907C: .word 0x00000774 +#else +_0230907C: .word 0x00000794 +#endif +_02309080: .word ov11_02324D90 + arm_func_end ov11_02309040 + + arm_func_start ov11_02309084 +ov11_02309084: ; 0x02309084 +#ifdef JAPAN +#define OV11_02309084_OFFSET -0x20 +#else +#define OV11_02309084_OFFSET 0 +#endif + stmdb sp!, {r4, lr} + mov r4, r0 + ldr r0, _023090D4 ; =0x00000794 + mov r1, #8 + bl MemAlloc + ldr r1, _023090D8 ; =ov11_02324D90 + cmp r0, #0 + str r0, [r1] + moveq r0, #0 + ldmeqia sp!, {r4, pc} + mov r2, #2 + str r2, [r0, #0x114 + OV11_02309084_OFFSET] + ldr r0, [r1] + mov r2, #0 + str r2, [r0] + ldr r1, [r1] + mov r0, #1 +#ifdef JAPAN + strh r4, [r1, #0xf8] +#else + add r1, r1, #0x100 + strh r4, [r1, #0x18] +#endif + ldmia sp!, {r4, pc} + .align 2, 0 +#ifdef JAPAN +_023090D4: .word 0x00000774 +#else +_023090D4: .word 0x00000794 +#endif +_023090D8: .word ov11_02324D90 + arm_func_end ov11_02309084 + + arm_func_start ov11_023090DC +ov11_023090DC: ; 0x023090DC + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x124 + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r3, [r0] + ldr r0, [r3] + cmp r0, #0x1b + addls pc, pc, r0, lsl #2 + b _02309D74 +_023090FC: ; jump table + b _0230916C ; case 0 + b _0230955C ; case 1 + b _02309518 ; case 2 + b _02309724 ; case 3 + b _023097EC ; case 4 + b _0230984C ; case 5 + b _0230987C ; case 6 + b _023098A8 ; case 7 + b _023098E4 ; case 8 + b _023099B0 ; case 9 + b _023099CC ; case 10 + b _023099F8 ; case 11 + b _02309A2C ; case 12 + b _02309A68 ; case 13 + b _02309A8C ; case 14 + b _02309AB4 ; case 15 + b _02309AD0 ; case 16 + b _02309B40 ; case 17 + b _02309B5C ; case 18 + b _02309BA4 ; case 19 + b _02309C04 ; case 20 + b _02309CA4 ; case 21 + b _02309CE0 ; case 22 + b _02309CF8 ; case 23 + b _02309D20 ; case 24 + b _02309D38 ; case 25 + b _02309D54 ; case 26 + b _02309D6C ; case 27 +_0230916C: + ldr r5, [r3, #0x114 + OV11_02309084_OFFSET] + mov r0, #0 + str r0, [sp, #4] + ldr r8, [sp, #4] + add r4, r3, #0x11c + OV11_02309084_OFFSET + mov r2, r8 +#ifdef JAPAN + str r2, [sp, #8] + ldrsh r2, [r3, #0xf8] +#else + add r3, r3, #0x100 + str r2, [sp, #8] + ldrsh r2, [r3, #0x18] +#endif + mov r0, r4 + mov r1, r5 + str r2, [sp, #0x10] + ldr r2, _02309D84 ; =0x00401833 + add r7, r4, #0x38 + str r2, [sp, #0x14] + bl ov11_02309EE4 + mov r2, #0 + mov r1, r2 + b _023091C4 +_023091B8: + add r0, r4, r2 + strb r1, [r0, #0x70] + add r2, r2, #1 +_023091C4: + ldr r0, [r4, #0x30] + cmp r2, r0 + blt _023091B8 + cmp r5, #2 + bne _023092FC + mov sl, #0 + b _023092F0 +_023091E0: + ldr r0, [sp, #0x10] + add fp, r4, sl, lsl #3 + bl GetItemMoveId16 + ldr r1, [r4, sl, lsl #3] + mov r6, r0 + cmp r1, #1 + bne _02309258 + ldrsh r0, [fp, #4] + bl GetTeamMember + ldrsh r1, [r0, #4] + mov sb, #0 + mov r3, sb + str r1, [sp, #0xc] + mov fp, #1 + mov r1, #6 + b _0230924C +_02309220: + mla ip, sb, r1, r0 + ldrb r2, [ip, #0x22] + tst r2, #1 + movne r2, fp + moveq r2, r3 + tst r2, #0xff + beq _02309248 + ldrh r2, [ip, #0x24] + cmp r6, r2 + beq _023092B8 +_02309248: + add sb, sb, #1 +_0230924C: + cmp sb, #4 + blt _02309220 + b _023092B8 +_02309258: + cmp r1, #2 + bne _023092B8 + ldrsh r0, [fp, #4] + bl GetActiveTeamMember + ldrsh r1, [r0, #0xc] + mov sb, #0 + mov r2, sb + str r1, [sp, #0xc] + mov r3, #1 + b _023092B0 +_02309280: + add r1, r0, sb, lsl #3 + ldrb r1, [r1, #0x1c] + tst r1, #1 + movne r1, r3 + moveq r1, r2 + tst r1, #0xff + beq _023092AC + add r1, r0, sb, lsl #3 + ldrh r1, [r1, #0x20] + cmp r6, r1 + beq _023092B8 +_023092AC: + add sb, sb, #1 +_023092B0: + cmp sb, #4 + blt _02309280 +_023092B8: + ldr r1, [sp, #0xc] + mov r0, r6 + bl sub_02053D1C + cmp r0, #0 + beq _023092E0 + cmp sb, #4 + addlt r0, r4, sl + movlt r1, #3 + strltb r1, [r0, #0x70] + b _023092EC +_023092E0: + add r0, r4, sl + mov r1, #3 + strb r1, [r0, #0x70] +_023092EC: + add sl, sl, #1 +_023092F0: + ldr r0, [r4, #0x30] + cmp sl, r0 + blt _023091E0 +_023092FC: + mov sl, #0 + add r6, r4, #0x76 + add fp, sp, #0x5c + b _02309450 +_0230930C: + add sb, r4, sl, lsl #3 + ldr r0, [r4, sl, lsl #3] + cmp r0, #1 + bne _0230935C + ldrsh r0, [sb, #4] + bl GetTeamMember + ldrsh r1, [sb, #4] + mov sb, r0 + orr r0, r1, #0x20000 + str r0, [sp, #0x5c] + ldrsh r0, [sb, #4] + bl GetDexNumber + str r0, [sp, #0x80] + add r1, sb, #0x3a + add r0, sp, #0x1a + mov r2, #0 + bl RecolorNameString + add r0, sp, #0x1a + str r0, [sp, #0x94] + b _023093A0 +_0230935C: + cmp r0, #2 + bne _023093A0 + ldrsh r0, [sb, #4] + bl GetActiveTeamMember + ldrsh r1, [sb, #4] + mov sb, r0 + orr r0, r1, #0x30000 + str r0, [sp, #0x5c] + ldrsh r0, [sb, #0xc] + bl GetDexNumber + str r0, [sp, #0x80] + add r1, sb, #0x5e + add r0, sp, #0x1a + mov r2, #0 + bl RecolorNameString + add r0, sp, #0x1a + str r0, [sp, #0x94] +_023093A0: + cmp r5, #1 + mov r1, #0x100 + mov r3, #0 + bne _023093C8 + ldr r2, _02309D88 ; =ov11_02322E58 + add r0, r6, r8, lsl #8 + str fp, [sp] + mov sb, r8, lsl #8 + bl PreprocessString + b _0230941C +_023093C8: + cmp r5, #2 + bne _02309408 + add r0, r4, sl + ldrb r0, [r0, #0x70] + mov sb, r8, lsl #8 + tst r0, #2 + str fp, [sp] + beq _023093F8 + ldr r2, _02309D8C ; =ov11_02322E7C + add r0, r6, r8, lsl #8 + bl PreprocessString + b _0230941C +_023093F8: + ldr r2, _02309D88 ; =ov11_02322E58 + add r0, r6, r8, lsl #8 + bl PreprocessString + b _0230941C +_02309408: + ldr r2, _02309D90 ; =ov11_02322EA0 + add r0, r6, r8, lsl #8 + str fp, [sp] + mov sb, r8, lsl #8 + bl PreprocessString +_0230941C: + add r0, r4, sl + ldrb r0, [r0, #0x70] + add r8, r8, #1 + cmp r0, #0 + ldreq r0, [sp, #4] + cmpeq r0, #0 + moveq r0, #1 + streq r0, [sp, #4] + add r0, r6, sb + stmia r7, {r0, sl} + streq sl, [sp, #8] + add r7, r7, #8 + add sl, sl, #1 +_02309450: + ldr r0, [r4, #0x30] + cmp sl, r0 + blt _0230930C + mov r3, #0 + str r3, [r7] + sub r0, r3, #1 + str r0, [r7, #4] + ldr r0, [sp, #8] + ldr r1, _02309D80 ; =ov11_02324D90 + str r0, [r4, #0x34] + ldr r0, [r1] + mov r2, #0x10 + str r2, [r0, #0x88 + OV11_02309084_OFFSET] + ldr r0, [r1] + str r3, [r0, #0x7c + OV11_02309084_OFFSET] + ldr r3, [r1] + ldr r0, [r3, #0x114 + OV11_02309084_OFFSET] + cmp r0, #1 + ldreq r0, _02309D94 ; =0x000002F2 + streqh r0, [r3, #0x84 + OV11_02309084_OFFSET] + beq _023094E0 + cmp r0, #2 + ldrne r0, _02309D98 ; =0x00000A3A + strneh r0, [r3, #0x84 + OV11_02309084_OFFSET] + bne _023094E0 + ldr r2, _02309D94 ; =0x000002F2 + ldr r0, [sp, #0x14] + strh r2, [r3, #0x84 + OV11_02309084_OFFSET] + orr r0, r0, #0x200 + ldr r2, [r1] + str r0, [sp, #0x14] + add r0, r2, #0x18c + OV11_02309084_OFFSET + str r0, [r2, #0xdc + OV11_02309084_OFFSET] + ldr r1, [r1] + ldr r0, [r1, #0x150 + OV11_02309084_OFFSET] + str r0, [r1, #0x7c + OV11_02309084_OFFSET] +_023094E0: + ldr r1, _02309D80 ; =ov11_02324D90 + ldr r0, _02309D9C ; =ov11_02322DD0 + ldr r3, [r1] + ldr r1, [sp, #0x14] + add r2, r3, #0x7c + OV11_02309084_OFFSET + add r3, r3, #0x154 + OV11_02309084_OFFSET + bl CreateParentMenu + ldr r1, _02309D80 ; =ov11_02324D90 + mov r2, #1 + ldr r3, [r1] + strb r0, [r3, #4] + ldr r0, [r1] + str r2, [r0] + b _02309D74 +_02309518: + ldrsb r0, [r3, #4] + bl sub_02028354 + cmp r0, #3 + bne _02309538 + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl sub_0202810C +_02309538: + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl ResumeParentMenu + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #1 + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_0230955C: + add r1, sp, #0x18 + mov r0, #0 + ldr r5, [r3, #0x114 + OV11_02309084_OFFSET] + bl GetPressedButtons + ldrh r0, [sp, #0x18] + tst r0, #8 + beq _02309584 + cmp r5, #0 + moveq r0, #1 + beq _02309588 +_02309584: + mov r0, #0 +_02309588: + cmp r0, #0 + beq _023095E0 + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r4, [r0] + ldrsb r0, [r4, #4] + bl GetWindowIdSelectedItemOnPage + add r0, r4, r0, lsl #3 + ldr r1, [r0, #0x158 + OV11_02309084_OFFSET] + ldr r0, _02309D80 ; =ov11_02324D90 + str r1, [r4, #0x10] + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl sub_0202B030 + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl sub_0202812C + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #4 + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_023095E0: + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl IsParentMenuActive + cmp r0, #0 + bne _02309D74 + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl GetSimpleMenuResult__0202AEA4 + cmp r0, #0 + blt _02309704 + ldr r1, _02309D80 ; =ov11_02324D90 + ldr r2, [r1] + str r0, [r2, #0x10] + ldr r1, [r1] + add r2, r1, #0x11c + OV11_02309084_OFFSET + ldr r1, [r2, r0, lsl #3] + add r5, r2, r0, lsl #3 + cmp r1, #1 + bne _02309644 + ldrsh r0, [r5, #4] + bl GetTeamMember + ldrsh r4, [r0, #4] + b _02309658 +_02309644: + cmp r1, #2 + bne _02309658 + ldrsh r0, [r5, #4] + bl GetActiveTeamMember + ldrsh r4, [r0, #0xc] +_02309658: + mov r0, r5 + bl ov11_0230A044 + ldr r1, _02309D80 ; =ov11_02324D90 + mov r5, r0 + ldr r1, [r1] + ldr r0, [r1, #0x114 + OV11_02309084_OFFSET] + sub r0, r0, #1 + cmp r0, #1 + movls r0, #0x1a + strls r0, [r1] + bls _02309D74 + bl GetGameMode + cmp r0, #5 + beq _023096D0 + cmp r4, #0x140 + bne _023096D0 + mov r0, r5 + mov r1, r4 + bl StrcmpMonsterName + cmp r0, #0 + beq _023096D0 + ldr r0, _02309DA0 ; =ov11_02322DE0 + ldr r3, _02309DA4 ; =ov11_02322E28 + mov r1, #0x13 + mov r2, #0 + bl CreateParentMenuFromStringIds + ldr r1, _02309D80 ; =ov11_02324D90 + ldr r1, [r1] + strb r0, [r1, #5] + b _023096F0 +_023096D0: + ldr r0, _02309DA0 ; =ov11_02322DE0 + ldr r3, _02309DA8 ; =ov11_02322E00 + mov r1, #0x13 + mov r2, #0 + bl CreateParentMenuFromStringIds + ldr r1, _02309D80 ; =ov11_02324D90 + ldr r1, [r1] + strb r0, [r1, #5] +_023096F0: + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #3 + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_02309704: + ldr r0, _02309D80 ; =ov11_02324D90 + mov r3, #0x1a + ldr r2, [r0] + sub r1, r3, #0x1b + str r3, [r2] + ldr r0, [r0] + str r1, [r0, #0x10] + b _02309D74 +_02309724: + ldrsb r0, [r3, #5] + bl IsParentMenuActive + cmp r0, #0 + bne _02309D74 + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r0, [r0] + ldrsb r0, [r0, #5] + bl GetSimpleMenuResult__0202AEA4 + mvn r1, #0 + cmp r0, r1 + beq _023097C8 + ldr r1, _02309D80 ; =ov11_02324D90 + cmp r0, #3 + ldr r2, [r1] + str r0, [r2, #0x14] + addls pc, pc, r0, lsl #2 + b _023097B4 +_02309768: ; jump table + b _02309778 ; case 0 + b _02309788 ; case 1 + b _02309798 ; case 2 + b _023097A8 ; case 3 +_02309778: + ldr r0, [r1] + mov r1, #4 + str r1, [r0] + b _023097B4 +_02309788: + ldr r0, [r1] + mov r1, #7 + str r1, [r0] + b _023097B4 +_02309798: + ldr r0, [r1] + mov r1, #0xc + str r1, [r0] + b _023097B4 +_023097A8: + ldr r0, [r1] + mov r1, #0xe + str r1, [r0] +_023097B4: + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl sub_0202812C + b _023097D8 +_023097C8: + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #2 + ldr r0, [r0] + str r1, [r0] +_023097D8: + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r0, [r0] + ldrsb r0, [r0, #5] + bl CloseParentMenu + b _02309D74 +_023097EC: + ldr r0, [r3, #0x10] + add r1, r3, #0x11c + OV11_02309084_OFFSET + add r4, r1, r0, lsl #3 + ldrsh r0, [r4, #4] + bl GetActiveTeamMember + ldrb r0, [r0, #1] + cmp r0, #0 + movne r5, #1 + ldrsh r0, [r4, #4] + moveq r5, #0 + bl GetActiveTeamMember + mov r1, r0 + add r0, sp, #0xac + and r2, r5, #0xff + bl CreateMonsterSummaryFromTeamMember + add r0, sp, #0xac + mov r1, #3 + bl sub_0203F150 + ldr r1, _02309D80 ; =ov11_02324D90 + mov r2, #5 + ldr r3, [r1] + strb r0, [r3, #9] + ldr r0, [r1] + str r2, [r0] +_0230984C: + bl sub_0203F398 + cmp r0, #1 + bne _02309D74 + bl sub_0203F974 + ldr r0, _02309D80 ; =ov11_02324D90 + mov r3, #1 + ldr r2, [r0] + mov r1, #6 + str r3, [r2, #0x18] + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_0230987C: + ldr r1, [r3, #0x18] + sub r0, r1, #1 + str r0, [r3, #0x18] + cmp r1, #0 + bne _02309D74 + bl sub_0203F990 + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #2 + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_023098A8: + ldr r0, [r3, #0x10] +#ifdef JAPAN + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 +#else + add r0, r3, r0, lsl #3 + add r0, r0, #0x100 + ldrsh r0, [r0, #0x20] +#endif + bl sub_0203FBD4 + mov r1, #0 + mov r2, r1 + mov r0, #9 + bl sub_0204018C + ldr r1, _02309D80 ; =ov11_02324D90 + mov r2, #8 + ldr r3, [r1] + strb r0, [r3, #0xa] + ldr r0, [r1] + str r2, [r0] +_023098E4: + bl sub_020407EC + cmp r0, #1 + bne _02309934 + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r1, [r0] + ldr r0, [r1, #0x10] + add r0, r1, r0, lsl #3 + add r0, r0, #0x100 + ldrsh r0, [r0, #0x20 + OV11_02309084_OFFSET] + bl sub_0203FDEC + bl sub_020407C0 + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r0, [r0] + ldrsb r0, [r0, #0xa] + bl CloseAdvancedTextBox + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #2 + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_02309934: + cmp r0, #2 + cmpne r0, #7 + bne _02309D74 + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r1, [r0] + ldr r0, [r1, #0x10] + add r1, r1, #0x11c + OV11_02309084_OFFSET + add r4, r1, r0, lsl #3 + bl sub_0203FD38 + ldr r2, _02309D80 ; =ov11_02324D90 + mov r1, r0 + ldr r0, [r2] + mov r2, #0x20 + add r0, r0, #0x1e + bl MemcpySimple + bl sub_02041094 + ldr r1, _02309D80 ; =ov11_02324D90 + ldr r1, [r1] + strh r0, [r1, #0x1c] + ldrsh r0, [r4, #4] + bl sub_0203FDEC + bl sub_020407C0 + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r0, [r0] + ldrsb r0, [r0, #0xa] + bl CloseAdvancedTextBox + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #0xa + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_023099B0: + ldrsb r0, [r3, #0xa] + bl sub_020307EC + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #8 + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_023099CC: + ldrsh r2, [r3, #0x1c] + add r0, r3, #0x1e + mov r1, #4 + mov r3, #1 + bl sub_020417A8 + ldr r1, _02309D80 ; =ov11_02324D90 + mov r2, #0xb + ldr r3, [r1] + strb r0, [r3, #0xb] + ldr r0, [r1] + str r2, [r0] +_023099F8: + bl sub_02041A18 + cmp r0, #1 + bne _02309D74 + bl sub_02041A00 + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r0, [r0] + ldrsb r0, [r0, #0xb] + bl CloseScrollBox + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #7 + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_02309A2C: + ldr r0, [r3, #0x10] + add r0, r3, r0, lsl #3 + add r0, r0, #0x100 + ldrsh r0, [r0, #0x20 + OV11_02309084_OFFSET] + bl GetActiveTeamMember + mov r1, r0 + ldrsh r0, [r1, #0xc] + ldrsh r2, [r1, #6] + add r1, r1, #0x4c + mov r3, #0 + bl PrintIqSkillsMenu + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #0xd + ldr r0, [r0] + str r1, [r0] +_02309A68: + bl sub_02041B7C + cmp r0, #1 + bne _02309D74 + bl sub_020420F4 + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #2 + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_02309A8C: + bl ov11_0230D92C + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl CloseParentMenu + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #0xf + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_02309AB4: + bl ov11_0230D220 + cmp r0, #0 + ldreq r0, _02309D80 ; =ov11_02324D90 + moveq r1, #0x10 + ldreq r0, [r0] + streq r1, [r0] + b _02309D74 +_02309AD0: + ldr r0, [r3, #0x10] + add r1, r3, #0x11c + OV11_02309084_OFFSET + add r0, r1, r0, lsl #3 + bl ov11_0230A044 + ldr r2, _02309D80 ; =ov11_02324D90 + mov r1, r0 + ldr r0, [r2] + mov r2, #0xa + add r0, r0, #0x3e + bl StrncpySimpleNoPad + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r1, [r0] +#ifdef JAPAN + add r0, r1, #0x48 +#else + add r0, r1, #0x52 +#endif + add r1, r1, #0x3e + bl StrcpySimple + ldr r1, _02309D80 ; =ov11_02324D90 + mov r0, #2 + ldr r3, [r1] + mov r2, #0 + add r1, r3, #0x3e +#ifdef JAPAN + add r3, r3, #0x48 +#else + add r3, r3, #0x52 +#endif + bl ShowKeyboard + bl ov11_02310BDC + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #0x11 + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_02309B40: + bl ov11_0230D220 + cmp r0, #0 + ldreq r0, _02309D80 ; =ov11_02324D90 + moveq r1, #0x12 + ldreq r0, [r0] + streq r1, [r0] + b _02309D74 +_02309B5C: + bl GetKeyboardStatus + cmp r0, #3 + bne _02309D74 + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #0xa + ldr r0, [r0] + str r1, [r0, #0x18] + bl GetKeyboardStringResult + ldr r2, _02309D80 ; =ov11_02324D90 + mov r1, r0 + ldr r0, [r2] + add r0, r0, #0x3e + bl StrcpySimple + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #0x13 + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_02309BA4: + bl sub_02037468 + cmp r0, #0 + beq _02309D74 + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r3, [r0] + ldr r2, [r3, #0x18] + sub r1, r2, #1 + str r1, [r3, #0x18] + cmp r2, #0 + bgt _02309D74 + ldr r1, [r0] + mov r2, #0xa +#ifdef JAPAN + add r0, r1, #0x52 +#else + add r0, r1, #0x66 +#endif + add r1, r1, #0x3e + bl StrncpySimpleNoPadSafe + ldr r0, _02309D80 ; =ov11_02324D90 + ldr r0, [r0] +#ifdef JAPAN + add r0, r0, #0x52 +#else + add r0, r0, #0x66 +#endif + bl sub_0203909C + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #0x14 + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_02309C04: + ldr r0, [r3, #0x10] + add r1, r3, #0x11c + OV11_02309084_OFFSET + add r4, r1, r0, lsl #3 + mov r0, r4 + bl ov11_0230A044 + mov r5, r0 + bl sub_0203931C + mvn r1, #0 + cmp r0, r1 + beq _02309D74 + cmp r0, #0 + beq _02309C4C + cmp r0, #1 + ldreq r0, _02309D80 ; =ov11_02324D90 + moveq r1, #0x15 + ldreq r0, [r0] + streq r1, [r0] + b _02309D74 +_02309C4C: + ldr r1, _02309D80 ; =ov11_02324D90 + mov r0, r5 + ldr r1, [r1] + mov r2, #0xa + add r1, r1, #0x3e + bl StrncpySimple + ldr r1, _02309D80 ; =ov11_02324D90 + mov r0, r5 + ldr r1, [r1] + mov r2, #0xa + add r1, r1, #0x3e + bl StrncpySimple + ldr r0, [r4] + cmp r0, #2 + bne _02309C90 + ldrsh r0, [r4, #4] + bl sub_02058794 +_02309C90: + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #0x16 + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_02309CA4: + bl sub_02039218 + cmp r0, #0 + beq _02309D74 + ldr r1, _02309D80 ; =ov11_02324D90 + mov r0, #2 + ldr r3, [r1] + mov r2, #0 + add r1, r3, #0x3e +#ifdef JAPAN + add r3, r3, #0x48 +#else + add r3, r3, #0x52 +#endif + bl ShowKeyboard + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #0x12 + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_02309CE0: + bl ov11_0230D92C + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #0x17 + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_02309CF8: + bl ov11_0230D220 + cmp r0, #0 + bne _02309D74 + bl sub_02039218 + cmp r0, #0 + ldrne r0, _02309D80 ; =ov11_02324D90 + movne r1, #0x18 + ldrne r0, [r0] + strne r1, [r0] + b _02309D74 +_02309D20: + bl ov11_0230D000 + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #0x19 + ldr r0, [r0] + str r1, [r0] + b _02309D74 +_02309D38: + bl ov11_0230D220 + cmp r0, #0 + ldreq r0, _02309D80 ; =ov11_02324D90 + moveq r1, #0 + ldreq r0, [r0] + streq r1, [r0] + b _02309D74 +_02309D54: + ldrsb r0, [r3, #4] + bl CloseParentMenu + ldr r0, _02309D80 ; =ov11_02324D90 + mov r1, #0x1b + ldr r0, [r0] + str r1, [r0] +_02309D6C: + mov r0, #1 + b _02309D78 +_02309D74: + mov r0, #0 +_02309D78: + add sp, sp, #0x124 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_02309D80: .word ov11_02324D90 +_02309D84: .word 0x00401833 +_02309D88: .word ov11_02322E58 +_02309D8C: .word ov11_02322E7C +_02309D90: .word ov11_02322EA0 +#ifdef JAPAN +_02309D94: .word 0x00002FF2 +_02309D98: .word 0x00000875 +#else +_02309D94: .word 0x000002F2 +_02309D98: .word 0x00000A3A +#endif +_02309D9C: .word ov11_02322DD0 +_02309DA0: .word ov11_02322DE0 +_02309DA4: .word ov11_02322E28 +_02309DA8: .word ov11_02322E00 + arm_func_end ov11_023090DC + + arm_func_start ov11_02309DAC +ov11_02309DAC: ; 0x02309DAC + ldr r1, _02309DF4 ; =ov11_02324D90 + ldr r1, [r1] + ldr r2, [r1, #0x10] +#ifdef JAPAN + add r3, r1, #0xfc +#else + add r3, r1, #0x11c +#endif + ldr r1, [r3, r2, lsl #3] + add r2, r3, r2, lsl #3 + cmp r1, #1 + moveq r1, #0 + streq r1, [r0] + ldreqsh r1, [r2, #4] + streqh r1, [r0, #4] + bxeq lr + cmp r1, #2 + moveq r1, #1 + streq r1, [r0] + ldreqsh r1, [r2, #4] + streqh r1, [r0, #4] + bx lr + .align 2, 0 +_02309DF4: .word ov11_02324D90 + arm_func_end ov11_02309DAC + + arm_func_start ov11_02309DF8 +ov11_02309DF8: ; 0x02309DF8 + stmdb sp!, {r3, lr} + ldr r0, _02309E20 ; =ov11_02324D90 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _02309E20 ; =ov11_02324D90 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_02309E20: .word ov11_02324D90 + arm_func_end ov11_02309DF8 + + arm_func_start ov11_02309E24 +ov11_02309E24: ; 0x02309E24 + ldr r0, _02309E44 ; =ov11_02324D90 + ldr r0, [r0] + cmp r0, #0 + ldrne r0, [r0, #0x10] + movne r0, r0, lsl #0x10 + movne r0, r0, asr #0x10 + mvneq r0, #0 + bx lr + .align 2, 0 +_02309E44: .word ov11_02324D90 + arm_func_end ov11_02309E24 + + arm_func_start ov11_02309E48 +ov11_02309E48: ; 0x02309E48 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r7, r0 + mov r0, #0x34 + mov r1, #0 + mov r5, #1 + bl MemAlloc + mov r1, #2 + mov r4, r0 + bl ov11_02309EE4 + mov r6, #0 + b _02309EBC +_02309E74: + ldr r0, [r4, r6, lsl #3] + add r1, r4, r6, lsl #3 + cmp r0, #1 + bne _02309E9C + ldrsh r0, [r1, #4] + mov r1, r7 + bl sub_02055FCC + cmp r0, #0 + bne _02309EC8 + b _02309EB8 +_02309E9C: + cmp r0, #2 + bne _02309EB8 + ldrsh r0, [r1, #4] + mov r1, r7 + bl sub_020586F0 + cmp r0, #0 + bne _02309EC8 +_02309EB8: + add r6, r6, #1 +_02309EBC: + ldr r0, [r4, #0x30] + cmp r6, r0 + blt _02309E74 +_02309EC8: + ldr r0, [r4, #0x30] + cmp r6, r0 + mov r0, r4 + moveq r5, #0 + bl MemFree + mov r0, r5 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + arm_func_end ov11_02309E48 + + arm_func_start ov11_02309EE4 +ov11_02309EE4: ; 0x02309EE4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r4, #0 + mov sl, r0 + mov r5, r1 + mov r1, r4 + str r4, [sl, #0x30] + mov r0, r4 +_02309F00: + str r0, [sl, r1, lsl #3] + add r1, r1, #1 + cmp r1, #6 + blt _02309F00 + bl sub_0204E210 + mvn r1, #0 + cmp r0, r1 + bne _02309F2C + bl sub_0205633C + cmp r0, #0 + moveq r4, #1 +_02309F2C: + cmp r4, #0 + beq _02309FD4 + sub r0, r5, #1 + cmp r0, #1 + bhi _02309FD4 + bl GetGameMode + cmp r0, #1 + ldrls sb, _0230A03C ; =ov11_02322DC8 + mov fp, #2 + ldrhi sb, _0230A040 ; =ov11_02322DF0 + mov r5, #1 + mvn r4, #0 + b _02309FB8 +_02309F60: + ldrsh r0, [sb], #2 + bl GetActorMatchingStorageId + ldr r1, [sl, #0x30] + mov r7, r0 + cmp r7, r4 + add r8, sl, r1, lsl #3 + beq _02309FB8 + bl GetActiveRosterIndex + mov r6, r0 + cmp r6, r4 + streq r5, [r8] + streqh r7, [r8, #4] + beq _02309FAC + bl GetActiveTeamMember + ldrsh r0, [r0, #8] + bl CheckTeamMemberIdx + cmp r0, #0 + streq fp, [r8] + streqh r6, [r8, #4] +_02309FAC: + ldr r0, [sl, #0x30] + add r0, r0, #1 + str r0, [sl, #0x30] +_02309FB8: + ldrsh r0, [sb] + cmp r0, r4 + beq _0230A034 + ldr r0, [sl, #0x30] + cmp r0, #6 + blt _02309F60 + b _0230A034 +_02309FD4: + mov r7, #0 + mov r8, sl + mov r5, r7 + mov r6, #1 + mov r4, #2 +_02309FE8: + mov r0, r7 + bl GetActiveTeamMember + ldrb r0, [r0] + tst r0, #1 + movne r0, r6 + moveq r0, r5 + tst r0, #0xff + beq _0230A020 + str r4, [r8] + strh r7, [r8, #4] + ldr r0, [sl, #0x30] + add r8, r8, #8 + add r0, r0, #1 + str r0, [sl, #0x30] +_0230A020: + add r0, r7, #1 + mov r0, r0, lsl #0x10 + mov r7, r0, asr #0x10 + cmp r7, #4 + blt _02309FE8 +_0230A034: + ldr r0, [sl, #0x30] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230A03C: .word ov11_02322DC8 +_0230A040: .word ov11_02322DF0 + arm_func_end ov11_02309EE4 + + arm_func_start ov11_0230A044 +ov11_0230A044: ; 0x0230A044 + stmdb sp!, {r3, lr} + ldr r1, [r0] + cmp r1, #1 + bne _0230A064 + ldrsh r0, [r0, #4] + bl GetTeamMember + add r0, r0, #0x3a + ldmia sp!, {r3, pc} +_0230A064: + cmp r1, #2 + ldmneia sp!, {r3, pc} + ldrsh r0, [r0, #4] + bl GetActiveTeamMember + add r0, r0, #0x5e + ldmia sp!, {r3, pc} + arm_func_end ov11_0230A044 + + arm_func_start ov11_0230A07C +ov11_0230A07C: ; 0x0230A07C + stmdb sp!, {r3, lr} + ldr r0, _0230A0CC ; =ov11_02322ECC + bl InitMenu + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r0, #0xc + mov r1, #8 + bl MemAlloc + ldr r1, _0230A0D0 ; =ov11_02324D94 + mov r3, #0 + str r0, [r1] + str r3, [r0, #4] + ldr r0, [r1] + sub r2, r3, #2 + str r3, [r0, #8] + ldr r0, [r1] + strb r2, [r0] + ldr r0, [r1] + strb r2, [r0, #1] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230A0CC: .word ov11_02322ECC +_0230A0D0: .word ov11_02324D94 + arm_func_end ov11_0230A07C + + arm_func_start ov11_0230A0D4 +ov11_0230A0D4: ; 0x0230A0D4 + stmdb sp!, {r3, lr} + ldr r0, _0230A0FC ; =ov11_02324D94 + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _0230A0FC ; =ov11_02324D94 + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230A0FC: .word ov11_02324D94 + arm_func_end ov11_0230A0D4 + + arm_func_start ov11_0230A100 +ov11_0230A100: ; 0x0230A100 + stmdb sp!, {r4, lr} + sub sp, sp, #0x138 + ldr r0, _0230A2B0 ; =ov11_02324D94 + ldr r2, [r0] + ldr r0, [r2, #8] + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _0230A2A4 +_0230A120: ; jump table + b _0230A13C ; case 0 + b _0230A184 ; case 1 + b _0230A13C ; case 2 + b _0230A1F4 ; case 3 + b _0230A258 ; case 4 + b _0230A298 ; case 5 + b _0230A298 ; case 6 +_0230A13C: + ldr lr, [r2, #4] + ldr ip, _0230A2B4 ; =0x00003FB8 + mov r4, #0x10 + ldr r0, _0230A2B8 ; =ov11_02322EAC + ldr r1, _0230A2BC ; =0x00401833 + ldr r3, _0230A2C0 ; =ov11_02322EDC + add r2, sp, #0xa0 + str lr, [sp, #0xa0] + strh ip, [sp, #0xa8] + str r4, [sp, #0xac] + bl CreateParentMenuFromStringIds + ldr r1, _0230A2B0 ; =ov11_02324D94 + mov r2, #1 + ldr r3, [r1] + strb r0, [r3] + ldr r0, [r1] + str r2, [r0, #8] + b _0230A2A4 +_0230A184: + ldrsb r0, [r2] + bl IsParentMenuActive + cmp r0, #0 + bne _0230A2A4 + ldr r0, _0230A2B0 ; =ov11_02324D94 + ldr r0, [r0] + ldrsb r0, [r0] + bl GetSimpleMenuResult__0202AEA4 + ldr r1, _0230A2B0 ; =ov11_02324D94 + mov r4, r0 + ldr r0, [r1] + ldrsb r0, [r0] + bl CloseParentMenu + ldr r0, _0230A2B0 ; =ov11_02324D94 + mvn r2, #1 + ldr r1, [r0] + cmp r4, #0 + strb r2, [r1] + ldrlt r0, [r0] + movlt r1, #6 + strlt r1, [r0, #8] + blt _0230A2A4 + ldr r2, [r0] + mov r1, #3 + str r4, [r2, #4] + ldr r0, [r0] + str r1, [r0, #8] + b _0230A2A4 +_0230A1F4: + mov r0, #0x10 + str r0, [sp, #0x14] + ldr r1, [r2, #4] + ldr r0, _0230A2C0 ; =ov11_02322EDC + mov r1, r1, lsl #3 + ldrh r1, [r0, r1] + mov r4, #8 + ldr r0, _0230A2C4 ; =ov11_02322EBC + strh r1, [sp, #0x10] + ldr r2, [r2, #4] + ldr r1, _0230A2C8 ; =0x00009833 + str r2, [sp, #8] + str r4, [sp] + mov r4, #1 + ldr r3, _0230A2CC ; =ov11_0230A2D0 + add r2, sp, #8 + str r4, [sp, #4] + bl CreateAdvancedTextBox + ldr r1, _0230A2B0 ; =ov11_02324D94 + mov r2, #4 + ldr r3, [r1] + strb r0, [r3, #1] + ldr r0, [r1] + str r2, [r0, #8] + b _0230A2A4 +_0230A258: + ldrsb r0, [r2, #1] + bl IsAdvancedTextBoxActive + cmp r0, #0 + bne _0230A2A4 + ldr r0, _0230A2B0 ; =ov11_02324D94 + ldr r0, [r0] + ldrsb r0, [r0, #1] + bl CloseAdvancedTextBox + ldr r0, _0230A2B0 ; =ov11_02324D94 + mvn r3, #1 + ldr r2, [r0] + mov r1, #2 + strb r3, [r2, #1] + ldr r0, [r0] + str r1, [r0, #8] + b _0230A2A4 +_0230A298: + bl ov11_02301174 + mov r0, #4 + b _0230A2A8 +_0230A2A4: + mov r0, #1 +_0230A2A8: + add sp, sp, #0x138 + ldmia sp!, {r4, pc} + .align 2, 0 +_0230A2B0: .word ov11_02324D94 +#if defined(EUROPE) +_0230A2B4: .word 0x00003FBA +#elif defined(JAPAN) +_0230A2B4: .word 0x000049BB +#else +_0230A2B4: .word 0x00003FB8 +#endif +_0230A2B8: .word ov11_02322EAC +_0230A2BC: .word 0x00401833 +_0230A2C0: .word ov11_02322EDC +_0230A2C4: .word ov11_02322EBC +_0230A2C8: .word 0x00009833 +_0230A2CC: .word ov11_0230A2D0 + arm_func_end ov11_0230A100 + + arm_func_start ov11_0230A2D0 +ov11_0230A2D0: ; 0x0230A2D0 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + bl GetWindowIdPageStart + mov r4, r0 + ldr r0, _0230A318 ; =ov11_02322EDC + mov r1, r4, lsl #3 + ldrh r1, [r0, r1] + mov r0, r5 + bl SetWindowTitle +#if defined(EUROPE) + add r0, r4, #0xc3 + add r0, r0, #0x3f00 +#elif defined(JAPAN) + add r0, r4, #0x1c4 + add r0, r0, #0x4800 +#else + add r0, r4, #0xc1 + add r0, r0, #0x3f00 +#endif + mov r1, r0, lsl #0x10 + mov r0, r5 + mov r3, r1, lsr #0x10 + mov r1, #4 + mov r2, #0x10 + bl AppendStandardStringToMission + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230A318: .word ov11_02322EDC + arm_func_end ov11_0230A2D0 + + arm_func_start ov11_0230A31C +ov11_0230A31C: ; 0x0230A31C + stmdb sp!, {r4, r5, r6, lr} + mov r6, r0 + mov r5, r1 + mov r0, #0x148 + mov r1, #8 + bl MemAlloc + ldr r2, _0230A38C ; =ov11_02324D98 + mov r1, #0x148 + str r0, [r2, #4] + bl MemZero + ldr r0, _0230A38C ; =ov11_02324D98 + mov ip, #4 + ldr r4, [r0, #4] + stmib r4, {r5, r6} + add lr, r4, #0xc +_0230A358: + ldmia r6!, {r0, r1, r2, r3} + stmia lr!, {r0, r1, r2, r3} + subs ip, ip, #1 + bne _0230A358 + ldr r1, [r6] + mvn r0, #1 + str r1, [lr] + strb r0, [r4, #0x74] + strb r0, [r4, #0x78] + mov r0, #0 + str r0, [r4] + str r0, [r4, #0x144] + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230A38C: .word ov11_02324D98 + arm_func_end ov11_0230A31C + + arm_func_start ov11_0230A390 +ov11_0230A390: ; 0x0230A390 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x1b4 + ldr r0, _0230AD0C ; =ov11_02324D98 + ldr sb, [r0, #4] + ldr r0, [sb] + cmp r0, #0xe + addls pc, pc, r0, lsl #2 + b _0230AD00 +_0230A3B0: ; jump table + b _0230A3EC ; case 0 + b _0230A41C ; case 1 + b _0230A4B8 ; case 2 + b _0230A510 ; case 3 + b _0230A68C ; case 4 + b _0230A68C ; case 5 + b _0230A6C8 ; case 6 + b _0230A6E4 ; case 7 + b _0230A750 ; case 8 + b _0230A844 ; case 9 + b _0230A958 ; case 10 + b _0230A98C ; case 11 + b _0230A9D0 ; case 12 + b _0230AB1C ; case 13 + b _0230ACE4 ; case 14 +_0230A3EC: + ldr r0, [sb, #8] + ldrb r0, [r0, #1] + cmp r0, #0x64 + bhs _0230A410 + ldr r0, [sb, #4] + cmp r0, #0 + ble _0230A410 + mov r0, #1 + bl sub_02017C50 +_0230A410: + mov r0, #1 + str r0, [sb] + b _0230AD00 +_0230A41C: + ldr r5, [sb, #8] + ldrb r2, [r5, #1] + cmp r2, #0x64 + bhs _0230A440 + ldrb r1, [sb, #0xd] + ldr r0, [sb, #4] + add r0, r1, r0 + cmp r2, r0 + blt _0230A44C +_0230A440: + mov r0, #0xd + str r0, [sb] + b _0230AD00 +_0230A44C: + mov r0, #0x100 + mov r1, #0xf + bl MemAlloc + mov r4, r0 + mov r0, r5 + bl sub_020546E8 + add r0, sp, #0x164 + bl InitPreprocessorArgs + mov r0, r5 + bl sub_02055894 + bl sub_020564B0 + mov r2, r0 + mov r0, r4 + mov r1, r5 + bl sub_02056094 + str r4, [sp, #0x19c] + ldrb r2, [r5, #1] + ldr r1, _0230AD10 ; =0x000004A6 + mov r0, #0x1c + str r2, [sp, #0x188] + add r2, sp, #0x164 + bl sub_02046BE8 + mov r0, r4 + bl MemFree + mov r0, #2 + str r0, [sb] + b _0230AD00 +_0230A4B8: + bl sub_02046C78 + cmp r0, #0 + movne r0, #6 + moveq r0, #0 + cmp r0, #6 + bne _0230AD00 +#ifdef JAPAN + ldr r0, [sb, #8] + ldr r3, _0230C2B4 ; =0x000003E7 + ldrsh r1, [r0, #4] + ldrb r2, [r0, #1] + add r0, sb, #0x54 +#else + ldr r3, [sb, #8] + add r0, sb, #0x54 + ldrsh r1, [r3, #4] + ldrb r2, [r3, #1] + ldrsh r3, [r3, #8] +#endif + bl sub_02053A0C + strh r0, [sb, #0x50] + mov r0, #0 + strh r0, [sb, #0x52] + ldrh r0, [sb, #0x50] + cmp r0, #0 + movne r0, #3 + strne r0, [sb] + moveq r0, #1 + streq r0, [sb] + b _0230AD00 +_0230A510: + ldrh r1, [sb, #0x52] + ldrh r0, [sb, #0x50] + ldr r4, [sb, #8] + mov r8, #0 + cmp r1, r0 + movhs r0, #1 + sub r5, r8, #1 + strhs r0, [sb] + bhs _0230AD00 + mov sl, r8 + add r2, sb, r1, lsl #1 + mov r6, r8 + mov r7, #1 + mov r0, #6 + b _0230A58C +_0230A54C: + mla r3, sl, r0, r4 + ldrb r1, [r3, #0x22] + tst r1, #1 + movne r1, r7 + moveq r1, r6 + tst r1, #0xff + beq _0230A580 + ldrh r3, [r3, #0x24] + ldrh r1, [r2, #0x54] + cmp r3, r1 + bne _0230A588 + mov r8, #1 + b _0230A594 +_0230A580: + cmp r5, #0 + movlt r5, sl +_0230A588: + add sl, sl, #1 +_0230A58C: + cmp sl, #4 + blt _0230A54C +_0230A594: + cmp r8, #0 + ldrneh r0, [sb, #0x52] + addne r0, r0, #1 + strneh r0, [sb, #0x52] + bne _0230AD00 + add r0, sp, #0x114 + bl InitPreprocessorArgs + mov r0, #0x100 + mov r1, #0xf + bl MemAlloc + mov r6, r0 + mov r0, r4 + bl sub_02055894 + bl sub_020564B0 + mov r2, r0 + mov r0, r6 + mov r1, r4 + bl sub_02056094 + str r6, [sp, #0x14c] + cmp r5, #0 + blt _0230A644 + ldrh r1, [sb, #0x52] + add r2, r4, #0x22 + mov r0, #6 + add r1, sb, r1, lsl #1 + mla r0, r5, r0, r2 + ldrh r1, [r1, #0x54] + bl GetInfoMoveGround + ldrh r2, [sb, #0x52] + ldr r0, _0230AD14 ; =0x0000131B + mov r1, #0x100 + add r2, sb, r2, lsl #1 + ldrh r2, [r2, #0x54] + str r2, [sp, #0x124] + bl sub_02017C74 + ldr r1, _0230AD18 ; =0x000004A8 + add r2, sp, #0x114 + mov r0, #0x1c + bl sub_02046BE8 + ldrh r1, [sb, #0x52] + mov r0, #4 + add r1, r1, #1 + strh r1, [sb, #0x52] + b _0230A67C +_0230A644: + ldrsh r2, [r4, #4] + ldr r0, _0230AD1C ; =0xFFFFFE5E + ldr r1, _0230AD20 ; =0x000004A9 +#ifdef JAPAN + add r0, r2, r0 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #3 + addls r1, r1, #1 +#else + add r2, r2, r0 + mov r2, r2, lsl #0x10 + mov r2, r2, asr #0x10 + mov r2, r2, lsl #0x10 + mov r2, r2, lsr #0x10 + cmp r2, #3 + rsbls r1, r0, #0x308 +#endif + add r2, sp, #0x114 + mov r0, #0x1c + bl sub_02046BE8 + mov r0, #5 +_0230A67C: + str r0, [sb] + mov r0, r6 + bl MemFree + b _0230AD00 +_0230A68C: + bl sub_02046C78 + cmp r0, #0 + movne r0, #6 + moveq r0, #0 + cmp r0, #6 + bne _0230AD00 + ldr r0, [sb] + cmp r0, #5 + moveq r0, #0 + streqh r0, [sb, #0x76] + moveq r0, #6 + streq r0, [sb] + movne r0, #1 + strne r0, [sb] + b _0230AD00 +_0230A6C8: + bl sub_02046D20 + mov r0, #7 + str r0, [sb] + bl sub_020037A4 + add r0, r0, #0xa + str r0, [sb, #0x144] + b _0230AD00 +_0230A6E4: + bl sub_020037A4 + ldr r1, [sb, #0x144] + cmp r1, r0 + bge _0230AD00 + ldr r1, _0230AD0C ; =ov11_02324D98 + mvn r0, #1 + ldr r4, [r1, #4] + ldrsb r1, [r4, #0x74] + cmp r1, r0 + bne _0230A744 + ldrh r0, [r4, #0x52] + add r0, r4, r0, lsl #1 + ldrh r0, [r0, #0x54] + bl sub_0203FD14 + ldr r0, [r4, #8] + bl sub_02055894 + bl sub_0203FA64 + mov r1, #0 + mov r2, r1 + mov r0, #3 + bl sub_0204018C + strb r0, [r4, #0x74] + ldrsh r0, [r4, #0x76] + bl sub_020410A4 +_0230A744: + mov r0, #8 + str r0, [sb] + b _0230AD00 +_0230A750: + bl sub_020407EC + cmp r0, #1 + beq _0230AD00 + cmp r0, #7 + bne _0230A7A4 + bl sub_02041094 + strh r0, [sb, #0x76] + bl sub_0203FD38 + mov r1, r0 + add r0, sb, #0x7a + mov r2, #0x20 + bl MemcpySimple + ldrh r1, [sb, #0x52] + add r0, sb, #0x9a + add r1, sb, r1, lsl #1 + ldrh r1, [r1, #0x54] + bl InitMove + bl ov11_0230ADCC + mov r0, #0xa + str r0, [sb] + b _0230AD00 +_0230A7A4: + cmp r0, #2 + bne _0230AD00 + bl sub_02041094 + strh r0, [sb, #0x76] + add r0, sb, #0xa4 + mov r1, #0x98 + bl MemZero + mov r2, #0 + mov r1, r2 +_0230A7C8: + add r0, sb, r2 + add r2, r2, #1 + strb r1, [r0, #0x13c] + cmp r2, #5 + blt _0230A7C8 + ldrsh r0, [sb, #0x76] + cmp r0, #4 + bge _0230A7F4 + bl sub_02041364 + cmp r0, #0 + bne _0230A7FC +_0230A7F4: + mov r0, #3 + strb r0, [sb, #0x13d] +_0230A7FC: + ldr r0, _0230AD0C ; =ov11_02324D98 + ldr r1, _0230AD24 ; =ov11_02322F5C + ldrsb r3, [r0] + add r2, sb, #0x13c + ldr r0, _0230AD28 ; =ov11_02322F58 + ldr r3, [r1, r3, lsl #3] + mov r1, #0 + str r3, [sb, #0xa4] + str r2, [sb, #0x104] + stmia sp, {r0, r1} + ldr r0, _0230AD2C ; =ov11_02322F30 + ldr r2, _0230AD30 ; =0x00000233 + add r3, sb, #0xa4 + str r1, [sp, #8] + bl sub_02046A20 + mov r0, #9 + str r0, [sb] + b _0230AD00 +_0230A844: + bl ov11_0230AD94 + mov r4, r0 + bl sub_02046BA0 + ldr r1, _0230AD0C ; =ov11_02324D98 + cmp r4, #6 + strb r0, [r1] + bne _0230A870 + bl sub_020416FC + mov r0, #6 + str r0, [sb] + b _0230AD00 +_0230A870: + cmp r4, #1 + bne _0230A8F8 + ldrsh r0, [sb, #0x76] + cmp r0, #4 + bge _0230A890 + bl sub_02041364 + cmp r0, #0 + bne _0230A898 +_0230A890: + ldr r4, _0230AD34 ; =0x000004AC + b _0230A89C +_0230A898: + ldr r4, _0230AD38 ; =0x000004AB +_0230A89C: + add r0, sp, #0xc4 + bl InitPreprocessorArgs + ldrsh r0, [sb, #0x76] + bl sub_02041154 + str r0, [sp, #0xd4] + bl ov11_0230ADCC + add r0, sb, #0xa4 + mov r1, #0x98 + bl MemZero + mov r0, #5 + str r0, [sb, #0xa4] + ldr r1, _0230AD3C ; =ov11_02322F40 + add r0, sp, #0xc4 + stmia sp, {r1, r4} + str r0, [sp, #8] + mov r0, #0 + mov r1, r0 + mov r2, #0x33 + add r3, sb, #0xa4 + bl sub_02046A20 + mov r0, #0xc + str r0, [sb] + b _0230AD00 +_0230A8F8: + cmp r4, #2 + bne _0230A918 + ldrsh r0, [sb, #0x76] + bl sub_02041394 + bl ov11_0230ADCC + mov r0, #6 + str r0, [sb] + b _0230AD00 +_0230A918: + cmp r4, #3 + bne _0230AD00 + bl sub_0203FD38 + mov r1, r0 + add r0, sb, #0x7a + mov r2, #0x20 + bl MemcpySimple + ldrh r1, [sb, #0x52] + add r0, sb, #0x9a + add r1, sb, r1, lsl #1 + ldrh r1, [r1, #0x54] + bl InitMove + bl ov11_0230ADCC + mov r0, #0xa + str r0, [sb] + b _0230AD00 +_0230A958: + ldrsb r1, [sb, #0x78] + mvn r0, #1 + cmp r1, r0 + bne _0230A980 + ldrsh r2, [sb, #0x76] + add r0, sb, #0x7a + mov r1, #5 + mov r3, #1 + bl sub_020417A8 + strb r0, [sb, #0x78] +_0230A980: + mov r0, #0xb + str r0, [sb] + b _0230AD00 +_0230A98C: + bl sub_02041A18 + cmp r0, #1 + bne _0230AD00 + ldr r1, _0230AD0C ; =ov11_02324D98 + mvn r0, #1 + ldr r4, [r1, #4] + ldrsb r1, [r4, #0x78] + cmp r1, r0 + beq _0230A9C4 + bl sub_02041A00 + ldrsb r0, [r4, #0x78] + bl CloseScrollBox + mvn r0, #1 + strb r0, [r4, #0x78] +_0230A9C4: + mov r0, #6 + str r0, [sb] + b _0230AD00 +_0230A9D0: + bl ov11_0230AD94 + cmp r0, #4 + bne _0230AB08 + ldrsh r0, [sb, #0x76] + cmp r0, #4 + blt _0230AA00 + ldrh r1, [sb, #0x52] + mov r0, #1 + add r1, r1, #1 + strh r1, [sb, #0x52] + str r0, [sb] + b _0230AAFC +_0230AA00: + ldr r7, [sb, #8] + mvn r5, #0 + bl sub_02041484 + bl sub_0203FD38 + mov r6, r0 + mov r8, #0 + add r4, r7, #0x22 + mov fp, #6 +_0230AA20: + mul sl, r8, fp + add r0, r4, sl + add r1, r6, r8, lsl #3 + bl DungeonMoveToGroundMove + cmp r5, #0 + bge _0230AA54 + add r0, r7, sl + ldrb r0, [r0, #0x22] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + moveq r5, r8 +_0230AA54: + add r8, r8, #1 + cmp r8, #4 + blt _0230AA20 + add r0, sp, #0x74 + bl InitPreprocessorArgs + mov r0, #0x100 + mov r1, #0xf + bl MemAlloc + mov r4, r0 + mov r0, r7 + bl sub_02055894 + bl sub_020564B0 + mov r2, r0 + mov r0, r4 + mov r1, r7 + bl sub_02056094 + add r1, r7, #0x22 + mov r0, #6 + str r4, [sp, #0xac] + mla r0, r5, r0, r1 + ldrh r1, [sb, #0x52] + add r1, sb, r1, lsl #1 + ldrh r1, [r1, #0x54] + bl GetInfoMoveGround + ldrh r2, [sb, #0x52] + ldr r0, _0230AD14 ; =0x0000131B + mov r1, #0x100 + add r2, sb, r2, lsl #1 + ldrh r2, [r2, #0x54] + str r2, [sp, #0x84] + bl sub_02017C74 + ldr r1, _0230AD18 ; =0x000004A8 + mov r0, #0x1c + add r2, sp, #0x74 + bl sub_02046BE8 + ldrh r2, [sb, #0x52] + mov r0, r4 + mov r1, #4 + add r2, r2, #1 + strh r2, [sb, #0x52] + str r1, [sb] + bl MemFree +_0230AAFC: + mov r0, #0 + bl sub_020410A4 + b _0230AD00 +_0230AB08: + sub r0, r0, #5 + cmp r0, #1 + movls r0, #6 + strls r0, [sb] + b _0230AD00 +_0230AB1C: + mov r0, #0x400 + mov r1, #0xf + ldr r6, [sb, #8] + mov r7, #0 + bl MemAlloc + mov r4, r0 + mov r0, #0x100 + mov r1, #0xf + bl MemAlloc + str r0, [sp, #0xc] + mov r0, #0x100 + mov r1, #0xf + bl MemAlloc + mov r5, r0 + mov r0, r7 + strb r0, [r4] + mov r0, r6 + bl sub_02055894 + bl sub_020564B0 + mov r2, r0 + mov r0, r5 + mov r1, r6 + bl sub_02056094 + add r0, sp, #0x24 + bl InitPreprocessorArgs + mov r8, r7 + ldrb r1, [r6, #0xc] + ldrb r0, [sb, #0x18] + ldrsh r3, [r6, #0xa] + ldrsh r2, [sb, #0x16] + sub r0, r1, r0 + str r0, [sp, #0x14] + sub r2, r3, r2 + str r2, [sp, #0x10] + ldrb r1, [r6, #0xe] + ldrb r0, [sb, #0x1a] + ldrb r3, [r6, #0xd] + ldrb r2, [sb, #0x19] + sub r0, r1, r0 + str r0, [sp, #0x1c] + sub r2, r3, r2 + ldrb r1, [r6, #0xf] + ldrb r0, [sb, #0x1b] + str r2, [sp, #0x18] + mov sl, r8 + sub r0, r1, r0 + str r0, [sp, #0x20] +_0230ABD8: + add r0, sp, #0x10 + ldr fp, [r0, sl, lsl #2] + cmp fp, #0 + ble _0230AC58 + cmp r7, #0 + beq _0230AC10 + cmp r8, #3 + beq _0230AC04 + ldr r1, _0230AD40 ; =ov11_02322F80 + mov r0, r4 + bl strcat +_0230AC04: + ldr r1, _0230AD44 ; =ov11_02322F84 + mov r0, r4 + bl strcat +_0230AC10: + add r0, sp, #0x24 + ldr r2, _0230AD48 ; =ov11_02322F24 + mov r3, sl, lsl #1 + ldrh r2, [r2, r3] + str r5, [sp, #0x5c] + add r0, r0, sl, lsl #2 + str fp, [r0, #0x24] + add r0, sp, #0x24 + str r0, [sp] + ldr r0, [sp, #0xc] + mov r1, #0x100 + mov r3, #0 + bl PreprocessStringFromId + ldr r1, [sp, #0xc] + mov r0, r4 + bl strcat + mov r7, #1 + add r8, r8, #1 +_0230AC58: + add sl, sl, #1 + cmp sl, #5 + blt _0230ABD8 + ldr r1, _0230AD44 ; =ov11_02322F84 + mov r0, r4 + bl strcat + cmp r7, #0 + beq _0230AC8C + add r2, sp, #0x24 + mov r1, r4 + mov r0, #0x1c + bl sub_02046C30 + b _0230ACB4 +_0230AC8C: + ldrb r1, [r6, #1] + ldrb r0, [sb, #0xd] + cmp r1, r0 + bne _0230ACB4 + ldr r1, _0230AD4C ; =0x000004A7 + add r2, sp, #0x24 + mov r0, #0x1c + str r5, [sp, #0x5c] + bl sub_02046BE8 + mov r7, #1 +_0230ACB4: + mov r0, r4 + bl MemFree + ldr r0, [sp, #0xc] + bl MemFree + mov r0, r5 + bl MemFree + cmp r7, #0 + movne r0, #0xe + strne r0, [sb] + bne _0230AD00 + mov r0, #1 + b _0230AD04 +_0230ACE4: + bl sub_02046C78 + cmp r0, #0 + movne r0, #6 + moveq r0, #0 + cmp r0, #6 + moveq r0, #1 + beq _0230AD04 +_0230AD00: + mov r0, #0 +_0230AD04: + add sp, sp, #0x1b4 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +#ifdef JAPAN +#define OV11_0230A390_OFFSET 0x3725 +#else +#define OV11_0230A390_OFFSET 0 +#endif +_0230AD0C: .word ov11_02324D98 +_0230AD10: .word 0x000004A6 + OV11_0230A390_OFFSET +#ifdef JAPAN +_0230C2B4: .word 0x000003E7 +#endif +_0230AD14: .word 0x0000131B +_0230AD18: .word 0x000004A8 + OV11_0230A390_OFFSET +_0230AD1C: .word 0xFFFFFE5E +_0230AD20: .word 0x000004A9 + OV11_0230A390_OFFSET +_0230AD24: .word ov11_02322F5C +_0230AD28: .word ov11_02322F58 +_0230AD2C: .word ov11_02322F30 +_0230AD30: .word 0x00000233 +_0230AD34: .word 0x000004AC + OV11_0230A390_OFFSET +_0230AD38: .word 0x000004AB + OV11_0230A390_OFFSET +_0230AD3C: .word ov11_02322F40 +_0230AD40: .word ov11_02322F80 +_0230AD44: .word ov11_02322F84 +_0230AD48: .word ov11_02322F24 +_0230AD4C: .word 0x000004A7 + OV11_0230A390_OFFSET + arm_func_end ov11_0230A390 + + arm_func_start ov11_0230AD50 +ov11_0230AD50: ; 0x0230AD50 + stmdb sp!, {r3, lr} + ldr r0, _0230AD78 ; =ov11_02324D98 + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl MemFree + ldr r0, _0230AD78 ; =ov11_02324D98 + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230AD78: .word ov11_02324D98 + arm_func_end ov11_0230AD50 + + arm_func_start IsGroundMonsterAtMaxLevel +IsGroundMonsterAtMaxLevel: ; 0x0230AD7C + ldrb r0, [r0, #1] + cmp r0, #0x64 + movhs r0, #1 + movlo r0, #0 + and r0, r0, #0xff + bx lr + arm_func_end IsGroundMonsterAtMaxLevel + + arm_func_start ov11_0230AD94 +ov11_0230AD94: ; 0x0230AD94 + stmdb sp!, {r3, lr} + bl sub_02046B04 + mvn r2, #0 + cmp r0, r2 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + sub r1, r2, #1 + cmp r0, r1 + moveq r0, #6 + ldmeqia sp!, {r3, pc} + sub r1, r2, #2 + cmp r0, r1 + moveq r0, #6 + ldmia sp!, {r3, pc} + arm_func_end ov11_0230AD94 + + arm_func_start ov11_0230ADCC +ov11_0230ADCC: ; 0x0230ADCC + stmdb sp!, {r4, lr} + ldr r1, _0230AE0C ; =ov11_02324D98 + mvn r0, #1 + ldr r4, [r1, #4] + ldrsb r1, [r4, #0x74] + cmp r1, r0 + ldmeqia sp!, {r4, pc} + ldr r0, [r4, #8] + bl sub_02055894 + bl sub_0203FD80 + bl sub_020407C0 + ldrsb r0, [r4, #0x74] + bl CloseAdvancedTextBox + mvn r0, #1 + strb r0, [r4, #0x74] + ldmia sp!, {r4, pc} + .align 2, 0 +_0230AE0C: .word ov11_02324D98 + arm_func_end ov11_0230ADCC + + arm_func_start ov11_0230AE10 +ov11_0230AE10: ; 0x0230AE10 + stmdb sp!, {r3, r4, r5, lr} + mov r5, r0 + ldr r0, [r5] + cmp r0, #0 + cmpne r0, #1 + ldmneia sp!, {r3, r4, r5, pc} + mov r0, #0x10 + mov r1, #8 + bl MemAlloc + ldr r2, _0230AE78 ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR + mov r1, #0x10 + str r0, [r2] + bl MemZero + ldr r0, _0230AE78 ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR + ldmia r5, {r1, r2} + ldr r4, [r0] + str r1, [r4] + add r0, r4, #0xc + add r1, r4, #0xe + str r2, [r4, #4] + bl ov11_0230C050 + ldr r1, _0230AE7C ; =ov11_02322F98 + ldr r2, _0230AE80 ; =GetExclusiveItemRequirements + add r0, r4, #8 + bl sub_0204707C + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230AE78: .word EXCLUSIVE_ITEM_REQUIREMENTS_PTR +_0230AE7C: .word ov11_02322F98 +_0230AE80: .word GetExclusiveItemRequirements + arm_func_end ov11_0230AE10 + + arm_func_start ov11_0230AE84 +ov11_0230AE84: ; 0x0230AE84 + stmdb sp!, {r3, lr} + ldr r0, _0230AECC ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR + ldr r0, [r0] + cmp r0, #0 + ldrne r0, [r0, #8] + cmpne r0, #0 + beq _0230AEC4 + bl sub_020470D0 + ldr r0, _0230AECC ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR + ldr r0, [r0] + ldr r0, [r0, #8] + bl sub_02047148 + mvn r1, #0 + cmp r0, r1 + moveq r0, #1 + ldmeqia sp!, {r3, pc} +_0230AEC4: + mov r0, #0 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230AECC: .word EXCLUSIVE_ITEM_REQUIREMENTS_PTR + arm_func_end ov11_0230AE84 + + arm_func_start ov11_0230AED0 +ov11_0230AED0: ; 0x0230AED0 + stmdb sp!, {r3, lr} + ldr r0, _0230AF08 ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR + ldr r0, [r0] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + add r0, r0, #8 + bl sub_02047150 + ldr r0, _0230AF08 ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR + ldr r0, [r0] + bl MemFree + ldr r0, _0230AF08 ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR + mov r1, #0 + str r1, [r0] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230AF08: .word EXCLUSIVE_ITEM_REQUIREMENTS_PTR + arm_func_end ov11_0230AED0 + + arm_func_start ov11_0230AF0C +ov11_0230AF0C: ; 0x0230AF0C + ldr r1, _0230AF30 ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR + ldr r2, [r0] + ldr r3, [r1] + ldr r1, [r0, #4] + ldr ip, _0230AF34 ; =sub_02047188 + str r2, [r3] + add r0, r3, #8 + str r1, [r3, #4] + bx ip + .align 2, 0 +_0230AF30: .word EXCLUSIVE_ITEM_REQUIREMENTS_PTR +_0230AF34: .word sub_02047188 + arm_func_end ov11_0230AF0C + + arm_func_start GetExclusiveItemRequirements +GetExclusiveItemRequirements: ; 0x0230AF38 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x15c + ldr r1, _0230B1DC ; =EXCLUSIVE_ITEM_REQUIREMENTS_PTR + mov r7, r0 + ldr r6, [r1] + add r0, sp, #0xa + ldrsh r8, [r6, #4] + mov r2, #0 + mov r3, #1 + add r1, sp, #4 + strh r8, [sp, #8] + strh r2, [sp, #6] + strb r3, [sp, #4] + mov sb, #0x10 + bl MaybeGetColoredFormattedItemName + add r0, sp, #0x10c + bl InitPreprocessorArgs + mov r0, r7 + mov r1, #0x18 + mov r2, sb + add r3, sp, #0xa + bl DrawTextInWindow + mov r0, r8 + bl ov11_0230C068 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0230AFF8 +_0230AFA4: ; jump table + b _0230AFB4 ; case 0 + b _0230AFB4 ; case 1 + b _0230AFCC ; case 2 + b _0230AFE4 ; case 3 +_0230AFB4: + ldr r3, _0230B1E0 ; =SWAP_SHOP_ONE_STAR_STR + mov r0, r7 + mov r1, #0x6c + mov r2, sb + bl DrawTextInWindow + b _0230AFF8 +_0230AFCC: + ldr r3, _0230B1E4 ; =SWAP_SHOP_TWO_STAR_STR + mov r0, r7 + mov r1, #0x6c + mov r2, sb + bl DrawTextInWindow + b _0230AFF8 +_0230AFE4: + ldr r3, _0230B1E8 ; =SWAP_SHOP_THREE_STAR_STR + mov r0, r7 + mov r1, #0x6c + mov r2, sb + bl DrawTextInWindow +_0230AFF8: + ldr r0, [r6] + cmp r0, #0 + bne _0230B144 + ldr r3, _0230B1EC ; =0x000004B2 + mov r0, r7 + mov r1, #0x18 + mov r2, #0x28 + mov r4, #0 + bl AppendStandardStringToMission + ldr r3, _0230B1F0 ; =0x000004B3 + mov r0, r7 + mov r1, #0x7a + mov r2, #0x28 + bl AppendStandardStringToMission + mov r0, r8 + add sb, sb, #0x30 + bl GetExclusiveItemType + cmp r0, #0xa + addls pc, pc, r0, lsl #2 + b _0230B0E0 +_0230B048: ; jump table + b _0230B0E0 ; case 0 + b _0230B0E0 ; case 1 + b _0230B0E0 ; case 2 + b _0230B074 ; case 3 + b _0230B088 ; case 4 + b _0230B0E0 ; case 5 + b _0230B0E0 ; case 6 + b _0230B074 ; case 7 + b _0230B088 ; case 8 + b _0230B0E0 ; case 9 + b _0230B09C ; case 10 +_0230B074: + sub r0, r8, #2 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + mov r4, #2 + b _0230B0E0 +_0230B088: + sub r0, r8, #3 + mov r0, r0, lsl #0x10 + mov r5, r0, asr #0x10 + mov r4, #3 + b _0230B0E0 +_0230B09C: + sub r0, r8, #0x1bc + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #7 + ldrls r5, _0230B1F4 ; =0x000002FE + movls r4, #3 + bls _0230B0E0 + sub r0, r8, #0x1c4 + mov r0, r0, lsl #0x10 + mov r0, r0, asr #0x10 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #3 + ldrls r5, _0230B1F8 ; =0x00000336 + movls r4, #3 +_0230B0E0: + mov sl, #0 + add fp, sp, #0x10c + b _0230B138 +_0230B0EC: + mov r0, r5 + str r5, [sp, #0x11c] + bl CountNbItemsOfTypeInBag + mov r8, r0 + mov r0, r5 + bl CountNbItemsOfTypeInStorage + add r0, r8, r0 + str r0, [sp, #0x130] + ldr r3, _0230B1FC ; =0x000004B5 + mov r0, r7 + mov r1, #0x18 + mov r2, sb + str fp, [sp] + bl sub_020262E0 + add r0, r5, #1 + mov r0, r0, lsl #0x10 + add sb, sb, #0xc + mov r5, r0, asr #0x10 + add sl, sl, #1 +_0230B138: + cmp sl, r4 + blt _0230B0EC + b _0230B184 +_0230B144: + cmp r0, #1 + bne _0230B184 + ldr r3, _0230B1EC ; =0x000004B2 + mov r0, r7 + mov r1, #0x18 + mov r2, #0x28 + bl AppendStandardStringToMission + ldrh r0, [r6, #6] + ldr r3, _0230B200 ; =0x000004B4 + add r4, sp, #0x10c + str r0, [sp, #0x130] + mov r0, r7 + mov r1, #0x18 + mov r2, #0x40 + str r4, [sp] + bl sub_020262E0 +_0230B184: + ldrh r0, [r6, #0xc] + add r1, sp, #0x10c + ldr r3, _0230B204 ; =0x000004B6 + str r0, [sp, #0x130] + str r1, [sp] + mov r0, r7 + mov r1, #0x1c + mov r2, #0x7e + bl sub_020262E0 + ldrh r0, [r6, #0xe] + ldr r3, _0230B208 ; =0x000004B7 + add r4, sp, #0x10c + str r0, [sp, #0x130] + mov r0, r7 + mov r1, #0x1c + mov r2, #0x8a + str r4, [sp] + bl sub_020262E0 + mov r0, r7 + bl UpdateWindow + add sp, sp, #0x15c + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +#ifdef JAPAN +#define GET_EXCLUSIVE_ITEM_REQUIREMENTS_OFFSET 0x3528 +#else +#define GET_EXCLUSIVE_ITEM_REQUIREMENTS_OFFSET 0 +#endif +_0230B1DC: .word EXCLUSIVE_ITEM_REQUIREMENTS_PTR +_0230B1E0: .word SWAP_SHOP_ONE_STAR_STR +_0230B1E4: .word SWAP_SHOP_TWO_STAR_STR +_0230B1E8: .word SWAP_SHOP_THREE_STAR_STR +_0230B1EC: .word 0x000004B2 + GET_EXCLUSIVE_ITEM_REQUIREMENTS_OFFSET +_0230B1F0: .word 0x000004B3 + GET_EXCLUSIVE_ITEM_REQUIREMENTS_OFFSET +_0230B1F4: .word 0x000002FE +_0230B1F8: .word 0x00000336 +_0230B1FC: .word 0x000004B5 + GET_EXCLUSIVE_ITEM_REQUIREMENTS_OFFSET +_0230B200: .word 0x000004B4 + GET_EXCLUSIVE_ITEM_REQUIREMENTS_OFFSET +_0230B204: .word 0x000004B6 + GET_EXCLUSIVE_ITEM_REQUIREMENTS_OFFSET +_0230B208: .word 0x000004B7 + GET_EXCLUSIVE_ITEM_REQUIREMENTS_OFFSET + arm_func_end GetExclusiveItemRequirements + + arm_func_start SwapShopInventoryManager +SwapShopInventoryManager: ; 0x0230B20C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + sub sp, sp, #0x20 + ldr r2, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS + mov r4, r0 + ldr r0, [r2, #4] + mov r8, r1 + cmp r0, #0 + ldr r5, _0230B668 ; =0x00401A33 + mov r6, #0 + ldr r7, _0230B66C ; =ov11_0230BD5C + bne _0230B24C + ldr r0, _0230B670 ; =0x000046D4 + mov r1, #8 + bl MemAlloc + ldr r1, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS + str r0, [r1, #4] +_0230B24C: + ldr r0, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + str r4, [r0] + bl ov11_0230BF98 + bl LoadSynthBin + ldr sb, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS + mov r2, #0 + ldr r3, [sb, #4] + mov r1, #0x10 + add r3, r3, #0x4000 + strb r0, [r3, #0x6c4] + ldr r0, [sb, #4] + cmp r4, #3 + add r0, r0, #0x4000 + str r2, [r0, #0x6c8] + ldr r0, [sb, #4] + add r0, r0, #0x4000 + str r2, [r0, #0x6cc] + ldr r0, [sb, #4] + add r0, r0, #0x4000 + str r1, [r0, #0x638] + addls pc, pc, r4, lsl #2 + b _0230B474 +_0230B2A8: ; jump table + b _0230B2B8 ; case 0 + b _0230B2EC ; case 1 + b _0230B308 ; case 2 + b _0230B428 ; case 3 +_0230B2B8: + bl ov11_0230C3CC + bl ov11_0230C61C + mov r0, sb + ldr r0, [r0, #4] + add r0, r0, #0xe6 + add r0, r0, #0x4500 + bl GetCroagunkItemTemplates + mov r0, sb + ldr r0, [r0, #4] + ldr r1, _0230B674 ; =0x000003A6 + add r0, r0, #0x4600 + strh r1, [r0, #0x34] + b _0230B474 +_0230B2EC: + bl ov11_0230C4D4 + mov r0, sb + ldr r0, [r0, #4] + ldr r1, _0230B678 ; =0x000003A7 + add r0, r0, #0x4600 + strh r1, [r0, #0x34] + b _0230B474 +_0230B308: + mov r0, r8, lsl #0x10 + mov r0, r0, asr #0x10 + bl sub_02011420 + mov sb, #0 + mov sl, sb + str r0, [sp, #0x14] + mov fp, sb + b _0230B370 +_0230B328: + ldr r1, [r1] + mov r0, sl, lsl #1 + ldrsh r0, [r1, r0] + bl GetExclusiveItemType + cmp r0, #1 + blt _0230B348 + cmp r0, #4 + ble _0230B36C +_0230B348: + ldr r1, [sp, #0x14] + mov r0, sb, lsl #0x10 + ldr r2, [r1] + mov r1, sl, lsl #1 + ldrh r2, [r2, r1] + mov r1, fp + mov r0, r0, lsr #0x10 + bl ov11_0230C924 + add sb, sb, #1 +_0230B36C: + add sl, sl, #1 +_0230B370: + ldr r1, [sp, #0x14] + ldr r0, [r1, #4] + cmp sl, r0 + blt _0230B328 + mov sl, #0 + mov fp, sl + b _0230B3D4 +_0230B38C: + ldr r1, [r0] + mov r0, sl, lsl #1 + ldrsh r0, [r1, r0] + bl GetExclusiveItemType + cmp r0, #1 + blt _0230B3D0 + cmp r0, #4 + bgt _0230B3D0 + ldr r1, [sp, #0x14] + mov r0, sb, lsl #0x10 + ldr r2, [r1] + mov r1, sl, lsl #1 + ldrh r2, [r2, r1] + mov r1, fp + mov r0, r0, lsr #0x10 + bl ov11_0230C924 + add sb, sb, #1 +_0230B3D0: + add sl, sl, #1 +_0230B3D4: + ldr r0, [sp, #0x14] + ldr r2, [r0, #4] + cmp sl, r2 + blt _0230B38C + ldr r1, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS + add r0, sp, #0x14 + ldr r1, [r1, #4] + add r1, r1, #0x4600 + strh r2, [r1, #0x26] + bl SwapShopFreeDoublePointer + ldr r1, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS + mov r0, r8, lsl #0x10 + ldr r2, [r1, #4] + mov r3, r0, asr #0x10 + add r0, r2, #0x4000 + str r3, [r0, #0x63c] + ldr r0, [r1, #4] +#ifdef JAPAN + ldr r1, _0230CC20_JP ; =0x000032B2 +#else + mov r1, #0x3a8 +#endif + add r0, r0, #0x4600 + strh r1, [r0, #0x34] + b _0230B474 +_0230B428: + add r1, sp, #0xc + add r2, sp, #0xe + mov r0, #1 + bl ov11_0230C1D0 + mov r3, sb + ldr r1, [r3, #4] + ldr r7, _0230B67C ; =0x0000032F + add r1, r1, #0x4600 + strh r0, [r1, #0x26] + ldr r0, [r3, #4] + ldr r2, _0230B680 ; =0x80040004 + add r0, r0, #0x4600 + strh r7, [r0, #0x34] + ldr r0, [r3, #4] + ldr r6, _0230B684 ; =ov11_0230B78C + add r0, r0, #0x4600 + ldr r7, _0230B688 ; =ov11_0230BE34 + strh r8, [r0, #0x28] + orr r5, r5, r2 +_0230B474: + cmp r4, #0 + bne _0230B5A8 + ldr r0, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS + mov r1, #6 + ldrsh r2, [r0] + ldr r0, [r0, #4] + add r0, r0, #0xe6 + smulbb r8, r2, r1 + add sb, r0, #0x1400 + ldrh r0, [sb, r8] + add sl, sb, r8 + bl ov11_0230C9EC + ldr r1, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS + str r0, [sp, #0x18] + ldrh r0, [r1] + bl ov11_0230C970 + strh r0, [sp, #0x1c] + ldrh r0, [sb, r8] + cmp r0, #1 + movne r0, #0 + strneh r0, [sp, #0x1e] + bne _0230B4E8 + ldr r0, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS + ldrh r1, [sl, #2] + ldr r0, [r0, #4] + add r0, r0, r1, lsl #3 + add r0, r0, #0x4500 + ldrh r0, [r0, #0xea] + strh r0, [sp, #0x1e] +_0230B4E8: + add r0, sp, #0x18 + bl ov11_0230AE10 + ldr r0, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS + add r1, sp, #0x12 + ldr r2, [r0, #4] + ldrsh r8, [r0] + add r3, r2, #0x4600 + add r2, sp, #0x10 + mov r0, #0 + strh r8, [r3, #0xd0] + bl ov11_0230C1D0 + ldr fp, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS + ldrh r2, [sp, #0x12] + ldr r0, [fp, #4] + ldrh r1, [sp, #0x10] + add r0, r0, #0x4600 + ldrh r8, [r0, #0x26] + add sb, r2, r1 + mov sl, #0 + b _0230B5A0 +_0230B538: + mov r0, sl, lsl #0x10 + mov r1, r0, lsr #0x10 + ldr r2, [fp, #4] + mov r0, #6 + mla r0, r1, r0, r2 + add r0, r0, #0x1400 + ldrh r0, [r0, #0xe6] + bl ov11_0230C9EC + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + cmp r0, #1 + bne _0230B59C + ldr r0, [fp, #4] + mov r1, #6 + mla r1, sl, r1, r0 + add r1, r1, #0x1400 + ldrh r1, [r1, #0xe8] + add r1, r0, r1, lsl #3 + add r1, r1, #0x4500 + ldrh r1, [r1, #0xea] + cmp r1, sb + addgt r0, r0, sl + addgt r1, r0, #0x1000 + movgt r0, #2 + strgtb r0, [r1, #0xb8] +_0230B59C: + add sl, sl, #1 +_0230B5A0: + cmp sl, r8 + blt _0230B538 +_0230B5A8: + ldr r8, _0230B664 ; =SWAP_SHOP_INVENTORY_PTRS + mov r1, r5 + ldr sb, [r8, #4] + mov r3, r7 + add r2, sb, #0x4600 + ldrh r2, [r2, #0x26] + ldr r0, _0230B68C ; =ov11_02322FE4 + mov r5, #8 + str r2, [sb, #4] + ldr r2, [r8, #4] + ldrsh r7, [r8] + add r2, r2, #0x4000 + str r7, [r2, #0x62c] + ldr sb, [r8, #4] + add r2, sb, #0xb8 + add r7, r2, #0x1000 + add r2, sb, #0x4000 + str r7, [r2, #0x68c] + ldr r2, [r8, #4] + str r6, [sp] + ldr r6, [r2, #4] + add r2, r2, #0x22c + str r6, [sp, #4] + add r2, r2, #0x4400 + str r5, [sp, #8] + bl CreateCollectionMenu + mov r2, r8 + ldr r1, [r2, #4] + cmp r4, #3 + add r1, r1, #0x1000 + strb r0, [r1, #0x4e4] + bne _0230B65C + ldr r0, [r2, #4] + mov r1, #1 + add r0, r0, #0x1400 + ldrsb r0, [r0, #0xe4] + bl SetCollectionMenuField0x1C8 + mov r0, r8 + ldr r0, [r0, #4] + ldr r1, _0230B690 ; =ov11_0230BF38 + add r0, r0, #0x1400 + ldrsb r0, [r0, #0xe4] + bl SetCollectionMenuField0x1A4 + bl ov11_0230CAA4 + bl ov11_0230C9F8 +_0230B65C: + add sp, sp, #0x20 + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230B664: .word SWAP_SHOP_INVENTORY_PTRS +_0230B668: .word 0x00401A33 +_0230B66C: .word ov11_0230BD5C +_0230B670: .word 0x000046D4 +#ifdef JAPAN +_0230B674: .word 0x000032B0 +_0230B678: .word 0x000032B1 +_0230CC20_JP: .word 0x000032B2 +_0230B67C: .word 0x000031F4 +#else +_0230B674: .word 0x000003A6 +_0230B678: .word 0x000003A7 +_0230B67C: .word 0x0000032F +#endif +_0230B680: .word 0x80040004 +_0230B684: .word ov11_0230B78C +_0230B688: .word ov11_0230BE34 +_0230B68C: .word ov11_02322FE4 +_0230B690: .word ov11_0230BF38 + arm_func_end SwapShopInventoryManager + + arm_func_start ov11_0230B694 +ov11_0230B694: ; 0x0230B694 + stmdb sp!, {r4, lr} + ldr r0, _0230B71C ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + cmp r0, #0 + bne _0230B6BC + ldr r0, _0230B720 ; =0x000046D4 + mov r1, #8 + bl MemAlloc + ldr r1, _0230B71C ; =SWAP_SHOP_INVENTORY_PTRS + str r0, [r1, #4] +_0230B6BC: + bl LoadSynthBin + mov r4, r0 + bl ov11_0230BF98 + bl ov11_0230C3CC + bl ov11_0230C61C + mov r0, #0 + bl GetCroagunkItemTemplates + ldr r1, _0230B71C ; =SWAP_SHOP_INVENTORY_PTRS + cmp r4, #0 + ldr r1, [r1, #4] + add r1, r1, #0x4600 + ldrh r1, [r1, #0x26] + add r4, r1, r0 + beq _0230B6F8 + bl CloseSynthBin +_0230B6F8: + ldr r0, _0230B71C ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + bl MemFree + ldr r1, _0230B71C ; =SWAP_SHOP_INVENTORY_PTRS + mov r0, #0 + str r0, [r1, #4] + cmp r4, #0 + movne r0, #1 + ldmia sp!, {r4, pc} + .align 2, 0 +_0230B71C: .word SWAP_SHOP_INVENTORY_PTRS +_0230B720: .word 0x000046D4 + arm_func_end ov11_0230B694 + + arm_func_start ov11_0230B724 +ov11_0230B724: ; 0x0230B724 + stmdb sp!, {r4, lr} + ldr r0, _0230B784 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + cmp r0, #0 + bne _0230B74C + ldr r0, _0230B788 ; =0x000046D4 + mov r1, #8 + bl MemAlloc + ldr r1, _0230B784 ; =SWAP_SHOP_INVENTORY_PTRS + str r0, [r1, #4] +_0230B74C: + bl ov11_0230BF98 + bl ov11_0230C4D4 + ldr r0, _0230B784 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + add r1, r0, #0x4600 + ldrh r4, [r1, #0x26] + bl MemFree + ldr r0, _0230B784 ; =SWAP_SHOP_INVENTORY_PTRS + mov r1, #0 + str r1, [r0, #4] + cmp r4, #0 + movne r1, #1 + and r0, r1, #0xff + ldmia sp!, {r4, pc} + .align 2, 0 +_0230B784: .word SWAP_SHOP_INVENTORY_PTRS +_0230B788: .word 0x000046D4 + arm_func_end ov11_0230B724 + + arm_func_start ov11_0230B78C +ov11_0230B78C: ; 0x0230B78C + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _0230B870 ; =SWAP_SHOP_INVENTORY_PTRS + tst r0, #0x400 + ldr r4, [r1, #4] + beq _0230B868 + add r0, r4, #0x1400 + ldrsb r0, [r0, #0xe4] + bl GetWindowIdSelectedMenuItemIdx + add r1, r4, #0xe6 + add r2, r1, #0x1400 + mov r1, #6 + mla r5, r0, r1, r2 + ldrb r0, [r5, #4] + cmp r0, #0 + beq _0230B7E8 + mov r0, r1 + bl PlaySeVolumeWrapper + mov r1, #0 + strb r1, [r5, #4] + add r0, r4, #0x1400 + ldrsb r0, [r0, #0xe4] + bl sub_0202D07C + b _0230B83C +_0230B7E8: + bl ov11_0230B874 + add r1, r4, #0x4600 + ldrh r1, [r1, #0x28] + cmp r0, r1 + bge _0230B834 + mov r0, #6 + bl PlaySeVolumeWrapper + mov r0, #1 + strb r0, [r5, #4] + bl ov11_0230B874 + add r1, r4, #0x4600 + ldrh r1, [r1, #0x28] + cmp r1, r0 + bne _0230B83C + add r0, r4, #0x1400 + ldrsb r0, [r0, #0xe4] + mov r1, #1 + bl sub_0202D07C + b _0230B83C +_0230B834: + mov r0, #2 + bl PlaySeVolumeWrapper +_0230B83C: + ldr r0, _0230B870 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r1, [r0, #4] + add r0, r1, #0x4000 + ldr r0, [r0, #0x6c8] + cmp r0, #0 + beq _0230B860 + add r0, r1, #0x2c8 + add r0, r0, #0x4400 + bl sub_02047188 +_0230B860: + mov r0, #1 + ldmia sp!, {r3, r4, r5, pc} +_0230B868: + mov r0, #0 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230B870: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230B78C + + arm_func_start ov11_0230B874 +ov11_0230B874: ; 0x0230B874 + stmdb sp!, {r3, lr} + ldr r1, _0230B8BC ; =SWAP_SHOP_INVENTORY_PTRS + mov r0, #0 + ldr ip, [r1, #4] + mov r3, r0 + add r1, ip, #0x4600 + ldrh lr, [r1, #0x26] + mov r1, #6 + b _0230B8B0 +_0230B898: + mla r2, r3, r1, ip + add r2, r2, #0x1000 + ldrb r2, [r2, #0x4ea] + add r3, r3, #1 + cmp r2, #0 + addne r0, r0, #1 +_0230B8B0: + cmp r3, lr + blt _0230B898 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230B8BC: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230B874 + + arm_func_start ov11_0230B8C0 +ov11_0230B8C0: ; 0x0230B8C0 + stmdb sp!, {r3, r4, r5, lr} + ldr r1, _0230B910 ; =SWAP_SHOP_INVENTORY_PTRS + mov r4, r0 + ldr r0, [r1, #4] + add r0, r0, #0x1400 + ldrsb r0, [r0, #0xe4] + bl sub_0202D0EC + mov r5, r0 + mov r0, r5, lsl #0x10 + mov r0, r0, lsr #0x10 + bl ov11_0230C970 + ldr r1, _0230B910 ; =SWAP_SHOP_INVENTORY_PTRS + strh r0, [r4] + ldr r0, [r1, #4] + add r0, r0, r5, lsl #1 + add r0, r0, #0x2d00 + ldrh r0, [r0, #0xee] + strh r0, [r4, #2] + ldrsh r0, [r4] + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230B910: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230B8C0 + + arm_func_start ov11_0230B914 +ov11_0230B914: ; 0x0230B914 + stmdb sp!, {r3, lr} + ldr r0, _0230B954 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + add r0, r0, #0x1400 + ldrsb r0, [r0, #0xe4] + bl sub_0202D0EC + ldr r1, _0230B954 ; =SWAP_SHOP_INVENTORY_PTRS + mov r0, r0, lsl #0x10 + ldr r2, [r1, #4] + mov r1, r0, lsr #0x10 + mov r0, #6 + mla r0, r1, r0, r2 + add r0, r0, #0x1400 + ldrh r0, [r0, #0xe6] + bl ov11_0230C9EC + ldmia sp!, {r3, pc} + .align 2, 0 +_0230B954: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230B914 + + arm_func_start ov11_0230B958 +ov11_0230B958: ; 0x0230B958 + stmdb sp!, {r3, lr} + ldr r0, _0230B9B8 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + add r0, r0, #0x1400 + ldrsb r0, [r0, #0xe4] + bl sub_0202D0EC + ldr r2, _0230B9B8 ; =SWAP_SHOP_INVENTORY_PTRS + mov r1, r0, lsl #0x10 + mov r3, r1, lsr #0x10 + ldr ip, [r2, #4] + mov r1, #6 + mla r2, r3, r1, ip + add r2, r2, #0x1400 + ldrh r2, [r2, #0xe6] + cmp r2, #1 + movne r0, #0 + ldmneia sp!, {r3, pc} + mla r1, r0, r1, ip + add r0, r1, #0x1400 + ldrh r0, [r0, #0xe8] + add r0, ip, r0, lsl #3 + add r0, r0, #0x4500 + ldrh r0, [r0, #0xea] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230B9B8: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230B958 + + arm_func_start ov11_0230B9BC +ov11_0230B9BC: ; 0x0230B9BC + stmdb sp!, {r3, lr} + ldr r0, _0230BA60 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + bl ov11_0230AED0 + bl ov11_0230CAE4 + bl ov11_0230CA38 + ldr r0, _0230BA60 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + add r0, r0, #0x4000 + ldrb r0, [r0, #0x6c4] + cmp r0, #0 + beq _0230B9F8 + bl CloseSynthBin +_0230B9F8: + ldr r0, _0230BA60 ; =SWAP_SHOP_INVENTORY_PTRS + mvn r1, #1 + ldr r0, [r0, #4] + add r0, r0, #0x1400 + ldrsb r0, [r0, #0xe4] + cmp r0, r1 + beq _0230BA44 + bl sub_0202D0EC + ldr r1, _0230BA60 ; =SWAP_SHOP_INVENTORY_PTRS + strh r0, [r1] + ldr r0, [r1, #4] + add r0, r0, #0x1400 + ldrsb r0, [r0, #0xe4] + bl sub_0202836C + ldr r0, _0230BA60 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + add r0, r0, #0x1400 + ldrsb r0, [r0, #0xe4] + bl CloseCollectionMenu +_0230BA44: + ldr r0, _0230BA60 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + bl MemFree + ldr r0, _0230BA60 ; =SWAP_SHOP_INVENTORY_PTRS + mov r1, #0 + str r1, [r0, #4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230BA60: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230B9BC + + arm_func_start ov11_0230BA64 +ov11_0230BA64: ; 0x0230BA64 + stmdb sp!, {r3, r4, r5, lr} + sub sp, sp, #8 + ldr r0, _0230BB18 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r4, [r0, #4] + cmp r4, #0 + moveq r0, #0 + beq _0230BB10 + add r0, r4, #0x1400 + ldrsb r0, [r0, #0xe4] + bl sub_0202D0EC + mov r5, r0 + bl ov11_0230AE84 + cmp r0, #0 + addne r0, r4, #0x4600 + ldrneh r0, [r0, #0xd0] + cmpne r0, r5 + beq _0230BAD8 + bl ov11_0230B914 + mov r1, r5, lsl #0x10 + str r0, [sp] + mov r0, r1, lsr #0x10 + bl ov11_0230C970 + strh r0, [sp, #4] + bl ov11_0230B958 + strh r0, [sp, #6] + add r0, sp, #0 + bl ov11_0230AF0C + add r0, r4, #0x4600 + strh r5, [r0, #0xd0] +_0230BAD8: + add r0, r4, #0x1400 + ldrsb r0, [r0, #0xe4] + bl IsCollectionMenuActive + cmp r0, #0 + bne _0230BB0C + add r0, r4, #0x1400 + ldrsb r0, [r0, #0xe4] + bl sub_0202C75C + mvn r1, #0 + cmp r0, r1 + moveq r0, #2 + movne r0, #3 + b _0230BB10 +_0230BB0C: + mov r0, #0 +_0230BB10: + add sp, sp, #8 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0230BB18: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230BA64 + + arm_func_start ov11_0230BB1C +ov11_0230BB1C: ; 0x0230BB1C + stmdb sp!, {r3, lr} + ldr r0, _0230BB94 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + cmp r0, #0 + addne r0, r0, #0x1400 + ldrnesb r0, [r0, #0xe4] + mvnne r1, #1 + cmpne r0, r1 + ldmeqia sp!, {r3, pc} + bl sub_0202D0EC + ldr r1, _0230BB94 ; =SWAP_SHOP_INVENTORY_PTRS + strh r0, [r1] + bl ov11_0230CA38 + bl ov11_0230CAE4 + ldr r0, _0230BB94 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + add r0, r0, #0x1400 + ldrsb r0, [r0, #0xe4] + bl sub_0202836C + ldr r0, _0230BB94 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + add r0, r0, #0x1400 + ldrsb r0, [r0, #0xe4] + bl CloseCollectionMenu + ldr r0, _0230BB94 ; =SWAP_SHOP_INVENTORY_PTRS + mvn r1, #1 + ldr r0, [r0, #4] + add r0, r0, #0x1000 + strb r1, [r0, #0x4e4] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230BB94: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230BB1C + + arm_func_start ov11_0230BB98 +ov11_0230BB98: ; 0x0230BB98 + stmdb sp!, {r4, r5, lr} + sub sp, sp, #0xc + ldr r0, _0230BCD8 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r2, [r0, #4] + cmp r2, #0 + beq _0230BCD0 + add r0, r2, #0x1400 + ldrsb r1, [r0, #0xe4] + mvn r0, #1 + cmp r1, r0 + bne _0230BCD0 + ldr r0, [r2] + ldr r1, _0230BCDC ; =0x00401833 + ldr r3, _0230BCE0 ; =ov11_0230BD5C + cmp r0, #3 + mov r5, #0 + addls pc, pc, r0, lsl #2 + b _0230BC00 +_0230BBE0: ; jump table + b _0230BC00 ; case 0 + b _0230BC00 ; case 1 + b _0230BC00 ; case 2 + b _0230BBF0 ; case 3 +_0230BBF0: + ldr r0, _0230BCE4 ; =0x80040004 + ldr r5, _0230BCE8 ; =ov11_0230B78C + ldr r3, _0230BCEC ; =ov11_0230BE34 + orr r1, r1, r0 +_0230BC00: + ldr ip, _0230BCD8 ; =SWAP_SHOP_INVENTORY_PTRS + add r2, r2, #0x4000 + ldrsh r4, [ip] + ldr r0, _0230BCF0 ; =ov11_02322FE4 + mov lr, #8 + str r4, [r2, #0x62c] + ldr r2, [ip, #4] + str r5, [sp] + ldr ip, [r2, #4] + add r2, r2, #0x22c + add r2, r2, #0x4400 + stmib sp, {ip, lr} + bl CreateCollectionMenu + ldr r2, _0230BCD8 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r1, [r2, #4] + add r1, r1, #0x1000 + strb r0, [r1, #0x4e4] + ldr r1, [r2, #4] + ldr r0, [r1] + cmp r0, #3 + bne _0230BCD0 + add r0, r1, #0x1400 + ldrsb r0, [r0, #0xe4] + mov r1, #1 + bl SetCollectionMenuField0x1C8 + ldr r0, _0230BCD8 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r1, _0230BCF4 ; =ov11_0230BF38 + ldr r0, [r0, #4] + add r0, r0, #0x1400 + ldrsb r0, [r0, #0xe4] + bl SetCollectionMenuField0x1A4 + bl ov11_0230CAA4 + bl ov11_0230C9F8 + ldr r0, _0230BCD8 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r4, [r0, #4] + ldr r0, [r4] + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0230BCD0 +_0230BC9C: ; jump table + b _0230BCD0 ; case 0 + b _0230BCD0 ; case 1 + b _0230BCD0 ; case 2 + b _0230BCAC ; case 3 +_0230BCAC: + bl ov11_0230B874 + add r1, r4, #0x4600 + ldrh r1, [r1, #0x28] + cmp r1, r0 + bne _0230BCD0 + add r0, r4, #0x1400 + ldrsb r0, [r0, #0xe4] + mov r1, #1 + bl sub_0202D07C +_0230BCD0: + add sp, sp, #0xc + ldmia sp!, {r4, r5, pc} + .align 2, 0 +_0230BCD8: .word SWAP_SHOP_INVENTORY_PTRS +_0230BCDC: .word 0x00401833 +_0230BCE0: .word ov11_0230BD5C +_0230BCE4: .word 0x80040004 +_0230BCE8: .word ov11_0230B78C +_0230BCEC: .word ov11_0230BE34 +_0230BCF0: .word ov11_02322FE4 +_0230BCF4: .word ov11_0230BF38 + arm_func_end ov11_0230BB98 + + arm_func_start ov11_0230BCF8 +ov11_0230BCF8: ; 0x0230BCF8 + stmdb sp!, {r3, lr} + ldr r0, _0230BD24 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + cmp r0, #0 + addne r0, r0, #0x1400 + ldrnesb r0, [r0, #0xe4] + mvnne r1, #1 + cmpne r0, r1 + ldmeqia sp!, {r3, pc} + bl sub_0202C620 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230BD24: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230BCF8 + + arm_func_start ov11_0230BD28 +ov11_0230BD28: ; 0x0230BD28 + stmdb sp!, {r3, lr} + ldr r0, _0230BD58 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + cmp r0, #0 + addne r0, r0, #0x1400 + ldrnesb r0, [r0, #0xe4] + mvnne r1, #1 + cmpne r0, r1 + moveq r0, #0 + ldmeqia sp!, {r3, pc} + bl IsCollectionMenuState3 + ldmia sp!, {r3, pc} + .align 2, 0 +_0230BD58: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230BD28 + + arm_func_start ov11_0230BD5C +ov11_0230BD5C: ; 0x0230BD5C + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #0x58 + mov r5, r1 + mov r1, r5, lsl #0x10 + mov r6, r0 + mov r0, r1, lsr #0x10 + mov r4, r2 + bl ov11_0230C970 + ldr r1, _0230BE28 ; =SWAP_SHOP_INVENTORY_PTRS + strh r0, [sp, #4] + ldr r3, [r1, #4] + mov r1, #1 + add r0, r3, r5, lsl #1 + add r0, r0, #0x2d00 + ldrh r2, [r0, #0xee] + add r0, r3, r5 + add r0, r0, #0x1000 + strh r2, [sp, #2] + strb r1, [sp] + ldrb r0, [r0, #0xb8] + add r1, sp, #0 + mov r2, #0 + tst r0, #2 + beq _0230BDEC + add r0, sp, #6 + bl MaybeGetUncoloredFormattedItemName + ldr r1, _0230BE2C ; =SWAP_SHOP_RED_TEXT_TAG_STR + mov r0, r6 + bl strcpy + add r1, sp, #6 + mov r0, r6 + bl strcat + ldr r1, _0230BE30 ; =SWAP_SHOP_UNCENTER_TEXT_TAG_STR + mov r0, r6 + bl strcat + b _0230BDF4 +_0230BDEC: + mov r0, r6 + bl MaybeGetColoredFormattedItemName +_0230BDF4: + ldr r1, _0230BE28 ; =SWAP_SHOP_INVENTORY_PTRS + mov r0, #6 + ldr r1, [r1, #4] + mla r0, r5, r0, r1 + add r0, r0, #0x1000 + ldrb r0, [r0, #0x4ea] + cmp r0, #0 + movne r1, #1 + moveq r1, #0 + mov r0, r6 + str r1, [r4] + add sp, sp, #0x58 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230BE28: .word SWAP_SHOP_INVENTORY_PTRS +_0230BE2C: .word SWAP_SHOP_RED_TEXT_TAG_STR +_0230BE30: .word SWAP_SHOP_UNCENTER_TEXT_TAG_STR + arm_func_end ov11_0230BD5C + + arm_func_start ov11_0230BE34 +ov11_0230BE34: ; 0x0230BE34 + stmdb sp!, {r4, r5, r6, lr} + sub sp, sp, #8 + ldr r3, _0230BF28 ; =SWAP_SHOP_INVENTORY_PTRS + mov r5, r1 + mov r1, r5, lsl #0x10 + mov r6, r0 + mov r0, r1, lsr #0x10 + ldr r3, [r3, #4] + mov r1, #6 + mla r1, r0, r1, r3 + add r1, r1, #0x1400 + ldrh r1, [r1, #0xe6] + mov r4, r2 + cmp r1, #4 + moveq r0, #0 + beq _0230BF20 + bl ov11_0230C970 + ldr r1, _0230BF28 ; =SWAP_SHOP_INVENTORY_PTRS + strh r0, [sp, #4] + ldr r0, [r1, #4] + add r1, sp, #0 + add r0, r0, r5, lsl #1 + add r0, r0, #0x2d00 + ldrh ip, [r0, #0xee] + mov r3, #1 + mov r0, r6 + mov r2, #0 + strh ip, [sp, #2] + strb r3, [sp] + bl MaybeGetColoredFormattedItemName + ldrsh r0, [sp, #4] + bl ov11_0230C068 + cmp r0, #3 + addls pc, pc, r0, lsl #2 + b _0230BEE8 +_0230BEC0: ; jump table + b _0230BED0 ; case 0 + b _0230BED0 ; case 1 + b _0230BED8 ; case 2 + b _0230BEE0 ; case 3 +_0230BED0: + ldr r1, _0230BF2C ; =SWAP_SHOP_CLUMSET_ONE_STAR_STR + b _0230BEEC +_0230BED8: + ldr r1, _0230BF30 ; =SWAP_SHOP_CLUMSET_TWO_STAR_STR + b _0230BEEC +_0230BEE0: + ldr r1, _0230BF34 ; =SWAP_SHOP_CLUMSET_THREE_STAR_STR + b _0230BEEC +_0230BEE8: + mov r1, #0 +_0230BEEC: + mov r0, r6 + bl strcat + ldr r1, _0230BF28 ; =SWAP_SHOP_INVENTORY_PTRS + mov r0, #6 + ldr r1, [r1, #4] + mla r0, r5, r0, r1 + add r0, r0, #0x1000 + ldrb r0, [r0, #0x4ea] + cmp r0, #0 + movne r1, #1 + moveq r1, #0 + mov r0, r6 + str r1, [r4] +_0230BF20: + add sp, sp, #8 + ldmia sp!, {r4, r5, r6, pc} + .align 2, 0 +_0230BF28: .word SWAP_SHOP_INVENTORY_PTRS +_0230BF2C: .word SWAP_SHOP_CLUMSET_ONE_STAR_STR +_0230BF30: .word SWAP_SHOP_CLUMSET_TWO_STAR_STR +_0230BF34: .word SWAP_SHOP_CLUMSET_THREE_STAR_STR + arm_func_end ov11_0230BE34 + + arm_func_start ov11_0230BF38 +ov11_0230BF38: ; 0x0230BF38 + stmdb sp!, {r3, lr} + ldr r3, _0230BF8C ; =SWAP_SHOP_INVENTORY_PTRS + mov r2, r2, lsl #0x10 + ldr ip, [r3, #4] + mov r3, r2, lsr #0x10 + mov r2, #6 + mla r2, r3, r2, ip + add r2, r2, #0x1400 + ldrh r2, [r2, #0xe6] + mov r3, r0 + cmp r2, #2 + ldreq r0, _0230BF90 ; =0x0000032F + streqh r0, [r1, #0x1c] + beq _0230BF7C + cmp r2, #3 + ldreq r0, _0230BF94 ; =0x00004623 + streqh r0, [r1, #0x1c] +_0230BF7C: + mov r0, r1 + mov r1, r3 + bl sub_0202A03C + ldmia sp!, {r3, pc} + .align 2, 0 +_0230BF8C: .word SWAP_SHOP_INVENTORY_PTRS +#if defined(EUROPE) +_0230BF90: .word 0x0000032F +_0230BF94: .word 0x00004642 +#elif defined(JAPAN) +_0230BF90: .word 0x000031F4 +_0230BF94: .word 0x00001CDF +#else +_0230BF90: .word 0x0000032F +_0230BF94: .word 0x00004623 +#endif + arm_func_end ov11_0230BF38 + + arm_func_start ov11_0230BF98 +ov11_0230BF98: ; 0x0230BF98 + stmdb sp!, {r3, r4, r5, r6, r7, lr} + mov r4, #0 + ldr r3, _0230C048 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r2, _0230C04C ; =0x0000042C + mov r0, r4 +_0230BFAC: + ldr r1, [r3, #4] + add r1, r1, r4, lsl #2 + str r0, [r1, #8] + ldr r1, [r3, #4] + add r1, r1, r4 + add r1, r1, #0x1000 + add r4, r4, #1 + strb r0, [r1, #0xb8] + cmp r4, r2 + blt _0230BFAC + ldr r2, _0230C048 ; =SWAP_SHOP_INVENTORY_PTRS + mov r5, #0 +_0230BFDC: + ldr r1, [r2, #4] + add r1, r1, r0, lsl #1 + add r1, r1, #0x3e00 + strh r5, [r1, #0x16] + ldr r1, [r2, #4] + add r1, r1, r0, lsl #1 + add r1, r1, #0x3600 + add r0, r0, #1 + strh r5, [r1, #0x46] + cmp r0, #0x3e8 + blt _0230BFDC + ldr r7, _0230C048 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r6, _0230C04C ; =0x0000042C + mov r4, #0 +_0230C014: + ldr r1, [r7, #4] + mov r0, r5, lsl #0x10 + add r1, r1, r5, lsl #1 + add r3, r1, #0x2d00 + mov r1, r4 + mov r2, r4 + mov r0, r0, lsr #0x10 + strh r4, [r3, #0xee] + bl ov11_0230C924 + add r5, r5, #1 + cmp r5, r6 + blt _0230C014 + ldmia sp!, {r3, r4, r5, r6, r7, pc} + .align 2, 0 +_0230C048: .word SWAP_SHOP_INVENTORY_PTRS +_0230C04C: .word 0x0000042C + arm_func_end ov11_0230BF98 + + arm_func_start ov11_0230C050 +ov11_0230C050: ; 0x0230C050 + ldr ip, _0230C064 ; =ov11_0230C1D0 + mov r2, r1 + mov r1, r0 + mov r0, #0 + bx ip + .align 2, 0 +_0230C064: .word ov11_0230C1D0 + arm_func_end ov11_0230C050 + + arm_func_start ov11_0230C068 +ov11_0230C068: ; 0x0230C068 + cmp r0, #0x1bc + blt _0230C080 + ldr r1, _0230C0FC ; =0x000001C3 + cmp r0, r1 + movle r0, #3 + bxle lr +_0230C080: + cmp r0, #0x1c4 + blt _0230C098 + ldr r1, _0230C100 ; =0x000001C7 + cmp r0, r1 + movle r0, #3 + bxle lr +_0230C098: + cmp r0, #0x1c8 + blt _0230C0B0 + ldr r1, _0230C104 ; =0x000001D7 + cmp r0, r1 + movle r0, #3 + bxle lr +_0230C0B0: + cmp r0, #0x1d8 + blt _0230C0C8 + ldr r1, _0230C108 ; =0x000001F9 + cmp r0, r1 + movle r0, #3 + bxle lr +_0230C0C8: + ldr r1, _0230C10C ; =0x000003F6 + cmp r0, r1 + blt _0230C0E4 + ldr r1, _0230C110 ; =0x00000547 + cmp r0, r1 + movle r0, #3 + bxle lr +_0230C0E4: + ldr r1, _0230C114 ; =0xFFFFFE06 + add r0, r0, r1 + mov r1, r0, lsr #0x1f + rsb r0, r1, r0, lsl #30 + add r0, r1, r0, ror #30 + bx lr + .align 2, 0 +_0230C0FC: .word 0x000001C3 +_0230C100: .word 0x000001C7 +_0230C104: .word 0x000001D7 +_0230C108: .word 0x000001F9 +_0230C10C: .word 0x000003F6 +_0230C110: .word 0x00000547 +_0230C114: .word 0xFFFFFE06 + arm_func_end ov11_0230C068 + + arm_func_start ov11_0230C118 +ov11_0230C118: ; 0x0230C118 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r6, _0230C1CC ; =SWAP_SHOP_INVENTORY_PTRS + mov lr, #0 + ldr r7, [r6, #4] + mov r4, lr + add r6, r7, #0xe6 + add ip, r6, #0x1400 + add r6, r7, #0x4600 + mov r5, lr + mov r7, #6 + b _0230C1AC +_0230C144: + mla sb, r5, r7, ip + ldrb r8, [sb, #4] + cmp r8, #0 + beq _0230C1A8 + ldrh r8, [sb] + cmp r8, #2 + beq _0230C16C + cmp r8, #3 + beq _0230C18C + b _0230C1A8 +_0230C16C: + cmp r1, #0 + ldrneh sb, [sb, #2] + movne r8, lr, lsl #1 + strneh sb, [r1, r8] + add r8, lr, #1 + mov lr, r8, lsl #0x10 + mov lr, lr, lsr #0x10 + b _0230C1A8 +_0230C18C: + cmp r3, #0 + movne r8, r4, lsl #1 + ldrneh sb, [sb, #2] + add r4, r4, #1 + mov r4, r4, lsl #0x10 + strneh sb, [r3, r8] + mov r4, r4, lsr #0x10 +_0230C1A8: + add r5, r5, #1 +_0230C1AC: + ldrh r8, [r6, #0x26] + cmp r5, r8 + blt _0230C144 + cmp r0, #0 + strneh lr, [r0] + cmp r2, #0 + strneh r4, [r2] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0230C1CC: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230C118 + + arm_func_start ov11_0230C1D0 +ov11_0230C1D0: ; 0x0230C1D0 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + mov r6, r0 + mov r5, r1 + mov r4, r2 + bl GetCurrentBagCapacity + mov fp, r0 + bl sub_0200FD48 + mov r8, #0 + mov r7, r0 + mov sb, r8 + mov sl, r8 + cmp r5, #0 + beq _0230C288 + b _0230C278 +_0230C208: + ldr r0, _0230C3C4 ; =BAG_ITEMS_PTR_MIRROR + ldr r1, [r0] + mov r0, #6 + mul r0, sl, r0 + ldr r1, [r1, #0x384] + add r2, r1, r0 + ldrb r0, [r1, r0] + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0230C274 + ldrsh r1, [r2, #4] + cmp r1, #0x1bc + blt _0230C274 + ldr r0, _0230C3C8 ; =0x00000547 + cmp r1, r0 + bgt _0230C274 + cmp r6, #0 + beq _0230C270 + mov r0, r8, lsl #0x10 + mov r2, sl, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r1, #2 + mov r2, r2, lsr #0x10 + bl ov11_0230C924 +_0230C270: + add r8, r8, #1 +_0230C274: + add sl, sl, #1 +_0230C278: + cmp sl, fp + blt _0230C208 + mov sl, r8 + strh r8, [r5] +_0230C288: + cmp r4, #0 + beq _0230C3BC + ldr r0, _0230C3C4 ; =BAG_ITEMS_PTR_MIRROR + mov r5, #0 + ldr r2, [r0] + ldr r0, _0230C3C8 ; =0x00000547 + b _0230C2CC +_0230C2A4: + add r1, r2, r5, lsl #1 + add r1, r1, #0x300 + ldrsh r1, [r1, #0x8a] + cmp r1, #0 + beq _0230C2D4 + cmp r1, #0x1bc + blt _0230C2C8 + cmp r1, r0 + ble _0230C2D4 +_0230C2C8: + add r5, r5, #1 +_0230C2CC: + cmp r5, r7 + blt _0230C2A4 +_0230C2D4: + cmp r5, r7 + bge _0230C31C + add r0, r2, r5, lsl #1 + add r0, r0, #0x300 + ldrsh r0, [r0, #0x8a] + cmp r0, #0 + beq _0230C31C + tst r8, #7 + cmpne r6, #0 + beq _0230C31C + mov r0, r8, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r1, #4 + mov r2, #0 + bl ov11_0230C924 + add r8, r8, #1 + add r0, r8, #7 + bic sl, r0, #7 +_0230C31C: + ldr fp, _0230C3C4 ; =BAG_ITEMS_PTR_MIRROR + b _0230C37C +_0230C324: + ldr r0, [fp] + add r0, r0, r5, lsl #1 + add r0, r0, #0x300 + ldrsh r1, [r0, #0x8a] + cmp r1, #0 + beq _0230C384 + cmp r1, #0x1bc + blt _0230C378 + ldr r0, _0230C3C8 ; =0x00000547 + cmp r1, r0 + bgt _0230C378 + cmp r6, #0 + beq _0230C374 + add r0, sl, sb + mov r0, r0, lsl #0x10 + mov r2, r5, lsl #0x10 + mov r1, #3 + mov r0, r0, lsr #0x10 + mov r2, r2, lsr #0x10 + bl ov11_0230C924 +_0230C374: + add sb, sb, #1 +_0230C378: + add r5, r5, #1 +_0230C37C: + cmp r5, r7 + blt _0230C324 +_0230C384: + strh sb, [r4] + cmp r8, #0 + ble _0230C3B8 + tst sb, #7 + cmpne r6, #0 + beq _0230C3B8 + add r0, sl, sb + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r1, #4 + mov r2, #0 + bl ov11_0230C924 + add sb, sb, #1 +_0230C3B8: + add sl, sl, sb +_0230C3BC: + mov r0, sl + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230C3C4: .word BAG_ITEMS_PTR_MIRROR +_0230C3C8: .word 0x00000547 + arm_func_end ov11_0230C1D0 + + arm_func_start ov11_0230C3CC +ov11_0230C3CC: ; 0x0230C3CC + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + bl GetCurrentBagCapacity + mov r7, r0 + bl sub_0200FD48 + mov sb, #0 + mov r8, r0 + mov sl, sb + mov fp, #1 + ldr r6, _0230C4C8 ; =BAG_ITEMS_PTR_MIRROR + mov r5, #6 + ldr r4, _0230C4CC ; =0x000003F5 + b _0230C450 +_0230C3FC: + mul r1, sl, r5 + ldr r0, [r6] + ldr r2, [r0, #0x384] + ldrb r0, [r2, r1] + add r1, r2, r1 + tst r0, #1 + movne r0, fp + moveq r0, #0 + tst r0, #0xff + beq _0230C44C + ldrsh r0, [r1, #4] + cmp r0, r4, lsr #1 + blt _0230C44C + cmp r0, r4 + bgt _0230C44C + ldrh r1, [r1, #2] + mov r2, sb + bl ov11_0230C5A0 + cmp r0, #0 + addne sb, sb, #1 +_0230C44C: + add sl, sl, #1 +_0230C450: + cmp sl, r7 + blt _0230C3FC + mov r4, #0 + ldr r6, _0230C4C8 ; =BAG_ITEMS_PTR_MIRROR + ldr r5, _0230C4CC ; =0x000003F5 + b _0230C4AC +_0230C468: + ldr r0, [r6] + add r1, r0, r4, lsl #1 + add r0, r1, #0x300 + ldrsh r0, [r0, #0x8a] + cmp r0, #0 + beq _0230C4B4 + cmp r0, r5, lsr #1 + blt _0230C4A8 + cmp r0, r5 + bgt _0230C4A8 + add r1, r1, #0xb00 + ldrh r1, [r1, #0x5a] + mov r2, sb + bl ov11_0230C5A0 + cmp r0, #0 + addne sb, sb, #1 +_0230C4A8: + add r4, r4, #1 +_0230C4AC: + cmp r4, r8 + blt _0230C468 +_0230C4B4: + ldr r0, _0230C4D0 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + add r0, r0, #0x4600 + strh sb, [r0, #0x28] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230C4C8: .word BAG_ITEMS_PTR_MIRROR +_0230C4CC: .word 0x000003F5 +_0230C4D0: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230C3CC + + arm_func_start ov11_0230C4D4 +ov11_0230C4D4: ; 0x0230C4D4 + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, lr} + bl GetCurrentBagCapacity + mov r8, #0 + mov r7, r0 + mov sb, r8 + mov r4, #6 + ldr r6, _0230C594 ; =BAG_ITEMS_PTR_MIRROR + ldr r5, _0230C598 ; =SWAP_SHOP_INVENTORY_PTRS + ldr fp, _0230C59C ; =0x0000018F + b _0230C578 +_0230C4FC: + mul sl, sb, r4 + ldr r0, [r6] + ldr r1, [r0, #0x384] + ldrb r0, [r1, sl] + add r1, r1, sl + tst r0, #1 + movne r0, #1 + moveq r0, #0 + tst r0, #0xff + beq _0230C574 + ldrsh r0, [r1, #4] + cmp r0, #0x16c + blt _0230C574 + cmp r0, fp + bgt _0230C574 + mov r0, r8, lsl #0x10 + mov r2, sb, lsl #0x10 + mov r1, #2 + mov r0, r0, lsr #0x10 + mov r2, r2, lsr #0x10 + bl ov11_0230C924 + ldr r1, [r6] + ldr r0, [r5, #4] + ldr r1, [r1, #0x384] + add r0, r0, r8, lsl #1 + add r1, r1, sl + ldrh r1, [r1, #2] + add r0, r0, #0x2d00 + add r8, r8, #1 + strh r1, [r0, #0xee] +_0230C574: + add sb, sb, #1 +_0230C578: + cmp sb, r7 + blt _0230C4FC + ldr r0, _0230C598 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + add r0, r0, #0x4600 + strh r8, [r0, #0x26] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, sl, fp, pc} + .align 2, 0 +_0230C594: .word BAG_ITEMS_PTR_MIRROR +_0230C598: .word SWAP_SHOP_INVENTORY_PTRS +_0230C59C: .word 0x0000018F + arm_func_end ov11_0230C4D4 + + arm_func_start ov11_0230C5A0 +ov11_0230C5A0: ; 0x0230C5A0 + stmdb sp!, {r4, lr} + cmp r2, #0 + beq _0230C5EC + ldr r3, _0230C618 ; =SWAP_SHOP_INVENTORY_PTRS + mov lr, #0 + ldr r4, [r3, #4] + b _0230C5E4 +_0230C5BC: + add ip, r4, lr, lsl #1 + add r3, ip, #0x3600 + ldrh r3, [r3, #0x46] + cmp r0, r3 + addeq r3, ip, #0x3e00 + ldreqh r3, [r3, #0x16] + cmpeq r1, r3 + moveq r0, #0 + ldmeqia sp!, {r4, pc} + add lr, lr, #1 +_0230C5E4: + cmp lr, r2 + blt _0230C5BC +_0230C5EC: + ldr ip, _0230C618 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r3, [ip, #4] + add r3, r3, r2, lsl #1 + add r3, r3, #0x3600 + strh r0, [r3, #0x46] + ldr r3, [ip, #4] + mov r0, #1 + add r2, r3, r2, lsl #1 + add r2, r2, #0x3e00 + strh r1, [r2, #0x16] + ldmia sp!, {r4, pc} + .align 2, 0 +_0230C618: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230C5A0 + + arm_func_start ov11_0230C61C +ov11_0230C61C: ; 0x0230C61C + stmdb sp!, {r3, r4, r5, r6, r7, r8, sb, lr} + ldr r4, _0230C8DC ; =0x000001FA + mov r5, #0 +_0230C628: + ldr r0, _0230C8E0 ; =SWAP_SHOP_INVENTORY_PTRS + ldr lr, [r0, #4] + add r0, lr, #0x4600 + ldrh ip, [r0, #0x28] + cmp ip, #0 + moveq r0, #0 + beq _0230C6C0 + mov r0, r4, lsl #0x10 + mov r3, #0 + mov r2, r0, asr #0x10 + add r1, r2, #1 + add r0, r2, #2 + mov r7, r3 + mov r8, r3 + mov sb, r3 + b _0230C698 +_0230C668: + add r6, lr, r3, lsl #1 + add r6, r6, #0x3600 + ldrh r6, [r6, #0x46] + cmp r2, r6 + moveq r2, sb + beq _0230C694 + cmp r1, r6 + moveq r1, r8 + beq _0230C694 + cmp r0, r6 + moveq r0, r7 +_0230C694: + add r3, r3, #1 +_0230C698: + cmp r3, ip + blt _0230C668 + cmp r2, #0 + cmpeq r1, #0 + bne _0230C6BC + cmp r0, #0 + moveq r0, #2 + movne r0, #1 + b _0230C6C0 +_0230C6BC: + mov r0, #0 +_0230C6C0: + cmp r0, #1 + beq _0230C834 + cmp r0, #2 + bne _0230C86C + add r0, lr, r5, lsl #1 + ldr r2, _0230C8E4 ; =0x000002FE + add r0, r0, #0x2d00 + mov r1, #0 + strh r1, [r0, #0xee] + cmp r4, r2 + bne _0230C7AC + mov r0, r5, lsl #0x10 + ldr r2, _0230C8E8 ; =0x000001BD + mov r0, r0, lsr #0x10 + bl ov11_0230C924 + add r0, r5, #1 + mov r0, r0, lsl #0x10 + ldr r2, _0230C8EC ; =0x000001BE + mov r0, r0, lsr #0x10 + mov r1, #0 + bl ov11_0230C924 + add r0, r5, #2 + mov r0, r0, lsl #0x10 + ldr r2, _0230C8F0 ; =0x000001BF + mov r0, r0, lsr #0x10 + mov r1, #0 + bl ov11_0230C924 + add r0, r5, #3 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r1, #0 + mov r2, #0x1c0 + bl ov11_0230C924 + add r0, r5, #4 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r1, #0 + ldr r2, _0230C8F4 ; =0x000001C1 + bl ov11_0230C924 + add r0, r5, #5 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r1, #0 + ldr r2, _0230C8F8 ; =0x000001C2 + bl ov11_0230C924 + add r0, r5, #6 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r1, #0 + ldr r2, _0230C8FC ; =0x000001C3 + bl ov11_0230C924 + add r0, r5, #7 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + add r5, r5, #8 + mov r1, #0 + mov r2, #0x1bc + bl ov11_0230C924 + b _0230C834 +_0230C7AC: + add r0, r2, #0x38 + cmp r4, r0 + bne _0230C818 + mov r0, r5, lsl #0x10 + ldr r2, _0230C900 ; =0x000001C5 + mov r0, r0, lsr #0x10 + bl ov11_0230C924 + add r0, r5, #1 + mov r0, r0, lsl #0x10 + ldr r2, _0230C904 ; =0x000001C6 + mov r0, r0, lsr #0x10 + mov r1, #0 + bl ov11_0230C924 + add r0, r5, #2 + mov r0, r0, lsl #0x10 + ldr r2, _0230C908 ; =0x000001C7 + mov r0, r0, lsr #0x10 + mov r1, #0 + bl ov11_0230C924 + add r0, r5, #3 + mov r0, r0, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r1, #0 + mov r2, #0x1c4 + add r5, r5, #4 + bl ov11_0230C924 + b _0230C834 +_0230C818: + add r2, r4, #3 + mov r0, r5, lsl #0x10 + mov r2, r2, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r2, r2, lsr #0x10 + add r5, r5, #1 + bl ov11_0230C924 +_0230C834: + add r1, r4, #2 + mov r0, r5, lsl #0x10 + mov r1, r1, lsl #0x10 + mov r0, r0, lsr #0x10 + mov r2, r1, lsr #0x10 + mov r1, #0 + bl ov11_0230C924 + ldr r0, _0230C8E0 ; =SWAP_SHOP_INVENTORY_PTRS + mov r1, #0 + ldr r0, [r0, #4] + add r0, r0, r5, lsl #1 + add r0, r0, #0x2d00 + strh r1, [r0, #0xee] + add r5, r5, #1 +_0230C86C: + ldr r0, _0230C90C ; =0x000003F6 + add r4, r4, #4 + cmp r4, r0 + blt _0230C628 + ldr r0, _0230C8E0 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + add r0, r0, #0xe6 + add r0, r0, #0x4500 + bl GetCroagunkItemTemplates + mov r6, r0 + mov r7, #0 + mov r4, #1 + b _0230C8C0 +_0230C8A0: + mov r0, r5, lsl #0x10 + mov r2, r7, lsl #0x10 + mov r1, r4 + mov r0, r0, lsr #0x10 + mov r2, r2, lsr #0x10 + add r5, r5, #1 + bl ov11_0230C924 + add r7, r7, #1 +_0230C8C0: + cmp r7, r6 + blt _0230C8A0 + ldr r0, _0230C8E0 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r0, [r0, #4] + add r0, r0, #0x4600 + strh r5, [r0, #0x26] + ldmia sp!, {r3, r4, r5, r6, r7, r8, sb, pc} + .align 2, 0 +_0230C8DC: .word 0x000001FA +_0230C8E0: .word SWAP_SHOP_INVENTORY_PTRS +_0230C8E4: .word 0x000002FE +_0230C8E8: .word 0x000001BD +_0230C8EC: .word 0x000001BE +_0230C8F0: .word 0x000001BF +_0230C8F4: .word 0x000001C1 +_0230C8F8: .word 0x000001C2 +_0230C8FC: .word 0x000001C3 +_0230C900: .word 0x000001C5 +_0230C904: .word 0x000001C6 +_0230C908: .word 0x000001C7 +_0230C90C: .word 0x000003F6 + arm_func_end ov11_0230C61C + + arm_func_start ov11_0230C910 +ov11_0230C910: ; 0x0230C910 + ldr r0, _0230C920 ; =SWAP_SHOP_INVENTORY_PTRS + mov r1, #0 + strh r1, [r0] + bx lr + .align 2, 0 +_0230C920: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230C910 + + arm_func_start ov11_0230C924 +ov11_0230C924: ; 0x0230C924 + stmdb sp!, {r3, lr} + mov r3, #6 + mul lr, r0, r3 + ldr r3, _0230C96C ; =SWAP_SHOP_INVENTORY_PTRS + mov ip, #0 + ldr r0, [r3, #4] + add r0, r0, lr + add r0, r0, #0x1400 + strh r1, [r0, #0xe6] + ldr r0, [r3, #4] + add r0, r0, lr + add r0, r0, #0x1400 + strh r2, [r0, #0xe8] + ldr r0, [r3, #4] + add r0, r0, lr + add r0, r0, #0x1000 + strb ip, [r0, #0x4ea] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230C96C: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230C924 + + arm_func_start ov11_0230C970 +ov11_0230C970: ; 0x0230C970 + stmdb sp!, {r3, lr} + mov r1, #6 + ldr r2, _0230C9E8 ; =SWAP_SHOP_INVENTORY_PTRS + mul r1, r0, r1 + ldr r3, [r2, #4] + add r0, r3, #0xe6 + add r2, r0, #0x1400 + ldrh r0, [r2, r1] + add r1, r2, r1 + cmp r0, #1 + beq _0230C9B0 + cmp r0, #2 + beq _0230C9C4 + cmp r0, #3 + beq _0230C9D4 + b _0230C9E0 +_0230C9B0: + ldrh r0, [r1, #2] + add r0, r3, r0, lsl #3 + add r0, r0, #0x4500 + ldrsh r0, [r0, #0xe6] + ldmia sp!, {r3, pc} +_0230C9C4: + ldrsh r0, [r1, #2] + bl GetItemAtIdx + ldrsh r0, [r0, #4] + ldmia sp!, {r3, pc} +_0230C9D4: + ldrsh r0, [r1, #2] + bl sub_02010044 + ldmia sp!, {r3, pc} +_0230C9E0: + ldrsh r0, [r1, #2] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230C9E8: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230C970 + + arm_func_start ov11_0230C9EC +ov11_0230C9EC: ; 0x0230C9EC + cmp r0, #4 + moveq r0, #4 + bx lr + arm_func_end ov11_0230C9EC + + arm_func_start ov11_0230C9F8 +ov11_0230C9F8: ; 0x0230C9F8 + stmdb sp!, {r3, lr} + ldr r0, _0230CA2C ; =SWAP_SHOP_INVENTORY_PTRS + ldr r1, [r0, #4] + add r0, r1, #0x4000 + ldr r0, [r0, #0x6cc] + cmp r0, #0 + ldmneia sp!, {r3, pc} + add r0, r1, #0x2cc + ldr r1, _0230CA30 ; =ov11_02322FF4 + ldr r2, _0230CA34 ; =ov11_0230CA7C + add r0, r0, #0x4400 + bl sub_0204707C + ldmia sp!, {r3, pc} + .align 2, 0 +_0230CA2C: .word SWAP_SHOP_INVENTORY_PTRS +_0230CA30: .word ov11_02322FF4 +_0230CA34: .word ov11_0230CA7C + arm_func_end ov11_0230C9F8 + + arm_func_start ov11_0230CA38 +ov11_0230CA38: ; 0x0230CA38 + stmdb sp!, {r3, lr} + ldr r0, _0230CA78 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r1, [r0, #4] + add r0, r1, #0x4000 + ldr r0, [r0, #0x6cc] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + add r0, r1, #0x2cc + add r0, r0, #0x4400 + bl sub_02047150 + ldr r0, _0230CA78 ; =SWAP_SHOP_INVENTORY_PTRS + mov r1, #0 + ldr r0, [r0, #4] + add r0, r0, #0x4000 + str r1, [r0, #0x6cc] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230CA78: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230CA38 + + arm_func_start ov11_0230CA7C +ov11_0230CA7C: ; 0x0230CA7C + stmdb sp!, {r4, lr} + ldr r3, _0230CAA0 ; =0x000003A9 + mov r4, r0 + mov r1, #6 + mov r2, #2 + bl AppendStandardStringToMission + mov r0, r4 + bl UpdateWindow + ldmia sp!, {r4, pc} + .align 2, 0 +#ifdef JAPAN +_0230CAA0: .word 0x000032B3 +#else +_0230CAA0: .word 0x000003A9 +#endif + arm_func_end ov11_0230CA7C + + arm_func_start ov11_0230CAA4 +ov11_0230CAA4: ; 0x0230CAA4 + stmdb sp!, {r3, lr} + ldr r0, _0230CAD8 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r1, [r0, #4] + add r0, r1, #0x4000 + ldr r0, [r0, #0x6c8] + cmp r0, #0 + ldmneia sp!, {r3, pc} + add r0, r1, #0x2c8 + ldr r1, _0230CADC ; =ov11_02322FD4 + ldr r2, _0230CAE0 ; =ov11_0230CB28 + add r0, r0, #0x4400 + bl sub_0204707C + ldmia sp!, {r3, pc} + .align 2, 0 +_0230CAD8: .word SWAP_SHOP_INVENTORY_PTRS +_0230CADC: .word ov11_02322FD4 +_0230CAE0: .word ov11_0230CB28 + arm_func_end ov11_0230CAA4 + + arm_func_start ov11_0230CAE4 +ov11_0230CAE4: ; 0x0230CAE4 + stmdb sp!, {r3, lr} + ldr r0, _0230CB24 ; =SWAP_SHOP_INVENTORY_PTRS + ldr r1, [r0, #4] + add r0, r1, #0x4000 + ldr r0, [r0, #0x6c8] + cmp r0, #0 + ldmeqia sp!, {r3, pc} + add r0, r1, #0x2c8 + add r0, r0, #0x4400 + bl sub_02047150 + ldr r0, _0230CB24 ; =SWAP_SHOP_INVENTORY_PTRS + mov r1, #0 + ldr r0, [r0, #4] + add r0, r0, #0x4000 + str r1, [r0, #0x6c8] + ldmia sp!, {r3, pc} + .align 2, 0 +_0230CB24: .word SWAP_SHOP_INVENTORY_PTRS + arm_func_end ov11_0230CAE4 + + arm_func_start ov11_0230CB28 +ov11_0230CB28: ; 0x0230CB28 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #0x54 + mov r4, r0 + add r0, sp, #4 + bl InitPreprocessorArgs + bl ov11_0230B874 + ldr r1, _0230CB84 ; =SWAP_SHOP_INVENTORY_PTRS + str r0, [sp, #0x28] + ldr r0, [r1, #4] +#ifdef JAPAN + add r2, sp, #4 + add r0, r0, #0x4600 + ldrh r1, [r0, #0x28] + ldr r3, _0230E130 ; =0x000032B4 + mov r0, r4 + str r1, [sp, #0x2c] + str r2, [sp] + mov r1, #6 + mov r2, #2 +#else + mov r2, #2 + add r0, r0, #0x4600 + ldrh r3, [r0, #0x28] + add r1, sp, #4 + mov r0, r4 + str r3, [sp, #0x2c] + str r1, [sp] + add r3, r2, #0x3a8 + mov r1, #6 +#endif + bl sub_020262E0 + mov r0, r4 + bl UpdateWindow + add sp, sp, #0x54 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_0230CB84: .word SWAP_SHOP_INVENTORY_PTRS +#ifdef JAPAN +_0230E130: .word 0x000032B4 +#endif + arm_func_end ov11_0230CB28 diff --git a/asm/overlay_11_0230CE30.s b/asm/overlay_11_0230CE30.s new file mode 100644 index 00000000..3e8e721c --- /dev/null +++ b/asm/overlay_11_0230CE30.s @@ -0,0 +1,11963 @@ + .include "asm/macros.inc" + .include "overlay_11_0230CE30.inc" + + .text + + 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_16.s b/asm/overlay_16.s index 51fc1471..c32b83f0 100644 --- a/asm/overlay_16.s +++ b/asm/overlay_16.s @@ -3113,124 +3113,3 @@ ov16_0238CC64: ; 0x0238CC64 .align 2, 0 _0238CC90: .word OVERLAY16_UNKNOWN_POINTER__NA_238CE40 arm_func_end ov16_0238CC64 - - arm_func_start ov16_0238CC94 -ov16_0238CC94: ; 0x0238CC94 - ldr r0, _0238CCA4 ; =OVERLAY16_UNKNOWN_POINTER__NA_238CE40 - ldr r0, [r0] - ldrsh r0, [r0, #0xdc] - bx lr - .align 2, 0 -_0238CCA4: .word OVERLAY16_UNKNOWN_POINTER__NA_238CE40 - arm_func_end ov16_0238CC94 - - arm_func_start ov16_0238CCA8 -ov16_0238CCA8: ; 0x0238CCA8 - ldr r0, _0238CCB8 ; =OVERLAY16_UNKNOWN_POINTER__NA_238CE40 - ldr r0, [r0] - ldrsh r0, [r0, #0xde] - bx lr - .align 2, 0 -_0238CCB8: .word OVERLAY16_UNKNOWN_POINTER__NA_238CE40 - arm_func_end ov16_0238CCA8 - - arm_func_start ov16_0238CCBC -ov16_0238CCBC: ; 0x0238CCBC - ldr r0, _0238CCD4 ; =OVERLAY16_UNKNOWN_POINTER__NA_238CE40 - ldr r0, [r0] - cmp r0, #0 - moveq r0, #0 - ldrne r0, [r0, #0xe0] - bx lr - .align 2, 0 -_0238CCD4: .word OVERLAY16_UNKNOWN_POINTER__NA_238CE40 - arm_func_end ov16_0238CCBC - - arm_func_start ov16_0238CCD8 -ov16_0238CCD8: ; 0x0238CCD8 - ldr r0, _0238CCEC ; =OVERLAY16_UNKNOWN_POINTER__NA_238CE40 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0xe0] - bx lr - .align 2, 0 -_0238CCEC: .word OVERLAY16_UNKNOWN_POINTER__NA_238CE40 - arm_func_end ov16_0238CCD8 - - arm_func_start ov16_0238CCF0 -ov16_0238CCF0: ; 0x0238CCF0 - ldr r0, _0238CD04 ; =OVERLAY16_UNKNOWN_POINTER__NA_238CE40 - mov r1, #4 - ldr r0, [r0] - str r1, [r0, #0xd8] - bx lr - .align 2, 0 -_0238CD04: .word OVERLAY16_UNKNOWN_POINTER__NA_238CE40 - arm_func_end ov16_0238CCF0 - ; 0x0238CD08 - - .rodata - .global EVO_MENU_ITEMS_CONFIRM -EVO_MENU_ITEMS_CONFIRM: -#ifdef JAPAN -#define OV16_DATA_OFFSET 0x2EA0 -#else -#define OV16_DATA_OFFSET 0 -#endif - .word 0x42B + OV16_DATA_OFFSET - .byte 0x06, 0x00, 0x00, 0x00 - .word 0x42C + OV16_DATA_OFFSET - .byte 0x07, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .global EVO_SUBMENU_ITEMS -EVO_SUBMENU_ITEMS: - .word 0x435 + OV16_DATA_OFFSET - .byte 0x03, 0x00, 0x00, 0x00 - .word 0x436 + OV16_DATA_OFFSET - .byte 0x08, 0x00, 0x00, 0x00 - .word 0x437 + OV16_DATA_OFFSET - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .global EVO_MAIN_MENU_ITEMS -EVO_MAIN_MENU_ITEMS: - .word 0x42E + OV16_DATA_OFFSET - .byte 0x03, 0x00, 0x00, 0x00 - .word 0x42F + OV16_DATA_OFFSET - .byte 0x02, 0x00, 0x00, 0x00 - .word 0x430 + OV16_DATA_OFFSET - .byte 0x01, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .hword 0x42D + OV16_DATA_OFFSET, 0x42E + OV16_DATA_OFFSET, 0x42F + OV16_DATA_OFFSET, 0x430 + OV16_DATA_OFFSET - .hword 0x431 + OV16_DATA_OFFSET, 0x432 + OV16_DATA_OFFSET, 0x433 + OV16_DATA_OFFSET, 0x434 + OV16_DATA_OFFSET, 0x438 + OV16_DATA_OFFSET, 0x439 + OV16_DATA_OFFSET, 0x43A + OV16_DATA_OFFSET, 0x43C + OV16_DATA_OFFSET - .hword 0x43D + OV16_DATA_OFFSET, 0x43E + OV16_DATA_OFFSET, 0x43F + OV16_DATA_OFFSET, 0x440 + OV16_DATA_OFFSET, 0x441 + OV16_DATA_OFFSET, 0x442 + OV16_DATA_OFFSET, 0x443 + OV16_DATA_OFFSET, 0x444 + OV16_DATA_OFFSET - .hword 0x445 + OV16_DATA_OFFSET, 0x446 + OV16_DATA_OFFSET, 0x447 + OV16_DATA_OFFSET, 0x448 + OV16_DATA_OFFSET, 0x449 + OV16_DATA_OFFSET, 0x43B + OV16_DATA_OFFSET - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x02, 0x02, 0x12, 0x10, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x16, 0x0A, 0x08, 0x03, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x1E, 0x0F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global EVO_WINDOW_PARAMS_4 -EVO_WINDOW_PARAMS_4: - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x02, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global EVO_WINDOW_PARAMS_5 -EVO_WINDOW_PARAMS_5: - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x13, 0x02, 0x0B, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global EVO_WINDOW_PARAMS_6 -EVO_WINDOW_PARAMS_6: - .byte 0x00, 0x00, 0x00, 0x00 - .byte 0x1E, 0x0F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x02, 0x02, 0x14, 0x10, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global ov16_0238CE04 -ov16_0238CE04: - .byte 0x6D, 0x65, 0x6E, 0x75 - .byte 0x4D, 0x6F, 0x6E, 0x73, 0x74, 0x65, 0x72, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x42, 0x6F - .byte 0x6F, 0x6B, 0x5F, 0x49, 0x73, 0x42, 0x75, 0x73, 0x79, 0x20, 0x62, 0x75, 0x73, 0x79, 0x0A, 0x00 - .global ov16_0238CE28 -ov16_0238CE28: - .byte 0x5B, 0x6B, 0x69, 0x6E, 0x64, 0x3A, 0x30, 0x5D, 0x00, 0x00, 0x00, 0x00 - - .data - .global OVERLAY16_UNKNOWN_POINTER__NA_238CE40 -OVERLAY16_UNKNOWN_POINTER__NA_238CE40: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/asm/overlay_16_0238CD08.s b/asm/overlay_16_0238CD08.s new file mode 100644 index 00000000..d9e94a58 --- /dev/null +++ b/asm/overlay_16_0238CD08.s @@ -0,0 +1,71 @@ + .include "asm/macros.inc" + .include "overlay_16_0238CD08.inc" + + .text + ; 0x0238CD08 + + .rodata + .global EVO_MENU_ITEMS_CONFIRM +EVO_MENU_ITEMS_CONFIRM: +#ifdef JAPAN +#define OV16_DATA_OFFSET 0x2EA0 +#else +#define OV16_DATA_OFFSET 0 +#endif + .word 0x42B + OV16_DATA_OFFSET + .byte 0x06, 0x00, 0x00, 0x00 + .word 0x42C + OV16_DATA_OFFSET + .byte 0x07, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .global EVO_SUBMENU_ITEMS +EVO_SUBMENU_ITEMS: + .word 0x435 + OV16_DATA_OFFSET + .byte 0x03, 0x00, 0x00, 0x00 + .word 0x436 + OV16_DATA_OFFSET + .byte 0x08, 0x00, 0x00, 0x00 + .word 0x437 + OV16_DATA_OFFSET + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .global EVO_MAIN_MENU_ITEMS +EVO_MAIN_MENU_ITEMS: + .word 0x42E + OV16_DATA_OFFSET + .byte 0x03, 0x00, 0x00, 0x00 + .word 0x42F + OV16_DATA_OFFSET + .byte 0x02, 0x00, 0x00, 0x00 + .word 0x430 + OV16_DATA_OFFSET + .byte 0x01, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .hword 0x42D + OV16_DATA_OFFSET, 0x42E + OV16_DATA_OFFSET, 0x42F + OV16_DATA_OFFSET, 0x430 + OV16_DATA_OFFSET + .hword 0x431 + OV16_DATA_OFFSET, 0x432 + OV16_DATA_OFFSET, 0x433 + OV16_DATA_OFFSET, 0x434 + OV16_DATA_OFFSET, 0x438 + OV16_DATA_OFFSET, 0x439 + OV16_DATA_OFFSET, 0x43A + OV16_DATA_OFFSET, 0x43C + OV16_DATA_OFFSET + .hword 0x43D + OV16_DATA_OFFSET, 0x43E + OV16_DATA_OFFSET, 0x43F + OV16_DATA_OFFSET, 0x440 + OV16_DATA_OFFSET, 0x441 + OV16_DATA_OFFSET, 0x442 + OV16_DATA_OFFSET, 0x443 + OV16_DATA_OFFSET, 0x444 + OV16_DATA_OFFSET + .hword 0x445 + OV16_DATA_OFFSET, 0x446 + OV16_DATA_OFFSET, 0x447 + OV16_DATA_OFFSET, 0x448 + OV16_DATA_OFFSET, 0x449 + OV16_DATA_OFFSET, 0x43B + OV16_DATA_OFFSET + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x02, 0x02, 0x12, 0x10, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x16, 0x0A, 0x08, 0x03, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x1E, 0x0F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global EVO_WINDOW_PARAMS_4 +EVO_WINDOW_PARAMS_4: + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x02, 0x02, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global EVO_WINDOW_PARAMS_5 +EVO_WINDOW_PARAMS_5: + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x13, 0x02, 0x0B, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global EVO_WINDOW_PARAMS_6 +EVO_WINDOW_PARAMS_6: + .byte 0x00, 0x00, 0x00, 0x00 + .byte 0x1E, 0x0F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x02, 0x02, 0x14, 0x10, 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global ov16_0238CE04 +ov16_0238CE04: + .byte 0x6D, 0x65, 0x6E, 0x75 + .byte 0x4D, 0x6F, 0x6E, 0x73, 0x74, 0x65, 0x72, 0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x42, 0x6F + .byte 0x6F, 0x6B, 0x5F, 0x49, 0x73, 0x42, 0x75, 0x73, 0x79, 0x20, 0x62, 0x75, 0x73, 0x79, 0x0A, 0x00 + .global ov16_0238CE28 +ov16_0238CE28: + .byte 0x5B, 0x6B, 0x69, 0x6E, 0x64, 0x3A, 0x30, 0x5D, 0x00, 0x00, 0x00, 0x00 + + .data + .global OVERLAY16_UNKNOWN_POINTER__NA_238CE40 +OVERLAY16_UNKNOWN_POINTER__NA_238CE40: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/asm/overlay_17_0238A754.s b/asm/overlay_17_0238A754.s index b0b313b1..5c2c90ef 100644 --- a/asm/overlay_17_0238A754.s +++ b/asm/overlay_17_0238A754.s @@ -736,1070 +736,3 @@ _0238B0E8: .align 2, 0 _0238B108: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 arm_func_end ov17_0238B0B4 - - arm_func_start ov17_0238B10C -ov17_0238B10C: ; 0x0238B10C - stmdb sp!, {r3, lr} - ldr r0, _0238B190 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r0, [r0] - ldrsb r0, [r0, #2] - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0238B190 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r0, [r0] - ldrsb r0, [r0, #2] - bl GetSimpleMenuResult__0202B870 - cmp r0, #2 - beq _0238B150 - cmp r0, #3 - beq _0238B15C - cmp r0, #4 - b _0238B184 -_0238B150: - mov r0, #0xc - bl ov17_0238B028 - ldmia sp!, {r3, pc} -_0238B15C: - bl GetGameMode - cmp r0, #4 - cmpne r0, #5 - bne _0238B178 - mov r0, #9 - bl ov17_0238B028 - ldmia sp!, {r3, pc} -_0238B178: - mov r0, #6 - bl ov17_0238B028 - ldmia sp!, {r3, pc} -_0238B184: - mov r0, #4 - bl ov17_0238B028 - ldmia sp!, {r3, pc} - .align 2, 0 -_0238B190: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B10C - - arm_func_start ov17_0238B194 -ov17_0238B194: ; 0x0238B194 - ldr r0, _0238B1B4 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r3, #3 - ldr r2, [r0] - mov r1, #5 - strh r3, [r2, #0x7e] - ldr r0, [r0] - str r1, [r0, #0x78] - bx lr - .align 2, 0 -_0238B1B4: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B194 - - arm_func_start ov17_0238B1B8 -ov17_0238B1B8: ; 0x0238B1B8 - stmdb sp!, {r3, lr} - ldr r0, _0238B1E4 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r1, #0 - ldr r0, [r0] - strh r1, [r0, #0x7e] - bl ov17_0238A278 - ldr r0, _0238B1E4 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r1, #1 - ldr r0, [r0] - str r1, [r0, #0x6c] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238B1E4: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B1B8 - - arm_func_start ov17_0238B1E8 -ov17_0238B1E8: ; 0x0238B1E8 - ldr r0, _0238B208 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r3, #3 - ldr r2, [r0] - mov r1, #7 - strh r3, [r2, #0x7e] - ldr r0, [r0] - str r1, [r0, #0x78] - bx lr - .align 2, 0 -_0238B208: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B1E8 - - arm_func_start ov17_0238B20C -ov17_0238B20C: ; 0x0238B20C - ldr r0, _0238B220 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r1, #8 - ldr r0, [r0] - str r1, [r0, #0x78] - bx lr - .align 2, 0 -_0238B220: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B20C - - arm_func_start ov17_0238B224 -ov17_0238B224: ; 0x0238B224 - ldr r0, _0238B238 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x78] - bx lr - .align 2, 0 -_0238B238: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B224 - - arm_func_start ov17_0238B23C -ov17_0238B23C: ; 0x0238B23C - ldr r0, _0238B25C ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r3, #3 - ldr r2, [r0] - mov r1, #0xa - strh r3, [r2, #0x7e] - ldr r0, [r0] - str r1, [r0, #0x78] - bx lr - .align 2, 0 -_0238B25C: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B23C - - arm_func_start ov17_0238B260 -ov17_0238B260: ; 0x0238B260 - ldr r0, _0238B274 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r1, #0xb - ldr r0, [r0] - str r1, [r0, #0x78] - bx lr - .align 2, 0 -_0238B274: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B260 - - arm_func_start ov17_0238B278 -ov17_0238B278: ; 0x0238B278 - ldr r0, _0238B28C ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x78] - bx lr - .align 2, 0 -_0238B28C: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B278 - - arm_func_start ov17_0238B290 -ov17_0238B290: ; 0x0238B290 - ldr r0, _0238B2B0 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r3, #0x20 - ldr r2, [r0] - mov r1, #0xd - strh r3, [r2, #0x7e] - ldr r0, [r0] - str r1, [r0, #0x78] - bx lr - .align 2, 0 -_0238B2B0: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B290 - - arm_func_start ov17_0238B2B4 -ov17_0238B2B4: ; 0x0238B2B4 - stmdb sp!, {r3, lr} - bl sub_0203A5A8 - cmp r0, #0 - beq _0238B31C - bl sub_0203A9EC - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r1, sp, #0 - mov r0, #0 - bl GetPressedButtons - ldrh r0, [sp] - tst r0, #8 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl PlaySeVolumeWrapper - bl sub_0203AAB0 - ldr r1, _0238B368 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r1, [r1] - add r1, r1, #0x200 - strh r0, [r1, #0x58] - bl sub_0203A5F0 - ldr r0, _0238B368 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r1, #0x1e - ldr r0, [r0] - str r1, [r0, #0x78] - ldmia sp!, {r3, pc} -_0238B31C: - bl sub_0203AA20 - mvn r1, #0 - cmp r0, r1 - bne _0238B33C - bl sub_0203A51C - mov r0, #0 - bl ov17_0238B028 - ldmia sp!, {r3, pc} -_0238B33C: - ldr r2, _0238B368 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r1, [r2] - add r1, r1, #0x200 - strh r0, [r1, #0x58] - ldr r0, [r2] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x58] - bl sub_0203FA64 - mov r0, #0xe - bl ov17_0238B028 - ldmia sp!, {r3, pc} - .align 2, 0 -_0238B368: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B2B4 - - arm_func_start ov17_0238B36C -ov17_0238B36C: ; 0x0238B36C - ldr r0, _0238B38C ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r3, #0x28 - ldr r2, [r0] - mov r1, #0xf - strh r3, [r2, #0x7e] - ldr r0, [r0] - str r1, [r0, #0x78] - bx lr - .align 2, 0 -_0238B38C: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B36C - - arm_func_start ov17_0238B390 -ov17_0238B390: ; 0x0238B390 - stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} - ldr r0, _0238B4CC ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - ldr r0, _0238B4CC ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl GetSimpleMenuResult__0202B870 - sub r0, r0, #5 - cmp r0, #7 - addls pc, pc, r0, lsl #2 - b _0238B4BC -_0238B3CC: ; jump table - b _0238B3EC ; case 0 - b _0238B3F8 ; case 1 - b _0238B46C ; case 2 - b _0238B478 ; case 3 - b _0238B484 ; case 4 - b _0238B490 ; case 5 - b _0238B49C ; case 6 - b _0238B4BC ; case 7 -_0238B3EC: - mov r0, #0x10 - bl ov17_0238B028 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0238B3F8: - mov sl, #0 - ldr r6, _0238B4CC ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r4, _0238B4D0 ; =0x0000022B - ldr r7, _0238B4D4 ; =TEAM_MEMBER_TABLE_PTR - mov r8, sl - mov sb, #1 - mov r5, #0x44 -_0238B414: - smulbb r0, sl, r5 - ldr r1, [r7] - ldrb r0, [r1, r0] - tst r0, #1 - movne r0, sb - moveq r0, r8 - tst r0, #0xff - ldrne r0, [r6] - addne r0, r0, #0x200 - ldrnesh r0, [r0, #0x58] - cmpne r0, sl - beq _0238B44C - mov r0, sl - bl sub_02056410 -_0238B44C: - add r0, sl, #1 - mov r0, r0, lsl #0x10 - cmp r4, r0, asr #16 - mov sl, r0, asr #0x10 - bgt _0238B414 - mov r0, #0x13 - bl ov17_0238B028 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0238B46C: - mov r0, #0x15 - bl ov17_0238B028 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0238B478: - mov r0, #0x18 - bl ov17_0238B028 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0238B484: - mov r0, #0x1e - bl ov17_0238B028 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0238B490: - mov r0, #0x20 - bl ov17_0238B028 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0238B49C: - ldr r0, _0238B4CC ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r3, #0 - ldr r2, [r0] - mov r1, #0x22 - strh r3, [r2, #0x7e] - ldr r0, [r0] - str r1, [r0, #0x78] - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} -_0238B4BC: - bl sub_0203A638 - mov r0, #0xc - bl ov17_0238B028 - ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} - .align 2, 0 -_0238B4CC: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 -_0238B4D0: .word 0x0000022B -_0238B4D4: .word TEAM_MEMBER_TABLE_PTR - arm_func_end ov17_0238B390 - - arm_func_start ov17_0238B4D8 -ov17_0238B4D8: ; 0x0238B4D8 - ldr r1, _0238B50C ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r3, #3 - ldr r0, [r1] - mov r2, #0x11 - strh r3, [r0, #0x7e] - ldr r3, [r1] - add r0, r3, #0x200 - ldrsh r0, [r0, #0x58] - orr r0, r0, #0x20000 - str r0, [r3, #0xc] - ldr r0, [r1] - str r2, [r0, #0x78] - bx lr - .align 2, 0 -_0238B50C: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B4D8 - - arm_func_start ov17_0238B510 -ov17_0238B510: ; 0x0238B510 - stmdb sp!, {r3, lr} - mov r0, #5 - bl sub_02017C50 - ldr r0, _0238B530 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r1, #0x12 - ldr r0, [r0] - str r1, [r0, #0x78] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238B530: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B510 - - arm_func_start ov17_0238B534 -ov17_0238B534: ; 0x0238B534 - stmdb sp!, {r3, lr} - mov r0, #5 - bl IsMePlaying - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0238B578 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x58] - bl TryAddMonsterToActiveTeam - bl sub_02057444 - bl ov11_022DC504 - ldr r0, _0238B578 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x78] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238B578: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B534 - - arm_func_start ov17_0238B57C -ov17_0238B57C: ; 0x0238B57C - stmdb sp!, {r3, lr} - ldr r1, _0238B5D8 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r3, #3 - ldr r0, [r1] - add r2, r3, #0x1400 - strh r3, [r0, #0x7e] - ldr r3, [r1] - add r0, r3, #0x200 - ldrsh r0, [r0, #0x58] - orr r0, r0, #0x20000 - str r0, [r3, #0xc] - ldr r0, [r1] - str r2, [r0, #0x30] - ldr r0, [r1] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x58] - bl sub_02056554 - bl sub_02057444 - ldr r0, _0238B5D8 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r1, #0x14 - ldr r0, [r0] - str r1, [r0, #0x78] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238B5D8: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B57C - - arm_func_start ov17_0238B5DC -ov17_0238B5DC: ; 0x0238B5DC - stmdb sp!, {r3, lr} - bl ov11_022DC504 - ldr r0, _0238B5F8 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x78] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238B5F8: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B5DC - - arm_func_start ov17_0238B5FC -ov17_0238B5FC: ; 0x0238B5FC - stmdb sp!, {r3, lr} - ldr r1, _0238B684 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r3, #3 - ldr r2, [r1] - mov r0, #7 - strh r3, [r2, #0x7e] - ldr r2, [r1] - add r1, r2, #0x200 - ldrsh r1, [r1, #0x58] - orr r1, r1, #0x20000 - str r1, [r2, #0xc] - bl IsMePlaying - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0238B684 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x58] - bl GetActiveRosterIndex - mvn r1, #0 - cmp r0, r1 - beq _0238B670 - bl sub_02058138 - ldr r0, _0238B684 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x58] - bl sub_020566C4 - bl sub_02057444 -_0238B670: - ldr r0, _0238B684 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r1, #0x16 - ldr r0, [r0] - str r1, [r0, #0x78] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238B684: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B5FC - - arm_func_start ov17_0238B688 -ov17_0238B688: ; 0x0238B688 - stmdb sp!, {r3, lr} - mov r0, #7 - bl sub_02017C50 - ldr r0, _0238B6A8 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r1, #0x17 - ldr r0, [r0] - str r1, [r0, #0x78] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238B6A8: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B688 - - arm_func_start ov17_0238B6AC -ov17_0238B6AC: ; 0x0238B6AC - stmdb sp!, {r3, lr} - mov r0, #7 - bl IsMePlaying - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0238B6D8 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r1, #0 - ldr r0, [r0] - str r1, [r0, #0x78] - bl ov11_022DC504 - ldmia sp!, {r3, pc} - .align 2, 0 -_0238B6D8: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B6AC - - arm_func_start ov17_0238B6DC -ov17_0238B6DC: ; 0x0238B6DC - ldr r1, _0238B710 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r3, #3 - ldr r0, [r1] - mov r2, #0x19 - strh r3, [r0, #0x7e] - ldr r3, [r1] - add r0, r3, #0x200 - ldrsh r0, [r0, #0x58] - orr r0, r0, #0x20000 - str r0, [r3, #0xc] - ldr r0, [r1] - str r2, [r0, #0x78] - bx lr - .align 2, 0 -_0238B710: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B6DC - - arm_func_start ov17_0238B714 -ov17_0238B714: ; 0x0238B714 - ldr r0, _0238B734 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r3, #0x13 - ldr r2, [r0] - mov r1, #0x1a - strh r3, [r2, #0x7e] - ldr r0, [r0] - str r1, [r0, #0x78] - bx lr - .align 2, 0 -_0238B734: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B714 - - arm_func_start ov17_0238B738 -ov17_0238B738: ; 0x0238B738 - stmdb sp!, {r3, lr} - ldr r0, _0238B7A4 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r0, [r0] - ldrsb r0, [r0, #3] - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0238B7A4 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r0, [r0] - ldrsb r0, [r0, #3] - bl GetSimpleMenuResult__0202B870 - cmp r0, #0 - beq _0238B780 - cmp r0, #1 - ldmneia sp!, {r3, pc} - mov r0, #0 - bl ov17_0238B028 - ldmia sp!, {r3, pc} -_0238B780: - ldr r1, _0238B7A4 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r0, #0x1b - ldr r2, [r1] - add r1, r2, #0x200 - ldrsh r1, [r1, #0x58] - orr r1, r1, #0x20000 - str r1, [r2, #0xc] - bl ov17_0238B028 - ldmia sp!, {r3, pc} - .align 2, 0 -_0238B7A4: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B738 - - arm_func_start ov17_0238B7A8 -ov17_0238B7A8: ; 0x0238B7A8 - ldr r0, _0238B7C8 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r3, #3 - ldr r2, [r0] - mov r1, #0x1c - strh r3, [r2, #0x7e] - ldr r0, [r0] - str r1, [r0, #0x78] - bx lr - .align 2, 0 -_0238B7C8: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B7A8 - - arm_func_start ov17_0238B7CC -ov17_0238B7CC: ; 0x0238B7CC - stmdb sp!, {r3, lr} - ldr r1, _0238B850 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r0, #3 - ldr r1, [r1] - strh r0, [r1, #0x7e] - bl sub_02017C50 - ldr r0, _0238B850 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x58] - bl GetActiveRosterIndex - mvn r1, #0 - cmp r0, r1 - beq _0238B81C - bl sub_02058138 - ldr r0, _0238B850 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x58] - bl sub_020566C4 -_0238B81C: - ldr r0, _0238B850 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x58] - bl sub_02055B20 - bl sub_0203C9C4 -#ifndef JAPAN - bl sub_0203AF0C -#endif - bl sub_02057180 - ldr r0, _0238B850 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r1, #0x1d - ldr r0, [r0] - str r1, [r0, #0x78] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238B850: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B7CC - - arm_func_start ov17_0238B854 -ov17_0238B854: ; 0x0238B854 - stmdb sp!, {r3, lr} - mov r0, #3 - bl IsMePlaying - cmp r0, #0 - ldreq r0, _0238B878 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - moveq r1, #0 - ldreq r0, [r0] - streq r1, [r0, #0x78] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238B878: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B854 - - arm_func_start ov17_0238B87C -ov17_0238B87C: ; 0x0238B87C - ldr r0, _0238B89C ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r3, #0x40 - ldr r2, [r0] - mov r1, #0x1f - strh r3, [r2, #0x7e] - ldr r0, [r0] - str r1, [r0, #0x78] - bx lr - .align 2, 0 -_0238B89C: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B87C - - arm_func_start ov17_0238B8A0 -ov17_0238B8A0: ; 0x0238B8A0 - stmdb sp!, {r3, lr} - bl sub_0203F398 - cmp r0, #1 - ldmneia sp!, {r3, pc} - bl sub_0203F990 - ldr r0, _0238B8D0 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mvn r2, #1 - ldr r1, [r0] - mov r0, #0xc - strb r2, [r1, #5] - bl ov17_0238B028 - ldmia sp!, {r3, pc} - .align 2, 0 -_0238B8D0: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B8A0 - - arm_func_start ov17_0238B8D4 -ov17_0238B8D4: ; 0x0238B8D4 - ldr r0, _0238B8F4 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r3, #0x80 - ldr r2, [r0] - mov r1, #0x21 - strh r3, [r2, #0x7e] - ldr r0, [r0] - str r1, [r0, #0x78] - bx lr - .align 2, 0 -_0238B8F4: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B8D4 - - arm_func_start ov17_0238B8F8 -ov17_0238B8F8: ; 0x0238B8F8 - stmdb sp!, {r4, lr} - bl sub_020407EC - movs r4, r0 - beq _0238B91C - ldr r0, _0238B95C ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r0, [r0] - add r0, r0, #0x200 - ldrsh r0, [r0, #0x58] - bl sub_0203FD80 -_0238B91C: - cmp r4, #1 - beq _0238B944 - cmp r4, #2 - beq _0238B938 - cmp r4, #7 - beq _0238B950 - ldmia sp!, {r4, pc} -_0238B938: - mov r0, #0x24 - bl ov17_0238B028 - ldmia sp!, {r4, pc} -_0238B944: - mov r0, #0xc - bl ov17_0238B028 - ldmia sp!, {r4, pc} -_0238B950: - mov r0, #0x26 - bl ov17_0238B028 - ldmia sp!, {r4, pc} - .align 2, 0 -_0238B95C: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B8F8 - - arm_func_start ov17_0238B960 -ov17_0238B960: ; 0x0238B960 - stmdb sp!, {r3, lr} - ldr r1, _0238B9AC ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r0, _0238B9B0 ; =TEAM_MEMBER_TABLE_PTR - ldr r2, [r1] - ldr r1, [r0] - add r0, r2, #0x200 - ldrsh r2, [r0, #0x58] - mov r0, #0x44 - mov r3, #0 - smlabb r1, r2, r0, r1 - ldrsh r0, [r1, #4] - ldrsh r2, [r1, #8] - add r1, r1, #0x14 - bl PrintIqSkillsMenu - ldr r0, _0238B9AC ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r1, #0x23 - ldr r0, [r0] - str r1, [r0, #0x78] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238B9AC: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 -_0238B9B0: .word TEAM_MEMBER_TABLE_PTR - arm_func_end ov17_0238B960 - - arm_func_start ov17_0238B9B4 -ov17_0238B9B4: ; 0x0238B9B4 - stmdb sp!, {r3, lr} - bl sub_02041B7C - cmp r0, #1 - ldmneia sp!, {r3, pc} - bl sub_020420F4 - bl sub_020572EC - mov r0, #0xc - bl ov17_0238B028 - ldmia sp!, {r3, pc} - arm_func_end ov17_0238B9B4 - - arm_func_start ov17_0238B9D8 -ov17_0238B9D8: ; 0x0238B9D8 - ldr r0, _0238B9F8 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r3, #0x280 - ldr r2, [r0] - mov r1, #0x25 - strh r3, [r2, #0x7e] - ldr r0, [r0] - str r1, [r0, #0x78] - bx lr - .align 2, 0 -_0238B9F8: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B9D8 - - arm_func_start ov17_0238B9FC -ov17_0238B9FC: ; 0x0238B9FC - stmdb sp!, {r4, lr} - ldr r0, _0238BA7C ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r4, #0 - ldr r0, [r0] - ldrsb r0, [r0, #8] - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r4, pc} - ldr r0, _0238BA7C ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r0, [r0] - ldrsb r0, [r0, #8] - bl GetSimpleMenuResult__0202B870 - cmp r0, #3 - beq _0238BA3C - cmp r0, #4 - b _0238BA48 -_0238BA3C: - mov r0, #0x26 - bl ov17_0238B028 - b _0238BA4C -_0238BA48: - mov r4, #1 -_0238BA4C: - cmp r4, #0 - ldmeqia sp!, {r4, pc} - ldr r0, _0238BA7C ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #6] - cmp r0, r1 - beq _0238BA70 - bl sub_020307EC -_0238BA70: - mov r0, #0x20 - bl ov17_0238B028 - ldmia sp!, {r4, pc} - .align 2, 0 -_0238BA7C: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238B9FC - - arm_func_start ov17_0238BA80 -ov17_0238BA80: ; 0x0238BA80 - stmdb sp!, {r3, lr} - bl sub_0203FD38 - ldr r1, _0238BAC4 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - ldr r1, [r1] - str r0, [r1, #0x264] - bl sub_02041094 - ldr r2, _0238BAC4 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov ip, #0x100 - ldr r1, [r2] - mov r3, #0x27 - add r1, r1, #0x200 - strh r0, [r1, #0x68] - ldr r0, [r2] - strh ip, [r0, #0x7e] - ldr r0, [r2] - str r3, [r0, #0x78] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238BAC4: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238BA80 - - arm_func_start ov17_0238BAC8 -ov17_0238BAC8: ; 0x0238BAC8 - stmdb sp!, {r3, lr} - bl sub_02041A18 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0x20 - bl ov17_0238B028 - ldmia sp!, {r3, pc} - arm_func_end ov17_0238BAC8 - - arm_func_start ov17_0238BAE4 -ov17_0238BAE4: ; 0x0238BAE4 - ldr r1, _0238BB18 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r3, #3 - ldr r0, [r1] - mov r2, #0x29 - strh r3, [r0, #0x7e] - ldr r3, [r1] - add r0, r3, #0x200 - ldrsh r0, [r0, #0x58] - orr r0, r0, #0x20000 - str r0, [r3, #0xc] - ldr r0, [r1] - str r2, [r0, #0x78] - bx lr - .align 2, 0 -_0238BB18: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238BAE4 - - arm_func_start ov17_0238BB1C -ov17_0238BB1C: ; 0x0238BB1C - ldr r0, _0238BB30 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - mov r1, #0xc - ldr r0, [r0] - str r1, [r0, #0x78] - bx lr - .align 2, 0 -_0238BB30: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 - arm_func_end ov17_0238BB1C - ; 0x0238BB34 - - .rodata - .global ASSEMBLY_WINDOW_PARAMS_1 -ASSEMBLY_WINDOW_PARAMS_1: - .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .global ASSEMBLY_WINDOW_PARAMS_2 -ASSEMBLY_WINDOW_PARAMS_2: - .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x02, 0x0B, 0x00, 0x00, 0xFE, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .global ASSEMBLY_WINDOW_PARAMS_3 -ASSEMBLY_WINDOW_PARAMS_3: - .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x08, 0x00, 0x00, 0xFE, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .global ASSEMBLY_WINDOW_PARAMS_4 -ASSEMBLY_WINDOW_PARAMS_4: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x11, 0x1C, 0x05, 0x00, 0xFD, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .global ASSEMBLY_WINDOW_PARAMS_5 -ASSEMBLY_WINDOW_PARAMS_5: - .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x00, 0x00, 0xFE, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00 - .global ASSEMBLY_MENU_ITEMS_CONFIRM -ASSEMBLY_MENU_ITEMS_CONFIRM: -#ifdef JAPAN -#define OV17_DATA_OFFSET 0x38E2 -#else -#define OV17_DATA_OFFSET 0 -#endif - .word 0x411 + OV17_DATA_OFFSET - .byte 0x00, 0x00, 0x00, 0x00 - .word 0x412 + OV17_DATA_OFFSET - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .global ASSEMBLY_MAIN_MENU_ITEMS_1 -ASSEMBLY_MAIN_MENU_ITEMS_1: - .word 0x414 + OV17_DATA_OFFSET - .byte 0x03, 0x00, 0x00, 0x00 - .word 0x415 + OV17_DATA_OFFSET - .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00 - .global ASSEMBLY_MAIN_MENU_ITEMS_2 -ASSEMBLY_MAIN_MENU_ITEMS_2: - .word 0x413 + OV17_DATA_OFFSET - .byte 0x02, 0x00, 0x00, 0x00 - .word 0x414 + OV17_DATA_OFFSET - .byte 0x03, 0x00, 0x00, 0x00 - .word 0x415 + OV17_DATA_OFFSET - .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x04, 0x00, 0x00, 0x00 - .global ASSEMBLY_SUBMENU_ITEMS_1 -ASSEMBLY_SUBMENU_ITEMS_1: - .word 0x41A + OV17_DATA_OFFSET - .byte 0x09, 0x00, 0x00, 0x00 - .word 0x41B + OV17_DATA_OFFSET - .byte 0x0A, 0x00, 0x00, 0x00 - .word 0x41C + OV17_DATA_OFFSET - .byte 0x0B, 0x00, 0x00, 0x00 - .word 0x41D + OV17_DATA_OFFSET - .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 - .global ASSEMBLY_SUBMENU_ITEMS_2 -ASSEMBLY_SUBMENU_ITEMS_2: - .word 0x418 + OV17_DATA_OFFSET - .byte 0x07, 0x00, 0x00, 0x00 - .word 0x41A + OV17_DATA_OFFSET - .byte 0x09, 0x00, 0x00, 0x00 - .word 0x41B + OV17_DATA_OFFSET - .byte 0x0A, 0x00, 0x00, 0x00 - .word 0x41C + OV17_DATA_OFFSET - .byte 0x0B, 0x00, 0x00, 0x00 - .word 0x41D + OV17_DATA_OFFSET - .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 - .global ASSEMBLY_SUBMENU_ITEMS_3 -ASSEMBLY_SUBMENU_ITEMS_3: - .word 0x417 + OV17_DATA_OFFSET - .byte 0x06, 0x00, 0x00, 0x00 - .word 0x41A + OV17_DATA_OFFSET - .byte 0x09, 0x00, 0x00, 0x00 - .word 0x41B + OV17_DATA_OFFSET - .byte 0x0A, 0x00, 0x00, 0x00 - .word 0x41C + OV17_DATA_OFFSET - .byte 0x0B, 0x00, 0x00, 0x00 - .word 0x41D + OV17_DATA_OFFSET - .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 -.global ASSEMBLY_SUBMENU_ITEMS_4 -ASSEMBLY_SUBMENU_ITEMS_4: - .word 0x418 + OV17_DATA_OFFSET - .byte 0x07, 0x00, 0x00, 0x00 - .word 0x419 + OV17_DATA_OFFSET - .byte 0x08, 0x00, 0x00, 0x00 - .word 0x41A + OV17_DATA_OFFSET - .byte 0x09, 0x00, 0x00, 0x00 - .word 0x41B + OV17_DATA_OFFSET - .byte 0x0A, 0x00, 0x00, 0x00 - .word 0x41C + OV17_DATA_OFFSET - .byte 0x0B, 0x00, 0x00, 0x00 - .word 0x41D + OV17_DATA_OFFSET - .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x0C, 0x00, 0x00, 0x00 - .global ASSEMBLY_SUBMENU_ITEMS_5 -ASSEMBLY_SUBMENU_ITEMS_5: - .word 0x417 + OV17_DATA_OFFSET - .byte 0x06, 0x00, 0x00, 0x00 - .word 0x419 + OV17_DATA_OFFSET - .byte 0x08, 0x00, 0x00, 0x00 - .word 0x41A + OV17_DATA_OFFSET - .byte 0x09, 0x00, 0x00, 0x00 - .word 0x41B + OV17_DATA_OFFSET - .byte 0x0A, 0x00, 0x00, 0x00 - .word 0x41C + OV17_DATA_OFFSET - .byte 0x0B, 0x00, 0x00, 0x00 - .word 0x41D + OV17_DATA_OFFSET - .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 - .global ASSEMBLY_SUBMENU_ITEMS_6 -ASSEMBLY_SUBMENU_ITEMS_6: - .word 0x416 + OV17_DATA_OFFSET - .byte 0x05, 0x00, 0x00, 0x00 - .word 0x418 + OV17_DATA_OFFSET - .byte 0x07, 0x00, 0x00, 0x00 - .word 0x41A + OV17_DATA_OFFSET - .byte 0x09, 0x00, 0x00, 0x00 - .word 0x41B + OV17_DATA_OFFSET - .byte 0x0A, 0x00, 0x00, 0x00 - .word 0x41C + OV17_DATA_OFFSET - .byte 0x0B, 0x00, 0x00, 0x00 - .word 0x41D + OV17_DATA_OFFSET - .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x0C, 0x00, 0x00, 0x00 - .global ASSEMBLY_SUBMENU_ITEMS_7 -ASSEMBLY_SUBMENU_ITEMS_7: - .word 0x416 + OV17_DATA_OFFSET - .byte 0x05, 0x00, 0x00, 0x00 - .word 0x418 + OV17_DATA_OFFSET - .byte 0x07, 0x00, 0x00, 0x00 - .word 0x419 + OV17_DATA_OFFSET - .byte 0x08, 0x00, 0x00, 0x00 - .word 0x41A + OV17_DATA_OFFSET - .byte 0x09, 0x00, 0x00, 0x00 - .word 0x41B + OV17_DATA_OFFSET - .byte 0x0A, 0x00, 0x00, 0x00 - .word 0x41C + OV17_DATA_OFFSET - .byte 0x0B, 0x00, 0x00, 0x00 - .word 0x41D + OV17_DATA_OFFSET - .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .byte 0x0C, 0x00, 0x00, 0x00 - .global OVERLAY17_FUNCTION_POINTER_TABLE -OVERLAY17_FUNCTION_POINTER_TABLE: - .word ov17_0238B048 - .word ov17_0238B07C - .word ov17_0238B0B4 - .word ov17_0238B10C - .word ov17_0238B194 - .word ov17_0238B1B8 - .word ov17_0238B1E8 - .word ov17_0238B20C - .word ov17_0238B224 - .word ov17_0238B23C - .word ov17_0238B260 - .word ov17_0238B278 - .word ov17_0238B290 - .word ov17_0238B2B4 - .word ov17_0238B36C - .word ov17_0238B390 - .word ov17_0238B4D8 - .word ov17_0238B510 - .word ov17_0238B534 - .word ov17_0238B57C - .word ov17_0238B5DC - .word ov17_0238B5FC - .word ov17_0238B688 - .word ov17_0238B6AC - .word ov17_0238B6DC - .word ov17_0238B714 - .word ov17_0238B738 - .word ov17_0238B7A8 - .word ov17_0238B7CC - .word ov17_0238B854 - .word ov17_0238B87C - .word ov17_0238B8A0 - .word ov17_0238B8D4 - .word ov17_0238B8F8 - .word ov17_0238B960 - .word ov17_0238B9B4 - .word ov17_0238B9D8 - .word ov17_0238B9FC - .word ov17_0238BA80 - .word ov17_0238BAC8 - .word ov17_0238BAE4 - .word ov17_0238BB1C - - .data - .global OVERLAY17_UNKNOWN_POINTER__NA_238BE00 -OVERLAY17_UNKNOWN_POINTER__NA_238BE00: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/asm/overlay_17_0238B2B4.s b/asm/overlay_17_0238B2B4.s new file mode 100644 index 00000000..ee888b31 --- /dev/null +++ b/asm/overlay_17_0238B2B4.s @@ -0,0 +1,911 @@ + .include "asm/macros.inc" + .include "overlay_17_0238B2B4.inc" + + .text + + arm_func_start ov17_0238B2B4 +ov17_0238B2B4: ; 0x0238B2B4 + stmdb sp!, {r3, lr} + bl sub_0203A5A8 + cmp r0, #0 + beq _0238B31C + bl sub_0203A9EC + cmp r0, #0 + ldmeqia sp!, {r3, pc} + add r1, sp, #0 + mov r0, #0 + bl GetPressedButtons + ldrh r0, [sp] + tst r0, #8 + ldmeqia sp!, {r3, pc} + mov r0, #0 + bl PlaySeVolumeWrapper + bl sub_0203AAB0 + ldr r1, _0238B368 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + ldr r1, [r1] + add r1, r1, #0x200 + strh r0, [r1, #0x58] + bl sub_0203A5F0 + ldr r0, _0238B368 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r1, #0x1e + ldr r0, [r0] + str r1, [r0, #0x78] + ldmia sp!, {r3, pc} +_0238B31C: + bl sub_0203AA20 + mvn r1, #0 + cmp r0, r1 + bne _0238B33C + bl sub_0203A51C + mov r0, #0 + bl ov17_0238B028 + ldmia sp!, {r3, pc} +_0238B33C: + ldr r2, _0238B368 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + ldr r1, [r2] + add r1, r1, #0x200 + strh r0, [r1, #0x58] + ldr r0, [r2] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x58] + bl sub_0203FA64 + mov r0, #0xe + bl ov17_0238B028 + ldmia sp!, {r3, pc} + .align 2, 0 +_0238B368: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B2B4 + + arm_func_start ov17_0238B36C +ov17_0238B36C: ; 0x0238B36C + ldr r0, _0238B38C ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r3, #0x28 + ldr r2, [r0] + mov r1, #0xf + strh r3, [r2, #0x7e] + ldr r0, [r0] + str r1, [r0, #0x78] + bx lr + .align 2, 0 +_0238B38C: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B36C + + arm_func_start ov17_0238B390 +ov17_0238B390: ; 0x0238B390 + stmdb sp!, {r4, r5, r6, r7, r8, sb, sl, lr} + ldr r0, _0238B4CC ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl IsSimpleMenuActive + cmp r0, #0 + ldmneia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + ldr r0, _0238B4CC ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + ldr r0, [r0] + ldrsb r0, [r0, #4] + bl GetSimpleMenuResult__0202B870 + sub r0, r0, #5 + cmp r0, #7 + addls pc, pc, r0, lsl #2 + b _0238B4BC +_0238B3CC: ; jump table + b _0238B3EC ; case 0 + b _0238B3F8 ; case 1 + b _0238B46C ; case 2 + b _0238B478 ; case 3 + b _0238B484 ; case 4 + b _0238B490 ; case 5 + b _0238B49C ; case 6 + b _0238B4BC ; case 7 +_0238B3EC: + mov r0, #0x10 + bl ov17_0238B028 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0238B3F8: + mov sl, #0 + ldr r6, _0238B4CC ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + ldr r4, _0238B4D0 ; =0x0000022B + ldr r7, _0238B4D4 ; =TEAM_MEMBER_TABLE_PTR + mov r8, sl + mov sb, #1 + mov r5, #0x44 +_0238B414: + smulbb r0, sl, r5 + ldr r1, [r7] + ldrb r0, [r1, r0] + tst r0, #1 + movne r0, sb + moveq r0, r8 + tst r0, #0xff + ldrne r0, [r6] + addne r0, r0, #0x200 + ldrnesh r0, [r0, #0x58] + cmpne r0, sl + beq _0238B44C + mov r0, sl + bl sub_02056410 +_0238B44C: + add r0, sl, #1 + mov r0, r0, lsl #0x10 + cmp r4, r0, asr #16 + mov sl, r0, asr #0x10 + bgt _0238B414 + mov r0, #0x13 + bl ov17_0238B028 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0238B46C: + mov r0, #0x15 + bl ov17_0238B028 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0238B478: + mov r0, #0x18 + bl ov17_0238B028 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0238B484: + mov r0, #0x1e + bl ov17_0238B028 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0238B490: + mov r0, #0x20 + bl ov17_0238B028 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0238B49C: + ldr r0, _0238B4CC ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r3, #0 + ldr r2, [r0] + mov r1, #0x22 + strh r3, [r2, #0x7e] + ldr r0, [r0] + str r1, [r0, #0x78] + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} +_0238B4BC: + bl sub_0203A638 + mov r0, #0xc + bl ov17_0238B028 + ldmia sp!, {r4, r5, r6, r7, r8, sb, sl, pc} + .align 2, 0 +_0238B4CC: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 +_0238B4D0: .word 0x0000022B +_0238B4D4: .word TEAM_MEMBER_TABLE_PTR + arm_func_end ov17_0238B390 + + arm_func_start ov17_0238B4D8 +ov17_0238B4D8: ; 0x0238B4D8 + ldr r1, _0238B50C ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r3, #3 + ldr r0, [r1] + mov r2, #0x11 + strh r3, [r0, #0x7e] + ldr r3, [r1] + add r0, r3, #0x200 + ldrsh r0, [r0, #0x58] + orr r0, r0, #0x20000 + str r0, [r3, #0xc] + ldr r0, [r1] + str r2, [r0, #0x78] + bx lr + .align 2, 0 +_0238B50C: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B4D8 + + arm_func_start ov17_0238B510 +ov17_0238B510: ; 0x0238B510 + stmdb sp!, {r3, lr} + mov r0, #5 + bl sub_02017C50 + ldr r0, _0238B530 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r1, #0x12 + ldr r0, [r0] + str r1, [r0, #0x78] + ldmia sp!, {r3, pc} + .align 2, 0 +_0238B530: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B510 + + arm_func_start ov17_0238B534 +ov17_0238B534: ; 0x0238B534 + stmdb sp!, {r3, lr} + mov r0, #5 + bl IsMePlaying + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0238B578 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x58] + bl TryAddMonsterToActiveTeam + bl sub_02057444 + bl ov11_022DC504 + ldr r0, _0238B578 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x78] + ldmia sp!, {r3, pc} + .align 2, 0 +_0238B578: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B534 + + arm_func_start ov17_0238B57C +ov17_0238B57C: ; 0x0238B57C + stmdb sp!, {r3, lr} + ldr r1, _0238B5D8 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r3, #3 + ldr r0, [r1] + add r2, r3, #0x1400 + strh r3, [r0, #0x7e] + ldr r3, [r1] + add r0, r3, #0x200 + ldrsh r0, [r0, #0x58] + orr r0, r0, #0x20000 + str r0, [r3, #0xc] + ldr r0, [r1] + str r2, [r0, #0x30] + ldr r0, [r1] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x58] + bl sub_02056554 + bl sub_02057444 + ldr r0, _0238B5D8 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r1, #0x14 + ldr r0, [r0] + str r1, [r0, #0x78] + ldmia sp!, {r3, pc} + .align 2, 0 +_0238B5D8: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B57C + + arm_func_start ov17_0238B5DC +ov17_0238B5DC: ; 0x0238B5DC + stmdb sp!, {r3, lr} + bl ov11_022DC504 + ldr r0, _0238B5F8 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x78] + ldmia sp!, {r3, pc} + .align 2, 0 +_0238B5F8: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B5DC + + arm_func_start ov17_0238B5FC +ov17_0238B5FC: ; 0x0238B5FC + stmdb sp!, {r3, lr} + ldr r1, _0238B684 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r3, #3 + ldr r2, [r1] + mov r0, #7 + strh r3, [r2, #0x7e] + ldr r2, [r1] + add r1, r2, #0x200 + ldrsh r1, [r1, #0x58] + orr r1, r1, #0x20000 + str r1, [r2, #0xc] + bl IsMePlaying + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0238B684 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x58] + bl GetActiveRosterIndex + mvn r1, #0 + cmp r0, r1 + beq _0238B670 + bl sub_02058138 + ldr r0, _0238B684 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x58] + bl sub_020566C4 + bl sub_02057444 +_0238B670: + ldr r0, _0238B684 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r1, #0x16 + ldr r0, [r0] + str r1, [r0, #0x78] + ldmia sp!, {r3, pc} + .align 2, 0 +_0238B684: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B5FC + + arm_func_start ov17_0238B688 +ov17_0238B688: ; 0x0238B688 + stmdb sp!, {r3, lr} + mov r0, #7 + bl sub_02017C50 + ldr r0, _0238B6A8 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r1, #0x17 + ldr r0, [r0] + str r1, [r0, #0x78] + ldmia sp!, {r3, pc} + .align 2, 0 +_0238B6A8: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B688 + + arm_func_start ov17_0238B6AC +ov17_0238B6AC: ; 0x0238B6AC + stmdb sp!, {r3, lr} + mov r0, #7 + bl IsMePlaying + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0238B6D8 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r1, #0 + ldr r0, [r0] + str r1, [r0, #0x78] + bl ov11_022DC504 + ldmia sp!, {r3, pc} + .align 2, 0 +_0238B6D8: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B6AC + + arm_func_start ov17_0238B6DC +ov17_0238B6DC: ; 0x0238B6DC + ldr r1, _0238B710 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r3, #3 + ldr r0, [r1] + mov r2, #0x19 + strh r3, [r0, #0x7e] + ldr r3, [r1] + add r0, r3, #0x200 + ldrsh r0, [r0, #0x58] + orr r0, r0, #0x20000 + str r0, [r3, #0xc] + ldr r0, [r1] + str r2, [r0, #0x78] + bx lr + .align 2, 0 +_0238B710: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B6DC + + arm_func_start ov17_0238B714 +ov17_0238B714: ; 0x0238B714 + ldr r0, _0238B734 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r3, #0x13 + ldr r2, [r0] + mov r1, #0x1a + strh r3, [r2, #0x7e] + ldr r0, [r0] + str r1, [r0, #0x78] + bx lr + .align 2, 0 +_0238B734: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B714 + + arm_func_start ov17_0238B738 +ov17_0238B738: ; 0x0238B738 + stmdb sp!, {r3, lr} + ldr r0, _0238B7A4 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + ldr r0, [r0] + ldrsb r0, [r0, #3] + bl IsSimpleMenuActive + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0238B7A4 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + ldr r0, [r0] + ldrsb r0, [r0, #3] + bl GetSimpleMenuResult__0202B870 + cmp r0, #0 + beq _0238B780 + cmp r0, #1 + ldmneia sp!, {r3, pc} + mov r0, #0 + bl ov17_0238B028 + ldmia sp!, {r3, pc} +_0238B780: + ldr r1, _0238B7A4 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r0, #0x1b + ldr r2, [r1] + add r1, r2, #0x200 + ldrsh r1, [r1, #0x58] + orr r1, r1, #0x20000 + str r1, [r2, #0xc] + bl ov17_0238B028 + ldmia sp!, {r3, pc} + .align 2, 0 +_0238B7A4: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B738 + + arm_func_start ov17_0238B7A8 +ov17_0238B7A8: ; 0x0238B7A8 + ldr r0, _0238B7C8 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r3, #3 + ldr r2, [r0] + mov r1, #0x1c + strh r3, [r2, #0x7e] + ldr r0, [r0] + str r1, [r0, #0x78] + bx lr + .align 2, 0 +_0238B7C8: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B7A8 + + arm_func_start ov17_0238B7CC +ov17_0238B7CC: ; 0x0238B7CC + stmdb sp!, {r3, lr} + ldr r1, _0238B850 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r0, #3 + ldr r1, [r1] + strh r0, [r1, #0x7e] + bl sub_02017C50 + ldr r0, _0238B850 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x58] + bl GetActiveRosterIndex + mvn r1, #0 + cmp r0, r1 + beq _0238B81C + bl sub_02058138 + ldr r0, _0238B850 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x58] + bl sub_020566C4 +_0238B81C: + ldr r0, _0238B850 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x58] + bl sub_02055B20 + bl sub_0203C9C4 +#ifndef JAPAN + bl sub_0203AF0C +#endif + bl sub_02057180 + ldr r0, _0238B850 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r1, #0x1d + ldr r0, [r0] + str r1, [r0, #0x78] + ldmia sp!, {r3, pc} + .align 2, 0 +_0238B850: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B7CC + + arm_func_start ov17_0238B854 +ov17_0238B854: ; 0x0238B854 + stmdb sp!, {r3, lr} + mov r0, #3 + bl IsMePlaying + cmp r0, #0 + ldreq r0, _0238B878 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + moveq r1, #0 + ldreq r0, [r0] + streq r1, [r0, #0x78] + ldmia sp!, {r3, pc} + .align 2, 0 +_0238B878: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B854 + + arm_func_start ov17_0238B87C +ov17_0238B87C: ; 0x0238B87C + ldr r0, _0238B89C ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r3, #0x40 + ldr r2, [r0] + mov r1, #0x1f + strh r3, [r2, #0x7e] + ldr r0, [r0] + str r1, [r0, #0x78] + bx lr + .align 2, 0 +_0238B89C: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B87C + + arm_func_start ov17_0238B8A0 +ov17_0238B8A0: ; 0x0238B8A0 + stmdb sp!, {r3, lr} + bl sub_0203F398 + cmp r0, #1 + ldmneia sp!, {r3, pc} + bl sub_0203F990 + ldr r0, _0238B8D0 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mvn r2, #1 + ldr r1, [r0] + mov r0, #0xc + strb r2, [r1, #5] + bl ov17_0238B028 + ldmia sp!, {r3, pc} + .align 2, 0 +_0238B8D0: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B8A0 + + arm_func_start ov17_0238B8D4 +ov17_0238B8D4: ; 0x0238B8D4 + ldr r0, _0238B8F4 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r3, #0x80 + ldr r2, [r0] + mov r1, #0x21 + strh r3, [r2, #0x7e] + ldr r0, [r0] + str r1, [r0, #0x78] + bx lr + .align 2, 0 +_0238B8F4: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B8D4 + + arm_func_start ov17_0238B8F8 +ov17_0238B8F8: ; 0x0238B8F8 + stmdb sp!, {r4, lr} + bl sub_020407EC + movs r4, r0 + beq _0238B91C + ldr r0, _0238B95C ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + ldr r0, [r0] + add r0, r0, #0x200 + ldrsh r0, [r0, #0x58] + bl sub_0203FD80 +_0238B91C: + cmp r4, #1 + beq _0238B944 + cmp r4, #2 + beq _0238B938 + cmp r4, #7 + beq _0238B950 + ldmia sp!, {r4, pc} +_0238B938: + mov r0, #0x24 + bl ov17_0238B028 + ldmia sp!, {r4, pc} +_0238B944: + mov r0, #0xc + bl ov17_0238B028 + ldmia sp!, {r4, pc} +_0238B950: + mov r0, #0x26 + bl ov17_0238B028 + ldmia sp!, {r4, pc} + .align 2, 0 +_0238B95C: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B8F8 + + arm_func_start ov17_0238B960 +ov17_0238B960: ; 0x0238B960 + stmdb sp!, {r3, lr} + ldr r1, _0238B9AC ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + ldr r0, _0238B9B0 ; =TEAM_MEMBER_TABLE_PTR + ldr r2, [r1] + ldr r1, [r0] + add r0, r2, #0x200 + ldrsh r2, [r0, #0x58] + mov r0, #0x44 + mov r3, #0 + smlabb r1, r2, r0, r1 + ldrsh r0, [r1, #4] + ldrsh r2, [r1, #8] + add r1, r1, #0x14 + bl PrintIqSkillsMenu + ldr r0, _0238B9AC ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r1, #0x23 + ldr r0, [r0] + str r1, [r0, #0x78] + ldmia sp!, {r3, pc} + .align 2, 0 +_0238B9AC: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 +_0238B9B0: .word TEAM_MEMBER_TABLE_PTR + arm_func_end ov17_0238B960 + + arm_func_start ov17_0238B9B4 +ov17_0238B9B4: ; 0x0238B9B4 + stmdb sp!, {r3, lr} + bl sub_02041B7C + cmp r0, #1 + ldmneia sp!, {r3, pc} + bl sub_020420F4 + bl sub_020572EC + mov r0, #0xc + bl ov17_0238B028 + ldmia sp!, {r3, pc} + arm_func_end ov17_0238B9B4 + + arm_func_start ov17_0238B9D8 +ov17_0238B9D8: ; 0x0238B9D8 + ldr r0, _0238B9F8 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r3, #0x280 + ldr r2, [r0] + mov r1, #0x25 + strh r3, [r2, #0x7e] + ldr r0, [r0] + str r1, [r0, #0x78] + bx lr + .align 2, 0 +_0238B9F8: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B9D8 + + arm_func_start ov17_0238B9FC +ov17_0238B9FC: ; 0x0238B9FC + stmdb sp!, {r4, lr} + ldr r0, _0238BA7C ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r4, #0 + ldr r0, [r0] + ldrsb r0, [r0, #8] + bl IsSimpleMenuActive + cmp r0, #0 + ldmneia sp!, {r4, pc} + ldr r0, _0238BA7C ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + ldr r0, [r0] + ldrsb r0, [r0, #8] + bl GetSimpleMenuResult__0202B870 + cmp r0, #3 + beq _0238BA3C + cmp r0, #4 + b _0238BA48 +_0238BA3C: + mov r0, #0x26 + bl ov17_0238B028 + b _0238BA4C +_0238BA48: + mov r4, #1 +_0238BA4C: + cmp r4, #0 + ldmeqia sp!, {r4, pc} + ldr r0, _0238BA7C ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #6] + cmp r0, r1 + beq _0238BA70 + bl sub_020307EC +_0238BA70: + mov r0, #0x20 + bl ov17_0238B028 + ldmia sp!, {r4, pc} + .align 2, 0 +_0238BA7C: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238B9FC + + arm_func_start ov17_0238BA80 +ov17_0238BA80: ; 0x0238BA80 + stmdb sp!, {r3, lr} + bl sub_0203FD38 + ldr r1, _0238BAC4 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + ldr r1, [r1] + str r0, [r1, #0x264] + bl sub_02041094 + ldr r2, _0238BAC4 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov ip, #0x100 + ldr r1, [r2] + mov r3, #0x27 + add r1, r1, #0x200 + strh r0, [r1, #0x68] + ldr r0, [r2] + strh ip, [r0, #0x7e] + ldr r0, [r2] + str r3, [r0, #0x78] + ldmia sp!, {r3, pc} + .align 2, 0 +_0238BAC4: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238BA80 + + arm_func_start ov17_0238BAC8 +ov17_0238BAC8: ; 0x0238BAC8 + stmdb sp!, {r3, lr} + bl sub_02041A18 + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r0, #0x20 + bl ov17_0238B028 + ldmia sp!, {r3, pc} + arm_func_end ov17_0238BAC8 + + arm_func_start ov17_0238BAE4 +ov17_0238BAE4: ; 0x0238BAE4 + ldr r1, _0238BB18 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r3, #3 + ldr r0, [r1] + mov r2, #0x29 + strh r3, [r0, #0x7e] + ldr r3, [r1] + add r0, r3, #0x200 + ldrsh r0, [r0, #0x58] + orr r0, r0, #0x20000 + str r0, [r3, #0xc] + ldr r0, [r1] + str r2, [r0, #0x78] + bx lr + .align 2, 0 +_0238BB18: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238BAE4 + + arm_func_start ov17_0238BB1C +ov17_0238BB1C: ; 0x0238BB1C + ldr r0, _0238BB30 ; =OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + mov r1, #0xc + ldr r0, [r0] + str r1, [r0, #0x78] + bx lr + .align 2, 0 +_0238BB30: .word OVERLAY17_UNKNOWN_POINTER__NA_238BE00 + arm_func_end ov17_0238BB1C + ; 0x0238BB34 + + .rodata + .global ASSEMBLY_WINDOW_PARAMS_1 +ASSEMBLY_WINDOW_PARAMS_1: + .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x00, 0x00, 0x00, 0xFE, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .global ASSEMBLY_WINDOW_PARAMS_2 +ASSEMBLY_WINDOW_PARAMS_2: + .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x02, 0x0B, 0x00, 0x00, 0xFE, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .global ASSEMBLY_WINDOW_PARAMS_3 +ASSEMBLY_WINDOW_PARAMS_3: + .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x08, 0x00, 0x00, 0xFE, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .global ASSEMBLY_WINDOW_PARAMS_4 +ASSEMBLY_WINDOW_PARAMS_4: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x11, 0x1C, 0x05, 0x00, 0xFD, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .global ASSEMBLY_WINDOW_PARAMS_5 +ASSEMBLY_WINDOW_PARAMS_5: + .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x00, 0x00, 0xFE, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00 + .global ASSEMBLY_MENU_ITEMS_CONFIRM +ASSEMBLY_MENU_ITEMS_CONFIRM: +#ifdef JAPAN +#define OV17_DATA_OFFSET 0x38E2 +#else +#define OV17_DATA_OFFSET 0 +#endif + .word 0x411 + OV17_DATA_OFFSET + .byte 0x00, 0x00, 0x00, 0x00 + .word 0x412 + OV17_DATA_OFFSET + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .global ASSEMBLY_MAIN_MENU_ITEMS_1 +ASSEMBLY_MAIN_MENU_ITEMS_1: + .word 0x414 + OV17_DATA_OFFSET + .byte 0x03, 0x00, 0x00, 0x00 + .word 0x415 + OV17_DATA_OFFSET + .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x04, 0x00, 0x00, 0x00 + .global ASSEMBLY_MAIN_MENU_ITEMS_2 +ASSEMBLY_MAIN_MENU_ITEMS_2: + .word 0x413 + OV17_DATA_OFFSET + .byte 0x02, 0x00, 0x00, 0x00 + .word 0x414 + OV17_DATA_OFFSET + .byte 0x03, 0x00, 0x00, 0x00 + .word 0x415 + OV17_DATA_OFFSET + .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x04, 0x00, 0x00, 0x00 + .global ASSEMBLY_SUBMENU_ITEMS_1 +ASSEMBLY_SUBMENU_ITEMS_1: + .word 0x41A + OV17_DATA_OFFSET + .byte 0x09, 0x00, 0x00, 0x00 + .word 0x41B + OV17_DATA_OFFSET + .byte 0x0A, 0x00, 0x00, 0x00 + .word 0x41C + OV17_DATA_OFFSET + .byte 0x0B, 0x00, 0x00, 0x00 + .word 0x41D + OV17_DATA_OFFSET + .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 + .global ASSEMBLY_SUBMENU_ITEMS_2 +ASSEMBLY_SUBMENU_ITEMS_2: + .word 0x418 + OV17_DATA_OFFSET + .byte 0x07, 0x00, 0x00, 0x00 + .word 0x41A + OV17_DATA_OFFSET + .byte 0x09, 0x00, 0x00, 0x00 + .word 0x41B + OV17_DATA_OFFSET + .byte 0x0A, 0x00, 0x00, 0x00 + .word 0x41C + OV17_DATA_OFFSET + .byte 0x0B, 0x00, 0x00, 0x00 + .word 0x41D + OV17_DATA_OFFSET + .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 + .global ASSEMBLY_SUBMENU_ITEMS_3 +ASSEMBLY_SUBMENU_ITEMS_3: + .word 0x417 + OV17_DATA_OFFSET + .byte 0x06, 0x00, 0x00, 0x00 + .word 0x41A + OV17_DATA_OFFSET + .byte 0x09, 0x00, 0x00, 0x00 + .word 0x41B + OV17_DATA_OFFSET + .byte 0x0A, 0x00, 0x00, 0x00 + .word 0x41C + OV17_DATA_OFFSET + .byte 0x0B, 0x00, 0x00, 0x00 + .word 0x41D + OV17_DATA_OFFSET + .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 +.global ASSEMBLY_SUBMENU_ITEMS_4 +ASSEMBLY_SUBMENU_ITEMS_4: + .word 0x418 + OV17_DATA_OFFSET + .byte 0x07, 0x00, 0x00, 0x00 + .word 0x419 + OV17_DATA_OFFSET + .byte 0x08, 0x00, 0x00, 0x00 + .word 0x41A + OV17_DATA_OFFSET + .byte 0x09, 0x00, 0x00, 0x00 + .word 0x41B + OV17_DATA_OFFSET + .byte 0x0A, 0x00, 0x00, 0x00 + .word 0x41C + OV17_DATA_OFFSET + .byte 0x0B, 0x00, 0x00, 0x00 + .word 0x41D + OV17_DATA_OFFSET + .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x0C, 0x00, 0x00, 0x00 + .global ASSEMBLY_SUBMENU_ITEMS_5 +ASSEMBLY_SUBMENU_ITEMS_5: + .word 0x417 + OV17_DATA_OFFSET + .byte 0x06, 0x00, 0x00, 0x00 + .word 0x419 + OV17_DATA_OFFSET + .byte 0x08, 0x00, 0x00, 0x00 + .word 0x41A + OV17_DATA_OFFSET + .byte 0x09, 0x00, 0x00, 0x00 + .word 0x41B + OV17_DATA_OFFSET + .byte 0x0A, 0x00, 0x00, 0x00 + .word 0x41C + OV17_DATA_OFFSET + .byte 0x0B, 0x00, 0x00, 0x00 + .word 0x41D + OV17_DATA_OFFSET + .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00 + .global ASSEMBLY_SUBMENU_ITEMS_6 +ASSEMBLY_SUBMENU_ITEMS_6: + .word 0x416 + OV17_DATA_OFFSET + .byte 0x05, 0x00, 0x00, 0x00 + .word 0x418 + OV17_DATA_OFFSET + .byte 0x07, 0x00, 0x00, 0x00 + .word 0x41A + OV17_DATA_OFFSET + .byte 0x09, 0x00, 0x00, 0x00 + .word 0x41B + OV17_DATA_OFFSET + .byte 0x0A, 0x00, 0x00, 0x00 + .word 0x41C + OV17_DATA_OFFSET + .byte 0x0B, 0x00, 0x00, 0x00 + .word 0x41D + OV17_DATA_OFFSET + .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x0C, 0x00, 0x00, 0x00 + .global ASSEMBLY_SUBMENU_ITEMS_7 +ASSEMBLY_SUBMENU_ITEMS_7: + .word 0x416 + OV17_DATA_OFFSET + .byte 0x05, 0x00, 0x00, 0x00 + .word 0x418 + OV17_DATA_OFFSET + .byte 0x07, 0x00, 0x00, 0x00 + .word 0x419 + OV17_DATA_OFFSET + .byte 0x08, 0x00, 0x00, 0x00 + .word 0x41A + OV17_DATA_OFFSET + .byte 0x09, 0x00, 0x00, 0x00 + .word 0x41B + OV17_DATA_OFFSET + .byte 0x0A, 0x00, 0x00, 0x00 + .word 0x41C + OV17_DATA_OFFSET + .byte 0x0B, 0x00, 0x00, 0x00 + .word 0x41D + OV17_DATA_OFFSET + .byte 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .byte 0x0C, 0x00, 0x00, 0x00 + .global OVERLAY17_FUNCTION_POINTER_TABLE +OVERLAY17_FUNCTION_POINTER_TABLE: + .word ov17_0238B048 + .word ov17_0238B07C + .word ov17_0238B0B4 + .word ov17_0238B10C + .word ov17_0238B194 + .word ov17_0238B1B8 + .word ov17_0238B1E8 + .word ov17_0238B20C + .word ov17_0238B224 + .word ov17_0238B23C + .word ov17_0238B260 + .word ov17_0238B278 + .word ov17_0238B290 + .word ov17_0238B2B4 + .word ov17_0238B36C + .word ov17_0238B390 + .word ov17_0238B4D8 + .word ov17_0238B510 + .word ov17_0238B534 + .word ov17_0238B57C + .word ov17_0238B5DC + .word ov17_0238B5FC + .word ov17_0238B688 + .word ov17_0238B6AC + .word ov17_0238B6DC + .word ov17_0238B714 + .word ov17_0238B738 + .word ov17_0238B7A8 + .word ov17_0238B7CC + .word ov17_0238B854 + .word ov17_0238B87C + .word ov17_0238B8A0 + .word ov17_0238B8D4 + .word ov17_0238B8F8 + .word ov17_0238B960 + .word ov17_0238B9B4 + .word ov17_0238B9D8 + .word ov17_0238B9FC + .word ov17_0238BA80 + .word ov17_0238BAC8 + .word ov17_0238BAE4 + .word ov17_0238BB1C + + .data + .global OVERLAY17_UNKNOWN_POINTER__NA_238BE00 +OVERLAY17_UNKNOWN_POINTER__NA_238BE00: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/asm/overlay_18.s b/asm/overlay_18.s index 1a62bbdc..7ecc57e6 100644 --- a/asm/overlay_18.s +++ b/asm/overlay_18.s @@ -2224,1862 +2224,3 @@ ov18_0238BF30: ; 0x0238BF30 .align 2, 0 _0238BF5C: .word LINK_SHOP_PTR arm_func_end ov18_0238BF30 - - arm_func_start ov18_0238BF60 -ov18_0238BF60: ; 0x0238BF60 - ldr r0, _0238BF80 ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #6 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238BF80: .word LINK_SHOP_PTR - arm_func_end ov18_0238BF60 - - arm_func_start ov18_0238BF84 -ov18_0238BF84: ; 0x0238BF84 - ldr r0, _0238BFA4 ; =LINK_SHOP_PTR - mov r3, #0x23 - ldr r2, [r0] - mov r1, #7 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238BFA4: .word LINK_SHOP_PTR - arm_func_end ov18_0238BF84 - - arm_func_start ov18_0238BFA8 -ov18_0238BFA8: ; 0x0238BFA8 - stmdb sp!, {r3, lr} - ldr r0, _0238C038 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0238C038 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #4] - bl GetSimpleMenuResult__0202B870 - cmp r0, #8 - bgt _0238BFFC - cmp r0, #2 - blt _0238C02C - beq _0238C02C - cmp r0, #7 - beq _0238C008 - cmp r0, #8 - beq _0238C014 - b _0238C02C -_0238BFFC: - cmp r0, #0xd - beq _0238C020 - b _0238C02C -_0238C008: - mov r0, #8 - bl ov18_0238BE28 - ldmia sp!, {r3, pc} -_0238C014: - mov r0, #0xa - bl ov18_0238BE28 - ldmia sp!, {r3, pc} -_0238C020: - mov r0, #0xe - bl ov18_0238BE28 - ldmia sp!, {r3, pc} -_0238C02C: - mov r0, #0 - bl ov18_0238BE28 - ldmia sp!, {r3, pc} - .align 2, 0 -_0238C038: .word LINK_SHOP_PTR - arm_func_end ov18_0238BFA8 - - arm_func_start ov18_0238C03C -ov18_0238C03C: ; 0x0238C03C - ldr r0, _0238C05C ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #9 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C05C: .word LINK_SHOP_PTR - arm_func_end ov18_0238C03C - - arm_func_start ov18_0238C060 -ov18_0238C060: ; 0x0238C060 - ldr r0, _0238C074 ; =LINK_SHOP_PTR - mov r1, #5 - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C074: .word LINK_SHOP_PTR - arm_func_end ov18_0238C060 - - arm_func_start ov18_0238C078 -ov18_0238C078: ; 0x0238C078 - ldr r0, _0238C098 ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0xc - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C098: .word LINK_SHOP_PTR - arm_func_end ov18_0238C078 - - arm_func_start ov18_0238C09C -ov18_0238C09C: ; 0x0238C09C - ldr r0, _0238C0BC ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0xd - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C0BC: .word LINK_SHOP_PTR - arm_func_end ov18_0238C09C - - arm_func_start ov18_0238C0C0 -ov18_0238C0C0: ; 0x0238C0C0 - ldr r0, _0238C0D4 ; =LINK_SHOP_PTR - mov r1, #5 - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C0D4: .word LINK_SHOP_PTR - arm_func_end ov18_0238C0C0 - - arm_func_start ov18_0238C0D8 -ov18_0238C0D8: ; 0x0238C0D8 - ldr r0, _0238C0F8 ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0xf - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C0F8: .word LINK_SHOP_PTR - arm_func_end ov18_0238C0D8 - - arm_func_start ov18_0238C0FC -ov18_0238C0FC: ; 0x0238C0FC - ldr r0, _0238C110 ; =LINK_SHOP_PTR - mov r1, #5 - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C110: .word LINK_SHOP_PTR - arm_func_end ov18_0238C0FC - - arm_func_start ov18_0238C114 -ov18_0238C114: ; 0x0238C114 - ldr r0, _0238C134 ; =LINK_SHOP_PTR - ldr r3, _0238C138 ; =0x00010002 - ldr r2, [r0] - mov r1, #0x11 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C134: .word LINK_SHOP_PTR -_0238C138: .word 0x00010002 - arm_func_end ov18_0238C114 - - arm_func_start ov18_0238C13C -ov18_0238C13C: ; 0x0238C13C - ldr r0, _0238C15C ; =LINK_SHOP_PTR - ldr r3, _0238C160 ; =0x00010080 - ldr r2, [r0] - mov r1, #0x12 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C15C: .word LINK_SHOP_PTR -_0238C160: .word 0x00010080 - arm_func_end ov18_0238C13C - - arm_func_start ov18_0238C164 -ov18_0238C164: ; 0x0238C164 - stmdb sp!, {r3, lr} - bl sub_0203A5A8 - cmp r0, #0 - beq _0238C1CC - bl sub_0203A9EC - cmp r0, #0 - ldmeqia sp!, {r3, pc} - add r1, sp, #0 - mov r0, #0 - bl GetPressedButtons - ldrh r0, [sp] - tst r0, #8 - ldmeqia sp!, {r3, pc} - mov r0, #0 - bl PlaySeVolumeWrapper - bl sub_0203AAB0 - ldr r1, _0238C218 ; =LINK_SHOP_PTR - ldr r1, [r1] - add r1, r1, #0x300 - strh r0, [r1, #0x8c] - bl sub_0203A5F0 - ldr r0, _0238C218 ; =LINK_SHOP_PTR - mov r1, #0x17 - ldr r0, [r0] - str r1, [r0, #0x80] - ldmia sp!, {r3, pc} -_0238C1CC: - bl sub_0203AA20 - mvn r1, #0 - cmp r0, r1 - bne _0238C1EC - bl sub_0203A51C - mov r0, #0 - bl ov18_0238BE28 - ldmia sp!, {r3, pc} -_0238C1EC: - ldr r2, _0238C218 ; =LINK_SHOP_PTR - ldr r1, [r2] - add r1, r1, #0x300 - strh r0, [r1, #0x8c] - ldr r0, [r2] - add r0, r0, #0x300 - ldrsh r0, [r0, #0x8c] - bl sub_0203FA64 - mov r0, #0x15 - bl ov18_0238BE28 - ldmia sp!, {r3, pc} - .align 2, 0 -_0238C218: .word LINK_SHOP_PTR - arm_func_end ov18_0238C164 - - arm_func_start ov18_0238C21C -ov18_0238C21C: ; 0x0238C21C - ldr r0, _0238C23C ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x14 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C23C: .word LINK_SHOP_PTR - arm_func_end ov18_0238C21C - - arm_func_start ov18_0238C240 -ov18_0238C240: ; 0x0238C240 - ldr r0, _0238C254 ; =LINK_SHOP_PTR - mov r1, #0x11 - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C254: .word LINK_SHOP_PTR - arm_func_end ov18_0238C240 - - arm_func_start ov18_0238C258 -ov18_0238C258: ; 0x0238C258 - ldr r0, _0238C278 ; =LINK_SHOP_PTR - mov r3, #0x90 - ldr r2, [r0] - mov r1, #0x16 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C278: .word LINK_SHOP_PTR - arm_func_end ov18_0238C258 - - arm_func_start ov18_0238C27C -ov18_0238C27C: ; 0x0238C27C - stmdb sp!, {r3, lr} - ldr r0, _0238C33C ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #5] - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r3, pc} - ldr r0, _0238C33C ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #5] - bl GetSimpleMenuResult__0202B870 - sub r0, r0, #5 - cmp r0, #0xb - addls pc, pc, r0, lsl #2 - b _0238C2F4 -_0238C2B8: ; jump table - b _0238C32C ; case 0 - b _0238C32C ; case 1 - b _0238C2F4 ; case 2 - b _0238C2F4 ; case 3 - b _0238C2F4 ; case 4 - b _0238C2F4 ; case 5 - b _0238C2F4 ; case 6 - b _0238C2F4 ; case 7 - b _0238C320 ; case 8 - b _0238C2F4 ; case 9 - b _0238C2E8 ; case 10 - b _0238C300 ; case 11 -_0238C2E8: - mov r0, #0x17 - bl ov18_0238BE28 - ldmia sp!, {r3, pc} -_0238C2F4: - mov r0, #0x19 - bl ov18_0238BE28 - ldmia sp!, {r3, pc} -_0238C300: - ldr r0, _0238C33C ; =LINK_SHOP_PTR - mov r3, #0 - ldr r2, [r0] - mov r1, #0x1b - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - ldmia sp!, {r3, pc} -_0238C320: - mov r0, #0x2e - bl ov18_0238BE28 - ldmia sp!, {r3, pc} -_0238C32C: - bl sub_0203A638 - mov r0, #0x11 - bl ov18_0238BE28 - ldmia sp!, {r3, pc} - .align 2, 0 -_0238C33C: .word LINK_SHOP_PTR - arm_func_end ov18_0238C27C - - arm_func_start ov18_0238C340 -ov18_0238C340: ; 0x0238C340 - ldr r0, _0238C360 ; =LINK_SHOP_PTR - mov r3, #0x100 - ldr r2, [r0] - mov r1, #0x18 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C360: .word LINK_SHOP_PTR - arm_func_end ov18_0238C340 - - arm_func_start ov18_0238C364 -ov18_0238C364: ; 0x0238C364 - stmdb sp!, {r3, lr} - bl sub_0203F398 - cmp r0, #1 - ldmneia sp!, {r3, pc} - bl sub_0203F990 - ldr r0, _0238C394 ; =LINK_SHOP_PTR - mvn r2, #1 - ldr r1, [r0] - mov r0, #0x11 - strb r2, [r1, #7] - bl ov18_0238BE28 - ldmia sp!, {r3, pc} - .align 2, 0 -_0238C394: .word LINK_SHOP_PTR - arm_func_end ov18_0238C364 - - arm_func_start ov18_0238C398 -ov18_0238C398: ; 0x0238C398 - ldr r0, _0238C3B8 ; =LINK_SHOP_PTR - ldr r3, _0238C3BC ; =0x00000201 - ldr r2, [r0] - mov r1, #0x1a - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C3B8: .word LINK_SHOP_PTR -_0238C3BC: .word 0x00000201 - arm_func_end ov18_0238C398 - - arm_func_start ov18_0238C3C0 -ov18_0238C3C0: ; 0x0238C3C0 - stmdb sp!, {r4, lr} - bl sub_020407EC - movs r4, r0 - beq _0238C3E4 - ldr r0, _0238C424 ; =LINK_SHOP_PTR - ldr r0, [r0] - add r0, r0, #0x300 - ldrsh r0, [r0, #0x8c] - bl sub_0203FD80 -_0238C3E4: - cmp r4, #1 - beq _0238C40C - cmp r4, #2 - beq _0238C400 - cmp r4, #7 - beq _0238C418 - ldmia sp!, {r4, pc} -_0238C400: - mov r0, #0x1f - bl ov18_0238BE28 - ldmia sp!, {r4, pc} -_0238C40C: - mov r0, #0x11 - bl ov18_0238BE28 - ldmia sp!, {r4, pc} -_0238C418: - mov r0, #0x1d - bl ov18_0238BE28 - ldmia sp!, {r4, pc} - .align 2, 0 -_0238C424: .word LINK_SHOP_PTR - arm_func_end ov18_0238C3C0 - - arm_func_start ov18_0238C428 -ov18_0238C428: ; 0x0238C428 - stmdb sp!, {r3, lr} - ldr r1, _0238C474 ; =LINK_SHOP_PTR - ldr r0, _0238C478 ; =TEAM_MEMBER_TABLE_PTR - ldr r2, [r1] - ldr r1, [r0] - add r0, r2, #0x300 - ldrsh r2, [r0, #0x8c] - mov r0, #0x44 - mov r3, #0 - smlabb r1, r2, r0, r1 - ldrsh r0, [r1, #4] - ldrsh r2, [r1, #8] - add r1, r1, #0x14 - bl PrintIqSkillsMenu - ldr r0, _0238C474 ; =LINK_SHOP_PTR - mov r1, #0x1c - ldr r0, [r0] - str r1, [r0, #0x80] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238C474: .word LINK_SHOP_PTR -_0238C478: .word TEAM_MEMBER_TABLE_PTR - arm_func_end ov18_0238C428 - - arm_func_start ov18_0238C47C -ov18_0238C47C: ; 0x0238C47C - stmdb sp!, {r3, lr} - bl sub_02041B7C - cmp r0, #1 - ldmneia sp!, {r3, pc} - bl sub_020420F4 - bl sub_020572EC - mov r0, #0x11 - bl ov18_0238BE28 - ldmia sp!, {r3, pc} - arm_func_end ov18_0238C47C - - arm_func_start ov18_0238C4A0 -ov18_0238C4A0: ; 0x0238C4A0 - stmdb sp!, {r3, lr} - bl sub_0203FD38 - ldr r1, _0238C4E4 ; =LINK_SHOP_PTR - ldr r1, [r1] - str r0, [r1, #0x3a0] - bl sub_02041094 - ldr r2, _0238C4E4 ; =LINK_SHOP_PTR - mov ip, #0x400 - ldr r1, [r2] - mov r3, #0x1e - add r1, r1, #0x300 - strh r0, [r1, #0xa4] - ldr r0, [r2] - str ip, [r0, #0x88] - ldr r0, [r2] - str r3, [r0, #0x80] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238C4E4: .word LINK_SHOP_PTR - arm_func_end ov18_0238C4A0 - - arm_func_start ov18_0238C4E8 -ov18_0238C4E8: ; 0x0238C4E8 - stmdb sp!, {r3, lr} - bl sub_02041A18 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0x19 - bl ov18_0238BE28 - ldmia sp!, {r3, pc} - arm_func_end ov18_0238C4E8 - - arm_func_start ov18_0238C504 -ov18_0238C504: ; 0x0238C504 - ldr r0, _0238C524 ; =LINK_SHOP_PTR - mov r3, #0xa00 - ldr r2, [r0] - mov r1, #0x20 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C524: .word LINK_SHOP_PTR - arm_func_end ov18_0238C504 - - arm_func_start ov18_0238C528 -ov18_0238C528: ; 0x0238C528 - stmdb sp!, {r3, r4, r5, lr} - ldr r0, _0238C714 ; =LINK_SHOP_PTR - mov r4, #0 - ldr r0, [r0] - ldrsb r0, [r0, #0xa] - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r3, r4, r5, pc} - bl sub_02041094 - ldr r1, _0238C714 ; =LINK_SHOP_PTR - mov r5, r0 - ldr r0, [r1] - ldrsb r0, [r0, #0xa] - bl GetSimpleMenuResult__0202B870 - sub r1, r0, #4 - cmp r1, #0xe - addls pc, pc, r1, lsl #2 - b _0238C6D0 -_0238C570: ; jump table - b _0238C6BC ; case 0 - b _0238C6D0 ; case 1 - b _0238C6D0 ; case 2 - b _0238C5AC ; case 3 - b _0238C5C8 ; case 4 - b _0238C638 ; case 5 - b _0238C6A8 ; case 6 - b _0238C5AC ; case 7 - b _0238C5AC ; case 8 - b _0238C6D0 ; case 9 - b _0238C6D0 ; case 10 - b _0238C6D0 ; case 11 - b _0238C6D0 ; case 12 - b _0238C670 ; case 13 - b _0238C68C ; case 14 -_0238C5AC: - ldr r0, _0238C718 ; =0x00003F07 - mov r1, #0x100 - bl sub_02017C74 - mov r0, r5 - mov r4, #1 - bl sub_02041000 - b _0238C6E4 -_0238C5C8: - mov r4, #1 - bl GetMoneyCarried - cmp r0, #0x1f4 - bge _0238C5EC - mov r0, #0 - bl PlaySeVolumeWrapper - mov r0, #0x13 - bl ov18_0238BE28 - ldmia sp!, {r3, r4, r5, pc} -_0238C5EC: - mov r0, r5 - bl sub_02041194 - cmp r0, #0 - beq _0238C62C - bl sub_02041414 - cmp r0, #0 - bne _0238C614 - ldr r0, _0238C71C ; =0x00001308 - bl PlaySeByIdVolumeWrapper - b _0238C620 -_0238C614: - ldr r0, _0238C718 ; =0x00003F07 - mov r1, #0x100 - bl sub_02017C74 -_0238C620: - mov r0, r5 - bl sub_020412B0 - b _0238C6E4 -_0238C62C: - mov r0, #2 - bl PlaySeVolumeWrapper - b _0238C6E4 -_0238C638: - mov r0, r5 - mov r4, #1 - bl sub_02041364 - cmp r0, #0 - beq _0238C664 - ldr r0, _0238C718 ; =0x00003F07 - mov r1, #0x100 - bl sub_02017C74 - mov r0, r5 - bl sub_02041394 - b _0238C6E4 -_0238C664: - mov r0, #2 - bl PlaySeVolumeWrapper - b _0238C6E4 -_0238C670: - mov r0, r4 - bl PlaySeVolumeWrapper - mov r0, r5 - bl sub_020416BC - bl sub_020410A4 - mov r4, #1 - b _0238C6E4 -_0238C68C: - mov r0, r4 - bl PlaySeVolumeWrapper - mov r0, r5 - bl sub_020416DC - bl sub_020410A4 - mov r4, #1 - b _0238C6E4 -_0238C6A8: - ldr r0, _0238C718 ; =0x00003F07 - bl PlaySeByIdVolumeWrapper - mov r0, #0x21 - bl ov18_0238BE28 - b _0238C6E4 -_0238C6BC: - mov r0, r4 - bl PlaySeVolumeWrapper - mov r0, #0x1d - bl ov18_0238BE28 - b _0238C6E4 -_0238C6D0: - cmp r0, #6 - beq _0238C6E0 - mov r0, #1 - bl PlaySeVolumeWrapper -_0238C6E0: - mov r4, #1 -_0238C6E4: - cmp r4, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldr r0, _0238C714 ; =LINK_SHOP_PTR - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #8] - cmp r0, r1 - beq _0238C708 - bl sub_020307EC -_0238C708: - mov r0, #0x19 - bl ov18_0238BE28 - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_0238C714: .word LINK_SHOP_PTR -_0238C718: .word 0x00003F07 -_0238C71C: .word 0x00001308 - arm_func_end ov18_0238C528 - - arm_func_start ov18_0238C720 -ov18_0238C720: ; 0x0238C720 - stmdb sp!, {r4, lr} - bl sub_02041094 - mov r4, r0 - bl sub_02041154 - ldr r1, _0238C788 ; =LINK_SHOP_PTR - cmp r4, #0 - ldr r1, [r1] - str r0, [r1, #0x24] - bne _0238C760 - mov r0, r4 - bl sub_02041424 - cmp r0, #0 - bne _0238C760 - mov r0, #0x22 - bl ov18_0238BE28 - ldmia sp!, {r4, pc} -_0238C760: - mov r0, r4 - bl sub_02041364 - cmp r0, #0 - beq _0238C77C - mov r0, #0x24 - bl ov18_0238BE28 - ldmia sp!, {r4, pc} -_0238C77C: - mov r0, #0x27 - bl ov18_0238BE28 - ldmia sp!, {r4, pc} - .align 2, 0 -_0238C788: .word LINK_SHOP_PTR - arm_func_end ov18_0238C720 - - arm_func_start ov18_0238C78C -ov18_0238C78C: ; 0x0238C78C - ldr r0, _0238C7AC ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x23 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C7AC: .word LINK_SHOP_PTR - arm_func_end ov18_0238C78C - - arm_func_start ov18_0238C7B0 -ov18_0238C7B0: ; 0x0238C7B0 - ldr ip, _0238C7BC ; =ov18_0238BE28 - mov r0, #0x19 - bx ip - .align 2, 0 -_0238C7BC: .word ov18_0238BE28 - arm_func_end ov18_0238C7B0 - - arm_func_start ov18_0238C7C0 -ov18_0238C7C0: ; 0x0238C7C0 - ldr r0, _0238C7E0 ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x25 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C7E0: .word LINK_SHOP_PTR - arm_func_end ov18_0238C7C0 - - arm_func_start ov18_0238C7E4 -ov18_0238C7E4: ; 0x0238C7E4 - ldr r0, _0238C804 ; =LINK_SHOP_PTR - mov r3, #0x43 - ldr r2, [r0] - mov r1, #0x26 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C804: .word LINK_SHOP_PTR - arm_func_end ov18_0238C7E4 - - arm_func_start ov18_0238C808 -ov18_0238C808: ; 0x0238C808 - stmdb sp!, {r4, lr} - ldr r0, _0238C884 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #6] - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r4, pc} - bl sub_02041094 - ldr r1, _0238C884 ; =LINK_SHOP_PTR - mov r4, r0 - ldr r0, [r1] - ldrsb r0, [r0, #6] - bl GetSimpleMenuResult__0202B870 - cmp r0, #0 - beq _0238C850 - cmp r0, #1 - beq _0238C878 - ldmia sp!, {r4, pc} -_0238C850: - mov r0, r4 - bl sub_02041484 - ldr r0, _0238C884 ; =LINK_SHOP_PTR - ldr r0, [r0] - add r0, r0, #0x300 - ldrsh r0, [r0, #0x8c] - bl sub_0203FD80 - mov r0, #0x2a - bl ov18_0238BE28 - ldmia sp!, {r4, pc} -_0238C878: - mov r0, #0x19 - bl ov18_0238BE28 - ldmia sp!, {r4, pc} - .align 2, 0 -_0238C884: .word LINK_SHOP_PTR - arm_func_end ov18_0238C808 - - arm_func_start ov18_0238C888 -ov18_0238C888: ; 0x0238C888 - ldr r0, _0238C8A8 ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x28 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C8A8: .word LINK_SHOP_PTR - arm_func_end ov18_0238C888 - - arm_func_start ov18_0238C8AC -ov18_0238C8AC: ; 0x0238C8AC - ldr r0, _0238C8CC ; =LINK_SHOP_PTR - mov r3, #0x43 - ldr r2, [r0] - mov r1, #0x29 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C8CC: .word LINK_SHOP_PTR - arm_func_end ov18_0238C8AC - - arm_func_start ov18_0238C8D0 -ov18_0238C8D0: ; 0x0238C8D0 - stmdb sp!, {r4, lr} - ldr r0, _0238C94C ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #6] - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r4, pc} - bl sub_02041094 - ldr r1, _0238C94C ; =LINK_SHOP_PTR - mov r4, r0 - ldr r0, [r1] - ldrsb r0, [r0, #6] - bl GetSimpleMenuResult__0202B870 - cmp r0, #0 - beq _0238C918 - cmp r0, #1 - beq _0238C940 - ldmia sp!, {r4, pc} -_0238C918: - mov r0, r4 - bl sub_02041484 - ldr r0, _0238C94C ; =LINK_SHOP_PTR - ldr r0, [r0] - add r0, r0, #0x300 - ldrsh r0, [r0, #0x8c] - bl sub_0203FD80 - mov r0, #0x2c - bl ov18_0238BE28 - ldmia sp!, {r4, pc} -_0238C940: - mov r0, #0x19 - bl ov18_0238BE28 - ldmia sp!, {r4, pc} - .align 2, 0 -_0238C94C: .word LINK_SHOP_PTR - arm_func_end ov18_0238C8D0 - - arm_func_start ov18_0238C950 -ov18_0238C950: ; 0x0238C950 - ldr r0, _0238C970 ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x2b - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C970: .word LINK_SHOP_PTR - arm_func_end ov18_0238C950 - - arm_func_start ov18_0238C974 -ov18_0238C974: ; 0x0238C974 - ldr ip, _0238C980 ; =ov18_0238BE28 - mov r0, #0x19 - bx ip - .align 2, 0 -_0238C980: .word ov18_0238BE28 - arm_func_end ov18_0238C974 - - arm_func_start ov18_0238C984 -ov18_0238C984: ; 0x0238C984 - ldr r0, _0238C9A4 ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x2d - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238C9A4: .word LINK_SHOP_PTR - arm_func_end ov18_0238C984 - - arm_func_start ov18_0238C9A8 -ov18_0238C9A8: ; 0x0238C9A8 - ldr ip, _0238C9B4 ; =ov18_0238BE28 - mov r0, #0x19 - bx ip - .align 2, 0 -_0238C9B4: .word ov18_0238BE28 - arm_func_end ov18_0238C9A8 - - arm_func_start ov18_0238C9B8 -ov18_0238C9B8: ; 0x0238C9B8 - stmdb sp!, {r3, lr} - bl sub_0204159C - cmp r0, #0 - ldreq r0, _0238CA14 ; =LINK_SHOP_PTR - moveq r1, #0x2f - ldreq r0, [r0] - streq r1, [r0, #0x80] - ldmeqia sp!, {r3, pc} - ldr r0, _0238CA14 ; =LINK_SHOP_PTR - ldr r0, [r0] - add r0, r0, #0x300 - ldrsh r0, [r0, #0x8c] - bl ov18_0238ABB0 - cmp r0, #0 - ldrle r0, _0238CA14 ; =LINK_SHOP_PTR - movle r1, #0x31 - ldrle r0, [r0] - strle r1, [r0, #0x80] - ldrgt r0, _0238CA14 ; =LINK_SHOP_PTR - movgt r1, #0x33 - ldrgt r0, [r0] - strgt r1, [r0, #0x80] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238CA14: .word LINK_SHOP_PTR - arm_func_end ov18_0238C9B8 - - arm_func_start ov18_0238CA18 -ov18_0238CA18: ; 0x0238CA18 - ldr r0, _0238CA38 ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x30 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238CA38: .word LINK_SHOP_PTR - arm_func_end ov18_0238CA18 - - arm_func_start ov18_0238CA3C -ov18_0238CA3C: ; 0x0238CA3C - ldr ip, _0238CA48 ; =ov18_0238BE28 - mov r0, #0x11 - bx ip - .align 2, 0 -_0238CA48: .word ov18_0238BE28 - arm_func_end ov18_0238CA3C - - arm_func_start ov18_0238CA4C -ov18_0238CA4C: ; 0x0238CA4C - ldr r0, _0238CA6C ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x32 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238CA6C: .word LINK_SHOP_PTR - arm_func_end ov18_0238CA4C - - arm_func_start ov18_0238CA70 -ov18_0238CA70: ; 0x0238CA70 - ldr ip, _0238CA7C ; =ov18_0238BE28 - mov r0, #0x11 - bx ip - .align 2, 0 -_0238CA7C: .word ov18_0238BE28 - arm_func_end ov18_0238CA70 - - arm_func_start ov18_0238CA80 -ov18_0238CA80: ; 0x0238CA80 - ldr r0, _0238CAAC ; =LINK_SHOP_PTR - mov r2, #3 - ldr r1, [r0] - mov r3, #0 - str r2, [r1, #0x88] - ldr r2, [r0] - mov r1, #0x34 - strh r3, [r2, #0x8c] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238CAAC: .word LINK_SHOP_PTR - arm_func_end ov18_0238CA80 - - arm_func_start ov18_0238CAB0 -ov18_0238CAB0: ; 0x0238CAB0 - ldr r0, _0238CAD0 ; =LINK_SHOP_PTR - mov r3, #0x1000 - ldr r2, [r0] - mov r1, #0x35 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238CAD0: .word LINK_SHOP_PTR - arm_func_end ov18_0238CAB0 - - arm_func_start ov18_0238CAD4 -ov18_0238CAD4: ; 0x0238CAD4 - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - add r1, sp, #0 - mov r0, #0 - bl GetPressedButtons - ldr r0, _0238CBD8 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #0xb] - bl GetAdvancedMenuCurrentOption - ldr r1, _0238CBD8 ; =LINK_SHOP_PTR - ldr r2, [r1] - strh r0, [r2, #0x8c] - ldrh r0, [sp] - tst r0, #8 - beq _0238CB8C - ldr r1, [r1] - ldrsb r0, [r1, #0xb] - ldrsh r4, [r1, #0x8c] - bl sub_0202C1E4 - ldr r0, _0238CBD8 ; =LINK_SHOP_PTR - mov r1, r4 - ldr r0, [r0] - add r0, r0, #0x300 - ldrsh r0, [r0, #0x8c] - bl ov18_0238ADA8 - ldr r2, _0238CBD8 ; =LINK_SHOP_PTR - mov lr, #0 - ldr r1, [r2] - mov ip, #1 - str lr, [r1, #0x3a0] - ldr r1, [r2] - mov r3, #0x38 - add r1, r1, #0x300 - strh r0, [r1, #0xaa] - ldr r0, [r2] - strb ip, [r0, #0x3a6] - ldr r0, [r2] - add r0, r0, #0x300 - strh lr, [r0, #0xa8] - ldr r0, [r2] - strb ip, [r0, #0x3ac] - ldr r0, [r2] - strb lr, [r0, #0x3ad] - ldr r0, [r2] - str r3, [r0, #0x80] - b _0238CBD0 -_0238CB8C: - ldr r0, [r1] - ldrsb r0, [r0, #0xb] - bl IsAdvancedMenuActive2 - cmp r0, #0 - bne _0238CBD0 - ldr r0, _0238CBD8 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #0xb] - bl GetAdvancedMenuResult - mvn r1, #0 - cmp r0, r1 - bne _0238CBC8 - mov r0, #0x11 - bl ov18_0238BE28 - b _0238CBD0 -_0238CBC8: - mov r0, #0x36 - bl ov18_0238BE28 -_0238CBD0: - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - .align 2, 0 -_0238CBD8: .word LINK_SHOP_PTR - arm_func_end ov18_0238CAD4 - - arm_func_start ov18_0238CBDC -ov18_0238CBDC: ; 0x0238CBDC - ldr r0, _0238CBFC ; =LINK_SHOP_PTR - mov r3, #0x3000 - ldr r2, [r0] - mov r1, #0x37 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238CBFC: .word LINK_SHOP_PTR - arm_func_end ov18_0238CBDC - - arm_func_start ov18_0238CC00 -ov18_0238CC00: ; 0x0238CC00 - stmdb sp!, {r4, lr} - ldr r0, _0238CD84 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #0xb] - bl GetAdvancedMenuResult - ldr r1, _0238CD84 ; =LINK_SHOP_PTR - mov r4, r0 - ldr r0, [r1] - ldrsb r0, [r0, #0xc] - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r4, pc} - ldr r0, _0238CD84 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #0xc] - bl GetSimpleMenuResult__0202B870 - sub r0, r0, #4 - cmp r0, #9 - addls pc, pc, r0, lsl #2 - b _0238CD5C -_0238CC50: ; jump table - b _0238CCF0 ; case 0 - b _0238CD5C ; case 1 - b _0238CD5C ; case 2 - b _0238CD5C ; case 3 - b _0238CD5C ; case 4 - b _0238CD5C ; case 5 - b _0238CD5C ; case 6 - b _0238CD5C ; case 7 - b _0238CD5C ; case 8 - b _0238CC78 ; case 9 -_0238CC78: - ldr r1, _0238CD84 ; =LINK_SHOP_PTR - mov r0, r4, lsl #0x10 - ldr r2, [r1] - mov r1, r0, asr #0x10 - add r0, r2, #0x300 - ldrsh r0, [r0, #0x8c] - bl ov18_0238ADA8 - ldr r1, _0238CD84 ; =LINK_SHOP_PTR - mov r4, r0 - ldr r0, [r1] - str r4, [r0, #0x24] - bl sub_020415BC - cmp r0, #0 - mov r0, r4 - beq _0238CCCC - bl sub_0203FD14 - ldr r0, _0238CD84 ; =LINK_SHOP_PTR - mov r1, #0x3c - ldr r0, [r0] - str r1, [r0, #0x80] - ldmia sp!, {r4, pc} -_0238CCCC: - bl sub_02041614 - ldr r0, _0238CD84 ; =LINK_SHOP_PTR - ldr r0, [r0] - add r0, r0, #0x300 - ldrsh r0, [r0, #0x8c] - bl sub_0203FD80 - mov r0, #0x3a - bl ov18_0238BE28 - ldmia sp!, {r4, pc} -_0238CCF0: - ldr r1, _0238CD84 ; =LINK_SHOP_PTR - mov r0, r4, lsl #0x10 - ldr r2, [r1] - mov r1, r0, asr #0x10 - add r0, r2, #0x300 - ldrsh r0, [r0, #0x8c] - bl ov18_0238ADA8 - ldr r2, _0238CD84 ; =LINK_SHOP_PTR - mov r4, #0 - ldr r1, [r2] - mov r3, #1 - str r4, [r1, #0x3a0] - ldr r1, [r2] - add r1, r1, #0x300 - strh r0, [r1, #0xaa] - ldr r1, [r2] - mov r0, #0x38 - strb r3, [r1, #0x3a6] - ldr r1, [r2] - add r1, r1, #0x300 - strh r4, [r1, #0xa8] - ldr r1, [r2] - strb r3, [r1, #0x3ac] - ldr r1, [r2] - strb r4, [r1, #0x3ad] - bl ov18_0238BE28 - ldmia sp!, {r4, pc} -_0238CD5C: - ldr r0, _0238CD84 ; =LINK_SHOP_PTR - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #0xb] - cmp r0, r1 - beq _0238CD78 - bl ResumeAdvancedMenu -_0238CD78: - mov r0, #0x34 - bl ov18_0238BE28 - ldmia sp!, {r4, pc} - .align 2, 0 -_0238CD84: .word LINK_SHOP_PTR - arm_func_end ov18_0238CC00 - - arm_func_start ov18_0238CD88 -ov18_0238CD88: ; 0x0238CD88 - ldr r0, _0238CDA8 ; =LINK_SHOP_PTR - mov r3, #0x400 - ldr r2, [r0] - mov r1, #0x39 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238CDA8: .word LINK_SHOP_PTR - arm_func_end ov18_0238CD88 - - arm_func_start ov18_0238CDAC -ov18_0238CDAC: ; 0x0238CDAC - stmdb sp!, {r3, lr} - bl sub_02041A18 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0x34 - bl ov18_0238BE28 - ldmia sp!, {r3, pc} - arm_func_end ov18_0238CDAC - - arm_func_start ov18_0238CDC8 -ov18_0238CDC8: ; 0x0238CDC8 - ldr r0, _0238CDE8 ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x3b - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238CDE8: .word LINK_SHOP_PTR - arm_func_end ov18_0238CDC8 - - arm_func_start ov18_0238CDEC -ov18_0238CDEC: ; 0x0238CDEC - ldr ip, _0238CDF8 ; =ov18_0238BE28 - mov r0, #0x11 - bx ip - .align 2, 0 -_0238CDF8: .word ov18_0238BE28 - arm_func_end ov18_0238CDEC - - arm_func_start ov18_0238CDFC -ov18_0238CDFC: ; 0x0238CDFC - ldr r0, _0238CE1C ; =LINK_SHOP_PTR - mov r3, #0x14000 - ldr r2, [r0] - mov r1, #0x3d - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238CE1C: .word LINK_SHOP_PTR - arm_func_end ov18_0238CDFC - - arm_func_start ov18_0238CE20 -ov18_0238CE20: ; 0x0238CE20 - stmdb sp!, {r4, lr} - bl sub_020407EC - movs r4, r0 - beq _0238CE44 - ldr r0, _0238CE84 ; =LINK_SHOP_PTR - ldr r0, [r0] - add r0, r0, #0x300 - ldrsh r0, [r0, #0x8c] - bl sub_0203FD80 -_0238CE44: - cmp r4, #1 - beq _0238CE6C - cmp r4, #2 - beq _0238CE60 - cmp r4, #7 - beq _0238CE78 - ldmia sp!, {r4, pc} -_0238CE60: - mov r0, #0x3e - bl ov18_0238BE28 - ldmia sp!, {r4, pc} -_0238CE6C: - mov r0, #0x11 - bl ov18_0238BE28 - ldmia sp!, {r4, pc} -_0238CE78: - mov r0, #0x40 - bl ov18_0238BE28 - ldmia sp!, {r4, pc} - .align 2, 0 -_0238CE84: .word LINK_SHOP_PTR - arm_func_end ov18_0238CE20 - - arm_func_start ov18_0238CE88 -ov18_0238CE88: ; 0x0238CE88 - stmdb sp!, {r3, lr} - ldr r0, _0238CED4 ; =LINK_SHOP_PTR - mov r1, #0xc000 - ldr r0, [r0] - str r1, [r0, #0x88] - bl sub_02041094 - bl sub_02041154 - ldr r1, _0238CED4 ; =LINK_SHOP_PTR - ldr r1, [r1] - str r0, [r1, #0x24] - mov r0, #4 - bl sub_02041154 - ldr r1, _0238CED4 ; =LINK_SHOP_PTR - mov r2, #0x3f - ldr r3, [r1] - str r0, [r3, #0x28] - ldr r0, [r1] - str r2, [r0, #0x80] - ldmia sp!, {r3, pc} - .align 2, 0 -_0238CED4: .word LINK_SHOP_PTR - arm_func_end ov18_0238CE88 - - arm_func_start ov18_0238CED8 -ov18_0238CED8: ; 0x0238CED8 - stmdb sp!, {r3, lr} - bl sub_02041094 - ldr r0, _0238CF94 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #0xe] - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r3, pc} - bl sub_0203FD38 - ldr r0, _0238CF94 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #0xe] - bl GetSimpleMenuResult__0202B870 - sub r0, r0, #4 - cmp r0, #6 - addls pc, pc, r0, lsl #2 - b _0238CF6C -_0238CF1C: ; jump table - b _0238CF60 ; case 0 - b _0238CF6C ; case 1 - b _0238CF6C ; case 2 - b _0238CF6C ; case 3 - b _0238CF6C ; case 4 - b _0238CF6C ; case 5 - b _0238CF38 ; case 6 -_0238CF38: - bl sub_02041094 - bl sub_02041364 - cmp r0, #0 - beq _0238CF54 - mov r0, #0x42 - bl ov18_0238BE28 - ldmia sp!, {r3, pc} -_0238CF54: - mov r0, #0x45 - bl ov18_0238BE28 - ldmia sp!, {r3, pc} -_0238CF60: - mov r0, #0x40 - bl ov18_0238BE28 - ldmia sp!, {r3, pc} -_0238CF6C: - ldr r0, _0238CF94 ; =LINK_SHOP_PTR - mvn r1, #1 - ldr r0, [r0] - ldrsb r0, [r0, #0xb] - cmp r0, r1 - beq _0238CF88 - bl ResumeAdvancedMenu -_0238CF88: - mov r0, #0x3c - bl ov18_0238BE28 - ldmia sp!, {r3, pc} - .align 2, 0 -_0238CF94: .word LINK_SHOP_PTR - arm_func_end ov18_0238CED8 - - arm_func_start ov18_0238CF98 -ov18_0238CF98: ; 0x0238CF98 - stmdb sp!, {r4, lr} - bl sub_0203FD38 - mov r4, r0 - bl sub_02041094 - cmp r0, #4 - blt _0238CFF0 - bl sub_0203FD2C - ldr r2, _0238D030 ; =LINK_SHOP_PTR - mov r1, r0 - ldr r0, [r2] - mov r2, #8 - add r0, r0, #0xa6 - add r0, r0, #0x300 - bl memcpy - ldr r0, _0238D030 ; =LINK_SHOP_PTR - mov r2, #0 - ldr r1, [r0] - str r2, [r1, #0x3a0] - ldr r0, [r0] - add r0, r0, #0x300 - strh r2, [r0, #0xa4] - b _0238D010 -_0238CFF0: - ldr r0, _0238D030 ; =LINK_SHOP_PTR - ldr r0, [r0] - str r4, [r0, #0x3a0] - bl sub_02041094 - ldr r1, _0238D030 ; =LINK_SHOP_PTR - ldr r1, [r1] - add r1, r1, #0x300 - strh r0, [r1, #0xa4] -_0238D010: - ldr r0, _0238D030 ; =LINK_SHOP_PTR - mov r3, #0x400 - ldr r2, [r0] - mov r1, #0x41 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - ldmia sp!, {r4, pc} - .align 2, 0 -_0238D030: .word LINK_SHOP_PTR - arm_func_end ov18_0238CF98 - - arm_func_start ov18_0238D034 -ov18_0238D034: ; 0x0238D034 - stmdb sp!, {r3, lr} - bl sub_02041A18 - cmp r0, #0 - ldmeqia sp!, {r3, pc} - mov r0, #0x3c - bl ov18_0238BE28 - ldmia sp!, {r3, pc} - arm_func_end ov18_0238D034 - - arm_func_start ov18_0238D050 -ov18_0238D050: ; 0x0238D050 - ldr r0, _0238D070 ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x43 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238D070: .word LINK_SHOP_PTR - arm_func_end ov18_0238D050 - - arm_func_start ov18_0238D074 -ov18_0238D074: ; 0x0238D074 - ldr r0, _0238D094 ; =LINK_SHOP_PTR - mov r3, #0x43 - ldr r2, [r0] - mov r1, #0x44 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238D094: .word LINK_SHOP_PTR - arm_func_end ov18_0238D074 - - arm_func_start ov18_0238D098 -ov18_0238D098: ; 0x0238D098 - stmdb sp!, {r4, lr} - ldr r0, _0238D128 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #6] - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r4, pc} - bl sub_02041094 - ldr r1, _0238D128 ; =LINK_SHOP_PTR - mov r4, r0 - ldr r0, [r1] - ldrsb r0, [r0, #6] - bl GetSimpleMenuResult__0202B870 - cmp r0, #0 - beq _0238D0E0 - cmp r0, #1 - beq _0238D11C - ldmia sp!, {r4, pc} -_0238D0E0: - mov r0, r4 - bl sub_02041484 - bl sub_0203FD2C - ldrh r0, [r0, #4] - bl sub_02041614 - ldr r0, _0238D128 ; =LINK_SHOP_PTR - ldr r0, [r0] - add r0, r0, #0x300 - ldrsh r0, [r0, #0x8c] - bl sub_0203FD80 - ldr r0, _0238D128 ; =LINK_SHOP_PTR - mov r1, #0x48 - ldr r0, [r0] - str r1, [r0, #0x80] - ldmia sp!, {r4, pc} -_0238D11C: - mov r0, #0x3c - bl ov18_0238BE28 - ldmia sp!, {r4, pc} - .align 2, 0 -_0238D128: .word LINK_SHOP_PTR - arm_func_end ov18_0238D098 - - arm_func_start ov18_0238D12C -ov18_0238D12C: ; 0x0238D12C - ldr r0, _0238D14C ; =LINK_SHOP_PTR - mov r3, #3 - ldr r2, [r0] - mov r1, #0x46 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238D14C: .word LINK_SHOP_PTR - arm_func_end ov18_0238D12C - - arm_func_start ov18_0238D150 -ov18_0238D150: ; 0x0238D150 - ldr r0, _0238D170 ; =LINK_SHOP_PTR - mov r3, #0x43 - ldr r2, [r0] - mov r1, #0x47 - str r3, [r2, #0x88] - ldr r0, [r0] - str r1, [r0, #0x80] - bx lr - .align 2, 0 -_0238D170: .word LINK_SHOP_PTR - arm_func_end ov18_0238D150 - - arm_func_start ov18_0238D174 -ov18_0238D174: ; 0x0238D174 - stmdb sp!, {r4, lr} - ldr r0, _0238D204 ; =LINK_SHOP_PTR - ldr r0, [r0] - ldrsb r0, [r0, #6] - bl IsSimpleMenuActive - cmp r0, #0 - ldmneia sp!, {r4, pc} - bl sub_02041094 - ldr r1, _0238D204 ; =LINK_SHOP_PTR - mov r4, r0 - ldr r0, [r1] - ldrsb r0, [r0, #6] - bl GetSimpleMenuResult__0202B870 - cmp r0, #0 - beq _0238D1BC - cmp r0, #1 - beq _0238D1F8 - ldmia sp!, {r4, pc} -_0238D1BC: - mov r0, r4 - bl sub_02041484 - bl sub_0203FD2C - ldrh r0, [r0, #4] - bl sub_02041614 - ldr r0, _0238D204 ; =LINK_SHOP_PTR - ldr r0, [r0] - add r0, r0, #0x300 - ldrsh r0, [r0, #0x8c] - bl sub_0203FD80 - ldr r0, _0238D204 ; =LINK_SHOP_PTR - mov r1, #0x4a - ldr r0, [r0] - str r1, [r0, #0x80] - ldmia sp!, {r4, pc} -_0238D1F8: - mov r0, #0x3c - bl ov18_0238BE28 - ldmia sp!, {r4, pc} - .align 2, 0 -_0238D204: .word LINK_SHOP_PTR - arm_func_end ov18_0238D174 - ; 0x0238D208 - - .rodata - .global ov18_0238D208 -ov18_0238D208: - .byte 0x18, 0x00, 0x9F, 0xE5, 0x03, 0x30, 0xA0, 0xE3, 0x00, 0x20, 0x90, 0xE5, 0x49, 0x10, 0xA0, 0xE3 - .byte 0x88, 0x30, 0x82, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x80, 0x10, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1 - .word LINK_SHOP_PTR - .global ov18_0238D22C -ov18_0238D22C: - .byte 0x04, 0xC0, 0x9F, 0xE5, 0x11, 0x00, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1 - .word ov18_0238BE28 - .global ov18_0238D23C -ov18_0238D23C: - .byte 0x18, 0x00, 0x9F, 0xE5, 0x03, 0x30, 0xA0, 0xE3, 0x00, 0x20, 0x90, 0xE5 - .byte 0x4B, 0x10, 0xA0, 0xE3, 0x88, 0x30, 0x82, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x80, 0x10, 0x80, 0xE5 - .byte 0x1E, 0xFF, 0x2F, 0xE1 - .word LINK_SHOP_PTR - .global ov18_0238D260 -ov18_0238D260: - .byte 0x04, 0xC0, 0x9F, 0xE5, 0x11, 0x00, 0xA0, 0xE3 - .byte 0x1C, 0xFF, 0x2F, 0xE1 - .word ov18_0238BE28 - .global LINK_SHOP_WINDOW_PARAMS_1 -LINK_SHOP_WINDOW_PARAMS_1: - .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x04 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_2 -LINK_SHOP_WINDOW_PARAMS_2: - .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x08, 0x00 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_3 -LINK_SHOP_WINDOW_PARAMS_3: - .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x00 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_4 -LINK_SHOP_WINDOW_PARAMS_4: - .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x00 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_5 -LINK_SHOP_WINDOW_PARAMS_5: - .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x00 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_6 -LINK_SHOP_WINDOW_PARAMS_6: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x12, 0x00 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_7 -LINK_SHOP_WINDOW_PARAMS_7: - .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x0B, 0x00 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_8 -LINK_SHOP_WINDOW_PARAMS_8: - .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x02, 0x0B, 0x00 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_9 -LINK_SHOP_WINDOW_PARAMS_9: - .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x00, 0x00 - .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_10 -LINK_SHOP_WINDOW_PARAMS_10: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x12, 0x1C, 0x04 - .byte 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_WINDOW_PARAMS_11 -LINK_SHOP_WINDOW_PARAMS_11: - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x11, 0x1C, 0x05 - .byte 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - .global LINK_SHOP_MENU_ITEMS_CONFIRM -LINK_SHOP_MENU_ITEMS_CONFIRM: -#ifdef JAPAN -#define OV18_DATA_OFFSET 0x3926 -#define OV18_DATA_OFFSET_2 -0x1C5 -#else -#define OV18_DATA_OFFSET 0 -#define OV18_DATA_OFFSET_2 0 -#define OV18_DATA_OFFSET_2 0 -#endif - .word 0x3E7 + OV18_DATA_OFFSET - .byte 0x00, 0x00, 0x00, 0x00 - .word 0x3E8 + OV18_DATA_OFFSET - .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 - .global LINK_SHOP_SUBMENU_ITEMS_1 -LINK_SHOP_SUBMENU_ITEMS_1: - .word 0x3F3 + OV18_DATA_OFFSET - .byte 0x0D, 0x00, 0x00, 0x00 - .word 0x3EB + OV18_DATA_OFFSET - .byte 0x04, 0x00, 0x00, 0x00 - .word 0x3EC + OV18_DATA_OFFSET - .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .global LINK_SHOP_SUBMENU_ITEMS_2 -LINK_SHOP_SUBMENU_ITEMS_2: - .word 0x3F0 + OV18_DATA_OFFSET - .byte 0x0A, 0x00, 0x00, 0x00 - .word 0x3EB + OV18_DATA_OFFSET - .byte 0x04, 0x00, 0x00, 0x00 - .word 0x3EC + OV18_DATA_OFFSET - .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .global LINK_SHOP_MAIN_MENU_ITEMS -LINK_SHOP_MAIN_MENU_ITEMS: - .word 0x3EA + OV18_DATA_OFFSET - .byte 0x03, 0x00, 0x00, 0x00 - .word 0x3EB + OV18_DATA_OFFSET - .byte 0x04, 0x00, 0x00, 0x00 - .word 0x3EC + OV18_DATA_OFFSET - .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .global LINK_SHOP_SUBMENU_ITEMS_3 -LINK_SHOP_SUBMENU_ITEMS_3: - .word 0x3ED + OV18_DATA_OFFSET - .byte 0x07, 0x00, 0x00, 0x00 - .word 0x3EE + OV18_DATA_OFFSET - .byte 0x08, 0x00, 0x00, 0x00 - .word 0x3F3 + OV18_DATA_OFFSET - .byte 0x0D, 0x00, 0x00, 0x00 - .word 0x3E9 + OV18_DATA_OFFSET - .byte 0x02, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 - .global LINK_SHOP_SUBMENU_ITEMS_4 -LINK_SHOP_SUBMENU_ITEMS_4: - .word 0x3F4 + OV18_DATA_OFFSET - .byte 0x0E, 0x00, 0x00, 0x00 - .word 0x3F5 + OV18_DATA_OFFSET - .byte 0x0F, 0x00, 0x00, 0x00 - .word 0x3F6 + OV18_DATA_OFFSET - .byte 0x10, 0x00, 0x00, 0x00 - .word 0x3F3 + OV18_DATA_OFFSET - .byte 0x0D, 0x00, 0x00, 0x00 - .word 0x3EC + OV18_DATA_OFFSET - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 - .global LINK_SHOP_SUBMENU_ITEMS_5 -LINK_SHOP_SUBMENU_ITEMS_5: - .word 0x3ED + OV18_DATA_OFFSET - .byte 0x07, 0x00, 0x00, 0x00 - .word 0x3EE + OV18_DATA_OFFSET - .byte 0x08, 0x00, 0x00, 0x00 - .word 0x3EF + OV18_DATA_OFFSET - .byte 0x09, 0x00, 0x00, 0x00 - .word 0xA3F + OV18_DATA_OFFSET_2 - .byte 0x11, 0x00, 0x00, 0x00 - .word 0xA40 + OV18_DATA_OFFSET_2 - .byte 0x12, 0x00, 0x00, 0x00 - .word 0x3F0 + OV18_DATA_OFFSET - .byte 0x0A, 0x00, 0x00, 0x00 - .word 0x3EB + OV18_DATA_OFFSET - .byte 0x04, 0x00, 0x00, 0x00 - .word 0x3EC + OV18_DATA_OFFSET - .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .global LINK_SHOP_SUBMENU_ITEMS_6 -LINK_SHOP_SUBMENU_ITEMS_6: - .word 0x3F1 + OV18_DATA_OFFSET - .byte 0x0B, 0x00, 0x00, 0x00 - .word 0x3EE + OV18_DATA_OFFSET - .byte 0x08, 0x00, 0x00, 0x00 - .word 0x3EF + OV18_DATA_OFFSET - .byte 0x09, 0x00, 0x00, 0x00 - .word 0xA3F + OV18_DATA_OFFSET_2 - .byte 0x11, 0x00, 0x00, 0x00 - .word 0xA40 + OV18_DATA_OFFSET_2 - .byte 0x12, 0x00, 0x00, 0x00 - .word 0x3F0 + OV18_DATA_OFFSET - .byte 0x0A, 0x00, 0x00, 0x00 - .word 0x3EB + OV18_DATA_OFFSET - .byte 0x04, 0x00, 0x00, 0x00 - .word 0x3EC + OV18_DATA_OFFSET - .byte 0x05, 0x00, 0x00, 0x00 - .byte 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .global LINK_SHOP_SUBMENU_ITEMS_7 -LINK_SHOP_SUBMENU_ITEMS_7: - .word 0x3F2 + OV18_DATA_OFFSET - .byte 0x0C, 0x00, 0x00, 0x00 - .word 0x3EE + OV18_DATA_OFFSET - .byte 0x08, 0x00, 0x00, 0x00 - .word 0x3EF + OV18_DATA_OFFSET - .byte 0x09, 0x00, 0x00, 0x00 - .word 0xA3F + OV18_DATA_OFFSET_2 - .byte 0x11, 0x00, 0x00, 0x00 - .word 0xA40 + OV18_DATA_OFFSET_2 - .byte 0x12, 0x00, 0x00, 0x00 - .word 0x3F0 + OV18_DATA_OFFSET - .byte 0x0A, 0x00, 0x00, 0x00 - .word 0x3EB + OV18_DATA_OFFSET - .byte 0x04, 0x00, 0x00, 0x00 - .word 0x3EC + OV18_DATA_OFFSET - .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 - .global OVERLAY18_FUNCTION_POINTER_TABLE -OVERLAY18_FUNCTION_POINTER_TABLE: - .word ov18_0238BE48 - .word ov18_0238BE6C - .word ov18_0238BE90 - .word ov18_0238BF0C - .word ov18_0238BF30 - .word ov18_0238BF60 - .word ov18_0238BF84 - .word ov18_0238BFA8 - .word ov18_0238C03C - .word ov18_0238C060 - .word ov18_0238C078 - .word ov18_0238C060 - .word ov18_0238C09C - .word ov18_0238C0C0 - .word ov18_0238C0D8 - .word ov18_0238C0FC - .word ov18_0238C114 - .word ov18_0238C13C - .word ov18_0238C164 - .word ov18_0238C21C - .word ov18_0238C240 - .word ov18_0238C258 - .word ov18_0238C27C - .word ov18_0238C340 - .word ov18_0238C364 - .word ov18_0238C398 - .word ov18_0238C3C0 - .word ov18_0238C428 - .word ov18_0238C47C - .word ov18_0238C4A0 - .word ov18_0238C4E8 - .word ov18_0238C504 - .word ov18_0238C528 - .word ov18_0238C720 - .word ov18_0238C78C - .word ov18_0238C7B0 - .word ov18_0238C7C0 - .word ov18_0238C7E4 - .word ov18_0238C808 - .word ov18_0238C888 - .word ov18_0238C8AC - .word ov18_0238C8D0 - .word ov18_0238C950 - .word ov18_0238C974 - .word ov18_0238C984 - .word ov18_0238C9A8 - .word ov18_0238C9B8 - .word ov18_0238CA18 - .word ov18_0238CA3C - .word ov18_0238CA4C - .word ov18_0238CA70 - .word ov18_0238CA80 - .word ov18_0238CAB0 - .word ov18_0238CAD4 - .word ov18_0238CBDC - .word ov18_0238CC00 - .word ov18_0238CD88 - .word ov18_0238CDAC - .word ov18_0238CDC8 - .word ov18_0238CDEC - .word ov18_0238CDFC - .word ov18_0238CE20 - .word ov18_0238CE88 - .word ov18_0238CED8 - .word ov18_0238CF98 - .word ov18_0238D034 - .word ov18_0238D050 - .word ov18_0238D074 - .word ov18_0238D098 - .word ov18_0238D12C - .word ov18_0238D150 - .word ov18_0238D174 - .word ov18_0238D208 - .word ov18_0238D22C - .word ov18_0238D23C - .word ov18_0238D260 - .global ov18_0238D5F8 -ov18_0238D5F8: - .byte 0x5B, 0x43, 0x53, 0x3A, 0x25, 0x63, 0x5D, 0x25, 0x73, 0x5B, 0x43, 0x52, 0x5D, 0x00, 0x00, 0x00 - .global ov18_0238D608 -ov18_0238D608: - .byte 0x5B, 0x43, 0x53, 0x3A, 0x56, 0x5D, 0x5B, 0x67, 0x6F, 0x6C, 0x64, 0x3A, 0x30, 0x5D, 0x5B, 0x43 - .byte 0x52, 0x5D, 0x00, 0x00 - - .data - .global LINK_SHOP_PTR -LINK_SHOP_PTR: - .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/asm/overlay_18_0238C114.s b/asm/overlay_18_0238C114.s new file mode 100644 index 00000000..672e8f01 --- /dev/null +++ b/asm/overlay_18_0238C114.s @@ -0,0 +1,694 @@ + .include "asm/macros.inc" + .include "overlay_18_0238C114.inc" + + .text + + arm_func_start ov18_0238C114 +ov18_0238C114: ; 0x0238C114 + ldr r0, _0238C134 ; =LINK_SHOP_PTR + ldr r3, _0238C138 ; =0x00010002 + ldr r2, [r0] + mov r1, #0x11 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238C134: .word LINK_SHOP_PTR +_0238C138: .word 0x00010002 + arm_func_end ov18_0238C114 + + arm_func_start ov18_0238C13C +ov18_0238C13C: ; 0x0238C13C + ldr r0, _0238C15C ; =LINK_SHOP_PTR + ldr r3, _0238C160 ; =0x00010080 + ldr r2, [r0] + mov r1, #0x12 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238C15C: .word LINK_SHOP_PTR +_0238C160: .word 0x00010080 + arm_func_end ov18_0238C13C + + arm_func_start ov18_0238C164 +ov18_0238C164: ; 0x0238C164 + stmdb sp!, {r3, lr} + bl sub_0203A5A8 + cmp r0, #0 + beq _0238C1CC + bl sub_0203A9EC + cmp r0, #0 + ldmeqia sp!, {r3, pc} + add r1, sp, #0 + mov r0, #0 + bl GetPressedButtons + ldrh r0, [sp] + tst r0, #8 + ldmeqia sp!, {r3, pc} + mov r0, #0 + bl PlaySeVolumeWrapper + bl sub_0203AAB0 + ldr r1, _0238C218 ; =LINK_SHOP_PTR + ldr r1, [r1] + add r1, r1, #0x300 + strh r0, [r1, #0x8c] + bl sub_0203A5F0 + ldr r0, _0238C218 ; =LINK_SHOP_PTR + mov r1, #0x17 + ldr r0, [r0] + str r1, [r0, #0x80] + ldmia sp!, {r3, pc} +_0238C1CC: + bl sub_0203AA20 + mvn r1, #0 + cmp r0, r1 + bne _0238C1EC + bl sub_0203A51C + mov r0, #0 + bl ov18_0238BE28 + ldmia sp!, {r3, pc} +_0238C1EC: + ldr r2, _0238C218 ; =LINK_SHOP_PTR + ldr r1, [r2] + add r1, r1, #0x300 + strh r0, [r1, #0x8c] + ldr r0, [r2] + add r0, r0, #0x300 + ldrsh r0, [r0, #0x8c] + bl sub_0203FA64 + mov r0, #0x15 + bl ov18_0238BE28 + ldmia sp!, {r3, pc} + .align 2, 0 +_0238C218: .word LINK_SHOP_PTR + arm_func_end ov18_0238C164 + + arm_func_start ov18_0238C21C +ov18_0238C21C: ; 0x0238C21C + ldr r0, _0238C23C ; =LINK_SHOP_PTR + mov r3, #3 + ldr r2, [r0] + mov r1, #0x14 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238C23C: .word LINK_SHOP_PTR + arm_func_end ov18_0238C21C + + arm_func_start ov18_0238C240 +ov18_0238C240: ; 0x0238C240 + ldr r0, _0238C254 ; =LINK_SHOP_PTR + mov r1, #0x11 + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238C254: .word LINK_SHOP_PTR + arm_func_end ov18_0238C240 + + arm_func_start ov18_0238C258 +ov18_0238C258: ; 0x0238C258 + ldr r0, _0238C278 ; =LINK_SHOP_PTR + mov r3, #0x90 + ldr r2, [r0] + mov r1, #0x16 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238C278: .word LINK_SHOP_PTR + arm_func_end ov18_0238C258 + + arm_func_start ov18_0238C27C +ov18_0238C27C: ; 0x0238C27C + stmdb sp!, {r3, lr} + ldr r0, _0238C33C ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #5] + bl IsSimpleMenuActive + cmp r0, #0 + ldmneia sp!, {r3, pc} + ldr r0, _0238C33C ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #5] + bl GetSimpleMenuResult__0202B870 + sub r0, r0, #5 + cmp r0, #0xb + addls pc, pc, r0, lsl #2 + b _0238C2F4 +_0238C2B8: ; jump table + b _0238C32C ; case 0 + b _0238C32C ; case 1 + b _0238C2F4 ; case 2 + b _0238C2F4 ; case 3 + b _0238C2F4 ; case 4 + b _0238C2F4 ; case 5 + b _0238C2F4 ; case 6 + b _0238C2F4 ; case 7 + b _0238C320 ; case 8 + b _0238C2F4 ; case 9 + b _0238C2E8 ; case 10 + b _0238C300 ; case 11 +_0238C2E8: + mov r0, #0x17 + bl ov18_0238BE28 + ldmia sp!, {r3, pc} +_0238C2F4: + mov r0, #0x19 + bl ov18_0238BE28 + ldmia sp!, {r3, pc} +_0238C300: + ldr r0, _0238C33C ; =LINK_SHOP_PTR + mov r3, #0 + ldr r2, [r0] + mov r1, #0x1b + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + ldmia sp!, {r3, pc} +_0238C320: + mov r0, #0x2e + bl ov18_0238BE28 + ldmia sp!, {r3, pc} +_0238C32C: + bl sub_0203A638 + mov r0, #0x11 + bl ov18_0238BE28 + ldmia sp!, {r3, pc} + .align 2, 0 +_0238C33C: .word LINK_SHOP_PTR + arm_func_end ov18_0238C27C + + arm_func_start ov18_0238C340 +ov18_0238C340: ; 0x0238C340 + ldr r0, _0238C360 ; =LINK_SHOP_PTR + mov r3, #0x100 + ldr r2, [r0] + mov r1, #0x18 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238C360: .word LINK_SHOP_PTR + arm_func_end ov18_0238C340 + + arm_func_start ov18_0238C364 +ov18_0238C364: ; 0x0238C364 + stmdb sp!, {r3, lr} + bl sub_0203F398 + cmp r0, #1 + ldmneia sp!, {r3, pc} + bl sub_0203F990 + ldr r0, _0238C394 ; =LINK_SHOP_PTR + mvn r2, #1 + ldr r1, [r0] + mov r0, #0x11 + strb r2, [r1, #7] + bl ov18_0238BE28 + ldmia sp!, {r3, pc} + .align 2, 0 +_0238C394: .word LINK_SHOP_PTR + arm_func_end ov18_0238C364 + + arm_func_start ov18_0238C398 +ov18_0238C398: ; 0x0238C398 + ldr r0, _0238C3B8 ; =LINK_SHOP_PTR + ldr r3, _0238C3BC ; =0x00000201 + ldr r2, [r0] + mov r1, #0x1a + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238C3B8: .word LINK_SHOP_PTR +_0238C3BC: .word 0x00000201 + arm_func_end ov18_0238C398 + + arm_func_start ov18_0238C3C0 +ov18_0238C3C0: ; 0x0238C3C0 + stmdb sp!, {r4, lr} + bl sub_020407EC + movs r4, r0 + beq _0238C3E4 + ldr r0, _0238C424 ; =LINK_SHOP_PTR + ldr r0, [r0] + add r0, r0, #0x300 + ldrsh r0, [r0, #0x8c] + bl sub_0203FD80 +_0238C3E4: + cmp r4, #1 + beq _0238C40C + cmp r4, #2 + beq _0238C400 + cmp r4, #7 + beq _0238C418 + ldmia sp!, {r4, pc} +_0238C400: + mov r0, #0x1f + bl ov18_0238BE28 + ldmia sp!, {r4, pc} +_0238C40C: + mov r0, #0x11 + bl ov18_0238BE28 + ldmia sp!, {r4, pc} +_0238C418: + mov r0, #0x1d + bl ov18_0238BE28 + ldmia sp!, {r4, pc} + .align 2, 0 +_0238C424: .word LINK_SHOP_PTR + arm_func_end ov18_0238C3C0 + + arm_func_start ov18_0238C428 +ov18_0238C428: ; 0x0238C428 + stmdb sp!, {r3, lr} + ldr r1, _0238C474 ; =LINK_SHOP_PTR + ldr r0, _0238C478 ; =TEAM_MEMBER_TABLE_PTR + ldr r2, [r1] + ldr r1, [r0] + add r0, r2, #0x300 + ldrsh r2, [r0, #0x8c] + mov r0, #0x44 + mov r3, #0 + smlabb r1, r2, r0, r1 + ldrsh r0, [r1, #4] + ldrsh r2, [r1, #8] + add r1, r1, #0x14 + bl PrintIqSkillsMenu + ldr r0, _0238C474 ; =LINK_SHOP_PTR + mov r1, #0x1c + ldr r0, [r0] + str r1, [r0, #0x80] + ldmia sp!, {r3, pc} + .align 2, 0 +_0238C474: .word LINK_SHOP_PTR +_0238C478: .word TEAM_MEMBER_TABLE_PTR + arm_func_end ov18_0238C428 + + arm_func_start ov18_0238C47C +ov18_0238C47C: ; 0x0238C47C + stmdb sp!, {r3, lr} + bl sub_02041B7C + cmp r0, #1 + ldmneia sp!, {r3, pc} + bl sub_020420F4 + bl sub_020572EC + mov r0, #0x11 + bl ov18_0238BE28 + ldmia sp!, {r3, pc} + arm_func_end ov18_0238C47C + + arm_func_start ov18_0238C4A0 +ov18_0238C4A0: ; 0x0238C4A0 + stmdb sp!, {r3, lr} + bl sub_0203FD38 + ldr r1, _0238C4E4 ; =LINK_SHOP_PTR + ldr r1, [r1] + str r0, [r1, #0x3a0] + bl sub_02041094 + ldr r2, _0238C4E4 ; =LINK_SHOP_PTR + mov ip, #0x400 + ldr r1, [r2] + mov r3, #0x1e + add r1, r1, #0x300 + strh r0, [r1, #0xa4] + ldr r0, [r2] + str ip, [r0, #0x88] + ldr r0, [r2] + str r3, [r0, #0x80] + ldmia sp!, {r3, pc} + .align 2, 0 +_0238C4E4: .word LINK_SHOP_PTR + arm_func_end ov18_0238C4A0 + + arm_func_start ov18_0238C4E8 +ov18_0238C4E8: ; 0x0238C4E8 + stmdb sp!, {r3, lr} + bl sub_02041A18 + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r0, #0x19 + bl ov18_0238BE28 + ldmia sp!, {r3, pc} + arm_func_end ov18_0238C4E8 + + arm_func_start ov18_0238C504 +ov18_0238C504: ; 0x0238C504 + ldr r0, _0238C524 ; =LINK_SHOP_PTR + mov r3, #0xa00 + ldr r2, [r0] + mov r1, #0x20 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238C524: .word LINK_SHOP_PTR + arm_func_end ov18_0238C504 + + arm_func_start ov18_0238C528 +ov18_0238C528: ; 0x0238C528 + stmdb sp!, {r3, r4, r5, lr} + ldr r0, _0238C714 ; =LINK_SHOP_PTR + mov r4, #0 + ldr r0, [r0] + ldrsb r0, [r0, #0xa] + bl IsSimpleMenuActive + cmp r0, #0 + ldmneia sp!, {r3, r4, r5, pc} + bl sub_02041094 + ldr r1, _0238C714 ; =LINK_SHOP_PTR + mov r5, r0 + ldr r0, [r1] + ldrsb r0, [r0, #0xa] + bl GetSimpleMenuResult__0202B870 + sub r1, r0, #4 + cmp r1, #0xe + addls pc, pc, r1, lsl #2 + b _0238C6D0 +_0238C570: ; jump table + b _0238C6BC ; case 0 + b _0238C6D0 ; case 1 + b _0238C6D0 ; case 2 + b _0238C5AC ; case 3 + b _0238C5C8 ; case 4 + b _0238C638 ; case 5 + b _0238C6A8 ; case 6 + b _0238C5AC ; case 7 + b _0238C5AC ; case 8 + b _0238C6D0 ; case 9 + b _0238C6D0 ; case 10 + b _0238C6D0 ; case 11 + b _0238C6D0 ; case 12 + b _0238C670 ; case 13 + b _0238C68C ; case 14 +_0238C5AC: + ldr r0, _0238C718 ; =0x00003F07 + mov r1, #0x100 + bl sub_02017C74 + mov r0, r5 + mov r4, #1 + bl sub_02041000 + b _0238C6E4 +_0238C5C8: + mov r4, #1 + bl GetMoneyCarried + cmp r0, #0x1f4 + bge _0238C5EC + mov r0, #0 + bl PlaySeVolumeWrapper + mov r0, #0x13 + bl ov18_0238BE28 + ldmia sp!, {r3, r4, r5, pc} +_0238C5EC: + mov r0, r5 + bl sub_02041194 + cmp r0, #0 + beq _0238C62C + bl sub_02041414 + cmp r0, #0 + bne _0238C614 + ldr r0, _0238C71C ; =0x00001308 + bl PlaySeByIdVolumeWrapper + b _0238C620 +_0238C614: + ldr r0, _0238C718 ; =0x00003F07 + mov r1, #0x100 + bl sub_02017C74 +_0238C620: + mov r0, r5 + bl sub_020412B0 + b _0238C6E4 +_0238C62C: + mov r0, #2 + bl PlaySeVolumeWrapper + b _0238C6E4 +_0238C638: + mov r0, r5 + mov r4, #1 + bl sub_02041364 + cmp r0, #0 + beq _0238C664 + ldr r0, _0238C718 ; =0x00003F07 + mov r1, #0x100 + bl sub_02017C74 + mov r0, r5 + bl sub_02041394 + b _0238C6E4 +_0238C664: + mov r0, #2 + bl PlaySeVolumeWrapper + b _0238C6E4 +_0238C670: + mov r0, r4 + bl PlaySeVolumeWrapper + mov r0, r5 + bl sub_020416BC + bl sub_020410A4 + mov r4, #1 + b _0238C6E4 +_0238C68C: + mov r0, r4 + bl PlaySeVolumeWrapper + mov r0, r5 + bl sub_020416DC + bl sub_020410A4 + mov r4, #1 + b _0238C6E4 +_0238C6A8: + ldr r0, _0238C718 ; =0x00003F07 + bl PlaySeByIdVolumeWrapper + mov r0, #0x21 + bl ov18_0238BE28 + b _0238C6E4 +_0238C6BC: + mov r0, r4 + bl PlaySeVolumeWrapper + mov r0, #0x1d + bl ov18_0238BE28 + b _0238C6E4 +_0238C6D0: + cmp r0, #6 + beq _0238C6E0 + mov r0, #1 + bl PlaySeVolumeWrapper +_0238C6E0: + mov r4, #1 +_0238C6E4: + cmp r4, #0 + ldmeqia sp!, {r3, r4, r5, pc} + ldr r0, _0238C714 ; =LINK_SHOP_PTR + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #8] + cmp r0, r1 + beq _0238C708 + bl sub_020307EC +_0238C708: + mov r0, #0x19 + bl ov18_0238BE28 + ldmia sp!, {r3, r4, r5, pc} + .align 2, 0 +_0238C714: .word LINK_SHOP_PTR +_0238C718: .word 0x00003F07 +_0238C71C: .word 0x00001308 + arm_func_end ov18_0238C528 + + arm_func_start ov18_0238C720 +ov18_0238C720: ; 0x0238C720 + stmdb sp!, {r4, lr} + bl sub_02041094 + mov r4, r0 + bl sub_02041154 + ldr r1, _0238C788 ; =LINK_SHOP_PTR + cmp r4, #0 + ldr r1, [r1] + str r0, [r1, #0x24] + bne _0238C760 + mov r0, r4 + bl sub_02041424 + cmp r0, #0 + bne _0238C760 + mov r0, #0x22 + bl ov18_0238BE28 + ldmia sp!, {r4, pc} +_0238C760: + mov r0, r4 + bl sub_02041364 + cmp r0, #0 + beq _0238C77C + mov r0, #0x24 + bl ov18_0238BE28 + ldmia sp!, {r4, pc} +_0238C77C: + mov r0, #0x27 + bl ov18_0238BE28 + ldmia sp!, {r4, pc} + .align 2, 0 +_0238C788: .word LINK_SHOP_PTR + arm_func_end ov18_0238C720 + + arm_func_start ov18_0238C78C +ov18_0238C78C: ; 0x0238C78C + ldr r0, _0238C7AC ; =LINK_SHOP_PTR + mov r3, #3 + ldr r2, [r0] + mov r1, #0x23 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238C7AC: .word LINK_SHOP_PTR + arm_func_end ov18_0238C78C + + arm_func_start ov18_0238C7B0 +ov18_0238C7B0: ; 0x0238C7B0 + ldr ip, _0238C7BC ; =ov18_0238BE28 + mov r0, #0x19 + bx ip + .align 2, 0 +_0238C7BC: .word ov18_0238BE28 + arm_func_end ov18_0238C7B0 + + arm_func_start ov18_0238C7C0 +ov18_0238C7C0: ; 0x0238C7C0 + ldr r0, _0238C7E0 ; =LINK_SHOP_PTR + mov r3, #3 + ldr r2, [r0] + mov r1, #0x25 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238C7E0: .word LINK_SHOP_PTR + arm_func_end ov18_0238C7C0 + + arm_func_start ov18_0238C7E4 +ov18_0238C7E4: ; 0x0238C7E4 + ldr r0, _0238C804 ; =LINK_SHOP_PTR + mov r3, #0x43 + ldr r2, [r0] + mov r1, #0x26 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238C804: .word LINK_SHOP_PTR + arm_func_end ov18_0238C7E4 + + arm_func_start ov18_0238C808 +ov18_0238C808: ; 0x0238C808 + stmdb sp!, {r4, lr} + ldr r0, _0238C884 ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #6] + bl IsSimpleMenuActive + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl sub_02041094 + ldr r1, _0238C884 ; =LINK_SHOP_PTR + mov r4, r0 + ldr r0, [r1] + ldrsb r0, [r0, #6] + bl GetSimpleMenuResult__0202B870 + cmp r0, #0 + beq _0238C850 + cmp r0, #1 + beq _0238C878 + ldmia sp!, {r4, pc} +_0238C850: + mov r0, r4 + bl sub_02041484 + ldr r0, _0238C884 ; =LINK_SHOP_PTR + ldr r0, [r0] + add r0, r0, #0x300 + ldrsh r0, [r0, #0x8c] + bl sub_0203FD80 + mov r0, #0x2a + bl ov18_0238BE28 + ldmia sp!, {r4, pc} +_0238C878: + mov r0, #0x19 + bl ov18_0238BE28 + ldmia sp!, {r4, pc} + .align 2, 0 +_0238C884: .word LINK_SHOP_PTR + arm_func_end ov18_0238C808 + + arm_func_start ov18_0238C888 +ov18_0238C888: ; 0x0238C888 + ldr r0, _0238C8A8 ; =LINK_SHOP_PTR + mov r3, #3 + ldr r2, [r0] + mov r1, #0x28 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238C8A8: .word LINK_SHOP_PTR + arm_func_end ov18_0238C888 + + arm_func_start ov18_0238C8AC +ov18_0238C8AC: ; 0x0238C8AC + ldr r0, _0238C8CC ; =LINK_SHOP_PTR + mov r3, #0x43 + ldr r2, [r0] + mov r1, #0x29 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238C8CC: .word LINK_SHOP_PTR + arm_func_end ov18_0238C8AC + + arm_func_start ov18_0238C8D0 +ov18_0238C8D0: ; 0x0238C8D0 + stmdb sp!, {r4, lr} + ldr r0, _0238C94C ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #6] + bl IsSimpleMenuActive + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl sub_02041094 + ldr r1, _0238C94C ; =LINK_SHOP_PTR + mov r4, r0 + ldr r0, [r1] + ldrsb r0, [r0, #6] + bl GetSimpleMenuResult__0202B870 + cmp r0, #0 + beq _0238C918 + cmp r0, #1 + beq _0238C940 + ldmia sp!, {r4, pc} +_0238C918: + mov r0, r4 + bl sub_02041484 + ldr r0, _0238C94C ; =LINK_SHOP_PTR + ldr r0, [r0] + add r0, r0, #0x300 + ldrsh r0, [r0, #0x8c] + bl sub_0203FD80 + mov r0, #0x2c + bl ov18_0238BE28 + ldmia sp!, {r4, pc} +_0238C940: + mov r0, #0x19 + bl ov18_0238BE28 + ldmia sp!, {r4, pc} + .align 2, 0 +_0238C94C: .word LINK_SHOP_PTR + arm_func_end ov18_0238C8D0 diff --git a/asm/overlay_18_0238CAB0.s b/asm/overlay_18_0238CAB0.s new file mode 100644 index 00000000..4ea6b700 --- /dev/null +++ b/asm/overlay_18_0238CAB0.s @@ -0,0 +1,871 @@ + .include "asm/macros.inc" + .include "overlay_18_0238CAB0.inc" + + .text + + arm_func_start ov18_0238CAB0 +ov18_0238CAB0: ; 0x0238CAB0 + ldr r0, _0238CAD0 ; =LINK_SHOP_PTR + mov r3, #0x1000 + ldr r2, [r0] + mov r1, #0x35 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238CAD0: .word LINK_SHOP_PTR + arm_func_end ov18_0238CAB0 + + arm_func_start ov18_0238CAD4 +ov18_0238CAD4: ; 0x0238CAD4 + stmdb sp!, {r3, r4, lr} + sub sp, sp, #4 + add r1, sp, #0 + mov r0, #0 + bl GetPressedButtons + ldr r0, _0238CBD8 ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #0xb] + bl GetAdvancedMenuCurrentOption + ldr r1, _0238CBD8 ; =LINK_SHOP_PTR + ldr r2, [r1] + strh r0, [r2, #0x8c] + ldrh r0, [sp] + tst r0, #8 + beq _0238CB8C + ldr r1, [r1] + ldrsb r0, [r1, #0xb] + ldrsh r4, [r1, #0x8c] + bl sub_0202C1E4 + ldr r0, _0238CBD8 ; =LINK_SHOP_PTR + mov r1, r4 + ldr r0, [r0] + add r0, r0, #0x300 + ldrsh r0, [r0, #0x8c] + bl ov18_0238ADA8 + ldr r2, _0238CBD8 ; =LINK_SHOP_PTR + mov lr, #0 + ldr r1, [r2] + mov ip, #1 + str lr, [r1, #0x3a0] + ldr r1, [r2] + mov r3, #0x38 + add r1, r1, #0x300 + strh r0, [r1, #0xaa] + ldr r0, [r2] + strb ip, [r0, #0x3a6] + ldr r0, [r2] + add r0, r0, #0x300 + strh lr, [r0, #0xa8] + ldr r0, [r2] + strb ip, [r0, #0x3ac] + ldr r0, [r2] + strb lr, [r0, #0x3ad] + ldr r0, [r2] + str r3, [r0, #0x80] + b _0238CBD0 +_0238CB8C: + ldr r0, [r1] + ldrsb r0, [r0, #0xb] + bl IsAdvancedMenuActive2 + cmp r0, #0 + bne _0238CBD0 + ldr r0, _0238CBD8 ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #0xb] + bl GetAdvancedMenuResult + mvn r1, #0 + cmp r0, r1 + bne _0238CBC8 + mov r0, #0x11 + bl ov18_0238BE28 + b _0238CBD0 +_0238CBC8: + mov r0, #0x36 + bl ov18_0238BE28 +_0238CBD0: + add sp, sp, #4 + ldmia sp!, {r3, r4, pc} + .align 2, 0 +_0238CBD8: .word LINK_SHOP_PTR + arm_func_end ov18_0238CAD4 + + arm_func_start ov18_0238CBDC +ov18_0238CBDC: ; 0x0238CBDC + ldr r0, _0238CBFC ; =LINK_SHOP_PTR + mov r3, #0x3000 + ldr r2, [r0] + mov r1, #0x37 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238CBFC: .word LINK_SHOP_PTR + arm_func_end ov18_0238CBDC + + arm_func_start ov18_0238CC00 +ov18_0238CC00: ; 0x0238CC00 + stmdb sp!, {r4, lr} + ldr r0, _0238CD84 ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #0xb] + bl GetAdvancedMenuResult + ldr r1, _0238CD84 ; =LINK_SHOP_PTR + mov r4, r0 + ldr r0, [r1] + ldrsb r0, [r0, #0xc] + bl IsSimpleMenuActive + cmp r0, #0 + ldmneia sp!, {r4, pc} + ldr r0, _0238CD84 ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #0xc] + bl GetSimpleMenuResult__0202B870 + sub r0, r0, #4 + cmp r0, #9 + addls pc, pc, r0, lsl #2 + b _0238CD5C +_0238CC50: ; jump table + b _0238CCF0 ; case 0 + b _0238CD5C ; case 1 + b _0238CD5C ; case 2 + b _0238CD5C ; case 3 + b _0238CD5C ; case 4 + b _0238CD5C ; case 5 + b _0238CD5C ; case 6 + b _0238CD5C ; case 7 + b _0238CD5C ; case 8 + b _0238CC78 ; case 9 +_0238CC78: + ldr r1, _0238CD84 ; =LINK_SHOP_PTR + mov r0, r4, lsl #0x10 + ldr r2, [r1] + mov r1, r0, asr #0x10 + add r0, r2, #0x300 + ldrsh r0, [r0, #0x8c] + bl ov18_0238ADA8 + ldr r1, _0238CD84 ; =LINK_SHOP_PTR + mov r4, r0 + ldr r0, [r1] + str r4, [r0, #0x24] + bl sub_020415BC + cmp r0, #0 + mov r0, r4 + beq _0238CCCC + bl sub_0203FD14 + ldr r0, _0238CD84 ; =LINK_SHOP_PTR + mov r1, #0x3c + ldr r0, [r0] + str r1, [r0, #0x80] + ldmia sp!, {r4, pc} +_0238CCCC: + bl sub_02041614 + ldr r0, _0238CD84 ; =LINK_SHOP_PTR + ldr r0, [r0] + add r0, r0, #0x300 + ldrsh r0, [r0, #0x8c] + bl sub_0203FD80 + mov r0, #0x3a + bl ov18_0238BE28 + ldmia sp!, {r4, pc} +_0238CCF0: + ldr r1, _0238CD84 ; =LINK_SHOP_PTR + mov r0, r4, lsl #0x10 + ldr r2, [r1] + mov r1, r0, asr #0x10 + add r0, r2, #0x300 + ldrsh r0, [r0, #0x8c] + bl ov18_0238ADA8 + ldr r2, _0238CD84 ; =LINK_SHOP_PTR + mov r4, #0 + ldr r1, [r2] + mov r3, #1 + str r4, [r1, #0x3a0] + ldr r1, [r2] + add r1, r1, #0x300 + strh r0, [r1, #0xaa] + ldr r1, [r2] + mov r0, #0x38 + strb r3, [r1, #0x3a6] + ldr r1, [r2] + add r1, r1, #0x300 + strh r4, [r1, #0xa8] + ldr r1, [r2] + strb r3, [r1, #0x3ac] + ldr r1, [r2] + strb r4, [r1, #0x3ad] + bl ov18_0238BE28 + ldmia sp!, {r4, pc} +_0238CD5C: + ldr r0, _0238CD84 ; =LINK_SHOP_PTR + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #0xb] + cmp r0, r1 + beq _0238CD78 + bl ResumeAdvancedMenu +_0238CD78: + mov r0, #0x34 + bl ov18_0238BE28 + ldmia sp!, {r4, pc} + .align 2, 0 +_0238CD84: .word LINK_SHOP_PTR + arm_func_end ov18_0238CC00 + + arm_func_start ov18_0238CD88 +ov18_0238CD88: ; 0x0238CD88 + ldr r0, _0238CDA8 ; =LINK_SHOP_PTR + mov r3, #0x400 + ldr r2, [r0] + mov r1, #0x39 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238CDA8: .word LINK_SHOP_PTR + arm_func_end ov18_0238CD88 + + arm_func_start ov18_0238CDAC +ov18_0238CDAC: ; 0x0238CDAC + stmdb sp!, {r3, lr} + bl sub_02041A18 + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r0, #0x34 + bl ov18_0238BE28 + ldmia sp!, {r3, pc} + arm_func_end ov18_0238CDAC + + arm_func_start ov18_0238CDC8 +ov18_0238CDC8: ; 0x0238CDC8 + ldr r0, _0238CDE8 ; =LINK_SHOP_PTR + mov r3, #3 + ldr r2, [r0] + mov r1, #0x3b + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238CDE8: .word LINK_SHOP_PTR + arm_func_end ov18_0238CDC8 + + arm_func_start ov18_0238CDEC +ov18_0238CDEC: ; 0x0238CDEC + ldr ip, _0238CDF8 ; =ov18_0238BE28 + mov r0, #0x11 + bx ip + .align 2, 0 +_0238CDF8: .word ov18_0238BE28 + arm_func_end ov18_0238CDEC + + arm_func_start ov18_0238CDFC +ov18_0238CDFC: ; 0x0238CDFC + ldr r0, _0238CE1C ; =LINK_SHOP_PTR + mov r3, #0x14000 + ldr r2, [r0] + mov r1, #0x3d + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238CE1C: .word LINK_SHOP_PTR + arm_func_end ov18_0238CDFC + + arm_func_start ov18_0238CE20 +ov18_0238CE20: ; 0x0238CE20 + stmdb sp!, {r4, lr} + bl sub_020407EC + movs r4, r0 + beq _0238CE44 + ldr r0, _0238CE84 ; =LINK_SHOP_PTR + ldr r0, [r0] + add r0, r0, #0x300 + ldrsh r0, [r0, #0x8c] + bl sub_0203FD80 +_0238CE44: + cmp r4, #1 + beq _0238CE6C + cmp r4, #2 + beq _0238CE60 + cmp r4, #7 + beq _0238CE78 + ldmia sp!, {r4, pc} +_0238CE60: + mov r0, #0x3e + bl ov18_0238BE28 + ldmia sp!, {r4, pc} +_0238CE6C: + mov r0, #0x11 + bl ov18_0238BE28 + ldmia sp!, {r4, pc} +_0238CE78: + mov r0, #0x40 + bl ov18_0238BE28 + ldmia sp!, {r4, pc} + .align 2, 0 +_0238CE84: .word LINK_SHOP_PTR + arm_func_end ov18_0238CE20 + + arm_func_start ov18_0238CE88 +ov18_0238CE88: ; 0x0238CE88 + stmdb sp!, {r3, lr} + ldr r0, _0238CED4 ; =LINK_SHOP_PTR + mov r1, #0xc000 + ldr r0, [r0] + str r1, [r0, #0x88] + bl sub_02041094 + bl sub_02041154 + ldr r1, _0238CED4 ; =LINK_SHOP_PTR + ldr r1, [r1] + str r0, [r1, #0x24] + mov r0, #4 + bl sub_02041154 + ldr r1, _0238CED4 ; =LINK_SHOP_PTR + mov r2, #0x3f + ldr r3, [r1] + str r0, [r3, #0x28] + ldr r0, [r1] + str r2, [r0, #0x80] + ldmia sp!, {r3, pc} + .align 2, 0 +_0238CED4: .word LINK_SHOP_PTR + arm_func_end ov18_0238CE88 + + arm_func_start ov18_0238CED8 +ov18_0238CED8: ; 0x0238CED8 + stmdb sp!, {r3, lr} + bl sub_02041094 + ldr r0, _0238CF94 ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #0xe] + bl IsSimpleMenuActive + cmp r0, #0 + ldmneia sp!, {r3, pc} + bl sub_0203FD38 + ldr r0, _0238CF94 ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #0xe] + bl GetSimpleMenuResult__0202B870 + sub r0, r0, #4 + cmp r0, #6 + addls pc, pc, r0, lsl #2 + b _0238CF6C +_0238CF1C: ; jump table + b _0238CF60 ; case 0 + b _0238CF6C ; case 1 + b _0238CF6C ; case 2 + b _0238CF6C ; case 3 + b _0238CF6C ; case 4 + b _0238CF6C ; case 5 + b _0238CF38 ; case 6 +_0238CF38: + bl sub_02041094 + bl sub_02041364 + cmp r0, #0 + beq _0238CF54 + mov r0, #0x42 + bl ov18_0238BE28 + ldmia sp!, {r3, pc} +_0238CF54: + mov r0, #0x45 + bl ov18_0238BE28 + ldmia sp!, {r3, pc} +_0238CF60: + mov r0, #0x40 + bl ov18_0238BE28 + ldmia sp!, {r3, pc} +_0238CF6C: + ldr r0, _0238CF94 ; =LINK_SHOP_PTR + mvn r1, #1 + ldr r0, [r0] + ldrsb r0, [r0, #0xb] + cmp r0, r1 + beq _0238CF88 + bl ResumeAdvancedMenu +_0238CF88: + mov r0, #0x3c + bl ov18_0238BE28 + ldmia sp!, {r3, pc} + .align 2, 0 +_0238CF94: .word LINK_SHOP_PTR + arm_func_end ov18_0238CED8 + + arm_func_start ov18_0238CF98 +ov18_0238CF98: ; 0x0238CF98 + stmdb sp!, {r4, lr} + bl sub_0203FD38 + mov r4, r0 + bl sub_02041094 + cmp r0, #4 + blt _0238CFF0 + bl sub_0203FD2C + ldr r2, _0238D030 ; =LINK_SHOP_PTR + mov r1, r0 + ldr r0, [r2] + mov r2, #8 + add r0, r0, #0xa6 + add r0, r0, #0x300 + bl memcpy + ldr r0, _0238D030 ; =LINK_SHOP_PTR + mov r2, #0 + ldr r1, [r0] + str r2, [r1, #0x3a0] + ldr r0, [r0] + add r0, r0, #0x300 + strh r2, [r0, #0xa4] + b _0238D010 +_0238CFF0: + ldr r0, _0238D030 ; =LINK_SHOP_PTR + ldr r0, [r0] + str r4, [r0, #0x3a0] + bl sub_02041094 + ldr r1, _0238D030 ; =LINK_SHOP_PTR + ldr r1, [r1] + add r1, r1, #0x300 + strh r0, [r1, #0xa4] +_0238D010: + ldr r0, _0238D030 ; =LINK_SHOP_PTR + mov r3, #0x400 + ldr r2, [r0] + mov r1, #0x41 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + ldmia sp!, {r4, pc} + .align 2, 0 +_0238D030: .word LINK_SHOP_PTR + arm_func_end ov18_0238CF98 + + arm_func_start ov18_0238D034 +ov18_0238D034: ; 0x0238D034 + stmdb sp!, {r3, lr} + bl sub_02041A18 + cmp r0, #0 + ldmeqia sp!, {r3, pc} + mov r0, #0x3c + bl ov18_0238BE28 + ldmia sp!, {r3, pc} + arm_func_end ov18_0238D034 + + arm_func_start ov18_0238D050 +ov18_0238D050: ; 0x0238D050 + ldr r0, _0238D070 ; =LINK_SHOP_PTR + mov r3, #3 + ldr r2, [r0] + mov r1, #0x43 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238D070: .word LINK_SHOP_PTR + arm_func_end ov18_0238D050 + + arm_func_start ov18_0238D074 +ov18_0238D074: ; 0x0238D074 + ldr r0, _0238D094 ; =LINK_SHOP_PTR + mov r3, #0x43 + ldr r2, [r0] + mov r1, #0x44 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238D094: .word LINK_SHOP_PTR + arm_func_end ov18_0238D074 + + arm_func_start ov18_0238D098 +ov18_0238D098: ; 0x0238D098 + stmdb sp!, {r4, lr} + ldr r0, _0238D128 ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #6] + bl IsSimpleMenuActive + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl sub_02041094 + ldr r1, _0238D128 ; =LINK_SHOP_PTR + mov r4, r0 + ldr r0, [r1] + ldrsb r0, [r0, #6] + bl GetSimpleMenuResult__0202B870 + cmp r0, #0 + beq _0238D0E0 + cmp r0, #1 + beq _0238D11C + ldmia sp!, {r4, pc} +_0238D0E0: + mov r0, r4 + bl sub_02041484 + bl sub_0203FD2C + ldrh r0, [r0, #4] + bl sub_02041614 + ldr r0, _0238D128 ; =LINK_SHOP_PTR + ldr r0, [r0] + add r0, r0, #0x300 + ldrsh r0, [r0, #0x8c] + bl sub_0203FD80 + ldr r0, _0238D128 ; =LINK_SHOP_PTR + mov r1, #0x48 + ldr r0, [r0] + str r1, [r0, #0x80] + ldmia sp!, {r4, pc} +_0238D11C: + mov r0, #0x3c + bl ov18_0238BE28 + ldmia sp!, {r4, pc} + .align 2, 0 +_0238D128: .word LINK_SHOP_PTR + arm_func_end ov18_0238D098 + + arm_func_start ov18_0238D12C +ov18_0238D12C: ; 0x0238D12C + ldr r0, _0238D14C ; =LINK_SHOP_PTR + mov r3, #3 + ldr r2, [r0] + mov r1, #0x46 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238D14C: .word LINK_SHOP_PTR + arm_func_end ov18_0238D12C + + arm_func_start ov18_0238D150 +ov18_0238D150: ; 0x0238D150 + ldr r0, _0238D170 ; =LINK_SHOP_PTR + mov r3, #0x43 + ldr r2, [r0] + mov r1, #0x47 + str r3, [r2, #0x88] + ldr r0, [r0] + str r1, [r0, #0x80] + bx lr + .align 2, 0 +_0238D170: .word LINK_SHOP_PTR + arm_func_end ov18_0238D150 + + arm_func_start ov18_0238D174 +ov18_0238D174: ; 0x0238D174 + stmdb sp!, {r4, lr} + ldr r0, _0238D204 ; =LINK_SHOP_PTR + ldr r0, [r0] + ldrsb r0, [r0, #6] + bl IsSimpleMenuActive + cmp r0, #0 + ldmneia sp!, {r4, pc} + bl sub_02041094 + ldr r1, _0238D204 ; =LINK_SHOP_PTR + mov r4, r0 + ldr r0, [r1] + ldrsb r0, [r0, #6] + bl GetSimpleMenuResult__0202B870 + cmp r0, #0 + beq _0238D1BC + cmp r0, #1 + beq _0238D1F8 + ldmia sp!, {r4, pc} +_0238D1BC: + mov r0, r4 + bl sub_02041484 + bl sub_0203FD2C + ldrh r0, [r0, #4] + bl sub_02041614 + ldr r0, _0238D204 ; =LINK_SHOP_PTR + ldr r0, [r0] + add r0, r0, #0x300 + ldrsh r0, [r0, #0x8c] + bl sub_0203FD80 + ldr r0, _0238D204 ; =LINK_SHOP_PTR + mov r1, #0x4a + ldr r0, [r0] + str r1, [r0, #0x80] + ldmia sp!, {r4, pc} +_0238D1F8: + mov r0, #0x3c + bl ov18_0238BE28 + ldmia sp!, {r4, pc} + .align 2, 0 +_0238D204: .word LINK_SHOP_PTR + arm_func_end ov18_0238D174 + ; 0x0238D208 + + .rodata + .global ov18_0238D208 +ov18_0238D208: + .byte 0x18, 0x00, 0x9F, 0xE5, 0x03, 0x30, 0xA0, 0xE3, 0x00, 0x20, 0x90, 0xE5, 0x49, 0x10, 0xA0, 0xE3 + .byte 0x88, 0x30, 0x82, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x80, 0x10, 0x80, 0xE5, 0x1E, 0xFF, 0x2F, 0xE1 + .word LINK_SHOP_PTR + .global ov18_0238D22C +ov18_0238D22C: + .byte 0x04, 0xC0, 0x9F, 0xE5, 0x11, 0x00, 0xA0, 0xE3, 0x1C, 0xFF, 0x2F, 0xE1 + .word ov18_0238BE28 + .global ov18_0238D23C +ov18_0238D23C: + .byte 0x18, 0x00, 0x9F, 0xE5, 0x03, 0x30, 0xA0, 0xE3, 0x00, 0x20, 0x90, 0xE5 + .byte 0x4B, 0x10, 0xA0, 0xE3, 0x88, 0x30, 0x82, 0xE5, 0x00, 0x00, 0x90, 0xE5, 0x80, 0x10, 0x80, 0xE5 + .byte 0x1E, 0xFF, 0x2F, 0xE1 + .word LINK_SHOP_PTR + .global ov18_0238D260 +ov18_0238D260: + .byte 0x04, 0xC0, 0x9F, 0xE5, 0x11, 0x00, 0xA0, 0xE3 + .byte 0x1C, 0xFF, 0x2F, 0xE1 + .word ov18_0238BE28 + .global LINK_SHOP_WINDOW_PARAMS_1 +LINK_SHOP_WINDOW_PARAMS_1: + .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x04 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_2 +LINK_SHOP_WINDOW_PARAMS_2: + .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x08, 0x00 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_3 +LINK_SHOP_WINDOW_PARAMS_3: + .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x00 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_4 +LINK_SHOP_WINDOW_PARAMS_4: + .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x00 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_5 +LINK_SHOP_WINDOW_PARAMS_5: + .byte 0x00, 0x00, 0x00, 0x00, 0x16, 0x02, 0x08, 0x00 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_6 +LINK_SHOP_WINDOW_PARAMS_6: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x02, 0x12, 0x00 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_7 +LINK_SHOP_WINDOW_PARAMS_7: + .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x0B, 0x00 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_8 +LINK_SHOP_WINDOW_PARAMS_8: + .byte 0x00, 0x00, 0x00, 0x00, 0x13, 0x02, 0x0B, 0x00 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_9 +LINK_SHOP_WINDOW_PARAMS_9: + .byte 0x00, 0x00, 0x00, 0x00, 0x1E, 0x0F, 0x00, 0x00 + .byte 0x00, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_10 +LINK_SHOP_WINDOW_PARAMS_10: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x12, 0x1C, 0x04 + .byte 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_WINDOW_PARAMS_11 +LINK_SHOP_WINDOW_PARAMS_11: + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x11, 0x1C, 0x05 + .byte 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + .global LINK_SHOP_MENU_ITEMS_CONFIRM +LINK_SHOP_MENU_ITEMS_CONFIRM: +#ifdef JAPAN +#define OV18_DATA_OFFSET 0x3926 +#define OV18_DATA_OFFSET_2 -0x1C5 +#else +#define OV18_DATA_OFFSET 0 +#define OV18_DATA_OFFSET_2 0 +#define OV18_DATA_OFFSET_2 0 +#endif + .word 0x3E7 + OV18_DATA_OFFSET + .byte 0x00, 0x00, 0x00, 0x00 + .word 0x3E8 + OV18_DATA_OFFSET + .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00 + .global LINK_SHOP_SUBMENU_ITEMS_1 +LINK_SHOP_SUBMENU_ITEMS_1: + .word 0x3F3 + OV18_DATA_OFFSET + .byte 0x0D, 0x00, 0x00, 0x00 + .word 0x3EB + OV18_DATA_OFFSET + .byte 0x04, 0x00, 0x00, 0x00 + .word 0x3EC + OV18_DATA_OFFSET + .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + .global LINK_SHOP_SUBMENU_ITEMS_2 +LINK_SHOP_SUBMENU_ITEMS_2: + .word 0x3F0 + OV18_DATA_OFFSET + .byte 0x0A, 0x00, 0x00, 0x00 + .word 0x3EB + OV18_DATA_OFFSET + .byte 0x04, 0x00, 0x00, 0x00 + .word 0x3EC + OV18_DATA_OFFSET + .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + .global LINK_SHOP_MAIN_MENU_ITEMS +LINK_SHOP_MAIN_MENU_ITEMS: + .word 0x3EA + OV18_DATA_OFFSET + .byte 0x03, 0x00, 0x00, 0x00 + .word 0x3EB + OV18_DATA_OFFSET + .byte 0x04, 0x00, 0x00, 0x00 + .word 0x3EC + OV18_DATA_OFFSET + .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + .global LINK_SHOP_SUBMENU_ITEMS_3 +LINK_SHOP_SUBMENU_ITEMS_3: + .word 0x3ED + OV18_DATA_OFFSET + .byte 0x07, 0x00, 0x00, 0x00 + .word 0x3EE + OV18_DATA_OFFSET + .byte 0x08, 0x00, 0x00, 0x00 + .word 0x3F3 + OV18_DATA_OFFSET + .byte 0x0D, 0x00, 0x00, 0x00 + .word 0x3E9 + OV18_DATA_OFFSET + .byte 0x02, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00 + .global LINK_SHOP_SUBMENU_ITEMS_4 +LINK_SHOP_SUBMENU_ITEMS_4: + .word 0x3F4 + OV18_DATA_OFFSET + .byte 0x0E, 0x00, 0x00, 0x00 + .word 0x3F5 + OV18_DATA_OFFSET + .byte 0x0F, 0x00, 0x00, 0x00 + .word 0x3F6 + OV18_DATA_OFFSET + .byte 0x10, 0x00, 0x00, 0x00 + .word 0x3F3 + OV18_DATA_OFFSET + .byte 0x0D, 0x00, 0x00, 0x00 + .word 0x3EC + OV18_DATA_OFFSET + .byte 0x05, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00 + .global LINK_SHOP_SUBMENU_ITEMS_5 +LINK_SHOP_SUBMENU_ITEMS_5: + .word 0x3ED + OV18_DATA_OFFSET + .byte 0x07, 0x00, 0x00, 0x00 + .word 0x3EE + OV18_DATA_OFFSET + .byte 0x08, 0x00, 0x00, 0x00 + .word 0x3EF + OV18_DATA_OFFSET + .byte 0x09, 0x00, 0x00, 0x00 + .word 0xA3F + OV18_DATA_OFFSET_2 + .byte 0x11, 0x00, 0x00, 0x00 + .word 0xA40 + OV18_DATA_OFFSET_2 + .byte 0x12, 0x00, 0x00, 0x00 + .word 0x3F0 + OV18_DATA_OFFSET + .byte 0x0A, 0x00, 0x00, 0x00 + .word 0x3EB + OV18_DATA_OFFSET + .byte 0x04, 0x00, 0x00, 0x00 + .word 0x3EC + OV18_DATA_OFFSET + .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .global LINK_SHOP_SUBMENU_ITEMS_6 +LINK_SHOP_SUBMENU_ITEMS_6: + .word 0x3F1 + OV18_DATA_OFFSET + .byte 0x0B, 0x00, 0x00, 0x00 + .word 0x3EE + OV18_DATA_OFFSET + .byte 0x08, 0x00, 0x00, 0x00 + .word 0x3EF + OV18_DATA_OFFSET + .byte 0x09, 0x00, 0x00, 0x00 + .word 0xA3F + OV18_DATA_OFFSET_2 + .byte 0x11, 0x00, 0x00, 0x00 + .word 0xA40 + OV18_DATA_OFFSET_2 + .byte 0x12, 0x00, 0x00, 0x00 + .word 0x3F0 + OV18_DATA_OFFSET + .byte 0x0A, 0x00, 0x00, 0x00 + .word 0x3EB + OV18_DATA_OFFSET + .byte 0x04, 0x00, 0x00, 0x00 + .word 0x3EC + OV18_DATA_OFFSET + .byte 0x05, 0x00, 0x00, 0x00 + .byte 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .global LINK_SHOP_SUBMENU_ITEMS_7 +LINK_SHOP_SUBMENU_ITEMS_7: + .word 0x3F2 + OV18_DATA_OFFSET + .byte 0x0C, 0x00, 0x00, 0x00 + .word 0x3EE + OV18_DATA_OFFSET + .byte 0x08, 0x00, 0x00, 0x00 + .word 0x3EF + OV18_DATA_OFFSET + .byte 0x09, 0x00, 0x00, 0x00 + .word 0xA3F + OV18_DATA_OFFSET_2 + .byte 0x11, 0x00, 0x00, 0x00 + .word 0xA40 + OV18_DATA_OFFSET_2 + .byte 0x12, 0x00, 0x00, 0x00 + .word 0x3F0 + OV18_DATA_OFFSET + .byte 0x0A, 0x00, 0x00, 0x00 + .word 0x3EB + OV18_DATA_OFFSET + .byte 0x04, 0x00, 0x00, 0x00 + .word 0x3EC + OV18_DATA_OFFSET + .byte 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00 + .global OVERLAY18_FUNCTION_POINTER_TABLE +OVERLAY18_FUNCTION_POINTER_TABLE: + .word ov18_0238BE48 + .word ov18_0238BE6C + .word ov18_0238BE90 + .word ov18_0238BF0C + .word ov18_0238BF30 + .word ov18_0238BF60 + .word ov18_0238BF84 + .word ov18_0238BFA8 + .word ov18_0238C03C + .word ov18_0238C060 + .word ov18_0238C078 + .word ov18_0238C060 + .word ov18_0238C09C + .word ov18_0238C0C0 + .word ov18_0238C0D8 + .word ov18_0238C0FC + .word ov18_0238C114 + .word ov18_0238C13C + .word ov18_0238C164 + .word ov18_0238C21C + .word ov18_0238C240 + .word ov18_0238C258 + .word ov18_0238C27C + .word ov18_0238C340 + .word ov18_0238C364 + .word ov18_0238C398 + .word ov18_0238C3C0 + .word ov18_0238C428 + .word ov18_0238C47C + .word ov18_0238C4A0 + .word ov18_0238C4E8 + .word ov18_0238C504 + .word ov18_0238C528 + .word ov18_0238C720 + .word ov18_0238C78C + .word ov18_0238C7B0 + .word ov18_0238C7C0 + .word ov18_0238C7E4 + .word ov18_0238C808 + .word ov18_0238C888 + .word ov18_0238C8AC + .word ov18_0238C8D0 + .word ov18_0238C950 + .word ov18_0238C974 + .word ov18_0238C984 + .word ov18_0238C9A8 + .word ov18_0238C9B8 + .word ov18_0238CA18 + .word ov18_0238CA3C + .word ov18_0238CA4C + .word ov18_0238CA70 + .word ov18_0238CA80 + .word ov18_0238CAB0 + .word ov18_0238CAD4 + .word ov18_0238CBDC + .word ov18_0238CC00 + .word ov18_0238CD88 + .word ov18_0238CDAC + .word ov18_0238CDC8 + .word ov18_0238CDEC + .word ov18_0238CDFC + .word ov18_0238CE20 + .word ov18_0238CE88 + .word ov18_0238CED8 + .word ov18_0238CF98 + .word ov18_0238D034 + .word ov18_0238D050 + .word ov18_0238D074 + .word ov18_0238D098 + .word ov18_0238D12C + .word ov18_0238D150 + .word ov18_0238D174 + .word ov18_0238D208 + .word ov18_0238D22C + .word ov18_0238D23C + .word ov18_0238D260 + .global ov18_0238D5F8 +ov18_0238D5F8: + .byte 0x5B, 0x43, 0x53, 0x3A, 0x25, 0x63, 0x5D, 0x25, 0x73, 0x5B, 0x43, 0x52, 0x5D, 0x00, 0x00, 0x00 + .global ov18_0238D608 +ov18_0238D608: + .byte 0x5B, 0x43, 0x53, 0x3A, 0x56, 0x5D, 0x5B, 0x67, 0x6F, 0x6C, 0x64, 0x3A, 0x30, 0x5D, 0x5B, 0x43 + .byte 0x52, 0x5D, 0x00, 0x00 + + .data + .global LINK_SHOP_PTR +LINK_SHOP_PTR: + .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 diff --git a/asm/overlay_29_022DC65C.s b/asm/overlay_29_022DC65C.s deleted file mode 100644 index 7a77b702..00000000 --- a/asm/overlay_29_022DC65C.s +++ /dev/null @@ -1,24 +0,0 @@ - .include "asm/macros.inc" - .include "overlay_29_022DC65C.inc" - - .text - - arm_func_start ov29_022DC65C -ov29_022DC65C: ; 0x022DC65C - ldr ip, _022DC668 ; =ov29_022DC2B8 - ldr r0, _022DC66C ; =ov29_023538B4 - bx ip - .align 2, 0 -_022DC668: .word ov29_022DC2B8 -_022DC66C: .word ov29_023538B4 - arm_func_end ov29_022DC65C - - arm_func_start ov29_022DC670 -ov29_022DC670: ; 0x022DC670 - ldr ip, _022DC67C ; =ov29_022DC33C - ldr r0, _022DC680 ; =ov29_023538B4 - bx ip - .align 2, 0 -_022DC67C: .word ov29_022DC33C -_022DC680: .word ov29_023538B4 - arm_func_end ov29_022DC670 diff --git a/asm/overlay_29_022DC694.s b/asm/overlay_29_022DC7E4.s similarity index 95% rename from asm/overlay_29_022DC694.s rename to asm/overlay_29_022DC7E4.s index 6073fe18..a3b70891 100644 --- a/asm/overlay_29_022DC694.s +++ b/asm/overlay_29_022DC7E4.s @@ -1,139 +1,8 @@ .include "asm/macros.inc" - .include "overlay_29_022DC694.inc" + .include "overlay_29_022DC7E4.inc" .text - arm_func_start ov29_022DC694 -ov29_022DC694: ; 0x022DC694 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x14 - mov r5, r0 - add r0, sp, #0 - mov r4, r1 - bl ov10_022C22A0 - add r0, sp, #0 - mov r1, r4 - bl ov10_022C0814 - mov r0, r5 - mov r1, #0 - mov r2, #1 - bl DrawTeamStats - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} - arm_func_end ov29_022DC694 - - arm_func_start ov29_022DC6D0 -ov29_022DC6D0: ; 0x022DC6D0 - ldr ip, _022DC6D8 ; =UpdateTeamStats - bx ip - .align 2, 0 -_022DC6D8: .word UpdateTeamStats - arm_func_end ov29_022DC6D0 - - arm_func_start ov29_022DC6DC -ov29_022DC6DC: ; 0x022DC6DC - ldr ip, _022DC6E4 ; =ov10_022C11D8 - bx ip - .align 2, 0 -_022DC6E4: .word ov10_022C11D8 - arm_func_end ov29_022DC6DC - - arm_func_start ov29_022DC6E8 -ov29_022DC6E8: ; 0x022DC6E8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x18 - ldrb r4, [sp, #0x20] - ldrsh ip, [sp, #0x24] - ldrsh lr, [sp, #0x28] - stmia sp, {r4, ip} - str lr, [sp, #8] - ldrsh ip, [sp, #0x2c] - ldrsh lr, [sp, #0x30] - str ip, [sp, #0xc] - ldrb ip, [sp, #0x34] - str lr, [sp, #0x10] - str ip, [sp, #0x14] - bl ov10_022C0F6C - add sp, sp, #0x18 - ldmia sp!, {r4, pc} - arm_func_end ov29_022DC6E8 - - arm_func_start ov29_022DC728 -ov29_022DC728: ; 0x022DC728 - stmdb sp!, {r3, lr} - bl FreeTeamStats - bl ov10_022C096C - ldmia sp!, {r3, pc} - arm_func_end ov29_022DC728 - - arm_func_start ov29_022DC738 -ov29_022DC738: ; 0x022DC738 - stmdb sp!, {r4, r5, lr} - sub sp, sp, #0x14 - mov r5, r0 - add r0, sp, #0 - mov r4, r1 - bl ov10_022C22A0 - add r0, sp, #0 - mov r1, r4 - bl ov10_022C0814 - mov r0, r5 - bl ov10_022C14D0 - add sp, sp, #0x14 - ldmia sp!, {r4, r5, pc} - arm_func_end ov29_022DC738 - - arm_func_start ov29_022DC76C -ov29_022DC76C: ; 0x022DC76C - ldr ip, _022DC774 ; =ov10_022C159C - bx ip - .align 2, 0 -_022DC774: .word ov10_022C159C - arm_func_end ov29_022DC76C - - arm_func_start ov29_022DC778 -ov29_022DC778: ; 0x022DC778 - bx lr - arm_func_end ov29_022DC778 - - arm_func_start ov29_022DC77C -ov29_022DC77C: ; 0x022DC77C - stmdb sp!, {r3, lr} - bl FreeMapAndTeam - bl ov10_022C096C - ldmia sp!, {r3, pc} - arm_func_end ov29_022DC77C - - arm_func_start ov29_022DC78C -ov29_022DC78C: ; 0x022DC78C - stmdb sp!, {r4, lr} - ldr r1, _022DC7E0 ; =ov29_02353518 - mov lr, #0 - ldr r4, [r1] - mov r1, #0x50 - b _022DC7D0 -_022DC7A4: - mul ip, lr, r1 - add r3, r4, ip - ldrb r2, [r3, #4] - cmp r2, #0 - beq _022DC7CC - ldr r2, [r3, #8] - cmp r0, r2 - addeq r0, r4, #4 - addeq r0, r0, ip - ldmeqia sp!, {r4, pc} -_022DC7CC: - add lr, lr, #1 -_022DC7D0: - cmp lr, #0x16 - blt _022DC7A4 - mov r0, #0 - ldmia sp!, {r4, pc} - .align 2, 0 -_022DC7E0: .word ov29_02353518 - arm_func_end ov29_022DC78C - ; https://decomp.me/scratch/qiwjF arm_func_start ov29_022DC7E4 ov29_022DC7E4: ; 0x022DC7E4 diff --git a/asm/overlay_29_022E1618.s b/asm/overlay_29_022E1618.s deleted file mode 100644 index ebd4c100..00000000 --- a/asm/overlay_29_022E1618.s +++ /dev/null @@ -1,16 +0,0 @@ - .include "asm/macros.inc" - .include "overlay_29_022E1618.inc" - - .text - - arm_func_start ov29_022E1618 -ov29_022E1618: ; 0x022E1618 - ldr r0, [r0, #0xb4] - bx lr - arm_func_end ov29_022E1618 - - arm_func_start ov29_022E1620 -ov29_022E1620: ; 0x022E1620 - ldr r0, [r0, #0xb4] - bx lr - arm_func_end ov29_022E1620 diff --git a/asm/overlay_29_022E28D4.s b/asm/overlay_29_022E28D4.s deleted file mode 100644 index c269f682..00000000 --- a/asm/overlay_29_022E28D4.s +++ /dev/null @@ -1,44 +0,0 @@ - .include "asm/macros.inc" - .include "overlay_29_022E28D4.inc" - - .text - - arm_func_start IsValidTargetEntity -IsValidTargetEntity: ; 0x022E28D4 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl EntityIsValid__022E1A1C - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r4 - bl EntityIsValid__022E1A1C - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - ldrb r0, [r4, #0x20] - cmp r0, #0 - moveq r0, #0 - ldmeqia sp!, {r3, r4, r5, pc} - mov r0, r5 - bl HasDropeyeStatus - mov r2, r0 - add r0, r5, #4 - add r1, r4, #4 - bl IsPositionActuallyInSight - ldmia sp!, {r3, r4, r5, pc} - arm_func_end IsValidTargetEntity - - arm_func_start CanSeePosition -CanSeePosition: ; 0x022E2930 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - bl HasDropeyeStatus - mov r2, r0 - mov r1, r4 - add r0, r5, #4 - bl IsPositionActuallyInSight - ldmia sp!, {r3, r4, r5, pc} - arm_func_end CanSeePosition diff --git a/asm/overlay_29_022E37DC.s b/asm/overlay_29_022E37DC.s index 68d4d84b..cbfd0744 100644 --- a/asm/overlay_29_022E37DC.s +++ b/asm/overlay_29_022E37DC.s @@ -559,250 +559,3 @@ PlayExclamationPointEffect__022E4880: ; 0x022E3ED0 .align 2, 0 _022E3F1C: .word 0x00000143 arm_func_end PlayExclamationPointEffect__022E4880 - - arm_func_start ov29_022E3F20 -ov29_022E3F20: ; 0x022E3F20 - bx lr - arm_func_end ov29_022E3F20 - - arm_func_start ov29_022E3F24 -ov29_022E3F24: ; 0x022E3F24 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E3F70 ; =0x00000141 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E3F70 ; =0x00000141 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E3F70: .word 0x00000141 - arm_func_end ov29_022E3F24 - - arm_func_start ov29_022E3F74 -ov29_022E3F74: ; 0x022E3F74 - bx lr - arm_func_end ov29_022E3F74 - - arm_func_start ov29_022E3F78 -ov29_022E3F78: ; 0x022E3F78 - bx lr - arm_func_end ov29_022E3F78 - - arm_func_start ov29_022E3F7C -ov29_022E3F7C: ; 0x022E3F7C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #7 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #7 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E3F7C - - arm_func_start ov29_022E3FC8 -ov29_022E3FC8: ; 0x022E3FC8 - bx lr - arm_func_end ov29_022E3FC8 - - arm_func_start ov29_022E3FCC -ov29_022E3FCC: ; 0x022E3FCC - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #4 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #4 - str r2, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E3FCC - - arm_func_start ov29_022E4014 -ov29_022E4014: ; 0x022E4014 - bx lr - arm_func_end ov29_022E4014 - - arm_func_start PlayEffectAnimation0x171Full -PlayEffectAnimation0x171Full: ; 0x022E4018 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4064 ; =0x00000171 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4064 ; =0x00000171 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4064: .word 0x00000171 - arm_func_end PlayEffectAnimation0x171Full - - arm_func_start ov29_022E4068 -ov29_022E4068: ; 0x022E4068 - bx lr - arm_func_end ov29_022E4068 - - arm_func_start PlayEffectAnimation0x171 -PlayEffectAnimation0x171: ; 0x022E406C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E40B4 ; =0x00000171 - bl GetEffectAnimationField0x19 - mov r3, r0 - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - ldr r1, _022E40B4 ; =0x00000171 - mov r0, r4 - and r3, r3, #0xff - str r2, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E40B4: .word 0x00000171 - arm_func_end PlayEffectAnimation0x171 - - arm_func_start ov29_022E40B8 -ov29_022E40B8: ; 0x022E40B8 - bx lr - arm_func_end ov29_022E40B8 - - arm_func_start ov29_022E40BC -ov29_022E40BC: ; 0x022E40BC - bx lr - arm_func_end ov29_022E40BC - - arm_func_start ov29_022E40C0 -ov29_022E40C0: ; 0x022E40C0 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x1ac - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov r2, #0 - stmia sp, {r0, r2} - sub r0, r2, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x1ac - str r2, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E40C0 - - arm_func_start ov29_022E4108 -ov29_022E4108: ; 0x022E4108 - bx lr - arm_func_end ov29_022E4108 - - arm_func_start ov29_022E410C -ov29_022E410C: ; 0x022E410C - bx lr - arm_func_end ov29_022E410C - - arm_func_start ov29_022E4110 -ov29_022E4110: ; 0x022E4110 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #4 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #4 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E4110 - - arm_func_start ov29_022E415C -ov29_022E415C: ; 0x022E415C - bx lr - arm_func_end ov29_022E415C - - arm_func_start ov29_022E4160 -ov29_022E4160: ; 0x022E4160 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x1a8 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x1a8 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E4160 - - arm_func_start ov29_022E41AC -ov29_022E41AC: ; 0x022E41AC - bx lr - arm_func_end ov29_022E41AC diff --git a/asm/overlay_29_022E41F0.s b/asm/overlay_29_022E41F0.s index 69acdc9e..79593d1b 100644 --- a/asm/overlay_29_022E41F0.s +++ b/asm/overlay_29_022E41F0.s @@ -114,209 +114,3 @@ PlayEffectAnimationEntityStandard: ; 0x022E42E8 add sp, sp, #0x10 ldmia sp!, {r3, r4, r5, pc} arm_func_end PlayEffectAnimationEntityStandard - - arm_func_start ov29_022E4338 -ov29_022E4338: ; 0x022E4338 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4384 ; =0x000001A9 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4384 ; =0x000001A9 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4384: .word 0x000001A9 - arm_func_end ov29_022E4338 - - arm_func_start ov29_022E4388 -ov29_022E4388: ; 0x022E4388 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E43D4 ; =0x0000013A - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x138 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E43D4: .word 0x0000013A - arm_func_end ov29_022E4388 - - arm_func_start ov29_022E43D8 -ov29_022E43D8: ; 0x022E43D8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4424 ; =0x0000013A - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x138 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4424: .word 0x0000013A - arm_func_end ov29_022E43D8 - - arm_func_start ov29_022E4428 -ov29_022E4428: ; 0x022E4428 - bx lr - arm_func_end ov29_022E4428 - - arm_func_start ov29_022E442C -ov29_022E442C: ; 0x022E442C - bx lr - arm_func_end ov29_022E442C - - arm_func_start ov29_022E4430 -ov29_022E4430: ; 0x022E4430 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E447C ; =0x00000171 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E447C ; =0x00000171 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E447C: .word 0x00000171 - arm_func_end ov29_022E4430 - - arm_func_start ov29_022E4480 -ov29_022E4480: ; 0x022E4480 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #7 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #7 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E4480 - - arm_func_start PlaySpeedUpEffect -PlaySpeedUpEffect: ; 0x022E44CC - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4518 ; =0x0000018B - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4518 ; =0x0000018B - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4518: .word 0x0000018B - arm_func_end PlaySpeedUpEffect - - arm_func_start PlaySpeedDownEffect -PlaySpeedDownEffect: ; 0x022E451C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4568 ; =0x0000018A - bl GetEffectAnimationField0x19 - mov r2, r0 - mov ip, #0 - mov r1, #2 - stmia sp, {r1, ip} - sub r0, ip, #1 - str r0, [sp, #8] - and r3, r2, #0xff - mov r0, r4 - add r1, r1, #0x188 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4568: .word 0x0000018A - arm_func_end PlaySpeedDownEffect - - arm_func_start ov29_022E456C -ov29_022E456C: ; 0x022E456C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #5 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #5 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E456C diff --git a/asm/overlay_29_022E4714.s b/asm/overlay_29_022E4868.s similarity index 67% rename from asm/overlay_29_022E4714.s rename to asm/overlay_29_022E4868.s index 061766ec..b44dc1d4 100644 --- a/asm/overlay_29_022E4714.s +++ b/asm/overlay_29_022E4868.s @@ -1,136 +1,8 @@ .include "asm/macros.inc" - .include "overlay_29_022E4714.inc" + .include "overlay_29_022E4868.inc" .text - arm_func_start ov29_022E4714 -ov29_022E4714: ; 0x022E4714 - bx lr - arm_func_end ov29_022E4714 - - arm_func_start ov29_022E4718 -ov29_022E4718: ; 0x022E4718 - bx lr - arm_func_end ov29_022E4718 - - arm_func_start ov29_022E471C -ov29_022E471C: ; 0x022E471C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - ldr r0, _022E4768 ; =0x00000131 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - ldr r1, _022E4768 ; =0x00000131 - mov r0, r4 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - .align 2, 0 -_022E4768: .word 0x00000131 - arm_func_end ov29_022E471C - - arm_func_start ov29_022E476C -ov29_022E476C: ; 0x022E476C - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x30 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x30 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E476C - - arm_func_start ov29_022E47B8 -ov29_022E47B8: ; 0x022E47B8 - bx lr - arm_func_end ov29_022E47B8 - - arm_func_start ov29_022E47BC -ov29_022E47BC: ; 0x022E47BC - bx lr - arm_func_end ov29_022E47BC - - arm_func_start ov29_022E47C0 -ov29_022E47C0: ; 0x022E47C0 - bx lr - arm_func_end ov29_022E47C0 - - arm_func_start ov29_022E47C4 -ov29_022E47C4: ; 0x022E47C4 - bx lr - arm_func_end ov29_022E47C4 - - arm_func_start ov29_022E47C8 -ov29_022E47C8: ; 0x022E47C8 - bx lr - arm_func_end ov29_022E47C8 - - arm_func_start ov29_022E47CC -ov29_022E47CC: ; 0x022E47CC - stmdb sp!, {r3, r4, r5, lr} - sub sp, sp, #0x10 - mov r5, r1 - mov r1, #0xe - mov r4, r0 - bl MonsterIsType - cmp r0, #0 - beq _022E4828 - mov r0, r5 - bl GetEffectAnimationField0x19 - mov r2, r0 - and r3, r2, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, r5 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - b _022E4860 -_022E4828: - mov r0, #0xe - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0xe - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity -_022E4860: - add sp, sp, #0x10 - ldmia sp!, {r3, r4, r5, pc} - arm_func_end ov29_022E47CC - arm_func_start ov29_022E4868 ov29_022E4868: ; 0x022E4868 bx lr diff --git a/asm/overlay_29_022E66D8.s b/asm/overlay_29_022E66D8.s deleted file mode 100644 index 37a5f5a2..00000000 --- a/asm/overlay_29_022E66D8.s +++ /dev/null @@ -1,50 +0,0 @@ - .include "asm/macros.inc" - .include "overlay_29_022E66D8.inc" - - .text - - arm_func_start ov29_022E66D8 -ov29_022E66D8: ; 0x022E66D8 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x15 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x15 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E66D8 - - arm_func_start ov29_022E6724 -ov29_022E6724: ; 0x022E6724 - stmdb sp!, {r4, lr} - sub sp, sp, #0x10 - mov r4, r0 - mov r0, #0x1b4 - bl GetEffectAnimationField0x19 - mov r1, r0 - and r3, r1, #0xff - mov r0, #2 - mov ip, #0 - stmia sp, {r0, ip} - sub r0, ip, #1 - str r0, [sp, #8] - mov r0, r4 - mov r1, #0x1b4 - mov r2, #1 - str ip, [sp, #0xc] - bl PlayEffectAnimationEntity - add sp, sp, #0x10 - ldmia sp!, {r4, pc} - arm_func_end ov29_022E6724 diff --git a/asm/overlay_29_022F05B4.s b/asm/overlay_29_022F0654.s similarity index 90% rename from asm/overlay_29_022F05B4.s rename to asm/overlay_29_022F0654.s index 8bbb9645..4e37b15c 100644 --- a/asm/overlay_29_022F05B4.s +++ b/asm/overlay_29_022F0654.s @@ -1,69 +1,8 @@ .include "asm/macros.inc" - .include "overlay_29_022F05B4.inc" + .include "overlay_29_022F0654.inc" .text - arm_func_start ov29_022F05B4 -ov29_022F05B4: ; 0x022F05B4 - stmdb sp!, {r4, lr} - mov r4, r1 - cmp r2, #0 - bne _022F05D4 - bl UnfreezeAnim - mov r0, r4 - bl UnfreezeAnim - ldmia sp!, {r4, pc} -_022F05D4: - bl FreezeAnim - mov r0, r4 - bl FreezeAnim - ldmia sp!, {r4, pc} - arm_func_end ov29_022F05B4 - - arm_func_start ov29_022F05E4 -ov29_022F05E4: ; 0x022F05E4 - stmdb sp!, {r3, lr} - bl ov29_022F0AE0 - bl ov29_0234D668 - bl ov29_0234D838 - mov r0, #0x20 - mov r1, #0x62 - bl ov29_022EA370 - ldmia sp!, {r3, pc} - arm_func_end ov29_022F05E4 - - arm_func_start TalkToSecretBazaarNpcStandard -TalkToSecretBazaarNpcStandard: ; 0x022F0604 - stmdb sp!, {r3, lr} - mov r3, #0 - str r3, [sp] - bl TalkToSecretBazaarNpc - ldmia sp!, {r3, pc} - arm_func_end TalkToSecretBazaarNpcStandard - - arm_func_start ov29_022F0618 -ov29_022F0618: ; 0x022F0618 - stmdb sp!, {r3, lr} - mov ip, #0 - str ip, [sp] - bl TalkToSecretBazaarNpc - ldmia sp!, {r3, pc} - arm_func_end ov29_022F0618 - - arm_func_start TalkToSecretBazaarNpcWithYesNoMenu -TalkToSecretBazaarNpcWithYesNoMenu: ; 0x022F062C - stmdb sp!, {r3, r4, lr} - sub sp, sp, #4 - mov r4, #1 - str r4, [sp] - bl TalkToSecretBazaarNpc - mov r4, r0 - bl ov29_022F0AE0 - mov r0, r4 - add sp, sp, #4 - ldmia sp!, {r3, r4, pc} - arm_func_end TalkToSecretBazaarNpcWithYesNoMenu - arm_func_start MakeTargetFaceUserAndIdle MakeTargetFaceUserAndIdle: ; 0x022F0654 stmdb sp!, {r4, lr} diff --git a/asm/overlay_29_02300D50.s b/asm/overlay_29_02300D50.s deleted file mode 100644 index 7d0399a2..00000000 --- a/asm/overlay_29_02300D50.s +++ /dev/null @@ -1,44 +0,0 @@ - .include "asm/macros.inc" - .include "overlay_29_02300D50.inc" - - .text - - arm_func_start ov29_02300D50 -ov29_02300D50: ; 0x02300D50 - stmdb sp!, {r3, lr} - ldr r1, [r0, #0xb4] - ldrb r3, [r1, #0xc4] - cmp r3, #3 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - cmp r3, #4 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - ldrb r2, [r1, #0xd0] - cmp r2, #7 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - cmp r2, #3 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - ldrb r1, [r1, #0xbf] - cmp r1, #4 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - cmp r3, #6 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - cmp r2, #1 - moveq r0, #1 - ldmeqia sp!, {r3, pc} - bl CheckVariousStatuses__023016DC - ldmia sp!, {r3, pc} - arm_func_end ov29_02300D50 - - arm_func_start ov29_02300DC0 -ov29_02300DC0: ; 0x02300DC0 - ldr ip, _02300DC8 ; =ov29_02300D50 - bx ip - .align 2, 0 -_02300DC8: .word ov29_02300D50 - arm_func_end ov29_02300DC0 diff --git a/asm/overlay_29_0232124C.s b/asm/overlay_29_0232124C.s deleted file mode 100644 index e1aa0431..00000000 --- a/asm/overlay_29_0232124C.s +++ /dev/null @@ -1,24 +0,0 @@ - .include "asm/macros.inc" - .include "overlay_29_0232124C.inc" - - .text - - arm_func_start ov29_0232124C -ov29_0232124C: ; 0x0232124C - ldr ip, _0232125C ; =ov29_0232119C - mov r1, #1 - mov r2, r1 - bx ip - .align 2, 0 -_0232125C: .word ov29_0232119C - arm_func_end ov29_0232124C - - arm_func_start ov29_02321260 -ov29_02321260: ; 0x02321260 - ldr ip, _02321270 ; =ov29_0232119C - mov r1, #0 - mov r2, r1 - bx ip - .align 2, 0 -_02321270: .word ov29_0232119C - arm_func_end ov29_02321260 diff --git a/asm/overlay_29_02343980.s b/asm/overlay_29_02343980.s index af310feb..18e59204 100644 --- a/asm/overlay_29_02343980.s +++ b/asm/overlay_29_02343980.s @@ -560,93 +560,3 @@ OpenFixedBin: ; 0x02344054 .align 2, 0 _02344084: .word FIXED_ROOM_DATA_PTR arm_func_end OpenFixedBin - - arm_func_start CloseFixedBin -CloseFixedBin: ; 0x02344088 - stmdb sp!, {r3, lr} - ldr r0, _023440A8 ; =FIXED_ROOM_DATA_PTR - ldr r0, [r0] - bl MemFree - ldr r0, _023440A8 ; =FIXED_ROOM_DATA_PTR - mov r1, #0 - str r1, [r0] - ldmia sp!, {r3, pc} - .align 2, 0 -_023440A8: .word FIXED_ROOM_DATA_PTR - arm_func_end CloseFixedBin - - arm_func_start AreOrbsAllowed -AreOrbsAllowed: ; 0x023440AC - cmp r0, #0 - beq _023440BC - cmp r0, #0xa5 - blo _023440C4 -_023440BC: - mov r0, #1 - bx lr -_023440C4: - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _023440D8 ; =ov10_022C6C77 - ldrb r0, [r0, r1] - bx lr - .align 2, 0 -_023440D8: .word ov10_022C6C77 - arm_func_end AreOrbsAllowed - - arm_func_start AreTileJumpsAllowed -AreTileJumpsAllowed: ; 0x023440DC - cmp r0, #0 - beq _023440EC - cmp r0, #0xa5 - blo _023440F4 -_023440EC: - mov r0, #1 - bx lr -_023440F4: - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _02344108 ; =ov10_022C6C78 - ldrb r0, [r0, r1] - bx lr - .align 2, 0 -_02344108: .word ov10_022C6C78 - arm_func_end AreTileJumpsAllowed - - arm_func_start AreTrawlOrbsAllowed -AreTrawlOrbsAllowed: ; 0x0234410C - cmp r0, #0 - beq _0234411C - cmp r0, #0xa5 - blo _02344124 -_0234411C: - mov r0, #1 - bx lr -_02344124: - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _02344138 ; =ov10_022C6C79 - ldrb r0, [r0, r1] - bx lr - .align 2, 0 -_02344138: .word ov10_022C6C79 - arm_func_end AreTrawlOrbsAllowed - - arm_func_start AreOrbsAllowedVeneer -AreOrbsAllowedVeneer: ; 0x0234413C - ldr ip, _02344144 ; =AreOrbsAllowed - bx ip - .align 2, 0 -_02344144: .word AreOrbsAllowed - arm_func_end AreOrbsAllowedVeneer - - arm_func_start AreLateGameTrapsEnabled -AreLateGameTrapsEnabled: ; 0x02344148 - mov r1, #0xc - mul r1, r0, r1 - ldr r0, _0234415C ; =ov10_022C6C75 - ldrb r0, [r0, r1] - bx lr - .align 2, 0 -_0234415C: .word ov10_022C6C75 - arm_func_end AreLateGameTrapsEnabled diff --git a/asm/overlay_29_02344B1C.s b/asm/overlay_29_02344B1C.s deleted file mode 100644 index cd8ef9d0..00000000 --- a/asm/overlay_29_02344B1C.s +++ /dev/null @@ -1,89 +0,0 @@ - .include "asm/macros.inc" - .include "overlay_29_02344B1C.inc" - - .text - - arm_func_start ov29_02344B1C -ov29_02344B1C: ; 0x02344B1C - ldr r0, _02344B2C ; =ov29_023537B0 - mov r1, #1 - strb r1, [r0] - bx lr - .align 2, 0 -_02344B2C: .word ov29_023537B0 - arm_func_end ov29_02344B1C - - arm_func_start ov29_02344B30 -ov29_02344B30: ; 0x02344B30 - ldr r0, _02344B40 ; =ov29_023537B0 - mov r1, #0 - strb r1, [r0] - bx lr - .align 2, 0 -_02344B40: .word ov29_023537B0 - arm_func_end ov29_02344B30 - - arm_func_start PrepareItemForPrinting__02345728 -PrepareItemForPrinting__02345728: ; 0x02344B44 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - orr r1, r5, #0x40000 - bl SetPreprocessorArgsIdVal - ldr r2, _02344B6C ; =ov29_023531BC - mov r0, r5 - mov r1, r4 - bl SubstitutePlaceholderItemTags - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02344B6C: .word ov29_023531BC - arm_func_end PrepareItemForPrinting__02345728 - - arm_func_start PrepareItemForPrinting__02345754 -PrepareItemForPrinting__02345754: ; 0x02344B70 - stmdb sp!, {r3, r4, r5, lr} - mov r5, r0 - mov r4, r1 - orr r1, r5, #0x40000 - bl SetPreprocessorArgsIdVal - ldr r2, _02344B98 ; =ov29_023531A4 - mov r0, r5 - mov r1, r4 - bl SubstitutePlaceholderItemTags - ldmia sp!, {r3, r4, r5, pc} - .align 2, 0 -_02344B98: .word ov29_023531A4 - arm_func_end PrepareItemForPrinting__02345754 - - arm_func_start ov29_02344B9C -ov29_02344B9C: ; 0x02344B9C - ldr ip, _02344BA4 ; =SetPreprocessorArgsIdVal - bx ip - .align 2, 0 -_02344BA4: .word SetPreprocessorArgsIdVal - arm_func_end ov29_02344B9C - - arm_func_start PrepareItemForPrinting2 -PrepareItemForPrinting2: ; 0x02344BA8 - stmdb sp!, {r3, lr} - add r3, r0, r1, lsl #2 - orr ip, r1, #0x40000 - mov r0, r1 - mov r1, r2 - ldr r2, _02344BCC ; =ov29_023531BC - str ip, [r3, #0x10] - bl SubstitutePlaceholderItemTags - ldmia sp!, {r3, pc} - .align 2, 0 -_02344BCC: .word ov29_023531BC - arm_func_end PrepareItemForPrinting2 - - arm_func_start GenerateStandardItem -GenerateStandardItem: ; 0x02344BD0 - ldr ip, _02344BE0 ; =GenerateItem - mov r3, r2 - mov r2, #0 - bx ip - .align 2, 0 -_02344BE0: .word GenerateItem - arm_func_end GenerateStandardItem diff --git a/asm/overlay_29_02344BA8.s b/asm/overlay_29_02344BA8.s new file mode 100644 index 00000000..70738d52 --- /dev/null +++ b/asm/overlay_29_02344BA8.s @@ -0,0 +1,19 @@ + .include "asm/macros.inc" + .include "overlay_29_02344BA8.inc" + + .text + + arm_func_start PrepareItemForPrinting2 +PrepareItemForPrinting2: ; 0x02344BA8 + stmdb sp!, {r3, lr} + add r3, r0, r1, lsl #2 + orr ip, r1, #0x40000 + mov r0, r1 + mov r1, r2 + ldr r2, _02344BCC ; =ov29_023531BC + str ip, [r3, #0x10] + bl SubstitutePlaceholderItemTags + ldmia sp!, {r3, pc} + .align 2, 0 +_02344BCC: .word ov29_023531BC + arm_func_end PrepareItemForPrinting2 diff --git a/asm/overlay_29_0234921C.s b/asm/overlay_29_0234921C.s deleted file mode 100644 index d63c8871..00000000 --- a/asm/overlay_29_0234921C.s +++ /dev/null @@ -1,46 +0,0 @@ - .include "asm/macros.inc" - .include "overlay_29_0234921C.inc" - - .text - - arm_func_start IsCurrentMissionType -IsCurrentMissionType: ; 0x0234921C - ldr r1, _0234924C ; =DUNGEON_PTR - ldr r2, [r1] - ldrb r1, [r2, #0x760] - cmp r1, #0 - beq _0234923C - ldrb r1, [r2, #0x761] - cmp r1, r0 - beq _02349244 -_0234923C: - mov r0, #0 - bx lr -_02349244: - mov r0, #1 - bx lr - .align 2, 0 -_0234924C: .word DUNGEON_PTR - arm_func_end IsCurrentMissionType - - arm_func_start IsCurrentMissionTypeExact -IsCurrentMissionTypeExact: ; 0x02349250 - ldr r2, _02349288 ; =DUNGEON_PTR - ldr r3, [r2] - ldrb r2, [r3, #0x760] - cmp r2, #0 - beq _02349278 - ldrb r2, [r3, #0x761] - cmp r2, r0 - ldreqb r0, [r3, #0x762] - cmpeq r0, r1 - beq _02349280 -_02349278: - mov r0, #0 - bx lr -_02349280: - mov r0, #1 - bx lr - .align 2, 0 -_02349288: .word DUNGEON_PTR - arm_func_end IsCurrentMissionTypeExact diff --git a/asm/overlay_29_0234B4CC.s b/asm/overlay_29_0234B4CC.s index 40a1a4f9..2316bde7 100644 --- a/asm/overlay_29_0234B4CC.s +++ b/asm/overlay_29_0234B4CC.s @@ -429,157 +429,3 @@ _0234BA4C: .align 2, 0 _0234BA50: .word MESSAGE_LOG_INFO arm_func_end WaitUntilAlertBoxTextIsLoaded - - arm_func_start WaitUntilAlertBoxPauseIsOver -WaitUntilAlertBoxPauseIsOver: ; 0x0234BA54 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - ldr r1, _0234BAB8 ; =MESSAGE_LOG_INFO - mov r5, r0 - ldr r6, [r1, #4] - bl WaitUntilAlertBoxTextIsLoaded - mov r4, #0 - add r6, r6, #0xc00 - ldr r7, _0234BABC ; =DUNGEON_BUTTON_INPUT - b _0234BAAC -_0234BA78: - ldrsh r0, [r6, #0x90] - cmp r0, #0xb4 - ldmltia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r0, [r7] - and r0, r0, #3 - cmp r0, #3 - ldmeqia sp!, {r3, r4, r5, r6, r7, pc} - ldrh r0, [r7, #2] - tst r0, #0xf0 - ldmneia sp!, {r3, r4, r5, r6, r7, pc} - mov r0, r5 - bl AdvanceFrame - add r4, r4, #1 -_0234BAAC: - cmp r4, #0xf0 - blt _0234BA78 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0234BAB8: .word MESSAGE_LOG_INFO -_0234BABC: .word DUNGEON_BUTTON_INPUT - arm_func_end WaitUntilAlertBoxPauseIsOver - - arm_func_start InitPortraitDungeon -InitPortraitDungeon: ; 0x0234BAC0 - stmdb sp!, {r4, r5, r6, lr} - mov r6, r0 - mov r5, r1 - mov r4, r2 - bl InitPortraitParams - strh r5, [r6] - strb r4, [r6, #2] - mov r2, #0 - strb r2, [r6, #3] - mov r0, #2 - str r0, [r6, #4] - mov r0, #9 - str r0, [r6, #8] - strb r2, [r6, #0xc] - strb r2, [r6, #0xd] - mov r0, r6 - mov r1, #1 - strb r2, [r6, #0xe] - bl AllowPortraitDefault - ldmia sp!, {r4, r5, r6, pc} - arm_func_end InitPortraitDungeon - - arm_func_start ov29_0234BB10 -ov29_0234BB10: ; 0x0234BB10 - ldr ip, _0234BB1C ; =sub_02047FFC - mov r0, #0 - bx ip - .align 2, 0 -_0234BB1C: .word sub_02047FFC - arm_func_end ov29_0234BB10 - - arm_func_start ov29_0234BB20 -ov29_0234BB20: ; 0x0234BB20 - ldr ip, _0234BB28 ; =sub_0204804C - bx ip - .align 2, 0 -_0234BB28: .word sub_0204804C - arm_func_end ov29_0234BB20 - - arm_func_start ov29_0234BB2C -ov29_0234BB2C: ; 0x0234BB2C - ldr ip, _0234BB34 ; =sub_020480CC - bx ip - .align 2, 0 -_0234BB34: .word sub_020480CC - arm_func_end ov29_0234BB2C - - arm_func_start ov29_0234BB38 -ov29_0234BB38: ; 0x0234BB38 - ldr ip, _0234BB40 ; =sub_02048134 - bx ip - .align 2, 0 -_0234BB40: .word sub_02048134 - arm_func_end ov29_0234BB38 - - arm_func_start ov29_0234BB44 -ov29_0234BB44: ; 0x0234BB44 - ldr ip, _0234BB4C ; =sub_02048150 - bx ip - .align 2, 0 -_0234BB4C: .word sub_02048150 - arm_func_end ov29_0234BB44 - - arm_func_start ov29_0234BB50 -ov29_0234BB50: ; 0x0234BB50 - ldr ip, _0234BB58 ; =sub_02048240 - bx ip - .align 2, 0 -_0234BB58: .word sub_02048240 - arm_func_end ov29_0234BB50 - - arm_func_start OpenMessageLog -OpenMessageLog: ; 0x0234BB5C - stmdb sp!, {r4, r5, r6, lr} - mov r4, r0 - mov r6, r1 - mov r0, #6 - mov r1, #0 - bl UnkMapRelatedFunc - cmp r4, #0 - bne _0234BB84 - mov r0, #0 - bl ov29_0233A248 -_0234BB84: - mov r0, #0x62 - bl AdvanceFrame - mov r0, #0x62 - bl AdvanceFrame - bl sub_0204833C - mov r4, #0x62 -_0234BB9C: - mov r0, r4 - bl AdvanceFrame - bl sub_02048360 - movs r5, r0 - beq _0234BB9C - mov r0, #0x62 - bl AdvanceFrame - cmp r6, #0 - beq _0234BBCC - mov r0, #0 - mov r1, r0 - bl UnkMapRelatedFunc -_0234BBCC: - cmp r5, #1 - moveq r0, #1 - movne r0, #0 - ldmia sp!, {r4, r5, r6, pc} - arm_func_end OpenMessageLog - - arm_func_start ov29_0234BBDC -ov29_0234BBDC: ; 0x0234BBDC - ldr ip, _0234BBE4 ; =ov29_022E0B60 - bx ip - .align 2, 0 -_0234BBE4: .word ov29_022E0B60 - arm_func_end ov29_0234BBDC diff --git a/include/dungeon_capabilities_1.h b/include/dungeon_capabilities_1.h index 5b02a89b..8150bfec 100644 --- a/include/dungeon_capabilities_1.h +++ b/include/dungeon_capabilities_1.h @@ -1,6 +1,8 @@ #ifndef PMDSKY_DUNGEON_CAPABILITIES_1_H #define PMDSKY_DUNGEON_CAPABILITIES_1_H +#include "util.h" + #include "dungeon_mode.h" // Returns 0 if none of these conditions holds for the given entity: is a rescue client, @@ -15,5 +17,7 @@ bool8 CheckVariousConditions__02301624(struct entity *entity); bool8 CheckVariousStatuses__023016DC(struct entity *entity); // Returns false if none of these conditions holds for the given entity: asleep, frozen, petrified, biding. bool8 CheckVariousStatuses__0230172C(struct entity *entity); +bool8 ov29_02300D50(struct entity *entity); +bool8 ov29_02300DC0(struct entity *entity); #endif //PMDSKY_DUNGEON_CAPABILITIES_H \ No newline at end of file diff --git a/include/dungeon_init_2.h b/include/dungeon_init_2.h index 6eec2104..89ddb324 100644 --- a/include/dungeon_init_2.h +++ b/include/dungeon_init_2.h @@ -4,5 +4,6 @@ s16 DungeonSwapIdToIdx(s16 id); s16 DungeonSwapIdxToId(s16 idx); s32 GetDungeonModeSpecial(s16 dungeon_id); +s16 sub_0206A7CC(s16 a); #endif //PMDSKY_MAIN_DUNGEON_INIT_2 diff --git a/include/dungeon_visibility.h b/include/dungeon_visibility.h index 6b678e2b..81f06d82 100644 --- a/include/dungeon_visibility.h +++ b/include/dungeon_visibility.h @@ -1,6 +1,8 @@ #ifndef PMDSKY_DUNGEON_VISIBILITY_H #define PMDSKY_DUNGEON_VISIBILITY_H +#include "util.h" + #include "dungeon_mode.h" // Checks if a given monster can see another monster. @@ -11,5 +13,7 @@ bool8 CanSeeTarget(struct entity *user, struct entity *target); // More specifically, it checks if the target is invisible, if the user can see invisible monsters, if the user is blinded and if the target position is in sight from the position of the user (this last check is done by calling IsPositionInSight with the user's and the target's position). // This function is almost the same as CanSeeTarget, the only difference is that the latter calls IsPositionActuallyInSight instead. bool8 CanTargetEntity(struct entity *user, struct entity *target); +bool8 IsValidTargetEntity(struct entity *user, struct entity *target); +bool8 CanSeePosition(struct entity *user, struct position *target); #endif //PMDSKY_DUNGEON_VISIBILITY_H diff --git a/include/main_0200238C.h b/include/main_0200238C.h new file mode 100644 index 00000000..7e64ec00 --- /dev/null +++ b/include/main_0200238C.h @@ -0,0 +1,29 @@ +#ifndef PMDSKY_MAIN_0200238C_H +#define PMDSKY_MAIN_0200238C_H + +struct unk_0229B004 { + OSThread *field_0x0; + s32 field_0x4; + s32 field_0x8; + s32 field_0xC; + s32 field_0x10; + s32 field_0x14; +}; + +struct unk_0229AFC0 { + s32 field_0x0; + s32 field_0x4; + s32 field_0x8; +}; + +s8 sub_0200238C(s8 c); +void sub_020023A8(s8 *dst, s8 *src, s32 n); +s32 sub_020023F8(s8 *a, s8 *b, s32 n); +void WaitForever(void); +void sub_02002448(u32 a); +s32 sub_020024A0(void); +void sub_020024B0(void); +void sub_020024C0(void); +s32 sub_020024D4(void); + +#endif diff --git a/include/main_020027E8.h b/include/main_020027E8.h new file mode 100644 index 00000000..795bb21d --- /dev/null +++ b/include/main_020027E8.h @@ -0,0 +1,28 @@ +#ifndef PMDSKY_MAIN_020027E8_H +#define PMDSKY_MAIN_020027E8_H + +#include "util.h" + +struct unk_020027E8 { + OSThread *field_0x0; + u8 field_0x4[0x10]; + s32 field_0x14; +}; + +struct unk_0229B0E0 { + s32 field_0x0; + s32 field_0x4; +}; + +void sub_020027E8(struct unk_020027E8 *p); +u32 sub_020027F8(struct unk_020027E8 *p, u32 prio); +u32 sub_02002824(u32 prio); +void sub_02002858(struct unk_020027E8 *p, s32 v); +s32 sub_02002860(struct unk_020027E8 *p); +bool8 sub_02002878(s32 v); +void sub_020028AC(void); +void sub_020028B0(OSMutex *mutex); +void sub_020028F8(OSMutex *mutex); +void sub_02002904(OSMutex *mutex); + +#endif diff --git a/include/main_02008194.h b/include/main_02008194.h new file mode 100644 index 00000000..bf8bf713 --- /dev/null +++ b/include/main_02008194.h @@ -0,0 +1,17 @@ +#ifndef PMDSKY_MAIN_02008194_H +#define PMDSKY_MAIN_02008194_H + +#include "file.h" + +struct unk_020AF360 { + u8 field_0x0[4]; + s32 field_0x4; +}; + +void FileRom_StopDataTransfer(void); +void sub_020081C8(void); +void sub_020081DC(void); +void sub_020081F0(void); +void FileRom_Veneer_FileInit(struct file_stream* file); + +#endif diff --git a/include/main_02009BE8.h b/include/main_02009BE8.h new file mode 100644 index 00000000..d4a660be --- /dev/null +++ b/include/main_02009BE8.h @@ -0,0 +1,15 @@ +#ifndef PMDSKY_MAIN_02009BE8_H +#define PMDSKY_MAIN_02009BE8_H + +void sub_02009BE8(u32 value, s32 flag); +void sub_02009C10(u32 value, s32 flag); +void sub_02009C38(u32 value); +void sub_02009C54(u32 value); +void sub_02009C70(u32 value); +void sub_02009C8C(u32 value); +void sub_02009CA8(u32 value, s32 flag); +void sub_02009CD0(u32 value, s32 flag); +void sub_02009CF8(u32 value, s32 flag); +void sub_02009D20(u32 value, s32 flag); + +#endif diff --git a/include/main_0200CA54.h b/include/main_0200CA54.h new file mode 100644 index 00000000..f605c92f --- /dev/null +++ b/include/main_0200CA54.h @@ -0,0 +1,12 @@ +#ifndef PMDSKY_MAIN_0200CA54_H +#define PMDSKY_MAIN_0200CA54_H + +#include "item.h" + +s16 GetDamageSource(s32 a, enum item_id item_id); +void sub_0200CA8C(void); +void sub_0200CABC(void); +void sub_0200CAD4(void); +void sub_0200CAE4(void); + +#endif diff --git a/include/main_02017B58.h b/include/main_02017B58.h index 0c21ffda..5f567a5c 100644 --- a/include/main_02017B58.h +++ b/include/main_02017B58.h @@ -1,7 +1,23 @@ #ifndef PMDSKY_MAIN_02017B58_H #define PMDSKY_MAIN_02017B58_H +#include "util.h" + void PlayBgmByIdVeneer(s32 bgm_id); void PlayBgmByIdVolumeVeneer(s32 bgm_id, s32 volume); +void sub_02017B70(void); +void sub_02017B7C(void); +void sub_02017B88(void); +bool8 sub_02017B94(s32 id); +void sub_02017BD4(void); +void sub_02017BE0(void); +void sub_02017BEC(void); +void sub_02017BF8(void); +void sub_02017C04(void); +bool8 IsMePlaying(s32 id); +void sub_02017C50(s32 a); +void sub_02017C5C(s32 a); +void sub_02017C68(s32 a); +void sub_02017C74(s32 se_id, s32 volume); #endif diff --git a/include/main_02017C80.h b/include/main_02017C80.h index 8b7a16bb..601d0eb0 100644 --- a/include/main_02017C80.h +++ b/include/main_02017C80.h @@ -2,5 +2,12 @@ #define PMDSKY_MAIN_02017C80_H void PlaySeByIdVolumeWrapper(s32 se_id); +void sub_02017C90(s32 a, s32 b, s32 c, s32 d); +void sub_02017C9C(s32 a, s32 b, s32 c); +void sub_02017CA8(s32 a, s32 b, s32 c); +void sub_02017CB4(s32 a); +void sub_02017CC0(s32 a, s32 b, s32 c, s32 d); +void PlaySeVolumeWrapper(s32 idx); +void sub_02017CEC(void); #endif diff --git a/include/main_0201BCCC.h b/include/main_0201BCCC.h new file mode 100644 index 00000000..0a2d3c2a --- /dev/null +++ b/include/main_0201BCCC.h @@ -0,0 +1,36 @@ +#ifndef PMDSKY_MAIN_0201BCCC_H +#define PMDSKY_MAIN_0201BCCC_H + +struct unk_oam_sub { + u8 field_0x0[0x70]; +}; + +struct unk_oam_elem { + u8 field_0x0[0x78]; + u8 field_0x78; + u8 field_0x79[0x23]; +}; + +struct unk_0201BCCC { + struct unk_oam_sub field_0x0[4]; + u8 field_0x1C0[0x1C08]; + struct unk_oam_elem field_0x1DC8[2]; +}; + +void sub_0201BCCC(s32 idx); +void sub_0201BCF4(s32 idx); +void sub_0201BD1C(u32 a, s32 idx); +void sub_0201BD50(s32 a, s32 idx); +void sub_0201BD80(s32 a, s32 b, s32 idx); +void CopyAttributesToOamBothScreens(void); +void sub_0201BDEC(void); +void sub_0201BE28(void); +void GroupOamAttributesBothScreens(void); +void sub_0201BE84(void); +void sub_0201BEB0(void); +void sub_0201BF10(void); +void sub_0201BF4C(void); +void sub_0201BF64(void); +void sub_0201BFAC(s32 a, s32 b, s32 c, s32 d, s32 idx); + +#endif diff --git a/include/main_0201E380.h b/include/main_0201E380.h index ffc1d0d3..934db7ea 100644 --- a/include/main_0201E380.h +++ b/include/main_0201E380.h @@ -1,8 +1,6 @@ #ifndef PMDSKY_MAIN_0201E380_H #define PMDSKY_MAIN_0201E380_H -#include "util.h" - struct unk_0201E380 { u8 field_0x0[0x18]; u16* field_0x18; diff --git a/include/main_0202613C.h b/include/main_0202613C.h new file mode 100644 index 00000000..7713abd0 --- /dev/null +++ b/include/main_0202613C.h @@ -0,0 +1,11 @@ +#ifndef PMDSKY_MAIN_0202613C_H +#define PMDSKY_MAIN_0202613C_H + +struct unk_02026130 { + u8 field_0x0[4]; + u8 field_0x4[4]; +}; + +void sub_0202613C(struct unk_02026130* p); + +#endif diff --git a/include/main_02026174.h b/include/main_02026174.h new file mode 100644 index 00000000..328e5607 --- /dev/null +++ b/include/main_02026174.h @@ -0,0 +1,15 @@ +#ifndef PMDSKY_MAIN_02026174_H +#define PMDSKY_MAIN_02026174_H + +#include "main_0202613C.h" + +void sub_02026174(struct unk_02026130* p); +void sub_02026184(struct unk_02026130* p); +void sub_02026194(struct unk_02026130* p); +void sub_020261A4(struct unk_02026130* p); +void sub_020261B4(struct unk_02026130* p); +void sub_020261C4(struct unk_02026130* p); +void sub_020261D4(struct unk_02026130* p); +void sub_020261E4(struct unk_02026130* p); + +#endif diff --git a/include/main_02027A80.h b/include/main_02027A80.h index fda53e68..686302b3 100644 --- a/include/main_02027A80.h +++ b/include/main_02027A80.h @@ -1,8 +1,6 @@ #ifndef PMDSKY_MAIN_02027A80_H #define PMDSKY_MAIN_02027A80_H -#include "util.h" - void sub_02027A08(s32 window_id, s32 value); void SetScreenWindowsColor(s32 color, s32 screen); void SetBothScreensWindowsColor(s32 color); diff --git a/include/main_02028284.h b/include/main_02028284.h index 3159dc55..341232a7 100644 --- a/include/main_02028284.h +++ b/include/main_02028284.h @@ -1,7 +1,6 @@ #ifndef PMDSKY_MAIN_02028284_H #define PMDSKY_MAIN_02028284_H -#include "util.h" #include "window.h" void sub_0202825C(s32 index, u16 value); diff --git a/include/main_02029EC8.h b/include/main_02029EC8.h index 2c459e5a..4860de7b 100644 --- a/include/main_02029EC8.h +++ b/include/main_02029EC8.h @@ -1,8 +1,6 @@ #ifndef PMDSKY_MAIN_02029EC8_H #define PMDSKY_MAIN_02029EC8_H -#include "util.h" - extern u8 PREV_MENU_ITEMS[0x18]; u32 Arm9LoadUnkFieldNa0x2029EC8(u32 i, u8 *unused); diff --git a/include/main_0202AAA8.h b/include/main_0202AAA8.h index a44f01d7..32805a1e 100644 --- a/include/main_0202AAA8.h +++ b/include/main_0202AAA8.h @@ -11,7 +11,11 @@ struct unk_0202AAA8 { u16 field_0x20; u8 field_0x22[0x7E]; s32 field_0xA0; - u8 field_0xA4[0xF4]; + u8 field_0xA4[0x54]; + u32 field_0xF8; + u8 field_0xFC[8]; + u32 field_0x104; + u8 field_0x108[0x90]; void *field_0x198; s32 field_0x19C; u8 field_0x1A0; diff --git a/include/main_0202B4C4.h b/include/main_0202B4C4.h index 3118297a..52894a38 100644 --- a/include/main_0202B4C4.h +++ b/include/main_0202B4C4.h @@ -6,5 +6,7 @@ void CloseSimpleMenu(s32 window_id); u32 IsSimpleMenuActive(s32 window_id); bool8 CheckSimpleMenuField0x1A0(s32 window_id); +s32 sub_0202B530(s32 window_id); +s32 sub_0202B544(s32 window_id); #endif diff --git a/include/main_0202C5E0.h b/include/main_0202C5E0.h index 4a898e9d..9222b419 100644 --- a/include/main_0202C5E0.h +++ b/include/main_0202C5E0.h @@ -1,7 +1,6 @@ #ifndef PMDSKY_MAIN_0202C5E0_H #define PMDSKY_MAIN_0202C5E0_H -#include "util.h" #include "main_0202AAA8.h" struct unk_0202C5E0 { diff --git a/include/main_0202C748.h b/include/main_0202C748.h index d6e9ec6f..89126de3 100644 --- a/include/main_0202C748.h +++ b/include/main_0202C748.h @@ -1,8 +1,6 @@ #ifndef PMDSKY_MAIN_0202C748_H #define PMDSKY_MAIN_0202C748_H -#include "util.h" - s32 GetWindowIdSelectedMenuItemIdx(s32 window_id); s32 sub_0202C75C(s32 window_id); diff --git a/include/main_020307A4.h b/include/main_020307A4.h index 55d39db2..f796de18 100644 --- a/include/main_020307A4.h +++ b/include/main_020307A4.h @@ -1,6 +1,10 @@ #ifndef PMDSKY_MAIN_020307A4_H #define PMDSKY_MAIN_020307A4_H +#include "util.h" + void SetAdvancedTextBoxField0x1C4(s32 window_id, u8 value); +void sub_020307B8(s32 window_id); +void sub_020307EC(s32 window_id); #endif diff --git a/include/main_0203083C.h b/include/main_0203083C.h index 4acdb52d..a995928c 100644 --- a/include/main_0203083C.h +++ b/include/main_0203083C.h @@ -1,8 +1,6 @@ #ifndef PMDSKY_MAIN_0203083C_H #define PMDSKY_MAIN_0203083C_H -#include "util.h" - void SetAdvancedTextBoxField0x1C2(s32 window_id); void CloseAdvancedTextBox2(s32 window_id); diff --git a/include/main_02030A18.h b/include/main_02030A18.h index fb5e9d81..09dadd64 100644 --- a/include/main_02030A18.h +++ b/include/main_02030A18.h @@ -1,8 +1,6 @@ #ifndef PMDSKY_MAIN_02030A18_H #define PMDSKY_MAIN_02030A18_H -#include "util.h" - s32 GetWindowIdPageStart(s32 window_id); void SetWindowTitle(s32 window_id, u16 title); diff --git a/include/main_02030A40.h b/include/main_02030A40.h index a3ea8f1f..cf06509f 100644 --- a/include/main_02030A40.h +++ b/include/main_02030A40.h @@ -1,6 +1,14 @@ #ifndef PMDSKY_MAIN_02030A40_H #define PMDSKY_MAIN_02030A40_H +struct unk_02030A50 { + u8 field_0x0[0xC0]; + s32 field_0xC0; +}; + s32 GetAdvancedTextBoxFlags2(s32 window_id); +void sub_02030A50(s32 window_id, s32 value); +s32 sub_02030A64(s32 window_id); +void sub_02030A74(s32 window_id, u32 flags); #endif diff --git a/include/main_02032558.h b/include/main_02032558.h index b4aaa3fe..def1b246 100644 --- a/include/main_02032558.h +++ b/include/main_02032558.h @@ -1,8 +1,6 @@ #ifndef PMDSKY_MAIN_02032558_H #define PMDSKY_MAIN_02032558_H -#include "util.h" - struct unk_02032558 { u8 field_0x0[0xBC]; s32 field_0xBC; diff --git a/include/main_020327CC.h b/include/main_020327CC.h new file mode 100644 index 00000000..b9eacbd0 --- /dev/null +++ b/include/main_020327CC.h @@ -0,0 +1,17 @@ +#ifndef PMDSKY_MAIN_020327CC_H +#define PMDSKY_MAIN_020327CC_H + +#include "main_020332AC.h" + +void sub_020327CC(struct unk_020332AC *m, s32 a, s32 b); +void sub_020327E4(struct unk_020332AC *m); +void sub_0203280C(struct unk_020332AC *m); +void sub_0203282C(struct unk_020332AC *m); +void sub_02032864(struct unk_020332AC *m); +void sub_02032894(struct unk_020332AC *m, s32 a); +s32 GetPageItemYOffset(struct unk_020332AC *m, s32 i); +s32 sub_020328F4(struct unk_020332AC *m); +s32 sub_02032918(struct unk_020332AC *m); +s32 sub_0203293C(struct unk_020332AC *m); + +#endif diff --git a/include/main_020332AC.h b/include/main_020332AC.h new file mode 100644 index 00000000..1c5564ab --- /dev/null +++ b/include/main_020332AC.h @@ -0,0 +1,36 @@ +#ifndef PMDSKY_MAIN_020332AC_H +#define PMDSKY_MAIN_020332AC_H + +struct unk_020332AC { + s32 field_0x0; + s32 field_0x4; + u8 field_0x8[8]; + u32 field_0x10; + u8 field_0x14[0xA0]; + s32 field_0xB4; + s32 field_0xB8; + s32 field_0xBC; + u8 field_0xC0[4]; + s32 field_0xC4; + s32 field_0xC8; + s32 field_0xCC; + s32 field_0xD0; + u8 field_0xD4[0x10]; + s32 field_0xE4; + s32 field_0xE8; + s32 field_0xEC; + s32 field_0xF0; +}; + +void InventoryMenuPreviousPage(struct unk_020332AC *m); +void InventoryMenuNext10Pages(struct unk_020332AC *m); +void InventoryMenuPrevious10Pages(struct unk_020332AC *m); +void sub_0203330C(struct unk_020332AC *m, s32 a); +s32 sub_02033350(struct unk_020332AC *m, s32 i); +s32 sub_0203336C(struct unk_020332AC *m); +s32 sub_02033390(struct unk_020332AC *m); +s32 sub_020333B4(struct unk_020332AC *m); +s32 sub_020333D8(struct unk_020332AC *m, s32 idx); +void sub_020333FC(struct unk_020332AC *m); + +#endif diff --git a/include/main_0203C910.h b/include/main_0203C910.h new file mode 100644 index 00000000..51da71b6 --- /dev/null +++ b/include/main_0203C910.h @@ -0,0 +1,30 @@ +#ifndef PMDSKY_MAIN_0203C910_H +#define PMDSKY_MAIN_0203C910_H + +#include "util.h" + +struct unk_020AFE70 { + u8 field_0x0[4]; + s16 field_0x4; + s16 field_0x6; + u16 field_0x8; + u8 field_0xA[2]; + s32 field_0xC; +}; + +struct unk_0209C7F4 { + void (*field_0x0[11])(void); +}; + +bool8 sub_0203C910(void); +s32 sub_0203C940(void); +void sub_0203C984(void); +s32 sub_0203C9A0(s16 a); +void sub_0203C9C4(void); +void sub_0203C9E4(void); +void sub_0203CA40(void); +void sub_0203CA6C(void); +void sub_0203CA90(void); +void sub_0203CACC(void); + +#endif diff --git a/include/main_02042AF8.h b/include/main_02042AF8.h index 9631504d..61a8818b 100644 --- a/include/main_02042AF8.h +++ b/include/main_02042AF8.h @@ -42,5 +42,7 @@ bool8 IsCollectionMenuActive(s8 a); bool8 IsCollectionMenuState3(s8 a); void ClearBagSelectedItemTable(void); +s32 sub_02042B20(void); +s32 sub_02042B50(void); #endif diff --git a/include/main_02043148.h b/include/main_02043148.h index 7ba25921..876490dc 100644 --- a/include/main_02043148.h +++ b/include/main_02043148.h @@ -1,7 +1,6 @@ #ifndef PMDSKY_MAIN_02043148_H #define PMDSKY_MAIN_02043148_H -#include "util.h" #include "main_02042AF8.h" void sub_02043148(s32 index); diff --git a/include/main_02043218.h b/include/main_02043218.h index 5c9a2b31..9f35bafd 100644 --- a/include/main_02043218.h +++ b/include/main_02043218.h @@ -1,7 +1,6 @@ #ifndef PMDSKY_MAIN_02043218_H #define PMDSKY_MAIN_02043218_H -#include "util.h" #include "main_02042AF8.h" void sub_02043218(void); diff --git a/include/main_020483B8.h b/include/main_020483B8.h new file mode 100644 index 00000000..e2c12285 --- /dev/null +++ b/include/main_020483B8.h @@ -0,0 +1,21 @@ +#ifndef PMDSKY_MAIN_020483B8_H +#define PMDSKY_MAIN_020483B8_H + +struct unk_020AFEF4 { + u8 field_0x0[0x31B2]; + u8 field_0x31B2; + u8 field_0x31B3[5]; + s16 field_0x31B8; +}; + +#include "util.h" + +void sub_020483B8(void); +bool8 sub_020483D8(void); +bool8 sub_02048400(void); +void sub_02048420(void); +void sub_02048430(void); +void sub_02048454(void); +bool8 sub_02048480(void); + +#endif diff --git a/include/main_02048B48.h b/include/main_02048B48.h new file mode 100644 index 00000000..4a4427c8 --- /dev/null +++ b/include/main_02048B48.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_MAIN_02048B48_H +#define PMDSKY_MAIN_02048B48_H + +void sub_02048B48(void); + +#endif diff --git a/include/main_02048BB4.h b/include/main_02048BB4.h new file mode 100644 index 00000000..c1129361 --- /dev/null +++ b/include/main_02048BB4.h @@ -0,0 +1,18 @@ +#ifndef PMDSKY_MAIN_02048BB4_H +#define PMDSKY_MAIN_02048BB4_H + +struct unk_020AFF38 { + char *field_0x0; + s32 field_0x4; +}; + +#include "util.h" + +char * ReadStringSave(char *dst); +bool8 CheckStringSave(const char *s); +s32 sub_02048BFC(void); +void sub_02048C0C(s32 v); +s32 sub_02048C3C(void); +void sub_02048C4C(s32 v); + +#endif diff --git a/include/main_02048CB8.h b/include/main_02048CB8.h new file mode 100644 index 00000000..552f87d5 --- /dev/null +++ b/include/main_02048CB8.h @@ -0,0 +1,16 @@ +#ifndef PMDSKY_MAIN_02048CB8_H +#define PMDSKY_MAIN_02048CB8_H + +struct unk_022AAE74 { + s32 field_0x0; + char field_0x4[0x20]; + s32 field_0x24; + s32 field_0x28; + u8 field_0x2C; + u8 field_0x2D; + u8 field_0x2E[2]; +}; + +s32 sub_02048CB8(void); + +#endif diff --git a/include/main_0204D188.h b/include/main_0204D188.h new file mode 100644 index 00000000..1ebe824c --- /dev/null +++ b/include/main_0204D188.h @@ -0,0 +1,27 @@ +#ifndef PMDSKY_MAIN_0204D188_H +#define PMDSKY_MAIN_0204D188_H + +#include "util.h" + +struct unk_020AFE60 { + u32 field_0x0[0x25]; + u32 field_0x94[1]; + u32 field_0x98[0x2A]; + u8 field_0x140[3]; + u8 field_0x143[0xB4]; + u8 field_0x1F7[1]; + u32 field_0x1F8; +}; + +bool8 GetMonsterFlag1(s16 id); +void SetMonsterFlag2(s16 id); +bool8 HasMonsterBeenAttackedInDungeons(s16 id); +void SetDungeonTipShown(s32 idx); +bool8 GetDungeonTipShown(s32 idx); +void SetMaxReachedFloor(u32 idx, u8 floor); +u8 GetMaxReachedFloor(u32 idx); +void IncrementNbAdventures(void); +u32 GetNbAdventures(void); +s32 CanMonsterSpawn(void); + +#endif diff --git a/include/main_0204F9B8.h b/include/main_0204F9B8.h new file mode 100644 index 00000000..0a153ebb --- /dev/null +++ b/include/main_0204F9B8.h @@ -0,0 +1,10 @@ +#ifndef PMDSKY_MAIN_0204F9B8_H +#define PMDSKY_MAIN_0204F9B8_H + +void sub_0204F9B8(void); +void sub_0204F9CC(void); +s32 sub_0204F9E0(void); +void sub_0204F9F4(s32 a); +void sub_0204FA0C(s32 a); + +#endif diff --git a/include/main_0204FA24.h b/include/main_0204FA24.h index 285fb17e..fafba261 100644 --- a/include/main_0204FA24.h +++ b/include/main_0204FA24.h @@ -2,8 +2,6 @@ #define PMDSKY_MAIN_0204FA24_H #include "adventure_log.h" -#include "util.h" - void SetAdventureLogStructLocation(void); void SetAdventureLogDungeonFloor(struct dungeon_floor_pair* floor); struct dungeon_floor_pair* GetAdventureLogDungeonFloor(void); diff --git a/include/main_0204FD3C.h b/include/main_0204FD3C.h index 5b203386..840e5b97 100644 --- a/include/main_0204FD3C.h +++ b/include/main_0204FD3C.h @@ -2,8 +2,6 @@ #define PMDSKY_MAIN_0204FD3C_H #include "adventure_log.h" -#include "util.h" - void IncrementNbEggsHatched(void); u32 GetNbEggsHatched(void); u32 GetNbPokemonJoined(void); diff --git a/include/main_0204FEB4.h b/include/main_0204FEB4.h index 7672ded4..1cc67163 100644 --- a/include/main_0204FEB4.h +++ b/include/main_0204FEB4.h @@ -2,8 +2,6 @@ #define PMDSKY_MAIN_0204FEB4_H #include "adventure_log.h" -#include "util.h" - u32 GetNbPokemonBattled(void); void IncrementNbBigTreasureWins(void); void SetNbBigTreasureWins(s32 value); diff --git a/include/main_020502B0.h b/include/main_020502B0.h index 83e15be9..2295575f 100644 --- a/include/main_020502B0.h +++ b/include/main_020502B0.h @@ -2,8 +2,6 @@ #define PMDSKY_MAIN_020502B0_H #include "adventure_log.h" -#include "util.h" - void IncrementNbFainted(void); u32 GetNbFainted(void); diff --git a/include/main_020503CC.h b/include/main_020503CC.h index 23e807e1..ebd77a1c 100644 --- a/include/main_020503CC.h +++ b/include/main_020503CC.h @@ -2,8 +2,6 @@ #define PMDSKY_MAIN_020503CC_H #include "adventure_log.h" -#include "util.h" - u32 GetNbItemAcquired(void); #endif diff --git a/include/main_020504A4.h b/include/main_020504A4.h index dc871d1f..d71a8230 100644 --- a/include/main_020504A4.h +++ b/include/main_020504A4.h @@ -2,8 +2,6 @@ #define PMDSKY_MAIN_020504A4_H #include "adventure_log.h" -#include "util.h" - u32 GetSentryDutyGamePoints(s32 index); #endif diff --git a/include/main_02051760.h b/include/main_02051760.h index 5ce60732..4ee0b6a0 100644 --- a/include/main_02051760.h +++ b/include/main_02051760.h @@ -6,5 +6,7 @@ bool8 IsSkyExclusiveDungeon(enum dungeon_id dungeon_id); bool32 JoinedAtRangeCheck2(u8 joined_at); +u8 sub_02051788(s32 i); +u8 sub_02051798(u8 v); #endif //PMDSKY_MAIN_02051760_H diff --git a/include/main_020568A4.h b/include/main_020568A4.h index a2d89675..77a6e168 100644 --- a/include/main_020568A4.h +++ b/include/main_020568A4.h @@ -1,8 +1,6 @@ #ifndef PMDSKY_MAIN_020568A4_H #define PMDSKY_MAIN_020568A4_H -#include "util.h" - u32 GetAppointedLeaderMemberIdx(void); s16 sub_020568DC(s32 team); diff --git a/include/main_02058C3C.h b/include/main_02058C3C.h index ab1685d5..2d7acff7 100644 --- a/include/main_02058C3C.h +++ b/include/main_02058C3C.h @@ -6,5 +6,7 @@ // Returns whether or not the tactic involves following the team leader. bool8 DoesTacticFollowLeader(enum tactic_id tactic_id); +void GetUnlockedTactics(u8 *out, s32 level); +void GetUnlockedTacticFlags(u8 *out, s32 level); #endif //PMDSKY_MAIN_02058C3C_H diff --git a/include/main_02058CD8.h b/include/main_02058CD8.h index 22a88d5d..b258a0b0 100644 --- a/include/main_02058CD8.h +++ b/include/main_02058CD8.h @@ -7,5 +7,6 @@ // Returns whether an IQ skill can be learned with a given IQ amount or not. // If the specified amount is 0, it always returns false. bool8 CanLearnIqSkill(s32 iq_amount, enum iq_skill_id iq_id); +s32 GetLearnableIqSkills(u8 *out, s16 monster_id, s32 iq); #endif //PMDSKY_MAIN_02058CD8_H diff --git a/include/main_02058E68.h b/include/main_02058E68.h index a9693f5b..6ed3759b 100644 --- a/include/main_02058E68.h +++ b/include/main_02058E68.h @@ -9,5 +9,7 @@ void DisableIqSkill(u32 *iq_skills_flags, s32 iq_id); void EnableIqSkill(u32 *iq_skills_flags, u32 iq_id); // Gets the th skill on the list of IQ skills that a given monster species can learn. enum iq_skill_id GetSpeciesIqSkill(s16 monster_id, u8 index); +void DisableAllIqSkills(u32 *flags); +void EnableAllLearnableIqSkills(u32 *flags, s16 monster_id, s32 iq); #endif //PMDSKY_MAIN_02058E68_H diff --git a/include/main_0205EC18.h b/include/main_0205EC18.h index 98d813bc..e6ac0ee1 100644 --- a/include/main_0205EC18.h +++ b/include/main_0205EC18.h @@ -1,6 +1,10 @@ #ifndef PMDSKY_MAIN_0205EC18_H #define PMDSKY_MAIN_0205EC18_H +#include "util.h" + void sub_0205EC18(u32 index); +u8 * sub_0205EC38(s32 i); +bool8 sub_0205EC50(s32 i); #endif //PMDSKY_MAIN_0205EC18_H diff --git a/include/main_02065B3C.h b/include/main_02065B3C.h index c02c2636..17d620ad 100644 --- a/include/main_02065B3C.h +++ b/include/main_02065B3C.h @@ -43,5 +43,8 @@ void SetRandomRequestNpcs1And2(enum monster_id random_request_npc01, enum monste void SetRandomRequestNpc03KindVar(enum monster_id kind); void SetAllEventNpcs(enum monster_id event_npc01, enum monster_id event_npc02, enum monster_id event_npc03, enum monster_id event_npc04); void SetNewFriendActor(enum monster_id new_friend); +void sub_02065BD8(u8 *dst, s32 n); +void sub_02065BF0(u8 *dst); +void sub_02065C08(u8 *src, s32 n); #endif diff --git a/include/main_02065C48.h b/include/main_02065C48.h index f13e446c..26428279 100644 --- a/include/main_02065C48.h +++ b/include/main_02065C48.h @@ -1,8 +1,6 @@ #ifndef PMDSKY_MAIN_02065C48_H #define PMDSKY_MAIN_02065C48_H -#include "util.h" - struct unk_020A68C8 { s16 field_0x0; s16 field_0x2; diff --git a/include/main_020663C8.h b/include/main_020663C8.h new file mode 100644 index 00000000..debebb53 --- /dev/null +++ b/include/main_020663C8.h @@ -0,0 +1,15 @@ +#ifndef PMDSKY_MAIN_020663C8_H +#define PMDSKY_MAIN_020663C8_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..3dc323d4 --- /dev/null +++ b/include/main_0206C0D8.h @@ -0,0 +1,20 @@ +#ifndef PMDSKY_MAIN_0206C0D8_H +#define PMDSKY_MAIN_0206C0D8_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..7bda23c3 --- /dev/null +++ b/include/overlay_00_022DB0E0.h @@ -0,0 +1,33 @@ +#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); +u32 Dwci_Acc_GetFlag_DataType(struct unk_022DB0E0 *a); +u32 Dwc_IsBuddyFriendData(struct unk_022DB0E0 *a); +u32 Dwci_IsBuddyFriendData(struct unk_022DB0E0 *a); +u32 Dwci_IsReverseBuddyFriendData(struct unk_022DB0E0 *a); +u32 Dwci_IsBuddyMsgAlreadySent(struct unk_022DB0E0 *a); +u32 Dwc_GetFriendDataType(struct unk_022DB0E0 *a); +void Dwci_Acc_SetFlags(struct unk_022DB0E0 *a, u32 v); +void Dwci_Acc_SetFlag_DataType(struct unk_022DB0E0 *a, u32 type); +void Dwci_SetBuddyFriendData(struct unk_022DB0E0 *a); +void Dwci_SetReverseBuddyFlag(struct unk_022DB0E0 *a, bool8 on); + +#endif diff --git a/include/overlay_00_0230E3E8.h b/include/overlay_00_0230E3E8.h new file mode 100644 index 00000000..d1198c61 --- /dev/null +++ b/include/overlay_00_0230E3E8.h @@ -0,0 +1,35 @@ +#ifndef PMDSKY_OVERLAY_00_0230E3E8_H +#define PMDSKY_OVERLAY_00_0230E3E8_H + +struct unk_0230E3E8 { + u32 field_0x0; + u16 field_0x4; + u8 field_0x6[6]; + s32 field_0xC; + u8 field_0x10[0x20]; + void *field_0x30; + u8 field_0x34[0xC]; + void *field_0x40; + u8 field_0x44[0x10]; + u32 field_0x54; + u32 field_0x58; +}; + +struct unk_0230E420 { + s32 field_0x0; + u32 field_0x4; + u16 field_0x8; +}; + +s32 Gt2GetConnectionState(struct unk_0230E3E8* c); +u32 Gt2GetRemoteIP(struct unk_0230E3E8* c); +u16 Gt2GetRemotePort(struct unk_0230E3E8* c); +u32 Gt2GetLocalIP(struct unk_0230E420* s); +u16 Gt2GetLocalPort(struct unk_0230E420* s); +u32 Gt2GetOutgoingBufferSize(struct unk_0230E3E8* c); +u32 Gt2GetOutgoingBufferFreeSpace(struct unk_0230E3E8* c); +s32 Gt2GetSocketSocket(struct unk_0230E420* s); +void Gt2SetUnrecognizedMessageCallback(struct unk_0230E3E8* c, void *callback); +void Gt2SetConnectionData(struct unk_0230E3E8* c, void *data); + +#endif diff --git a/include/overlay_01_0233755C.h b/include/overlay_01_0233755C.h new file mode 100644 index 00000000..937bff44 --- /dev/null +++ b/include/overlay_01_0233755C.h @@ -0,0 +1,17 @@ +#ifndef PMDSKY_OVERLAY_01_0233755C_H +#define PMDSKY_OVERLAY_01_0233755C_H + +#include "main_020348E4.h" + +void ov01_0233755C(void); +u32 ov01_0233758C(void); +s32 ov01_023375A0(void); +void ov01_023375B0(s32 a); +s8 ov01_023375C0(s32 i); +void ov01_023375D0(s32 i, s8 v); +u32 ov01_023375E0(void); +void ov01_023375F4(void); +s8 ov01_02337614(s32 i); +void ov01_02337624(s32 i, s8 v); + +#endif diff --git a/include/overlay_04_0233CA80.h b/include/overlay_04_0233CA80.h new file mode 100644 index 00000000..816ed80b --- /dev/null +++ b/include/overlay_04_0233CA80.h @@ -0,0 +1,20 @@ +#ifndef PMDSKY_OVERLAY_04_0233CA80_H +#define PMDSKY_OVERLAY_04_0233CA80_H + +struct unk_0233F660 { + s32 field_0x0; + s32 field_0x4; + u8 field_0x8[4]; + u8 field_0xC; + u8 field_0xD[3]; +}; + +void ov04_0233CA80(void); +void ov04_0233CA98(s32 a); +s32 ov04_0233CAA8(void); +void ov04_0233CAB8(s32 a); +s32 ov04_0233CAC8(void); +void ov04_0233CAD8(u8 a); +u8 ov04_0233CAE8(void); + +#endif diff --git a/include/overlay_06_0233CA80.h b/include/overlay_06_0233CA80.h new file mode 100644 index 00000000..7404af06 --- /dev/null +++ b/include/overlay_06_0233CA80.h @@ -0,0 +1,13 @@ +#ifndef PMDSKY_OVERLAY_06_0233CA80_H +#define PMDSKY_OVERLAY_06_0233CA80_H + +struct unk_0233EEE0 { + s32 field_0x0; + u8 field_0x4[8]; +}; + +void ov06_0233CA80(void); +void ov06_0233CA98(s32 a); +s32 ov06_0233CAA8(void); + +#endif diff --git a/include/overlay_10_022BCC60.h b/include/overlay_10_022BCC60.h index b1dd2621..0d260416 100644 --- a/include/overlay_10_022BCC60.h +++ b/include/overlay_10_022BCC60.h @@ -1,6 +1,18 @@ #ifndef PMDSKY_OVERLAY_10_022BCC60_H #define PMDSKY_OVERLAY_10_022BCC60_H +#include "util.h" + void ov10_022BCC60(u32 unused, u32 r1); +void ov10_022BCC7C(s32 window_id); +void ov10_022BCCB0(s32 window_id); +void SetInventoryMenuState0(s32 window_id); +void SetInventoryMenuState6(s32 window_id); +void CloseInventoryMenu(s32 window_id); +bool8 ov10_022BCD10(s32 window_id); +s32 IsInventoryMenuActive(s32 window_id); +bool8 CheckInventoryMenuField0x1A0(s32 window_id); +void ov10_022BCDA8(s32 window_id); +s32 ov10_022BCDBC(s32 window_id); #endif //PMDSKY_OVERLAY_10_022BCC60_H diff --git a/include/overlay_10_022BFD58.h b/include/overlay_10_022BFD58.h new file mode 100644 index 00000000..1eecc2a1 --- /dev/null +++ b/include/overlay_10_022BFD58.h @@ -0,0 +1,42 @@ +#ifndef PMDSKY_OVERLAY_10_022BFD58_H +#define PMDSKY_OVERLAY_10_022BFD58_H + +#include "util.h" + +struct unk_022DC1C4 { s32 field_0x0; u8 field_0x4[0x80]; }; + +struct unk_022DC1C0 { u8 field_0x0[0x27A0]; bool8 field_0x27A0; }; + +struct anim_06 { u8 x[6]; }; + +struct anim_1C { u8 x[0x1C]; }; + +struct move_anim_info { + s32 field_0x0; + u8 field_0x4[4]; + u8 field_0x8; + u8 field_0x9[0xF]; +}; + +u8 ov10_022BFD58(s32 move_id); +bool8 ov10_022BFD6C(s32 move_id); +bool8 ov10_022BFD8C(s32 move_id); +bool8 ov10_022BFDAC(s32 move_id); +bool8 ov10_022BFDCC(s32 move_id); +s32 ov10_022BFDEC(s32 a); +u16 ov10_022BFE0C(s32 a); +u16 ov10_022BFE18(s32 a); +u16 ov10_022BFE28(s32 a); +bool8 ov10_022BFE3C(u32 a); +bool8 ov10_022BFE54(u32 a); +bool8 ov10_022BFE6C(s32 a); +struct anim_1C* GetEffectAnimation(s32 id); +struct move_anim_info* GetMoveAnimation(s32 move_id); +struct anim_06* GetSpecialMonsterMoveAnimation(s32 id); +s16 GetTrapAnimation(s32 trap_id); +s16 GetItemAnimation1(s32 item_id); +s16 GetItemAnimation2(s32 item_id); +s32 GetMoveAnimationSpeed(s32 move_id); +void ov10_022BFF30(s32 a); + +#endif diff --git a/include/overlay_11_022E45C4.h b/include/overlay_11_022E45C4.h new file mode 100644 index 00000000..367631ef --- /dev/null +++ b/include/overlay_11_022E45C4.h @@ -0,0 +1,17 @@ +#ifndef PMDSKY_OVERLAY_11_022E45C4_H +#define PMDSKY_OVERLAY_11_022E45C4_H + +#include "file.h" + +void ov11_022E45C4(void); +void ov11_022E45DC(void); +void ov11_022E45F4(s8 *p); +void ov11_022E4600(s8 *dst, s8 *src); +s32 ov11_022E4630(s8 *p); +s32 ov11_022E465C(s8 *a, char *b); +void ov11_022E466C(s8 *src, s8 *dst); +void ov11_022E469C(s8 *src, s8 *dst); +void LoadFileFromRomVeneer(struct iovec *iov, const char *filepath, u32 flags); +s32 ov11_022E46E8(struct iovec *iov, const char *filepath); + +#endif diff --git a/include/overlay_11_022E7F28.h b/include/overlay_11_022E7F28.h new file mode 100644 index 00000000..38627e02 --- /dev/null +++ b/include/overlay_11_022E7F28.h @@ -0,0 +1,23 @@ +#ifndef PMDSKY_OVERLAY_11_022E7F28_H +#define PMDSKY_OVERLAY_11_022E7F28_H + +struct unk_C_ROUTINES { + u8 field_0x0[8]; +}; + +struct unk_02320904 { + s16 field_0x0; + s16 field_0x2; +}; + +struct unk_02324FA0 { + u16 *field_0x0; + u16 *field_0x4; +}; + +void ov11_022E7F28(void); +void ov11_022E7F34(void); +void ov11_022E7F80(void); +struct unk_C_ROUTINES * ov11_022E7FA8(s32 idx); + +#endif diff --git a/include/overlay_11_022E8024.h b/include/overlay_11_022E8024.h new file mode 100644 index 00000000..9c40e962 --- /dev/null +++ b/include/overlay_11_022E8024.h @@ -0,0 +1,10 @@ +#ifndef PMDSKY_OVERLAY_11_022E8024_H +#define PMDSKY_OVERLAY_11_022E8024_H + +void ov11_022E8024(void); +void ov11_022E8038(void); +s16 GetSpecialRecruitmentSpecies(s32 idx); +s16 ov11_022E8050(s16 id); +void PrepareMenuAcceptTeamMember(s16 id); + +#endif diff --git a/include/overlay_11_022E96E4.h b/include/overlay_11_022E96E4.h index 7b9b957e..34bdfa06 100644 --- a/include/overlay_11_022E96E4.h +++ b/include/overlay_11_022E96E4.h @@ -1,8 +1,6 @@ #ifndef PMDSKY_OVERLAY_11_022E96E4_H #define PMDSKY_OVERLAY_11_022E96E4_H -#include "util.h" - u8 ov11_022E96E4(void); #endif diff --git a/include/overlay_11_022E9A78.h b/include/overlay_11_022E9A78.h new file mode 100644 index 00000000..35e7a695 --- /dev/null +++ b/include/overlay_11_022E9A78.h @@ -0,0 +1,48 @@ +#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; + s32 field_0x4; + s32 field_0x8; + s32 field_0xC; +}; + +struct unk_023890A0 { + u8 field_0x0[0x14]; + s16 field_0x14; + u8 field_0x16[0x2E]; +}; + +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); +void ov11_022E9B84(s32 a); +void ov11_022E9BD0(s32 a); +void ov11_022E9C20(s32 a); +void ov11_022E9C70(s32 a, s32 b, s32 c); +void ov11_022E9C98(s32 a); +void ov11_022E9CB0(s32 a); +void ov11_022E9CCC(s32 a); +void ov11_022E9CE8(s32 a, s32 b, s32 c); +void ov11_022E9D10(s32 a); +void ov11_022E9D44(s32 a, s32 b, s32 c); +void ov11_022E9D6C(s32 a, s32 b, s32 c); +void ov11_022E9D94(s32 a, s32 b, s32 c); +void ov11_022E9DBC(s32 a, s32 b, s32 c); +void ov11_022E9DE4(s32 idx, u16 a, s32 b); +void ov11_022E9E2C(s32 idx, u16 a, s32 b); + +#endif diff --git a/include/overlay_11_022E9E74.h b/include/overlay_11_022E9E74.h new file mode 100644 index 00000000..6d4d18bb --- /dev/null +++ b/include/overlay_11_022E9E74.h @@ -0,0 +1,21 @@ +#ifndef PMDSKY_OVERLAY_11_022E9E74_H +#define PMDSKY_OVERLAY_11_022E9E74_H + +#include "util.h" + +struct unk_0238916C { + u8 field_0x0[0x44]; +}; + +void ov11_022E9E74(s32 idx, u16 a, s32 b); +void ov11_022E9EBC(s32 idx, u16 a, s32 b); +s32 ov11_022E9EFC(void); +s32 ov11_022E9F48(void); +s32 IsScreenFadeInProgress(void); +bool8 ov11_022E9FA4(s32 idx); +s32 ov11_022E9FC8(s32 a); +s16 ov11_022E9FF4(void); +s16 ov11_022EA004(void); +s16 ov11_022EA014(void); + +#endif diff --git a/include/overlay_11_022FAB44.h b/include/overlay_11_022FAB44.h new file mode 100644 index 00000000..2d0762b7 --- /dev/null +++ b/include/overlay_11_022FAB44.h @@ -0,0 +1,36 @@ +#ifndef PMDSKY_OVERLAY_11_022FAB44_H +#define PMDSKY_OVERLAY_11_022FAB44_H + +struct unk_022FAB44 { + u16 field_0x0; + u8 field_0x2[8]; + s16 field_0xA; + u8 field_0xC[0x11C]; + s32 field_0x128; + u8 field_0x12C[0x2E]; + s8 field_0x15A; + u8 field_0x15B[0x11]; + s32 field_0x16C; + u8 field_0x170[4]; + u8 field_0x174; + s8 field_0x175; + u8 field_0x176[0xC]; + u16 field_0x182; + s16 field_0x184; + u8 field_0x186[2]; + s32 field_0x188; + u8 field_0x18C[4]; +}; + +void SetHeightLiveActor(struct unk_022FAB44 *actor, s32 height); +void GetDirectionLiveActor(struct unk_022FAB44 *actor, s8 *dir); +void SetDirectionLiveActor(struct unk_022FAB44 *actor, s8 dir); +void SetAnimationLiveActor(struct unk_022FAB44 *actor, u16 anim); +void SetEffectLiveActor(struct unk_022FAB44 *actor, u16 a, u16 b, s32 c); +s32 GetAnimationStatusLiveActor(struct unk_022FAB44 *actor); +s32 GetEffectStatusLiveActor(struct unk_022FAB44 *actor); +void GetAttributeBitfieldLiveActor(struct unk_022FAB44 *actor, s32 *out); +void SetAttributeBitfieldLiveActorWrapper(struct unk_022FAB44 *actor, u32 mask); +void ResetAttributeBitfieldLiveActorWrapper(struct unk_022FAB44 *actor, u32 mask); + +#endif diff --git a/include/overlay_11_022FD1A0.h b/include/overlay_11_022FD1A0.h new file mode 100644 index 00000000..786f63bb --- /dev/null +++ b/include/overlay_11_022FD1A0.h @@ -0,0 +1,32 @@ +#ifndef PMDSKY_OVERLAY_11_022FD1A0_H +#define PMDSKY_OVERLAY_11_022FD1A0_H + +struct unk_022FD1A0 { + u8 field_0x0[4]; + s16 field_0x4; + u8 field_0x6[0x126]; + s32 field_0x12C; + s8 field_0x130; + u8 field_0x131[0x13]; + s32 field_0x144; + u8 field_0x148[4]; + u8 field_0x14C; + u8 field_0x14D; + s16 field_0x14E; + u16 field_0x150; + s16 field_0x152; + u8 field_0x154[4]; +}; + +void SetHeightLiveObject(struct unk_022FD1A0 *obj, s32 height); +void GetDirectionLiveObject(struct unk_022FD1A0 *obj, s8 *dir); +void SetDirectionLiveObject(struct unk_022FD1A0 *obj, s8 dir); +void SetAnimationLiveObject(struct unk_022FD1A0 *obj, u16 anim); +void SetEffectLiveObject(struct unk_022FD1A0 *obj, u16 a, u16 b); +s32 GetAnimationStatusLiveObject(struct unk_022FD1A0 *obj); +s32 GetEffectStatusLiveObject(struct unk_022FD1A0 *obj); +void GetAttributeBitfieldLiveObject(struct unk_022FD1A0 *obj, s32 *out); +void SetAttributeBitfieldLiveObjectWrapper(struct unk_022FD1A0 *obj, u32 mask); +void ResetAttributeBitfieldLiveObjectWrapper(struct unk_022FD1A0 *obj, u32 mask); + +#endif diff --git a/include/overlay_11_022FE490.h b/include/overlay_11_022FE490.h new file mode 100644 index 00000000..e8730493 --- /dev/null +++ b/include/overlay_11_022FE490.h @@ -0,0 +1,40 @@ +#ifndef PMDSKY_OVERLAY_11_022FE490_H +#define PMDSKY_OVERLAY_11_022FE490_H + +struct unk_022FE498 { + s32 field_0x0; + s32 field_0x4; +}; + +struct unk_022FE490 { + u8 field_0x0[4]; + s16 field_0x4; + u8 field_0x6[0xA]; + s32 field_0x10; + s32 field_0x14; + s32 field_0x18; + s32 field_0x1C; + s8 field_0x20; + u8 field_0x21[3]; + s32 field_0x24; + s32 field_0x28; + s32 field_0x2C; + s32 field_0x30; + s32 field_0x34; + s32 field_0x38; + u8 field_0x3C[0xF0]; + s8 field_0x12C; + u8 field_0x12D[3]; + s32 field_0x130; + s32 field_0x134; + s32 field_0x138; + s32 field_0x13C; + s32 field_0x140; + s32 field_0x144; + u8 field_0x148; +}; + +s16 GetIdLivePerformer(struct unk_022FE490 *p); +void GetCollisionBoxLivePerformer(struct unk_022FE490 *p, struct unk_022FE498 *out); + +#endif diff --git a/include/overlay_11_022FE58C.h b/include/overlay_11_022FE58C.h new file mode 100644 index 00000000..1bbb1bdd --- /dev/null +++ b/include/overlay_11_022FE58C.h @@ -0,0 +1,15 @@ +#ifndef PMDSKY_OVERLAY_11_022FE58C_H +#define PMDSKY_OVERLAY_11_022FE58C_H + +#include "overlay_11_022FE490.h" + +void SetMovementRangeLivePerformer(struct unk_022FE490 *p, struct unk_022FE498 *a, + struct unk_022FE498 *b); +void GetCollisionBoxCenterLivePerformer(struct unk_022FE490 *p, struct unk_022FE498 *out); +void SetPositionLivePerformerVeneer(struct unk_022FE490 *p, struct unk_022FE498 *v); +void GetHeightLivePerformer(struct unk_022FE490 *p, s32 *a, s32 *b); +void SetHeightLivePerformer(struct unk_022FE490 *p, s32 h); +void GetDirectionLivePerformer(struct unk_022FE490 *p, s8 *dir); +void SetDirectionLivePerformer(struct unk_022FE490 *p, s8 dir); + +#endif diff --git a/include/overlay_11_0230CB88.h b/include/overlay_11_0230CB88.h new file mode 100644 index 00000000..8c7f974d --- /dev/null +++ b/include/overlay_11_0230CB88.h @@ -0,0 +1,24 @@ +#ifndef PMDSKY_OVERLAY_11_0230CB88_H +#define PMDSKY_OVERLAY_11_0230CB88_H + +struct unk_0238A098 { + u32 field_0x0[38]; +}; + +#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); +bool8 IsRecycleShopOverlaySuspended(void); +s32 ov11_0230CCF0(struct unk_0238A098 *dst); + +#endif diff --git a/include/overlay_11_0230CD48.h b/include/overlay_11_0230CD48.h new file mode 100644 index 00000000..b7fc37dc --- /dev/null +++ b/include/overlay_11_0230CD48.h @@ -0,0 +1,17 @@ +#ifndef PMDSKY_OVERLAY_11_0230CD48_H +#define PMDSKY_OVERLAY_11_0230CD48_H + +#include "main_020348E4.h" + +u32 LoadCroagunkSwapShopOverlay(void); +void LoadKecleonShopOverlay(s32 a); +u32 LoadKangaskhanOverlay(s32 a); +u32 LoadChanseyDaycareOverlay(void); +u32 LoadXatuAppraisalOverlay(void); +u32 LoadRecycleShopOverlay(void); +u32 LoadRuleDungeonEffectsOverlay(void); +u32 ov11_0230CDF4(void); +u32 ov11_0230CE08(void); +u32 ov11_0230CE1C(void); + +#endif diff --git a/include/overlay_16_0238CC94.h b/include/overlay_16_0238CC94.h new file mode 100644 index 00000000..29915e04 --- /dev/null +++ b/include/overlay_16_0238CC94.h @@ -0,0 +1,18 @@ +#ifndef PMDSKY_OVERLAY_16_0238CC94_H +#define PMDSKY_OVERLAY_16_0238CC94_H + +struct unk_0238CE40 { + u8 field_0x0[0xD8]; + s32 field_0xD8; + s16 field_0xDC; + s16 field_0xDE; + s32 field_0xE0; +}; + +s16 ov16_0238CC94(void); +s16 ov16_0238CCA8(void); +s32 ov16_0238CCBC(void); +void ov16_0238CCD8(void); +void ov16_0238CCF0(void); + +#endif diff --git a/include/overlay_17_0238B10C.h b/include/overlay_17_0238B10C.h new file mode 100644 index 00000000..f09813dd --- /dev/null +++ b/include/overlay_17_0238B10C.h @@ -0,0 +1,26 @@ +#ifndef PMDSKY_OVERLAY_17_0238B10C_H +#define PMDSKY_OVERLAY_17_0238B10C_H + +struct unk_0238BE00 { + u8 field_0x0[2]; + s8 field_0x2; + u8 field_0x3[0x69]; + s32 field_0x6C; + u8 field_0x70[8]; + s32 field_0x78; + u8 field_0x7C[2]; + s16 field_0x7E; +}; + +void ov17_0238B10C(void); +void ov17_0238B194(void); +void ov17_0238B1B8(void); +void ov17_0238B1E8(void); +void ov17_0238B20C(void); +void ov17_0238B224(void); +void ov17_0238B23C(void); +void ov17_0238B260(void); +void ov17_0238B278(void); +void ov17_0238B290(void); + +#endif diff --git a/include/overlay_18_0238BF60.h b/include/overlay_18_0238BF60.h new file mode 100644 index 00000000..e5bdbc4e --- /dev/null +++ b/include/overlay_18_0238BF60.h @@ -0,0 +1,15 @@ +#ifndef PMDSKY_OVERLAY_18_0238BF60_H +#define PMDSKY_OVERLAY_18_0238BF60_H + +void ov18_0238BF60(void); +void ov18_0238BF84(void); +void ov18_0238BFA8(void); +void ov18_0238C03C(void); +void ov18_0238C060(void); +void ov18_0238C078(void); +void ov18_0238C09C(void); +void ov18_0238C0C0(void); +void ov18_0238C0D8(void); +void ov18_0238C0FC(void); + +#endif diff --git a/include/overlay_18_0238C950.h b/include/overlay_18_0238C950.h new file mode 100644 index 00000000..3c3edcb5 --- /dev/null +++ b/include/overlay_18_0238C950.h @@ -0,0 +1,27 @@ +#ifndef PMDSKY_OVERLAY_18_0238C950_H +#define PMDSKY_OVERLAY_18_0238C950_H + +struct unk_0238C950 { + u8 field_0x0[4]; + s8 field_0x4; + u8 field_0x5[0x7B]; + s32 field_0x80; + s32 field_0x84; + s32 field_0x88; + s16 field_0x8C; + u8 field_0x8E[0x2FE]; + s16 field_0x38C; +}; + +void ov18_0238C950(void); +void ov18_0238C974(void); +void ov18_0238C984(void); +void ov18_0238C9A8(void); +void ov18_0238C9B8(void); +void ov18_0238CA18(void); +void ov18_0238CA3C(void); +void ov18_0238CA4C(void); +void ov18_0238CA70(void); +void ov18_0238CA80(void); + +#endif diff --git a/include/overlay_29_022DC61C.h b/include/overlay_29_022DC61C.h index 20be6aba..b0a96941 100644 --- a/include/overlay_29_022DC61C.h +++ b/include/overlay_29_022DC61C.h @@ -3,5 +3,7 @@ // mem init? void ov29_022DC61C(); +void ov29_022DC65C(void); +void ov29_022DC670(void); #endif //PMDSKY_OVERLAY_29_022DC61C_H diff --git a/include/overlay_29_022DC684.h b/include/overlay_29_022DC684.h index 5d4e602c..87262370 100644 --- a/include/overlay_29_022DC684.h +++ b/include/overlay_29_022DC684.h @@ -1,10 +1,32 @@ #ifndef PMDSKY_OVERLAY_29_022DC684_H #define PMDSKY_OVERLAY_29_022DC684_H +struct unk_02353518 { + u8 field_0x0[4]; + u8 field_0x4; + u8 field_0x5[3]; + s32 field_0x8; + u8 field_0xC[0x44]; +}; + +struct unk_022DC694 { + u32 field_0x0[5]; +}; + #include "dungeon_mode.h" #include "item.h" #include "move.h" void ov29_022DC684(s32 a); +void ov29_022DC694(s32 a, s32 b); +void ov29_022DC6D0(void); +void ov29_022DC6DC(void); +void ov29_022DC6E8(s32 a, s32 b, s32 c, s32 d, u8 e, s16 f, s16 g, s16 h, s16 i, u8 j); +void ov29_022DC728(void); +void ov29_022DC738(s32 a, s32 b); +void ov29_022DC76C(void); +void ov29_022DC778(void); +void ov29_022DC77C(void); +u8 * ov29_022DC78C(s32 id); #endif diff --git a/include/overlay_29_022E1610.h b/include/overlay_29_022E1610.h index 010a6a1e..7d6160a7 100644 --- a/include/overlay_29_022E1610.h +++ b/include/overlay_29_022E1610.h @@ -5,5 +5,7 @@ // Given an item entity, returns the pointer to the item info struct it contains. struct item* GetItemInfo(struct entity *item_entity); +void * ov29_022E1618(struct entity *entity); +void * ov29_022E1620(struct entity *entity); #endif //PMDSKY_OVERLAY_29_022E1610_H diff --git a/include/overlay_29_022E3F20.h b/include/overlay_29_022E3F20.h new file mode 100644 index 00000000..aa0064c4 --- /dev/null +++ b/include/overlay_29_022E3F20.h @@ -0,0 +1,17 @@ +#ifndef PMDSKY_OVERLAY_29_022E3F20_H +#define PMDSKY_OVERLAY_29_022E3F20_H + +#include "dungeon_mode.h" + +void ov29_022E3F20(void); +void ov29_022E3F24(struct entity *entity); +void ov29_022E3F74(void); +void ov29_022E3F78(void); +void ov29_022E3F7C(struct entity *entity); +void ov29_022E3FC8(void); +void ov29_022E3FCC(struct entity *entity); +void ov29_022E4014(void); +void PlayEffectAnimation0x171Full(struct entity *entity); +void ov29_022E4068(void); + +#endif diff --git a/include/overlay_29_022E406C.h b/include/overlay_29_022E406C.h new file mode 100644 index 00000000..582b99b6 --- /dev/null +++ b/include/overlay_29_022E406C.h @@ -0,0 +1,17 @@ +#ifndef PMDSKY_OVERLAY_29_022E406C_H +#define PMDSKY_OVERLAY_29_022E406C_H + +#include "dungeon_mode.h" + +void PlayEffectAnimation0x171(struct entity *entity); +void ov29_022E40B8(void); +void ov29_022E40BC(void); +void ov29_022E40C0(struct entity *entity); +void ov29_022E4108(void); +void ov29_022E410C(void); +void ov29_022E4110(struct entity *entity); +void ov29_022E415C(void); +void ov29_022E4160(struct entity *entity); +void ov29_022E41AC(void); + +#endif diff --git a/include/overlay_29_022E4338.h b/include/overlay_29_022E4338.h new file mode 100644 index 00000000..47ecf5e3 --- /dev/null +++ b/include/overlay_29_022E4338.h @@ -0,0 +1,17 @@ +#ifndef PMDSKY_OVERLAY_29_022E4338_H +#define PMDSKY_OVERLAY_29_022E4338_H + +#include "dungeon_mode.h" + +void ov29_022E4338(struct entity *entity); +void ov29_022E4388(struct entity *entity); +void ov29_022E43D8(struct entity *entity); +void ov29_022E4428(void); +void ov29_022E442C(void); +void ov29_022E4430(struct entity *entity); +void ov29_022E4480(struct entity *entity); +void PlaySpeedUpEffect(struct entity *entity); +void PlaySpeedDownEffect(struct entity *entity); +void ov29_022E456C(struct entity *entity); + +#endif diff --git a/include/overlay_29_022E4704.h b/include/overlay_29_022E4704.h index fe370904..dbb64ba3 100644 --- a/include/overlay_29_022E4704.h +++ b/include/overlay_29_022E4704.h @@ -6,5 +6,15 @@ #include "move.h" void PlayInvisifySeIfShouldDisplayEntity(struct entity *entity); +void ov29_022E4714(void); +void ov29_022E4718(void); +void ov29_022E471C(struct entity *entity); +void ov29_022E476C(struct entity *entity); +void ov29_022E47B8(void); +void ov29_022E47BC(void); +void ov29_022E47C0(void); +void ov29_022E47C4(void); +void ov29_022E47C8(void); +void ov29_022E47CC(struct entity *entity, s32 id); #endif diff --git a/include/overlay_29_022E66C4.h b/include/overlay_29_022E66C4.h index fe14943a..25080519 100644 --- a/include/overlay_29_022E66C4.h +++ b/include/overlay_29_022E66C4.h @@ -6,5 +6,7 @@ #include "move.h" void ov29_022E66C4(struct entity *entity); +void ov29_022E66D8(struct entity *entity); +void ov29_022E6724(struct entity *entity); #endif diff --git a/include/overlay_29_022E9FC0.h b/include/overlay_29_022E9FC0.h index 086ccc14..57171a5f 100644 --- a/include/overlay_29_022E9FC0.h +++ b/include/overlay_29_022E9FC0.h @@ -1,8 +1,6 @@ #ifndef PMDSKY_OVERLAY_29_022E9FC0_H #define PMDSKY_OVERLAY_29_022E9FC0_H -#include "util.h" - u8 ov29_022E9FC0(void); void ov29_022E9FD0(u8 value); diff --git a/include/overlay_29_022EA968.h b/include/overlay_29_022EA968.h index 71b4b60c..80d1c8da 100644 --- a/include/overlay_29_022EA968.h +++ b/include/overlay_29_022EA968.h @@ -1,8 +1,6 @@ #ifndef PMDSKY_OVERLAY_29_022EA968_H #define PMDSKY_OVERLAY_29_022EA968_H -#include "util.h" - void SetDungeonRngPreseed23Bit(u32 preseed); u32 GenerateDungeonRngSeed(void); diff --git a/include/overlay_29_022EA9CC.h b/include/overlay_29_022EA9CC.h index ba80661e..8de38059 100644 --- a/include/overlay_29_022EA9CC.h +++ b/include/overlay_29_022EA9CC.h @@ -1,8 +1,6 @@ #ifndef PMDSKY_OVERLAY_29_022EA9CC_H #define PMDSKY_OVERLAY_29_022EA9CC_H -#include "util.h" - u32 GetDungeonRngPreseed(void); void SetDungeonRngPreseed(u32 preseed); diff --git a/include/overlay_29_022EAC34.h b/include/overlay_29_022EAC34.h index 1565f094..59328685 100644 --- a/include/overlay_29_022EAC34.h +++ b/include/overlay_29_022EAC34.h @@ -1,8 +1,6 @@ #ifndef PMDSKY_OVERLAY_29_022EAC34_H #define PMDSKY_OVERLAY_29_022EAC34_H -#include "util.h" - void DungeonRngUnsetSecondary(void); void DungeonRngSetSecondary(s32 idx); void DungeonRngSetPrimary(void); diff --git a/include/overlay_29_022EAC7C.h b/include/overlay_29_022EAC7C.h index ee159192..bde40a82 100644 --- a/include/overlay_29_022EAC7C.h +++ b/include/overlay_29_022EAC7C.h @@ -1,8 +1,6 @@ #ifndef PMDSKY_OVERLAY_29_022EAC7C_H #define PMDSKY_OVERLAY_29_022EAC7C_H -#include "util.h" - void PlayLevelUpSound(void); void PlayDungeonTipSound__022EB63C(void); void ov29_022EAC9C(void); diff --git a/include/overlay_29_022EAE14.h b/include/overlay_29_022EAE14.h index ce447523..8376e8d5 100644 --- a/include/overlay_29_022EAE14.h +++ b/include/overlay_29_022EAE14.h @@ -2,8 +2,6 @@ #define PMDSKY_OVERLAY_29_022EAE14_H #include "dungeon.h" -#include "util.h" - void ChangeDungeonMusic(enum music_id music); #endif diff --git a/include/overlay_29_022ED01C.h b/include/overlay_29_022ED01C.h index 898c9f65..4682ca01 100644 --- a/include/overlay_29_022ED01C.h +++ b/include/overlay_29_022ED01C.h @@ -2,8 +2,6 @@ #define PMDSKY_OVERLAY_29_022ED01C_H #include "dungeon.h" -#include "util.h" - void SetForcedLossReason(enum forced_loss_reason reason); enum forced_loss_reason GetForcedLossReason(void); diff --git a/include/overlay_29_022ED868.h b/include/overlay_29_022ED868.h index 6b28b12c..00e4ccc9 100644 --- a/include/overlay_29_022ED868.h +++ b/include/overlay_29_022ED868.h @@ -2,8 +2,6 @@ #define PMDSKY_OVERLAY_29_022ED868_H #include "dungeon.h" -#include "util.h" - s32 AreLateGameTrapsEnabledWrapper(void); #endif diff --git a/include/overlay_29_022F0590.h b/include/overlay_29_022F0590.h index aa76a2d2..d597c351 100644 --- a/include/overlay_29_022F0590.h +++ b/include/overlay_29_022F0590.h @@ -1,9 +1,16 @@ #ifndef PMDSKY_OVERLAY_29_022F0590_H #define PMDSKY_OVERLAY_29_022F0590_H +#include "util.h" + #include "dungeon_mode.h" // Checks if an entity pointer points to a valid entity (not entity type 0, which represents no entity). bool8 EntityIsValid__022F0590(struct entity *entity); +void ov29_022F05B4(struct entity* a, struct entity* b, bool8 freeze); +void ov29_022F05E4(void); +s32 TalkToSecretBazaarNpcStandard(struct entity* a, struct entity* b, s32 c); +s32 ov29_022F0618(struct entity* a, struct entity* b, s32 c, s32 d); +s32 TalkToSecretBazaarNpcWithYesNoMenu(struct entity* a, struct entity* b, s32 c, s32 d); #endif //PMDSKY_OVERLAY_29_022F0590_H diff --git a/include/overlay_29_02321238.h b/include/overlay_29_02321238.h index 2423fd8d..dd4635b2 100644 --- a/include/overlay_29_02321238.h +++ b/include/overlay_29_02321238.h @@ -6,5 +6,7 @@ #include "move.h" void ov29_02321238(struct entity *entity); +void ov29_0232124C(struct entity *entity); +void ov29_02321260(struct entity *entity); #endif diff --git a/include/overlay_29_02338850.h b/include/overlay_29_02338850.h index 70f1e102..1565476b 100644 --- a/include/overlay_29_02338850.h +++ b/include/overlay_29_02338850.h @@ -2,8 +2,6 @@ #define PMDSKY_OVERLAY_29_02338850_H #include "dungeon.h" -#include "util.h" - enum hidden_stairs_type GetHiddenStairsField(void); void SetHiddenStairsField(enum hidden_stairs_type value); enum hidden_stairs_type GetHiddenFloorField(void); diff --git a/include/overlay_29_02339118.h b/include/overlay_29_02339118.h index ceea70dc..c0d73cbb 100644 --- a/include/overlay_29_02339118.h +++ b/include/overlay_29_02339118.h @@ -2,8 +2,6 @@ #define PMDSKY_OVERLAY_29_02339118_H #include "dungeon.h" -#include "util.h" - struct minimap_display_data* GetMinimapData(void); #endif diff --git a/include/overlay_29_0234396C.h b/include/overlay_29_0234396C.h index 8642411d..3815348e 100644 --- a/include/overlay_29_0234396C.h +++ b/include/overlay_29_0234396C.h @@ -1,8 +1,6 @@ #ifndef PMDSKY_OVERLAY_29_0234396C_H #define PMDSKY_OVERLAY_29_0234396C_H -#include "util.h" - u8 FixedRoomActionParamToDirection(u8 action_param); #endif diff --git a/include/overlay_29_02344088.h b/include/overlay_29_02344088.h new file mode 100644 index 00000000..214035e1 --- /dev/null +++ b/include/overlay_29_02344088.h @@ -0,0 +1,13 @@ +#ifndef PMDSKY_OVERLAY_29_02344088_H +#define PMDSKY_OVERLAY_29_02344088_H + +#include "util.h" + +void CloseFixedBin(void); +bool8 AreOrbsAllowed(u32 dungeon_id); +bool8 AreTileJumpsAllowed(u32 dungeon_id); +bool8 AreTrawlOrbsAllowed(u32 dungeon_id); +bool8 AreOrbsAllowedVeneer(u32 dungeon_id); +bool8 AreLateGameTrapsEnabled(u32 dungeon_id); + +#endif diff --git a/include/overlay_29_02344AF8.h b/include/overlay_29_02344AF8.h index b93b5123..326143d6 100644 --- a/include/overlay_29_02344AF8.h +++ b/include/overlay_29_02344AF8.h @@ -1,9 +1,19 @@ #ifndef PMDSKY_OVERLAY_29_02344AF8_H #define PMDSKY_OVERLAY_29_02344AF8_H +struct unk_023531A4 { + u8 field_0x0[4]; +}; + +#include "util.h" + #include "dungeon_mode.h" // Checks if an entity pointer points to a valid entity (not entity type 0, which represents no entity). bool8 EntityIsValid__02344AF8(struct entity *entity); +void ov29_02344B1C(void); +void ov29_02344B30(void); +void PrepareItemForPrinting__02345728(s32 a, s32 b); +void PrepareItemForPrinting__02345754(s32 a, s32 b); #endif //PMDSKY_OVERLAY_29_02344AF8_H diff --git a/include/overlay_29_02344B9C.h b/include/overlay_29_02344B9C.h new file mode 100644 index 00000000..181012c3 --- /dev/null +++ b/include/overlay_29_02344B9C.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_OVERLAY_29_02344B9C_H +#define PMDSKY_OVERLAY_29_02344B9C_H + +void ov29_02344B9C(s32 idx, u32 val); + +#endif diff --git a/include/overlay_29_02344BE4.h b/include/overlay_29_02344BE4.h index 1a898de1..ccacebd4 100644 --- a/include/overlay_29_02344BE4.h +++ b/include/overlay_29_02344BE4.h @@ -5,6 +5,7 @@ #include "item.h" #include "move.h" +void GenerateStandardItem(struct item* item, enum item_id item_id, s32 sticky); void GenerateCleanItem(struct item *item, enum item_id item_id); #endif diff --git a/include/overlay_29_02349208.h b/include/overlay_29_02349208.h index 82ca6881..14fd78dc 100644 --- a/include/overlay_29_02349208.h +++ b/include/overlay_29_02349208.h @@ -5,5 +5,7 @@ #include "util.h" bool8 IsDestinationFloor(void); +bool8 IsCurrentMissionType(enum mission_type type); +bool8 IsCurrentMissionTypeExact(enum mission_type type, u8 subtype); #endif diff --git a/include/overlay_29_0234BA54.h b/include/overlay_29_0234BA54.h new file mode 100644 index 00000000..c8584d83 --- /dev/null +++ b/include/overlay_29_0234BA54.h @@ -0,0 +1,36 @@ +#ifndef PMDSKY_OVERLAY_29_0234BA54_H +#define PMDSKY_OVERLAY_29_0234BA54_H + +#include "util.h" + +struct unk_0234BAC0 { + s16 field_0x0; + u8 field_0x2; + u8 field_0x3; + s32 field_0x4; + s32 field_0x8; + u8 field_0xC; + u8 field_0xD; + u8 field_0xE; +}; + +struct unk_023537CC { + bool8 field_0x0; + u8 field_0x1; + u8 field_0x2; + u8 field_0x3; + u8 *field_0x4; +}; + +void WaitUntilAlertBoxPauseIsOver(u32 a); +void InitPortraitDungeon(struct unk_0234BAC0 *p, s16 a, u8 b); +void ov29_0234BB10(void); +void ov29_0234BB20(s32 a); +void ov29_0234BB2C(s32 a); +void ov29_0234BB38(s32 a); +void ov29_0234BB44(s32 a); +void ov29_0234BB50(s32 a); +s32 OpenMessageLog(s32 a, s32 b); +void ov29_0234BBDC(s32 a); + +#endif diff --git a/lib/src/overlay_00_022DB1A4.c b/lib/src/overlay_00_022DB1A4.c new file mode 100644 index 00000000..2f76f532 --- /dev/null +++ b/lib/src/overlay_00_022DB1A4.c @@ -0,0 +1,72 @@ +#include "overlay_00_022DB0E0.h" + +u32 Dwci_Acc_GetFlag_DataType(struct unk_022DB0E0 *a) +{ + return Dwci_Acc_GetFlags(a) & 3; +} + +u32 Dwc_IsBuddyFriendData(struct unk_022DB0E0 *a) +{ + return Dwci_IsBuddyFriendData(a) && Dwci_IsReverseBuddyFriendData(a); +} + +u32 Dwci_IsBuddyFriendData(struct unk_022DB0E0 *a) +{ + if (Dwci_Acc_GetFlag_DataType(a) == 3) { + return (Dwci_Acc_GetFlags(a) & 4) == 4; + } + + return 0; +} + +u32 Dwci_IsReverseBuddyFriendData(struct unk_022DB0E0 *a) +{ + return (Dwci_Acc_GetFlags(a) & 8) == 8; +} + +u32 Dwci_IsBuddyMsgAlreadySent(struct unk_022DB0E0 *a) +{ + return (Dwci_Acc_GetFlags(a) & 0x20) == 0x20; +} + +u32 Dwc_GetFriendDataType(struct unk_022DB0E0 *a) +{ + return Dwci_Acc_GetFlag_DataType(a); +} + +void Dwci_Acc_SetFlags(struct unk_022DB0E0 *a, u32 v) +{ + Dwci_Acc_SetMaskBits((u32 *) a, v, 0xB, 0x1FFFFF); +} + +void Dwci_Acc_SetFlag_DataType(struct unk_022DB0E0 *a, u32 type) +{ + u32 flags = Dwci_Acc_GetFlags(a); + + Dwci_Acc_SetFlags(a, (flags & ~3) | type); +} + +void Dwci_SetBuddyFriendData(struct unk_022DB0E0 *a) +{ + u32 flags; + + if (Dwci_Acc_GetFlag_DataType(a) != 3) { + return; + } + + flags = Dwci_Acc_GetFlags(a) | 4; + Dwci_Acc_SetFlags(a, flags); +} + +void Dwci_SetReverseBuddyFlag(struct unk_022DB0E0 *a, bool8 on) +{ + u32 flags; + + if (on) { + flags = Dwci_Acc_GetFlags(a) | 8; + } else { + flags = Dwci_Acc_GetFlags(a) & ~8; + } + + Dwci_Acc_SetFlags(a, flags); +} diff --git a/main.lsf b/main.lsf index ccce7f45..112bc170 100644 --- a/main.lsf +++ b/main.lsf @@ -24,6 +24,10 @@ Static main Object asm/main_02001D68.o Object src/main_0200224C.o Object asm/main_020022C4.o + Object src/main_0200238C.o + Object asm/main_020024E4.o + Object src/main_020027E8.o + Object asm/main_02002910.o Object src/main_0200330C.o Object asm/main_02003328.o Object src/main_0200383C.o @@ -36,6 +40,7 @@ Static main Object asm/main_020040AC.o Object src/main_02004FCC.o Object asm/main_02004FF8.o + Object src/main_02008194.o Object src/main_02008210.o Object asm/main_02008240.o Object src/main_02008254.o @@ -44,6 +49,7 @@ Static main Object asm/main_02008BF4.o Object src/main_0200961C.o Object asm/main_02009648.o + Object src/main_02009BE8.o Object src/main_02009D48.o Object src/main_02009F9C.o Object asm/main_0200A124.o @@ -58,6 +64,7 @@ Static main Object src/directory_file.o Object src/main_0200C4FC.o Object asm/main_0200C5B4.o + Object src/main_0200CA54.o Object src/item_util.o Object src/item_util_4.o Object asm/main_0200D1F0.o @@ -116,11 +123,11 @@ Static main Object src/main_0201514C.o Object asm/main_020151E4.o Object src/main_02017B58.o - Object asm/main_02017B70.o Object src/main_02017C80.o - Object asm/main_02017C90.o + Object asm/main_02017D20.o Object src/main_0201BA9C.o Object asm/main_0201BAC8.o + Object src/main_0201BCCC.o Object src/main_0201BFF0.o Object asm/main_0201C000.o Object src/main_0201D198.o @@ -134,6 +141,10 @@ Static main Object src/main_02025788.o Object src/main_0202593C.o Object asm/main_0202598C.o + Object src/main_0202613C.o + Object asm/main_0202614C.o + Object src/main_02026174.o + Object asm/main_020261F4.o Object src/main_020265C4.o Object asm/main_0202676C.o Object src/main_020275F8.o @@ -162,7 +173,6 @@ Static main Object src/main_0202AB40.o Object asm/main_0202AB94.o Object src/main_0202B4C4.o - Object asm/main_0202B530.o Object src/main_0202B558.o Object asm/main_0202B568.o Object src/main_0202BA0C.o @@ -183,24 +193,28 @@ Static main Object src/main_0202FD3C.o Object asm/main_0202FD50.o Object src/main_020307A4.o - Object asm/main_020307B8.o Object src/main_0203083C.o Object src/main_0203088C.o Object asm/main_020308A0.o Object src/main_02030A18.o Object src/main_02030A40.o - Object asm/main_02030A50.o + Object asm/main_02030A90.o Object src/main_02032558.o Object src/main_0203258C.o Object asm/main_020325AC.o + Object src/main_020327CC.o + Object asm/main_02032960.o + Object src/main_020332AC.o + Object asm/main_02033414.o Object src/main_020348E4.o Object asm/main_02034974.o Object src/main_0203755C.o Object asm/main_02037570.o Object src/main_0203C760.o Object asm/main_0203C774.o + Object src/main_0203C910.o + Object asm/main_0203CAF0.o Object src/main_02042AF8.o - Object asm/main_02042B20.o Object src/main_02042B84.o Object asm/main_02042BE0.o Object src/main_02043148.o @@ -209,10 +223,17 @@ Static main Object src/main_02043380.o Object src/main_02043568.o Object asm/main_0204357C.o + Object src/main_020483B8.o Object src/main_020484A0.o Object asm/main_020484C0.o Object src/main_02048758.o Object asm/main_02048764.o + Object src/main_02048B48.o + Object asm/main_02048B74.o + Object src/main_02048BB4.o + Object asm/main_02048C5C.o + Object src/main_02048CB8.o + Object asm/main_02048CF8.o Object asm/main_bss_020B3380.o Object src/options.o Object asm/main_bss_022AB0AC.o @@ -229,6 +250,8 @@ Static main Object src/scenario_flag.o Object src/script_variable_2.o Object asm/main_0204CF9C.o + Object src/main_0204D188.o + Object asm/main_0204D368.o Object src/main_0204DA2C.o Object asm/main_0204DBA0.o Object src/main_0204DD80.o @@ -236,6 +259,7 @@ Static main Object src/dungeon_init.o Object src/main_0204F050.o Object asm/main_0204F0A0.o + Object src/main_0204F9B8.o Object src/main_0204FA24.o Object asm/main_0204FA70.o Object src/main_0204FB9C.o @@ -255,7 +279,6 @@ Static main Object src/main_020514CC.o Object asm/main_02051504.o Object src/main_02051760.o - Object asm/main_02051788.o Object src/tactics_data.o Object asm/main_rodata_020A190C.o Object src/monster_parameters.o @@ -295,11 +318,8 @@ Static main Object src/main_02056D70.o Object asm/main_02056EB8.o Object src/main_02058C3C.o - Object asm/main_02058C4C.o Object src/main_02058CD8.o - Object asm/main_02058D04.o Object src/main_02058E68.o - Object asm/main_02058E8C.o Object src/pokemon.o Object asm/main_02058F24.o Object src/main_02058FA4.o @@ -345,7 +365,6 @@ Static main Object asm/main_0205EB00.o Object src/main_0205EBD8.o Object src/main_0205EC18.o - Object asm/main_0205EC38.o Object src/main_0205EC78.o Object asm/main_0205EC98.o Object src/main_0205ED84.o @@ -356,13 +375,15 @@ Static main Object src/main_02065974.o Object asm/main_02065998.o Object src/main_02065B3C.o - 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 @@ -535,13 +556,20 @@ Overlay OVY_0 { After main Object asm/overlay_00.o + Object src/overlay_00_022DB0E0.o + Object lib/src/overlay_00_022DB1A4.o + Object asm/overlay_00_022DB2F8.o Object src/overlay_00_0230D388.o Object asm/overlay_00_0230D398.o + Object src/overlay_00_0230E3E8.o + Object asm/overlay_00_0230E460.o } Overlay OVY_1 { After OVY_0 Object asm/overlay_01.o + Object src/overlay_01_0233755C.o + Object asm/overlay_01_02337634.o } Overlay OVY_2 { @@ -557,7 +585,8 @@ Overlay OVY_3 Overlay OVY_4 { After OVY_1 - Object asm/overlay_04.o + Object src/overlay_04_0233CA80.o + Object asm/overlay_04_0233CAF8.o } Overlay OVY_5 { @@ -567,7 +596,8 @@ Overlay OVY_5 Overlay OVY_6 { After OVY_1 - Object asm/overlay_06.o + Object src/overlay_06_0233CA80.o + Object asm/overlay_06_0233CAB8.o } Overlay OVY_7 { @@ -589,7 +619,9 @@ Overlay OVY_10 After main Object asm/overlay_10.o Object src/overlay_10_022BCC60.o - Object asm/overlay_10_022BCC7C.o + Object asm/overlay_10_022BCDF4.o + Object src/overlay_10_022BFD58.o + Object asm/overlay_10_022BFF78.o Object src/overlay_10_022C2574.o Object asm/overlay_10_022C2588.o Object src/overlay_10_022C434C.o @@ -611,13 +643,33 @@ Overlay OVY_11 { After OVY_10 Object asm/overlay_11.o + Object src/overlay_11_022E45C4.o + Object asm/overlay_11_022E46FC.o + Object src/overlay_11_022E7F28.o + Object asm/overlay_11_022E7FB8.o + Object src/overlay_11_022E8024.o + Object asm/overlay_11_022E8090.o Object src/overlay_11_022E96E4.o Object asm/overlay_11_022E96F4.o + Object src/overlay_11_022E9A78.o + Object src/overlay_11_022E9E74.o + Object asm/overlay_11_022EA024.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_022FAB44.o + Object asm/overlay_11_022FAC54.o + Object src/overlay_11_022FD1A0.o + Object asm/overlay_11_022FD308.o + Object src/overlay_11_022FE490.o + Object asm/overlay_11_022FE4AC.o + Object src/overlay_11_022FE58C.o + Object asm/overlay_11_022FE5F8.o + Object src/overlay_11_0230CB88.o + Object src/overlay_11_0230CD48.o + Object asm/overlay_11_0230CE30.o } Overlay OVY_12 { @@ -650,6 +702,8 @@ Overlay OVY_16 { After OVY_11 Object asm/overlay_16.o + Object src/overlay_16_0238CC94.o + Object asm/overlay_16_0238CD08.o } Overlay OVY_17 { @@ -657,11 +711,17 @@ Overlay OVY_17 Object asm/overlay_17.o Object src/overlay_17_0238A71C.o Object asm/overlay_17_0238A754.o + Object src/overlay_17_0238B10C.o + Object asm/overlay_17_0238B2B4.o } Overlay OVY_18 { After OVY_11 Object asm/overlay_18.o + Object src/overlay_18_0238BF60.o + Object asm/overlay_18_0238C114.o + Object src/overlay_18_0238C950.o + Object asm/overlay_18_0238CAB0.o } Overlay OVY_19 { @@ -728,9 +788,8 @@ Overlay OVY_29 Object src/poly_text.o Object asm/overlay_29_022DC314.o Object src/overlay_29_022DC61C.o - Object asm/overlay_29_022DC65C.o Object src/overlay_29_022DC684.o - Object asm/overlay_29_022DC694.o + Object asm/overlay_29_022DC7E4.o Object src/overlay_29_022DEAB0.o Object asm/overlay_29_022DEBA4.o Object src/dg.o @@ -740,34 +799,34 @@ Overlay OVY_29 Object src/overlay_29_022E0A04.o Object asm/overlay_29_022E0A18.o Object src/overlay_29_022E1610.o - Object asm/overlay_29_022E1618.o Object src/dungeon_util_1.o Object asm/overlay_29_022E1640.o Object src/dg_object.o Object asm/overlay_29_022E1AD4.o Object src/overlay_29_022E272C.o Object src/dungeon_visibility.o - Object asm/overlay_29_022E28D4.o Object src/dungeon_util_2.o Object asm/overlay_29_022E2978.o Object src/dg_camera.o Object asm/overlay_29_022E335C.o Object src/dg_effect.o Object asm/overlay_29_022E37DC.o + Object src/overlay_29_022E3F20.o + Object src/overlay_29_022E406C.o Object src/overlay_29_022E41CC.o Object asm/overlay_29_022E41F0.o + Object src/overlay_29_022E4338.o Object src/overlay_29_022E45B8.o Object asm/overlay_29_022E45CC.o Object src/overlay_29_022E46C0.o Object asm/overlay_29_022E46D0.o Object src/overlay_29_022E4704.o - Object asm/overlay_29_022E4714.o + Object asm/overlay_29_022E4868.o Object src/overlay_29_022E4B8C.o Object asm/overlay_29_022E4BB4.o Object src/overlay_29_022E563C.o Object asm/overlay_29_022E5650.o Object src/overlay_29_022E66C4.o - Object asm/overlay_29_022E66D8.o Object src/overlay_29_022E6770.o Object asm/overlay_29_022E6798.o Object src/overlay_29_022E68BC.o @@ -830,7 +889,7 @@ Overlay OVY_29 Object src/dungeon_logic_6.o Object asm/overlay_29_022EFB20.o Object src/overlay_29_022F0590.o - Object asm/overlay_29_022F05B4.o + Object asm/overlay_29_022F0654.o Object src/overlay_29_022F0EDC.o Object asm/overlay_29_022F2B3C.o Object src/overlay_29_022F528C.o @@ -886,7 +945,6 @@ Overlay OVY_29 Object src/dungeon_capabilities.o Object asm/overlay_29_023009A0.o Object src/dungeon_capabilities_1.o - Object asm/overlay_29_02300D50.o Object src/directional_bit_masks.o Object src/dungeon_capabilities_3.o Object asm/overlay_29_02300FCC.o @@ -994,7 +1052,6 @@ Overlay OVY_29 Object src/overlay_29_02320764.o Object asm/overlay_29_02320788.o Object src/overlay_29_02321238.o - Object asm/overlay_29_0232124C.o Object src/overlay_29_02321274.o Object asm/overlay_29_02321288.o Object src/overlay_29_02321438.o @@ -1182,10 +1239,12 @@ Overlay OVY_29 Object asm/overlay_29_02341E6C.o Object src/overlay_29_0234396C.o Object asm/overlay_29_02343980.o + Object src/overlay_29_02344088.o Object src/fixed_room_data.o Object asm/overlay_29_02344178.o Object src/overlay_29_02344AF8.o - Object asm/overlay_29_02344B1C.o + Object src/overlay_29_02344B9C.o + Object asm/overlay_29_02344BA8.o Object src/overlay_29_02344BE4.o Object asm/overlay_29_02344BF8.o Object src/overlay_29_02345698.o @@ -1198,7 +1257,6 @@ Overlay OVY_29 Object asm/overlay_29_02348D3C.o Object src/overlay_29_02349188.o Object src/overlay_29_02349208.o - Object asm/overlay_29_0234921C.o Object src/overlay_29_0234928C.o Object src/overlay_29_02349314.o Object asm/overlay_29_02349378.o @@ -1221,6 +1279,7 @@ Overlay OVY_29 Object asm/overlay_29_0234B350.o Object src/overlay_29_0234B4BC.o Object asm/overlay_29_0234B4CC.o + Object src/overlay_29_0234BA54.o Object src/overlay_29_0234BBE8.o Object asm/overlay_29_0234BEE0.o Object src/overlay_29_0234CA68.o diff --git a/src/dungeon_capabilities_1.c b/src/dungeon_capabilities_1.c index 96586e12..f026669b 100644 --- a/src/dungeon_capabilities_1.c +++ b/src/dungeon_capabilities_1.c @@ -102,3 +102,45 @@ bool8 CheckVariousStatuses__0230172C(struct entity *entity) return FALSE; } + +bool8 ov29_02300D50(struct entity *entity) +{ + struct monster *m; + + m = entity->info; + + if (m->frozen_class_status.freeze == STATUS_FROZEN_WRAP) { + return 1; + } + + if (m->frozen_class_status.freeze == STATUS_FROZEN_WRAPPED) { + return 1; + } + + if (m->cringe_class_status.cringe == STATUS_CRINGE_INFATUATED) { + return 1; + } + + if (m->cringe_class_status.cringe == STATUS_CRINGE_PAUSED) { + return 1; + } + + if (m->burn_class_status.burn == STATUS_BURN_PARALYSIS) { + return 1; + } + + if (m->frozen_class_status.freeze == STATUS_FROZEN_PETRIFIED) { + return 1; + } + + if (m->cringe_class_status.cringe == STATUS_CRINGE_CRINGE) { + return 1; + } + + return CheckVariousStatuses__023016DC(entity); +} + +bool8 ov29_02300DC0(struct entity *entity) +{ + return ov29_02300D50(entity); +} diff --git a/src/dungeon_init_2.c b/src/dungeon_init_2.c index ece8a906..c8a57d16 100644 --- a/src/dungeon_init_2.c +++ b/src/dungeon_init_2.c @@ -1,4 +1,12 @@ #include "dungeon_init_2.h" +#include "script_variable.h" +#include "special_episode.h" + +extern s32 sub_0204E6FC(void); + +extern s32 sub_0204E780(void); + +extern s32 sub_0204E770(void); #include "enums.h" extern u8 DUNGEON_SWAP_ID_TABLE[]; @@ -46,3 +54,30 @@ s32 GetDungeonModeSpecial(s16 dungeon_id) { return DMODE_OPEN; } + +s16 sub_0206A7CC(s16 a) +{ + s32 v; + + if (a == 0x3E8) { + a = (s16) LoadScriptVariableValue(NULL, 0x20); + } else if (a == 0x3E9) { + if (sub_0204E6FC() == 2) { + v = sub_0204E780(); + } else { + v = sub_0204E770(); + } + + if (v == 0xFF) { + a = -1; + } else { + a = (s16) (v + 1); + } + } + + if (a == 0xD1 && GetExecuteSpecialEpisodeType() == 4) { + a = 0xD2; + } + + return a; +} diff --git a/src/dungeon_recruitment.c b/src/dungeon_recruitment.c index c2a36155..8b98eb3d 100644 --- a/src/dungeon_recruitment.c +++ b/src/dungeon_recruitment.c @@ -14,9 +14,9 @@ #include "math.h" #include "overlay_29_0230E578.h" // ItemIsActive__0230E578 #include "progression.h" +#include "overlay_29_02349208.h" extern bool8 IsLegendaryChallengeFloor(void); -extern bool8 IsCurrentMissionTypeExact(u32 mission_type, u32 mission_subtype); extern bool8 IsMonsterOnTeam(s16 monsterId, s32 checkType); extern void ov29_022E1B28(s32); extern void ov29_022E81F8(void); diff --git a/src/dungeon_visibility.c b/src/dungeon_visibility.c index 7453183e..070be1b5 100644 --- a/src/dungeon_visibility.c +++ b/src/dungeon_visibility.c @@ -59,3 +59,26 @@ bool8 CanTargetEntity(struct entity *user, struct entity *target) } return IsPositionInSight(&user->pos, &target->pos, HasDropeyeStatus(user)); } + +bool8 IsValidTargetEntity(struct entity *user, struct entity *target) +{ + if (!EntityIsValid__022E1A1C(user)) { + return 0; + } + + if (!EntityIsValid__022E1A1C(target)) { + return 0; + } + + if (!target->is_visible) { + return 0; + } + + return IsPositionActuallyInSight(&user->pos, &target->pos, + HasDropeyeStatus(user)); +} + +bool8 CanSeePosition(struct entity *user, struct position *target) +{ + return IsPositionActuallyInSight(&user->pos, target, HasDropeyeStatus(user)); +} diff --git a/src/main_0200238C.c b/src/main_0200238C.c new file mode 100644 index 00000000..ce83ef91 --- /dev/null +++ b/src/main_0200238C.c @@ -0,0 +1,122 @@ +#include "main_0200238C.h" + +extern void OS_ResetSystem(u32 a); + +extern void CardPullOut(void); + +extern s32 sub_020024D4(void); + +extern void Card_SetPulledOutCallback(s32 (*cb)(void)); + +extern const u8 _02092464[]; + +extern void Debug_Print0(const u8* fmt, ...); + +extern void sub_02003AD0(void); + +extern void *sub_02002580(void); + +extern u32 sub_020027F8(void *p, u32 prio); + +extern s32 _0229AFE4[8]; + +s8 sub_0200238C(s8 c) +{ + if (c < 'A') { + return c; + } + + if (c <= 'Z') { + c = (s8) (c + 0x20); + } + + return c; +} + +void sub_020023A8(s8 *dst, s8 *src, s32 n) +{ + s32 i; + + for (i = 0; i < n; i++) { + s8 c = *src; + + if (c == 0) { + for (; i < n; i++) { + *dst++ = ' '; + } + + break; + } + + src++; + *dst++ = c; + } + + *dst = 0; +} + +s32 sub_020023F8(s8 *a, s8 *b, s32 n) +{ + s32 i; + + for (i = 0; i < n; i++) { + s8 ca = *a++; + s8 cb = *b++; + + if (cb != ca) { + return 0; + } + + if (ca == 0) { + return 1; + } + } + + return 1; +} + +void WaitForever(void) +{ + OS_DisableScheduler(); + + while (TRUE) { + WaitForInterrupt(); + } +} + +void sub_02002448(u32 a) +{ + sub_02003AD0(); + sub_020027F8(sub_02002580(), 1); + OS_DisableScheduler(); + GX_DispOff(); + *(vu32 *) 0x04001000 &= ~0x10000; + Debug_Print0(_02092464, a); + OS_ResetSystem(a); + OS_DisableScheduler(); + + while (TRUE) { + WaitForInterrupt(); + } +} + +s32 sub_020024A0(void) +{ + return *(vu32 *) 0x027FFC20; +} + +void sub_020024B0(void) +{ + Card_SetPulledOutCallback(NULL); +} + +void sub_020024C0(void) +{ + Card_SetPulledOutCallback(sub_020024D4); +} + +s32 sub_020024D4(void) +{ + CardPullOut(); + return 0; +} diff --git a/src/main_020027E8.c b/src/main_020027E8.c new file mode 100644 index 00000000..fa661ea5 --- /dev/null +++ b/src/main_020027E8.c @@ -0,0 +1,90 @@ +#include "main_020027E8.h" + +extern volatile struct unk_0229B0E0 _0229B0E0; + +extern void sub_02002670(void); + +extern void sub_020026B8(void); + +extern struct unk_020027E8 *sub_02002580(void); + +void sub_020027E8(struct unk_020027E8 *p) +{ + OS_WakeupThreadDirect(p->field_0x0); +} + +u32 sub_020027F8(struct unk_020027E8 *p, u32 prio) +{ + u32 old; + + old = OS_GetThreadPriority(p->field_0x0); + OS_SetThreadPriority(p->field_0x0, prio); + return old; +} + +u32 sub_02002824(u32 prio) +{ + OSThread *thread; + u32 old; + + thread = OSi_ThreadInfo.current; + old = OS_GetThreadPriority(thread); + OS_SetThreadPriority(thread, prio); + return old; +} + +void sub_02002858(struct unk_020027E8 *p, s32 v) +{ + p->field_0x14 = v; +} + +s32 sub_02002860(struct unk_020027E8 *p) +{ + if (p != NULL && p->field_0x0 != NULL) { + return p->field_0x14; + } + + return 0; +} + +bool8 sub_02002878(s32 v) +{ + struct unk_020027E8 *p; + + p = sub_02002580(); + + if (p != NULL) { + return p->field_0x14 == v; + } + + return 0; +} + +void sub_020028AC(void) +{ + +} + +void sub_020028B0(OSMutex *mutex) +{ + OS_InitMutex(mutex); + OS_LockMutex(mutex); + sub_02002670(); + _0229B0E0.field_0x0 += 1; + + if (_0229B0E0.field_0x0 > _0229B0E0.field_0x4) { + _0229B0E0.field_0x4 = _0229B0E0.field_0x0; + } + + sub_020026B8(); +} + +void sub_020028F8(OSMutex *mutex) +{ + OS_UnlockMutex(mutex); +} + +void sub_02002904(OSMutex *mutex) +{ + OS_LockMutex(mutex); +} diff --git a/src/main_02008194.c b/src/main_02008194.c new file mode 100644 index 00000000..3665e2f5 --- /dev/null +++ b/src/main_02008194.c @@ -0,0 +1,59 @@ +#include "main_02008194.h" +#include "main_0207F3E4.h" + +extern struct unk_020AF360 _020AF360; + +extern u8 _020AF368[]; + + + +extern void sub_02002E98(u8 *p); + +extern void sub_02002CB4(u8 *p); + +extern void sub_02002E10(u8 *p); + +extern void *sub_02002580(void); + +extern void sub_020027F8(void *a, s32 b); + + + + + + + + + + + + + +void FileRom_StopDataTransfer(void) +{ + s32 saved = _020AF360.field_0x4; + + _020AF360.field_0x4 = 0; + sub_02002E98(_020AF368); + sub_020027F8(sub_02002580(), saved); +} + +void sub_020081C8(void) +{ + sub_02002CB4(_020AF368); +} + +void sub_020081DC(void) +{ + sub_02002E98(_020AF368); +} + +void sub_020081F0(void) +{ + sub_02002E10(_020AF368); +} + +void FileRom_Veneer_FileInit(struct file_stream* file) +{ + FS_InitFile(file); +} diff --git a/src/main_02009BE8.c b/src/main_02009BE8.c new file mode 100644 index 00000000..cd2219dd --- /dev/null +++ b/src/main_02009BE8.c @@ -0,0 +1,87 @@ +#include "main_02009BE8.h" + +void sub_02009BE8(u32 value, s32 flag) +{ + u32 v = (*(vu16 *) 0x0400004A & ~0x3F00) | (value << 8); + + if (flag != 0) { + v |= 0x2000; + } + + *(vu16 *) 0x0400004A = v; +} + +void sub_02009C10(u32 value, s32 flag) +{ + u32 v = (*(vu16 *) 0x0400004A & ~0x3F) | (value); + + if (flag != 0) { + v |= 0x20; + } + + *(vu16 *) 0x0400004A = v; +} + +void sub_02009C38(u32 value) +{ + *(vu16 *) 0x0400000A = (*(vu16 *) 0x0400000A & ~3) | value; +} + +void sub_02009C54(u32 value) +{ + *(vu16 *) 0x04000008 = (*(vu16 *) 0x04000008 & ~3) | value; +} + +void sub_02009C70(u32 value) +{ + *(vu16 *) 0x0400000C = (*(vu16 *) 0x0400000C & ~3) | value; +} + +void sub_02009C8C(u32 value) +{ + *(vu16 *) 0x0400000E = (*(vu16 *) 0x0400000E & ~3) | value; +} + +void sub_02009CA8(u32 value, s32 flag) +{ + u32 v = (*(vu16 *) 0x04001048 & ~0x3F) | (value); + + if (flag != 0) { + v |= 0x20; + } + + *(vu16 *) 0x04001048 = v; +} + +void sub_02009CD0(u32 value, s32 flag) +{ + u32 v = (*(vu16 *) 0x04001048 & ~0x3F00) | (value << 8); + + if (flag != 0) { + v |= 0x2000; + } + + *(vu16 *) 0x04001048 = v; +} + +void sub_02009CF8(u32 value, s32 flag) +{ + u32 v = (*(vu16 *) 0x0400104A & ~0x3F00) | (value << 8); + + if (flag != 0) { + v |= 0x2000; + } + + *(vu16 *) 0x0400104A = v; +} + +void sub_02009D20(u32 value, s32 flag) +{ + u32 v = (*(vu16 *) 0x0400104A & ~0x3F) | (value); + + if (flag != 0) { + v |= 0x20; + } + + *(vu16 *) 0x0400104A = v; +} diff --git a/src/main_0200CA54.c b/src/main_0200CA54.c new file mode 100644 index 00000000..331cef07 --- /dev/null +++ b/src/main_0200CA54.c @@ -0,0 +1,79 @@ +#include "main_0200CA54.h" +#include "main_0207F3E4.h" + + + +extern u8 BAG_ITEMS[]; + +extern u8 *BAG_ITEMS_PTR_MIRROR; + + + + + + +extern s32 GetItemCategoryVeneer(enum item_id item_id); + +extern void LoadItemPspi2n(void); + +extern void SetActiveInventoryToMain(void); + +extern void sub_0200FD38(void); + +extern void sub_02010590(void); + +extern void WipeRecycleShopRecords(void); + +extern void AllInventoriesZInit(void); + +extern void sub_0200FD3C(void); + +extern void AllKecleonShopsZInit(void); + +extern void SpecialEpisodeInventoryZInit(void); + +extern void SpecialEpisodeKecleonShopZInit(void); + +extern void RescueInventoryZInit(void); + +s16 GetDamageSource(s32 a, enum item_id item_id) +{ + if (item_id != ITEM_NOTHING) { + if (GetItemCategoryVeneer(item_id) == 9) { + return 0x262; + } + + return 0x263; + } + + return a; +} + +void sub_0200CA8C(void) +{ + BAG_ITEMS_PTR_MIRROR = BAG_ITEMS; + LoadItemPspi2n(); + SetActiveInventoryToMain(); + sub_0200FD38(); + sub_02010590(); + WipeRecycleShopRecords(); +} + +void sub_0200CABC(void) +{ + AllInventoriesZInit(); + sub_0200FD3C(); + AllKecleonShopsZInit(); + WipeRecycleShopRecords(); +} + +void sub_0200CAD4(void) +{ + SpecialEpisodeInventoryZInit(); + SpecialEpisodeKecleonShopZInit(); +} + +void sub_0200CAE4(void) +{ + RescueInventoryZInit(); +} diff --git a/src/main_02017B58.c b/src/main_02017B58.c index 3daf5ac0..87aaf78e 100644 --- a/src/main_02017B58.c +++ b/src/main_02017B58.c @@ -1,5 +1,33 @@ #include "main_02017B58.h" +extern void PlayMeById(s32 a); + +extern void PlaySeByIdVolume(s32 se_id, s32 volume); + +extern void sub_020182AC(s32 a); + +extern void sub_02018278(s32 a); + +extern void StopBgmCommand(void); + +extern s32 sub_020181E0(void); + +extern void sub_02018194(void); + +extern void sub_02018158(void); + +extern void sub_02018118(void); + +extern void sub_020180A0(void); + +extern void sub_02018024(void); + +extern s32 sub_02017FBC(void); + +extern void sub_02017F64(void); + +extern void sub_02017F28(void); + void PlayBgmById(s32 bgm_id); void PlayBgmByIdVolume(s32 bgm_id, s32 volume); @@ -12,3 +40,85 @@ void PlayBgmByIdVolumeVeneer(s32 bgm_id, s32 volume) { PlayBgmByIdVolume(bgm_id, volume); } + +void sub_02017B70(void) +{ + StopBgmCommand(); +} + +void sub_02017B7C(void) +{ + sub_02017F28(); +} + +void sub_02017B88(void) +{ + sub_02017F64(); +} + +bool8 sub_02017B94(s32 id) +{ + s32 cur = sub_02017FBC(); + + if (id == 0x3E7) { + return cur != 0x3E7; + } + + return cur == id; +} + +void sub_02017BD4(void) +{ + sub_02018024(); +} + +void sub_02017BE0(void) +{ + sub_020180A0(); +} + +void sub_02017BEC(void) +{ + sub_02018118(); +} + +void sub_02017BF8(void) +{ + sub_02018158(); +} + +void sub_02017C04(void) +{ + sub_02018194(); +} + +bool8 IsMePlaying(s32 id) +{ + s32 cur = sub_020181E0(); + + if (id == 0x3E6) { + return cur != 0x3E6; + } + + return cur == id; +} + +void sub_02017C50(s32 a) +{ + PlayMeById(a); +} + +void sub_02017C5C(s32 a) +{ + sub_02018278(a); +} + +void sub_02017C68(s32 a) +{ + sub_020182AC(a); +} + +void sub_02017C74(s32 se_id, s32 volume) +{ + PlaySeByIdVolume(se_id, volume); +} diff --git a/src/main_02017C80.c b/src/main_02017C80.c index 35204ee7..a9af756d 100644 --- a/src/main_02017C80.c +++ b/src/main_02017C80.c @@ -1,4 +1,19 @@ #include "main_02017C80.h" +#include "main_0202AAA8.h" + +extern u16 _0209915C[]; + +extern s16 _022A4BE8; + +extern void sub_0201831C(s32 a, s32 b, s32 c, s32 d); + +extern void sub_020183A0(s32 a, s32 b, s32 c); + +extern void sub_020183E4(s32 a, s32 b, s32 c); + +extern void sub_02018428(s32 a); + +extern void sub_02018460(s32 a, s32 b, s32 c, s32 d); void PlaySeByIdVolume(s32 se_id, s32 volume); @@ -6,3 +21,43 @@ void PlaySeByIdVolumeWrapper(s32 se_id) { PlaySeByIdVolume(se_id, 0x100); } + +void sub_02017C90(s32 a, s32 b, s32 c, s32 d) +{ + sub_0201831C(a, b, c, d); +} + +void sub_02017C9C(s32 a, s32 b, s32 c) +{ + sub_020183A0(a, b, c); +} + +void sub_02017CA8(s32 a, s32 b, s32 c) +{ + sub_020183E4(a, b, c); +} + +void sub_02017CB4(s32 a) +{ + sub_02018428(a); +} + +void sub_02017CC0(s32 a, s32 b, s32 c, s32 d) +{ + sub_02018460(a, b, c, d); +} + +void PlaySeVolumeWrapper(s32 idx) +{ + PlaySeByIdVolume(_0209915C[idx], 0x100); +} + +void sub_02017CEC(void) +{ + if (_022A4BE8 > 0) { + return; + } + + _022A4BE8 = 3; + PlaySeByIdVolume(0x3F05, 0x100); +} diff --git a/src/main_0201BCCC.c b/src/main_0201BCCC.c new file mode 100644 index 00000000..efaf286a --- /dev/null +++ b/src/main_0201BCCC.c @@ -0,0 +1,134 @@ +#include "main_0201BCCC.h" + +extern void sub_0201B2DC(struct unk_oam_sub *p, s32 a, s32 b, s32 c, s32 d); + +extern void sub_0201B2A0(struct unk_oam_sub *p); + +extern void CopyAttributesToOamBothScreens(void); + +extern void sub_0201BDEC(void); + +extern void sub_0201B004(struct unk_oam_elem *e); + +extern void sub_0201BB20(struct unk_oam_sub *p); + +extern void GroupOamAttributesWrapper(struct unk_oam_sub *p); + +extern void sub_0201AFB8(struct unk_oam_elem *e); + +extern void sub_0200302C(s32 a); + +extern void sub_020030FC(s32 a); + +extern void CopyAttributesToOamWrapper(struct unk_oam_sub *p); + +extern void sub_0201AECC(struct unk_oam_elem *e, s32 a, s32 b); + +extern void sub_0201AEB4(struct unk_oam_elem *e, s32 a); + +extern void sub_0201AD84(struct unk_oam_elem *e); + +extern struct unk_0201BCCC *OBJ_GRAPHICS_CONTROLS_PTR; + +extern void sub_0201AD7C(struct unk_oam_elem *e); + +void sub_0201BCCC(s32 idx) +{ + sub_0201AD7C(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x1DC8[idx]); +} + +void sub_0201BCF4(s32 idx) +{ + sub_0201AD84(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x1DC8[idx]); +} + +void sub_0201BD1C(u32 a, s32 idx) +{ + struct unk_oam_elem *e; + + e = &OBJ_GRAPHICS_CONTROLS_PTR->field_0x1DC8[idx]; + e->field_0x78 = (u8) ((e->field_0x78 & ~1) | (a & 1)); +} + +void sub_0201BD50(s32 a, s32 idx) +{ + sub_0201AEB4(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x1DC8[idx], a); +} + +void sub_0201BD80(s32 a, s32 b, s32 idx) +{ + sub_0201AECC(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x1DC8[idx], a, b); +} + +void CopyAttributesToOamBothScreens(void) +{ + sub_0200302C(8); + CopyAttributesToOamWrapper(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x0[0]); + CopyAttributesToOamWrapper(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x0[1]); + sub_020030FC(8); +} + +void sub_0201BDEC(void) +{ + sub_0200302C(8); + CopyAttributesToOamWrapper(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x0[2]); + CopyAttributesToOamWrapper(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x0[3]); + sub_020030FC(8); +} + +void sub_0201BE28(void) +{ + sub_0201AFB8(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x1DC8[0]); + sub_0201AFB8(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x1DC8[1]); +} + +void GroupOamAttributesBothScreens(void) +{ + GroupOamAttributesWrapper(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x0[0]); + GroupOamAttributesWrapper(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x0[1]); +} + +void sub_0201BE84(void) +{ + GroupOamAttributesWrapper(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x0[2]); + GroupOamAttributesWrapper(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x0[3]); +} + +void sub_0201BEB0(void) +{ + sub_0200302C(8); + sub_0201B004(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x1DC8[0]); + sub_0201B004(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x1DC8[1]); + sub_0201BB20(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x0[0]); + sub_0201BB20(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x0[1]); + sub_020030FC(8); +} + +void sub_0201BF10(void) +{ + sub_0200302C(8); + sub_0201BB20(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x0[2]); + sub_0201BB20(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x0[3]); + sub_020030FC(8); +} + +void sub_0201BF4C(void) +{ + sub_0201BEB0(); + sub_0201BF10(); + CopyAttributesToOamBothScreens(); + sub_0201BDEC(); +} + +void sub_0201BF64(void) +{ + sub_0201B2A0(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x0[0]); + sub_0201B2A0(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x0[1]); + sub_0201B2A0(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x0[2]); + sub_0201B2A0(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x0[3]); +} + +void sub_0201BFAC(s32 a, s32 b, s32 c, s32 d, s32 idx) +{ + sub_0201B2DC(&OBJ_GRAPHICS_CONTROLS_PTR->field_0x0[idx], a, b, c, d); +} diff --git a/src/main_0202613C.c b/src/main_0202613C.c new file mode 100644 index 00000000..468fc79e --- /dev/null +++ b/src/main_0202613C.c @@ -0,0 +1,16 @@ +#include "main_0202613C.h" + +extern void sub_02020B14(void *p); + + + + + + + + + +void sub_0202613C(struct unk_02026130* p) +{ + sub_02020B14((void *) p + 4); +} diff --git a/src/main_02026174.c b/src/main_02026174.c new file mode 100644 index 00000000..956b12e1 --- /dev/null +++ b/src/main_02026174.c @@ -0,0 +1,58 @@ +#include "main_02026174.h" + + +extern void sub_02020B74(void *p); + +extern void sub_02020BB8(void *p); + +extern void sub_02020BC4(void *p); + +extern void sub_02020CCC(void *p); + +extern void sub_02020D18(void *p); + +extern void sub_02020D40(void *p); + +extern void sub_02020D54(void *p); + +extern void sub_02020D5C(void *p); + +void sub_02026174(struct unk_02026130* p) +{ + sub_02020B74((void *) p + 4); +} + +void sub_02026184(struct unk_02026130* p) +{ + sub_02020BB8((void *) p + 4); +} + +void sub_02026194(struct unk_02026130* p) +{ + sub_02020BC4((void *) p + 4); +} + +void sub_020261A4(struct unk_02026130* p) +{ + sub_02020CCC((void *) p + 4); +} + +void sub_020261B4(struct unk_02026130* p) +{ + sub_02020D18((void *) p + 4); +} + +void sub_020261C4(struct unk_02026130* p) +{ + sub_02020D40((void *) p + 4); +} + +void sub_020261D4(struct unk_02026130* p) +{ + sub_02020D54((void *) p + 4); +} + +void sub_020261E4(struct unk_02026130* p) +{ + sub_02020D5C((void *) p + 4); +} diff --git a/src/main_0202B4C4.c b/src/main_0202B4C4.c index 8e111952..dd953713 100644 --- a/src/main_0202B4C4.c +++ b/src/main_0202B4C4.c @@ -1,4 +1,11 @@ #include "main_0202B4C4.h" +#include "main_02032558.h" + +extern s32 GetCurrentPage(struct unk_02032558 *p); + +extern void *GetWindowContents(s32 window_id); + +extern s32 GetSelectedItemOnPage(struct unk_02032558 *p); #include "main_0202AAA8.h" #include "main_02001188.h" @@ -25,3 +32,13 @@ bool8 CheckSimpleMenuField0x1A0(s32 window_id) return menu->field_0x1A0 == 0; } + +s32 sub_0202B530(s32 window_id) +{ + return GetSelectedItemOnPage(GetWindowContents(window_id) + 4); +} + +s32 sub_0202B544(s32 window_id) +{ + return GetCurrentPage(GetWindowContents(window_id) + 4); +} diff --git a/src/main_020307A4.c b/src/main_020307A4.c index f8d4afda..a86d9ae4 100644 --- a/src/main_020307A4.c +++ b/src/main_020307A4.c @@ -1,4 +1,6 @@ #include "main_020307A4.h" + +extern void sub_02032984(void *p); #include "main_0202AAA8.h" #include "main_02001188.h" @@ -8,3 +10,33 @@ void SetAdvancedTextBoxField0x1C4(s32 window_id, u8 value) w->field_0x1C4 = value; } + +void sub_020307B8(s32 window_id) +{ + struct unk_0202AAA8 *w; + + w = GetWindowContents(window_id); + w->field_0x1BC = 1; + w->field_0x1C0[0] = 0; + w->field_0x1C0[1] = 0; + w->field_0x104 &= ~0x800000; + sub_02032984((u8 *) w + 4); +} + +void sub_020307EC(s32 window_id) +{ + struct unk_0202AAA8 *w; + bool8 f; + + w = GetWindowContents(window_id); + f = ((struct unk_0202AAA8 *) GetWindowContents(window_id))->field_0x1BC == 7; + + if (f) { + sub_020307B8(window_id); + return; + } + + if (w->field_0x1BC == 6) { + w->field_0x1BC = 0; + } +} diff --git a/src/main_02030A40.c b/src/main_02030A40.c index 586b81de..36a9ec51 100644 --- a/src/main_02030A40.c +++ b/src/main_02030A40.c @@ -1,9 +1,34 @@ #include "main_02030A40.h" #include "main_0202AAA8.h" +extern void sub_02031C74(void *p, u32 flags); + +#include "main_0202AAA8.h" + s32 GetAdvancedTextBoxFlags2(s32 window_id) { struct unk_0202AAA8 *w = GetWindowContents(window_id); return w->field_0x1B0; } + +void sub_02030A50(s32 window_id, s32 value) +{ + struct unk_02030A50 *w = GetWindowContents(window_id); + + w->field_0xC0 = value; +} + +s32 sub_02030A64(s32 window_id) +{ + struct unk_02030A50 *w = GetWindowContents(window_id); + + return w->field_0xC0; +} + +void sub_02030A74(s32 window_id, u32 flags) +{ + struct unk_02030A50 *w = GetWindowContents(window_id); + + sub_02031C74((void *) w + 4, flags); +} diff --git a/src/main_020327CC.c b/src/main_020327CC.c new file mode 100644 index 00000000..f35e7589 --- /dev/null +++ b/src/main_020327CC.c @@ -0,0 +1,134 @@ +#include "main_020327CC.h" +#include "main_020332AC.h" + +extern void sub_02032754(struct unk_020332AC *m); + +void sub_020327CC(struct unk_020332AC *m, s32 a, s32 b) +{ + m->field_0xD0 = a; + m->field_0xC4 = b; + m->field_0xBC = 0; + m->field_0xC8 = 0; +} + +void sub_020327E4(struct unk_020332AC *m) +{ + s32 page; + + page = m->field_0xC8; + + if (page >= m->field_0xCC - 1) { + page = 0; + } else { + page = page + 1; + } + + m->field_0xC8 = page; + sub_02032754(m); +} + +void sub_0203280C(struct unk_020332AC *m) +{ + s32 page; + + page = m->field_0xC8; + + if (page <= 0) { + page = m->field_0xCC; + } + + m->field_0xC8 = page - 1; + sub_02032754(m); +} + +void sub_0203282C(struct unk_020332AC *m) +{ + s32 last; + s32 page; + + last = m->field_0xCC - 1; + page = m->field_0xC8; + + if (page >= last) { + m->field_0xC8 = 0; + } else { + page += 10; + + if (page <= last) { + last = page; + } + + m->field_0xC8 = last; + } + + sub_02032754(m); +} + +void sub_02032864(struct unk_020332AC *m) +{ + s32 page; + + page = m->field_0xC8; + + if (page <= 0) { + m->field_0xC8 = m->field_0xCC - 1; + } else { + page -= 10; + + if (page < 0) { + page = 0; + } + + m->field_0xC8 = page; + } + + sub_02032754(m); +} + +void sub_02032894(struct unk_020332AC *m, s32 a) +{ + if (a > 0) { + m->field_0xB8 = (a << 8) / m->field_0xC4; + } else { + m->field_0xB8 = (((m->field_0x4 - m->field_0x0) - m->field_0xB4) << 8) / + m->field_0xC4; + } +} + +s32 GetPageItemYOffset(struct unk_020332AC *m, s32 i) +{ + return m->field_0xB4 + (i * m->field_0xB8) / 256; +} + +s32 sub_020328F4(struct unk_020332AC *m) +{ + if (m->field_0x10 & 0x8000) { + if (m->field_0xCC > 1) { + return 1; + } + } + + return 0; +} + +s32 sub_02032918(struct unk_020332AC *m) +{ + if (m->field_0x10 & 0x8000) { + if (m->field_0xCC > 1) { + return 1; + } + } + + return 0; +} + +s32 sub_0203293C(struct unk_020332AC *m) +{ + if (m->field_0x10 & 0x8000) { + if (m->field_0xCC > 1) { + return 1; + } + } + + return 0; +} diff --git a/src/main_020332AC.c b/src/main_020332AC.c new file mode 100644 index 00000000..5a81b91d --- /dev/null +++ b/src/main_020332AC.c @@ -0,0 +1,113 @@ +#include "main_020332AC.h" + +extern void PlaySeVolumeWrapper(s32 idx); + +extern void sub_020331D4(struct unk_020332AC *m); + +void InventoryMenuPreviousPage(struct unk_020332AC *m) +{ + s32 page; + + page = m->field_0xC8; + + if (page <= 0) { + page = m->field_0xCC; + } + + m->field_0xC8 = page - 1; + sub_020331D4(m); +} + +void InventoryMenuNext10Pages(struct unk_020332AC *m) +{ + s32 page; + + page = m->field_0xC8 + 10; + + if (page >= m->field_0xCC) { + page = m->field_0xCC - 1; + } + + m->field_0xC8 = page; + sub_020331D4(m); +} + +void InventoryMenuPrevious10Pages(struct unk_020332AC *m) +{ + s32 page; + + page = m->field_0xC8 - 10; + + if (page < 0) { + page = 0; + } + + m->field_0xC8 = page; + sub_020331D4(m); +} + +void sub_0203330C(struct unk_020332AC *m, s32 a) +{ + if (a > 0) { + m->field_0xB8 = (a << 8) / m->field_0xC4; + } else { + m->field_0xB8 = (((m->field_0x4 - m->field_0x0) - m->field_0xB4) << 8) / + m->field_0xC4; + } +} + +s32 sub_02033350(struct unk_020332AC *m, s32 i) +{ + return m->field_0xB4 + (i * m->field_0xB8) / 256; +} + +s32 sub_0203336C(struct unk_020332AC *m) +{ + if (m->field_0x10 & 0x8000) { + if (m->field_0xCC > 1) { + return 1; + } + } + + return 0; +} + +s32 sub_02033390(struct unk_020332AC *m) +{ + if (m->field_0x10 & 0x8000) { + if (m->field_0xCC > 1) { + return 1; + } + } + + return 0; +} + +s32 sub_020333B4(struct unk_020332AC *m) +{ + if (m->field_0x10 & 0x8000) { + if (m->field_0xCC > 1) { + return 1; + } + } + + return 0; +} + +s32 sub_020333D8(struct unk_020332AC *m, s32 idx) +{ + if (!(m->field_0x10 & 0x10)) { + return 0; + } + + PlaySeVolumeWrapper(idx); + return 1; +} + +void sub_020333FC(struct unk_020332AC *m) +{ + m->field_0xE8 = -1; + m->field_0xF0 = -1; + m->field_0xE4 = -1; + m->field_0xEC = -1; +} diff --git a/src/main_0203C910.c b/src/main_0203C910.c new file mode 100644 index 00000000..899d81f1 --- /dev/null +++ b/src/main_0203C910.c @@ -0,0 +1,109 @@ +#include "main_0203C910.h" + +extern void ov11_02310C18(void); + +extern void sub_0203CCD8(s16 a); + +extern s32 ov11_0230D220(void); + +extern void ov11_0230D92C(void); + +extern const struct unk_0209C7F4 _0209C7F4; + +extern void MemFree(void * ptr); + +extern struct unk_020AFE70 *_020AFE70; + +bool8 sub_0203C910(void) +{ + if (_020AFE70 == NULL) { + return 0; + } + + return _020AFE70->field_0xC == 4; +} + +s32 sub_0203C940(void) +{ + if (_020AFE70 == NULL) { + return 1; + } + + if (_020AFE70->field_0xC != 0xA) { + return 0; + } + + MemFree(_020AFE70); + _020AFE70 = NULL; + return 1; +} + +void sub_0203C984(void) +{ + if (_020AFE70 != NULL) { + _020AFE70->field_0x8 = 0; + } +} + +s32 sub_0203C9A0(s16 a) +{ + if (a == _020AFE70->field_0x4) { + return 0; + } + + _020AFE70->field_0x4 = a; + return 1; +} + +void sub_0203C9C4(void) +{ + _020AFE70->field_0x6 = -1; + _020AFE70->field_0x4 = -1; +} + +void sub_0203C9E4(void) +{ + struct unk_0209C7F4 t; + + if (_020AFE70 == NULL) { + return; + } + + t = _0209C7F4; + t.field_0x0[_020AFE70->field_0xC](); +} + +void sub_0203CA40(void) +{ + if (ov11_0230D220()) { + return; + } + + ov11_0230D92C(); + _020AFE70->field_0xC = 1; +} + +void sub_0203CA6C(void) +{ + if (ov11_0230D220() == 0) { + _020AFE70->field_0xC = 2; + } +} + +void sub_0203CA90(void) +{ + if (ov11_0230D220()) { + return; + } + + sub_0203CCD8(_020AFE70->field_0x4); + ov11_02310C18(); + _020AFE70->field_0xC = 3; +} + +void sub_0203CACC(void) +{ + if (ov11_0230D220() == 0) { + _020AFE70->field_0xC = 4; + } +} diff --git a/src/main_02042AF8.c b/src/main_02042AF8.c index d2bbb0e6..9aa9971a 100644 --- a/src/main_02042AF8.c +++ b/src/main_02042AF8.c @@ -1,5 +1,7 @@ #include "main_02042AF8.h" +extern struct unk_020AFED4 UNK_STORAGE_STRUCT_0XC; + void ClearBagSelectedItemTable(void) { s32 i; @@ -8,3 +10,32 @@ void ClearBagSelectedItemTable(void) UNK_STORAGE_STRUCT_0XC.field_0x8[i] = 0; } } + +s32 sub_02042B20(void) +{ + s32 n; + s32 i; + + n = 0; + + for (i = 0; i < 0x32; i++) { + if (UNK_STORAGE_STRUCT_0XC.field_0x8[i] & 1) { + n++; + } + } + + return n; +} + +s32 sub_02042B50(void) +{ + s32 i; + + for (i = 0; i < 0x32; i++) { + if (UNK_STORAGE_STRUCT_0XC.field_0x8[i] & 1) { + return i; + } + } + + return -1; +} diff --git a/src/main_020483B8.c b/src/main_020483B8.c new file mode 100644 index 00000000..709ac865 --- /dev/null +++ b/src/main_020483B8.c @@ -0,0 +1,78 @@ +#include "main_020483B8.h" +#include "script_variable.h" + +extern struct unk_020AFEF4 *_020AFEF4; + +extern void sub_020476EC(s16 a); + +extern bool8 sub_0204771C(void); + +extern void sub_02048B74(void); + +extern void sub_02048B48(void); + +extern void sub_0206637C(void); + +extern void sub_02048C0C(s32 a); + +extern void sub_02048C4C(s32 a); + +extern void sub_02048C5C(void); + +extern s32 sub_02048C3C(void); + +extern void ClearAdventureLogStruct(void); + +extern void sub_0204F9B8(void); + +void sub_020483B8(void) +{ + sub_020476EC(_020AFEF4->field_0x31B8); +} + +bool8 sub_020483D8(void) +{ + bool8 ok = sub_0204771C(); + + if (ok) { + _020AFEF4->field_0x31B2 = 0; + } + + return ok; +} + +bool8 sub_02048400(void) +{ + return _020AFEF4 != NULL; +} + +void sub_02048420(void) +{ + DebugPrintEventFlagSize(); + sub_02048B74(); +} + +void sub_02048430(void) +{ + sub_0206637C(); + sub_02048C0C(0); + sub_02048C4C(-1); + sub_0204F9B8(); + sub_02048B48(); +} + +void sub_02048454(void) +{ + ClearAdventureLogStruct(); + sub_0206637C(); + sub_02048C0C(0); + sub_02048C4C(-1); + sub_0204F9B8(); + sub_02048B48(); + sub_02048C5C(); +} + +bool8 sub_02048480(void) +{ + return sub_02048C3C() != -1; +} diff --git a/src/main_02048B48.c b/src/main_02048B48.c new file mode 100644 index 00000000..33856ec4 --- /dev/null +++ b/src/main_02048B48.c @@ -0,0 +1,32 @@ +#include "main_02048B48.h" + +extern void InitOptions(void); + +extern void InitScriptVariableValues(void); + +extern void sub_02052C74(void); + +extern void sub_0200CABC(void); + +extern void StoreDefaultTeamData(void); + +extern void ResetGlobalProgress(void); + +extern void sub_0205B478(void); + +extern void sub_0205C75C(void); + +extern void ClearCroagunkItems(void); + +void sub_02048B48(void) +{ + InitOptions(); + InitScriptVariableValues(); + sub_02052C74(); + sub_0200CABC(); + StoreDefaultTeamData(); + ResetGlobalProgress(); + sub_0205B478(); + sub_0205C75C(); + ClearCroagunkItems(); +} diff --git a/src/main_02048BB4.c b/src/main_02048BB4.c new file mode 100644 index 00000000..fb8795ef --- /dev/null +++ b/src/main_02048BB4.c @@ -0,0 +1,46 @@ +#include "main_02048BB4.h" + +extern s32 _022AAE70; + +extern const char _0209CD4C[]; + +extern void Debug_Print0(const char *fmt, s32 a, s32 b); + +extern s32 strncmp(const char *a, const char *b, s32 n); + +extern struct unk_020AFF38 _020AFF38; + +extern char *strncpy(char *d, const char *s, s32 n); + +extern char *ReadStringSave(char *dst); + +char * ReadStringSave(char *dst) +{ + return strncpy(dst, _020AFF38.field_0x0, 0x20); +} + +bool8 CheckStringSave(const char *s) +{ + return strncmp(s, _020AFF38.field_0x0, 0x20) == 0; +} + +s32 sub_02048BFC(void) +{ + return _020AFF38.field_0x4; +} + +void sub_02048C0C(s32 v) +{ + Debug_Print0(_0209CD4C, _020AFF38.field_0x4, v); + _020AFF38.field_0x4 = v; +} + +s32 sub_02048C3C(void) +{ + return _022AAE70; +} + +void sub_02048C4C(s32 v) +{ + _022AAE70 = v; +} diff --git a/src/main_02048CB8.c b/src/main_02048CB8.c new file mode 100644 index 00000000..df856bc2 --- /dev/null +++ b/src/main_02048CB8.c @@ -0,0 +1,14 @@ +#include "main_02048CB8.h" + +extern struct unk_022AAE74 _022AAE74; + +extern s32 Debug_GetDebugFlag(s32 id); + +s32 sub_02048CB8(void) +{ + if (Debug_GetDebugFlag(9) && _022AAE74.field_0x28 == 0x000F1208) { + return 0x000F1208 - 1; + } + + return _022AAE74.field_0x28; +} diff --git a/src/main_0204D188.c b/src/main_0204D188.c new file mode 100644 index 00000000..c7220fdb --- /dev/null +++ b/src/main_0204D188.c @@ -0,0 +1,75 @@ +#include "main_0204D188.h" + +extern s16 FemaleToMaleForm(s16 monster_id); + +extern struct unk_020AFE60 *GLOBAL_PROGRESS_PTR; + +bool8 GetMonsterFlag1(s16 id) +{ + return (GLOBAL_PROGRESS_PTR->field_0x0[id / 32] & (1 << (id % 32))) != 0; +} + +void SetMonsterFlag2(s16 id) +{ + s16 m; + + m = FemaleToMaleForm(id); + GLOBAL_PROGRESS_PTR->field_0x98[m / 32] |= 1 << (m % 32); +} + +bool8 HasMonsterBeenAttackedInDungeons(s16 id) +{ + s16 m; + + m = FemaleToMaleForm(id); + return (GLOBAL_PROGRESS_PTR->field_0x98[m / 32] & (1 << (m % 32))) != 0; +} + +void SetDungeonTipShown(s32 idx) +{ + GLOBAL_PROGRESS_PTR->field_0x94[idx / 32] |= 1 << (idx % 32); +} + +bool8 GetDungeonTipShown(s32 idx) +{ + if (idx >= 0x1F) { + return 0; + } + + return (GLOBAL_PROGRESS_PTR->field_0x94[idx / 32] & (1 << (idx % 32))) != 0; +} + +void SetMaxReachedFloor(u32 idx, u8 floor) +{ + if (idx < 0xB4) { + GLOBAL_PROGRESS_PTR->field_0x143[idx] = floor; + } +} + +u8 GetMaxReachedFloor(u32 idx) +{ + if (idx >= 0xB4) { + return 0; + } + + return GLOBAL_PROGRESS_PTR->field_0x143[idx]; +} + +void IncrementNbAdventures(void) +{ + GLOBAL_PROGRESS_PTR->field_0x1F8 += 1; + + if (GLOBAL_PROGRESS_PTR->field_0x1F8 > 0xF423F) { + GLOBAL_PROGRESS_PTR->field_0x1F8 = 0xF423F; + } +} + +u32 GetNbAdventures(void) +{ + return GLOBAL_PROGRESS_PTR->field_0x1F8; +} + +s32 CanMonsterSpawn(void) +{ + return 1; +} diff --git a/src/main_0204F9B8.c b/src/main_0204F9B8.c new file mode 100644 index 00000000..5db295a4 --- /dev/null +++ b/src/main_0204F9B8.c @@ -0,0 +1,41 @@ +#include "main_0204F9B8.h" + +extern void sub_02050E8C(u8 *p, s32 a); + +extern void sub_02050E5C(u8 *p, s32 a); +#include "script_variable.h" + +extern u8 PLAY_TIME_SECONDS[]; + +extern void sub_0204F9B8(void); + +extern void ResetPlayTimer(u8 *timer); + +extern void PlayTimerTick(u8 *timer); + +extern s32 GetPlayTimeSeconds(u8 *timer); + +void sub_0204F9B8(void) +{ + ResetPlayTimer(PLAY_TIME_SECONDS); +} + +void sub_0204F9CC(void) +{ + PlayTimerTick(PLAY_TIME_SECONDS); +} + +s32 sub_0204F9E0(void) +{ + return GetPlayTimeSeconds(PLAY_TIME_SECONDS); +} + +void sub_0204F9F4(s32 a) +{ + sub_02050E5C(PLAY_TIME_SECONDS, a); +} + +void sub_0204FA0C(s32 a) +{ + sub_02050E8C(PLAY_TIME_SECONDS, a); +} diff --git a/src/main_02051760.c b/src/main_02051760.c index f471707b..eb5375a8 100644 --- a/src/main_02051760.c +++ b/src/main_02051760.c @@ -1,4 +1,7 @@ #include "main_02051760.h" + +extern u8 _020A20B1[]; +extern u8 ARM9_UNKNOWN_TABLE__NA_20A20B0[]; #include "enums.h" #include "util.h" @@ -14,3 +17,21 @@ bool32 JoinedAtRangeCheck2(u8 joined_at) { return joined_at == DUNGEON_BEACH || (joined_at >= DUNGEON_DUMMY_0xEC && DUNGEON_DUMMY_0xF0 >= joined_at); } + +u8 sub_02051788(s32 i) +{ + return _020A20B1[i * 2]; +} + +u8 sub_02051798(u8 v) +{ + s32 i; + + for (i = 0; i < 0x100; i++) { + if (v == ARM9_UNKNOWN_TABLE__NA_20A20B0[i * 2 + 1]) { + return ARM9_UNKNOWN_TABLE__NA_20A20B0[i * 2]; + } + } + + return 0xFF; +} diff --git a/src/main_02058C3C.c b/src/main_02058C3C.c index ecd2d0c1..7e8172c0 100644 --- a/src/main_02058C3C.c +++ b/src/main_02058C3C.c @@ -1,7 +1,41 @@ #include "main_02058C3C.h" + +extern s16 TACTICS_UNLOCK_LEVEL_TABLE[]; #include "tactics_data.h" bool8 DoesTacticFollowLeader(enum tactic_id tactic_id) { return TACTICS_FOLLOW_LEADER[tactic_id]; } + +void GetUnlockedTactics(u8 *out, s32 level) +{ + s32 i; + s32 n; + + n = 0; + + for (i = 0; i < 0xC; i++) { + if (TACTICS_UNLOCK_LEVEL_TABLE[i] <= level) { + out[n] = i; + n++; + } + } + + for (; n < 0xC; n++) { + out[n] = 0xB; + } +} + +void GetUnlockedTacticFlags(u8 *out, s32 level) +{ + s32 i; + + for (i = 0; i < 0xC; i++) { + if (TACTICS_UNLOCK_LEVEL_TABLE[i] <= level) { + out[i] = 1; + } else { + out[i] = 0; + } + } +} diff --git a/src/main_02058CD8.c b/src/main_02058CD8.c index f1244058..16bb6a7d 100644 --- a/src/main_02058CD8.c +++ b/src/main_02058CD8.c @@ -1,4 +1,6 @@ #include "main_02058CD8.h" +#include "main_02052B28.h" +#include "progression.h" #include "iq_skills.h" bool8 CanLearnIqSkill(s32 iq_amount, enum iq_skill_id iq_id) @@ -8,3 +10,38 @@ bool8 CanLearnIqSkill(s32 iq_amount, enum iq_skill_id iq_id) return IQ_SKILLS[iq_id] <= iq_amount; } + +s32 GetLearnableIqSkills(u8 *out, s16 monster_id, s32 iq) +{ + s32 i; + s32 n; + u8 skill; + bool8 ok; + + n = 0; + + for (i = 0; i < 25; i++) { + skill = IQ_GROUP_SKILLS[GetIqGroup(monster_id)][i & 0xFF]; + + if (skill == 0xFF) { + break; + } + + if (skill == 0x18) { + ok = GetResolvedPerformanceProgressFlag(3); + } else { + ok = CanLearnIqSkill(iq, (enum iq_skill_id) skill); + } + + if (ok) { + out[n] = skill; + n++; + } + } + + for (i = n; i < 0x45; i++) { + out[i] = 0; + } + + return n; +} diff --git a/src/main_02058E68.c b/src/main_02058E68.c index 9dd7dc5c..b61ff97f 100644 --- a/src/main_02058E68.c +++ b/src/main_02058E68.c @@ -1,4 +1,5 @@ #include "main_02058E68.h" +#include "main_02058CD8.h" #include "iq_skills.h" #include "main_02052B28.h" #include "monster_parameters.h" @@ -34,3 +35,29 @@ enum iq_skill_id GetSpeciesIqSkill(s16 monster_id, u8 index) { return IQ_GROUP_SKILLS[GetIqGroup(monster_id)][index]; } + +void DisableAllIqSkills(u32 *flags) +{ + s16 i; + + for (i = 0; i < 3; i++) { + flags[i] = 0; + } +} + +void EnableAllLearnableIqSkills(u32 *flags, s16 monster_id, s32 iq) +{ + u8 skills[0x48]; + s32 i; + + GetLearnableIqSkills(skills, monster_id, iq); + DisableAllIqSkills(flags); + + for (i = 0; i < 0x45; i++) { + if (skills[i] == 0) { + break; + } + + EnableIqSkill(flags, *(volatile u8 *) &skills[i]); + } +} diff --git a/src/main_0205EC18.c b/src/main_0205EC18.c index 66b25094..e629a060 100644 --- a/src/main_0205EC18.c +++ b/src/main_0205EC18.c @@ -9,3 +9,16 @@ void sub_0205EC18(u32 index) { ClearMissionData((struct mission*) (MISSION_DELIVER_LIST_PTR.unk18 + 0x300 + index * 32)); } + +u8 * sub_0205EC38(s32 i) +{ + u8 *p; + + p = MISSION_DELIVER_LIST_PTR.unk18 + 0x320; + return &p[i * 0x20]; +} + +bool8 sub_0205EC50(s32 i) +{ + return MISSION_DELIVER_LIST_PTR.unk18[i * 0x20 + 0x320] == 0; +} diff --git a/src/main_02065B3C.c b/src/main_02065B3C.c index 4c9817d2..402714ba 100644 --- a/src/main_02065B3C.c +++ b/src/main_02065B3C.c @@ -1,4 +1,10 @@ #include "enums.h" + +extern void StrncpySimpleNoPadSafe(u8 *dest, const u8 *src, u32 n); + +extern u8 _022B7310[]; + +extern void StrncpySimple(u8 *dest, const u8 *src, s32 n); #include "main_02065B3C.h" #include "script_variable.h" @@ -57,3 +63,32 @@ void SetNewFriendActor(enum monster_id new_friend) { SPECIAL_ACTORS.new_friend = new_friend; } + +void sub_02065BD8(u8 *dst, s32 n) +{ + StrncpySimple(dst, _022B7310, n); +} + +void sub_02065BF0(u8 *dst) +{ + StrncpySimpleNoPadSafe(dst, _022B7310, 10); +} + +void sub_02065C08(u8 *src, s32 n) +{ + u8 *dst; + s32 i; + + dst = _022B7310; + i = 0; + + while (i < n) { + *dst++ = *src++; + i++; + } + + while (i < 0x10) { + *dst++ = 0; + i++; + } +} 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_00_0230E3E8.c b/src/overlay_00_0230E3E8.c new file mode 100644 index 00000000..6c21999b --- /dev/null +++ b/src/overlay_00_0230E3E8.c @@ -0,0 +1,65 @@ +#include "overlay_00_0230E3E8.h" + +s32 Gt2GetConnectionState(struct unk_0230E3E8* c) +{ + s32 state = c->field_0xC; + + if (state < 5) { + return 0; + } + + if (state == 5) { + return 1; + } + + if (state == 6) { + return 2; + } + + return 3; +} + +u32 Gt2GetRemoteIP(struct unk_0230E3E8* c) +{ + return c->field_0x0; +} + +u16 Gt2GetRemotePort(struct unk_0230E3E8* c) +{ + return c->field_0x4; +} + +u32 Gt2GetLocalIP(struct unk_0230E420* s) +{ + return s->field_0x4; +} + +u16 Gt2GetLocalPort(struct unk_0230E420* s) +{ + return s->field_0x8; +} + +u32 Gt2GetOutgoingBufferSize(struct unk_0230E3E8* c) +{ + return c->field_0x54; +} + +u32 Gt2GetOutgoingBufferFreeSpace(struct unk_0230E3E8* c) +{ + return c->field_0x54 - c->field_0x58; +} + +s32 Gt2GetSocketSocket(struct unk_0230E420* s) +{ + return s->field_0x0; +} + +void Gt2SetUnrecognizedMessageCallback(struct unk_0230E3E8* c, void *callback) +{ + c->field_0x30 = callback; +} + +void Gt2SetConnectionData(struct unk_0230E3E8* c, void *data) +{ + c->field_0x40 = data; +} diff --git a/src/overlay_01_0233755C.c b/src/overlay_01_0233755C.c new file mode 100644 index 00000000..d51f8ab7 --- /dev/null +++ b/src/overlay_01_0233755C.c @@ -0,0 +1,77 @@ +#include "overlay_01_0233755C.h" + +extern s8 ov01_0233C1D4[]; + +extern struct struct_1 ov01_0233BCDC; + +extern void ov01_0232F3F4(void); + +extern struct struct_1 ov01_0233BCCC; + +extern s8 ov01_0233C1B8[]; + +extern s32 ov01_0233C1B0; + +extern u32 InitMenu(struct struct_1 *dst); + +extern struct struct_1 ov01_0233BCBC; + +extern s32 ov01_0233CA78; + +extern void ov01_023310B8(s32 a); + +void ov01_0233755C(void) +{ + if (ov01_0233CA78 == 0) { + ov01_023310B8(8); + } else { + ov01_023310B8(0); + } +} + +u32 ov01_0233758C(void) +{ + return InitMenu(&ov01_0233BCBC); +} + +s32 ov01_023375A0(void) +{ + return ov01_0233C1B0; +} + +void ov01_023375B0(s32 a) +{ + ov01_0233C1B0 = a; +} + +s8 ov01_023375C0(s32 i) +{ + return ov01_0233C1B8[i]; +} + +void ov01_023375D0(s32 i, s8 v) +{ + ov01_0233C1B8[i] = v; +} + +u32 ov01_023375E0(void) +{ + return InitMenu(&ov01_0233BCCC); +} + +void ov01_023375F4(void) +{ + if (InitMenu(&ov01_0233BCDC)) { + ov01_0232F3F4(); + } +} + +s8 ov01_02337614(s32 i) +{ + return ov01_0233C1D4[i]; +} + +void ov01_02337624(s32 i, s8 v) +{ + ov01_0233C1D4[i] = v; +} diff --git a/src/overlay_04_0233CA80.c b/src/overlay_04_0233CA80.c new file mode 100644 index 00000000..a477bf84 --- /dev/null +++ b/src/overlay_04_0233CA80.c @@ -0,0 +1,39 @@ +#include "overlay_04_0233CA80.h" +#include "main_0200330C.h" + +extern struct unk_0233F660 ov04_0233F660; + +void ov04_0233CA80(void) +{ + MemZero((u8 *) &ov04_0233F660, 0x10); +} + +void ov04_0233CA98(s32 a) +{ + ov04_0233F660.field_0x0 = a; +} + +s32 ov04_0233CAA8(void) +{ + return ov04_0233F660.field_0x0; +} + +void ov04_0233CAB8(s32 a) +{ + ov04_0233F660.field_0x4 = a; +} + +s32 ov04_0233CAC8(void) +{ + return ov04_0233F660.field_0x4; +} + +void ov04_0233CAD8(u8 a) +{ + ov04_0233F660.field_0xC = a; +} + +u8 ov04_0233CAE8(void) +{ + return ov04_0233F660.field_0xC; +} diff --git a/src/overlay_06_0233CA80.c b/src/overlay_06_0233CA80.c new file mode 100644 index 00000000..66bc41be --- /dev/null +++ b/src/overlay_06_0233CA80.c @@ -0,0 +1,19 @@ +#include "overlay_06_0233CA80.h" +#include "main_0200330C.h" + +extern struct unk_0233EEE0 ov06_0233EEE0; + +void ov06_0233CA80(void) +{ + MemZero((u8 *) &ov06_0233EEE0, 0xC); +} + +void ov06_0233CA98(s32 a) +{ + ov06_0233EEE0.field_0x0 = a; +} + +s32 ov06_0233CAA8(void) +{ + return ov06_0233EEE0.field_0x0; +} diff --git a/src/overlay_10_022BCC60.c b/src/overlay_10_022BCC60.c index 8e69300b..cbb013e6 100644 --- a/src/overlay_10_022BCC60.c +++ b/src/overlay_10_022BCC60.c @@ -1,4 +1,12 @@ #include "overlay_10_022BCC60.h" +#include "main_0202AAA8.h" +#include "main_02001188.h" +#include "main_02028080.h" +#include "main_020282F4.h" + +extern void sub_020333FC(void *p); + +extern s32 sub_02033064(void *p); extern void sub_020331AC(void*, u32); extern void* GetWindowContents(s32 window_id); @@ -7,3 +15,104 @@ void ov10_022BCC60(u32 unused, u32 r1) { sub_020331AC(GetWindowContents(unused) + 4, r1); } + +void ov10_022BCC7C(s32 window_id) +{ + struct unk_0202AAA8 *w = GetWindowContents(window_id); + + w->field_0x19C = 1; + w->field_0x1A0 = 0; + w->field_0x1A1 = 0; + w->field_0xF8 &= ~0x800000; + sub_020333FC((void *) w + 4); +} + +void ov10_022BCCB0(s32 window_id) +{ + struct unk_0202AAA8 *w = GetWindowContents(window_id); + + if (w->field_0x19C == 3) { + w->field_0x19C = 2; + } +} + +void SetInventoryMenuState0(s32 window_id) +{ + struct unk_0202AAA8 *w = GetWindowContents(window_id); + + w->field_0x19C = 0; +} + +void SetInventoryMenuState6(s32 window_id) +{ + struct unk_0202AAA8 *w = GetWindowContents(window_id); + + w->field_0x19C = 6; +} + +void CloseInventoryMenu(s32 window_id) +{ + MemFree(GetWindowContents(window_id)); + DeleteWindow(window_id); +} + +bool8 ov10_022BCD10(s32 window_id) +{ + struct unk_0202AAA8 *w = GetWindowContents(window_id); + s32 state; + + state = w->field_0x19C; + if (state == 6) { + return TRUE; + } + + if (state != 3 && state != 8) { + return FALSE; + } + + w->field_0x1A0 = 1; + w->field_0x1A1 = 1; + sub_0202830C(window_id, -5); + w->field_0x19C = 6; + + return TRUE; +} + +s32 IsInventoryMenuActive(s32 window_id) +{ + struct unk_0202AAA8 *w = GetWindowContents(window_id); + s32 state; + + state = w->field_0x19C; + + return state != 7 && state != 8; +} + +bool8 CheckInventoryMenuField0x1A0(s32 window_id) +{ + struct unk_0202AAA8 *w = GetWindowContents(window_id); + + return w->field_0x1A0 == 0; +} + +void ov10_022BCDA8(s32 window_id) +{ + struct unk_0202AAA8 *w = GetWindowContents(window_id); + + sub_02033064((void *) w + 4); +} + +s32 ov10_022BCDBC(s32 window_id) +{ + struct unk_0202AAA8 *w = GetWindowContents(window_id); + + if (w->field_0x1A0 != 0) { + if (w->field_0x1A1 != 0) { + return -1; + } + + return sub_02033064((void *) w + 4); + } + + return -1; +} diff --git a/src/overlay_10_022BFD58.c b/src/overlay_10_022BFD58.c new file mode 100644 index 00000000..1e7aaf49 --- /dev/null +++ b/src/overlay_10_022BFD58.c @@ -0,0 +1,136 @@ +#include "overlay_10_022BFD58.h" + +extern struct unk_022DC1C4 *ov10_022DC1C4; + +extern void *MemAlloc(u32 size, u32 flags); + +extern void MemZero(void *p, s32 n); + +extern struct move_anim_info ov10_022C9070[]; + +extern s16 ov10_022C7A86[]; + +extern s16 ITEM_ANIMATION_INFO[]; + +extern s16 TRAP_ANIMATION_INFO[]; + +extern struct anim_06 SPECIAL_MONSTER_MOVE_ANIMATION_INFO[]; + +extern struct move_anim_info MOVE_ANIMATION_INFO[]; + +extern struct anim_1C EFFECT_ANIMATION_INFO[]; + +extern struct unk_022DC1C0 *ov10_022DC1C0; + +extern s32 sub_02001808(void); + +u8 ov10_022BFD58(s32 move_id) +{ + return GetMoveAnimation(move_id)->field_0x8 & 7; +} + +bool8 ov10_022BFD6C(s32 move_id) +{ + return (GetMoveAnimation(move_id)->field_0x8 & 8) != 0; +} + +bool8 ov10_022BFD8C(s32 move_id) +{ + return (GetMoveAnimation(move_id)->field_0x8 & 0x10) != 0; +} + +bool8 ov10_022BFDAC(s32 move_id) +{ + return (GetMoveAnimation(move_id)->field_0x8 & 0x20) != 0; +} + +bool8 ov10_022BFDCC(s32 move_id) +{ + return (GetMoveAnimation(move_id)->field_0x8 & 0x40) != 0; +} + +s32 ov10_022BFDEC(s32 a) +{ + return a == 0x65 || a == 0x10E || a == 0x1BC; +} + +u16 ov10_022BFE0C(s32 a) +{ + return a; +} + +u16 ov10_022BFE18(s32 a) +{ + return a + 0x10C; +} + +u16 ov10_022BFE28(s32 a) +{ + return a + 0x122; +} + +bool8 ov10_022BFE3C(u32 a) +{ + return a - 1 <= 3; +} + +bool8 ov10_022BFE54(u32 a) +{ + return a - 5 <= 1; +} + +bool8 ov10_022BFE6C(s32 a) +{ + if (sub_02001808() < a) { + ov10_022DC1C0->field_0x27A0 = TRUE; + + return TRUE; + } + + return FALSE; +} + +struct anim_1C* GetEffectAnimation(s32 id) +{ + return &EFFECT_ANIMATION_INFO[id]; +} + +struct move_anim_info* GetMoveAnimation(s32 move_id) +{ + return &MOVE_ANIMATION_INFO[move_id]; +} + +struct anim_06* GetSpecialMonsterMoveAnimation(s32 id) +{ + return &SPECIAL_MONSTER_MOVE_ANIMATION_INFO[id]; +} + +s16 GetTrapAnimation(s32 trap_id) +{ + return TRAP_ANIMATION_INFO[trap_id]; +} + +s16 GetItemAnimation1(s32 item_id) +{ + return ITEM_ANIMATION_INFO[item_id * 2]; +} + +s16 GetItemAnimation2(s32 item_id) +{ + return ov10_022C7A86[item_id * 2]; +} + +s32 GetMoveAnimationSpeed(s32 move_id) +{ + return ov10_022C9070[move_id].field_0x0; +} + +void ov10_022BFF30(s32 a) +{ + if (ov10_022DC1C4 == NULL) { + ov10_022DC1C4 = MemAlloc(0x84, 0xB); + MemZero(ov10_022DC1C4, 0x84); + } + + ov10_022DC1C4->field_0x0 = a; +} diff --git a/src/overlay_11_022E45C4.c b/src/overlay_11_022E45C4.c new file mode 100644 index 00000000..1c94bc79 --- /dev/null +++ b/src/overlay_11_022E45C4.c @@ -0,0 +1,104 @@ +#include "overlay_11_022E45C4.h" + +extern s32 SsbLoad2(struct iovec *iov, const char *filepath); + +extern void LoadFileFromRom(struct iovec *iov, const char *filepath, u32 flags); + +extern s8 sub_0200238C(s8 c); + +extern s32 sub_020023F8(s8 *a, char *b, s32 n); + +extern u8 ov11_02324F70; + +extern char ov11_0231968C[8]; + +extern s32 GetLanguage(); + +void ov11_022E45C4(void) +{ + ov11_02324F70 = GetLanguage(); +} + +void ov11_022E45DC(void) +{ + ov11_02324F70 = GetLanguage(); +} + +void ov11_022E45F4(s8 *p) +{ + *p = 0; +} + +void ov11_022E4600(s8 *dst, s8 *src) +{ + s32 i; + + for (i = 0; i < 8; i++) { + s8 *cur = dst; + + *dst++ = *src++; + + if (*cur == 0) { + return; + } + } +} + +s32 ov11_022E4630(s8 *p) +{ + if (p == NULL || *p == 0) { + return 1; + } + + return sub_020023F8(p, ov11_0231968C, 8); +} + +s32 ov11_022E465C(s8 *a, char *b) +{ + return sub_020023F8(a, b, 8); +} + +void ov11_022E466C(s8 *src, s8 *dst) +{ + s32 i; + + for (i = 0; i < 8; i++) { + s8 c = *src++; + + if (c == 0) { + break; + } + + *dst++ = c; + } + + *dst = 0; +} + +void ov11_022E469C(s8 *src, s8 *dst) +{ + s32 i; + + for (i = 0; i < 8; i++) { + s8 c = *src++; + + if (c == 0) { + break; + } + + *dst++ = sub_0200238C(c); + } + + *dst = 0; +} + +void LoadFileFromRomVeneer(struct iovec *iov, const char *filepath, u32 flags) +{ + LoadFileFromRom(iov, filepath, flags); +} + +s32 ov11_022E46E8(struct iovec *iov, const char *filepath) +{ + iov->iov_base = NULL; + return SsbLoad2(iov, filepath); +} diff --git a/src/overlay_11_022E7F28.c b/src/overlay_11_022E7F28.c new file mode 100644 index 00000000..1f061f79 --- /dev/null +++ b/src/overlay_11_022E7F28.c @@ -0,0 +1,47 @@ +#include "overlay_11_022E7F28.h" +#include "file.h" + +extern struct unk_C_ROUTINES C_ROUTINES[]; + +extern void MemFree(void * ptr); + +extern struct unk_02324FA0 UNIONALL_RAM_ADDRESS; + +extern char ov11_02319AB4[]; + +extern u8 ov11_02319AD0[]; + +extern s32 ov11_022E46E8(struct iovec *iov, const char *filepath); + +extern void Debug_Print0(const u8* fmt, ...); + +extern void ov11_0230D318(void); + +void ov11_022E7F28(void) +{ + ov11_0230D318(); +} + +void ov11_022E7F34(void) +{ + struct iovec iov; + u16 *p; + + ov11_022E46E8(&iov, ov11_02319AB4); + Debug_Print0(ov11_02319AD0, iov.iov_len); + p = iov.iov_base; + UNIONALL_RAM_ADDRESS.field_0x0 = p; + UNIONALL_RAM_ADDRESS.field_0x4 = p + *p; +} + +void ov11_022E7F80(void) +{ + MemFree(UNIONALL_RAM_ADDRESS.field_0x0); + UNIONALL_RAM_ADDRESS.field_0x0 = NULL; + UNIONALL_RAM_ADDRESS.field_0x4 = NULL; +} + +struct unk_C_ROUTINES * ov11_022E7FA8(s32 idx) +{ + return &C_ROUTINES[idx]; +} diff --git a/src/overlay_11_022E8024.c b/src/overlay_11_022E8024.c new file mode 100644 index 00000000..99c378e5 --- /dev/null +++ b/src/overlay_11_022E8024.c @@ -0,0 +1,45 @@ +#include "overlay_11_022E8024.h" +#include "overlay_11_022E7F28.h" + +extern struct unk_02320904 ov11_02320904[]; + +extern s16 RECRUITMENT_TABLE_SPECIES[]; + +extern s16 ov11_02324F98; + +void ov11_022E8024(void) +{ + ov11_02324F98 = -1; +} + +void ov11_022E8038(void) +{ + +} + +s16 GetSpecialRecruitmentSpecies(s32 idx) +{ + return RECRUITMENT_TABLE_SPECIES[idx]; +} + +s16 ov11_022E8050(s16 id) +{ + struct unk_02320904 *p; + + p = ov11_02320904; + + while (p->field_0x2 != 0) { + if (id == p->field_0x2) { + return p->field_0x0; + } + + p++; + } + + return 0; +} + +void PrepareMenuAcceptTeamMember(s16 id) +{ + ov11_02324F98 = id; +} diff --git a/src/overlay_11_022E9A78.c b/src/overlay_11_022E9A78.c new file mode 100644 index 00000000..6632d2b7 --- /dev/null +++ b/src/overlay_11_022E9A78.c @@ -0,0 +1,194 @@ +#include "overlay_11_022E9A78.h" +#include "overlay_11_022E9E74.h" + +extern struct unk_0238916C ov11_0238916C[]; + +extern u16 ov11_02388FD4[]; + +extern void sub_0200BCB0(struct unk_023890A0 *p, s32 a, s32 b, s32 c); + +extern void sub_0200BC60(struct unk_023890A0 *p, s32 a, s32 b, s32 c); + +extern struct unk_023890A0 ov11_02389018; + +extern struct unk_023890A0 ov11_02389128; + +extern s32 sub_02002878(s32 a); + +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); +} + +void ov11_022E9B84(s32 a) +{ + if (sub_02002878(2) != 0) { + sub_0200BB60(&ov11_02389128, a); + ov11_02388FC0.field_0x1 = 1; + return; + } + + ov11_02388FC0.field_0x8 = 1; + ov11_02388FC0.field_0x4 = a; + ov11_02388FC0.field_0x1 = 1; +} + +void ov11_022E9BD0(s32 a) +{ + if (sub_02002878(2) != 0) { + sub_0200BB74(&ov11_02389128, 1, a); + ov11_02388FC0.field_0x1 = 1; + return; + } + + ov11_02388FC0.field_0x8 = 2; + ov11_02388FC0.field_0x4 = a; + ov11_02388FC0.field_0x1 = 1; +} + +void ov11_022E9C20(s32 a) +{ + if (sub_02002878(2) != 0) { + sub_0200BB74(&ov11_02389128, 2, a); + ov11_02388FC0.field_0x1 = 1; + return; + } + + ov11_02388FC0.field_0x8 = 3; + ov11_02388FC0.field_0x4 = a; + ov11_02388FC0.field_0x1 = 1; +} + +void ov11_022E9C70(s32 a, s32 b, s32 c) +{ + sub_0200BBF8(&ov11_02389128, a, b, c); +} + +void ov11_022E9C98(s32 a) +{ + sub_0200BB60(&ov11_02389018, a); +} + +void ov11_022E9CB0(s32 a) +{ + sub_0200BB74(&ov11_02389018, 1, a); +} + +void ov11_022E9CCC(s32 a) +{ + sub_0200BB74(&ov11_02389018, 2, a); +} + +void ov11_022E9CE8(s32 a, s32 b, s32 c) +{ + sub_0200BBF8(&ov11_02389018, a, b, c); +} + +void ov11_022E9D10(s32 a) +{ + if (ov11_02389018.field_0x14 > 0) { + sub_0200BB74(&ov11_02389018, 2, a); + } else { + sub_0200BB74(&ov11_02389018, 1, a); + } +} + +void ov11_022E9D44(s32 a, s32 b, s32 c) +{ + sub_0200BC60(&ov11_023890E4, a, b, c); +} + +void ov11_022E9D6C(s32 a, s32 b, s32 c) +{ + sub_0200BCB0(&ov11_023890E4, a, b, c); +} + +void ov11_022E9D94(s32 a, s32 b, s32 c) +{ + sub_0200BC60(&ov11_023890A0, a, b, c); +} + +void ov11_022E9DBC(s32 a, s32 b, s32 c) +{ + sub_0200BCB0(&ov11_023890A0, a, b, c); +} + +void ov11_022E9DE4(s32 idx, u16 a, s32 b) +{ + ov11_02388FD4[idx] = a; + sub_0200BB74((struct unk_023890A0 *) &ov11_0238916C[idx], 1, 0); + sub_0200BB60((struct unk_023890A0 *) &ov11_0238916C[idx], b); +} + +void ov11_022E9E2C(s32 idx, u16 a, s32 b) +{ + ov11_02388FD4[idx] = a; + sub_0200BB60((struct unk_023890A0 *) &ov11_0238916C[idx], 0); + sub_0200BB74((struct unk_023890A0 *) &ov11_0238916C[idx], 1, b); +} diff --git a/src/overlay_11_022E9E74.c b/src/overlay_11_022E9E74.c new file mode 100644 index 00000000..e41eb133 --- /dev/null +++ b/src/overlay_11_022E9E74.c @@ -0,0 +1,104 @@ +#include "overlay_11_022E9E74.h" +#include "overlay_11_022E9A78.h" + +extern s32 GetFadeStatus(struct unk_023890A0 *p); + +extern struct unk_023890A0 ov11_02389018; + +extern struct unk_023890A0 ov11_023890A0; + +extern struct unk_023890A0 ov11_02389128; + +extern bool8 sub_02002878(s32 v); + +extern struct unk_02388FC0 ov11_02388FC0; + +extern struct unk_023890A0 ov11_0238905C; + +extern struct unk_023890A0 ov11_023890E4; + +extern s32 sub_0200BD14(struct unk_023890A0 *p); + +extern void sub_0200BBF8(struct unk_023890A0 *p, s32 a, s32 b, s32 c); + +extern struct unk_0238916C ov11_0238916C[]; + +extern u16 ov11_02388FD4[]; + +extern void sub_0200BB74(struct unk_023890A0 *p, s32 a, s32 b); + +extern void sub_0200BB88(struct unk_0238916C *p, s32 a); + +void ov11_022E9E74(s32 idx, u16 a, s32 b) +{ + ov11_02388FD4[idx] = a; + sub_0200BB74((struct unk_023890A0 *) &ov11_0238916C[idx], 1, 0); + sub_0200BB88(&ov11_0238916C[idx], b); +} + +void ov11_022E9EBC(s32 idx, u16 a, s32 b) +{ + ov11_02388FD4[idx] = a; + sub_0200BBF8((struct unk_023890A0 *) &ov11_0238916C[idx], 0, + (s16) (b - 0x100), (s16) (b - 0x100)); +} + +s32 ov11_022E9EFC(void) +{ + if (ov11_02388FC0.field_0x0 != 0 || ov11_02388FC0.field_0x2 != 0) { + return 1; + } + + if (sub_0200BD14(&ov11_023890E4)) { + return 1; + } + + return sub_0200BD14(&ov11_0238905C); +} + +s32 ov11_022E9F48(void) +{ + if (sub_02002878(2) == 0) { + return ov11_02388FC0.field_0x1; + } + + return sub_0200BD14(&ov11_02389128); +} + +s32 IsScreenFadeInProgress(void) +{ + if (sub_0200BD14(&ov11_023890A0)) { + return 1; + } + + return sub_0200BD14(&ov11_02389018); +} + +bool8 ov11_022E9FA4(s32 idx) +{ + return ov11_02388FD4[idx] != 0; +} + +s32 ov11_022E9FC8(s32 a) +{ + if (a == 0) { + return GetFadeStatus(&ov11_02389128); + } + + return GetFadeStatus(&ov11_02389018); +} + +s16 ov11_022E9FF4(void) +{ + return ov11_0238905C.field_0x14; +} + +s16 ov11_022EA004(void) +{ + return ov11_02389128.field_0x14; +} + +s16 ov11_022EA014(void) +{ + return ov11_02389018.field_0x14; +} diff --git a/src/overlay_11_022FAB44.c b/src/overlay_11_022FAB44.c new file mode 100644 index 00000000..7d5ddbaf --- /dev/null +++ b/src/overlay_11_022FAB44.c @@ -0,0 +1,84 @@ +#include "overlay_11_022FAB44.h" + +extern void ResetAttributeBitfieldLiveActor(s16 id, u32 mask); + +extern void SetAttributeBitfieldLiveActor(s16 id, u32 mask); + +extern s32 ov11_022F49B0(void *p); + +extern s32 ov11_022F4990(void *p); + +extern void ChangeActorAnimation(struct unk_022FAB44 *actor, u16 anim); + +void SetHeightLiveActor(struct unk_022FAB44 *actor, s32 height) +{ + actor->field_0x16C = height; +} + +void GetDirectionLiveActor(struct unk_022FAB44 *actor, s8 *dir) +{ + *dir = actor->field_0x15A; +} + +void SetDirectionLiveActor(struct unk_022FAB44 *actor, s8 dir) +{ + if (dir != -1) { + actor->field_0x15A = dir; + + if (actor->field_0x175 != actor->field_0x15A) { + actor->field_0x174 = 1; + } + } +} + +void SetAnimationLiveActor(struct unk_022FAB44 *actor, u16 anim) +{ + if (actor->field_0x0 <= 2 && + (actor->field_0xA == 0x119 || actor->field_0xA == 0x119 + 0x258)) { + if ((u32) (anim & 0xFF) >= 0x16) { + anim = (u16) ((anim & 0x1F00) | 0x53); + } + } + + ChangeActorAnimation(actor, anim); +} + +void SetEffectLiveActor(struct unk_022FAB44 *actor, u16 a, u16 b, s32 c) +{ + actor->field_0x182 = a; + actor->field_0x184 = b; + actor->field_0x188 = c; +} + +s32 GetAnimationStatusLiveActor(struct unk_022FAB44 *actor) +{ + if (actor->field_0x174 != 0) { + return 1; + } + + return ov11_022F4990(&actor->field_0x18C); +} + +s32 GetEffectStatusLiveActor(struct unk_022FAB44 *actor) +{ + if (actor->field_0x184 != 0) { + return 1; + } + + return ov11_022F49B0(&actor->field_0x18C); +} + +void GetAttributeBitfieldLiveActor(struct unk_022FAB44 *actor, s32 *out) +{ + *out = actor->field_0x128; +} + +void SetAttributeBitfieldLiveActorWrapper(struct unk_022FAB44 *actor, u32 mask) +{ + SetAttributeBitfieldLiveActor((s16) actor->field_0x0, mask); +} + +void ResetAttributeBitfieldLiveActorWrapper(struct unk_022FAB44 *actor, u32 mask) +{ + ResetAttributeBitfieldLiveActor((s16) actor->field_0x0, mask); +} diff --git a/src/overlay_11_022FD1A0.c b/src/overlay_11_022FD1A0.c new file mode 100644 index 00000000..e261a6db --- /dev/null +++ b/src/overlay_11_022FD1A0.c @@ -0,0 +1,116 @@ +#include "overlay_11_022FD1A0.h" + +extern void ResetAttributeBitfieldLiveObject(s16 id, u32 mask); + +extern void SetAttributeBitfieldLiveObject(s16 id, u32 mask); + +extern s32 ov11_022F49B0(void *p); + +extern s32 ov11_022F4990(void *p); + +extern s16 ov11_02321DC8[]; + +void SetHeightLiveObject(struct unk_022FD1A0 *obj, s32 height) +{ + obj->field_0x144 = height; +} + +void GetDirectionLiveObject(struct unk_022FD1A0 *obj, s8 *dir) +{ + *dir = obj->field_0x130; +} + +void SetDirectionLiveObject(struct unk_022FD1A0 *obj, s8 dir) +{ + if (dir != -1) { + obj->field_0x130 = dir; + } +} + +void SetAnimationLiveObject(struct unk_022FD1A0 *obj, u16 anim) +{ + u16 sel; + u16 low; + s16 v; + s16 cur; + + sel = (u16) (anim & 0x700); + low = (u16) (anim & 0xFF); + + if (anim & 0x800) { + obj->field_0x14E = 0x400; + obj->field_0x14C = 1; + return; + } + + if (low != 0) { + v = ov11_02321DC8[low]; + } else { + v = obj->field_0x14E; + } + + switch (sel) { + case 0x100: + v = (s16) (v | 0x300); + break; + case 0x200: + v = (s16) (v | 0x100); + break; + case 0x300: + break; + case 0x400: + v = (s16) (v | 0x200); + break; + } + + cur = obj->field_0x14E; + + if (cur != v) { + obj->field_0x14E = v; + obj->field_0x14C = 1; + return; + } + + if (cur & 0x1000) { + obj->field_0x14C = 1; + } +} + +void SetEffectLiveObject(struct unk_022FD1A0 *obj, u16 a, u16 b) +{ + obj->field_0x150 = a; + obj->field_0x152 = b; +} + +s32 GetAnimationStatusLiveObject(struct unk_022FD1A0 *obj) +{ + if (obj->field_0x14C != 0) { + return 1; + } + + return ov11_022F4990(&obj->field_0x154); +} + +s32 GetEffectStatusLiveObject(struct unk_022FD1A0 *obj) +{ + if (obj->field_0x152 != 0) { + return 1; + } + + return ov11_022F49B0(&obj->field_0x154); +} + +void GetAttributeBitfieldLiveObject(struct unk_022FD1A0 *obj, s32 *out) +{ + *out = obj->field_0x12C; +} + +void SetAttributeBitfieldLiveObjectWrapper(struct unk_022FD1A0 *obj, u32 mask) +{ + SetAttributeBitfieldLiveObject(obj->field_0x4, mask); +} + +void ResetAttributeBitfieldLiveObjectWrapper(struct unk_022FD1A0 *obj, u32 mask) +{ + ResetAttributeBitfieldLiveObject(obj->field_0x4, mask); +} diff --git a/src/overlay_11_022FE490.c b/src/overlay_11_022FE490.c new file mode 100644 index 00000000..98de3c91 --- /dev/null +++ b/src/overlay_11_022FE490.c @@ -0,0 +1,11 @@ +#include "overlay_11_022FE490.h" + +s16 GetIdLivePerformer(struct unk_022FE490 *p) +{ + return p->field_0x4; +} + +void GetCollisionBoxLivePerformer(struct unk_022FE490 *p, struct unk_022FE498 *out) +{ + *out = *(struct unk_022FE498 *) &p->field_0x10; +} diff --git a/src/overlay_11_022FE58C.c b/src/overlay_11_022FE58C.c new file mode 100644 index 00000000..c122e44a --- /dev/null +++ b/src/overlay_11_022FE58C.c @@ -0,0 +1,45 @@ +#include "overlay_11_022FE58C.h" +#include "overlay_11_022FE490.h" + +void SetMovementRangeLivePerformer(struct unk_022FE490 *p, struct unk_022FE498 *a, + struct unk_022FE498 *b) +{ + *(struct unk_022FE498 *) &p->field_0x2C = *a; + *(struct unk_022FE498 *) &p->field_0x34 = *b; +} + +extern void SetPositionLivePerformer(struct unk_022FE490 *p, struct unk_022FE498 *v); + +void GetCollisionBoxCenterLivePerformer(struct unk_022FE490 *p, struct unk_022FE498 *out) +{ + out->field_0x0 = p->field_0x130 + p->field_0x18; + out->field_0x4 = p->field_0x134 + p->field_0x1C; +} + +void SetPositionLivePerformerVeneer(struct unk_022FE490 *p, struct unk_022FE498 *v) +{ + SetPositionLivePerformer(p, v); +} + +void GetHeightLivePerformer(struct unk_022FE490 *p, s32 *a, s32 *b) +{ + *a = p->field_0x140; + *b = p->field_0x144; +} + +void SetHeightLivePerformer(struct unk_022FE490 *p, s32 h) +{ + p->field_0x140 = h; +} + +void GetDirectionLivePerformer(struct unk_022FE490 *p, s8 *dir) +{ + *dir = p->field_0x12C; +} + +void SetDirectionLivePerformer(struct unk_022FE490 *p, s8 dir) +{ + if (dir != -1) { + p->field_0x12C = dir; + } +} diff --git a/src/overlay_11_0230CB88.c b/src/overlay_11_0230CB88.c new file mode 100644 index 00000000..a914cc6d --- /dev/null +++ b/src/overlay_11_0230CB88.c @@ -0,0 +1,118 @@ +#include "overlay_11_0230CB88.h" + +extern struct unk_0238A098 ov11_0238A098; + +extern s32 ov11_0238A094; + +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; +} + +bool8 IsRecycleShopOverlaySuspended(void) +{ + return RECYCLE_SHOP_OVERLAY_STATUS; +} + +s32 ov11_0230CCF0(struct unk_0238A098 *dst) +{ + if (RECYCLE_SHOP_OVERLAY_STATUS != 0) { + *dst = ov11_0238A098; + return ov11_0238A094; + } + + return 0; +} diff --git a/src/overlay_11_0230CD48.c b/src/overlay_11_0230CD48.c new file mode 100644 index 00000000..f56307de --- /dev/null +++ b/src/overlay_11_0230CD48.c @@ -0,0 +1,81 @@ +#include "overlay_11_0230CD48.h" + +extern struct struct_1 ov11_0232318C; + +extern struct struct_1 ov11_0232317C; + +extern struct struct_1 ov11_0232316C; + +extern struct struct_1 ov11_0232315C; + +extern struct struct_1 ov11_0232314C; + +extern struct struct_1 ov11_0232313C; + +extern struct struct_1 ov11_0232312C; + +extern struct struct_1 ov11_0232311C; + +extern s32 ov11_0238A134; + +extern struct struct_1 ov11_0232310C; + +extern s32 ov11_0238A130; + +extern u32 InitMenu(struct struct_1 *dst); + +extern struct struct_1 ov11_023230FC; + +u32 LoadCroagunkSwapShopOverlay(void) +{ + return InitMenu(&ov11_023230FC); +} + +void LoadKecleonShopOverlay(s32 a) +{ + if (InitMenu(&ov11_0232310C)) { + ov11_0238A130 = a; + } +} + +u32 LoadKangaskhanOverlay(s32 a) +{ + ov11_0238A134 = a; + + return InitMenu(&ov11_0232311C); +} + +u32 LoadChanseyDaycareOverlay(void) +{ + return InitMenu(&ov11_0232312C); +} + +u32 LoadXatuAppraisalOverlay(void) +{ + return InitMenu(&ov11_0232313C); +} + +u32 LoadRecycleShopOverlay(void) +{ + return InitMenu(&ov11_0232314C); +} + +u32 LoadRuleDungeonEffectsOverlay(void) +{ + return InitMenu(&ov11_0232315C); +} + +u32 ov11_0230CDF4(void) +{ + return InitMenu(&ov11_0232316C); +} + +u32 ov11_0230CE08(void) +{ + return InitMenu(&ov11_0232317C); +} + +u32 ov11_0230CE1C(void) +{ + return InitMenu(&ov11_0232318C); +} diff --git a/src/overlay_16_0238CC94.c b/src/overlay_16_0238CC94.c new file mode 100644 index 00000000..77b62e7a --- /dev/null +++ b/src/overlay_16_0238CC94.c @@ -0,0 +1,41 @@ +#include "overlay_16_0238CC94.h" + +extern struct unk_0238CE40 *OVERLAY16_UNKNOWN_POINTER__NA_238CE40; + + + + + + + + +s16 ov16_0238CC94(void) +{ + return OVERLAY16_UNKNOWN_POINTER__NA_238CE40->field_0xDC; +} + +s16 ov16_0238CCA8(void) +{ + return OVERLAY16_UNKNOWN_POINTER__NA_238CE40->field_0xDE; +} + +s32 ov16_0238CCBC(void) +{ + struct unk_0238CE40 *p = OVERLAY16_UNKNOWN_POINTER__NA_238CE40; + + if (p == NULL) { + return 0; + } + + return p->field_0xE0; +} + +void ov16_0238CCD8(void) +{ + OVERLAY16_UNKNOWN_POINTER__NA_238CE40->field_0xE0 = 0; +} + +void ov16_0238CCF0(void) +{ + OVERLAY16_UNKNOWN_POINTER__NA_238CE40->field_0xD8 = 4; +} diff --git a/src/overlay_17_0238B10C.c b/src/overlay_17_0238B10C.c new file mode 100644 index 00000000..60d0f902 --- /dev/null +++ b/src/overlay_17_0238B10C.c @@ -0,0 +1,96 @@ +#include "overlay_17_0238B10C.h" +#include "enums.h" + +extern void ov17_0238A278(void); + +extern struct unk_0238BE00 *OVERLAY17_UNKNOWN_POINTER__NA_238BE00; + +extern u32 IsSimpleMenuActive(s32 window_id); + +extern s32 GetSimpleMenuResult__0202B870(s8 window_id); + +extern void ov17_0238B028(s32 a); + +extern enum game_mode GetGameMode(); + +void ov17_0238B10C(void) +{ + s32 r; + s32 mode; + + if (IsSimpleMenuActive(OVERLAY17_UNKNOWN_POINTER__NA_238BE00->field_0x2)) { + return; + } + + r = GetSimpleMenuResult__0202B870(OVERLAY17_UNKNOWN_POINTER__NA_238BE00->field_0x2); + + switch (r) { + case 2: + ov17_0238B028(0xC); + break; + case 3: + mode = GetGameMode(); + + if (!(mode != GAME_MODE_RESCUE && mode != GAME_MODE_5)) { + ov17_0238B028(9); + } else { + ov17_0238B028(6); + } + break; + case 4: + default: + ov17_0238B028(4); + break; + } +} + +void ov17_0238B194(void) +{ + OVERLAY17_UNKNOWN_POINTER__NA_238BE00->field_0x7E = 3; + OVERLAY17_UNKNOWN_POINTER__NA_238BE00->field_0x78 = 5; +} + +void ov17_0238B1B8(void) +{ + OVERLAY17_UNKNOWN_POINTER__NA_238BE00->field_0x7E = 0; + ov17_0238A278(); + OVERLAY17_UNKNOWN_POINTER__NA_238BE00->field_0x6C = 1; +} + +void ov17_0238B1E8(void) +{ + OVERLAY17_UNKNOWN_POINTER__NA_238BE00->field_0x7E = 3; + OVERLAY17_UNKNOWN_POINTER__NA_238BE00->field_0x78 = 7; +} + +void ov17_0238B20C(void) +{ + OVERLAY17_UNKNOWN_POINTER__NA_238BE00->field_0x78 = 8; +} + +void ov17_0238B224(void) +{ + OVERLAY17_UNKNOWN_POINTER__NA_238BE00->field_0x78 = 0; +} + +void ov17_0238B23C(void) +{ + OVERLAY17_UNKNOWN_POINTER__NA_238BE00->field_0x7E = 3; + OVERLAY17_UNKNOWN_POINTER__NA_238BE00->field_0x78 = 0xA; +} + +void ov17_0238B260(void) +{ + OVERLAY17_UNKNOWN_POINTER__NA_238BE00->field_0x78 = 0xB; +} + +void ov17_0238B278(void) +{ + OVERLAY17_UNKNOWN_POINTER__NA_238BE00->field_0x78 = 0; +} + +void ov17_0238B290(void) +{ + OVERLAY17_UNKNOWN_POINTER__NA_238BE00->field_0x7E = 0x20; + OVERLAY17_UNKNOWN_POINTER__NA_238BE00->field_0x78 = 0xD; +} diff --git a/src/overlay_18_0238BF60.c b/src/overlay_18_0238BF60.c new file mode 100644 index 00000000..9e55c31f --- /dev/null +++ b/src/overlay_18_0238BF60.c @@ -0,0 +1,88 @@ +#include "overlay_18_0238BF60.h" +#include "overlay_18_0238C950.h" + +extern void ov18_0238BE28(s32 a); + +extern u32 IsSimpleMenuActive(s32 window_id); + +extern s32 GetSimpleMenuResult__0202B870(s8 window_id); + +extern struct unk_0238C950 *LINK_SHOP_PTR; + +void ov18_0238BF60(void) +{ + LINK_SHOP_PTR->field_0x88 = 3; + LINK_SHOP_PTR->field_0x80 = 6; +} + +void ov18_0238BF84(void) +{ + LINK_SHOP_PTR->field_0x88 = 0x23; + LINK_SHOP_PTR->field_0x80 = 7; +} + +void ov18_0238BFA8(void) +{ + s32 r; + + if (IsSimpleMenuActive(LINK_SHOP_PTR->field_0x4)) { + return; + } + + r = GetSimpleMenuResult__0202B870(LINK_SHOP_PTR->field_0x4); + + switch (r) { + case 7: + ov18_0238BE28(8); + break; + case 8: + ov18_0238BE28(0xA); + break; + case 0xD: + ov18_0238BE28(0xE); + break; + case 2: + default: + ov18_0238BE28(0); + break; + } +} + +void ov18_0238C03C(void) +{ + LINK_SHOP_PTR->field_0x88 = 3; + LINK_SHOP_PTR->field_0x80 = 9; +} + +void ov18_0238C060(void) +{ + LINK_SHOP_PTR->field_0x80 = 5; +} + +void ov18_0238C078(void) +{ + LINK_SHOP_PTR->field_0x88 = 3; + LINK_SHOP_PTR->field_0x80 = 0xC; +} + +void ov18_0238C09C(void) +{ + LINK_SHOP_PTR->field_0x88 = 3; + LINK_SHOP_PTR->field_0x80 = 0xD; +} + +void ov18_0238C0C0(void) +{ + LINK_SHOP_PTR->field_0x80 = 5; +} + +void ov18_0238C0D8(void) +{ + LINK_SHOP_PTR->field_0x88 = 3; + LINK_SHOP_PTR->field_0x80 = 0xF; +} + +void ov18_0238C0FC(void) +{ + LINK_SHOP_PTR->field_0x80 = 5; +} diff --git a/src/overlay_18_0238C950.c b/src/overlay_18_0238C950.c new file mode 100644 index 00000000..4e38d4eb --- /dev/null +++ b/src/overlay_18_0238C950.c @@ -0,0 +1,74 @@ +#include "overlay_18_0238C950.h" + +extern s32 sub_0204159C(void); + +extern s32 ov18_0238ABB0(s16 a); + +extern void ov18_0238BE28(s32 a); + +extern struct unk_0238C950 *LINK_SHOP_PTR; + +void ov18_0238C950(void) +{ + LINK_SHOP_PTR->field_0x88 = 3; + LINK_SHOP_PTR->field_0x80 = 0x2B; +} + +void ov18_0238C974(void) +{ + ov18_0238BE28(0x19); +} + +void ov18_0238C984(void) +{ + LINK_SHOP_PTR->field_0x88 = 3; + LINK_SHOP_PTR->field_0x80 = 0x2D; +} + +void ov18_0238C9A8(void) +{ + ov18_0238BE28(0x19); +} + +void ov18_0238C9B8(void) +{ + if (sub_0204159C() == 0) { + LINK_SHOP_PTR->field_0x80 = 0x2F; + return; + } + + if (ov18_0238ABB0(LINK_SHOP_PTR->field_0x38C) <= 0) { + LINK_SHOP_PTR->field_0x80 = 0x31; + } else { + LINK_SHOP_PTR->field_0x80 = 0x33; + } +} + +void ov18_0238CA18(void) +{ + LINK_SHOP_PTR->field_0x88 = 3; + LINK_SHOP_PTR->field_0x80 = 0x30; +} + +void ov18_0238CA3C(void) +{ + ov18_0238BE28(0x11); +} + +void ov18_0238CA4C(void) +{ + LINK_SHOP_PTR->field_0x88 = 3; + LINK_SHOP_PTR->field_0x80 = 0x32; +} + +void ov18_0238CA70(void) +{ + ov18_0238BE28(0x11); +} + +void ov18_0238CA80(void) +{ + LINK_SHOP_PTR->field_0x88 = 3; + LINK_SHOP_PTR->field_0x8C = 0; + LINK_SHOP_PTR->field_0x80 = 0x34; +} diff --git a/src/overlay_29_022DC61C.c b/src/overlay_29_022DC61C.c index af830ddf..a87a79c2 100644 --- a/src/overlay_29_022DC61C.c +++ b/src/overlay_29_022DC61C.c @@ -1,6 +1,10 @@ #include "overlay_29_022DC61C.h" + #include "main_0200330C.h" +extern void ov29_022DC2B8(u8 *p); +extern void ov29_022DC33C(u8 *p); + extern u8 ov29_023538B4[0x0001963C]; extern u8 *ov29_023534E0; @@ -15,3 +19,13 @@ void ov29_022DC61C() ov29_022DC240(ov29_023538B4); ov29_022DC314(ov29_023538B4, ov29_023534E0); } + +void ov29_022DC65C(void) +{ + ov29_022DC2B8(ov29_023538B4); +} + +void ov29_022DC670(void) +{ + ov29_022DC33C(ov29_023538B4); +} diff --git a/src/overlay_29_022DC684.c b/src/overlay_29_022DC684.c index da4834ed..b0f46e7c 100644 --- a/src/overlay_29_022DC684.c +++ b/src/overlay_29_022DC684.c @@ -1,8 +1,106 @@ #include "overlay_29_022DC684.h" +extern struct unk_02353518 *ov29_02353518; + +extern void FreeMapAndTeam(void); + +extern void ov10_022C159C(void); + +extern void ov10_022C14D0(s32 a); + +extern void FreeTeamStats(void); + +extern void ov10_022C096C(void); + +extern void ov10_022C0F6C(s32 a, s32 b, s32 c, s32 d, s32 e, s32 f, s32 g, s32 h, s32 i, s32 j); + +extern void ov10_022C11D8(void); + +extern void UpdateTeamStats(void); + +extern void ov10_022C22A0(struct unk_022DC694 *p); + +extern void ov10_022C0814(struct unk_022DC694 *p, s32 a); + +extern void DrawTeamStats(s32 a, s32 b, s32 c); + extern void ov10_022C0998(s32 a, s32 b); void ov29_022DC684(s32 a) { ov10_022C0998(a, 1); } + +void ov29_022DC694(s32 a, s32 b) +{ + struct unk_022DC694 s; + + ov10_022C22A0(&s); + ov10_022C0814(&s, b); + DrawTeamStats(a, 0, 1); +} + +void ov29_022DC6D0(void) +{ + UpdateTeamStats(); +} + +void ov29_022DC6DC(void) +{ + ov10_022C11D8(); +} + +void ov29_022DC6E8(s32 a, s32 b, s32 c, s32 d, u8 e, s16 f, s16 g, s16 h, s16 i, u8 j) +{ + ov10_022C0F6C(a, b, c, d, e, f, g, h, i, j); +} + +void ov29_022DC728(void) +{ + FreeTeamStats(); + ov10_022C096C(); +} + +void ov29_022DC738(s32 a, s32 b) +{ + struct unk_022DC694 s; + + ov10_022C22A0(&s); + ov10_022C0814(&s, b); + ov10_022C14D0(a); +} + +void ov29_022DC76C(void) +{ + ov10_022C159C(); +} + +void ov29_022DC778(void) +{ + +} + +void ov29_022DC77C(void) +{ + FreeMapAndTeam(); + ov10_022C096C(); +} + +u8 * ov29_022DC78C(s32 id) +{ + s32 i; + u8 *base; + s32 off; + + base = (u8 *) ov29_02353518; + + for (i = 0; i < 22; i++) { + off = i * 0x50; + + if (base[off + 4] != 0 && *(s32 *) &base[off + 8] == id) { + return base + 4 + off; + } + } + + return NULL; +} diff --git a/src/overlay_29_022E1610.c b/src/overlay_29_022E1610.c index b1d44790..3e226ab1 100644 --- a/src/overlay_29_022E1610.c +++ b/src/overlay_29_022E1610.c @@ -4,3 +4,13 @@ struct item* GetItemInfo(struct entity *item_entity) { return item_entity->info; } + +void * ov29_022E1618(struct entity *entity) +{ + return entity->info; +} + +void * ov29_022E1620(struct entity *entity) +{ + return entity->info; +} diff --git a/src/overlay_29_022E3F20.c b/src/overlay_29_022E3F20.c new file mode 100644 index 00000000..859ac633 --- /dev/null +++ b/src/overlay_29_022E3F20.c @@ -0,0 +1,60 @@ +#include "overlay_29_022E3F20.h" + +extern s32 GetEffectAnimationField0x19(s32 id); + +extern void PlayEffectAnimationEntity(struct entity *entity, s32 id, s32 a, u8 b, + s32 c, s32 d, s32 e, s32 f); + +void ov29_022E3F20(void) +{ + +} + +void ov29_022E3F24(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x141, 1, GetEffectAnimationField0x19(0x141), + 2, 0, -1, 0); +} + +void ov29_022E3F74(void) +{ + +} + +void ov29_022E3F78(void) +{ + +} + +void ov29_022E3F7C(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 7, 1, GetEffectAnimationField0x19(7), + 2, 0, -1, 0); +} + +void ov29_022E3FC8(void) +{ + +} + +void ov29_022E3FCC(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 4, 0, GetEffectAnimationField0x19(4), + 2, 0, -1, 0); +} + +void ov29_022E4014(void) +{ + +} + +void PlayEffectAnimation0x171Full(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x171, 1, GetEffectAnimationField0x19(0x171), + 2, 0, -1, 0); +} + +void ov29_022E4068(void) +{ + +} diff --git a/src/overlay_29_022E406C.c b/src/overlay_29_022E406C.c new file mode 100644 index 00000000..c2c1b53d --- /dev/null +++ b/src/overlay_29_022E406C.c @@ -0,0 +1,60 @@ +#include "overlay_29_022E406C.h" + +extern s32 GetEffectAnimationField0x19(s32 id); + +extern void PlayEffectAnimationEntity(struct entity *entity, s32 id, s32 a, u8 b, + s32 c, s32 d, s32 e, s32 f); + +void PlayEffectAnimation0x171(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x171, 0, GetEffectAnimationField0x19(0x171), + 2, 0, -1, 0); +} + +void ov29_022E40B8(void) +{ + +} + +void ov29_022E40BC(void) +{ + +} + +void ov29_022E40C0(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x1AC, 0, GetEffectAnimationField0x19(0x1AC), + 2, 0, -1, 0); +} + +void ov29_022E4108(void) +{ + +} + +void ov29_022E410C(void) +{ + +} + +void ov29_022E4110(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 4, 1, GetEffectAnimationField0x19(4), + 2, 0, -1, 0); +} + +void ov29_022E415C(void) +{ + +} + +void ov29_022E4160(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x1A8, 1, GetEffectAnimationField0x19(0x1A8), + 2, 0, -1, 0); +} + +void ov29_022E41AC(void) +{ + +} diff --git a/src/overlay_29_022E4338.c b/src/overlay_29_022E4338.c new file mode 100644 index 00000000..16c69c71 --- /dev/null +++ b/src/overlay_29_022E4338.c @@ -0,0 +1,64 @@ +#include "overlay_29_022E4338.h" + +extern s32 GetEffectAnimationField0x19(s32 id); + +extern void PlayEffectAnimationEntity(struct entity *entity, s32 id, s32 a, u8 b, + s32 c, s32 d, s32 e, s32 f); + +void ov29_022E4338(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x1A9, 1, GetEffectAnimationField0x19(0x1A9), + 2, 0, -1, 0); +} + +void ov29_022E4388(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x13A, 1, GetEffectAnimationField0x19(0x13A), + 2, 0, -1, 0); +} + +void ov29_022E43D8(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x13A, 1, GetEffectAnimationField0x19(0x13A), + 2, 0, -1, 0); +} + +void ov29_022E4428(void) +{ + +} + +void ov29_022E442C(void) +{ + +} + +void ov29_022E4430(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x171, 1, GetEffectAnimationField0x19(0x171), + 2, 0, -1, 0); +} + +void ov29_022E4480(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 7, 1, GetEffectAnimationField0x19(7), + 2, 0, -1, 0); +} + +void PlaySpeedUpEffect(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x18B, 1, GetEffectAnimationField0x19(0x18B), + 2, 0, -1, 0); +} + +void PlaySpeedDownEffect(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x18A, 1, GetEffectAnimationField0x19(0x18A), + 2, 0, -1, 0); +} + +void ov29_022E456C(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 5, 1, GetEffectAnimationField0x19(5), + 2, 0, -1, 0); +} diff --git a/src/overlay_29_022E4704.c b/src/overlay_29_022E4704.c index a32f339a..43ba83a8 100644 --- a/src/overlay_29_022E4704.c +++ b/src/overlay_29_022E4704.c @@ -1,8 +1,73 @@ #include "overlay_29_022E4704.h" +extern bool8 MonsterIsType(struct entity *entity, enum type_id type_id); + +extern s32 GetEffectAnimationField0x19(s32 id); + +extern void PlayEffectAnimationEntity(struct entity *entity, s32 id, s32 a, u8 b, + s32 c, s32 d, s32 e, s32 f); + extern void PlaySeByIdIfShouldDisplayEntity(struct entity *entity, s32 se_id); void PlayInvisifySeIfShouldDisplayEntity(struct entity *entity) { PlaySeByIdIfShouldDisplayEntity(entity, 0x21C); } + +void ov29_022E4714(void) +{ + +} + +void ov29_022E4718(void) +{ + +} + +void ov29_022E471C(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x131, 1, GetEffectAnimationField0x19(0x131), + 2, 0, -1, 0); +} + +void ov29_022E476C(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x30, 1, GetEffectAnimationField0x19(0x30), + 2, 0, -1, 0); +} + +void ov29_022E47B8(void) +{ + +} + +void ov29_022E47BC(void) +{ + +} + +void ov29_022E47C0(void) +{ + +} + +void ov29_022E47C4(void) +{ + +} + +void ov29_022E47C8(void) +{ + +} + +void ov29_022E47CC(struct entity *entity, s32 id) +{ + if (MonsterIsType(entity, TYPE_GHOST)) { + PlayEffectAnimationEntity(entity, id, 1, GetEffectAnimationField0x19(id), + 2, 0, -1, 0); + } else { + PlayEffectAnimationEntity(entity, 0xE, 1, GetEffectAnimationField0x19(0xE), + 2, 0, -1, 0); + } +} diff --git a/src/overlay_29_022E66C4.c b/src/overlay_29_022E66C4.c index 07436f69..f46a8eb2 100644 --- a/src/overlay_29_022E66C4.c +++ b/src/overlay_29_022E66C4.c @@ -1,8 +1,25 @@ #include "overlay_29_022E66C4.h" +extern s32 GetEffectAnimationField0x19(s32 id); + +extern void PlayEffectAnimationEntity(struct entity *entity, s32 id, s32 a, u8 b, + s32 c, s32 d, s32 e, s32 f); + extern void PlayEffectAnimationPos(struct entity *entity, s32 effect_id, s32 a); void ov29_022E66C4(struct entity *entity) { PlayEffectAnimationPos(entity, 0x36, 1); } + +void ov29_022E66D8(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x15, 1, GetEffectAnimationField0x19(0x15), + 2, 0, -1, 0); +} + +void ov29_022E6724(struct entity *entity) +{ + PlayEffectAnimationEntity(entity, 0x1B4, 1, GetEffectAnimationField0x19(0x1B4), + 2, 0, -1, 0); +} diff --git a/src/overlay_29_022F0590.c b/src/overlay_29_022F0590.c index 45e5a54d..57a87c03 100644 --- a/src/overlay_29_022F0590.c +++ b/src/overlay_29_022F0590.c @@ -1,4 +1,19 @@ #include "overlay_29_022F0590.h" + + +extern void FreezeAnim(struct entity *e); + +extern void UnfreezeAnim(struct entity *e); + +extern void ov29_022F0AE0(void); + +extern void ov29_0234D668(void); + +extern void ov29_0234D838(void); + +extern void ov29_022EA370(s32 a, s32 b); + +extern s32 TalkToSecretBazaarNpc(struct entity *a, struct entity *b, s32 c, s32 d, s32 e); #include "dungeon_util_static.h" bool8 EntityIsValid__022F0590(struct entity *entity) @@ -8,3 +23,41 @@ bool8 EntityIsValid__022F0590(struct entity *entity) return GetEntityType(entity) != ENTITY_NOTHING; } + +void ov29_022F05B4(struct entity* a, struct entity* b, bool8 freeze) +{ + if (!freeze) { + UnfreezeAnim(a); + UnfreezeAnim(b); + } else { + FreezeAnim(a); + FreezeAnim(b); + } +} + +void ov29_022F05E4(void) +{ + ov29_022F0AE0(); + ov29_0234D668(); + ov29_0234D838(); + ov29_022EA370(0x20, 0x62); +} + +s32 TalkToSecretBazaarNpcStandard(struct entity* a, struct entity* b, s32 c) +{ + return TalkToSecretBazaarNpc(a, b, c, 0, 0); +} + +s32 ov29_022F0618(struct entity* a, struct entity* b, s32 c, s32 d) +{ + return TalkToSecretBazaarNpc(a, b, c, d, 0); +} + +s32 TalkToSecretBazaarNpcWithYesNoMenu(struct entity* a, struct entity* b, s32 c, s32 d) +{ + s32 result = TalkToSecretBazaarNpc(a, b, c, d, 1); + + ov29_022F0AE0(); + + return result; +} diff --git a/src/overlay_29_02321238.c b/src/overlay_29_02321238.c index cf848d10..e124a024 100644 --- a/src/overlay_29_02321238.c +++ b/src/overlay_29_02321238.c @@ -6,3 +6,13 @@ void ov29_02321238(struct entity *entity) { ov29_0232119C(entity, 0, 1); } + +void ov29_0232124C(struct entity *entity) +{ + ov29_0232119C(entity, 1, 1); +} + +void ov29_02321260(struct entity *entity) +{ + ov29_0232119C(entity, 0, 0); +} diff --git a/src/overlay_29_02344088.c b/src/overlay_29_02344088.c new file mode 100644 index 00000000..13418aef --- /dev/null +++ b/src/overlay_29_02344088.c @@ -0,0 +1,56 @@ +#include "overlay_29_02344088.h" +#include "main_02001188.h" +#include "overlay_29_0234B024.h" + +extern u8 ov10_022C6C75[]; + +extern u8 ov10_022C6C77[]; + +extern u8 ov10_022C6C78[]; + +extern u8 ov10_022C6C79[]; + +extern void *FIXED_ROOM_DATA_PTR; + +void CloseFixedBin(void) +{ + MemFree(FIXED_ROOM_DATA_PTR); + FIXED_ROOM_DATA_PTR = NULL; +} + +bool8 AreOrbsAllowed(u32 dungeon_id) +{ + if (dungeon_id == 0 || dungeon_id >= 0xA5) { + return TRUE; + } + + return ov10_022C6C77[dungeon_id * 12]; +} + +bool8 AreTileJumpsAllowed(u32 dungeon_id) +{ + if (dungeon_id == 0 || dungeon_id >= 0xA5) { + return TRUE; + } + + return ov10_022C6C78[dungeon_id * 12]; +} + +bool8 AreTrawlOrbsAllowed(u32 dungeon_id) +{ + if (dungeon_id == 0 || dungeon_id >= 0xA5) { + return TRUE; + } + + return ov10_022C6C79[dungeon_id * 12]; +} + +bool8 AreOrbsAllowedVeneer(u32 dungeon_id) +{ + return AreOrbsAllowed(dungeon_id); +} + +bool8 AreLateGameTrapsEnabled(u32 dungeon_id) +{ + return ov10_022C6C75[dungeon_id * 12]; +} diff --git a/src/overlay_29_02344AF8.c b/src/overlay_29_02344AF8.c index 4858d076..7748ba18 100644 --- a/src/overlay_29_02344AF8.c +++ b/src/overlay_29_02344AF8.c @@ -1,4 +1,17 @@ #include "overlay_29_02344AF8.h" + +extern struct unk_023531A4 ov29_023531A4; + +extern struct unk_023531A4 ov29_023531BC; + +extern void SetPreprocessorArgsIdVal(s32 idx, u32 val); + +extern void SubstitutePlaceholderItemTags(s32 a, s32 b, struct unk_023531A4 *p); +#include "main_02001188.h" +#include "overlay_29_0234B024.h" + +extern bool8 ov29_023537B0; + #include "dungeon_util_static.h" bool8 EntityIsValid__02344AF8(struct entity *entity) @@ -8,3 +21,25 @@ bool8 EntityIsValid__02344AF8(struct entity *entity) return GetEntityType(entity) != ENTITY_NOTHING; } + +void ov29_02344B1C(void) +{ + ov29_023537B0 = TRUE; +} + +void ov29_02344B30(void) +{ + ov29_023537B0 = FALSE; +} + +void PrepareItemForPrinting__02345728(s32 a, s32 b) +{ + SetPreprocessorArgsIdVal(a, a | 0x40000); + SubstitutePlaceholderItemTags(a, b, &ov29_023531BC); +} + +void PrepareItemForPrinting__02345754(s32 a, s32 b) +{ + SetPreprocessorArgsIdVal(a, a | 0x40000); + SubstitutePlaceholderItemTags(a, b, &ov29_023531A4); +} diff --git a/src/overlay_29_02344B9C.c b/src/overlay_29_02344B9C.c new file mode 100644 index 00000000..1e8235bf --- /dev/null +++ b/src/overlay_29_02344B9C.c @@ -0,0 +1,8 @@ +#include "overlay_29_02344B9C.h" +#include "main_02001188.h" +#include "overlay_29_0234B024.h" + +void ov29_02344B9C(s32 idx, u32 val) +{ + SetPreprocessorArgsIdVal(idx, val); +} diff --git a/src/overlay_29_02344BE4.c b/src/overlay_29_02344BE4.c index 4ae42d94..15cbec3c 100644 --- a/src/overlay_29_02344BE4.c +++ b/src/overlay_29_02344BE4.c @@ -1,7 +1,14 @@ #include "overlay_29_02344BE4.h" +#include "main_02001188.h" +#include "overlay_29_0234B024.h" extern void GenerateItem(struct item *item, enum item_id item_id, s32 quantity, s32 sticky); +void GenerateStandardItem(struct item* item, enum item_id item_id, s32 sticky) +{ + GenerateItem(item, item_id, 0, sticky); +} + void GenerateCleanItem(struct item *item, enum item_id item_id) { GenerateItem(item, item_id, 0, 2); diff --git a/src/overlay_29_02349188.c b/src/overlay_29_02349188.c index 43c0e42e..e2ac2417 100644 --- a/src/overlay_29_02349188.c +++ b/src/overlay_29_02349188.c @@ -24,6 +24,7 @@ s32 ov29_023491B8(void) return GetFirstExperienceLockedTeamMember(); } +#include "overlay_29_02349208.h" bool8 IsOutlawOrChallengeRequestFloor(void) { if (IsCurrentMissionType(MISSION_CHALLENGE_REQUEST) != 0 || diff --git a/src/overlay_29_02349208.c b/src/overlay_29_02349208.c index d618c0da..6fb719db 100644 --- a/src/overlay_29_02349208.c +++ b/src/overlay_29_02349208.c @@ -10,3 +10,22 @@ bool8 IsDestinationFloor(void) { return DUNGEON_PTR->mission_destination.is_destination_floor; } + +bool8 IsCurrentMissionType(enum mission_type type) +{ + if (!(DUNGEON_PTR->mission_destination.is_destination_floor && DUNGEON_PTR->mission_destination.type == type)) { + return FALSE; + } + + return TRUE; +} + +bool8 IsCurrentMissionTypeExact(enum mission_type type, u8 subtype) +{ + if (!(DUNGEON_PTR->mission_destination.is_destination_floor && DUNGEON_PTR->mission_destination.type == type && + DUNGEON_PTR->mission_destination.subtype == subtype)) { + return FALSE; + } + + return TRUE; +} diff --git a/src/overlay_29_0234BA54.c b/src/overlay_29_0234BA54.c new file mode 100644 index 00000000..4a561cba --- /dev/null +++ b/src/overlay_29_0234BA54.c @@ -0,0 +1,138 @@ +#include "overlay_29_0234BA54.h" + +extern void ov29_022E0B60(s32 a); + +extern void UnkMapRelatedFunc(u32 a, u32 b); + +extern void ov29_0233A248(s32 a); + +extern void sub_0204833C(void); + +extern s32 sub_02048360(void); + +extern void sub_02048240(s32 a); + +extern void sub_02048150(s32 a); + +extern void sub_02048134(s32 a); + +extern void sub_020480CC(s32 a); + +extern void sub_0204804C(s32 a); + +extern void sub_02047FFC(s32 a); + +extern void InitPortraitParams(struct unk_0234BAC0 *p); + +extern void AllowPortraitDefault(struct unk_0234BAC0 *p, s32 a); + +extern struct unk_023537CC MESSAGE_LOG_INFO; + +extern u16 DUNGEON_BUTTON_INPUT[8]; + +extern void WaitUntilAlertBoxTextIsLoaded(u32 a); + +extern void AdvanceFrame(u32 a); + +void WaitUntilAlertBoxPauseIsOver(u32 a) +{ + u8 *p; + s32 i; + + p = MESSAGE_LOG_INFO.field_0x4; + WaitUntilAlertBoxTextIsLoaded(a); + p += 0xC00; + + for (i = 0; i < 0xF0; i++) { + if (*(s16 *) &p[0x90] < 0xB4) { + return; + } + + if ((DUNGEON_BUTTON_INPUT[0] & 3) == 3) { + return; + } + + if (DUNGEON_BUTTON_INPUT[1] & 0xF0) { + return; + } + + AdvanceFrame(a); + } +} + +void InitPortraitDungeon(struct unk_0234BAC0 *p, s16 a, u8 b) +{ + InitPortraitParams(p); + p->field_0x0 = a; + p->field_0x2 = b; + p->field_0x3 = 0; + p->field_0x4 = 2; + p->field_0x8 = 9; + p->field_0xC = 0; + p->field_0xD = 0; + p->field_0xE = 0; + AllowPortraitDefault(p, 1); +} + +void ov29_0234BB10(void) +{ + sub_02047FFC(0); +} + +void ov29_0234BB20(s32 a) +{ + sub_0204804C(a); +} + +void ov29_0234BB2C(s32 a) +{ + sub_020480CC(a); +} + +void ov29_0234BB38(s32 a) +{ + sub_02048134(a); +} + +void ov29_0234BB44(s32 a) +{ + sub_02048150(a); +} + +void ov29_0234BB50(s32 a) +{ + sub_02048240(a); +} + +s32 OpenMessageLog(s32 a, s32 b) +{ + s32 r; + + UnkMapRelatedFunc(6, 0); + + if (a == 0) { + ov29_0233A248(0); + } + + AdvanceFrame(0x62); + AdvanceFrame(0x62); + sub_0204833C(); + + do { + AdvanceFrame(0x62); + r = sub_02048360(); + } while (r == 0); + + AdvanceFrame(0x62); + + if (b != 0) { + UnkMapRelatedFunc(0, 0); + } + + return r == 1; +} + +void ov29_0234BBDC(s32 a) +{ + ov29_022E0B60(a); +}