Skip to content

Instantly share code, notes, and snippets.

@Lusamine
Created October 1, 2022 00:06
Show Gist options
  • Save Lusamine/68fa57eb410c8e5c0d21005b87e066a8 to your computer and use it in GitHub Desktop.
Save Lusamine/68fa57eb410c8e5c0d21005b87e066a8 to your computer and use it in GitHub Desktop.
bool __fastcall select_hidden_power_type(__int64 a1, _BYTE *chosen_type, __int64 a3, char a4)
{
_BYTE *v6; // x8
int v7; // w9
int v8; // w10
bool v9; // w11
int v10; // w12
int v11; // w11
unsigned __int16 def_types; // w21
__int32 effectiveness_total; // w0
__int32 best_effectiveness; // w1 MAPDST
__int64 count_best_types; // x23
__int32 v17; // w0
__int32 v18; // w0
__int32 v19; // w0
__int32 v20; // w0
__int32 v21; // w0
__int32 v22; // w0
__int32 v23; // w0
__int32 v24; // w0
__int32 v25; // w0
__int32 v26; // w0
__int32 v27; // w0
__int32 v28; // w0
__int32 v29; // w0
__int32 v30; // w0
__int32 v31; // w0
__int32 v32; // w0
__int32 v33; // w0
__int64 v34; // x9
__int64 v35; // x10
__int64 v36; // x8
unsigned __int64 v37; // x9
unsigned __int64 v38; // x10
unsigned __int64 v39; // x9
__int64 s0; // x10
__int64 s1; // x11
__int64 v42; // x13
int v43; // w12
__int64 v44; // x10
unsigned int rand_types; // w12
__int64 index; // x9
bool success; // w0
char v48[20]; // [xsp+Ch] [xbp-44h] BYREF
v6 = *(sub_7100833EEC(*(*(a1 + 104) + 208LL), a4) + 112);
v7 = v6[732];
v8 = v6[733];
v9 = (v6[360] & 7) != 0;
v10 = v7 == 18 || v7 == 2 && v9;
v11 = v8 == 18 || v9 && v8 == 2;
if ( (v6[905] & 0x80000000) != 0 )
{
if ( (v10 & 1) != 0 )
{
if ( (v11 & 1) == 0 )
{
LABEL_5:
LOBYTE(v7) = v8;
goto LABEL_6;
}
LOBYTE(v7) = 18;
}
else if ( (v11 & 1) == 0 )
{
goto LABEL_6;
}
goto LABEL_15;
}
if ( v10 )
{
if ( v11 )
LOBYTE(v8) = 0;
goto LABEL_5;
}
if ( v11 )
LABEL_15:
LOBYTE(v8) = v7;
LABEL_6:
def_types = v7 & 0x1F | (32 * (v8 & 0x1F)) & 0x83FF | ((v6[734] & 0x1F) << 10);
effectiveness_total = get_effectiveness_total(0, def_types);
if ( effectiveness_total > 0 )
{
best_effectiveness = effectiveness_total;
}
else
{
best_effectiveness = 0;
count_best_types = 0LL;
best_effectiveness = 0;
if ( effectiveness_total )
goto LABEL_18;
}
count_best_types = 1LL;
v48[0] = 0;
LABEL_18:
v17 = get_effectiveness_total(1u, def_types);
if ( best_effectiveness < v17 )
{
count_best_types = 1LL;
best_effectiveness = v17;
v48[0] = 1;
}
else if ( best_effectiveness == v17 )
{
*(v48 | count_best_types) = 1;
count_best_types = (count_best_types + 1);
}
v18 = get_effectiveness_total(2u, def_types);
if ( best_effectiveness < v18 )
{
LODWORD(count_best_types) = 1;
best_effectiveness = v18;
v48[0] = 2;
}
else if ( best_effectiveness == v18 )
{
*(v48 | count_best_types) = 2;
LODWORD(count_best_types) = count_best_types + 1;
}
v19 = get_effectiveness_total(3u, def_types);
if ( best_effectiveness < v19 )
{
LODWORD(count_best_types) = 1;
best_effectiveness = v19;
v48[0] = 3;
}
else if ( best_effectiveness == v19 )
{
v48[count_best_types] = 3;
LODWORD(count_best_types) = count_best_types + 1;
}
v20 = get_effectiveness_total(4u, def_types);
if ( best_effectiveness < v20 )
{
LODWORD(count_best_types) = 1;
best_effectiveness = v20;
v48[0] = 4;
}
else if ( best_effectiveness == v20 )
{
v48[count_best_types] = 4;
LODWORD(count_best_types) = count_best_types + 1;
}
v21 = get_effectiveness_total(5u, def_types);
if ( best_effectiveness < v21 )
{
LODWORD(count_best_types) = 1;
best_effectiveness = v21;
v48[0] = 5;
}
else if ( best_effectiveness == v21 )
{
v48[count_best_types] = 5;
LODWORD(count_best_types) = count_best_types + 1;
}
v22 = get_effectiveness_total(6u, def_types);
if ( best_effectiveness < v22 )
{
LODWORD(count_best_types) = 1;
best_effectiveness = v22;
v48[0] = 6;
}
else if ( best_effectiveness == v22 )
{
v48[count_best_types] = 6;
LODWORD(count_best_types) = count_best_types + 1;
}
v23 = get_effectiveness_total(7u, def_types);
if ( best_effectiveness < v23 )
{
LODWORD(count_best_types) = 1;
best_effectiveness = v23;
v48[0] = 7;
}
else if ( best_effectiveness == v23 )
{
v48[count_best_types] = 7;
LODWORD(count_best_types) = count_best_types + 1;
}
v24 = get_effectiveness_total(8u, def_types);
if ( best_effectiveness < v24 )
{
LODWORD(count_best_types) = 1;
best_effectiveness = v24;
v48[0] = 8;
}
else if ( best_effectiveness == v24 )
{
v48[count_best_types] = 8;
LODWORD(count_best_types) = count_best_types + 1;
}
v25 = get_effectiveness_total(9u, def_types);
if ( best_effectiveness < v25 )
{
LODWORD(count_best_types) = 1;
best_effectiveness = v25;
v48[0] = 9;
}
else if ( best_effectiveness == v25 )
{
v48[count_best_types] = 9;
LODWORD(count_best_types) = count_best_types + 1;
}
v26 = get_effectiveness_total(0xAu, def_types);
if ( best_effectiveness < v26 )
{
LODWORD(count_best_types) = 1;
best_effectiveness = v26;
v48[0] = 10;
}
else if ( best_effectiveness == v26 )
{
v48[count_best_types] = 10;
LODWORD(count_best_types) = count_best_types + 1;
}
v27 = get_effectiveness_total(0xBu, def_types);
if ( best_effectiveness < v27 )
{
LODWORD(count_best_types) = 1;
best_effectiveness = v27;
v48[0] = 11;
}
else if ( best_effectiveness == v27 )
{
v48[count_best_types] = 11;
LODWORD(count_best_types) = count_best_types + 1;
}
v28 = get_effectiveness_total(12u, def_types);
if ( best_effectiveness < v28 )
{
LODWORD(count_best_types) = 1;
best_effectiveness = v28;
v48[0] = 12;
}
else if ( best_effectiveness == v28 )
{
v48[count_best_types] = 12;
LODWORD(count_best_types) = count_best_types + 1;
}
v29 = get_effectiveness_total(0xDu, def_types);
if ( best_effectiveness < v29 )
{
LODWORD(count_best_types) = 1;
best_effectiveness = v29;
v48[0] = 13;
}
else if ( best_effectiveness == v29 )
{
v48[count_best_types] = 13;
LODWORD(count_best_types) = count_best_types + 1;
}
v30 = get_effectiveness_total(14u, def_types);
if ( best_effectiveness < v30 )
{
LODWORD(count_best_types) = 1;
best_effectiveness = v30;
v48[0] = 14;
}
else if ( best_effectiveness == v30 )
{
v48[count_best_types] = 14;
LODWORD(count_best_types) = count_best_types + 1;
}
v31 = get_effectiveness_total(15u, def_types);
if ( best_effectiveness < v31 )
{
LODWORD(count_best_types) = 1;
best_effectiveness = v31;
v48[0] = 15;
}
else if ( best_effectiveness == v31 )
{
v48[count_best_types] = 15;
LODWORD(count_best_types) = count_best_types + 1;
}
v32 = get_effectiveness_total(16u, def_types);
if ( best_effectiveness < v32 )
{
LODWORD(count_best_types) = 1;
best_effectiveness = v32;
v48[0] = 16;
}
else if ( best_effectiveness == v32 )
{
v48[count_best_types] = 16;
LODWORD(count_best_types) = count_best_types + 1;
}
v33 = get_effectiveness_total(17u, def_types);
if ( best_effectiveness < v33 )
{
index = 0LL;
v48[0] = 17;
goto LABEL_79;
}
if ( best_effectiveness == v33 )
{
v48[count_best_types] = 17;
LODWORD(count_best_types) = count_best_types + 1;
if ( count_best_types >= 2 )
goto LABEL_70;
LABEL_81:
index = 0LL;
LABEL_79:
success = 1;
*chosen_type = v48[index];
return success;
}
if ( count_best_types > 0 )
{
if ( count_best_types >= 2 )
{
LABEL_70:
v34 = __clz(count_best_types);
v35 = 31LL;
if ( ((0x7FFFFFFFu >> v34) & count_best_types) != 0 )
v35 = 32LL;
v36 = *(*(a1 + 104) + 192LL);
v37 = v35 - v34;
v38 = v37 >> 6;
if ( (v37 & 0x3F) != 0 )
++v38;
if ( v38 > v37 )
LODWORD(v39) = 0;
else
v39 = 0xFFFFFFFFFFFFFFFFLL >> -(v37 / v38);
s0 = *(v36 + 112);
s1 = *(v36 + 120);
do
{
v42 = s0 ^ s1;
v43 = s0 + s1;
v44 = s0 ^ s1 ^ __ROR8__(s0, 40);
s1 = __ROR8__(v42, 27);
rand_types = v43 & v39;
s0 = v44 ^ (v42 << 16);
}
while ( count_best_types <= rand_types );
index = rand_types;
*(v36 + 112) = s0;
*(v36 + 120) = s1;
goto LABEL_79;
}
goto LABEL_81;
}
return 0;
}
------
.text:000000710082A90C ; bool __fastcall select_hidden_power_type(__int64 a1, _BYTE *chosen_type, __int64 a3, char a4)
.text:000000710082A90C select_hidden_power_type ; CODE XREF: sub_710082A3C0+104↑p
.text:000000710082A90C ; sub_710082A3C0+170↑p
.text:000000710082A90C
.text:000000710082A90C var_44 = -0x44
.text:000000710082A90C var_30 = -0x30
.text:000000710082A90C var_20 = -0x20
.text:000000710082A90C var_10 = -0x10
.text:000000710082A90C var_s0 = 0
.text:000000710082A90C
.text:000000710082A90C SUB SP, SP, #0x60
.text:000000710082A910 STP X24, X23, [SP,#0x50+var_30]
.text:000000710082A914 STP X22, X21, [SP,#0x50+var_20]
.text:000000710082A918 STP X20, X19, [SP,#0x50+var_10]
.text:000000710082A91C STP X29, X30, [SP,#0x50+var_s0]
.text:000000710082A920 ADD X29, SP, #0x50
.text:000000710082A924 LDR X8, [X0,#0x68]
.text:000000710082A928 MOV X20, X0
.text:000000710082A92C MOV X19, X1
.text:000000710082A930 MOV W1, W3
.text:000000710082A934 LDR X0, [X8,#0xD0]
.text:000000710082A938 BL sub_7100833EEC
.text:000000710082A93C LDR X8, [X0,#0x70]
.text:000000710082A940 LDRB W9, [X8,#0x168]
.text:000000710082A944 TST W9, #7
.text:000000710082A948 LDRB W9, [X8,#0x2DC]
.text:000000710082A94C LDRB W10, [X8,#0x2DD]
.text:000000710082A950 CSET W11, NE
.text:000000710082A954 CMP W9, #0x12
.text:000000710082A958 CSET W12, EQ
.text:000000710082A95C CMP W9, #2
.text:000000710082A960 CSET W13, EQ
.text:000000710082A964 CMP W10, #0x12
.text:000000710082A968 CSET W14, EQ
.text:000000710082A96C CMP W10, #2
.text:000000710082A970 LDRSB W16, [X8,#0x389]
.text:000000710082A974 AND W13, W13, W11
.text:000000710082A978 CSET W15, EQ
.text:000000710082A97C AND W11, W11, W15
.text:000000710082A980 ORR W12, W12, W13
.text:000000710082A984 ORR W11, W14, W11
.text:000000710082A988 TBNZ W16, #0x1F, loc_710082A9DC
.text:000000710082A98C CBZ W12, loc_710082A9EC
.text:000000710082A990 CMP W11, #0
.text:000000710082A994 CSEL W10, WZR, W10, NE
.text:000000710082A998
.text:000000710082A998 loc_710082A998 ; CODE XREF: select_hidden_power_type+D4↓j
.text:000000710082A998 MOV W9, W10
.text:000000710082A99C
.text:000000710082A99C loc_710082A99C ; CODE XREF: select_hidden_power_type:loc_710082A9EC↓j
.text:000000710082A99C ; select_hidden_power_type:loc_710082A9F4↓j ...
.text:000000710082A99C LDRB W8, [X8,#0x2DE]
.text:000000710082A9A0 AND W10, W10, #0x1F
.text:000000710082A9A4 AND W21, W9, #0x1F
.text:000000710082A9A8 BFI W21, W10, #5, #5
.text:000000710082A9AC AND W8, W8, #0x1F
.text:000000710082A9B0 BFI W21, W8, #0xA, #5
.text:000000710082A9B4 MOV W0, WZR ; atk_type
.text:000000710082A9B8 MOV W1, W21 ; def_type
.text:000000710082A9BC BL get_effectiveness_total
.text:000000710082A9C0 CMP W0, #0
.text:000000710082A9C4 B.GT loc_710082AA00
.text:000000710082A9C8 MOV W1, WZR
.text:000000710082A9CC MOV W23, WZR
.text:000000710082A9D0 MOV W24, WZR
.text:000000710082A9D4 CBNZ W0, loc_710082AA10
.text:000000710082A9D8 B loc_710082AA04
.text:000000710082A9DC ; ---------------------------------------------------------------------------
.text:000000710082A9DC
.text:000000710082A9DC loc_710082A9DC ; CODE XREF: select_hidden_power_type+7C↑j
.text:000000710082A9DC TBZ W12, #0, loc_710082A9F4
.text:000000710082A9E0 TBZ W11, #0, loc_710082A998
.text:000000710082A9E4 MOV W9, #0x12
.text:000000710082A9E8 B loc_710082A9F8
.text:000000710082A9EC ; ---------------------------------------------------------------------------
.text:000000710082A9EC
.text:000000710082A9EC loc_710082A9EC ; CODE XREF: select_hidden_power_type+80↑j
.text:000000710082A9EC CBZ W11, loc_710082A99C
.text:000000710082A9F0 B loc_710082A9F8
.text:000000710082A9F4 ; ---------------------------------------------------------------------------
.text:000000710082A9F4
.text:000000710082A9F4 loc_710082A9F4 ; CODE XREF: select_hidden_power_type:loc_710082A9DC↑j
.text:000000710082A9F4 TBZ W11, #0, loc_710082A99C
.text:000000710082A9F8
.text:000000710082A9F8 loc_710082A9F8 ; CODE XREF: select_hidden_power_type+DC↑j
.text:000000710082A9F8 ; select_hidden_power_type+E4↑j
.text:000000710082A9F8 MOV W10, W9
.text:000000710082A9FC B loc_710082A99C
.text:000000710082AA00 ; ---------------------------------------------------------------------------
.text:000000710082AA00
.text:000000710082AA00 loc_710082AA00 ; CODE XREF: select_hidden_power_type+B8↑j
.text:000000710082AA00 MOV W1, W0
.text:000000710082AA04
.text:000000710082AA04 loc_710082AA04 ; CODE XREF: select_hidden_power_type+CC↑j
.text:000000710082AA04 MOV W23, #1
.text:000000710082AA08 MOV W24, W1
.text:000000710082AA0C STRB WZR, [SP,#0x50+var_44]
.text:000000710082AA10
.text:000000710082AA10 loc_710082AA10 ; CODE XREF: select_hidden_power_type+C8↑j
.text:000000710082AA10 MOV W0, #1 ; atk_type
.text:000000710082AA14 MOV W1, W21 ; def_type
.text:000000710082AA18 MOV W22, #1
.text:000000710082AA1C BL get_effectiveness_total
.text:000000710082AA20 CMP W24, W0
.text:000000710082AA24 B.LT loc_710082AE2C
.text:000000710082AA28 B.EQ loc_710082AC98
.text:000000710082AA2C
.text:000000710082AA2C loc_710082AA2C ; CODE XREF: select_hidden_power_type+3A4↓j
.text:000000710082AA2C ; select_hidden_power_type+52C↓j
.text:000000710082AA2C MOV W0, #2 ; atk_type
.text:000000710082AA30 MOV W1, W21 ; def_type
.text:000000710082AA34 MOV W22, #2
.text:000000710082AA38 BL get_effectiveness_total
.text:000000710082AA3C CMP W24, W0
.text:000000710082AA40 B.LT loc_710082AE3C
.text:000000710082AA44 B.EQ loc_710082ACB4
.text:000000710082AA48
.text:000000710082AA48 loc_710082AA48 ; CODE XREF: select_hidden_power_type+3C0↓j
.text:000000710082AA48 ; select_hidden_power_type+53C↓j
.text:000000710082AA48 MOV W0, #3 ; atk_type
.text:000000710082AA4C MOV W1, W21 ; def_type
.text:000000710082AA50 MOV W22, #3
.text:000000710082AA54 BL get_effectiveness_total
.text:000000710082AA58 CMP W24, W0
.text:000000710082AA5C B.LT loc_710082AE4C
.text:000000710082AA60 B.EQ loc_710082ACD0
.text:000000710082AA64
.text:000000710082AA64 loc_710082AA64 ; CODE XREF: select_hidden_power_type+3D8↓j
.text:000000710082AA64 ; select_hidden_power_type+54C↓j
.text:000000710082AA64 MOV W0, #4 ; atk_type
.text:000000710082AA68 MOV W1, W21 ; def_type
.text:000000710082AA6C MOV W22, #4
.text:000000710082AA70 BL get_effectiveness_total
.text:000000710082AA74 CMP W24, W0
.text:000000710082AA78 B.LT loc_710082AE5C
.text:000000710082AA7C B.EQ loc_710082ACE8
.text:000000710082AA80
.text:000000710082AA80 loc_710082AA80 ; CODE XREF: select_hidden_power_type+3F0↓j
.text:000000710082AA80 ; select_hidden_power_type+55C↓j
.text:000000710082AA80 MOV W22, #5
.text:000000710082AA84 MOV W0, W22 ; atk_type
.text:000000710082AA88 MOV W1, W21 ; def_type
.text:000000710082AA8C BL get_effectiveness_total
.text:000000710082AA90 CMP W24, W0
.text:000000710082AA94 B.LT loc_710082AE6C
.text:000000710082AA98 B.EQ loc_710082AD00
.text:000000710082AA9C
.text:000000710082AA9C loc_710082AA9C ; CODE XREF: select_hidden_power_type+404↓j
.text:000000710082AA9C ; select_hidden_power_type+56C↓j
.text:000000710082AA9C MOV W0, #6 ; atk_type
.text:000000710082AAA0 MOV W1, W21 ; def_type
.text:000000710082AAA4 MOV W22, #6
.text:000000710082AAA8 BL get_effectiveness_total
.text:000000710082AAAC CMP W24, W0
.text:000000710082AAB0 B.LT loc_710082AE7C
.text:000000710082AAB4 B.EQ loc_710082AD14
.text:000000710082AAB8
.text:000000710082AAB8 loc_710082AAB8 ; CODE XREF: select_hidden_power_type+41C↓j
.text:000000710082AAB8 ; select_hidden_power_type+57C↓j
.text:000000710082AAB8 MOV W0, #7 ; atk_type
.text:000000710082AABC MOV W1, W21 ; def_type
.text:000000710082AAC0 MOV W22, #7
.text:000000710082AAC4 BL get_effectiveness_total
.text:000000710082AAC8 CMP W24, W0
.text:000000710082AACC B.LT loc_710082AE8C
.text:000000710082AAD0 B.EQ loc_710082AD2C
.text:000000710082AAD4
.text:000000710082AAD4 loc_710082AAD4 ; CODE XREF: select_hidden_power_type+434↓j
.text:000000710082AAD4 ; select_hidden_power_type+58C↓j
.text:000000710082AAD4 MOV W0, #8 ; atk_type
.text:000000710082AAD8 MOV W1, W21 ; def_type
.text:000000710082AADC MOV W22, #8
.text:000000710082AAE0 BL get_effectiveness_total
.text:000000710082AAE4 CMP W24, W0
.text:000000710082AAE8 B.LT loc_710082AE9C
.text:000000710082AAEC B.EQ loc_710082AD44
.text:000000710082AAF0
.text:000000710082AAF0 loc_710082AAF0 ; CODE XREF: select_hidden_power_type+44C↓j
.text:000000710082AAF0 ; select_hidden_power_type+59C↓j
.text:000000710082AAF0 MOV W22, #9
.text:000000710082AAF4 MOV W0, W22 ; atk_type
.text:000000710082AAF8 MOV W1, W21 ; def_type
.text:000000710082AAFC BL get_effectiveness_total
.text:000000710082AB00 CMP W24, W0
.text:000000710082AB04 B.LT loc_710082AEAC
.text:000000710082AB08 B.EQ loc_710082AD5C
.text:000000710082AB0C
.text:000000710082AB0C loc_710082AB0C ; CODE XREF: select_hidden_power_type+460↓j
.text:000000710082AB0C ; select_hidden_power_type+5AC↓j
.text:000000710082AB0C MOV W22, #0xA
.text:000000710082AB10 MOV W0, W22 ; atk_type
.text:000000710082AB14 MOV W1, W21 ; def_type
.text:000000710082AB18 BL get_effectiveness_total
.text:000000710082AB1C CMP W24, W0
.text:000000710082AB20 B.LT loc_710082AEBC
.text:000000710082AB24 B.EQ loc_710082AD70
.text:000000710082AB28
.text:000000710082AB28 loc_710082AB28 ; CODE XREF: select_hidden_power_type+474↓j
.text:000000710082AB28 ; select_hidden_power_type+5BC↓j
.text:000000710082AB28 MOV W22, #0xB
.text:000000710082AB2C MOV W0, W22 ; atk_type
.text:000000710082AB30 MOV W1, W21 ; def_type
.text:000000710082AB34 BL get_effectiveness_total
.text:000000710082AB38 CMP W24, W0
.text:000000710082AB3C B.LT loc_710082AECC
.text:000000710082AB40 B.EQ loc_710082AD84
.text:000000710082AB44
.text:000000710082AB44 loc_710082AB44 ; CODE XREF: select_hidden_power_type+488↓j
.text:000000710082AB44 ; select_hidden_power_type+5CC↓j
.text:000000710082AB44 MOV W0, #0xC ; atk_type
.text:000000710082AB48 MOV W1, W21 ; def_type
.text:000000710082AB4C MOV W22, #0xC
.text:000000710082AB50 BL get_effectiveness_total
.text:000000710082AB54 CMP W24, W0
.text:000000710082AB58 B.LT loc_710082AEDC
.text:000000710082AB5C B.EQ loc_710082AD98
.text:000000710082AB60
.text:000000710082AB60 loc_710082AB60 ; CODE XREF: select_hidden_power_type+4A0↓j
.text:000000710082AB60 ; select_hidden_power_type+5DC↓j
.text:000000710082AB60 MOV W22, #0xD
.text:000000710082AB64 MOV W0, W22 ; atk_type
.text:000000710082AB68 MOV W1, W21 ; def_type
.text:000000710082AB6C BL get_effectiveness_total
.text:000000710082AB70 CMP W24, W0
.text:000000710082AB74 B.LT loc_710082AEEC
.text:000000710082AB78 B.EQ loc_710082ADB0
.text:000000710082AB7C
.text:000000710082AB7C loc_710082AB7C ; CODE XREF: select_hidden_power_type+4B4↓j
.text:000000710082AB7C ; select_hidden_power_type+5EC↓j
.text:000000710082AB7C MOV W0, #0xE ; atk_type
.text:000000710082AB80 MOV W1, W21 ; def_type
.text:000000710082AB84 MOV W22, #0xE
.text:000000710082AB88 BL get_effectiveness_total
.text:000000710082AB8C CMP W24, W0
.text:000000710082AB90 B.LT loc_710082AEFC
.text:000000710082AB94 B.EQ loc_710082ADC4
.text:000000710082AB98
.text:000000710082AB98 loc_710082AB98 ; CODE XREF: select_hidden_power_type+4CC↓j
.text:000000710082AB98 ; select_hidden_power_type+5FC↓j
.text:000000710082AB98 MOV W0, #0xF ; atk_type
.text:000000710082AB9C MOV W1, W21 ; def_type
.text:000000710082ABA0 MOV W22, #0xF
.text:000000710082ABA4 BL get_effectiveness_total
.text:000000710082ABA8 CMP W24, W0
.text:000000710082ABAC B.LT loc_710082AF0C
.text:000000710082ABB0 B.EQ loc_710082ADDC
.text:000000710082ABB4
.text:000000710082ABB4 loc_710082ABB4 ; CODE XREF: select_hidden_power_type+4E4↓j
.text:000000710082ABB4 ; select_hidden_power_type+60C↓j
.text:000000710082ABB4 MOV W0, #0x10 ; atk_type
.text:000000710082ABB8 MOV W1, W21 ; def_type
.text:000000710082ABBC MOV W22, #0x10
.text:000000710082ABC0 BL get_effectiveness_total
.text:000000710082ABC4 CMP W24, W0
.text:000000710082ABC8 B.LT loc_710082AF1C
.text:000000710082ABCC B.EQ loc_710082ADF4
.text:000000710082ABD0
.text:000000710082ABD0 loc_710082ABD0 ; CODE XREF: select_hidden_power_type+4FC↓j
.text:000000710082ABD0 ; select_hidden_power_type+61C↓j
.text:000000710082ABD0 MOV W22, #0x11
.text:000000710082ABD4 MOV W0, W22 ; atk_type
.text:000000710082ABD8 MOV W1, W21 ; def_type
.text:000000710082ABDC BL get_effectiveness_total
.text:000000710082ABE0 CMP W24, W0
.text:000000710082ABE4 B.LT loc_710082AF2C
.text:000000710082ABE8 B.EQ loc_710082AE0C
.text:000000710082ABEC CMP W23, #0
.text:000000710082ABF0 B.LE loc_710082AF40
.text:000000710082ABF4 CMP W23, #2
.text:000000710082ABF8 B.CC loc_710082AE24
.text:000000710082ABFC
.text:000000710082ABFC loc_710082ABFC ; CODE XREF: select_hidden_power_type+514↓j
.text:000000710082ABFC LDR X8, [X20,#0x68]
.text:000000710082AC00 CLZ W9, W23
.text:000000710082AC04 MOV W10, #0x7FFFFFFF
.text:000000710082AC08 LSR W10, W10, W9
.text:000000710082AC0C TST W10, W23
.text:000000710082AC10 MOV W10, #0x1F
.text:000000710082AC14 CINC X10, X10, NE
.text:000000710082AC18 LDR X8, [X8,#0xC0]
.text:000000710082AC1C SUB X9, X10, X9
.text:000000710082AC20 LSR X10, X9, #6
.text:000000710082AC24 TST X9, #0x3F
.text:000000710082AC28 CINC X10, X10, NE
.text:000000710082AC2C CMP X10, X9
.text:000000710082AC30 B.HI loc_710082AF38
.text:000000710082AC34 UDIV X9, X9, X10
.text:000000710082AC38 MOV X10, #0xFFFFFFFFFFFFFFFF
.text:000000710082AC3C NEG X9, X9
.text:000000710082AC40 LSR X9, X10, X9
.text:000000710082AC44
.text:000000710082AC44 loc_710082AC44 ; CODE XREF: select_hidden_power_type+630↓j
.text:000000710082AC44 LDP X10, X11, [X8,#0x70]
.text:000000710082AC48
.text:000000710082AC48 loc_710082AC48 ; CODE XREF: select_hidden_power_type+358↓j
.text:000000710082AC48 EOR X13, X10, X11
.text:000000710082AC4C ADD X12, X10, X11
.text:000000710082AC50 EOR X10, X13, X10,ROR#40
.text:000000710082AC54 EXTR X11, X13, X13, #0x1B
.text:000000710082AC58 AND X12, X12, X9
.text:000000710082AC5C CMP W23, W12
.text:000000710082AC60 EOR X10, X10, X13,LSL#16
.text:000000710082AC64 B.LS loc_710082AC48
.text:000000710082AC68 AND X9, X12, #0xFFFFFFFF
.text:000000710082AC6C STP X10, X11, [X8,#0x70]
.text:000000710082AC70
.text:000000710082AC70 loc_710082AC70 ; CODE XREF: select_hidden_power_type+51C↓j
.text:000000710082AC70 ; select_hidden_power_type+628↓j
.text:000000710082AC70 ADD X8, SP, #0x50+var_44
.text:000000710082AC74 LDRB W8, [X8,X9]
.text:000000710082AC78 MOV W0, #1
.text:000000710082AC7C STRB W8, [X19]
.text:000000710082AC80
.text:000000710082AC80 loc_710082AC80 ; CODE XREF: select_hidden_power_type+638↓j
.text:000000710082AC80 LDP X29, X30, [SP,#0x50+var_s0]
.text:000000710082AC84 LDP X20, X19, [SP,#0x50+var_10]
.text:000000710082AC88 LDP X22, X21, [SP,#0x50+var_20]
.text:000000710082AC8C LDP X24, X23, [SP,#0x50+var_30]
.text:000000710082AC90 ADD SP, SP, #0x60 ; '`'
.text:000000710082AC94 RET
.text:000000710082AC98 ; ---------------------------------------------------------------------------
.text:000000710082AC98
.text:000000710082AC98 loc_710082AC98 ; CODE XREF: select_hidden_power_type+11C↑j
.text:000000710082AC98 ADD X8, SP, #0x50+var_44
.text:000000710082AC9C ORR X8, X8, X23
.text:000000710082ACA0 ADD W9, W23, #1
.text:000000710082ACA4 MOV W10, #1
.text:000000710082ACA8 STRB W10, [X8]
.text:000000710082ACAC MOV W23, W9
.text:000000710082ACB0 B loc_710082AA2C
.text:000000710082ACB4 ; ---------------------------------------------------------------------------
.text:000000710082ACB4
.text:000000710082ACB4 loc_710082ACB4 ; CODE XREF: select_hidden_power_type+138↑j
.text:000000710082ACB4 ADD X8, SP, #0x50+var_44
.text:000000710082ACB8 ORR X8, X8, X23
.text:000000710082ACBC ADD W9, W23, #1
.text:000000710082ACC0 MOV W10, #2
.text:000000710082ACC4 STRB W10, [X8]
.text:000000710082ACC8 MOV W23, W9
.text:000000710082ACCC B loc_710082AA48
.text:000000710082ACD0 ; ---------------------------------------------------------------------------
.text:000000710082ACD0
.text:000000710082ACD0 loc_710082ACD0 ; CODE XREF: select_hidden_power_type+154↑j
.text:000000710082ACD0 ADD X8, SP, #0x50+var_44
.text:000000710082ACD4 MOV W9, #3
.text:000000710082ACD8 STRB W9, [X8,W23,UXTW]
.text:000000710082ACDC ADD W8, W23, #1
.text:000000710082ACE0 MOV W23, W8
.text:000000710082ACE4 B loc_710082AA64
.text:000000710082ACE8 ; ---------------------------------------------------------------------------
.text:000000710082ACE8
.text:000000710082ACE8 loc_710082ACE8 ; CODE XREF: select_hidden_power_type+170↑j
.text:000000710082ACE8 ADD X8, SP, #0x50+var_44
.text:000000710082ACEC MOV W9, #4
.text:000000710082ACF0 STRB W9, [X8,W23,UXTW]
.text:000000710082ACF4 ADD W8, W23, #1
.text:000000710082ACF8 MOV W23, W8
.text:000000710082ACFC B loc_710082AA80
.text:000000710082AD00 ; ---------------------------------------------------------------------------
.text:000000710082AD00
.text:000000710082AD00 loc_710082AD00 ; CODE XREF: select_hidden_power_type+18C↑j
.text:000000710082AD00 ADD X8, SP, #0x50+var_44
.text:000000710082AD04 STRB W22, [X8,W23,UXTW]
.text:000000710082AD08 ADD W8, W23, #1
.text:000000710082AD0C MOV W23, W8
.text:000000710082AD10 B loc_710082AA9C
.text:000000710082AD14 ; ---------------------------------------------------------------------------
.text:000000710082AD14
.text:000000710082AD14 loc_710082AD14 ; CODE XREF: select_hidden_power_type+1A8↑j
.text:000000710082AD14 ADD X8, SP, #0x50+var_44
.text:000000710082AD18 MOV W9, #6
.text:000000710082AD1C STRB W9, [X8,W23,UXTW]
.text:000000710082AD20 ADD W8, W23, #1
.text:000000710082AD24 MOV W23, W8
.text:000000710082AD28 B loc_710082AAB8
.text:000000710082AD2C ; ---------------------------------------------------------------------------
.text:000000710082AD2C
.text:000000710082AD2C loc_710082AD2C ; CODE XREF: select_hidden_power_type+1C4↑j
.text:000000710082AD2C ADD X8, SP, #0x50+var_44
.text:000000710082AD30 MOV W9, #7
.text:000000710082AD34 STRB W9, [X8,W23,UXTW]
.text:000000710082AD38 ADD W8, W23, #1
.text:000000710082AD3C MOV W23, W8
.text:000000710082AD40 B loc_710082AAD4
.text:000000710082AD44 ; ---------------------------------------------------------------------------
.text:000000710082AD44
.text:000000710082AD44 loc_710082AD44 ; CODE XREF: select_hidden_power_type+1E0↑j
.text:000000710082AD44 ADD X8, SP, #0x50+var_44
.text:000000710082AD48 MOV W9, #8
.text:000000710082AD4C STRB W9, [X8,W23,UXTW]
.text:000000710082AD50 ADD W8, W23, #1
.text:000000710082AD54 MOV W23, W8
.text:000000710082AD58 B loc_710082AAF0
.text:000000710082AD5C ; ---------------------------------------------------------------------------
.text:000000710082AD5C
.text:000000710082AD5C loc_710082AD5C ; CODE XREF: select_hidden_power_type+1FC↑j
.text:000000710082AD5C ADD X8, SP, #0x50+var_44
.text:000000710082AD60 STRB W22, [X8,W23,UXTW]
.text:000000710082AD64 ADD W8, W23, #1
.text:000000710082AD68 MOV W23, W8
.text:000000710082AD6C B loc_710082AB0C
.text:000000710082AD70 ; ---------------------------------------------------------------------------
.text:000000710082AD70
.text:000000710082AD70 loc_710082AD70 ; CODE XREF: select_hidden_power_type+218↑j
.text:000000710082AD70 ADD X8, SP, #0x50+var_44
.text:000000710082AD74 STRB W22, [X8,W23,UXTW]
.text:000000710082AD78 ADD W8, W23, #1
.text:000000710082AD7C MOV W23, W8
.text:000000710082AD80 B loc_710082AB28
.text:000000710082AD84 ; ---------------------------------------------------------------------------
.text:000000710082AD84
.text:000000710082AD84 loc_710082AD84 ; CODE XREF: select_hidden_power_type+234↑j
.text:000000710082AD84 ADD X8, SP, #0x50+var_44
.text:000000710082AD88 STRB W22, [X8,W23,UXTW]
.text:000000710082AD8C ADD W8, W23, #1
.text:000000710082AD90 MOV W23, W8
.text:000000710082AD94 B loc_710082AB44
.text:000000710082AD98 ; ---------------------------------------------------------------------------
.text:000000710082AD98
.text:000000710082AD98 loc_710082AD98 ; CODE XREF: select_hidden_power_type+250↑j
.text:000000710082AD98 ADD X8, SP, #0x50+var_44
.text:000000710082AD9C MOV W9, #0xC
.text:000000710082ADA0 STRB W9, [X8,W23,UXTW]
.text:000000710082ADA4 ADD W8, W23, #1
.text:000000710082ADA8 MOV W23, W8
.text:000000710082ADAC B loc_710082AB60
.text:000000710082ADB0 ; ---------------------------------------------------------------------------
.text:000000710082ADB0
.text:000000710082ADB0 loc_710082ADB0 ; CODE XREF: select_hidden_power_type+26C↑j
.text:000000710082ADB0 ADD X8, SP, #0x50+var_44
.text:000000710082ADB4 STRB W22, [X8,W23,UXTW]
.text:000000710082ADB8 ADD W8, W23, #1
.text:000000710082ADBC MOV W23, W8
.text:000000710082ADC0 B loc_710082AB7C
.text:000000710082ADC4 ; ---------------------------------------------------------------------------
.text:000000710082ADC4
.text:000000710082ADC4 loc_710082ADC4 ; CODE XREF: select_hidden_power_type+288↑j
.text:000000710082ADC4 ADD X8, SP, #0x50+var_44
.text:000000710082ADC8 MOV W9, #0xE
.text:000000710082ADCC STRB W9, [X8,W23,UXTW]
.text:000000710082ADD0 ADD W8, W23, #1
.text:000000710082ADD4 MOV W23, W8
.text:000000710082ADD8 B loc_710082AB98
.text:000000710082ADDC ; ---------------------------------------------------------------------------
.text:000000710082ADDC
.text:000000710082ADDC loc_710082ADDC ; CODE XREF: select_hidden_power_type+2A4↑j
.text:000000710082ADDC ADD X8, SP, #0x50+var_44
.text:000000710082ADE0 MOV W9, #0xF
.text:000000710082ADE4 STRB W9, [X8,W23,UXTW]
.text:000000710082ADE8 ADD W8, W23, #1
.text:000000710082ADEC MOV W23, W8
.text:000000710082ADF0 B loc_710082ABB4
.text:000000710082ADF4 ; ---------------------------------------------------------------------------
.text:000000710082ADF4
.text:000000710082ADF4 loc_710082ADF4 ; CODE XREF: select_hidden_power_type+2C0↑j
.text:000000710082ADF4 ADD X8, SP, #0x50+var_44
.text:000000710082ADF8 MOV W9, #0x10
.text:000000710082ADFC STRB W9, [X8,W23,UXTW]
.text:000000710082AE00 ADD W8, W23, #1
.text:000000710082AE04 MOV W23, W8
.text:000000710082AE08 B loc_710082ABD0
.text:000000710082AE0C ; ---------------------------------------------------------------------------
.text:000000710082AE0C
.text:000000710082AE0C loc_710082AE0C ; CODE XREF: select_hidden_power_type+2DC↑j
.text:000000710082AE0C ADD X8, SP, #0x50+var_44
.text:000000710082AE10 STRB W22, [X8,W23,UXTW]
.text:000000710082AE14 ADD W8, W23, #1
.text:000000710082AE18 MOV W23, W8
.text:000000710082AE1C CMP W23, #2
.text:000000710082AE20 B.CS loc_710082ABFC
.text:000000710082AE24
.text:000000710082AE24 loc_710082AE24 ; CODE XREF: select_hidden_power_type+2EC↑j
.text:000000710082AE24 MOV X9, XZR
.text:000000710082AE28 B loc_710082AC70
.text:000000710082AE2C ; ---------------------------------------------------------------------------
.text:000000710082AE2C
.text:000000710082AE2C loc_710082AE2C ; CODE XREF: select_hidden_power_type+118↑j
.text:000000710082AE2C MOV W23, #1
.text:000000710082AE30 MOV W24, W0
.text:000000710082AE34 STRB W22, [SP,#0x50+var_44]
.text:000000710082AE38 B loc_710082AA2C
.text:000000710082AE3C ; ---------------------------------------------------------------------------
.text:000000710082AE3C
.text:000000710082AE3C loc_710082AE3C ; CODE XREF: select_hidden_power_type+134↑j
.text:000000710082AE3C MOV W23, #1
.text:000000710082AE40 MOV W24, W0
.text:000000710082AE44 STRB W22, [SP,#0x50+var_44]
.text:000000710082AE48 B loc_710082AA48
.text:000000710082AE4C ; ---------------------------------------------------------------------------
.text:000000710082AE4C
.text:000000710082AE4C loc_710082AE4C ; CODE XREF: select_hidden_power_type+150↑j
.text:000000710082AE4C MOV W23, #1
.text:000000710082AE50 MOV W24, W0
.text:000000710082AE54 STRB W22, [SP,#0x50+var_44]
.text:000000710082AE58 B loc_710082AA64
.text:000000710082AE5C ; ---------------------------------------------------------------------------
.text:000000710082AE5C
.text:000000710082AE5C loc_710082AE5C ; CODE XREF: select_hidden_power_type+16C↑j
.text:000000710082AE5C MOV W23, #1
.text:000000710082AE60 MOV W24, W0
.text:000000710082AE64 STRB W22, [SP,#0x50+var_44]
.text:000000710082AE68 B loc_710082AA80
.text:000000710082AE6C ; ---------------------------------------------------------------------------
.text:000000710082AE6C
.text:000000710082AE6C loc_710082AE6C ; CODE XREF: select_hidden_power_type+188↑j
.text:000000710082AE6C MOV W23, #1
.text:000000710082AE70 MOV W24, W0
.text:000000710082AE74 STRB W22, [SP,#0x50+var_44]
.text:000000710082AE78 B loc_710082AA9C
.text:000000710082AE7C ; ---------------------------------------------------------------------------
.text:000000710082AE7C
.text:000000710082AE7C loc_710082AE7C ; CODE XREF: select_hidden_power_type+1A4↑j
.text:000000710082AE7C MOV W23, #1
.text:000000710082AE80 MOV W24, W0
.text:000000710082AE84 STRB W22, [SP,#0x50+var_44]
.text:000000710082AE88 B loc_710082AAB8
.text:000000710082AE8C ; ---------------------------------------------------------------------------
.text:000000710082AE8C
.text:000000710082AE8C loc_710082AE8C ; CODE XREF: select_hidden_power_type+1C0↑j
.text:000000710082AE8C MOV W23, #1
.text:000000710082AE90 MOV W24, W0
.text:000000710082AE94 STRB W22, [SP,#0x50+var_44]
.text:000000710082AE98 B loc_710082AAD4
.text:000000710082AE9C ; ---------------------------------------------------------------------------
.text:000000710082AE9C
.text:000000710082AE9C loc_710082AE9C ; CODE XREF: select_hidden_power_type+1DC↑j
.text:000000710082AE9C MOV W23, #1
.text:000000710082AEA0 MOV W24, W0
.text:000000710082AEA4 STRB W22, [SP,#0x50+var_44]
.text:000000710082AEA8 B loc_710082AAF0
.text:000000710082AEAC ; ---------------------------------------------------------------------------
.text:000000710082AEAC
.text:000000710082AEAC loc_710082AEAC ; CODE XREF: select_hidden_power_type+1F8↑j
.text:000000710082AEAC MOV W23, #1
.text:000000710082AEB0 MOV W24, W0
.text:000000710082AEB4 STRB W22, [SP,#0x50+var_44]
.text:000000710082AEB8 B loc_710082AB0C
.text:000000710082AEBC ; ---------------------------------------------------------------------------
.text:000000710082AEBC
.text:000000710082AEBC loc_710082AEBC ; CODE XREF: select_hidden_power_type+214↑j
.text:000000710082AEBC MOV W23, #1
.text:000000710082AEC0 MOV W24, W0
.text:000000710082AEC4 STRB W22, [SP,#0x50+var_44]
.text:000000710082AEC8 B loc_710082AB28
.text:000000710082AECC ; ---------------------------------------------------------------------------
.text:000000710082AECC
.text:000000710082AECC loc_710082AECC ; CODE XREF: select_hidden_power_type+230↑j
.text:000000710082AECC MOV W23, #1
.text:000000710082AED0 MOV W24, W0
.text:000000710082AED4 STRB W22, [SP,#0x50+var_44]
.text:000000710082AED8 B loc_710082AB44
.text:000000710082AEDC ; ---------------------------------------------------------------------------
.text:000000710082AEDC
.text:000000710082AEDC loc_710082AEDC ; CODE XREF: select_hidden_power_type+24C↑j
.text:000000710082AEDC MOV W23, #1
.text:000000710082AEE0 MOV W24, W0
.text:000000710082AEE4 STRB W22, [SP,#0x50+var_44]
.text:000000710082AEE8 B loc_710082AB60
.text:000000710082AEEC ; ---------------------------------------------------------------------------
.text:000000710082AEEC
.text:000000710082AEEC loc_710082AEEC ; CODE XREF: select_hidden_power_type+268↑j
.text:000000710082AEEC MOV W23, #1
.text:000000710082AEF0 MOV W24, W0
.text:000000710082AEF4 STRB W22, [SP,#0x50+var_44]
.text:000000710082AEF8 B loc_710082AB7C
.text:000000710082AEFC ; ---------------------------------------------------------------------------
.text:000000710082AEFC
.text:000000710082AEFC loc_710082AEFC ; CODE XREF: select_hidden_power_type+284↑j
.text:000000710082AEFC MOV W23, #1
.text:000000710082AF00 MOV W24, W0
.text:000000710082AF04 STRB W22, [SP,#0x50+var_44]
.text:000000710082AF08 B loc_710082AB98
.text:000000710082AF0C ; ---------------------------------------------------------------------------
.text:000000710082AF0C
.text:000000710082AF0C loc_710082AF0C ; CODE XREF: select_hidden_power_type+2A0↑j
.text:000000710082AF0C MOV W23, #1
.text:000000710082AF10 MOV W24, W0
.text:000000710082AF14 STRB W22, [SP,#0x50+var_44]
.text:000000710082AF18 B loc_710082ABB4
.text:000000710082AF1C ; ---------------------------------------------------------------------------
.text:000000710082AF1C
.text:000000710082AF1C loc_710082AF1C ; CODE XREF: select_hidden_power_type+2BC↑j
.text:000000710082AF1C MOV W23, #1
.text:000000710082AF20 MOV W24, W0
.text:000000710082AF24 STRB W22, [SP,#0x50+var_44]
.text:000000710082AF28 B loc_710082ABD0
.text:000000710082AF2C ; ---------------------------------------------------------------------------
.text:000000710082AF2C
.text:000000710082AF2C loc_710082AF2C ; CODE XREF: select_hidden_power_type+2D8↑j
.text:000000710082AF2C MOV X9, XZR
.text:000000710082AF30 STRB W22, [SP,#0x50+var_44]
.text:000000710082AF34 B loc_710082AC70
.text:000000710082AF38 ; ---------------------------------------------------------------------------
.text:000000710082AF38
.text:000000710082AF38 loc_710082AF38 ; CODE XREF: select_hidden_power_type+324↑j
.text:000000710082AF38 MOV X9, XZR
.text:000000710082AF3C B loc_710082AC44
.text:000000710082AF40 ; ---------------------------------------------------------------------------
.text:000000710082AF40
.text:000000710082AF40 loc_710082AF40 ; CODE XREF: select_hidden_power_type+2E4↑j
.text:000000710082AF40 MOV W0, WZR
.text:000000710082AF44 B loc_710082AC80
.text:000000710082AF44 ; End of function select_hidden_power_type
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment