0x88cf0-0x89177 sub_88CF0

_BOOL8 __fastcall sub_88CF0(__int64 a1, __int64 a2, int a3)
{
  _DWORD *v4; // r13
  unsigned int i; // r12d
  char *v6; // r13
  unsigned int j; // r12d
  __int64 k; // rax
  float v9; // xmm0_4
  float v10; // xmm1_4
  int v11; // eax
  float v12; // xmm0_4
  float v14; // [rsp+2Ch] [rbp-C0ACh] BYREF
  _BYTE v15[12]; // [rsp+30h] [rbp-C0A8h] BYREF
  _BYTE v16[12]; // [rsp+3Ch] [rbp-C09Ch] BYREF
  int v17; // [rsp+48h] [rbp-C090h] BYREF
  int v18; // [rsp+4Ch] [rbp-C08Ch]
  int v19; // [rsp+50h] [rbp-C088h]
  int v20; // [rsp+54h] [rbp-C084h] BYREF
  int v21; // [rsp+58h] [rbp-C080h]
  int v22; // [rsp+5Ch] [rbp-C07Ch]
  int v23; // [rsp+60h] [rbp-C078h] BYREF
  int v24; // [rsp+64h] [rbp-C074h]
  int v25; // [rsp+68h] [rbp-C070h]
  int v26; // [rsp+6Ch] [rbp-C06Ch]
  int v27; // [rsp+70h] [rbp-C068h]
  int v28; // [rsp+74h] [rbp-C064h]
  float v29; // [rsp+78h] [rbp-C060h]
  _DWORD v30[12290]; // [rsp+90h] [rbp-C048h] BYREF
  unsigned __int64 v31; // [rsp+C098h] [rbp-40h]

  LODWORD(qword_569EF738) = (_DWORD)&unk_3F800000;
  dword_569EF79C = -1;
  v31 = __readfsqword(0x28u);
  dword_569EF7A8 = -1;
  dword_569EF774 = -1;
  if ( (unsigned int)sub_4A580(&v23, a1, a2) && *(float *)&qword_569EF738 > v29 )
  {
    qword_569EF740 = 0;
    dword_569EF720 = v23;
    dword_569EF748 = 0;
    dword_569EF774 = -1;
    dword_569EF724 = v24;
    dword_569EF728 = v25;
    dword_569EF72C = v26;
    dword_569EF730 = v27;
    dword_569EF734 = v28;
    *(float *)&qword_569EF738 = v29;
  }
  v4 = &unk_151F1DC0;
  for ( i = 0; i != 4; ++i )
  {
    if ( *v4 && (unsigned int)sub_21360(&v17, &v20, &v14, i, a1, a2) && *(float *)&qword_569EF738 > v14 )
    {
      qword_569EF740 = 0;
      dword_569EF720 = v17;
      dword_569EF748 = 0;
      dword_569EF774 = i;
      dword_569EF724 = v18;
      dword_569EF728 = v19;
      dword_569EF72C = v20;
      dword_569EF730 = v21;
      dword_569EF734 = v22;
      *(float *)&qword_569EF738 = v14;
    }
    v4 += 263004;
  }
  if ( a3 )
  {
    v6 = (char *)&unk_7904EA0;
    for ( j = 0; j != 128; ++j )
    {
      if ( *(_DWORD *)v6 && (unsigned int)sub_1EE40(&v17, &v20, &v14, j, a1, a2) && *(float *)&qword_569EF738 > v14 )
      {
        dword_569EF774 = -1;
        dword_569EF720 = v17;
        dword_569EF724 = v18;
        dword_569EF728 = v19;
        dword_569EF72C = v20;
        dword_569EF730 = v21;
        dword_569EF734 = v22;
        qword_569EF740 = *(_QWORD *)(v6 + 20);
        dword_569EF748 = *((_DWORD *)v6 + 7);
        *(float *)&qword_569EF738 = v14;
      }
      v6 += 84;
    }
  }
  for ( k = 0; k != 12; k += 4 )
  {
    v9 = *(float *)(a1 + k);
    v10 = *(float *)(a2 + k);
    if ( v10 <= v9 )
    {
      *(float *)&v15[k] = v10;
      *(float *)&v16[k] = v9;
    }
    else
    {
      *(float *)&v15[k] = v9;
      *(float *)&v16[k] = v10;
    }
  }
  v30[0] = 0;
  v30[12289] = 0;
  sub_87F30(v30, v15, v16, 4);
  v11 = sub_25650(&v23, v30, a1, a2);
  v12 = *(float *)&qword_569EF738;
  if ( v11 && *(float *)&qword_569EF738 > v29 )
  {
    qword_569EF740 = 0;
    dword_569EF720 = v23;
    dword_569EF748 = 0;
    dword_569EF774 = -1;
    dword_569EF724 = v24;
    dword_569EF728 = v25;
    dword_569EF72C = v26;
    dword_569EF730 = v27;
    dword_569EF734 = v28;
    v12 = v29;
    *(float *)&qword_569EF738 = v29;
  }
  return v12 < 1.0;
}
