...
call _ZNK12CTFGameRules16GetPayloadToPushEi
mov eax, [ebp+var_38]
sub esp, 4 ; doesn't relate to our further steps
mov ecx, g_pEntityList
cmp eax, 0FFFFFFFFh
jz short loc_D3FA4A ; (1) we jump off if inthandle is -1
mov edx, eax
shr eax, 0Ch
and edx, 0FFFh
shl edx, 4
add edx, ecx
cmp [edx+8], eax
jz loc_D3FB20 ; (2) we must jump here in order to proceed
; i.e. eax should equal [edx+8] at this point
...
; loc_D3FB20:
mov eax, [edx+4]
test eax, eax
jz loc_D3FA4A ; (3) we jump off if [edx+4] is NULL
mov [esp], eax
call _ZN17CTeamTrainWatcher14GetTrainEntityEv ; we made it!