Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void __cdecl sub_10231040(int a1, int a2, int a3, int a4, int a5, int a6, float a7, float a8, float a9)
- {
- int v9; // eax@1
- int v10; // edi@1
- int v11; // ebp@3
- int v12; // eax@5
- signed __int16 v13; // di@7
- int v14; // edi@9
- int v15; // eax@15
- float v16; // ST4C_4@26
- double v17; // st7@26
- int v18; // esi@26
- bool v19; // zf@26
- bool v20; // sf@26
- float v21; // ST4C_4@27
- double v22; // st7@27
- unsigned __int8 v23; // of@27
- int i; // esi@28
- int v25; // eax@30
- signed int v26; // [sp+24h] [bp-138h]@12
- int v27; // [sp+3Ch] [bp-120h]@15
- float v28; // [sp+40h] [bp-11Ch]@15
- int v29; // [sp+48h] [bp-114h]@15
- int v30; // [sp+4Ch] [bp-110h]@15
- float v31; // [sp+50h] [bp-10Ch]@26
- int v32; // [sp+54h] [bp-108h]@15
- float v33; // [sp+58h] [bp-104h]@26
- int v34[15]; // [sp+5Ch] [bp-100h]@29
- float v35; // [sp+98h] [bp-C4h]@27
- int v36[16]; // [sp+9Ch] [bp-C0h]@29
- char v37; // [sp+DCh] [bp-80h]@7
- v9 = sub_10090A20(a1);
- v10 = v9;
- if ( v9 && (unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)v9 + 496))(v9) )
- v11 = __RTDynamicCast(
- v10,
- 0,
- (struct _s_RTTICompleteObjectLocator *)&off_106A73E4,
- (struct TypeDescriptor *)&off_106C110C,
- 0);
- else
- v11 = 0;
- v12 = sub_10242390(a4);
- if ( !v12 )
- {
- DevMsg("FX_FireBullets: weapon alias for ID %i not found\n", a4);
- return;
- }
- sub_10322A70(&v37, 0x80u, "weapon_%s", v12);
- v13 = sub_10173BE0((int)&v37);
- if ( v13 == (unsigned __int16)sub_10110B90() )
- {
- DevMsg("FX_FireBullets: LookupWeaponInfoSlot failed for weapon %s\n", &v37);
- return;
- }
- v14 = (int)sub_10173B00(v13);
- if ( v11 && !(unsigned __int8)(*(int (__thiscall **)(int))(*(_DWORD *)(v11 + 8) + 32))(v11 + 8) )
- {
- if ( a5 )
- v26 = 1;
- else
- v26 = 0;
- (***(void (__stdcall ****)(_DWORD, _DWORD))(v11 + 4968))(v26, 0);
- }
- v15 = 1;
- v27 = *(_DWORD *)(v14 + 2184);
- v30 = *(_DWORD *)(v14 + 2188);
- v32 = *(_DWORD *)(v14 + 2180);
- LODWORD(v28) = *(_DWORD *)(v14 + 2192);
- v29 = *(_DWORD *)(v14 + 1728);
- if ( a4 == 2 )
- {
- if ( a5 == 1 )
- {
- v27 = 18;
- v28 = flt_1051FD0C;
- }
- goto LABEL_25;
- }
- if ( a4 == 21 )
- {
- if ( a5 != 1 )
- goto LABEL_25;
- LODWORD(v28) = dword_105324CC;
- goto LABEL_24;
- }
- if ( a4 == 16 && a5 == 1 )
- {
- v27 = 30;
- LABEL_24:
- v15 = 11;
- }
- LABEL_25:
- sub_10230E60(a1, v15, a2, v14, a9);
- if ( v11 )
- {
- sub_100BE010(sub_10230EF0);
- RandomSeed(a6 + 1);
- v16 = RandomFloat(0.0, 6.2831855);
- v17 = RandomFloat(0.0, LODWORD(a7));
- v18 = 0;
- v19 = *(_DWORD *)(v14 + 2196) == 0;
- v20 = *(_DWORD *)(v14 + 2196) < 0;
- v31 = cos(v16) * v17;
- v33 = v17 * sin(v16);
- if ( !(v20 | v19) )
- {
- do
- {
- v21 = RandomFloat(0.0, 6.2831855);
- v22 = RandomFloat(0.0, LODWORD(a8));
- ++v18;
- v23 = __OFSUB__(v18, *(_DWORD *)(v14 + 2196));
- v20 = v18 - *(_DWORD *)(v14 + 2196) < 0;
- *(&v35 + v18) = cos(v21) * v22;
- *(&v33 + v18) = v22 * sin(v21);
- }
- while ( v20 ^ v23 );
- }
- for ( i = 0; i < *(_DWORD *)(v14 + 2196); ++i )
- sub_1022C5F0(
- *(_DWORD *)a2,
- *(_DWORD *)(a2 + 4),
- *(_DWORD *)(a2 + 8),
- a3,
- v30,
- v32,
- v29,
- v27,
- v28,
- v11,
- 1,
- COERCE_INT(*(float *)&v36[i] + v31),
- COERCE_INT(*(float *)&v34[i] + v33));
- v25 = dword_10743CA0;
- dword_10743CAC = 0;
- if ( dword_10743CA8 >= 0 )
- {
- if ( dword_10743CA0 )
- {
- (*(void (__stdcall **)(int))(*(_DWORD *)g_pMemAlloc + 20))(dword_10743CA0);
- v25 = 0;
- dword_10743CA0 = 0;
- }
- dword_10743CA4 = 0;
- }
- dword_10743CB0 = v25;
- sub_100BE010(0);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement