RtlIpv6AddressToStringExA
NTSTATUS __stdcall RtlIpv6AddressToStringExA(
in6_addr *Address,
UINT64 ScopeId,
UINT16 Port,
INT8 *AddressString,
UINT64 *AddressStringLength){
unsigned int v7;
char v8;
char *p_Src;
INT8 *v10;
INT8 *v11;
int v12;
size_t v13;
size_t v14;
char Src;
char S;
char v18[15];
v7 = ScopeId;
if( !Address || !AddressStringLength || !AddressString && *(_DWORD *)AddressStringLength )
return -1073741811;
v8 = Src;
if( Port )
v8 = 91;
p_Src = &Src;
Src = v8;
if( Port )
p_Src = &S;
v10 = RtlIpv6AddressToStringA(Address, p_Src);
v11 = v10;
if( v7 )
v11 = &v10[(int)sprintf_s(v10, v18 - v10, (INT8 *)"%%%u", v7)];
if( Port )
LODWORD(v11) = sprintf_s(v11, v18 - v11, (INT8 *)"]:%u", (unsigned __int16)__ROR2__(Port, 8)) + (_DWORD)v11;
v13 = *(_DWORD *)AddressStringLength;
v14 = (_DWORD)v11 - (v12 + 32) + 1;
*(_DWORD *)AddressStringLength = v14;
if( v13 < v14 )
return -1073741811;
memmove(AddressString, &Src, v14);
return 0;
}Referenced by:
No references.