unsigned int __thiscall sub_18CF7F70(int this, int a2, signed int a3, signed int a4, int a5, signed int a6, int a7, float a8, float a9, float a10, float a11, float a12, float a13, float a14, float a15, int a16, int a17)
{
unsigned int result; // eax@1
int v18; // ebx@3
int v19; // eax@7
int v20; // ebx@7
int v21; // esi@7
int v22; // eax@8
__int16 v23; // cx@9
signed int v24; // eax@11
signed int v25; // ecx@11
signed int v26; // eax@11
int v27; // eax@12
int v28; // ecx@12
signed int v29; // esi@17
double v30; // st6@17
double v31; // st3@21
signed int v32; // edx@22
double v33; // st3@26
signed int v34; // ecx@27
double v35; // st3@31
signed int v36; // eax@32
signed int v37; // esi@38
double v38; // st6@38
double v39; // st3@42
signed int v40; // edx@43
double v41; // st3@47
signed int v42; // ecx@48
double v43; // st3@52
signed int v44; // eax@53
char *v45; // [sp-14h] [bp-70h]@36
int *v46; // [sp-10h] [bp-6Ch]@36
int v47; // [sp-Ch] [bp-68h]@36
int v48; // [sp-8h] [bp-64h]@36
signed int v49; // [sp-4h] [bp-60h]@36
float v50; // [sp+0h] [bp-5Ch]@36
int *v51; // [sp+4h] [bp-58h]@36
int v52; // [sp+8h] [bp-54h]@36
int v53; // [sp+Ch] [bp-50h]@36
float v54; // [sp+10h] [bp-4Ch]@36
float v55; // [sp+14h] [bp-48h]@36
float v56; // [sp+24h] [bp-38h]@16
float v57; // [sp+28h] [bp-34h]@16
int v58; // [sp+2Ch] [bp-30h]@16
int v59; // [sp+30h] [bp-2Ch]@1
__int64 v60; // [sp+34h] [bp-28h]@16
__int64 v61; // [sp+3Ch] [bp-20h]@20
int v62; // [sp+48h] [bp-14h]@15
int v63; // [sp+4Ch] [bp-10h]@15
int v64; // [sp+50h] [bp-Ch]@15
int v65; // [sp+54h] [bp-8h]@15
unsigned int v66; // [sp+58h] [bp-4h]@1
int v67; // [sp+5Ch] [bp+0h]@1
result = (unsigned int)&v67 ^ dword_196C6460;
v66 = (unsigned int)&v67 ^ dword_196C6460;
v59 = this;
if ( a2 )
{
if ( *(_WORD *)a2 )
{
v18 = a17;
if ( a17 )
{
if ( a7 == 1 )
{
sub_18CF64B0(a2, &a3, a17, 0);
v28 = a5;
v27 = (a5 - a3) / 2;
a3 -= v27;
}
else
{
if ( a7 != 2 )
{
if ( a7 == 4 )
{
v20 = a6 - a4;
v21 = *(_DWORD *)(this + 4);
v19 = a17;
if ( a17 < 0 )
{
v22 = a2;
do
{
v23 = *(_WORD *)v22;
v22 += 2;
}
while ( v23 );
v19 = (v22 - (a2 + 2)) >> 1;
}
v24 = sub_18D82C70(a2, v19);
v25 = v24 / *(_DWORD *)(v21 + 1048764) - ((unsigned __int64)(v24 / *(_DWORD *)(v21 + 1048764)) >> 32);
v26 = v20;
v18 = a17;
v26 /= 2;
v25 >>= 1;
a4 += v26 - v25;
a6 += v25 - v26;
}
goto LABEL_15;
}
sub_18CF64B0(a2, &a3, a17, 0);
v28 = a5;
v27 = a5 - a3;
a3 -= a5 - a3;
}
a5 = v28 - v27;
LABEL_15:
v62 = (signed int)((double)a3 * *(float *)(dword_196CDF68 + 376));
v63 = (signed int)((double)a4 * *(float *)(dword_196CDF68 + 380));
v64 = (signed int)((double)a5 * *(float *)(dword_196CDF68 + 376));
v65 = (signed int)((double)a6 * *(float *)(dword_196CDF68 + 380));
if ( a16 )
{
sub_18CF6580(a2, a3, a4, a5, a6, 256, a12, a13, a14, a15, a16, v18);
LODWORD(v56) = v63;
HIDWORD(v60) = v62;
*(float *)&v58 = *(float *)(dword_196CDF68 + 380);
v57 = *(float *)(dword_196CDF68 + 376);
if ( a8 < 1.0 )
{
if ( a8 > 0.0 )
{
v30 = 0.0;
v61 = (signed __int64)(a8 * 255.0 + 0.5);
v29 = (signed __int64)(a8 * 255.0 + 0.5);
}
else
{
v30 = 0.0;
v29 = 0;
}
}
else
{
v30 = 0.0;
v29 = 255;
}
v31 = a9;
if ( a9 < 1.0 )
{
if ( v31 > v30 )
{
v61 = (signed __int64)(v31 * 255.0 + 0.5);
v32 = (signed __int64)(v31 * 255.0 + 0.5);
}
else
{
v32 = 0;
}
}
else
{
v32 = 255;
}
v33 = a10;
if ( a10 < 1.0 )
{
if ( v33 > v30 )
{
v61 = (signed __int64)(v33 * 255.0 + 0.5);
v34 = (signed __int64)(v33 * 255.0 + 0.5);
}
else
{
v34 = 0;
}
}
else
{
v34 = 255;
}
v35 = a11;
if ( a11 < 1.0 )
{
if ( v35 > v30 )
{
v61 = (signed __int64)(255.0 * v35 + 0.5);
v36 = (signed __int64)(255.0 * v35 + 0.5);
}
else
{
v36 = 0;
}
}
else
{
v36 = 255;
}
v55 = *(float *)&v58;
v54 = v57;
v53 = v18;
v52 = a7;
v51 = &v62;
v50 = 1.0;
v49 = -16777216;
v48 = v34 | ((v32 | ((v29 | (v36 << 8)) << 8)) << 8);
v47 = a2;
v46 = (int *)&v56;
v45 = (char *)&v60 + 4;
}
else
{
HIDWORD(v61) = v62;
v58 = v63;
v56 = *(float *)(dword_196CDF68 + 380);
v57 = *(float *)(dword_196CDF68 + 376);
if ( a8 < 1.0 )
{
if ( a8 > 0.0 )
{
v38 = 0.0;
v60 = (signed __int64)(a8 * 255.0 + 0.5);
v37 = (signed __int64)(a8 * 255.0 + 0.5);
}
else
{
v38 = 0.0;
v37 = 0;
}
}
else
{
v38 = 0.0;
v37 = 255;
}
v39 = a9;
if ( a9 < 1.0 )
{
if ( v39 > v38 )
{
v60 = (signed __int64)(v39 * 255.0 + 0.5);
v40 = (signed __int64)(v39 * 255.0 + 0.5);
}
else
{
v40 = 0;
}
}
else
{
v40 = 255;
}
v41 = a10;
if ( a10 < 1.0 )
{
if ( v41 > v38 )
{
v60 = (signed __int64)(v41 * 255.0 + 0.5);
v42 = (signed __int64)(v41 * 255.0 + 0.5);
}
else
{
v42 = 0;
}
}
else
{
v42 = 255;
}
v43 = a11;
if ( a11 < 1.0 )
{
if ( v43 > v38 )
{
v60 = (signed __int64)(255.0 * v43 + 0.5);
v44 = (signed __int64)(255.0 * v43 + 0.5);
}
else
{
v44 = 0;
}
}
else
{
v44 = 255;
}
v55 = v56;
v54 = v57;
v53 = v18;
v52 = a7;
v51 = &v62;
v50 = 1.0;
v49 = 0xFF000000u;
v48 = v42 | ((v40 | ((v37 | (v44 << 8)) << 8)) << 8);
v47 = a2;
v46 = &v58;
v45 = (char *)&v61 + 4;
}
return sub_18D84D50(v45, v46, v47, v48, v49, v50, v51, v52, v53, v54, v55);
}
}
}
return result;
}