|
//----- (001986D0) -------------------------------------------------------- |
|
//bookmark bytecode interpreter |
|
int __fastcall sub_1986D0(int **arg1, int arg2, int arg3, int arg4) |
|
{ |
|
int v4; // r6@0 |
|
int v5; // r2@1 |
|
__int64 v6; // r0@2 |
|
int v7; // r5@8 |
|
int v8; // r6@8 |
|
int v9; // r2@8 |
|
int v10; // r3@8 |
|
signed int v11; // r4@8 |
|
int v12; // r3@9 |
|
int v13; // r5@17 |
|
int v14; // r7@17 |
|
int v15; // r2@17 |
|
int v16; // r3@17 |
|
int v17; // r3@18 |
|
int v18; // r4@24 |
|
int v19; // r5@24 |
|
signed int v20; // r0@24 |
|
int v21; // r2@24 |
|
int v22; // r3@24 |
|
signed int v23; // r5@27 |
|
int v24; // r5@32 |
|
int v25; // r7@32 |
|
signed int v26; // r0@32 |
|
int v27; // r3@32 |
|
_WORD *v28; // r0@34 |
|
int v30; // r0@38 |
|
int v31; // r4@47 |
|
int v32; // r5@47 |
|
int v33; // r3@50 |
|
_WORD *v34; // r0@51 |
|
int v35; // r5@59 |
|
int v36; // r4@59 |
|
int v37; // r3@59 |
|
int v38; // r3@60 |
|
double *v39; // r1@62 |
|
int v40; // r5@67 |
|
int v41; // r4@67 |
|
int v42; // r3@67 |
|
double *v43; // r1@70 |
|
int v44; // r5@75 |
|
int v45; // r4@75 |
|
signed int v46; // r0@75 |
|
int v47; // r3@75 |
|
int v48; // r3@76 |
|
int v49; // r5@83 |
|
int v50; // r4@83 |
|
signed int v51; // r0@83 |
|
int v52; // r3@83 |
|
int v53; // r3@84 |
|
int v54; // r4@92 |
|
int v55; // r5@92 |
|
int v56; // r3@93 |
|
int v60; // r4@101 |
|
int v61; // r5@101 |
|
int v62; // r3@102 |
|
int v63; // r3@104 |
|
int v64; // r1@106 |
|
int v65; // r4@112 |
|
int v66; // r5@112 |
|
int v67; // r3@112 |
|
int v68; // r5@127 |
|
int v69; // r4@127 |
|
int v70; // r4@131 |
|
int v71; // r5@131 |
|
int v72; // r4@138 |
|
int v73; // r5@138 |
|
int v74; // r3@139 |
|
int v75; // r4@148 |
|
int v76; // r5@148 |
|
int v77; // r5@153 |
|
int v78; // r4@153 |
|
int v79; // r3@153 |
|
int v80; // r3@160 |
|
int v83; // r4@167 |
|
int v84; // r5@167 |
|
int v85; // r3@168 |
|
int v86; // r3@170 |
|
int v87; // r4@177 |
|
int v88; // r5@177 |
|
int v89; // r3@178 |
|
int v90; // r3@180 |
|
int v91; // r5@190 |
|
int v92; // r4@190 |
|
int v93; // r3@191 |
|
int v94; // r3@193 |
|
int v95; // r4@200 |
|
int v96; // r5@200 |
|
int v97; // r4@205 |
|
int v98; // r5@205 |
|
int v99; // r4@210 |
|
int v100; // r5@210 |
|
int v101; // r3@213 |
|
int v102; // r4@219 |
|
int v103; // r5@219 |
|
int v104; // r3@220 |
|
int v105; // r4@231 |
|
int v106; // r5@231 |
|
int v107; // r3@232 |
|
int v108; // r4@243 |
|
int v109; // r5@243 |
|
int v110; // r5@248 |
|
int v111; // r4@248 |
|
int v112; // r3@248 |
|
int v115; // r4@256 |
|
int v116; // r5@256 |
|
int v117; // r4@261 |
|
int v118; // r5@261 |
|
int v119; // r4@266 |
|
int v120; // r5@266 |
|
int v122; // [sp+4h] [bp-6Ch]@25 |
|
double v123; // [sp+8h] [bp-68h]@9 |
|
double v124; // [sp+10h] [bp-60h]@106 |
|
double v125; // [sp+18h] [bp-58h]@8 |
|
double v126; // [sp+20h] [bp-50h]@18 |
|
int v127; // [sp+28h] [bp-48h]@64 |
|
unsigned int *v128[4]; // [sp+30h] [bp-40h]@77 |
|
char v129; // [sp+40h] [bp-30h]@160 |
|
|
|
v5 = (arg2 & 0x7F) - 54; |
|
switch ( arg2 & 0x7F ) |
|
{ |
|
case 0x36: |
|
LODWORD(v6) = sub_1951C0(arg1, arg2); |
|
return v6; |
|
case 0x37: |
|
LODWORD(v6) = sub_194A70(arg1, arg2); |
|
return v6; |
|
case 0x38: |
|
LODWORD(v6) = sub_1948C8(arg1, arg2); |
|
return v6; |
|
case 0x39: |
|
LODWORD(v6) = sub_19A33C((int)arg1, arg2, v5, arg4); |
|
return v6; |
|
case 0x3A: |
|
LODWORD(v6) = sub_199FAC((int)arg1, arg2, v5, arg4); |
|
return v6; |
|
case 0x3B: |
|
LODWORD(v6) = sub_19BCF4((int)arg1); |
|
return v6; |
|
case 0x3C: |
|
v7 = (int)arg1; |
|
v8 = arg2; |
|
LOBYTE(v125) = 0; |
|
v11 = sub_1BB2C0(arg1, (unsigned int)(arg2 << 19) >> 29, (int)&v125); |
|
if ( v11 |
|
|| (v11 = sub_147BE4((_BYTE **)HIDWORD(v125), (int)&v123, v9, v10)) != 0 |
|
|| (v11 = sub_1BACEC(v7, (unsigned int)(v8 << 17) >> 30, (int)&v123, v12), |
|
(*(void (__fastcall **)(double *))(LODWORD(v123) + 12))(&v123), |
|
v11) ) |
|
{ |
|
*(_DWORD *)(v7 + 24) = dword_2DBCE4; |
|
if ( LOBYTE(v125) ) |
|
(*(void (**)(void))(*(_DWORD *)HIDWORD(v125) + 12))(); |
|
goto LABEL_88; |
|
} |
|
if ( LOBYTE(v125) ) |
|
(*(void (**)(void))(*(_DWORD *)HIDWORD(v125) + 12))(); |
|
LODWORD(v6) = 0; |
|
return v6; |
|
case 0x3D: |
|
v13 = (int)arg1; |
|
v14 = arg2; |
|
LOBYTE(v123) = 0; |
|
v11 = sub_1BB2C0(arg1, (unsigned int)(arg2 << 19) >> 29, (int)&v123); |
|
if ( v11 |
|
|| (v11 = sub_147EB0((_BYTE **)HIDWORD(v123), (int)&v126, v15, v16)) != 0 |
|
|| (v11 = sub_1BACEC(v13, (unsigned int)(v14 << 17) >> 30, (int)&v126, v17), |
|
(*(void (__fastcall **)(double *))(LODWORD(v126) + 12))(&v126), |
|
v11) ) |
|
{ |
|
*(_DWORD *)(v13 + 24) = dword_2DBCE8; |
|
if ( !LOBYTE(v123) ) |
|
goto LABEL_88; |
|
goto LABEL_44; |
|
} |
|
if ( !LOBYTE(v123) ) |
|
goto LABEL_271; |
|
goto LABEL_23; |
|
case 0x3E: |
|
v18 = (int)arg1; |
|
v19 = arg2; |
|
LOBYTE(v123) = 0; |
|
v20 = sub_1BB2C0(arg1, (unsigned int)(arg2 << 19) >> 29, (int)&v123); |
|
if ( v20 |
|
|| (v20 = sub_147B6C(SHIDWORD(v123), &v122, v21, v22)) != 0 |
|
|| (v20 = sub_1BB104(v18, (unsigned int)(v19 << 17) >> 30, v122)) != 0 ) |
|
{ |
|
v23 = v20; |
|
*(_DWORD *)(v18 + 24) = dword_2DBCEC; |
|
if ( LOBYTE(v123) ) |
|
(*(void (**)(void))(*(_DWORD *)HIDWORD(v123) + 12))(); |
|
LODWORD(v6) = v23; |
|
return v6; |
|
} |
|
if ( LOBYTE(v123) ) |
|
goto LABEL_23; |
|
goto LABEL_271; |
|
case 0x3F: |
|
v24 = (int)arg1; |
|
v25 = arg2; |
|
v11 = 0; |
|
LOBYTE(v123) = 0; |
|
v26 = sub_1BB2C0(arg1, (unsigned int)(arg2 << 19) >> 29, (int)&v123); |
|
if ( v26 ) |
|
goto LABEL_43; |
|
if ( *(_BYTE *)(*(_DWORD *)HIDWORD(v123) + 2) ) |
|
{ |
|
v28 = (_WORD *)(*(int (**)(void))(*(_DWORD *)HIDWORD(v123) + 80))(); |
|
_ZF = v28 == 0; |
|
if ( v28 ) |
|
_ZF = HIDWORD(v126) == 0; |
|
if ( !_ZF ) |
|
{ |
|
v4 = *v28; |
|
goto LABEL_39; |
|
} |
|
v30 = 4; |
|
} |
|
else |
|
{ |
|
v30 = 8; |
|
} |
|
v26 = sub_1E8FF4(v30, 0, 0, v27); |
|
if ( v26 ) |
|
goto LABEL_43; |
|
LABEL_39: |
|
v26 = sub_1BB104(v24, (unsigned int)(v25 << 17) >> 30, v4); |
|
if ( v26 ) |
|
{ |
|
LABEL_43: |
|
v11 = v26; |
|
*(_DWORD *)(v24 + 24) = dword_2DBCF0; |
|
if ( !LOBYTE(v123) ) |
|
goto LABEL_88; |
|
goto LABEL_44; |
|
} |
|
if ( LOBYTE(v123) ) |
|
goto LABEL_44; |
|
LABEL_88: |
|
LODWORD(v6) = v11; |
|
return v6; |
|
case 0x40: |
|
v31 = (int)arg1; |
|
v32 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v123, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_57; |
|
LODWORD(v6) = (*(int (__fastcall **)(double *, double *))(LODWORD(v123) + 64))(&v123, &v126); |
|
if ( (_DWORD)v6 ) |
|
{ |
|
dword_2DC668 = 0; |
|
} |
|
else |
|
{ |
|
if ( sub_1D6888((unsigned int **)&v125, 1, 0) ) |
|
{ |
|
v34 = (_WORD *)LODWORD(v125); |
|
if ( LODWORD(v125) ) |
|
v34 = (_WORD *)(*(_DWORD *)LODWORD(v125) + 24); |
|
*v34 = LOWORD(v126); |
|
goto LABEL_56; |
|
} |
|
LODWORD(v6) = sub_1E8FF4(11, -1, 0, v33); |
|
} |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_57; |
|
LABEL_56: |
|
LODWORD(v6) = sub_1BAC3C(v31, (unsigned int)(v32 << 17) >> 30, (int *)&v125); |
|
if ( !(_DWORD)v6 ) |
|
return v6; |
|
LABEL_57: |
|
*(_DWORD *)(v31 + 24) = dword_2DBCF4; |
|
return v6; |
|
case 0x41: |
|
LODWORD(v6) = sub_19B494(arg1, arg2); |
|
return v6; |
|
case 0x42: |
|
v35 = (int)arg1; |
|
v36 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v125, arg4); |
|
if ( (_DWORD)v6 |
|
|| (LODWORD(v6) = sub_1BAA0C((int **)v35, (unsigned int)(v36 << 22) >> 29, &v123, v37), (_DWORD)v6) |
|
|| (!*(_BYTE *)(LODWORD(v123) + 4) ? (v39 = &v123) : (v39 = 0), |
|
(LODWORD(v6) = sub_1D2FC0((int)&v125, (int)v39, (unsigned int **)&v127, v38), (_DWORD)v6) |
|
|| (LODWORD(v6) = sub_1BAC3C(v35, (unsigned int)(v36 << 17) >> 30, &v127), (_DWORD)v6)) ) |
|
{ |
|
*(_DWORD *)(v35 + 24) = dword_2DBCFC; |
|
} |
|
return v6; |
|
case 0x43: |
|
v40 = (int)arg1; |
|
v41 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v125, arg4); |
|
if ( (_DWORD)v6 |
|
|| (LODWORD(v6) = sub_1BAA0C((int **)v40, (unsigned int)(v41 << 22) >> 29, &v123, v42), (_DWORD)v6) |
|
|| (!*(_BYTE *)(LODWORD(v123) + 4) ? (v43 = &v123) : (v43 = 0), |
|
(LODWORD(v6) = sub_1D36E0((int)&v125, (int)v43, (unsigned int **)&v127), (_DWORD)v6) |
|
|| (LODWORD(v |
|
6) = sub_1BAC3C(v40, (unsigned int)(v41 << 17) >> 30, &v127), (_DWORD)v6)) ) |
|
{ |
|
*(_DWORD *)(v40 + 24) = dword_2DBD00; |
|
} |
|
return v6; |
|
case 0x44: |
|
v44 = (int)arg1; |
|
v45 = arg2; |
|
LOBYTE(v123) = 0; |
|
v46 = sub_1BB2C0(arg1, (unsigned int)(arg2 << 19) >> 29, (int)&v123); |
|
if ( v46 |
|
|| (v46 = sub_1BAA0C((int **)v44, (unsigned int)(v45 << 22) >> 29, &v126, v47)) != 0 |
|
|| (v46 = sub_147CB8(SHIDWORD(v123), (int)&v126, v128, v48)) != 0 |
|
|| (v46 = sub_1BAC3C(v44, (unsigned int)(v45 << 17) >> 30, (int *)v128)) != 0 ) |
|
{ |
|
v11 = v46; |
|
*(_DWORD *)(v44 + 24) = dword_2DBD04; |
|
if ( !LOBYTE(v123) ) |
|
goto LABEL_88; |
|
goto LABEL_44; |
|
} |
|
if ( LOBYTE(v123) ) |
|
goto LABEL_23; |
|
goto LABEL_271; |
|
case 0x45: |
|
v49 = (int)arg1; |
|
v50 = arg2; |
|
LOBYTE(v123) = 0; |
|
v51 = sub_1BB2C0(arg1, (unsigned int)(arg2 << 19) >> 29, (int)&v123); |
|
if ( !v51 ) |
|
{ |
|
v51 = sub_1BAA0C((int **)v49, (unsigned int)(v50 << 22) >> 29, &v126, v52); |
|
if ( !v51 ) |
|
{ |
|
v51 = sub_147DB4(SHIDWORD(v123), (int)&v126, v128, v53); |
|
if ( !v51 ) |
|
{ |
|
v51 = sub_1BAC3C(v49, (unsigned int)(v50 << 17) >> 30, (int *)v128); |
|
if ( !v51 ) |
|
{ |
|
if ( LOBYTE(v123) ) |
|
LABEL_23: |
|
(*(void (**)(void))(*(_DWORD *)HIDWORD(v123) + 12))(); |
|
goto LABEL_271; |
|
} |
|
} |
|
} |
|
} |
|
v11 = v51; |
|
*(_DWORD *)(v49 + 24) = dword_2DBD08; |
|
if ( LOBYTE(v123) ) |
|
LABEL_44: |
|
(*(void (**)(void))(*(_DWORD *)HIDWORD(v123) + 12))(); |
|
goto LABEL_88; |
|
case 0x46: |
|
LODWORD(v6) = sub_19B00C(arg1, arg2, v5, arg4); |
|
return v6; |
|
case 0x47: //RNDF? |
|
v54 = (int)arg1; |
|
v55 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v123, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_100; |
|
LODWORD(v6) = (*(int (__fastcall **)(double *, double *))(LODWORD(v123) + 64))(&v123, &v125); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_96; |
|
if ( LODWORD(v125) < 8 ) |
|
{ |
|
sub_1D2D08(SLODWORD(v125)); |
|
__asm { VMOV.F64 D8, D0 } |
|
} |
|
else |
|
{ |
|
LODWORD(v6) = sub_1E8FF4(10, 0, 0, v56); |
|
LABEL_96: |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_100; |
|
} |
|
__asm { VMOV.F64 D0, D8 } |
|
LODWORD(v6) = sub_1BA8C0(v54, (unsigned int)(v55 << 17) >> 30); |
|
if ( !(_DWORD)v6 ) |
|
return v6; |
|
LABEL_100: |
|
*(_DWORD *)(v54 + 24) = dword_2DBD10; |
|
return v6; |
|
case 0x48: //ABS? |
|
v60 = (int)arg1; |
|
v61 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v123, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_111; |
|
sub_1BADD4(&v126); |
|
if ( *(_BYTE *)LODWORD(v123) ) |
|
{ |
|
if ( *(_BYTE *)LODWORD(v123) == 1 ) |
|
{ |
|
__asm |
|
{ |
|
VLDR D0, [SP,#0x70+var_60] |
|
VABS.F64 D0, D0 |
|
} |
|
sub_1D3D70(&v126); |
|
} |
|
else |
|
{ |
|
LODWORD(v6) = sub_1E8FF4(8, 0, 0, v62); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_111; |
|
} |
|
} |
|
else |
|
{ |
|
v64 = LODWORD(v124); |
|
if ( SLODWORD(v124) < 0 ) |
|
v64 = -LODWORD(v124); |
|
sub_1D85B4((int)&v126, v64); |
|
} |
|
LODWORD(v6) = sub_1BACEC(v60, (unsigned int)(v61 << 17) >> 30, (int)&v126, v63); |
|
if ( !(_DWORD)v6 ) |
|
return v6; |
|
LABEL_111: |
|
*(_DWORD *)(v60 + 24) = dword_2DBD14; |
|
return v6; |
|
case 0x49: // SGN |
|
v65 = (int)arg1; |
|
v66 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v123, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_123; |
|
if ( !*(_BYTE *)LODWORD(v123) ) |
|
{ |
|
if ( LODWORD(v124) ) |
|
{ |
|
if ( SLODWORD(v124) < 0 ) |
|
{ |
|
LABEL_119: |
|
v4 = -1; |
|
goto LABEL_122; |
|
} |
|
LABEL_121: |
|
v4 = 1; |
|
goto LABEL_122; |
|
} |
|
LABEL_120: |
|
v4 = 0; |
|
goto LABEL_122; |
|
} |
|
if ( *(_BYTE *)LODWORD(v123) == 1 ) |
|
{ |
|
__asm |
|
{ |
|
VLDR D1, =0.0 |
|
VLDR D0, [SP,#0x70+var_60] |
|
VCMP.F64 D0, D1 |
|
VMRS APSR_nzcv, FPSCR |
|
} |
|
if ( !_ZF ) |
|
{ |
|
__asm |
|
{ |
|
VCMPE.F64 D1, D0 |
|
VMRS APSR_nzcv, FPSCR |
|
} |
|
if ( !((unsigned __int8)(_NF ^ _VF) | _ZF) ) |
|
goto LABEL_119; |
|
goto LABEL_121; |
|
} |
|
goto LABEL_120; |
|
} |
|
LODWORD(v6) = sub_1E8FF4(8, 0, 0, v67); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_123; |
|
LABEL_122: |
|
LODWORD(v6) = sub_1BB104(v65, (unsigned int)(v66 << 17) >> 30, v4); |
|
if ( !(_DWORD)v6 ) |
|
return v6; |
|
LABEL_123: |
|
*(_DWORD *)(v65 + 24) = dword_2DBD18; |
|
return v6; |
|
case 0x4A: |
|
v68 = (int)arg1; |
|
v69 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v123, arg4); |
|
if ( !(_DWORD)v6 ) |
|
{ |
|
LODWORD(v6) = (*(int (__fastcall **)(double *, double *))(LODWORD(v123) + 68))(&v123, &v125); |
|
if ( !(_DWORD)v6 ) |
|
{ |
|
__asm |
|
{ |
|
VLDR D0, [SP,#0x70+var_58] |
|
VLDR D1, =3.14159265 |
|
VLDR D2, =0.00555555556 |
|
VMUL.F64 D0, D0, D1 |
|
VMUL.F64 D0, D0, D2 |
|
} |
|
LODWORD(v6) = sub_1BA8C0(v68, (unsigned int)(v69 << 17) >> 30); |
|
if ( !(_DWORD)v6 ) |
|
goto LABEL_271; |
|
} |
|
} |
|
*(_DWORD *)(v68 + 24) = dword_2DBD1C; |
|
return v6; |
|
case 0x4B: |
|
v70 = (int)arg1; |
|
v71 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v124, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_135; |
|
LODWORD(v6) = (*(int (__fastcall **)(double *, double *))(LODWORD(v124) + 68))(&v124, &v123); |
|
if ( (_DWORD)v6 ) |
|
{ |
|
dword_2DC668 = 0; |
|
} |
|
else |
|
{ |
|
__asm |
|
{ |
|
VLDR D2, =180.0 |
|
VLDR D0, [SP,#0x70+var_68] |
|
VLDR D1, =0.318309886 |
|
VMUL.F64 D0, D0, D2 |
|
VMUL.F64 D0, D0, D1 |
|
} |
|
LODWORD(v6) = sub_1BA8C0(v70, (unsigned int)(v71 << 17) >> 30); |
|
if ( !(_DWORD)v6 ) |
|
goto LABEL_271; |
|
} |
|
LABEL_135: |
|
*(_DWORD *)(v70 + 24) = dword_2DBD20; |
|
return v6; |
|
case 0x4C: |
|
LODWORD(v6) = sub_19ABC0(arg1, arg2, v5, arg4); |
|
return v6; |
|
case 0x4D: |
|
LODWORD(v6) = sub_19AA74(arg1, arg2, v5, arg4); |
|
return v6; |
|
case 0x4E: |
|
v72 = (int)arg1; |
|
v73 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v123, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_146; |
|
LODWORD(v6) = (*(int (__fastcall **)(double *, double *))(LODWORD(v123) + 68))(&v123, &v125); |
|
if ( (_DWORD)v6 ) |
|
{ |
|
dword_2DC668 = 0; |
|
} |
|
else |
|
{ |
|
__asm |
|
{ |
|
VLDR D0, [SP,#0x70+var_58] |
|
VLDR D1, =0.0 |
|
VCMPE.F64 D0, D1 |
|
VMRS APSR_nzcv, FPSCR |
|
} |
|
if ( _CF ) |
|
{ |
|
__asm { VSQRTCS.F64 D8, D0 } |
|
goto LABEL_145; |
|
} |
|
LODWORD(v6) = sub_1E8FF4(10, 0, 0, v74); |
|
} |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_146; |
|
LABEL_145: |
|
__asm { VMOV.F64 D0, D8 } |
|
LODWORD(v6) = sub_1BA8C0(v72, (unsigned int)(v73 << 17) >> 30); |
|
if ( !(_DWORD)v6 ) |
|
return v6; |
|
LABEL_146: |
|
*(_DWORD *)(v72 + 24) = dword_2DBD2C; |
|
return v6; |
|
case 0x4F: |
|
LODWORD(v6) = sub_19A8B0(arg1, arg2, v5, arg4); |
|
return v6; |
|
case 0x50: |
|
v75 = (int)arg1; |
|
v76 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v123, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_152; |
|
LODWORD(v6) = (*(int (__fastcall **)(_DWORD, _DWORD))(LODWORD(v123) + 68))(&v123, &v125); |
|
if ( (_DWORD)v6 ) |
|
{ |
|
dword_2DC668 = 0; |
|
} |
|
else |
|
{ |
|
__asm { VLDR D0, [SP,#0x70+var_58] } |
|
sub_1D39A8(); |
|
LODWORD(v6) = sub_1BA8C0(v75, (unsigned int)(v76 << 17) >> 30); |
|
if ( !(_DWORD)v6 ) |
|
goto LABEL_271; |
|
} |
|
LABEL_152: |
|
*(_DWORD *)(v75 + 24) = dword_2DBD34; |
|
return v6; |
|
case 0x51: |
|
v77 = (int)arg1; |
|
v78 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v125, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_166; |
|
LODWORD(v6) = sub_1BAA0C((int **)v77, (unsigned int)(v78 << 22) >> 29, &v127, v79); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_166; |
|
LODWORD(v6) = (*(int (__fastcall **)(double *, double *))(LODWORD(v125) + 68))(&v125, &v123); |
|
if ( (_DWORD)v6 ) |
|
{ |
|
dword_2DC668 = 0; |
|
} |
|
else |
|
{ |
|
LODWORD(v6) = (*(int (__fastcall **)(int *, double *))(v127 + 68))(&v127, &v124); |
|
if ( (_DWORD)v6 ) |
|
{ |
|
dword_2DC668 = 1; |
|
} |
|
else |
|
{ |
|
__asm |
|
{ |
|
VLDR D8, =0.0 |
|
VLDR D0, [SP,#0x70+var_68] |
|
VCMPE.F64 D0, D8 |
|
VMRS APSR_nzcv, FPSCR |
|
} |
|
if ( _CF ) |
|
goto LABEL_276; |
|
__asm { VLDR D0, [SP,#0x70+var_60] } |
|
sub_1D32D8((int)&v129); |
|
__asm |
|
{ |
|
VCMP.F64 D0, D8 |
|
VMRS APSR_nzcv, FPSCR |
|
} |
|
if ( _ZF ) |
|
{ |
|
LABEL_276: |
|
_R0 = &v123; |
|
__asm { VLDMIA R0, {D0-D1} } |
|
sub_275950(); |
|
__asm { VMOV.F64 D9, D0 } |
|
goto LABEL_165; |
|
} |
|
LODWORD(v6) = sub_1E8FF4(4, -1, 0, v80); |
|
} |
|
} |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_166; |
|
LABEL_165: |
|
__asm { VMOV.F64 D0, D9 } |
|
LODWORD(v6) = sub_1BA8C0(v77, (unsigned int)(v78 << 17) >> 30); |
|
if ( !(_DWORD)v6 ) |
|
return v6; |
|
LABEL_166: |
|
*(_DWORD *)(v77 + 24) = dword_2DBD38; |
|
return v6; |
|
case 0x52: |
|
v83 = (int)arg1; |
|
v84 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v125, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_277; |
|
sub_1BADD4(&v123); |
|
if ( *(_BYTE *)LODWORD(v125) ) |
|
{ |
|
if ( *(_BYTE *)LODWORD(v125) == 1 ) |
|
{ |
|
__asm { VLDR D0, [SP,#0x70+var_50] } |
|
sub_1D6740(); |
|
LODWORD(v6) = (*(int (__fastcall **)(double *))(LODWORD(v123) + 24))(&v123); |
|
} |
|
else |
|
{ |
|
LODWORD(v6) = sub_1E8FF4(8, 0, 0, v85); |
|
} |
|
} |
|
else |
|
{ |
|
LODWORD(v6) = (*(int (__fastcall **)(double *, _DWORD))(LODWORD(v123) + 20))(&v123, LODWORD(v126)); |
|
} |
|
if ( (_DWORD)v6 || (LODWORD(v6) = sub_1BACEC(v83, (unsigned int)(v84 << 17) >> 30, (int)&v123, v86), (_DWORD)v6) ) |
|
LABEL_277: |
|
*(_DWORD *)(v83 + 24) = dword_2DBD3C; |
|
return v6; |
|
case 0x53: |
|
v87 = (int)arg1; |
|
v88 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v127, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_278; |
|
sub_1BADD4(&v124); |
|
if ( *(_BYTE *)v127 ) |
|
{ |
|
if ( *(_BYTE *)v127 == 1 ) |
|
{ |
|
__asm |
|
{ |
|
VLDR D1, =0.0 |
|
VLDR D0, [SP,#0x70+var_40] |
|
VCMPE.F64 D0, D1 |
|
VMRS APSR_nzcv, FPSCR |
|
VLDR D1, =0.5 |
|
} |
|
if ( _CF ) |
|
{ |
|
__asm { VADD.F64 D0, D0, D1 } |
|
sub_1D6950(); |
|
} |
|
else |
|
{ |
|
__asm { VSUB.F64 D0, D0, D1 } |
|
sub_1D6740(); |
|
} |
|
LODWORD(v6) = (*(int (__fastcall **)(double *))(LODWORD(v124) + 24))(&v124); |
|
} |
|
else |
|
{ |
|
LODWORD(v6) = sub_1E8FF4(8, 0, 0, v89); |
|
} |
|
} |
|
else |
|
{ |
|
LODWORD(v6) = (*(int (__fastcall **)(double *, unsigned int *))(LODWORD(v124) + 20))(&v124, v128[0]); |
|
} |
|
if ( (_DWORD)v6 || (LODWORD(v6) = sub_1BACEC(v87, (unsigned int)(v88 << 17) >> 30, (int)&v124, v90), (_DWORD)v6) ) |
|
LABEL_278: |
|
*(_DWORD *)(v87 + 24) = dword_2DBD40; |
|
return v6; |
|
case 0x54: |
|
v91 = (int)arg1; |
|
v92 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v125, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_279; |
|
sub_1BADD4(&v123); |
|
if ( *(_BYTE *)LODWORD(v125) ) |
|
{ |
|
if ( *(_BYTE *)LODWORD(v125) == 1 ) |
|
{ |
|
__asm { VLDR D0, [SP,#0x70+var_50] } |
|
sub_1D6950(); |
|
LODWORD(v6) = (*(int (__fastcall **)(double *))(LODWORD(v123) + 24))(&v123); |
|
} |
|
else |
|
{ |
|
LODWORD(v6) = sub_1E8FF4(8, 0, 0, v93); |
|
} |
|
} |
|
else |
|
{ |
|
LODWORD(v6) = (*(int (__fastcall **)(double *, _DWORD))(LODWORD(v123) + 20))(&v123, LODWORD(v126)); |
|
} |
|
if ( (_DWORD)v6 || (LODWORD(v6) = sub_1BACEC(v91, (unsigned int)(v92 << 17) >> 30, (int)&v123, v94), (_DWORD)v6) ) |
|
LABEL_279: |
|
*(_DWORD *)(v91 + 24) = dword_2DBD44; |
|
return v6; |
|
case 0x55: |
|
v95 = (int)arg1; |
|
v96 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v123, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_204; |
|
LODWORD(v6) = (*(int (__fastcall **)(_DWORD, _DWORD))(LODWORD(v123) + 68))(&v123, &v125); |
|
if ( (_DWORD)v6 ) |
|
{ |
|
dword_2DC668 = 0; |
|
} |
|
else |
|
{ |
|
__asm { VLDR D0, [SP,#0x70+var_58] } |
|
sub_1D31C8(); |
|
LODWORD(v6) = sub_1BA8C0(v95, (unsigned int)(v96 << 17) >> 30); |
|
if ( !(_DWORD)v6 ) |
|
goto LABEL_271; |
|
} |
|
LABEL_204: |
|
*(_DWORD *)(v95 + 24) = dword_2DBD48; |
|
return v6; |
|
case 0x56: |
|
v97 = (int)arg1; |
|
v98 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v123, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_209; |
|
LODWORD(v6) = (*(int (__fastcall **)(_DWORD, _DWORD))(LODWORD(v123) + 68))(&v123, &v125); |
|
if ( (_DWORD)v6 ) |
|
{ |
|
dword_2DC668 = 0; |
|
} |
|
else |
|
{ |
|
__asm { VLDR D0, [SP,#0x70+var_58] } |
|
sub_1D3C88(); |
|
LODWORD(v6) = sub_1BA8C0(v97, (unsigned int)(v98 << 17) >> 30); |
|
if ( !(_DWORD)v6 ) |
|
goto LABEL_271; |
|
} |
|
LABEL_209: |
|
*(_DWORD *)(v97 + 24) = dword_2DBD4C; |
|
return v6; |
|
case 0x57: |
|
v99 = (int)arg1; |
|
v100 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v123, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_218; |
|
LODWORD(v6) = (*(int (__fastcall **)(_DWORD, _DWORD))(LODWORD(v123) + 68))(&v123, &v125); |
|
if ( (_DWORD)v6 ) |
|
{ |
|
dword_2DC668 = 0; |
|
} |
|
else |
|
{ |
|
__asm { VLDR D0, [SP,#0x70+var_58] } |
|
sub_276600(); |
|
__asm |
|
{ |
|
VLDR D1, =1.79769313e308 |
|
VMOV.F64 D8, D0 |
|
VCMP.F64 D0, D1 |
|
VMRS APSR_nzcv, FPSCR |
|
} |
|
if ( !_ZF ) |
|
goto LABEL_217; |
|
LODWORD(v6) = sub_1E8FF4(9, 0, 0, v101); |
|
} |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_218; |
|
LABEL_217: |
|
__asm { VMOV.F64 D0, D8 } |
|
LODWORD(v6) = sub_1BA8C0(v99, (unsigned int)(v100 << 17) >> 30); |
|
if ( !(_DWORD)v6 ) |
|
return v6; |
|
LABEL_218: |
|
*(_DWORD *)(v99 + 24) = dword_2DBD50; |
|
return v6; |
|
case 0x58: |
|
v102 = (int)arg1; |
|
v103 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v123, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_230; |
|
LODWORD(v6) = (*(int (__fastcall **)(_DWORD, _DWORD))(LODWORD(v123) + 68))(&v123, &v125); |
|
if ( (_DWORD)v6 ) |
|
{ |
|
dword_2DC668 = 0; |
|
} |
|
else |
|
{ |
|
__asm |
|
{ |
|
VLDR D0, [SP,#0x70+var_58] |
|
VLDR D1, =-1.0 |
|
VCMPE.F64 D0, D1 |
|
VMRS APSR_nzcv, FPSCR |
|
} |
|
if ( _CF ) |
|
{ |
|
__asm |
|
{ |
|
VLDR D1, =1.0 |
|
VCMPE.F64 D0, D1 |
|
VMRS APSR_nzcv, FPSCR |
|
} |
|
if ( (unsigned __int8)(_NF ^ _VF) | _ZF ) |
|
{ |
|
sub_275308(v6); |
|
__asm { VMOV.F64 D8, D0 } |
|
goto LABEL_229; |
|
} |
|
} |
|
LODWORD(v6) = sub_1E8FF4(10, 0, 0, v104); |
|
} |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_230; |
|
LABEL_229: |
|
__asm { VMOV.F64 D0, D8 } |
|
LODWORD(v6) = sub_1BA8C0(v102, (unsigned int)(v103 << 17) >> 30); |
|
if ( !(_DWORD)v6 ) |
|
return v6; |
|
LABEL_230: |
|
*(_DWORD *)(v102 + 24) = dword_2DBD54; |
|
return v6; |
|
case 0x59: |
|
v105 = (int)arg1; |
|
v106 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v124, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_242; |
|
LODWORD(v6) = (*(int (__fastcall **)(double *, double *))(LODWORD(v124) + 68))(&v124, &v123); |
|
if ( (_DWORD)v6 ) |
|
{ |
|
dword_2DC668 = 0; |
|
} |
|
else |
|
{ |
|
__asm |
|
{ |
|
VLDR D0, [SP,#0x70+var_68] |
|
VLDR D1, =-1.0 |
|
VCMPE.F64 D0, D1 |
|
VMRS APSR_nzcv, FPSCR |
|
} |
|
if ( _CF ) |
|
{ |
|
__asm |
|
{ |
|
VLDR D1, =1.0 |
|
VCMPE.F64 D0, D1 |
|
VMRS APSR_nzcv, FPSCR |
|
} |
|
if ( (unsigned __int8)(_NF ^ _VF) | _ZF ) |
|
{ |
|
sub_2750A8(); |
|
__asm { VMOV.F64 D8, D0 } |
|
goto LABEL_241; |
|
} |
|
} |
|
LODWORD(v6) = sub_1E8FF4(10, 0, 0, v107); |
|
} |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_242; |
|
LABEL_241: |
|
__asm { VMOV.F64 D0, D8 } |
|
LODWORD(v6) = sub_1BA8C0(v105, (unsigned int)(v106 << 17) >> 30); |
|
if ( !(_DWORD)v6 ) |
|
return v6; |
|
LABEL_242: |
|
*(_DWORD *)(v105 + 24) = dword_2DBD58; |
|
return v6; |
|
case 0x5A: |
|
v108 = (int)arg1; |
|
v109 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v123, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_247; |
|
LODWORD(v6) = (*(int (__fastcall **)(_DWORD, _DWORD))(LODWORD(v123) + 68))(&v123, &v125); |
|
if ( (_DWORD)v6 ) |
|
{ |
|
dword_2DC668 = 0; |
|
} |
|
else |
|
{ |
|
__asm { VLDR D0, [SP,#0x70+var_58] } |
|
sub_1D2D68(v6); |
|
LODWORD(v6) = sub_1BA8C0(v108, (unsigned int)(v109 << 17) >> 30); |
|
if ( !(_DWORD)v6 ) |
|
goto LABEL_271; |
|
} |
|
LABEL_247: |
|
*(_DWORD *)(v108 + 24) = dword_2DBD5C; |
|
return v6; |
|
case 0x5B: |
|
v110 = (int)arg1; |
|
v111 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v125, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_255; |
|
LODWORD(v6) = sub_1BAA0C((int **)v110, (unsigned int)(v111 << 22) >> 29, &v127, v112); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_255; |
|
LODWORD(v6) = (*(int (__fastcall **)(double *, double *))(LODWORD(v125) + 68))(&v125, &v123); |
|
if ( (_DWORD)v6 ) |
|
{ |
|
dword_2DC668 = 0; |
|
} |
|
else |
|
{ |
|
LODWORD(v6) = (*(int (__fastcall **)(int *, double *))(v127 + 68))(&v127, &v124); |
|
if ( (_DWORD)v6 ) |
|
{ |
|
dword_2DC668 = 1; |
|
} |
|
else |
|
{ |
|
_R0 = &v123; |
|
__asm { VLDMIA R0, {D0-D1} } |
|
sub_275570(); |
|
LODWORD(v6) = sub_1BA8C0(v110, (unsigned int)(v111 << 17) >> 30); |
|
if ( !(_DWORD)v6 ) |
|
goto LABEL_271; |
|
} |
|
} |
|
LABEL_255: |
|
*(_DWORD *)(v110 + 24) = dword_2DBD5C; |
|
return v6; |
|
case 0x5C: |
|
v115 = (int)arg1; |
|
v116 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v123, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_260; |
|
LODWORD(v6) = (*(int (__fastcall **)(_DWORD, _DWORD))(LODWORD(v123) + 68))(&v123, &v125); |
|
if ( (_DWORD)v6 ) |
|
{ |
|
dword_2DC668 = 0; |
|
} |
|
else |
|
{ |
|
__asm { VLDR D0, [SP,#0x70+var_58] } |
|
sub_276418(); |
|
LODWORD(v6) = sub_1BA8C0(v115, (unsigned int)(v116 << 17) >> 30); |
|
if ( !(_DWORD)v6 ) |
|
goto LABEL_271; |
|
} |
|
LABEL_260: |
|
*(_DWORD *)(v115 + 24) = dword_2DBD64; |
|
return v6; |
|
case 0x5D: |
|
v117 = (int)arg1; |
|
v118 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v123, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_265; |
|
LODWORD(v6) = (*(int (__fastcall **)(_DWORD, _DWORD))(LODWORD(v123) + 68))(&v123, &v125); |
|
if ( (_DWORD)v6 ) |
|
{ |
|
dword_2DC668 = 0; |
|
} |
|
else |
|
{ |
|
__asm { VLDR D0, [SP,#0x70+var_58] } |
|
sub_2757B0(v6); |
|
LODWORD(v6) = sub_1BA8C0(v117, (unsigned int)(v118 << 17) >> 30); |
|
if ( !(_DWORD)v6 ) |
|
goto LABEL_271; |
|
} |
|
LABEL_265: |
|
*(_DWORD *)(v117 + 24) = dword_2DBD68; |
|
return v6; |
|
case 0x5E: |
|
v119 = (int)arg1; |
|
v120 = arg2; |
|
LODWORD(v6) = sub_1BAA0C(arg1, (unsigned int)(arg2 << 19) >> 29, &v123, arg4); |
|
if ( (_DWORD)v6 ) |
|
goto LABEL_270; |
|
LODWORD(v6) = (*(int (__fastcall **)(_DWORD, _DWORD))(LODWORD(v123) + 68))(&v123, &v125); |
|
if ( (_DWORD)v6 ) |
|
{ |
|
dword_2DC668 = 0; |
|
} |
|
else |
|
{ |
|
__asm { VLDR D0, [SP,#0x70+var_58] } |
|
sub_2766B0(); |
|
LODWORD(v6) = sub_1BA8C0(v119, (unsigned int)(v120 << 17) >> 30); |
|
if ( !(_DWORD)v6 ) |
|
{ |
|
LABEL_271: |
|
LODWORD(v6) = 0; |
|
return v6; |
|
} |
|
} |
|
LABEL_270: |
|
*(_DWORD *)(v119 + 24) = dword_2DBD6C; |
|
return v6; |
|
default: |
|
LODWORD(v6) = sub_1E8FF4(2, -1, 0, arg4); |
|
return v6; |
|
} |
|
} |