Вот код на ассемблере 32 битного приложения из IDA, файл engine.dll. Я хочу из своей DLL хукать функцию rmode, и передавать туда аргумент 1 - rmode 1. эта функция должна включать своего рода wallhack, в котором видны персонажи за стенами. Помимо этого должна существовать ещё и rmode 5, которая отключает этот wallhack - возвращает всё как было. Где в этом коде можно передать rmode 1 для активации и rmode 5 для деактивации?
.text:10539E07 loc_10539E07:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+486↑j
.text:10539E07                 push    offset aShowactors ; "SHOWACTORS"
.text:10539E0C                 lea     eax, [ebp+arg_0]
.text:10539E0F                 push    eax
.text:10539E10                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:10539E12                 add     esp, 8
.text:10539E15                 test    eax, eax
.text:10539E17                 jz      short loc_10539E4D
.text:10539E19                 mov     esi, [esi+4]
.text:10539E1C                 mov     ecx, [esi+0E0h]
.text:10539E22                 cmp     byte ptr [ecx+5D4h], 0
.text:10539E29                 jz      short loc_10539E41
.text:10539E2B
.text:10539E2B loc_10539E2B:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+77F↓j
.text:10539E2B                                         ; UViewport::Exec(ushort const *,FOutputDevice &)+7AF↓j ...
.text:10539E2B                 xor     eax, eax
.text:10539E2D                 wait
.text:10539E2E                 mov     ecx, [ebp+var_C]
.text:10539E31                 mov     large fs:0, ecx
.text:10539E38                 pop     edi
.text:10539E39                 pop     esi
.text:10539E3A                 pop     ebx
.text:10539E3B                 mov     esp, ebp
.text:10539E3D                 pop     ebp
.text:10539E3E                 retn    8
.text:10539E41 ; ---------------------------------------------------------------------------
.text:10539E41
.text:10539E41 loc_10539E41:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+739↑j
.text:10539E41                 or      dword ptr [esi+5ACh], 8
.text:10539E48                 jmp     loc_10539797
.text:10539E4D ; ---------------------------------------------------------------------------
.text:10539E4D
.text:10539E4D loc_10539E4D:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+727↑j
.text:10539E4D                 push    offset aHideactors ; "HIDEACTORS"
.text:10539E52                 lea     edx, [ebp+arg_0]
.text:10539E55                 push    edx
.text:10539E56                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:10539E58                 add     esp, 8
.text:10539E5B                 test    eax, eax
.text:10539E5D                 jz      short loc_10539E7D
.text:10539E5F                 mov     esi, [esi+4]
.text:10539E62                 mov     eax, [esi+0E0h]
.text:10539E68                 cmp     byte ptr [eax+5D4h], 0
.text:10539E6F                 jnz     short loc_10539E2B
.text:10539E71                 and     dword ptr [esi+5ACh], 0FFFFFFF7h
.text:10539E78                 jmp     loc_10539797
.text:10539E7D ; ---------------------------------------------------------------------------
.text:10539E7D
.text:10539E7D loc_10539E7D:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+76D↑j
.text:10539E7D                 push    offset aRmode   ; "RMODE"
.text:10539E82                 lea     ecx, [ebp+arg_0]
.text:10539E85                 push    ecx
.text:10539E86                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:10539E88                 add     esp, 8
.text:10539E8B                 test    eax, eax
.text:10539E8D                 jz      short loc_10539EED
.text:10539E8F
.text:10539E8F loc_10539E8F:                           ; CODE XREF: UInput::Exec(ushort const *,FOutputDevice &)+3995↓j
.text:10539E8F                 mov     edx, [esi+4]
.text:10539E92                 mov     eax, [edx+0E0h]
.text:10539E98                 cmp     byte ptr [eax+5D4h], 0
.text:10539E9F                 jnz     short loc_10539E2B
.text:10539EA1                 mov     ecx, dword ptr [ebp+arg_0]
.text:10539EA4                 push    ecx
.text:10539EA5                 push    offset aWire    ; "WIRE"
.text:10539EAA                 call    ds:__imp_?appStricmp@@YAHPBG0@Z ; appStricmp(ushort const *,ushort const *)
.text:10539EB0                 add     esp, 8
.text:10539EB3                 test    eax, eax
.text:10539EB5                 jnz     short loc_10539ECA
.text:10539EB7                 xor     edx, edx
.text:10539EB9                 mov     eax, ds:?GL2WireSkeletalMesh@@3HA ; int GL2WireSkeletalMesh
.text:10539EBE                 cmp     [eax], edx
.text:10539EC0                 setz    dl
.text:10539EC3                 mov     [eax], edx
.text:10539EC5                 jmp     loc_10539797
.text:10539ECA ; ---------------------------------------------------------------------------
.text:10539ECA
.text:10539ECA loc_10539ECA:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+7C5↑j
.text:10539ECA                 mov     eax, dword ptr [ebp+arg_0]
.text:10539ECD                 push    eax
.text:10539ECE                 call    ds:__imp_?appAtoi@@YAHPBG@Z ; appAtoi(ushort const *)
.text:10539ED4                 add     esp, 4
.text:10539ED7                 test    eax, eax
.text:10539ED9                 jle     loc_10539797
.text:10539EDF                 mov     ecx, [esi+4]
.text:10539EE2                 mov     [ecx+5B8h], eax
.text:10539EE8                 jmp     loc_10539797
.text:10539EED ; ---------------------------------------------------------------------------
.text:10539EED
.text:10539EED loc_10539EED:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+79D↑j
.text:10539EED                 push    offset aL2shader ; "l2shader"
.text:10539EF2                 lea     edx, [ebp+arg_0]
.text:10539EF5                 push    edx
.text:10539EF6                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:10539EF8                 add     esp, 8
.text:10539EFB                 test    eax, eax
.text:10539EFD                 jz      short loc_10539F52
.text:10539EFF                 xor     ecx, ecx
.text:10539F01                 mov     eax, ds:?GL2Shader@@3HA ; int GL2Shader
.text:10539F06                 cmp     [eax], ecx
.text:10539F08                 setz    cl
.text:10539F0B                 mov     [eax], ecx
.text:10539F0D                 mov     edx, [esi+4]
.text:10539F10                 mov     ecx, [edx+0E4h]
.text:10539F16                 mov     eax, [ecx]
.text:10539F18                 mov     edx, [eax+118h]
.text:10539F1E                 call    edx
.text:10539F20                 xor     edi, edi
.text:10539F22
.text:10539F22 loc_10539F22:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+860↓j
.text:10539F22                 mov     [ebp+var_30], edi
.text:10539F25                 mov     eax, [esi+4]
.text:10539F28                 mov     eax, [eax+0E4h]
.text:10539F2E                 cmp     edi, [eax+11B4h]
.text:10539F34                 jge     loc_10539797
.text:10539F3A                 mov     ecx, [eax+11B0h]
.text:10539F40                 mov     ecx, [ecx+edi*4]
.text:10539F43                 mov     edx, [ecx]
.text:10539F45                 mov     eax, [edx+118h]
.text:10539F4B                 call    eax
.text:10539F4D                 add     edi, 1
.text:10539F50                 jmp     short loc_10539F22
.text:10539F52 ; ---------------------------------------------------------------------------
.text:10539F52
.text:10539F52 loc_10539F52:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+80D↑j
.text:10539F52                 push    offset aRend    ; "REND"
.text:10539F57                 lea     ecx, [ebp+arg_0]
.text:10539F5A                 push    ecx
.text:10539F5B                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:10539F5D                 add     esp, 8
.text:10539F60                 test    eax, eax
.text:10539F62                 jz      loc_1053A079
.text:10539F68                 mov     edx, [esi+4]
.text:10539F6B                 mov     eax, [edx+0E0h]
.text:10539F71                 cmp     byte ptr [eax+5D4h], 0
.text:10539F78                 jnz     loc_10539E2B
.text:10539F7E                 push    offset aBlend   ; "BLEND"
.text:10539F83                 lea     ecx, [ebp+arg_0]
.text:10539F86                 push    ecx
.text:10539F87                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:10539F89                 add     esp, 8
.text:10539F8C                 test    eax, eax
.text:10539F8E                 jnz     loc_1053A063
.text:10539F94                 push    offset aNormals ; "NORMALS"
.text:10539F99                 lea     edx, [ebp+arg_0]
.text:10539F9C                 push    edx
.text:10539F9D                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:10539F9F                 add     esp, 8
.text:10539FA2                 test    eax, eax
.text:10539FA4                 jnz     loc_1053A063
.text:10539FAA                 push    offset aBone    ; "BONE"
.text:10539FAF                 lea     eax, [ebp+arg_0]
.text:10539FB2                 push    eax
.text:10539FB3                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:10539FB5                 add     esp, 8
.text:10539FB8                 test    eax, eax
.text:10539FBA                 jz      short loc_10539FD2
.text:10539FBC                 xor     ecx, ecx
.text:10539FBE                 cmp     [esi+0E0h], ecx
.text:10539FC4                 setz    cl
.text:10539FC7                 mov     [esi+0E0h], ecx
.text:10539FCD                 jmp     loc_10539797
.text:10539FD2 ; ---------------------------------------------------------------------------
.text:10539FD2
.text:10539FD2 loc_10539FD2:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+8CA↑j
.text:10539FD2                 push    offset aSkin    ; "SKIN"
.text:10539FD7                 lea     edx, [ebp+arg_0]
.text:10539FDA                 push    edx
.text:10539FDB                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:10539FDD                 add     esp, 8
.text:10539FE0                 test    eax, eax
.text:10539FE2                 jz      short loc_10539FFA
.text:10539FE4                 xor     eax, eax
.text:10539FE6                 cmp     [esi+0E4h], eax
.text:10539FEC                 setz    al
.text:10539FEF                 mov     [esi+0E4h], eax
.text:10539FF5                 jmp     loc_10539797
.text:10539FFA ; ---------------------------------------------------------------------------
.text:10539FFA
.text:10539FFA loc_10539FFA:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+8F2↑j
.text:10539FFA                 push    offset aBound   ; "BOUND"
.text:10539FFF                 lea     ecx, [ebp+arg_0]
.text:1053A002                 push    ecx
.text:1053A003                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A005                 add     esp, 8
.text:1053A008                 test    eax, eax
.text:1053A00A                 jz      short loc_1053A022
.text:1053A00C                 xor     edx, edx
.text:1053A00E                 cmp     [esi+0DCh], edx
.text:1053A014                 setz    dl
.text:1053A017                 mov     [esi+0DCh], edx
.text:1053A01D                 jmp     loc_10539797
.text:1053A022 ; ---------------------------------------------------------------------------
.text:1053A022
.text:1053A022 loc_1053A022:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+91A↑j
.text:1053A022                 push    offset aDefault_0 ; "DEFAULT"
.text:1053A027                 lea     eax, [ebp+arg_0]
.text:1053A02A                 push    eax
.text:1053A02B                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A02D                 add     esp, 8
.text:1053A030                 test    eax, eax
.text:1053A032                 jnz     short loc_1053A04A
.text:1053A034                 push    offset aReset_0 ; "RESET"
.text:1053A039                 lea     ecx, [ebp+arg_0]
.text:1053A03C                 push    ecx
.text:1053A03D                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A03F                 add     esp, 8
.text:1053A042                 test    eax, eax
.text:1053A044                 jz      loc_10539E2B
.text:1053A04A
.text:1053A04A loc_1053A04A:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+942↑j
.text:1053A04A                 xor     eax, eax
.text:1053A04C                 mov     [esi+0DCh], eax
.text:1053A052                 mov     [esi+0E8h], eax
.text:1053A058                 mov     [esi+0E0h], eax
.text:1053A05E                 jmp     loc_10539797
.text:1053A063 ; ---------------------------------------------------------------------------
.text:1053A063
.text:1053A063 loc_1053A063:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+89E↑j
.text:1053A063                                         ; UViewport::Exec(ushort const *,FOutputDevice &)+8B4↑j
.text:1053A063                 xor     edx, edx
.text:1053A065                 cmp     [esi+0E8h], edx
.text:1053A06B                 setz    dl
.text:1053A06E                 mov     [esi+0E8h], edx
.text:1053A074                 jmp     loc_10539797
.text:1053A079 ; ---------------------------------------------------------------------------
.text:1053A079
.text:1053A079 loc_1053A079:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+872↑j
.text:1053A079                 push    offset aShow    ; "SHOW"
.text:1053A07E                 lea     eax, [ebp+arg_0]
.text:1053A081                 push    eax
.text:1053A082                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A084                 add     esp, 8
.text:1053A087                 test    eax, eax
.text:1053A089                 jz      loc_1053A419
.text:1053A08F                 mov     ecx, [esi+4]
.text:1053A092                 mov     edx, [ecx+0E0h]
.text:1053A098                 cmp     byte ptr [edx+5D4h], 0
.text:1053A09F                 jnz     loc_10539E2B
.text:1053A0A5                 push    offset aActors  ; "ACTORS"
.text:1053A0AA                 lea     eax, [ebp+arg_0]
.text:1053A0AD                 push    eax
.text:1053A0AE                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A0B0                 add     esp, 8
.text:1053A0B3                 test    eax, eax
.text:1053A0B5                 jz      short loc_1053A0C6
.text:1053A0B7                 mov     eax, [esi+4]
.text:1053A0BA                 xor     dword ptr [eax+5ACh], 8
.text:1053A0C1                 jmp     loc_1053A393
.text:1053A0C6 ; ---------------------------------------------------------------------------
.text:1053A0C6
.text:1053A0C6 loc_1053A0C6:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+9C5↑j
.text:1053A0C6                 push    offset aActorinfo ; "ACTORINFO"
.text:1053A0CB                 lea     ecx, [ebp+arg_0]
.text:1053A0CE                 push    ecx
.text:1053A0CF                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A0D1                 add     esp, 8
.text:1053A0D4                 test    eax, eax
.text:1053A0D6                 jz      short loc_1053A0EA
.text:1053A0D8                 mov     eax, [esi+4]
.text:1053A0DB                 xor     dword ptr [eax+5ACh], 4000000h
.text:1053A0E5                 jmp     loc_1053A393
.text:1053A0EA ; ---------------------------------------------------------------------------
.text:1053A0EA
.text:1053A0EA loc_1053A0EA:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+9E6↑j
.text:1053A0EA                 push    offset aStaticmeshes ; "STATICMESHES"
.text:1053A0EF                 lea     edx, [ebp+arg_0]
.text:1053A0F2                 push    edx
.text:1053A0F3                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A0F5                 add     esp, 8
.text:1053A0F8                 test    eax, eax
.text:1053A0FA                 jz      short loc_1053A10E
.text:1053A0FC                 mov     eax, [esi+4]
.text:1053A0FF                 xor     dword ptr [eax+5ACh], 8000h
.text:1053A109                 jmp     loc_1053A393
.text:1053A10E ; ---------------------------------------------------------------------------
.text:1053A10E
.text:1053A10E loc_1053A10E:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+A0A↑j
.text:1053A10E                 push    offset aTerrain ; "TERRAIN"
.text:1053A113                 lea     eax, [ebp+arg_0]
.text:1053A116                 push    eax
.text:1053A117                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A119                 add     esp, 8
.text:1053A11C                 test    eax, eax
.text:1053A11E                 jz      short loc_1053A132
.text:1053A120                 mov     eax, [esi+4]
.text:1053A123                 xor     dword ptr [eax+5ACh], 40000h
.text:1053A12D                 jmp     loc_1053A393
.text:1053A132 ; ---------------------------------------------------------------------------
.text:1053A132
.text:1053A132 loc_1053A132:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+A2E↑j
.text:1053A132                 push    offset aFog_0   ; "FOG"
.text:1053A137                 lea     ecx, [ebp+arg_0]
.text:1053A13A                 push    ecx
.text:1053A13B                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A13D                 add     esp, 8
.text:1053A140                 test    eax, eax
.text:1053A142                 jz      short loc_1053A156
.text:1053A144                 mov     eax, [esi+4]
.text:1053A147                 xor     dword ptr [eax+5ACh], 80000h
.text:1053A151                 jmp     loc_1053A393
.text:1053A156 ; ---------------------------------------------------------------------------
.text:1053A156
.text:1053A156 loc_1053A156:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+A52↑j
.text:1053A156                 push    offset aSky     ; "SKY"
.text:1053A15B                 lea     edx, [ebp+arg_0]
.text:1053A15E                 push    edx
.text:1053A15F                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A161                 add     esp, 8
.text:1053A164                 test    eax, eax
.text:1053A166                 jz      short loc_1053A177
.text:1053A168                 mov     eax, [esi+4]
.text:1053A16B                 xor     dword ptr [eax+5ACh], 4
.text:1053A172                 jmp     loc_1053A393
.text:1053A177 ; ---------------------------------------------------------------------------
.text:1053A177
.text:1053A177 loc_1053A177:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+A76↑j
.text:1053A177                 push    offset aCoronas ; "CORONAS"
.text:1053A17C                 lea     eax, [ebp+arg_0]
.text:1053A17F                 push    eax
.text:1053A180                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A182                 add     esp, 8
.text:1053A185                 test    eax, eax
.text:1053A187                 jz      short loc_1053A19B
.text:1053A189                 mov     eax, [esi+4]
.text:1053A18C                 xor     dword ptr [eax+5ACh], 400000h
.text:1053A196                 jmp     loc_1053A393
.text:1053A19B ; ---------------------------------------------------------------------------
.text:1053A19B
.text:1053A19B loc_1053A19B:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+A97↑j
.text:1053A19B                 push    offset aParticles ; "PARTICLES"
.text:1053A1A0                 lea     ecx, [ebp+arg_0]
.text:1053A1A3                 push    ecx
.text:1053A1A4                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A1A6                 add     esp, 8
.text:1053A1A9                 test    eax, eax
.text:1053A1AB                 jz      short loc_1053A1BF
.text:1053A1AD                 mov     eax, [esi+4]
.text:1053A1B0                 xor     dword ptr [eax+5ACh], 1000000h
.text:1053A1BA                 jmp     loc_1053A393
.text:1053A1BF ; ---------------------------------------------------------------------------
.text:1053A1BF
.text:1053A1BF loc_1053A1BF:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+ABB↑j
.text:1053A1BF                 push    offset aBsp     ; "BSP"
.text:1053A1C4                 lea     edx, [ebp+arg_0]
.text:1053A1C7                 push    edx
.text:1053A1C8                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A1CA                 add     esp, 8
.text:1053A1CD                 test    eax, eax
.text:1053A1CF                 jz      short loc_1053A1E3
.text:1053A1D1                 mov     eax, [esi+4]
.text:1053A1D4                 xor     dword ptr [eax+5ACh], 2000000h
.text:1053A1DE                 jmp     loc_1053A393
.text:1053A1E3 ; ---------------------------------------------------------------------------
.text:1053A1E3
.text:1053A1E3 loc_1053A1E3:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+ADF↑j
.text:1053A1E3                 push    offset aRadii   ; "RADII"
.text:1053A1E8                 lea     eax, [ebp+arg_0]
.text:1053A1EB                 push    eax
.text:1053A1EC                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A1EE                 add     esp, 8
.text:1053A1F1                 test    eax, eax
.text:1053A1F3                 jz      short loc_1053A204
.text:1053A1F5                 mov     eax, [esi+4]
.text:1053A1F8                 xor     dword ptr [eax+5ACh], 2
.text:1053A1FF                 jmp     loc_1053A393
.text:1053A204 ; ---------------------------------------------------------------------------
.text:1053A204
.text:1053A204 loc_1053A204:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+B03↑j
.text:1053A204                 push    offset aFluid   ; "FLUID"
.text:1053A209                 lea     ecx, [ebp+arg_0]
.text:1053A20C                 push    ecx
.text:1053A20D                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A20F                 add     esp, 8
.text:1053A212                 test    eax, eax
.text:1053A214                 jz      short loc_1053A228
.text:1053A216                 mov     eax, [esi+4]
.text:1053A219                 xor     dword ptr [eax+5ACh], 10000000h
.text:1053A223                 jmp     loc_1053A393
.text:1053A228 ; ---------------------------------------------------------------------------
.text:1053A228
.text:1053A228 loc_1053A228:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+B24↑j
.text:1053A228                 push    offset aProjectors ; "PROJECTORS"
.text:1053A22D                 lea     edx, [ebp+arg_0]
.text:1053A230                 push    edx
.text:1053A231                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A233                 add     esp, 8
.text:1053A236                 test    eax, eax
.text:1053A238                 jz      short loc_1053A24C
.text:1053A23A                 mov     eax, [esi+4]
.text:1053A23D                 xor     dword ptr [eax+5ACh], 20000000h
.text:1053A247                 jmp     loc_1053A393
.text:1053A24C ; ---------------------------------------------------------------------------
.text:1053A24C
.text:1053A24C loc_1053A24C:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+B48↑j
.text:1053A24C                 push    offset aFallbackmateri ; "FALLBACKMATERIALS"
.text:1053A251                 lea     eax, [ebp+arg_0]
.text:1053A254                 push    eax
.text:1053A255                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A257                 add     esp, 8
.text:1053A25A                 test    eax, eax
.text:1053A25C                 jz      short loc_1053A270
.text:1053A25E                 mov     eax, [esi+4]
.text:1053A261                 xor     dword ptr [eax+5ACh], 40000000h
.text:1053A26B                 jmp     loc_1053A393
.text:1053A270 ; ---------------------------------------------------------------------------
.text:1053A270
.text:1053A270 loc_1053A270:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+B6C↑j
.text:1053A270                 push    offset aCollision ; "COLLISION"
.text:1053A275                 lea     ecx, [ebp+arg_0]
.text:1053A278                 push    ecx
.text:1053A279                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A27B                 add     esp, 8
.text:1053A27E                 test    eax, eax
.text:1053A280                 jz      short loc_1053A294
.text:1053A282                 mov     eax, [esi+4]
.text:1053A285                 xor     dword ptr [eax+5ACh], 80000000h
.text:1053A28F                 jmp     loc_1053A393
.text:1053A294 ; ---------------------------------------------------------------------------
.text:1053A294
.text:1053A294 loc_1053A294:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+B90↑j
.text:1053A294                 push    offset aTerritory ; "TERRITORY"
.text:1053A299                 lea     edx, [ebp+arg_0]
.text:1053A29C                 push    edx
.text:1053A29D                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A29F                 add     esp, 8
.text:1053A2A2                 test    eax, eax
.text:1053A2A4                 jz      short loc_1053A2B8
.text:1053A2A6                 mov     eax, [esi+4]
.text:1053A2A9                 xor     dword ptr [eax+5ACh], 80000000h
.text:1053A2B3                 jmp     loc_1053A393
.text:1053A2B8 ; ---------------------------------------------------------------------------
.text:1053A2B8
.text:1053A2B8 loc_1053A2B8:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+BB4↑j
.text:1053A2B8                 push    offset aVolume  ; "VOLUME"
.text:1053A2BD                 lea     eax, [ebp+arg_0]
.text:1053A2C0                 push    eax
.text:1053A2C1                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A2C3                 add     esp, 8
.text:1053A2C6                 test    eax, eax
.text:1053A2C8                 jz      short loc_1053A2DC
.text:1053A2CA                 mov     eax, [esi+4]
.text:1053A2CD                 xor     dword ptr [eax+5ACh], 800000h
.text:1053A2D7                 jmp     loc_1053A393
.text:1053A2DC ; ---------------------------------------------------------------------------
.text:1053A2DC
.text:1053A2DC loc_1053A2DC:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+BD8↑j
.text:1053A2DC                 push    offset aName_1  ; "NAME"
.text:1053A2E1                 lea     ecx, [ebp+arg_0]
.text:1053A2E4                 push    ecx
.text:1053A2E5                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A2E7                 add     esp, 8
.text:1053A2EA                 test    eax, eax
.text:1053A2EC                 jz      short loc_1053A300
.text:1053A2EE                 mov     eax, [esi+4]
.text:1053A2F1                 xor     dword ptr [eax+5ACh], 1000h
.text:1053A2FB                 jmp     loc_1053A393
.text:1053A300 ; ---------------------------------------------------------------------------
.text:1053A300
.text:1053A300 loc_1053A300:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+BFC↑j
.text:1053A300                 push    offset aDrop    ; "DROP"
.text:1053A305                 lea     edx, [ebp+arg_0]
.text:1053A308                 push    edx
.text:1053A309                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A30B                 add     esp, 8
.text:1053A30E                 test    eax, eax
.text:1053A310                 jz      short loc_1053A322
.text:1053A312                 xor     ecx, ecx
.text:1053A314                 mov     eax, ds:?GL2HideDropMesh@@3HA ; int GL2HideDropMesh
.text:1053A319                 cmp     [eax], ecx
.text:1053A31B                 setz    cl
.text:1053A31E                 mov     [eax], ecx
.text:1053A320                 jmp     short loc_1053A393
.text:1053A322 ; ---------------------------------------------------------------------------
.text:1053A322
.text:1053A322 loc_1053A322:                           ; CODE XREF: UViewport::Exec(ushort const *,FOutputDevice &)+C20↑j
.text:1053A322                 push    offset aWindowname ; "WINDOWNAME"
.text:1053A327                 lea     edx, [ebp+arg_0]
.text:1053A32A                 push    edx
.text:1053A32B                 call    edi ; ParseCommand(ushort const * *,ushort const *) ; ParseCommand(ushort const * *,ushort const *)
.text:1053A32D                 add     esp, 8
.text:1053A330                 test    eax, eax
.text:1053A332                 jz      short loc_1053A34B
.text:1053A334                 mov     ecx, ds:?GL2ShowWindowName@@3HA ; int GL2ShowWindowName
.text:1053A33A                 mov     eax, [ecx]
.text:1053A33C                 add     eax, 1
.text:1053A33F                 cdq
.text:1053A340                 mov     edi, 3
.text:1053A345                 idiv    edi
.text:1053A347                 mov     [ecx], edx
.text:1053A349                 jmp     short loc_1053A393