Untitled

mail@pastecode.io avatar
unknown
c_cpp
2 years ago
2.8 kB
4
Indexable
int __userpurge CLogin::OnSelectWorldResult@<eax>(int a1@<ebp>, int a2@<edi>, int a3)
{
  _DWORD *v3; // ecx
  _DWORD *v4; // edi
  int v5; // ebx
  int result; // eax
  LONG *v7; // ecx
  int v8; // eax
  int v9; // ecx
  int v10; // ebx
  char *v11; // esi
  unsigned int *v12; // eax
  unsigned int *v13; // eax
  int v14; // [esp-2Ch] [ebp-2Ch]
  int v15; // [esp-2Ch] [ebp-2Ch]

  SEHSetup();
  v4 = v3;
  v3[54] = 0;
  if ( dword_7433E4 )
    (*(**(dword_7433D4 + 260) + 48))(*(dword_7433D4 + 260), 3);
  v5 = CInPacket::Decode1(*(a1 + 8));
  result = v5 + 1;
  switch ( v5 )
  {
    case -1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 8:
    case 9:
    case 10:
    case 11:
    case 13:
    case 16:
    case 17:
    case 21:
      goto LABEL_10;
    case 7:
      sub_4CF73D(0);
LABEL_10:
      result = sub_4D7CBF(a1);
      goto LABEL_11;
    case 14:
      result = sub_4D7A52(27);
      if ( !result )
        goto LABEL_11;
      v14 = *StringPool::GetString(a1 - 24, 2380);
      *(a1 - 4) = 0;
      sub_62E601(v14, 0, a2);
      *(a1 - 4) = -1;
      v7 = (a1 - 24);
      break;
    case 15:
      result = sub_4D7A52(26);
      if ( !result )
        goto LABEL_11;
      v15 = *StringPool::GetString(a1 - 28, 2380);
      *(a1 - 4) = 1;
      sub_62E601(v15, 0, a2);
      *(a1 - 4) = -1;
      v7 = (a1 - 28);
      break;
    default:
      goto LABEL_11;
  }
  result = ZXString_char_::_Release(v7);
LABEL_11:
  if ( !v5 || v5 == 12 || v5 == 23 )
  {
    v8 = sub_458F13(v5, a1, v4, 0, *(dword_742AE8 + 8252), *(dword_742AE8 + 8220));
    v9 = *(a1 + 8);
    *(a1 - 36) = v8;
    *(a1 - 32) = CInPacket::Decode1(v9);
    *(a1 - 20) = 0;
    v10 = 0;
    *(a1 - 16) = 0;
    do
    {
      if ( *(a1 - 20) >= *(a1 - 32) )
      {
        *(v4[59] + v10) = 0;
      }
      else
      {
        v11 = (v4[59] + v10);
        sub_480364(v11, *(a1 + 8), 0);
        AvatarLook::AvatarLook_2(v11 + 179, *(a1 + 8));
        if ( CInPacket::Decode1(*(a1 + 8)) )
          CInPacket::DecodeBuffer(*(a1 + 8), (*(a1 - 16) + v4[60]), 0x10u);
        else
          memset(*(a1 - 16) + v4[60], 0, 16);
        if ( *(v10 + v4[59]) == *(a1 - 36) )
          v4[58] = *(a1 - 20);
      }
      *(a1 - 16) += 16;
      ++*(a1 - 20);
      v10 += 356;
    }
    while ( *(a1 - 16) < 48 );
    v12 = ZAllocEx_ZAllocAnonSelector_::Alloc(a1, 128);
    *(a1 + 8) = v12;
    *(a1 - 4) = 2;
    if ( v12 )
      sub_4D2534(v4);
    *(a1 - 4) = -1;
    v13 = ZAllocEx_ZAllocAnonSelector_::Alloc(a1, 712);
    *(a1 + 8) = v13;
    *(a1 - 4) = 3;
    if ( v13 )
      sub_4D3F8C(v4, v4[59]);
    *(a1 - 4) = -1;
    return sub_4CC8FA(a1, dword_743EB8, -1);
  }
  return result;
}