signed int __userpurge APH_HandleRealmList(int a1, __int16 *a2, CDataStore *dataStore) { __int16 *ST10_4_0; // ST10_4@0 int v4; // esi@1 int v6; // ebx@4 signed int v7; // edi@4 __int16 *v8; // ST08_4@4 unsigned int v9; // edi@9 int v10; // edx@11 int s; // [sp+234h] [bp+0h]@1 unsigned int v12; // [sp+230h] [bp-4h]@1 int v13; // [sp+14h] [bp-220h]@1 unsigned __int16 v14; // [sp+24h] [bp-210h]@3 int v15; // [sp+10h] [bp-224h]@4 char v16; // [sp+4h] [bp-230h]@4 unsigned __int16 v17; // [sp+28h] [bp-20Ch]@4 char value; // [sp+22h] [bp-212h]@5 char v19; // [sp+1Ch] [bp-218h]@5 char v20; // [sp+2Fh] [bp-205h]@5 int data; // [sp+130h] [bp-104h]@5 int v22; // [sp+30h] [bp-204h]@5 char v23; // [sp+8h] [bp-22Ch]@5 char v24; // [sp+1Fh] [bp-215h]@5 char v25; // [sp+1Eh] [bp-216h]@5 char v26; // [sp+20h] [bp-214h]@5 char v27; // [sp+21h] [bp-213h]@6 char v28; // [sp+1Dh] [bp-217h]@6 char v29; // [sp+23h] [bp-211h]@6 char v30; // [sp+18h] [bp-21Ch]@6 char v31; // [sp+Ch] [bp-228h]@9 v12 = (unsigned int)& s ^ dword_90D530; v4 = (int)dataStore; v13 = a1; if ( !sub_7EC140((int)dataStore, 2) || (CDataStore_ReadInt16((CDataStore *)v4, (CDataStore *)&v14, ST10_4_0), !sub_7EC140(v4, v14)) ) return 0; v15 = *(_DWORD *)(v4 + 20); CDataStore_ReadInt32((CDataStore *)v4, (int *)&v16); v6 = *(_DWORD *)(v4 + 20); CDataStore_ReadInt16((CDataStore *)v4, (CDataStore *)&v17, a2); v7 = 0; if ( v17 ) { while ( 1 ) { CDataStore_ReadByte((CDataStore *)v4, (BYTE)&value); CDataStore_ReadByte((CDataStore *)v4, (BYTE)&v19); CDataStore_ReadByte((CDataStore *)v4, (BYTE)&v20); CDataStore_ReadCString((CDataStore *)v4, &data, 256); CDataStore_ReadCString((CDataStore *)v4, &v22, 256); CDataStore_ReadFloat((CDataStore *)v4, (float *)&v23); CDataStore_ReadByte((CDataStore *)v4, (BYTE)&v24); CDataStore_ReadByte((CDataStore *)v4, (BYTE)&v25); CDataStore_ReadByte((CDataStore *)v4, (BYTE)&v26); if ( v20 & 4 ) { CDataStore_ReadByte((CDataStore *)v4, (BYTE)&v27); CDataStore_ReadByte((CDataStore *)v4, (BYTE)&v28); CDataStore_ReadByte((CDataStore *)v4, (BYTE)&v29); CDataStore_ReadInt16((CDataStore *)v4, (CDataStore *)&v30, v8); } if ( *(_DWORD *)(v4 + 20) > *(_DWORD *)(v4 + 16) ) break; ++v7; if ( v7 >= v17 ) goto LABEL_9; } } else { LABEL_9: CDataStore_ReadInt16((CDataStore *)v4, (CDataStore *)&v31, v8); v9 = *(_DWORD *)(v4 + 20); if ( v9 <= *(_DWORD *)(v4 + 16) && v9 - v15 == v14 ) { v10 = v13; *(_DWORD *)(v4 + 20) = v6; (*(int (__stdcall **)(int))(**(_DWORD **)(v10 + 412) + 68))(v4); *(_DWORD *)(v4 + 20) = v9; return 2; } } return 1; }