Skip to content

Instantly share code, notes, and snippets.

@jugeeya
Created March 14, 2019 22:40
Show Gist options
  • Save jugeeya/b5d8121d16b49edb1e0d03fb9e243e8e to your computer and use it in GitHub Desktop.
Save jugeeya/b5d8121d16b49edb1e0d03fb9e243e8e to your computer and use it in GitHub Desktop.
// Peach turnip 1 function
float __fastcall app::peachdaikon::PEACH_PEACHDAIKON_DAIKON_1_POWER(app::peachdaikon *this)
{
return *(float *)(*(_QWORD *)(*(_QWORD *)(*off_710456A320[0] + 840) + 344LL) + 32LL);
}
// Peach turnip 1 assembly
EXPORT _ZN3app11peachdaikon32PEACH_PEACHDAIKON_DAIKON_1_POWEREv
.text:00000071010795D0 _ZN3app11peachdaikon32PEACH_PEACHDAIKON_DAIKON_1_POWEREv
.text:00000071010795D0 ADRP X8, #off_710456A320@PAGE
.text:00000071010795D4 LDR X8, [X8,#off_710456A320@PAGEOFF]
.text:00000071010795D8 LDR X8, [X8] ; lib::Singleton<app::FighterParamAccessor2>::instance_
.text:00000071010795DC LDR X8, [X8,#0x348]
.text:00000071010795E0 LDR X8, [X8,#0x158]
.text:00000071010795E4 LDR S0, [X8,#0x20]
.text:00000071010795E8 RET
// ATTACK function
__int64 __fastcall sub_71019420D0(__int64 a1, __int64 a2)
{
__int64 v2; // x20
__int64 v3; // x25
__int64 v4; // x24
__int64 v5; // x19
__int128 v6; // q0
unsigned int v7; // w21
__int64 v8; // x8
__int64 v9; // x9
__int64 v10; // x1
__int64 v11; // x2
void **v12; // x8
unsigned __int64 v13; // x9
void **v14; // x26
int v15; // w8
float v16; // w8
signed __int64 v17; // x0
_QWORD *v18; // x8
__int64 v19; // x8
void **v20; // x26
int v21; // w8
float v22; // w8
signed __int64 v23; // x0
_QWORD *v24; // x8
__int64 v25; // x8
void **v26; // x26
int v27; // w8
float v28; // s0
signed __int64 v29; // x0
_QWORD *v30; // x8
__int64 v31; // x8
__int128 v32; // q1
void **v33; // x26
int v34; // w8
float v35; // s0
signed __int64 v36; // x0
_QWORD *v37; // x8
__int64 v38; // x8
__int128 v39; // q1
void **v40; // x26
int v41; // w8
float v42; // s0
signed __int64 v43; // x0
_QWORD *v44; // x8
__int64 v45; // x8
__int128 v46; // q1
_QWORD *v47; // x8
__int64 v48; // x10
unsigned __int64 v49; // x9
void **v50; // x11
unsigned __int64 v51; // x8
void **v52; // x26
int v53; // w8
float v54; // s0
signed __int64 v55; // x0
_QWORD *v56; // x8
__int64 v57; // x8
__int128 v58; // q1
void **v59; // x26
int v60; // w8
float v61; // s0
signed __int64 v62; // x0
_QWORD *v63; // x8
__int64 v64; // x8
__int128 v65; // q1
void **v66; // x26
int v67; // w8
float v68; // s0
signed __int64 v69; // x0
_QWORD *v70; // x8
__int64 v71; // x8
__int128 v72; // q1
unsigned __int64 v73; // x8
void **v74; // x26
int v75; // w8
float v76; // w8
signed __int64 v77; // x0
_QWORD *v78; // x8
__int64 v79; // x8
void **v80; // x26
int v81; // w8
float v82; // w8
signed __int64 v83; // x0
_QWORD *v84; // x8
__int64 v85; // x8
void **v86; // x8
int v87; // w9
int v88; // w8
__int64 v89; // x0
void **v90; // x26
int v91; // w8
float v92; // s1
float v93; // w8
signed __int64 v94; // x0
_QWORD *v95; // x8
__int64 v96; // x8
void **v97; // x26
int v98; // w8
signed __int64 v99; // x0
_QWORD *v100; // x8
unsigned __int64 v101; // x8
_QWORD *v102; // x8
void **v103; // x10
unsigned __int64 v104; // x9
int v105; // w11
bool v106; // zf
char v107; // w10
void **v108; // x10
int v109; // w11
bool v110; // zf
char v111; // w10
void **v112; // x10
int v113; // w11
bool v114; // zf
void **v115; // x11
int v116; // w12
bool v117; // zf
char v118; // w11
void **v119; // x8
int v120; // w9
unsigned __int64 v121; // x24
bool v122; // zf
char v123; // w8
int v124; // w0
void **v125; // x8
int v126; // w9
bool v127; // zf
char v128; // w8
unsigned __int64 i; // x8
unsigned __int64 v130; // x9
__int128 v132; // [xsp+0h] [xbp-150h]
__int128 v133; // [xsp+10h] [xbp-140h]
__int64 v134; // [xsp+20h] [xbp-130h]
__int64 v135; // [xsp+28h] [xbp-128h]
__int64 v136; // [xsp+30h] [xbp-120h]
__int64 v137; // [xsp+38h] [xbp-118h]
float v138; // [xsp+40h] [xbp-110h]
__int64 v139; // [xsp+48h] [xbp-108h]
int v140; // [xsp+50h] [xbp-100h]
char v141; // [xsp+54h] [xbp-FCh]
__int64 v142; // [xsp+58h] [xbp-F8h]
__int64 v143; // [xsp+60h] [xbp-F0h]
__int64 v144; // [xsp+68h] [xbp-E8h]
char v145; // [xsp+70h] [xbp-E0h]
__int16 v146; // [xsp+71h] [xbp-DFh]
char v147; // [xsp+73h] [xbp-DDh]
__int16 v148; // [xsp+74h] [xbp-DCh]
char v149; // [xsp+76h] [xbp-DAh]
__int64 v150; // [xsp+78h] [xbp-D8h]
__int16 v151; // [xsp+80h] [xbp-D0h]
__int64 v152; // [xsp+88h] [xbp-C8h]
__int128 v153; // [xsp+90h] [xbp-C0h]
int v154; // [xsp+A0h] [xbp-B0h]
__int16 v155; // [xsp+A4h] [xbp-ACh]
char v156; // [xsp+A6h] [xbp-AAh]
int v157; // [xsp+A8h] [xbp-A8h]
int v158; // [xsp+ACh] [xbp-A4h]
__int64 v159; // [xsp+B0h] [xbp-A0h]
__int64 v160; // [xsp+B8h] [xbp-98h]
__int16 v161; // [xsp+C0h] [xbp-90h]
__int16 v162; // [xsp+C4h] [xbp-8Ch]
int v163; // [xsp+C8h] [xbp-88h]
__int64 v164; // [xsp+CCh] [xbp-84h]
__int64 v165; // [xsp+D4h] [xbp-7Ch]
__int64 v166; // [xsp+DCh] [xbp-74h]
int v167; // [xsp+E4h] [xbp-6Ch]
char v168; // [xsp+E8h] [xbp-68h]
char v169; // [xsp+E9h] [xbp-67h]
__int64 v170; // [xsp+F0h] [xbp-60h]
__int64 v171; // [xsp+F8h] [xbp-58h]
v2 = a2;
v3 = **(_QWORD **)(a2 + 32);
v4 = *(_QWORD *)(a2 + 16);
v133 = 0uLL;
v134 = 0LL;
v135 = 0LL;
v138 = 1.0;
v136 = 0LL;
v137 = 4575657222473777152LL;
v139 = 0x31ED91FCALL;
v132 = 0uLL;
v5 = a1;
v146 = 0;
v141 = 0;
v140 = 0;
v147 = 0;
v148 = 0;
v151 = 0;
v145 = 0;
v144 = 0LL;
v150 = 0LL;
v152 = 0x31ED91FCALL;
v142 = 0x15A2C502B3LL;
v143 = 0LL;
v149 = 12;
v6 = *(_OWORD *)off_710456A310;
v157 = 0x3F800000;
v158 = 0;
v159 = 0x425CBFC4FLL;
v160 = 0x7FB997A80LL;
v154 = 0;
v156 = 0;
v155 = 0;
v161 = 0;
v162 = 0;
v163 = 0xBF800000;
v153 = v6;
v166 = 0LL;
v165 = 0LL;
v164 = 0LL;
v167 = -1;
v168 = 3;
v169 = 0;
v7 = sub_71029ACA40(a2, 1LL, 0LL);
sub_71029ACA40(v2, 2LL, 0LL);
v139 = sub_71029ACA40(v2, 3LL, 0LL);
v8 = **(_QWORD **)(v2 + 32);
v9 = *(_QWORD *)(v2 + 16);
sub_71029ACA40(v139, v10, v11);
if ( (unsigned __int64)v12 >= v13 )
v14 = &off_7103C42FD0;
else
v14 = v12;
v15 = *((_DWORD *)v14 + 2);
if ( v15 == 3 )
{
v16 = *(float *)v14;
}
else if ( v15 == 19 )
{
v16 = (float)(signed __int64)*v14;
}
else if ( ((_DWORD)v14[1] & 0xF) != 4
|| ((v17 = sub_71029C0CE0((unsigned __int8 *)*v14 + 24, (_BOOL8 *)&v170), v18 = *v14, *((_BYTE *)*v14 + 8) != 4) ? (v19 = v18[2]) : (v19 = *((unsigned __int8 *)v18 + 11)),
v17 != v19 + 1) )
{
v16 = 0.0;
}
else if ( (_DWORD)v171 == 19 )
{
v16 = (float)v170;
}
else
{
v16 = *(float *)&v170;
}
*(float *)&v134 = v16;
LODWORD(v135) = sub_71029ACA40(v2, 5LL, 0LL);
HIDWORD(v135) = sub_71029ACA40(v2, 6LL, 0LL);
LODWORD(v136) = sub_71029ACA40(v2, 7LL, 0LL);
HIDWORD(v136) = sub_71029ACA40(v2, 8LL, 0LL);
if ( (unsigned __int64)(**(_QWORD **)(v2 + 32) + 144LL) >= *(_QWORD *)(v2 + 16) )
v20 = &off_7103C42FD0;
else
v20 = (void **)(**(_QWORD **)(v2 + 32) + 144LL);
v21 = *((_DWORD *)v20 + 2);
if ( v21 == 3 )
{
v22 = *(float *)v20;
}
else if ( v21 == 19 )
{
v22 = (float)(signed __int64)*v20;
}
else if ( ((_DWORD)v20[1] & 0xF) != 4
|| ((v23 = sub_71029C0CE0((unsigned __int8 *)*v20 + 24, (_BOOL8 *)&v170), v24 = *v20, *((_BYTE *)*v20 + 8) != 4) ? (v25 = v24[2]) : (v25 = *((unsigned __int8 *)v24 + 11)),
v23 != v25 + 1) )
{
v22 = 0.0;
}
else if ( (_DWORD)v171 == 19 )
{
v22 = (float)v170;
}
else
{
v22 = *(float *)&v170;
}
*((float *)&v134 + 1) = v22;
if ( (unsigned __int64)(**(_QWORD **)(v2 + 32) + 160LL) >= *(_QWORD *)(v2 + 16) )
v26 = &off_7103C42FD0;
else
v26 = (void **)(**(_QWORD **)(v2 + 32) + 160LL);
v27 = *((_DWORD *)v26 + 2);
if ( v27 == 3 )
{
v28 = *(float *)v26;
}
else if ( v27 == 19 )
{
v28 = (float)(signed __int64)*v26;
}
else if ( ((_DWORD)v26[1] & 0xF) != 4
|| ((v29 = sub_71029C0CE0((unsigned __int8 *)*v26 + 24, (_BOOL8 *)&v170), v30 = *v26, *((_BYTE *)*v26 + 8) != 4) ? (v31 = v30[2]) : (v31 = *((unsigned __int8 *)v30 + 11)),
v29 != v31 + 1) )
{
v28 = 0.0;
}
else
{
v28 = (float)v170;
if ( (_DWORD)v171 != 19 )
v28 = *(float *)&v170;
}
v32 = v132;
*(float *)&v32 = v28;
v132 = v32;
if ( (unsigned __int64)(**(_QWORD **)(v2 + 32) + 176LL) >= *(_QWORD *)(v2 + 16) )
v33 = &off_7103C42FD0;
else
v33 = (void **)(**(_QWORD **)(v2 + 32) + 176LL);
v34 = *((_DWORD *)v33 + 2);
if ( v34 == 3 )
{
v35 = *(float *)v33;
}
else if ( v34 == 19 )
{
v35 = (float)(signed __int64)*v33;
}
else if ( ((_DWORD)v33[1] & 0xF) != 4
|| ((v36 = sub_71029C0CE0((unsigned __int8 *)*v33 + 24, (_BOOL8 *)&v170), v37 = *v33, *((_BYTE *)*v33 + 8) != 4) ? (v38 = v37[2]) : (v38 = *((unsigned __int8 *)v37 + 11)),
v36 != v38 + 1) )
{
v35 = 0.0;
}
else
{
v35 = (float)v170;
if ( (_DWORD)v171 != 19 )
v35 = *(float *)&v170;
}
v39 = v132;
*((float *)&v39 + 1) = v35;
v132 = v39;
if ( (unsigned __int64)(**(_QWORD **)(v2 + 32) + 192LL) >= *(_QWORD *)(v2 + 16) )
v40 = &off_7103C42FD0;
else
v40 = (void **)(**(_QWORD **)(v2 + 32) + 192LL);
v41 = *((_DWORD *)v40 + 2);
if ( v41 == 3 )
{
v42 = *(float *)v40;
}
else if ( v41 == 19 )
{
v42 = (float)(signed __int64)*v40;
}
else if ( ((_DWORD)v40[1] & 0xF) != 4
|| ((v43 = sub_71029C0CE0((unsigned __int8 *)*v40 + 24, (_BOOL8 *)&v170), v44 = *v40, *((_BYTE *)*v40 + 8) != 4) ? (v45 = v44[2]) : (v45 = *((unsigned __int8 *)v44 + 11)),
v43 != v45 + 1) )
{
v42 = 0.0;
}
else
{
v42 = (float)v170;
if ( (_DWORD)v171 != 19 )
v42 = *(float *)&v170;
}
*(_QWORD *)&v46 = v132;
*((_QWORD *)&v46 + 1) = LODWORD(v42);
v132 = v46;
v47 = *(_QWORD **)(v2 + 32);
v48 = *v47;
v49 = *(_QWORD *)(v2 + 16);
v50 = (void **)(*v47 + 192LL);
if ( ((unsigned __int64)v50 >= v49 || v50 == &off_7103C42FD0 || *(_BYTE *)(v48 + 200) & 0xF)
&& (v48 + 208 >= v49 || (void **)(v48 + 208) == &off_7103C42FD0 || *(_BYTE *)(v48 + 216) & 0xF)
&& (v48 + 224 >= v49 || (void **)(v48 + 224) == &off_7103C42FD0 || *(_BYTE *)(v48 + 232) & 0xF) )
{
v147 = 2;
v51 = *v47 + 208LL;
if ( v51 >= v49 )
v52 = &off_7103C42FD0;
else
v52 = (void **)v51;
v53 = *((_DWORD *)v52 + 2);
if ( v53 == 3 )
{
v54 = *(float *)v52;
}
else if ( v53 == 19 )
{
v54 = (float)(signed __int64)*v52;
}
else if ( ((_DWORD)v52[1] & 0xF) != 4
|| ((v55 = sub_71029C0CE0((unsigned __int8 *)*v52 + 24, (_BOOL8 *)&v170),
v56 = *v52,
*((_BYTE *)*v52 + 8) != 4) ? (v57 = v56[2]) : (v57 = *((unsigned __int8 *)v56 + 11)),
v55 != v57 + 1) )
{
v54 = 0.0;
}
else
{
v54 = (float)v170;
if ( (_DWORD)v171 != 19 )
v54 = *(float *)&v170;
}
v58 = v133;
*(float *)&v58 = v54;
v133 = v58;
if ( (unsigned __int64)(**(_QWORD **)(v2 + 32) + 224LL) >= *(_QWORD *)(v2 + 16) )
v59 = &off_7103C42FD0;
else
v59 = (void **)(**(_QWORD **)(v2 + 32) + 224LL);
v60 = *((_DWORD *)v59 + 2);
if ( v60 == 3 )
{
v61 = *(float *)v59;
}
else if ( v60 == 19 )
{
v61 = (float)(signed __int64)*v59;
}
else if ( ((_DWORD)v59[1] & 0xF) != 4
|| ((v62 = sub_71029C0CE0((unsigned __int8 *)*v59 + 24, (_BOOL8 *)&v170),
v63 = *v59,
*((_BYTE *)*v59 + 8) != 4) ? (v64 = v63[2]) : (v64 = *((unsigned __int8 *)v63 + 11)),
v62 != v64 + 1) )
{
v61 = 0.0;
}
else
{
v61 = (float)v170;
if ( (_DWORD)v171 != 19 )
v61 = *(float *)&v170;
}
v65 = v133;
*((float *)&v65 + 1) = v61;
v133 = v65;
if ( (unsigned __int64)(**(_QWORD **)(v2 + 32) + 240LL) >= *(_QWORD *)(v2 + 16) )
v66 = &off_7103C42FD0;
else
v66 = (void **)(**(_QWORD **)(v2 + 32) + 240LL);
v67 = *((_DWORD *)v66 + 2);
if ( v67 == 3 )
{
v68 = *(float *)v66;
}
else if ( v67 == 19 )
{
v68 = (float)(signed __int64)*v66;
}
else if ( ((_DWORD)v66[1] & 0xF) != 4
|| ((v69 = sub_71029C0CE0((unsigned __int8 *)*v66 + 24, (_BOOL8 *)&v170),
v70 = *v66,
*((_BYTE *)*v66 + 8) != 4) ? (v71 = v70[2]) : (v71 = *((unsigned __int8 *)v70 + 11)),
v69 != v71 + 1) )
{
v68 = 0.0;
}
else
{
v68 = (float)v170;
if ( (_DWORD)v171 != 19 )
v68 = *(float *)&v170;
}
*(_QWORD *)&v72 = v133;
*((_QWORD *)&v72 + 1) = LODWORD(v68);
v133 = v72;
v47 = *(_QWORD **)(v2 + 32);
v49 = *(_QWORD *)(v2 + 16);
}
else
{
v147 = 0;
}
v73 = *v47 + 256LL;
if ( v73 >= v49 )
v74 = &off_7103C42FD0;
else
v74 = (void **)v73;
v75 = *((_DWORD *)v74 + 2);
if ( v75 == 3 )
{
v76 = *(float *)v74;
}
else if ( v75 == 19 )
{
v76 = (float)(signed __int64)*v74;
}
else if ( ((_DWORD)v74[1] & 0xF) != 4
|| ((v77 = sub_71029C0CE0((unsigned __int8 *)*v74 + 24, (_BOOL8 *)&v170), v78 = *v74, *((_BYTE *)*v74 + 8) != 4) ? (v79 = v78[2]) : (v79 = *((unsigned __int8 *)v78 + 11)),
v77 != v79 + 1) )
{
v76 = 0.0;
}
else if ( (_DWORD)v171 == 19 )
{
v76 = (float)v170;
}
else
{
v76 = *(float *)&v170;
}
*((float *)&v137 + 1) = v76;
if ( (unsigned __int64)(**(_QWORD **)(v2 + 32) + 272LL) >= *(_QWORD *)(v2 + 16) )
v80 = &off_7103C42FD0;
else
v80 = (void **)(**(_QWORD **)(v2 + 32) + 272LL);
v81 = *((_DWORD *)v80 + 2);
if ( v81 == 3 )
{
v82 = *(float *)v80;
}
else if ( v81 == 19 )
{
v82 = (float)(signed __int64)*v80;
}
else if ( ((_DWORD)v80[1] & 0xF) != 4
|| ((v83 = sub_71029C0CE0((unsigned __int8 *)*v80 + 24, (_BOOL8 *)&v170), v84 = *v80, *((_BYTE *)*v80 + 8) != 4) ? (v85 = v84[2]) : (v85 = *((unsigned __int8 *)v84 + 11)),
v83 != v85 + 1) )
{
v82 = 0.0;
}
else if ( (_DWORD)v171 == 19 )
{
v82 = (float)v170;
}
else
{
v82 = *(float *)&v170;
}
v138 = v82;
BYTE5(v144) = *((float *)&v137 + 1) <= 0.0;
BYTE2(v143) = sub_71029ACA40(v2, 18LL, 0LL);
BYTE2(v144) = sub_71029ACA40(v2, 19LL, 0LL);
v86 = (void **)(**(_QWORD **)(v2 + 32) + 320LL);
if ( (unsigned __int64)v86 >= *(_QWORD *)(v2 + 16) )
v86 = &off_7103C42FD0;
v87 = *((_DWORD *)v86 + 2);
if ( !v87 )
goto LABEL_191;
if ( v87 == 19 )
{
if ( !*v86 || (float)(signed __int64)*v86 == 0.0 )
goto LABEL_191;
LABEL_188:
if ( v87 != 3 || *(float *)v86 != 0.0 )
goto LABEL_190;
LABEL_191:
LOBYTE(v88) = 0;
goto LABEL_192;
}
if ( v87 != 1 )
{
if ( ((_DWORD)v86[1] & 0xF) == 3 && *(float *)v86 == 0.0 )
goto LABEL_191;
goto LABEL_188;
}
v88 = *(_DWORD *)v86;
if ( v88 )
LABEL_190:
v88 = *(_DWORD *)(*(_QWORD *)(*off_710456A320[0] + 80) + 1284LL);
LABEL_192:
BYTE6(v150) = v88;
v89 = sub_71029ACA40(v2, 21LL, 0LL);
if ( v89 == 10329139231LL )
{
BYTE4(v143) = 0;
}
else
{
BYTE4(v143) = 1;
v148 = v89;
}
if ( (unsigned __int64)(**(_QWORD **)(v2 + 32) + 352LL) >= *(_QWORD *)(v2 + 16) )
v90 = &off_7103C42FD0;
else
v90 = (void **)(**(_QWORD **)(v2 + 32) + 352LL);
v91 = *((_DWORD *)v90 + 2);
v92 = 0.0;
if ( v91 == 3 )
{
v93 = *(float *)v90;
}
else if ( v91 == 19 )
{
v93 = (float)(signed __int64)*v90;
}
else if ( ((_DWORD)v90[1] & 0xF) != 4
|| ((v94 = sub_71029C0CE0((unsigned __int8 *)*v90 + 24, (_BOOL8 *)&v170), v95 = *v90, *((_BYTE *)*v90 + 8) != 4) ? (v96 = v95[2]) : (v96 = *((unsigned __int8 *)v95 + 11)),
v92 = 0.0,
v94 != v96 + 1) )
{
v93 = 0.0;
}
else if ( (_DWORD)v171 == 19 )
{
v93 = (float)v170;
}
else
{
v93 = *(float *)&v170;
}
*(float *)&v137 = v93;
if ( (unsigned __int64)(**(_QWORD **)(v2 + 32) + 368LL) >= *(_QWORD *)(v2 + 16) )
v97 = &off_7103C42FD0;
else
v97 = (void **)(**(_QWORD **)(v2 + 32) + 368LL);
v98 = *((_DWORD *)v97 + 2);
if ( v98 == 3 )
{
v92 = *(float *)v97;
}
else if ( v98 == 19 )
{
v92 = (float)(signed __int64)*v97;
}
else if ( ((_DWORD)v97[1] & 0xF) == 4 )
{
v99 = sub_71029C0CE0((unsigned __int8 *)*v97 + 24, (_BOOL8 *)&v170);
v100 = *v97;
v101 = *((_BYTE *)*v97 + 8) == 4 ? (unsigned __int64)*((unsigned __int8 *)v100 + 11) : v100[2];
v92 = 0.0;
if ( v99 == v101 + 1 )
{
v92 = *(float *)&v170;
if ( (_DWORD)v171 == 19 )
v92 = (float)v170;
}
}
LODWORD(v150) = (unsigned int)v92;
v102 = *(_QWORD **)(v2 + 32);
v103 = (void **)(*v102 + 384LL);
v104 = *(_QWORD *)(v2 + 16);
if ( (unsigned __int64)v103 >= v104 )
v103 = &off_7103C42FD0;
v105 = *((_DWORD *)v103 + 2);
switch ( v105 )
{
case 0:
goto LABEL_237;
case 19:
if ( !*v103 || (float)(signed __int64)*v103 == 0.0 )
goto LABEL_237;
break;
case 1:
v106 = *(_DWORD *)v103 == 0;
goto LABEL_240;
default:
if ( ((_DWORD)v103[1] & 0xF) == 3 && *(float *)v103 == 0.0 )
{
LABEL_237:
v107 = 0;
goto LABEL_245;
}
break;
}
if ( v105 != 3 )
{
v107 = 1;
goto LABEL_245;
}
v106 = *(float *)v103 == 0.0;
LABEL_240:
v107 = !v106;
LABEL_245:
BYTE5(v143) = v107;
v108 = (void **)(*v102 + 400LL);
if ( (unsigned __int64)v108 >= v104 )
v108 = &off_7103C42FD0;
v109 = *((_DWORD *)v108 + 2);
switch ( v109 )
{
case 0:
goto LABEL_256;
case 19:
if ( !*v108 || (float)(signed __int64)*v108 == 0.0 )
goto LABEL_256;
break;
case 1:
v110 = *(_DWORD *)v108 == 0;
goto LABEL_259;
default:
if ( ((_DWORD)v108[1] & 0xF) == 3 && *(float *)v108 == 0.0 )
{
LABEL_256:
v111 = 0;
goto LABEL_264;
}
break;
}
if ( v109 != 3 )
{
v111 = 1;
goto LABEL_264;
}
v110 = *(float *)v108 == 0.0;
LABEL_259:
v111 = !v110;
LABEL_264:
BYTE6(v143) = v111;
v112 = (void **)(*v102 + 416LL);
if ( (unsigned __int64)v112 >= v104 )
v112 = &off_7103C42FD0;
v113 = *((_DWORD *)v112 + 2);
if ( v113 )
{
if ( v113 == 19 )
{
if ( !*v112 || (float)(signed __int64)*v112 == 0.0 )
goto LABEL_275;
}
else
{
if ( v113 == 1 )
{
v114 = *(_DWORD *)v112 == 0;
LABEL_278:
LOBYTE(v113) = !v114;
goto LABEL_283;
}
if ( ((_DWORD)v112[1] & 0xF) == 3 && *(float *)v112 == 0.0 )
{
LABEL_275:
LOBYTE(v113) = 0;
goto LABEL_283;
}
}
if ( v113 != 3 )
{
LOBYTE(v113) = 1;
goto LABEL_283;
}
v114 = *(float *)v112 == 0.0;
goto LABEL_278;
}
LABEL_283:
v145 = v113;
v115 = (void **)(*v102 + 432LL);
if ( (unsigned __int64)v115 >= v104 )
v115 = &off_7103C42FD0;
v116 = *((_DWORD *)v115 + 2);
switch ( v116 )
{
case 0:
goto LABEL_294;
case 19:
if ( !*v115 || (float)(signed __int64)*v115 == 0.0 )
goto LABEL_294;
break;
case 1:
v117 = *(_DWORD *)v115 == 0;
goto LABEL_297;
default:
if ( ((_DWORD)v115[1] & 0xF) == 3 && *(float *)v115 == 0.0 )
{
LABEL_294:
v118 = 0;
goto LABEL_302;
}
break;
}
if ( v116 != 3 )
{
v118 = 1;
goto LABEL_302;
}
v117 = *(float *)v115 == 0.0;
LABEL_297:
v118 = !v117;
LABEL_302:
BYTE6(v144) = v118;
v119 = (void **)(*v102 + 448LL);
if ( (unsigned __int64)v119 >= v104 )
v119 = &off_7103C42FD0;
v120 = *((_DWORD *)v119 + 2);
v121 = v4 - (v3 + 16);
switch ( v120 )
{
case 0:
goto LABEL_313;
case 19:
if ( !*v119 || (float)(signed __int64)*v119 == 0.0 )
goto LABEL_313;
break;
case 1:
v122 = *(_DWORD *)v119 == 0;
goto LABEL_316;
default:
if ( ((_DWORD)v119[1] & 0xF) == 3 && *(float *)v119 == 0.0 )
{
LABEL_313:
v123 = 0;
goto LABEL_321;
}
break;
}
if ( v120 != 3 )
{
v123 = 1;
goto LABEL_321;
}
v122 = *(float *)v119 == 0.0;
LABEL_316:
v123 = !v122;
LABEL_321:
HIBYTE(v143) = v123;
v124 = sub_71029ACA40(v2, 29LL, 0LL);
if ( v124 & 0x80000000 )
HIBYTE(v146) = 1;
BYTE2(v140) = v124;
LOWORD(v140) = sub_71029ACA40(v2, 30LL, 0LL);
v141 = sub_71029ACA40(v2, 31LL, 0LL);
v125 = (void **)(**(_QWORD **)(v2 + 32) + 512LL);
if ( (unsigned __int64)v125 >= *(_QWORD *)(v2 + 16) )
v125 = &off_7103C42FD0;
v126 = *((_DWORD *)v125 + 2);
switch ( v126 )
{
case 0:
goto LABEL_334;
case 19:
if ( !*v125 || (float)(signed __int64)*v125 == 0.0 )
goto LABEL_334;
break;
case 1:
v127 = *(_DWORD *)v125 == 0;
goto LABEL_337;
default:
if ( ((_DWORD)v125[1] & 0xF) == 3 && *(float *)v125 == 0.0 )
{
LABEL_334:
v128 = 0;
goto LABEL_342;
}
break;
}
if ( v126 != 3 )
{
v128 = 1;
goto LABEL_342;
}
v127 = *(float *)v125 == 0.0;
LABEL_337:
v128 = !v127;
LABEL_342:
BYTE4(v144) = v128;
v142 = sub_71029ACA40(v2, 33LL, 0LL);
LOBYTE(v143) = sub_71029ACA40(v2, 34LL, 0LL);
BYTE1(v143) = sub_71029ACA40(v2, 35LL, 0LL);
LOBYTE(v146) = sub_71029ACA40(v2, 36LL, 0LL);
if ( (v121 >> 4) & 0x80000000 )
{
v130 = *(_QWORD *)(v2 + 16);
for ( i = **(_QWORD **)(v2 + 32) + ((signed __int64)((v121 << 28) ^ 0xFFFFFFFF00000000LL) >> 28) + 16;
v130 < i;
v130 = *(_QWORD *)(v2 + 16) )
{
*(_QWORD *)(v2 + 16) = v130 + 16;
*(_DWORD *)(v130 + 8) = 0;
}
}
else
{
i = *(_QWORD *)(v2 + 16)
+ ((signed __int64)((unsigned __int64)(unsigned int)-(signed __int64)(v121 >> 4) << 32) >> 28);
}
*(_QWORD *)(v2 + 16) = i;
if ( (v139 & 0xFFFFFFFFFFLL) == 0x57AC2C32ELL )
{
sub_710032C9E0(&v170, *(unsigned int *)(v5 + 8), 1LL);
if ( !(*(_DWORD *)(v171 + 8) >> 28) && *(_DWORD *)(v171 + 12) == 6 )
v139 = 0x4DBA80BB2LL;
}
return (*(__int64 (__cdecl **)(_QWORD, _QWORD))(**(_QWORD **)(v5 + 160) + 104LL))(*(_QWORD *)(v5 + 160), v7);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment