It seems to be a virtual function call. How would this code look in a high-level language like C ++?
.text:0053A745 loc_53A745: ; CODE XREF: sub_53A690+CEj
.text:0053A745 mov ecx, [edi+esi*4]
.text:0053A748 test ecx, ecx
.text:0053A74A jz short loc_53A751
.text:0053A74C mov edx, [ecx]
.text:0053A74E call dword ptr [edx+4]
.text:0053A751
.text:0053A751 loc_53A751: ; CODE XREF: sub_53A690+BAj
.text:0053A751 mov eax, dword_83C020
.text:0053A756 test eax, eax
.text:0053A758 jnz short loc_53A78D
.text:0053A75A inc esi
.text:0053A75B cmp esi, 25h
.text:0053A75E jl short loc_53A745