-
Notifications
You must be signed in to change notification settings - Fork 28
403_functions_Monster
Functions checking for pUnit.eType == TYPE_MONSTER
UpdateGatewaysFromIni+243F0 // UpdateGatewaysFromIni+28E60 UpdateGatewaysFromIni+2B1E0
UpdateGatewaysFromIni+351D4 UpdateGatewaysFromIni+3B9B0
UpdateGatewaysFromIni+55800 UpdateGatewaysFromIni+56460 UpdateGatewaysFromIni+5AC70 UpdateGatewaysFromIni+5AC90 (get monster ai state?) UpdateGatewaysFromIni+5B290
UpdateGatewaysFromIni+76630
UpdateGatewaysFromIni+878D0 UpdateGatewaysFromIni+878F0 UpdateGatewaysFromIni+87930 UpdateGatewaysFromIni+87B30 UpdateGatewaysFromIni+8BA20 UpdateGatewaysFromIni+8BB60 UpdateGatewaysFromIni+8CD10 UpdateGatewaysFromIni+8D940 UpdateGatewaysFromIni+8EB90 UpdateGatewaysFromIni+8F050
; START ------------------------ UpdateGatewaysFromIni+8F3D0 ! ; FN game.5A7C20 ; game_5A7C20 ( ; ) push ebp mov ebp,esp mov ecx,[ebp+C] sub esp,C push esi mov esi,[ecx+4] ; esi = pUnit ? test esi,esi je game.5A7C38 ; if (esi == null) return 0 mov eax,[esi] cmp eax,1 ; je game.5A7C41 ; if (esi.eType == TYPE_MONSTER) // jump
; J game.5A7C38 xor eax,eax pop esi mov esp,ebp pop ebp ret C
; J game.5A7C41 mov eax,[esi+2C] ; eax = esi.pPath push ebx mov ebx,[ecx] push 36 push esi mov [ebp-C],eax mov [ebp-4],ebx call game.639DF0 ; maybe_movement_func_639DF0() test eax,eax je game.5A7C78 push 753 call game.408090 push eax push game.6CC837 call game.408A60 add esp,C push FFFFFFFF call game.681E09 push 36 push esi call game.639DF0 ; maybe_movement_func_639DF0() test eax,eax je game.5A7CA5 xor edx,edx mov ecx,esi call game.5544B0 mov ecx,esi call game.5541B0 ; is_unit_???5541B0() test eax,eax je game.5A7CA5 pop ebx mov eax,1 pop esi mov esp,ebp pop ebp ret C mov ecx,esi call game.5541B0 ; is_unit???_5541B0() test eax,eax jne game.5A7CB6 push esi call game.649400 mov eax,[esi+10] ; mode = esi.eMode cmp eax,1 ; push edi ; stack.push(edi) je game.5A7CC6 ; if mode != MODE_NEUTRAL: mov edi,esi ; unit = esi call game.5A68E0 ; game_update_monster_ai_state_5A68E0(unit,mode)
; J game.5A7CC6 mov edi,[ebp+C] cmp ebx,3 mov ebx,[ebp+8] mov [ebp-8],0 je game.5A7D47 mov eax,[edi+8] test eax,eax mov ecx,[ebp+C] je game.5A7CEB ; if (eax == 0) // jump push eax push ecx call game.648B90 ; game_648B90() jmp game.5A7CF9
; J game.5A7CEB mov edx,[edi+10] mov eax,[edi+C] push edx push eax push ecx call game.648AD0 ; game_648AD0() mov edx,[ebp+C] push 14 push edx call game.6490E0 ; game_6490E0() cmp [esi],1 ; jne game.5A7D18 ; if esi.eType != TYPE_MONSTER // jump
mov eax,[esi+14] ; eax = esi.UnitData test eax,eax ; je game.5A7D18 ; if (eax == null) // jump
mov eax,[eax+2C] ; eax = eax.szMonName|pAiParams mov [ebp-8],eax ; jmp game.5A7D1F ;
; J game.5A7D18 mov [ebp-8],0 mov ecx,[edi+18] movzx edx,byte[edi+15] mov al,byte[edi+1C] push ecx mov ecx,[ebp-8] ; szMonName|pAiParams push esi push ebx call game.5A63F0 ; game_5A63F0() mov edx,[ebp-4] ; mov ecx,esi ; ecx = pUnit call game.5A4F50 ;
; END --------------------------
; START ------------------------ ; FN game.5A4F50 ; game_5A4F50 ( ; ecx (pUnit) ; edx (int?) ; ) push ebp mov ebp,esp sub esp,74 push edi mov edi,ecx ; edi = pUnit test edi,edi ; mov [ebp-24],edx ; mov [ebp-1C],edi ; je game.5A543F ; if (edi == null) // jump
mov eax,[edi] ; eax = edi.eType cmp eax,1 ; jne game.5A543F ; if (eax != TYPE_MONSTER) // jump
mov eax,[edi+14] ; test eax,eax ; je game.5A543F ; if (eax.UnitData == null) // jump
mov eax,[eax] ; eax = eax.pMonStats test eax,eax ; mov [ebp-18],eax je game.5A543F ; if (eax == null) // jump
xor eax,eax ; eax = 0 mov [ebp-3C],eax mov [ebp-38],eax mov [ebp-34],eax push esi ; lea eax,[ebp-3C] ; push eax call game.56E050 ; game_do_sth_dep_on_owner_class_A8_56E050(ecx) push 1 push edi call game.625760 ; esi = game_get_statlist_func_625760(edi, 1) mov esi,eax ; test esi,esi je game.5A543E ; if esi == null // jump;
push ebx ; stack.push(pGame) push esi ; stack.push(pStatList) call game.627340 mov ecx,edi call game.554010 mov ebx,eax cmp byte[ebx+6A],0 movzx ecx,byte[ebx+6D] ...
; END --------------------------
; START ------------------------ ; FN game.625760 ; game_get_statlist_func_625760 ( ; arg1 (pUnit) ; arg2 (int) // seen: 1 ; ) push ebp mov ebp,esp mov eax,[ebp+8] ; eax = arg1 mov eax,[eax+5C] ; eax = eax.StatListNode test eax,eax jne game.625773 ; if (eax == null) return 0
; J game.62576D xor eax,eax pop ebp ret 8
; J game.625773 test [eax+10],80000000 ; if eax.StatListFlag not hasFlag HasCompleteStats je game.62576D ; return 0
mov ecx,[ebp+C] ; ecx = arg2 push ecx ; push eax ; call game.6256E0 ; game_get_statlist_func_6256E0(eax,ecx) pop ebp ret 8 ; END --------------------------
; START ------------------------ ; FN game.6256E0 ; game_get_statlist_func_6256E0 ( ; arg1 (pD2StatListEx) ; arg2 (int) ; ) push ebp mov ebp,esp mov eax,[ebp+8] ; eax = arg1 test eax,eax ; je game.62571C ; if eax == null return 0
test [eax+10],80000000 ; mov ecx,[ebp+C] ; ecx = arg2 je game.625706 ; if eax.StatListFlag not hasFlag HasCompleteStats // jump
test ecx,2000 ; je game.625703 ; if ecx not has flag 2000 // jump
mov eax,[eax+40] ; eax = eax.pMyStats (D2StatList) jmp game.625706 ;
; J game.625703 mov eax,[eax+3C] ; eax = eax.pMyLastList (D2StatList)
; J game.625706 and ecx,FFFFDFFF ; ecx = ecx & FFFFDFFF test eax,eax ; je game.62571C ; if eax == null return 0
; J game.625710 test [eax+10],ecx jne game.62571E ; if eax.StatListFlag hasFlag ecx // return statlist
mov eax,[eax+2C] ; eax = eax.pLastList (D2StatList) test eax,eax jne game.625710 ; if eax // jump
xor eax,eax pop ebp ret 8 ; END --------------------------
; START ------------------------ ; FN game.56E050 ; game_do_sth_dep_on_owner_class_A8_56E050 ( ; ecx (pUnit) ; ) push ebp mov ebp,esp push esi mov esi,ecx ; esi = ecx test esi,esi je game.56E0B1 ; if (esi == null) // return
cmp [esi],1 jne game.56E0B1 ; if (esi.eType != TYPE_MONSTER) // return
call game.58F0D0 ; eax = game_get_monster_owner_58F0D0(ecx): pUnit test eax,eax je game.56E0B1 ; if (eax == null) // return
mov ecx,[esi+4] ; ecx = ecx.eClass test ecx,ecx jl game.56E0B1 ; if ecx < 0 // return
mov edx,[744304] ; edx = GLOBAL_DATA_744304 cmp ecx,[edx+A80] jge game.56E0B1 ; if eClass > GLOBAL_DATA_744304.ClassCount // return
imul ecx,ecx,1A8 ; ecx = ecx*1A8 // 1A8 = class description length?
add ecx,[edx+A78] ; ecx = GLOBAL_DATA_744304.ClassDescriptions[eClass] test ecx,ecx je game.56E0B1 ; if ecx == null // return
movzx ecx,word[ecx+A8] ; ecx = ecx.__unknown_A8 test cx,cx ; jle game.56E0B1 ; if ecx <= 0 // return
movsx esi,cx cmp esi,[edx+BA0] jg game.56E0B1 mov ecx,[ebp+8] push edi push ecx mov edi,eax call game.56E000 pop edi
; J game.56E0B1 pop esi pop ebp ret 4 ; END --------------------------
; START ------------------------ ; FN game.58F0D0 ; game_get_monster_owner_58F0D0 ( ; ecx (pUnit) ; ) test ecx,ecx ; je game.58F0DB ; if ecx == null return 0 mov eax,[ecx] cmp eax,1 je game.58F0DE ; if ecx.eType != TYPE_MONSTER return 0
; J game.58F0DB xor eax,eax ret
mov eax,[ecx+14] ; eax = ecx.UnitData test eax,eax je game.58F0DB ; if (eax == null) return 0
mov eax,[eax+28] ; eax = eax.pAiGeneral test eax,eax je game.58F0DB ; if (eax == null) return 0
mov ecx,[eax+28] ; ecx = eax.pGame test ecx,ecx je game.58F0DB ; if (ecx == null) return 0
mov edx,[eax+2C] ; edx = eax.OwnerGUID2 push edx ; stack.push(edx) mov edx,[eax+30] ; edx = eax.eOwnerType2 call game.552F60 ; game_get_unit_by_owner_552F60() ret ; END --------------------------
; START ------------------------ ; FN game.552F60 ; game_get_unit_by_owner_552F60 ( ; ecx (pGame) ; edx (eType) // ownerType ; int arg1 (ownerGuid) ; ) push ebp mov ebp,esp test ecx,ecx jne game.552F86 ; if ecx != null // jump
push 2D2 call game.408090 push eax push game.6CC837 call game.408A60 add esp,C push FFFFFFFF call game.681E09
; J game.552F86 cmp edx,5 ; push esi ; mov esi,[ebp+8] ; esi = arg1 jne game.552F97 ; if edx == TYPE_VIS_TILE
lea eax,[ecx+1B20] ; eax = ecx.TileList jmp game.552FB1 ; // jump
; J game.552F97 cmp edx,4 ; if edx > TYPE_ITEM ja game.552FAF ; // jump
mov edx,[edx4+6E10E0] ; edx = UNIT_TYPE_INT_ARRAY_6E10E0[edx] // size?? mov eax,esi ; and eax,7F ; eax = ownerGuid & 7F lea eax,[edx+eax4] ; eax = edx[eax] add eax,ecx ; eax = game.unitLists jmp game.552FB1
; J game.552FAF xor eax,eax ; eax = 0
; J game.552FB1 mov eax,[eax] ; eax = pUnit test eax,eax ; je game.552FC6 ; if eax == null // return 0
; J game.552FB7 cmp [eax+C],esi ; je game.552FC8 ; if eax.GUID == ownerGuid // return pUnit
mov eax,[eax+E4] ; eax = eax.pPrevUnit
test eax,eax
jne game.552FB7 ; if eax != null // jump
; J game.552FC6 xor eax,eax
pop esi pop ebp ret 4 ; END --------------------------
; START ------------------------ ; FN game.5A63F0 ; game_5A63F0 ( ; ecx (szMonName|pAiParams) ; arg1 (pUnit) ; arg2 (???) ; ) push ebp mov ebp,esp push ebx mov ebx,[ebp+C] ; ebx = arg1 (pUnit) push esi push edi mov edi,ecx ; edi = szMonName|pAiParams mov ecx,[edi+18] ; ecx = edi.unknown_18 xor esi,esi ; esi = 0 cmp ecx,esi ; je game.5A6406 ; if ecx != 0 mov edx,ecx ; edx = ecx mov ecx,[edi+1C] ; ecx = edi.unknown_1C cmp ecx,esi ; je game.5A6410 ; if ecx != 0 mov [ebp+10],ecx ; [ebp+10] = ecx mov cl,byte[edi+20] ; cl = edi.unknown_20 test cl,cl je game.5A6419 mov al,cl mov [edi+18],esi ; edi.unknown_18 = 0 mov [edi+1C],esi ; edi.unknown_1C = 0 mov [edi+20],0 ; edi.unknown_20 = 0
mov ecx,[ebx+2C] ; ecx = ebx.szMonName|pAiParams
or esi,FFFFFFFF
cmp edx,64 ;
mov [ebp+C],ecx
jne game.5A6438 ; if edx != 64 // jump
xor ebx,ebx ; ebx = 0 mov [ebp+10],ebx ; [ebp+10] = ebx jmp game.5A6467 ; // jump
; J game.5A6438 test al,al
jne game.5A643E ; if al == (byte)0 mov al,5 ; al = 5
cmp edx,65
jne game.5A6448 ; if edx == 65 mov edx,D ; edx = 0xD push edx call game.5A6290 mov ebx,eax ; // ebx is still some index/identifier cmp ebx,1 je game.5A6467 ; if ebx == 1 // jump mov edx,[ebp+C] ; edx = pPath // some path push edx call game.648BF0 ; game_get_path_58_648BF0(edx) test eax,eax je game.5A6467 ; eax != 0 // mov esi,A ; esi = A
; J game.5A6467 mov eax,[ebp+10] ; eax = [ebp+10] mov [edi+14],esi ; edi.unknown_14 = esi mov [edi+10],eax ; edi.unknown_10 = eax mov eax,[ebp+8] ; eax = [ebp+8] // ptr to some int table pop edi mov ecx,1 add [eax+ebx*4+1D70],ecx ; eax[ebx+1D70]++ pop esi ; esi = stack.pop() // test ebx,ebx pop ebx je game.5A648C ; if ebx != 0 add [eax+1DB4],ecx ; eax[1DB4]++ pop ebp ret C ; END --------------------------
; START ------------------------ ; FN game.5A6290 ; game_5A6290 ( ; int arg1 (index) ; ebx (pUnit) ; ) push ebp mov ebp,esp sub esp,8 push esi mov esi,[ebx+2C] ; esi = ebx.pPath (28EFE00) push eax push esi call game.648E70 ; game_set_path_9091_648E70(pPath, byte) push esi call game.648BF0 ; game_get_path_58_648BF0(pPath) push esi mov [ebp-8],eax call game.648A00 ; game_get_path_10_648A00(pPath) push esi mov [ebp-4],eax call game.648A10 ; game_get_path_12_648A10(pPath) mov ecx,[ebp-8] cmp ecx,[edi+4] ; jne game.5A62CE ; if (ecx != edi.unknown_04) // jump mov edx,[ebp-4] cmp edx,[edi+8] jne game.5A62CE ; if (edx != edi.unknown_08) // jump cmp eax,[edi+C] je game.5A62E1 ; if (eax == edi.unknown_0C) // jump
; J game.5A62CE mov [edi+4],ecx ; edi.unknown_04 = ecx mov ecx,[ebp-4] ; mov [edi+8],ecx ; edi.unknown_08 = ecx mov [edi+C],eax ; edi.unknown_0C = eax mov byte[edi],0 ; edi.unknown_00 = 0 mov byte[edi+1],0 ; edi.unknown_01 = 0 mov edx,[ebp+8]
; J game.5A62E1 push edx push esi call game.648CF0 ; game_648CF0() push 0 push ebx push esi call game.649970 push esi call game.648780 test eax,eax je game.5A631C push ebx call game.64C040 or [ebx+C4],1 mov eax,[ebp+8] mov byte[edi],0 mov byte[edi+1],0 pop esi mov esp,ebp pop ebp ret 4 ...
; END --------------------------
; START ------------------------ ; FN game.648CF0 ; game_648CF0 ( ; int arg1 (pPath) ; int arg2 (index) ; ) push ebp mov ebp,esp mov eax,[ebp+8] ; eax = arg1 mov ecx,[eax+30] ; pOwnerUnit = eax.pUnit_30 test ecx,ecx mov edx,[ebp+C] ; edx = arg2 je game.648D29 ; if pOwnerUnit == null // jump cmp [ecx],0 jne game.648D29 ; if pOwnerUnit.eType != TYPE_PLAYER // jump cmp edx,2 jne game.648D29 ; if edx != 2 // jump
push 861 ; J game.648D0F call game.408090 push eax push game.6CC837 call game.408A60 add esp,C push FFFFFFFF call game.681E09
; J game.648D29 mov ecx,[edx*4+6EB690] ; ecx = UNKNOWN_INT_ARRAY_6EB690[edx] test ecx,2000 ; push esi ; je game.648D48 ; if not ecx & 2000 // jump
test [eax+34],4000 ; jne game.648D48 ; if eax.flags_34 & 4000 // jump
mov esi,[eax+3C] ; esi = eax.unknown_3C mov [eax+40],esi ; eax.unknown_40 = esi test ecx,8000 ; je game.648D62 ; if not ecx & 2000 // jump
test [eax+34],10000 ; jne game.648D62 ; if eax.flags_34 & 10000 // jump
mov esi,[eax+7C] ; esi = eax.unknown_7C mov [eax+80],esi ; eax.unknown_80 = esi mov esi,[eax+34] ; esi = eax.flags_34 and esi,FFF800FF ; esi = esi & FFF800FF // filter away some flags or esi,ecx ; esi = esi | ecx
mov [eax+34],esi ; eax.flags_34 = esi mov [eax+3C],edx ; eax.unknown_3C = edx mov ecx,[edx*4+6EB648] ; ecx = UNKNOWN_INT_ARRAY_6EB648[edx] mov [eax+98],ecx ; eax.unknown_98 = ecx mov ecx,[eax+40] ; ecx = eax.unknown_40 cmp ecx,B pop esi jne game.648D93 ; if ecx != B // jump
push 871 jmp game.648D0F
; J game.648D93 cmp ecx,8 jne game.648DA2 ; if ecx != 8 // jump
push 872 jmp game.648D0F
; J game.648DA2 cmp ecx,4 jne game.648DBA ; if ecx != 4 // jump
cmp byte[eax+91],4E
jb game.648DBA ; if eax.unknown_91 < 4E // jump
push 873 jmp game.648D0F
; J game.648DBA pop ebp ret 8 ; END --------------------------
; START ------------------------ ; FN game.648A00 ; game_get_path_10_648A00 ( ; arg1 (pPath) ; ) push ebp mov ebp,esp mov eax,[ebp+8] ; eax = arg1 movzx eax,word[eax+10] ; eax = eax.unknown_10 pop ebp ret 4 ; END --------------------------
; START ------------------------ ; FN game.648A10 ; game_get_path_12_648A10 ( ; arg1 (pPath) ; ) push ebp mov ebp,esp mov eax,[ebp+8] ; eax = arg1 movzx eax,word[eax+12] ; eax = eax.unknown_12 pop ebp ret 4 ; END --------------------------
; START ------------------------ ; FN game.648BF0 ; game_get_path_58_648BF0 ( ; arg1 (pPath) ; ) push ebp mov ebp,esp mov eax,[ebp+8] ; eax = arg1 test eax,eax jne game.648BFE ; if eax == null // return 0 pop ebp ret 4 mov eax,[eax+58] ; return pPath.unknown_58 pop ebp ret 4 ; END --------------------------
; START ------------------------ ; FN game.648E70 ; game_set_path_9091_648E70 ( ; arg1 (pPath) ; arg2 (byte) ; ) push ebp mov ebp,esp mov ecx,[ebp+8] ; ecx = arg1 test ecx,ecx ; je game.648E8F ; if ecx == null // return mov al,[ebp+C] ; al = arg2 cmp al,4D jb game.648E83 ; if al < 4D mov al,4D ; al = 4D mov byte[ecx+91],al ; pPath.unknown_91 = al mov byte[ecx+90],al ; pPath.unknown_90 = al pop ebp ret 8 ; END --------------------------
; START ------------------------ ; FN game.6490E0 ; game_6490E0 ( ; int arg1, ; pPath arg2 ; ) push ebp mov ebp,esp mov eax,[ebp+C] ; eax = arg1 cmp eax,FF ; ja game.6490FA ; if arg1 > FF // jump
mov ecx,[ebp+8] ; ecx = arg2 mov byte[ecx+94],al ; pPath.unknown_94 = (byte) arg1 pop ebp ret 8
; J game.6490FA push 965 call game.408090 push eax push game.6CC837 call game.408A60 add esp,C push FFFFFFFF call game.681E09 ; END --------------------------
; START ------------------------ ; FN game.648AD0 ; game_648AD0 ( ; pPath arg1 ; short arg2, // some idx? ; short arg3, // ; ) push ebp mov ebp,esp mov eax,[ebp+8] ; eax = arg1 (addr) test eax,eax je game.648AF1 ; if (eax == null) return;
mov cx,word[ebp+C] ; mov dx,word[ebp+10] ; mov word[eax+10],cx ; mov word[eax+12],dx ; mov [eax+58],0 ;
pop ebp ret C ; END --------------------------
; START ------------------------ ; FN game.648B90 ; game_648B90 ( ; ) push ebp mov ebp,esp mov eax,[ebp+C] ; test eax,eax ; mov ecx,[ebp+8] ; mov [ecx+58],eax ; je game.648BAB ; if (eax == 0) // return
mov edx,[eax] mov [ecx+5C],edx mov eax,[eax+C] mov [ecx+60],eax
; J game.648BAB pop ebp ret 8 ; END --------------------------
; START ------------------------ ; FN game.649400 ; game_649400 ( ; esi (???) ; ecx (pUnit) ; ) ... ; END --------------------------
; START ------------------------ ; FN game.5A68E0 ; game_update_monster_ai_state_5A68E0 ( ; edi (pUnit) ; eax (unitMode) ; ) push esi mov ecx,edi ; ecx = pUnit mov esi,eax ; esi = eax call game.5734E0 ; aiState = get_monster_ai_state_5734E0(ecx) cmp eax,10 ; jl game.5A68FC ; if (aiState >= 0x10): lea esi,[eax-10] ; esi = eax-0x10 mov edx,esi ; nextAiState = esi mov ecx,edi ; unit = edi pop esi ; esi = stash.pop() jmp game.5734C0 ; "call" set_monster_ai_state_5734C0(unit, nextAiState)
; J game.5A68FC
cmp eax,D
jne game.5A6908 ;
cmp esi,3 ;
jne game.5A6908
mov esi,eax ; if (aiState == 0xD && esi == 3):
; esi = eax
; J game.5A6908 mov edx,esi ; nextAiState = esi mov ecx,edi ; unit = edi pop esi ; esi = stash.pop() jmp game.5734C0 ; "call" set_monster_ai_state_5734C0(unit, nextAiState) ; END --------------------------
; START ------------------------ ; FN game.5734C0 ; set_monster_ai_state_5734C0 ( ; ecx (pUnit) ; edx (aiState) ; ) test ecx,ecx je game.5734D3 ; if (ecx == null) return cmp [ecx],1 jne game.5734D3 ; if (ecx.eType != TYPE_MONSTER) return mov ecx,[ecx+14] test ecx,ecx je game.5734D3 ; if (ecx.UnitData == null) return mov [ecx+54],edx ; ecx.UnitData.AiState = edx ret ; END --------------------------
; START ------------------------ ; FN game.5734E0 ; get_monster_ai_state_5734E0 ( ; ecx (pUnit) ; ) test ecx,ecx je game.5734F0 ; if (ecx == null) return 1 cmp [ecx],1 jne game.5734F0 ; if (ecx.eType != TYPE_MONSTER) return 1 mov ecx,[ecx+14] test ecx,ecx jne game.5734F6 ; if (ecx.UnitData == null) return 1 mov eax,1 ret mov eax,[ecx+54] ; return ecx.UnitData.AiState ret ; END --------------------------
UpdateGatewaysFromIni+8F7E0
UpdateGatewaysFromIni+98D80 UpdateGatewaysFromIni+98EF0
; START ------------------------ UpdateGatewaysFromIni+C5940 ! ; FN game.5DE190 ; game_5DE190 ( ; arg (ebp+8) ; arg2 (ebp+C) ; edx (???) ; ecx (pUnit) ; ) push ebp mov ebp,esp mov eax,[ebp+8] ; eax = arg push esi lea esi,[eax+7E] ; esi = eax + 7E cmp esi,FC ja game.5DE1DF ; if (esi > FC) // jump cmp edx,1 jne game.5DE1AC mov edx,7 ; if (edx == 1) edx = 7 test ecx,ecx je game.5DE1CE ; if (ecx == null) // jump cmp [ecx],1 jne game.5DE1CE ; if (ecx.eType == TYPE_MONSTER) // jump mov ecx,[ecx+14] ; ecx = ecx.UnitData test ecx,ecx ; je game.5DE1CE ; if (ecx == null) // jump mov esi,[ebp+C] ; esi = arg2 mov ecx,[ecx+2C] ; ecx = ecx.szMonName push esi push eax call game.5A6260 ; game_5A6260(arg, arg2, edx, ecx) pop esi pop ebp ret 8 mov esi,[ebp+C] ; esi = arg2 push esi xor ecx,ecx ; ecx = 0 push eax call game.5A6260 ; game_5A6260(arg, arg2, edx, ecx) pop esi pop ebp ret 8
; J game.5DE1DF push 110 call game.408090 push eax push game.6CC837 call game.408A60 add esp,C push FFFFFFFF call game.681E09 ; END --------------------------
; START ------------------------
; FN game.5A6260
; game_5A6260 (
; arg
; arg2
; edx (???)
; ecx (szMonName|pAiParams)
; )
push ebp
mov ebp,esp
test edx,edx
je game.5A626A
mov [ecx+18],edx ; if (edx != 0) [ecx+18] = edx
mov eax,[ebp+8]
test eax,eax
je game.5A6274
mov [ecx+1C],eax ; if (arg != 0) [ecx+1C] = eax
mov al,byte[ebp+C] ; al = (byte)arg2
test al,al
je game.5A6284 ; if (al == 0) return
cmp al,4E ;
jb game.5A6281 ; if (al >= 4E)
mov al,4D ; al = 4D
mov byte[ecx+20],al ; [ecx+20] = al
pop ebp
ret 8
; END --------------------------
UpdateGatewaysFromIni+109FE0 UpdateGatewaysFromIni+10C710 UpdateGatewaysFromIni+10D160
UpdateGatewaysFromIni+126570 UpdateGatewaysFromIni+12FB50
UpdateGatewaysFromIni+137E10
UpdateGatewaysFromIni+160B90 UpdateGatewaysFromIni+161210 UpdateGatewaysFromIni+1633A0 UpdateGatewaysFromIni+163A80
Game.BNGatewayAccess::CurGateway+35300
push edx
mov eax,ecx // eax = 0xD
shl edx,09 // edx = 0x200
and eax,7F // eax &= 7f
add edx,Game.BNGatewayAccess::UpdateGatewaysFromIni+28D620
call Game.BNGatewayAccess::CurGateway+352B0
ret