Skip to content

Instantly share code, notes, and snippets.

@Lusamine
Last active November 29, 2025 09:25
Show Gist options
  • Select an option

  • Save Lusamine/5a398bcc791d43688338c20b27a4414e to your computer and use it in GitHub Desktop.

Select an option

Save Lusamine/5a398bcc791d43688338c20b27a4414e to your computer and use it in GitHub Desktop.
float __fastcall get_ball_capture_ratio(pml::Capture *a1, pml::Capture::Param *a2)
{
int v2; // w9
int v3; // w9
__int64 v4; // x8
int *v7; // x22
pml::CapturePoke *target_pokemon; // x19
__int64 p_reference_count; // x23
unsigned __int16 *v10; // x9
int v11; // w8
int BallNo; // w8
float v13; // s8
unsigned __int16 *v14; // x8
__int64 v15; // x8
__int64 v16; // x8
unsigned __int16 *v17; // x10
int v18; // w9
unsigned __int16 *v20; // x8
unsigned __int16 *v21; // x8
__int64 v22; // x0
unsigned __int16 *v23; // x9
int v24; // w8
unsigned __int16 *v25; // x8
__int64 v26; // x8
unsigned __int16 *v27; // x8
unsigned __int16 v28; // w0
unsigned __int16 *v29; // x8
unsigned __int16 *v30; // x8
pml::CapturePoke *v31; // x20
unsigned int v32; // w0
unsigned __int16 *v33; // x8
float *v34; // x8
unsigned int v35; // w0
unsigned __int16 *v36; // x8
float *v37; // x8
unsigned int v38; // w0
unsigned int *v39; // x8
float *v40; // x8
unsigned __int16 *v41; // x8
pml::CapturePoke *v42; // x8
int v43; // w8
unsigned __int16 *v44; // x8
unsigned __int16 *v45; // x8
uint32_t v46; // w20
uint32_t v47; // w0
unsigned __int16 *v48; // x8
int v49; // w23
char v50; // w20
unsigned __int16 v51; // w21
char v52; // w0
unsigned __int16 *v53; // x8
unsigned __int16 *v54; // x8
unsigned __int16 *v55; // x8
unsigned __int16 *v56; // x8
v2 = dword_7105F2CE00;
__dmb(9u);
if ( !v2 )
return 1.0;
v3 = dword_7105F2CE00;
v4 = (__int64)&unk_7105F2CDC8;
__dmb(9u);
if ( !v3 )
v4 = 200LL;
v7 = *(int **)v4;
if ( *(_QWORD *)v4 )
{
target_pokemon = a2->target_pokemon;
if ( target_pokemon )
{
p_reference_count = target_pokemon->p_reference_count;
if ( !*(_QWORD *)(p_reference_count + 16) )
goto LABEL_35;
v10 = (unsigned __int16 *)(p_reference_count + 26);
do
v11 = __ldaxr(v10);
while ( __stlxr(v11 + 1, v10) );
if ( v11 )
{
if ( v11 == 0xFFFF )
goto LABEL_35;
}
else
{
*(_QWORD *)(p_reference_count + 8) = (***(__int64 (__fastcall ****)(_QWORD))(p_reference_count + 16))(*(_QWORD *)(p_reference_count + 16));
}
}
BallNo = pml::pokepara::CalcTool::GetBallNo((unsigned __int16)a2->item_id);
if ( BallNo == 2 ) // Ultra Ball
{
v13 = 2.0;
v14 = (unsigned __int16 *)((char *)v7 - *v7);
if ( *v14 >= 7u )
{
v15 = v14[3];
if ( v15 )
LABEL_14:
v13 = *(float *)((char *)v7 + v15);
}
}
else
{
switch ( BallNo )
{
case 3: // Great Ball
v13 = 1.5;
v21 = (unsigned __int16 *)((char *)v7 - *v7);
if ( *v21 < 9u )
break;
v15 = v21[4];
if ( !v15 )
break;
goto LABEL_14;
case 4: // Poké Ball
v13 = 1.0;
v20 = (unsigned __int16 *)((char *)v7 - *v7);
if ( *v20 < 5u )
break;
v15 = v20[2];
if ( !v15 )
break;
goto LABEL_14;
case 6: // Net Ball
if ( !target_pokemon->IsTypeMatch(target_pokemon, 10) && !target_pokemon->IsTypeMatch(target_pokemon, 6) )
goto LABEL_96;
v13 = 3.5;
v25 = (unsigned __int16 *)((char *)v7 - *v7);
if ( *v25 < 11u )
goto LABEL_16;
v26 = v25[5];
if ( !v26 )
goto LABEL_16;
goto LABEL_102;
case 7: // Dive Ball
if ( !a2->is_fishing && !a2->is_swimming )
goto LABEL_87;
v13 = 3.5;
v27 = (unsigned __int16 *)((char *)v7 - *v7);
if ( *v27 < 0x17u )
break;
v15 = v27[11];
if ( !v15 )
break;
goto LABEL_14;
case 8: // Nest Ball
v28 = a2->target_pokemon->GetLevel(a2->target_pokemon);
if ( v28 > 0x1Du )
goto LABEL_87;
v13 = (float)(41 - v28) / 10.0;
break;
case 9: // Repeat Ball
if ( !a2->is_registered_in_dex )
goto LABEL_87;
v13 = 3.5;
v29 = (unsigned __int16 *)((char *)v7 - *v7);
if ( *v29 < 13u )
break;
v15 = v29[6];
if ( !v15 )
break;
goto LABEL_14;
case 10: // Timer Ball (uses flatbuffer values)
v13 = 1.0;
v30 = (unsigned __int16 *)((char *)v7 - *v7);
if ( *v30 >= 15u )
{
if ( v30[7] )
{
v31 = a2->target_pokemon;
if ( v31 )
{
v32 = sub_710277E7C0((__int64)v31);
v33 = (unsigned __int16 *)((char *)v7 - *v7);
if ( *v33 >= 15u
&& (v34 = (float *)((char *)v7 + v33[7] + *(unsigned int *)((char *)v7 + v33[7])),
v32 <= *((_DWORD *)v34 + 1)) )
{
v13 = v34[2];
}
else
{
v35 = sub_710277E7C0((__int64)v31);
v36 = (unsigned __int16 *)((char *)v7 - *v7);
if ( *v36 >= 0xFu
&& (v37 = (float *)((char *)v7 + v36[7] + *(unsigned int *)((char *)v7 + v36[7])),
v35 <= *((_DWORD *)v37 + 3)) )
{
v13 = v37[4];
}
else
{
v38 = sub_710277E7C0((__int64)v31);
v39 = (unsigned int *)((char *)v7 + *(unsigned __int16 *)((char *)v7 - *v7 + 14));
v40 = (float *)((char *)v39 + *v39);
if ( v38 <= *((_DWORD *)v40 + 5) )
v13 = v40[6];
else
v13 = v40[8];
}
}
}
}
}
break;
case 13: // Dusk Ball
if ( !a2->is_dusk_ball_enabled )
goto LABEL_87;
v13 = 3.0;
v41 = (unsigned __int16 *)((char *)v7 - *v7);
if ( *v41 < 0x1Bu )
break;
v15 = v41[13];
if ( !v15 )
break;
goto LABEL_14;
case 15: // Quick Ball (uses flatbuffer value of 3)
v42 = a2->target_pokemon;
v13 = 1.0;
if ( !v42 )
break;
v43 = BYTE5(v42[1].m_Ptr);
if ( (unsigned int)(v43 - 2) >= 3 && v43 != 1 )
break;
v13 = 5.0;
v44 = (unsigned __int16 *)((char *)v7 - *v7);
if ( *v44 < 0x19u )
break;
v15 = v44[12];
if ( !v15 )
break;
goto LABEL_14;
case 17: // Fast Ball
if ( (unsigned __int16)target_pokemon->GetSpeed(target_pokemon) < 100u )
goto LABEL_96;
v13 = 4.0;
v45 = (unsigned __int16 *)((char *)v7 - *v7);
if ( *v45 < 0x23u )
goto LABEL_16;
v26 = v45[17];
if ( !v26 )
goto LABEL_16;
goto LABEL_102;
case 18: // Level Ball
if ( !a2->user_pokemon )
goto LABEL_87;
v46 = a2->user_pokemon->GetLevel(a2->user_pokemon);
v47 = target_pokemon->GetLevel(target_pokemon);
v13 = a1->GetLevelBallCaptureRatio(a1, v46, v47);
goto LABEL_16;
case 19: // Lure Ball
if ( !a2->is_fishing )
goto LABEL_87;
v13 = 3.5;
v48 = (unsigned __int16 *)((char *)v7 - *v7);
if ( *v48 < 0x2Du )
break;
v15 = v48[22];
if ( !v15 )
break;
goto LABEL_14;
case 21: // Love Ball
if ( a2->user_pokemon )
{
v49 = (unsigned __int16)a2->user_pokemon->GetDevNo(a2->user_pokemon);
v50 = a2->user_pokemon->GetGender(a2->user_pokemon);
v51 = target_pokemon->GetDevNo(target_pokemon);
v52 = target_pokemon->GetGender(target_pokemon);
v13 = 1.0;
if ( v49 == v51 && v50 != v52 )
{
v13 = 8.0;
v53 = (unsigned __int16 *)((char *)v7 - *v7);
if ( *v53 >= 0x2Bu )
{
v26 = v53[21];
if ( v26 )
LABEL_102:
v13 = *(float *)((char *)v7 + v26);
}
}
goto LABEL_16;
}
LABEL_87:
v13 = 1.0;
break;
case 23: // Moon Ball
if ( !target_pokemon->IsEvolveByMoonStone(target_pokemon) )
goto LABEL_96;
v13 = 4.0;
v54 = (unsigned __int16 *)((char *)v7 - *v7);
if ( *v54 < 0x29u )
goto LABEL_16;
v26 = v54[20];
if ( !v26 )
goto LABEL_16;
goto LABEL_102;
case 25: // Dream Ball
if ( !target_pokemon->IsSleeping(target_pokemon) )
{
LABEL_96:
v13 = 1.0;
goto LABEL_16;
}
v13 = 4.0;
v55 = (unsigned __int16 *)((char *)v7 - *v7);
if ( *v55 < 33u )
goto LABEL_16;
v26 = v55[16];
if ( !v26 )
goto LABEL_16;
goto LABEL_102;
case 26: // Beast Ball
if ( target_pokemon->IsUltraBeast(target_pokemon) )
{
v13 = 5.0;
goto LABEL_16;
}
v56 = (unsigned __int16 *)((char *)v7 - *v7);
v13 = 0.1;
if ( *v56 >= 31u )
{
v26 = v56[15];
if ( v26 )
goto LABEL_102;
}
goto LABEL_16;
default:
v13 = sub_7100805248((__int64)a1, (unsigned __int16 *)a2);
break;
}
}
if ( !target_pokemon )
return v13;
LABEL_16:
v16 = target_pokemon->p_reference_count;
v17 = (unsigned __int16 *)(v16 + 26);
do
v18 = __ldaxr(v17);
while ( __stlxr(v18 - 1, v17) );
if ( v18 != 1 )
{
if ( v18 )
return v13;
LABEL_35:
abort_0();
}
*(_QWORD *)(v16 + 8) = 0LL;
*(_QWORD *)(v16 + 16) = 0LL;
v22 = target_pokemon->p_reference_count;
target_pokemon->p_reference_count = 0LL;
if ( v22 )
{
v23 = (unsigned __int16 *)(v22 + 24);
do
v24 = __ldaxr(v23);
while ( __stlxr(v24 - 1, v23) );
if ( v24 == 1 )
{
sub_7100009990(v22);
}
else if ( !v24 )
{
goto LABEL_35;
}
}
target_pokemon->VFunc50(target_pokemon);
return v13;
}
return sub_7100805248((__int64)a1, (unsigned __int16 *)a2);
}
------
.text:0000007100804BC4 ; float __fastcall get_ball_capture_ratio(pml::Capture *, pml::Capture::Param *)
.text:0000007100804BC4 get_ball_capture_ratio
.text:0000007100804BC4
.text:0000007100804BC4 var_8 = -8
.text:0000007100804BC4 var_s0 = 0
.text:0000007100804BC4 var_s10 = 0x10
.text:0000007100804BC4 var_s18 = 0x18
.text:0000007100804BC4 var_s28 = 0x28
.text:0000007100804BC4
.text:0000007100804BC4 STR D8, [SP,#-0x38+var_8]!
.text:0000007100804BC8 STP X29, X30, [SP,#8+var_s0]
.text:0000007100804BCC STR X23, [SP,#8+var_s10]
.text:0000007100804BD0 STP X22, X21, [SP,#8+var_s18]
.text:0000007100804BD4 STP X20, X19, [SP,#8+var_s28]
.text:0000007100804BD8 ADD X29, SP, #8
.text:0000007100804BDC ADRL X8, qword_7105F2CD00
.text:0000007100804BE4 LDR W9, [X8,#(dword_7105F2CE00 - 0x7105F2CD00)]
.text:0000007100804BE8 DMB ISHLD
.text:0000007100804BEC CBZ W9, loc_7100804D98
.text:0000007100804BF0 LDR W9, [X8,#(dword_7105F2CE00 - 0x7105F2CD00)]
.text:0000007100804BF4 ADD X8, X8, #0xC8
.text:0000007100804BF8 DMB ISHLD
.text:0000007100804BFC MOV X20, X1
.text:0000007100804C00 MOV X21, X0
.text:0000007100804C04 CMP W9, #0
.text:0000007100804C08 MOV W9, #0xC8
.text:0000007100804C0C CSEL X8, X9, X8, EQ
.text:0000007100804C10 LDR X22, [X8]
.text:0000007100804C14 CBZ X22, loc_7100804DA0
.text:0000007100804C18 LDR X19, [X20,#8]
.text:0000007100804C1C CBZ X19, loc_7100804C50
.text:0000007100804C20 LDR X23, [X19,#0x38]
.text:0000007100804C24 LDR X8, [X23,#0x10]
.text:0000007100804C28 CBZ X8, loc_7100804D94
.text:0000007100804C2C ADD X9, X23, #0x1A
.text:0000007100804C30
.text:0000007100804C30 loc_7100804C30 ; CODE XREF: get_ball_capture_ratio+78↓j
.text:0000007100804C30 LDAXRH W8, [X9]
.text:0000007100804C34 ADD W10, W8, #1
.text:0000007100804C38 STLXRH W11, W10, [X9]
.text:0000007100804C3C CBNZ W11, loc_7100804C30
.text:0000007100804C40 CBZ W8, loc_7100804D14
.text:0000007100804C44 MOV W9, #0xFFFF
.text:0000007100804C48 CMP W8, W9
.text:0000007100804C4C B.EQ loc_7100804D94
.text:0000007100804C50
.text:0000007100804C50 loc_7100804C50 ; CODE XREF: get_ball_capture_ratio+58↑j
.text:0000007100804C50 ; get_ball_capture_ratio+164↓j
.text:0000007100804C50 LDRH W0, [X20,#0x10]
.text:0000007100804C54 BL pml__pokepara__CalcTool__GetBallNo
.text:0000007100804C58 AND W8, W0, #0xFF
.text:0000007100804C5C CMP W8, #2
.text:0000007100804C60 B.NE loc_7100804CCC
.text:0000007100804C64 LDRSW X8, [X22]
.text:0000007100804C68 FMOV S8, #2.0
.text:0000007100804C6C SUB X8, X22, X8
.text:0000007100804C70 LDRH W9, [X8]
.text:0000007100804C74 CMP W9, #7
.text:0000007100804C78 B.CC loc_7100804C88
.text:0000007100804C7C LDRH W8, [X8,#6]
.text:0000007100804C80 CBZ X8, loc_7100804C88
.text:0000007100804C84
.text:0000007100804C84 loc_7100804C84 ; CODE XREF: get_ball_capture_ratio+148↓j
.text:0000007100804C84 ; get_ball_capture_ratio+184↓j ...
.text:0000007100804C84 LDR S8, [X22,X8]
.text:0000007100804C88
.text:0000007100804C88 loc_7100804C88 ; CODE XREF: get_ball_capture_ratio+B4↑j
.text:0000007100804C88 ; get_ball_capture_ratio+BC↑j ...
.text:0000007100804C88 CBZ X19, loc_7100804CB0
.text:0000007100804C8C
.text:0000007100804C8C loc_7100804C8C ; CODE XREF: get_ball_capture_ratio+240↓j
.text:0000007100804C8C ; get_ball_capture_ratio+24C↓j ...
.text:0000007100804C8C LDR X8, [X19,#0x38]
.text:0000007100804C90 ADD X10, X8, #0x1A
.text:0000007100804C94
.text:0000007100804C94 loc_7100804C94 ; CODE XREF: get_ball_capture_ratio+DC↓j
.text:0000007100804C94 LDAXRH W9, [X10]
.text:0000007100804C98 SUB W11, W9, #1
.text:0000007100804C9C STLXRH W12, W11, [X10]
.text:0000007100804CA0 CBNZ W12, loc_7100804C94
.text:0000007100804CA4 CMP W9, #1
.text:0000007100804CA8 B.EQ loc_7100804D50
.text:0000007100804CAC CBZ W9, loc_7100804D94
.text:0000007100804CB0
.text:0000007100804CB0 loc_7100804CB0 ; CODE XREF: get_ball_capture_ratio:loc_7100804C88↑j
.text:0000007100804CB0 ; get_ball_capture_ratio+1AC↓j ...
.text:0000007100804CB0 LDP X20, X19, [SP,#8+var_s28]
.text:0000007100804CB4 FMOV S0, S8
.text:0000007100804CB8 LDP X22, X21, [SP,#8+var_s18]
.text:0000007100804CBC LDR X23, [SP,#8+var_s10]
.text:0000007100804CC0 LDP X29, X30, [SP,#8+var_s0]
.text:0000007100804CC4 LDR D8, [SP+8+var_8],#0x40
.text:0000007100804CC8 RET
.text:0000007100804CCC ; ---------------------------------------------------------------------------
.text:0000007100804CCC
.text:0000007100804CCC loc_7100804CCC ; CODE XREF: get_ball_capture_ratio+9C↑j
.text:0000007100804CCC SUB W8, W8, #3 ; switch 24 cases
.text:0000007100804CD0 CMP W8, #0x17
.text:0000007100804CD4 B.HI def_7100804CEC ; jumptable 0000007100804CEC default case, cases 5,11,12,14,16,20,22,24
.text:0000007100804CD8 ADRL X9, jpt_7100804CEC
.text:0000007100804CE0 ADR X10, loc_7100804CF0 ; jumptable 0000007100804CEC case 4
.text:0000007100804CE4 LDRH W11, [X9,X8,LSL#1]
.text:0000007100804CE8 ADD X10, X10, X11,LSL#2
.text:0000007100804CEC BR X10 ; switch jump
.text:0000007100804CF0 ; ---------------------------------------------------------------------------
.text:0000007100804CF0
.text:0000007100804CF0 loc_7100804CF0 ; CODE XREF: get_ball_capture_ratio+128↑j
.text:0000007100804CF0 ; DATA XREF: get_ball_capture_ratio+11C↑o
.text:0000007100804CF0 LDRSW X8, [X22] ; jumptable 0000007100804CEC case 4
.text:0000007100804CF4 FMOV S8, #1.0
.text:0000007100804CF8 SUB X8, X22, X8
.text:0000007100804CFC LDRH W9, [X8]
.text:0000007100804D00 CMP W9, #5
.text:0000007100804D04 B.CC loc_7100804C88
.text:0000007100804D08 LDRH W8, [X8,#4]
.text:0000007100804D0C CBNZ X8, loc_7100804C84
.text:0000007100804D10 B loc_7100804C88
.text:0000007100804D14 ; ---------------------------------------------------------------------------
.text:0000007100804D14
.text:0000007100804D14 loc_7100804D14 ; CODE XREF: get_ball_capture_ratio+7C↑j
.text:0000007100804D14 LDR X0, [X23,#0x10]
.text:0000007100804D18 LDR X8, [X0]
.text:0000007100804D1C LDR X8, [X8]
.text:0000007100804D20 BLR X8
.text:0000007100804D24 STR X0, [X23,#8]
.text:0000007100804D28 B loc_7100804C50
.text:0000007100804D2C ; ---------------------------------------------------------------------------
.text:0000007100804D2C
.text:0000007100804D2C loc_7100804D2C ; CODE XREF: get_ball_capture_ratio+128↑j
.text:0000007100804D2C LDRSW X8, [X22] ; jumptable 0000007100804CEC case 3
.text:0000007100804D30 FMOV S8, #1.5
.text:0000007100804D34 SUB X8, X22, X8
.text:0000007100804D38 LDRH W9, [X8]
.text:0000007100804D3C CMP W9, #9
.text:0000007100804D40 B.CC loc_7100804C88
.text:0000007100804D44 LDRH W8, [X8,#8]
.text:0000007100804D48 CBNZ X8, loc_7100804C84
.text:0000007100804D4C B loc_7100804C88
.text:0000007100804D50 ; ---------------------------------------------------------------------------
.text:0000007100804D50
.text:0000007100804D50 loc_7100804D50 ; CODE XREF: get_ball_capture_ratio+E4↑j
.text:0000007100804D50 STP XZR, XZR, [X8,#8]
.text:0000007100804D54 LDR X0, [X19,#0x38]
.text:0000007100804D58 STR XZR, [X19,#0x38]
.text:0000007100804D5C CBNZ X0, loc_7100804D74
.text:0000007100804D60
.text:0000007100804D60 loc_7100804D60 ; CODE XREF: get_ball_capture_ratio+1CC↓j
.text:0000007100804D60 ; get_ball_capture_ratio+650↓j
.text:0000007100804D60 LDR X8, [X19]
.text:0000007100804D64 MOV X0, X19
.text:0000007100804D68 LDR X8, [X8,#0x50]
.text:0000007100804D6C BLR X8
.text:0000007100804D70 B loc_7100804CB0
.text:0000007100804D74 ; ---------------------------------------------------------------------------
.text:0000007100804D74
.text:0000007100804D74 loc_7100804D74 ; CODE XREF: get_ball_capture_ratio+198↑j
.text:0000007100804D74 ADD X9, X0, #0x18
.text:0000007100804D78
.text:0000007100804D78 loc_7100804D78 ; CODE XREF: get_ball_capture_ratio+1C0↓j
.text:0000007100804D78 LDAXRH W8, [X9]
.text:0000007100804D7C SUB W10, W8, #1
.text:0000007100804D80 STLXRH W11, W10, [X9]
.text:0000007100804D84 CBNZ W11, loc_7100804D78
.text:0000007100804D88 CMP W8, #1
.text:0000007100804D8C B.EQ loc_7100805210
.text:0000007100804D90 CBNZ W8, loc_7100804D60
.text:0000007100804D94
.text:0000007100804D94 loc_7100804D94 ; CODE XREF: get_ball_capture_ratio+64↑j
.text:0000007100804D94 ; get_ball_capture_ratio+88↑j ...
.text:0000007100804D94 BL abort_0
.text:0000007100804D98 ; ---------------------------------------------------------------------------
.text:0000007100804D98
.text:0000007100804D98 loc_7100804D98 ; CODE XREF: get_ball_capture_ratio+28↑j
.text:0000007100804D98 FMOV S8, #1.0
.text:0000007100804D9C B loc_7100804CB0
.text:0000007100804DA0 ; ---------------------------------------------------------------------------
.text:0000007100804DA0
.text:0000007100804DA0 loc_7100804DA0 ; CODE XREF: get_ball_capture_ratio+50↑j
.text:0000007100804DA0 MOV X0, X21
.text:0000007100804DA4 MOV X1, X20
.text:0000007100804DA8 LDR X23, [SP,#8+var_s10]
.text:0000007100804DAC LDP X20, X19, [SP,#8+var_s28]
.text:0000007100804DB0 LDP X22, X21, [SP,#8+var_s18]
.text:0000007100804DB4 LDP X29, X30, [SP,#8+var_s0]
.text:0000007100804DB8 LDR D8, [SP+8+var_8],#0x40
.text:0000007100804DBC B sub_7100805248
.text:0000007100804DC0 ; ---------------------------------------------------------------------------
.text:0000007100804DC0
.text:0000007100804DC0 loc_7100804DC0 ; CODE XREF: get_ball_capture_ratio+128↑j
.text:0000007100804DC0 LDR X8, [X19] ; jumptable 0000007100804CEC case 6
.text:0000007100804DC4 MOV W1, #0xA
.text:0000007100804DC8 MOV X0, X19
.text:0000007100804DCC LDR X8, [X8,#0xC0]
.text:0000007100804DD0 BLR X8
.text:0000007100804DD4 TBNZ W0, #0, loc_7100804DF0
.text:0000007100804DD8 LDR X8, [X19]
.text:0000007100804DDC MOV X0, X19
.text:0000007100804DE0 MOV W1, #6
.text:0000007100804DE4 LDR X8, [X8,#0xC0]
.text:0000007100804DE8 BLR X8
.text:0000007100804DEC TBZ W0, #0, loc_7100805198
.text:0000007100804DF0
.text:0000007100804DF0 loc_7100804DF0 ; CODE XREF: get_ball_capture_ratio+210↑j
.text:0000007100804DF0 LDRSW X8, [X22]
.text:0000007100804DF4 FMOV S8, #3.5
.text:0000007100804DF8 SUB X8, X22, X8
.text:0000007100804DFC LDRH W9, [X8]
.text:0000007100804E00 CMP W9, #0xB
.text:0000007100804E04 B.CC loc_7100804C8C
.text:0000007100804E08 LDRH W8, [X8,#0xA]
.text:0000007100804E0C CBNZ X8, loc_71008051F4
.text:0000007100804E10 B loc_7100804C8C
.text:0000007100804E14 ; ---------------------------------------------------------------------------
.text:0000007100804E14
.text:0000007100804E14 loc_7100804E14 ; CODE XREF: get_ball_capture_ratio+128↑j
.text:0000007100804E14 LDRB W8, [X20,#0x20] ; jumptable 0000007100804CEC case 7
.text:0000007100804E18 LDRB W9, [X20,#0x21]
.text:0000007100804E1C ORR W8, W8, W9
.text:0000007100804E20 CBZ W8, loc_7100805120
.text:0000007100804E24 LDRSW X8, [X22]
.text:0000007100804E28 FMOV S8, #3.5
.text:0000007100804E2C SUB X8, X22, X8
.text:0000007100804E30 LDRH W9, [X8]
.text:0000007100804E34 CMP W9, #0x17
.text:0000007100804E38 B.CC loc_7100804C88
.text:0000007100804E3C LDRH W8, [X8,#0x16]
.text:0000007100804E40 CBNZ X8, loc_7100804C84
.text:0000007100804E44 B loc_7100804C88
.text:0000007100804E48 ; ---------------------------------------------------------------------------
.text:0000007100804E48
.text:0000007100804E48 loc_7100804E48 ; CODE XREF: get_ball_capture_ratio+128↑j
.text:0000007100804E48 LDR X0, [X20,#8] ; jumptable 0000007100804CEC case 8
.text:0000007100804E4C LDR X8, [X0]
.text:0000007100804E50 LDR X8, [X8,#0x88]
.text:0000007100804E54 BLR X8
.text:0000007100804E58 AND W8, W0, #0xFFFF
.text:0000007100804E5C CMP W8, #0x1D
.text:0000007100804E60 B.HI loc_7100805120
.text:0000007100804E64 MOV W8, #0x29 ; ')'
.text:0000007100804E68 FMOV S1, #10.0
.text:0000007100804E6C SUB W8, W8, W0,UXTH
.text:0000007100804E70 SCVTF S0, W8
.text:0000007100804E74 FDIV S8, S0, S1
.text:0000007100804E78 B loc_7100804C88
.text:0000007100804E7C ; ---------------------------------------------------------------------------
.text:0000007100804E7C
.text:0000007100804E7C loc_7100804E7C ; CODE XREF: get_ball_capture_ratio+128↑j
.text:0000007100804E7C LDRB W8, [X20,#0x24] ; jumptable 0000007100804CEC case 9
.text:0000007100804E80 CBZ W8, loc_7100805120
.text:0000007100804E84 LDRSW X8, [X22]
.text:0000007100804E88 FMOV S8, #3.5
.text:0000007100804E8C SUB X8, X22, X8
.text:0000007100804E90 LDRH W9, [X8]
.text:0000007100804E94 CMP W9, #0xD
.text:0000007100804E98 B.CC loc_7100804C88
.text:0000007100804E9C LDRH W8, [X8,#0xC]
.text:0000007100804EA0 CBNZ X8, loc_7100804C84
.text:0000007100804EA4 B loc_7100804C88
.text:0000007100804EA8 ; ---------------------------------------------------------------------------
.text:0000007100804EA8
.text:0000007100804EA8 loc_7100804EA8 ; CODE XREF: get_ball_capture_ratio+128↑j
.text:0000007100804EA8 LDRSW X8, [X22] ; jumptable 0000007100804CEC case 10
.text:0000007100804EAC FMOV S8, #1.0
.text:0000007100804EB0 SUB X8, X22, X8
.text:0000007100804EB4 LDRH W9, [X8]
.text:0000007100804EB8 CMP W9, #0xF
.text:0000007100804EBC B.CC loc_7100804C88
.text:0000007100804EC0 LDRH W8, [X8,#0xE]
.text:0000007100804EC4 CBZ W8, loc_7100804C88
.text:0000007100804EC8 LDR X20, [X20,#8]
.text:0000007100804ECC CBZ X20, loc_7100804C88
.text:0000007100804ED0 MOV X0, X20
.text:0000007100804ED4 BL sub_710277E7C0
.text:0000007100804ED8 LDRSW X8, [X22]
.text:0000007100804EDC SUB X8, X22, X8
.text:0000007100804EE0 LDRH W9, [X8]
.text:0000007100804EE4 CMP W9, #0xF
.text:0000007100804EE8 B.CC loc_7100804F08
.text:0000007100804EEC LDRH W8, [X8,#0xE]
.text:0000007100804EF0 ADD X8, X22, X8
.text:0000007100804EF4 LDR W9, [X8]
.text:0000007100804EF8 ADD X8, X8, X9
.text:0000007100804EFC LDR W9, [X8,#4]
.text:0000007100804F00 CMP W0, W9
.text:0000007100804F04 B.LS loc_7100805208
.text:0000007100804F08
.text:0000007100804F08 loc_7100804F08 ; CODE XREF: get_ball_capture_ratio+324↑j
.text:0000007100804F08 MOV X0, X20
.text:0000007100804F0C BL sub_710277E7C0
.text:0000007100804F10 LDRSW X8, [X22]
.text:0000007100804F14 SUB X8, X22, X8
.text:0000007100804F18 LDRH W9, [X8]
.text:0000007100804F1C CMP W9, #0xF
.text:0000007100804F20 B.CC loc_7100804F40
.text:0000007100804F24 LDRH W8, [X8,#0xE]
.text:0000007100804F28 ADD X8, X22, X8
.text:0000007100804F2C LDR W9, [X8]
.text:0000007100804F30 ADD X8, X8, X9
.text:0000007100804F34 LDR W9, [X8,#0xC]
.text:0000007100804F38 CMP W0, W9
.text:0000007100804F3C B.LS loc_7100805218
.text:0000007100804F40
.text:0000007100804F40 loc_7100804F40 ; CODE XREF: get_ball_capture_ratio+35C↑j
.text:0000007100804F40 MOV X0, X20
.text:0000007100804F44 BL sub_710277E7C0
.text:0000007100804F48 LDRSW X8, [X22]
.text:0000007100804F4C SUB X8, X22, X8
.text:0000007100804F50 LDRH W8, [X8,#0xE]
.text:0000007100804F54 ADD X8, X22, X8
.text:0000007100804F58 LDR W9, [X8]
.text:0000007100804F5C ADD X8, X8, X9
.text:0000007100804F60 LDR W9, [X8,#0x14]
.text:0000007100804F64 CMP W0, W9
.text:0000007100804F68 B.LS loc_7100805220
.text:0000007100804F6C LDR S8, [X8,#0x20]
.text:0000007100804F70 B loc_7100804C88
.text:0000007100804F74 ; ---------------------------------------------------------------------------
.text:0000007100804F74
.text:0000007100804F74 loc_7100804F74 ; CODE XREF: get_ball_capture_ratio+128↑j
.text:0000007100804F74 LDRB W8, [X20,#0x23] ; jumptable 0000007100804CEC case 13
.text:0000007100804F78 CBZ W8, loc_7100805120
.text:0000007100804F7C LDRSW X8, [X22]
.text:0000007100804F80 FMOV S8, #3.0
.text:0000007100804F84 SUB X8, X22, X8
.text:0000007100804F88 LDRH W9, [X8]
.text:0000007100804F8C CMP W9, #0x1B
.text:0000007100804F90 B.CC loc_7100804C88
.text:0000007100804F94 LDRH W8, [X8,#0x1A]
.text:0000007100804F98 CBNZ X8, loc_7100804C84
.text:0000007100804F9C B loc_7100804C88
.text:0000007100804FA0 ; ---------------------------------------------------------------------------
.text:0000007100804FA0
.text:0000007100804FA0 loc_7100804FA0 ; CODE XREF: get_ball_capture_ratio+128↑j
.text:0000007100804FA0 LDR X8, [X20,#8] ; jumptable 0000007100804CEC case 15
.text:0000007100804FA4 FMOV S8, #1.0
.text:0000007100804FA8 CBZ X8, loc_7100804C88
.text:0000007100804FAC LDRB W8, [X8,#0x55]
.text:0000007100804FB0 SUB W9, W8, #2
.text:0000007100804FB4 CMP W9, #3
.text:0000007100804FB8 B.CS loc_71008051FC
.text:0000007100804FBC
.text:0000007100804FBC loc_7100804FBC ; CODE XREF: get_ball_capture_ratio+63C↓j
.text:0000007100804FBC LDRSW X8, [X22]
.text:0000007100804FC0 FMOV S8, #5.0
.text:0000007100804FC4 SUB X8, X22, X8
.text:0000007100804FC8 LDRH W9, [X8]
.text:0000007100804FCC CMP W9, #0x19
.text:0000007100804FD0 B.CC loc_7100804C88
.text:0000007100804FD4 LDRH W8, [X8,#0x18]
.text:0000007100804FD8 CBNZ X8, loc_7100804C84
.text:0000007100804FDC B loc_7100804C88
.text:0000007100804FE0 ; ---------------------------------------------------------------------------
.text:0000007100804FE0
.text:0000007100804FE0 loc_7100804FE0 ; CODE XREF: get_ball_capture_ratio+128↑j
.text:0000007100804FE0 LDR X8, [X19] ; jumptable 0000007100804CEC case 17
.text:0000007100804FE4 MOV X0, X19
.text:0000007100804FE8 LDR X8, [X8,#0xA8]
.text:0000007100804FEC BLR X8
.text:0000007100804FF0 AND W8, W0, #0xFFFF
.text:0000007100804FF4 CMP W8, #0x64 ; 'd'
.text:0000007100804FF8 B.CC loc_7100805198
.text:0000007100804FFC LDRSW X8, [X22]
.text:0000007100805000 FMOV S8, #4.0
.text:0000007100805004 SUB X8, X22, X8
.text:0000007100805008 LDRH W9, [X8]
.text:000000710080500C CMP W9, #0x23 ; '#'
.text:0000007100805010 B.CC loc_7100804C8C
.text:0000007100805014 LDRH W8, [X8,#0x22]
.text:0000007100805018 CBNZ X8, loc_71008051F4
.text:000000710080501C B loc_7100804C8C
.text:0000007100805020 ; ---------------------------------------------------------------------------
.text:0000007100805020
.text:0000007100805020 loc_7100805020 ; CODE XREF: get_ball_capture_ratio+128↑j
.text:0000007100805020 LDR X0, [X20] ; jumptable 0000007100804CEC case 18
.text:0000007100805024 CBZ X0, loc_7100805120
.text:0000007100805028 LDR X8, [X0]
.text:000000710080502C LDR X8, [X8,#0x88]
.text:0000007100805030 BLR X8
.text:0000007100805034 LDR X8, [X19]
.text:0000007100805038 MOV W20, W0
.text:000000710080503C MOV X0, X19
.text:0000007100805040 LDR X8, [X8,#0x88]
.text:0000007100805044 BLR X8
.text:0000007100805048 LDR X8, [X21]
.text:000000710080504C MOV W2, W0
.text:0000007100805050 MOV X0, X21
.text:0000007100805054 MOV W1, W20
.text:0000007100805058 LDR X8, [X8,#0x48]
.text:000000710080505C BLR X8
.text:0000007100805060 FMOV S8, S0
.text:0000007100805064 B loc_7100804C8C
.text:0000007100805068 ; ---------------------------------------------------------------------------
.text:0000007100805068
.text:0000007100805068 loc_7100805068 ; CODE XREF: get_ball_capture_ratio+128↑j
.text:0000007100805068 LDRB W8, [X20,#0x20] ; jumptable 0000007100804CEC case 19
.text:000000710080506C CBZ W8, loc_7100805120
.text:0000007100805070 LDRSW X8, [X22]
.text:0000007100805074 FMOV S8, #3.5
.text:0000007100805078 SUB X8, X22, X8
.text:000000710080507C LDRH W9, [X8]
.text:0000007100805080 CMP W9, #0x2D ; '-'
.text:0000007100805084 B.CC loc_7100804C88
.text:0000007100805088 LDRH W8, [X8,#0x2C]
.text:000000710080508C CBNZ X8, loc_7100804C84
.text:0000007100805090 B loc_7100804C88
.text:0000007100805094 ; ---------------------------------------------------------------------------
.text:0000007100805094
.text:0000007100805094 loc_7100805094 ; CODE XREF: get_ball_capture_ratio+128↑j
.text:0000007100805094 LDR X0, [X20] ; jumptable 0000007100804CEC case 21
.text:0000007100805098 CBZ X0, loc_7100805120
.text:000000710080509C LDR X8, [X0]
.text:00000071008050A0 LDR X8, [X8,#0x68]
.text:00000071008050A4 BLR X8
.text:00000071008050A8 AND W23, W0, #0xFFFF
.text:00000071008050AC LDR X0, [X20]
.text:00000071008050B0 LDR X8, [X0]
.text:00000071008050B4 LDR X8, [X8,#0x90]
.text:00000071008050B8 BLR X8
.text:00000071008050BC LDR X8, [X19]
.text:00000071008050C0 MOV W20, W0
.text:00000071008050C4 MOV X0, X19
.text:00000071008050C8 LDR X8, [X8,#0x68]
.text:00000071008050CC BLR X8
.text:00000071008050D0 LDR X8, [X19]
.text:00000071008050D4 MOV W21, W0
.text:00000071008050D8 MOV X0, X19
.text:00000071008050DC LDR X8, [X8,#0x90]
.text:00000071008050E0 BLR X8
.text:00000071008050E4 FMOV S8, #1.0
.text:00000071008050E8 CMP W23, W21,UXTH
.text:00000071008050EC B.NE loc_7100804C8C
.text:00000071008050F0 AND W8, W20, #0xFF
.text:00000071008050F4 CMP W8, W0,UXTB
.text:00000071008050F8 B.EQ loc_7100804C8C
.text:00000071008050FC LDRSW X8, [X22]
.text:0000007100805100 FMOV S8, #8.0
.text:0000007100805104 SUB X8, X22, X8
.text:0000007100805108 LDRH W9, [X8]
.text:000000710080510C CMP W9, #0x2B ; '+'
.text:0000007100805110 B.CC loc_7100804C8C
.text:0000007100805114 LDRH W8, [X8,#0x2A]
.text:0000007100805118 CBNZ X8, loc_71008051F4
.text:000000710080511C B loc_7100804C8C
.text:0000007100805120 ; ---------------------------------------------------------------------------
.text:0000007100805120
.text:0000007100805120 loc_7100805120 ; CODE XREF: get_ball_capture_ratio+25C↑j
.text:0000007100805120 ; get_ball_capture_ratio+29C↑j ...
.text:0000007100805120 FMOV S8, #1.0
.text:0000007100805124 B loc_7100804C88
.text:0000007100805128 ; ---------------------------------------------------------------------------
.text:0000007100805128
.text:0000007100805128 loc_7100805128 ; CODE XREF: get_ball_capture_ratio+128↑j
.text:0000007100805128 LDR X8, [X19] ; jumptable 0000007100804CEC case 23
.text:000000710080512C MOV X0, X19
.text:0000007100805130 LDR X8, [X8,#0xC8]
.text:0000007100805134 BLR X8
.text:0000007100805138 TBZ W0, #0, loc_7100805198
.text:000000710080513C LDRSW X8, [X22]
.text:0000007100805140 FMOV S8, #4.0
.text:0000007100805144 SUB X8, X22, X8
.text:0000007100805148 LDRH W9, [X8]
.text:000000710080514C CMP W9, #0x29 ; ')'
.text:0000007100805150 B.CC loc_7100804C8C
.text:0000007100805154 LDRH W8, [X8,#0x28]
.text:0000007100805158 CBNZ X8, loc_71008051F4
.text:000000710080515C B loc_7100804C8C
.text:0000007100805160 ; ---------------------------------------------------------------------------
.text:0000007100805160
.text:0000007100805160 loc_7100805160 ; CODE XREF: get_ball_capture_ratio+128↑j
.text:0000007100805160 LDR X8, [X19] ; jumptable 0000007100804CEC case 25
.text:0000007100805164 MOV X0, X19
.text:0000007100805168 LDR X8, [X8,#0xB8]
.text:000000710080516C BLR X8
.text:0000007100805170 TBZ W0, #0, loc_7100805198
.text:0000007100805174 LDRSW X8, [X22]
.text:0000007100805178 FMOV S8, #4.0
.text:000000710080517C SUB X8, X22, X8
.text:0000007100805180 LDRH W9, [X8]
.text:0000007100805184 CMP W9, #0x21 ; '!'
.text:0000007100805188 B.CC loc_7100804C8C
.text:000000710080518C LDRH W8, [X8,#0x20]
.text:0000007100805190 CBNZ X8, loc_71008051F4
.text:0000007100805194 B loc_7100804C8C
.text:0000007100805198 ; ---------------------------------------------------------------------------
.text:0000007100805198
.text:0000007100805198 loc_7100805198 ; CODE XREF: get_ball_capture_ratio+228↑j
.text:0000007100805198 ; get_ball_capture_ratio+434↑j ...
.text:0000007100805198 FMOV S8, #1.0
.text:000000710080519C B loc_7100804C8C
.text:00000071008051A0 ; ---------------------------------------------------------------------------
.text:00000071008051A0
.text:00000071008051A0 loc_71008051A0 ; CODE XREF: get_ball_capture_ratio+128↑j
.text:00000071008051A0 LDR X8, [X19] ; jumptable 0000007100804CEC case 26
.text:00000071008051A4 MOV X0, X19
.text:00000071008051A8 LDR X8, [X8,#0xB0]
.text:00000071008051AC BLR X8
.text:00000071008051B0 TBZ W0, #0, loc_71008051D0
.text:00000071008051B4 FMOV S8, #5.0
.text:00000071008051B8 B loc_7100804C8C
.text:00000071008051BC ; ---------------------------------------------------------------------------
.text:00000071008051BC
.text:00000071008051BC def_7100804CEC ; CODE XREF: get_ball_capture_ratio+110↑j
.text:00000071008051BC ; get_ball_capture_ratio+128↑j
.text:00000071008051BC MOV X0, X21 ; jumptable 0000007100804CEC default case, cases 5,11,12,14,16,20,22,24
.text:00000071008051C0 MOV X1, X20
.text:00000071008051C4 BL sub_7100805248
.text:00000071008051C8 FMOV S8, S0
.text:00000071008051CC B loc_7100804C88
.text:00000071008051D0 ; ---------------------------------------------------------------------------
.text:00000071008051D0
.text:00000071008051D0 loc_71008051D0 ; CODE XREF: get_ball_capture_ratio+5EC↑j
.text:00000071008051D0 LDRSW X8, [X22]
.text:00000071008051D4 ADRP X10, #dword_7103163BCC@PAGE
.text:00000071008051D8 SUB X8, X22, X8
.text:00000071008051DC LDR S8, [X10,#dword_7103163BCC@PAGEOFF]
.text:00000071008051E0 LDRH W9, [X8]
.text:00000071008051E4 CMP W9, #0x1F
.text:00000071008051E8 B.CC loc_7100804C8C
.text:00000071008051EC LDRH W8, [X8,#0x1E]
.text:00000071008051F0 CBZ X8, loc_7100804C8C
.text:00000071008051F4
.text:00000071008051F4 loc_71008051F4 ; CODE XREF: get_ball_capture_ratio+248↑j
.text:00000071008051F4 ; get_ball_capture_ratio+454↑j ...
.text:00000071008051F4 LDR S8, [X22,X8]
.text:00000071008051F8 B loc_7100804C8C
.text:00000071008051FC ; ---------------------------------------------------------------------------
.text:00000071008051FC
.text:00000071008051FC loc_71008051FC ; CODE XREF: get_ball_capture_ratio+3F4↑j
.text:00000071008051FC CMP W8, #1
.text:0000007100805200 B.EQ loc_7100804FBC
.text:0000007100805204 B loc_7100804C88
.text:0000007100805208 ; ---------------------------------------------------------------------------
.text:0000007100805208
.text:0000007100805208 loc_7100805208 ; CODE XREF: get_ball_capture_ratio+340↑j
.text:0000007100805208 LDR S8, [X8,#8]
.text:000000710080520C B loc_7100804C88
.text:0000007100805210 ; ---------------------------------------------------------------------------
.text:0000007100805210
.text:0000007100805210 loc_7100805210 ; CODE XREF: get_ball_capture_ratio+1C8↑j
.text:0000007100805210 BL sub_7100009990
.text:0000007100805214 B loc_7100804D60
.text:0000007100805218 ; ---------------------------------------------------------------------------
.text:0000007100805218
.text:0000007100805218 loc_7100805218 ; CODE XREF: get_ball_capture_ratio+378↑j
.text:0000007100805218 LDR S8, [X8,#0x10]
.text:000000710080521C B loc_7100804C88
.text:0000007100805220 ; ---------------------------------------------------------------------------
.text:0000007100805220
.text:0000007100805220 loc_7100805220 ; CODE XREF: get_ball_capture_ratio+3A4↑j
.text:0000007100805220 LDR S8, [X8,#0x18]
.text:0000007100805224 B loc_7100804C88
.text:0000007100805224 ; End of function get_ball_capture_ratio

Comments are disabled for this gist.