Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void __usercall Pl0000::CollisionCheck(__int64 a1@<rcx>, __int128 a2@<xmm0>)
- {
- __int64 v2; // rbx
- int v3; // edi
- float v4; // xmm7_4
- float v5; // xmm1_4
- __int64 pEntInfo; // rcx
- __int64 v7; // rax
- signed int v8; // eax
- __m128 *v9; // rdi
- signed int v10; // edi
- char v11; // [rsp+30h] [rbp-78h]
- char v12; // [rsp+40h] [rbp-68h]
- char v13; // [rsp+50h] [rbp-58h]
- v2 = a1;
- *(_DWORD *)(a1 + 6640) = 0;
- sub_140265F10((__m128 *)&v13, (__m128 *)(a1 + 80), (__m128 *)(a1 + 0x10680));
- v3 = *(_DWORD *)(v2 + 0x670);
- v4 = 0.0;
- if ( (v3 - 59) & 0xFFFFFFFD )
- {
- if ( v3 == 66 )
- {
- LODWORD(a2) = 1065353216;
- Vector3Aligned::sub_140265E60((unsigned __int64)&v12);
- Vector4::Copy((_OWORD *)(v2 + 0x1960), &v12);
- *(_DWORD *)(v2 + 0x1980) = 0x3E99999A;
- }
- else if ( v3 == 70 )
- {
- LODWORD(a2) = 1065353216;
- Vector3Aligned::sub_140265E60((unsigned __int64)&v12);
- Vector4::Copy((_OWORD *)(v2 + 6496), &v12);
- *(_DWORD *)(v2 + 0x1980) = 0x3F000000;
- }
- else
- {
- Vector4::Copy((_OWORD *)(v2 + 6496), (_OWORD *)(v2 + 6736));
- if ( v3 == 104 )
- *(_DWORD *)(v2 + 0x1980) = 0x3E4CCCCD;
- else
- *(_DWORD *)(v2 + 0x1980) = 0x3F19999A;
- }
- }
- else
- {
- Vector4::Copy((_OWORD *)(v2 + 6496), (_OWORD *)(v2 + 6736));
- *(_DWORD *)(v2 + 6528) = 1036831949;
- }
- v5 = *(float *)(v2 + 89560);
- if ( v5 > 0.0 )
- {
- pEntInfo = *(_QWORD *)(v2 + 0x610);
- v7 = pEntInfo ? sub_140138630(pEntInfo) : &unk_141029FF0;
- *(float *)&a2 = sub_14014B990(v7) * 0.016666668;
- v5 = *(float *)(v2 + 89560) - *(float *)&a2;
- *(float *)(v2 + 89560) = v5;
- if ( v5 < 0.0 )
- {
- *(_DWORD *)(v2 + 89560) = 0;
- v5 = 0.0;
- }
- }
- if ( *(_BYTE *)(v2 + 2180) & 0x40 || *(_DWORD *)(v2 + 5344) || v5 > 0.0 )
- {
- v9 = (__m128 *)(v2 + 6336);
- sub_14040D0F0(v2 + 6336);
- v8 = 0;
- }
- else
- {
- v8 = 1;
- v9 = (__m128 *)(v2 + 0x18C0);
- }
- *(_DWORD *)(v2 + 0x18D4) = v8;
- sub_1404117A0((__int64)v9);
- sub_1403FB680(v9);
- if ( (unsigned int)ExCollision::Check((int *)v9, *(float *)&a2) )
- {
- *(_DWORD *)(v2 + 6640) = 1;
- Vector4::Copy((_OWORD *)(v2 + 6656), (_OWORD *)(v2 + 0x18E0));
- Vector4::Copy((_OWORD *)(v2 + 6672), (_OWORD *)(v2 + 6384));
- *(_DWORD *)(v2 + 6688) = *(_DWORD *)(v2 + 6400);
- *(_QWORD *)(v2 + 6696) = *(_QWORD *)(v2 + 6408);
- *(_QWORD *)(v2 + 6704) = *(_QWORD *)(v2 + 6416);
- *(_DWORD *)(v2 + 6712) = *(_DWORD *)(v2 + 6424);
- *(_DWORD *)(v2 + 6716) = *(_DWORD *)(v2 + 6428);
- *(_DWORD *)(v2 + 6720) = *(_DWORD *)(v2 + 6432);
- sub_1403FB860(v9);
- if ( (unsigned int)ExCollision::Check((int *)v9, *(float *)&a2) )
- {
- sub_140464230(v2 + 6656, v2 + 0x18E0);
- sub_1403FB860(v9);
- }
- }
- sub_140265F10((__m128 *)&v11, (__m128 *)(v2 + 80), (__m128 *)(v2 + 67200));
- v10 = 0;
- if ( *(_DWORD *)(v2 + 6640) )
- {
- a2 = (__int128)Vector3Aligned::Length((__m128 *)&v13);
- sub_1402663A0(&v11);
- if ( (float)((float)(*(float *)&a2 * 0.5) * (float)(*(float *)&a2 * 0.5)) > *(float *)&a2 )
- v10 = 1;
- }
- if ( v10 )
- {
- *(float *)&a2 = *(float *)(v2 + 0x1470) + *(float *)(v2 + 6644);
- *(_DWORD *)(v2 + 6644) = a2;
- }
- else
- {
- *(_DWORD *)(v2 + 6644) = 0;
- }
- if ( !(unk_1410297D0 & 0x200000) && !(dword_1410297D4 & 0x20000000) )
- {
- if ( dword_1410297F0 & 0x10000 )
- goto LABEL_37;
- v4 = *(float *)(v2 + 5172);
- }
- if ( v4 > 900.0 )
- {
- sub_1402663A0(&v11);
- if ( *(float *)&a2 < 0.00039999999 )
- {
- *(float *)(v2 + 6648) = *(float *)(v2 + 5232) + *(float *)(v2 + 6648);
- return;
- }
- }
- LABEL_37:
- *(_DWORD *)(v2 + 6648) = 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment