Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- signed int __thiscall CLoadedCarGroup::PickRandomCar(CLoadedCarGroup *this, char a2, char a3)
- {
- signed int v3; // eax@1
- CLoadedCarGroup *v4; // edx@1
- int v5; // ebp@1
- signed int v7; // ebx@6
- int v8; // esi@7
- int *v9; // edi@8
- signed int v10; // eax@10
- CModelCars *v11; // edx@10
- __int16 v12; // cx@10
- int v13; // eax@16
- signed int v14; // ebp@19
- float v15; // ST1C_4@20
- unsigned __int64 v16; // qax@20
- int v17; // esi@20
- signed int i; // ecx@22
- CLoadedCarGroup *v19; // [sp+14h] [bp-38h]@1
- int v20; // [sp+1Ch] [bp-30h]@7
- signed __int16 v21; // [sp+48h] [bp-4h]@7
- v4 = this;
- v5 = 0;
- v19 = this;
- v3 = 0;
- do
- {
- if ( this->m_Array[v3] < 0 )
- break;
- ++v5;
- ++v3;
- }
- while ( v3 < 23 );
- if ( !v5 )
- return -1;
- v7 = 0;
- if ( !a3 )
- {
- v13 = 0;
- if ( v5 > 0 )
- {
- do
- v7 += CModelInfo::ms_modelInfoPtrs[this->m_Array[v13++]]->frq;
- while ( v13 < v5 );
- goto LABEL_18;
- }
- return -1;
- }
- memset(&v20, -1, 0x2Cu);
- v8 = 0;
- v21 = -1;
- if ( v5 <= 0 )
- return -1;
- v9 = &v20;
- while ( 1 )
- {
- v12 = v4->m_Array[v8];
- v11 = CModelInfo::ms_modelInfoPtrs[v4->m_Array[v8]];
- v10 = v11->vclass;
- if ( v10 >= 0 && (v10 <= 2 || v10 == 8) )
- {
- *(_WORD *)v9 = v12;
- v7 += v11->frq;
- v9 = (int *)((char *)v9 + 2);
- }
- ++v8;
- if ( v8 >= v5 )
- break;
- v4 = v19;
- }
- LABEL_18:
- if ( !v7 )
- return -1;
- v14 = 0;
- while ( 1 )
- {
- v15 = (long double)v7;
- v16 = (unsigned __int64)((long double)(unsigned __int16)rand() * 0.000030517578 * v15);
- HIDWORD(v16) = v19;
- v17 = (signed __int16)v20;
- if ( !a3 )
- v17 = v19->m_Array[0];
- for ( i = CModelInfo::ms_modelInfoPtrs[v17]->frq; (signed int)v16 > i; i = CModelInfo::ms_modelInfoPtrs[v17]->frq )
- {
- LODWORD(v16) = v16 - i;
- HIDWORD(v16) += 2;
- if ( a3 )
- v17 = *(_WORD *)((char *)&v20 - (char *)v19 + HIDWORD(v16));
- else
- v17 = *HIDWORD(v16);
- }
- if ( !rcgIsModelDisabled(v17)
- && !sub_46A890(v17)
- && !(unsigned __int8)sub_407F80(v17)
- && (!a2 || CModelInfo::ms_modelInfoPtrs[v17]->__parent.__parent.m_wUsageCount < 3) )
- break;
- ++v14;
- if ( v14 >= 10 )
- return -1;
- }
- return v17;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement