{
  "addr": "0x7ff626dae090",
  "code": "__int64 *__fastcall sub_7FF626DAE090(__int64 a1, __int64 *a2)\n{\n  __int64 *ThreadLocalStoragePointer; // rax\n  __int64 v4; // rax\n  __int64 v5; // rax\n  __int64 v6; // rax\n  __int64 v7; // r15\n  __int64 v9; // rbx\n  __int64 v10; // rcx\n  int v11; // r13d\n  __int32 v12; // r14d\n  _DWORD *v13; // rsi\n  _OWORD *v14; // rdi\n  int v15; // eax\n  __int64 v16; // rcx\n  int v17; // eax\n  int v18; // eax\n  __m128 v19; // xmm6\n  float v20; // xmm7_4\n  int v21; // xmm8_4\n  unsigned int v22; // eax\n  __int64 v23; // rax\n  __int64 v24; // rbx\n  int v25; // ebx\n  __int64 v26; // rax\n  __m128 v27; // xmm1\n  __int64 v28; // xmm0_8\n  __int64 v29; // rcx\n  __int64 v30; // rcx\n  _QWORD *v31; // rax\n  __int64 v32; // rcx\n  int v33; // ebx\n  int v34; // ecx\n  __int64 v35; // rax\n  int v36; // ecx\n  __int64 v37; // rbx\n  int v38; // edx\n  _BYTE *v39; // rax\n  _BYTE *v40; // rsi\n  unsigned __int8 *v41; // rax\n  _BYTE *Src_1; // rcx\n  __int64 n305; // r8\n  char *v44; // rdx\n  char v45; // al\n  size_t Size; // rbx\n  __m128i v47; // [rsp+30h] [rbp-D0h] BYREF\n  __int64 v48; // [rsp+40h] [rbp-C0h]\n  __int64 v49; // [rsp+48h] [rbp-B8h] BYREF\n  int v50; // [rsp+50h] [rbp-B0h] BYREF\n  __m128i v51; // [rsp+58h] [rbp-A8h] BYREF\n  int v52; // [rsp+68h] [rbp-98h] BYREF\n  char v53; // [rsp+6Ch] [rbp-94h]\n  int v54; // [rsp+70h] [rbp-90h]\n  __m128i v55; // [rsp+78h] [rbp-88h]\n  __int64 v56; // [rsp+90h] [rbp-70h]\n  __int64 v57; // [rsp+98h] [rbp-68h]\n  _DWORD v58[2]; // [rsp+A0h] [rbp-60h] BYREF\n  char v59; // [rsp+A8h] [rbp-58h]\n  __int64 v60; // [rsp+ACh] [rbp-54h]\n  int v61; // [rsp+B4h] [rbp-4Ch]\n  __int128 v62; // [rsp+B8h] [rbp-48h]\n  unsigned __int64 v63; // [rsp+C8h] [rbp-38h]\n  __int128 v64; // [rsp+D8h] [rbp-28h] BYREF\n  __int64 v65; // [rsp+E8h] [rbp-18h]\n  int v66; // [rsp+F0h] [rbp-10h]\n  _BYTE v67[40]; // [rsp+F8h] [rbp-8h] BYREF\n  char v68[128]; // [rsp+120h] [rbp+20h] BYREF\n  _BYTE Src[320]; // [rsp+1A0h] [rbp+A0h] BYREF\n  char v70; // [rsp+368h] [rbp+268h] BYREF\n  __int64 v71; // [rsp+370h] [rbp+270h]\n  __int64 v72; // [rsp+378h] [rbp+278h]\n\n  ThreadLocalStoragePointer = (__int64 *)NtCurrentTeb()->ThreadLocalStoragePointer; /*0x7ff626dae0a6*/\n  *a2 = 0; /*0x7ff626dae0b9*/\n  a2[1] = 0; /*0x7ff626dae0bc*/\n  v4 = *ThreadLocalStoragePointer; /*0x7ff626dae0c0*/\n  a2[2] = 0; /*0x7ff626dae0c3*/\n  v57 = v4; /*0x7ff626dae0c7*/\n  v5 = *(_QWORD *)(v4 + 464); /*0x7ff626dae0cb*/\n  if ( v5 ) /*0x7ff626dae0d2*/\n    v6 = *(_QWORD *)(v5 + 280); /*0x7ff626dae0d4*/\n  else\n    v6 = 0; /*0x7ff626dae0dd*/\n  v7 = *(_QWORD *)(v6 + 16); /*0x7ff626dae0e0*/\n  v56 = sub_7FF624DB9A20(&off_7FF628EC50D0, *(unsigned __int16 *)(v7 + 28), 0, &v70); /*0x7ff626dae0ff*/\n  if ( !v56 ) /*0x7ff626dae106*/\n  {\n    sub_7FF627CB3EF0(v7 + 16, v68, 128); /*0x7ff626dae116*/\n    ai_Handle_GameEventLogging(3, \"Cannot find neighborhood's map record!%s\", v68); /*0x7ff626dae12b*/\n    return a2; /*0x7ff626dae140*/\n  }\n  v9 = qword_7FF628EC5588; /*0x7ff626dae149*/\n  if ( qword_7FF628EC5588 ) /*0x7ff626dae16c*/\n  {\n    (*(void (__fastcall **)(__int64, __m128i *, _QWORD))(*(_QWORD *)qword_7FF628EC5588 + 56LL))( /*0x7ff626dae17e*/\n      qword_7FF628EC5588,\n      &v51,\n      *(unsigned __int16 *)(v7 + 28));\n    v48 = v9; /*0x7ff626dae186*/\n    v47 = v51; /*0x7ff626dae193*/\n    (*(void (__fastcall **)(__int64, __m128i *))(*(_QWORD *)v9 + 72LL))(v9, &v51); /*0x7ff626dae19b*/\n    v10 = v9; /*0x7ff626dae1a3*/\n    v11 = _mm_cvtsi128_si32(v51); /*0x7ff626dae1ac*/\n    v12 = v51.m128i_i32[2]; /*0x7ff626dae1b6*/\n    v55 = v51; /*0x7ff626dae1bb*/\n  }\n  else\n  {\n    v12 = -1; /*0x7ff626dae1c2*/\n    v47.m128i_i64[0] = -1; /*0x7ff626dae1c8*/\n    v10 = 0; /*0x7ff626dae1d1*/\n    v47.m128i_i64[1] = -1; /*0x7ff626dae1d4*/\n    v48 = 0; /*0x7ff626dae1dd*/\n    v11 = -1; /*0x7ff626dae1e2*/\n    v55.m128i_i64[0] = -1; /*0x7ff626dae1e5*/\n    v55.m128i_i64[1] = -1; /*0x7ff626dae1ee*/\n  }\n  while ( v47.m128i_i32[0] != v11 /*0x7ff626dae249*/\n       || *(__int64 *)((char *)v47.m128i_i64 + 4) != __PAIR64__(v12, v55.m128i_u32[1])\n       || v47.m128i_i32[3] != v55.m128i_i32[3] )\n  {\n    v13 = (_DWORD *)(*(__int64 (__fastcall **)(__int64, __m128i *))(*(_QWORD *)v10 + 48LL))(v10, &v47); /*0x7ff626dae25d*/\n    v14 = sub_7FF626D3BDB0(a2); /*0x7ff626dae27b*/\n    sub_7FF624DC2E30(v13 + 18, 7, 72, &off_7FF628EC54F0); /*0x7ff626dae27e*/\n    *((_DWORD *)v14 + 2) = v15; /*0x7ff626dae28a*/\n    sub_7FF624DC2E30(v13 + 18, 11, 72, &off_7FF628EC54F0); /*0x7ff626dae29c*/\n    v16 = v56; /*0x7ff626dae2a1*/\n    *((_DWORD *)v14 + 3) = v17; /*0x7ff626dae2af*/\n    v62 = 0; /*0x7ff626dae2c1*/\n    sub_7FF624DC2E30(v16 + 12, 2, 12, &off_7FF628EC50D0); /*0x7ff626dae2c6*/\n    v61 = v18; /*0x7ff626dae2d2*/\n    v19.m128_i32[0] = 0; /*0x7ff626dae2e4*/\n    v20 = 0.0; /*0x7ff626dae2e7*/\n    v21 = 0; /*0x7ff626dae2ea*/\n    sub_7FF624DC2E30(v13 + 18, 13, 72, &off_7FF628EC54F0); /*0x7ff626dae2ee*/\n    v23 = sub_7FF624DB9A20(&off_7FF628EB9FE0, v22, 0, &v70); /*0x7ff626dae306*/\n    v24 = v23; /*0x7ff626dae30b*/\n    if ( v23 ) /*0x7ff626dae311*/\n    {\n      v64 = *(_OWORD *)(v23 + 16); /*0x7ff626dae31f*/\n      sub_7FF627C9F230(v67, &v64); /*0x7ff626dae323*/\n      v49 = 0; /*0x7ff626dae32d*/\n      v50 = 0; /*0x7ff626dae33b*/\n      ai_Convert_QuaternionToEulerAngles(v67, &v50, (char *)&v49 + 4, &v49); /*0x7ff626dae34c*/\n      v19 = (__m128)*(unsigned __int64 *)(v24 + 4); /*0x7ff626dae357*/\n      v25 = *(_DWORD *)(v24 + 12); /*0x7ff626dae361*/\n      ai_Normalize_Angle_Radians(); /*0x7ff626dae364*/\n      v63 = v19.m128_u64[0]; /*0x7ff626dae36c*/\n      v20 = _mm_shuffle_ps(v19, v19, 85).m128_f32[0]; /*0x7ff626dae37a*/\n      v21 = v25; /*0x7ff626dae37d*/\n    }\n    LODWORD(v71) = v21; /*0x7ff626dae382*/\n    BYTE4(v71) = 1; /*0x7ff626dae390*/\n    v60 = v71; /*0x7ff626dae3a6*/\n    v58[0] = v19.m128_i32[0]; /*0x7ff626dae3aa*/\n    *(float *)&v58[1] = v20; /*0x7ff626dae3af*/\n    v59 = 1; /*0x7ff626dae3b4*/\n    v52 = 0; /*0x7ff626dae3b8*/\n    v53 = 0; /*0x7ff626dae3c0*/\n    v54 = 1; /*0x7ff626dae3c5*/\n    v26 = sub_7FF626C3B2C0(v67, v58, &v52); /*0x7ff626dae3cd*/\n    BYTE4(v72) = 1; /*0x7ff626dae3d2*/\n    v27 = *(__m128 *)v26; /*0x7ff626dae3de*/\n    v28 = *(_QWORD *)(v26 + 16); /*0x7ff626dae3e1*/\n    v66 = *(_DWORD *)(v26 + 24); /*0x7ff626dae3e9*/\n    v65 = v28; /*0x7ff626dae3ec*/\n    *(_DWORD *)v14 = _mm_shuffle_ps(v27, v27, 85).m128_u32[0]; /*0x7ff626dae3f8*/\n    *((_DWORD *)v14 + 1) = _mm_shuffle_ps(v27, v27, 170).m128_u32[0]; /*0x7ff626dae400*/\n    LODWORD(v72) = *v13; /*0x7ff626dae409*/\n    *(_QWORD *)((char *)v14 + 20) = v72; /*0x7ff626dae416*/\n    v29 = *(_QWORD *)(v57 + 464); /*0x7ff626dae41e*/\n    if ( v29 ) /*0x7ff626dae425*/\n      v30 = *(_QWORD *)(v29 + 280); /*0x7ff626dae427*/\n    else\n      v30 = 0; /*0x7ff626dae430*/\n    v31 = (_QWORD *)sub_7FF624BB5510(v30, *((unsigned int *)v14 + 3)); /*0x7ff626dae436*/\n    v33 = (int)v31; /*0x7ff626dae43b*/\n    if ( !v31 ) /*0x7ff626dae441*/\n    {\n      sub_7FF627CB3EF0(v7 + 16, v68, 128); /*0x7ff626dae451*/\n      ai_Handle_GameEventLogging(3, \"House mirror data not found!%s\", v68); /*0x7ff626dae466*/\n      goto LABEL_39; /*0x7ff626dae46b*/\n    }\n    if ( *v31 || v31[1] ) /*0x7ff626dae476*/\n    {\n      *((_BYTE *)v14 + 16) = sub_7FF624BB1880(v32, v31); /*0x7ff626dae48d*/\n      v35 = ai_Process_PlayerContextUpdate(v34, v33 + 16, 83, (unsigned int)sub_7FF626DADFD0, 0); /*0x7ff626dae4a2*/\n      v37 = v35; /*0x7ff626dae4a7*/\n      if ( v35 ) /*0x7ff626dae4ad*/\n      {\n        v38 = *(_DWORD *)(v35 + 80); /*0x7ff626dae4b3*/\n        v51 = 0u; /*0x7ff626dae4be*/\n        v39 = (_BYTE *)sub_7FF626885530(v36, v38, (unsigned int)&v51, 0, 0); /*0x7ff626dae4cd*/\n        v40 = v39; /*0x7ff626dae4d2*/\n        if ( !v39 || *v39 ) /*0x7ff626dae4da*/\n        {\n          Src_1 = Src; /*0x7ff626dae51c*/\n          n305 = 305; /*0x7ff626dae523*/\n          v44 = (char *)(v37 + 17); /*0x7ff626dae529*/\n          while ( 1 ) /*0x7ff626dae530*/\n          {\n            v45 = *v44++; /*0x7ff626dae530*/\n            *Src_1++ = v45; /*0x7ff626dae537*/\n            if ( !v45 ) /*0x7ff626dae53f*/\n              break; /*0x7ff626dae53f*/\n            if ( !--n305 ) /*0x7ff626dae545*/\n            {\n              *Src_1 = 0; /*0x7ff626dae547*/\n              break; /*0x7ff626dae547*/\n            }\n          }\n        }\n        else\n        {\n          v41 = (unsigned __int8 *)FEMALE(\"FULL_PLAYER_NAME\", 0xFFFFFFFFLL, 0, 0); /*0x7ff626dae4f1*/\n          COleControl::FireEvent((COleControl *)Src, 306, v41, v37 + 17, v40 + 264); /*0x7ff626dae515*/\n        }\n        Size = -1; /*0x7ff626dae550*/\n        do /*0x7ff626dae563*/\n          ++Size; /*0x7ff626dae560*/\n        while ( Src[Size] ); /*0x7ff626dae563*/\n        if ( *((_BYTE *)v14 + 72) ) /*0x7ff626dae569*/\n        {\n          sub_7FF624B04810(v14 + 2, Src, Size); /*0x7ff626dae57d*/\n          goto LABEL_39; /*0x7ff626dae582*/\n        }\n        *((_QWORD *)v14 + 5) = 0; /*0x7ff626dae58b*/\n        *((_QWORD *)v14 + 4) = (char *)v14 + 56; /*0x7ff626dae59d*/\n        *((_QWORD *)v14 + 6) = 0x800000000000000FuLL; /*0x7ff626dae5a1*/\n        *((_BYTE *)v14 + 56) = 0; /*0x7ff626dae5ac*/\n        sub_7FF624B04C40(v14 + 2, Size); /*0x7ff626dae5af*/\n        if ( Size ) /*0x7ff626dae5b7*/\n        {\n          memcpy(*((void **)v14 + 4), Src, Size); /*0x7ff626dae5c7*/\n          *(_BYTE *)(Size + *((_QWORD *)v14 + 4)) = 0; /*0x7ff626dae5d0*/\n          *((_QWORD *)v14 + 5) = Size; /*0x7ff626dae5d4*/\n        }\n      }\n      else\n      {\n        if ( *((_BYTE *)v14 + 72) ) /*0x7ff626dae5dc*/\n        {\n          sub_7FF624B04C40(v14 + 2, 0); /*0x7ff626dae5e5*/\n          **((_BYTE **)v14 + 4) = 0; /*0x7ff626dae5ee*/\n          *((_QWORD *)v14 + 5) = 0; /*0x7ff626dae5f1*/\n          goto LABEL_39; /*0x7ff626dae5f5*/\n        }\n        *((_QWORD *)v14 + 5) = 0; /*0x7ff626dae5fb*/\n        *((_QWORD *)v14 + 4) = (char *)v14 + 56; /*0x7ff626dae609*/\n        *((_QWORD *)v14 + 6) = 0x800000000000000FuLL; /*0x7ff626dae60d*/\n        *((_BYTE *)v14 + 56) = 0; /*0x7ff626dae615*/\n        sub_7FF624B04C40(v14 + 2, 0); /*0x7ff626dae618*/\n      }\n      *((_BYTE *)v14 + 72) = 1; /*0x7ff626dae61d*/\n    }\nLABEL_39:\n    (*(void (__fastcall **)(__int64, __m128i *))(*(_QWORD *)v48 + 64LL))(v48, &v47); /*0x7ff626dae621*/\n    v10 = v48; /*0x7ff626dae631*/\n  }\n  return a2; /*0x7ff626dae133*/\n}"
}
