Code:
//----- (00887490) --------------------------------------------------------
char __usercall sub_887490@<al>(int a1@<ecx>, int a2@<ebx>, int a3@<edi>, int a4@<esi>)
{
int alpha; // ST2C_4@1
int v5; // eax@1
int v6; // eax@1
int v7; // eax@1
float v8; // ST34_4@1
float v9; // ST30_4@1
float v10; // ST08_4@1
float v11; // ST04_4@1
float green; // ST24_4@1
float red; // ST20_4@1
float v14; // ST24_4@1
float v15; // ST20_4@1
int v16; // ST2C_4@2
int v17; // eax@2
GLfloat v18; // ST2C_4@6
GLfloat v19; // ST2C_4@7
GLfloat v20; // ST2C_4@10
GLfloat v21; // ST2C_4@11
int v22; // ST18_4@12
int v23; // ST14_4@12
int v24; // eax@12
float v25; // ST1C_4@13
float v26; // ST18_4@13
float v27; // ST24_4@14
float v28; // ST20_4@14
int v29; // edx@14
int v30; // edx@14
int v31; // edx@15
int v33; // [sp+34h] [bp-104h]@1
char v34; // [sp+38h] [bp-100h]@1
char v35; // [sp+39h] [bp-FFh]@1
v33 = a1;
v34 = 0;
sub_9CF4B0((int)&v35, 0, 255);
sub_635FD0(1);
glColor4f(1.0, 1.0, 1.0, *(float *)(v33 + 128));
alpha = (int)dword_E8C58C;
v5 = (int)sub_41FE10(a2, a3);
sub_420120(v5, alpha);
v6 = (int)sub_41FE10(a2, a3);
sub_420040(v6, 0xFFu, 0xFFu, 0xFFu, 0xFFu);
v7 = (int)sub_41FE10(a2, a3);
sub_4200B0(v7, 0, 0, 0, 0);
v8 = (double)*(signed int *)(v33 + 124) * 0.5;
v9 = (double)*(signed int *)(v33 + 124) * 0.5;
v10 = (double)*(signed int *)(v33 + 16);
v11 = (double)*(signed int *)(v33 + 12);
sub_637C60(a2, a3, a4, 31610, v11, v10, 128.0, 128.0, *(float *)(v33 + 116), *(float *)(v33 + 120), v9, v8, 1, 1, 0.0);
green = (double)*(signed int *)(v33 + 8);
red = (double)*(signed int *)(v33 + 4);
sub_790A00(a2, a3, a4, 31608, red, green, 154.0, 162.0);
v14 = (double)*(signed int *)(v33 + 24);
v15 = (double)*(signed int *)(v33 + 20);
sub_790A00(a2, a3, a4, 31609, v15, v14, 134.0, 37.0);
glColor4f(1.0, 1.0, 1.0, *(float *)(v33 + 128));
if ( sub_8CAF90() )
{
v16 = (int)dword_E8C590;
v17 = (int)sub_41FE10(a2, a3);
sub_420120(v17, v16);
if ( flt_5EF5A1C - *(float *)(v33 + 144) > 500.0 )
{
*(float *)(v33 + 144) = flt_5EF5A1C;
*(_BYTE *)(v33 + 134) = 1;
}
if ( *(_BYTE *)(v33 + 134) )
{
if ( *(_DWORD *)(v33 + 140) >= 10 )
{
v19 = *(float *)(v33 + 140);
sub_50D100(a3, a4, (int)&v34, (int)"%d:%d", *(_DWORD *)(v33 + 136));
}
else
{
v18 = *(float *)(v33 + 140);
sub_50D100(a3, a4, (int)&v34, (int)"%d:0%d", *(_DWORD *)(v33 + 136));
}
}
else if ( *(_DWORD *)(v33 + 140) >= 10 )
{
v21 = *(float *)(v33 + 140);
sub_50D100(a3, a4, (int)&v34, (int)"%d %d", *(_DWORD *)(v33 + 136));
}
else
{
v20 = *(float *)(v33 + 140);
sub_50D100(a3, a4, (int)&v34, (int)"%d 0%d", *(_DWORD *)(v33 + 136));
}
v22 = *(_DWORD *)(v33 + 24) + 10;
v23 = *(_DWORD *)(v33 + 20);
v24 = (int)sub_41FE10(a2, a3);
sub_420150(v24, v23, v22, (int)&v34, 134, 0, 3, 0);
}
(*(void (__thiscall **)(int))(*(_DWORD *)v33 + 12))(v33);
glColor4f(1.0, 1.0, 0.0, *(float *)(v33 + 128));
v25 = (double)*(signed int *)(v33 + 104);
v26 = (double)*(signed int *)(v33 + 100);
sub_6378A0(v26, v25, 3.0, 3.0, 0.0, 0);
sub_635F50();
sub_635FD0(1);
glColor4f(1.0, 1.0, 1.0, *(float *)(v33 + 128));
if ( *(_BYTE *)(v33 + 132) == 1 )
{
v27 = (double)*(signed int *)(v33 + 32);
v28 = (double)*(signed int *)(v33 + 28);
sub_790A00(a2, a3, a4, 31614, v28, v27, 128.0, 53.0);
sub_888730(v33, a2, a3, a4);
sub_779540(v33 + 188, v29, *(float *)(v33 + 128), 1);
sub_779540(v33 + 360, v30, *(float *)(v33 + 128), 1);
sub_7797A0(v33 + 188, a2, a3, a4, 0);
sub_7797A0(v33 + 360, a2, a3, a4, 0);
}
sub_790880(v33 + 532, (int)dword_E8C58C);
sub_779540(v33 + 532, v31, *(float *)(v33 + 128), 1);
sub_7797A0(v33 + 532, a2, a3, a4, 0);
sub_635F50();
return 1;
}
// 5EF5A1C: using guessed type float flt_5EF5A1C;
ps5: My IDA shows this.. when I load the original 1.04.04 GMO main.exe: