.text:00D52860 ; =============== S U B R O U T I N E =======================================
.text:00D52860
.text:00D52860 ; Attributes: bp-based frame
.text:00D52860
.text:00D52860 ; _DWORD __stdcall CTFBotMainAction::Update(CTFBotMainAction *this, CTFBot *, float)
.text:00D52860 _ZN16CTFBotMainAction6UpdateEP6CTFBotf proc near
.text:00D52860 ; DATA XREF: .rodata:012E6924o
.text:00D52860
.text:00D52860 var_60 = qword ptr -60h
.text:00D52860 var_58 = qword ptr -58h
.text:00D52860 var_4C = dword ptr -4Ch
.text:00D52860 var_48 = dword ptr -48h
.text:00D52860 var_40 = dword ptr -40h
.text:00D52860 var_3C = dword ptr -3Ch
.text:00D52860 var_38 = dword ptr -38h
.text:00D52860 var_34 = dword ptr -34h
.text:00D52860 var_28 = dword ptr -28h
.text:00D52860 var_24 = dword ptr -24h
.text:00D52860 var_20 = dword ptr -20h
.text:00D52860 this = dword ptr 8
.text:00D52860 arg_4 = dword ptr 0Ch
.text:00D52860 arg_8 = dword ptr 10h
.text:00D52860 arg_C = dword ptr 14h
.text:00D52860
.text:00D52860 push ebp
.text:00D52861 mov ebp, esp
.text:00D52863 push edi
.text:00D52864 push esi
.text:00D52865 push ebx
.text:00D52866 sub esp, 8Ch
.text:00D5286C mov [ebp+var_38], 0
.text:00D52873 mov eax, ds:g_Telemetry+8
.text:00D52878 mov [ebp+var_34], 0
.text:00D5287F mov ebx, [ebp+this]
.text:00D52882 mov esi, [ebp+arg_8]
.text:00D52885 test eax, eax
.text:00D52887 jz loc_D5298F
.text:00D5288D lea edx, [ebp+var_38]
.text:00D52890 mov [esp], eax
.text:00D52893 mov [esp+4], edx
.text:00D52897 mov dword ptr [esp+2Ch], offset aCtfbotmainacti ; "CTFBotMainAction::Update"
.text:00D5289F mov dword ptr [esp+28h], offset aNextbot ; "NextBot"
.text:00D528A7 mov dword ptr [esp+24h], offset aSS ; "(%s)%s"
.text:00D528AF mov dword ptr [esp+20h], offset _ZZN16CTFBotMainAction6UpdateEP6CTFBotfE6tm_fmt ; CTFBotMainAction::Update(CTFBot *,float)::tm_fmt
.text:00D528B7 mov dword ptr [esp+1Ch], 73h
.text:00D528BF mov dword ptr [esp+18h], offset aHomeBuildbo_82 ; "/home/buildbot/buildslave/rel_hl2_dedic"...
.text:00D528C7 mov dword ptr [esp+14h], 0
.text:00D528CF mov dword ptr [esp+0Ch], 0
.text:00D528D7 mov dword ptr [esp+10h], 0
.text:00D528DF mov dword ptr [esp+8], 0
.text:00D528E7 call dword ptr [eax+50h]
.text:00D528EA mov eax, ds:g_Telemetry+8
.text:00D528EF mov edx, [ebp+var_34]
.text:00D528F2 mov [ebp+var_20], eax
.text:00D528F5 mov eax, [ebp+var_38]
.text:00D528F8 mov [ebp+var_24], edx
.text:00D528FB mov [ebp+var_28], eax
.text:00D528FE mov eax, dword ptr g_VProfCurrentProfile+100Ch
.text:00D52903 test eax, eax
.text:00D52905 jnz loc_D529B8
.text:00D5290B
.text:00D5290B loc_D5290B: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+14Bj
.text:00D5290B xor edi, edi
.text:00D5290D
.text:00D5290D loc_D5290D: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+170j
.text:00D5290D mov [esp], esi ; this
.text:00D52910 call _ZNK11CBaseEntity13GetTeamNumberEv ; CBaseEntity::GetTeamNumber(void)
.text:00D52915 cmp eax, 3
.text:00D52918 jz loc_D529D8
.text:00D5291E mov [esp], esi ; this
.text:00D52921 call _ZNK11CBaseEntity13GetTeamNumberEv ; CBaseEntity::GetTeamNumber(void)
.text:00D52926 cmp eax, 2
.text:00D52929 jz loc_D529D8
.text:00D5292F mov dword ptr [ebx], 3
.text:00D52935 mov dword ptr [ebx+4], 0
.text:00D5293C mov dword ptr [ebx+8], offset unk_12E63FB
.text:00D52943
.text:00D52943 loc_D52943: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+453j
.text:00D52943 mov eax, edi
.text:00D52945 test al, al
.text:00D52947 jnz loc_D52AB2
.text:00D5294D
.text:00D5294D loc_D5294D: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+24Cj
.text:00D5294D ; CTFBotMainAction::Update(CTFBot *,float)+263j ...
.text:00D5294D mov ecx, [ebp+var_20]
.text:00D52950 test ecx, ecx
.text:00D52952 jz short loc_D52980
.text:00D52954 mov eax, [ebp+var_28]
.text:00D52957 mov dword ptr [esp+14h], 0
.text:00D5295F mov edx, [ebp+var_24]
.text:00D52962 mov dword ptr [esp+10h], 0
.text:00D5296A mov dword ptr [esp+0Ch], 0
.text:00D52972 mov [esp], ecx
.text:00D52975 mov [esp+4], eax
.text:00D52979 mov [esp+8], edx
.text:00D5297D call dword ptr [ecx+54h]
.text:00D52980
.text:00D52980 loc_D52980: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+F2j
.text:00D52980 add esp, 8Ch
.text:00D52986 mov eax, ebx
.text:00D52988 pop ebx
.text:00D52989 pop esi
.text:00D5298A pop edi
.text:00D5298B pop ebp
.text:00D5298C retn 4
.text:00D5298F ; ---------------------------------------------------------------------------
.text:00D5298F
.text:00D5298F loc_D5298F: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+27j
.text:00D5298F cmp dword ptr g_VProfCurrentProfile+100Ch, 0
.text:00D52996 mov [ebp+var_20], 0
.text:00D5299D mov [ebp+var_28], 0
.text:00D529A4 mov [ebp+var_24], 0
.text:00D529AB jz loc_D5290B
.text:00D529B1 lea esi, [esi+0]
.text:00D529B8
.text:00D529B8 loc_D529B8: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+A5j
.text:00D529B8 mov edi, dword ptr g_VProfCurrentProfile+19B8h
.text:00D529BE call ThreadGetCurrentId
.text:00D529C3 cmp edi, eax
.text:00D529C5 jz loc_D52B10
.text:00D529CB
.text:00D529CB loc_D529CB: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+30Bj
.text:00D529CB mov edi, 1
.text:00D529D0 jmp loc_D5290D
.text:00D529D0 ; ---------------------------------------------------------------------------
.text:00D529D5 align 4
.text:00D529D8
.text:00D529D8 loc_D529D8: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+B8j
.text:00D529D8 ; CTFBotMainAction::Update(CTFBot *,float)+C9j
.text:00D529D8 mov [esp], esi ; this
.text:00D529DB call _ZN9CTFPlayer25FindPartnerTauntInitiatorEv ; CTFPlayer::FindPartnerTauntInitiator(void)
.text:00D529E0 test eax, eax
.text:00D529E2 jz loc_D52B70
.text:00D529E8 mov dword ptr [esp], 50h ; unsigned int
.text:00D529EF call _Znwj ; operator new(uint)
.text:00D529F4 mov edx, [ebp+arg_4]
.text:00D529F7 mov dword ptr [eax+20h], 0
.text:00D529FE mov dword ptr [eax+24h], 0
.text:00D52A05 mov dword ptr [eax+28h], 0
.text:00D52A0C mov dword ptr [eax+0Ch], 0
.text:00D52A13 mov dword ptr [eax+10h], 0
.text:00D52A1A mov dword ptr [eax+14h], 0
.text:00D52A21 mov dword ptr [eax+18h], 0
.text:00D52A28 mov dword ptr [eax+1Ch], 0
.text:00D52A2F mov dword ptr [eax+8], 0
.text:00D52A36 mov byte ptr [eax+30h], 0
.text:00D52A3A mov byte ptr [eax+31h], 0
.text:00D52A3E mov dword ptr [eax+2Ch], 0
.text:00D52A45 mov dword ptr [eax], offset off_12E95E8
.text:00D52A4B mov dword ptr [eax+4], offset off_12E9760
.text:00D52A52 mov dword ptr [eax+34h], offset off_123E4D0
.text:00D52A59 mov dword ptr [eax+3Ch], 0BF800000h
.text:00D52A60 mov dword ptr [eax+38h], 0
.text:00D52A67 mov dword ptr [eax+40h], offset off_123E4D0
.text:00D52A6E mov dword ptr [eax+48h], 0BF800000h
.text:00D52A75 mov dword ptr [eax+44h], 0
.text:00D52A7C mov [ebx+4], eax
.text:00D52A7F mov eax, edi
.text:00D52A81 test al, al
.text:00D52A83 mov dword ptr [edx+20h], 0
.text:00D52A8A mov dword ptr [edx+24h], 0
.text:00D52A91 mov dword ptr [edx+28h], 0
.text:00D52A98 mov dword ptr [edx+2Ch], 0
.text:00D52A9F mov dword ptr [ebx], 2
.text:00D52AA5 mov dword ptr [ebx+8], offset aRespondingToTe ; "Responding to teammate partner taunt"
.text:00D52AAC jz loc_D5294D
.text:00D52AB2
.text:00D52AB2 loc_D52AB2: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+E7j
.text:00D52AB2 cmp byte ptr g_VProfCurrentProfile+1010h, 0
.text:00D52AB9 jz short loc_D52AC9
.text:00D52ABB mov edi, dword ptr g_VProfCurrentProfile+100Ch
.text:00D52AC1 test edi, edi
.text:00D52AC3 jz loc_D5294D
.text:00D52AC9
.text:00D52AC9 loc_D52AC9: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+259j
.text:00D52AC9 mov esi, dword ptr g_VProfCurrentProfile+19B8h
.text:00D52ACF call ThreadGetCurrentId
.text:00D52AD4 cmp esi, eax
.text:00D52AD6 jnz loc_D5294D
.text:00D52ADC mov eax, dword ptr g_VProfCurrentProfile+1014h
.text:00D52AE1 mov [esp], eax ; this
.text:00D52AE4 call _ZN10CVProfNode9ExitScopeEv ; CVProfNode::ExitScope(void)
.text:00D52AE9 test al, al
.text:00D52AEB mov eax, dword ptr g_VProfCurrentProfile+1014h
.text:00D52AF0 jz short loc_D52AFA
.text:00D52AF2 mov eax, [eax+64h]
.text:00D52AF5 mov dword ptr g_VProfCurrentProfile+1014h, eax
.text:00D52AFA
.text:00D52AFA loc_D52AFA: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+290j
.text:00D52AFA cmp eax, (offset g_VProfCurrentProfile+1018h)
.text:00D52AFF setz byte ptr g_VProfCurrentProfile+1010h
.text:00D52B06 jmp loc_D5294D
.text:00D52B06 ; ---------------------------------------------------------------------------
.text:00D52B0B align 10h
.text:00D52B10
.text:00D52B10 loc_D52B10: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+165j
.text:00D52B10 mov eax, dword ptr g_VProfCurrentProfile+1014h
.text:00D52B15 cmp dword ptr [eax], offset aCtfbotmainacti ; "CTFBotMainAction::Update"
.text:00D52B1B jz short loc_D52B4A
.text:00D52B1D mov dword ptr [esp+10h], 4 ; int
.text:00D52B25 mov dword ptr [esp+0Ch], offset aNextbot ; "NextBot"
.text:00D52B2D mov dword ptr [esp+8], 0 ; int
.text:00D52B35 mov dword ptr [esp+4], offset aCtfbotmainacti ; "CTFBotMainAction::Update"
.text:00D52B3D mov [esp], eax ; this
.text:00D52B40 call _ZN10CVProfNode10GetSubNodeEPKciS1_i ; CVProfNode::GetSubNode(char const*,int,char const*,int)
.text:00D52B45 mov dword ptr g_VProfCurrentProfile+1014h, eax
.text:00D52B4A
.text:00D52B4A loc_D52B4A: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+2BBj
.text:00D52B4A mov edx, [eax+70h]
.text:00D52B4D mov eax, dword ptr g_VProfCurrentProfile+10A0h
.text:00D52B52 or dword ptr [eax+edx*8+4], 4
.text:00D52B57 mov eax, dword ptr g_VProfCurrentProfile+1014h
.text:00D52B5C mov [esp], eax ; this
.text:00D52B5F call _ZN10CVProfNode10EnterScopeEv ; CVProfNode::EnterScope(void)
.text:00D52B64 mov byte ptr g_VProfCurrentProfile+1010h, 0
.text:00D52B6B jmp loc_D529CB
.text:00D52B70 ; ---------------------------------------------------------------------------
.text:00D52B70
.text:00D52B70 loc_D52B70: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+182j
.text:00D52B70 mov eax, [esi]
.text:00D52B72 mov [esp], esi
.text:00D52B75 call dword ptr [eax+828h]
.text:00D52B7B mov [ebp+var_3C], eax
.text:00D52B7E mov eax, [eax]
.text:00D52B80 mov edx, [eax+114h]
.text:00D52B86 mov [esp], esi ; this
.text:00D52B89 mov [ebp+var_48], edx
.text:00D52B8C call _ZN11CBasePlayer6GetFOVEv ; CBasePlayer::GetFOV(void)
.text:00D52B91 cvtsi2ss xmm0, eax
.text:00D52B95 mov eax, [ebp+var_3C]
.text:00D52B98 mov edx, [ebp+var_48]
.text:00D52B9B movss dword ptr [esp+4], xmm0
.text:00D52BA1 mov [esp], eax
.text:00D52BA4 call edx
.text:00D52BA6 mov eax, ds:g_pGameRules
.text:00D52BAB mov edx, [eax]
.text:00D52BAD mov [esp], eax
.text:00D52BB0 call dword ptr [edx+2D8h]
.text:00D52BB6 test al, al
.text:00D52BB8 jnz loc_D52CCF
.text:00D52BBE
.text:00D52BBE loc_D52BBE: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+47Aj
.text:00D52BBE ; CTFBotMainAction::Update(CTFBot *,float)+4A3j
.text:00D52BBE mov eax, [esi]
.text:00D52BC0 mov [esp], esi
.text:00D52BC3 call dword ptr [eax+210h]
.text:00D52BC9 movss xmm0, dword ptr [eax+4]
.text:00D52BCE mov eax, [ebp+arg_4]
.text:00D52BD1 movss xmm1, [ebp+arg_C]
.text:00D52BD6 addss xmm1, ds:dword_11B7590
.text:00D52BDE subss xmm0, dword ptr [eax+58h]
.text:00D52BE3 divss xmm0, xmm1
.text:00D52BE7 movss xmm1, dword ptr ds:xmmword_11B67C0
.text:00D52BEF andps xmm0, xmm1
.text:00D52BF2 movss dword ptr [eax+54h], xmm0
.text:00D52BF7 mov eax, [esi]
.text:00D52BF9 mov [esp], esi
.text:00D52BFC call dword ptr [eax+210h]
.text:00D52C02 movss xmm0, dword ptr [eax+4]
.text:00D52C07 mov eax, [ebp+arg_4]
.text:00D52C0A movss dword ptr [eax+58h], xmm0
.text:00D52C0F mov eax, ds:dword_17A3A9C
.text:00D52C14 movss xmm0, dword ptr [eax+2Ch]
.text:00D52C19 mov eax, [ebp+arg_4]
.text:00D52C1C comiss xmm0, dword ptr [eax+54h]
.text:00D52C20 jbe loc_D52CC0
.text:00D52C26 xorps xmm0, xmm0
.text:00D52C29 comiss xmm0, dword ptr [eax+5Ch]
.text:00D52C2D jnb loc_D530F6
.text:00D52C33
.text:00D52C33 loc_D52C33: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+46Aj
.text:00D52C33 ; CTFBotMainAction::Update(CTFBot *,float)+8B1j
.text:00D52C33 mov eax, ds:g_pGameRules
.text:00D52C38 cmp byte ptr [eax+966h], 0
.text:00D52C3F jnz loc_D52D7F
.text:00D52C45
.text:00D52C45 loc_D52C45: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+52Aj
.text:00D52C45 ; CTFBotMainAction::Update(CTFBot *,float)+78Aj ...
.text:00D52C45 mov eax, [esi]
.text:00D52C47 mov [esp], esi
.text:00D52C4A call dword ptr [eax+580h]
.text:00D52C50 test al, al
.text:00D52C52 jz loc_D52D08
.text:00D52C58
.text:00D52C58 loc_D52C58: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+4C3j
.text:00D52C58 ; CTFBotMainAction::Update(CTFBot *,float)+4DEj ...
.text:00D52C58 mov [esp], esi ; this
.text:00D52C5B call _ZN6CTFBot19EquipRequiredWeaponEv ; CTFBot::EquipRequiredWeapon(void)
.text:00D52C60 mov [esp], esi ; this
.text:00D52C63 call _ZN6CTFBot29UpdateLookingAroundForEnemiesEv ; CTFBot::UpdateLookingAroundForEnemies(void)
.text:00D52C68 mov eax, [ebp+arg_4]
.text:00D52C6B mov [esp+4], esi ; CTFBot *
.text:00D52C6F mov [esp], eax ; this
.text:00D52C72 call _ZN16CTFBotMainAction17FireWeaponAtEnemyEP6CTFBot ; CTFBotMainAction::FireWeaponAtEnemy(CTFBot *)
.text:00D52C77 mov eax, [ebp+arg_4]
.text:00D52C7A mov [esp+4], esi ; CTFBot *
.text:00D52C7E mov [esp], eax ; this
.text:00D52C81 call _ZN16CTFBotMainAction5DodgeEP6CTFBot ; CTFBotMainAction::Dodge(CTFBot *)
.text:00D52C86 mov dword ptr [esp+4], 4 ; int
.text:00D52C8E mov [esp], esi ; this
.text:00D52C91 call _ZNK9CTFPlayer13IsPlayerClassEi ; CTFPlayer::IsPlayerClass(int)
.text:00D52C96 xor eax, 1
.text:00D52C99 mov dword ptr [ebx], 0
.text:00D52C9F mov [esi+2133h], al
.text:00D52CA5 mov dword ptr [ebx+4], 0
.text:00D52CAC mov dword ptr [ebx+8], 0
.text:00D52CB3 jmp loc_D52943
.text:00D52CB3 ; ---------------------------------------------------------------------------
.text:00D52CB8 align 10h
.text:00D52CC0
.text:00D52CC0 loc_D52CC0: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+3C0j
.text:00D52CC0 mov eax, [ebp+arg_4]
.text:00D52CC3 mov dword ptr [eax+5Ch], 0BF800000h
.text:00D52CCA jmp loc_D52C33
.text:00D52CCF ; ---------------------------------------------------------------------------
.text:00D52CCF
.text:00D52CCF loc_D52CCF: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+358j
.text:00D52CCF mov [esp], esi ; this
.text:00D52CD2 call _ZNK11CBaseEntity13GetTeamNumberEv ; CBaseEntity::GetTeamNumber(void)
.text:00D52CD7 cmp eax, 3
.text:00D52CDA jnz loc_D52BBE
.text:00D52CE0 mov eax, [esi]
.text:00D52CE2 mov dword ptr [esp+0Ch], 1
.text:00D52CEA mov dword ptr [esp+8], 3
.text:00D52CF2 mov dword ptr [esp+4], 3E8h
.text:00D52CFA mov [esp], esi
.text:00D52CFD call dword ptr [eax+3FCh]
.text:00D52D03 jmp loc_D52BBE
.text:00D52D08 ; ---------------------------------------------------------------------------
.text:00D52D08
.text:00D52D08 loc_D52D08: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+3F2j
.text:00D52D08 lea eax, [esi+1974h]
.text:00D52D0E mov dword ptr [esp+4], 3
.text:00D52D16 mov [esp], eax
.text:00D52D19 mov [ebp+var_3C], eax
.text:00D52D1C call _ZNK15CTFPlayerShared6InCondE7ETFCond ; CTFPlayerShared::InCond(ETFCond)
.text:00D52D21 test al, al
.text:00D52D23 jnz loc_D52C58
.text:00D52D29 mov eax, [ebp+var_3C]
.text:00D52D2C mov dword ptr [esp+4], 2
.text:00D52D34 mov [esp], eax
.text:00D52D37 call _ZNK15CTFPlayerShared6InCondE7ETFCond ; CTFPlayerShared::InCond(ETFCond)
.text:00D52D3C test al, al
.text:00D52D3E jnz loc_D52C58
.text:00D52D44 mov [esp], esi ; this
.text:00D52D47 call _ZN9CTFPlayer11CanDisguiseEv ; CTFPlayer::CanDisguise(void)
.text:00D52D4C test al, al
.text:00D52D4E jz loc_D52C58
.text:00D52D54 mov eax, [ebp+arg_4]
.text:00D52D57 mov eax, [eax+60h]
.text:00D52D5A test eax, eax
.text:00D52D5C mov [ebp+var_48], eax
.text:00D52D5F jnz loc_D53082
.text:00D52D65 cmp dword ptr [esi+24D8h], 1
.text:00D52D6C jbe loc_D53024
.text:00D52D72 mov [esp], esi ; this
.text:00D52D75 call _ZN6CTFBot27DisguiseAsMemberOfEnemyTeamEv ; CTFBot::DisguiseAsMemberOfEnemyTeam(void)
.text:00D52D7A jmp loc_D52C58
.text:00D52D7F ; ---------------------------------------------------------------------------
.text:00D52D7F
.text:00D52D7F loc_D52D7F: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+3DFj
.text:00D52D7F mov [esp], esi ; this
.text:00D52D82 call _ZNK11CBaseEntity13GetTeamNumberEv ; CBaseEntity::GetTeamNumber(void)
.text:00D52D87 cmp eax, 3
.text:00D52D8A jnz loc_D52C45
.text:00D52D90 mov eax, [esi]
.text:00D52D92 mov dword ptr [esp+0Ch], 1
.text:00D52D9A mov dword ptr [esp+8], 3
.text:00D52DA2 mov dword ptr [esp+4], 64h
.text:00D52DAA mov [esp], esi
.text:00D52DAD call dword ptr [eax+3FCh]
.text:00D52DB3 lea eax, [esi+1974h]
.text:00D52DB9 mov dword ptr [esp+8], 0 ; bool
.text:00D52DC1 mov dword ptr [esp+4], 42C80000h ; float
.text:00D52DC9 mov [esp], eax ; this
.text:00D52DCC mov [ebp+var_48], eax
.text:00D52DCF call _ZN15CTFPlayerShared18AddToSpyCloakMeterEfb ; CTFPlayerShared::AddToSpyCloakMeter(float,bool)
.text:00D52DD4 mov eax, [esi]
.text:00D52DD6 mov [esp], esi
.text:00D52DD9 call dword ptr [eax+4ECh]
.text:00D52DDF mov [esp], esi ; this
.text:00D52DE2 mov [ebp+var_3C], eax
.text:00D52DE5 call _ZNK11CBaseEntity13GetTeamNumberEv ; CBaseEntity::GetTeamNumber(void)
.text:00D52DEA mov edx, [ebp+var_3C]
.text:00D52DED cmp eax, 2
.text:00D52DF0 setnz al
.text:00D52DF3 movzx eax, al
.text:00D52DF6 lea eax, [eax+eax+2]
.text:00D52DFA test edx, edx
.text:00D52DFC jz loc_D5300B
.text:00D52E02 test [edx+1C4h], eax
.text:00D52E08 jz short loc_D52E73
.text:00D52E0A mov eax, [ebp+var_48]
.text:00D52E0D mov dword ptr [esp+0Ch], 0
.text:00D52E15 mov dword ptr [esp+8], 3F000000h
.text:00D52E1D mov dword ptr [esp+4], 5
.text:00D52E25 mov [esp], eax
.text:00D52E28 call _ZN15CTFPlayerShared7AddCondE7ETFCondfP11CBaseEntity ; CTFPlayerShared::AddCond(ETFCond,float,CBaseEntity *)
.text:00D52E2D mov eax, [ebp+var_48]
.text:00D52E30 mov dword ptr [esp+0Ch], 0
.text:00D52E38 mov dword ptr [esp+8], 3F000000h
.text:00D52E40 mov dword ptr [esp+4], 33h
.text:00D52E48 mov [esp], eax
.text:00D52E4B call _ZN15CTFPlayerShared7AddCondE7ETFCondfP11CBaseEntity ; CTFPlayerShared::AddCond(ETFCond,float,CBaseEntity *)
.text:00D52E50 mov eax, [ebp+var_48]
.text:00D52E53 mov dword ptr [esp+0Ch], 0
.text:00D52E5B mov dword ptr [esp+8], 3F000000h ; float
.text:00D52E63 mov dword ptr [esp+4], 8 ; float
.text:00D52E6B mov [esp], eax
.text:00D52E6E call _ZN15CTFPlayerShared7AddCondE7ETFCondfP11CBaseEntity ; CTFPlayerShared::AddCond(ETFCond,float,CBaseEntity *)
.text:00D52E73
.text:00D52E73 loc_D52E73: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+5A8j
.text:00D52E73 test byte ptr [esi+129h], 8
.text:00D52E7A jz short loc_D52E84
.text:00D52E7C mov [esp], esi ; this
.text:00D52E7F call _ZN11CBaseEntity20CalcAbsolutePositionEv ; CBaseEntity::CalcAbsolutePosition(void)
.text:00D52E84
.text:00D52E84 loc_D52E84: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+61Aj
.text:00D52E84 movss xmm0, dword ptr [esi+2A8h]
.text:00D52E8C mov eax, [ebp+var_3C]
.text:00D52E8F movss dword ptr [esp+8], xmm0
.text:00D52E95 movss xmm0, dword ptr [esi+2A4h]
.text:00D52E9D mov [esp], eax ; this
.text:00D52EA0 movss dword ptr [esp+4], xmm0
.text:00D52EA6 call _ZNK8CNavArea4GetZEff ; CNavArea::GetZ(float,float)
.text:00D52EAB test byte ptr [esi+129h], 8
.text:00D52EB2 fstp [ebp+var_48]
.text:00D52EB5 jnz loc_D53017
.text:00D52EBB
.text:00D52EBB loc_D52EBB: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+7BFj
.text:00D52EBB movss xmm0, [ebp+var_48]
.text:00D52EC0 subss xmm0, dword ptr [esi+2ACh]
.text:00D52EC8 comiss xmm0, ds:dword_11B6788
.text:00D52ECF jbe loc_D5300B
.text:00D52ED5 mov eax, [ebp+arg_4]
.text:00D52ED8 xorps xmm0, xmm0
.text:00D52EDB comiss xmm0, dword ptr [eax+70h]
.text:00D52EDF jnb loc_D530D3
.text:00D52EE5 mov eax, [ebp+arg_4]
.text:00D52EE8 add eax, 70h
.text:00D52EEB mov [esp], eax ; this
.text:00D52EEE call _ZNK13IntervalTimer3NowEv ; IntervalTimer::Now(void)
.text:00D52EF3 mov eax, [ebp+arg_4]
.text:00D52EF6 fstp [ebp+var_48]
.text:00D52EF9 movss xmm0, [ebp+var_48]
.text:00D52EFE subss xmm0, dword ptr [eax+70h]
.text:00D52F03 comiss xmm0, ds:dword_11A0408
.text:00D52F0A jbe loc_D52FE0
.text:00D52F10 test byte ptr [esi+129h], 8
.text:00D52F17 jnz loc_D53116
.text:00D52F1D movss xmm5, dword ptr [esi+2ACh]
.text:00D52F25 cvtps2pd xmm5, xmm5
.text:00D52F28 movsd [ebp+var_60], xmm5
.text:00D52F2D
.text:00D52F2D loc_D52F2D: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+8D5j
.text:00D52F2D movss xmm6, dword ptr [esi+2A8h]
.text:00D52F35 cvtps2pd xmm6, xmm6
.text:00D52F38 movsd [ebp+var_58], xmm6
.text:00D52F3D
.text:00D52F3D loc_D52F3D: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+8FAj
.text:00D52F3D ; CTFBotMainAction::Update(CTFBot *,float)+908j
.text:00D52F3D movss xmm2, dword ptr [esi+2A4h]
.text:00D52F45 mov [esp], esi ; this
.text:00D52F48 cvtps2pd xmm2, xmm2
.text:00D52F4B movsd qword ptr [ebp+var_48], xmm2
.text:00D52F50 call _ZNK11CBaseEntity7GetTeamEv ; CBaseEntity::GetTeam(void)
.text:00D52F55 mov edx, [eax]
.text:00D52F57 mov [esp], eax
.text:00D52F5A call dword ptr [edx+304h]
.text:00D52F60 mov [esp], esi ; this
.text:00D52F63 mov [ebp+var_40], eax
.text:00D52F66 call _ZN11CBasePlayer18GetNetworkIDStringEv ; CBasePlayer::GetNetworkIDString(void)
.text:00D52F6B mov [ebp+var_4C], eax
.text:00D52F6E mov eax, ds:engine
.text:00D52F73 mov ecx, [esi+20h]
.text:00D52F76 mov edx, [eax]
.text:00D52F78 mov [esp], eax
.text:00D52F7B mov [esp+4], ecx
.text:00D52F7F call dword ptr [edx+3Ch]
.text:00D52F82 mov edx, [ebp+var_40]
.text:00D52F85 mov [esp+8], eax
.text:00D52F89 lea eax, [esi+0E8Ch]
.text:00D52F8F movsd xmm3, [ebp+var_60]
.text:00D52F94 mov [esp+4], eax
.text:00D52F98 movsd xmm4, [ebp+var_58]
.text:00D52F9D mov dword ptr [esp], offset aSISSUndergroun ; "\"%s<%i><%s><%s>\" underground (positio"...
.text:00D52FA4 movsd xmm2, qword ptr [ebp+var_48]
.text:00D52FA9 movsd qword ptr [esp+24h], xmm3
.text:00D52FAF mov [esp+10h], edx
.text:00D52FB3 mov edx, [ebp+var_4C]
.text:00D52FB6 movsd qword ptr [esp+1Ch], xmm4
.text:00D52FBC movsd qword ptr [esp+14h], xmm2
.text:00D52FC2 mov [esp+0Ch], edx
.text:00D52FC6 call _Z14UTIL_LogPrintfPKcz ; UTIL_LogPrintf(char const*,...)
.text:00D52FCB mov eax, [ebp+var_3C]
.text:00D52FCE mov [esp], esi ; this
.text:00D52FD1 add eax, 2Ch
.text:00D52FD4 mov [esp+4], eax ; Vector *
.text:00D52FD8 call _ZN11CBaseEntity12SetAbsOriginERK6Vector ; CBaseEntity::SetAbsOrigin(Vector const&)
.text:00D52FDD lea esi, [esi+0]
.text:00D52FE0
.text:00D52FE0 loc_D52FE0: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+6AAj
.text:00D52FE0 ; CTFBotMainAction::Update(CTFBot *,float)+7B5j ...
.text:00D52FE0 mov [esp], esi ; this
.text:00D52FE3 call _ZN6CTFBot14ShouldAutoJumpEv ; CTFBot::ShouldAutoJump(void)
.text:00D52FE8 test al, al
.text:00D52FEA jz loc_D52C45
.text:00D52FF0 mov eax, [esi]
.text:00D52FF2 mov [esp], esi
.text:00D52FF5 call dword ptr [eax+820h]
.text:00D52FFB mov edx, [eax]
.text:00D52FFD mov [esp], eax
.text:00D53000 call dword ptr [edx+0CCh]
.text:00D53006 jmp loc_D52C45
.text:00D5300B ; ---------------------------------------------------------------------------
.text:00D5300B
.text:00D5300B loc_D5300B: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+59Cj
.text:00D5300B ; CTFBotMainAction::Update(CTFBot *,float)+66Fj
.text:00D5300B mov eax, [ebp+arg_4]
.text:00D5300E mov dword ptr [eax+70h], 0BF800000h
.text:00D53015 jmp short loc_D52FE0
.text:00D53017 ; ---------------------------------------------------------------------------
.text:00D53017
.text:00D53017 loc_D53017: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+655j
.text:00D53017 mov [esp], esi ; this
.text:00D5301A call _ZN11CBaseEntity20CalcAbsolutePositionEv ; CBaseEntity::CalcAbsolutePosition(void)
.text:00D5301F jmp loc_D52EBB
.text:00D53024 ; ---------------------------------------------------------------------------
.text:00D53024
.text:00D53024 loc_D53024: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+50Cj
.text:00D53024 mov dword ptr [esp+4], 9
.text:00D5302C mov dword ptr [esp], 1
.text:00D53033 call RandomInt
.text:00D53038 mov [esp], esi ; this
.text:00D5303B mov [ebp+var_48], eax
.text:00D5303E call _ZNK11CBaseEntity13GetTeamNumberEv ; CBaseEntity::GetTeamNumber(void)
.text:00D53043 cmp eax, 2
.text:00D53046 jz loc_D5316D
.text:00D5304C cmp eax, 3
.text:00D5304F mov edx, 2
.text:00D53054 cmovz eax, edx
.text:00D53057
.text:00D53057 loc_D53057: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+912j
.text:00D53057 mov edx, [ebp+var_48]
.text:00D5305A mov [esp+4], eax ; int
.text:00D5305E mov eax, [ebp+var_3C]
.text:00D53061 mov dword ptr [esp+10h], 0 ; bool
.text:00D53069 mov dword ptr [esp+0Ch], 0 ; CTFPlayer *
.text:00D53071 mov [esp+8], edx ; int
.text:00D53075 mov [esp], eax ; this
.text:00D53078 call _ZN15CTFPlayerShared8DisguiseEiiP9CTFPlayerb ; CTFPlayerShared::Disguise(int,int,CTFPlayer *,bool)
.text:00D5307D jmp loc_D52C58
.text:00D53082 ; ---------------------------------------------------------------------------
.text:00D53082
.text:00D53082 loc_D53082: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+4FFj
.text:00D53082 mov [esp], esi ; this
.text:00D53085 call _ZNK11CBaseEntity13GetTeamNumberEv ; CBaseEntity::GetTeamNumber(void)
.text:00D5308A cmp eax, 2
.text:00D5308D jz loc_D53177
.text:00D53093 cmp eax, 3
.text:00D53096 mov edx, 2
.text:00D5309B cmovz eax, edx
.text:00D5309E
.text:00D5309E loc_D5309E: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+91Cj
.text:00D5309E mov edx, [ebp+var_48]
.text:00D530A1 mov [esp+4], eax ; int
.text:00D530A5 mov eax, [ebp+var_3C]
.text:00D530A8 mov dword ptr [esp+10h], 0 ; bool
.text:00D530B0 mov dword ptr [esp+0Ch], 0 ; CTFPlayer *
.text:00D530B8 mov [esp+8], edx ; int
.text:00D530BC mov [esp], eax ; this
.text:00D530BF call _ZN15CTFPlayerShared8DisguiseEiiP9CTFPlayerb ; CTFPlayerShared::Disguise(int,int,CTFPlayer *,bool)
.text:00D530C4 mov eax, [ebp+arg_4]
.text:00D530C7 mov dword ptr [eax+60h], 0
.text:00D530CE jmp loc_D52C58
.text:00D530D3 ; ---------------------------------------------------------------------------
.text:00D530D3
.text:00D530D3 loc_D530D3: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+67Fj
.text:00D530D3 mov eax, [ebp+arg_4]
.text:00D530D6 add eax, 70h
.text:00D530D9 mov [esp], eax ; this
.text:00D530DC call _ZNK13IntervalTimer3NowEv ; IntervalTimer::Now(void)
.text:00D530E1 mov eax, [ebp+arg_4]
.text:00D530E4 fstp [ebp+var_3C]
.text:00D530E7 movss xmm0, [ebp+var_3C]
.text:00D530EC movss dword ptr [eax+70h], xmm0
.text:00D530F1 jmp loc_D52FE0
.text:00D530F6 ; ---------------------------------------------------------------------------
.text:00D530F6
.text:00D530F6 loc_D530F6: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+3CDj
.text:00D530F6 add eax, 5Ch
.text:00D530F9 mov [esp], eax ; this
.text:00D530FC call _ZNK13IntervalTimer3NowEv ; IntervalTimer::Now(void)
.text:00D53101 mov eax, [ebp+arg_4]
.text:00D53104 fstp [ebp+var_3C]
.text:00D53107 movss xmm0, [ebp+var_3C]
.text:00D5310C movss dword ptr [eax+5Ch], xmm0
.text:00D53111 jmp loc_D52C33
.text:00D53116 ; ---------------------------------------------------------------------------
.text:00D53116
.text:00D53116 loc_D53116: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+6B7j
.text:00D53116 mov [esp], esi ; this
.text:00D53119 call _ZN11CBaseEntity20CalcAbsolutePositionEv ; CBaseEntity::CalcAbsolutePosition(void)
.text:00D5311E test byte ptr [esi+129h], 8
.text:00D53125 movss xmm7, dword ptr [esi+2ACh]
.text:00D5312D cvtps2pd xmm7, xmm7
.text:00D53130 movsd [ebp+var_60], xmm7
.text:00D53135 jz loc_D52F2D
.text:00D5313B mov [esp], esi ; this
.text:00D5313E call _ZN11CBaseEntity20CalcAbsolutePositionEv ; CBaseEntity::CalcAbsolutePosition(void)
.text:00D53143 test byte ptr [esi+129h], 8
.text:00D5314A movss xmm7, dword ptr [esi+2A8h]
.text:00D53152 cvtps2pd xmm7, xmm7
.text:00D53155 movsd [ebp+var_58], xmm7
.text:00D5315A jz loc_D52F3D
.text:00D53160 mov [esp], esi ; this
.text:00D53163 call _ZN11CBaseEntity20CalcAbsolutePositionEv ; CBaseEntity::CalcAbsolutePosition(void)
.text:00D53168 jmp loc_D52F3D
.text:00D5316D ; ---------------------------------------------------------------------------
.text:00D5316D
.text:00D5316D loc_D5316D: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+7E6j
.text:00D5316D mov eax, 3
.text:00D53172 jmp loc_D53057
.text:00D53177 ; ---------------------------------------------------------------------------
.text:00D53177
.text:00D53177 loc_D53177: ; CODE XREF: CTFBotMainAction::Update(CTFBot *,float)+82Dj
.text:00D53177 mov eax, 3
.text:00D5317C jmp loc_D5309E
.text:00D5317C _ZN16CTFBotMainAction6UpdateEP6CTFBotf endp