Element Hub LocalProc proc Self#.proc.data_null Self#.CallEvents 0,data_null ret endp irp dt.t,data_int,data_bitmap \{ proc Self#.proc.\#dt.t data Self#.CallEvents [data],dt.t ret endp \} proc Self#.proc.data_str data locals _str dd ? endl lea edx,[_str] mov eax,[data] call __strdupnoclear Self#.CallEvents [_str],data_str lea edx,[_str] call __strclear ret endp proc Self#.proc.data_data data locals _dt dd ? endl mov [_dt],0 lea edx,[_dt] mov eax,[data] call __datadup Self#.CallEvents [_dt],data_data lea edx,[_dt] call __dataclear ret endp proc Self#.proc.data_real data:qword Self#.CallEvents [data],data_real ret endp proc Self#.proc.data_real_ptr data Self#.CallEvents [data],data_real_ptr ret endp DPointWork doEvent match =0,data.type \\{ stdcall Self#.proc.data_null \\} match =1,data.type \\{ stdcall Self#.proc.data_int,data \\} match =2,data.type \\{ stdcall Self#.proc.data_str,data \\} match =3,data.type \\{ stdcall Self#.proc.data_data,data \\} match =7,data.type \\{ if data eq 1 sub esp,8 fstp qword [esp] call Self#.proc.data_real else stdcall Self#.proc.data_real_ptr,data end if \\} match =60,data.type \\{ sub esp,8 fstp qword [esp] call Self#.proc.data_real \\} match =11,data.type \\{ stdcall Self#.proc.data_bitmap,data \\} EndPoint DPointEvent onEvent match =0,data.type \\{ Self#.onEvent#Index 0,data_null \\} match =1,data.type \\{ Self#.onEvent#Index data,data_int \\} match =2,data.type \\{ Self#.onEvent#Index data,data_str \\} match =3,data.type \\{ mov eax,data mov [_data],eax Self#.onEvent#Index [_data],data_data \\} match =7,data.type \\{ fld qword data Self#.onEvent#Index 1,data_real_st0 \\} match =data_real_ptr,data.type \\{ mov eax,data fld qword [eax] Self#.onEvent#Index 1,data_real_st0 \\} match =11,data.type \\{ Self#.onEvent#Index data,data_bitmap \\} EndPoint EndElement