Skip to content

Instantly share code, notes, and snippets.

@Lusamine
Created February 16, 2026 03:50
Show Gist options
  • Select an option

  • Save Lusamine/30c8fee200aaaac90a87da1facc3c709 to your computer and use it in GitHub Desktop.

Select an option

Save Lusamine/30c8fee200aaaac90a87da1facc3c709 to your computer and use it in GitHub Desktop.
unsigned __int64 __fastcall get_random_flavor_power_hash(
__int64 a1,
int *budget,
int a3,
int a4,
bool a2,
__int64 a6,
unsigned __int64 *a7)
{
void *v8; // x8
int v9; // w9
unsigned __int64 chosen_flavor_power_hash; // x22
void *v16; // x0
_QWORD *v17; // x26
int *v18; // x27
__int64 v19; // x9
unsigned int v20; // w8
unsigned __int16 *v21; // x9
__int64 v22; // x10
__int64 v23; // x10
int v24; // w28
unsigned __int64 v25; // x10
_DWORD *v26; // x11
__int64 v27; // x8
unsigned __int16 *v28; // x8
__int64 v29; // x8
unsigned __int64 index; // x0
__int64 v31; // x21
int v32; // w8
_DWORD *v33; // x9
_QWORD *v35; // x0
__int64 v36; // x1
__int64 v37; // [xsp+0h] [xbp-50h] BYREF
__int64 *v38[4]; // [xsp+8h] [xbp-48h] BYREF
int v39; // [xsp+28h] [xbp-28h]
int v40; // [xsp+2Ch] [xbp-24h]
__int64 v41; // [xsp+30h] [xbp-20h] BYREF
__int64 v42; // [xsp+38h] [xbp-18h]
__int64 v43; // [xsp+40h] [xbp-10h]
__int64 v44; // [xsp+48h] [xbp-8h]
v8 = off_7103EC5AA8;
v9 = *((_DWORD *)off_7103EC5AA8 + 32);
__dmb(9u);
v41 = 0LL;
v42 = 0LL;
chosen_flavor_power_hash = 0xCBF29CE484222645LL;
v43 = 0LL;
v44 = a6;
if ( v9 )
v16 = v8;
else
v16 = 0LL;
v17 = *(_QWORD **)(sub_7102AAE848(v16) + 24);
if ( !v17 )
goto LABEL_46;
do
{
v18 = (int *)v17[3];
if ( v18 )
{
v19 = *v18;
v20 = *(unsigned __int16 *)((char *)v18 - v19);
if ( !a2
|| v20 >= 0x11
&& *(_WORD *)((char *)v18 - v19 + 16)
&& *((_BYTE *)v18 + *(unsigned __int16 *)((char *)v18 - v19 + 16)) )
{
v21 = (unsigned __int16 *)((char *)v18 - v19);
if ( v20 < 0x15 )
{
LODWORD(v22) = 0;
}
else
{
v22 = v21[10];
if ( v21[10] )
LODWORD(v22) = *(int *)((char *)v18 + v22);
}
if ( (_DWORD)v22 == a3 )
{
if ( v20 < 7 )
{
LODWORD(v23) = 0;
}
else
{
v23 = v21[3];
if ( v21[3] )
LODWORD(v23) = *(int *)((char *)v18 + v23);
}
if ( (_DWORD)v23 == a4 )
{
v24 = v20 >= 0xF && v21[7] ? *(int *)((char *)v18 + v21[7]) : 0;
v26 = (_DWORD *)*a7;
v25 = a7[1];
if ( *a7 == v25 )
goto LABEL_26;
while ( *v26 != v24 )
{
if ( ++v26 == (_DWORD *)v25 )
{
v26 = (_DWORD *)a7[1];
break;
}
}
if ( v26 == (_DWORD *)v25 )
{
LABEL_26:
if ( v20 < 5 )
{
v27 = 0LL;
}
else
{
v27 = v21[2];
if ( v21[2] )
v27 += (__int64)v18 + *(unsigned int *)((char *)v18 + v27);
}
v37 = v27;
sub_710094C830(&v37);
v28 = (unsigned __int16 *)((char *)v18 - *v18);
if ( *v28 < 0x15u )
{
LODWORD(v29) = 0;
}
else
{
v29 = v28[10];
if ( v29 )
LODWORD(v29) = *(int *)((char *)v18 + v29);
}
v39 = v29;
v40 = v24;
sub_7102D5E428(&v41, (__int64)v38);
sub_7102D5E47C(v38[3]);
}
}
}
}
}
v17 = (_QWORD *)*v17;
}
while ( v17 );
if ( v41 == v42 )
goto LABEL_46;
index = some_donut_rand3(a1, -1 - 0x3333333333333333LL * ((v42 - v41) >> 3));
if ( 0xCCCCCCCCCCCCCCCDLL * ((v42 - v41) >> 3) > index )
{
v31 = v41 + 40 * index;
*budget = (*budget - *(_DWORD *)(v31 + 32)) & ~((*budget - *(_DWORD *)(v31 + 32)) >> 31);
v32 = *(_DWORD *)(v31 + 36);
if ( v32 )
{
v33 = (_DWORD *)a7[1];
if ( v33 == (_DWORD *)a7[2] )
{
sub_7102D60480(a7, v31 + 36);
}
else
{
*v33 = v32;
a7[1] = (unsigned __int64)(v33 + 1);
}
}
chosen_flavor_power_hash = *(_QWORD *)v31;
LABEL_46:
v38[0] = &v41;
sub_7102D5EAB4(v38);
return chosen_flavor_power_hash;
}
v35 = (_QWORD *)sub_7102D6046C();
return sub_7102D5E428(v35, v36);
}
-----
.text:0000007102D5E1A0 ; unsigned __int64 __fastcall get_random_flavor_power_hash(__int64 a1, int *budget, int a3, int a4, bool a2, __int64 a6, unsigned __int64 *a7)
.text:0000007102D5E1A0 get_random_flavor_power_hash ; CODE XREF: generate_donut+90C↑p
.text:0000007102D5E1A0
.text:0000007102D5E1A0 var_50 = -0x50
.text:0000007102D5E1A0 var_48 = -0x48
.text:0000007102D5E1A0 var_30 = -0x30
.text:0000007102D5E1A0 var_28 = -0x28
.text:0000007102D5E1A0 anonymous_0 = -0x24
.text:0000007102D5E1A0 var_20 = -0x20
.text:0000007102D5E1A0 anonymous_1 = -0x18
.text:0000007102D5E1A0 var_10 = -0x10
.text:0000007102D5E1A0 anonymous_2 = -8
.text:0000007102D5E1A0 var_s0 = 0
.text:0000007102D5E1A0 var_s10 = 0x10
.text:0000007102D5E1A0 var_s20 = 0x20
.text:0000007102D5E1A0 var_s30 = 0x30
.text:0000007102D5E1A0 var_s40 = 0x40
.text:0000007102D5E1A0 var_s50 = 0x50
.text:0000007102D5E1A0
.text:0000007102D5E1A0 SUB SP, SP, #0xB0
.text:0000007102D5E1A4 STP X29, X30, [SP,#0x50+var_s0]
.text:0000007102D5E1A8 STP X28, X27, [SP,#0x50+var_s10]
.text:0000007102D5E1AC STP X26, X25, [SP,#0x50+var_s20]
.text:0000007102D5E1B0 STP X24, X23, [SP,#0x50+var_s30]
.text:0000007102D5E1B4 STP X22, X21, [SP,#0x50+var_s40]
.text:0000007102D5E1B8 STP X20, X19, [SP,#0x50+var_s50]
.text:0000007102D5E1BC ADD X29, SP, #0x50
.text:0000007102D5E1C0 ADRP X8, #off_7103EC5AA8@PAGE
.text:0000007102D5E1C4 MOV X21, X0
.text:0000007102D5E1C8 LDR X8, [X8,#off_7103EC5AA8@PAGEOFF]
.text:0000007102D5E1CC MOV X22, #0x84222645
.text:0000007102D5E1D4 LDR W9, [X8,#0x80]
.text:0000007102D5E1D8 MOV X19, X6
.text:0000007102D5E1DC MOV W23, W4
.text:0000007102D5E1E0 MOV W24, W3
.text:0000007102D5E1E4 MOV W25, W2
.text:0000007102D5E1E8 MOV X20, X1
.text:0000007102D5E1EC DMB ISHLD
.text:0000007102D5E1F0 STP XZR, XZR, [X29,#var_20]
.text:0000007102D5E1F4 MOVK X22, #0x9CE4,LSL#32
.text:0000007102D5E1F8 MOVK X22, #0xCBF2,LSL#48
.text:0000007102D5E1FC STP XZR, X5, [X29,#var_10]
.text:0000007102D5E200 CMP W9, #0
.text:0000007102D5E204 CSEL X0, XZR, X8, EQ
.text:0000007102D5E208 BL sub_7102AAE848
.text:0000007102D5E20C LDR X26, [X0,#0x18]
.text:0000007102D5E210 CBZ X26, loc_7102D5E3E4
.text:0000007102D5E214
.text:0000007102D5E214 loc_7102D5E214 ; CODE XREF: get_random_flavor_power_hash+190↓j
.text:0000007102D5E214 LDR X27, [X26,#0x18]
.text:0000007102D5E218 CBZ X27, loc_7102D5E32C
.text:0000007102D5E21C LDRSW X9, [X27]
.text:0000007102D5E220 SUB X10, X27, X9
.text:0000007102D5E224 LDRH W8, [X10]
.text:0000007102D5E228 TBZ W23, #0, loc_7102D5E244
.text:0000007102D5E22C CMP W8, #0x11
.text:0000007102D5E230 B.CC loc_7102D5E32C
.text:0000007102D5E234 LDRH W10, [X10,#0x10]
.text:0000007102D5E238 CBZ X10, loc_7102D5E32C
.text:0000007102D5E23C LDRB W10, [X27,X10]
.text:0000007102D5E240 CBZ W10, loc_7102D5E32C
.text:0000007102D5E244
.text:0000007102D5E244 loc_7102D5E244 ; CODE XREF: get_random_flavor_power_hash+88↑j
.text:0000007102D5E244 NEG X9, X9
.text:0000007102D5E248 CMP W8, #0x15
.text:0000007102D5E24C ADD X9, X27, X9
.text:0000007102D5E250 B.CC loc_7102D5E338
.text:0000007102D5E254 LDRH W10, [X9,#0x14]
.text:0000007102D5E258 CBZ X10, loc_7102D5E260
.text:0000007102D5E25C LDR W10, [X27,X10]
.text:0000007102D5E260
.text:0000007102D5E260 loc_7102D5E260 ; CODE XREF: get_random_flavor_power_hash+B8↑j
.text:0000007102D5E260 ; get_random_flavor_power_hash+19C↓j
.text:0000007102D5E260 CMP W10, W25
.text:0000007102D5E264 B.NE loc_7102D5E32C
.text:0000007102D5E268 CMP W8, #7
.text:0000007102D5E26C B.CC loc_7102D5E348
.text:0000007102D5E270 LDRH W10, [X9,#6]
.text:0000007102D5E274 CBZ X10, loc_7102D5E27C
.text:0000007102D5E278 LDR W10, [X27,X10]
.text:0000007102D5E27C
.text:0000007102D5E27C loc_7102D5E27C ; CODE XREF: get_random_flavor_power_hash+D4↑j
.text:0000007102D5E27C ; get_random_flavor_power_hash+1AC↓j
.text:0000007102D5E27C CMP W10, W24
.text:0000007102D5E280 B.NE loc_7102D5E32C
.text:0000007102D5E284 CMP W8, #0xF
.text:0000007102D5E288 B.CC loc_7102D5E294
.text:0000007102D5E28C LDRH W10, [X9,#0xE]
.text:0000007102D5E290 CBNZ X10, loc_7102D5E340
.text:0000007102D5E294
.text:0000007102D5E294 loc_7102D5E294 ; CODE XREF: get_random_flavor_power_hash+E8↑j
.text:0000007102D5E294 MOV W28, WZR
.text:0000007102D5E298
.text:0000007102D5E298 loc_7102D5E298 ; CODE XREF: get_random_flavor_power_hash+1A4↓j
.text:0000007102D5E298 LDP X11, X10, [X19]
.text:0000007102D5E29C CMP X11, X10
.text:0000007102D5E2A0 B.EQ loc_7102D5E2C8
.text:0000007102D5E2A4
.text:0000007102D5E2A4 loc_7102D5E2A4 ; CODE XREF: get_random_flavor_power_hash+118↓j
.text:0000007102D5E2A4 LDR W12, [X11]
.text:0000007102D5E2A8 CMP W12, W28
.text:0000007102D5E2AC B.EQ loc_7102D5E2C0
.text:0000007102D5E2B0 ADD X11, X11, #4
.text:0000007102D5E2B4 CMP X11, X10
.text:0000007102D5E2B8 B.NE loc_7102D5E2A4
.text:0000007102D5E2BC MOV X11, X10
.text:0000007102D5E2C0
.text:0000007102D5E2C0 loc_7102D5E2C0 ; CODE XREF: get_random_flavor_power_hash+10C↑j
.text:0000007102D5E2C0 CMP X11, X10
.text:0000007102D5E2C4 B.NE loc_7102D5E32C
.text:0000007102D5E2C8
.text:0000007102D5E2C8 loc_7102D5E2C8 ; CODE XREF: get_random_flavor_power_hash+100↑j
.text:0000007102D5E2C8 CMP W8, #5
.text:0000007102D5E2CC B.CC loc_7102D5E350
.text:0000007102D5E2D0 LDRH W8, [X9,#4]
.text:0000007102D5E2D4 CBZ X8, loc_7102D5E2E4
.text:0000007102D5E2D8 ADD X8, X27, X8
.text:0000007102D5E2DC LDR W9, [X8]
.text:0000007102D5E2E0 ADD X8, X8, X9
.text:0000007102D5E2E4
.text:0000007102D5E2E4 loc_7102D5E2E4 ; CODE XREF: get_random_flavor_power_hash+134↑j
.text:0000007102D5E2E4 ; get_random_flavor_power_hash+1B4↓j
.text:0000007102D5E2E4 STR X8, [SP,#0x50+var_50]
.text:0000007102D5E2E8 ADD X8, SP, #0x50+var_48
.text:0000007102D5E2EC MOV X0, SP
.text:0000007102D5E2F0 BL sub_710094C830
.text:0000007102D5E2F4 LDRSW X8, [X27]
.text:0000007102D5E2F8 SUB X8, X27, X8
.text:0000007102D5E2FC LDRH W9, [X8]
.text:0000007102D5E300 CMP W9, #0x15
.text:0000007102D5E304 B.CC loc_7102D5E358
.text:0000007102D5E308 LDRH W8, [X8,#0x14]
.text:0000007102D5E30C CBZ X8, loc_7102D5E314
.text:0000007102D5E310 LDR W8, [X27,X8]
.text:0000007102D5E314
.text:0000007102D5E314 loc_7102D5E314 ; CODE XREF: get_random_flavor_power_hash+16C↑j
.text:0000007102D5E314 ; get_random_flavor_power_hash+1BC↓j
.text:0000007102D5E314 SUB X0, X29, #-var_20
.text:0000007102D5E318 ADD X1, SP, #0x50+var_48
.text:0000007102D5E31C STP W8, W28, [SP,#0x50+var_28]
.text:0000007102D5E320 BL sub_7102D5E428
.text:0000007102D5E324 LDR X0, [SP,#0x50+var_30]
.text:0000007102D5E328 BL sub_7102D5E47C
.text:0000007102D5E32C
.text:0000007102D5E32C loc_7102D5E32C ; CODE XREF: get_random_flavor_power_hash+78↑j
.text:0000007102D5E32C ; get_random_flavor_power_hash+90↑j ...
.text:0000007102D5E32C LDR X26, [X26]
.text:0000007102D5E330 CBNZ X26, loc_7102D5E214
.text:0000007102D5E334 B loc_7102D5E360
.text:0000007102D5E338 ; ---------------------------------------------------------------------------
.text:0000007102D5E338
.text:0000007102D5E338 loc_7102D5E338 ; CODE XREF: get_random_flavor_power_hash+B0↑j
.text:0000007102D5E338 MOV W10, WZR
.text:0000007102D5E33C B loc_7102D5E260
.text:0000007102D5E340 ; ---------------------------------------------------------------------------
.text:0000007102D5E340
.text:0000007102D5E340 loc_7102D5E340 ; CODE XREF: get_random_flavor_power_hash+F0↑j
.text:0000007102D5E340 LDR W28, [X27,X10]
.text:0000007102D5E344 B loc_7102D5E298
.text:0000007102D5E348 ; ---------------------------------------------------------------------------
.text:0000007102D5E348
.text:0000007102D5E348 loc_7102D5E348 ; CODE XREF: get_random_flavor_power_hash+CC↑j
.text:0000007102D5E348 MOV W10, WZR
.text:0000007102D5E34C B loc_7102D5E27C
.text:0000007102D5E350 ; ---------------------------------------------------------------------------
.text:0000007102D5E350
.text:0000007102D5E350 loc_7102D5E350 ; CODE XREF: get_random_flavor_power_hash+12C↑j
.text:0000007102D5E350 MOV X8, XZR
.text:0000007102D5E354 B loc_7102D5E2E4
.text:0000007102D5E358 ; ---------------------------------------------------------------------------
.text:0000007102D5E358
.text:0000007102D5E358 loc_7102D5E358 ; CODE XREF: get_random_flavor_power_hash+164↑j
.text:0000007102D5E358 MOV W8, WZR
.text:0000007102D5E35C B loc_7102D5E314
.text:0000007102D5E360 ; ---------------------------------------------------------------------------
.text:0000007102D5E360
.text:0000007102D5E360 loc_7102D5E360 ; CODE XREF: get_random_flavor_power_hash+194↑j
.text:0000007102D5E360 LDP X8, X9, [X29,#var_20]
.text:0000007102D5E364 CMP X8, X9
.text:0000007102D5E368 B.EQ loc_7102D5E3E4
.text:0000007102D5E36C SUB X8, X9, X8
.text:0000007102D5E370 MOV X22, #0xCCCCCCCCCCCCCCCC
.text:0000007102D5E374 MOV X9, #0xFFFFFFFFFFFFFFFF
.text:0000007102D5E378 ASR X8, X8, #3
.text:0000007102D5E37C MOVK X22, #0xCCCD
.text:0000007102D5E380 MADD X1, X8, X22, X9
.text:0000007102D5E384 MOV X0, X21
.text:0000007102D5E388 BL some_donut_rand3
.text:0000007102D5E38C LDP X8, X9, [X29,#var_20]
.text:0000007102D5E390 SUB X9, X9, X8
.text:0000007102D5E394 ASR X9, X9, #3
.text:0000007102D5E398 MUL X9, X9, X22
.text:0000007102D5E39C CMP X9, X0
.text:0000007102D5E3A0 B.LS loc_7102D5E424
.text:0000007102D5E3A4 MOV W9, #0x28 ; '('
.text:0000007102D5E3A8 MADD X21, X0, X9, X8
.text:0000007102D5E3AC LDR W8, [X20]
.text:0000007102D5E3B0 LDR W9, [X21,#0x20]
.text:0000007102D5E3B4 MOV X1, X21
.text:0000007102D5E3B8 SUB W8, W8, W9
.text:0000007102D5E3BC BIC W8, W8, W8,ASR#31
.text:0000007102D5E3C0 STR W8, [X20]
.text:0000007102D5E3C4 LDR W8, [X1,#0x24]!
.text:0000007102D5E3C8 CBZ W8, loc_7102D5E3E0
.text:0000007102D5E3CC LDP X9, X10, [X19,#8]
.text:0000007102D5E3D0 CMP X9, X10
.text:0000007102D5E3D4 B.EQ loc_7102D5E418
.text:0000007102D5E3D8 STR W8, [X9],#4
.text:0000007102D5E3DC STR X9, [X19,#8]
.text:0000007102D5E3E0
.text:0000007102D5E3E0 loc_7102D5E3E0 ; CODE XREF: get_random_flavor_power_hash+228↑j
.text:0000007102D5E3E0 ; get_random_flavor_power_hash+280↓j
.text:0000007102D5E3E0 LDR X22, [X21]
.text:0000007102D5E3E4
.text:0000007102D5E3E4 loc_7102D5E3E4 ; CODE XREF: get_random_flavor_power_hash+70↑j
.text:0000007102D5E3E4 ; get_random_flavor_power_hash+1C8↑j
.text:0000007102D5E3E4 SUB X8, X29, #-var_20
.text:0000007102D5E3E8 ADD X0, SP, #0x50+var_48
.text:0000007102D5E3EC STR X8, [SP,#0x50+var_48]
.text:0000007102D5E3F0 BL sub_7102D5EAB4
.text:0000007102D5E3F4 MOV X0, X22
.text:0000007102D5E3F8 LDP X20, X19, [SP,#0x50+var_s50]
.text:0000007102D5E3FC LDP X22, X21, [SP,#0x50+var_s40]
.text:0000007102D5E400 LDP X24, X23, [SP,#0x50+var_s30]
.text:0000007102D5E404 LDP X26, X25, [SP,#0x50+var_s20]
.text:0000007102D5E408 LDP X28, X27, [SP,#0x50+var_s10]
.text:0000007102D5E40C LDP X29, X30, [SP,#0x50+var_s0]
.text:0000007102D5E410 ADD SP, SP, #0xB0
.text:0000007102D5E414 RET
.text:0000007102D5E418 ; ---------------------------------------------------------------------------
.text:0000007102D5E418
.text:0000007102D5E418 loc_7102D5E418 ; CODE XREF: get_random_flavor_power_hash+234↑j
.text:0000007102D5E418 MOV X0, X19
.text:0000007102D5E41C BL sub_7102D60480
.text:0000007102D5E420 B loc_7102D5E3E0
.text:0000007102D5E424 ; ---------------------------------------------------------------------------
.text:0000007102D5E424
.text:0000007102D5E424 loc_7102D5E424 ; CODE XREF: get_random_flavor_power_hash+200↑j
.text:0000007102D5E424 BL sub_7102D6046C
.text:0000007102D5E424 ; End of function get_random_flavor_power_hash
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment