Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 83 EC ?? 53 55 56 57 8B F1 E8 ?? ?? ?? ?? 8B D8 8D BE ?? ?? ?? ?? 8D 4F
- ___:00932C00
- ___:00932C00 ; =============== S U B R O U T I N E =======================================
- ___:00932C00
- ___:00932C00
- ___:00932C00 CUserLocal__TryDoingTeleport proc near ; CODE XREF: CUserLocal__Update+227Ep
- ___:00932C00
- ___:00932C00 var_C = dword ptr -0Ch
- ___:00932C00 var_8 = byte ptr -8
- ___:00932C00
- ___:00932C00 sub esp, 0Ch
- ___:00932C03 push esi
- ___:00932C04 mov esi, ecx
- ___:00932C06 call get_update_time
- ___:00932C0B cmp dword ptr [esi+3B24h], 0
- ___:00932C12 mov [esp+10h+var_C], eax
- ___:00932C16 jz loc_932D4E
- ___:00932C1C mov ecx, [esi+3B34h]
- ___:00932C22 sub ecx, eax
- ___:00932C24 test ecx, ecx
- ___:00932C26 jg loc_932D4E
- ___:00932C2C mov eax, [esi+19E4h]
- ___:00932C32 test eax, eax
- ___:00932C34 jz short loc_932C3B
- ___:00932C36 lea edx, [eax-0Ch]
- ___:00932C39 jmp short loc_932C3D
- ___:00932C3B ; ---------------------------------------------------------------------------
- ___:00932C3B
- ___:00932C3B loc_932C3B: ; CODE XREF: CUserLocal__TryDoingTeleport+34j
- ___:00932C3B xor edx, edx
- ___:00932C3D
- ___:00932C3D loc_932C3D: ; CODE XREF: CUserLocal__TryDoingTeleport+39j
- ___:00932C3D mov eax, [esi+3B30h]
- ___:00932C43 mov ecx, [esi+3B2Ch]
- ___:00932C49 push ebx
- ___:00932C4A push ebp
- ___:00932C4B push edi
- ___:00932C4C lea edi, [edx+0Ch]
- ___:00932C4F mov edx, [edi]
- ___:00932C51 push eax
- ___:00932C52 mov eax, [edx+40h]
- ___:00932C55 push ecx
- ___:00932C56 push edi
- ___:00932C57 call eax
- ___:00932C59 test eax, eax
- ___:00932C5B jge short loc_932C69
- ___:00932C5D push offset dword_B4692C
- ___:00932C62 push edi
- ___:00932C63 push eax
- ___:00932C64 call _com_issue_errorex
- ___:00932C69 ; ---------------------------------------------------------------------------
- ___:00932C69
- ___:00932C69 loc_932C69: ; CODE XREF: CUserLocal__TryDoingTeleport+5Bj
- ___:00932C69 mov ecx, [esi+3B2Ch]
- ___:00932C6F lea edi, [esi+199Ch]
- ___:00932C75 lea ebx, [edi+0Ch]
- ___:00932C78 push ecx
- ___:00932C79 mov ecx, ebx
- ___:00932C7B call TSecType_long___SetData
- ___:00932C80 mov edx, [esi+3B30h]
- ___:00932C86 push edx
- ___:00932C87 mov ecx, edi
- ___:00932C89 call TSecType_long___SetData
- ___:00932C8E mov ecx, ebx
- ___:00932C90 lea ebp, [esi+1984h]
- ___:00932C96 call TSecType_long___GetData
- ___:00932C9B push eax
- ___:00932C9C lea ecx, [ebp+0Ch]
- ___:00932C9F call TSecType_long___SetData
- ___:00932CA4 mov ecx, edi
- ___:00932CA6 call TSecType_long___GetData
- ___:00932CAB push eax
- ___:00932CAC mov ecx, ebp
- ___:00932CAE call TSecType_long___SetData
- ___:00932CB3 mov eax, [esp+1Ch+var_C]
- ___:00932CB7 xor ebx, ebx
- ___:00932CB9 mov [esi+3B34h], eax
- ___:00932CBF add eax, 258h
- ___:00932CC4 mov [esi+3B24h], ebx
- ___:00932CCA mov [esi+3B38h], eax
- ___:00932CD0 cmp [esi+3B3Ch], ebx
- ___:00932CD6 jz short loc_932D3F
- ___:00932CD8 mov eax, [esi+3B40h]
- ___:00932CDE push eax
- ___:00932CDF call is_teleport_mastery_skill
- ___:00932CE4 add esp, 4
- ___:00932CE7 test eax, eax
- ___:00932CE9 jz short loc_932D3F
- ___:00932CEB lea ecx, [esp+1Ch+var_8]
- ___:00932CEF push ecx
- ___:00932CF0 mov ecx, off_C64068
- ___:00932CF6 call CWvsContext__GetCharacterData
- ___:00932CFB mov edi, [eax+4]
- ___:00932CFE lea ecx, [esp+1Ch+var_8]
- ___:00932D02 call ZRef_CharacterData____ZRef_CharacterData_
- ___:00932D07 mov eax, [esi+3B40h]
- ___:00932D0D mov ecx, dword_C63EA8
- ___:00932D13 lea edx, [esp+1Ch+var_C]
- ___:00932D17 push edx
- ___:00932D18 push eax
- ___:00932D19 push edi
- ___:00932D1A mov [esp+28h+var_C], ebx
- ___:00932D1E call CSkillInfo__GetSkillLevel
- ___:00932D23 cmp eax, ebx
- ___:00932D25 jle short loc_932D3F
- ___:00932D27 mov edi, [esp+1Ch+var_C]
- ___:00932D2B cmp edi, ebx
- ___:00932D2D jz short loc_932D3F
- ___:00932D2F xor edx, edx
- ___:00932D31 push edx
- ___:00932D32 xor ecx, ecx
- ___:00932D34 push ecx
- ___:00932D35 push ebx
- ___:00932D36 push eax
- ___:00932D37 push edi
- ___:00932D38 mov ecx, esi
- ___:00932D3A call CUserLocal__TryDoingBodyAttack
- ___:00932D3F
- ___:00932D3F loc_932D3F: ; CODE XREF: CUserLocal__TryDoingTeleport+D6j
- ___:00932D3F ; CUserLocal__TryDoingTeleport+E9j ...
- ___:00932D3F pop edi
- ___:00932D40 pop ebp
- ___:00932D41 mov [esi+3B3Ch], ebx
- ___:00932D47 mov [esi+3B40h], ebx
- ___:00932D4D pop ebx
- ___:00932D4E
- ___:00932D4E loc_932D4E: ; CODE XREF: CUserLocal__TryDoingTeleport+16j
- ___:00932D4E ; CUserLocal__TryDoingTeleport+26j
- ___:00932D4E pop esi
- ___:00932D4F add esp, 0Ch
- ___:00932D52 retn
- ___:00932D52 CUserLocal__TryDoingTeleport endp
- // Pseudocode (Benny stated this may be wrong due to no debug symbols)
- int __thiscall CUserLocal__TryDoingTeleport(void *this)
- {
- int result; // eax@1
- void *v2; // esi@1
- char v3; // zf@1
- int v4; // eax@3
- int v5; // edx@4
- int v6; // eax@6
- int v7; // edi@6
- char v8; // al@8
- char v9; // al@8
- int v10; // eax@8
- int v11; // edi@10
- int v12; // ST0C_4@10
- int v13; // [sp+Ch] [bp-Ch]@1
- char v14; // [sp+10h] [bp-8h]@10
- v2 = this;
- result = get_update_time();
- v3 = *((_DWORD *)v2 + 3785) == 0;
- v13 = result;
- if ( !v3 )
- {
- if ( *((_DWORD *)v2 + 3789) - result <= 0 )
- {
- v4 = *((_DWORD *)v2 + 1657);
- if ( v4 )
- v5 = v4 - 12;
- else
- v5 = 0;
- v7 = v5 + 12;
- v6 = (*(int (__stdcall **)(int, _DWORD, _DWORD))(*(_DWORD *)(v5 + 12) + 64))(
- v5 + 12,
- *((_DWORD *)v2 + 3787),
- *((_DWORD *)v2 + 3788));
- if ( v6 < 0 )
- com_issue_errorex(v6, v7, dword_B4692C);
- TSecType_long___SetData(*((_DWORD *)v2 + 3787));
- TSecType_long___SetData(*((_DWORD *)v2 + 3788));
- v8 = TSecType_long___GetData((char *)v2 + 6568);
- TSecType_long___SetData(v8);
- v9 = TSecType_long___GetData((char *)v2 + 6556);
- TSecType_long___SetData(v9);
- v10 = v13;
- *((_DWORD *)v2 + 3789) = v13;
- result = v10 + 600;
- *((_DWORD *)v2 + 3785) = 0;
- *((_DWORD *)v2 + 3790) = result;
- if ( *((_DWORD *)v2 + 3791) )
- {
- result = is_teleport_mastery_skill(*((_DWORD *)v2 + 3792));
- if ( result )
- {
- v11 = *(_DWORD *)(CWvsContext__GetCharacterData(&v14) + 4);
- ZRef_CharacterData____ZRef_CharacterData_(&v14);
- v12 = *((_DWORD *)v2 + 3792);
- v13 = 0;
- result = CSkillInfo__GetSkillLevel(v11, v12, &v13);
- if ( result > 0 )
- {
- if ( v13 )
- result = CUserLocal__TryDoingBodyAttack(v13, result, 0, 0, 0);
- }
- }
- }
- *((_DWORD *)v2 + 3791) = 0;
- *((_DWORD *)v2 + 3792) = 0;
- }
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment