Skip to content

Instantly share code, notes, and snippets.

@Lusamine
Created June 19, 2025 18:01
Show Gist options
  • Select an option

  • Save Lusamine/640cc0e091435dd31c753440b4d92e76 to your computer and use it in GitHub Desktop.

Select an option

Save Lusamine/640cc0e091435dd31c753440b4d92e76 to your computer and use it in GitHub Desktop.
// a2 = 0 on join camp, 1 on group camp, 2 on finish curry no mon, 3 on curry mon
// a3 = 0 on join camp, 1 (group activity 6), 2 (group activity 5), 4 (group activity look at curry mon)
// a4 = 0, 1 front spot taken
__int32 __fastcall camp_determine_initial_behavior(__int64 a1, int setting, int group_activity, bool front_slot_taken)
{
time_t v9; // x0
__int64 v10; // x24
time_t curr_unix_time; // x23
time_t time_last_entered_camp; // x25
__int64 v13; // x24
unsigned int *v14; // x8
unsigned __int32 Friendship; // w0
__int64 v16; // x23
unsigned int *v17; // x8
float rand_float; // s0
__int64 v19; // x23
unsigned int *v20; // x8
float v21; // s0
__int64 v22; // x23
unsigned int *v23; // x8
float v24; // s0
__int64 v25; // x23
unsigned int *v26; // x8
__int64 v27; // x22
unsigned int *v28; // x8
unsigned __int8 CampFriendship; // w0
struct tm v31; // [xsp+0h] [xbp-B0h] BYREF
struct tm tp; // [xsp+38h] [xbp-78h] BYREF
if ( sub_710077B180(*(_QWORD *)(a1 + 88)) )
return 0;
if ( setting == 1 )
return 13;
if ( group_activity == 4 ) // Curry mon spawned
return 12;
if ( ((unsigned int)sub_710077B560(*(_QWORD *)(a1 + 88)) | 1) == 3 )
return 11;
if ( !setting && !front_slot_taken )
{
if ( Pml_PokePara_CoreParam__GetFriendship(*(Pml_PokePara_CoreParam_o **)(a1 + 88)) >= 255
&& get_rand_float(global_struct->main_rng, 1.0) < 0.1 )
{
return 7; // In your face
}
sub_7100F2AD30(&tp);
v9 = mktime_0(&tp);
v10 = *(_QWORD *)(qword_71026364F0 + 632);
curr_unix_time = v9;
if ( v10 )
(*(void (__fastcall **)(__int64))(*(_QWORD *)(v10 + 72) + 16LL))(v10 + 72);
sub_710142AAE0(&v31, v10);
tp = v31;
time_last_entered_camp = mktime_0(&tp);
if ( v10 )
(*(void (__fastcall **)(__int64))(*(_QWORD *)(v10 + 72) + 24LL))(v10 + 72);
if ( sub_710121ACF0(*(_QWORD *)(a1 + 192)) )
{
v13 = *(_QWORD *)(a1 + 192);
if ( v13 )
{
sub_710121ACF0(*(_QWORD *)(a1 + 192));
v14 = (unsigned int *)(*(_QWORD *)(v13 + 304)
+ *(unsigned __int16 *)(*(_QWORD *)(v13 + 304) - **(int **)(v13 + 304) + 4LL));
if ( *((_BYTE *)v14 + *v14 + 45) )
{
Friendship = Pml_PokePara_CoreParam__GetFriendship(*(Pml_PokePara_CoreParam_o **)(a1 + 88));
if ( curr_unix_time - time_last_entered_camp >= 432000 && Friendship > 199 )// difference of 5 days
return 8; // stands in front looking annoyed
}
}
}
}
if ( group_activity == 3 )
return 2;
if ( sub_710121ACF0(*(_QWORD *)(a1 + 192)) )
{
v16 = *(_QWORD *)(a1 + 192);
if ( v16 )
{
sub_710121ACF0(*(_QWORD *)(a1 + 192));
v17 = (unsigned int *)(*(_QWORD *)(v16 + 304)
+ *(unsigned __int16 *)(*(_QWORD *)(v16 + 304) - **(int **)(v16 + 304) + 4LL));
if ( *((_BYTE *)v17 + *v17 + 30) )
{
if ( Pml_PokePara_CoreParam__GetFriendship(*(Pml_PokePara_CoreParam_o **)(a1 + 88)) >= 255 )
{
rand_float = get_rand_float(global_struct->main_rng, 1.0);
if ( !setting && !front_slot_taken && rand_float < 0.1 )
return 10;
}
}
}
}
if ( sub_710121ACF0(*(_QWORD *)(a1 + 192)) )
{
v19 = *(_QWORD *)(a1 + 192);
if ( v19 )
{
sub_710121ACF0(*(_QWORD *)(a1 + 192));
v20 = (unsigned int *)(*(_QWORD *)(v19 + 304)
+ *(unsigned __int16 *)(*(_QWORD *)(v19 + 304) - **(int **)(v19 + 304) + 4LL));
if ( *((_BYTE *)v20 + *v20 + 29) )
{
if ( Pml_PokePara_CoreParam__GetFriendship(*(Pml_PokePara_CoreParam_o **)(a1 + 88)) >= 200 )
{
v21 = get_rand_float(global_struct->main_rng, 1.0);
if ( !setting && !front_slot_taken && v21 < 0.1 )
return 9;
}
}
}
}
if ( sub_710121ACF0(*(_QWORD *)(a1 + 192)) )
{
v22 = *(_QWORD *)(a1 + 192);
if ( v22 )
{
sub_710121ACF0(*(_QWORD *)(a1 + 192));
v23 = (unsigned int *)(*(_QWORD *)(v22 + 304)
+ *(unsigned __int16 *)(*(_QWORD *)(v22 + 304) - **(int **)(v22 + 304) + 4LL));
if ( *((_BYTE *)v23 + *v23 + 45) )
{
if ( Pml_PokePara_CoreParam__GetFriendship(*(Pml_PokePara_CoreParam_o **)(a1 + 88)) >= 200 )
{
v24 = get_rand_float(global_struct->main_rng, 1.0);
if ( !setting && !front_slot_taken && v24 < 0.0 )
return 8;
}
}
}
}
if ( sub_710121ACF0(*(_QWORD *)(a1 + 192)) )
{
v25 = *(_QWORD *)(a1 + 192);
if ( v25 )
{
sub_710121ACF0(*(_QWORD *)(a1 + 192));
v26 = (unsigned int *)(*(_QWORD *)(v25 + 304)
+ *(unsigned __int16 *)(*(_QWORD *)(v25 + 304) - **(int **)(v25 + 304) + 4LL));
if ( *((_BYTE *)v26 + *v26 + 34) )
{
if ( Pml_PokePara_CoreParam__GetFriendship(*(Pml_PokePara_CoreParam_o **)(a1 + 88)) >= 220
&& Pml_PokePara_CoreParam__GetCampFriendship(*(Pml_PokePara_CoreParam_o **)(a1 + 88)) >= 220u
&& get_rand_float(global_struct->main_rng, 1.0) < 0.1
&& setting == 2
&& !front_slot_taken )
{
return 4;
}
}
}
}
if ( sub_710121ACF0(*(_QWORD *)(a1 + 192)) )
{
v27 = *(_QWORD *)(a1 + 192);
if ( v27 )
{
sub_710121ACF0(*(_QWORD *)(a1 + 192));
v28 = (unsigned int *)(*(_QWORD *)(v27 + 304)
+ *(unsigned __int16 *)(*(_QWORD *)(v27 + 304) - **(int **)(v27 + 304) + 4LL));
if ( *((_BYTE *)v28 + *v28 + 31) )
{
if ( Pml_PokePara_CoreParam__GetFriendship(*(Pml_PokePara_CoreParam_o **)(a1 + 88)) >= 180
&& Pml_PokePara_CoreParam__GetCampFriendship(*(Pml_PokePara_CoreParam_o **)(a1 + 88)) >= 180u
&& get_rand_float(global_struct->main_rng, 1.0) < 0.1
&& !front_slot_taken )
{
return 3;
}
}
}
}
CampFriendship = Pml_PokePara_CoreParam__GetCampFriendship(*(Pml_PokePara_CoreParam_o **)(a1 + 88));
if ( group_activity == 1 && CampFriendship > 179u )
return 6; // 3 mons are talking
if ( Pml_PokePara_CoreParam__GetCampFriendship(*(Pml_PokePara_CoreParam_o **)(a1 + 88)) > 69u && group_activity == 2 )
return 5; // 2 mons chatting
else
return 1;
}
----
.text:00000071011B6B10 ; =============== S U B R O U T I N E =======================================
.text:00000071011B6B10
.text:00000071011B6B10 ; a2 = 0 on join camp, 1 on group camp, 2 on finish curry no mon, 3 on curry mon
.text:00000071011B6B10 ; a3 = 0 on join camp, 1 (group activity 6), 2 (group activity 5), 4 (group activity look at curry mon)
.text:00000071011B6B10 ; a4 = 0, 1 front spot taken
.text:00000071011B6B10 ; Attributes: bp-based frame
.text:00000071011B6B10
.text:00000071011B6B10 ; __int32 __fastcall camp_determine_initial_behavior(__int64 a1, int setting, int group_activity, bool front_slot_taken)
.text:00000071011B6B10 camp_determine_initial_behavior ; CODE XREF: sub_71012376D0+B4↓p
.text:00000071011B6B10
.text:00000071011B6B10 var_B0 = -0xB0
.text:00000071011B6B10 var_A0 = -0xA0
.text:00000071011B6B10 var_98 = -0x98
.text:00000071011B6B10 var_90 = -0x90
.text:00000071011B6B10 var_88 = -0x88
.text:00000071011B6B10 tp = -0x78
.text:00000071011B6B10 var_40 = -0x40
.text:00000071011B6B10 var_30 = -0x30
.text:00000071011B6B10 var_20 = -0x20
.text:00000071011B6B10 var_10 = -0x10
.text:00000071011B6B10 var_s0 = 0
.text:00000071011B6B10
.text:00000071011B6B10 SUB SP, SP, #0xC0
.text:00000071011B6B14 STR X25, [SP,#0xB0+var_40]
.text:00000071011B6B18 STP X24, X23, [SP,#0xB0+var_30]
.text:00000071011B6B1C STP X22, X21, [SP,#0xB0+var_20]
.text:00000071011B6B20 STP X20, X19, [SP,#0xB0+var_10]
.text:00000071011B6B24 STP X29, X30, [SP,#0xB0+var_s0]
.text:00000071011B6B28 ADD X29, SP, #0xB0
.text:00000071011B6B2C MOV X20, X0
.text:00000071011B6B30 LDR X0, [X0,#0x58]
.text:00000071011B6B34 MOV W21, W3
.text:00000071011B6B38 MOV W19, W2
.text:00000071011B6B3C MOV W22, W1
.text:00000071011B6B40 BL sub_710077B180
.text:00000071011B6B44 TBZ W0, #0, loc_71011B6B50
.text:00000071011B6B48 MOV W0, WZR
.text:00000071011B6B4C B loc_71011B6FDC
.text:00000071011B6B50 ; ---------------------------------------------------------------------------
.text:00000071011B6B50
.text:00000071011B6B50 loc_71011B6B50 ; CODE XREF: camp_determine_initial_behavior+34↑j
.text:00000071011B6B50 CMP W22, #1
.text:00000071011B6B54 B.NE loc_71011B6B60
.text:00000071011B6B58 MOV W0, #0xD
.text:00000071011B6B5C B loc_71011B6FDC
.text:00000071011B6B60 ; ---------------------------------------------------------------------------
.text:00000071011B6B60
.text:00000071011B6B60 loc_71011B6B60 ; CODE XREF: camp_determine_initial_behavior+44↑j
.text:00000071011B6B60 CMP W19, #4
.text:00000071011B6B64 B.NE loc_71011B6B70
.text:00000071011B6B68 MOV W0, #0xC
.text:00000071011B6B6C B loc_71011B6FDC
.text:00000071011B6B70 ; ---------------------------------------------------------------------------
.text:00000071011B6B70
.text:00000071011B6B70 loc_71011B6B70 ; CODE XREF: camp_determine_initial_behavior+54↑j
.text:00000071011B6B70 LDR X0, [X20,#0x58]
.text:00000071011B6B74 BL sub_710077B560
.text:00000071011B6B78 ORR W8, W0, #1
.text:00000071011B6B7C CMP W8, #3
.text:00000071011B6B80 B.NE loc_71011B6B8C
.text:00000071011B6B84 MOV W0, #0xB
.text:00000071011B6B88 B loc_71011B6FDC
.text:00000071011B6B8C ; ---------------------------------------------------------------------------
.text:00000071011B6B8C
.text:00000071011B6B8C loc_71011B6B8C ; CODE XREF: camp_determine_initial_behavior+70↑j
.text:00000071011B6B8C CBNZ W22, loc_71011B6CC4
.text:00000071011B6B90 TBNZ W21, #0, loc_71011B6CC4
.text:00000071011B6B94 LDR X0, [X20,#0x58]
.text:00000071011B6B98 BL Pml.PokePara.CoreParam$$GetFriendship
.text:00000071011B6B9C CMP W0, #0xFF
.text:00000071011B6BA0 B.CC loc_71011B6BD4
.text:00000071011B6BA4 ADRP X8, #off_7102610848@PAGE
.text:00000071011B6BA8 LDR X8, [X8,#off_7102610848@PAGEOFF]
.text:00000071011B6BAC LDR X8, [X8]
.text:00000071011B6BB0 LDR X0, [X8,#0x98]
.text:00000071011B6BB4 FMOV S0, #1.0
.text:00000071011B6BB8 BL get_rand_float
.text:00000071011B6BBC ADRP X8, #dword_7101C4BEC4@PAGE
.text:00000071011B6BC0 LDR S1, [X8,#dword_7101C4BEC4@PAGEOFF]
.text:00000071011B6BC4 FCMP S0, S1
.text:00000071011B6BC8 B.PL loc_71011B6BD4
.text:00000071011B6BCC MOV W0, #7
.text:00000071011B6BD0 B loc_71011B6FDC
.text:00000071011B6BD4 ; ---------------------------------------------------------------------------
.text:00000071011B6BD4
.text:00000071011B6BD4 loc_71011B6BD4 ; CODE XREF: camp_determine_initial_behavior+90↑j
.text:00000071011B6BD4 ; camp_determine_initial_behavior+B8↑j
.text:00000071011B6BD4 ADD X0, SP, #0xB0+tp
.text:00000071011B6BD8 BL sub_7100F2AD30
.text:00000071011B6BDC ADD X0, SP, #0xB0+tp ; tp
.text:00000071011B6BE0 BL mktime_0
.text:00000071011B6BE4 ADRP X8, #off_7102610798@PAGE
.text:00000071011B6BE8 LDR X8, [X8,#off_7102610798@PAGEOFF]
.text:00000071011B6BEC LDR X8, [X8]
.text:00000071011B6BF0 LDR X24, [X8,#0x278]
.text:00000071011B6BF4 MOV X23, X0
.text:00000071011B6BF8 CBZ X24, loc_71011B6C0C
.text:00000071011B6BFC MOV X0, X24
.text:00000071011B6C00 LDR X8, [X0,#0x48]!
.text:00000071011B6C04 LDR X8, [X8,#0x10]
.text:00000071011B6C08 BLR X8
.text:00000071011B6C0C
.text:00000071011B6C0C loc_71011B6C0C ; CODE XREF: camp_determine_initial_behavior+E8↑j
.text:00000071011B6C0C MOV X8, SP
.text:00000071011B6C10 MOV X0, X24
.text:00000071011B6C14 BL sub_710142AAE0
.text:00000071011B6C18 LDR X8, [SP,#0xB0+var_A0]
.text:00000071011B6C1C STR X8, [SP,#0xB0+tp.tm_mon]
.text:00000071011B6C20 ADD X0, SP, #0xB0+tp ; tp
.text:00000071011B6C24 LDP X9, X8, [SP,#0xB0+var_B0]
.text:00000071011B6C28 LDP X11, X10, [SP,#0xB0+var_88]
.text:00000071011B6C2C STP X9, X8, [SP,#0xB0+tp]
.text:00000071011B6C30 LDR X8, [SP,#0xB0+var_90]
.text:00000071011B6C34 STP X11, X10, [SP,#0xB0+tp.tm_gmtoff]
.text:00000071011B6C38 STR X8, [SP,#0xB0+tp.tm_isdst]
.text:00000071011B6C3C LDR X8, [SP,#0xB0+var_98]
.text:00000071011B6C40 STR X8, [SP,#0xB0+tp.tm_wday]
.text:00000071011B6C44 BL mktime_0
.text:00000071011B6C48 MOV X25, X0
.text:00000071011B6C4C CBZ X24, loc_71011B6C60
.text:00000071011B6C50 LDR X8, [X24,#0x48]!
.text:00000071011B6C54 LDR X8, [X8,#0x18]
.text:00000071011B6C58 MOV X0, X24
.text:00000071011B6C5C BLR X8
.text:00000071011B6C60
.text:00000071011B6C60 loc_71011B6C60 ; CODE XREF: camp_determine_initial_behavior+13C↑j
.text:00000071011B6C60 LDR X0, [X20,#0xC0]
.text:00000071011B6C64 BL sub_710121ACF0
.text:00000071011B6C68 TBZ W0, #0, loc_71011B6CC4
.text:00000071011B6C6C LDR X24, [X20,#0xC0]
.text:00000071011B6C70 CBZ X24, loc_71011B6CC4
.text:00000071011B6C74 MOV X0, X24
.text:00000071011B6C78 BL sub_710121ACF0
.text:00000071011B6C7C LDR X8, [X24,#0x130]
.text:00000071011B6C80 LDRSW X9, [X8]
.text:00000071011B6C84 SUB X9, X8, X9
.text:00000071011B6C88 LDRH W9, [X9,#4]
.text:00000071011B6C8C ADD X8, X8, X9
.text:00000071011B6C90 LDR W9, [X8]
.text:00000071011B6C94 ADD X8, X8, X9
.text:00000071011B6C98 LDRB W8, [X8,#0x2D]
.text:00000071011B6C9C CBZ W8, loc_71011B6CC4
.text:00000071011B6CA0 LDR X0, [X20,#0x58]
.text:00000071011B6CA4 SUB X23, X23, X25
.text:00000071011B6CA8 BL Pml.PokePara.CoreParam$$GetFriendship
.text:00000071011B6CAC MOV W8, #0x69780
.text:00000071011B6CB4 CMP X23, X8
.text:00000071011B6CB8 B.LT loc_71011B6CC4
.text:00000071011B6CBC CMP W0, #199
.text:00000071011B6CC0 B.HI loc_71011B6E5C
.text:00000071011B6CC4
.text:00000071011B6CC4 loc_71011B6CC4 ; CODE XREF: camp_determine_initial_behavior:loc_71011B6B8C↑j
.text:00000071011B6CC4 ; camp_determine_initial_behavior+80↑j ...
.text:00000071011B6CC4 CMP W19, #3
.text:00000071011B6CC8 B.NE loc_71011B6CD4
.text:00000071011B6CCC MOV W0, #2
.text:00000071011B6CD0 B loc_71011B6FDC
.text:00000071011B6CD4 ; ---------------------------------------------------------------------------
.text:00000071011B6CD4
.text:00000071011B6CD4 loc_71011B6CD4 ; CODE XREF: camp_determine_initial_behavior+1B8↑j
.text:00000071011B6CD4 LDR X0, [X20,#0xC0]
.text:00000071011B6CD8 BL sub_710121ACF0
.text:00000071011B6CDC TBZ W0, #0, loc_71011B6D5C
.text:00000071011B6CE0 LDR X23, [X20,#0xC0]
.text:00000071011B6CE4 CBZ X23, loc_71011B6D5C
.text:00000071011B6CE8 MOV X0, X23
.text:00000071011B6CEC BL sub_710121ACF0
.text:00000071011B6CF0 LDR X8, [X23,#0x130]
.text:00000071011B6CF4 LDRSW X9, [X8]
.text:00000071011B6CF8 SUB X9, X8, X9
.text:00000071011B6CFC LDRH W9, [X9,#4]
.text:00000071011B6D00 ADD X8, X8, X9
.text:00000071011B6D04 LDR W9, [X8]
.text:00000071011B6D08 ADD X8, X8, X9
.text:00000071011B6D0C LDRB W8, [X8,#0x1E]
.text:00000071011B6D10 CBZ W8, loc_71011B6D5C
.text:00000071011B6D14 LDR X0, [X20,#0x58]
.text:00000071011B6D18 BL Pml.PokePara.CoreParam$$GetFriendship
.text:00000071011B6D1C CMP W0, #0xFF
.text:00000071011B6D20 B.CC loc_71011B6D5C
.text:00000071011B6D24 ADRP X8, #off_7102610848@PAGE
.text:00000071011B6D28 LDR X8, [X8,#off_7102610848@PAGEOFF]
.text:00000071011B6D2C LDR X8, [X8]
.text:00000071011B6D30 LDR X0, [X8,#0x98]
.text:00000071011B6D34 FMOV S0, #1.0
.text:00000071011B6D38 BL get_rand_float
.text:00000071011B6D3C CBNZ W22, loc_71011B6D5C
.text:00000071011B6D40 TBNZ W21, #0, loc_71011B6D5C
.text:00000071011B6D44 ADRP X8, #dword_7101C4BEC4@PAGE
.text:00000071011B6D48 LDR S1, [X8,#dword_7101C4BEC4@PAGEOFF]
.text:00000071011B6D4C FCMP S0, S1
.text:00000071011B6D50 B.PL loc_71011B6D5C
.text:00000071011B6D54 MOV W0, #0xA
.text:00000071011B6D58 B loc_71011B6FDC
.text:00000071011B6D5C ; ---------------------------------------------------------------------------
.text:00000071011B6D5C
.text:00000071011B6D5C loc_71011B6D5C ; CODE XREF: camp_determine_initial_behavior+1CC↑j
.text:00000071011B6D5C ; camp_determine_initial_behavior+1D4↑j ...
.text:00000071011B6D5C LDR X0, [X20,#0xC0]
.text:00000071011B6D60 BL sub_710121ACF0
.text:00000071011B6D64 TBZ W0, #0, loc_71011B6DE4
.text:00000071011B6D68 LDR X23, [X20,#0xC0]
.text:00000071011B6D6C CBZ X23, loc_71011B6DE4
.text:00000071011B6D70 MOV X0, X23
.text:00000071011B6D74 BL sub_710121ACF0
.text:00000071011B6D78 LDR X8, [X23,#0x130]
.text:00000071011B6D7C LDRSW X9, [X8]
.text:00000071011B6D80 SUB X9, X8, X9
.text:00000071011B6D84 LDRH W9, [X9,#4]
.text:00000071011B6D88 ADD X8, X8, X9
.text:00000071011B6D8C LDR W9, [X8]
.text:00000071011B6D90 ADD X8, X8, X9
.text:00000071011B6D94 LDRB W8, [X8,#0x1D]
.text:00000071011B6D98 CBZ W8, loc_71011B6DE4
.text:00000071011B6D9C LDR X0, [X20,#0x58]
.text:00000071011B6DA0 BL Pml.PokePara.CoreParam$$GetFriendship
.text:00000071011B6DA4 CMP W0, #0xC8
.text:00000071011B6DA8 B.CC loc_71011B6DE4
.text:00000071011B6DAC ADRP X8, #off_7102610848@PAGE
.text:00000071011B6DB0 LDR X8, [X8,#off_7102610848@PAGEOFF]
.text:00000071011B6DB4 LDR X8, [X8]
.text:00000071011B6DB8 LDR X0, [X8,#0x98]
.text:00000071011B6DBC FMOV S0, #1.0
.text:00000071011B6DC0 BL get_rand_float
.text:00000071011B6DC4 CBNZ W22, loc_71011B6DE4
.text:00000071011B6DC8 TBNZ W21, #0, loc_71011B6DE4
.text:00000071011B6DCC ADRP X8, #dword_7101C4BEC4@PAGE
.text:00000071011B6DD0 LDR S1, [X8,#dword_7101C4BEC4@PAGEOFF]
.text:00000071011B6DD4 FCMP S0, S1
.text:00000071011B6DD8 B.PL loc_71011B6DE4
.text:00000071011B6DDC MOV W0, #9
.text:00000071011B6DE0 B loc_71011B6FDC
.text:00000071011B6DE4 ; ---------------------------------------------------------------------------
.text:00000071011B6DE4
.text:00000071011B6DE4 loc_71011B6DE4 ; CODE XREF: camp_determine_initial_behavior+254↑j
.text:00000071011B6DE4 ; camp_determine_initial_behavior+25C↑j ...
.text:00000071011B6DE4 LDR X0, [X20,#0xC0]
.text:00000071011B6DE8 BL sub_710121ACF0
.text:00000071011B6DEC TBZ W0, #0, loc_71011B6E64
.text:00000071011B6DF0 LDR X23, [X20,#0xC0]
.text:00000071011B6DF4 CBZ X23, loc_71011B6E64
.text:00000071011B6DF8 MOV X0, X23
.text:00000071011B6DFC BL sub_710121ACF0
.text:00000071011B6E00 LDR X8, [X23,#0x130]
.text:00000071011B6E04 LDRSW X9, [X8]
.text:00000071011B6E08 SUB X9, X8, X9
.text:00000071011B6E0C LDRH W9, [X9,#4]
.text:00000071011B6E10 ADD X8, X8, X9
.text:00000071011B6E14 LDR W9, [X8]
.text:00000071011B6E18 ADD X8, X8, X9
.text:00000071011B6E1C LDRB W8, [X8,#0x2D]
.text:00000071011B6E20 CBZ W8, loc_71011B6E64
.text:00000071011B6E24 LDR X0, [X20,#0x58]
.text:00000071011B6E28 BL Pml.PokePara.CoreParam$$GetFriendship
.text:00000071011B6E2C CMP W0, #0xC8
.text:00000071011B6E30 B.CC loc_71011B6E64
.text:00000071011B6E34 ADRP X8, #off_7102610848@PAGE
.text:00000071011B6E38 LDR X8, [X8,#off_7102610848@PAGEOFF]
.text:00000071011B6E3C LDR X8, [X8]
.text:00000071011B6E40 LDR X0, [X8,#0x98]
.text:00000071011B6E44 FMOV S0, #1.0
.text:00000071011B6E48 BL get_rand_float
.text:00000071011B6E4C CBNZ W22, loc_71011B6E64
.text:00000071011B6E50 TBNZ W21, #0, loc_71011B6E64
.text:00000071011B6E54 FCMP S0, #0.0
.text:00000071011B6E58 B.PL loc_71011B6E64
.text:00000071011B6E5C
.text:00000071011B6E5C loc_71011B6E5C ; CODE XREF: camp_determine_initial_behavior+1B0↑j
.text:00000071011B6E5C MOV W0, #8
.text:00000071011B6E60 B loc_71011B6FDC
.text:00000071011B6E64 ; ---------------------------------------------------------------------------
.text:00000071011B6E64
.text:00000071011B6E64 loc_71011B6E64 ; CODE XREF: camp_determine_initial_behavior+2DC↑j
.text:00000071011B6E64 ; camp_determine_initial_behavior+2E4↑j ...
.text:00000071011B6E64 LDR X0, [X20,#0xC0]
.text:00000071011B6E68 BL sub_710121ACF0
.text:00000071011B6E6C TBZ W0, #0, loc_71011B6F04
.text:00000071011B6E70 LDR X23, [X20,#0xC0]
.text:00000071011B6E74 CBZ X23, loc_71011B6F04
.text:00000071011B6E78 MOV X0, X23
.text:00000071011B6E7C BL sub_710121ACF0
.text:00000071011B6E80 LDR X8, [X23,#0x130]
.text:00000071011B6E84 LDRSW X9, [X8]
.text:00000071011B6E88 SUB X9, X8, X9
.text:00000071011B6E8C LDRH W9, [X9,#4]
.text:00000071011B6E90 ADD X8, X8, X9
.text:00000071011B6E94 LDR W9, [X8]
.text:00000071011B6E98 ADD X8, X8, X9
.text:00000071011B6E9C LDRB W8, [X8,#0x22]
.text:00000071011B6EA0 CBZ W8, loc_71011B6F04
.text:00000071011B6EA4 LDR X0, [X20,#0x58]
.text:00000071011B6EA8 BL Pml.PokePara.CoreParam$$GetFriendship
.text:00000071011B6EAC CMP W0, #0xDC
.text:00000071011B6EB0 B.CC loc_71011B6F04
.text:00000071011B6EB4 LDR X0, [X20,#0x58]
.text:00000071011B6EB8 BL Pml.PokePara.CoreParam$$GetCampFriendship
.text:00000071011B6EBC AND W8, W0, #0xFF
.text:00000071011B6EC0 CMP W8, #0xDC
.text:00000071011B6EC4 B.CC loc_71011B6F04
.text:00000071011B6EC8 ADRP X8, #off_7102610848@PAGE
.text:00000071011B6ECC LDR X8, [X8,#off_7102610848@PAGEOFF]
.text:00000071011B6ED0 LDR X8, [X8]
.text:00000071011B6ED4 LDR X0, [X8,#0x98]
.text:00000071011B6ED8 FMOV S0, #1.0
.text:00000071011B6EDC BL get_rand_float
.text:00000071011B6EE0 ADRP X8, #dword_7101C4BEC4@PAGE
.text:00000071011B6EE4 LDR S1, [X8,#dword_7101C4BEC4@PAGEOFF]
.text:00000071011B6EE8 FCMP S0, S1
.text:00000071011B6EEC B.PL loc_71011B6F04
.text:00000071011B6EF0 CMP W22, #2
.text:00000071011B6EF4 B.NE loc_71011B6F04
.text:00000071011B6EF8 TBNZ W21, #0, loc_71011B6F04
.text:00000071011B6EFC MOV W0, #4
.text:00000071011B6F00 B loc_71011B6FDC
.text:00000071011B6F04 ; ---------------------------------------------------------------------------
.text:00000071011B6F04
.text:00000071011B6F04 loc_71011B6F04 ; CODE XREF: camp_determine_initial_behavior+35C↑j
.text:00000071011B6F04 ; camp_determine_initial_behavior+364↑j ...
.text:00000071011B6F04 LDR X0, [X20,#0xC0]
.text:00000071011B6F08 BL sub_710121ACF0
.text:00000071011B6F0C TBZ W0, #0, loc_71011B6F9C
.text:00000071011B6F10 LDR X22, [X20,#0xC0]
.text:00000071011B6F14 CBZ X22, loc_71011B6F9C
.text:00000071011B6F18 MOV X0, X22
.text:00000071011B6F1C BL sub_710121ACF0
.text:00000071011B6F20 LDR X8, [X22,#0x130]
.text:00000071011B6F24 LDRSW X9, [X8]
.text:00000071011B6F28 SUB X9, X8, X9
.text:00000071011B6F2C LDRH W9, [X9,#4]
.text:00000071011B6F30 ADD X8, X8, X9
.text:00000071011B6F34 LDR W9, [X8]
.text:00000071011B6F38 ADD X8, X8, X9
.text:00000071011B6F3C LDRB W8, [X8,#0x1F]
.text:00000071011B6F40 CBZ W8, loc_71011B6F9C
.text:00000071011B6F44 LDR X0, [X20,#0x58]
.text:00000071011B6F48 BL Pml.PokePara.CoreParam$$GetFriendship
.text:00000071011B6F4C CMP W0, #0xB4
.text:00000071011B6F50 B.CC loc_71011B6F9C
.text:00000071011B6F54 LDR X0, [X20,#0x58]
.text:00000071011B6F58 BL Pml.PokePara.CoreParam$$GetCampFriendship
.text:00000071011B6F5C AND W8, W0, #0xFF
.text:00000071011B6F60 CMP W8, #0xB4
.text:00000071011B6F64 B.CC loc_71011B6F9C
.text:00000071011B6F68 ADRP X8, #off_7102610848@PAGE
.text:00000071011B6F6C LDR X8, [X8,#off_7102610848@PAGEOFF]
.text:00000071011B6F70 LDR X8, [X8]
.text:00000071011B6F74 LDR X0, [X8,#0x98]
.text:00000071011B6F78 FMOV S0, #1.0
.text:00000071011B6F7C BL get_rand_float
.text:00000071011B6F80 ADRP X8, #dword_7101C4BEC4@PAGE
.text:00000071011B6F84 LDR S1, [X8,#dword_7101C4BEC4@PAGEOFF]
.text:00000071011B6F88 FCMP S0, S1
.text:00000071011B6F8C B.PL loc_71011B6F9C
.text:00000071011B6F90 TBNZ W21, #0, loc_71011B6F9C
.text:00000071011B6F94 MOV W0, #3
.text:00000071011B6F98 B loc_71011B6FDC
.text:00000071011B6F9C ; ---------------------------------------------------------------------------
.text:00000071011B6F9C
.text:00000071011B6F9C loc_71011B6F9C ; CODE XREF: camp_determine_initial_behavior+3FC↑j
.text:00000071011B6F9C ; camp_determine_initial_behavior+404↑j ...
.text:00000071011B6F9C LDR X0, [X20,#0x58]
.text:00000071011B6FA0 BL Pml.PokePara.CoreParam$$GetCampFriendship
.text:00000071011B6FA4 CMP W19, #1
.text:00000071011B6FA8 B.NE loc_71011B6FC0
.text:00000071011B6FAC AND W8, W0, #0xFF
.text:00000071011B6FB0 CMP W8, #0xB3
.text:00000071011B6FB4 B.LS loc_71011B6FC0
.text:00000071011B6FB8 MOV W0, #6
.text:00000071011B6FBC B loc_71011B6FDC
.text:00000071011B6FC0 ; ---------------------------------------------------------------------------
.text:00000071011B6FC0
.text:00000071011B6FC0 loc_71011B6FC0 ; CODE XREF: camp_determine_initial_behavior+498↑j
.text:00000071011B6FC0 ; camp_determine_initial_behavior+4A4↑j
.text:00000071011B6FC0 LDR X0, [X20,#0x58]
.text:00000071011B6FC4 BL Pml.PokePara.CoreParam$$GetCampFriendship
.text:00000071011B6FC8 AND W8, W0, #0xFF
.text:00000071011B6FCC CMP W8, #0x45 ; 'E'
.text:00000071011B6FD0 MOV W8, #5
.text:00000071011B6FD4 CCMP W19, #2, #0, HI
.text:00000071011B6FD8 CSINC W0, W8, WZR, EQ
.text:00000071011B6FDC
.text:00000071011B6FDC loc_71011B6FDC ; CODE XREF: camp_determine_initial_behavior+3C↑j
.text:00000071011B6FDC ; camp_determine_initial_behavior+4C↑j ...
.text:00000071011B6FDC LDP X29, X30, [SP,#0xB0+var_s0]
.text:00000071011B6FE0 LDR X25, [SP,#0xB0+var_40]
.text:00000071011B6FE4 LDP X20, X19, [SP,#0xB0+var_10]
.text:00000071011B6FE8 LDP X22, X21, [SP,#0xB0+var_20]
.text:00000071011B6FEC LDP X24, X23, [SP,#0xB0+var_30]
.text:00000071011B6FF0 ADD SP, SP, #0xC0
.text:00000071011B6FF4 RET
.text:00000071011B6FF4 ; End of function camp_determine_initial_behavior
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment