signed int __userpurge CItemWeapon::ChangePrefix<eax>(int a1<ecx>, DWORD a2<ebx>, DWORD a3<edi>, DWORD a4<esi>, int a5, int a6, int a7, int a8)
{
signed int v9; // [sp+0h] [bp-4Ch]@33
signed int v10; // [sp+4h] [bp-48h]@31
signed int v11; // [sp+8h] [bp-44h]@29
int v12; // [sp+Ch] [bp-40h]@25
int v13; // [sp+14h] [bp-38h]@6
int v14; // [sp+18h] [bp-34h]@1
int v15; // [sp+34h] [bp-18h]@14
signed int i; // [sp+38h] [bp-14h]@8
int v17; // [sp+3Ch] [bp-10h]@8
int v18; // [sp+40h] [bp-Ch]@8
int v19; // [sp+48h] [bp-4h]@8
v14 = a1;
if ( CItem::IsState(a1, 1) || a6 >= 0 && a6 )
return 0;
if ( *(_DWORD *)(v14 + 44) )
v13 = *(_DWORD *)(*(_DWORD *)(v14 + 44) + 32);
else
v13 = 0;
v17 = v13;
v18 = sub_406E10(1, 100);
v19 = CItem::IsState(v14, 64);
for ( i = 0; i < 2; ++i )
{
if ( v18 <= *(_DWORD *)(a7 + 4 * i) )
{
v17 = *(_DWORD *)(a8 + 4 * i);
break;
}
}
if ( v13 == v17 )
{
if ( v19 )
{
CDBSocket::Write(a2, a3, a4, 21, (unsigned int)"dddbb");
CItem::SubState(v14, 64);
CItem::SendItemInfo(v14, a2, a3, a4, (void *)a5, 92);
return 1;
}
*(_DWORD *)(v14 + 96) -= 5;
if ( *(_DWORD *)(v14 + 96) <= 0 )
{
CPlayer::Write(a2, a3, a4, a5, 91, (unsigned int)"db");
CDBSocket::Write(a2, a3, a4, 3, (unsigned int)"ddwdbddd");
if ( CItem::GetLevel(v14) >= 40 )
{
if ( CItem::GetLevel(v14) - 40 >= 20 )
v12 = 20;
else
v12 = CItem::GetLevel(v14) - 40;
if ( *(_DWORD *)(*(_DWORD *)(v14 + 40) + 72) == 1 )
{
if ( *(_DWORD *)(v14 + 104) >= 20 )
v11 = 20;
else
v11 = *(_DWORD *)(v14 + 104);
v10 = v11;
}
else
{
if ( *(_DWORD *)(v14 + 100) >= 20 )
v9 = 20;
else
v9 = *(_DWORD *)(v14 + 100);
v10 = v9;
}
CItem::InsertItem(a2, a3, a4, a5, 27, 517, 0, dword_4D5F90[v10] + dword_4D5F38[v12], -1);
}
CBase::Delete((void *)v14);
}
else
{
CPlayer::Write(a2, a3, a4, a5, 91, (unsigned int)"db");
CDBSocket::Write(a2, a3, a4, 18, (unsigned int)"ddb");
}
}
else
{
v15 = CItem::FindPrefix(v17);
if ( !v15 )
return 0;
*(_DWORD *)(v14 + 44) = v15;
CDBSocket::Write(a2, a3, a4, 19, (unsigned int)"ddbb");
if ( v19 )
CItem::SubState(v14, 64);
CItem::SendItemInfo(v14, a2, a3, a4, (void *)a5, 92);
}
return 1;
}