Sometimes i see such lines. What do they mean, such syntax? (*(void (__fastcall **)(int, int))(*(_DWORD *)v2 + 24))(v2, v4);int __fastcall sub_1(int a1, int a2){  int v2; // r4@1  int v3; // r5@1  int v4; // r6@1  int v5; // r0@2  int v6; // r0@2  unsigned int v7; // r0@4  int v8; // r5@8  v2 = a2;  v3 = a1;  sub_2(a2);  v4 = *(_BYTE *)(sub_3(*(_DWORD *)(v3 + 1684)) + 13);  (*(void (__fastcall **)(int, int))(*(_DWORD *)v2 + 24))(v2, v4);  if ( v4 )  {    (*(void (__fastcall **)(int, _DWORD))(*(_DWORD *)v2 + 56))(v2, *(_DWORD *)(v3 + 1700));
IDA hexrays decompiler
ida;decompilation
It's very likely what you're looking at is a virtual method call on a class. Virtual methods are usually implemented by the use of a pointer to a table of function pointers. The pointer is added at the beginning of the class data and is added transparently by the compiler if a class has a virtual method.First it casts v2 to a pointer to a DWORD, reads the DWORD (vtable pointer), adds 24 to the vtable base pointer, reads the pointer to the method at offset 24 in the vtable, casts that to a function pointer and calls it. Since v2 is both used to locate the vtable pointer and passed as the first argument it's likely the this pointer.