This is a function pointer call stored in a structure.
This first line gets the pointer stored at the address DS:xxxxxxxx. The square brackets indicate the dereferencing of the address, as *in C. A value from memory should be used as a pointer; It is placed in the register ecx.
MOV ECX,DWORD PTR DS:[xxxxxxxx] ; xxxxxxxx is an address
, . ecx , . , , . edx.
MOV EDX,DWORD PTR DS:[ECX]
; 0x116 . , ++ vtable. , , eax.
MOV EAX,DWORD PTR DS:[EDX+116]
, , eax. . , , , : PUSH, ? . , , .
CALL EAX
, OllyDbg. ABI OllyDbg struct, . , , edx -held pointer ( ), , struct, vtable ++.
, xxxxxxxx struct, .
OllyDbg PlugIn.h - struct. :
typedef struct t_sorted {
char name[MAX_PATH];
int n;
int nmax;
int selected;
ulong seladdr;
int itemsize;
ulong version;
void *data;
SORTFUNC *sortfunc;
DESTFUNC *destfunc;
int sort;
int sorted;
int *index;
int suppresserr;
} t_sorted;
NULL, asm NULL . , DRAWFUNC t_table SPECFUNC t_dump.
, , printf() offsetof(), , 0x116.
, OllyDbg . , , struct ( Plugin.h), OllyDbg.
, , , OllyDbg . , , , - GPL, OllyDbg.