unsigned int *__fastcall ZN16BattleEndMessage6encodeEv(__int64 a1) { __int64 v2; // x21 __int64 i; // x22 __int64 v4; // x8 __int64 v5; // x21 __int64 j; // x22 __int64 v7; // x8 __int64 v8; // x21 __int64 k; // x22 __int64 v10; // x8 __int64 v11; // x21 __int64 m; // x22 unsigned int *v13; // x0 __int64 v14; // x0 __int64 v15; // x0 unsigned int *result; // x0 ZN14PiranhaMessage6encodeEv(); ZN10ByteStream13writeLongLongEx(a1 + 16, *(_QWORD *)(a1 + 136)); ZN10ByteStream13writeLongLongEx(a1 + 16, *(_QWORD *)(a1 + 144)); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 152)); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 156)); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 160)); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 164)); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 168)); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 172)); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 176)); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 180)); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 184)); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 188)); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 192)); if ( *(_QWORD *)(a1 + 208) ) { ZN10ByteStream12writeBooleanEb(a1 + 16, 1); ZN13LogicGemOffer6encodeEP15ChecksumEncoder(*(_QWORD *)(a1 + 208), a1 + 16); } else { ZN10ByteStream12writeBooleanEb(a1 + 16, 0); } ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 196)); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 200)); ZN10ByteStream12writeBooleanEb(a1 + 16, *(_BYTE *)(a1 + 204)); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 216)); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 220)); ZN10ByteStream12writeBooleanEb(a1 + 16, *(_BYTE *)(a1 + 224)); ZN10ByteStream12writeBooleanEb(a1 + 16, *(_BYTE *)(a1 + 225)); ZN10ByteStream12writeBooleanEb(a1 + 16, *(_BYTE *)(a1 + 226)); ZN10ByteStream12writeBooleanEb(a1 + 16, *(_BYTE *)(a1 + 227)); ZN10ByteStream12writeBooleanEb(a1 + 16, *(_BYTE *)(a1 + 228)); ZN10ByteStream12writeBooleanEb(a1 + 16, *(_BYTE *)(a1 + 229)); ZN10ByteStream12writeBooleanEb(a1 + 16, *(_BYTE *)(a1 + 230)); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 232)); ZN10ByteStream12writeBooleanEb(a1 + 16, *(_BYTE *)(a1 + 236)); v2 = *(unsigned int *)(*(_QWORD *)(a1 + 240) + 12LL); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(*(_QWORD *)(a1 + 240) + 12LL)); if ( (int)v2 >= 1 ) { for ( i = 0; i != v2; ++i ) ZNK11PlayerEntry6encodeEP10ByteStream(*(unsigned __int8 **)(**(_QWORD **)(a1 + 240) + 8 * i), (_QWORD *)(a1 + 16)); } v4 = *(_QWORD *)(a1 + 248); if ( v4 ) { v5 = *(unsigned int *)(v4 + 12); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(v4 + 12)); if ( (int)v5 >= 1 ) { for ( j = 0; j != v5; ++j ) ZN7XpEntry6encodeEP10ByteStream(*(unsigned int **)(**(_QWORD **)(a1 + 248) + 8 * j), a1 + 16); } v7 = *(_QWORD *)(a1 + 256); if ( v7 ) { LABEL_12: v8 = *(unsigned int *)(v7 + 12); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(v7 + 12)); if ( (int)v8 >= 1 ) { for ( k = 0; k != v8; ++k ) ZN16ByteStreamHelper18writeDataReferenceEP15ChecksumEncoderPK9LogicData( (_QWORD *)(a1 + 16), *(_QWORD *)(**(_QWORD **)(a1 + 256) + 8 * k)); } v10 = *(_QWORD *)(a1 + 264); if ( v10 ) goto LABEL_16; LABEL_22: ZN10ByteStream9writeVIntEi(a1 + 16, 0); goto LABEL_23; } } else { ZN10ByteStream9writeVIntEi(a1 + 16, 0); v7 = *(_QWORD *)(a1 + 256); if ( v7 ) goto LABEL_12; } ZN10ByteStream9writeVIntEi(a1 + 16, 0); v10 = *(_QWORD *)(a1 + 264); if ( !v10 ) goto LABEL_22; LABEL_16: v11 = *(unsigned int *)(v10 + 12); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(v10 + 12)); if ( (int)v11 >= 1 ) { for ( m = 0; m != v11; ++m ) ZN22LogicMilestoneProgress6encodeEP15ChecksumEncoder(*(unsigned int **)(**(_QWORD **)(a1 + 264) + 8 * m), a1 + 16); } LABEL_23: ZN16ByteStreamHelper18writeDataReferenceEP15ChecksumEncoderPK9LogicData((_QWORD *)(a1 + 16), *(_QWORD *)(a1 + 272)); ZN10ByteStream12writeBooleanEb(a1 + 16, *(_QWORD *)(a1 + 280) != 0); v13 = *(unsigned int **)(a1 + 280); if ( v13 ) ZN15PlayAgainStatus6encodeEP10ByteStream(v13, a1 + 16); ZN10ByteStream12writeBooleanEb(a1 + 16, *(_QWORD *)(a1 + 288) != 0); v14 = *(_QWORD *)(a1 + 288); if ( v14 ) ZN11LogicQuests6encodeEP15ChecksumEncoder(v14, a1 + 16); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 304)); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 308)); ZN10ByteStream12writeBooleanEb(a1 + 16, *(_QWORD *)(a1 + 296) != 0); v15 = *(_QWORD *)(a1 + 296); if ( v15 ) ZNK26LogicRankedMatchRoundState6encodeEP15ChecksumEncoder(v15, a1 + 16); ZN10ByteStream9writeVIntEi(a1 + 16, *(_DWORD *)(a1 + 312)); ZN10ByteStream12writeBooleanEb(a1 + 16, *(_QWORD *)(a1 + 320) != 0); result = *(unsigned int **)(a1 + 320); if ( result ) return (unsigned int *)ZN16ChronosTextEntry6encodeEP15ChecksumEncoder(result, a1 + 16); return result; } // ZN28scHapticFeedbackImpl_AndroidC2E20scHapticFeedbackType // Alternative name is '_ZN28scHapticFeedbackImpl_AndroidC1E20scHapticFeedbackType' __int64 __fastcall ZN28scHapticFeedbackImpl_AndroidC2E20scHapticFeedbackType(__int64 result, int a2) { *(_QWORD *)result = off_D2E008; *(_DWORD *)(result + 8) = a2; *(_DWORD *)(result + 12) = 6; return result; } // ZL31hb_font_get_variation_glyph_nilP9hb_font_tPvjjPjS1_ __int64 __fastcall ZL31hb_font_get_variation_glyph_nilP9hb_font_tPvjjPjS1_( __int64 a1, __int64 a2, __int64 a3, __int64 a4, _DWORD *a5) { *a5 = 0; return 0; } // ZN14FriendsManager16destructInstanceEv void ZN14FriendsManager16destructInstanceEv() { void *v0; // x19 v0 = (void *)FriendsManager::sm_pInstance; if ( FriendsManager::sm_pInstance ) { ZN14FriendsManagerD2Ev(FriendsManager::sm_pInstance); operator delete(v0); } FriendsManager::sm_pInstance = 0; } // ZNK11SCIDManager22getGameAccountNicknameEv void *ZNK11SCIDManager22getGameAccountNicknameEv() { return &s_emptyString; } // ZNK6String11lastIndexOfEii __int64 __fastcall ZNK6String11lastIndexOfEii(_DWORD *a1, int a2, int a3) { int v3; // w16 int v4; // w8 int v5; // w9 _QWORD *v6; // x10 int v7; // w13 __int64 result; // x0 char *v9; // x13 char v10; // w14 int v11; // t1 int v12; // w17 _BYTE *v13; // x15 int v14; // w14 unsigned int v15; // w17 int v16; // w3 __int64 v17; // x5 __int64 v18; // x4 _BYTE *v19; // x10 char *v20; // x13 char v21; // w14 int v22; // t1 int v23; // w17 _BYTE *v24; // x15 int v25; // w14 unsigned int v26; // w17 int v27; // w3 __int64 v28; // x5 __int64 v29; // x4 if ( a3 < 0 ) return 0xFFFFFFFFLL; v4 = *a1; if ( (int)*a1 < 1 ) return 0xFFFFFFFFLL; v5 = a1[1]; v6 = a1 + 2; v7 = 0; if ( v5 >= 8 ) { v19 = (_BYTE *)*v6; result = 0xFFFFFFFFLL; while ( v4 == v5 ) { v20 = &v19[v7 & ~(v7 >> 31)]; v21 = *v20; if ( !*v20 ) return result; while ( a2 != v21 ) { v22 = (unsigned __int8)*++v20; v21 = v22; if ( !v22 ) return result; } v25 = (_DWORD)v20 - (_DWORD)v19; LABEL_51: if ( v25 == -1 || v25 > a3 ) return result; if ( v25 == a3 ) return (unsigned int)a3; v7 = v25 + 1; result = (unsigned int)v25; if ( v4 <= v25 + 1 ) return result; } v23 = 0; v24 = v19; while ( *v24 ) { v25 = v23; v26 = 0; v27 = v5 + (_DWORD)v19 - (_DWORD)v24; do { if ( !v27 ) break; v28 = (unsigned __int8)*v24; v29 = wtf8_utf8d[v28]; if ( v26 ) v3 = v28 & 0x3F | (v3 << 6); else v3 = (0xFFu >> v29) & v28; v26 = wtf8_utf8d[(v29 | 0x100) + v26]; ++v24; if ( !v26 ) goto LABEL_47; --v27; } while ( v26 != 12 ); v3 = 65533; LABEL_47: v23 = v25 + (v25 < v7 || v3 != a2); if ( v25 >= v7 && v3 == a2 ) goto LABEL_51; } } else { result = 0xFFFFFFFFLL; while ( v4 == v5 ) { v9 = (char *)v6 + (v7 & (unsigned int)~(v7 >> 31)); v10 = *v9; if ( *v9 ) { while ( a2 != v10 ) { v11 = (unsigned __int8)*++v9; v10 = v11; if ( !v11 ) return result; } v14 = (_DWORD)v9 - (_DWORD)v6; LABEL_25: if ( v14 != -1 && v14 <= a3 ) { if ( v14 == a3 ) return (unsigned int)a3; v7 = v14 + 1; result = (unsigned int)v14; if ( v4 > v14 + 1 ) continue; } } return result; } v12 = 0; v13 = v6; while ( *v13 ) { v14 = v12; v15 = 0; v16 = v5 + (_DWORD)v6 - (_DWORD)v13; while ( v16 ) { v17 = (unsigned __int8)*v13; v18 = wtf8_utf8d[v17]; v3 = v15 ? v17 & 0x3F | (v3 << 6) : (0xFFu >> v18) & (unsigned int)v17; v15 = wtf8_utf8d[(v18 | 0x100) + v15]; ++v13; if ( v15 == 12 ) break; --v16; if ( !v15 ) goto LABEL_21; } v3 = 65533; LABEL_21: v12 = v14 + (v14 < v7 || v3 != a2); if ( v14 >= v7 && v3 == a2 ) goto LABEL_25; } } return result; } // ZN13YoozooManager4initEv void __fastcall ZN13YoozooManager4initEv(yoozoo::ScYoozooListener *listener) { yoozoo::ScYoozoo *v2; // x20 if ( (unsigned int)(g_androidAppStore - 41) < 0x1F || g_androidAppStore == 37 ) { v2 = yoozoo::ScYoozoo::s_instance; if ( !yoozoo::ScYoozoo::s_instance ) { v2 = (yoozoo::ScYoozoo *)operator new(8u); yoozoo::ScYoozoo::ScYoozoo(v2); yoozoo::ScYoozoo::s_instance = v2; } yoozoo::ScYoozoo::init(v2, listener); } } // ZN12SupercellSWF13cacheIntArrayEiPib size_t __fastcall ZN12SupercellSWF13cacheIntArrayEiPib(size_t result, int a2, void *ptr, char a4) { FILE *v5; // x3 size_t v7; // x20 _DWORD *v8; // x21 v5 = *(FILE **)(result + 16); if ( v5 ) { v7 = result; if ( (a4 & 1) != 0 ) v8 = (_DWORD *)(result + 24); else v8 = 0; result = fwrite(ptr, 4u, a2, v5); if ( (_DWORD)result == a2 ) { if ( v8 ) *v8 += 4 * a2; } else { *(_BYTE *)(v7 + 31) = 1; } } return result; } // ZN25SetCountryResponseMessageC2EiPK15LogicRegionData // Alternative name is '_ZN25SetCountryResponseMessageC1EiPK15LogicRegionData' __int64 __fastcall ZN25SetCountryResponseMessageC2EiPK15LogicRegionData(__int64 a1, int a2, __int64 a3) { __int64 result; // x0 result = ZN14PiranhaMessageC2Ei(); *(_DWORD *)(a1 + 132) = a2; *(_QWORD *)a1 = &off_D2DE20; *(_QWORD *)(a1 + 136) = a3; return result; } // ZNK15ChatStreamEntry6encodeEP15ChecksumEncoder __int64 __fastcall ZNK15ChatStreamEntry6encodeEP15ChecksumEncoder(__int64 a1, __int64 a2) { ZNK11StreamEntry6encodeEP15ChecksumEncoder(a1, a2); return (*(__int64 (__fastcall **)(__int64, _QWORD))(*(_QWORD *)a2 + 56LL))(a2, *(_QWORD *)(a1 + 48)); } // ZL11preloadSkinP16ResourceListenerPK13LogicSkinDatab void __fastcall ZL11preloadSkinP16ResourceListenerPK13LogicSkinDatab(__int64 a1, __int64 a2, char a3) { __int64 v5; // x0 __int64 v6; // x0 __int64 v7; // x0 __int64 v8; // x0 void *v9; // x0 void *v10; // x0 __int64 v11; // x0 __int64 v12; // x0 __int64 v13; // x0 __int64 v14; // x0 __int64 v15; // x0 __int64 v16; // x0 __int64 v17; // x0 __int64 v18; // x0 void *v19; // x0 __int64 v20; // x0 __int64 v21; // x0 void *v22; // x0 __int64 v23; // x0 _QWORD *v24; // x0 _DWORD *v25; // x0 _DWORD *v26; // x21 __int64 v27; // x21 __int64 v28; // x0 __int64 v29; // x0 __int64 v30; // x0 __int64 v31; // x0 __int64 v32; // x0 __int64 v33; // x0 __int64 started; // x0 __int64 v35; // x0 __int64 v36; // x0 __int64 v37; // x0 __int64 v38; // x0 __int64 v39; // x0 __int64 v40; // x0 __int64 v41; // x0 __int64 v42; // x0 __int64 v43; // x0 __int64 v44; // x20 __int64 v45; // x0 _QWORD *v46; // x0 __int64 v47; // x0 __int64 v48; // x20 __int64 v49; // x0 _QWORD *v50; // x0 _DWORD v51[4]; // [xsp+8h] [xbp-78h] BYREF _QWORD v52[2]; // [xsp+18h] [xbp-68h] BYREF __int64 v53[2]; // [xsp+28h] [xbp-58h] BYREF _BYTE v54[16]; // [xsp+38h] [xbp-48h] BYREF _BYTE v55[16]; // [xsp+48h] [xbp-38h] BYREF __int64 v56; // [xsp+58h] [xbp-28h] v56 = *(_QWORD *)(_ReadStatusReg(TPIDR_EL0) + 40); ZN11Character3D12preloadModelEP16ResourceListenerPK13LogicSkinDatab(a1, a2, a3 & 1); v5 = ZNK17LogicSkinConfData11getIdleAnimEv(*(_QWORD *)(a2 + 168)); ZL16preloadAnimationP16ResourceListenerRK6StringPK13LogicSkinData(a1, v5, a2); v6 = ZNK17LogicSkinConfData11getWalkAnimEv(*(_QWORD *)(a2 + 168)); ZL16preloadAnimationP16ResourceListenerRK6StringPK13LogicSkinData(a1, v6, a2); v7 = ZNK17LogicSkinConfData19getPrimarySkillAnimEv(*(_QWORD *)(a2 + 168)); ZL16preloadAnimationP16ResourceListenerRK6StringPK13LogicSkinData(a1, v7, a2); v8 = ZNK17LogicSkinConfData21getSecondarySkillAnimEv(*(_QWORD *)(a2 + 168)); ZL16preloadAnimationP16ResourceListenerRK6StringPK13LogicSkinData(a1, v8, a2); v9 = ZNK17LogicSkinConfData13getRecoilAnimEv(*(_QWORD *)(a2 + 168)); ZL16preloadAnimationP16ResourceListenerRK6StringPK13LogicSkinData(a1, (__int64)v9, a2); v10 = ZNK17LogicSkinConfData14getRecoilAnim2Ev(*(_QWORD *)(a2 + 168)); ZL16preloadAnimationP16ResourceListenerRK6StringPK13LogicSkinData(a1, (__int64)v10, a2); v11 = ZNK17LogicSkinConfData17getUltiRecoilAnimEv(*(_QWORD *)(a2 + 168)); ZL16preloadAnimationP16ResourceListenerRK6StringPK13LogicSkinData(a1, v11, a2); v12 = ZNK17LogicSkinConfData18getUltiRecoilAnim2Ev(*(_QWORD *)(a2 + 168)); ZL16preloadAnimationP16ResourceListenerRK6StringPK13LogicSkinData(a1, v12, a2); v13 = ZNK17LogicSkinConfData16getReloadingAnimEv(*(_QWORD *)(a2 + 168)); ZL16preloadAnimationP16ResourceListenerRK6StringPK13LogicSkinData(a1, v13, a2); v14 = ZNK17LogicSkinConfData15getPushbackAnimEv(*(_QWORD *)(a2 + 168)); ZL16preloadAnimationP16ResourceListenerRK6StringPK13LogicSkinData(a1, v14, a2); v15 = ZNK17LogicSkinConfData12getHappyAnimEv(*(_QWORD *)(a2 + 168)); ZL16preloadAnimationP16ResourceListenerRK6StringPK13LogicSkinData(a1, v15, a2); v16 = ZNK17LogicSkinConfData16getHappyLoopAnimEv(*(_QWORD *)(a2 + 168)); ZL16preloadAnimationP16ResourceListenerRK6StringPK13LogicSkinData(a1, v16, a2); v17 = ZNK17LogicSkinConfData10getSadAnimEv(*(_QWORD *)(a2 + 168)); ZL16preloadAnimationP16ResourceListenerRK6StringPK13LogicSkinData(a1, v17, a2); v18 = ZNK17LogicSkinConfData14getSadLoopAnimEv(*(_QWORD *)(a2 + 168)); ZL16preloadAnimationP16ResourceListenerRK6StringPK13LogicSkinData(a1, v18, a2); v19 = ZNK17LogicSkinConfData16getSignatureAnimEv(*(_QWORD *)(a2 + 168)); ZL16preloadAnimationP16ResourceListenerRK6StringPK13LogicSkinData(a1, (__int64)v19, a2); v20 = ZNK17LogicSkinConfData17getHappyEnterAnimEv(*(_QWORD *)(a2 + 168)); ZL16preloadAnimationP16ResourceListenerRK6StringPK13LogicSkinData(a1, v20, a2); v21 = ZNK17LogicSkinConfData15getSadEnterAnimEv(*(_QWORD *)(a2 + 168)); ZL16preloadAnimationP16ResourceListenerRK6StringPK13LogicSkinData(a1, v21, a2); v22 = ZNK17LogicSkinConfData14getProfileAnimEv(*(_QWORD *)(a2 + 168));