int __userpurge CLogin::OnCheckPasswordResult(int a1, int a2, int a3) { int v3; // eax@1 int v4; // edi@1 int v5; // eax@3 int v6; // eax@4 unsigned __int8 v7; // al@5 int v8; // ebx@5 int v9; // ecx@5 unsigned __int8 v10; // al@8 signed int v11; // ebx@8 int v12; // eax@11 int v13; // edx@11 int v14; // edx@11 int v15; // edi@11 int v16; // edi@13 char *v17; // ecx@15 int v18; // esi@19 int v19; // ecx@30 int v20; // ecx@32 VARIANTARG *v21; // eax@35 int v22; // eax@35 int v23; // edi@35 void *v24; // esp@36 int v25; // eax@36 VARIANTARG *v26; // eax@36 int v27; // eax@36 int v28; // ecx@36 int v29; // esi@36 int v30; // eax@37 const WCHAR *v31; // eax@37 int v32; // ecx@41 int v33; // eax@43 int v34; // ecx@43 void (__stdcall *v35)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // ecx@48 int v36; // ebx@52 int v37; // eax@54 int v38; // ecx@54 int v39; // eax@55 int v40; // eax@69 int v41; // eax@72 int v42; // edi@84 int v43; // ebx@90 int v44; // edi@90 int v45; // ecx@91 int v46; // ecx@100 int v47; // edi@103 int v48; // eax@104 int v49; // ecx@106 char v50; // dl@109 char v51; // cl@109 char v52; // dl@109 char v53; // cl@109 char v54; // dl@109 char v55; // cl@109 char v56; // dl@109 int v57; // eax@112 int v59; // [sp-4Ch] [bp-B0h]@41 int v60; // [sp-48h] [bp-ACh]@41 int v61; // [sp-44h] [bp-A8h]@41 signed int v62; // [sp-40h] [bp-A4h]@41 int v63; // [sp-3Ch] [bp-A0h]@36 int v64; // [sp-38h] [bp-9Ch]@36 const WCHAR *v65; // [sp-34h] [bp-98h]@36 int v66; // [sp-30h] [bp-94h]@36 int v67; // [sp-2Ch] [bp-90h]@20 int v68; // [sp-28h] [bp-8Ch]@20 int v69; // [sp-24h] [bp-88h]@15 int v70; // [sp-20h] [bp-84h]@15 void *v71; // [sp-1Ch] [bp-80h]@15 signed int v72; // [sp-18h] [bp-7Ch]@15 int v73; // [sp-14h] [bp-78h]@15 unsigned int v74; // [sp-10h] [bp-74h]@1 VARIANTARG Dst; // [sp+0h] [bp-64h]@36 VARIANTARG pvarg; // [sp+10h] [bp-54h]@35 VARIANTARG pvargDest; // [sp+20h] [bp-44h]@33 int v78; // [sp+30h] [bp-34h]@90 int v79; // [sp+38h] [bp-2Ch]@90 int v80; // [sp+40h] [bp-24h]@11 int v81; // [sp+44h] [bp-20h]@11 int v82; // [sp+48h] [bp-1Ch]@11 unsigned __int16 v83; // [sp+4Eh] [bp-16h]@15 unsigned __int16 v84; // [sp+50h] [bp-14h]@12 unsigned __int16 v85; // [sp+52h] [bp-12h]@15 int v86; // [sp+58h] [bp-Ch]@1 int (*v87)(); // [sp+5Ch] [bp-8h]@1 int v88; // [sp+60h] [bp-4h]@1 char v89; // [sp+64h] [bp+0h]@1 char v90; // [sp+68h] [bp+4h]@37 int v91; // [sp+78h] [bp+14h]@90 int v92; // [sp+7Ch] [bp+18h]@97 int v93; // [sp+80h] [bp+1Ch]@97 const WCHAR *v94; // [sp+84h] [bp+20h]@97 int v95; // [sp+88h] [bp+24h]@90 int v96; // [sp+8Ch] [bp+28h]@97 int v97; // [sp+90h] [bp+2Ch]@97 void *v98; // [sp+94h] [bp+30h]@97 int v99; // [sp+98h] [bp+34h]@8 int v100; // [sp+9Ch] [bp+38h]@90 int v101; // [sp+A0h] [bp+3Ch]@90 int v102; // [sp+A4h] [bp+40h]@41 int *v103; // [sp+A8h] [bp+44h]@37 int v104; // [sp+ACh] [bp+48h]@8 int v105; // [sp+B0h] [bp+4Ch]@5 int v106; // [sp+B4h] [bp+50h]@11 int v107; // [sp+B8h] [bp+54h]@15 int v108; // [sp+BCh] [bp+58h]@1 int v109; // [sp+C0h] [bp+5Ch]@33 int v110; // [sp+C8h] [bp+64h]@11 int *v111; // [sp+CCh] [bp+68h]@11 unsigned int v112; // [sp+D0h] [bp+6Ch]@1 v88 = -1; v87 = ehhandler__OnCheckPasswordResult_CLogin__IAEXAAVCInPacket___Z; v86 = a1; v112 = (unsigned int)&v89 ^ _security_cookie; v74 = (unsigned int)&v89 ^ _security_cookie; v3 = *(_DWORD *)(TSingleton_CWvsApp_::ms_pInstance + 60); v4 = a2; v108 = a2; if ( v3 == 1 || v3 == 3 ) { v6 = CNMCOClientObject::GetInstance(v74); CNMCOClientObject::DetachAuth(v6); } else { v5 = CNMCOClientObject::GetInstance(v74); CNMCOClientObject::LogoutAuth(v5); } *(_DWORD *)(v4 + 472) = 0; v7 = CInPacket::Decode1(a3); v8 = v7; v105 = v7; *(_BYTE *)(v4 + 600) = CInPacket::Decode1(a3); CInPacket::Decode4(a3); v9 = TSingleton_CUITitle_::ms_pInstance; if ( TSingleton_CUITitle_::ms_pInstance ) CUITitle::EnableLoginCtrl(1); if ( v8 == 2 ) { v10 = CInPacket::Decode1(a3); v11 = v10; v104 = v10; CInPacket::DecodeBuffer(&v99, 8); if ( v11 ) { if ( (unsigned int)(v11 - 21) <= 0x1A ) { v11 = 12; v104 = 12; } dword_10F52E8(&v99, &v82); v12 = Util::FTGetNow(); v111 = (int *)v13; v110 = v12; v80 = Util::FTAddDay(&v110, 1080); v81 = v14; dword_10F52E4(&v80, &v99); v15 = 0; v106 = 0; v88 = 0; if ( (unsigned __int16)v82 >= 0x81Fu ) { StringPool::GetInstance(); v73 = *(_DWORD *)StringPool::GetString_0(&v107, 3191); LOBYTE(v88) = 2; ZXString_char_::Format_0((int)&v106, (char *)v73, v74); LOBYTE(v88) = 0; if ( v107 ) ZXString_char_::_Release((volatile LONG *)(v107 - 12)); } else { if ( v84 <= 0xCu ) v16 = v84; else v16 = v84 % 12; StringPool::GetInstance(); v17 = *(char **)StringPool::GetString_0(&v107, 3142); LOBYTE(v88) = 1; v73 = dword_10F0BE8[v84 > 0xCu]; v72 = v85; v71 = (void *)v16; v70 = (unsigned __int16)v82; v69 = v83; ZXString_char_::Format_0((int)&v106, v17, *(_DWORD *)&dword_10F0BB8[4 * (HIWORD(v82) - 1) % 12]); LOBYTE(v88) = 0; if ( v107 ) ZXString_char_::_Release((volatile LONG *)(v107 - 12)); v15 = 0; } if ( v11 == 99 ) { v108 = v15; v18 = v106; v73 = v106; v72 = (signed int)"You have been blocked for typing in an invalid password or pincode 5 times.\r\n%s"; LOBYTE(v88) = 3; v71 = &v108; LABEL_20: ZXString_char_::Format_0((int)v71, (char *)v72, v73); v73 = v15; v72 = v15; v71 = (void *)v15; v70 = 1; v69 = v15; v68 = v15; v107 = (int)&v67; v67 = v15; sub_430FC0(&v108); LABEL_21: CUtilDlg::Notice(v67, v68, v69, v70, v71, v72, v73); LOBYTE(v88) = 0; if ( v108 != v15 ) ZXString_char_::_Release((volatile LONG *)(v108 - 12)); v88 = -1; if ( v18 != v15 ) ZXString_char_::_Release((volatile LONG *)(v18 - 12)); return sub_D36679(*(_DWORD *)&Dst); } if ( v11 == 199 ) { v108 = v15; v18 = v106; v73 = v106; v72 = (signed int)"You have been blocked for typing in an invalid password or pincode 10 times.\r\n%s"; LOBYTE(v88) = 4; v71 = &v108; goto LABEL_20; } if ( v11 == 299 ) { v108 = v15; v18 = v106; LOBYTE(v88) = 5; ZXString_char_::Format_0( (int)&v108, "You have been blocked for typing in an invalid password or pincode more than 10 times.\r\n%s", v106); v73 = v15; v72 = v15; v71 = (void *)v15; v70 = 1; v69 = v15; v68 = v15; v67 = v19; v107 = (int)&v67; sub_431270(&v108); goto LABEL_21; } if ( v11 == 255 ) { v108 = v15; v18 = v106; LOBYTE(v88) = 6; ZXString_char_::Format_0( (int)&v108, "You have been blocked by MapleStory GM Police for the HACK reason.\r\n%s", v106); v73 = v15; v72 = v15; v71 = (void *)v15; v70 = 1; v69 = v15; v68 = v15; v67 = v20; v107 = (int)&v67; sub_431270(&v108); goto LABEL_21; } Ztl_variant_t::Ztl_variant_t_0(&pvargDest, &::pvarg); LOBYTE(v88) = 7; Ztl_variant_t::Ztl_variant_t_0((VARIANTARG *)&v109, &::pvarg); v73 = v15; v72 = v15; v71 = &pvargDest; v70 = (int)&v109; v69 = (int)&v109; v107 = (int)&v69; LOBYTE(v88) = 8; StringPool::GetInstance(); StringPool::GetBSTR((int)&v69, 3141); LOBYTE(v88) = 9; if ( dword_10F9844 == v15 ) sub_D36100(-2147467261); LOBYTE(v88) = 8; v21 = (VARIANTARG *)IWzResMan::GetObjectA(&pvarg, v69, v70, (int)v71); LOBYTE(v88) = 10; v22 = Ztl_variant_t__GetUnknown(v21, v72, v73); sub_413CF0(v22); sub_401B60(&pvarg); sub_401B60((VARIANTARG *)&v109); LOBYTE(v88) = 14; sub_401B60(&pvargDest); v23 = v107; if ( v107 ) { v24 = alloca(32); v65 = 0; v64 = 0; v25 = sub_406D00(v104, (wchar_t *)&v66); v105 = (int)&v63; sub_404D50(v25); LOBYTE(v88) = 14; v26 = (VARIANTARG *)IWzNameSpace::Getitem_0(&Dst, v63); LOBYTE(v88) = 16; v27 = Ztl_variant_t__GetUnknown(v26, v64, (char)v65); sub_413CF0(v27); sub_401B60(&Dst); v108 = 0; v29 = v105; LOBYTE(v88) = 19; if ( v105 ) { v65 = &WideCharStr; v64 = v28; v103 = &v64; v63 = 9293; StringPool::GetInstance(); StringPool::GetBSTR((int)&v64, v63); LOBYTE(v88) = 19; v30 = IWzNameSpace::Getitem_0(&v90, v64); LOBYTE(v88) = 21; v31 = (const WCHAR *)get_string(v30, v65); ZXString_char_::Assign_unsigned_short_(v31, -1); LOBYTE(v88) = 19; sub_401B60((VARIANTARG *)&v90); } if ( !ZXString_char_::IsEmpty(&v108) ) { if ( v104 == 6 || v104 == 9 ) { v33 = ZXString_char_::Format_0((int)&v108, (char *)v108, v106); sub_430FC0(v33); v65 = 0; v64 = 0; v63 = 0; v62 = 1; v61 = 0; v60 = 0; v59 = v34; v103 = &v59; sub_431270(&v108); CUtilDlg::Notice(v59, v60, v61, v62, v63, v64, v65); } else { v65 = 0; v64 = 0; v63 = 0; v62 = 1; v61 = 0; v60 = 0; ZXString_char_::operator__0_0(&v103, word_F4FF14); v59 = v32; v102 = (int)&v59; LOBYTE(v88) = 22; ZXString_char_::operator__1(&v59, &v106); CUtilDlg::Notice(v59, v60, v61, v62, v63, v64, v65); LOBYTE(v88) = 19; if ( v103 ) ZXString_char_::_Release((volatile LONG *)v103 - 3); } } LOBYTE(v88) = 18; if ( v108 ) ZXString_char_::_Release((volatile LONG *)(v108 - 12)); LOBYTE(v88) = 14; if ( v29 ) (*(void (__stdcall **)(int))(*(_DWORD *)v29 + 8))(v29); v35 = *(void (__stdcall **)(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD))(*(_DWORD *)v23 + 8); LOBYTE(v88) = 0; v35(v23, v66, v67, v68, v69, v70, v71, v72, v73); v88 = -1; if ( v106 ) ZXString_char_::_Release((volatile LONG *)(v106 - 12)); return sub_D36679(*(_DWORD *)&Dst); } v88 = -1; if ( v106 ) ZXString_char_::_Release((volatile LONG *)(v106 - 12)); } } else { if ( v8 == 27 ) { v73 = 0; v72 = 0; v71 = 0; v70 = 0; v69 = v9; v107 = (int)&v69; StringPool::GetInstance(); StringPool::GetString_0(&v69, 5149); v37 = CUtilDlg::YesNo(v69, v70, v71, v72, v73); v73 = 0; if ( v37 == 6 ) { v72 = (signed int)&v107; StringPool::GetInstance(); v39 = *(_DWORD *)StringPool::GetString_0(v72, v73); v88 = 23; sub_C28B90(v39, 0); v88 = -1; if ( v107 ) ZXString_char_::_Release((volatile LONG *)(v107 - 12)); CMSException::CMSException(570425355); v105 = v107; _CxxThrowException(&v105, &dword_FF1704); } v72 = 0; v71 = 0; v70 = 0; v69 = 0; v68 = 0; v67 = v38; v107 = (int)&v67; StringPool::GetInstance(); StringPool::GetString_0(&v67, 5135); CUtilDlg::Notice(v67, v68, v69, v70, v71, v72, v73); return sub_D36679(*(_DWORD *)&Dst); } } v36 = v105; switch ( v105 + 1 ) { case 0: case 7: case 9: case 10: v73 = 0; v72 = 15; goto LABEL_80; case 3: case 4: v73 = 0; v72 = 16; goto LABEL_80; case 14: v73 = 0; v72 = 21; goto LABEL_80; case 6: v73 = 0; v72 = 20; goto LABEL_80; case 5: v73 = 0; v72 = 3; goto LABEL_80; case 8: CLogin::GotoTitle(0, 0); v73 = 0; v72 = 17; goto LABEL_80; case 11: v73 = 0; v72 = 19; goto LABEL_80; case 12: v73 = 0; v72 = 14; goto LABEL_80; case 15: if ( sub_6A0A40(27) ) { v73 = 3188; v72 = (signed int)&v107; StringPool::GetInstance(); v40 = *(_DWORD *)StringPool::GetString_0(v72, v73); v88 = 24; sub_C28B90(v40, 0); v88 = -1; if ( v107 ) ZXString_char_::_Release((volatile LONG *)(v107 - 12)); } break; case 16: if ( sub_6A0A40(26) ) { v73 = 3188; v72 = (signed int)&v105; StringPool::GetInstance(); v41 = *(_DWORD *)StringPool::GetString_0(v72, v73); v88 = 25; sub_C28B90(v41, 0); v88 = -1; if ( v105 ) ZXString_char_::_Release((volatile LONG *)(v105 - 12)); } break; case 17: case 22: v73 = 0; v72 = 33; goto LABEL_80; case 44: v73 = 0; v72 = 72; goto LABEL_80; case 45: v73 = 0; v72 = 78; goto LABEL_80; case 18: v73 = 0; v72 = 27; goto LABEL_80; case 26: v73 = 0; v72 = 40; goto LABEL_80; case 39: v73 = 0; v72 = 901; LABEL_80: CLoginUtilDlg::Error(v72, v73); break; default: break; } if ( v36 && v36 != 12 && v36 != 23 ) return sub_D36679(*(_DWORD *)&Dst); v42 = v108; switch ( *(_BYTE *)(v108 + 600) ) { case 0: case 1: if ( TSingleton_CUITitle_::ms_pInstance ) CUITitle::EnableLoginCtrl(0); if ( v36 == 23 ) { v107 = ZAllocEx_ZAllocAnonSelector_::Alloc(196); v88 = 27; if ( v107 ) ZSocketBuffer::ZSocketBuffer_0_13(v42); return sub_D36679(*(_DWORD *)&Dst); } v107 = CInPacket::Decode4(a3); v43 = (unsigned __int8)CInPacket::Decode1(a3); LOBYTE(v105) = CInPacket::Decode1(a3); v106 = (unsigned __int16)CInPacket::Decode2(a3); v44 = (unsigned __int8)v106 >> 8; LOBYTE(v103) = CInPacket::Decode1(a3); CInPacket::DecodeStr(&v101); v88 = 28; LOBYTE(v102) = CInPacket::Decode1(a3); LOBYTE(v100) = CInPacket::Decode1(a3); CInPacket::DecodeBuffer(&v79, 8); dword_10F52E8(&v79, &v91); v73 = 8; v72 = (signed int)&v78; *(_DWORD *)(v108 + 768) = v43; CInPacket::DecodeBuffer(v72, v73); dword_10F52E8(&v78, &v95); v104 = CInPacket::Decode4(a3); if ( v43 != 10 ) { v46 = TSingleton_CUIGetUserInfo_::ms_pInstance; if ( TSingleton_CUIGetUserInfo_::ms_pInstance ) { CWnd::Destroy(v74); if ( TSingleton_CUIGetUserInfo_::ms_pInstance ) (**(void (__stdcall ***)(_DWORD))(TSingleton_CUIGetUserInfo_::ms_pInstance + 8))(1); } v73 = v46; v111 = &v73; ZXString_char_::ZXString_char_(byte_F4EEDC, -1); v72 = v104; v68 = v95; v69 = v96; v70 = v97; v71 = v98; v67 = v44; v66 = v106; v62 = v91; v63 = v92; v64 = v93; v65 = v94; v61 = v100; v60 = v102; v59 = v102; v102 = (int)&v59; LOBYTE(v88) = 31; sub_431270(&v101); LOBYTE(v88) = 28; CWvsContext::SetAccountInfo( v107, v43, v105, v103, v59, v60, v61, v62, v63, v64, v65, v66, v67, v68, v69, v70, v71, v72, v73); v47 = (unsigned __int8)CInPacket::Decode1(a3); *(_BYTE *)(v108 + 476) = CInPacket::Decode1(a3); if ( v47 ) { COutPacket::COutPacket_0(32); LOBYTE(v88) = 33; v73 = (int)&v89; } else { v48 = *(_DWORD *)(TSingleton_CWvsApp_::ms_pInstance + 60); if ( v48 == 1 || v48 == 3 ) goto LABEL_109; COutPacket::COutPacket_0(30); LOBYTE(v88) = 32; COutPacket::Encode1(1); COutPacket::Encode1(1); v73 = v49; v111 = &v73; ZXString_char_::ZXString_char_(byte_F4EEDC, -1); COutPacket::EncodeStr(v73); v73 = (int)&v89; } CClientSocket::SendPacket(TSingleton_CClientSocket_::ms_pInstance, v73); LOBYTE(v88) = 28; sub_4361A0(&v90); LABEL_109: CInPacket::DecodeBuffer(&v110, 8); v50 = BYTE1(v110); *(_BYTE *)(TSingleton_CWvsContext_::ms_pInstance + 8424) = v110; v51 = BYTE2(v110); *(_BYTE *)(TSingleton_CWvsContext_::ms_pInstance + 8425) = v50; v52 = BYTE3(v110); *(_BYTE *)(TSingleton_CWvsContext_::ms_pInstance + 8426) = v51; v53 = (char)v111; *(_BYTE *)(TSingleton_CWvsContext_::ms_pInstance + 8427) = v52; v54 = BYTE1(v111); *(_BYTE *)(TSingleton_CWvsContext_::ms_pInstance + 8428) = v53; v55 = BYTE2(v111); *(_BYTE *)(TSingleton_CWvsContext_::ms_pInstance + 8429) = v54; v56 = BYTE3(v111); *(_BYTE *)(TSingleton_CWvsContext_::ms_pInstance + 8430) = v55; *(_BYTE *)(TSingleton_CWvsContext_::ms_pInstance + 8431) = v56; goto LABEL_98; } v45 = TSingleton_CUITitle_::ms_pInstance; if ( TSingleton_CUITitle_::ms_pInstance ) CUITitle::EnableLoginCtrl(1); if ( !TSingleton_CUIGetUserInfo_::ms_pInstance ) { v111 = (int *)ZAllocEx_ZAllocAnonSelector_::Alloc(400); LOBYTE(v88) = 29; if ( v111 ) CUIGetUserInfo::CUIGetUserInfo(v108); LOBYTE(v88) = 28; } v73 = v45; v111 = &v73; ZXString_char_::ZXString_char_(byte_F4EEDC, -1); v72 = v104; v68 = v95; v69 = v96; v70 = v97; v71 = v98; v67 = v44; v66 = v106; v62 = v91; v63 = v92; v64 = v93; v65 = v94; v61 = v100; v60 = v102; v59 = v102; v102 = (int)&v59; LOBYTE(v88) = 30; sub_431270(&v101); LOBYTE(v88) = 28; CWvsContext::SetAccountInfo( v107, 10, v105, v103, v59, v60, v61, v62, v63, v64, v65, v66, v67, v68, v69, v70, v71, v72, v73); LABEL_98: v88 = -1; if ( v101 ) ZXString_char_::_Release((volatile LONG *)(v101 - 12)); return sub_D36679(*(_DWORD *)&Dst); case 2: case 3: if ( CLoginUtilDlg::YesNo(31, 0) ) { if ( !*(_DWORD *)(v42 + 464) ) { v73 = 4; v72 = (signed int)&v107; StringPool::GetInstance(); v57 = *(_DWORD *)StringPool::GetString_0(v72, v73); v88 = 26; sub_C28B90(v57, 0); v88 = -1; if ( v107 ) ZXString_char_::_Release((volatile LONG *)(v107 - 12)); } } return sub_D36679(*(_DWORD *)&Dst); default: CLoginUtilDlg::Error(15, 0); return sub_D36679(*(_DWORD *)&Dst); } }