PopDirectedDripsBuildBroadcastTreePartial

INT64 __fastcall PopDirectedDripsBuildBroadcastTreePartial(INT64 a1, CHAR a2, _DWORD *a3){
  CHAR v3; 
  unsigned int v7; 
  int v8; 
  INT64 v9; 
  int v10; 
  unsigned int a4; 
  INT64 a2a; 
  a2a = 0i64;
  v3 = 0;
  a4 = 0;
  if( (*(_DWORD *)(a1 + 760) & 0x30000) == 0 )
  {
    PopDirectedDripsDiagBroadcastTreeBegin(a1, a2, &a2a);
    v8 = 0;
    v9 = a1;
    while( (*(_DWORD *)(v9 + 760) & 2) != 0 )
    {
      if( !*(_QWORD *)(v9 + 8) || (*(_DWORD *)(v9 + 760) & 4) != 0 )
        goto LABEL_7;
      v9 = *(_QWORD *)(v9 + 8);
LABEL_16:
      if( v9 == a1 )
      {
LABEL_17:
        *a3 |= a4;
        v7 = v8 == 0 ? 0xC00000BB : 0;
        goto LABEL_18;
      }
    }
    v10 = PopDirectedDripsBuildBroadcastTreeFull(v9, a2a, a2, &a4);
    v7 = v10;
    if( v10 >= 0 )
    {
      ++v8;
    }
    else
    {
      v3 = 1;
      if( v10 != -1073741637 )
        goto LABEL_18;
    }
LABEL_7:
    if( v9 == a1 )
      goto LABEL_17;
    while( !*(_QWORD *)v9 )
    {
      v9 = *(_QWORD *)(v9 + 16);
      if( v9 == a1 )
        goto LABEL_16;
    }
    v9 = *(_QWORD *)v9;
    goto LABEL_16;
  }
  v7 = 0;
LABEL_18:
  PopDirectedDripsDiagBroadcastTreeEnd(a2a, v7, a4, v3);
  return v7;
}

Referenced by:

PopDirectedDripsInitializeBroadcast