unsigned int __userpurge sub_10005E50@<eax>(int a1@<esi>, float a2, void *a3, size_t a4)
{
unsigned int v4; // eax@2
unsigned int v5; // eax@6
signed __int64 v6; // rax@9
unsigned int result; // eax@9
float v8; // [sp+14h] [bp+8h]@9
if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 8))(a1, *(_DWORD *)(a1 + 12) + 1) )
{
*(_BYTE *)((*(_DWORD *)(a1 + 12))++ + *(_DWORD *)(a1 + 4)) = LOBYTE(a2);
v4 = *(_DWORD *)(a1 + 12);
if ( *(_DWORD *)(a1 + 16) > v4 )
v4 = *(_DWORD *)(a1 + 16);
*(_DWORD *)(a1 + 16) = v4;
}
if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 8))(a1, *(_DWORD *)(a1 + 12) + 4) )
{
*(_DWORD *)(*(_DWORD *)(a1 + 12) + *(_DWORD *)(a1 + 4)) = a4;
*(_DWORD *)(a1 + 12) += 4;
v5 = *(_DWORD *)(a1 + 12);
if ( *(_DWORD *)(a1 + 16) > v5 )
v5 = *(_DWORD *)(a1 + 16);
*(_DWORD *)(a1 + 16) = v5;
}
LODWORD(v6) = sub_10024080();
v8 = (double)v6 * 0.001 - flt_100C2990;
result = (*(int (__thiscall **)(int, int))(*(_DWORD *)a1 + 8))(a1, *(_DWORD *)(a1 + 12) + 4);
if ( (_BYTE)result )
{
*(float *)(*(_DWORD *)(a1 + 12) + *(_DWORD *)(a1 + 4)) = v8;
*(_DWORD *)(a1 + 12) += 4;
result = *(_DWORD *)(a1 + 12);
if ( *(_DWORD *)(a1 + 16) > result )
result = *(_DWORD *)(a1 + 16);
*(_DWORD *)(a1 + 16) = result;
}
if ( a4 )
{
result = (*(int (__thiscall **)(int, size_t))(*(_DWORD *)a1 + 8))(a1, a4 + *(_DWORD *)(a1 + 12));
if ( (_BYTE)result )
{
memcpy_0((void *)(*(_DWORD *)(a1 + 12) + *(_DWORD *)(a1 + 4)), a3, a4);
*(_DWORD *)(a1 + 12) += a4;
result = *(_DWORD *)(a1 + 12);
if ( *(_DWORD *)(a1 + 16) > result )
result = *(_DWORD *)(a1 + 16);
*(_DWORD *)(a1 + 16) = result;
}
}
return result;
}