RtlIpv6AddressToStringExA

INT64 __fastcall RtlIpv6AddressToStringExA(
        const in6_addr *Address,
        UINT64 ScopeId,
        INT64 Port,
        CHAR *AddressString,
        UINT64 *AddressStringLength){
  __int16 v6; 
  int v7; 
  UINT8 v8; 
  CHAR *p_Src; 
  INT8 *v10; 
  INT8 *v11; 
  int v12; 
  unsigned int v13; 
  unsigned int v14; 
  UINT8 Src; 
  CHAR S; 
  char v18[15]; 
  v6 = Port;
  v7 = ScopeId;
  if( !Address || !AddressStringLength || !AddressString && *(_DWORD *)AddressStringLength )
    return 3221225485i64;
  v8 = Src;
  if( (_WORD)Port )
    v8 = 91;
  p_Src = (CHAR *)&Src;
  Src = v8;
  if( (_WORD)Port )
    p_Src = &S;
  v10 = RtlIpv6AddressToStringA((in6_addr *)Address, p_Src);
  v11 = v10;
  if( v7 )
    v11 = &v10[(int)sprintf_s(v10, v18 - v10, (INT8 *)"%%%u")];
  if( v6 )
    LODWORD(v11) = sprintf_s(v11, v18 - v11, (INT8 *)"]:%u") + (_DWORD)v11;
  v13 = *(_DWORD *)AddressStringLength;
  v14 = (_DWORD)v11 - (v12 + 32) + 1;
  *(_DWORD *)AddressStringLength = v14;
  if( v13 < v14 )
    return 3221225485i64;
  memmove((UINT8 *)AddressString, &Src, v14);
  return 0i64;
}

Referenced by:

No references.