================ DECODE BLOCK 0 ================ v16 = ZN28LogicGameObjectManagerServer6encodeEP9BitStreamP12LogicTileMapP11LogicPlayerP14LogicArrayListIS5_EPS6_IP22LogicTeamMemberElementEiiii( *a1, v15, a1[15], *(_QWORD *)(a1[16] + 8 * v12), v6, v14, *((unsigned int *)a1 + 6), *((unsigned int *)a1 + 56), *((_DWORD *)a1 + 59), v10); v11 = *((int *)a1 + 29); ++v12; v13 |= v16; } while ( v12 < v11 ); v7 = v35; } if ( *((_DWORD *)a1 + 59) == 7 ) { if ( (v13 & 1) != 0 ) { if ( (int)v11 >= 1 ) { v23 = 0; do { v24 = *(_QWORD *)(*a2 + 8 * v23); ZN9BitStream12writeBooleanEb(v24, 1); ZN9BitStream24writePositiveIntMax32767Ei(v24, *(unsigned int *)(*a1 + 168LL)); ZN9BitStream24writePositiveIntMax65535Ei(v24, *(unsigned int *)(*a1 + 172LL)); ++v23; } while ( v23 < *((int *)a1 + 29) ); } } else if ( (int)v11 >= 1 ) { v30 = 0; do ZN9BitStream12writeBooleanEb(*(_QWORD *)(*a2 + 8 * v30++), 0); while ( v30 < *((int *)a1 + 29) ); } } if ( a3 ) { ZN9BitStream11resetOffsetEv(a3); ZN28LogicGameObjectManagerServer6encodeEP9BitStreamP12LogicTileMapP11LogicPlayerP14LogicArrayListIS5_EPS6_IP22LogicTeamMemberElementEiiii( *a1, a3, a1[15], 0, v6, 0, *((unsigned int *)a1 + 6), *((unsigned int *)a1 + 56), *((_DWORD *)a1 + 59), v10); } goto LABEL_54; } LABEL_18: v18 = operator new(0x28u); ZN9BitStreamC2Ei(v18, 1500); if ( LogicBattleModeServer::SPECTATE_DEBUG ) { v19 = ZN28LogicGameObjectManagerServer6encodeEP9BitStreamP12LogicTileMapP11LogicPlayerP14LogicArrayListIS5_EPS6_IP22LogicTeamMemberElementEiiii( *a1, v18, a1[15], 0, v6, 0, *((unsigned int *)a1 + 6), *((unsigned int *)a1 + 56), *((_DWORD *)a1 + 59), v10); } else { v20 = **v6; v21 = *(int *)(v20 + 12); if ( (v21 & 0x80000000) != 0 || *((_DWORD *)a1 + 28) <= (int)v21 ) v22 = 0; else v22 = *(_QWORD *)(a1[23] + 8 * v21); v19 = ZN28LogicGameObjectManagerServer6encodeEP9BitStreamP12LogicTileMapP11LogicPlayerP14LogicArrayListIS5_EPS6_IP22LogicTeamMemberElementEiiii( *a1, v18, a1[15], v20, v6, v22, *((unsigned int *)a1 + 6), *((unsigned int *)a1 + 56), *((_DWORD *)a1 + 59), v10); } if ( *((_DWORD *)a1 + 59) == 7 ) { if ( (v19 & 1) != 0 ) { ZN9BitStream12writeBooleanEb(v18, 1); ZN9BitStream24writePositiveIntMax32767Ei(v18, *(unsigned int *)(*a1 + 168LL)); ZN9BitStream24writePositiveIntMax65535Ei(v18, *(unsigned int *)(*a1 + 172LL)); } else { ZN9BitStream12writeBooleanEb(v18, 0); } } (*(void (__fastcall **)(_QWORD, _QWORD, __int64))(*(_QWORD *)a1[5] + 504LL))(a1[5], *((unsigned int *)a1 + 6), v18); LABEL_54: result = ZN9LogicTime12increaseTickEv(v7); v32 = *((_DWORD *)a1 + 229); v33 = __OFSUB__(v32, 1); v34 = v32 - 1; if ( v34 < 0 != v33 ) return result; v8 = *a1; *((_DWORD *)a1 + 229) = v34; ZN28LogicGameObjectManagerServer7preTickEP14LogicArrayListIP11LogicPlayerE(v8, v6); if ( !*((_BYTE *)a1 + 171) ) goto LABEL_4; } } ================ DECODE BLOCK 1 ================ ZN28LogicGameObjectManagerServer6encodeEP9BitStreamP12LogicTileMapP11LogicPlayerP14LogicArrayListIS5_EPS6_IP22LogicTeamMemberElementEiiii( *a1, a3, a1[15], 0, v6, 0, *((unsigned int *)a1 + 6), *((unsigned int *)a1 + 56), *((_DWORD *)a1 + 59), v10); } goto LABEL_54; } LABEL_18: v18 = operator new(0x28u); ZN9BitStreamC2Ei(v18, 1500); if ( LogicBattleModeServer::SPECTATE_DEBUG ) { v19 = ZN28LogicGameObjectManagerServer6encodeEP9BitStreamP12LogicTileMapP11LogicPlayerP14LogicArrayListIS5_EPS6_IP22LogicTeamMemberElementEiiii( *a1, v18, a1[15], 0, v6, 0, *((unsigned int *)a1 + 6), *((unsigned int *)a1 + 56), *((_DWORD *)a1 + 59), v10); } else { v20 = **v6; v21 = *(int *)(v20 + 12); if ( (v21 & 0x80000000) != 0 || *((_DWORD *)a1 + 28) <= (int)v21 ) v22 = 0; else v22 = *(_QWORD *)(a1[23] + 8 * v21); v19 = ZN28LogicGameObjectManagerServer6encodeEP9BitStreamP12LogicTileMapP11LogicPlayerP14LogicArrayListIS5_EPS6_IP22LogicTeamMemberElementEiiii( *a1, v18, a1[15], v20, v6, v22, *((unsigned int *)a1 + 6), *((unsigned int *)a1 + 56), *((_DWORD *)a1 + 59), v10); } if ( *((_DWORD *)a1 + 59) == 7 ) { if ( (v19 & 1) != 0 ) { ZN9BitStream12writeBooleanEb(v18, 1); ZN9BitStream24writePositiveIntMax32767Ei(v18, *(unsigned int *)(*a1 + 168LL)); ZN9BitStream24writePositiveIntMax65535Ei(v18, *(unsigned int *)(*a1 + 172LL)); } else { ZN9BitStream12writeBooleanEb(v18, 0); } } (*(void (__fastcall **)(_QWORD, _QWORD, __int64))(*(_QWORD *)a1[5] + 504LL))(a1[5], *((unsigned int *)a1 + 6), v18); LABEL_54: result = ZN9LogicTime12increaseTickEv(v7); v32 = *((_DWORD *)a1 + 229); v33 = __OFSUB__(v32, 1); v34 = v32 - 1; if ( v34 < 0 != v33 ) return result; v8 = *a1; *((_DWORD *)a1 + 229) = v34; ZN28LogicGameObjectManagerServer7preTickEP14LogicArrayListIP11LogicPlayerE(v8, v6); if ( !*((_BYTE *)a1 + 171) ) goto LABEL_4; } } ================ DECODE BLOCK 2 ================ v19 = ZN28LogicGameObjectManagerServer6encodeEP9BitStreamP12LogicTileMapP11LogicPlayerP14LogicArrayListIS5_EPS6_IP22LogicTeamMemberElementEiiii( *a1, v18, a1[15], 0, v6, 0, *((unsigned int *)a1 + 6), *((unsigned int *)a1 + 56), *((_DWORD *)a1 + 59), v10); } else { v20 = **v6; v21 = *(int *)(v20 + 12); if ( (v21 & 0x80000000) != 0 || *((_DWORD *)a1 + 28) <= (int)v21 ) v22 = 0; else v22 = *(_QWORD *)(a1[23] + 8 * v21); v19 = ZN28LogicGameObjectManagerServer6encodeEP9BitStreamP12LogicTileMapP11LogicPlayerP14LogicArrayListIS5_EPS6_IP22LogicTeamMemberElementEiiii( *a1, v18, a1[15], v20, v6, v22, *((unsigned int *)a1 + 6), *((unsigned int *)a1 + 56), *((_DWORD *)a1 + 59), v10); } if ( *((_DWORD *)a1 + 59) == 7 ) { if ( (v19 & 1) != 0 ) { ZN9BitStream12writeBooleanEb(v18, 1); ZN9BitStream24writePositiveIntMax32767Ei(v18, *(unsigned int *)(*a1 + 168LL)); ZN9BitStream24writePositiveIntMax65535Ei(v18, *(unsigned int *)(*a1 + 172LL)); } else { ZN9BitStream12writeBooleanEb(v18, 0); } } (*(void (__fastcall **)(_QWORD, _QWORD, __int64))(*(_QWORD *)a1[5] + 504LL))(a1[5], *((unsigned int *)a1 + 6), v18); LABEL_54: result = ZN9LogicTime12increaseTickEv(v7); v32 = *((_DWORD *)a1 + 229); v33 = __OFSUB__(v32, 1); v34 = v32 - 1; if ( v34 < 0 != v33 ) return result; v8 = *a1; *((_DWORD *)a1 + 229) = v34; ZN28LogicGameObjectManagerServer7preTickEP14LogicArrayListIP11LogicPlayerE(v8, v6); if ( !*((_BYTE *)a1 + 171) ) goto LABEL_4; } } ================ DECODE BLOCK 3 ================ v19 = ZN28LogicGameObjectManagerServer6encodeEP9BitStreamP12LogicTileMapP11LogicPlayerP14LogicArrayListIS5_EPS6_IP22LogicTeamMemberElementEiiii( *a1, v18, a1[15], v20, v6, v22, *((unsigned int *)a1 + 6), *((unsigned int *)a1 + 56), *((_DWORD *)a1 + 59), v10); } if ( *((_DWORD *)a1 + 59) == 7 ) { if ( (v19 & 1) != 0 ) { ZN9BitStream12writeBooleanEb(v18, 1); ZN9BitStream24writePositiveIntMax32767Ei(v18, *(unsigned int *)(*a1 + 168LL)); ZN9BitStream24writePositiveIntMax65535Ei(v18, *(unsigned int *)(*a1 + 172LL)); } else { ZN9BitStream12writeBooleanEb(v18, 0); } } (*(void (__fastcall **)(_QWORD, _QWORD, __int64))(*(_QWORD *)a1[5] + 504LL))(a1[5], *((unsigned int *)a1 + 6), v18); LABEL_54: result = ZN9LogicTime12increaseTickEv(v7); v32 = *((_DWORD *)a1 + 229); v33 = __OFSUB__(v32, 1); v34 = v32 - 1; if ( v34 < 0 != v33 ) return result; v8 = *a1; *((_DWORD *)a1 + 229) = v34; ZN28LogicGameObjectManagerServer7preTickEP14LogicArrayListIP11LogicPlayerE(v8, v6); if ( !*((_BYTE *)a1 + 171) ) goto LABEL_4; } } ================ DECODE BLOCK 4 ================ // ZN28LogicGameObjectManagerServer6encodeEP9BitStreamP12LogicTileMapP11LogicPlayerP14LogicArrayListIS5_EPS6_IP22LogicTeamMemberElementEiiii ================ DECODE BLOCK 5 ================ __int64 __fastcall ZN28LogicGameObjectManagerServer6encodeEP9BitStreamP12LogicTileMapP11LogicPlayerP14LogicArrayListIS5_EPS6_IP22LogicTeamMemberElementEiiii( __int64 a1, __int64 a2, __int64 a3, __int64 a4, __int64 **a5, __int64 a6, int a7, unsigned int a8, unsigned int a9, int a10) { unsigned int v13; // w26 unsigned int v14; // w22 int v15; // w24 int v16; // w8 int v17; // w21 _QWORD *v18; // x28 int v19; // w20 int v20; // w27 int v21; // w26 _DWORD *v22; // x27 __int64 v23; // x20 unsigned int v24; // w21 unsigned int v25; // w27 __int64 v26; // x28 char v27; // w0 __int64 v28; // x20 unsigned int v29; // w21 int v30; // w24 unsigned int v31; // w0 unsigned int v32; // w0 __int64 v33; // x1 int v34; // w21 int v35; // w24 unsigned int v36; // w0 char v37; // w1 __int64 v38; // x8 __int64 v39; // x10 __int64 v40; // x11 __int64 v41; // x0 int v42; // w0 __int64 v43; // x0 __int64 v44; // x21 unsigned int v45; // w20 unsigned int v46; // w2 _DWORD *v47; // x0 int v48; // w0 __int64 v49; // x8 __int64 v50; // x0 __int64 i; // x20 __int64 v52; // x1 int v53; // w27 char v54; // w24 int v55; // w22 char v56; // w21 int v57; // w26 int v58; // w24 int v59; // w0 signed int v60; // w21 signed int v61; // w28 signed int v62; // w26 signed int v63; // w24 unsigned int v64; // w22 signed int v65; // w23 unsigned int v66; // w26 signed int v67; // w27 signed int v68; // w20 signed int v69; // w28 bool v70; // cc unsigned int v71; // w24 __int64 v72; // x20 char v73; // w1 __int64 v74; // x0 __int64 *v75; // x21 __int64 v76; // x22 __int64 j; // x20 __int64 v78; // x21 unsigned int v79; // w0 __int64 v80; // x28 int v81; // w8 unsigned int v82; // w20 unsigned int v83; // w22 __int64 v84; // x24 __int64 v85; // x8 __int64 v86; // x27 unsigned int v87; // w21 unsigned int v88; // w0 int v89; // w21 int v90; // w28 unsigned __int64 v91; // x0 unsigned __int64 v92; // x0 __int64 v93; // x9 unsigned __int64 v94; // x22 __int64 *v95; // x8 __int64 v96; // x11 int v97; // w9 _QWORD *v98; // x10 __int64 v99; // x9 __int64 v100; // x10 _OWORD *v101; // x14 __int64 *v102; // x13 __int128 *v103; // x8 __int64 v104; // x15 __int128 v105; // q0 __int128 v106; // q1 __int64 v107; // t1 __int64 v108; // x1 int v109; // w26 __int64 v110; // x21 int v111; // w28 __int64 v112; // x9 __int64 v113; // x27 unsigned __int64 v114; // x0 unsigned __int64 v115; // x0 __int64 v116; // x9 unsigned __int64 v117; // x22 __int64 *v118; // x8 __int64 v119; // x11 int v120; // w9 _QWORD *v121; // x10 __int64 v122; // x9 __int64 v123; // x10 _OWORD *v124; // x14 __int64 *v125; // x13 __int128 *v126; // x8 __int64 v127; // x15 __int128 v128; // q0 __int128 v129; // q1 __int64 v130; // t1 __int64 v131; // x26 __int64 v132; // x20 unsigned int *v133; // x21 unsigned int v134; // w27 __int64 v135; // x20 __int64 v136; // x28 unsigned int v137; // w22 __int64 v138; // x24 bool v139; // w0 _BOOL4 v140; // w26 __int64 v141; // x0 unsigned int v142; // w24 unsigned int v143; // w27 char v144; // w21 __int64 v145; // x0 __int64 v146; // x8 _BOOL4 v147; // w8 _BOOL4 v148; // w9 int v149; // w21 char v150; // w0 __int64 v151; // x28 int v152; // w8 unsigned int v153; // w1 __int64 v154; // x20 unsigned int v155; // w22 __int64 v156; // x24 __int64 v157; // x8 _BYTE *v158; // x8 int v159; // t1 unsigned int v160; // w0 unsigned int v161; // w0 char v162; // w0 __int64 v163; // x21 __int64 v164; // x26 unsigned int v165; // w22 __int64 v166; // x21 __int64 v167; // x26 unsigned int v168; // w22 unsigned int v169; // w28 unsigned int v170; // w27 int v171; // w20 unsigned int v172; // w0 unsigned int v173; // w9 _DWORD *v174; // x24 unsigned int v175; // w9 int v176; // w9 _DWORD *v177; // x24 __int64 v178; // x0 __int64 v179; // x0 char v180; // w0 char v181; // w0 __int64 v182; // x0 unsigned int v183; // w0 __int64 v184; // x0 unsigned int v185; // w0 __int64 v186; // x26 _DWORD *v187; // x24 int v188; // w20 unsigned int v189; // w0 unsigned int v190; // w9 char v191; // w21 char v192; // w1 unsigned int v193; // w0 __int64 v194; // x27 __int64 v195; // x21 __int64 v196; // x20 unsigned int v197; // w0 __int64 v198; // x22 __int64 v199; // x24 __int64 v200; // x22 __int64 k; // x21 __int64 v202; // x24 unsigned int v203; // w8 unsigned int v204; // w0 __int64 v205; // x22 __int64 v206; // x20 __int64 v207; // x22 int v208; // w21 __int64 v209; // x20 __int64 v210; // x20 _DWORD *v211; // x22 __int64 v212; // x0 __int64 v213; // x8 __int64 v214; // x28 int v215; // w21 __int64 v216; // x8 __int64 v217; // x23 __int64 v218; // x0 int v219; // w21 __int64 v220; // x0 int v221; // w0 __int64 v222; // x0 int v223; // w26 _BOOL4 v224; // w22 _BOOL4 v225; // w26 _BOOL4 v227; // w21 __int64 v228; // x0 int v229; // w8 unsigned int v230; // w9 bool v231; // cf unsigned int v232; // w9 int v233; // w11 int v234; // w24 int v235; // w22 __int64 v236; // x21 _BOOL4 v237; // w24 char v238; // w27 __int64 v239; // x0 char v240; // w0 int v241; // w12 int v242; // w11 char v243; // w10 _BOOL4 v244; // w21 __int64 v245; // x0 __int64 v246; // x0 __int64 v247; // x0 __int64 v248; // x0 int v249; // w8 int v250; // w9 int v251; // w22 int v252; // w27 _BOOL4 v253; // w20 int v254; // w0 bool v255; // zf __int64 v256; // x0 int v257; // w8 _BOOL4 v258; // w20 char v259; // w22 _BOOL4 v260; // w21 int v261; // w24 char v262; // w26 int v263; // w21 __int64 v264; // x0 _BOOL4 v265; // w8 char v266; // w24 unsigned int v267; // w21 unsigned int v268; // w0 int v269; // w22 int v270; // w2 int v271; // w21 int v272; // w24 unsigned __int64 v273; // x0 unsigned __int64 v274; // x0 __int64 *v275; // x8 __int64 v276; // x9 unsigned __int64 v277; // x26 __int64 v278; // x11 int v279; // w9 _QWORD *v280; // x10 __int64 v281; // x9 __int64 v282; // x10 _OWORD *v283; // x14 __int64 *v284; // x13 __int128 *v285; // x8 __int64 v286; // x15 __int128 v287; // q0 __int128 v288; // q1 __int64 v289; // t1 __int64 v290; // x8 int v291; // w24 unsigned __int64 v292; // x0 unsigned __int64 v293; // x0 __int128 *v294; // x8 __int64 v295; // x9 unsigned __int64 v296; // x23 __int64 v297; // x11 int *v298; // x9 _DWORD *v299; // x10 __int64 v300; // x9 __int64 v301; // x10 _OWORD *v302; // x13 __int128 *v303; // x14 __int64 v304; // x15 __int128 v305; // q0 __int128 v306; // q1 int v307; // t1 unsigned int v308; // w21 __int64 v309; // x0 __int64 v310; // x0 __int64 v311; // x0 int v312; // w0 int v313; // w26 unsigned int v314; // w22 unsigned int v315; // w24 __int64 v316; // x0 unsigned int v317; // w27 __int64 v318; // x0 unsigned int v319; // w21 __int64 v320; // x0 unsigned int v321; // w0 int v322; // w24 char v323; // w22 int v324; // w26 unsigned int v325; // w20 int v326; // w21 int v327; // w0 signed int v328; // w8 signed int v329; // w21 int v330; // w27 int v331; // w21 unsigned int v332; // w27 __int64 v333; // x0 char v334; // w0 int v335; // w21 int v336; // w24 unsigned __int64 v337; // x0 unsigned __int64 v338; // x0 __int64 *v339; // x8 __int64 v340; // x9 unsigned __int64 v341; // x26 __int64 v342; // x11 int v343; // w9 _QWORD *v344; // x10 __int64 v345; // x9 __int64 v346; // x10 _OWORD *v347; // x14 __int64 *v348; // x13 __int128 *v349; // x8 __int64 v350; // x15 __int128 v351; // q0 __int128 v352; // q1 __int64 v353; // t1 __int64 v354; // x8 unsigned __int64 v355; // x0 unsigned __int64 v356; // x0 __int64 v357; // x9 __int64 v358; // x11 int *v359; // x9 _DWORD *v360; // x10 __int64 v361; // x9 __int64 v362; // x10 _OWORD *v363; // x13 __int128 *v364; // x14 __int64 v365; // x15 __int128 v366; // q0 __int128 v367; // q1 int v368; // t1 __int64 v369; // x22 __int64 m; // x20 __int64 v371; // x0 __int64 n; // x20 unsigned int v373; // w0 __int64 v374; // x20 __int64 ii; // x21 _DWORD *v376; // x23 __int64 v377; // x0 char v378; // w0 __int64 v379; // x21 __int64 v381; // x26 _DWORD *v382; // x24 __int64 v383; // x0 __int64 v384; // x0 unsigned int v385; // w8 __int64 v386; // x26 _DWORD *v387; // x24 __int64 v388; // x0 __int64 v389; // x0 __int64 v390; // x0 __int64 v391; // x1 int v392; // [xsp+0h] [xbp-F0h] char v393; // [xsp+18h] [xbp-D8h] int v394; // [xsp+1Ch] [xbp-D4h] _DWORD *v395; // [xsp+20h] [xbp-D0h] int v396; // [xsp+2Ch] [xbp-C4h] int v397; // [xsp+30h] [xbp-C0h] char v398; // [xsp+34h] [xbp-BCh] unsigned int v399; // [xsp+38h] [xbp-B8h] _BOOL4 v400; // [xsp+3Ch] [xbp-B4h] int v403; // [xsp+54h] [xbp-9Ch] int v404; // [xsp+58h] [xbp-98h] int v405; // [xsp+5Ch] [xbp-94h] __int64 v406; // [xsp+60h] [xbp-90h] __int64 v407; // [xsp+60h] [xbp-90h] unsigned int v409; // [xsp+6Ch] [xbp-84h] unsigned int v410; // [xsp+70h] [xbp-80h] unsigned int v411; // [xsp+74h] [xbp-7Ch] int v412; // [xsp+74h] [xbp-7Ch] unsigned int v413; // [xsp+78h] [xbp-78h] int v414; // [xsp+78h] [xbp-78h] unsigned int v415; // [xsp+7Ch] [xbp-74h] char v416; // [xsp+7Ch] [xbp-74h] int v417; // [xsp+7Ch] [xbp-74h] __int64 v418; // [xsp+80h] [xbp-70h] int *v419; // [xsp+88h] [xbp-68h] __int64 v420; // [xsp+88h] [xbp-68h] char v422; // [xsp+94h] [xbp-5Ch] if ( !a4 ) { v26 = *(_QWORD *)(a1 + 160); v13 = 0; v29 = 0; LODWORD(v28) = 0; v14 = -1; v395 = 0; LABEL_19: v394 = -1; goto LABEL_20; } v13 = *(_DWORD *)(a4 + 16); v14 = *(_DWORD *)(a4 + 196); v15 = *(unsigned __int8 *)(a4 + 216); if ( v13 && (v16 = *(_DWORD *)(a1 + 12)) != 0 ) { v17 = v16 - 1; if ( v16 - 1 < 1 ) { v18 = (_QWORD *)a1; v19 = 0; v20 = *(_DWORD *)(a4 + 16); } else { v18 = (_QWORD *)a1; v19 = 0; v20 = *(_DWORD *)(a4 + 16); do { v21 = (v19 + v17) >> 1; if ( (int)ZNK21LogicGameObjectServer11getGlobalIDEv(*(_QWORD *)(*(_QWORD *)a1 + 8LL * v21)) >= v20 ) v17 = (v19 + v17) >> 1; else v19 = v21 + 1; } while ( v17 > v19 ); } v13 = v20; v42 = ZNK21LogicGameObjectServer11getGlobalIDEv(*(_QWORD *)(*v18 + 8LL * v19)); v22 = 0; if ( v19 != -1 && v42 == v13 ) { v22 = *(_DWORD **)(*(_QWORD *)a1 + 8LL * v19); if ( v22 ) { v43 = ZNK20LogicCharacterServer23getControlledProjectileEv(*(_QWORD *)(*(_QWORD *)a1 + 8LL * v19)); if ( v43 ) { v44 = v43; v45 = ZNK21LogicGameObjectServer4getXEv(v43); v46 = ZNK21LogicGameObjectServer4getYEv(v44); v47 = v22; v395 = v22; v24 = v45; v25 = v46; ZN20LogicCharacterServer17setVisionOverrideEiii(v47, v45); v23 = a4; goto LABEL_13; } v385 = v22[297]; v23 = a4; if ( (v385 & 0x80000000) == 0 ) { v395 = v22; v25 = v22[298]; v24 = v385; goto LABEL_13; } } } } else { v22 = 0; } v23 = a4; v395 = v22; v24 = *(_DWORD *)(a4 + 32); v25 = *(_DWORD *)(a4 + 36); LABEL_13: v26 = *(_QWORD *)(a1 + 160); v27 = ZN17LogicGameModeUtil18spectateAfterDeathEi(a9); if ( v15 || v395 || (v27 & 1) == 0 || (ZNK11LogicPlayer12canResurrectEv(v23) & 1) != 0 ) goto LABEL_17; if ( (ZN17LogicGameModeUtil24spectateFriendAfterDeathEi(a9) & 1) != 0 ) { v38 = *((int *)a5 + 3); if ( (int)v38 >= 1 ) { v39 = 0; v40 = **a5; if ( v40 ) goto LABEL_35; while ( ++v39 < v38 ) { v40 = (*a5)[v39]; if ( v40 ) { LABEL_35: if ( *(_DWORD *)(v40 + 12) == *(_DWORD *)(v23 + 12) && *(_BYTE *)(v40 + 64) ) { v29 = *(_DWORD *)(v40 + 36); v41 = v23; v28 = *(unsigned int *)(v40 + 32); ZN11LogicPlayer10setPrevPosEii(v41, v28, v29); goto LABEL_19; } } } } goto LABEL_17; } v48 = ZN17LogicGamePlayUtil24getKillerIndexToSpectateEP11LogicPlayerP14LogicArrayListIS1_E(v23, a5); if ( v48 == -1 ) { LABEL_17: v394 = -1; LODWORD(v28) = v24; v29 = v25; goto LABEL_20; } v394 = v48; v49 = (*a5)[v48]; v50 = v23; v29 = *(_DWORD *)(v49 + 36); v28 = *(unsigned int *)(v49 + 32); ZN11LogicPlayer10setPrevPosEii(v50, v28, v29); LABEL_20: v410 = v28; v405 = ZN12LogicTileMap21logicToPathFinderTileEi((unsigned int)v28); v409 = v29; v404 = ZN12LogicTileMap21logicToPathFinderTileEi(v29); ZN9BitStream26writePositiveIntMax2097151Ei(a2, v13); switch ( a9 ) { case 0u: ZN9BitStream25writePositiveVIntMax65535Ei(a2, a8); break; case 0x11u: ZN9BitStream20writePositiveIntMax7Ei(a2, *(unsigned int *)(v26 + 668)); if ( *(int *)(v26 + 668) >= 1 ) { v30 = 0; do { v31 = ZNK21LogicBattleModeServer21getTeamObjectiveScoreEii(v26, 0, v30); ZN9BitStream22writePositiveIntMax127Ei(a2, v31); v32 = ZNK21LogicBattleModeServer21getTeamObjectiveScoreEii(v26, 1, v30); ZN9BitStream22writePositiveIntMax127Ei(a2, v32); ++v30; } while ( v30 < *(_DWORD *)(v26 + 668) ); } break; case 0x13u: if ( *(int *)(v26 + 668) < 1 ) { ZN9BitStream20writePositiveIntMax7Ei(a2, 0); v33 = 0; } else { ZN9BitStream20writePositiveIntMax7Ei(a2, **(unsigned int **)(v26 + 656)); v33 = *(unsigned int *)(*(_QWORD *)(v26 + 656) + 4LL); } ZN9BitStream20writePositiveIntMax7Ei(a2, v33); break; case 0x14u: v34 = ZNK21LogicBattleModeServer18getRoundResetTimerEv(v26); ZN9BitStream23writePositiveIntMax2047Ei(a2, *(unsigned int *)(v26 + 308)); ZN9BitStream12writeBooleanEb(a2, v34 > 0); ZN9BitStream12writeBooleanEb(a2, (unsigned int)(v34 - 10) > 0xA); v35 = ZN17LogicGameModeUtil17getNumberOfRoundsEi(20); v36 = ZN9LogicMath3minEii((unsigned int)(v35 - 1), *(unsigned int *)(v26 + 304)); ZN9BitStream20writePositiveIntMax3Ei(a2, v36); v37 = v34 >= 1 && *(_BYTE *)(v26 + 312) != 0; ZN9BitStream12writeBooleanEb(a2, v37); if ( v35 >= 1 ) { for ( i = 0; i != v35; ++i ) { if ( i < *(int *)(v26 + 828) ) v52 = *(unsigned int *)(*(_QWORD *)(v26 + 816) + 4 * i); else v52 = 0xFFFFFFFFLL; ZN9BitStream14writeIntMax127Ei(a2, v52); } } break; default: break; } v418 = v26; v399 = v13; if ( a4 ) { ZN9BitStream12writeBooleanEb(a2, *(_DWORD *)(a4 + 8) == a10); ZN9BitStream13writeIntMax15Ei(a2, v14); v53 = a9; v54 = ZN21LogicBattleModeServer28isPlayFieldMirroredForPlayerEii(*(_DWORD *)(a4 + 12), a9); } else { ZN9BitStream12writeBooleanEb(a2, 0); ZN9BitStream13writeIntMax15Ei(a2, v14); v53 = a9; v54 = 0; } v55 = ZNK12LogicTileMap32getVisibilityRadiusSubtilesXLeftEi(a3, v410); v56 = v54 & 1; v57 = ZNK12LogicTileMap33getVisibilityRadiusSubtilesXRightEi(a3, v410); v422 = v54; v58 = ZNK12LogicTileMap30getVisibilityRadiusSubtilesYUpEib(a3, v409, v54 & 1); v59 = ZNK12LogicTileMap32getVisibilityRadiusSubtilesYDownEib(a3, v409, v56); if ( a4 ) { v60 = v405 / 3 + ~(v55 / 3); v61 = v405 / 3 + v57 / 3 + 1; v62 = v404 / 3 + ((int)(((unsigned __int64)(1431655765LL * v58) >> 32) - v58) >> 1) + ((unsigned int)(((unsigned __int64)(1431655765LL * v58) >> 32) - v58) >> 31) - 3; v63 = v404 / 3 + v59 / 3 + 3; } else { v62 = 0; v60 = 0; v61 = *(_DWORD *)(a3 + 144) - 1; v63 = *(_DWORD *)(a3 + 148) - 1; } v419 = (int *)a5; if ( (ZNK21LogicBattleModeServer26isGameOverOrRoundResettingEv(v418) & 1) != 0 && (ZN17LogicGameModeUtil21revealMapWhenGameOverEi(v53) & 1) != 0 ) { v62 = 0; v60 = 0; v61 = *(_DWORD *)(a3 + 144) - 1; v63 = *(_DWORD *)(a3 + 148) - 1; } v64 = ZN9LogicMath5clampEiii(v60, 0, *(_DWORD *)(a3 + 144) - 1); v65 = v62; v66 = ZN9LogicMath5clampEiii(v62, 0, *(_DWORD *)(a3 + 148) - 1); v67 = ZN9LogicMath5clampEiii(v61, 0, *(_DWORD *)(a3 + 144) - 1); v68 = v61; v69 = ZN9LogicMath5clampEiii(v63, 0, *(_DWORD *)(a3 + 148) - 1); ZN9BitStream12writeBooleanEb(a2, v64 != v60); ZN9BitStream12writeBooleanEb(a2, v66 != v65); ZN9BitStream12writeBooleanEb(a2, v67 != v68); ZN9BitStream12writeBooleanEb(a2, v69 != v63); if ( *(_BYTE *)(v418 + 896) ) { ZN9BitStream21writePositiveIntMax63Ei(a2, v64); ZN9BitStream21writePositiveIntMax63Ei(a2, v66); ZN9BitStream21writePositiveIntMax63Ei(a2, (unsigned int)v67); } else { ZN9BitStream21writePositiveIntMax31Ei(a2); ZN9BitStream21writePositiveIntMax63Ei(a2, v66); ZN9BitStream21writePositiveIntMax31Ei(a2); } ZN9BitStream21writePositiveIntMax63Ei(a2, (unsigned int)v69); if ( (int)v64 <= v67 && (int)v66 <= v69 ) { do { v71 = v66; do { v74 = ZNK12LogicTileMap7getTileEii(a3, v64, v71); v75 = (__int64 *)v74; if ( *(_BYTE *)(v74 + 58) || (ZNK13LogicTileData26restoreAfterDynamicOverlapEv(*(_QWORD *)(v74 + 8)) & 1) != 0 ) { v72 = *v75; v73 = v72 == ZN15LogicDataTables15getOpenTileDataEv(); ZN9BitStream12writeBooleanEb(a2, v73); } v70 = (int)v71++ < v69; } while ( v70 ); v70 = (int)v64++ < v67; } while ( v70 ); } v76 = *(unsigned int *)(a3 + 20); ZN9BitStream34writePositiveVIntMax65535OftenZeroEi(a2, (unsigned int)v76); if ( (int)v76 >= 1 ) { for ( j = 0; j != v76; ++j ) { v78 = *(_QWORD *)(*(_QWORD *)(a3 + 8) + 8 * j); ZN9BitStream23writePositiveIntMax4095Ei( a2, (unsigned int)(*(_DWORD *)(v78 + 48) + *(_DWORD *)(a3 + 144) * *(_DWORD *)(v78 + 52))); v79 = ZNK13LogicTileData14getDynamicCodeEv(*(_QWORD *)v78); ZN9BitStream20writePositiveIntMax7Ei(a2, v79); } } v80 = v418; *(_DWORD *)(a1 + 124) = 0; if ( *(int *)(v418 + 964) >= 1 ) { v81 = a4; v83 = v409; v82 = v410; if ( a4 ) { v84 = 0; while ( 1 ) { v86 = *(_QWORD *)(*(_QWORD *)(v80 + 952) + 8 * v84); v87 = ZN12LogicTileMap11tileToLogicEi(*(unsigned int *)(v86 + 12)); v88 = ZN12LogicTileMap11tileToLogicEi(*(unsigned int *)(v86 + 16)); LOBYTE(v392) = v422 & 1; if ( (ZNK12LogicTileMap22isInsideVisibilityRectEiiiiiiib(a3, v82, v83, v87, v88, 300, 300, 300, v392) & 1) == 0 ) goto LABEL_88; v89 = *(_DWORD *)(a1 + 124); if ( v89 == *(_DWORD *)(a1 + 120) ) break; LABEL_87: v85 = *(_QWORD *)(a1 + 112); *(_DWORD *)(a1 + 124) = v89 + 1; *(_QWORD *)(v85 + 8LL * v89) = v86; LABEL_88: if ( ++v84 >= *(int *)(v80 + 964) ) { v108 = *(unsigned int *)(a1 + 124); goto LABEL_138; } } if ( 2 * v89 ) v90 = 2 * v89; else v90 = 5; if ( v89 >= v90 ) { LABEL_86: v80 = v418; goto LABEL_87; } if ( (unsigned __int64)v90 >> 61 ) v91 = -1; else v91 = 8LL * v90; v92 = operator new[](v91); v93 = (unsigned int)(v89 - 1); v94 = v92; v95 = *(__int64 **)(a1 + 112); if ( v89 < 1 ) { LABEL_108: if ( v95 ) { operator delete[](v95); v89 = *(_DWORD *)(a1 + 124); } *(_QWORD *)(a1 + 112) = v94; *(_DWORD *)(a1 + 120) = v90; v83 = v409; v82 = v410; goto LABEL_86; } v96 = v93 + 1; if ( (unsigned __int64)(v93 + 1) >= 4 ) { v99 = v93; if ( v92 >= (unsigned __int64)&v95[v99 + 1] || (v70 = v92 + v99 * 8 + 8 > (unsigned __int64)v95, v97 = v89, v98 = (_QWORD *)v92, !v70) ) { v100 = v96 & 0x1FFFFFFFCLL; v101 = (_OWORD *)(v92 + 16); v97 = v89 - (v96 & 0xFFFFFFFC); v102 = &v95[v100]; v98 = (_QWORD *)(v92 + v100 * 8); v103 = (__int128 *)(v95 + 2); v104 = v96 & 0x1FFFFFFFCLL; do { v105 = *(v103 - 1); v106 = *v103; v104 -= 4; v103 += 2; *(v101 - 1) = v105; *v101 = v106; v101 += 2; } while ( v104 ); v95 = v102; if ( v96 == (v96 & 0x1FFFFFFFCLL) ) goto LABEL_107; } } else { v97 = v89; v98 = (_QWORD *)v92; } do { v107 = *v95++; --v97; *v98++ = v107; } while ( v97 > 0 ); LABEL_107: v95 = *(__int64 **)(a1 + 112); goto LABEL_108; } v109 = *(_DWORD *)(a1 + 120); v110 = 0; while ( 1 ) { v113 = *(_QWORD *)(*(_QWORD *)(v80 + 952) + 8 * v110); if ( v81 == v109 ) break; v111 = v109; LABEL_114: v108 = (unsigned int)(v81 + 1); ++v110; v109 = v111; v112 = *(_QWORD *)(a1 + 112); *(_DWORD *)(a1 + 124) = v108; *(_QWORD *)(v112 + 8LL * v81) = v113; v80 = v418; ++v81; if ( v110 >= *(int *)(v418 + 964) ) goto LABEL_138; } if ( 2 * v109 ) v111 = 2 * v109; else v111 = 5; if ( v109 >= v111 ) { v111 = v109; LABEL_137: v81 = v109; goto LABEL_114; } if ( (unsigned __int64)v111 >> 61 ) v114 = -1; else v114 = 8LL * v111; v115 = operator new[](v114); v116 = (unsigned int)(v109 - 1); v117 = v115; v118 = *(__int64 **)(a1 + 112); if ( v109 < 1 ) { LABEL_134: if ( v118 ) { operator delete[](v118); v109 = *(_DWORD *)(a1 + 124); } *(_QWORD *)(a1 + 112) = v117; *(_DWORD *)(a1 + 120) = v111; goto LABEL_137; } v119 = v116 + 1; if ( (unsigned __int64)(v116 + 1) >= 4 ) { v122 = v116; if ( v115 >= (unsigned __int64)&v118[v122 + 1] || (v70 = v115 + v122 * 8 + 8 > (unsigned __int64)v118, v120 = v109, v121 = (_QWORD *)v115, !v70) ) { v123 = v119 & 0x1FFFFFFFCLL; v124 = (_OWORD *)(v115 + 16); v120 = v109 - (v119 & 0xFFFFFFFC); v125 = &v118[v123]; v121 = (_QWORD *)(v115 + v123 * 8); v126 = (__int128 *)(v118 + 2); v127 = v119 & 0x1FFFFFFFCLL; do { v128 = *(v126 - 1); v129 = *v126; v127 -= 4; v126 += 2; *(v124 - 1) = v128; *v124 = v129; v124 += 2; } while ( v127 ); v118 = v125; if ( v119 == (v119 & 0x1FFFFFFFCLL) ) goto LABEL_133; } } else { v120 = v109; v121 = (_QWORD *)v115; } do { v130 = *v118++; --v120; *v121++ = v130; } while ( v120 > 0 ); LABEL_133: v118 = *(__int64 **)(a1 + 112); goto LABEL_134; } v108 = 0; LABEL_138: ZN9BitStream34writePositiveVIntMax65535OftenZeroEi(a2, v108); v131 = a1; if ( *(int *)(a1 + 124) >= 1 ) { v132 = 0; do { v133 = *(unsigned int **)(*(_QWORD *)(a1 + 112) + 8 * v132); ZN9BitStream21writePositiveIntMax63Ei(a2, v133[3]); ZN9BitStream21writePositiveIntMax63Ei(a2, v133[4]); ZN9BitStream13writeIntMax15Ei(a2, v133[1]); ++v132; } while ( v132 < *(int *)(a1 + 124) ); } v134 = a9; if ( v419[3] >= 1 ) { v135 = a4; v136 = 0; v137 = 0; while ( 1 ) { v138 = *(_QWORD *)(*(_QWORD *)v419 + 8 * v136); if ( v138 ) break; LABEL_144: if ( ++v136 >= v419[3] ) goto LABEL_165; } ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(v138 + 64)); v139 = ZNK11LogicPlayer7hasUltiEv(v138); ZN9BitStream12writeBooleanEb(a2, v139); if ( v134 == 6 ) ZN9BitStream21writePositiveIntMax15Ei(a2, *(unsigned int *)(v138 + 208)); if ( *(_BYTE *)(v138 + 64) || (ZNK11LogicPlayer12canResurrectEv(v138) & 1) != 0 ) ++v137; if ( a4 ) { v140 = *(_DWORD *)(a4 + 8) == *(_DWORD *)(v138 + 8); v141 = *(_QWORD *)(v138 + 264); if ( !v141 ) { LABEL_154: if ( v134 == 3 ) ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(v138 + 272)); ZN9BitStream32writePositiveVIntMax255OftenZeroEi(a2, *(_DWORD *)(v138 + 80)); v143 = *(_DWORD *)(v138 + 220); v142 = *(_DWORD *)(v138 + 224); v144 = ZNK21LogicBattleModeServer13isGameOverSetEv(v418); v145 = ZN15LogicDataTables10getGlobalsEv(); v146 = 236; if ( (v144 & 1) != 0 ) v146 = 240; ZN9BitStream12writeBooleanEb(a2, (int)v142 > 0 && (int)(*(_DWORD *)(v145 + v146) + v142) > a7); v147 = (int)(v142 + 20) > a7; v148 = (v143 & 0x80000000) == 0; v149 = v148 && v147; ZN9BitStream12writeBooleanEb(a2, v148 && v147); if ( v149 ) { ZN9BitStream12writeIntMax7Ei(a2, v143); ZN9BitStream24writePositiveIntMax16383Ei(a2, v142); } if ( v140 ) { ZN9BitStream23writePositiveIntMax4095Ei(a2, *(unsigned int *)(a4 + 72)); v150 = ZN11LogicPlayer30removeDamagedEnemyUltiFullFlagEv(a4); ZN9BitStream12writeBooleanEb(a2, v150 & 1); ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(a4 + 257)); } v131 = a1; v134 = a9; goto LABEL_144; } } else { v140 = 0; v141 = *(_QWORD *)(v138 + 264); if ( !v141 ) goto LABEL_154; } ZNK14LogicAccessory6encodeEP9BitStreamb(v141, a2, v140); goto LABEL_154; } v135 = a4; v137 = 0; LABEL_165: v151 = v418; v152 = *(_DWORD *)(v418 + 904); if ( v152 ) v153 = v152 + 90; else v153 = 0; ZN9BitStream32writePositiveVIntMax255OftenZeroEi(a2, v153); if ( (ZN17LogicGameModeUtil33roundResetsWhenObjectiveIsMissingEi(v134) & 1) != 0 ) { ZN9BitStream12writeBooleanEb(a2, *(_BYTE *)(v418 + 263)); ZN9BitStream12writeIntMax1Ei(a2, *(unsigned int *)(v418 + 264)); } switch ( v134 ) { case 6u: ZN9BitStream21writePositiveIntMax15Ei(a2, v137); goto LABEL_256; case 0x10u: v160 = ZN9LogicMath5clampEiii(*(_DWORD *)(v418 + 292), 0, 0x1FFF); ZN9BitStream23writePositiveIntMax8191Ei(a2, v160); v161 = ZN9LogicMath5clampEiii(*(_DWORD *)(v418 + 296), 0, 0x1FFF); ZN9BitStream23writePositiveIntMax8191Ei(a2, v161); goto LABEL_256; case 9u: *(_BYTE *)(v131 + 180) = 0; *(_DWORD *)(v131 + 176) = 0; if ( v419[3] <= 0 ) { v155 = 0; } else { v154 = 0; v155 = 0; do { v156 = *(_QWORD *)(*(_QWORD *)v419 + 8 * v154); if ( v156 && (*(_BYTE *)(v156 + 64) || *(_BYTE *)(v156 + 216) || (ZNK11LogicPlayer12canResurrectEv(*(_QWORD *)(*(_QWORD *)v419 + 8 * v154)) & 1) != 0) ) { v157 = v131 + *(int *)(v156 + 12); v159 = *(unsigned __int8 *)(v157 + 176); v158 = (_BYTE *)(v157 + 176); if ( !v159 ) { ++v155; *v158 = 1; } } ++v154; } while ( v154 < v419[3] ); } ZN9BitStream20writePositiveIntMax7Ei(a2, v155); goto LABEL_256; } v162 = ZN17LogicGameModeUtil11hasTwoBasesEi(v134); if ( v134 == 8 || (v162 & 1) != 0 ) { v166 = *(unsigned int *)(v131 + 12); if ( (int)v166 < 1 ) { v411 = 0; v413 = 0; v406 = 0; v415 = 0; v170 = 0; v169 = 0; v168 = 0; } else if ( v134 == 11 ) { v167 = 0; v168 = 0; v169 = 0; v170 = 0; v415 = 0; v406 = 0; v411 = 0; v413 = 0; do { v174 = *(_DWORD **)(*(_QWORD *)a1 + 8 * v167); if ( (*(unsigned int (__fastcall **)(_DWORD *))(*(_QWORD *)v174 + 64LL))(v174) ) break; if ( ((*(__int64 (__fastcall **)(_DWORD *))(*(_QWORD *)v174 + 96LL))(v174) & 1) != 0 && *(_DWORD *)(ZNK20LogicCharacterServer16getCharacterDataEv(v174) + 412) == 6 ) { v171 = v174[16]; v172 = ZN9LogicMath3maxEii(1, 100 * v174[44] / v174[45]); v173 = v415; if ( v171 ) v169 = v172; else v170 = v174[157]; if ( v171 ) v173 = v174[157]; else v168 = v172; v415 = v173; } else if ( ((*(__int64 (__fastcall **)(_DWORD *))(*(_QWORD *)v174 + 96LL))(v174) & 1) != 0 && *(_DWORD *)(ZNK20LogicCharacterServer16getCharacterDataEv(v174) + 412) == 12 ) { if ( v174[16] ) { ++v411; v175 = v413; if ( v174[212] > (signed int)v413 ) v175 = v174[212]; v413 = v175; } else { LODWORD(v406) = v406 + 1; v176 = HIDWORD(v406); if ( v174[212] > SHIDWORD(v406) ) v176 = v174[212]; HIDWORD(v406) = v176; } } ++v167; } while ( v166 != v167 ); } else { v186 = 0; v168 = 0; v169 = 0; v170 = 0; v415 = 0; do { v187 = *(_DWORD **)(*(_QWORD *)a1 + 8 * v186); if ( (*(unsigned int (__fastcall **)(_DWORD *))(*(_QWORD *)v187 + 64LL))(v187) ) break; if ( ((*(__int64 (__fastcall **)(_DWORD *))(*(_QWORD *)v187 + 96LL))(v187) & 1) != 0 && *(_DWORD *)(ZNK20LogicCharacterServer16getCharacterDataEv(v187) + 412) == 6 ) { v188 = v187[16]; v189 = ZN9LogicMath3maxEii(1, 100 * v187[44] / v187[45]); v190 = v415; if ( v188 ) v169 = v189; else v170 = v187[157]; if ( v188 ) v190 = v187[157]; else v168 = v189; v415 = v190; } ++v186; } while ( v166 != v186 ); v411 = 0; v413 = 0; v406 = 0; } v191 = ZN17LogicGameModeUtil11hasTwoBasesEi(a9); ZN9BitStream22writePositiveIntMax127Ei(a2, v168); if ( (v191 & 1) != 0 ) { ZN9BitStream22writePositiveIntMax127Ei(a2, v169); v151 = v418; if ( a9 != 11 ) goto LABEL_256; ZN9BitStream22writePositiveIntMax255Ei(a2, v170); ZN9BitStream22writePositiveIntMax255Ei(a2, v415); ZN9BitStream20writePositiveIntMax7Ei(a2, (unsigned int)v406); ZN9BitStream20writePositiveIntMax7Ei(a2, v411); ZN9BitStream21writePositiveIntMax63Ei(a2, HIDWORD(v406)); ZN9BitStream21writePositiveIntMax63Ei(a2, v413); v192 = ZNK21LogicBattleModeServer17isRoboWarsNoRobosEv(v418) & 1; } else { v151 = v418; ZN9BitStream22writePositiveIntMax127Ei(a2, *(unsigned int *)(v418 + 164)); v192 = *(_BYTE *)(v418 + 168); } ZN9BitStream12writeBooleanEb(a2, v192); } else { if ( v134 != 7 ) { v181 = ZN17LogicGameModeUtil17isTypeOfBossFightEi(v134); if ( v134 != 14 && (v181 & 1) == 0 ) { if ( v134 != 13 ) { if ( v134 != 21 && a9 != 19 ) goto LABEL_256; v182 = ZN21LogicBattleModeServer12getTeamScoreEib(v418, 0, 0); v183 = ZN9LogicMath3minEii(v182, 100); ZN9BitStream22writePositiveIntMax127Ei(a2, v183); v184 = ZN21LogicBattleModeServer12getTeamScoreEib(v418, 1, 0); v185 = ZN9LogicMath3minEii(v184, 100); LABEL_255: ZN9BitStream22writePositiveIntMax127Ei(a2, v185); goto LABEL_256; } if ( v135 ) { v390 = v135; } else if ( v419[3] < 1 || (v390 = **(_QWORD **)v419) == 0 ) { v391 = 0; goto LABEL_574; } v391 = (unsigned int)ZNK11LogicPlayer6getDPSEv(v390); LABEL_574: ZN9BitStream25writePositiveIntMax131071Ei(a2, v391); goto LABEL_256; } } v163 = *(unsigned int *)(v131 + 12); if ( (int)v163 < 1 ) { v165 = 0; } else if ( v134 == 7 ) { v164 = 0; v165 = 0; do { v177 = *(_DWORD **)(*(_QWORD *)a1 + 8 * v164); if ( (*(unsigned int (__fastcall **)(_DWORD *))(*(_QWORD *)v177 + 64LL))(v177) ) break; if ( ((*(__int64 (__fastcall **)(_DWORD *))(*(_QWORD *)v177 + 96LL))(v177) & 1) != 0 ) { if ( (v178 = ZNK20LogicCharacterServer16getCharacterDataEv(v177), ZNK18LogicCharacterData6isHeroEv(v178)) && v177[16] == 1 || (v179 = ZNK20LogicCharacterServer16getCharacterDataEv(v177), (ZNK18LogicCharacterData6isBossEv(v179) & 1) != 0) && ((v180 = ZN17LogicGameModeUtil17isTypeOfBossFightEi(7), a9 == 14) || (v180 & 1) != 0) ) { v165 = ZN9LogicMath3maxEii(1, 100 * v177[44] / v177[45]); } } ++v164; } while ( v163 != v164 ); } else if ( v134 == 14 ) { v381 = 0; v165 = 0; do { v382 = *(_DWORD **)(*(_QWORD *)a1 + 8 * v381); if ( (*(unsigned int (__fastcall **)(_DWORD *))(*(_QWORD *)v382 + 64LL))(v382) ) break; if ( ((*(__int64 (__fastcall **)(_DWORD *))(*(_QWORD *)v382 + 96LL))(v382) & 1) != 0 ) { v383 = ZNK20LogicCharacterServer16getCharacterDataEv(v382); ZNK18LogicCharacterData6isHeroEv(v383); v384 = ZNK20LogicCharacterServer16getCharacterDataEv(v382); if ( (ZNK18LogicCharacterData6isBossEv(v384) & 1) != 0 ) { ZN17LogicGameModeUtil17isTypeOfBossFightEi(14); v165 = ZN9LogicMath3maxEii(1, 100 * v382[44] / v382[45]); } } ++v381; } while ( v163 != v381 ); } else { v386 = 0; v165 = 0; do { v387 = *(_DWORD **)(*(_QWORD *)a1 + 8 * v386); if ( (*(unsigned int (__fastcall **)(_DWORD *))(*(_QWORD *)v387 + 64LL))(v387) ) break; if ( ((*(__int64 (__fastcall **)(_DWORD *))(*(_QWORD *)v387 + 96LL))(v387) & 1) != 0 ) { v388 = ZNK20LogicCharacterServer16getCharacterDataEv(v387); ZNK18LogicCharacterData6isHeroEv(v388); v389 = ZNK20LogicCharacterServer16getCharacterDataEv(v387); if ( (ZNK18LogicCharacterData6isBossEv(v389) & 1) != 0 && (ZN17LogicGameModeUtil17isTypeOfBossFightEi(a9) & 1) != 0 ) { v165 = ZN9LogicMath3maxEii(1, 100 * v387[44] / v387[45]); } } ++v386; } while ( v163 != v386 ); } ZN9BitStream22writePositiveIntMax127Ei(a2, v165); if ( a9 == 18 ) { v185 = ZN21LogicBattleModeServer23countBossObjectivesLeftEv(v418); goto LABEL_255; } if ( a9 == 14 ) { v193 = ZN9LogicMath3minEii(*(unsigned int *)(v418 + 900), 0x3FFF); ZN9BitStream24writePositiveIntMax16383Ei(a2, v193); } } LABEL_256: v194 = a1; if ( v419[3] >= 1 ) { if ( a9 == 14 ) { v195 = 0; while ( 1 ) { v196 = *(_QWORD *)(*(_QWORD *)v419 + 8 * v195); if ( v196 ) { if ( *(_DWORD *)(v196 + 40) ) { ZN9BitStream12writeBooleanEb(a2, 1); v197 = ZN9LogicMath3minEii(*(unsigned int *)(v196 + 40), 0x7FFFF); ZN9BitStream25writePositiveIntMax524287Ei(a2, v197); v198 = *(unsigned int *)(v196 + 140); if ( (_DWORD)v198 ) goto LABEL_266; } else { ZN9BitStream12writeBooleanEb(a2, 0); v198 = *(unsigned int *)(v196 + 140); if ( (_DWORD)v198 ) { LABEL_266: ZN9BitStream12writeBooleanEb(a2, 1); ZN9BitStream21writePositiveIntMax15Ei(a2, (unsigned int)v198); if ( (int)v198 > 0 ) { v199 = 0; v200 = 4 * v198; do { ZN9BitStream21writePositiveIntMax15Ei(a2, *(unsigned int *)(*(_QWORD *)(v196 + 128) + v199)); ZN9BitStream12writeIntMax7Ei(a2, *(unsigned int *)(*(_QWORD *)(v196 + 144) + v199)); v199 += 4; } while ( v200 != v199 ); } goto LABEL_260; } } ZN9BitStream12writeBooleanEb(a2, 0); } LABEL_260: if ( ++v195 >= v419[3] ) goto LABEL_285; } } for ( k = 0; k < v419[3]; ++k ) { v202 = *(_QWORD *)(*(_QWORD *)v419 + 8 * k); if ( v202 ) { if ( *(_DWORD *)(v202 + 40) ) { ZN9BitStream12writeBooleanEb(a2, 1); v203 = *(_DWORD *)(v202 + 40); if ( a9 == 15 ) { v204 = ZN9LogicMath3minEii(v203, 0x7FFFFFF); ZN9BitStream28writePositiveIntMax134217727Ei(a2, v204); v205 = *(unsigned int *)(v202 + 140); if ( (_DWORD)v205 ) goto LABEL_281; } else { ZN9BitStream23writePositiveVIntMax255Ei(a2, v203); v205 = *(unsigned int *)(v202 + 140); if ( (_DWORD)v205 ) { LABEL_281: ZN9BitStream12writeBooleanEb(a2, 1); ZN9BitStream21writePositiveIntMax15Ei(a2, (unsigned int)v205); if ( (int)v205 >= 1 ) { v206 = 0; v207 = 4 * v205; do { ZN9BitStream21writePositiveIntMax15Ei(a2, *(unsigned int *)(*(_QWORD *)(v202 + 128) + v206)); ZN9BitStream12writeIntMax7Ei(a2, *(unsigned int *)(*(_QWORD *)(v202 + 144) + v206)); v206 += 4; } while ( v207 != v206 ); } continue; } } } else { ZN9BitStream12writeBooleanEb(a2, 0); v205 = *(unsigned int *)(v202 + 140); if ( (_DWORD)v205 ) goto LABEL_281; } ZN9BitStream12writeBooleanEb(a2, 0); } } } LABEL_285: *(_DWORD *)(a1 + 108) = 0; *(_DWORD *)(a1 + 140) = 0; v208 = ZNK21LogicBattleModeServer12getTicksGoneEv(v151); v397 = 0; v420 = *(unsigned int *)(a1 + 12); if ( *(int *)(a1 + 12) >= 1 ) { v209 = a4; if ( !a4 ) goto LABEL_298; v210 = 0; do { v211 = *(_DWORD **)(*(_QWORD *)a1 + 8 * v210); if ( !(*(unsigned int (__fastcall **)(_DWORD *))(*(_QWORD *)v211 + 64LL))(v211) ) { v212 = ZNK21LogicGameObjectServer9getPlayerEv(v211); if ( v212 ) { if ( v211[16] == *(_DWORD *)(a4 + 12) ) { v213 = *(_QWORD *)(v212 + 264); if ( v213 ) { if ( *(_DWORD *)(v213 + 20) == 12 && *(_BYTE *)(v213 + 40) ) { v397 = 1; goto LABEL_297; } } } } } ++v210; } while ( v420 != v210 ); v397 = 0; } LABEL_297: v209 = a4; LABEL_298: if ( (int)v420 >= 1 ) { v214 = 0; v396 = v208; v393 = 0; while ( 1 ) { v217 = *(_QWORD *)(*(_QWORD *)v194 + 8 * v214); v218 = ZNK21LogicGameObjectServer4getXEv(v217); v219 = ZN12LogicTileMap21logicToPathFinderTileEi(v218); v220 = ZNK21LogicGameObjectServer4getYEv(v217); v412 = ZN12LogicTileMap21logicToPathFinderTileEi(v220); v414 = v219; ZN9LogicMath3absEi((unsigned int)(v219 - v405)); ZN9LogicMath3absEi((unsigned int)(v412 - v404)); v221 = (*(__int64 (__fastcall **)(__int64))(*(_QWORD *)v217 + 64LL))(v217); if ( !v209 ) { if ( v221 == 3 ) { v224 = 1; v416 = 1; v225 = *(_DWORD *)(ZNK15LogicItemServer11getItemDataEv(v217) + 84) != 4; v407 = 0x100000000LL; v403 = 0; } else { v416 = 1; v407 = 0x100000000LL; v403 = 0; v224 = 1; v225 = 1; } v238 = 1; goto LABEL_409; } if ( v221 == 1 ) { if ( (ZN17LogicGameModeUtil17isTypeOfBossFightEi(a9) & 1) != 0 && *(_BYTE *)(ZNK21LogicProjectileServer17getProjectileDataEv(v217) + 136) ) { v222 = ZNK21LogicProjectileServer17getProjectileDataEv(v217); v223 = ZNK19LogicProjectileData12isShotByHeroEv(v222) ^ 1; } else { v223 = 0; } v236 = ZNK21LogicProjectileServer17getProjectileDataEv(v217); v237 = (unsigned int)ZNK19LogicProjectileData13getTravelTypeEv(v236) == 8 || ZNK19LogicProjectileData13getTravelTypeEv(v236) == 11; v239 = ZNK21LogicProjectileServer17getProjectileDataEv(v217); v240 = ZNK19LogicProjectileData21shouldHideFromEnemiesEv(v239); v227 = 0; v241 = 0; if ( (v240 & 1) != 0 ) { v417 = 0; LODWORD(v407) = *(_DWORD *)(v217 + 64) != *(_DWORD *)(v209 + 12); } else { LODWORD(v407) = 0; v417 = 0; } v403 = 1; v242 = v223; LABEL_328: v243 = v223; goto LABEL_372; } if ( !(*(unsigned int (__fastcall **)(__int64))(*(_QWORD *)v217 + 64LL))(v217) ) break; if ( (*(unsigned int (__fastcall **)(__int64))(*(_QWORD *)v217 + 64LL))(v217) == 3 ) { v227 = *(_DWORD *)(ZNK15LogicItemServer11getItemDataEv(v217) + 84) == 4; v228 = ZNK15LogicItemServer11getItemDataEv(v217); v229 = *(_DWORD *)(v217 + 64); v230 = *(_DWORD *)(v228 + 84) - 6; v231 = v230 >= 0x1C; v232 = 0x8080141u >> v230; v233 = !v231; v234 = v232 & v233; if ( v229 == *(_DWORD *)(v209 + 12) ) { LABEL_317: v235 = 1; goto LABEL_364; } if ( v234 ) { v235 = 1; if ( v229 == -1 || *(int *)(v217 + 84) > 0 ) { LABEL_364: v257 = *(_DWORD *)(ZNK15LogicItemServer11getItemDataEv(v217) + 84); v223 = v257 == 24; if ( *(_DWORD *)(v217 + 140) == v396 ) { v258 = 1; } else { v258 = v257 == 24; if ( ZNK15LogicItemServer14isSpawnDelayedEi(v217, v396) ) { v194 = a1; v209 = a4; goto LABEL_302; } } v241 = v234; v403 = 0; LODWORD(v407) = 0; v417 = 0; v237 = 0; v242 = v235 | v223; v255 = !v258; goto LABEL_369; } } else if ( v229 == -1 ) { goto LABEL_317; } v256 = ZNK15LogicItemServer11getItemDataEv(v217); v235 = ZNK13LogicItemData10showAlwaysEv(v256); goto LABEL_364; } if ( (*(unsigned int (__fastcall **)(__int64))(*(_QWORD *)v217 + 64LL))(v217) == 2 ) { v245 = ZNK21LogicAreaEffectServer17getAreaEffectDataEv(v217); LOBYTE(v223) = ZNK19LogicAreaEffectData29shouldShowEvenIfOutsideScreenEv(v245); v246 = ZNK21LogicAreaEffectServer17getAreaEffectDataEv(v217); if ( (ZNK19LogicAreaEffectData15dontShowToEnemyEv(v246) & 1) != 0 && *(_DWORD *)(v217 + 64) != *(_DWORD *)(v209 + 12) ) { LABEL_494: v194 = a1; goto LABEL_302; } v227 = 0; v241 = 0; v237 = 0; v242 = 1; v403 = 0; LODWORD(v407) = 0; v417 = 0; goto LABEL_328; } v227 = 0; v241 = 0; LOBYTE(v223) = 0; v403 = 0; v242 = 0; LODWORD(v407) = 0; v243 = 0; v417 = 0; v237 = 0; LABEL_372: if ( LogicBattleModeServer::INTRO_TICKS > a7 ) { v238 = 1; HIDWORD(v407) = 1; v259 = 1; if ( !v227 ) goto LABEL_380; goto LABEL_374; } v398 = v223; v400 = v227; v260 = v237; v261 = v241; HIDWORD(v407) = v242; v262 = v243; if ( ((v417 | (unsigned int)ZNK21LogicBattleModeServer26isGameOverOrRoundResettingEv(v418)) & 1) != 0 || *(_DWORD *)(v418 + 236) == 12 ) { v241 = v261; v237 = v260; HIDWORD(v407) = 1; v259 = 1; v238 = 1; if ( !v400 ) goto LABEL_380; goto LABEL_374; } if ( a9 == 9 || (ZN17LogicGameModeUtil17isTypeOfBossFightEi(a9) & 1) != 0 ) { v259 = v262; if ( !(*(unsigned int (__fastcall **)(__int64))(*(_QWORD *)v217 + 64LL))(v217) && *(_DWORD *)(v217 + 64) == *(_DWORD *)(v209 + 12) ) { v264 = ZNK20LogicCharacterServer16getCharacterDataEv(v217); if ( ZNK18LogicCharacterData6isHeroEv(v264) ) { v241 = v261; v237 = v260; v265 = *(_DWORD *)(v217 + 60) != *(_DWORD *)(v209 + 8); v259 = v262 | v265; v238 = v398 | v265; HIDWORD(v407) |= v265; if ( !v400 ) goto LABEL_380; goto LABEL_374; } } } else { v259 = v262; } v241 = v261; v237 = v260; v238 = v398; if ( !v400 ) { LABEL_380: v225 = 1; v416 = v259; if ( !v241 ) goto LABEL_387; goto LABEL_386; } LABEL_374: if ( *(_DWORD *)(v217 + 64) == *(_DWORD *)(v209 + 12) ) { v225 = 0; v416 = v259; if ( !v241 ) goto LABEL_387; } else { v263 = v241; if ( (ZNK11LogicPlayer22getCardValueForPassiveEii(v209, 14, 1) & 0x80000000) != 0 && (ZNK11LogicPlayer22getCardValueForPassiveEii(v209, 25, 1) & 0x80000000) != 0 ) { v225 = 0; } else { v259 = 1; v225 = 1; HIDWORD(v407) = 1; } v416 = v259; if ( !v263 ) { LABEL_387: v224 = 1; if ( !v237 ) goto LABEL_409; goto LABEL_404; } } LABEL_386: if ( *(_DWORD *)(v217 + 64) == *(_DWORD *)(v209 + 12) ) goto LABEL_387; if ( *(int *)(v217 + 76) <= 0 ) { if ( *(int *)(v217 + 84) < 1 ) { v224 = 0; if ( !v237 ) goto LABEL_409; } else { v224 = *(_BYTE *)(v217 + 165) == 0; if ( !v237 ) goto LABEL_409; } } else { v224 = 1; if ( !v237 ) goto LABEL_409; } LABEL_404: if ( (ZNK21LogicGameObjectServer4getXEv(v217) & 0x80000000) != 0 || (int)ZNK21LogicGameObjectServer4getXEv(v217) > *(_DWORD *)(a3 + 152) || (ZNK21LogicGameObjectServer4getYEv(v217) & 0x80000000) != 0 || (int)ZNK21LogicGameObjectServer4getYEv(v217) > *(_DWORD *)(a3 + 156) ) { v266 = 1; goto LABEL_410; } LABEL_409: v267 = ZNK21LogicGameObjectServer4getXEv(v217); v268 = ZNK21LogicGameObjectServer4getYEv(v217); LOBYTE(v392) = v422 & 1; v266 = ZNK12LogicTileMap22isInsideVisibilityRectEiiiiiiib(a3, v410, v409, v267, v268, 100, 100, 100, v392); LABEL_410: if ( LogicBattleModeServer::ART_TEST ) goto LABEL_413; if ( (unsigned int)ZNK21LogicGameObjectServer11getGlobalIDEv(v217) == v399 ) { v416 = 1; LABEL_413: v194 = a1; LABEL_414: v269 = 10; if ( v209 ) goto LABEL_415; goto LABEL_419; } if ( (((unsigned int)v407 | (!v224 || !v225)) & 1) == 0 ) { if ( (v238 & 1) != 0 || (v266 & 1) != 0 && (((HIDWORD(v407) | v403) & 1) != 0 || (v308 = ZNK21LogicGameObjectServer4getXEv(v217), v309 = ZNK21LogicGameObjectServer4getYEv(v217), (ZNK28LogicGameObjectManagerServer29isPositionVisibleToPlayerTeamEPK12LogicTileMapiiP14LogicArrayListIP22LogicTeamMemberElementEiib( v309, a3, v410, v409, a6, v308, (unsigned int)v309, v422 & 1) & 1) != 0)) ) { v194 = a1; if ( a9 != 7 || (*(unsigned int (__fastcall **)(__int64))(*(_QWORD *)v217 + 64LL))(v217) || *(_DWORD *)(v217 + 64) != 1 || *(_DWORD *)(ZNK20LogicCharacterServer16getCharacterDataEv(v217) + 412) ) { goto LABEL_414; } *(_DWORD *)(a1 + 168) = ZNK21LogicGameObjectServer4getXEv(v217); *(_DWORD *)(a1 + 172) = ZNK21LogicGameObjectServer4getYEv(v217); v393 = 1; v269 = 10; if ( v209 ) { LABEL_415: if ( (v416 & 1) != 0 ) v270 = 10; else v270 = 1; v269 = ZN21LogicGameObjectServer23changeFadeCounterServerEii(v217, *(_DWORD *)(v209 + 8), v270); } LABEL_419: v271 = *(_DWORD *)(v194 + 108); if ( v271 == *(_DWORD *)(v194 + 104) ) { v272 = 2 * v271 ? 2 * v271 : 5; if ( v271 < v272 ) { if ( (unsigned __int64)v272 >> 61 ) v273 = -1; else v273 = 8LL * v272; v274 = operator new[](v273); v275 = *(__int64 **)(v194 + 96); v276 = (unsigned int)(v271 - 1); v277 = v274; if ( v271 >= 1 ) { v278 = v276 + 1; if ( (unsigned __int64)(v276 + 1) < 4 ) { v279 = v271; v280 = (_QWORD *)v274; goto LABEL_443; } v281 = v276; if ( v274 < (unsigned __int64)&v275[v281 + 1] ) { v70 = v274 + v281 * 8 + 8 > (unsigned __int64)v275; v279 = v271; v280 = (_QWORD *)v274; if ( v70 ) goto LABEL_577; } v282 = v278 & 0x1FFFFFFFCLL; v283 = (_OWORD *)(v274 + 16); v279 = v271 - (v278 & 0xFFFFFFFC); v284 = &v275[v282]; v280 = (_QWORD *)(v274 + v282 * 8); v285 = (__int128 *)(v275 + 2); v286 = v278 & 0x1FFFFFFFCLL; do { v287 = *(v285 - 1); v288 = *v285; v286 -= 4; v285 += 2; *(v283 - 1) = v287; *v283 = v288; v283 += 2; } while ( v286 ); v275 = v284; if ( v278 != (v278 & 0x1FFFFFFFCLL) ) { LABEL_577: do { LABEL_443: v289 = *v275++; --v279; *v280++ = v289; } while ( v279 > 0 ); } v275 = *(__int64 **)(v194 + 96); } if ( v275 ) { operator delete[](v275); v271 = *(_DWORD *)(v194 + 108); } *(_QWORD *)(v194 + 96) = v277; *(_DWORD *)(v194 + 104) = v272; } } v290 = *(_QWORD *)(v194 + 96); *(_DWORD *)(v194 + 108) = v271 + 1; *(_QWORD *)(v290 + 8LL * v271) = v217; v215 = *(_DWORD *)(v194 + 140); if ( v215 == *(_DWORD *)(v194 + 136) ) { v291 = 2 * v215 ? 2 * v215 : 5; if ( v215 < v291 ) { if ( (unsigned __int64)v291 >> 62 ) v292 = -1; else v292 = 4LL * v291; v293 = operator new[](v292); v294 = *(__int128 **)(v194 + 128); v295 = (unsigned int)(v215 - 1); v296 = v293; if ( v215 < 1 ) goto LABEL_465; v297 = v295 + 1; if ( (unsigned __int64)(v295 + 1) >= 8 ) { v300 = 4 * v295; if ( v293 >= (unsigned __int64)v294 + v300 + 4 || (v70 = v293 + v300 + 4 > (unsigned __int64)v294, v298 = *(int **)(v194 + 128), v299 = (_DWORD *)v293, !v70) ) { v301 = 4 * (v297 & 0x1FFFFFFF8LL); v302 = (_OWORD *)(v293 + 16); v215 -= v297 & 0xFFFFFFF8; v298 = (int *)((char *)v294 + v301); v299 = (_DWORD *)(v293 + v301); v303 = v294 + 1; v304 = v297 & 0x1FFFFFFF8LL; do { v305 = *(v303 - 1); v306 = *v303; v304 -= 8; v303 += 2; *(v302 - 1) = v305; *v302 = v306; v302 += 2; } while ( v304 ); if ( v297 == (v297 & 0x1FFFFFFF8LL) ) goto LABEL_465; } } else { v298 = *(int **)(v194 + 128); v299 = (_DWORD *)v293; } do { v307 = *v298++; --v215; *v299++ = v307; } while ( v215 > 0 ); LABEL_465: if ( v294 ) operator delete[](v294); v215 = *(_DWORD *)(v194 + 140); *(_QWORD *)(v194 + 128) = v296; *(_DWORD *)(v194 + 136) = v291; goto LABEL_301; } } goto LABEL_301; } } if ( (*(unsigned int (__fastcall **)(__int64))(*(_QWORD *)v217 + 64LL))(v217) == 2 ) { v310 = ZNK21LogicAreaEffectServer17getAreaEffectDataEv(v217); v311 = ZNK19LogicAreaEffectData9getRadiusEv(v310); v312 = ZN12LogicTileMap21logicToPathFinderTileEi(v311); if ( v312 >= 1 ) { v313 = v312; v314 = ZNK21LogicGameObjectServer4getXEv(v217); v315 = ZNK21LogicGameObjectServer4getYEv(v217); v316 = ZNK21LogicAreaEffectServer17getAreaEffectDataEv(v217); v317 = ZNK19LogicAreaEffectData9getRadiusEv(v316); v318 = ZNK21LogicAreaEffectServer17getAreaEffectDataEv(v217); v319 = ZNK19LogicAreaEffectData9getRadiusEv(v318); v320 = ZNK21LogicAreaEffectServer17getAreaEffectDataEv(v217); v321 = ZNK19LogicAreaEffectData9getRadiusEv(v320); LOBYTE(v392) = v422 & 1; if ( (ZNK12LogicTileMap22isInsideVisibilityRectEiiiiiiib(a3, v410, v409, v314, v315, v317, v319, v321, v392) & 1) != 0 ) { v322 = 0; v323 = 0; v324 = 2 * v313 / 3; v325 = 1; do { v326 = ZN9LogicMath11getRotatedXEiii(v324, 0, v322); v327 = ZN9LogicMath11getRotatedYEiii(v324, 0, v322); v328 = v326 + v414; v329 = v327 + v412; v330 = ZN9LogicMath5clampEiii(v328, 0, *(_DWORD *)(a3 + 160) - 1); v331 = ZN9LogicMath5clampEiii(v329, 0, *(_DWORD *)(a3 + 164) - 1); v332 = ZN12LogicTileMap21pathFinderTileToLogicEib(v330, 0); v333 = ZN12LogicTileMap21pathFinderTileToLogicEib(v331, 0); v334 = ZNK28LogicGameObjectManagerServer29isPositionVisibleToPlayerTeamEPK12LogicTileMapiiP14LogicArrayListIP22LogicTeamMemberElementEiib( v333, a3, v410, v409, a6, v332, (unsigned int)v333, v422 & 1); if ( (v334 & 1) != 0 ) v323 = 1; if ( v325 > 7 ) break; ++v325; v322 += 45; } while ( (v334 & 1) == 0 ); v209 = a4; if ( (v323 & 1) != 0 ) goto LABEL_413; } } } if ( !v209 ) goto LABEL_494; v269 = ZN21LogicGameObjectServer23changeFadeCounterServerEii(v217, *(_DWORD *)(v209 + 8), -1); v194 = a1; if ( !(*(unsigned int (__fastcall **)(__int64))(*(_QWORD *)v217 + 64LL))(v217) && *(_BYTE *)(v217 + 281) ) { ZN21LogicGameObjectServer23changeFadeCounterServerEii(v217, *(_DWORD *)(v209 + 8), -10); goto LABEL_302; } if ( v269 < 1 || (*(unsigned int (__fastcall **)(__int64))(*(_QWORD *)v217 + 64LL))(v217) == 1 ) goto LABEL_302; v335 = *(_DWORD *)(a1 + 108); if ( v335 == *(_DWORD *)(a1 + 104) ) { v336 = 2 * v335 ? 2 * v335 : 5; if ( v335 < v336 ) { if ( (unsigned __int64)v336 >> 61 ) v337 = -1; else v337 = 8LL * v336; v338 = operator new[](v337); v339 = *(__int64 **)(a1 + 96); v340 = (unsigned int)(v335 - 1); v341 = v338; if ( v335 >= 1 ) { v342 = v340 + 1; if ( (unsigned __int64)(v340 + 1) < 4 ) { v343 = v335; v344 = (_QWORD *)v338; goto LABEL_505; } v345 = v340; if ( v338 < (unsigned __int64)&v339[v345 + 1] ) { v70 = v338 + v345 * 8 + 8 > (unsigned __int64)v339; v343 = v335; v344 = (_QWORD *)v338; if ( v70 ) goto LABEL_578; } v346 = v342 & 0x1FFFFFFFCLL; v347 = (_OWORD *)(v338 + 16); v343 = v335 - (v342 & 0xFFFFFFFC); v348 = &v339[v346]; v344 = (_QWORD *)(v338 + v346 * 8); v349 = (__int128 *)(v339 + 2); v350 = v342 & 0x1FFFFFFFCLL; do { v351 = *(v349 - 1); v352 = *v349; v350 -= 4; v349 += 2; *(v347 - 1) = v351; *v347 = v352; v347 += 2; } while ( v350 ); v339 = v348; if ( v342 != (v342 & 0x1FFFFFFFCLL) ) { LABEL_578: do { LABEL_505: v353 = *v339++; --v343; *v344++ = v353; } while ( v343 > 0 ); } v339 = *(__int64 **)(a1 + 96); } if ( v339 ) { operator delete[](v339); v335 = *(_DWORD *)(a1 + 108); } *(_QWORD *)(a1 + 96) = v341; *(_DWORD *)(a1 + 104) = v336; } } v354 = *(_QWORD *)(a1 + 96); *(_DWORD *)(a1 + 108) = v335 + 1; *(_QWORD *)(v354 + 8LL * v335) = v217; v215 = *(_DWORD *)(a1 + 140); if ( v215 == *(_DWORD *)(a1 + 136) ) { v291 = 2 * v215 ? 2 * v215 : 5; if ( v215 < v291 ) { if ( (unsigned __int64)v291 >> 62 ) v355 = -1; else v355 = 4LL * v291; v356 = operator new[](v355); v294 = *(__int128 **)(a1 + 128); v357 = (unsigned int)(v215 - 1); v296 = v356; if ( v215 >= 1 ) { v358 = v357 + 1; if ( (unsigned __int64)(v357 + 1) < 8 ) { v359 = *(int **)(a1 + 128); v360 = (_DWORD *)v356; goto LABEL_526; } v361 = 4 * v357; if ( v356 < (unsigned __int64)v294 + v361 + 4 ) { v70 = v356 + v361 + 4 > (unsigned __int64)v294; v359 = *(int **)(a1 + 128); v360 = (_DWORD *)v356; if ( v70 ) goto LABEL_579; } v362 = 4 * (v358 & 0x1FFFFFFF8LL); v363 = (_OWORD *)(v356 + 16); v215 -= v358 & 0xFFFFFFF8; v359 = (int *)((char *)v294 + v362); v360 = (_DWORD *)(v356 + v362); v364 = v294 + 1; v365 = v358 & 0x1FFFFFFF8LL; do { v366 = *(v364 - 1); v367 = *v364; v365 -= 8; v364 += 2; *(v363 - 1) = v366; *v363 = v367; v363 += 2; } while ( v365 ); if ( v358 != (v358 & 0x1FFFFFFF8LL) ) { LABEL_579: do { LABEL_526: v368 = *v359++; --v215; *v360++ = v368; } while ( v215 > 0 ); } } goto LABEL_465; } } LABEL_301: v216 = *(_QWORD *)(v194 + 128); *(_DWORD *)(v194 + 140) = v215 + 1; *(_DWORD *)(v216 + 4LL * v215) = v269; LABEL_302: if ( ++v214 == v420 ) goto LABEL_529; } v244 = *(_BYTE *)(v217 + 580) && !*(_BYTE *)(v217 + 581) && *(_DWORD *)(v217 + 64) != *(_DWORD *)(v209 + 12); v247 = ZNK20LogicCharacterServer16getCharacterDataEv(v217); if ( (ZNK18LogicCharacterData11isCarryableEv(v247) & 1) != 0 ) { v417 = 1; } else { v248 = ZNK20LogicCharacterServer16getCharacterDataEv(v217); v417 = ZNK18LogicCharacterData6isBossEv(v248); } v249 = *(_DWORD *)(v217 + 64); v250 = *(_DWORD *)(v209 + 12); if ( *(_DWORD *)(v217 + 424) == v396 || (v255 = v249 == v250, v250 = *(_DWORD *)(v217 + 64), v255) ) { v252 = 1; v251 = v397 | (v249 == v250); } else { v251 = v397; v252 = 0; } if ( (ZNK20LogicCharacterServer15isForcedVisibleEv(v217) & 1) != 0 || (ZN20LogicCharacterServer17gotDamageThisTickEi(v217, (unsigned int)a7) & 1) != 0 || (ZN20LogicCharacterServer20pickedUpItemThisTickEi(v217, (unsigned int)a7) & 1) != 0 || ZN20LogicCharacterServer16attackedThisTickEi(v217, a7) || !v244 && *(_BYTE *)(v217 + 345) ) { v244 = 0; v251 = 1; v252 = 1; } LOBYTE(v223) = v397 | (*(_DWORD *)(ZNK20LogicCharacterServer16getCharacterDataEv(v217) + 412) == 12); v253 = v244 && v394 != *(_DWORD *)(v217 + 60) && v244; v254 = ZN17LogicGameModeUtil15isProtectedKingEPK20LogicCharacterServer(v217); v227 = 0; v241 = 0; v237 = 0; v242 = (v251 != 0) | v254; v255 = v252 == 0; v403 = 0; LODWORD(v407) = v253; LABEL_369: v209 = a4; v243 = !v255; goto LABEL_372; } v393 = 0; LABEL_529: v369 = *(unsigned int *)(v194 + 108); ZN9BitStream25writePositiveVIntMax65535Ei(a2, (unsigned int)v369); if ( (int)v369 >= 1 ) { for ( m = 0; m != v369; ++m ) { v371 = ZNK21LogicGameObjectServer7getDataEv(*(_QWORD *)(*(_QWORD *)(v194 + 96) + 8 * m)); ZN16ByteStreamHelper18writeDataReferenceEP9BitStreamPK9LogicData(a2, v371); } for ( n = 0; n != v369; ++n ) { v373 = ZNK21LogicGameObjectServer11getGlobalIDEv(*(_QWORD *)(*(_QWORD *)(v194 + 96) + 8 * n)); ZN16ByteStreamHelper20writeObjectRunningIdEP9BitStreami(a2, v373); } v374 = a4; if ( a4 ) { for ( ii = 0; ii != v369; ++ii ) { v376 = *(_DWORD **)(*(_QWORD *)(v194 + 96) + 8 * ii); if ( (*(unsigned int (__fastcall **)(_DWORD *))(*(_QWORD *)v376 + 64LL))(v376) ) { if ( (*(unsigned int (__fastcall **)(_DWORD *))(*(_QWORD *)v376 + 64LL))(v376) == 1 ) { if ( *(_DWORD *)(a4 + 8) == v376[15] ) { v377 = ZNK21LogicProjectileServer17getProjectileDataEv(v376); v378 = ZNK19LogicProjectileData12isShotByHeroEv(v377); } else { v378 = 0; } (*(void (__fastcall **)(_DWORD *, __int64, _QWORD, _QWORD, _QWORD))(*(_QWORD *)v376 + 128LL))( v376, a2, v378 & 1, *(unsigned int *)(*(_QWORD *)(v194 + 128) + 4 * ii), *(unsigned int *)(a4 + 12)); } else { (*(void (__fastcall **)(_DWORD *, __int64, _QWORD))(*(_QWORD *)v376 + 56LL))( v376, a2, *(unsigned int *)(*(_QWORD *)(v194 + 128) + 4 * ii)); } } else { (*(void (__fastcall **)(_DWORD *, __int64, bool, _QWORD, _QWORD, bool))(*(_QWORD *)v376 + 128LL))( v376, a2, v395 == v376, *(unsigned int *)(*(_QWORD *)(v194 + 128) + 4 * ii), *(unsigned int *)(a4 + 8), *(_DWORD *)(a4 + 12) == v376[16]); } } } else { do { v379 = *(_QWORD *)(*(_QWORD *)(v194 + 96) + 8 * v374); if ( (*(unsigned int (__fastcall **)(__int64))(*(_QWORD *)v379 + 64LL))(v379) ) { if ( (*(unsigned int (__fastcall **)(__int64))(*(_QWORD *)v379 + 64LL))(v379) == 1 ) (*(void (__fastcall **)(__int64, __int64, _QWORD, _QWORD, __int64))(*(_QWORD *)v379 + 128LL))( v379, a2, 0, *(unsigned int *)(*(_QWORD *)(v194 + 128) + 4 * v374), 0xFFFFFFFFLL); else (*(void (__fastcall **)(__int64, __int64, _QWORD))(*(_QWORD *)v379 + 56LL))( v379, a2, *(unsigned int *)(*(_QWORD *)(v194 + 128) + 4 * v374)); } else { (*(void (__fastcall **)(__int64, __int64, _QWORD, _QWORD, __int64, _QWORD))(*(_QWORD *)v379 + 128LL))( v379, a2, 0, *(unsigned int *)(*(_QWORD *)(v194 + 128) + 4 * v374), 0xFFFFFFFFLL, 0); } ++v374; } while ( v369 != v374 ); } } return v393 & 1; } ================ DECODE BLOCK 6 ================ // ZN23LogicCharacterClientOwn6decodeEP9BitStreambibP14LogicArrayListIP11LogicPlayerE ================ DECODE BLOCK 7 ================ void __fastcall ZN23LogicCharacterClientOwn6decodeEP9BitStreambibP14LogicArrayListIP11LogicPlayerE( __int64 a1, __int64 a2, char a3, unsigned int a4, char a5, _QWORD *a6) { ZN20LogicCharacterClient6decodeEP9BitStreambibP14LogicArrayListIP11LogicPlayerE(a1, a2, a3 & 1, a4, a5 & 1, a6); }