; Disassembly of IsValidProperty method, called from IContextProperties::SetProperty ; Determines policy for what is a valid property VARIANT type CUserProps::IsValidProperty: ; Put &vaValue in ecx 757953D5 mov ecx,dword ptr [esp+4] ; Put vaValue.vt in eax 757953D9 movzx eax,word ptr [ecx] ; Check for valid VARTYPE values 757953DC cmp eax,2 ; VT_I2? 757953DF jl CUserProps::IsValidProperty+27h (757953FCh) 757953E1 cmp eax,8 ; VT_BSTR? 757953E4 jle CUserProps::IsValidProperty+36h (7579540Bh) 757953E6 cmp eax,9 ; VT_DISPATCH? 757953E9 je CUserProps::IsValidProperty+2Ch (75795401h) 757953EB jle CUserProps::IsValidProperty+27h (757953FCh) 757953ED cmp eax,0Bh ; VT_BOOL? 757953F0 jle CUserProps::IsValidProperty+36h (7579540Bh) 757953F2 cmp eax,0Dh ; VT_UNKNOWN? 757953F5 je CUserProps::IsValidProperty+2Ch (75795401h) 757953F7 cmp eax,11h ; VT_UI1? 757953FA je CUserProps::IsValidProperty+36h (7579540Bh) ; If none of the above, zero out return value (eax), and leave ; i.e. return FALSE; 757953FC xor eax,eax 757953FE ret 4 ; VT_DISPATCH and VT_UNKNOWN end up here - sets return value to 1 ; if value is non-NULL, and jumps back to ret instruction ; i.e. return (vaValue.punkVal != NULL); 75795401 xor eax,eax 75795403 cmp dword ptr [ecx+8],eax 75795406 setne al 75795409 jmp CUserProps::IsValidProperty+29h (757953FEh) ; Set return value to 1 and jump back to ret instruction ; i.e. return TRUE; 7579540B xor eax,eax 7579540D inc eax 7579540E jmp CUserProps::IsValidProperty+29h (757953FEh)