================ ENCODE BLOCK 0 ================ // ZNK20LogicCharacterServer6encodeEP9BitStreambiib __int64 __fastcall ZNK20LogicCharacterServer6encodeEP9BitStreambiib( __int64 a1, __int64 a2, char a3, unsigned int a4, int a5, char a6) { __int64 v11; // x23 unsigned int v12; // w24 __int64 v13; // x1 bool v14; // w0 int v15; // w26 __int64 v16; // x0 char v17; // w1 int v18; // w26 __int64 v19; // x0 char v20; // w26 __int64 v21; // x0 __int64 v22; // x9 int v24; // w26 int v25; // w8 signed __int64 v26; // x8 __int64 v27; // x9 signed __int64 v28; // x10 unsigned int v29; // w1 int v30; // w11 int v31; // w12 int **v32; // x13 unsigned __int64 v33; // x14 _DWORD *v34; // x15 int *v35; // x16 int v36; // w16 _DWORD *v37; // x11 __int64 v38; // x0 bool v39; // w0 __int64 v40; // x1 __int64 v41; // x8 __int64 v42; // x26 unsigned int v43; // w1 unsigned int v44; // w0 __int64 v45; // x1 __int64 v46; // x1 __int64 v47; // x8 __int64 v48; // x1 __int64 v49; // x0 unsigned int v50; // w0 char v51; // w1 __int64 v52; // x0 __int64 v53; // x0 _QWORD *v54; // x0 __int64 v55; // x0 __int64 v56; // x27 _QWORD *v57; // x25 __int64 v58; // x28 _DWORD *v59; // x26 char v60; // w1 __int64 v61; // x1 __int64 v62; // x0 __int64 v63; // x0 int v64; // w25 unsigned int v65; // w26 __int64 v66; // x0 __int64 v67; // x25 __int64 v68; // x27 _QWORD *v69; // x26 unsigned int v70; // w1 __int64 v71; // x1 __int64 v72; // x8 __int64 v73; // x8 __int64 v74; // x0 unsigned int v75; // w0 unsigned int v76; // w0 __int64 v77; // x16 __int64 v78; // x17 __int64 v79; // x23 _DWORD *v80; // x8 __int64 v81; // x9 int v82; // w1 __int64 result; // x0 __int64 v84; // x12 int v85; // w10 int v86; // w11 int *v87; // x14 int v88; // w13 int v89; // w15 __int64 i; // x24 unsigned int v91; // w0 __int64 v92; // x22 __int64 j; // x23 ZNK21LogicGameObjectServer6encodeEP9BitStreami(a1, a2, a4); v11 = ZNK21LogicGameObjectServer7getDataEv(a1); v12 = *(_DWORD *)(ZNK21LogicGameObjectServer24getLogicBattleModeServerEv(a1) + 236); if ( !*(_BYTE *)(a1 + 1092) ) { if ( (a3 & 1) == 0 ) goto LABEL_9; v14 = ZNK20LogicCharacterServer22isPlayerControlRemovedEv(a1); ZN9BitStream12writeBooleanEb(a2, v14); v15 = *(_DWORD *)(a1 + 1204) + 1; v16 = ZNK21LogicGameObjectServer24getLogicBattleModeServerEv(a1); v17 = v15 >= (int)ZNK21LogicBattleModeServer7getTickEv(v16); ZN9BitStream12writeBooleanEb(a2, v17); if ( ZNK20LogicCharacterServer22isPlayerControlRemovedEv(a1) || (v18 = *(_DWORD *)(a1 + 1204) + 1, v19 = ZNK21LogicGameObjectServer24getLogicBattleModeServerEv(a1), v18 >= (int)ZNK21LogicBattleModeServer7getTickEv(v19)) ) { LABEL_9: ZN9BitStream22writePositiveIntMax511Ei(a2, *(unsigned int *)(a1 + 76)); ZN9BitStream22writePositiveIntMax511Ei(a2, *(unsigned int *)(a1 + 72)); } ZN9BitStream20writePositiveIntMax7Ei(a2, *(unsigned int *)(a1 + 120)); if ( *(_BYTE *)(ZNK21LogicGameObjectServer7getDataEv(a1) + 467) ) { v20 = *(_DWORD *)(a1 + 844) > 0; if ( v12 != 19 ) goto LABEL_19; } else { v20 = 0; if ( v12 != 19 ) { LABEL_19: ZN9BitStream12writeBooleanEb(a2, v20); ZN9BitStream13writeIntMax63Ei(a2, *(unsigned int *)(a1 + 312)); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 345)); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 347)); if ( *(_BYTE *)(a1 + 347) ) ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 348)); ZN9BitStream12writeBooleanEb(a2, *(_DWORD *)(a1 + 356) > 0); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 1041)); goto LABEL_22; } } v21 = ZNK21LogicGameObjectServer24getLogicBattleModeServerEv(a1); v22 = *(int *)(v21 + 668); while ( v22 >= 1 ) { if ( *(_DWORD *)(*(_QWORD *)(v21 + 656) + 4 * v22-- - 4) == *(_DWORD *)(a1 + 60) ) { v20 = 1; goto LABEL_19; } } goto LABEL_19; } ZN9BitStream20writePositiveIntMax7Ei(a2, *(unsigned int *)(a1 + 120)); if ( *(_DWORD *)(v11 + 412) == 13 || *(_BYTE *)(v11 + 477) ) { ZN9BitStream22writePositiveIntMax511Ei(a2, *(unsigned int *)(a1 + 76)); v13 = *(unsigned int *)(a1 + 72); } else { if ( !ZNK18LogicCharacterData13getAreaEffectEv(v11) ) goto LABEL_22; v13 = *(unsigned int *)(a1 + 76); } ZN9BitStream22writePositiveIntMax511Ei(a2, v13); LABEL_22: ZN9BitStream34writePositiveVIntMax65535OftenZeroEi(a2, *(unsigned int *)(a1 + 1028)); ZN9BitStream34writePositiveVIntMax65535OftenZeroEi(a2, *(unsigned int *)(a1 + 1032)); ZN9BitStream12writeBooleanEb(a2, 0); ZN9BitStream12writeBooleanEb(a2, 0); ZN9BitStream12writeBooleanEb(a2, 0); ZN9BitStream12writeBooleanEb(a2, 0); ZN9BitStream12writeBooleanEb(a2, 0); ZN9BitStream12writeBooleanEb(a2, 0); ZN9BitStream12writeBooleanEb(a2, 0); ZN9BitStream12writeBooleanEb(a2, 0); ZN9BitStream32writePositiveVIntMax255OftenZeroEi(a2, *(_DWORD *)(a1 + 1280) / 10); ZN9BitStream32writePositiveVIntMax255OftenZeroEi(a2, *(_DWORD *)(a1 + 940)); if ( *(int *)(a1 + 940) >= 1 ) { v24 = 0; do { ZN9BitStream20writePositiveIntMax7Ei(a2, *(unsigned int *)(**(_QWORD **)(a1 + 928) + 28LL)); v25 = *(_DWORD *)(a1 + 940); ++v24; } while ( v24 < v25 ); if ( v25 > 0 ) ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 660)); } v26 = *(int *)(a1 + 972); if ( (int)v26 < 1 ) { v29 = 0; goto LABEL_41; } v27 = *(_QWORD *)(a1 + 960); if ( (_DWORD)v26 == 1 ) { v28 = 0; v29 = 0; do { LABEL_38: v37 = *(_DWORD **)(v27 + 8 * v28++); if ( *v37 == 10 ) ++v29; } while ( v28 < v26 ); goto LABEL_41; } v28 = v26 & 0xFFFFFFFFFFFFFFFELL; v30 = 0; v31 = 0; v32 = (int **)(v27 + 8); v33 = v26 & 0xFFFFFFFFFFFFFFFELL; do { v34 = *(v32 - 1); v35 = *v32; v32 += 2; v36 = *v35; if ( *v34 == 10 ) ++v30; if ( v36 == 10 ) ++v31; v33 -= 2LL; } while ( v33 ); v29 = v31 + v30; if ( v28 != v26 ) goto LABEL_38; LABEL_41: ZN9BitStream32writePositiveVIntMax255OftenZeroEi(a2, v29); if ( (ZNK18LogicCharacterData6isBossEv(v11) & 1) != 0 ) { ZN9BitStream26writePositiveIntMax2097151Ei(a2, *(unsigned int *)(a1 + 176)); ZN9BitStream26writePositiveIntMax2097151Ei(a2, *(unsigned int *)(a1 + 180)); } else { v38 = ZNK21LogicGameObjectServer7getDataEv(a1); if ( (ZNK18LogicCharacterData20hasVeryMuchHitpointsEv(v38) & 1) != 0 ) { ZN9BitStream25writePositiveIntMax524287Ei(a2, *(unsigned int *)(a1 + 176)); ZN9BitStream25writePositiveIntMax524287Ei(a2, *(unsigned int *)(a1 + 180)); } else { v39 = ZN17LogicGameModeUtil13isBigGameBossEiPK21LogicGameObjectServer(v12, a1); v40 = *(unsigned int *)(a1 + 176); if ( v12 == 19 || v39 ) { ZN9BitStream25writePositiveIntMax262143Ei(a2, v40); ZN9BitStream25writePositiveIntMax262143Ei(a2, *(unsigned int *)(a1 + 180)); } else { ZN9BitStream25writePositiveVIntMax65535Ei(a2, v40); ZN9BitStream25writePositiveVIntMax65535Ei(a2, *(unsigned int *)(a1 + 180)); } } } if ( (ZNK18LogicCharacterData7isDecoyEv(v11) & 1) != 0 ) ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 1296)); if ( ZNK18LogicCharacterData6isHeroEv(v11) || (ZNK18LogicCharacterData7isDecoyEv(v11) & 1) != 0 ) { if ( ZNK18LogicCharacterData6isHeroEv(v11) ) v41 = a1; else v41 = 0; if ( v41 ) v42 = v41; else v42 = a1; if ( (ZN17LogicGameModeUtil25playersCollectBountyStarsEi(v12) & 1) != 0 ) { v43 = ZN9LogicMath3maxEii(0, *(_DWORD *)(v42 + 628) - 2); } else if ( (ZN17LogicGameModeUtil24playersCollectPowerCubesEi(v12) & 1) != 0 ) { v43 = *(_DWORD *)(v42 + 920); } else { v43 = *(_DWORD *)(v42 + 628); } ZN9BitStream32writePositiveVIntMax255OftenZeroEi(a2, v43); if ( *(int *)(a1 + 1320) < 1 ) { ZN9BitStream12writeBooleanEb(a2, 0); } else { ZN9BitStream12writeBooleanEb(a2, 1); ZN9BitStream23writePositiveIntMax2047Ei(a2, *(unsigned int *)(a1 + 1320)); ZN9BitStream23writePositiveIntMax2047Ei(a2, *(unsigned int *)(a1 + 1324)); } ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(v42 + 1297)); } if ( ZNK18LogicCharacterData6isHeroEv(v11) ) { if ( (ZN17LogicGameModeUtil17modeHasCarryablesEi(v12) & 1) != 0 ) { ZN9BitStream12writeBooleanEb(a2, *(_QWORD *)(a1 + 856) != 0); if ( *(_QWORD *)(a1 + 856) ) { if ( (a6 & 1) != 0 ) { v44 = ZN9LogicMath5clampEiii(*(_DWORD *)(a1 + 1072), 0, 0x1FFF); ZN9BitStream34writePositiveVIntMax65535OftenZeroEi(a2, v44); v45 = (unsigned int)ZN9LogicMath5clampEiii(*(_DWORD *)(a1 + 1076), 0, 0x3FFF); } else { ZN9BitStream34writePositiveVIntMax65535OftenZeroEi(a2, 0); v45 = 0; } ZN9BitStream34writePositiveVIntMax65535OftenZeroEi(a2, v45); v49 = ZNK21LogicGameObjectServer11getGlobalIDEv(*(_QWORD *)(a1 + 856)); v50 = ZN8GlobalID13getInstanceIDEi(v49); ZN9BitStream25writePositiveVIntMax65535Ei(a2, v50); } } ZN9BitStream32writePositiveVIntMax255OftenZeroEi(a2, *(_DWORD *)(a1 + 432) / 50); ZN9BitStream12writeBooleanEb(a2, *(_DWORD *)(a1 + 844) > 0); ZN9BitStream12writeBooleanEb(a2, 0); if ( *(_BYTE *)(a1 + 344) || *(_BYTE *)(a1 + 280) || *(_BYTE *)(a1 + 281) || *(_BYTE *)(a1 + 913) || *(_BYTE *)(a1 + 915) || *(int *)(a1 + 1116) >= 1 ) { ZN9BitStream12writeBooleanEb(a2, 1); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 344)); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 280)); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 281)); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 913)); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 915)); v51 = *(_DWORD *)(a1 + 1116) > 0; } else { v51 = 0; } ZN9BitStream12writeBooleanEb(a2, v51); if ( (a3 & 1) != 0 ) { ZN9BitStream12writeBooleanEb(a2, *(_DWORD *)(a1 + 1196) > 0); if ( *(int *)(a1 + 1196) >= 1 ) { ZN9BitStream16writeIntMax65535Ei(a2, *(unsigned int *)(a1 + 1188)); ZN9BitStream16writeIntMax65535Ei(a2, *(unsigned int *)(a1 + 1192)); } } v52 = *(_QWORD *)(v11 + 432); if ( v52 && (int)ZNK14LogicSkillData19getChargedShotCountEv(v52) >= 1 ) ZN9BitStream12writeIntMax3Ei(a2, *(unsigned int *)(a1 + 1100)); v53 = ZNK21LogicGameObjectServer7getDataEv(a1); if ( (ZNK18LogicCharacterData21shouldEncodePetStatusEv(v53) & 1) != 0 ) { v54 = (_QWORD *)ZNK21LogicGameObjectServer24getLogicBattleModeServerEv(a1); v55 = ZNK28LogicGameObjectManagerServer14getGameObjectsEv(*v54); v56 = *(unsigned int *)(v55 + 12); if ( (int)v56 < 1 ) { LABEL_109: v60 = 0; } else { v57 = (_QWORD *)v55; v58 = 0; while ( 1 ) { v59 = *(_DWORD **)(*v57 + 8 * v58); if ( !(*(unsigned int (__fastcall **)(_DWORD *))(*(_QWORD *)v59 + 64LL))(v59) && v59 != (_DWORD *)a1 && v59[15] == *(_DWORD *)(a1 + 60) ) { break; } if ( (*(unsigned int (__fastcall **)(_DWORD *))(*(_QWORD *)v59 + 64LL))(v59) == 1 && v59[15] == *(_DWORD *)(a1 + 60) && ZNK21LogicProjectileServer17isSummoningMinionEv((__int64)v59) ) { break; } if ( v56 == ++v58 ) goto LABEL_109; } v60 = 1; } ZN9BitStream12writeBooleanEb(a2, v60); } if ( *(_BYTE *)(ZNK21LogicGameObjectServer7getDataEv(a1) + 476) ) ZN9BitStream20writePositiveIntMax3Ei(a2, 0); ZN9BitStream12writeBooleanEb(a2, *(_DWORD *)(a1 + 1064) > 0); v61 = *(unsigned int *)(a1 + 1064); if ( (int)v61 >= 1 ) { ZN9BitStream21writePositiveIntMax15Ei(a2, v61); ZN9BitStream20writePositiveIntMax7Ei(a2, *(unsigned int *)(a1 + 1068)); } if ( *(_BYTE *)(a1 + 344) ) { ZN9BitStream22writePositiveIntMax255Ei(a2, *(unsigned int *)(a1 + 460)); ZN9BitStream21writePositiveIntMax15Ei(a2, *(unsigned int *)(a1 + 452)); } if ( !*(_QWORD *)(ZNK21LogicGameObjectServer7getDataEv(a1) + 440) ) goto LABEL_133; v62 = ZNK21LogicGameObjectServer7getDataEv(a1); if ( !ZNK14LogicSkillData13getProjectileEv(*(_QWORD *)(v62 + 440)) ) goto LABEL_133; v63 = ZNK21LogicGameObjectServer7getDataEv(a1); if ( *(_DWORD *)(ZNK14LogicSkillData13getProjectileEv(*(_QWORD *)(v63 + 440)) + 396) != 5 ) goto LABEL_133; if ( *(_BYTE *)(a1 + 344) && *(_DWORD *)(a1 + 452) == 13 ) { v64 = **(_DWORD **)(a1 + 144); v65 = **(_DWORD **)(a1 + 160); } else { v66 = ZN28LogicGameObjectManagerServer14getProjectilesEv(*(_QWORD *)(a1 + 24)); if ( *(int *)(v66 + 12) < 1 ) { LABEL_132: ZN9BitStream12writeBooleanEb(a2, 0); LABEL_133: switch ( *(_DWORD *)(a1 + 1152) ) { case 0: goto LABEL_159; case 1: case 7: if ( *(_BYTE *)(a1 + 252) ) v70 = 255; else v70 = *(_DWORD *)(a1 + 1144) / 50; ZN9BitStream32writePositiveVIntMax255OftenZeroEi(a2, v70); break; case 5: ZN9BitStream23writePositiveIntMax2047Ei(a2, (unsigned int)(*(int *)(a1 + 1108) >> 2)); break; case 8: v46 = *(unsigned int *)(a1 + 1144); goto LABEL_141; default: if ( (a3 & 1) != 0 ) { if ( *(_BYTE *)(a1 + 252) ) v71 = 1023; else v71 = (unsigned int)(*(_DWORD *)(a1 + 1144) / 50); ZN9BitStream23writePositiveIntMax1023Ei(a2, v71); } break; } goto LABEL_159; } v67 = v66; v68 = 0; while ( 1 ) { v69 = *(_QWORD **)(*(_QWORD *)v67 + 8 * v68); if ( ((*(__int64 (__fastcall **)(_QWORD *))(*v69 + 96LL))(v69) & 1) != 0 && v69[17] == a1 && *(_DWORD *)(ZNK21LogicProjectileServer17getProjectileDataEv(v69) + 396) == 5 ) { break; } if ( ++v68 >= *(int *)(v67 + 12) ) goto LABEL_132; } v64 = ZNK21LogicGameObjectServer4getXEv(v69); v65 = ZNK21LogicGameObjectServer4getYEv(v69); } ZN9BitStream12writeBooleanEb(a2, v64 > 0); if ( v64 >= 1 ) { ZN9BitStream25writePositiveVIntMax65535Ei(a2, (unsigned int)v64); ZN9BitStream25writePositiveVIntMax65535Ei(a2, v65); } goto LABEL_133; } if ( *(_DWORD *)(v11 + 412) == 8 ) { ZN9BitStream21writePositiveIntMax31Ei(a2); } else if ( *(_BYTE *)(v11 + 467) ) { v46 = *(unsigned int *)(a1 + 844); LABEL_141: ZN9BitStream20writePositiveIntMax7Ei(a2, v46); } else if ( (ZNK18LogicCharacterData11isCarryableEv(v11) & 1) != 0 ) { ZN9BitStream20writePositiveIntMax7Ei(a2, *(unsigned int *)(a1 + 892)); v47 = *(_QWORD *)(a1 + 856); if ( v47 ) { if ( *(_DWORD *)(v47 + 64) ) v48 = 2; else v48 = 1; v74 = a2; } else { v74 = a2; v48 = 0; } ZN9BitStream20writePositiveIntMax3Ei(v74, v48); } else { v72 = *(_QWORD *)(v11 + 432); if ( v72 && *(_DWORD *)(v72 + 192) == 2 || (v73 = *(_QWORD *)(v11 + 440)) != 0 && *(_DWORD *)(v73 + 192) == 2 ) { ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 344)); if ( *(_BYTE *)(a1 + 344) ) ZN9BitStream21writePositiveIntMax15Ei(a2, *(unsigned int *)(a1 + 452)); } else if ( v12 == 11 && *(_DWORD *)(v11 + 412) == 6 ) { ZN9BitStream22writePositiveIntMax127Ei(a2, *(unsigned int *)(a1 + 628)); } } LABEL_159: if ( *(int *)(ZNK21LogicGameObjectServer7getDataEv(a1) + 472) >= 1 ) { v75 = ZN9LogicMath5clampEiii(*(_DWORD *)(a1 + 832), 0, 1023); ZN9BitStream23writePositiveIntMax1023Ei(a2, v75); } if ( v12 == 14 && (ZNK18LogicCharacterData6isBossEv(v11) & 1) != 0 ) ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 280)); if ( (ZN17LogicGameModeUtil25isBossWithDifferentStagesEiPK18LogicCharacterData(v12, v11) & 1) != 0 ) ZN9BitStream20writePositiveIntMax7Ei(a2, *(unsigned int *)(a1 + 844)); ZN9BitStream12writeBooleanEb(a2, *(_DWORD *)(a1 + 360) > 0); ZN9BitStream20writePositiveIntMax3Ei(a2, *(unsigned int *)(a1 + 584)); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 580)); v76 = ZN9BitStream22writePositiveIntMax511Ei(a2, *(unsigned int *)(a1 + 840)); if ( (a3 & 1) != 0 ) { ZN9BitStream12writeBooleanEb(a2, 0); v76 = ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 581)); } v79 = *(unsigned int *)(a1 + 764); if ( (int)v79 <= 0 ) { result = ZN9BitStream21writePositiveIntMax31Ei(a2); goto LABEL_198; } v80 = *(_DWORD **)(a1 + 784); if ( (_DWORD)v79 != 1 ) { v84 = 0; v85 = 0; v86 = 0; v81 = (unsigned int)v79 & 0xFFFFFFFE; while ( 1 ) { v87 = &v80[v84]; v88 = *v87; v89 = v87[1]; if ( *v87 ) { if ( v89 ) goto LABEL_180; } else { v77 = *(_QWORD *)(a1 + 768); if ( v89 ) { LABEL_180: if ( v88 ) goto LABEL_181; goto LABEL_187; } } v78 = *(_QWORD *)(a1 + 768); if ( v88 ) { LABEL_181: if ( v89 ) goto LABEL_182; goto LABEL_188; } LABEL_187: LODWORD(v87) = *(_DWORD *)(v77 + 4 * v84); if ( v89 ) { LABEL_182: if ( !v88 ) goto LABEL_176; goto LABEL_183; } LABEL_188: LODWORD(v77) = *(_DWORD *)(v78 + 4 * v84 + 4); if ( !v88 ) { LABEL_176: LODWORD(v78) = *(_DWORD *)(a1 + 60); if ( !v89 ) goto LABEL_184; goto LABEL_177; } LABEL_183: if ( !v89 ) LABEL_184: v76 = *(_DWORD *)(a1 + 60); LABEL_177: v78 = (_DWORD)v78 == a5; v76 = v76 == a5; v77 = ((_DWORD)v77 == a5) | v76; v84 += 2; v85 += (v88 == 0) & (((_DWORD)v87 == a5) | (unsigned int)v78); v86 += (v89 == 0) & (unsigned __int8)v77; if ( v81 == v84 ) { v82 = v86 + v85; if ( v81 != v79 ) goto LABEL_172; goto LABEL_191; } } } v81 = 0; v82 = 0; if ( !*v80 ) goto LABEL_173; while ( v79 != ++v81 ) { LABEL_172: if ( !v80[v81] ) LABEL_173: v82 += *(_DWORD *)(*(_QWORD *)(a1 + 768) + 4 * v81) == a5 || *(_DWORD *)(a1 + 60) == a5; } LABEL_191: result = ZN9BitStream21writePositiveIntMax31Ei(a2); for ( i = 0; i != v79; ++i ) { if ( !*(_DWORD *)(*(_QWORD *)(a1 + 784) + 4 * i) && (*(_DWORD *)(*(_QWORD *)(a1 + 768) + 4 * i) == a5 || *(_DWORD *)(a1 + 60) == a5) ) { v91 = ZN9LogicMath5clampEiii(*(_DWORD *)(*(_QWORD *)(a1 + 752) + 4 * i), 0xFFFF8001, 0x7FFF); result = ZN9BitStream16writeIntMax32767Ei(a2, v91); } } LABEL_198: v92 = *(unsigned int *)(a1 + 332); if ( (int)v92 >= 1 ) { for ( j = 0; j != v92; ++j ) result = ZNK16LogicSkillServer6encodeEP9BitStreambPK20LogicCharacterServer( *(_QWORD **)(*(_QWORD *)(a1 + 320) + 8 * j), a2); } return result; } // enumPropertyStartsRange __int64 __fastcall enumPropertyStartsRange(__int64 a1) { (*(void (__fastcall **)(_QWORD))(a1 + 8))(*(_QWORD *)a1); return 1; } ================ ENCODE BLOCK 1 ================ __int64 __fastcall ZNK20LogicCharacterServer6encodeEP9BitStreambiib( __int64 a1, __int64 a2, char a3, unsigned int a4, int a5, char a6) { __int64 v11; // x23 unsigned int v12; // w24 __int64 v13; // x1 bool v14; // w0 int v15; // w26 __int64 v16; // x0 char v17; // w1 int v18; // w26 __int64 v19; // x0 char v20; // w26 __int64 v21; // x0 __int64 v22; // x9 int v24; // w26 int v25; // w8 signed __int64 v26; // x8 __int64 v27; // x9 signed __int64 v28; // x10 unsigned int v29; // w1 int v30; // w11 int v31; // w12 int **v32; // x13 unsigned __int64 v33; // x14 _DWORD *v34; // x15 int *v35; // x16 int v36; // w16 _DWORD *v37; // x11 __int64 v38; // x0 bool v39; // w0 __int64 v40; // x1 __int64 v41; // x8 __int64 v42; // x26 unsigned int v43; // w1 unsigned int v44; // w0 __int64 v45; // x1 __int64 v46; // x1 __int64 v47; // x8 __int64 v48; // x1 __int64 v49; // x0 unsigned int v50; // w0 char v51; // w1 __int64 v52; // x0 __int64 v53; // x0 _QWORD *v54; // x0 __int64 v55; // x0 __int64 v56; // x27 _QWORD *v57; // x25 __int64 v58; // x28 _DWORD *v59; // x26 char v60; // w1 __int64 v61; // x1 __int64 v62; // x0 __int64 v63; // x0 int v64; // w25 unsigned int v65; // w26 __int64 v66; // x0 __int64 v67; // x25 __int64 v68; // x27 _QWORD *v69; // x26 unsigned int v70; // w1 __int64 v71; // x1 __int64 v72; // x8 __int64 v73; // x8 __int64 v74; // x0 unsigned int v75; // w0 unsigned int v76; // w0 __int64 v77; // x16 __int64 v78; // x17 __int64 v79; // x23 _DWORD *v80; // x8 __int64 v81; // x9 int v82; // w1 __int64 result; // x0 __int64 v84; // x12 int v85; // w10 int v86; // w11 int *v87; // x14 int v88; // w13 int v89; // w15 __int64 i; // x24 unsigned int v91; // w0 __int64 v92; // x22 __int64 j; // x23 ZNK21LogicGameObjectServer6encodeEP9BitStreami(a1, a2, a4); v11 = ZNK21LogicGameObjectServer7getDataEv(a1); v12 = *(_DWORD *)(ZNK21LogicGameObjectServer24getLogicBattleModeServerEv(a1) + 236); if ( !*(_BYTE *)(a1 + 1092) ) { if ( (a3 & 1) == 0 ) goto LABEL_9; v14 = ZNK20LogicCharacterServer22isPlayerControlRemovedEv(a1); ZN9BitStream12writeBooleanEb(a2, v14); v15 = *(_DWORD *)(a1 + 1204) + 1; v16 = ZNK21LogicGameObjectServer24getLogicBattleModeServerEv(a1); v17 = v15 >= (int)ZNK21LogicBattleModeServer7getTickEv(v16); ZN9BitStream12writeBooleanEb(a2, v17); if ( ZNK20LogicCharacterServer22isPlayerControlRemovedEv(a1) || (v18 = *(_DWORD *)(a1 + 1204) + 1, v19 = ZNK21LogicGameObjectServer24getLogicBattleModeServerEv(a1), v18 >= (int)ZNK21LogicBattleModeServer7getTickEv(v19)) ) { LABEL_9: ZN9BitStream22writePositiveIntMax511Ei(a2, *(unsigned int *)(a1 + 76)); ZN9BitStream22writePositiveIntMax511Ei(a2, *(unsigned int *)(a1 + 72)); } ZN9BitStream20writePositiveIntMax7Ei(a2, *(unsigned int *)(a1 + 120)); if ( *(_BYTE *)(ZNK21LogicGameObjectServer7getDataEv(a1) + 467) ) { v20 = *(_DWORD *)(a1 + 844) > 0; if ( v12 != 19 ) goto LABEL_19; } else { v20 = 0; if ( v12 != 19 ) { LABEL_19: ZN9BitStream12writeBooleanEb(a2, v20); ZN9BitStream13writeIntMax63Ei(a2, *(unsigned int *)(a1 + 312)); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 345)); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 347)); if ( *(_BYTE *)(a1 + 347) ) ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 348)); ZN9BitStream12writeBooleanEb(a2, *(_DWORD *)(a1 + 356) > 0); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 1041)); goto LABEL_22; } } v21 = ZNK21LogicGameObjectServer24getLogicBattleModeServerEv(a1); v22 = *(int *)(v21 + 668); while ( v22 >= 1 ) { if ( *(_DWORD *)(*(_QWORD *)(v21 + 656) + 4 * v22-- - 4) == *(_DWORD *)(a1 + 60) ) { v20 = 1; goto LABEL_19; } } goto LABEL_19; } ZN9BitStream20writePositiveIntMax7Ei(a2, *(unsigned int *)(a1 + 120)); if ( *(_DWORD *)(v11 + 412) == 13 || *(_BYTE *)(v11 + 477) ) { ZN9BitStream22writePositiveIntMax511Ei(a2, *(unsigned int *)(a1 + 76)); v13 = *(unsigned int *)(a1 + 72); } else { if ( !ZNK18LogicCharacterData13getAreaEffectEv(v11) ) goto LABEL_22; v13 = *(unsigned int *)(a1 + 76); } ZN9BitStream22writePositiveIntMax511Ei(a2, v13); LABEL_22: ZN9BitStream34writePositiveVIntMax65535OftenZeroEi(a2, *(unsigned int *)(a1 + 1028)); ZN9BitStream34writePositiveVIntMax65535OftenZeroEi(a2, *(unsigned int *)(a1 + 1032)); ZN9BitStream12writeBooleanEb(a2, 0); ZN9BitStream12writeBooleanEb(a2, 0); ZN9BitStream12writeBooleanEb(a2, 0); ZN9BitStream12writeBooleanEb(a2, 0); ZN9BitStream12writeBooleanEb(a2, 0); ZN9BitStream12writeBooleanEb(a2, 0); ZN9BitStream12writeBooleanEb(a2, 0); ZN9BitStream12writeBooleanEb(a2, 0); ZN9BitStream32writePositiveVIntMax255OftenZeroEi(a2, *(_DWORD *)(a1 + 1280) / 10); ZN9BitStream32writePositiveVIntMax255OftenZeroEi(a2, *(_DWORD *)(a1 + 940)); if ( *(int *)(a1 + 940) >= 1 ) { v24 = 0; do { ZN9BitStream20writePositiveIntMax7Ei(a2, *(unsigned int *)(**(_QWORD **)(a1 + 928) + 28LL)); v25 = *(_DWORD *)(a1 + 940); ++v24; } while ( v24 < v25 ); if ( v25 > 0 ) ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 660)); } v26 = *(int *)(a1 + 972); if ( (int)v26 < 1 ) { v29 = 0; goto LABEL_41; } v27 = *(_QWORD *)(a1 + 960); if ( (_DWORD)v26 == 1 ) { v28 = 0; v29 = 0; do { LABEL_38: v37 = *(_DWORD **)(v27 + 8 * v28++); if ( *v37 == 10 ) ++v29; } while ( v28 < v26 ); goto LABEL_41; } v28 = v26 & 0xFFFFFFFFFFFFFFFELL; v30 = 0; v31 = 0; v32 = (int **)(v27 + 8); v33 = v26 & 0xFFFFFFFFFFFFFFFELL; do { v34 = *(v32 - 1); v35 = *v32; v32 += 2; v36 = *v35; if ( *v34 == 10 ) ++v30; if ( v36 == 10 ) ++v31; v33 -= 2LL; } while ( v33 ); v29 = v31 + v30; if ( v28 != v26 ) goto LABEL_38; LABEL_41: ZN9BitStream32writePositiveVIntMax255OftenZeroEi(a2, v29); if ( (ZNK18LogicCharacterData6isBossEv(v11) & 1) != 0 ) { ZN9BitStream26writePositiveIntMax2097151Ei(a2, *(unsigned int *)(a1 + 176)); ZN9BitStream26writePositiveIntMax2097151Ei(a2, *(unsigned int *)(a1 + 180)); } else { v38 = ZNK21LogicGameObjectServer7getDataEv(a1); if ( (ZNK18LogicCharacterData20hasVeryMuchHitpointsEv(v38) & 1) != 0 ) { ZN9BitStream25writePositiveIntMax524287Ei(a2, *(unsigned int *)(a1 + 176)); ZN9BitStream25writePositiveIntMax524287Ei(a2, *(unsigned int *)(a1 + 180)); } else { v39 = ZN17LogicGameModeUtil13isBigGameBossEiPK21LogicGameObjectServer(v12, a1); v40 = *(unsigned int *)(a1 + 176); if ( v12 == 19 || v39 ) { ZN9BitStream25writePositiveIntMax262143Ei(a2, v40); ZN9BitStream25writePositiveIntMax262143Ei(a2, *(unsigned int *)(a1 + 180)); } else { ZN9BitStream25writePositiveVIntMax65535Ei(a2, v40); ZN9BitStream25writePositiveVIntMax65535Ei(a2, *(unsigned int *)(a1 + 180)); } } } if ( (ZNK18LogicCharacterData7isDecoyEv(v11) & 1) != 0 ) ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 1296)); if ( ZNK18LogicCharacterData6isHeroEv(v11) || (ZNK18LogicCharacterData7isDecoyEv(v11) & 1) != 0 ) { if ( ZNK18LogicCharacterData6isHeroEv(v11) ) v41 = a1; else v41 = 0; if ( v41 ) v42 = v41; else v42 = a1; if ( (ZN17LogicGameModeUtil25playersCollectBountyStarsEi(v12) & 1) != 0 ) { v43 = ZN9LogicMath3maxEii(0, *(_DWORD *)(v42 + 628) - 2); } else if ( (ZN17LogicGameModeUtil24playersCollectPowerCubesEi(v12) & 1) != 0 ) { v43 = *(_DWORD *)(v42 + 920); } else { v43 = *(_DWORD *)(v42 + 628); } ZN9BitStream32writePositiveVIntMax255OftenZeroEi(a2, v43); if ( *(int *)(a1 + 1320) < 1 ) { ZN9BitStream12writeBooleanEb(a2, 0); } else { ZN9BitStream12writeBooleanEb(a2, 1); ZN9BitStream23writePositiveIntMax2047Ei(a2, *(unsigned int *)(a1 + 1320)); ZN9BitStream23writePositiveIntMax2047Ei(a2, *(unsigned int *)(a1 + 1324)); } ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(v42 + 1297)); } if ( ZNK18LogicCharacterData6isHeroEv(v11) ) { if ( (ZN17LogicGameModeUtil17modeHasCarryablesEi(v12) & 1) != 0 ) { ZN9BitStream12writeBooleanEb(a2, *(_QWORD *)(a1 + 856) != 0); if ( *(_QWORD *)(a1 + 856) ) { if ( (a6 & 1) != 0 ) { v44 = ZN9LogicMath5clampEiii(*(_DWORD *)(a1 + 1072), 0, 0x1FFF); ZN9BitStream34writePositiveVIntMax65535OftenZeroEi(a2, v44); v45 = (unsigned int)ZN9LogicMath5clampEiii(*(_DWORD *)(a1 + 1076), 0, 0x3FFF); } else { ZN9BitStream34writePositiveVIntMax65535OftenZeroEi(a2, 0); v45 = 0; } ZN9BitStream34writePositiveVIntMax65535OftenZeroEi(a2, v45); v49 = ZNK21LogicGameObjectServer11getGlobalIDEv(*(_QWORD *)(a1 + 856)); v50 = ZN8GlobalID13getInstanceIDEi(v49); ZN9BitStream25writePositiveVIntMax65535Ei(a2, v50); } } ZN9BitStream32writePositiveVIntMax255OftenZeroEi(a2, *(_DWORD *)(a1 + 432) / 50); ZN9BitStream12writeBooleanEb(a2, *(_DWORD *)(a1 + 844) > 0); ZN9BitStream12writeBooleanEb(a2, 0); if ( *(_BYTE *)(a1 + 344) || *(_BYTE *)(a1 + 280) || *(_BYTE *)(a1 + 281) || *(_BYTE *)(a1 + 913) || *(_BYTE *)(a1 + 915) || *(int *)(a1 + 1116) >= 1 ) { ZN9BitStream12writeBooleanEb(a2, 1); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 344)); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 280)); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 281)); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 913)); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 915)); v51 = *(_DWORD *)(a1 + 1116) > 0; } else { v51 = 0; } ZN9BitStream12writeBooleanEb(a2, v51); if ( (a3 & 1) != 0 ) { ZN9BitStream12writeBooleanEb(a2, *(_DWORD *)(a1 + 1196) > 0); if ( *(int *)(a1 + 1196) >= 1 ) { ZN9BitStream16writeIntMax65535Ei(a2, *(unsigned int *)(a1 + 1188)); ZN9BitStream16writeIntMax65535Ei(a2, *(unsigned int *)(a1 + 1192)); } } v52 = *(_QWORD *)(v11 + 432); if ( v52 && (int)ZNK14LogicSkillData19getChargedShotCountEv(v52) >= 1 ) ZN9BitStream12writeIntMax3Ei(a2, *(unsigned int *)(a1 + 1100)); v53 = ZNK21LogicGameObjectServer7getDataEv(a1); if ( (ZNK18LogicCharacterData21shouldEncodePetStatusEv(v53) & 1) != 0 ) { v54 = (_QWORD *)ZNK21LogicGameObjectServer24getLogicBattleModeServerEv(a1); v55 = ZNK28LogicGameObjectManagerServer14getGameObjectsEv(*v54); v56 = *(unsigned int *)(v55 + 12); if ( (int)v56 < 1 ) { LABEL_109: v60 = 0; } else { v57 = (_QWORD *)v55; v58 = 0; while ( 1 ) { v59 = *(_DWORD **)(*v57 + 8 * v58); if ( !(*(unsigned int (__fastcall **)(_DWORD *))(*(_QWORD *)v59 + 64LL))(v59) && v59 != (_DWORD *)a1 && v59[15] == *(_DWORD *)(a1 + 60) ) { break; } if ( (*(unsigned int (__fastcall **)(_DWORD *))(*(_QWORD *)v59 + 64LL))(v59) == 1 && v59[15] == *(_DWORD *)(a1 + 60) && ZNK21LogicProjectileServer17isSummoningMinionEv((__int64)v59) ) { break; } if ( v56 == ++v58 ) goto LABEL_109; } v60 = 1; } ZN9BitStream12writeBooleanEb(a2, v60); } if ( *(_BYTE *)(ZNK21LogicGameObjectServer7getDataEv(a1) + 476) ) ZN9BitStream20writePositiveIntMax3Ei(a2, 0); ZN9BitStream12writeBooleanEb(a2, *(_DWORD *)(a1 + 1064) > 0); v61 = *(unsigned int *)(a1 + 1064); if ( (int)v61 >= 1 ) { ZN9BitStream21writePositiveIntMax15Ei(a2, v61); ZN9BitStream20writePositiveIntMax7Ei(a2, *(unsigned int *)(a1 + 1068)); } if ( *(_BYTE *)(a1 + 344) ) { ZN9BitStream22writePositiveIntMax255Ei(a2, *(unsigned int *)(a1 + 460)); ZN9BitStream21writePositiveIntMax15Ei(a2, *(unsigned int *)(a1 + 452)); } if ( !*(_QWORD *)(ZNK21LogicGameObjectServer7getDataEv(a1) + 440) ) goto LABEL_133; v62 = ZNK21LogicGameObjectServer7getDataEv(a1); if ( !ZNK14LogicSkillData13getProjectileEv(*(_QWORD *)(v62 + 440)) ) goto LABEL_133; v63 = ZNK21LogicGameObjectServer7getDataEv(a1); if ( *(_DWORD *)(ZNK14LogicSkillData13getProjectileEv(*(_QWORD *)(v63 + 440)) + 396) != 5 ) goto LABEL_133; if ( *(_BYTE *)(a1 + 344) && *(_DWORD *)(a1 + 452) == 13 ) { v64 = **(_DWORD **)(a1 + 144); v65 = **(_DWORD **)(a1 + 160); } else { v66 = ZN28LogicGameObjectManagerServer14getProjectilesEv(*(_QWORD *)(a1 + 24)); if ( *(int *)(v66 + 12) < 1 ) { LABEL_132: ZN9BitStream12writeBooleanEb(a2, 0); LABEL_133: switch ( *(_DWORD *)(a1 + 1152) ) { case 0: goto LABEL_159; case 1: case 7: if ( *(_BYTE *)(a1 + 252) ) v70 = 255; else v70 = *(_DWORD *)(a1 + 1144) / 50; ZN9BitStream32writePositiveVIntMax255OftenZeroEi(a2, v70); break; case 5: ZN9BitStream23writePositiveIntMax2047Ei(a2, (unsigned int)(*(int *)(a1 + 1108) >> 2)); break; case 8: v46 = *(unsigned int *)(a1 + 1144); goto LABEL_141; default: if ( (a3 & 1) != 0 ) { if ( *(_BYTE *)(a1 + 252) ) v71 = 1023; else v71 = (unsigned int)(*(_DWORD *)(a1 + 1144) / 50); ZN9BitStream23writePositiveIntMax1023Ei(a2, v71); } break; } goto LABEL_159; } v67 = v66; v68 = 0; while ( 1 ) { v69 = *(_QWORD **)(*(_QWORD *)v67 + 8 * v68); if ( ((*(__int64 (__fastcall **)(_QWORD *))(*v69 + 96LL))(v69) & 1) != 0 && v69[17] == a1 && *(_DWORD *)(ZNK21LogicProjectileServer17getProjectileDataEv(v69) + 396) == 5 ) { break; } if ( ++v68 >= *(int *)(v67 + 12) ) goto LABEL_132; } v64 = ZNK21LogicGameObjectServer4getXEv(v69); v65 = ZNK21LogicGameObjectServer4getYEv(v69); } ZN9BitStream12writeBooleanEb(a2, v64 > 0); if ( v64 >= 1 ) { ZN9BitStream25writePositiveVIntMax65535Ei(a2, (unsigned int)v64); ZN9BitStream25writePositiveVIntMax65535Ei(a2, v65); } goto LABEL_133; } if ( *(_DWORD *)(v11 + 412) == 8 ) { ZN9BitStream21writePositiveIntMax31Ei(a2); } else if ( *(_BYTE *)(v11 + 467) ) { v46 = *(unsigned int *)(a1 + 844); LABEL_141: ZN9BitStream20writePositiveIntMax7Ei(a2, v46); } else if ( (ZNK18LogicCharacterData11isCarryableEv(v11) & 1) != 0 ) { ZN9BitStream20writePositiveIntMax7Ei(a2, *(unsigned int *)(a1 + 892)); v47 = *(_QWORD *)(a1 + 856); if ( v47 ) { if ( *(_DWORD *)(v47 + 64) ) v48 = 2; else v48 = 1; v74 = a2; } else { v74 = a2; v48 = 0; } ZN9BitStream20writePositiveIntMax3Ei(v74, v48); } else { v72 = *(_QWORD *)(v11 + 432); if ( v72 && *(_DWORD *)(v72 + 192) == 2 || (v73 = *(_QWORD *)(v11 + 440)) != 0 && *(_DWORD *)(v73 + 192) == 2 ) { ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 344)); if ( *(_BYTE *)(a1 + 344) ) ZN9BitStream21writePositiveIntMax15Ei(a2, *(unsigned int *)(a1 + 452)); } else if ( v12 == 11 && *(_DWORD *)(v11 + 412) == 6 ) { ZN9BitStream22writePositiveIntMax127Ei(a2, *(unsigned int *)(a1 + 628)); } } LABEL_159: if ( *(int *)(ZNK21LogicGameObjectServer7getDataEv(a1) + 472) >= 1 ) { v75 = ZN9LogicMath5clampEiii(*(_DWORD *)(a1 + 832), 0, 1023); ZN9BitStream23writePositiveIntMax1023Ei(a2, v75); } if ( v12 == 14 && (ZNK18LogicCharacterData6isBossEv(v11) & 1) != 0 ) ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 280)); if ( (ZN17LogicGameModeUtil25isBossWithDifferentStagesEiPK18LogicCharacterData(v12, v11) & 1) != 0 ) ZN9BitStream20writePositiveIntMax7Ei(a2, *(unsigned int *)(a1 + 844)); ZN9BitStream12writeBooleanEb(a2, *(_DWORD *)(a1 + 360) > 0); ZN9BitStream20writePositiveIntMax3Ei(a2, *(unsigned int *)(a1 + 584)); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 580)); v76 = ZN9BitStream22writePositiveIntMax511Ei(a2, *(unsigned int *)(a1 + 840)); if ( (a3 & 1) != 0 ) { ZN9BitStream12writeBooleanEb(a2, 0); v76 = ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a1 + 581)); } v79 = *(unsigned int *)(a1 + 764); if ( (int)v79 <= 0 ) { result = ZN9BitStream21writePositiveIntMax31Ei(a2); goto LABEL_198; } v80 = *(_DWORD **)(a1 + 784); if ( (_DWORD)v79 != 1 ) { v84 = 0; v85 = 0; v86 = 0; v81 = (unsigned int)v79 & 0xFFFFFFFE; while ( 1 ) { v87 = &v80[v84]; v88 = *v87; v89 = v87[1]; if ( *v87 ) { if ( v89 ) goto LABEL_180; } else { v77 = *(_QWORD *)(a1 + 768); if ( v89 ) { LABEL_180: if ( v88 ) goto LABEL_181; goto LABEL_187; } } v78 = *(_QWORD *)(a1 + 768); if ( v88 ) { LABEL_181: if ( v89 ) goto LABEL_182; goto LABEL_188; } LABEL_187: LODWORD(v87) = *(_DWORD *)(v77 + 4 * v84); if ( v89 ) { LABEL_182: if ( !v88 ) goto LABEL_176; goto LABEL_183; } LABEL_188: LODWORD(v77) = *(_DWORD *)(v78 + 4 * v84 + 4); if ( !v88 ) { LABEL_176: LODWORD(v78) = *(_DWORD *)(a1 + 60); if ( !v89 ) goto LABEL_184; goto LABEL_177; } LABEL_183: if ( !v89 ) LABEL_184: v76 = *(_DWORD *)(a1 + 60); LABEL_177: v78 = (_DWORD)v78 == a5; v76 = v76 == a5; v77 = ((_DWORD)v77 == a5) | v76; v84 += 2; v85 += (v88 == 0) & (((_DWORD)v87 == a5) | (unsigned int)v78); v86 += (v89 == 0) & (unsigned __int8)v77; if ( v81 == v84 ) { v82 = v86 + v85; if ( v81 != v79 ) goto LABEL_172; goto LABEL_191; } } } v81 = 0; v82 = 0; if ( !*v80 ) goto LABEL_173; while ( v79 != ++v81 ) { LABEL_172: if ( !v80[v81] ) LABEL_173: v82 += *(_DWORD *)(*(_QWORD *)(a1 + 768) + 4 * v81) == a5 || *(_DWORD *)(a1 + 60) == a5; } LABEL_191: result = ZN9BitStream21writePositiveIntMax31Ei(a2); for ( i = 0; i != v79; ++i ) { if ( !*(_DWORD *)(*(_QWORD *)(a1 + 784) + 4 * i) && (*(_DWORD *)(*(_QWORD *)(a1 + 768) + 4 * i) == a5 || *(_DWORD *)(a1 + 60) == a5) ) { v91 = ZN9LogicMath5clampEiii(*(_DWORD *)(*(_QWORD *)(a1 + 752) + 4 * i), 0xFFFF8001, 0x7FFF); result = ZN9BitStream16writeIntMax32767Ei(a2, v91); } } LABEL_198: v92 = *(unsigned int *)(a1 + 332); if ( (int)v92 >= 1 ) { for ( j = 0; j != v92; ++j ) result = ZNK16LogicSkillServer6encodeEP9BitStreambPK20LogicCharacterServer( *(_QWORD **)(*(_QWORD *)(a1 + 320) + 8 * j), a2); } return result; } // enumPropertyStartsRange __int64 __fastcall enumPropertyStartsRange(__int64 a1) { (*(void (__fastcall **)(_QWORD))(a1 + 8))(*(_QWORD *)a1); return 1; }