From 240bea143d02cbb2ac2d1fcc34e3c32a2b233b27 Mon Sep 17 00:00:00 2001 From: cecilarmitais Date: Mon, 7 Sep 2026 15:33:54 -0700 Subject: [PATCH] Decomp ov11_02307334; correct three callee declarations it exposes ov11_02307334 (0x02307334, 1624 instructions in all three regions) is the TM/HM use flow: a 42-case dense switch over *ov11_02324D8C, driving the bag inventory menu, the TM info and confirmation dialogues, the gummi/IQ path and the move-forget flow through menus, text boxes and scroll boxes. It is function 145 of 215 in asm/overlay_11_022FE5F8.s, so extract_function.py splits rather than merges: the 70 functions after it move to asm/overlay_11_02308D1C.s, the function lands in src/overlay_11_02307334.c with include/overlay_11_02307334.h, and main.lsf lists both new objects where it listed one. Unlike the last three functions on this branch there is no stale extern to reconcile. The symbol has exactly one caller, ov11_02304B4C, in the same object and still in asm; it has no external linkage today, appears in no function-pointer table, and a scan of all 512 .s files for the little-endian encoding of its address finds nothing. Three declarations elsewhere in the tree are wrong and this function is the first caller that makes them matter. RemoveItemNoHoleCheck takes an item index, not a struct item *: asm/main_0200F390.s does mov r1,#6 / smulbb r1, r0, r1, and SMULBB multiplies the low halfwords, so the argument is a signed 16-bit value scaled by sizeof(struct item). Its only other caller passes GetFirstUnequippedItemOfType, which likewise returns an index rather than a pointer, so the two errors cancelled and the pair matched by accident. ov10_022BCDA8 is declared void but its body ends in sub_02033064, which returns s32, and both of this function's call sites consume the result. All three are -W error blockers here, and the matching build confirms the fixes are byte-neutral. Case emission order is source order and is not ascending: 0, 2, 1, 3, 17..25, 33, 34, 31, 32, 35..40, 26..30, 41, then 4..16 last. Every case breaks to a single trailing return 0; case 16 returns 1, and case 15 falls through into it. The eight function-scope locals are declared in descending stack-address order because MWCC gives the first-declared local the highest address, which tiles the frame exactly to 0x5A0. The 43-instruction block shared by cases 32 and 34 is written out twice rather than factored into a helper - MWCC 2.0 does not tail-merge blocks of that size, and the target has both copies. Several shapes that read as redundant are load-bearing and reproduce the target: case 4's v1 != 8 && v1 == 4, the dead field_0x0 = 0x1a in case 38 and field_0x24e = v6->id in case 1 that the following if/else overwrites in both arms, the guard if (field_0x8 == -2) ov11_02308EDC() in case 12 that the callee performs again itself, and case 21's two search loops being written differently. struct unk_02324D8C is a placeholder for the 0x330-byte state struct MemAlloc'd by ov11_02307244, with field_0x members, three identified sub-object types where the arithmetic closes, and u8 filler elsewhere. The 0x14-byte object at 0x238 has to be a real nested struct: the target holds base + 0x238 in a callee-saved register across two calls, while flat fields make MWCC round the base to #0x200 and re-offset per use. The 49 callees with no declaration anywhere are declared extern in the .c with prototypes read off their own asm; every name is established by a literal bl in the target, but the argument types are inference. Region handling: three file-scope offset macros under JAPAN cover the id families at +0x2D20 (16 sites), +0x1458 and +0x1567, and the two genuine three-way forks - the StringFromId base in case 1 and the CreateScrollBoxSingle base in case 10 - are written out per region as src/get_category_string.c and src/overlay_25_init.c already do. The asm's four #ifdef JAPAN code forks need no #if here: each exists only because exactly one of the two constants is an ARM rotated-8-bit immediate, so writing id + OFFSET and letting MWCC choose mov versus a pool word reproduces all four. EUROPE differs from NORTH_AMERICA in two constants and nothing else. Authored by Claude (Opus 5) under human direction. Confirmed by matching builds of all three regions: build/pmdsky.us/pmdsky.us.nds: OK, build/pmdsky.eu/pmdsky.eu.nds: OK, build/pmdsky.jp/pmdsky.jp.nds: OK. Co-Authored-By: Claude Opus 5 --- asm/include/overlay_11_022FE5F8.inc | 254 +- asm/include/overlay_11_02308D1C.inc | 189 + asm/overlay_11_022FE5F8.s | 6609 --------------------------- asm/overlay_11_02308D1C.s | 4763 +++++++++++++++++++ include/main_0200F798.h | 4 +- include/overlay_10_022BCC60.h | 2 +- include/overlay_11_02307334.h | 6 + main.lsf | 2 + src/overlay_10_022BCC60.c | 4 +- src/overlay_11_02307334.c | 896 ++++ 10 files changed, 5905 insertions(+), 6824 deletions(-) create mode 100644 asm/include/overlay_11_02308D1C.inc create mode 100644 asm/overlay_11_02308D1C.s create mode 100644 include/overlay_11_02307334.h create mode 100644 src/overlay_11_02307334.c diff --git a/asm/include/overlay_11_022FE5F8.inc b/asm/include/overlay_11_022FE5F8.inc index 2fc0ff08..17e19f25 100644 --- a/asm/include/overlay_11_022FE5F8.inc +++ b/asm/include/overlay_11_022FE5F8.inc @@ -1,40 +1,25 @@ #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 @@ -47,35 +32,22 @@ .public DigitInputMenuInit .public DigitInputMenuReturn .public DrawTextInWindow -.public DungeonMoveToGroundMove .public DungeonSwapIdxToId -.public EnableIqSkill .public EVENTS -.public EXCLUSIVE_ITEM_REQUIREMENTS_PTR .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 @@ -91,23 +63,14 @@ .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 @@ -117,23 +80,55 @@ .public ItemZInit .public LoadFileFromRomVeneer .public LoadScriptVariableValue -.public LoadSynthBin .public MaybeGetColoredFormattedItemName .public MaybeGetFormattedItemName -.public MaybeGetUncoloredFormattedItemName .public MemAlloc -.public memcpy -.public MemcpySimple .public MemFree -.public MemZero .public NewWindowScreenCheck +.public PlaySeVolumeWrapper +.public PopInventoryMenuField0x1A3 +.public PreprocessString +.public PreprocessStringFromId +.public PrintBadgeMark +.public PrintIqSkillsMenu +.public RemoveItemNoHole +.public ResetAttributeBitfieldLivePerformer +.public ResumeAdvancedMenu +.public ReturnScriptMenuResult +.public ReturnScriptMenuResultZero +.public SaveScriptVariableValue +.public SaveScriptVariableValueBytes +.public SetAnimDataFields2 +.public SetAreaNameBoxState3 +.public SetAttributeBitfieldLivePerformer +.public SetInventoryMenuState0 +.public SetInventoryMenuState6 +.public SetNewFriendActor +.public SetParentMenuState7 +.public ShowDialogueBox +.public ShowKeyboard +.public ShowStringIdInDialogueBox +.public ShowStringInDialogueBox +.public SortItemsInBag +.public StrcpyName +.public StrcpySimple +.public StrncpyName +.public StrncpySimple +.public StrncpySimpleNoPadSafe +.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 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 @@ -157,11 +152,16 @@ .public ov11_022F6FA8 .public ov11_022F7188 .public ov11_022F74A0 +.public ov11_02307334 +.public ov11_02308D1C +.public ov11_02309040 +.public ov11_023090DC +.public ov11_02309DF8 +.public ov11_0230A07C .public ov11_0230CFF4 .public ov11_0230D000 .public ov11_0230D220 .public ov11_0230D71C -.public ov11_0230D92C .public ov11_0230E964 .public ov11_0230F138 .public ov11_0230F1EC @@ -255,44 +255,6 @@ .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 @@ -316,87 +278,29 @@ .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 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 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 sprintf -.public strcat -.public StrcmpMonsterName .public strcpy -.public StrcpyName -.public StrcpySimple -.public StringFromId -.public StrncpyName -.public StrncpySimple -.public StrncpySimpleNoPad -.public StrncpySimpleNoPadSafe -.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 @@ -417,70 +321,19 @@ .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 @@ -494,22 +347,3 @@ .public sub_02067664 .public sub_0206A84C .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 TEAM_INFO_BOX_DEFAULT_WINDOW_PARAMS -.public TEAM_MEMBER_TABLE_PTR -.public UnloadFile -.public UpdateWindow -.public ValidateTeamMembers -.public vsprintf -.public WorldMapSetCamera -.public WorldMapSetMode -.public ZeroInitMissionRewardDataStruct diff --git a/asm/include/overlay_11_02308D1C.inc b/asm/include/overlay_11_02308D1C.inc new file mode 100644 index 00000000..5c42fc68 --- /dev/null +++ b/asm/include/overlay_11_02308D1C.inc @@ -0,0 +1,189 @@ +#pragma once +.public AppendStandardStringToMission +.public BAG_ITEMS_PTR_MIRROR +.public CheckTeamMemberIdx +.public CloseAdvancedTextBox +.public CloseCollectionMenu +.public CloseDialogueBox +.public CloseInventoryMenu +.public CloseParentMenu +.public CloseScrollBox +.public CloseSynthBin +.public CloseTextBox2 +.public CountNbItemsOfTypeInBag +.public CountNbItemsOfTypeInStorage +.public CreateAdvancedTextBox +.public CreateCollectionMenu +.public CreateDialogueBox +.public CreateMonsterSummaryFromTeamMember +.public CreateParentMenu +.public CreateParentMenuFromStringIds +.public DrawTextInWindow +.public DungeonMoveToGroundMove +.public EXCLUSIVE_ITEM_REQUIREMENTS_PTR +.public GetActiveRosterIndex +.public GetActiveTeamMember +.public GetActorMatchingStorageId +.public GetCroagunkItemTemplates +.public GetCurrentBagCapacity +.public GetDexNumber +.public GetExclusiveItemType +.public GetGameMode +.public GetInfoMoveGround +.public GetItemAtIdx +.public GetItemMoveId16 +.public GetKeyboardStatus +.public GetKeyboardStringResult +.public GetPressedButtons +.public GetSimpleMenuResult__0202AEA4 +.public GetTeamMember +.public GetWindowIdPageStart +.public GetWindowIdSelectedItemOnPage +.public GetWindowIdSelectedMenuItemIdx +.public InitMenu +.public InitMove +.public InitPreprocessorArgs +.public IsAdvancedTextBoxActive +.public IsCollectionMenuActive +.public IsCollectionMenuState3 +.public IsParentMenuActive +.public LoadSynthBin +.public MaybeGetColoredFormattedItemName +.public MaybeGetUncoloredFormattedItemName +.public MemAlloc +.public MemFree +.public MemZero +.public MemcpySimple +.public PlaySeVolumeWrapper +.public PreprocessString +.public PreprocessStringFromId +.public PrintIqSkillsMenu +.public RecolorNameString +.public ResumeParentMenu +.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 SetCollectionMenuField0x1A4 +.public SetCollectionMenuField0x1C8 +.public SetWindowTitle +.public ShowKeyboard +.public StrcmpMonsterName +.public StrcpySimple +.public StrncpySimple +.public StrncpySimpleNoPad +.public StrncpySimpleNoPadSafe +.public SwapShopFreeDoublePointer +.public UpdateWindow +.public ov11_02301174 +.public ov11_0230D000 +.public ov11_0230D220 +.public ov11_0230D92C +.public ov11_02310BDC +.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_02324D8C +.public ov11_02324D90 +.public ov11_02324D94 +.public ov11_02324D98 +.public strcat +.public strcpy +.public sub_020037A4 +.public sub_0200FD48 +.public sub_02010044 +.public sub_02011420 +.public sub_02017C50 +.public sub_02017C74 +.public sub_020262E0 +.public sub_0202810C +.public sub_0202812C +.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_020307EC +.public sub_02037468 +.public sub_0203909C +.public sub_02039218 +.public sub_0203931C +.public sub_0203F150 +.public sub_0203F398 +.public sub_0203F974 +.public sub_0203F990 +.public sub_0203FA64 +.public sub_0203FBD4 +.public sub_0203FD14 +.public sub_0203FD38 +.public sub_0203FD80 +.public sub_0203FDEC +.public sub_0204018C +.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_020416FC +.public sub_020417A8 +.public sub_02041A00 +.public sub_02041A18 +.public sub_02041B7C +.public sub_020420F4 +.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_0204E210 +.public sub_02053A0C +.public sub_02053D1C +.public sub_020546E8 +.public sub_02055894 +.public sub_02055FCC +.public sub_02056094 +.public sub_0205633C +.public sub_020564B0 +.public sub_020586F0 +.public sub_02058794 +.public vsprintf diff --git a/asm/overlay_11_022FE5F8.s b/asm/overlay_11_022FE5F8.s index c90d406b..8cd6ef66 100644 --- a/asm/overlay_11_022FE5F8.s +++ b/asm/overlay_11_022FE5F8.s @@ -10918,6612 +10918,3 @@ ov11_02307300: ; 0x02307300 .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_02308D1C.s b/asm/overlay_11_02308D1C.s new file mode 100644 index 00000000..5c13f0b1 --- /dev/null +++ b/asm/overlay_11_02308D1C.s @@ -0,0 +1,4763 @@ + .include "asm/macros.inc" + .include "overlay_11_02308D1C.inc" + + .text + + 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/include/main_0200F798.h b/include/main_0200F798.h index 4e000349..3601f6fe 100644 --- a/include/main_0200F798.h +++ b/include/main_0200F798.h @@ -3,8 +3,8 @@ #include "item.h" -struct item *GetFirstUnequippedItemOfType(s16 type); -u32 RemoveItemNoHoleCheck(struct item *item); +s16 GetFirstUnequippedItemOfType(s16 type); +u32 RemoveItemNoHoleCheck(s16 index); u32 RemoveFirstUnequippedItemOfType(s16 type); diff --git a/include/overlay_10_022BCC60.h b/include/overlay_10_022BCC60.h index 0d260416..b7109afd 100644 --- a/include/overlay_10_022BCC60.h +++ b/include/overlay_10_022BCC60.h @@ -12,7 +12,7 @@ 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_022BCDA8(s32 window_id); s32 ov10_022BCDBC(s32 window_id); #endif //PMDSKY_OVERLAY_10_022BCC60_H diff --git a/include/overlay_11_02307334.h b/include/overlay_11_02307334.h new file mode 100644 index 00000000..f8280731 --- /dev/null +++ b/include/overlay_11_02307334.h @@ -0,0 +1,6 @@ +#ifndef PMDSKY_OVERLAY_11_02307334_H +#define PMDSKY_OVERLAY_11_02307334_H + +s32 ov11_02307334(void); + +#endif diff --git a/main.lsf b/main.lsf index 527a9d95..d2b2016e 100644 --- a/main.lsf +++ b/main.lsf @@ -661,6 +661,8 @@ Overlay OVY_11 Object asm/overlay_11_022FE4AC.o Object src/overlay_11_022FE58C.o Object asm/overlay_11_022FE5F8.o + Object src/overlay_11_02307334.o + Object asm/overlay_11_02308D1C.o Object src/overlay_11_0230CB88.o Object src/overlay_11_0230CD48.o Object asm/overlay_11_0230CE30.o diff --git a/src/overlay_10_022BCC60.c b/src/overlay_10_022BCC60.c index cbb013e6..0cf69f47 100644 --- a/src/overlay_10_022BCC60.c +++ b/src/overlay_10_022BCC60.c @@ -95,11 +95,11 @@ bool8 CheckInventoryMenuField0x1A0(s32 window_id) return w->field_0x1A0 == 0; } -void ov10_022BCDA8(s32 window_id) +s32 ov10_022BCDA8(s32 window_id) { struct unk_0202AAA8 *w = GetWindowContents(window_id); - sub_02033064((void *) w + 4); + return sub_02033064((void *) w + 4); } s32 ov10_022BCDBC(s32 window_id) diff --git a/src/overlay_11_02307334.c b/src/overlay_11_02307334.c new file mode 100644 index 00000000..b5cba470 --- /dev/null +++ b/src/overlay_11_02307334.c @@ -0,0 +1,896 @@ +#include "overlay_11_02307334.h" +#include "item.h" +#include "item_util.h" +#include "game_mode.h" +#include "main_0200C4FC.h" +#include "main_0200EDC0.h" +#include "main_0200F370.h" +#include "main_0200F798.h" +#include "main_02017B58.h" +#include "main_02017C80.h" +#include "main_0202593C.h" +#include "main_02027AF0.h" +#include "main_0202AAA8.h" +#include "main_0202AB40.h" +#include "main_0202B4C4.h" +#include "main_0202F180.h" +#include "main_02058CD8.h" +#include "main_02058E68.h" +#include "overlay_10_022BCC60.h" +#include "overlay_31_02382820.h" + +struct unk_02309DAC { + s32 field_0x0; + s16 field_0x4; +}; + +struct unk_02308F4C { + s32 field_0x0; + s16 field_0x4; + u8 field_0x6[2]; + s16 field_0x8; + u8 field_0xa; + u8 field_0xb; + u32 *field_0xc; + s16 *field_0x10; +}; + +struct unk_02324D8C { + s32 field_0x0; s8 field_0x4; + s8 field_0x5; + s8 field_0x6; + s8 field_0x7; + s8 field_0x8; + s8 field_0x9; + s8 field_0xa; + s8 field_0xb; + s8 field_0xc; + u8 field_0xd[3]; + s32 field_0x10; + s32 field_0x14; + s32 field_0x18; + struct struct_2 field_0x1c; struct preprocessor_args field_0xb4; u8 field_0x104[0x134]; + struct unk_02308F4C field_0x238; s16 field_0x24c; + s16 field_0x24e; + s16 field_0x250; + u16 field_0x252; + s16 field_0x254; + u8 field_0x256[0x20]; + u8 field_0x276[0xa]; + u8 field_0x280[0x45]; + u8 field_0x2c5[0x45]; + u8 field_0x30a[2]; + s32 field_0x30c; + s32 field_0x310; + s32 field_0x314; + s32 field_0x318; + u8 field_0x31c[8]; + void *field_0x324; + u16 field_0x328[2]; + s32 field_0x32c; +}; + +extern struct unk_02324D8C *ov11_02324D8C; + +struct unk_02322D38 { + u16 field_0x0; + u16 field_0x2; + u32 field_0x4; +}; + +extern struct unk_02322D38 ov11_02322D38[]; +extern s32 ov11_02322C78; +extern s32 ov11_02322C88; +extern s32 ov11_02322C98; +extern s32 ov11_02322CA8; +extern s32 ov11_02322CB8; +extern s32 ov11_02322CC8; +extern s32 ov11_02322CD8; +extern s32 ov11_02322CF0; +extern s32 ov11_02322D10; +extern s32 ov11_02322D60; +extern s32 ov11_02322D88; +extern u8 ov11_02322DB0[]; + +extern void CloseScrollBox(s8); extern void CloseTextBox2(s8); extern u8 CreateParentMenuFromStringIds(void *, u32, void *, void *); extern s8 CreateScrollBoxSingle(void *, s32, s32, s32, void *, s32, void *); extern s8 CreateSimpleMenuFromStringIds(void *, s32, s32, void *, s32); extern s8 CreateTextBox(void *, void *); extern void DrawTextInWindow(s32 window_id, s32 x, s32 y, char *string); +extern struct team_member *GetActiveTeamMember(s32 roster_idx); +extern void GetPressedButtons(u32, u16 *); +extern s32 GetSimpleMenuResult__0202AEA4(s8); extern s32 GetSimpleMenuResult__0202B870(s8); extern struct ground_monster *GetTeamMember(s32 member_idx); +extern void InitPreprocessorArgs(struct preprocessor_args *); +extern s32 IsScrollBoxActive(s8); extern void ShowDialogueBox(s8); extern void ShowStringIdInDialogueBox(s8, s32, s32, void *); extern void ov11_022DC504(void); +extern u8 *strcpy(u8 *dest, const u8 *src); + +extern void ApplyGummiBoostsToGroundMonster(struct ground_monster *, s16, int, void *); +extern void ApplyGummiBoostsToTeamMember(struct team_member *, s16, int, void *); +extern void CloseAdvancedTextBox(s32 window_id); +extern s8 CreateInventoryMenuOuter(s32, s32, s32, void *, void *, void *, u8); +extern bool8 IsBagNotEmpty(void); +extern u8 PopInventoryMenuField0x1A3(s32 window_id); +extern void SetItemAcquired(struct item *); +extern void SortItemsInBag(void); +extern void *memcpy(void *, const void *, u32); +extern void ov10_022BCDF4(s32 window_id); +extern void ov11_02308D48(void); +extern void *ov11_02308DD8(void *); +extern void ov11_02308EDC(void); +extern void ov11_02308F14(void); +extern void ov11_02308F4C(void *dst, const void *src); +extern void ov11_02308FD0(void *); +extern void ov11_02308FEC(void *); +extern s32 ov11_0230901C(void *); +extern int ov11_02309040(s32); +extern int ov11_02309084(s16); +extern int ov11_023090DC(void); +extern void ov11_02309DAC(void *out); +extern void ov11_02309DF8(void); +extern s16 ov11_02309E24(void); +extern int ov11_02309E48(s16); +extern s32 ov11_02307300(s32, s32, s32); +extern s32 sub_020037A4(void); +extern void sub_0203FD14(u16 move_id); +extern struct move *sub_0203FD2C(void); +extern void *sub_0203FD38(void); +extern s16 sub_0203FD80(s32); +extern s16 sub_0203FDEC(s16); +extern s8 sub_0204019C(s32, s32, s32, void *); +extern void sub_020407C0(void); +extern int sub_020407EC(void); +extern s16 sub_02041094(void); +extern u16 sub_02041154(s32); +extern bool8 sub_02041364(s32); +extern void sub_02041484(void); +extern bool8 sub_020415BC(void); +extern s16 sub_02041614(u16 move_id); +extern void sub_020416FC(void); +extern s8 sub_020417A8(void *, s32, s32, s32); +extern void sub_02041A00(void); +extern void *sub_02044688(s16, s32, s32, s32, u8, s32); +extern int sub_02044800(void *); +extern void sub_020448EC(void **); +extern s32 sub_02053CA0(u16 *out, s32 limit, s16, u8); +extern void sub_020582E0(u8 held_by); +extern void sub_02058794(s16); + +#ifdef JAPAN +#define OV11_02307334_OFFSET 0x2D20 +#define OV11_02307334_OFFSET_2 0x1458 +#define OV11_02307334_OFFSET_3 0x1567 +#else +#define OV11_02307334_OFFSET 0 +#define OV11_02307334_OFFSET_2 0 +#define OV11_02307334_OFFSET_3 0 +#endif + +s32 ov11_02307334(void) +{ + struct struct_2 menu_b; + struct struct_2 menu_a; + struct preprocessor_args args; + char buf[0x400]; + struct unk_02309DAC sel_18; + struct unk_02309DAC sel_10; + u16 btn_e; + u16 btn_c; + + switch (ov11_02324D8C->field_0x0) { + case 0: { + ov11_02324D8C->field_0x4 = CreateInventoryMenuOuter(GetNbItemsInBag(), 0, ov11_02324D8C->field_0x10, ov11_02324D8C->field_0x104, (void *)ov11_02307300, ov11_02324D8C->field_0x31c, 0); + ov11_02324D8C->field_0x5 = CreateTextBox(&ov11_02322C88, 0); + ov11_02324D8C->field_0x18 = -1; + ov11_02324D8C->field_0x0 = 1; + break; + } + case 2: { + if (!IsBagNotEmpty()) { + SetInventoryMenuState6(ov11_02324D8C->field_0x4); + ov11_02324D8C->field_0x0 = 0xc; + break; + } + ov10_022BCC7C(ov11_02324D8C->field_0x4); + ov11_02324D8C->field_0x0 = 1; + break; + } + case 1: { + u8 v1; + + GetPressedButtons(0, &btn_e); + v1 = PopInventoryMenuField0x1A3(ov11_02324D8C->field_0x4); + if ((btn_e & 4) || (btn_e & 0x800) || v1) { + if (!v1) { + PlaySeVolumeWrapper(5); + } + SortItemsInBag(); + ov11_02324D8C->field_0x10 = 0; + ov10_022BCC60(ov11_02324D8C->field_0x4, GetNbItemsInBag()); + ov11_02324D8C->field_0x18 = -1; + ov10_022BCCB0(ov11_02324D8C->field_0x4); + } else { + s8 v2 = ov11_02324D8C->field_0x5; + + if (v2 != -2) { + s32 v3 = ov10_022BCDA8(ov11_02324D8C->field_0x4); + + if (ov11_02324D8C->field_0x18 != v3) { + struct item *v4 = GetItemAtIdx(v3); + + ov11_02324D8C->field_0x18 = v3; + sub_02027B1C(v2); + if ((bool8)((v4->flags & 1) != 0)) { +#ifdef EUROPE + strcpy((u8 *)buf, StringFromId((u16)(v4->id + 0x2f4b))); +#elif defined(JAPAN) + strcpy((u8 *)buf, StringFromId((u16)(v4->id + 0x1d41))); +#else + strcpy((u8 *)buf, StringFromId((u16)(v4->id + 0x2f49))); +#endif + } else { + strcpy((u8 *)buf, ov11_02322DB0); + } + DrawTextInWindow(v2, 2, 2, buf); + UpdateWindow(v2); + } + } + if (!IsInventoryMenuActive(ov11_02324D8C->field_0x4)) { + s32 v5 = ov10_022BCDBC(ov11_02324D8C->field_0x4); + + if (v5 >= 0) { + struct item *v6; + s32 v7; + s32 v8; + + ov11_02324D8C->field_0x10 = v5; + v6 = GetItemAtIdx(ov11_02324D8C->field_0x10); + ov11_02324D8C->field_0x24e = v6->id; + if ((bool8)((v6->flags & 1) != 0)) { + ov11_02324D8C->field_0x24e = v6->id; + } else { + ov11_02324D8C->field_0x24e = 0; + } + v7 = GetItemCategoryVeneer(ov11_02324D8C->field_0x24e); + v8 = GetGameMode(); + if (v7 == 5 && v8 != 4 && v8 != 5) { + s16 i; + + for (i = 0; ov11_02322D38[i].field_0x0 != 0; i++) { + ov11_02324D8C->field_0x276[i] = 0; + switch (ov11_02322D38[i].field_0x0) { + case 0x2b6 + OV11_02307334_OFFSET: + if (!ov11_02309E48(ov11_02324D8C->field_0x24e)) { + ov11_02324D8C->field_0x276[i] = 3; + } + break; + } + } + menu_a.c = ov11_02324D8C->field_0x276; + ov11_02324D8C->field_0x6 = CreateParentMenuFromStringIds(&ov11_02322CB8, 0x400213, &menu_a, ov11_02322D38); + } else if (IsGummi(ov11_02324D8C->field_0x24e) && v8 != 4 && v8 != 5) { + ov11_02324D8C->field_0x6 = CreateParentMenuFromStringIds(&ov11_02322CB8, 0x400013, 0, &ov11_02322D88); + } else if (v6->held_by) { + ov11_02324D8C->field_0x6 = CreateParentMenuFromStringIds(&ov11_02322CA8, 0x400013, 0, &ov11_02322D10); + } else { + ov11_02324D8C->field_0x6 = CreateParentMenuFromStringIds(&ov11_02322CA8, 0x400013, 0, &ov11_02322D60); + } + ov11_02324D8C->field_0x0 = 3; + } else { + ov10_022BCD10(ov11_02324D8C->field_0x4); + ov11_02324D8C->field_0x0 = 0xe; + } + } else { + GetPressedButtons(0, &btn_c); + if (btn_c & 8) { + PlaySeVolumeWrapper(0); + ov10_022BCDF4(ov11_02324D8C->field_0x4); + ov11_02324D8C->field_0x10 = ov10_022BCDA8(ov11_02324D8C->field_0x4); + CloseTextBox2(ov11_02324D8C->field_0x5); + ov11_02324D8C->field_0x5 = -2; + CloseInventoryMenu(ov11_02324D8C->field_0x4); + ov11_02324D8C->field_0x4 = -2; + ov11_02324D8C->field_0x0 = 0xa; + } + } + } + break; + } + case 3: { + if (IsParentMenuActive(ov11_02324D8C->field_0x6)) { + break; + } + { + s32 v1 = GetSimpleMenuResult__0202AEA4(ov11_02324D8C->field_0x6); + + if (v1 != 8) { + ov11_02324D8C->field_0x14 = v1; + if (v1 == 0) { + ov11_02308D48(); + ov11_02324D8C->field_0x0 = 7; + } else if (v1 == 1) { + ov11_02308D48(); + ov11_02324D8C->field_0x0 = 9; + } else if (v1 == 2) { + menu_b.b = 5; + ov11_02324D8C->field_0x7 = CreateParentMenuFromStringIds(&ov11_02322C98, 0x33, &menu_b, &ov11_02322CD8); + ov11_02324D8C->field_0x0 = 4; + } else if (v1 == 6) { + ov11_02308D48(); + ov11_02324D8C->field_0x0 = 0x11; + } else if (v1 == 7) { + ov11_02308D48(); + ov11_02324D8C->field_0x0 = 0x18; + } else { + ov11_02308D48(); + ov11_02324D8C->field_0x0 = 0xa; + } + } else { + CloseParentMenu(ov11_02324D8C->field_0x6); + ov11_02324D8C->field_0x6 = -2; + ov11_02324D8C->field_0x0 = 2; + } + } + break; + } + case 17: { + ov11_02309040(1); + ov11_02324D8C->field_0x0 = 0x12; + break; + } + case 18: { + struct unk_02308F4C *v2; + s16 v3; + s32 v4; + + if (!ov11_023090DC()) { + break; + } + if (ov11_02309E24() != -1) { + v2 = &ov11_02324D8C->field_0x238; + ov11_02309DAC(&sel_18); + ov11_02308F4C(v2, &sel_18); + ov11_02324D8C->field_0x30c = GetLearnableIqSkills(ov11_02324D8C->field_0x280, v2->field_0x8, *v2->field_0x10); + ov11_02324D8C->field_0x250 = -1; + ov11_02324D8C->field_0x318 = *v2->field_0x10; + v3 = ov11_02324D8C->field_0x24e; + if (v2->field_0x0 == 0) { + ApplyGummiBoostsToGroundMonster(GetTeamMember(v2->field_0x4), v3, 1, &ov11_02324D8C->field_0x250); + } else if (v2->field_0x0 == 1) { + ApplyGummiBoostsToTeamMember(GetActiveTeamMember(v2->field_0x4), v3, 1, &ov11_02324D8C->field_0x250); + } + ov11_02324D8C->field_0x318 -= *v2->field_0x10; + ov11_022DC504(); + if (v2->field_0x0 == 1) { + sub_02058794(v2->field_0x4); + } + ov11_02324D8C->field_0x310 = GetLearnableIqSkills(ov11_02324D8C->field_0x2c5, v2->field_0x8, *v2->field_0x10); + ov11_02324D8C->field_0x314 = 1; + v4 = ov11_02324D8C->field_0x250; + ov11_02308EDC(); + if (v4 >= 0 && v4 <= 3) { + RemoveItemNoHoleCheck(ov11_02324D8C->field_0x10); + ov11_02324D8C->field_0x18 = -1; + ov11_02324D8C->field_0x0 = 0x13; + } else { + ShowStringIdInDialogueBox(ov11_02324D8C->field_0x8, 0x18, 0x2be + OV11_02307334_OFFSET, &ov11_02324D8C->field_0xb4); + ov11_02324D8C->field_0x0 = 0xd; + } + } else { + ov11_02324D8C->field_0x0 = 0; + } + ov11_02309DF8(); + break; + } + case 19: { + s32 v1; + s16 v2; + + v2 = ov11_02324D8C->field_0x250; + switch (v2) { + case 0: + v1 = 0x2b9 + OV11_02307334_OFFSET; + break; + case 1: + v1 = 0x2ba + OV11_02307334_OFFSET; + break; + case 2: + v1 = 0x2bb + OV11_02307334_OFFSET; + break; + case 3: + v1 = 0x2bc + OV11_02307334_OFFSET; + break; + default: + v1 = 0; + break; + } + if (ov11_02324D8C->field_0x318 == 0 && v2 >= 0 && v2 <= 3) { + v1 = 0x2bd + OV11_02307334_OFFSET; + } + if (v1 == 0) { + ov11_02324D8C->field_0x0 = 0x10; + break; + } + ov11_02324D8C->field_0xb4.flag_vals[0] = ov11_0230901C(&ov11_02324D8C->field_0x238); + ov11_02308EDC(); + ShowStringIdInDialogueBox(ov11_02324D8C->field_0x8, 0x18, v1, &ov11_02324D8C->field_0xb4); + ov11_02324D8C->field_0x0 = 0x14; + break; + } + case 20: { + if (IsDialogueBoxActive(ov11_02324D8C->field_0x8)) { + break; + } + ShowDialogueBox(ov11_02324D8C->field_0x8); + ov11_02308F14(); + ov11_02324D8C->field_0x0 = 0x15; + break; + } + case 21: { + do { + int v1 = 0; + int v2 = 0; + int i; + struct unk_02324D8C *st = ov11_02324D8C; + int n = st->field_0x30c; + + for (i = 0; i < n; i++) { + if (st->field_0x314 == st->field_0x280[i]) { + v1 = 1; + break; + } + } + for (i = 0; i < ov11_02324D8C->field_0x310; i++) { + if (ov11_02324D8C->field_0x314 == ov11_02324D8C->field_0x2c5[i]) { + v2 = 1; + break; + } + } + if (v1 != v2) { + ov11_02324D8C->field_0xb4.flag_vals[0] = ov11_0230901C(&ov11_02324D8C->field_0x238); + ov11_02324D8C->field_0xb4.id_vals[0] = ov11_02324D8C->field_0x314; + sub_02017C50(4); + ov11_02308EDC(); + ShowStringIdInDialogueBox(ov11_02324D8C->field_0x8, 0x18, 0x2BF + OV11_02307334_OFFSET, &ov11_02324D8C->field_0xb4); + EnableIqSkill(ov11_02324D8C->field_0x238.field_0xc, (u8)ov11_02324D8C->field_0x314); + ov11_02308FD0(&ov11_02324D8C->field_0x238); + ov11_02324D8C->field_0x314++; + ov11_02324D8C->field_0x0 = 0x14; + break; + } + ov11_02324D8C->field_0x314++; + } while (ov11_02324D8C->field_0x314 < 0x45); + if (ov11_02324D8C->field_0x314 >= 0x45) { + ov11_02324D8C->field_0x0 = 0x16; + } + break; + } + case 22: { + s32 v1; + + switch (ov11_02324D8C->field_0x252) { + case 0: + v1 = 0; + break; + case 1: + v1 = 0x2C1 + OV11_02307334_OFFSET; + break; + case 2: + v1 = 0x2C2 + OV11_02307334_OFFSET; + break; + case 4: + v1 = 0x2C3 + OV11_02307334_OFFSET; + break; + case 8: + v1 = 0x2C4 + OV11_02307334_OFFSET; + break; + default: + v1 = 0x2C0 + OV11_02307334_OFFSET; + break; + } + if (v1 == 0) { + ov11_02324D8C->field_0x0 = 0x10; + break; + } + ov11_02308EDC(); + ShowStringIdInDialogueBox(ov11_02324D8C->field_0x8, 0x18, 0x2BF + OV11_02307334_OFFSET, &ov11_02324D8C->field_0xb4); + ov11_02324D8C->field_0x314++; + ov11_02324D8C->field_0x0 = 0x17; + break; + } + case 23: { + if (IsDialogueBoxActive(ov11_02324D8C->field_0x8)) { + break; + } + ShowDialogueBox(ov11_02324D8C->field_0x8); + ov11_02308F14(); + ov11_02324D8C->field_0x0 = 0x10; + break; + } + case 24: { + ov11_02309084(GetItemAtIdx(ov11_02324D8C->field_0x10)->id); + ov11_02324D8C->field_0x0 = 0x19; + break; + } + case 25: { + if (!ov11_023090DC()) { + break; + } + if (ov11_02309E24() != -1) { + struct unk_02324D8C *v1 = ov11_02324D8C; + + ov11_02309DAC(&sel_10); + ov11_02308F4C(&v1->field_0x238, &sel_10); + ov11_02308FEC(&v1->field_0x238); + if (sub_020415BC()) { + ov11_02324D8C->field_0x0 = 0x1d; + } else { + struct item *v2 = GetItemAtIdx(ov11_02324D8C->field_0x10); + if (!IsHM(v2->id)) { + v2->quantity = v2->id - 0xbc; + v2->id = 0xbb; + SetItemAcquired(v2); + } + ov11_02324D8C->field_0x0 = 0x1a; + } + } else { + ov11_02324D8C->field_0x0 = 0; + } + ov11_02309DF8(); + break; + } + case 33: { + sub_02053CA0(ov11_02324D8C->field_0x328, 2, ov11_02324D8C->field_0x238.field_0x8, ov11_02324D8C->field_0x238.field_0xa); + sub_0203FD14(GetItemMoveId16(ov11_02324D8C->field_0x24e)); + ov11_02324D8C->field_0xa = sub_0204019C(6, 0, 0, ov11_02324D8C->field_0x328); + ov11_02324D8C->field_0x0 = 0x22; + break; + } + case 34: { + switch (sub_020407EC()) { + case 2: + ov11_02324D8C->field_0x0 = 0x1f; + break; + case 1: + sub_020407C0(); + CloseAdvancedTextBox(ov11_02324D8C->field_0xa); + ov11_02324D8C->field_0xa = -2; + ov11_02324D8C->field_0x0 = 0x18; + break; + case 7: + if (sub_02041094() < 4) { + memcpy(ov11_02324D8C->field_0x256, sub_0203FD38(), 0x20); + ov11_02324D8C->field_0x254 = sub_02041094(); + } else { + memcpy(ov11_02324D8C->field_0x256, sub_0203FD2C(), 8); + ov11_02324D8C->field_0x254 = -1; + } + sub_020407C0(); + CloseAdvancedTextBox(ov11_02324D8C->field_0xa); + ov11_02324D8C->field_0xa = -2; + ov11_02324D8C->field_0x0 = 0x27; + break; + } + break; + } + case 31: { + ov11_02324D8C->field_0x1c.b = 1; + ov11_02324D8C->field_0xc = CreateSimpleMenuFromStringIds(&ov11_02322CC8, 0x33, (s32)&ov11_02324D8C->field_0x1c, &ov11_02322CF0, 3); + ov11_02324D8C->field_0x0 = 0x20; + break; + } + case 32: { + if (!IsSimpleMenuActive(ov11_02324D8C->field_0xc)) { + s32 v1; + + v1 = GetSimpleMenuResult__0202B870(ov11_02324D8C->field_0xc); + CloseSimpleMenu(ov11_02324D8C->field_0xc); + ov11_02324D8C->field_0xc = -2; + switch (v1) { + case 0: + ov11_02324D8C->field_0x24c = sub_02041094(); + CloseAdvancedTextBox(ov11_02324D8C->field_0xa); + ov11_02324D8C->field_0xa = -2; + ov11_02324D8C->field_0x0 = 0x23; + break; + case 1: + if (sub_02041094() < 4) { + memcpy(ov11_02324D8C->field_0x256, sub_0203FD38(), 0x20); + ov11_02324D8C->field_0x254 = sub_02041094(); + } else { + memcpy(ov11_02324D8C->field_0x256, sub_0203FD2C(), 8); + ov11_02324D8C->field_0x254 = -1; + } + sub_020407C0(); + CloseAdvancedTextBox(ov11_02324D8C->field_0xa); + ov11_02324D8C->field_0xa = -2; + ov11_02324D8C->field_0x0 = 0x27; + break; + case 2: + sub_020416FC(); + ov11_02324D8C->field_0x0 = 0x22; + break; + } + } + break; + } + case 35: { + ov11_02324D8C->field_0xb4.id_vals[0] = sub_02041154(ov11_02324D8C->field_0x24c); + { + s32 v1 = 0x8d7 + OV11_02307334_OFFSET_2; + + if (ov11_02324D8C->field_0x24c < 3) { + if (sub_02041364(ov11_02324D8C->field_0x24c)) { + v1--; + } + } + ov11_02308EDC(); + ShowStringIdInDialogueBox(ov11_02324D8C->field_0x8, 0x18, v1, &ov11_02324D8C->field_0xb4); + } + ov11_02324D8C->field_0x0 = 0x24; + break; + } + case 36: { + if (!IsDialogueBoxActive(ov11_02324D8C->field_0x8)) { + ov11_02324D8C->field_0x0 = 0x25; + } + break; + } + case 37: { + menu_b.b = 5; + ov11_02324D8C->field_0x7 = CreateParentMenuFromStringIds(0, 0x33, &menu_b, &ov11_02322CD8); + ov11_02324D8C->field_0x0 = 0x26; + break; + } + case 38: { + if (IsParentMenuActive(ov11_02324D8C->field_0x7)) { + break; + } + if (GetSimpleMenuResult__0202AEA4(ov11_02324D8C->field_0x7) == 4) { + struct item *v1 = GetItemAtIdx(ov11_02324D8C->field_0x10); + if (!IsHM(v1->id)) { + if (v1->held_by != 0) { + sub_020582E0(v1->held_by); + } + v1->quantity = v1->id - 0xbc; + v1->id = 0xbb; + SetItemAcquired(v1); + } + ov11_02324D8C->field_0x0 = 0x1a; + if (ov11_02324D8C->field_0x24c >= 4) { + ov11_02324D8C->field_0x0 = 0x1b; + } else { + sub_02041484(); + ov11_02324D8C->field_0x0 = 0x1a; + } + } else { + sub_020407C0(); + ov11_02308FEC(&ov11_02324D8C->field_0x238); + ov11_02324D8C->field_0x0 = 0x21; + } + CloseParentMenu(ov11_02324D8C->field_0x7); + ov11_02324D8C->field_0x7 = -2; + ShowDialogueBox(ov11_02324D8C->field_0x8); + ov11_02308F14(); + break; + } + case 39: { + { + s16 v1 = ov11_02324D8C->field_0x254; + ov11_02324D8C->field_0xb = sub_020417A8(ov11_02324D8C->field_0x256, + v1 < 0 ? 1 : 4, + v1 < 0 ? 0 : v1, 1); + } + ov11_02324D8C->field_0x0 = 0x28; + break; + } + case 40: { + if (IsScrollBoxActive(ov11_02324D8C->field_0xb)) { + break; + } + CloseScrollBox(ov11_02324D8C->field_0xb); + sub_02041A00(); + ov11_02324D8C->field_0xb = -2; + ov11_02324D8C->field_0x0 = 0x21; + break; + } + case 26: { + { + u16 v1 = GetItemMoveId16(ov11_02324D8C->field_0x24e); + sub_02017C74(0x131b, 0x100); + sub_02041614(v1); + { + struct unk_02308F4C *v2 = &ov11_02324D8C->field_0x238; + if (v2->field_0x0 == 0) { + sub_0203FD80(v2->field_0x4); + } else if (v2->field_0x0 == 1) { + sub_0203FDEC(v2->field_0x4); + } + } + sub_020407C0(); + ov11_02324D8C->field_0xb4.id_vals[0] = v1; + } + ov11_02324D8C->field_0xb4.strings[0] = ov11_02308DD8(&ov11_02324D8C->field_0x238); + ov11_02308EDC(); + ShowStringIdInDialogueBox(ov11_02324D8C->field_0x8, 0x18, 0xf23 + OV11_02307334_OFFSET_3, &ov11_02324D8C->field_0xb4); + ov11_02308FD0(&ov11_02324D8C->field_0x238); + ov11_02324D8C->field_0x0 = 0x29; + break; + } + case 27: { + sub_020407C0(); + ov11_02324D8C->field_0x0 = 0x1c; + ov11_02324D8C->field_0x32c = sub_020037A4() + 10; + break; + } + case 28: { + if (sub_020037A4() > ov11_02324D8C->field_0x32c) { + ov11_02324D8C->field_0xb4.strings[0] = ov11_02308DD8(&ov11_02324D8C->field_0x238); + ov11_02308EDC(); + ShowStringIdInDialogueBox(ov11_02324D8C->field_0x8, 0x18, 0xf24 + OV11_02307334_OFFSET_3, &ov11_02324D8C->field_0xb4); + ov11_02324D8C->field_0x0 = 0x29; + } + break; + } + case 29: { + ov11_02308EDC(); + ShowStringIdInDialogueBox(ov11_02324D8C->field_0x8, 0x18, 0xf28 + OV11_02307334_OFFSET_3, 0); + ov11_02324D8C->field_0x0 = 0x1e; + break; + } + case 30: { + if (IsDialogueBoxActive(ov11_02324D8C->field_0x8)) { + break; + } + ShowDialogueBox(ov11_02324D8C->field_0x8); + ov11_02308F14(); + ov11_02324D8C->field_0x0 = 0x21; + break; + } + case 41: { + if (IsDialogueBoxActive(ov11_02324D8C->field_0x8)) { + break; + } + ShowDialogueBox(ov11_02324D8C->field_0x8); + ov11_02308F14(); + ov11_02324D8C->field_0x0 = 0; + break; + } + case 4: { + if (IsParentMenuActive(ov11_02324D8C->field_0x7)) { + break; + } + { + s32 v1 = GetSimpleMenuResult__0202AEA4(ov11_02324D8C->field_0x7); + ov11_02324D8C->field_0x0 = 2; + if (v1 != 8 && v1 == 4) { + ov11_02324D8C->field_0xb4.id_vals[0] = ov11_02324D8C->field_0x24e; + ov11_02324D8C->field_0xb4.number_vals[0] = 0; + RemoveItemNoHoleCheck(ov11_02324D8C->field_0x10); + ov11_022DC504(); + ov11_02324D8C->field_0x18 = -1; + ov10_022BCC60(ov11_02324D8C->field_0x4, GetNbItemsInBag()); + SetInventoryMenuState6(ov11_02324D8C->field_0x4); + ov11_02324D8C->field_0x0 = 5; + } + } + CloseParentMenu(ov11_02324D8C->field_0x7); + ov11_02324D8C->field_0x7 = -2; + CloseParentMenu(ov11_02324D8C->field_0x6); + ov11_02324D8C->field_0x6 = -2; + break; + } + case 5: { + if (IsInventoryMenuActive(ov11_02324D8C->field_0x4)) { + break; + } + CloseTextBox2(ov11_02324D8C->field_0x5); + ov11_02324D8C->field_0x5 = -2; + CloseInventoryMenu(ov11_02324D8C->field_0x4); + ov11_02324D8C->field_0x4 = -2; + ov11_02308EDC(); + ShowStringIdInDialogueBox(ov11_02324D8C->field_0x8, 0x18, 0x2cb + OV11_02307334_OFFSET, &ov11_02324D8C->field_0xb4); + ov11_02324D8C->field_0x0 = 6; + break; + } + case 6: { + if (IsDialogueBoxActive(ov11_02324D8C->field_0x8)) { + break; + } + ShowDialogueBox(ov11_02324D8C->field_0x8); + if (!IsBagNotEmpty()) { + ov11_02324D8C->field_0x0 = 0xc; + break; + } + ov11_02308F14(); + ov11_02324D8C->field_0x0 = 0; + break; + } + case 7: { + ov11_02324D8C->field_0x324 = sub_02044688(ov11_02324D8C->field_0x10, 2, 0, 0, 0, 0); + ov11_02324D8C->field_0x0 = 8; + break; + } + case 8: { + if (sub_02044800(ov11_02324D8C->field_0x324) != 1) { + break; + } + sub_020448EC(&ov11_02324D8C->field_0x324); + ov11_02324D8C->field_0x0 = 0; + break; + } + case 9: { + sub_020582E0(GetItemAtIdx(ov11_02324D8C->field_0x10)->held_by); + ov11_02324D8C->field_0x0 = 0; + break; + } + case 10: { + struct item *v1 = GetItemAtIdx(ov11_02324D8C->field_0x10); + bool8 v2 = (v1->flags & 1) != 0; + + if (v2) { + ov11_02324D8C->field_0x24e = v1->id; + } else { + ov11_02324D8C->field_0x24e = 0; + } + InitPreprocessorArgs(&args); + args.id_vals[0] = ov11_02324D8C->field_0x24e; + args.id_vals[2] = v1->quantity + 0xbc; +#ifdef EUROPE + ov11_02324D8C->field_0x9 = CreateScrollBoxSingle(&ov11_02322C78, 0x1013, 0, 0x8e4, &args, (u16)(ov11_02324D8C->field_0x24e + 0x29d3), &args); +#elif defined(JAPAN) + ov11_02324D8C->field_0x9 = CreateScrollBoxSingle(&ov11_02322C78, 0x1013, 0, 0x1d3c, &args, (u16)(ov11_02324D8C->field_0x24e + 0x41ce), &args); +#else + ov11_02324D8C->field_0x9 = CreateScrollBoxSingle(&ov11_02322C78, 0x1013, 0, 0x8e4, &args, (u16)(ov11_02324D8C->field_0x24e + 0x29d1), &args); +#endif + ov11_02324D8C->field_0x0 = 0xb; + break; + } + case 11: { + if (IsScrollBoxActive(ov11_02324D8C->field_0x9)) { + break; + } + CloseScrollBox(ov11_02324D8C->field_0x9); + ov11_02324D8C->field_0x9 = -2; + ov11_02324D8C->field_0x0 = 0; + break; + } + case 12: { + if (ov11_02324D8C->field_0x5 != -2) { + CloseTextBox2(ov11_02324D8C->field_0x5); + ov11_02324D8C->field_0x5 = -2; + } + if (ov11_02324D8C->field_0x4 != -2) { + CloseInventoryMenu(ov11_02324D8C->field_0x4); + ov11_02324D8C->field_0x4 = -2; + } + if (ov11_02324D8C->field_0x8 == -2) { + ov11_02308EDC(); + } + ShowStringIdInDialogueBox(ov11_02324D8C->field_0x8, 0x18, 0x2b4 + OV11_02307334_OFFSET, 0); + ov11_02324D8C->field_0x0 = 0xd; + break; + } + case 13: { + if (IsDialogueBoxActive(ov11_02324D8C->field_0x8)) { + break; + } + ShowDialogueBox(ov11_02324D8C->field_0x8); + ov11_02308F14(); + ov11_02324D8C->field_0x0 = 0x10; + break; + } + case 14: { + ov11_02324D8C->field_0x0 = 0xf; + break; + } + case 15: { + if (!IsInventoryMenuActive(ov11_02324D8C->field_0x4)) { + CloseTextBox2(ov11_02324D8C->field_0x5); + ov11_02324D8C->field_0x5 = -2; + CloseInventoryMenu(ov11_02324D8C->field_0x4); + ov11_02324D8C->field_0x4 = -2; + ov11_02324D8C->field_0x0 = 0x10; + } + } + case 16: + return 1; + } + + return 0; +}