clean up extra decorators

This commit is contained in:
Sydney Biscuit committed 2019-08-18 16:44:11 -07:00
1 parent 531e638179
commit 3183e73860
95 files changed
+4629 -4631

No files matched your search

+145 -145
View File
@@ -8,60 +8,60 @@
void __thiscall TLight::Reset(TLight *this)
{
TLight *v1; // esi
_DWORD *v2; // ST00_4
DWORD *v2; // ST00_4
int v3; // eax
v1 = this;
if ( *(_DWORD *)((char *)this + 110) )
timer_kill(*(_DWORD *)((char *)this + 110));
if ( *(_DWORD *)((char *)v1 + 114) )
timer_kill(*(_DWORD *)((char *)v1 + 114));
if ( *(_DWORD *)((char *)v1 + 82) )
if ( *(DWORD *)((char *)this + 110) )
timer_kill(*(DWORD *)((char *)this + 110));
if ( *(DWORD *)((char *)v1 + 114) )
timer_kill(*(DWORD *)((char *)v1 + 114));
if ( *(DWORD *)((char *)v1 + 82) )
flasher_stop((TLight *)((char *)v1 + 42), -1);
v2 = *(_DWORD **)((char *)v1 + 26);
v2 = *(DWORD **)((char *)v1 + 26);
*(float *)((char *)v1 + 122) = 1.0;
*(_DWORD *)((char *)v1 + 110) = 0;
*(_DWORD *)((char *)v1 + 114) = 0;
*(_DWORD *)((char *)v1 + 78) = 0;
*(_DWORD *)((char *)v1 + 98) = 0;
*(_DWORD *)((char *)v1 + 86) = 0;
*(_DWORD *)((char *)v1 + 90) = 0;
*(_DWORD *)((char *)v1 + 82) = 0;
*(_DWORD *)((char *)v1 + 94) = 0;
*(DWORD *)((char *)v1 + 110) = 0;
*(DWORD *)((char *)v1 + 114) = 0;
*(DWORD *)((char *)v1 + 78) = 0;
*(DWORD *)((char *)v1 + 98) = 0;
*(DWORD *)((char *)v1 + 86) = 0;
*(DWORD *)((char *)v1 + 90) = 0;
*(DWORD *)((char *)v1 + 82) = 0;
*(DWORD *)((char *)v1 + 94) = 0;
render_sprite_set_bitmap(v2, 0);
*(_DWORD *)((char *)v1 + 42) = *(_DWORD *)((char *)v1 + 26);
v3 = *(_DWORD *)((char *)v1 + 34);
*(_DWORD *)((char *)v1 + 46) = 0;
*(DWORD *)((char *)v1 + 42) = *(DWORD *)((char *)v1 + 26);
v3 = *(DWORD *)((char *)v1 + 34);
*(DWORD *)((char *)v1 + 46) = 0;
if ( v3 )
*(_DWORD *)((char *)v1 + 50) = *(_DWORD *)(*(_DWORD *)(v3 + 4) + 8);
*(_DWORD *)((char *)v1 + 58) = 0;
*(_DWORD *)((char *)v1 + 54) = 0;
*(_DWORD *)((char *)v1 + 6) = 0;
*(DWORD *)((char *)v1 + 50) = *(DWORD *)(*(DWORD *)(v3 + 4) + 8);
*(DWORD *)((char *)v1 + 58) = 0;
*(DWORD *)((char *)v1 + 54) = 0;
*(DWORD *)((char *)v1 + 6) = 0;
}
//----- (01009A2A) --------------------------------------------------------
void __stdcall TLight::TimerExpired(int a1, void *a2)
void TLight::TimerExpired(int a1, void *a2)
{
bool v2; // zf
void (__thiscall **v3)(void *, signed int, _DWORD); // eax
void (__thiscall **v3)(void *, signed int, DWORD); // eax
if ( *(_DWORD *)((char *)a2 + 82) )
if ( *(DWORD *)((char *)a2 + 82) )
flasher_stop((struct flasher_type *)((char *)a2 + 42), -1);
render_sprite_set_bitmap(
*(_DWORD **)((char *)a2 + 26),
*(_DWORD *)((char *)a2 + 4 * *(_DWORD *)((char *)a2 + 78) + 46));
v2 = *(_DWORD *)((char *)a2 + 94) == 0;
*(_DWORD *)((char *)a2 + 86) = 0;
*(_DWORD *)((char *)a2 + 90) = 0;
*(_DWORD *)((char *)a2 + 82) = 0;
*(_DWORD *)((char *)a2 + 110) = 0;
*(DWORD **)((char *)a2 + 26),
*(DWORD *)((char *)a2 + 4 * *(DWORD *)((char *)a2 + 78) + 46));
v2 = *(DWORD *)((char *)a2 + 94) == 0;
*(DWORD *)((char *)a2 + 86) = 0;
*(DWORD *)((char *)a2 + 90) = 0;
*(DWORD *)((char *)a2 + 82) = 0;
*(DWORD *)((char *)a2 + 110) = 0;
if ( !v2 )
{
v3 = *(void (__thiscall ***)(void *, signed int, _DWORD))a2;
*(_DWORD *)((char *)a2 + 94) = 0;
v3 = *(void (__thiscall ***)(void *, signed int, DWORD))a2;
*(DWORD *)((char *)a2 + 94) = 0;
(*v3)(a2, 20, 0.0);
}
if ( *(_DWORD *)((char *)a2 + 18) )
if ( *(DWORD *)((char *)a2 + 18) )
control_handler(60, (struct TPinballComponent *)a2);
}
@@ -71,13 +71,13 @@ void __thiscall TLight::schedule_timeout(TLight *this, float a2)
TLight *v2; // esi
v2 = this;
*(_DWORD *)((char *)this + 62) = *(_DWORD *)((char *)this + 102);
*(_DWORD *)((char *)this + 66) = *(_DWORD *)((char *)this + 106);
if ( *(_DWORD *)((char *)this + 110) )
timer_kill(*(_DWORD *)((char *)this + 110));
*(_DWORD *)((char *)v2 + 110) = 0;
*(DWORD *)((char *)this + 62) = *(DWORD *)((char *)this + 102);
*(DWORD *)((char *)this + 66) = *(DWORD *)((char *)this + 106);
if ( *(DWORD *)((char *)this + 110) )
timer_kill(*(DWORD *)((char *)this + 110));
*(DWORD *)((char *)v2 + 110) = 0;
if ( a2 > 0.0 )
*(_DWORD *)((char *)v2 + 110) = timer_set(a2, (int)v2, (int)TLight::TimerExpired);
*(DWORD *)((char *)v2 + 110) = timer_set(a2, (int)v2, (int)TLight::TimerExpired);
}
//----- (01009AE3) --------------------------------------------------------
@@ -101,7 +101,7 @@ char *v18; // eax
char *v19; // eax
float v20; // ST04_4
int v21; // ecx
_DWORD *v22; // eax
DWORD *v22; // eax
int v23; // [esp+1Ch] [ebp+Ch]
v3 = this;
@@ -109,45 +109,45 @@ if ( a2 > 1020 )
{
if ( a2 == 1024 )
{
(*(void (__thiscall **)(TLight *))(*(_DWORD *)this + 20))(this);
(*(void (__thiscall **)(TLight *))(*(DWORD *)this + 20))(this);
v21 = 0;
if ( *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 214) > 0 )
if ( *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 214) > 0 )
{
v22 = (_DWORD *)((char *)v3 + 146);
v22 = (DWORD *)((char *)v3 + 146);
do
{
*(v22 - 3) = *(_DWORD *)((char *)v3 + 82);
*v22 = *(_DWORD *)((char *)v3 + 98);
*(v22 - 4) = *(_DWORD *)((char *)v3 + 78);
*(v22 - 5) = *(_DWORD *)((char *)v3 + 6);
*(v22 - 3) = *(DWORD *)((char *)v3 + 82);
*v22 = *(DWORD *)((char *)v3 + 98);
*(v22 - 4) = *(DWORD *)((char *)v3 + 78);
*(v22 - 5) = *(DWORD *)((char *)v3 + 6);
++v21;
v22 += 6;
}
while ( v21 < *(_DWORD *)(*(_DWORD *)((char *)v3 + 30) + 214) );
while ( v21 < *(DWORD *)(*(DWORD *)((char *)v3 + 30) + 214) );
}
}
}
else if ( a2 == 1020 )
{
v18 = (char *)this + 24 * *(_DWORD *)(*(_DWORD *)((char *)this + 30) + 218);
*(_DWORD *)(v18 + 134) = *(_DWORD *)((char *)this + 82);
*(_DWORD *)(v18 + 146) = *(_DWORD *)((char *)this + 98);
*(_DWORD *)(v18 + 130) = *(_DWORD *)((char *)this + 78);
*(_DWORD *)(v18 + 126) = *(_DWORD *)((char *)this + 6);
(*(void (__thiscall **)(TLight *))(*(_DWORD *)this + 20))(this);
v18 = (char *)this + 24 * *(DWORD *)(*(DWORD *)((char *)this + 30) + 218);
*(DWORD *)(v18 + 134) = *(DWORD *)((char *)this + 82);
*(DWORD *)(v18 + 146) = *(DWORD *)((char *)this + 98);
*(DWORD *)(v18 + 130) = *(DWORD *)((char *)this + 78);
*(DWORD *)(v18 + 126) = *(DWORD *)((char *)this + 6);
(*(void (__thiscall **)(TLight *))(*(DWORD *)this + 20))(this);
v19 = (char *)v3 + 24 * (unsigned __int64)(signed __int64)_floor(a3);
*(_DWORD *)((char *)v3 + 82) = *(_DWORD *)(v19 + 134);
*(_DWORD *)((char *)v3 + 98) = *(_DWORD *)(v19 + 146);
*(_DWORD *)((char *)v3 + 78) = *(_DWORD *)(v19 + 130);
*(_DWORD *)((char *)v3 + 6) = *(_DWORD *)(v19 + 126);
if ( *(_DWORD *)((char *)v3 + 98) )
*(DWORD *)((char *)v3 + 82) = *(DWORD *)(v19 + 134);
*(DWORD *)((char *)v3 + 98) = *(DWORD *)(v19 + 146);
*(DWORD *)((char *)v3 + 78) = *(DWORD *)(v19 + 130);
*(DWORD *)((char *)v3 + 6) = *(DWORD *)(v19 + 126);
if ( *(DWORD *)((char *)v3 + 98) )
{
v20 = (double)*(signed int *)((char *)v3 + 98);
TLight::Message(v3, 11, v20);
}
if ( *(_DWORD *)((char *)v3 + 78) )
if ( *(DWORD *)((char *)v3 + 78) )
TLight::Message(v3, 1, 0.0);
if ( *(_DWORD *)((char *)v3 + 82) )
if ( *(DWORD *)((char *)v3 + 82) )
TLight::Message(v3, 4, 0.0);
}
else
@@ -155,30 +155,30 @@ else
switch ( a2 )
{
case 0:
v4 = *(_DWORD *)((char *)this + 82) == 0;
*(_DWORD *)((char *)this + 78) = 0;
if ( v4 && !*(_DWORD *)((char *)this + 86) && !*(_DWORD *)((char *)this + 90) )
render_sprite_set_bitmap(*(_DWORD **)((char *)this + 26), *(_DWORD *)((char *)this + 46));
v4 = *(DWORD *)((char *)this + 82) == 0;
*(DWORD *)((char *)this + 78) = 0;
if ( v4 && !*(DWORD *)((char *)this + 86) && !*(DWORD *)((char *)this + 90) )
render_sprite_set_bitmap(*(DWORD **)((char *)this + 26), *(DWORD *)((char *)this + 46));
return 0;
case 1:
v4 = *(_DWORD *)((char *)this + 82) == 0;
*(_DWORD *)((char *)this + 78) = 1;
if ( v4 && !*(_DWORD *)((char *)this + 86) && !*(_DWORD *)((char *)this + 90) )
render_sprite_set_bitmap(*(_DWORD **)((char *)this + 26), *(_DWORD *)((char *)this + 50));
v4 = *(DWORD *)((char *)this + 82) == 0;
*(DWORD *)((char *)this + 78) = 1;
if ( v4 && !*(DWORD *)((char *)this + 86) && !*(DWORD *)((char *)this + 90) )
render_sprite_set_bitmap(*(DWORD **)((char *)this + 26), *(DWORD *)((char *)this + 50));
return 0;
case 2:
return *(_DWORD *)((char *)v3 + 78);
return *(DWORD *)((char *)v3 + 78);
case 3:
return *(_DWORD *)((char *)this + 82);
return *(DWORD *)((char *)this + 82);
case 4:
TLight::schedule_timeout(this, 0.0);
if ( !*(_DWORD *)((char *)v3 + 82) || !*(_DWORD *)((char *)v3 + 70) )
if ( !*(DWORD *)((char *)v3 + 82) || !*(DWORD *)((char *)v3 + 70) )
{
v5 = *(_DWORD *)((char *)v3 + 78);
*(_DWORD *)((char *)v3 + 82) = 1;
*(_DWORD *)((char *)v3 + 90) = 0;
*(_DWORD *)((char *)v3 + 86) = 0;
*(_DWORD *)((char *)v3 + 94) = 0;
v5 = *(DWORD *)((char *)v3 + 78);
*(DWORD *)((char *)v3 + 82) = 1;
*(DWORD *)((char *)v3 + 90) = 0;
*(DWORD *)((char *)v3 + 86) = 0;
*(DWORD *)((char *)v3 + 94) = 0;
flasher_start((TLight *)((char *)v3 + 42), v5);
}
return 0;
@@ -187,88 +187,88 @@ case 5:
*(float *)((char *)this + 66) = a3 * *(float *)((char *)this + 106);
return 0;
case 6:
*(_DWORD *)((char *)this + 62) = *(_DWORD *)((char *)this + 102);
*(_DWORD *)((char *)this + 66) = *(_DWORD *)((char *)this + 106);
*(DWORD *)((char *)this + 62) = *(DWORD *)((char *)this + 102);
*(DWORD *)((char *)this + 66) = *(DWORD *)((char *)this + 106);
return 0;
case 7:
if ( !*(_DWORD *)((char *)this + 82) )
flasher_start((TLight *)((char *)this + 42), *(_DWORD *)((char *)this + 78));
*(_DWORD *)((char *)v3 + 82) = 1;
*(_DWORD *)((char *)v3 + 90) = 0;
*(_DWORD *)((char *)v3 + 94) = 0;
if ( !*(DWORD *)((char *)this + 82) )
flasher_start((TLight *)((char *)this + 42), *(DWORD *)((char *)this + 78));
*(DWORD *)((char *)v3 + 82) = 1;
*(DWORD *)((char *)v3 + 90) = 0;
*(DWORD *)((char *)v3 + 94) = 0;
goto LABEL_28;
case 8:
if ( !*(_DWORD *)((char *)this + 86) )
if ( !*(DWORD *)((char *)this + 86) )
{
if ( *(_DWORD *)((char *)this + 82) )
if ( *(DWORD *)((char *)this + 82) )
{
flasher_stop((TLight *)((char *)this + 42), 0);
*(_DWORD *)((char *)v3 + 82) = 0;
*(DWORD *)((char *)v3 + 82) = 0;
}
else
{
render_sprite_set_bitmap(*(_DWORD **)((char *)this + 26), *(_DWORD *)((char *)this + 46));
render_sprite_set_bitmap(*(DWORD **)((char *)this + 26), *(DWORD *)((char *)this + 46));
}
*(_DWORD *)((char *)v3 + 86) = 1;
*(_DWORD *)((char *)v3 + 90) = 0;
*(DWORD *)((char *)v3 + 86) = 1;
*(DWORD *)((char *)v3 + 90) = 0;
}
goto LABEL_29;
case 9:
if ( !*(_DWORD *)((char *)this + 90) )
if ( !*(DWORD *)((char *)this + 90) )
{
if ( *(_DWORD *)((char *)this + 82) )
if ( *(DWORD *)((char *)this + 82) )
{
flasher_stop((TLight *)((char *)this + 42), 1);
*(_DWORD *)((char *)v3 + 82) = 0;
*(DWORD *)((char *)v3 + 82) = 0;
}
else
{
render_sprite_set_bitmap(*(_DWORD **)((char *)this + 26), *(_DWORD *)((char *)this + 50));
render_sprite_set_bitmap(*(DWORD **)((char *)this + 26), *(DWORD *)((char *)this + 50));
}
*(_DWORD *)((char *)v3 + 90) = 1;
*(DWORD *)((char *)v3 + 90) = 1;
LABEL_28:
*(_DWORD *)((char *)v3 + 86) = 0;
*(DWORD *)((char *)v3 + 86) = 0;
}
LABEL_29:
TLight::schedule_timeout(v3, a3);
return 0;
case 11:
v7 = (signed __int64)_floor(a3);
v8 = *(_DWORD *)((char *)v3 + 34);
*(_DWORD *)((char *)v3 + 98) = v7;
v9 = *(_DWORD *)(*(_DWORD *)(v8 + 4) + 4);
v8 = *(DWORD *)((char *)v3 + 34);
*(DWORD *)((char *)v3 + 98) = v7;
v9 = *(DWORD *)(*(DWORD *)(v8 + 4) + 4);
if ( (signed int)v7 > v9 )
*(_DWORD *)((char *)v3 + 98) = v9;
*(DWORD *)((char *)v3 + 98) = v9;
v10 = 0;
if ( *(_DWORD *)((char *)v3 + 98) < 0 )
*(_DWORD *)((char *)v3 + 98) = 0;
v4 = *(_DWORD *)((char *)v3 + 82) == 0;
v11 = *(_DWORD *)((char *)v3 + 98);
*(_DWORD *)((char *)v3 + 46) = 0;
*(_DWORD *)((char *)v3 + 50) = *(_DWORD *)(*(_DWORD *)(v8 + 4) + 4 * v11 + 8);
if ( *(DWORD *)((char *)v3 + 98) < 0 )
*(DWORD *)((char *)v3 + 98) = 0;
v4 = *(DWORD *)((char *)v3 + 82) == 0;
v11 = *(DWORD *)((char *)v3 + 98);
*(DWORD *)((char *)v3 + 46) = 0;
*(DWORD *)((char *)v3 + 50) = *(DWORD *)(*(DWORD *)(v8 + 4) + 4 * v11 + 8);
if ( v4 )
{
if ( !*(_DWORD *)((char *)v3 + 86) )
if ( !*(DWORD *)((char *)v3 + 86) )
{
if ( *(_DWORD *)((char *)v3 + 90) )
if ( *(DWORD *)((char *)v3 + 90) )
v10 = 1;
else
v10 = *(_DWORD *)((char *)v3 + 78);
v10 = *(DWORD *)((char *)v3 + 78);
}
}
else
{
v10 = *(_DWORD *)((char *)v3 + 74);
v10 = *(DWORD *)((char *)v3 + 74);
}
render_sprite_set_bitmap(*(_DWORD **)((char *)v3 + 26), *(_DWORD *)((char *)v3 + 4 * v10 + 46));
render_sprite_set_bitmap(*(DWORD **)((char *)v3 + 26), *(DWORD *)((char *)v3 + 4 * v10 + 46));
return 0;
case 12:
v23 = *(_DWORD *)((char *)this + 98) + 1;
if ( v23 > *(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)this + 34) + 4) + 4) )
v23 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)((char *)this + 34) + 4) + 4);
v23 = *(DWORD *)((char *)this + 98) + 1;
if ( v23 > *(DWORD *)(*(DWORD *)(*(DWORD *)((char *)this + 34) + 4) + 4) )
v23 = *(DWORD *)(*(DWORD *)(*(DWORD *)((char *)this + 34) + 4) + 4);
goto LABEL_32;
case 13:
v23 = *(_DWORD *)((char *)this + 98) - 1;
v23 = *(DWORD *)((char *)this + 98) - 1;
if ( v23 < 0 )
v23 = 0;
LABEL_32:
@@ -276,42 +276,42 @@ LABEL_32:
TLight::Message(this, 11, v6);
return 0;
case 14:
if ( *(_DWORD *)((char *)this + 110) )
timer_kill(*(_DWORD *)((char *)this + 110));
v4 = *(_DWORD *)((char *)v3 + 82) == 0;
*(_DWORD *)((char *)v3 + 110) = 0;
if ( *(DWORD *)((char *)this + 110) )
timer_kill(*(DWORD *)((char *)this + 110));
v4 = *(DWORD *)((char *)v3 + 82) == 0;
*(DWORD *)((char *)v3 + 110) = 0;
if ( !v4 )
flasher_stop((TLight *)((char *)v3 + 42), -1);
v12 = *(_DWORD *)((char *)v3 + 78);
*(_DWORD *)((char *)v3 + 82) = 0;
*(_DWORD *)((char *)v3 + 86) = 0;
*(_DWORD *)((char *)v3 + 90) = 0;
render_sprite_set_bitmap(*(_DWORD **)((char *)v3 + 26), *(_DWORD *)((char *)v3 + 4 * v12 + 46));
v12 = *(DWORD *)((char *)v3 + 78);
*(DWORD *)((char *)v3 + 82) = 0;
*(DWORD *)((char *)v3 + 86) = 0;
*(DWORD *)((char *)v3 + 90) = 0;
render_sprite_set_bitmap(*(DWORD **)((char *)v3 + 26), *(DWORD *)((char *)v3 + 4 * v12 + 46));
return 0;
case 15:
v13 = *(_DWORD *)((char *)this + 114);
*(_DWORD *)((char *)this + 94) = 0;
v13 = *(DWORD *)((char *)this + 114);
*(DWORD *)((char *)this + 94) = 0;
if ( v13 )
timer_kill(v13);
*(_DWORD *)((char *)v3 + 114) = 0;
*(DWORD *)((char *)v3 + 114) = 0;
TLight::Message(v3, 1, 0.0);
TLight::Message(v3, 7, a3);
return 0;
case 16:
if ( *(_DWORD *)((char *)this + 114) )
timer_kill(*(_DWORD *)((char *)this + 114));
*(_DWORD *)((char *)v3 + 114) = 0;
if ( *(DWORD *)((char *)this + 114) )
timer_kill(*(DWORD *)((char *)this + 114));
*(DWORD *)((char *)v3 + 114) = 0;
TLight::Message(v3, 7, a3);
*(_DWORD *)((char *)v3 + 94) = 1;
*(DWORD *)((char *)v3 + 94) = 1;
return 0;
case 17:
v17 = (signed __int64)_floor(a3);
TLight::Message(v3, v17 != 0, 0.0);
return *(_DWORD *)((char *)v3 + 78);
return *(DWORD *)((char *)v3 + 78);
case 18:
TLight::Message(this, 17, a3);
TLight::Message(v3, 14, 0.0);
return *(_DWORD *)((char *)v3 + 78);
return *(DWORD *)((char *)v3 + 78);
case 19:
TLight::Message(this, 1, 0.0);
goto LABEL_62;
@@ -321,15 +321,15 @@ LABEL_62:
TLight::Message(v3, 14, 0.0);
return 0;
case 21:
v15 = (double)(*(_DWORD *)((char *)this + 78) == 0);
v15 = (double)(*(DWORD *)((char *)this + 78) == 0);
TLight::Message(this, 17, v15);
return *(_DWORD *)((char *)v3 + 78);
return *(DWORD *)((char *)v3 + 78);
case 22:
v16 = (double)(*(_DWORD *)((char *)this + 78) == 0);
v16 = (double)(*(DWORD *)((char *)this + 78) == 0);
TLight::Message(this, 18, v16);
return *(_DWORD *)((char *)v3 + 78);
return *(DWORD *)((char *)v3 + 78);
case 23:
*(_DWORD *)((char *)this + 6) = (signed __int64)_floor(a3);
*(DWORD *)((char *)this + 6) = (signed __int64)_floor(a3);
break;
default:
return 0;
@@ -349,11 +349,11 @@ double v7; // st7
v3 = this;
TPinballComponent::TPinballComponent(this, a2, a3, 1);
*(_DWORD *)v3 = &TLight::vftable;
*(_DWORD *)((char *)v3 + 110) = 0;
*(_DWORD *)((char *)v3 + 82) = 0;
*(_DWORD *)((char *)v3 + 114) = 0;
*(_DWORD *)((char *)v3 + 70) = 0;
*(DWORD *)v3 = &TLight::vftable;
*(DWORD *)((char *)v3 + 110) = 0;
*(DWORD *)((char *)v3 + 82) = 0;
*(DWORD *)((char *)v3 + 114) = 0;
*(DWORD *)((char *)v3 + 70) = 0;
TLight::Reset(v3);
v4 = (float *)loader_query_float_attribute(a3, 0, 900);
v5 = *v4;