Disney Dreamlight Valley [0100D39012C1A000]

  • Thread starter Thread starter morarin
  • Start date Start date
  • Views Views 40,105
  • Replies Replies 238
  • Likes Likes 37
i never asked but did other people also got the 100% glitch and can you restore it with your latest [R SelectToRemove] cheat?

Bug reports for cheat codes are made in this thread, so there are no other reports about the issue (?) right now. If the problem is that adding a debug-only item caused an extra count, the new deletion code should fix it. I can't tell if it's really a bug.
 
Does anyone know how to remove npc skin. Having problem on jack quest the dreamlight day. I think because i already add the “Jack’s Santa suit” skin before the quest is finish.
 
  • Like
Reactions: morarin
Does anyone know how to remove npc skin. Having problem on jack quest the dreamlight day. I think because i already add the “Jack’s Santa suit” skin before the quest is finish.

A bug can occur if a quest requires you to have not yet acquired the character skin reward from a Level 10 Friendship Quest in order for it to trigger. Could you please tell me more about the specific issue you're encountering?
 
  • Like
Reactions: LoreMarqs
These cheats unlock all in-game items, including rewards from quests, level-ups, the Premium Shop, and the Star Path. Be aware of a key difference: normally, Premium Shop and Star Path items are tied to your online account and can be recovered. Items you add with these cheats are not synced online.

Thank you, my wife plays it on steam and has it on xbox. Tired of seeing all the good stuff in the premium shop and currently on pc wemod doesnt have the ability to add items etc.. So this might be a good way,
 
  • Like
Reactions: morarin
Thank you, my wife plays it on steam and has it on xbox. Tired of seeing all the good stuff in the premium shop and currently on pc wemod doesnt have the ability to add items etc.. So this might be a good way,

Please be aware that some items, depending on their type, can interfere with quest progression. Therefore, it is recommended to use them after all quests have been finished.

The only item type that has been confirmed to cause a bug so far is "Tools". Please use "GetAllMissingTools&Accessories" only after you have unlocked all tools, including the Hourglass and the Royal Net.
Post automatically merged:

Does anyone know how to remove npc skin. Having problem on jack quest the dreamlight day. I think because i already add the “Jack’s Santa suit” skin before the quest is finish.

Fortunately, I was able to test it myself since I had wiped my save data and started a new game last week. My testing confirmed a bug that prevents you from completing Jack Skellington's level 10 friendship quest right at the very end, giving an "inventory full" error. I'm planning to work on creating a cheat code that will let me select and delete character skins.
Post automatically merged:

Does anyone know how to remove npc skin. Having problem on jack quest the dreamlight day. I think because i already add the “Jack’s Santa suit” skin before the quest is finish.

Disney Dreamlight Valley v1.19.1 BID=DD44F396D4C95D6B

[FixMissionRewards]
04000000 04E1C2F4 D503201F

[FixMissionRewards OFF]
04000000 04E1C2F4 36001600

This cheat code prevents the 'Inventory Full' error when mission rewards include an item you already own (like a character skin). This allows you to claim all rewards and complete the mission successfully. Importantly, the standard 'Inventory Full' warning will still appear correctly if your backpack is genuinely full of items, so there is no risk of losing essential rewards.
 
Last edited by morarin,
A bug can occur if a quest requires you to have not yet acquired the character skin reward from a Level 10 Friendship Quest
Please be aware that some items, depending on their type, can interfere with quest progression. Therefore, it is recommended to use them after all quests have been finished.

The only item type that has been confirmed to cause a bug so far is "Tools". Please use "GetAllMissingTools&Accessories" only after you have unlocked all tools, including the Hourglass and the Royal Net.
Post automatically merged:



Fortunately, I was able to test it myself since I had wiped my save data and started a new game last week. My testing confirmed a bug that prevents you from completing Jack Skellington's level 10 friendship quest right at the very end, giving an "inventory full" error. I'm planning to work on creating a cheat code that will let me select and delete character skins.
Post automatically merged:



Disney Dreamlight Valley v1.19.1 BID=DD44F396D4C95D6B

[FixMissionRewards]
04000000 04E1C2F4 D503201F

[FixMissionRewards OFF]
04000000 04E1C2F4 36001600

This cheat code prevents the 'Inventory Full' error when mission rewards include an item you already own (like a character skin). This allows you to claim all rewards and complete the mission successfully. Importantly, the standard 'Inventory Full' warning will still appear correctly if your backpack is genuinely full of items, so there is no risk of losing essential rewards.
Thank you i was super busy last night and can’t reply. Yes the bug inventory full even if i have only 3 in my inventory. Tried selling some items in goofy stall but i cant either. It says not enough. Will test this cheat and Thank you so much for everything.
Post automatically merged:

tried the cheat for jack skellingtons level 10 quest and it works. Thank you so much i can finally play again.
 
Last edited by mysterykai,
Post automatically merged:

tried the cheat for jack skellingtons level 10 quest and it works. Thank you so much i can finally play again.

I'm happy I could make a cheat code to fix the issue. Thanks for the report. I might have completely missed this bug otherwise.
 
Is it just me or feeding critters is bug because of the update? When i tried to feed critters it will freezes and the the software will closed.
 
  • Like
Reactions: morarin
Is it just me or feeding critters is bug because of the update? When i tried to feed critters it will freezes and the the software will closed.

I discovered that the reported crash was caused by a faulty restore code in the 'EasyUnlockCritter' cheat. This bug was likely introduced when the code, originally written for an older version, was updated for the current version using 'Code Updater for Nintendo Switch.' I have corrected the code.
 
I discovered that the reported crash was caused by a faulty restore code in the 'EasyUnlockCritter' cheat. This bug was likely introduced when the code, originally written for an older version, was updated for the current version using 'Code Updater for Nintendo Switch.' I have corrected the code.
Yes its working. i can feed them now without crashing. Thank you.
 
  • Like
Reactions: morarin
Disney Dreamlight Valley v1.19.1 BID=DD44F396D4C95D6B

[ZL NoConsumeItems]
04000000 0396C160 D10283FF
04000000 0396C164 A9047BFD
04000000 0396CA10 D10243FF
04000000 0396CA14 A9037BFD
80000100
04000000 0396C160 52800020
04000000 0396C164 D65F03C0
04000000 0396CA10 52800020
04000000 0396CA14 D65F03C0
20000000

With this cheat enabled, holding down the ZL button will prevent items in your backpack and storage from being consumed. This is intended for use during actions such as giving an item to a character, dropping an item onto the ground, or taking items out of storage.
 
hi, just asking is the tree from well in the plaza can be cheat to make it bigger? 😂 and all the missing memories from the collection? Just asking only. Ty
 
  • Like
Reactions: morarin
hi, just asking is the tree from well in the plaza can be cheat to make it bigger? 😂 and all the missing memories from the collection? Just asking only. Ty

I was just working on a cheat code today to make it possible to claim all achievement rewards. After I enabled it and mashed the button to claim everything, I noticed the Wishing Well Tree didn't change size at all. When I looked into it more closely, I found out that the tree's size is based on the percentage of achievements you've completed, not on whether you've simply claimed the rewards. This means my cheat code not only can't grow the tree, but it actually has the dangerous potential to stop it from ever growing again. I'm really thankful for your request, because without it, I might have carelessly posted this dangerous code. Thank you.

Forcing the Wishing Well Tree to grow is probably more complicated than I first thought, but I'm still going to try to make a cheat code for it.



As for the Memories, I've been feeling like a cheat is needed for a while now because their drop rate is ridiculously low. The only problem is that many of them are tied to quests, so just unlocking them all at once is dangerous. Because of that, I'm thinking about taking the approach of modifying the drop rate itself.
 
Yes i think high drop rate would be awesome and for the trees that’s ok. I’ve been grinding for the achievement for quite sometime cause i really love the tree grow so huge 😂 the cheats that you have made make my life easier for the achievements to be done and thank you for everything you do.
 
  • Like
Reactions: morarin
Yes i think high drop rate would be awesome and for the trees that’s ok. I’ve been grinding for the achievement for quite sometime cause i really love the tree grow so huge 😂 the cheats that you have made make my life easier for the achievements to be done and thank you for everything you do.

Disney Dreamlight Valley v1.19.1 BID=DD44F396D4C95D6B

[ClaimAllAchievements]
04000000 055BF774 D503201F
04000000 055C31DC B9006668
04000000 055C31E0 B9009A68
04000000 055C31E4 14000004

[ClaimAllAchievements OFF]
04000000 055BF774 5400032D
04000000 055C31DC 6B08013F
04000000 055C31E0 540000AA
04000000 055C31E4 2A1F03E0

Activating this cheat code makes all achievement rewards claimable, allowing you to grow the Dreamlight Tree at the Wishing Well in the Plaza.
Post automatically merged:

hi, just asking is the tree from well in the plaza can be cheat to make it bigger? 😂 and all the missing memories from the collection? Just asking only. Ty

After some research, I've found that creating a cheat code for guaranteed Memory Shard drops is far more complex than anticipated. I was able to quickly create a cheat code that guarantees a Memory Shard will drop from activities like cooking, fishing, gardening, mining, watering dried flowers, and capturing Snippets. However, for all other sources, items are randomly pulled from an item pool. This makes it difficult to specifically target Memory Shards, and the cheat code itself would inevitably become long. Even if I were to complete such a code, it would be impossible to unlock memories that are exclusive to limited-time events. For these reasons, I have decided to change my approach. I will now start working on a cheat code to unlock all memories in the game. I anticipate this could cause quest-related bugs, which will need to be addressed. Therefore, the cheat will primarily be intended for players who have already completed all quests.

Disney Dreamlight Valley v1.19.1 BID=DD44F396D4C95D6B

[AlwaysActivityBonusRewards]
04000000 04C775A8 52807D08

[AlwaysActivityBonusRewards OFF]
04000000 04C775A8 B9401F48

With this cheat code enabled, you are guaranteed a Memory Shard drop when cooking, fishing, harvesting, mining, watering dried flowers, or capturing Snippets.
 
Last edited by morarin,
Patjenova made a code that allowed you to choose the color of the ripples in the water ( gold, blue, or white) which made it possible to fish for whatever variety of fish you might still need. Is this something you can reproduce since you're bringing so much to the game for everyone? Here's the old codes if you feel like messing with them, or making your own version. I updated them last for version 1.8.7, so thats what these are.

[Always gold ripple)
040a0000 031af960 B9403A73
040a0000 031af960 14e96fa2
040a0000 06cob7e8 52800062
040a0000 06cob7ec b9001a62
040a0000 06cob7f0 b9403a73
040a0000 06cob7f4 1716905c

[Always blue ripple]
040a0000 031af960 B9403A73
040a0000 031af960 14e96fa2
040a0000 06cob7e8 52800042
040a0000 06cob7ec b9001a62
040a0000 06cob7f0 b9403a73
040a0000 06cob7f4 1716905c

[Always white ripple]
040a0000 031af960 B9403A73
040a0000 031af960 14e96fa2
040a0000 06cob7e8 52800022
040a0000 06cob7ec b9001a62
040a0000 06cob7f0 b9403a73
040a0000 06cob7f4 1716905c
 
hi, just asking is the tree from well in the plaza can be cheat to make it bigger? 😂 and all the missing memories from the collection? Just asking only. Ty

Disney Dreamlight Valley v1.19.1 BID=DD44F396D4C95D6B

If you use this cheat code to unlock all memories before all quests have been completed, you risk causing serious bugs. Quests that require unlocking a specific memory to start may fail to trigger, and quests that require a specific memory to progress may become impossible to complete.


[UnlockAllMemories]
04000000 0471A654 D503201F
04000000 04716B68 2A1F03E8
04000000 0717107C 9442AD64
04000000 04D761A0 17FFFFD3
04000000 04D7612C 94D29954
04000000 0821C60C A9BF7BF3
04000000 0821C610 A9BF53F3
04000000 0821C614 A9BF5BF5
04000000 0821C618 A9BF63F7
04000000 0821C61C 96C06461
04000000 0821C620 AA0003F3
04000000 0821C624 9709EEAF
04000000 0821C628 528001A1
04000000 0821C62C AA1F03E2
04000000 0821C630 9709DE44
04000000 0821C634 91008014
04000000 0821C638 B9401815
04000000 0821C63C 52800016
04000000 0821C640 F8767A80
04000000 0821C644 B9401817
04000000 0821C648 AA1303E0
04000000 0821C64C 2A1703E1
04000000 0821C650 52800022
04000000 0821C654 AA1F03E3
04000000 0821C658 97459B22
04000000 0821C65C 110006D6
04000000 0821C660 6B1502DF
04000000 0821C664 54FFFEE3
04000000 0821C668 A8C163F7
04000000 0821C66C A8C15BF5
04000000 0821C670 A8C153F3
04000000 0821C674 A8C17BE0
04000000 0821C678 D65F03C0
04000000 0821C67C A9BF07E0
04000000 0821C680 A9BF0FE2
04000000 0821C684 9709EE97
04000000 0821C688 AA1503E1
04000000 0821C68C 9709DAB9
04000000 0821C690 B9406809
04000000 0821C694 12800008
04000000 0821C698 5280040A
04000000 0821C69C 4B09014A
04000000 0821C6A0 1ACA2508
04000000 0821C6A4 A8C10FE2
04000000 0821C6A8 A8C107E0
04000000 0821C6AC 172D66A1

[UnlockAllMemories OFF]
04000000 0471A654 340001C8
04000000 04716B68 2A1502C8
04000000 0717107C AA1303E0
04000000 04D761A0 54FFFA60
04000000 04D7612C 2A180108

Turn on this cheat code and open the wardrobe to unlock all memories. It will take some time for all the memories to be added. I highly recommend you leave it alone until it has finished. I confirmed that all the memories were unlocked after I restarted the game, having left the Wardrobe menu open for about 5 minutes.

Code:
// ============================================================================
// Unlock All Memories (per-item grant) — dynamic full(n) mask, no recount
// ============================================================================

// --- Patches -----------------------------------------------------------------
// 1) Dev gate off: Meta.DebugAddItem.Types.Response::ApplyThis
//    Original: 0x710471A654    CBZ W8, 0x710471A68C
0x710471A654    NOP                                 // disable developer-flag check so grant always proceeds

// 2) Wrap bypass: Meta.DebugAddItem::GetItemState
//    Original: 0x7104716B68    ORR W8, W22, W21
0x7104716B68    MOV     W8, WZR                      // force OR result=0 to never wrap MemoryShard into ActivityItem

// 3) Hook into shared cave from WardrobeMenu::OnFocusIn
//    Original at hook site: 0x710717107C    MOV X0, X19
0x710717107C    BL      0x710821C60C                 // jump to shared code cave (enumerate and grant)

// 4) AddMemoryShard: disable "already-owned → skip" (always go success path)
//    Original: 0x7104D761A0    B.EQ  0x7104D760EC
0x7104D761A0    B       0x7104D760EC                 // unconditional branch to success path

// 5) AddMemoryShard: replace 1-bit OR with call to full(n) mask builder
//    Original: 0x7104D7612C    ORR W8, W8, W24
0x7104D7612C    BL      0x710821C67C                 // BL to FULLMASK_STUB (sets W8=(1<<n)-1)


// ============================================================================
// [Shared Code Cave] Enumerate all MemoryShard items and call DebugAddItem
// ============================================================================

0x710821C60C    STP     X19, X30, [SP, #-0x10]!      // prologue: save X19,LR
0x710821C610    STP     X19, X20, [SP, #-0x10]!      // prologue: save X19,X20 (per user’s stack layout)
0x710821C614    STP     X21, X22, [SP, #-0x10]!      // prologue: save X21,X22
0x710821C618    STP     X23, X24, [SP, #-0x10]!      // prologue: save X23,X24

0x710821C61C    BL      0x71032357A0                 // X0 = get_MetaClient()
0x710821C620    MOV     X19, X0                      // keep Client* in X19

0x710821C624    BL      0x71044980E0                 // X0 = ItemDatabase.Instance
0x710821C628    MOV     W1,  #13                     // W1 = ItemType.MemoryShard
0x710821C62C    MOV     X2,  XZR                     // X2 = null (method ptr)
0x710821C630    BL      0x7104493F40                 // X0 = GetAllByType(int) → List<IItemData>*

0x710821C634    ADD     X20, X0, #0x20               // X20 = elements pointer (&list[0])
0x710821C638    LDR     W21, [X0, #0x18]             // W21 = list length
0x710821C63C    MOV     W22, #0                      // i = 0

0x710821C640    LDR     X0, [X20, X22, LSL #3]       // X0 = MemoryShardItemData*
0x710821C644    LDR     W23, [X0, #0x18]             // W23 = subId (INLINE get_Item at +0x18)

0x710821C648    MOV     X0, X19                      // X0 = this (Client*)
0x710821C64C    MOV     W1, W23                      // W1 = itemId (MemoryShard subId)
0x710821C650    MOV     W2, #1                       // W2 = amount = 1
0x710821C654    MOV     X3, XZR                      // X3 = CancellationToken default
0x710821C658    BL      0x71053832E0                 // Client.DebugAddItem(int,int,CancellationToken)

0x710821C65C    ADD     W22, W22, #1                 // i++
0x710821C660    CMP     W22, W21                     // compare i vs len
0x710821C664    B.LO    0x710821C640                 // loop if i < len

0x710821C668    LDP     X23, X24, [SP], #0x10        // epilogue: restore X23,X24
0x710821C66C    LDP     X21, X22, [SP], #0x10        // epilogue: restore X21,X22
0x710821C670    LDP     X19, X20, [SP], #0x10        // epilogue: restore X19,X20
0x710821C674    LDP     X0,  X30, [SP], #0x10        // epilogue: restore X0(scratch of X19), LR
0x710821C678    RET                                  // return to caller (restores original control)


// ============================================================================
// [FULLMASK_STUB] Build W8 = (1<<n) - 1 and return
// ============================================================================

0x710821C67C    STP     X0, X1, [SP, #-0x10]!        // save X0,X1 (scratch)
0x710821C680    STP     X2, X3, [SP, #-0x10]!        // save X2,X3 (scratch)

0x710821C684    BL      0x71044980E0                 // X0 = ItemDatabase.Instance
0x710821C688    MOV     X1, X21                      // X1 = itemId (key for GetItemData)
0x710821C68C    BL      0x7104493170                 // X0 = ItemDatabase.GetItemData(itemId) → MemoryShardItemData*

0x710821C690    LDR     W9, [X0, #0x68]              // W9 = n = NumberOfShards (int, at +0x68)

0x710821C694    MOV     W8, #-1                      // W8 = 0xFFFFFFFF (all ones)
0x710821C698    MOV     W10, #32                     // W10 = 32 (bit width for W-reg ops)
0x710821C69C    SUB     W10, W10, W9                 // W10 = 32 - n
0x710821C6A0    LSR     W8, W8, W10                  // W8 = 0xFFFFFFFF >> (32 - n) = (1<<n) - 1

0x710821C6A4    LDP     X2, X3, [SP], #0x10          // restore X2,X3
0x710821C6A8    LDP     X0, X1, [SP], #0x10          // restore X0,X1

0x710821C6AC    B       0x7104D76130                 // return into original flow (STR W8,[SP,#var_8] next)
Post automatically merged:

Disney Dreamlight Valley v1.19.1 BID=DD44F396D4C95D6B

If you use this cheat code to unlock all memories before all quests have been completed, you risk causing serious bugs. Quests that require unlocking a specific memory to start may fail to trigger, and quests that require a specific memory to progress may become impossible to complete.


[UnlockAllMemories]
04000000 0471A654 D503201F
04000000 04716B68 2A1F03E8
04000000 0717107C 9442AD64
04000000 04D761A0 17FFFFD3
04000000 04D7612C 94D29954
04000000 0821C60C A9BF7BF3
04000000 0821C610 A9BF53F3
04000000 0821C614 A9BF5BF5
04000000 0821C618 A9BF63F7
04000000 0821C61C 96C06461
04000000 0821C620 AA0003F3
04000000 0821C624 9709EEAF
04000000 0821C628 528001A1
04000000 0821C62C AA1F03E2
04000000 0821C630 9709DE44
04000000 0821C634 91008014
04000000 0821C638 B9401815
04000000 0821C63C 52800016
04000000 0821C640 F8767A80
04000000 0821C644 B9401817
04000000 0821C648 AA1303E0
04000000 0821C64C 2A1703E1
04000000 0821C650 52800022
04000000 0821C654 AA1F03E3
04000000 0821C658 97459B22
04000000 0821C65C 110006D6
04000000 0821C660 6B1502DF
04000000 0821C664 54FFFEE3
04000000 0821C668 A8C163F7
04000000 0821C66C A8C15BF5
04000000 0821C670 A8C153F3
04000000 0821C674 A8C17BE0
04000000 0821C678 D65F03C0
04000000 0821C67C A9BF07E0
04000000 0821C680 A9BF0FE2
04000000 0821C684 9709EE97
04000000 0821C688 AA1503E1
04000000 0821C68C 9709DAB9
04000000 0821C690 B9406809
04000000 0821C694 12800008
04000000 0821C698 5280040A
04000000 0821C69C 4B09014A
04000000 0821C6A0 1ACA2508
04000000 0821C6A4 A8C10FE2
04000000 0821C6A8 A8C107E0
04000000 0821C6AC 172D66A1

[UnlockAllMemories OFF]
04000000 0471A654 340001C8
04000000 04716B68 2A1502C8
04000000 0717107C AA1303E0
04000000 04D761A0 54FFFA60
04000000 04D7612C 2A180108

Turn on this cheat code and open the wardrobe to unlock all memories. It will take some time for all the memories to be added. I highly recommend you leave it alone until it has finished. I confirmed that all the memories were unlocked after I restarted the game, having left the Wardrobe menu open for about 5 minutes.

Code:
// ============================================================================
// Unlock All Memories (per-item grant) — dynamic full(n) mask, no recount
// ============================================================================

// --- Patches -----------------------------------------------------------------
// 1) Dev gate off: Meta.DebugAddItem.Types.Response::ApplyThis
//    Original: 0x710471A654    CBZ W8, 0x710471A68C
0x710471A654    NOP                                 // disable developer-flag check so grant always proceeds

// 2) Wrap bypass: Meta.DebugAddItem::GetItemState
//    Original: 0x7104716B68    ORR W8, W22, W21
0x7104716B68    MOV     W8, WZR                      // force OR result=0 to never wrap MemoryShard into ActivityItem

// 3) Hook into shared cave from WardrobeMenu::OnFocusIn
//    Original at hook site: 0x710717107C    MOV X0, X19
0x710717107C    BL      0x710821C60C                 // jump to shared code cave (enumerate and grant)

// 4) AddMemoryShard: disable "already-owned → skip" (always go success path)
//    Original: 0x7104D761A0    B.EQ  0x7104D760EC
0x7104D761A0    B       0x7104D760EC                 // unconditional branch to success path

// 5) AddMemoryShard: replace 1-bit OR with call to full(n) mask builder
//    Original: 0x7104D7612C    ORR W8, W8, W24
0x7104D7612C    BL      0x710821C67C                 // BL to FULLMASK_STUB (sets W8=(1<<n)-1)


// ============================================================================
// [Shared Code Cave] Enumerate all MemoryShard items and call DebugAddItem
// ============================================================================

0x710821C60C    STP     X19, X30, [SP, #-0x10]!      // prologue: save X19,LR
0x710821C610    STP     X19, X20, [SP, #-0x10]!      // prologue: save X19,X20 (per user’s stack layout)
0x710821C614    STP     X21, X22, [SP, #-0x10]!      // prologue: save X21,X22
0x710821C618    STP     X23, X24, [SP, #-0x10]!      // prologue: save X23,X24

0x710821C61C    BL      0x71032357A0                 // X0 = get_MetaClient()
0x710821C620    MOV     X19, X0                      // keep Client* in X19

0x710821C624    BL      0x71044980E0                 // X0 = ItemDatabase.Instance
0x710821C628    MOV     W1,  #13                     // W1 = ItemType.MemoryShard
0x710821C62C    MOV     X2,  XZR                     // X2 = null (method ptr)
0x710821C630    BL      0x7104493F40                 // X0 = GetAllByType(int) → List<IItemData>*

0x710821C634    ADD     X20, X0, #0x20               // X20 = elements pointer (&list[0])
0x710821C638    LDR     W21, [X0, #0x18]             // W21 = list length
0x710821C63C    MOV     W22, #0                      // i = 0

0x710821C640    LDR     X0, [X20, X22, LSL #3]       // X0 = MemoryShardItemData*
0x710821C644    LDR     W23, [X0, #0x18]             // W23 = subId (INLINE get_Item at +0x18)

0x710821C648    MOV     X0, X19                      // X0 = this (Client*)
0x710821C64C    MOV     W1, W23                      // W1 = itemId (MemoryShard subId)
0x710821C650    MOV     W2, #1                       // W2 = amount = 1
0x710821C654    MOV     X3, XZR                      // X3 = CancellationToken default
0x710821C658    BL      0x71053832E0                 // Client.DebugAddItem(int,int,CancellationToken)

0x710821C65C    ADD     W22, W22, #1                 // i++
0x710821C660    CMP     W22, W21                     // compare i vs len
0x710821C664    B.LO    0x710821C640                 // loop if i < len

0x710821C668    LDP     X23, X24, [SP], #0x10        // epilogue: restore X23,X24
0x710821C66C    LDP     X21, X22, [SP], #0x10        // epilogue: restore X21,X22
0x710821C670    LDP     X19, X20, [SP], #0x10        // epilogue: restore X19,X20
0x710821C674    LDP     X0,  X30, [SP], #0x10        // epilogue: restore X0(scratch of X19), LR
0x710821C678    RET                                  // return to caller (restores original control)


// ============================================================================
// [FULLMASK_STUB] Build W8 = (1<<n) - 1 and return
// ============================================================================

0x710821C67C    STP     X0, X1, [SP, #-0x10]!        // save X0,X1 (scratch)
0x710821C680    STP     X2, X3, [SP, #-0x10]!        // save X2,X3 (scratch)

0x710821C684    BL      0x71044980E0                 // X0 = ItemDatabase.Instance
0x710821C688    MOV     X1, X21                      // X1 = itemId (key for GetItemData)
0x710821C68C    BL      0x7104493170                 // X0 = ItemDatabase.GetItemData(itemId) → MemoryShardItemData*

0x710821C690    LDR     W9, [X0, #0x68]              // W9 = n = NumberOfShards (int, at +0x68)

0x710821C694    MOV     W8, #-1                      // W8 = 0xFFFFFFFF (all ones)
0x710821C698    MOV     W10, #32                     // W10 = 32 (bit width for W-reg ops)
0x710821C69C    SUB     W10, W10, W9                 // W10 = 32 - n
0x710821C6A0    LSR     W8, W8, W10                  // W8 = 0xFFFFFFFF >> (32 - n) = (1<<n) - 1

0x710821C6A4    LDP     X2, X3, [SP], #0x10          // restore X2,X3
0x710821C6A8    LDP     X0, X1, [SP], #0x10          // restore X0,X1

0x710821C6AC    B       0x7104D76130                 // return into original flow (STR W8,[SP,#var_8] next)

Test Results:

MICKEY'S MEMORIES (Quest requiring a Memory to be unlocked mid-quest):
The step to pick up and unlock the memory was simply skipped, and the quest progressed without any issues.

THE BROKEN MEMORY (Quest requiring a Memory to be unlocked to start):The quest started as soon as the other conditions were met, without needing to find and unlock the specific Memory.

Please be aware that this cheat has only been tested on two specific quests ("MICKEY'S MEMORIES" and "THE BROKEN MEMORY"). It is possible that this cheat could cause serious, game-breaking bugs in other quests. Use at your own risk.

Post automatically merged:

Patjenova made a code that allowed you to choose the color of the ripples in the water ( gold, blue, or white) which made it possible to fish for whatever variety of fish you might still need. Is this something you can reproduce since you're bringing so much to the game for everyone? Here's the old codes if you feel like messing with them, or making your own version. I updated them last for version 1.8.7, so thats what these are.

[Always gold ripple)
040a0000 031af960 B9403A73
040a0000 031af960 14e96fa2
040a0000 06cob7e8 52800062
040a0000 06cob7ec b9001a62
040a0000 06cob7f0 b9403a73
040a0000 06cob7f4 1716905c

[Always blue ripple]
040a0000 031af960 B9403A73
040a0000 031af960 14e96fa2
040a0000 06cob7e8 52800042
040a0000 06cob7ec b9001a62
040a0000 06cob7f0 b9403a73
040a0000 06cob7f4 1716905c

[Always white ripple]
040a0000 031af960 B9403A73
040a0000 031af960 14e96fa2
040a0000 06cob7e8 52800022
040a0000 06cob7ec b9001a62
040a0000 06cob7f0 b9403a73
040a0000 06cob7f4 1716905c

Disney Dreamlight Valley v1.19.1 BID=DD44F396D4C95D6B

[--SectionStart:ForceFishRarity--]
00000000 00000000 00000000
[ForceNormalFish]
04000000 04780960 52800035
04000000 04780A04 52800008
04000000 04780A34 7100051F
04000000 04780A38 1A9F07E8
04000000 04780A50 54000140
04000000 04780A54 52800028

[ForceUncommonFish]
04000000 04780960 52800035
04000000 04780A04 52800008
04000000 04780A34 7100091F
04000000 04780A38 1A9F07E8
04000000 04780A50 54000140
04000000 04780A54 52800048

[ForceRareFish]
04000000 04780960 52800035
04000000 04780A04 52800008
04000000 04780A34 71000D1F
04000000 04780A38 1A9F07E8
04000000 04780A50 54000140
[--SectionEnd:ForceFishRarity--]
00000000 00000000 00000000

[ForceFishRarity OFF]
04000000 04780960 2A0003F5
04000000 04780A04 39411108
04000000 04780A34 7100051F
04000000 04780A38 1A9F17E8
04000000 04780A50 54000141
04000000 04780A54 52800068

This cheat lets you change the rarity of fish you reel in. Normal corresponds to fish normally found in white ripples, Uncommon to blue ripples, and Rare to gold ripples.
 
Last edited by morarin,
Disney Dreamlight Valley v1.19.1 BID=DD44F396D4C95D6B

If you use this cheat code to unlock all memories before all quests have been completed, you risk causing serious bugs. Quests that require unlocking a specific memory to start may fail to trigger, and quests that require a specific memory to progress may become impossible to complete.


[UnlockAllMemories]
04000000 0471A654 D503201F
04000000 04716B68 2A1F03E8
04000000 0717107C 9442AD64
04000000 04D761A0 17FFFFD3
04000000 04D7612C 94D29954
04000000 0821C60C A9BF7BF3
04000000 0821C610 A9BF53F3
04000000 0821C614 A9BF5BF5
04000000 0821C618 A9BF63F7
04000000 0821C61C 96C06461
04000000 0821C620 AA0003F3
04000000 0821C624 9709EEAF
04000000 0821C628 528001A1
04000000 0821C62C AA1F03E2
04000000 0821C630 9709DE44
04000000 0821C634 91008014
04000000 0821C638 B9401815
04000000 0821C63C 52800016
04000000 0821C640 F8767A80
04000000 0821C644 B9401817
04000000 0821C648 AA1303E0
04000000 0821C64C 2A1703E1
04000000 0821C650 52800022
04000000 0821C654 AA1F03E3
04000000 0821C658 97459B22
04000000 0821C65C 110006D6
04000000 0821C660 6B1502DF
04000000 0821C664 54FFFEE3
04000000 0821C668 A8C163F7
04000000 0821C66C A8C15BF5
04000000 0821C670 A8C153F3
04000000 0821C674 A8C17BE0
04000000 0821C678 D65F03C0
04000000 0821C67C A9BF07E0
04000000 0821C680 A9BF0FE2
04000000 0821C684 9709EE97
04000000 0821C688 AA1503E1
04000000 0821C68C 9709DAB9
04000000 0821C690 B9406809
04000000 0821C694 12800008
04000000 0821C698 5280040A
04000000 0821C69C 4B09014A
04000000 0821C6A0 1ACA2508
04000000 0821C6A4 A8C10FE2
04000000 0821C6A8 A8C107E0
04000000 0821C6AC 172D66A1

[UnlockAllMemories OFF]
04000000 0471A654 340001C8
04000000 04716B68 2A1502C8
04000000 0717107C AA1303E0
04000000 04D761A0 54FFFA60
04000000 04D7612C 2A180108

Turn on this cheat code and open the wardrobe to unlock all memories. It will take some time for all the memories to be added. I highly recommend you leave it alone until it has finished. I confirmed that all the memories were unlocked after I restarted the game, having left the Wardrobe menu open for about 5 minutes.

Code:
// ============================================================================
// Unlock All Memories (per-item grant) — dynamic full(n) mask, no recount
// ============================================================================

// --- Patches -----------------------------------------------------------------
// 1) Dev gate off: Meta.DebugAddItem.Types.Response::ApplyThis
//    Original: 0x710471A654    CBZ W8, 0x710471A68C
0x710471A654    NOP                                 // disable developer-flag check so grant always proceeds

// 2) Wrap bypass: Meta.DebugAddItem::GetItemState
//    Original: 0x7104716B68    ORR W8, W22, W21
0x7104716B68    MOV     W8, WZR                      // force OR result=0 to never wrap MemoryShard into ActivityItem

// 3) Hook into shared cave from WardrobeMenu::OnFocusIn
//    Original at hook site: 0x710717107C    MOV X0, X19
0x710717107C    BL      0x710821C60C                 // jump to shared code cave (enumerate and grant)

// 4) AddMemoryShard: disable "already-owned → skip" (always go success path)
//    Original: 0x7104D761A0    B.EQ  0x7104D760EC
0x7104D761A0    B       0x7104D760EC                 // unconditional branch to success path

// 5) AddMemoryShard: replace 1-bit OR with call to full(n) mask builder
//    Original: 0x7104D7612C    ORR W8, W8, W24
0x7104D7612C    BL      0x710821C67C                 // BL to FULLMASK_STUB (sets W8=(1<<n)-1)


// ============================================================================
// [Shared Code Cave] Enumerate all MemoryShard items and call DebugAddItem
// ============================================================================

0x710821C60C    STP     X19, X30, [SP, #-0x10]!      // prologue: save X19,LR
0x710821C610    STP     X19, X20, [SP, #-0x10]!      // prologue: save X19,X20 (per user’s stack layout)
0x710821C614    STP     X21, X22, [SP, #-0x10]!      // prologue: save X21,X22
0x710821C618    STP     X23, X24, [SP, #-0x10]!      // prologue: save X23,X24

0x710821C61C    BL      0x71032357A0                 // X0 = get_MetaClient()
0x710821C620    MOV     X19, X0                      // keep Client* in X19

0x710821C624    BL      0x71044980E0                 // X0 = ItemDatabase.Instance
0x710821C628    MOV     W1,  #13                     // W1 = ItemType.MemoryShard
0x710821C62C    MOV     X2,  XZR                     // X2 = null (method ptr)
0x710821C630    BL      0x7104493F40                 // X0 = GetAllByType(int) → List<IItemData>*

0x710821C634    ADD     X20, X0, #0x20               // X20 = elements pointer (&list[0])
0x710821C638    LDR     W21, [X0, #0x18]             // W21 = list length
0x710821C63C    MOV     W22, #0                      // i = 0

0x710821C640    LDR     X0, [X20, X22, LSL #3]       // X0 = MemoryShardItemData*
0x710821C644    LDR     W23, [X0, #0x18]             // W23 = subId (INLINE get_Item at +0x18)

0x710821C648    MOV     X0, X19                      // X0 = this (Client*)
0x710821C64C    MOV     W1, W23                      // W1 = itemId (MemoryShard subId)
0x710821C650    MOV     W2, #1                       // W2 = amount = 1
0x710821C654    MOV     X3, XZR                      // X3 = CancellationToken default
0x710821C658    BL      0x71053832E0                 // Client.DebugAddItem(int,int,CancellationToken)

0x710821C65C    ADD     W22, W22, #1                 // i++
0x710821C660    CMP     W22, W21                     // compare i vs len
0x710821C664    B.LO    0x710821C640                 // loop if i < len

0x710821C668    LDP     X23, X24, [SP], #0x10        // epilogue: restore X23,X24
0x710821C66C    LDP     X21, X22, [SP], #0x10        // epilogue: restore X21,X22
0x710821C670    LDP     X19, X20, [SP], #0x10        // epilogue: restore X19,X20
0x710821C674    LDP     X0,  X30, [SP], #0x10        // epilogue: restore X0(scratch of X19), LR
0x710821C678    RET                                  // return to caller (restores original control)


// ============================================================================
// [FULLMASK_STUB] Build W8 = (1<<n) - 1 and return
// ============================================================================

0x710821C67C    STP     X0, X1, [SP, #-0x10]!        // save X0,X1 (scratch)
0x710821C680    STP     X2, X3, [SP, #-0x10]!        // save X2,X3 (scratch)

0x710821C684    BL      0x71044980E0                 // X0 = ItemDatabase.Instance
0x710821C688    MOV     X1, X21                      // X1 = itemId (key for GetItemData)
0x710821C68C    BL      0x7104493170                 // X0 = ItemDatabase.GetItemData(itemId) → MemoryShardItemData*

0x710821C690    LDR     W9, [X0, #0x68]              // W9 = n = NumberOfShards (int, at +0x68)

0x710821C694    MOV     W8, #-1                      // W8 = 0xFFFFFFFF (all ones)
0x710821C698    MOV     W10, #32                     // W10 = 32 (bit width for W-reg ops)
0x710821C69C    SUB     W10, W10, W9                 // W10 = 32 - n
0x710821C6A0    LSR     W8, W8, W10                  // W8 = 0xFFFFFFFF >> (32 - n) = (1<<n) - 1

0x710821C6A4    LDP     X2, X3, [SP], #0x10          // restore X2,X3
0x710821C6A8    LDP     X0, X1, [SP], #0x10          // restore X0,X1

0x710821C6AC    B       0x7104D76130                 // return into original flow (STR W8,[SP,#var_8] next)
Post automatically merged:



Test Results:

MICKEY'S MEMORIES (Quest requiring a Memory to be unlocked mid-quest):
The step to pick up and unlock the memory was simply skipped, and the quest progressed without any issues.

THE BROKEN MEMORY (Quest requiring a Memory to be unlocked to start):The quest started as soon as the other conditions were met, without needing to find and unlock the specific Memory.

Please be aware that this cheat has only been tested on two specific quests ("MICKEY'S MEMORIES" and "THE BROKEN MEMORY"). It is possible that this cheat could cause serious, game-breaking bugs in other quests. Use at your own risk.

Post automatically merged:



Disney Dreamlight Valley v1.19.1 BID=DD44F396D4C95D6B

[--SectionStart:ForceFishRarity--]
00000000 00000000 00000000
[ForceNormalFish]
04000000 04780960 52800035
04000000 04780A04 52800008
04000000 04780A34 7100051F
04000000 04780A38 1A9F07E8
04000000 04780A50 54000140
04000000 04780A54 52800028

[ForceUncommonFish]
04000000 04780960 52800035
04000000 04780A04 52800008
04000000 04780A34 7100091F
04000000 04780A38 1A9F07E8
04000000 04780A50 54000140
04000000 04780A54 52800048

[ForceRareFish]
04000000 04780960 52800035
04000000 04780A04 52800008
04000000 04780A34 71000D1F
04000000 04780A38 1A9F07E8
04000000 04780A50 54000140
[--SectionEnd:ForceFishRarity--]
00000000 00000000 00000000

[ForceFishRarity OFF]
04000000 04780960 2A0003F5
04000000 04780A04 39411108
04000000 04780A34 7100051F
04000000 04780A38 1A9F17E8
04000000 04780A50 54000141
04000000 04780A54 52800068

This cheat lets you change the rarity of fish you reel in. Normal corresponds to fish normally found in white ripples, Uncommon to blue ripples, and Rare to gold ripples.
Wow, thanks so much! Thats so cool! You rule! Has it been pretty easy for you to learn & make codes with IDA? Is it just a bunch of trial & error? I am very interested in learning, but I don't even know where in the world to start. Ida has a ton going on & a ton you can do in the program, and it's confusing!
 
  • Like
Reactions: morarin
Wow, thanks so much! Thats so cool! You rule! Has it been pretty easy for you to learn & make codes with IDA? Is it just a bunch of trial & error? I am very interested in learning, but I don't even know where in the world to start. Ida has a ton going on & a ton you can do in the program, and it's confusing!

I only create cheat codes for games made with Unity, so I don't know much about making them for other games. If you want to create cheat codes for the Nintendo Switch, I recommend reading the official Atmosphere documentation first. This past June, I learned how to create cheat codes for Unity games by reverse-engineering the ones ThorHammer made for Fashion Dreamer. I analyzed how they were modified, manually updated them to the latest version, refined the methods where necessary, and even created my own original cheat codes in the process. Since then, I have continued my learning by creating cheat codes for other games also developed in Unity, such as Tales of the Shire and (as you know) Disney Dreamlight Valley, primarily using static analysis and performing dynamic analysis when necessary. Given that I've become able to create a fair number of cheat codes myself over the past few months, reverse-engineering other people's cheat codes would be a powerful option for getting started with learning.



What I Use:
nxdumptool
Lockpick_RCM
IDA Pro 9.1.250226
SwitchIDAProLoader
Il2CppDumper

1.load Lockpick_RCM as payload and dump keys
2.extract main using nxdumptool(user titles menu→titleID→nca/nca fs dump options→dump update→Program→ExeFS→start nca fs section dump)
3.extract global-metadata.dat using nxdumptool(user titles menu→titleID→nca/nca fs dump options→dump update→Program→Patch RomFS→browse nca fs section→Data→Managed→Metadata→select the global-metadata.dat)
4.Use Il2CppDumper to process the NSO file (main) and the global-metadata.dat file to generate a set of files useful for reverse engineering.
5.put loader(switch64.dll) in /Program Files/IDA Professional 9.1/lodaers/
6.load main with IDA Pro(IDA: Quick Start→New→select main→select switch64.dll and oepn)
Screenshot 2025-11-01 072636.png

7.load script with IDA Pro(IDA: File→Script file→select the ida_with_struct_py3.py→open the script.json and the il2cpp.h→wait for the script to finish executing)
8.Analyse the main file with IDA Pro(IDA: Options→General→Analysis→check "enabled" and click "OK"→wait until analysis finished)



For Unity games, I always start by using Il2CppDumper to get the files for reverse engineering. I mainly analyze the game by looking at the dump.cs file from Il2CppDumper and the main NSO file that I've opened in IDA Pro. I search dump.cs with keywords related to the cheat I'm trying to make, which helps me find the right classes and methods. After that, I check the disassembly of those methods in IDA Pro to find where to make my changes.

The whole thing is basically just a slow and steady process of repeating those steps with a lot of trial and error.



While some of the tutorials posted in this community are helpful, I was never able to learn how to create cheat codes from them. Generally, the people who post cheat codes here tend to be unwilling to explain their methods. Some of them even complain that their cheats are being used for profit and try to stop sharing them in public, attempting to guide people to closed groups instead. In reality, that's counterproductive; limiting access to only a select few people negatively affects the balance of supply and demand. Like you, I once asked a skilled cheat creator in this community to teach me their methods, but I was brushed off, perhaps because they thought it was too much of a hassle to teach a complete beginner like me step-by-step. And now that I can read and understand the cheat codes myself, I've realized they even fed me false information. They might have thought I wouldn't have been able to understand an explanation back then, but considering he honed his own skills by asking for guidance from many other talented creators in this very community, it's a terrible way to act. It's for these reasons that I will be publishing my cheat codes here where anyone can view them, rather than in a private group for Nintendo Switch cheats.



However, as I said above, it's also true that the cheat codes posted in this community are what enabled me to start learning, and I feel a desire to pay back the favor in the form of a tutorial. That’s why, this time, I’ve decided to write in my own thread about how I learned to create cheat codes and what tools I use. (In fact, I've already given similar explanations to people who have asked me via direct message). When you previously posted in this thread saying it would be helpful if I made a video tutorial, I considered explaining it in writing because creating a video is just too time-consuming. I apologize that I couldn't find the time and kept putting it off.
Post automatically merged:

I will explain how I created the cheat code you requested for changing the color of the fishing ripple, you can use this as a reference.


First, I clarify the objective. In this case, it is to rewrite the rarity of the fish you catch to a desired value.

Next, I consider how to achieve this. Analyzing the original cheat code revealed that it hooks into a code cave the moment the thrown bobber hits the water to arbitrarily rewrite the fish's rarity. However, I try to avoid using code caves as much as possible. This isn't for any logical reason, but because it provides a greater sense of accomplishment. Therefore, I decided to create the cheat code using my own approach.

Anyone who has played this game a fair amount should know that there is a process that rewrites a fish's rarity the moment the bobber lands in the water. When you have an active buff from an enchanted item and land your bobber in a white ripple, the ripple's color instantly turns gold, and the fish's rarity is also rewritten. For this project, I decided to adopt an approach that modifies this specific process.

With the approach for the cheat code decided, I searched for related classes in dump.cs. This time, I searched with "class.+?fishing.+?typedef" (I use Visual Studio Code; I recommend it for its excellent search functionality). In doing so, I found a class named "StartFishing".

Code:
// Namespace:
public enum StartFishing.Types.Result // TypeDefIndex: 1094
{
    // Fields
    public int value__; // 0x0
    [OriginalName("Success")]
    public const StartFishing.Types.Result Success = 0;
    [OriginalName("NoFishingTool")]
    public const StartFishing.Types.Result NoFishingTool = 1;
    [OriginalName("InvalidPendingFishID")]
    public const StartFishing.Types.Result InvalidPendingFishId = 2;
    [OriginalName("InvalidBodyOfWater")]
    public const StartFishing.Types.Result InvalidBodyOfWater = 3;
    [OriginalName("NoValidFish")]
    public const StartFishing.Types.Result NoValidFish = 4;
    [OriginalName("NotEnoughMana")]
    public const StartFishing.Types.Result NotEnoughMana = 5;
    [OriginalName("NotAllowed")]
    public const StartFishing.Types.Result NotAllowed = 6;
}
// Namespace:
[CompilerGenerated]
[Serializable]
private sealed class StartFishing.Types.Request.<>c // TypeDefIndex: 1095
{
    // Fields
    public static readonly StartFishing.Types.Request.<>c <>9; // 0x0
    // Methods
    // RVA: 0x477EEF0 Offset: 0x477EFFD VA: 0x477EEF0
    private static void .cctor() { }
    // RVA: 0x477EF90 Offset: 0x477F09D VA: 0x477EF90
    public void .ctor() { }
    // RVA: 0x477EFA0 Offset: 0x477F0AD VA: 0x477EFA0
    internal StartFishing.Types.Request <.cctor>b__29_0() { }
}
// Namespace:
public sealed class StartFishing.Types.Request : TransactionValidator<StartFishing.Types.Result>, IMessage<StartFishing.Types.Request>, IMessage, IEquatable<StartFishing.Types.Request>, IDeepCloneable<StartFishing.Types.Request>, IMessageFieldAccessor // TypeDefIndex: 1096
{
    // Fields
    private static readonly MessageParser<StartFishing.Types.Request> _parser; // 0x0
    private UnknownFieldSet _unknownFields; // 0x18
    public const int SelectorFieldNumber = 1;
    private PendingFishSelector selector_; // 0x20
    // Properties
    [DebuggerNonUserCode]
    public static MessageParser<StartFishing.Types.Request> Parser { get; }
    [DebuggerNonUserCode]
    public static MessageDescriptor Descriptor { get; }
    [DebuggerNonUserCode]
    private MessageDescriptor pb::Google.Protobuf.IMessage.Descriptor { get; }
    [DebuggerNonUserCode]
    public PendingFishSelector Selector { get; set; }
    // Methods
    // RVA: 0x477DD40 Offset: 0x477DE4D VA: 0x477DD40
    public static MessageParser<StartFishing.Types.Request> get_Parser() { }
    // RVA: 0x477DDD0 Offset: 0x477DEDD VA: 0x477DDD0
    public static MessageDescriptor get_Descriptor() { }
    // RVA: 0x477DEE0 Offset: 0x477DFED VA: 0x477DEE0 Slot: 12
    private MessageDescriptor pb::Google.Protobuf.IMessage.get_Descriptor() { }
    [DebuggerNonUserCode]
    // RVA: 0x477DF50 Offset: 0x477E05D VA: 0x477DF50
    public void .ctor() { }
    [DebuggerNonUserCode]
    // RVA: 0x477DFB0 Offset: 0x477E0BD VA: 0x477DFB0
    public void .ctor(StartFishing.Types.Request other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477E110 Offset: 0x477E21D VA: 0x477E110 Slot: 14
    public StartFishing.Types.Request Clone() { }
    // RVA: 0x477E180 Offset: 0x477E28D VA: 0x477E180
    public PendingFishSelector get_Selector() { }
    // RVA: 0x477E190 Offset: 0x477E29D VA: 0x477E190
    public void set_Selector(PendingFishSelector value) { }
    [DebuggerNonUserCode]
    // RVA: 0x477E1E0 Offset: 0x477E2ED VA: 0x477E1E0 Slot: 0
    public override bool Equals(object other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477E2F0 Offset: 0x477E3FD VA: 0x477E2F0 Slot: 13
    public bool Equals(StartFishing.Types.Request other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477E3B0 Offset: 0x477E4BD VA: 0x477E3B0 Slot: 2
    public override int GetHashCode() { }
    [DebuggerNonUserCode]
    // RVA: 0x477E410 Offset: 0x477E51D VA: 0x477E410 Slot: 3
    public override string ToString() { }
    [DebuggerNonUserCode]
    // RVA: 0x477E4A0 Offset: 0x477E5AD VA: 0x477E4A0 Slot: 10
    public void WriteTo(CodedOutputStream output) { }
    [DebuggerNonUserCode]
    // RVA: 0x477E510 Offset: 0x477E61D VA: 0x477E510 Slot: 11
    public int CalculateSize() { }
    [DebuggerNonUserCode]
    // RVA: 0x477E5A0 Offset: 0x477E6AD VA: 0x477E5A0 Slot: 18
    public void MergeFrom(StartFishing.Types.Request other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477E6D0 Offset: 0x477E7DD VA: 0x477E6D0 Slot: 9
    public void MergeFrom(CodedInputStream input) { }
    [DebuggerNonUserCode]
    // RVA: 0x477E8E0 Offset: 0x477E9ED VA: 0x477E8E0 Slot: 15
    public object GetFieldValue(int fieldNumber) { }
    [DebuggerNonUserCode]
    // RVA: 0x477E960 Offset: 0x477EA6D VA: 0x477E960 Slot: 16
    public void SetFieldValue(int fieldNumber, object value) { }
    [DebuggerNonUserCode]
    // RVA: 0x477EA30 Offset: 0x477EB3D VA: 0x477EA30 Slot: 17
    public void ClearFieldValue(int fieldNumber) { }
    // RVA: 0x477EA90 Offset: 0x477EB9D VA: 0x477EA90 Slot: 6
    protected override StartFishing.Types.Result ValidateThis(in Player player, in World world, ITransactionContext transactionContext) { }
    // RVA: 0x477ECD0 Offset: 0x477EDDD VA: 0x477ECD0
    private static void .cctor() { }
}
// Namespace:
[CompilerGenerated]
[Serializable]
private sealed class StartFishing.Types.Response.<>c // TypeDefIndex: 1097
{
    // Fields
    public static readonly StartFishing.Types.Response.<>c <>9; // 0x0
    // Methods
    // RVA: 0x47812F0 Offset: 0x47813FD VA: 0x47812F0
    private static void .cctor() { }
    // RVA: 0x4781390 Offset: 0x478149D VA: 0x4781390
    public void .ctor() { }
    // RVA: 0x47813A0 Offset: 0x47814AD VA: 0x47813A0
    internal StartFishing.Types.Response <.cctor>b__39_0() { }
}
// Namespace:
public sealed class StartFishing.Types.Response : TransactionAction<StartFishing.Types.Result>, IMessage<StartFishing.Types.Response>, IMessage, IEquatable<StartFishing.Types.Response>, IDeepCloneable<StartFishing.Types.Response>, IMessageFieldAccessor // TypeDefIndex: 1098
{
    // Fields
    private static readonly MessageParser<StartFishing.Types.Response> _parser; // 0x0
    private UnknownFieldSet _unknownFields; // 0x10
    public const int ResultFieldNumber = 1;
    private StartFishing.Types.Result result_; // 0x18
    public const int RequestFieldNumber = 2;
    private StartFishing.Types.Request request_; // 0x20
    // Properties
    [DebuggerNonUserCode]
    public static MessageParser<StartFishing.Types.Response> Parser { get; }
    [DebuggerNonUserCode]
    public static MessageDescriptor Descriptor { get; }
    [DebuggerNonUserCode]
    private MessageDescriptor pb::Google.Protobuf.IMessage.Descriptor { get; }
    [DebuggerNonUserCode]
    public StartFishing.Types.Result Result { get; set; }
    [DebuggerNonUserCode]
    public StartFishing.Types.Request Request { get; set; }
    protected override StartFishing.Types.Result MyResult { get; set; }
    // Methods
    // RVA: 0x477F040 Offset: 0x477F14D VA: 0x477F040
    public static MessageParser<StartFishing.Types.Response> get_Parser() { }
    // RVA: 0x477F0D0 Offset: 0x477F1DD VA: 0x477F0D0
    public static MessageDescriptor get_Descriptor() { }
    // RVA: 0x477F1E0 Offset: 0x477F2ED VA: 0x477F1E0 Slot: 16
    private MessageDescriptor pb::Google.Protobuf.IMessage.get_Descriptor() { }
    [DebuggerNonUserCode]
    // RVA: 0x477F250 Offset: 0x477F35D VA: 0x477F250
    public void .ctor() { }
    [DebuggerNonUserCode]
    // RVA: 0x477F290 Offset: 0x477F39D VA: 0x477F290
    public void .ctor(StartFishing.Types.Response other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477F3E0 Offset: 0x477F4ED VA: 0x477F3E0 Slot: 18
    public StartFishing.Types.Response Clone() { }
    // RVA: 0x477F450 Offset: 0x477F55D VA: 0x477F450
    public StartFishing.Types.Result get_Result() { }
    // RVA: 0x477F460 Offset: 0x477F56D VA: 0x477F460
    public void set_Result(StartFishing.Types.Result value) { }
    // RVA: 0x477F470 Offset: 0x477F57D VA: 0x477F470
    public StartFishing.Types.Request get_Request() { }
    // RVA: 0x477F480 Offset: 0x477F58D VA: 0x477F480
    public void set_Request(StartFishing.Types.Request value) { }
    [DebuggerNonUserCode]
    // RVA: 0x477F4D0 Offset: 0x477F5DD VA: 0x477F4D0 Slot: 0
    public override bool Equals(object other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477F5F0 Offset: 0x477F6FD VA: 0x477F5F0 Slot: 17
    public bool Equals(StartFishing.Types.Response other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477F6C0 Offset: 0x477F7CD VA: 0x477F6C0 Slot: 2
    public override int GetHashCode() { }
    [DebuggerNonUserCode]
    // RVA: 0x477F720 Offset: 0x477F82D VA: 0x477F720 Slot: 3
    public override string ToString() { }
    [DebuggerNonUserCode]
    // RVA: 0x477F7B0 Offset: 0x477F8BD VA: 0x477F7B0 Slot: 14
    public void WriteTo(CodedOutputStream output) { }
    [DebuggerNonUserCode]
    // RVA: 0x477F860 Offset: 0x477F96D VA: 0x477F860 Slot: 15
    public int CalculateSize() { }
    [DebuggerNonUserCode]
    // RVA: 0x477FA00 Offset: 0x477FB0D VA: 0x477FA00 Slot: 22
    public void MergeFrom(StartFishing.Types.Response other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477FB80 Offset: 0x477FC8D VA: 0x477FB80 Slot: 13
    public void MergeFrom(CodedInputStream input) { }
    [DebuggerNonUserCode]
    // RVA: 0x477FDE0 Offset: 0x477FEED VA: 0x477FDE0 Slot: 19
    public object GetFieldValue(int fieldNumber) { }
    [DebuggerNonUserCode]
    // RVA: 0x477FFD0 Offset: 0x47800DD VA: 0x477FFD0 Slot: 20
    public void SetFieldValue(int fieldNumber, object value) { }
    [DebuggerNonUserCode]
    // RVA: 0x4780100 Offset: 0x478020D VA: 0x4780100 Slot: 21
    public void ClearFieldValue(int fieldNumber) { }
    // RVA: 0x4780170 Offset: 0x478027D VA: 0x4780170 Slot: 10
    protected override StartFishing.Types.Result get_MyResult() { }
    // RVA: 0x4780180 Offset: 0x478028D VA: 0x4780180 Slot: 11
    protected override void set_MyResult(StartFishing.Types.Result value) { }
    // RVA: 0x4780190 Offset: 0x478029D VA: 0x4780190 Slot: 9
    protected override bool ApplyThis(in Player player, in World world, ITransactionContext transactionContext) { }
    // RVA: 0x4781080 Offset: 0x478118D VA: 0x4781080
    private static float SelectRandomFishMass(Random random, FishItemData chosenFish) { }
    // RVA: 0x4780DA0 Offset: 0x4780EAD VA: 0x4780DA0
    private static bool TryGetFishItemData(Item fishItem, out FishItemData fishData) { }
    // RVA: 0x47810D0 Offset: 0x47811DD VA: 0x47810D0
    private static void .cctor() { }
}
// Namespace:
[DebuggerNonUserCode]
public static class StartFishing.Types // TypeDefIndex: 1099
{}
// Namespace:
[CompilerGenerated]
[Serializable]
private sealed class StartFishing.<>c // TypeDefIndex: 1100
{
    // Fields
    public static readonly StartFishing.<>c <>9; // 0x0
    // Methods
    // RVA: 0x4781430 Offset: 0x478153D VA: 0x4781430
    private static void .cctor() { }
    // RVA: 0x47814D0 Offset: 0x47815DD VA: 0x47814D0
    public void .ctor() { }
    // RVA: 0x47814E0 Offset: 0x47815ED VA: 0x47814E0
    internal StartFishing <.cctor>b__24_0() { }
}
// Namespace: Meta
public sealed class StartFishing : IMessage<StartFishing>, IMessage, IEquatable<StartFishing>, IDeepCloneable<StartFishing>, IMessageFieldAccessor // TypeDefIndex: 1101
{
    // Fields
    private static readonly MessageParser<StartFishing> _parser; // 0x0
    private UnknownFieldSet _unknownFields; // 0x10
    // Properties
    [DebuggerNonUserCode]
    public static MessageParser<StartFishing> Parser { get; }
    [DebuggerNonUserCode]
    public static MessageDescriptor Descriptor { get; }
    [DebuggerNonUserCode]
    private MessageDescriptor pb::Google.Protobuf.IMessage.Descriptor { get; }
    // Methods
    // RVA: 0x477D370 Offset: 0x477D47D VA: 0x477D370
    public static MessageParser<StartFishing> get_Parser() { }
    // RVA: 0x477D400 Offset: 0x477D50D VA: 0x477D400
    public static MessageDescriptor get_Descriptor() { }
    // RVA: 0x477D560 Offset: 0x477D66D VA: 0x477D560 Slot: 7
    private MessageDescriptor pb::Google.Protobuf.IMessage.get_Descriptor() { }
    [DebuggerNonUserCode]
    // RVA: 0x477D5D0 Offset: 0x477D6DD VA: 0x477D5D0
    public void .ctor() { }
    [DebuggerNonUserCode]
    // RVA: 0x477D5E0 Offset: 0x477D6ED VA: 0x477D5E0
    public void .ctor(StartFishing other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477D660 Offset: 0x477D76D VA: 0x477D660 Slot: 9
    public StartFishing Clone() { }
    [DebuggerNonUserCode]
    // RVA: 0x477D720 Offset: 0x477D82D VA: 0x477D720 Slot: 0
    public override bool Equals(object other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477D800 Offset: 0x477D90D VA: 0x477D800 Slot: 8
    public bool Equals(StartFishing other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477D850 Offset: 0x477D95D VA: 0x477D850 Slot: 2
    public override int GetHashCode() { }
    [DebuggerNonUserCode]
    // RVA: 0x477D880 Offset: 0x477D98D VA: 0x477D880 Slot: 3
    public override string ToString() { }
    [DebuggerNonUserCode]
    // RVA: 0x477D910 Offset: 0x477DA1D VA: 0x477D910 Slot: 5
    public void WriteTo(CodedOutputStream output) { }
    [DebuggerNonUserCode]
    // RVA: 0x477D930 Offset: 0x477DA3D VA: 0x477D930 Slot: 6
    public int CalculateSize() { }
    [DebuggerNonUserCode]
    // RVA: 0x477D950 Offset: 0x477DA5D VA: 0x477D950 Slot: 13
    public void MergeFrom(StartFishing other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477D9D0 Offset: 0x477DADD VA: 0x477D9D0 Slot: 4
    public void MergeFrom(CodedInputStream input) { }
    [DebuggerNonUserCode]
    // RVA: 0x477DA90 Offset: 0x477DB9D VA: 0x477DA90 Slot: 10
    public object GetFieldValue(int fieldNumber) { }
    [DebuggerNonUserCode]
    // RVA: 0x477DB00 Offset: 0x477DC0D VA: 0x477DB00 Slot: 11
    public void SetFieldValue(int fieldNumber, object value) { }
    [DebuggerNonUserCode]
    // RVA: 0x477DB10 Offset: 0x477DC1D VA: 0x477DB10 Slot: 12
    public void ClearFieldValue(int fieldNumber) { }
    // RVA: 0x477DB20 Offset: 0x477DC2D VA: 0x477DB20
    private static void .cctor() { }
}

I then observed the disassembly of its executing function, "ApplyThis", in IDA Pro.

Code:
.text:0000007104780190 ; bool Meta_StartFishing_Types_Response__ApplyThis(Meta_StartFishing_Types_Response_o *this, Meta_Player_o *player, Meta_World_o *world, Definitions_Util_ITransactionContext_o *transactionContext, const MethodInfo *method)
.text:0000007104780190 Meta.StartFishing.Types.Response$$ApplyThis
.text:0000007104780190
.text:0000007104780190 var_B0          = -0xB0
.text:0000007104780190 var_A8          = -0xA8
.text:0000007104780190 var_A0          = -0xA0
.text:0000007104780190 var_98          = -0x98
.text:0000007104780190 var_90          = -0x90
.text:0000007104780190 var_88          = -0x88
.text:0000007104780190 var_80          = -0x80
.text:0000007104780190 var_78          = -0x78
.text:0000007104780190 var_70          = -0x70
.text:0000007104780190 var_68          = -0x68
.text:0000007104780190 fishData        = -0x60
.text:0000007104780190 var_58          = -0x58
.text:0000007104780190 var_4C          = -0x4C
.text:0000007104780190 var_48          = -0x48
.text:0000007104780190 bodyOfWater     = -0x40
.text:0000007104780190 var_38          = -0x38
.text:0000007104780190 var_30          = -0x30
.text:0000007104780190 var_28          = -0x28
.text:0000007104780190 var_20          = -0x20
.text:0000007104780190 var_18          = -0x18
.text:0000007104780190 var_10          = -0x10
.text:0000007104780190 var_8           = -8
.text:0000007104780190 var_4           = -4
.text:0000007104780190 var_s0          =  0
.text:0000007104780190 var_s8          =  8
.text:0000007104780190 var_s10         =  0x10
.text:0000007104780190 var_s18         =  0x18
.text:0000007104780190 var_s20         =  0x20
.text:0000007104780190 var_s28         =  0x28
.text:0000007104780190 var_s30         =  0x30
.text:0000007104780190 var_s38         =  0x38
.text:0000007104780190
.text:0000007104780190                 SUB             SP, SP, #0xF0
.text:0000007104780194                 STP             X29, X30, [SP,#0xB0+var_20]
.text:0000007104780198                 STR             X27, [SP,#0xB0+var_10]
.text:000000710478019C                 STP             X26, X25, [SP,#0xB0+var_s0]
.text:00000071047801A0                 STP             X24, X23, [SP,#0xB0+var_s10]
.text:00000071047801A4                 STP             X22, X21, [SP,#0xB0+var_s20]
.text:00000071047801A8                 STP             X20, X19, [SP,#0xB0+var_s30]
.text:00000071047801AC                 ADD             X29, SP, #0x90
.text:00000071047801B0                 ADRP            X22, #byte_710A3F0462@PAGE
.text:00000071047801B4                 MOV             X19, X2
.text:00000071047801B8                 STUR            X3, [X29,#0x20+var_38]
.text:00000071047801BC                 LDRB            W8, [X22,#byte_710A3F0462@PAGEOFF]
.text:00000071047801C0                 MOV             X21, X1
.text:00000071047801C4                 MOV             X20, X0
.text:00000071047801C8                 STP             X1, X0, [X29,#0x20+var_30]
.text:00000071047801CC                 TBNZ            W8, #0, loc_71047802C8
.text:00000071047801D0                 ADRL            X0, Definitions.Items.ActivityDataLocationFilter_TypeInfo ; Definitions.Items.ActivityDataLocationFilter_TypeInfo
.text:00000071047801D8                 MOV             W1, #1
.text:00000071047801DC                 MOV             W23, #1
.text:00000071047801E0                 BL              sub_7100AA7760
.text:00000071047801E4                 ADRL            X0, Definitions.Util.ITransactionContext_TypeInfo ; Definitions.Util.ITransactionContext_TypeInfo
.text:00000071047801EC                 DMB             ISH
.text:00000071047801F0                 MOV             W1, #1
.text:00000071047801F4                 BL              sub_7100AA7760
.text:00000071047801F8                 ADRL            X0, Definitions.Items.Item_TypeInfo ; Definitions.Items.Item_TypeInfo
.text:0000007104780200                 DMB             ISH
.text:0000007104780204                 MOV             W1, #1
.text:0000007104780208                 BL              sub_7100AA7760
.text:000000710478020C                 ADRL            X0, Method$Google.Protobuf.Collections.MapField_uint__PendingFish_.TryGetValue__ ; Method$Google.Protobuf.Collections.MapField<uint, PendingFish>.TryGetValue()
.text:0000007104780214                 DMB             ISH
.text:0000007104780218                 MOV             W1, #1
.text:000000710478021C                 BL              sub_7100AA7760
.text:0000007104780220                 ADRL            X0, Method$System.Nullable_float_..ctor__ ; Method$System.Nullable<float>..ctor()
.text:0000007104780228                 DMB             ISH
.text:000000710478022C                 MOV             W1, #1
.text:0000007104780230                 BL              sub_7100AA7760
.text:0000007104780234                 ADRL            X0, Meta.PendingFish_TypeInfo ; Meta.PendingFish_TypeInfo
.text:000000710478023C                 DMB             ISH
.text:0000007104780240                 MOV             W1, #1
.text:0000007104780244                 BL              sub_7100AA7760
.text:0000007104780248                 ADRL            X0, Definitions.Util.ProtoExtensions_TypeInfo ; Definitions.Util.ProtoExtensions_TypeInfo
.text:0000007104780250                 DMB             ISH
.text:0000007104780254                 MOV             W1, #1
.text:0000007104780258                 BL              sub_7100AA7760
.text:000000710478025C                 ADRL            X0, System.Random_TypeInfo ; System.Random_TypeInfo
.text:0000007104780264                 DMB             ISH
.text:0000007104780268                 MOV             W1, #1
.text:000000710478026C                 BL              sub_7100AA7760
.text:0000007104780270                 ADRL            X0, Meta.StartFishing.Types.Response_TypeInfo ; Meta.StartFishing.Types.Response_TypeInfo
.text:0000007104780278                 DMB             ISH
.text:000000710478027C                 MOV             W1, #1
.text:0000007104780280                 BL              sub_7100AA7760
.text:0000007104780284                 ADRL            X0, Method$Meta.TransactionAction_StartFishing.Types.Result_.get_IsValid__ ; Method$Meta.TransactionAction<StartFishing.Types.Result>.get_IsValid()
.text:000000710478028C                 DMB             ISH
.text:0000007104780290                 MOV             W1, #1
.text:0000007104780294                 BL              sub_7100AA7760
.text:0000007104780298                 ADRL            X0, StringLiteral_13024 ; Fishing
.text:00000071047802A0                 DMB             ISH
.text:00000071047802A4                 MOV             W1, #1
.text:00000071047802A8                 BL              sub_7100AA7760
.text:00000071047802AC                 ADRL            X0, StringLiteral_5395 ; ApplyThis
.text:00000071047802B4                 DMB             ISH
.text:00000071047802B8                 MOV             W1, #1
.text:00000071047802BC                 BL              sub_7100AA7760
.text:00000071047802C0                 DMB             ISH
.text:00000071047802C4                 STRB            W23, [X22,#byte_710A3F0462@PAGEOFF]
.text:00000071047802C8
.text:00000071047802C8 loc_71047802C8                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+3C↑j
.text:00000071047802C8                 STR             WZR, [X20,#0x18]
.text:00000071047802CC                 LDR             X8, [X21]
.text:00000071047802D0                 STRB            WZR, [X29,#0x20+var_8]
.text:00000071047802D4                 STURB           WZR, [X29,#0x20+var_4C]
.text:00000071047802D8                 STP             XZR, XZR, [X29,#0x20+fishData]
.text:00000071047802DC                 STP             XZR, XZR, [X29,#0x20+var_48]
.text:00000071047802E0                 CBZ             X8, loc_7104780C60
.text:00000071047802E4                 LDR             X0, [X8,#0x28] ; this
.text:00000071047802E8                 CBZ             X0, loc_7104780C60
.text:00000071047802EC                 MOV             W1, #1  ; toolItemType
.text:00000071047802F0                 MOV             W21, #1
.text:00000071047802F4                 BL              Meta.ProfilePlayer$$FindTool_485412515440
.text:00000071047802F8                 CBZ             X0, loc_7104780400
.text:00000071047802FC                 LDR             X8, [X20,#0x20]
.text:0000007104780300                 CBZ             X8, loc_7104780C60
.text:0000007104780304                 LDR             X9, [X8,#0x20]
.text:0000007104780308                 CBZ             X9, loc_7104780C60
.text:000000710478030C                 LDR             W8, [X9,#0x20]
.text:0000007104780310                 CMP             W8, #1
.text:0000007104780314                 B.NE            loc_71047803C4
.text:0000007104780318                 LDR             X8, [X19]
.text:000000710478031C                 CBZ             X8, loc_7104780C60
.text:0000007104780320                 LDR             X8, [X8,#0x30]
.text:0000007104780324                 CBZ             X8, loc_7104780C60
.text:0000007104780328                 LDR             X0, [X9,#0x18]
.text:000000710478032C                 CBZ             X0, loc_7104780C60
.text:0000007104780330                 ADRP            X9, #(xmmword_710A40F368+8)@PAGE
.text:0000007104780334                 LDR             X1, [X9,#(xmmword_710A40F368+8)@PAGEOFF]
.text:0000007104780338                 LDR             X9, [X0]
.text:000000710478033C                 LDR             X9, [X9,#0x40]
.text:0000007104780340                 LDR             X10, [X1,#0x40]
.text:0000007104780344                 CMP             X9, X10
.text:0000007104780348                 B.NE            loc_7104780C64
.text:000000710478034C                 LDR             X8, [X8,#0x40]
.text:0000007104780350                 CBZ             X8, loc_7104780C60
.text:0000007104780354                 ADRP            X10, #Method$Google.Protobuf.Collections.MapField_uint__PendingFish_.TryGetValue__@PAGE ; Method$Google.Protobuf.Collections.MapField<uint, PendingFish>.TryGetValue()
.text:0000007104780358                 LDR             W9, [X0,#0x10]
.text:000000710478035C                 ADD             X1, SP, #0xB0+var_98 ; key
.text:0000007104780360                 LDR             X3, [X10,#Method$Google.Protobuf.Collections.MapField_uint__PendingFish_.TryGetValue__@PAGEOFF] ; value
.text:0000007104780364                 SUB             X2, X29, #-(0x20+var_48) ; key
.text:0000007104780368                 MOV             X0, X8  ; this
.text:000000710478036C                 STR             W9, [SP,#0xB0+var_98]
.text:0000007104780370                 BL              Google.Protobuf.Collections.MapField___Il2CppFullySharedGenericType____Il2CppFullySharedGenericType_$$TryGetValue
.text:0000007104780374                 TBZ             W0, #0, loc_7104780408
.text:0000007104780378                 LDUR            X8, [X29,#0x20+var_48]
.text:000000710478037C                 CBZ             X8, loc_71047803C4
.text:0000007104780380                 LDUR            X8, [X29,#0x20+var_30]
.text:0000007104780384                 LDR             X8, [X8]
.text:0000007104780388                 CBZ             X8, loc_7104780C60
.text:000000710478038C                 LDR             X0, [X8,#0x158]
.text:0000007104780390                 CBZ             X0, loc_71047803C4
.text:0000007104780394                 LDR             X8, [X0]
.text:0000007104780398                 LDP             X9, X1, [X8,#0x1A8]
.text:000000710478039C                 BLR             X9
.text:00000071047803A0                 TBZ             W0, #0, loc_71047803C4
.text:00000071047803A4                 LDUR            X8, [X29,#0x20+var_48]
.text:00000071047803A8                 CBZ             X8, loc_7104780C60
.text:00000071047803AC                 LDRB            W8, [X8,#0x34]
.text:00000071047803B0                 CBZ             W8, loc_71047803C4
.text:00000071047803B4                 LDUR            X20, [X29,#0x20+var_28]
.text:00000071047803B8                 MOV             W8, #6
.text:00000071047803BC                 STR             W8, [X20,#0x18]
.text:00000071047803C0                 B               loc_7104780C20
.text:00000071047803C4 ; ---------------------------------------------------------------------------
.text:00000071047803C4
.text:00000071047803C4 loc_71047803C4                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+184↑j
.text:00000071047803C4                                         ; Meta.StartFishing.Types.Response$$ApplyThis+1EC↑j ...
.text:00000071047803C4                 LDUR            X8, [X29,#0x20+var_28]
.text:00000071047803C8                 LDR             X8, [X8,#0x20]
.text:00000071047803CC                 CBZ             X8, loc_7104780C60
.text:00000071047803D0                 LDR             X21, [X8,#0x20]
.text:00000071047803D4                 CBZ             X21, loc_7104780C60
.text:00000071047803D8                 LDR             W8, [X21,#0x20]
.text:00000071047803DC                 CMP             W8, #2
.text:00000071047803E0                 B.NE            loc_7104780490
.text:00000071047803E4                 LDR             X8, [X19]
.text:00000071047803E8                 CBZ             X8, loc_7104780418
.text:00000071047803EC                 LDR             X20, [X8,#0x30]
.text:00000071047803F0                 ADRP            X22, #byte_710A3F2A53@PAGE
.text:00000071047803F4                 LDRB            W8, [X22,#byte_710A3F2A53@PAGEOFF]
.text:00000071047803F8                 TBZ             W8, #0, loc_7104780428
.text:00000071047803FC                 B               loc_7104780450
.text:0000007104780400 ; ---------------------------------------------------------------------------
.text:0000007104780400
.text:0000007104780400 loc_7104780400                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+168↑j
.text:0000007104780400                 STR             W21, [X20,#0x18]
.text:0000007104780404                 B               loc_7104780C20
.text:0000007104780408 ; ---------------------------------------------------------------------------
.text:0000007104780408
.text:0000007104780408 loc_7104780408                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+1E4↑j
.text:0000007104780408                 LDUR            X20, [X29,#0x20+var_28]
.text:000000710478040C                 MOV             W8, #2
.text:0000007104780410                 STR             W8, [X20,#0x18]
.text:0000007104780414                 B               loc_7104780C20
.text:0000007104780418 ; ---------------------------------------------------------------------------
.text:0000007104780418
.text:0000007104780418 loc_7104780418                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+258↑j
.text:0000007104780418                 MOV             X20, XZR
.text:000000710478041C                 ADRP            X22, #byte_710A3F2A53@PAGE
.text:0000007104780420                 LDRB            W8, [X22,#byte_710A3F2A53@PAGEOFF]
.text:0000007104780424                 TBNZ            W8, #0, loc_7104780450
.text:0000007104780428
.text:0000007104780428 loc_7104780428                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+268↑j
.text:0000007104780428                 ADRL            X0, Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:0000007104780430                 MOV             W1, #1
.text:0000007104780434                 MOV             W23, #1
.text:0000007104780438                 BL              sub_7100AA7760
.text:000000710478043C                 DMB             ISH
.text:0000007104780440                 STRB            W23, [X22,#byte_710A3F2A53@PAGEOFF]
.text:0000007104780444                 LDR             W8, [X21,#0x20]
.text:0000007104780448                 CMP             W8, #2
.text:000000710478044C                 B.NE            loc_7104780474
.text:0000007104780450
.text:0000007104780450 loc_7104780450                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+26C↑j
.text:0000007104780450                                         ; Meta.StartFishing.Types.Response$$ApplyThis+294↑j
.text:0000007104780450                 LDR             X1, [X21,#0x18]
.text:0000007104780454                 CBZ             X1, loc_710478046C
.text:0000007104780458                 ADRP            X8, #Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo@PAGE ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:000000710478045C                 LDR             X9, [X1]
.text:0000007104780460                 LDR             X8, [X8,#Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo@PAGEOFF] ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:0000007104780464                 CMP             X9, X8
.text:0000007104780468                 B.NE            loc_7104780C7C
.text:000000710478046C
.text:000000710478046C loc_710478046C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+2C4↑j
.text:000000710478046C                 CBNZ            X20, loc_710478047C
.text:0000007104780470                 B               loc_7104780C60
.text:0000007104780474 ; ---------------------------------------------------------------------------
.text:0000007104780474
.text:0000007104780474 loc_7104780474                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+2BC↑j
.text:0000007104780474                 MOV             X1, XZR ; bodyOfWaterData
.text:0000007104780478                 CBZ             X20, loc_7104780C60
.text:000000710478047C
.text:000000710478047C loc_710478047C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis:loc_710478046C↑j
.text:000000710478047C                 SUB             X2, X29, #-(0x20+bodyOfWater) ; bodyOfWater
.text:0000007104780480                 MOV             X0, X20 ; this
.text:0000007104780484                 MOV             X3, XZR ; method
.text:0000007104780488                 BL              Meta.ProfileWorld$$TryGetBodyOfWater
.text:000000710478048C                 TBZ             W0, #0, loc_71047806BC
.text:0000007104780490
.text:0000007104780490 loc_7104780490                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+250↑j
.text:0000007104780490                 LDUR            X8, [X29,#0x20+var_30]
.text:0000007104780494                 LDR             X20, [X8]
.text:0000007104780498                 CBZ             X20, loc_7104780C60
.text:000000710478049C                 MOV             X0, X20 ; this
.text:00000071047804A0                 MOV             W1, #1  ; manaSpendingActionType
.text:00000071047804A4                 BL              Meta.Profile$$GetManaCost
.text:00000071047804A8                 LDR             X8, [X20,#0x28]
.text:00000071047804AC                 CBZ             X8, loc_7104780C60
.text:00000071047804B0                 LDR             W8, [X8,#0x60]
.text:00000071047804B4                 CMP             W8, W0
.text:00000071047804B8                 B.GE            loc_71047804CC
.text:00000071047804BC                 LDUR            X20, [X29,#0x20+var_28]
.text:00000071047804C0                 MOV             W8, #5
.text:00000071047804C4                 STR             W8, [X20,#0x18]
.text:00000071047804C8                 B               loc_7104780C20
.text:00000071047804CC ; ---------------------------------------------------------------------------
.text:00000071047804CC
.text:00000071047804CC loc_71047804CC                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+328↑j
.text:00000071047804CC                 LDUR            X8, [X29,#0x20+var_28]
.text:00000071047804D0                 STRB            WZR, [X29,#0x20+var_8]
.text:00000071047804D4                 LDR             X8, [X8,#0x20]
.text:00000071047804D8                 CBZ             X8, loc_7104780C60
.text:00000071047804DC                 LDR             X20, [X8,#0x20]
.text:00000071047804E0                 CBZ             X20, loc_7104780C60
.text:00000071047804E4                 LDR             W8, [X20,#0x20]
.text:00000071047804E8                 CMP             W8, #2
.text:00000071047804EC                 B.NE            loc_71047808BC
.text:00000071047804F0                 ADRP            X22, #byte_710A3F2A53@PAGE
.text:00000071047804F4                 LDRB            W8, [X22,#byte_710A3F2A53@PAGEOFF]
.text:00000071047804F8                 TBNZ            W8, #0, loc_7104780524
.text:00000071047804FC                 ADRL            X0, Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:0000007104780504                 MOV             W1, #1
.text:0000007104780508                 MOV             W21, #1
.text:000000710478050C                 BL              sub_7100AA7760
.text:0000007104780510                 DMB             ISH
.text:0000007104780514                 STRB            W21, [X22,#byte_710A3F2A53@PAGEOFF]
.text:0000007104780518                 LDR             W8, [X20,#0x20]
.text:000000710478051C                 CMP             W8, #2
.text:0000007104780520                 B.NE            loc_7104780C60
.text:0000007104780524
.text:0000007104780524 loc_7104780524                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+368↑j
.text:0000007104780524                 LDR             X0, [X20,#0x18]
.text:0000007104780528                 CBZ             X0, loc_7104780C60
.text:000000710478052C                 ADRP            X23, #Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo@PAGE ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:0000007104780530                 LDR             X8, [X0]
.text:0000007104780534                 LDR             X1, [X23,#Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo@PAGEOFF] ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:0000007104780538                 CMP             X8, X1
.text:000000710478053C                 B.NE            loc_7104780C64
.text:0000007104780540                 LDR             X8, [X0,#0x18]
.text:0000007104780544                 CBZ             X8, loc_7104780C60
.text:0000007104780548                 LDR             W8, [X8,#0x20]
.text:000000710478054C                 CMP             W8, #2
.text:0000007104780550                 B.EQ            loc_71047806CC
.text:0000007104780554                 CMP             W8, #1
.text:0000007104780558                 B.NE            loc_71047808BC
.text:000000710478055C                 ADRP            X8, #Meta.PendingFish_TypeInfo@PAGE ; Meta.PendingFish_TypeInfo
.text:0000007104780560                 LDR             X0, [X8,#Meta.PendingFish_TypeInfo@PAGEOFF] ; Meta.PendingFish_TypeInfo
.text:0000007104780564                 BL              sub_7100A8D6B0
.text:0000007104780568                 ADRP            X21, #byte_710A3F2A99@PAGE
.text:000000710478056C                 MOV             X20, X0
.text:0000007104780570                 LDRB            W8, [X21,#byte_710A3F2A99@PAGEOFF]
.text:0000007104780574                 TBNZ            W8, #0, loc_7104780594
.text:0000007104780578                 ADRL            X0, StringLiteral_1
.text:0000007104780580                 MOV             W1, #1
.text:0000007104780584                 MOV             W24, #1
.text:0000007104780588                 BL              sub_7100AA7760
.text:000000710478058C                 DMB             ISH
.text:0000007104780590                 STRB            W24, [X21,#byte_710A3F2A99@PAGEOFF]
.text:0000007104780594
.text:0000007104780594 loc_7104780594                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+3E4↑j
.text:0000007104780594                 ADRP            X9, #StringLiteral_1@PAGE
.text:0000007104780598                 ADRP            X25, #dword_710A622EE0@PAGE
.text:000000710478059C                 LDR             X9, [X9,#StringLiteral_1@PAGEOFF]
.text:00000071047805A0                 MOV             X8, X20
.text:00000071047805A4                 ADRL            X24, qword_710A4109F8
.text:00000071047805AC                 STR             X9, [X8,#0x38]!
.text:00000071047805B0                 LDR             W9, [X25,#dword_710A622EE0@PAGEOFF]
.text:00000071047805B4                 CBZ             W9, loc_71047805E4
.text:00000071047805B8                 LSR             X9, X8, #0xC
.text:00000071047805BC                 UBFX            X8, X8, #0x12, #0xF
.text:00000071047805C0                 ADD             X8, X24, X8,LSL#3
.text:00000071047805C4                 MOV             W10, #1
.text:00000071047805C8                 LSL             X9, X10, X9
.text:00000071047805CC                 ADD             X8, X8, #0x46,LSL#12 ; 'F'
.text:00000071047805D0                 ADD             X8, X8, #0x4D8
.text:00000071047805D4
.text:00000071047805D4 loc_71047805D4                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+450↓j
.text:00000071047805D4                 LDXR            X10, [X8]
.text:00000071047805D8                 ORR             X10, X10, X9
.text:00000071047805DC                 STXR            W11, X10, [X8]
.text:00000071047805E0                 CBNZ            W11, loc_71047805D4
.text:00000071047805E4
.text:00000071047805E4 loc_71047805E4                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+424↑j
.text:00000071047805E4                 ADRP            X8, #Definitions.Items.ActivityDataLocationFilter_TypeInfo@PAGE ; Definitions.Items.ActivityDataLocationFilter_TypeInfo
.text:00000071047805E8                 STR             WZR, [X20,#0x18]
.text:00000071047805EC                 LDR             X0, [X8,#Definitions.Items.ActivityDataLocationFilter_TypeInfo@PAGEOFF] ; Definitions.Items.ActivityDataLocationFilter_TypeInfo
.text:00000071047805F0                 BL              sub_7100A8D6B0
.text:00000071047805F4                 LDUR            X8, [X29,#0x20+var_28]
.text:00000071047805F8                 LDR             X8, [X8,#0x20]
.text:00000071047805FC                 CBZ             X8, loc_7104780C60
.text:0000007104780600                 LDR             X26, [X8,#0x20]
.text:0000007104780604                 CBZ             X26, loc_7104780C60
.text:0000007104780608                 LDRB            W8, [X22,#byte_710A3F2A53@PAGEOFF]
.text:000000710478060C                 MOV             X21, X0
.text:0000007104780610                 TBNZ            W8, #0, loc_7104780630
.text:0000007104780614                 ADRL            X0, Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:000000710478061C                 MOV             W1, #1
.text:0000007104780620                 MOV             W27, #1
.text:0000007104780624                 BL              sub_7100AA7760
.text:0000007104780628                 DMB             ISH
.text:000000710478062C                 STRB            W27, [X22,#byte_710A3F2A53@PAGEOFF]
.text:0000007104780630
.text:0000007104780630 loc_7104780630                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+480↑j
.text:0000007104780630                 LDR             W8, [X26,#0x20]
.text:0000007104780634                 CMP             W8, #2
.text:0000007104780638                 B.NE            loc_7104780C60
.text:000000710478063C                 LDR             X0, [X26,#0x18]
.text:0000007104780640                 CBZ             X0, loc_7104780C60
.text:0000007104780644                 LDR             X1, [X23,#Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo@PAGEOFF] ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:0000007104780648                 LDR             X8, [X0]
.text:000000710478064C                 CMP             X8, X1
.text:0000007104780650                 B.NE            loc_7104780C64
.text:0000007104780654                 LDR             X22, [X0,#0x18]
.text:0000007104780658                 CBZ             X22, loc_7104780C60
.text:000000710478065C                 ADRP            X23, #byte_710A3EDA87@PAGE
.text:0000007104780660                 LDRB            W8, [X23,#byte_710A3EDA87@PAGEOFF]
.text:0000007104780664                 TBNZ            W8, #0, loc_7104780684
.text:0000007104780668                 ADRL            X0, Definitions.Scene.VillageAreaType_TypeInfo ; Definitions.Scene.VillageAreaType_TypeInfo
.text:0000007104780670                 MOV             W1, #1
.text:0000007104780674                 MOV             W26, #1
.text:0000007104780678                 BL              sub_7100AA7760
.text:000000710478067C                 DMB             ISH
.text:0000007104780680                 STRB            W26, [X23,#byte_710A3EDA87@PAGEOFF]
.text:0000007104780684
.text:0000007104780684 loc_7104780684                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+4D4↑j
.text:0000007104780684                 LDR             W8, [X22,#0x20]
.text:0000007104780688                 CMP             W8, #1
.text:000000710478068C                 B.NE            loc_7104780804
.text:0000007104780690                 LDR             X0, [X22,#0x18]
.text:0000007104780694                 CBZ             X0, loc_7104780C60
.text:0000007104780698                 ADRP            X8, #Definitions.Scene.VillageAreaType_TypeInfo@PAGE ; Definitions.Scene.VillageAreaType_TypeInfo
.text:000000710478069C                 LDR             X1, [X8,#Definitions.Scene.VillageAreaType_TypeInfo@PAGEOFF] ; Definitions.Scene.VillageAreaType_TypeInfo
.text:00000071047806A0                 LDR             X8, [X0]
.text:00000071047806A4                 LDR             X8, [X8,#0x40]
.text:00000071047806A8                 LDR             X9, [X1,#0x40]
.text:00000071047806AC                 CMP             X8, X9
.text:00000071047806B0                 B.NE            loc_7104780C64
.text:00000071047806B4                 LDR             W1, [X0,#0x10]
.text:00000071047806B8                 B               loc_7104780808
.text:00000071047806BC ; ---------------------------------------------------------------------------
.text:00000071047806BC
.text:00000071047806BC loc_71047806BC                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+2FC↑j
.text:00000071047806BC                 LDUR            X20, [X29,#0x20+var_28]
.text:00000071047806C0                 MOV             W8, #3
.text:00000071047806C4                 STR             W8, [X20,#0x18]
.text:00000071047806C8                 B               loc_7104780C20
.text:00000071047806CC ; ---------------------------------------------------------------------------
.text:00000071047806CC
.text:00000071047806CC loc_71047806CC                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+3C0↑j
.text:00000071047806CC                 ADRP            X8, #Meta.PendingFish_TypeInfo@PAGE ; Meta.PendingFish_TypeInfo
.text:00000071047806D0                 LDR             X0, [X8,#Meta.PendingFish_TypeInfo@PAGEOFF] ; Meta.PendingFish_TypeInfo
.text:00000071047806D4                 BL              sub_7100A8D6B0
.text:00000071047806D8                 ADRP            X21, #byte_710A3F2A99@PAGE
.text:00000071047806DC                 MOV             X20, X0
.text:00000071047806E0                 LDRB            W8, [X21,#byte_710A3F2A99@PAGEOFF]
.text:00000071047806E4                 TBNZ            W8, #0, loc_7104780704
.text:00000071047806E8                 ADRL            X0, StringLiteral_1
.text:00000071047806F0                 MOV             W1, #1
.text:00000071047806F4                 MOV             W24, #1
.text:00000071047806F8                 BL              sub_7100AA7760
.text:00000071047806FC                 DMB             ISH
.text:0000007104780700                 STRB            W24, [X21,#byte_710A3F2A99@PAGEOFF]
.text:0000007104780704
.text:0000007104780704 loc_7104780704                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+554↑j
.text:0000007104780704                 ADRP            X9, #StringLiteral_1@PAGE
.text:0000007104780708                 MOV             X8, X20
.text:000000710478070C                 LDR             X9, [X9,#StringLiteral_1@PAGEOFF]
.text:0000007104780710                 ADRP            X24, #dword_710A622EE0@PAGE
.text:0000007104780714                 STR             X9, [X8,#0x38]!
.text:0000007104780718                 LDR             W9, [X24,#dword_710A622EE0@PAGEOFF]
.text:000000710478071C                 CBZ             W9, loc_7104780754
.text:0000007104780720                 LSR             X9, X8, #0xC
.text:0000007104780724                 ADRL            X10, qword_710A4109F8
.text:000000710478072C                 UBFX            X8, X8, #0x12, #0xF
.text:0000007104780730                 ADD             X8, X10, X8,LSL#3
.text:0000007104780734                 MOV             W10, #1
.text:0000007104780738                 LSL             X9, X10, X9
.text:000000710478073C                 ADD             X8, X8, #0x46,LSL#12 ; 'F'
.text:0000007104780740                 ADD             X8, X8, #0x4D8
.text:0000007104780744
.text:0000007104780744 loc_7104780744                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+5C0↓j
.text:0000007104780744                 LDXR            X10, [X8]
.text:0000007104780748                 ORR             X10, X10, X9
.text:000000710478074C                 STXR            W11, X10, [X8]
.text:0000007104780750                 CBNZ            W11, loc_7104780744
.text:0000007104780754
.text:0000007104780754 loc_7104780754                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+58C↑j
.text:0000007104780754                 ADRP            X8, #Definitions.Items.ActivityDataLocationFilter_TypeInfo@PAGE ; Definitions.Items.ActivityDataLocationFilter_TypeInfo
.text:0000007104780758                 STR             WZR, [X20,#0x18]
.text:000000710478075C                 LDR             X0, [X8,#Definitions.Items.ActivityDataLocationFilter_TypeInfo@PAGEOFF] ; Definitions.Items.ActivityDataLocationFilter_TypeInfo
.text:0000007104780760                 BL              sub_7100A8D6B0
.text:0000007104780764                 LDUR            X8, [X29,#0x20+var_28]
.text:0000007104780768                 LDR             X8, [X8,#0x20]
.text:000000710478076C                 CBZ             X8, loc_7104780C60
.text:0000007104780770                 LDR             X25, [X8,#0x20]
.text:0000007104780774                 CBZ             X25, loc_7104780C60
.text:0000007104780778                 LDRB            W8, [X22,#byte_710A3F2A53@PAGEOFF]
.text:000000710478077C                 MOV             X21, X0
.text:0000007104780780                 TBNZ            W8, #0, loc_71047807A0
.text:0000007104780784                 ADRL            X0, Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:000000710478078C                 MOV             W1, #1
.text:0000007104780790                 MOV             W26, #1
.text:0000007104780794                 BL              sub_7100AA7760
.text:0000007104780798                 DMB             ISH
.text:000000710478079C                 STRB            W26, [X22,#byte_710A3F2A53@PAGEOFF]
.text:00000071047807A0
.text:00000071047807A0 loc_71047807A0                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+5F0↑j
.text:00000071047807A0                 LDR             W8, [X25,#0x20]
.text:00000071047807A4                 CMP             W8, #2
.text:00000071047807A8                 B.NE            loc_7104780C60
.text:00000071047807AC                 LDR             X0, [X25,#0x18]
.text:00000071047807B0                 CBZ             X0, loc_7104780C60
.text:00000071047807B4                 LDR             X1, [X23,#Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo@PAGEOFF] ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:00000071047807B8                 LDR             X8, [X0]
.text:00000071047807BC                 CMP             X8, X1
.text:00000071047807C0                 B.NE            loc_7104780C64
.text:00000071047807C4                 LDR             X8, [X0,#0x18]
.text:00000071047807C8                 CBZ             X8, loc_7104780C60
.text:00000071047807CC                 LDR             W9, [X8,#0x20]
.text:00000071047807D0                 CMP             W9, #2
.text:00000071047807D4                 B.NE            loc_7104780858
.text:00000071047807D8                 LDR             X0, [X8,#0x18]
.text:00000071047807DC                 CBZ             X0, loc_7104780C60
.text:00000071047807E0                 ADRP            X8, #xmmword_710A40F368@PAGE
.text:00000071047807E4                 LDR             X1, [X8,#xmmword_710A40F368@PAGEOFF]
.text:00000071047807E8                 LDR             X8, [X0]
.text:00000071047807EC                 LDR             X8, [X8,#0x40]
.text:00000071047807F0                 LDR             X9, [X1,#0x40]
.text:00000071047807F4                 CMP             X8, X9
.text:00000071047807F8                 B.NE            loc_7104780C64
.text:00000071047807FC                 LDR             W1, [X0,#0x10]
.text:0000007104780800                 B               loc_710478085C
.text:0000007104780804 ; ---------------------------------------------------------------------------
.text:0000007104780804
.text:0000007104780804 loc_7104780804                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+4FC↑j
.text:0000007104780804                 MOV             W1, WZR ; value
.text:0000007104780808
.text:0000007104780808 loc_7104780808                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+528↑j
.text:0000007104780808                 CBZ             X21, loc_7104780C60
.text:000000710478080C                 MOV             X0, X21 ; this
.text:0000007104780810                 MOV             X2, XZR ; method
.text:0000007104780814                 BL              Definitions.Items.ActivityDataLocationFilter$$set_VillageArea
.text:0000007104780818                 LDR             W9, [X25,#dword_710A622EE0@PAGEOFF]
.text:000000710478081C                 MOV             X8, X20
.text:0000007104780820                 STR             X21, [X8,#0x20]!
.text:0000007104780824                 CBZ             W9, loc_71047808B0
.text:0000007104780828                 LSR             X9, X8, #0xC
.text:000000710478082C                 UBFX            X8, X8, #0x12, #0xF
.text:0000007104780830                 ADD             X8, X24, X8,LSL#3
.text:0000007104780834                 MOV             W10, #1
.text:0000007104780838                 LSL             X9, X10, X9
.text:000000710478083C                 ADD             X8, X8, #0x46,LSL#12 ; 'F'
.text:0000007104780840                 ADD             X8, X8, #0x4D8
.text:0000007104780844
.text:0000007104780844 loc_7104780844                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+6C0↓j
.text:0000007104780844                 LDXR            X10, [X8]
.text:0000007104780848                 ORR             X10, X10, X9
.text:000000710478084C                 STXR            W11, X10, [X8]
.text:0000007104780850                 CBNZ            W11, loc_7104780844
.text:0000007104780854                 B               loc_71047808B0
.text:0000007104780858 ; ---------------------------------------------------------------------------
.text:0000007104780858
.text:0000007104780858 loc_7104780858                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+644↑j
.text:0000007104780858                 MOV             W1, WZR ; value
.text:000000710478085C
.text:000000710478085C loc_710478085C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+670↑j
.text:000000710478085C                 CBZ             X21, loc_7104780C60
.text:0000007104780860                 MOV             X0, X21 ; this
.text:0000007104780864                 MOV             X2, XZR ; method
.text:0000007104780868                 BL              Definitions.Items.ActivityDataLocationFilter$$set_Scene
.text:000000710478086C                 LDR             W9, [X24,#dword_710A622EE0@PAGEOFF]
.text:0000007104780870                 MOV             X8, X20
.text:0000007104780874                 STR             X21, [X8,#0x20]!
.text:0000007104780878                 CBZ             W9, loc_71047808B0
.text:000000710478087C                 LSR             X9, X8, #0xC
.text:0000007104780880                 ADRL            X10, qword_710A4109F8
.text:0000007104780888                 UBFX            X8, X8, #0x12, #0xF
.text:000000710478088C                 ADD             X8, X10, X8,LSL#3
.text:0000007104780890                 MOV             W10, #1
.text:0000007104780894                 LSL             X9, X10, X9
.text:0000007104780898                 ADD             X8, X8, #0x46,LSL#12 ; 'F'
.text:000000710478089C                 ADD             X8, X8, #0x4D8
.text:00000071047808A0
.text:00000071047808A0 loc_71047808A0                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+71C↓j
.text:00000071047808A0                 LDXR            X10, [X8]
.text:00000071047808A4                 ORR             X10, X10, X9
.text:00000071047808A8                 STXR            W11, X10, [X8]
.text:00000071047808AC                 CBNZ            W11, loc_71047808A0
.text:00000071047808B0
.text:00000071047808B0 loc_71047808B0                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+694↑j
.text:00000071047808B0                                         ; Meta.StartFishing.Types.Response$$ApplyThis+6C4↑j ...
.text:00000071047808B0                 MOV             W8, #1
.text:00000071047808B4                 STUR            X20, [X29,#0x20+var_48]
.text:00000071047808B8                 STRB            W8, [X29,#0x20+var_8]
.text:00000071047808BC
.text:00000071047808BC loc_71047808BC                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+35C↑j
.text:00000071047808BC                                         ; Meta.StartFishing.Types.Response$$ApplyThis+3C8↑j
.text:00000071047808BC                 LDUR            X8, [X29,#0x20+var_30]
.text:00000071047808C0                 LDR             X8, [X8]
.text:00000071047808C4                 CBZ             X8, loc_7104780C60
.text:00000071047808C8                 LDR             X0, [X8,#0x28] ; this
.text:00000071047808CC                 CBZ             X0, loc_7104780C60
.text:00000071047808D0                 ADRP            X8, #StringLiteral_13024@PAGE ; Fishing
.text:00000071047808D4                 MOV             W2, #1  ; useRPCRandom
.text:00000071047808D8                 LDR             X1, [X8,#StringLiteral_13024@PAGEOFF] ; key
.text:00000071047808DC                 ADRP            X8, #StringLiteral_5395@PAGE ; ApplyThis
.text:00000071047808E0                 MOV             X4, XZR ; method
.text:00000071047808E4                 LDR             X3, [X8,#StringLiteral_5395@PAGEOFF] ; method
.text:00000071047808E8                 BL              Meta.ProfilePlayer$$GetRandomSeed
.text:00000071047808EC                 ADRP            X8, #System.Random_TypeInfo@PAGE ; System.Random_TypeInfo
.text:00000071047808F0                 MOV             W21, W0
.text:00000071047808F4                 LDR             X0, [X8,#System.Random_TypeInfo@PAGEOFF] ; System.Random_TypeInfo
.text:00000071047808F8                 BL              sub_7100A8D6B0
.text:00000071047808FC                 MOV             W1, W21 ; Seed
.text:0000007104780900                 MOV             X2, XZR ; method
.text:0000007104780904                 MOV             X20, X0
.text:0000007104780908                 BL              System.Random$$.ctor_485424775296
.text:000000710478090C                 SUB             X8, X29, #-(0x20+var_28)
.text:0000007104780910                 LDUR            X11, [X29,#0x20+var_30]
.text:0000007104780914                 SUB             X9, X29, #-(0x20+bodyOfWater)
.text:0000007104780918                 STP             XZR, X8, [SP,#0xB0+var_98]
.text:000000710478091C                 ADD             X8, X29, #0x20+var_8
.text:0000007104780920                 STP             X8, X9, [SP,#0xB0+var_88]
.text:0000007104780924                 SUB             X8, X29, #-(0x20+var_48)
.text:0000007104780928                 SUB             X9, X29, #-(0x20+var_38)
.text:000000710478092C                 SUB             X10, X29, #-(0x20+var_30)
.text:0000007104780930                 STR             X10, [SP,#0xB0+var_68]
.text:0000007104780934                 STP             X8, X9, [SP,#0xB0+var_78]
.text:0000007104780938                 LDR             X8, [X11]
.text:000000710478093C                 CBZ             X8, loc_7104780C68
.text:0000007104780940                 LDR             X0, [X8,#0x28] ; this
.text:0000007104780944                 CBZ             X0, loc_7104780C68
.text:0000007104780948                 MOV             W1, #0x1C ; buffType
.text:000000710478094C                 MOV             X2, XZR ; method
.text:0000007104780950                 BL              Meta.ProfilePlayer$$GetBuff
.text:0000007104780954                 LDUR            X22, [X29,#0x20+var_48]
.text:0000007104780958                 CBZ             X22, loc_7104780C6C
.text:000000710478095C                 ADRP            X23, #byte_710A3F2AA7@PAGE
.text:0000007104780960                 MOV             W21, W0
.text:0000007104780964                 LDRB            W8, [X23,#byte_710A3F2AA7@PAGEOFF]
.text:0000007104780968                 TBNZ            W8, #0, loc_7104780988
.text:000000710478096C                 ADRL            X0, Definitions.Items.Item_TypeInfo ; Definitions.Items.Item_TypeInfo
.text:0000007104780974                 MOV             W1, #1
.text:0000007104780978                 MOV             W24, #1
.text:000000710478097C                 BL              sub_7100AA7760
.text:0000007104780980                 DMB             ISH
.text:0000007104780984                 STRB            W24, [X23,#byte_710A3F2AA7@PAGEOFF]
.text:0000007104780988
.text:0000007104780988 loc_7104780988                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+7D8↑j
.text:0000007104780988                 LDR             W23, [X22,#0x40]
.text:000000710478098C                 ADRP            X22, #Definitions.Items.Item_TypeInfo@PAGE ; Definitions.Items.Item_TypeInfo
.text:0000007104780990                 LDR             X0, [X22,#Definitions.Items.Item_TypeInfo@PAGEOFF] ; Definitions.Items.Item_TypeInfo
.text:0000007104780994                 LDR             W8, [X0,#0xE4]
.text:0000007104780998                 CBNZ            W8, loc_71047809B4
.text:000000710478099C                 BL              sub_7100ABFF30
.text:00000071047809A0                 LDR             X0, [X22,#Definitions.Items.Item_TypeInfo@PAGEOFF] ; Definitions.Items.Item_TypeInfo
.text:00000071047809A4                 LDR             W8, [X0,#0xE4]
.text:00000071047809A8                 CBNZ            W8, loc_71047809B4
.text:00000071047809AC                 BL              sub_7100ABFF30
.text:00000071047809B0                 LDR             X0, [X22,#Definitions.Items.Item_TypeInfo@PAGEOFF] ; Definitions.Items.Item_TypeInfo
.text:00000071047809B4
.text:00000071047809B4 loc_71047809B4                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+808↑j
.text:00000071047809B4                                         ; Meta.StartFishing.Types.Response$$ApplyThis+818↑j
.text:00000071047809B4                 ADRP            X25, #byte_710A3EEF6E@PAGE
.text:00000071047809B8                 LDR             X24, [X0,#0xB8]
.text:00000071047809BC                 LDRB            W8, [X25,#byte_710A3EEF6E@PAGEOFF]
.text:00000071047809C0                 TBNZ            W8, #0, loc_71047809E4
.text:00000071047809C4                 ADRL            X0, Definitions.Items.Item_TypeInfo ; Definitions.Items.Item_TypeInfo
.text:00000071047809CC                 MOV             W1, #1
.text:00000071047809D0                 MOV             W26, #1
.text:00000071047809D4                 BL              sub_7100AA7760
.text:00000071047809D8                 DMB             ISH
.text:00000071047809DC                 STRB            W26, [X25,#byte_710A3EEF6E@PAGEOFF]
.text:00000071047809E0                 LDR             X0, [X22,#Definitions.Items.Item_TypeInfo@PAGEOFF] ; Definitions.Items.Item_TypeInfo
.text:00000071047809E4
.text:00000071047809E4 loc_71047809E4                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+830↑j
.text:00000071047809E4                 LDR             W8, [X0,#0xE4]
.text:00000071047809E8                 CBNZ            W8, loc_71047809F0
.text:00000071047809EC                 BL              sub_7100ABFF30
.text:00000071047809F0
.text:00000071047809F0 loc_71047809F0                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+858↑j
.text:00000071047809F0                 LDR             W8, [X24]
.text:00000071047809F4                 CMP             W23, W8
.text:00000071047809F8                 B.EQ            loc_7104780A20
.text:00000071047809FC                 LDUR            X8, [X29,#0x20+var_48]
.text:0000007104780A00                 CBZ             X8, loc_7104780C88
.text:0000007104780A04                 LDRB            W8, [X8,#0x44]
.text:0000007104780A08                 CMP             W21, #0
.text:0000007104780A0C                 CSET            W9, GT
.text:0000007104780A10                 CMP             W8, #0
.text:0000007104780A14                 CSET            W8, NE
.text:0000007104780A18                 EOR             W8, W9, W8
.text:0000007104780A1C                 TBZ             W8, #0, loc_7104780C00
.text:0000007104780A20
.text:0000007104780A20 loc_7104780A20                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+868↑j
.text:0000007104780A20                 CMP             W21, #0
.text:0000007104780A24                 B.LE            loc_7104780A60
.text:0000007104780A28                 LDUR            X2, [X29,#0x20+var_48]
.text:0000007104780A2C                 CBZ             X2, loc_7104780C8C
.text:0000007104780A30                 LDR             W8, [X2,#0x18]
.text:0000007104780A34                 CMP             W8, #1
.text:0000007104780A38                 CSET            W8, EQ
.text:0000007104780A3C                 STURB           W8, [X29,#0x20+var_4C]
.text:0000007104780A40                 SUB             X8, X29, #-(0x20+var_4C)
.text:0000007104780A44                 STP             XZR, X8, [SP,#0xB0+var_B0]
.text:0000007104780A48                 SUB             X8, X29, #-(0x20+var_48)
.text:0000007104780A4C                 STR             X8, [SP,#0xB0+var_A0]
.text:0000007104780A50                 B.NE            loc_7104780A78
.text:0000007104780A54                 MOV             W8, #3
.text:0000007104780A58                 STR             W8, [X2,#0x18]
.text:0000007104780A5C                 B               loc_7104780A78
.text:0000007104780A60 ; ---------------------------------------------------------------------------
.text:0000007104780A60
.text:0000007104780A60 loc_7104780A60                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+894↑j
.text:0000007104780A60                 LDUR            X2, [X29,#0x20+var_48] ; pendingFish
.text:0000007104780A64                 SUB             X8, X29, #-(0x20+var_4C)
.text:0000007104780A68                 STURB           WZR, [X29,#0x20+var_4C]
.text:0000007104780A6C                 STP             XZR, X8, [SP,#0xB0+var_B0]
.text:0000007104780A70                 SUB             X8, X29, #-(0x20+var_48)
.text:0000007104780A74                 STR             X8, [SP,#0xB0+var_A0]
.text:0000007104780A78
.text:0000007104780A78 loc_7104780A78                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+8C0↑j
.text:0000007104780A78                                         ; Meta.StartFishing.Types.Response$$ApplyThis+8CC↑j
.text:0000007104780A78                 LDR             X0, [X19] ; profile
.text:0000007104780A7C                 LDUR            X1, [X29,#0x20+var_38] ; context
.text:0000007104780A80                 MOV             X3, XZR ; method
.text:0000007104780A84                 BL              Meta.FishingRewardSelector$$Create
.text:0000007104780A88                 CBZ             X0, loc_7104780C70
.text:0000007104780A8C                 LDR             X8, [X0]
.text:0000007104780A90                 LDP             X9, X3, [X8,#0x178]
.text:0000007104780A94                 SUB             X2, X29, #-(0x20+var_58)
.text:0000007104780A98                 MOV             X1, X20
.text:0000007104780A9C                 BLR             X9
.text:0000007104780AA0                 MOV             X19, XZR
.text:0000007104780AA4                 MOV             W8, #0xF
.text:0000007104780AA8                 LDR             X9, [SP,#0xB0+var_A8]
.text:0000007104780AAC                 LDRB            W9, [X9]
.text:0000007104780AB0                 CBZ             W9, loc_7104780AC4
.text:0000007104780AB4
.text:0000007104780AB4 loc_7104780AB4                          ; CODE XREF: sub_7104780CAC+78↓j
.text:0000007104780AB4                 LDUR            X9, [X29,#0x20+var_48]
.text:0000007104780AB8                 CBZ             X9, loc_7104780C90
.text:0000007104780ABC                 MOV             W10, #1
.text:0000007104780AC0                 STR             W10, [X9,#0x18]
.text:0000007104780AC4
.text:0000007104780AC4 loc_7104780AC4                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+920↑j
.text:0000007104780AC4                                         ; sub_7104780CAC+7C↓j
.text:0000007104780AC4                 CBNZ            X19, loc_7104780C74
.text:0000007104780AC8                 CMP             W8, #0xF
.text:0000007104780ACC                 B.EQ            loc_7104780AD4
.text:0000007104780AD0                 CBNZ            W8, loc_7104780C54
.text:0000007104780AD4
.text:0000007104780AD4 loc_7104780AD4                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+93C↑j
.text:0000007104780AD4                 LDUR            X8, [X29,#0x20+var_28]
.text:0000007104780AD8                 TBZ             W0, #0, loc_7104780C0C
.text:0000007104780ADC                 LDUR            X21, [X29,#0x20+var_58]
.text:0000007104780AE0                 STR             WZR, [X8,#0x18]
.text:0000007104780AE4                 CBZ             X21, loc_7104780C94
.text:0000007104780AE8                 ADRP            X23, #byte_710A3EDA6E@PAGE
.text:0000007104780AEC                 LDUR            X19, [X29,#0x20+var_48]
.text:0000007104780AF0                 LDRB            W8, [X23,#byte_710A3EDA6E@PAGEOFF]
.text:0000007104780AF4                 TBNZ            W8, #0, loc_7104780B14
.text:0000007104780AF8                 ADRL            X0, Definitions.Items.Item_TypeInfo ; Definitions.Items.Item_TypeInfo
.text:0000007104780B00                 MOV             W1, #1
.text:0000007104780B04                 MOV             W24, #1
.text:0000007104780B08                 BL              sub_7100AA7760
.text:0000007104780B0C                 DMB             ISH
.text:0000007104780B10                 STRB            W24, [X23,#byte_710A3EDA6E@PAGEOFF]
.text:0000007104780B14
.text:0000007104780B14 loc_7104780B14                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+964↑j
.text:0000007104780B14                 LDR             X0, [X22,#Definitions.Items.Item_TypeInfo@PAGEOFF] ; Definitions.Items.Item_TypeInfo
.text:0000007104780B18                 LDR             W21, [X21,#0x18]
.text:0000007104780B1C                 LDR             W8, [X0,#0xE4]
.text:0000007104780B20                 CBNZ            W8, loc_7104780B28
.text:0000007104780B24                 BL              sub_7100ABFF30
.text:0000007104780B28
.text:0000007104780B28 loc_7104780B28                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+990↑j
.text:0000007104780B28                 CBZ             X19, loc_7104780C98
.text:0000007104780B2C                 LDUR            X8, [X29,#0x20+var_48]
.text:0000007104780B30                 STR             W21, [X19,#0x40]
.text:0000007104780B34                 CBZ             X8, loc_7104780C9C
.text:0000007104780B38                 LDURB           W9, [X29,#0x20+var_4C]
.text:0000007104780B3C                 STRB            W9, [X8,#0x44]
.text:0000007104780B40                 LDUR            X8, [X29,#0x20+var_58]
.text:0000007104780B44                 CBZ             X8, loc_7104780CA0
.text:0000007104780B48                 LDR             X19, [X8,#0x40]
.text:0000007104780B4C                 CBZ             X19, loc_7104780CA4
.text:0000007104780B50                 ADRP            X21, #byte_710A3EEEB8@PAGE
.text:0000007104780B54                 LDRB            W8, [X21,#byte_710A3EEEB8@PAGEOFF]
.text:0000007104780B58                 TBNZ            W8, #0, loc_7104780B78
.text:0000007104780B5C                 ADRL            X0, Definitions.Items.Item_TypeInfo ; Definitions.Items.Item_TypeInfo
.text:0000007104780B64                 MOV             W1, #1
.text:0000007104780B68                 MOV             W23, #1
.text:0000007104780B6C                 BL              sub_7100AA7760
.text:0000007104780B70                 DMB             ISH
.text:0000007104780B74                 STRB            W23, [X21,#byte_710A3EEEB8@PAGEOFF]
.text:0000007104780B78
.text:0000007104780B78 loc_7104780B78                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+9C8↑j
.text:0000007104780B78                 LDR             X0, [X22,#Definitions.Items.Item_TypeInfo@PAGEOFF] ; Definitions.Items.Item_TypeInfo
.text:0000007104780B7C                 LDR             W19, [X19,#0x18]
.text:0000007104780B80                 LDR             W8, [X0,#0xE4]
.text:0000007104780B84                 CBNZ            W8, loc_7104780B8C
.text:0000007104780B88                 BL              sub_7100ABFF30
.text:0000007104780B8C
.text:0000007104780B8C loc_7104780B8C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+9F4↑j
.text:0000007104780B8C                 ADRP            X22, #Meta.StartFishing.Types.Response_TypeInfo@PAGE ; Meta.StartFishing.Types.Response_TypeInfo
.text:0000007104780B90                 LDR             X0, [X22,#Meta.StartFishing.Types.Response_TypeInfo@PAGEOFF] ; Meta.StartFishing.Types.Response_TypeInfo
.text:0000007104780B94                 LDR             W8, [X0,#0xE4]
.text:0000007104780B98                 CBNZ            W8, loc_7104780BA0
.text:0000007104780B9C                 BL              sub_7100ABFF30
.text:0000007104780BA0
.text:0000007104780BA0 loc_7104780BA0                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+A08↑j
.text:0000007104780BA0                 SUB             X1, X29, #-(0x20+fishData) ; fishData
.text:0000007104780BA4                 MOV             X0, X19 ; fishItem
.text:0000007104780BA8                 BL              Meta.StartFishing.Types.Response$$TryGetFishItemData
.text:0000007104780BAC                 TBZ             W0, #0, loc_7104780C14
.text:0000007104780BB0                 LDR             X0, [X22,#Meta.StartFishing.Types.Response_TypeInfo@PAGEOFF] ; Meta.StartFishing.Types.Response_TypeInfo
.text:0000007104780BB4                 LDUR            X21, [X29,#0x20+var_48]
.text:0000007104780BB8                 LDUR            X19, [X29,#0x20+fishData]
.text:0000007104780BBC                 LDR             W8, [X0,#0xE4]
.text:0000007104780BC0                 CBNZ            W8, loc_7104780BC8
.text:0000007104780BC4                 BL              sub_7100ABFF30
.text:0000007104780BC8
.text:0000007104780BC8 loc_7104780BC8                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+A30↑j
.text:0000007104780BC8                 MOV             X0, X20 ; random
.text:0000007104780BCC                 MOV             X1, X19 ; chosenFish
.text:0000007104780BD0                 BL              Meta.StartFishing.Types.Response$$SelectRandomFishMass
.text:0000007104780BD4                 ADRP            X8, #Method$System.Nullable_float_..ctor__@PAGE ; Method$System.Nullable<float>..ctor()
.text:0000007104780BD8                 STR             XZR, [SP,#0xB0+var_B0]
.text:0000007104780BDC                 LDR             X2, [X8,#Method$System.Nullable_float_..ctor__@PAGEOFF] ; method
.text:0000007104780BE0                 STR             S0, [X29,#0x20+var_4]
.text:0000007104780BE4                 MOV             X0, SP  ; this
.text:0000007104780BE8                 ADD             X1, X29, #0x20+var_4 ; this
.text:0000007104780BEC                 BL              System.Nullable___Il2CppFullySharedGenericStructType_$$.ctor
.text:0000007104780BF0                 CBZ             X21, loc_7104780CA8
.text:0000007104780BF4                 LDR             X8, [SP,#0xB0+var_B0]
.text:0000007104780BF8                 STUR            X8, [X21,#0x2C]
.text:0000007104780BFC                 B               loc_7104780C14
.text:0000007104780C00 ; ---------------------------------------------------------------------------
.text:0000007104780C00
.text:0000007104780C00 loc_7104780C00                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+88C↑j
.text:0000007104780C00                 LDUR            X8, [X29,#0x20+var_28]
.text:0000007104780C04                 STR             WZR, [X8,#0x18]
.text:0000007104780C08                 B               loc_7104780C14
.text:0000007104780C0C ; ---------------------------------------------------------------------------
.text:0000007104780C0C
.text:0000007104780C0C loc_7104780C0C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+948↑j
.text:0000007104780C0C                 MOV             W9, #4
.text:0000007104780C10                 STR             W9, [X8,#0x18]
.text:0000007104780C14
.text:0000007104780C14 loc_7104780C14                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+A1C↑j
.text:0000007104780C14                                         ; Meta.StartFishing.Types.Response$$ApplyThis+A6C↑j ...
.text:0000007104780C14                 ADD             X0, SP, #0xB0+var_98
.text:0000007104780C18                 BL              sub_710082C240
.text:0000007104780C1C                 LDUR            X20, [X29,#0x20+var_28]
.text:0000007104780C20
.text:0000007104780C20 loc_7104780C20                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+230↑j
.text:0000007104780C20                                         ; Meta.StartFishing.Types.Response$$ApplyThis+274↑j ...
.text:0000007104780C20                 ADRP            X8, #Method$Meta.TransactionAction_StartFishing.Types.Result_.get_IsValid__@PAGE ; Method$Meta.TransactionAction<StartFishing.Types.Result>.get_IsValid()
.text:0000007104780C24                 MOV             X0, X20 ; this
.text:0000007104780C28                 LDR             X1, [X8,#Method$Meta.TransactionAction_StartFishing.Types.Result_.get_IsValid__@PAGEOFF] ; method
.text:0000007104780C2C                 BL              Meta.TransactionAction___Il2CppFullySharedGenericStructType_$$get_IsValid
.text:0000007104780C30
.text:0000007104780C30 loc_7104780C30                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+ACC↓j
.text:0000007104780C30                 LDP             X20, X19, [SP,#0xB0+var_s30]
.text:0000007104780C34                 AND             W0, W0, #1
.text:0000007104780C38                 LDP             X22, X21, [SP,#0xB0+var_s20]
.text:0000007104780C3C                 LDR             X27, [SP,#0xB0+var_10]
.text:0000007104780C40                 LDP             X24, X23, [SP,#0xB0+var_s10]
.text:0000007104780C44                 LDP             X26, X25, [SP,#0xB0+var_s0]
.text:0000007104780C48                 LDP             X29, X30, [SP,#0xB0+var_20]
.text:0000007104780C4C                 ADD             SP, SP, #0xF0
.text:0000007104780C50                 RET
.text:0000007104780C54 ; ---------------------------------------------------------------------------
.text:0000007104780C54
.text:0000007104780C54 loc_7104780C54                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+940↑j
.text:0000007104780C54                 ADD             X0, SP, #0xB0+var_98
.text:0000007104780C58                 BL              sub_710082C240
.text:0000007104780C5C                 B               loc_7104780C30
.text:0000007104780C60 ; ---------------------------------------------------------------------------
.text:0000007104780C60
.text:0000007104780C60 loc_7104780C60                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+150↑j
.text:0000007104780C60                                         ; Meta.StartFishing.Types.Response$$ApplyThis+158↑j ...
.text:0000007104780C60                 BL              sub_7100A31A60
.text:0000007104780C64 ; ---------------------------------------------------------------------------
.text:0000007104780C64
.text:0000007104780C64 loc_7104780C64                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+1B8↑j
.text:0000007104780C64                                         ; Meta.StartFishing.Types.Response$$ApplyThis+3AC↑j ...
.text:0000007104780C64                 BL              sub_7100A32460
.text:0000007104780C68 ; ---------------------------------------------------------------------------
.text:0000007104780C68
.text:0000007104780C68 loc_7104780C68                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+7AC↑j
.text:0000007104780C68                                         ; Meta.StartFishing.Types.Response$$ApplyThis+7B4↑j
.text:0000007104780C68                 BL              sub_7100A31A60
.text:0000007104780C6C ; ---------------------------------------------------------------------------
.text:0000007104780C6C
.text:0000007104780C6C loc_7104780C6C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+7C8↑j
.text:0000007104780C6C                 BL              sub_7100A31A60
.text:0000007104780C70 ; ---------------------------------------------------------------------------
.text:0000007104780C70
.text:0000007104780C70 loc_7104780C70                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+8F8↑j
.text:0000007104780C70                 BL              sub_7100A31A60
.text:0000007104780C74 ; ---------------------------------------------------------------------------
.text:0000007104780C74
.text:0000007104780C74 loc_7104780C74                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis:loc_7104780AC4↑j
.text:0000007104780C74                 MOV             X0, X19
.text:0000007104780C78                 BL              sub_7100A87C30
.text:0000007104780C7C ; ---------------------------------------------------------------------------
.text:0000007104780C7C
.text:0000007104780C7C loc_7104780C7C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+2D8↑j
.text:0000007104780C7C                 MOV             X0, X1
.text:0000007104780C80                 MOV             X1, X8
.text:0000007104780C84                 BL              sub_7100A32460
.text:0000007104780C88 ; ---------------------------------------------------------------------------
.text:0000007104780C88
.text:0000007104780C88 loc_7104780C88                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+870↑j
.text:0000007104780C88                 BL              sub_7100A31A60
.text:0000007104780C8C ; ---------------------------------------------------------------------------
.text:0000007104780C8C
.text:0000007104780C8C loc_7104780C8C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+89C↑j
.text:0000007104780C8C                 BL              sub_7100A31A60
.text:0000007104780C90 ; ---------------------------------------------------------------------------
.text:0000007104780C90
.text:0000007104780C90 loc_7104780C90                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+928↑j
.text:0000007104780C90                 BL              sub_7100A31A60
.text:0000007104780C94 ; ---------------------------------------------------------------------------
.text:0000007104780C94
.text:0000007104780C94 loc_7104780C94                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+954↑j
.text:0000007104780C94                 BL              sub_7100A31A60
.text:0000007104780C98 ; ---------------------------------------------------------------------------
.text:0000007104780C98
.text:0000007104780C98 loc_7104780C98                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis:loc_7104780B28↑j
.text:0000007104780C98                 BL              sub_7100A31A60
.text:0000007104780C9C ; ---------------------------------------------------------------------------
.text:0000007104780C9C
.text:0000007104780C9C loc_7104780C9C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+9A4↑j
.text:0000007104780C9C                 BL              sub_7100A31A60
.text:0000007104780CA0 ; ---------------------------------------------------------------------------
.text:0000007104780CA0
.text:0000007104780CA0 loc_7104780CA0                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+9B4↑j
.text:0000007104780CA0                 BL              sub_7100A31A60
.text:0000007104780CA4 ; ---------------------------------------------------------------------------
.text:0000007104780CA4
.text:0000007104780CA4 loc_7104780CA4                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+9BC↑j
.text:0000007104780CA4                 BL              sub_7100A31A60
.text:0000007104780CA8 ; ---------------------------------------------------------------------------
.text:0000007104780CA8
.text:0000007104780CA8 loc_7104780CA8                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+A60↑j
.text:0000007104780CA8                 BL              sub_7100A31A60
.text:0000007104780CA8 ; End of function Meta.StartFishing.Types.Response$$ApplyThis

And just as I'd hoped, I was successfully able to find the process that rewrites the fish's rarity when the buff flag is active.

Code:
.text:0000007104780A20 loc_7104780A20                          ; entry of the "buff branch" block
.text:0000007104780A20                 CMP             W21, #0          // Check GetBuff result: W21 > 0 means buff is active
.text:0000007104780A24                 B.LE            loc_7104780A60   // If no buff (<=0), skip the buff path

.text:0000007104780A28                 LDUR            X2, [X29,#0x20+var_48] // Load pendingFish* from the current stack frame
.text:0000007104780A2C                 CBZ             X2, loc_7104780C8C     // If pendingFish is null, bail out

.text:0000007104780A30                 LDR             W8, [X2,#0x18]   // W8 = pendingFish.rarity_ (1=White, 2=Blue, 3=Gold, 4=Special)
.text:0000007104780A34                 CMP             W8, #1           // Is current rarity White (1)?
.text:0000007104780A38                 CSET            W8, EQ           // W8 = (rarity == White) ? 1 : 0  (materialize flag)
.text:0000007104780A3C                 STURB           W8, [X29,#0x20+var_4C] // Save flag to local var_4C (later used to write Buffed)

.text:0000007104780A40                 SUB             X8, X29, #-(0x20+var_4C) // X8 = &var_4C (compute local address)
.text:0000007104780A44                 STP             XZR, X8, [SP,#0xB0+var_B0] // Store {0, &var_4C} on stack (scratch/arg spill for later code)
.text:0000007104780A48                 SUB             X8, X29, #-(0x20+var_48)  // X8 = &var_48 (address of pendingFish* local)
.text:0000007104780A4C                 STR             X8, [SP,#0xB0+var_A0]     // Store &var_48 on stack (scratch/arg spill for later code)

.text:0000007104780A50                 B.NE            loc_7104780A78   // If not White, do not change rarity; continue to merge point
.text:0000007104780A54                 MOV             W8, #3           // Set target rarity to Gold (3) — default buff upgrade White->Gold
.text:0000007104780A58                 STR             W8, [X2,#0x18]   // Write pendingFish.rarity_ = Gold (affects catch table)
.text:0000007104780A5C                 B               loc_7104780A78   // Jump to common continuation (later Buffed writeback, etc.

First, it's necessary to make the code branch to this buff process under all circumstances. To do that, we need to disable the part that checks whether it's okay to make the branch.

While searching within the function, I found the instruction at address 0x7104780950, BL Meta.ProfilePlayer$$GetBuff, which retrieves the player's current buff status. At address 0x7104780960, the instruction MOV W21, W0 saves that return value into register w21. This value is used in a later process, and if it is 0, it is treated as if no buff is active, and the code will not branch to the buff process. In other words, this part needs to be modified. There are various ways to rewrite it, but I decided to change the MOV W21, W0 at address 0x7104780960 to MOV W21, #1.



Searching for other checks that branch to the buff process, I found the next branching logic block beginning at address 0x71047809F0.

Code:
.text:00000071047809F0 loc_71047809F0                          ; entry of the gate that decides whether to enter the buff branch
.text:00000071047809F0                 LDR             W8, [X24]        // Load a state/value from [X24] (e.g., cached token/phase)
.text:00000071047809F4                 CMP             W23, W8          // Compare W23 against the loaded value
.text:00000071047809F8                 B.EQ            loc_7104780A20   // If equal, jump directly to the buff-handling block at 0x…A20

.text:00000071047809FC                 LDUR            X8, [X29,#0x20+var_48] // X8 = pendingFish* from the current stack frame
.text:0000007104780A00                 CBZ             X8, loc_7104780C88     // If pendingFish is null, bail to 0x…0C88

.text:0000007104780A04                 LDRB            W8, [X8,#0x44]   // W8 = pendingFish.<Buffed>k__BackingField (0/1)
.text:0000007104780A08                 CMP             W21, #0          // Is GetBuff result (W21) > 0 ? (i.e., gameplay buff active)
.text:0000007104780A0C                 CSET            W9, GT           // W9 = (W21>0) ? 1 : 0
.text:0000007104780A10                 CMP             W8, #0           // Is Buffed flag non-zero?
.text:0000007104780A14                 CSET            W8, NE           // W8 = (Buffed!=0) ? 1 : 0
.text:0000007104780A18                 EOR             W8, W9, W8       // W8 = (W21>0) XOR (Buffed!=0) → 1 if mismatch, 0 if consistent
.text:0000007104780A1C                 TBZ             W8, #0, loc_7104780C00 // If bit0==0 (consistent), jump to 0x…0C00 (skip buff path);
                                                                          // otherwise fall through to 0x…0A20 to reconcile via buff logic


In short, it checks the status of the fish to be caught (referred to as PendingFish in dump.cs) to see if a buff is active, and if it is, it skips the branch to the buff process. I changed the instruction at address 0x7104780A04, LDRB W8, [X8,#0x44], which reads whether or not the fish has a buff, to MOV W8, WZR. This makes the game always recognize that the buff flag is not set on the fish.



With these two lines modified, the code is now forced to branch to the buff process, so the next step is to alter the buff process itself. The original buff process only activates for white ripples, changing their color to gold and modifying the rarity of the fish caught. With this limitation, it's impossible to catch a blue-ripple fish from a white ripple, or a gold-ripple fish from a blue ripple.

To address this, I modified the part that originally checked if the fish's rarity was "Normal." I rewrote the CMP W8, #1 at 0x7104780A34 and the CSET W8, EQ at 0x7104780A38 to instead check if the fish's current rarity matches the target rarity for the rewrite.

The original buff process was designed to not execute if the initial fish rarity wasn't Normal. To change this so that the buff process is skipped if the initial fish rarity is already the same as the target rarity, I rewrote the B.NE loc_7104780A78 at address 0x7104780A50 to B.EQ loc_7104780A78.

Code:
.text:0000007104780A20 loc_7104780A20                          ; start of the (modified) buff branch
.text:0000007104780A20                 CMP             W21, #0          // Check GetBuff result: buff considered active if W21 > 0
.text:0000007104780A24                 B.LE            loc_7104780A60   // If no buff (<=0), leave this path

.text:0000007104780A28                 LDUR            X2, [X29,#0x20+var_48] // X2 = pendingFish* (loaded from the current stack frame)
.text:0000007104780A2C                 CBZ             X2, loc_7104780C8C     // If pendingFish is null, bail out

.text:0000007104780A30                 LDR             W8, [X2,#0x18]   // W8 = pendingFish.rarity_ (1=White, 2=Blue, 3=Gold, 4=Special)

.text:0000007104780A34                 CMP             W8, #N           // Compare current rarity with TARGET rarity #N (your desired value)
.text:0000007104780A38                 CSET            W8, NE           // W8 = (current != TARGET) ? 1 : 0  (materialize “different?” as 0/1)
.text:0000007104780A3C                 STURB           W8, [X29,#0x20+var_4C] // Save the “different?” flag into local var_4C (later used for Buffed writeback)

.text:0000007104780A40                 SUB             X8, X29, #-(0x20+var_4C) // X8 = &var_4C (compute local address)
.text:0000007104780A44                 STP             XZR, X8, [SP,#0xB0+var_B0] // Spill {0, &var_4C} to stack (scratch/arg space used downstream)
.text:0000007104780A48                 SUB             X8, X29, #-(0x20+var_48)  // X8 = &var_48 (address of saved pendingFish* local)
.text:0000007104780A4C                 STR             X8, [SP,#0xB0+var_A0]     // Spill &var_48 to stack (scratch/arg space used downstream)

.text:0000007104780A50                 B.EQ            loc_7104780A78   // If current == TARGET (#N), skip changing rarity and continue
                                                                        // (Else: fall through to the block that sets rarity to #N)

#N = the numeric code of the rarity you want to enforce: 1=White (Normal), 2=Blue (Uncommon), 3=Gold (Rare), 4=Special.
With this layout: same color → skip; different color → continue to your write block (e.g., MOV W8,#N then STR W8,[X2,#0x18]).


Finally, to arbitrarily change the fish rarity that the buff process rewrites to, I modify the MOV W8, #3 at address 0x7104780A54. The reason the "ForceRareFish" code has one less line than the others is because the default instruction at 0x7104780A54 is already MOV W8, #3.

Code:
.text:0000007104780A54                 MOV             W8, #N        // Load TARGET rarity #N into W8 (1=White, 2=Blue, 3=Gold, 4=Special)
.text:0000007104780A58                 STR             W8, [X2,#0x18] // pendingFish.rarity_ ← #N (commit the new catch-table rarity





I wrote this hoping it would be a helpful reference, but honestly, I don’t recommend using the reverse-engineering of this particular code as your starting point for learning how to create cheats. It’s one of the more complex and difficult types of cheat codes to understand. Therefore, there's no need to feel discouraged if you can't understand everything I've written. For now, it is more than enough if you can just grasp the general overview of how I created the cheat code. I have created other cheat codes, so please try to decipher how they work by cross-referencing them with the dump.cs and NSO files, and work on being able to write them yourself.
 
Last edited by morarin,
I only create cheat codes for games made with Unity, so I don't know much about making them for other games. If you want to create cheat codes for the Nintendo Switch, I recommend reading the official Atmosphere documentation first. This past June, I learned how to create cheat codes for Unity games by reverse-engineering the ones ThorHammer made for Fashion Dreamer. I analyzed how they were modified, manually updated them to the latest version, refined the methods where necessary, and even created my own original cheat codes in the process. Since then, I have continued my learning by creating cheat codes for other games also developed in Unity, such as Tales of the Shire and (as you know) Disney Dreamlight Valley, primarily using static analysis and performing dynamic analysis when necessary. Given that I've become able to create a fair number of cheat codes myself over the past few months, reverse-engineering other people's cheat codes would be a powerful option for getting started with learning.



What I Use:
nxdumptool
Lockpick_RCM
IDA Pro 9.1.250226
SwitchIDAProLoader
Il2CppDumper

1.load Lockpick_RCM as payload and dump keys
2.extract main using nxdumptool(user titles menu→titleID→nca/nca fs dump options→dump update→Program→ExeFS→start nca fs section dump)
3.extract global-metadata.dat using nxdumptool(user titles menu→titleID→nca/nca fs dump options→dump update→Program→Patch RomFS→browse nca fs section→Data→Managed→Metadata→select the global-metadata.dat)
4.Use Il2CppDumper to process the NSO file (main) and the global-metadata.dat file to generate a set of files useful for reverse engineering.
5.put loader(switch64.dll) in /Program Files/IDA Professional 9.1/lodaers/
6.load main with IDA Pro(IDA: Quick Start→New→select main→select switch64.dll and oepn)View attachment 536422
7.load script with IDA Pro(IDA: File→Script file→select the ida_with_struct_py3.py→open the script.json and the il2cpp.h→wait for the script to finish executing)
8.Analyse the main file with IDA Pro(IDA: Options→General→Analysis→check "enabled" and click "OK"→wait until analysis finished)



For Unity games, I always start by using Il2CppDumper to get the files for reverse engineering. I mainly analyze the game by looking at the dump.cs file from Il2CppDumper and the main NSO file that I've opened in IDA Pro. I search dump.cs with keywords related to the cheat I'm trying to make, which helps me find the right classes and methods. After that, I check the disassembly of those methods in IDA Pro to find where to make my changes.

The whole thing is basically just a slow and steady process of repeating those steps with a lot of trial and error.



While some of the tutorials posted in this community are helpful, I was never able to learn how to create cheat codes from them. Generally, the people who post cheat codes here tend to be unwilling to explain their methods. Some of them even complain that their cheats are being used for profit and try to stop sharing them in public, attempting to guide people to closed groups instead. In reality, that's counterproductive; limiting access to only a select few people negatively affects the balance of supply and demand. Like you, I once asked a skilled cheat creator in this community to teach me their methods, but I was brushed off, perhaps because they thought it was too much of a hassle to teach a complete beginner like me step-by-step. And now that I can read and understand the cheat codes myself, I've realized they even fed me false information. They might have thought I wouldn't have been able to understand an explanation back then, but considering he honed his own skills by asking for guidance from many other talented creators in this very community, it's a terrible way to act. It's for these reasons that I will be publishing my cheat codes here where anyone can view them, rather than in a private group for Nintendo Switch cheats.



However, as I said above, it's also true that the cheat codes posted in this community are what enabled me to start learning, and I feel a desire to pay back the favor in the form of a tutorial. That’s why, this time, I’ve decided to write in my own thread about how I learned to create cheat codes and what tools I use. (In fact, I've already given similar explanations to people who have asked me via direct message). When you previously posted in this thread saying it would be helpful if I made a video tutorial, I considered explaining it in writing because creating a video is just too time-consuming. I apologize that I couldn't find the time and kept putting it off.
Post automatically merged:

I will explain how I created the cheat code you requested for changing the color of the fishing ripple, you can use this as a reference.


First, I clarify the objective. In this case, it is to rewrite the rarity of the fish you catch to a desired value.

Next, I consider how to achieve this. Analyzing the original cheat code revealed that it hooks into a code cave the moment the thrown bobber hits the water to arbitrarily rewrite the fish's rarity. However, I try to avoid using code caves as much as possible. This isn't for any logical reason, but because it provides a greater sense of accomplishment. Therefore, I decided to create the cheat code using my own approach.

Anyone who has played this game a fair amount should know that there is a process that rewrites a fish's rarity the moment the bobber lands in the water. When you have an active buff from an enchanted item and land your bobber in a white ripple, the ripple's color instantly turns gold, and the fish's rarity is also rewritten. For this project, I decided to adopt an approach that modifies this specific process.

With the approach for the cheat code decided, I searched for related classes in dump.cs. This time, I searched with "class.+?fishing.+?typedef" (I use Visual Studio Code; I recommend it for its excellent search functionality). In doing so, I found a class named "StartFishing".

Code:
// Namespace:
public enum StartFishing.Types.Result // TypeDefIndex: 1094
{
    // Fields
    public int value__; // 0x0
    [OriginalName("Success")]
    public const StartFishing.Types.Result Success = 0;
    [OriginalName("NoFishingTool")]
    public const StartFishing.Types.Result NoFishingTool = 1;
    [OriginalName("InvalidPendingFishID")]
    public const StartFishing.Types.Result InvalidPendingFishId = 2;
    [OriginalName("InvalidBodyOfWater")]
    public const StartFishing.Types.Result InvalidBodyOfWater = 3;
    [OriginalName("NoValidFish")]
    public const StartFishing.Types.Result NoValidFish = 4;
    [OriginalName("NotEnoughMana")]
    public const StartFishing.Types.Result NotEnoughMana = 5;
    [OriginalName("NotAllowed")]
    public const StartFishing.Types.Result NotAllowed = 6;
}
// Namespace:
[CompilerGenerated]
[Serializable]
private sealed class StartFishing.Types.Request.<>c // TypeDefIndex: 1095
{
    // Fields
    public static readonly StartFishing.Types.Request.<>c <>9; // 0x0
    // Methods
    // RVA: 0x477EEF0 Offset: 0x477EFFD VA: 0x477EEF0
    private static void .cctor() { }
    // RVA: 0x477EF90 Offset: 0x477F09D VA: 0x477EF90
    public void .ctor() { }
    // RVA: 0x477EFA0 Offset: 0x477F0AD VA: 0x477EFA0
    internal StartFishing.Types.Request <.cctor>b__29_0() { }
}
// Namespace:
public sealed class StartFishing.Types.Request : TransactionValidator<StartFishing.Types.Result>, IMessage<StartFishing.Types.Request>, IMessage, IEquatable<StartFishing.Types.Request>, IDeepCloneable<StartFishing.Types.Request>, IMessageFieldAccessor // TypeDefIndex: 1096
{
    // Fields
    private static readonly MessageParser<StartFishing.Types.Request> _parser; // 0x0
    private UnknownFieldSet _unknownFields; // 0x18
    public const int SelectorFieldNumber = 1;
    private PendingFishSelector selector_; // 0x20
    // Properties
    [DebuggerNonUserCode]
    public static MessageParser<StartFishing.Types.Request> Parser { get; }
    [DebuggerNonUserCode]
    public static MessageDescriptor Descriptor { get; }
    [DebuggerNonUserCode]
    private MessageDescriptor pb::Google.Protobuf.IMessage.Descriptor { get; }
    [DebuggerNonUserCode]
    public PendingFishSelector Selector { get; set; }
    // Methods
    // RVA: 0x477DD40 Offset: 0x477DE4D VA: 0x477DD40
    public static MessageParser<StartFishing.Types.Request> get_Parser() { }
    // RVA: 0x477DDD0 Offset: 0x477DEDD VA: 0x477DDD0
    public static MessageDescriptor get_Descriptor() { }
    // RVA: 0x477DEE0 Offset: 0x477DFED VA: 0x477DEE0 Slot: 12
    private MessageDescriptor pb::Google.Protobuf.IMessage.get_Descriptor() { }
    [DebuggerNonUserCode]
    // RVA: 0x477DF50 Offset: 0x477E05D VA: 0x477DF50
    public void .ctor() { }
    [DebuggerNonUserCode]
    // RVA: 0x477DFB0 Offset: 0x477E0BD VA: 0x477DFB0
    public void .ctor(StartFishing.Types.Request other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477E110 Offset: 0x477E21D VA: 0x477E110 Slot: 14
    public StartFishing.Types.Request Clone() { }
    // RVA: 0x477E180 Offset: 0x477E28D VA: 0x477E180
    public PendingFishSelector get_Selector() { }
    // RVA: 0x477E190 Offset: 0x477E29D VA: 0x477E190
    public void set_Selector(PendingFishSelector value) { }
    [DebuggerNonUserCode]
    // RVA: 0x477E1E0 Offset: 0x477E2ED VA: 0x477E1E0 Slot: 0
    public override bool Equals(object other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477E2F0 Offset: 0x477E3FD VA: 0x477E2F0 Slot: 13
    public bool Equals(StartFishing.Types.Request other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477E3B0 Offset: 0x477E4BD VA: 0x477E3B0 Slot: 2
    public override int GetHashCode() { }
    [DebuggerNonUserCode]
    // RVA: 0x477E410 Offset: 0x477E51D VA: 0x477E410 Slot: 3
    public override string ToString() { }
    [DebuggerNonUserCode]
    // RVA: 0x477E4A0 Offset: 0x477E5AD VA: 0x477E4A0 Slot: 10
    public void WriteTo(CodedOutputStream output) { }
    [DebuggerNonUserCode]
    // RVA: 0x477E510 Offset: 0x477E61D VA: 0x477E510 Slot: 11
    public int CalculateSize() { }
    [DebuggerNonUserCode]
    // RVA: 0x477E5A0 Offset: 0x477E6AD VA: 0x477E5A0 Slot: 18
    public void MergeFrom(StartFishing.Types.Request other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477E6D0 Offset: 0x477E7DD VA: 0x477E6D0 Slot: 9
    public void MergeFrom(CodedInputStream input) { }
    [DebuggerNonUserCode]
    // RVA: 0x477E8E0 Offset: 0x477E9ED VA: 0x477E8E0 Slot: 15
    public object GetFieldValue(int fieldNumber) { }
    [DebuggerNonUserCode]
    // RVA: 0x477E960 Offset: 0x477EA6D VA: 0x477E960 Slot: 16
    public void SetFieldValue(int fieldNumber, object value) { }
    [DebuggerNonUserCode]
    // RVA: 0x477EA30 Offset: 0x477EB3D VA: 0x477EA30 Slot: 17
    public void ClearFieldValue(int fieldNumber) { }
    // RVA: 0x477EA90 Offset: 0x477EB9D VA: 0x477EA90 Slot: 6
    protected override StartFishing.Types.Result ValidateThis(in Player player, in World world, ITransactionContext transactionContext) { }
    // RVA: 0x477ECD0 Offset: 0x477EDDD VA: 0x477ECD0
    private static void .cctor() { }
}
// Namespace:
[CompilerGenerated]
[Serializable]
private sealed class StartFishing.Types.Response.<>c // TypeDefIndex: 1097
{
    // Fields
    public static readonly StartFishing.Types.Response.<>c <>9; // 0x0
    // Methods
    // RVA: 0x47812F0 Offset: 0x47813FD VA: 0x47812F0
    private static void .cctor() { }
    // RVA: 0x4781390 Offset: 0x478149D VA: 0x4781390
    public void .ctor() { }
    // RVA: 0x47813A0 Offset: 0x47814AD VA: 0x47813A0
    internal StartFishing.Types.Response <.cctor>b__39_0() { }
}
// Namespace:
public sealed class StartFishing.Types.Response : TransactionAction<StartFishing.Types.Result>, IMessage<StartFishing.Types.Response>, IMessage, IEquatable<StartFishing.Types.Response>, IDeepCloneable<StartFishing.Types.Response>, IMessageFieldAccessor // TypeDefIndex: 1098
{
    // Fields
    private static readonly MessageParser<StartFishing.Types.Response> _parser; // 0x0
    private UnknownFieldSet _unknownFields; // 0x10
    public const int ResultFieldNumber = 1;
    private StartFishing.Types.Result result_; // 0x18
    public const int RequestFieldNumber = 2;
    private StartFishing.Types.Request request_; // 0x20
    // Properties
    [DebuggerNonUserCode]
    public static MessageParser<StartFishing.Types.Response> Parser { get; }
    [DebuggerNonUserCode]
    public static MessageDescriptor Descriptor { get; }
    [DebuggerNonUserCode]
    private MessageDescriptor pb::Google.Protobuf.IMessage.Descriptor { get; }
    [DebuggerNonUserCode]
    public StartFishing.Types.Result Result { get; set; }
    [DebuggerNonUserCode]
    public StartFishing.Types.Request Request { get; set; }
    protected override StartFishing.Types.Result MyResult { get; set; }
    // Methods
    // RVA: 0x477F040 Offset: 0x477F14D VA: 0x477F040
    public static MessageParser<StartFishing.Types.Response> get_Parser() { }
    // RVA: 0x477F0D0 Offset: 0x477F1DD VA: 0x477F0D0
    public static MessageDescriptor get_Descriptor() { }
    // RVA: 0x477F1E0 Offset: 0x477F2ED VA: 0x477F1E0 Slot: 16
    private MessageDescriptor pb::Google.Protobuf.IMessage.get_Descriptor() { }
    [DebuggerNonUserCode]
    // RVA: 0x477F250 Offset: 0x477F35D VA: 0x477F250
    public void .ctor() { }
    [DebuggerNonUserCode]
    // RVA: 0x477F290 Offset: 0x477F39D VA: 0x477F290
    public void .ctor(StartFishing.Types.Response other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477F3E0 Offset: 0x477F4ED VA: 0x477F3E0 Slot: 18
    public StartFishing.Types.Response Clone() { }
    // RVA: 0x477F450 Offset: 0x477F55D VA: 0x477F450
    public StartFishing.Types.Result get_Result() { }
    // RVA: 0x477F460 Offset: 0x477F56D VA: 0x477F460
    public void set_Result(StartFishing.Types.Result value) { }
    // RVA: 0x477F470 Offset: 0x477F57D VA: 0x477F470
    public StartFishing.Types.Request get_Request() { }
    // RVA: 0x477F480 Offset: 0x477F58D VA: 0x477F480
    public void set_Request(StartFishing.Types.Request value) { }
    [DebuggerNonUserCode]
    // RVA: 0x477F4D0 Offset: 0x477F5DD VA: 0x477F4D0 Slot: 0
    public override bool Equals(object other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477F5F0 Offset: 0x477F6FD VA: 0x477F5F0 Slot: 17
    public bool Equals(StartFishing.Types.Response other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477F6C0 Offset: 0x477F7CD VA: 0x477F6C0 Slot: 2
    public override int GetHashCode() { }
    [DebuggerNonUserCode]
    // RVA: 0x477F720 Offset: 0x477F82D VA: 0x477F720 Slot: 3
    public override string ToString() { }
    [DebuggerNonUserCode]
    // RVA: 0x477F7B0 Offset: 0x477F8BD VA: 0x477F7B0 Slot: 14
    public void WriteTo(CodedOutputStream output) { }
    [DebuggerNonUserCode]
    // RVA: 0x477F860 Offset: 0x477F96D VA: 0x477F860 Slot: 15
    public int CalculateSize() { }
    [DebuggerNonUserCode]
    // RVA: 0x477FA00 Offset: 0x477FB0D VA: 0x477FA00 Slot: 22
    public void MergeFrom(StartFishing.Types.Response other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477FB80 Offset: 0x477FC8D VA: 0x477FB80 Slot: 13
    public void MergeFrom(CodedInputStream input) { }
    [DebuggerNonUserCode]
    // RVA: 0x477FDE0 Offset: 0x477FEED VA: 0x477FDE0 Slot: 19
    public object GetFieldValue(int fieldNumber) { }
    [DebuggerNonUserCode]
    // RVA: 0x477FFD0 Offset: 0x47800DD VA: 0x477FFD0 Slot: 20
    public void SetFieldValue(int fieldNumber, object value) { }
    [DebuggerNonUserCode]
    // RVA: 0x4780100 Offset: 0x478020D VA: 0x4780100 Slot: 21
    public void ClearFieldValue(int fieldNumber) { }
    // RVA: 0x4780170 Offset: 0x478027D VA: 0x4780170 Slot: 10
    protected override StartFishing.Types.Result get_MyResult() { }
    // RVA: 0x4780180 Offset: 0x478028D VA: 0x4780180 Slot: 11
    protected override void set_MyResult(StartFishing.Types.Result value) { }
    // RVA: 0x4780190 Offset: 0x478029D VA: 0x4780190 Slot: 9
    protected override bool ApplyThis(in Player player, in World world, ITransactionContext transactionContext) { }
    // RVA: 0x4781080 Offset: 0x478118D VA: 0x4781080
    private static float SelectRandomFishMass(Random random, FishItemData chosenFish) { }
    // RVA: 0x4780DA0 Offset: 0x4780EAD VA: 0x4780DA0
    private static bool TryGetFishItemData(Item fishItem, out FishItemData fishData) { }
    // RVA: 0x47810D0 Offset: 0x47811DD VA: 0x47810D0
    private static void .cctor() { }
}
// Namespace:
[DebuggerNonUserCode]
public static class StartFishing.Types // TypeDefIndex: 1099
{}
// Namespace:
[CompilerGenerated]
[Serializable]
private sealed class StartFishing.<>c // TypeDefIndex: 1100
{
    // Fields
    public static readonly StartFishing.<>c <>9; // 0x0
    // Methods
    // RVA: 0x4781430 Offset: 0x478153D VA: 0x4781430
    private static void .cctor() { }
    // RVA: 0x47814D0 Offset: 0x47815DD VA: 0x47814D0
    public void .ctor() { }
    // RVA: 0x47814E0 Offset: 0x47815ED VA: 0x47814E0
    internal StartFishing <.cctor>b__24_0() { }
}
// Namespace: Meta
public sealed class StartFishing : IMessage<StartFishing>, IMessage, IEquatable<StartFishing>, IDeepCloneable<StartFishing>, IMessageFieldAccessor // TypeDefIndex: 1101
{
    // Fields
    private static readonly MessageParser<StartFishing> _parser; // 0x0
    private UnknownFieldSet _unknownFields; // 0x10
    // Properties
    [DebuggerNonUserCode]
    public static MessageParser<StartFishing> Parser { get; }
    [DebuggerNonUserCode]
    public static MessageDescriptor Descriptor { get; }
    [DebuggerNonUserCode]
    private MessageDescriptor pb::Google.Protobuf.IMessage.Descriptor { get; }
    // Methods
    // RVA: 0x477D370 Offset: 0x477D47D VA: 0x477D370
    public static MessageParser<StartFishing> get_Parser() { }
    // RVA: 0x477D400 Offset: 0x477D50D VA: 0x477D400
    public static MessageDescriptor get_Descriptor() { }
    // RVA: 0x477D560 Offset: 0x477D66D VA: 0x477D560 Slot: 7
    private MessageDescriptor pb::Google.Protobuf.IMessage.get_Descriptor() { }
    [DebuggerNonUserCode]
    // RVA: 0x477D5D0 Offset: 0x477D6DD VA: 0x477D5D0
    public void .ctor() { }
    [DebuggerNonUserCode]
    // RVA: 0x477D5E0 Offset: 0x477D6ED VA: 0x477D5E0
    public void .ctor(StartFishing other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477D660 Offset: 0x477D76D VA: 0x477D660 Slot: 9
    public StartFishing Clone() { }
    [DebuggerNonUserCode]
    // RVA: 0x477D720 Offset: 0x477D82D VA: 0x477D720 Slot: 0
    public override bool Equals(object other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477D800 Offset: 0x477D90D VA: 0x477D800 Slot: 8
    public bool Equals(StartFishing other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477D850 Offset: 0x477D95D VA: 0x477D850 Slot: 2
    public override int GetHashCode() { }
    [DebuggerNonUserCode]
    // RVA: 0x477D880 Offset: 0x477D98D VA: 0x477D880 Slot: 3
    public override string ToString() { }
    [DebuggerNonUserCode]
    // RVA: 0x477D910 Offset: 0x477DA1D VA: 0x477D910 Slot: 5
    public void WriteTo(CodedOutputStream output) { }
    [DebuggerNonUserCode]
    // RVA: 0x477D930 Offset: 0x477DA3D VA: 0x477D930 Slot: 6
    public int CalculateSize() { }
    [DebuggerNonUserCode]
    // RVA: 0x477D950 Offset: 0x477DA5D VA: 0x477D950 Slot: 13
    public void MergeFrom(StartFishing other) { }
    [DebuggerNonUserCode]
    // RVA: 0x477D9D0 Offset: 0x477DADD VA: 0x477D9D0 Slot: 4
    public void MergeFrom(CodedInputStream input) { }
    [DebuggerNonUserCode]
    // RVA: 0x477DA90 Offset: 0x477DB9D VA: 0x477DA90 Slot: 10
    public object GetFieldValue(int fieldNumber) { }
    [DebuggerNonUserCode]
    // RVA: 0x477DB00 Offset: 0x477DC0D VA: 0x477DB00 Slot: 11
    public void SetFieldValue(int fieldNumber, object value) { }
    [DebuggerNonUserCode]
    // RVA: 0x477DB10 Offset: 0x477DC1D VA: 0x477DB10 Slot: 12
    public void ClearFieldValue(int fieldNumber) { }
    // RVA: 0x477DB20 Offset: 0x477DC2D VA: 0x477DB20
    private static void .cctor() { }
}

I then observed the disassembly of its executing function, "ApplyThis", in IDA Pro.

Code:
.text:0000007104780190 ; bool Meta_StartFishing_Types_Response__ApplyThis(Meta_StartFishing_Types_Response_o *this, Meta_Player_o *player, Meta_World_o *world, Definitions_Util_ITransactionContext_o *transactionContext, const MethodInfo *method)
.text:0000007104780190 Meta.StartFishing.Types.Response$$ApplyThis
.text:0000007104780190
.text:0000007104780190 var_B0          = -0xB0
.text:0000007104780190 var_A8          = -0xA8
.text:0000007104780190 var_A0          = -0xA0
.text:0000007104780190 var_98          = -0x98
.text:0000007104780190 var_90          = -0x90
.text:0000007104780190 var_88          = -0x88
.text:0000007104780190 var_80          = -0x80
.text:0000007104780190 var_78          = -0x78
.text:0000007104780190 var_70          = -0x70
.text:0000007104780190 var_68          = -0x68
.text:0000007104780190 fishData        = -0x60
.text:0000007104780190 var_58          = -0x58
.text:0000007104780190 var_4C          = -0x4C
.text:0000007104780190 var_48          = -0x48
.text:0000007104780190 bodyOfWater     = -0x40
.text:0000007104780190 var_38          = -0x38
.text:0000007104780190 var_30          = -0x30
.text:0000007104780190 var_28          = -0x28
.text:0000007104780190 var_20          = -0x20
.text:0000007104780190 var_18          = -0x18
.text:0000007104780190 var_10          = -0x10
.text:0000007104780190 var_8           = -8
.text:0000007104780190 var_4           = -4
.text:0000007104780190 var_s0          =  0
.text:0000007104780190 var_s8          =  8
.text:0000007104780190 var_s10         =  0x10
.text:0000007104780190 var_s18         =  0x18
.text:0000007104780190 var_s20         =  0x20
.text:0000007104780190 var_s28         =  0x28
.text:0000007104780190 var_s30         =  0x30
.text:0000007104780190 var_s38         =  0x38
.text:0000007104780190
.text:0000007104780190                 SUB             SP, SP, #0xF0
.text:0000007104780194                 STP             X29, X30, [SP,#0xB0+var_20]
.text:0000007104780198                 STR             X27, [SP,#0xB0+var_10]
.text:000000710478019C                 STP             X26, X25, [SP,#0xB0+var_s0]
.text:00000071047801A0                 STP             X24, X23, [SP,#0xB0+var_s10]
.text:00000071047801A4                 STP             X22, X21, [SP,#0xB0+var_s20]
.text:00000071047801A8                 STP             X20, X19, [SP,#0xB0+var_s30]
.text:00000071047801AC                 ADD             X29, SP, #0x90
.text:00000071047801B0                 ADRP            X22, #byte_710A3F0462@PAGE
.text:00000071047801B4                 MOV             X19, X2
.text:00000071047801B8                 STUR            X3, [X29,#0x20+var_38]
.text:00000071047801BC                 LDRB            W8, [X22,#byte_710A3F0462@PAGEOFF]
.text:00000071047801C0                 MOV             X21, X1
.text:00000071047801C4                 MOV             X20, X0
.text:00000071047801C8                 STP             X1, X0, [X29,#0x20+var_30]
.text:00000071047801CC                 TBNZ            W8, #0, loc_71047802C8
.text:00000071047801D0                 ADRL            X0, Definitions.Items.ActivityDataLocationFilter_TypeInfo ; Definitions.Items.ActivityDataLocationFilter_TypeInfo
.text:00000071047801D8                 MOV             W1, #1
.text:00000071047801DC                 MOV             W23, #1
.text:00000071047801E0                 BL              sub_7100AA7760
.text:00000071047801E4                 ADRL            X0, Definitions.Util.ITransactionContext_TypeInfo ; Definitions.Util.ITransactionContext_TypeInfo
.text:00000071047801EC                 DMB             ISH
.text:00000071047801F0                 MOV             W1, #1
.text:00000071047801F4                 BL              sub_7100AA7760
.text:00000071047801F8                 ADRL            X0, Definitions.Items.Item_TypeInfo ; Definitions.Items.Item_TypeInfo
.text:0000007104780200                 DMB             ISH
.text:0000007104780204                 MOV             W1, #1
.text:0000007104780208                 BL              sub_7100AA7760
.text:000000710478020C                 ADRL            X0, Method$Google.Protobuf.Collections.MapField_uint__PendingFish_.TryGetValue__ ; Method$Google.Protobuf.Collections.MapField<uint, PendingFish>.TryGetValue()
.text:0000007104780214                 DMB             ISH
.text:0000007104780218                 MOV             W1, #1
.text:000000710478021C                 BL              sub_7100AA7760
.text:0000007104780220                 ADRL            X0, Method$System.Nullable_float_..ctor__ ; Method$System.Nullable<float>..ctor()
.text:0000007104780228                 DMB             ISH
.text:000000710478022C                 MOV             W1, #1
.text:0000007104780230                 BL              sub_7100AA7760
.text:0000007104780234                 ADRL            X0, Meta.PendingFish_TypeInfo ; Meta.PendingFish_TypeInfo
.text:000000710478023C                 DMB             ISH
.text:0000007104780240                 MOV             W1, #1
.text:0000007104780244                 BL              sub_7100AA7760
.text:0000007104780248                 ADRL            X0, Definitions.Util.ProtoExtensions_TypeInfo ; Definitions.Util.ProtoExtensions_TypeInfo
.text:0000007104780250                 DMB             ISH
.text:0000007104780254                 MOV             W1, #1
.text:0000007104780258                 BL              sub_7100AA7760
.text:000000710478025C                 ADRL            X0, System.Random_TypeInfo ; System.Random_TypeInfo
.text:0000007104780264                 DMB             ISH
.text:0000007104780268                 MOV             W1, #1
.text:000000710478026C                 BL              sub_7100AA7760
.text:0000007104780270                 ADRL            X0, Meta.StartFishing.Types.Response_TypeInfo ; Meta.StartFishing.Types.Response_TypeInfo
.text:0000007104780278                 DMB             ISH
.text:000000710478027C                 MOV             W1, #1
.text:0000007104780280                 BL              sub_7100AA7760
.text:0000007104780284                 ADRL            X0, Method$Meta.TransactionAction_StartFishing.Types.Result_.get_IsValid__ ; Method$Meta.TransactionAction<StartFishing.Types.Result>.get_IsValid()
.text:000000710478028C                 DMB             ISH
.text:0000007104780290                 MOV             W1, #1
.text:0000007104780294                 BL              sub_7100AA7760
.text:0000007104780298                 ADRL            X0, StringLiteral_13024 ; Fishing
.text:00000071047802A0                 DMB             ISH
.text:00000071047802A4                 MOV             W1, #1
.text:00000071047802A8                 BL              sub_7100AA7760
.text:00000071047802AC                 ADRL            X0, StringLiteral_5395 ; ApplyThis
.text:00000071047802B4                 DMB             ISH
.text:00000071047802B8                 MOV             W1, #1
.text:00000071047802BC                 BL              sub_7100AA7760
.text:00000071047802C0                 DMB             ISH
.text:00000071047802C4                 STRB            W23, [X22,#byte_710A3F0462@PAGEOFF]
.text:00000071047802C8
.text:00000071047802C8 loc_71047802C8                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+3C↑j
.text:00000071047802C8                 STR             WZR, [X20,#0x18]
.text:00000071047802CC                 LDR             X8, [X21]
.text:00000071047802D0                 STRB            WZR, [X29,#0x20+var_8]
.text:00000071047802D4                 STURB           WZR, [X29,#0x20+var_4C]
.text:00000071047802D8                 STP             XZR, XZR, [X29,#0x20+fishData]
.text:00000071047802DC                 STP             XZR, XZR, [X29,#0x20+var_48]
.text:00000071047802E0                 CBZ             X8, loc_7104780C60
.text:00000071047802E4                 LDR             X0, [X8,#0x28] ; this
.text:00000071047802E8                 CBZ             X0, loc_7104780C60
.text:00000071047802EC                 MOV             W1, #1  ; toolItemType
.text:00000071047802F0                 MOV             W21, #1
.text:00000071047802F4                 BL              Meta.ProfilePlayer$$FindTool_485412515440
.text:00000071047802F8                 CBZ             X0, loc_7104780400
.text:00000071047802FC                 LDR             X8, [X20,#0x20]
.text:0000007104780300                 CBZ             X8, loc_7104780C60
.text:0000007104780304                 LDR             X9, [X8,#0x20]
.text:0000007104780308                 CBZ             X9, loc_7104780C60
.text:000000710478030C                 LDR             W8, [X9,#0x20]
.text:0000007104780310                 CMP             W8, #1
.text:0000007104780314                 B.NE            loc_71047803C4
.text:0000007104780318                 LDR             X8, [X19]
.text:000000710478031C                 CBZ             X8, loc_7104780C60
.text:0000007104780320                 LDR             X8, [X8,#0x30]
.text:0000007104780324                 CBZ             X8, loc_7104780C60
.text:0000007104780328                 LDR             X0, [X9,#0x18]
.text:000000710478032C                 CBZ             X0, loc_7104780C60
.text:0000007104780330                 ADRP            X9, #(xmmword_710A40F368+8)@PAGE
.text:0000007104780334                 LDR             X1, [X9,#(xmmword_710A40F368+8)@PAGEOFF]
.text:0000007104780338                 LDR             X9, [X0]
.text:000000710478033C                 LDR             X9, [X9,#0x40]
.text:0000007104780340                 LDR             X10, [X1,#0x40]
.text:0000007104780344                 CMP             X9, X10
.text:0000007104780348                 B.NE            loc_7104780C64
.text:000000710478034C                 LDR             X8, [X8,#0x40]
.text:0000007104780350                 CBZ             X8, loc_7104780C60
.text:0000007104780354                 ADRP            X10, #Method$Google.Protobuf.Collections.MapField_uint__PendingFish_.TryGetValue__@PAGE ; Method$Google.Protobuf.Collections.MapField<uint, PendingFish>.TryGetValue()
.text:0000007104780358                 LDR             W9, [X0,#0x10]
.text:000000710478035C                 ADD             X1, SP, #0xB0+var_98 ; key
.text:0000007104780360                 LDR             X3, [X10,#Method$Google.Protobuf.Collections.MapField_uint__PendingFish_.TryGetValue__@PAGEOFF] ; value
.text:0000007104780364                 SUB             X2, X29, #-(0x20+var_48) ; key
.text:0000007104780368                 MOV             X0, X8  ; this
.text:000000710478036C                 STR             W9, [SP,#0xB0+var_98]
.text:0000007104780370                 BL              Google.Protobuf.Collections.MapField___Il2CppFullySharedGenericType____Il2CppFullySharedGenericType_$$TryGetValue
.text:0000007104780374                 TBZ             W0, #0, loc_7104780408
.text:0000007104780378                 LDUR            X8, [X29,#0x20+var_48]
.text:000000710478037C                 CBZ             X8, loc_71047803C4
.text:0000007104780380                 LDUR            X8, [X29,#0x20+var_30]
.text:0000007104780384                 LDR             X8, [X8]
.text:0000007104780388                 CBZ             X8, loc_7104780C60
.text:000000710478038C                 LDR             X0, [X8,#0x158]
.text:0000007104780390                 CBZ             X0, loc_71047803C4
.text:0000007104780394                 LDR             X8, [X0]
.text:0000007104780398                 LDP             X9, X1, [X8,#0x1A8]
.text:000000710478039C                 BLR             X9
.text:00000071047803A0                 TBZ             W0, #0, loc_71047803C4
.text:00000071047803A4                 LDUR            X8, [X29,#0x20+var_48]
.text:00000071047803A8                 CBZ             X8, loc_7104780C60
.text:00000071047803AC                 LDRB            W8, [X8,#0x34]
.text:00000071047803B0                 CBZ             W8, loc_71047803C4
.text:00000071047803B4                 LDUR            X20, [X29,#0x20+var_28]
.text:00000071047803B8                 MOV             W8, #6
.text:00000071047803BC                 STR             W8, [X20,#0x18]
.text:00000071047803C0                 B               loc_7104780C20
.text:00000071047803C4 ; ---------------------------------------------------------------------------
.text:00000071047803C4
.text:00000071047803C4 loc_71047803C4                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+184↑j
.text:00000071047803C4                                         ; Meta.StartFishing.Types.Response$$ApplyThis+1EC↑j ...
.text:00000071047803C4                 LDUR            X8, [X29,#0x20+var_28]
.text:00000071047803C8                 LDR             X8, [X8,#0x20]
.text:00000071047803CC                 CBZ             X8, loc_7104780C60
.text:00000071047803D0                 LDR             X21, [X8,#0x20]
.text:00000071047803D4                 CBZ             X21, loc_7104780C60
.text:00000071047803D8                 LDR             W8, [X21,#0x20]
.text:00000071047803DC                 CMP             W8, #2
.text:00000071047803E0                 B.NE            loc_7104780490
.text:00000071047803E4                 LDR             X8, [X19]
.text:00000071047803E8                 CBZ             X8, loc_7104780418
.text:00000071047803EC                 LDR             X20, [X8,#0x30]
.text:00000071047803F0                 ADRP            X22, #byte_710A3F2A53@PAGE
.text:00000071047803F4                 LDRB            W8, [X22,#byte_710A3F2A53@PAGEOFF]
.text:00000071047803F8                 TBZ             W8, #0, loc_7104780428
.text:00000071047803FC                 B               loc_7104780450
.text:0000007104780400 ; ---------------------------------------------------------------------------
.text:0000007104780400
.text:0000007104780400 loc_7104780400                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+168↑j
.text:0000007104780400                 STR             W21, [X20,#0x18]
.text:0000007104780404                 B               loc_7104780C20
.text:0000007104780408 ; ---------------------------------------------------------------------------
.text:0000007104780408
.text:0000007104780408 loc_7104780408                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+1E4↑j
.text:0000007104780408                 LDUR            X20, [X29,#0x20+var_28]
.text:000000710478040C                 MOV             W8, #2
.text:0000007104780410                 STR             W8, [X20,#0x18]
.text:0000007104780414                 B               loc_7104780C20
.text:0000007104780418 ; ---------------------------------------------------------------------------
.text:0000007104780418
.text:0000007104780418 loc_7104780418                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+258↑j
.text:0000007104780418                 MOV             X20, XZR
.text:000000710478041C                 ADRP            X22, #byte_710A3F2A53@PAGE
.text:0000007104780420                 LDRB            W8, [X22,#byte_710A3F2A53@PAGEOFF]
.text:0000007104780424                 TBNZ            W8, #0, loc_7104780450
.text:0000007104780428
.text:0000007104780428 loc_7104780428                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+268↑j
.text:0000007104780428                 ADRL            X0, Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:0000007104780430                 MOV             W1, #1
.text:0000007104780434                 MOV             W23, #1
.text:0000007104780438                 BL              sub_7100AA7760
.text:000000710478043C                 DMB             ISH
.text:0000007104780440                 STRB            W23, [X22,#byte_710A3F2A53@PAGEOFF]
.text:0000007104780444                 LDR             W8, [X21,#0x20]
.text:0000007104780448                 CMP             W8, #2
.text:000000710478044C                 B.NE            loc_7104780474
.text:0000007104780450
.text:0000007104780450 loc_7104780450                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+26C↑j
.text:0000007104780450                                         ; Meta.StartFishing.Types.Response$$ApplyThis+294↑j
.text:0000007104780450                 LDR             X1, [X21,#0x18]
.text:0000007104780454                 CBZ             X1, loc_710478046C
.text:0000007104780458                 ADRP            X8, #Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo@PAGE ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:000000710478045C                 LDR             X9, [X1]
.text:0000007104780460                 LDR             X8, [X8,#Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo@PAGEOFF] ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:0000007104780464                 CMP             X9, X8
.text:0000007104780468                 B.NE            loc_7104780C7C
.text:000000710478046C
.text:000000710478046C loc_710478046C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+2C4↑j
.text:000000710478046C                 CBNZ            X20, loc_710478047C
.text:0000007104780470                 B               loc_7104780C60
.text:0000007104780474 ; ---------------------------------------------------------------------------
.text:0000007104780474
.text:0000007104780474 loc_7104780474                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+2BC↑j
.text:0000007104780474                 MOV             X1, XZR ; bodyOfWaterData
.text:0000007104780478                 CBZ             X20, loc_7104780C60
.text:000000710478047C
.text:000000710478047C loc_710478047C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis:loc_710478046C↑j
.text:000000710478047C                 SUB             X2, X29, #-(0x20+bodyOfWater) ; bodyOfWater
.text:0000007104780480                 MOV             X0, X20 ; this
.text:0000007104780484                 MOV             X3, XZR ; method
.text:0000007104780488                 BL              Meta.ProfileWorld$$TryGetBodyOfWater
.text:000000710478048C                 TBZ             W0, #0, loc_71047806BC
.text:0000007104780490
.text:0000007104780490 loc_7104780490                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+250↑j
.text:0000007104780490                 LDUR            X8, [X29,#0x20+var_30]
.text:0000007104780494                 LDR             X20, [X8]
.text:0000007104780498                 CBZ             X20, loc_7104780C60
.text:000000710478049C                 MOV             X0, X20 ; this
.text:00000071047804A0                 MOV             W1, #1  ; manaSpendingActionType
.text:00000071047804A4                 BL              Meta.Profile$$GetManaCost
.text:00000071047804A8                 LDR             X8, [X20,#0x28]
.text:00000071047804AC                 CBZ             X8, loc_7104780C60
.text:00000071047804B0                 LDR             W8, [X8,#0x60]
.text:00000071047804B4                 CMP             W8, W0
.text:00000071047804B8                 B.GE            loc_71047804CC
.text:00000071047804BC                 LDUR            X20, [X29,#0x20+var_28]
.text:00000071047804C0                 MOV             W8, #5
.text:00000071047804C4                 STR             W8, [X20,#0x18]
.text:00000071047804C8                 B               loc_7104780C20
.text:00000071047804CC ; ---------------------------------------------------------------------------
.text:00000071047804CC
.text:00000071047804CC loc_71047804CC                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+328↑j
.text:00000071047804CC                 LDUR            X8, [X29,#0x20+var_28]
.text:00000071047804D0                 STRB            WZR, [X29,#0x20+var_8]
.text:00000071047804D4                 LDR             X8, [X8,#0x20]
.text:00000071047804D8                 CBZ             X8, loc_7104780C60
.text:00000071047804DC                 LDR             X20, [X8,#0x20]
.text:00000071047804E0                 CBZ             X20, loc_7104780C60
.text:00000071047804E4                 LDR             W8, [X20,#0x20]
.text:00000071047804E8                 CMP             W8, #2
.text:00000071047804EC                 B.NE            loc_71047808BC
.text:00000071047804F0                 ADRP            X22, #byte_710A3F2A53@PAGE
.text:00000071047804F4                 LDRB            W8, [X22,#byte_710A3F2A53@PAGEOFF]
.text:00000071047804F8                 TBNZ            W8, #0, loc_7104780524
.text:00000071047804FC                 ADRL            X0, Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:0000007104780504                 MOV             W1, #1
.text:0000007104780508                 MOV             W21, #1
.text:000000710478050C                 BL              sub_7100AA7760
.text:0000007104780510                 DMB             ISH
.text:0000007104780514                 STRB            W21, [X22,#byte_710A3F2A53@PAGEOFF]
.text:0000007104780518                 LDR             W8, [X20,#0x20]
.text:000000710478051C                 CMP             W8, #2
.text:0000007104780520                 B.NE            loc_7104780C60
.text:0000007104780524
.text:0000007104780524 loc_7104780524                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+368↑j
.text:0000007104780524                 LDR             X0, [X20,#0x18]
.text:0000007104780528                 CBZ             X0, loc_7104780C60
.text:000000710478052C                 ADRP            X23, #Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo@PAGE ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:0000007104780530                 LDR             X8, [X0]
.text:0000007104780534                 LDR             X1, [X23,#Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo@PAGEOFF] ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:0000007104780538                 CMP             X8, X1
.text:000000710478053C                 B.NE            loc_7104780C64
.text:0000007104780540                 LDR             X8, [X0,#0x18]
.text:0000007104780544                 CBZ             X8, loc_7104780C60
.text:0000007104780548                 LDR             W8, [X8,#0x20]
.text:000000710478054C                 CMP             W8, #2
.text:0000007104780550                 B.EQ            loc_71047806CC
.text:0000007104780554                 CMP             W8, #1
.text:0000007104780558                 B.NE            loc_71047808BC
.text:000000710478055C                 ADRP            X8, #Meta.PendingFish_TypeInfo@PAGE ; Meta.PendingFish_TypeInfo
.text:0000007104780560                 LDR             X0, [X8,#Meta.PendingFish_TypeInfo@PAGEOFF] ; Meta.PendingFish_TypeInfo
.text:0000007104780564                 BL              sub_7100A8D6B0
.text:0000007104780568                 ADRP            X21, #byte_710A3F2A99@PAGE
.text:000000710478056C                 MOV             X20, X0
.text:0000007104780570                 LDRB            W8, [X21,#byte_710A3F2A99@PAGEOFF]
.text:0000007104780574                 TBNZ            W8, #0, loc_7104780594
.text:0000007104780578                 ADRL            X0, StringLiteral_1
.text:0000007104780580                 MOV             W1, #1
.text:0000007104780584                 MOV             W24, #1
.text:0000007104780588                 BL              sub_7100AA7760
.text:000000710478058C                 DMB             ISH
.text:0000007104780590                 STRB            W24, [X21,#byte_710A3F2A99@PAGEOFF]
.text:0000007104780594
.text:0000007104780594 loc_7104780594                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+3E4↑j
.text:0000007104780594                 ADRP            X9, #StringLiteral_1@PAGE
.text:0000007104780598                 ADRP            X25, #dword_710A622EE0@PAGE
.text:000000710478059C                 LDR             X9, [X9,#StringLiteral_1@PAGEOFF]
.text:00000071047805A0                 MOV             X8, X20
.text:00000071047805A4                 ADRL            X24, qword_710A4109F8
.text:00000071047805AC                 STR             X9, [X8,#0x38]!
.text:00000071047805B0                 LDR             W9, [X25,#dword_710A622EE0@PAGEOFF]
.text:00000071047805B4                 CBZ             W9, loc_71047805E4
.text:00000071047805B8                 LSR             X9, X8, #0xC
.text:00000071047805BC                 UBFX            X8, X8, #0x12, #0xF
.text:00000071047805C0                 ADD             X8, X24, X8,LSL#3
.text:00000071047805C4                 MOV             W10, #1
.text:00000071047805C8                 LSL             X9, X10, X9
.text:00000071047805CC                 ADD             X8, X8, #0x46,LSL#12 ; 'F'
.text:00000071047805D0                 ADD             X8, X8, #0x4D8
.text:00000071047805D4
.text:00000071047805D4 loc_71047805D4                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+450↓j
.text:00000071047805D4                 LDXR            X10, [X8]
.text:00000071047805D8                 ORR             X10, X10, X9
.text:00000071047805DC                 STXR            W11, X10, [X8]
.text:00000071047805E0                 CBNZ            W11, loc_71047805D4
.text:00000071047805E4
.text:00000071047805E4 loc_71047805E4                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+424↑j
.text:00000071047805E4                 ADRP            X8, #Definitions.Items.ActivityDataLocationFilter_TypeInfo@PAGE ; Definitions.Items.ActivityDataLocationFilter_TypeInfo
.text:00000071047805E8                 STR             WZR, [X20,#0x18]
.text:00000071047805EC                 LDR             X0, [X8,#Definitions.Items.ActivityDataLocationFilter_TypeInfo@PAGEOFF] ; Definitions.Items.ActivityDataLocationFilter_TypeInfo
.text:00000071047805F0                 BL              sub_7100A8D6B0
.text:00000071047805F4                 LDUR            X8, [X29,#0x20+var_28]
.text:00000071047805F8                 LDR             X8, [X8,#0x20]
.text:00000071047805FC                 CBZ             X8, loc_7104780C60
.text:0000007104780600                 LDR             X26, [X8,#0x20]
.text:0000007104780604                 CBZ             X26, loc_7104780C60
.text:0000007104780608                 LDRB            W8, [X22,#byte_710A3F2A53@PAGEOFF]
.text:000000710478060C                 MOV             X21, X0
.text:0000007104780610                 TBNZ            W8, #0, loc_7104780630
.text:0000007104780614                 ADRL            X0, Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:000000710478061C                 MOV             W1, #1
.text:0000007104780620                 MOV             W27, #1
.text:0000007104780624                 BL              sub_7100AA7760
.text:0000007104780628                 DMB             ISH
.text:000000710478062C                 STRB            W27, [X22,#byte_710A3F2A53@PAGEOFF]
.text:0000007104780630
.text:0000007104780630 loc_7104780630                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+480↑j
.text:0000007104780630                 LDR             W8, [X26,#0x20]
.text:0000007104780634                 CMP             W8, #2
.text:0000007104780638                 B.NE            loc_7104780C60
.text:000000710478063C                 LDR             X0, [X26,#0x18]
.text:0000007104780640                 CBZ             X0, loc_7104780C60
.text:0000007104780644                 LDR             X1, [X23,#Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo@PAGEOFF] ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:0000007104780648                 LDR             X8, [X0]
.text:000000710478064C                 CMP             X8, X1
.text:0000007104780650                 B.NE            loc_7104780C64
.text:0000007104780654                 LDR             X22, [X0,#0x18]
.text:0000007104780658                 CBZ             X22, loc_7104780C60
.text:000000710478065C                 ADRP            X23, #byte_710A3EDA87@PAGE
.text:0000007104780660                 LDRB            W8, [X23,#byte_710A3EDA87@PAGEOFF]
.text:0000007104780664                 TBNZ            W8, #0, loc_7104780684
.text:0000007104780668                 ADRL            X0, Definitions.Scene.VillageAreaType_TypeInfo ; Definitions.Scene.VillageAreaType_TypeInfo
.text:0000007104780670                 MOV             W1, #1
.text:0000007104780674                 MOV             W26, #1
.text:0000007104780678                 BL              sub_7100AA7760
.text:000000710478067C                 DMB             ISH
.text:0000007104780680                 STRB            W26, [X23,#byte_710A3EDA87@PAGEOFF]
.text:0000007104780684
.text:0000007104780684 loc_7104780684                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+4D4↑j
.text:0000007104780684                 LDR             W8, [X22,#0x20]
.text:0000007104780688                 CMP             W8, #1
.text:000000710478068C                 B.NE            loc_7104780804
.text:0000007104780690                 LDR             X0, [X22,#0x18]
.text:0000007104780694                 CBZ             X0, loc_7104780C60
.text:0000007104780698                 ADRP            X8, #Definitions.Scene.VillageAreaType_TypeInfo@PAGE ; Definitions.Scene.VillageAreaType_TypeInfo
.text:000000710478069C                 LDR             X1, [X8,#Definitions.Scene.VillageAreaType_TypeInfo@PAGEOFF] ; Definitions.Scene.VillageAreaType_TypeInfo
.text:00000071047806A0                 LDR             X8, [X0]
.text:00000071047806A4                 LDR             X8, [X8,#0x40]
.text:00000071047806A8                 LDR             X9, [X1,#0x40]
.text:00000071047806AC                 CMP             X8, X9
.text:00000071047806B0                 B.NE            loc_7104780C64
.text:00000071047806B4                 LDR             W1, [X0,#0x10]
.text:00000071047806B8                 B               loc_7104780808
.text:00000071047806BC ; ---------------------------------------------------------------------------
.text:00000071047806BC
.text:00000071047806BC loc_71047806BC                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+2FC↑j
.text:00000071047806BC                 LDUR            X20, [X29,#0x20+var_28]
.text:00000071047806C0                 MOV             W8, #3
.text:00000071047806C4                 STR             W8, [X20,#0x18]
.text:00000071047806C8                 B               loc_7104780C20
.text:00000071047806CC ; ---------------------------------------------------------------------------
.text:00000071047806CC
.text:00000071047806CC loc_71047806CC                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+3C0↑j
.text:00000071047806CC                 ADRP            X8, #Meta.PendingFish_TypeInfo@PAGE ; Meta.PendingFish_TypeInfo
.text:00000071047806D0                 LDR             X0, [X8,#Meta.PendingFish_TypeInfo@PAGEOFF] ; Meta.PendingFish_TypeInfo
.text:00000071047806D4                 BL              sub_7100A8D6B0
.text:00000071047806D8                 ADRP            X21, #byte_710A3F2A99@PAGE
.text:00000071047806DC                 MOV             X20, X0
.text:00000071047806E0                 LDRB            W8, [X21,#byte_710A3F2A99@PAGEOFF]
.text:00000071047806E4                 TBNZ            W8, #0, loc_7104780704
.text:00000071047806E8                 ADRL            X0, StringLiteral_1
.text:00000071047806F0                 MOV             W1, #1
.text:00000071047806F4                 MOV             W24, #1
.text:00000071047806F8                 BL              sub_7100AA7760
.text:00000071047806FC                 DMB             ISH
.text:0000007104780700                 STRB            W24, [X21,#byte_710A3F2A99@PAGEOFF]
.text:0000007104780704
.text:0000007104780704 loc_7104780704                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+554↑j
.text:0000007104780704                 ADRP            X9, #StringLiteral_1@PAGE
.text:0000007104780708                 MOV             X8, X20
.text:000000710478070C                 LDR             X9, [X9,#StringLiteral_1@PAGEOFF]
.text:0000007104780710                 ADRP            X24, #dword_710A622EE0@PAGE
.text:0000007104780714                 STR             X9, [X8,#0x38]!
.text:0000007104780718                 LDR             W9, [X24,#dword_710A622EE0@PAGEOFF]
.text:000000710478071C                 CBZ             W9, loc_7104780754
.text:0000007104780720                 LSR             X9, X8, #0xC
.text:0000007104780724                 ADRL            X10, qword_710A4109F8
.text:000000710478072C                 UBFX            X8, X8, #0x12, #0xF
.text:0000007104780730                 ADD             X8, X10, X8,LSL#3
.text:0000007104780734                 MOV             W10, #1
.text:0000007104780738                 LSL             X9, X10, X9
.text:000000710478073C                 ADD             X8, X8, #0x46,LSL#12 ; 'F'
.text:0000007104780740                 ADD             X8, X8, #0x4D8
.text:0000007104780744
.text:0000007104780744 loc_7104780744                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+5C0↓j
.text:0000007104780744                 LDXR            X10, [X8]
.text:0000007104780748                 ORR             X10, X10, X9
.text:000000710478074C                 STXR            W11, X10, [X8]
.text:0000007104780750                 CBNZ            W11, loc_7104780744
.text:0000007104780754
.text:0000007104780754 loc_7104780754                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+58C↑j
.text:0000007104780754                 ADRP            X8, #Definitions.Items.ActivityDataLocationFilter_TypeInfo@PAGE ; Definitions.Items.ActivityDataLocationFilter_TypeInfo
.text:0000007104780758                 STR             WZR, [X20,#0x18]
.text:000000710478075C                 LDR             X0, [X8,#Definitions.Items.ActivityDataLocationFilter_TypeInfo@PAGEOFF] ; Definitions.Items.ActivityDataLocationFilter_TypeInfo
.text:0000007104780760                 BL              sub_7100A8D6B0
.text:0000007104780764                 LDUR            X8, [X29,#0x20+var_28]
.text:0000007104780768                 LDR             X8, [X8,#0x20]
.text:000000710478076C                 CBZ             X8, loc_7104780C60
.text:0000007104780770                 LDR             X25, [X8,#0x20]
.text:0000007104780774                 CBZ             X25, loc_7104780C60
.text:0000007104780778                 LDRB            W8, [X22,#byte_710A3F2A53@PAGEOFF]
.text:000000710478077C                 MOV             X21, X0
.text:0000007104780780                 TBNZ            W8, #0, loc_71047807A0
.text:0000007104780784                 ADRL            X0, Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:000000710478078C                 MOV             W1, #1
.text:0000007104780790                 MOV             W26, #1
.text:0000007104780794                 BL              sub_7100AA7760
.text:0000007104780798                 DMB             ISH
.text:000000710478079C                 STRB            W26, [X22,#byte_710A3F2A53@PAGEOFF]
.text:00000071047807A0
.text:00000071047807A0 loc_71047807A0                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+5F0↑j
.text:00000071047807A0                 LDR             W8, [X25,#0x20]
.text:00000071047807A4                 CMP             W8, #2
.text:00000071047807A8                 B.NE            loc_7104780C60
.text:00000071047807AC                 LDR             X0, [X25,#0x18]
.text:00000071047807B0                 CBZ             X0, loc_7104780C60
.text:00000071047807B4                 LDR             X1, [X23,#Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo@PAGEOFF] ; Meta.PendingFishSelector.Types.BodyOfWaterData_TypeInfo
.text:00000071047807B8                 LDR             X8, [X0]
.text:00000071047807BC                 CMP             X8, X1
.text:00000071047807C0                 B.NE            loc_7104780C64
.text:00000071047807C4                 LDR             X8, [X0,#0x18]
.text:00000071047807C8                 CBZ             X8, loc_7104780C60
.text:00000071047807CC                 LDR             W9, [X8,#0x20]
.text:00000071047807D0                 CMP             W9, #2
.text:00000071047807D4                 B.NE            loc_7104780858
.text:00000071047807D8                 LDR             X0, [X8,#0x18]
.text:00000071047807DC                 CBZ             X0, loc_7104780C60
.text:00000071047807E0                 ADRP            X8, #xmmword_710A40F368@PAGE
.text:00000071047807E4                 LDR             X1, [X8,#xmmword_710A40F368@PAGEOFF]
.text:00000071047807E8                 LDR             X8, [X0]
.text:00000071047807EC                 LDR             X8, [X8,#0x40]
.text:00000071047807F0                 LDR             X9, [X1,#0x40]
.text:00000071047807F4                 CMP             X8, X9
.text:00000071047807F8                 B.NE            loc_7104780C64
.text:00000071047807FC                 LDR             W1, [X0,#0x10]
.text:0000007104780800                 B               loc_710478085C
.text:0000007104780804 ; ---------------------------------------------------------------------------
.text:0000007104780804
.text:0000007104780804 loc_7104780804                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+4FC↑j
.text:0000007104780804                 MOV             W1, WZR ; value
.text:0000007104780808
.text:0000007104780808 loc_7104780808                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+528↑j
.text:0000007104780808                 CBZ             X21, loc_7104780C60
.text:000000710478080C                 MOV             X0, X21 ; this
.text:0000007104780810                 MOV             X2, XZR ; method
.text:0000007104780814                 BL              Definitions.Items.ActivityDataLocationFilter$$set_VillageArea
.text:0000007104780818                 LDR             W9, [X25,#dword_710A622EE0@PAGEOFF]
.text:000000710478081C                 MOV             X8, X20
.text:0000007104780820                 STR             X21, [X8,#0x20]!
.text:0000007104780824                 CBZ             W9, loc_71047808B0
.text:0000007104780828                 LSR             X9, X8, #0xC
.text:000000710478082C                 UBFX            X8, X8, #0x12, #0xF
.text:0000007104780830                 ADD             X8, X24, X8,LSL#3
.text:0000007104780834                 MOV             W10, #1
.text:0000007104780838                 LSL             X9, X10, X9
.text:000000710478083C                 ADD             X8, X8, #0x46,LSL#12 ; 'F'
.text:0000007104780840                 ADD             X8, X8, #0x4D8
.text:0000007104780844
.text:0000007104780844 loc_7104780844                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+6C0↓j
.text:0000007104780844                 LDXR            X10, [X8]
.text:0000007104780848                 ORR             X10, X10, X9
.text:000000710478084C                 STXR            W11, X10, [X8]
.text:0000007104780850                 CBNZ            W11, loc_7104780844
.text:0000007104780854                 B               loc_71047808B0
.text:0000007104780858 ; ---------------------------------------------------------------------------
.text:0000007104780858
.text:0000007104780858 loc_7104780858                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+644↑j
.text:0000007104780858                 MOV             W1, WZR ; value
.text:000000710478085C
.text:000000710478085C loc_710478085C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+670↑j
.text:000000710478085C                 CBZ             X21, loc_7104780C60
.text:0000007104780860                 MOV             X0, X21 ; this
.text:0000007104780864                 MOV             X2, XZR ; method
.text:0000007104780868                 BL              Definitions.Items.ActivityDataLocationFilter$$set_Scene
.text:000000710478086C                 LDR             W9, [X24,#dword_710A622EE0@PAGEOFF]
.text:0000007104780870                 MOV             X8, X20
.text:0000007104780874                 STR             X21, [X8,#0x20]!
.text:0000007104780878                 CBZ             W9, loc_71047808B0
.text:000000710478087C                 LSR             X9, X8, #0xC
.text:0000007104780880                 ADRL            X10, qword_710A4109F8
.text:0000007104780888                 UBFX            X8, X8, #0x12, #0xF
.text:000000710478088C                 ADD             X8, X10, X8,LSL#3
.text:0000007104780890                 MOV             W10, #1
.text:0000007104780894                 LSL             X9, X10, X9
.text:0000007104780898                 ADD             X8, X8, #0x46,LSL#12 ; 'F'
.text:000000710478089C                 ADD             X8, X8, #0x4D8
.text:00000071047808A0
.text:00000071047808A0 loc_71047808A0                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+71C↓j
.text:00000071047808A0                 LDXR            X10, [X8]
.text:00000071047808A4                 ORR             X10, X10, X9
.text:00000071047808A8                 STXR            W11, X10, [X8]
.text:00000071047808AC                 CBNZ            W11, loc_71047808A0
.text:00000071047808B0
.text:00000071047808B0 loc_71047808B0                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+694↑j
.text:00000071047808B0                                         ; Meta.StartFishing.Types.Response$$ApplyThis+6C4↑j ...
.text:00000071047808B0                 MOV             W8, #1
.text:00000071047808B4                 STUR            X20, [X29,#0x20+var_48]
.text:00000071047808B8                 STRB            W8, [X29,#0x20+var_8]
.text:00000071047808BC
.text:00000071047808BC loc_71047808BC                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+35C↑j
.text:00000071047808BC                                         ; Meta.StartFishing.Types.Response$$ApplyThis+3C8↑j
.text:00000071047808BC                 LDUR            X8, [X29,#0x20+var_30]
.text:00000071047808C0                 LDR             X8, [X8]
.text:00000071047808C4                 CBZ             X8, loc_7104780C60
.text:00000071047808C8                 LDR             X0, [X8,#0x28] ; this
.text:00000071047808CC                 CBZ             X0, loc_7104780C60
.text:00000071047808D0                 ADRP            X8, #StringLiteral_13024@PAGE ; Fishing
.text:00000071047808D4                 MOV             W2, #1  ; useRPCRandom
.text:00000071047808D8                 LDR             X1, [X8,#StringLiteral_13024@PAGEOFF] ; key
.text:00000071047808DC                 ADRP            X8, #StringLiteral_5395@PAGE ; ApplyThis
.text:00000071047808E0                 MOV             X4, XZR ; method
.text:00000071047808E4                 LDR             X3, [X8,#StringLiteral_5395@PAGEOFF] ; method
.text:00000071047808E8                 BL              Meta.ProfilePlayer$$GetRandomSeed
.text:00000071047808EC                 ADRP            X8, #System.Random_TypeInfo@PAGE ; System.Random_TypeInfo
.text:00000071047808F0                 MOV             W21, W0
.text:00000071047808F4                 LDR             X0, [X8,#System.Random_TypeInfo@PAGEOFF] ; System.Random_TypeInfo
.text:00000071047808F8                 BL              sub_7100A8D6B0
.text:00000071047808FC                 MOV             W1, W21 ; Seed
.text:0000007104780900                 MOV             X2, XZR ; method
.text:0000007104780904                 MOV             X20, X0
.text:0000007104780908                 BL              System.Random$$.ctor_485424775296
.text:000000710478090C                 SUB             X8, X29, #-(0x20+var_28)
.text:0000007104780910                 LDUR            X11, [X29,#0x20+var_30]
.text:0000007104780914                 SUB             X9, X29, #-(0x20+bodyOfWater)
.text:0000007104780918                 STP             XZR, X8, [SP,#0xB0+var_98]
.text:000000710478091C                 ADD             X8, X29, #0x20+var_8
.text:0000007104780920                 STP             X8, X9, [SP,#0xB0+var_88]
.text:0000007104780924                 SUB             X8, X29, #-(0x20+var_48)
.text:0000007104780928                 SUB             X9, X29, #-(0x20+var_38)
.text:000000710478092C                 SUB             X10, X29, #-(0x20+var_30)
.text:0000007104780930                 STR             X10, [SP,#0xB0+var_68]
.text:0000007104780934                 STP             X8, X9, [SP,#0xB0+var_78]
.text:0000007104780938                 LDR             X8, [X11]
.text:000000710478093C                 CBZ             X8, loc_7104780C68
.text:0000007104780940                 LDR             X0, [X8,#0x28] ; this
.text:0000007104780944                 CBZ             X0, loc_7104780C68
.text:0000007104780948                 MOV             W1, #0x1C ; buffType
.text:000000710478094C                 MOV             X2, XZR ; method
.text:0000007104780950                 BL              Meta.ProfilePlayer$$GetBuff
.text:0000007104780954                 LDUR            X22, [X29,#0x20+var_48]
.text:0000007104780958                 CBZ             X22, loc_7104780C6C
.text:000000710478095C                 ADRP            X23, #byte_710A3F2AA7@PAGE
.text:0000007104780960                 MOV             W21, W0
.text:0000007104780964                 LDRB            W8, [X23,#byte_710A3F2AA7@PAGEOFF]
.text:0000007104780968                 TBNZ            W8, #0, loc_7104780988
.text:000000710478096C                 ADRL            X0, Definitions.Items.Item_TypeInfo ; Definitions.Items.Item_TypeInfo
.text:0000007104780974                 MOV             W1, #1
.text:0000007104780978                 MOV             W24, #1
.text:000000710478097C                 BL              sub_7100AA7760
.text:0000007104780980                 DMB             ISH
.text:0000007104780984                 STRB            W24, [X23,#byte_710A3F2AA7@PAGEOFF]
.text:0000007104780988
.text:0000007104780988 loc_7104780988                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+7D8↑j
.text:0000007104780988                 LDR             W23, [X22,#0x40]
.text:000000710478098C                 ADRP            X22, #Definitions.Items.Item_TypeInfo@PAGE ; Definitions.Items.Item_TypeInfo
.text:0000007104780990                 LDR             X0, [X22,#Definitions.Items.Item_TypeInfo@PAGEOFF] ; Definitions.Items.Item_TypeInfo
.text:0000007104780994                 LDR             W8, [X0,#0xE4]
.text:0000007104780998                 CBNZ            W8, loc_71047809B4
.text:000000710478099C                 BL              sub_7100ABFF30
.text:00000071047809A0                 LDR             X0, [X22,#Definitions.Items.Item_TypeInfo@PAGEOFF] ; Definitions.Items.Item_TypeInfo
.text:00000071047809A4                 LDR             W8, [X0,#0xE4]
.text:00000071047809A8                 CBNZ            W8, loc_71047809B4
.text:00000071047809AC                 BL              sub_7100ABFF30
.text:00000071047809B0                 LDR             X0, [X22,#Definitions.Items.Item_TypeInfo@PAGEOFF] ; Definitions.Items.Item_TypeInfo
.text:00000071047809B4
.text:00000071047809B4 loc_71047809B4                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+808↑j
.text:00000071047809B4                                         ; Meta.StartFishing.Types.Response$$ApplyThis+818↑j
.text:00000071047809B4                 ADRP            X25, #byte_710A3EEF6E@PAGE
.text:00000071047809B8                 LDR             X24, [X0,#0xB8]
.text:00000071047809BC                 LDRB            W8, [X25,#byte_710A3EEF6E@PAGEOFF]
.text:00000071047809C0                 TBNZ            W8, #0, loc_71047809E4
.text:00000071047809C4                 ADRL            X0, Definitions.Items.Item_TypeInfo ; Definitions.Items.Item_TypeInfo
.text:00000071047809CC                 MOV             W1, #1
.text:00000071047809D0                 MOV             W26, #1
.text:00000071047809D4                 BL              sub_7100AA7760
.text:00000071047809D8                 DMB             ISH
.text:00000071047809DC                 STRB            W26, [X25,#byte_710A3EEF6E@PAGEOFF]
.text:00000071047809E0                 LDR             X0, [X22,#Definitions.Items.Item_TypeInfo@PAGEOFF] ; Definitions.Items.Item_TypeInfo
.text:00000071047809E4
.text:00000071047809E4 loc_71047809E4                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+830↑j
.text:00000071047809E4                 LDR             W8, [X0,#0xE4]
.text:00000071047809E8                 CBNZ            W8, loc_71047809F0
.text:00000071047809EC                 BL              sub_7100ABFF30
.text:00000071047809F0
.text:00000071047809F0 loc_71047809F0                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+858↑j
.text:00000071047809F0                 LDR             W8, [X24]
.text:00000071047809F4                 CMP             W23, W8
.text:00000071047809F8                 B.EQ            loc_7104780A20
.text:00000071047809FC                 LDUR            X8, [X29,#0x20+var_48]
.text:0000007104780A00                 CBZ             X8, loc_7104780C88
.text:0000007104780A04                 LDRB            W8, [X8,#0x44]
.text:0000007104780A08                 CMP             W21, #0
.text:0000007104780A0C                 CSET            W9, GT
.text:0000007104780A10                 CMP             W8, #0
.text:0000007104780A14                 CSET            W8, NE
.text:0000007104780A18                 EOR             W8, W9, W8
.text:0000007104780A1C                 TBZ             W8, #0, loc_7104780C00
.text:0000007104780A20
.text:0000007104780A20 loc_7104780A20                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+868↑j
.text:0000007104780A20                 CMP             W21, #0
.text:0000007104780A24                 B.LE            loc_7104780A60
.text:0000007104780A28                 LDUR            X2, [X29,#0x20+var_48]
.text:0000007104780A2C                 CBZ             X2, loc_7104780C8C
.text:0000007104780A30                 LDR             W8, [X2,#0x18]
.text:0000007104780A34                 CMP             W8, #1
.text:0000007104780A38                 CSET            W8, EQ
.text:0000007104780A3C                 STURB           W8, [X29,#0x20+var_4C]
.text:0000007104780A40                 SUB             X8, X29, #-(0x20+var_4C)
.text:0000007104780A44                 STP             XZR, X8, [SP,#0xB0+var_B0]
.text:0000007104780A48                 SUB             X8, X29, #-(0x20+var_48)
.text:0000007104780A4C                 STR             X8, [SP,#0xB0+var_A0]
.text:0000007104780A50                 B.NE            loc_7104780A78
.text:0000007104780A54                 MOV             W8, #3
.text:0000007104780A58                 STR             W8, [X2,#0x18]
.text:0000007104780A5C                 B               loc_7104780A78
.text:0000007104780A60 ; ---------------------------------------------------------------------------
.text:0000007104780A60
.text:0000007104780A60 loc_7104780A60                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+894↑j
.text:0000007104780A60                 LDUR            X2, [X29,#0x20+var_48] ; pendingFish
.text:0000007104780A64                 SUB             X8, X29, #-(0x20+var_4C)
.text:0000007104780A68                 STURB           WZR, [X29,#0x20+var_4C]
.text:0000007104780A6C                 STP             XZR, X8, [SP,#0xB0+var_B0]
.text:0000007104780A70                 SUB             X8, X29, #-(0x20+var_48)
.text:0000007104780A74                 STR             X8, [SP,#0xB0+var_A0]
.text:0000007104780A78
.text:0000007104780A78 loc_7104780A78                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+8C0↑j
.text:0000007104780A78                                         ; Meta.StartFishing.Types.Response$$ApplyThis+8CC↑j
.text:0000007104780A78                 LDR             X0, [X19] ; profile
.text:0000007104780A7C                 LDUR            X1, [X29,#0x20+var_38] ; context
.text:0000007104780A80                 MOV             X3, XZR ; method
.text:0000007104780A84                 BL              Meta.FishingRewardSelector$$Create
.text:0000007104780A88                 CBZ             X0, loc_7104780C70
.text:0000007104780A8C                 LDR             X8, [X0]
.text:0000007104780A90                 LDP             X9, X3, [X8,#0x178]
.text:0000007104780A94                 SUB             X2, X29, #-(0x20+var_58)
.text:0000007104780A98                 MOV             X1, X20
.text:0000007104780A9C                 BLR             X9
.text:0000007104780AA0                 MOV             X19, XZR
.text:0000007104780AA4                 MOV             W8, #0xF
.text:0000007104780AA8                 LDR             X9, [SP,#0xB0+var_A8]
.text:0000007104780AAC                 LDRB            W9, [X9]
.text:0000007104780AB0                 CBZ             W9, loc_7104780AC4
.text:0000007104780AB4
.text:0000007104780AB4 loc_7104780AB4                          ; CODE XREF: sub_7104780CAC+78↓j
.text:0000007104780AB4                 LDUR            X9, [X29,#0x20+var_48]
.text:0000007104780AB8                 CBZ             X9, loc_7104780C90
.text:0000007104780ABC                 MOV             W10, #1
.text:0000007104780AC0                 STR             W10, [X9,#0x18]
.text:0000007104780AC4
.text:0000007104780AC4 loc_7104780AC4                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+920↑j
.text:0000007104780AC4                                         ; sub_7104780CAC+7C↓j
.text:0000007104780AC4                 CBNZ            X19, loc_7104780C74
.text:0000007104780AC8                 CMP             W8, #0xF
.text:0000007104780ACC                 B.EQ            loc_7104780AD4
.text:0000007104780AD0                 CBNZ            W8, loc_7104780C54
.text:0000007104780AD4
.text:0000007104780AD4 loc_7104780AD4                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+93C↑j
.text:0000007104780AD4                 LDUR            X8, [X29,#0x20+var_28]
.text:0000007104780AD8                 TBZ             W0, #0, loc_7104780C0C
.text:0000007104780ADC                 LDUR            X21, [X29,#0x20+var_58]
.text:0000007104780AE0                 STR             WZR, [X8,#0x18]
.text:0000007104780AE4                 CBZ             X21, loc_7104780C94
.text:0000007104780AE8                 ADRP            X23, #byte_710A3EDA6E@PAGE
.text:0000007104780AEC                 LDUR            X19, [X29,#0x20+var_48]
.text:0000007104780AF0                 LDRB            W8, [X23,#byte_710A3EDA6E@PAGEOFF]
.text:0000007104780AF4                 TBNZ            W8, #0, loc_7104780B14
.text:0000007104780AF8                 ADRL            X0, Definitions.Items.Item_TypeInfo ; Definitions.Items.Item_TypeInfo
.text:0000007104780B00                 MOV             W1, #1
.text:0000007104780B04                 MOV             W24, #1
.text:0000007104780B08                 BL              sub_7100AA7760
.text:0000007104780B0C                 DMB             ISH
.text:0000007104780B10                 STRB            W24, [X23,#byte_710A3EDA6E@PAGEOFF]
.text:0000007104780B14
.text:0000007104780B14 loc_7104780B14                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+964↑j
.text:0000007104780B14                 LDR             X0, [X22,#Definitions.Items.Item_TypeInfo@PAGEOFF] ; Definitions.Items.Item_TypeInfo
.text:0000007104780B18                 LDR             W21, [X21,#0x18]
.text:0000007104780B1C                 LDR             W8, [X0,#0xE4]
.text:0000007104780B20                 CBNZ            W8, loc_7104780B28
.text:0000007104780B24                 BL              sub_7100ABFF30
.text:0000007104780B28
.text:0000007104780B28 loc_7104780B28                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+990↑j
.text:0000007104780B28                 CBZ             X19, loc_7104780C98
.text:0000007104780B2C                 LDUR            X8, [X29,#0x20+var_48]
.text:0000007104780B30                 STR             W21, [X19,#0x40]
.text:0000007104780B34                 CBZ             X8, loc_7104780C9C
.text:0000007104780B38                 LDURB           W9, [X29,#0x20+var_4C]
.text:0000007104780B3C                 STRB            W9, [X8,#0x44]
.text:0000007104780B40                 LDUR            X8, [X29,#0x20+var_58]
.text:0000007104780B44                 CBZ             X8, loc_7104780CA0
.text:0000007104780B48                 LDR             X19, [X8,#0x40]
.text:0000007104780B4C                 CBZ             X19, loc_7104780CA4
.text:0000007104780B50                 ADRP            X21, #byte_710A3EEEB8@PAGE
.text:0000007104780B54                 LDRB            W8, [X21,#byte_710A3EEEB8@PAGEOFF]
.text:0000007104780B58                 TBNZ            W8, #0, loc_7104780B78
.text:0000007104780B5C                 ADRL            X0, Definitions.Items.Item_TypeInfo ; Definitions.Items.Item_TypeInfo
.text:0000007104780B64                 MOV             W1, #1
.text:0000007104780B68                 MOV             W23, #1
.text:0000007104780B6C                 BL              sub_7100AA7760
.text:0000007104780B70                 DMB             ISH
.text:0000007104780B74                 STRB            W23, [X21,#byte_710A3EEEB8@PAGEOFF]
.text:0000007104780B78
.text:0000007104780B78 loc_7104780B78                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+9C8↑j
.text:0000007104780B78                 LDR             X0, [X22,#Definitions.Items.Item_TypeInfo@PAGEOFF] ; Definitions.Items.Item_TypeInfo
.text:0000007104780B7C                 LDR             W19, [X19,#0x18]
.text:0000007104780B80                 LDR             W8, [X0,#0xE4]
.text:0000007104780B84                 CBNZ            W8, loc_7104780B8C
.text:0000007104780B88                 BL              sub_7100ABFF30
.text:0000007104780B8C
.text:0000007104780B8C loc_7104780B8C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+9F4↑j
.text:0000007104780B8C                 ADRP            X22, #Meta.StartFishing.Types.Response_TypeInfo@PAGE ; Meta.StartFishing.Types.Response_TypeInfo
.text:0000007104780B90                 LDR             X0, [X22,#Meta.StartFishing.Types.Response_TypeInfo@PAGEOFF] ; Meta.StartFishing.Types.Response_TypeInfo
.text:0000007104780B94                 LDR             W8, [X0,#0xE4]
.text:0000007104780B98                 CBNZ            W8, loc_7104780BA0
.text:0000007104780B9C                 BL              sub_7100ABFF30
.text:0000007104780BA0
.text:0000007104780BA0 loc_7104780BA0                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+A08↑j
.text:0000007104780BA0                 SUB             X1, X29, #-(0x20+fishData) ; fishData
.text:0000007104780BA4                 MOV             X0, X19 ; fishItem
.text:0000007104780BA8                 BL              Meta.StartFishing.Types.Response$$TryGetFishItemData
.text:0000007104780BAC                 TBZ             W0, #0, loc_7104780C14
.text:0000007104780BB0                 LDR             X0, [X22,#Meta.StartFishing.Types.Response_TypeInfo@PAGEOFF] ; Meta.StartFishing.Types.Response_TypeInfo
.text:0000007104780BB4                 LDUR            X21, [X29,#0x20+var_48]
.text:0000007104780BB8                 LDUR            X19, [X29,#0x20+fishData]
.text:0000007104780BBC                 LDR             W8, [X0,#0xE4]
.text:0000007104780BC0                 CBNZ            W8, loc_7104780BC8
.text:0000007104780BC4                 BL              sub_7100ABFF30
.text:0000007104780BC8
.text:0000007104780BC8 loc_7104780BC8                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+A30↑j
.text:0000007104780BC8                 MOV             X0, X20 ; random
.text:0000007104780BCC                 MOV             X1, X19 ; chosenFish
.text:0000007104780BD0                 BL              Meta.StartFishing.Types.Response$$SelectRandomFishMass
.text:0000007104780BD4                 ADRP            X8, #Method$System.Nullable_float_..ctor__@PAGE ; Method$System.Nullable<float>..ctor()
.text:0000007104780BD8                 STR             XZR, [SP,#0xB0+var_B0]
.text:0000007104780BDC                 LDR             X2, [X8,#Method$System.Nullable_float_..ctor__@PAGEOFF] ; method
.text:0000007104780BE0                 STR             S0, [X29,#0x20+var_4]
.text:0000007104780BE4                 MOV             X0, SP  ; this
.text:0000007104780BE8                 ADD             X1, X29, #0x20+var_4 ; this
.text:0000007104780BEC                 BL              System.Nullable___Il2CppFullySharedGenericStructType_$$.ctor
.text:0000007104780BF0                 CBZ             X21, loc_7104780CA8
.text:0000007104780BF4                 LDR             X8, [SP,#0xB0+var_B0]
.text:0000007104780BF8                 STUR            X8, [X21,#0x2C]
.text:0000007104780BFC                 B               loc_7104780C14
.text:0000007104780C00 ; ---------------------------------------------------------------------------
.text:0000007104780C00
.text:0000007104780C00 loc_7104780C00                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+88C↑j
.text:0000007104780C00                 LDUR            X8, [X29,#0x20+var_28]
.text:0000007104780C04                 STR             WZR, [X8,#0x18]
.text:0000007104780C08                 B               loc_7104780C14
.text:0000007104780C0C ; ---------------------------------------------------------------------------
.text:0000007104780C0C
.text:0000007104780C0C loc_7104780C0C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+948↑j
.text:0000007104780C0C                 MOV             W9, #4
.text:0000007104780C10                 STR             W9, [X8,#0x18]
.text:0000007104780C14
.text:0000007104780C14 loc_7104780C14                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+A1C↑j
.text:0000007104780C14                                         ; Meta.StartFishing.Types.Response$$ApplyThis+A6C↑j ...
.text:0000007104780C14                 ADD             X0, SP, #0xB0+var_98
.text:0000007104780C18                 BL              sub_710082C240
.text:0000007104780C1C                 LDUR            X20, [X29,#0x20+var_28]
.text:0000007104780C20
.text:0000007104780C20 loc_7104780C20                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+230↑j
.text:0000007104780C20                                         ; Meta.StartFishing.Types.Response$$ApplyThis+274↑j ...
.text:0000007104780C20                 ADRP            X8, #Method$Meta.TransactionAction_StartFishing.Types.Result_.get_IsValid__@PAGE ; Method$Meta.TransactionAction<StartFishing.Types.Result>.get_IsValid()
.text:0000007104780C24                 MOV             X0, X20 ; this
.text:0000007104780C28                 LDR             X1, [X8,#Method$Meta.TransactionAction_StartFishing.Types.Result_.get_IsValid__@PAGEOFF] ; method
.text:0000007104780C2C                 BL              Meta.TransactionAction___Il2CppFullySharedGenericStructType_$$get_IsValid
.text:0000007104780C30
.text:0000007104780C30 loc_7104780C30                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+ACC↓j
.text:0000007104780C30                 LDP             X20, X19, [SP,#0xB0+var_s30]
.text:0000007104780C34                 AND             W0, W0, #1
.text:0000007104780C38                 LDP             X22, X21, [SP,#0xB0+var_s20]
.text:0000007104780C3C                 LDR             X27, [SP,#0xB0+var_10]
.text:0000007104780C40                 LDP             X24, X23, [SP,#0xB0+var_s10]
.text:0000007104780C44                 LDP             X26, X25, [SP,#0xB0+var_s0]
.text:0000007104780C48                 LDP             X29, X30, [SP,#0xB0+var_20]
.text:0000007104780C4C                 ADD             SP, SP, #0xF0
.text:0000007104780C50                 RET
.text:0000007104780C54 ; ---------------------------------------------------------------------------
.text:0000007104780C54
.text:0000007104780C54 loc_7104780C54                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+940↑j
.text:0000007104780C54                 ADD             X0, SP, #0xB0+var_98
.text:0000007104780C58                 BL              sub_710082C240
.text:0000007104780C5C                 B               loc_7104780C30
.text:0000007104780C60 ; ---------------------------------------------------------------------------
.text:0000007104780C60
.text:0000007104780C60 loc_7104780C60                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+150↑j
.text:0000007104780C60                                         ; Meta.StartFishing.Types.Response$$ApplyThis+158↑j ...
.text:0000007104780C60                 BL              sub_7100A31A60
.text:0000007104780C64 ; ---------------------------------------------------------------------------
.text:0000007104780C64
.text:0000007104780C64 loc_7104780C64                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+1B8↑j
.text:0000007104780C64                                         ; Meta.StartFishing.Types.Response$$ApplyThis+3AC↑j ...
.text:0000007104780C64                 BL              sub_7100A32460
.text:0000007104780C68 ; ---------------------------------------------------------------------------
.text:0000007104780C68
.text:0000007104780C68 loc_7104780C68                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+7AC↑j
.text:0000007104780C68                                         ; Meta.StartFishing.Types.Response$$ApplyThis+7B4↑j
.text:0000007104780C68                 BL              sub_7100A31A60
.text:0000007104780C6C ; ---------------------------------------------------------------------------
.text:0000007104780C6C
.text:0000007104780C6C loc_7104780C6C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+7C8↑j
.text:0000007104780C6C                 BL              sub_7100A31A60
.text:0000007104780C70 ; ---------------------------------------------------------------------------
.text:0000007104780C70
.text:0000007104780C70 loc_7104780C70                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+8F8↑j
.text:0000007104780C70                 BL              sub_7100A31A60
.text:0000007104780C74 ; ---------------------------------------------------------------------------
.text:0000007104780C74
.text:0000007104780C74 loc_7104780C74                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis:loc_7104780AC4↑j
.text:0000007104780C74                 MOV             X0, X19
.text:0000007104780C78                 BL              sub_7100A87C30
.text:0000007104780C7C ; ---------------------------------------------------------------------------
.text:0000007104780C7C
.text:0000007104780C7C loc_7104780C7C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+2D8↑j
.text:0000007104780C7C                 MOV             X0, X1
.text:0000007104780C80                 MOV             X1, X8
.text:0000007104780C84                 BL              sub_7100A32460
.text:0000007104780C88 ; ---------------------------------------------------------------------------
.text:0000007104780C88
.text:0000007104780C88 loc_7104780C88                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+870↑j
.text:0000007104780C88                 BL              sub_7100A31A60
.text:0000007104780C8C ; ---------------------------------------------------------------------------
.text:0000007104780C8C
.text:0000007104780C8C loc_7104780C8C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+89C↑j
.text:0000007104780C8C                 BL              sub_7100A31A60
.text:0000007104780C90 ; ---------------------------------------------------------------------------
.text:0000007104780C90
.text:0000007104780C90 loc_7104780C90                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+928↑j
.text:0000007104780C90                 BL              sub_7100A31A60
.text:0000007104780C94 ; ---------------------------------------------------------------------------
.text:0000007104780C94
.text:0000007104780C94 loc_7104780C94                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+954↑j
.text:0000007104780C94                 BL              sub_7100A31A60
.text:0000007104780C98 ; ---------------------------------------------------------------------------
.text:0000007104780C98
.text:0000007104780C98 loc_7104780C98                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis:loc_7104780B28↑j
.text:0000007104780C98                 BL              sub_7100A31A60
.text:0000007104780C9C ; ---------------------------------------------------------------------------
.text:0000007104780C9C
.text:0000007104780C9C loc_7104780C9C                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+9A4↑j
.text:0000007104780C9C                 BL              sub_7100A31A60
.text:0000007104780CA0 ; ---------------------------------------------------------------------------
.text:0000007104780CA0
.text:0000007104780CA0 loc_7104780CA0                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+9B4↑j
.text:0000007104780CA0                 BL              sub_7100A31A60
.text:0000007104780CA4 ; ---------------------------------------------------------------------------
.text:0000007104780CA4
.text:0000007104780CA4 loc_7104780CA4                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+9BC↑j
.text:0000007104780CA4                 BL              sub_7100A31A60
.text:0000007104780CA8 ; ---------------------------------------------------------------------------
.text:0000007104780CA8
.text:0000007104780CA8 loc_7104780CA8                          ; CODE XREF: Meta.StartFishing.Types.Response$$ApplyThis+A60↑j
.text:0000007104780CA8                 BL              sub_7100A31A60
.text:0000007104780CA8 ; End of function Meta.StartFishing.Types.Response$$ApplyThis

And just as I'd hoped, I was successfully able to find the process that rewrites the fish's rarity when the buff flag is active.

Code:
.text:0000007104780A20 loc_7104780A20                          ; entry of the "buff branch" block
.text:0000007104780A20                 CMP             W21, #0          // Check GetBuff result: W21 > 0 means buff is active
.text:0000007104780A24                 B.LE            loc_7104780A60   // If no buff (<=0), skip the buff path

.text:0000007104780A28                 LDUR            X2, [X29,#0x20+var_48] // Load pendingFish* from the current stack frame
.text:0000007104780A2C                 CBZ             X2, loc_7104780C8C     // If pendingFish is null, bail out

.text:0000007104780A30                 LDR             W8, [X2,#0x18]   // W8 = pendingFish.rarity_ (1=White, 2=Blue, 3=Gold, 4=Special)
.text:0000007104780A34                 CMP             W8, #1           // Is current rarity White (1)?
.text:0000007104780A38                 CSET            W8, EQ           // W8 = (rarity == White) ? 1 : 0  (materialize flag)
.text:0000007104780A3C                 STURB           W8, [X29,#0x20+var_4C] // Save flag to local var_4C (later used to write Buffed)

.text:0000007104780A40                 SUB             X8, X29, #-(0x20+var_4C) // X8 = &var_4C (compute local address)
.text:0000007104780A44                 STP             XZR, X8, [SP,#0xB0+var_B0] // Store {0, &var_4C} on stack (scratch/arg spill for later code)
.text:0000007104780A48                 SUB             X8, X29, #-(0x20+var_48)  // X8 = &var_48 (address of pendingFish* local)
.text:0000007104780A4C                 STR             X8, [SP,#0xB0+var_A0]     // Store &var_48 on stack (scratch/arg spill for later code)

.text:0000007104780A50                 B.NE            loc_7104780A78   // If not White, do not change rarity; continue to merge point
.text:0000007104780A54                 MOV             W8, #3           // Set target rarity to Gold (3) — default buff upgrade White->Gold
.text:0000007104780A58                 STR             W8, [X2,#0x18]   // Write pendingFish.rarity_ = Gold (affects catch table)
.text:0000007104780A5C                 B               loc_7104780A78   // Jump to common continuation (later Buffed writeback, etc.

First, it's necessary to make the code branch to this buff process under all circumstances. To do that, we need to disable the part that checks whether it's okay to make the branch.

While searching within the function, I found the instruction at address 0x7104780950, BL Meta.ProfilePlayer$$GetBuff, which retrieves the player's current buff status. At address 0x7104780960, the instruction MOV W21, W0 saves that return value into register w21. This value is used in a later process, and if it is 0, it is treated as if no buff is active, and the code will not branch to the buff process. In other words, this part needs to be modified. There are various ways to rewrite it, but I decided to change the MOV W21, W0 at address 0x7104780960 to MOV W21, #1.



Searching for other checks that branch to the buff process, I found the next branching logic block beginning at address 0x71047809F0.

Code:
.text:00000071047809F0 loc_71047809F0                          ; entry of the gate that decides whether to enter the buff branch
.text:00000071047809F0                 LDR             W8, [X24]        // Load a state/value from [X24] (e.g., cached token/phase)
.text:00000071047809F4                 CMP             W23, W8          // Compare W23 against the loaded value
.text:00000071047809F8                 B.EQ            loc_7104780A20   // If equal, jump directly to the buff-handling block at 0x…A20

.text:00000071047809FC                 LDUR            X8, [X29,#0x20+var_48] // X8 = pendingFish* from the current stack frame
.text:0000007104780A00                 CBZ             X8, loc_7104780C88     // If pendingFish is null, bail to 0x…0C88

.text:0000007104780A04                 LDRB            W8, [X8,#0x44]   // W8 = pendingFish.<Buffed>k__BackingField (0/1)
.text:0000007104780A08                 CMP             W21, #0          // Is GetBuff result (W21) > 0 ? (i.e., gameplay buff active)
.text:0000007104780A0C                 CSET            W9, GT           // W9 = (W21>0) ? 1 : 0
.text:0000007104780A10                 CMP             W8, #0           // Is Buffed flag non-zero?
.text:0000007104780A14                 CSET            W8, NE           // W8 = (Buffed!=0) ? 1 : 0
.text:0000007104780A18                 EOR             W8, W9, W8       // W8 = (W21>0) XOR (Buffed!=0) → 1 if mismatch, 0 if consistent
.text:0000007104780A1C                 TBZ             W8, #0, loc_7104780C00 // If bit0==0 (consistent), jump to 0x…0C00 (skip buff path);
                                                                          // otherwise fall through to 0x…0A20 to reconcile via buff logic


In short, it checks the status of the fish to be caught (referred to as PendingFish in dump.cs) to see if a buff is active, and if it is, it skips the branch to the buff process. I changed the instruction at address 0x7104780A04, LDRB W8, [X8,#0x44], which reads whether or not the fish has a buff, to MOV W8, WZR. This makes the game always recognize that the buff flag is not set on the fish.



With these two lines modified, the code is now forced to branch to the buff process, so the next step is to alter the buff process itself. The original buff process only activates for white ripples, changing their color to gold and modifying the rarity of the fish caught. With this limitation, it's impossible to catch a blue-ripple fish from a white ripple, or a gold-ripple fish from a blue ripple.

To address this, I modified the part that originally checked if the fish's rarity was "Normal." I rewrote the CMP W8, #1 at 0x7104780A34 and the CSET W8, EQ at 0x7104780A38 to instead check if the fish's current rarity matches the target rarity for the rewrite.

The original buff process was designed to not execute if the initial fish rarity wasn't Normal. To change this so that the buff process is skipped if the initial fish rarity is already the same as the target rarity, I rewrote the B.NE loc_7104780A78 at address 0x7104780A50 to B.EQ loc_7104780A78.

Code:
.text:0000007104780A20 loc_7104780A20                          ; start of the (modified) buff branch
.text:0000007104780A20                 CMP             W21, #0          // Check GetBuff result: buff considered active if W21 > 0
.text:0000007104780A24                 B.LE            loc_7104780A60   // If no buff (<=0), leave this path

.text:0000007104780A28                 LDUR            X2, [X29,#0x20+var_48] // X2 = pendingFish* (loaded from the current stack frame)
.text:0000007104780A2C                 CBZ             X2, loc_7104780C8C     // If pendingFish is null, bail out

.text:0000007104780A30                 LDR             W8, [X2,#0x18]   // W8 = pendingFish.rarity_ (1=White, 2=Blue, 3=Gold, 4=Special)

.text:0000007104780A34                 CMP             W8, #N           // Compare current rarity with TARGET rarity #N (your desired value)
.text:0000007104780A38                 CSET            W8, NE           // W8 = (current != TARGET) ? 1 : 0  (materialize “different?” as 0/1)
.text:0000007104780A3C                 STURB           W8, [X29,#0x20+var_4C] // Save the “different?” flag into local var_4C (later used for Buffed writeback)

.text:0000007104780A40                 SUB             X8, X29, #-(0x20+var_4C) // X8 = &var_4C (compute local address)
.text:0000007104780A44                 STP             XZR, X8, [SP,#0xB0+var_B0] // Spill {0, &var_4C} to stack (scratch/arg space used downstream)
.text:0000007104780A48                 SUB             X8, X29, #-(0x20+var_48)  // X8 = &var_48 (address of saved pendingFish* local)
.text:0000007104780A4C                 STR             X8, [SP,#0xB0+var_A0]     // Spill &var_48 to stack (scratch/arg space used downstream)

.text:0000007104780A50                 B.EQ            loc_7104780A78   // If current == TARGET (#N), skip changing rarity and continue
                                                                        // (Else: fall through to the block that sets rarity to #N)

#N = the numeric code of the rarity you want to enforce: 1=White (Normal), 2=Blue (Uncommon), 3=Gold (Rare), 4=Special.
With this layout: same color → skip; different color → continue to your write block (e.g., MOV W8,#N then STR W8,[X2,#0x18]).


Finally, to arbitrarily change the fish rarity that the buff process rewrites to, I modify the MOV W8, #3 at address 0x7104780A54. The reason the "ForceRareFish" code has one less line than the others is because the default instruction at 0x7104780A54 is already MOV W8, #3.

Code:
.text:0000007104780A54                 MOV             W8, #N        // Load TARGET rarity #N into W8 (1=White, 2=Blue, 3=Gold, 4=Special)
.text:0000007104780A58                 STR             W8, [X2,#0x18] // pendingFish.rarity_ ← #N (commit the new catch-table rarity





I wrote this hoping it would be a helpful reference, but honestly, I don’t recommend using the reverse-engineering of this particular code as your starting point for learning how to create cheats. It’s one of the more complex and difficult types of cheat codes to understand. Therefore, there's no need to feel discouraged if you can't understand everything I've written. For now, it is more than enough if you can just grasp the general overview of how I created the cheat code. I have created other cheat codes, so please try to decipher how they work by cross-referencing them with the dump.cs and NSO files, and work on being able to write them yourself.
Right now, I update codes manually that can't be updated with the asm updater. Its a process, but ive become good at using the old codes to find repeating patterns, and when something won't update with the code updater, I can use info in the updater as a guide to find the same area where the new code should be located. I figured there has to be an easier way to go about it, so I appreciate your guide! It's very easy to follow, so I think I'll definitely be a huge help to finding codes for empire of sin, which is also a unity game! Thank you so much for taking the time to help & explain your method!!
 
  • Like
Reactions: morarin

Site & Scene News

Popular threads in this forum