
    Lj                   ^   d Z ddlmZ ddlZddlZddlZddlZddlmZ ddl	m
Z
 ddlmZmZmZ  ee      j!                         j"                  d   Zedz  Zed	z  Zd
ZdZdZi dddddddddddddddddddddd d!d"d#d$d%d&d'd(d)d"d*d+i d,d-d.d/d0d1d2d3d4d"d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLi dMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdx	ZddyZddzZdd{Zdd|Zdd}Zdd~ZddZddZ dddZ!dddZ"dddZ#ddZ$ddZ%ddZ&ddZ'i ddddddddddddddddddddddddddddddddd!ddddddddZ(i ddddddddddddddddddddddddddddddddd!ddddddddZ)ddZ*dddZ+ddZ,	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZ-ddZ.	 	 d	 	 	 	 	 	 	 	 	 	 	 	 	 ddZ/ddZ0	 	 	 	 	 	 	 	 	 	 ddZ1ddZ2ddZ3ddZ4ddZ5e6dk(  r e5        yy)aO  Trace static callers of the repeated 0x442c75 object payload.

The 0x442c75 payload itself is an input-reactive display/helper loop.  This
script follows the next layer out: command streams that execute ``opcode 0x5e
mode=1`` with payload 0x442c75, and nearby command-boundary object initializers
that write a concrete script pointer into ``object +0xec``.

The goal is intentionally narrow.  A route is promoted only if a decoded stream
reaches the map loader or writes an explicit map/root/coordinate target.  CNS
resource proximity by itself remains a resource-context hint, not a route.
    )annotationsN)Path)Any)find_cns_stringsread_sectionsva_to_offset   outzHwanse2.exeiu,D iDB i8D zdestroy/stopz	stop-tick   zdelay/countdown   jump   zcall/push-continuation   zreturn/pop-continuation   zloop/wait-target   zcreate-child-object   zobject-field-initializer   zindexed-work-table-loader   zbyte-store/expression   zresource/sprite-command   zstate-compare-or-store   zconditional-branch   zconditional-branch/value      zdword-store/expression   zinput-mask-branch    zattach-script!   z
frame-step$   zcall-or-action&   (   zruntime-object-slot)   zruntime-object-slot-destroy*   zlinked-object-script-fanout/   zprompt/text-command   zprompt-completion-wait1   zbyte/flag-command2   zbranch-if-flag8   zrepeat-render/palette-command9   zrender/palette-command?   zresource-substream-runner@   zbind/input-baseJ   zactive-object-flag-maskL   zdelay-or-countN   zglobal-byte-storeP   zspawn-helper-sweep-stripU   zglobal-position-stepX   zposition/rect-command^   ztransient-object-helper`   zruntime-index-queue-reseta   zruntime-index-queue-processb   zruntime-index-addc   zruntime-index-removed   z#active-object-tile-to-draw-positione   zactive-object-position-branchf   zactive-object-sequence-gateg   zactive-object-position-gatem   zactive-group-key-storen   zactive-group-key-branchp   zactive-object-motion/statezactive-object-sequence-motionz
skip/no-opzdescriptor-slot-cache-storezselected-root-storezselected-root-callzselected-root-call-altzexpression-commandzcondition/test-branchzactive-descriptor-count-branch)	r                           c                    | yd| dS )N 0x08x values    0tools/summarize_object_payload_442c75_callers.pyhex32rN   b       }c{    c                    | yd| dS )NrG   rH   02xrJ   rK   s    rM   hex8rS   h   rO   rP   c                ^    t        ||      }|t        dt        |       d      | |||z    S )NzVA z is outside raw sections)r   
ValueErrorrN   )exesectionsvasizeoffsets        rM   read_atr[   n   s=    (B'F~3uRyk)ABCCvv}%%rP   c                $    t        | ||d      d   S )Nr	   r   )r[   rV   rW   rX   s      rM   u8r^   u   s    3"a(++rP   c           	     L    t        j                  dt        | ||d            d   S )Nz<Hr   r   structunpackr[   r]   s      rM   u16rc   y   #    ==wsHb!<=a@@rP   c           	     L    t        j                  dt        | ||d            d   S )N<Ir   r   r`   r]   s      rM   u32rg   }   rd   rP   c                    t        | |      d uS N)r   )rW   rL   s     rM   is_varj      s    %(44rP   c                P    	 t        | |t        |dz  z         S # t        $ r Y y w xY w)Nr   )rg   GENERIC_HANDLER_TABLErU   )rV   rW   opcodes      rM   handler_forrn      s2    3"7&1*"DEE s    	%%c                   t        ||      syt        | |||      }t               }d}|t        |      k  rs||   }|dk(  r(|dz   t        |      k  r|j	                  d       |dz  }@|dk(  s|dk  r|j	                  d       n|j                  |       |d	z  }|t        |      k  rs|j                  d
d      }g }	|j                         D ]x  }
dj                  |
j                               }
t        d |
D              s5|
j                  dd      j                  dd      j                         }
|
sh|	j                  |
       z dj                  |	      dd S )zBest-effort preview for prompt-like payloads.

    The prompt stream uses 0x40-prefixed control markers mixed with EUC-KR text.
    This preview is only for review evidence; it is not a full prompt parser.
    rG   r   r*   r      
r   r       r	   cp949ignore c              3  <   K   | ]  }d |cxk  xr dk  nc   yw)u   가u   힣NrJ   ).0chars     rM   	<genexpr>ztext_preview.<locals>.<genexpr>   s     =x4+8++=s   u   뵎Iu   닊I
Ni  )rj   r[   	bytearraylenextendappenddecode
splitlinesjoinsplitanyreplacestrip)rV   rW   rX   rY   rawr
   indexbytedecodedcleaned_lineslines              rM   text_previewr      sL    2
#xT
*C
+CE
#c(
5z4<EAIC0JJuQJE19tJJtJJt
 #c(
 jj(+GM""$ +xx

%===<<+33FB?EEGD$$T*+ 99]#DS))rP   c                b   t        ||      sg S t        | |||      }g }|j                  d      D ]k  }|s |S t        d |D              r |S 	 |j	                  d      }d|vrd|vr|j                         s |S |j                  |       t        |      |k\  sj |S  |S # t
        $ r Y  |S w xY w)N    c              3  4   K   | ]  }|d k  xs |dkD    ywr   ~   NrJ   rv   r   s     rM   rx   z+null_string_list_preview.<locals>.<genexpr>   s      <dtd{)dTk)<   ascii._)	rj   r[   r   r   r~   UnicodeDecodeErrorisalnumr}   r{   )	rV   rW   rX   rY   limitr   namestokentexts	            rM   null_string_list_previewr      s    2	
#xT
*CE7#  L <e<< L	<<(D d?s$t||~ L 	Tu:L L " 	 L	s   B  	B.-B.c                    t        ||      syt        | |||      }|j                  d      d   }|rt        d |D              ry	 |j	                  d      S # t
        $ r Y yw xY w)NrG   r   r   c              3  4   K   | ]  }|d k  xs |dkD    ywr   rJ   r   s     rM   rx   z#c_string_preview.<locals>.<genexpr>   s      Ett2td{2Er   r   )rj   r[   r   r   r~   r   )rV   rW   rX   max_lenr   r   s         rM   c_string_previewr      sk    2
#xW
-CIIgq!ECEuEE||G$$ s   A 	A#"A#c                    | D ]?  }t        |d         }|t        |d         z   }||cxk  r|k  s.n 1t        |d         c S  y )NrX   raw_sizename)intstr)rW   rX   sectionstartends        rM   section_name_forr      sT     (GDM"c'*-..Bwv''	(
 rP   c                   t        | ||d      dk7  ry |dz   }g }t        d      D ]:  }t        | ||      }|dk(  r\|dz   }|t        |      |t        |      ||z
  ||D cg c]  }|d   dk(  s| c}|D cg c]  }|d   dk(  r
|d   d	k(  r| c}d
c S t        | ||dz         }	|dk(  r:t        | ||dz         }
|j	                  d|	d|	d|
t        |
      d       |dz  }|dk(  r5t        | ||dz         }
|j	                  d|	d|	d|
d|
dd       |dz  }|dk(  r;t        | ||dz         }
|j	                  d|	d|	d|
t        |
      d       |dz  }; y  y c c}w c c}w )Nr         r      fieldOffset      rL   i  )rX   vaHexendVaendVaHexlengthwritesecWritesactiveGateWritesr	   r   +0xrR   )widthr   fieldrL   valueHexrH   04xr   r   )r[   ranger^   rN   r}   rS   rc   rg   )rV   rW   rX   cursorr   r   subcmdend_varowr   rL   s              rM   decode_initializerr      s   sHb!$(;;!VF#%F2Y 2C6*T>aZFr!&M 2+ ,2QSc-6HD6PSQ  &%=)T1c'lf6L %  3&1*-Q;sHfqj1EMM$uSk* K  aKFq[Xvz2EMM$uSk* s,  aKFq[Xvz2EMM$uSk*!%L  aKFe2f Q R%s   E$-E$7E)c           
        t        | ||      dk7  ry |dz   }g }t        d      D ]'  }t        | ||      }|dk(  r9|dz   }t        d |D              }|t        |      |t        |      ||z
  d||dc S t        | ||dz         }	|dk(  r6t        | ||d	z         }
|j	                  ||	d|
t        |
      d
       |dz  }|d	k(  r1t        | ||d	z         }
|j	                  ||	d	|
d|
dd
       |dz  }|dk(  r7t        | ||dz         }
|j	                  ||	d|
t        |
      d
       |dz  }|j	                  ||	dd dd
       |dz  }* y )Nr   r      r   c              3  0   K   | ]  }|d    dv sd  yw)r   >   r	   r   r   r	   NrJ   rv   writes     rM   rx   z3decode_indexed_work_table_loader.<locals>.<genexpr>  s     #Y%U7^y=XA#Ys   
0x0059db60)rX   r   r   r   r   
tableVaHexknownWriteCountr   r	   r   )r   r   r   rL   r   rH   r   r   r   r   rG   )r^   r   sumrN   r}   rS   rc   rg   )rV   rW   rX   r   r   r   r   r   known_write_countr   rL   s              rM    decode_indexed_work_table_loaderr     s   	#x$!VF#%F4[ 6C6*T>aZF ##Y6#Y Yr!&M 2+*#4 	 	 3&1*-Q;sHfqj1EMM  K  aKFq[Xvz2EMM  s,  aKFq[Xvz2EMM !%L  aKFMM   aKFm6n rP   c                    |dk(  rt        | ||      }|r|d   S dS |dk(  rt        | ||      }|r|d   S dS |dk(  rt        | ||dz         }|dk(  rdS dS |dv ry|dv ry|d	v ry|dk(  ry|d
v ryy)Nr   r   r   r   r1   r	   >   r   r	   r   r   r   r%   r*   r2   r3   r4   r5   r:   r=   r>   r?   rA   rB   r$   rC   >   r   r"   r#   r'   r(   r)   r@   >   r   r   r   r   r   r   r   r   r&   r+   r/   r0   r6   r8   r9   r;   r<   rD   rE   >   r   r   r   r   r#   F   r,   r7   )r   r   r^   )rV   rW   rX   rm   initloadermodes          rM   command_lengthr   T  s    ~!#x4!%tH~,1,~1#xD#)vh0q0~#xa(AIq$1$  D  D;;  D  D~AArP   stopzload-resource/draw-op-1zload-resource/draw-op-2zload-resource/draw-op-3zload-resource/draw-op-4zload-resource/draw-op-5zload-resource/draw-op-6zload-resource/draw-op-7zload-resource/draw-op-8	   zload-resource-by-name
   zresource-region/draw-command   zrelease/clear-resourcezresource-index-command   zrefresh-resource-state   zresource-callback-commandzload-map/tile-resourcezload-resource/draw-op-0x11zload-resource/draw-op-0x12zload-resource/draw-op-0x13zload-resource/draw-op-0x14zload-resource/draw-op-0x16zload-resource/draw-op-0x17zset-resource-runtime-mode)r   r   r   r      r   c                
   t        | ||      }|dkD  r+|t        |      |t        |      ddddt        |       ddd	S t        j	                  |d	      }t        | |||      }|t        |      |t        |      t        j	                  |d
      ||j                  d      d}|dk(  rd|d<   d|d<   |S h d}h d}||v r|dk\  rt        | ||dz         }	t        | ||dz         }
t        | ||d	z         }t        | ||dz         }t        | ||      }t        | ||      }|j                  |	|
d|
d|t        |      ||t        |      |d	       |d    dt        |	       d|
dd|xs t        |       d|xs t        |       	|d<   |S ||v r|dk\  rt        | ||dz         }	t        | ||dz         }
t        | ||d	z         }t        | ||dz         }t        | ||dz         }t        | ||      }|j                  |	|
d|
d|t        |      |||d        |d    dt        |	       d|
dd|xs t        |       d!|dd"|d|d<   |S |d#v r|d$k\  rt        | ||dz         }	t        | ||dz         }
t        | ||d	z         }t        | ||dz         }t        | ||dz         }t        | ||dz         }t        | ||      }|j                  |	|
d|
d|t        |      ||||t        |      d%
       |d    dt        |	       d|
dd|xs t        |       d!|dd"|dd&t        |       |d<   |S |d'k(  rt|dk\  rot        | ||dz         }	t        | ||d	z         }t        | ||      }|j                  |	|t        |      |d(       d)t        |	       d|xs t        |       |d<   |S |dk(  r|dk\  rt        | ||dz         }t        | ||dz         }
t        | ||d	z         }t        | ||d*z         }t        | ||dz         }t        | ||dz         }|j                  ||
d|
d||||gd+       d,t        |       d|
dd-| d&| d&| d&| d.|d<   |S |d/v r=|d	k\  r8t        | ||dz         }
|j                  |
d|
dd0       |d    d|
d|d<   |S |d1k(  rd2|d<   |S |d3v ry|dk\  rtt        | ||dz         }t        | ||d	z         }t        | ||      }|j                  ||t        |      |d4       |d    d5t        |       d|xs t        |       |d<   |S |d6k(  r6t        | ||dz         }|j                  d7|i       d8t        |       |d<   |S |d   |d<   |S )9Nr   z
end-markerr   rG   z&resource mini-stream ends before byte z	 (> 0x20)T)	rX   r   rm   	opcodeHex
opcodeNamer   rawHexsummaryr   r   zunknown-resource-mini-oprt   )rX   r   rm   r   r   r   r   zresource mini-stream stopr   r   >   r	   r   r   r   r   r   r   >   r   r   r   r   r   r	   r   r   rH   r   )	slot
resourceIdresourceIdHexnameVa	nameVaHexr   tailtailHextailNamer    slot=
 resource=#06xz name=z tail=r   )r   r   r   r   r   r   argAargB args=0x,0x>   r   r   r   r   )
r   r   r   r   r   r   r   r   argCargCHex,r   )r   r   r   r   zload resource by name slot=r   )r   r   r   argszresource-region/draw mode=z args=()>   r   r   )r   r   r   zrefresh resource state>   r   r   )r   r   r   r   z mode=r   r   zset resource runtime mode=)r^   rN   rS   RESOURCE_MINI_LENGTHSgetr[   RESOURCE_MINI_OPCODE_NAMEShexrc   rg   r   update)rV   rW   rX   rm   r   r   r   dword_tail_opsword_pair_tail_opsr   resource_idname_var   r   	tail_namearg_aarg_barg_cr   arg_ds                       rM   decode_resource_mini_commandr    s   Xr"F}2Yf&?V~YW

 
	
 #&&vq1F
#xV
,Cr&\044V=WX''#,C ~4IF
?N1FbL#xa(#xa0c8R!V,3"q&)Xw7$S(D9	

%!+c!23wT{!

 
	 < !T
|:k$=O P*E'N+6)2JuT{1KM 	It Jm 
%	%&B,#xa(#xa0c8R!V,C26*C27+Xw7

%!+c!23w	
 		 < !T
|:k$=O P*E'N+8E#;c%N 	IJ JC 
%	%&B,#xa(#xa0c8R!V,C26*C27+C27+Xw7

%!+c!23wU|
 	 < !T
|:k$=O P*E'N+8E#;c%AeTYl^] 	IZ JS 
4FaK#xa(c8R!V,Xw7

DG%.Z^_`6tDzl&I_QVW^Q_H`aIH JG 
4FbL#xa(#xa0C26*C26*C26*C27+

%!+c!23E5%0	
 	 )dJ{4>P QG1UG1UG1UG16 	I, J% 
<	FaK#xa0

+"[QTDU@VWX-.jT8JKI J 
41I J 
<	FaK#xa(c8R!V,Xw7

DG%.Z^_`-.fT$ZLtG]uU\~F^_I J 
4#xa(

FD>"5d4j\BI J \*IJrP   c                   g }|}t        |      D ]g  }t        ||      s nYt        | ||      }|j                  |       |j	                  d      s|j	                  dd      dk  r n|t        |d         z  }i |t        |      |dS )Nr   r   r   )rX   r   commands)r   rj   r  r}   r   r   rN   )rV   rW   rX   max_commandsr  r   r   r   s           rM   decode_resource_mini_streamr  /  s    %'HF<  %Xv&*3&A776?cggh2a7#c(m$$% r rP   c                2   t        | ||      }t        | |||      }t        | |||      }|t        |      |t	        |      t
        j                  |d      t        t        | ||            ||j                  d      d}|dk(  rWt        | ||      }|rF|j                  |       d|d<   |d   r|dxx   d|d   d	   d
    z  cc<   |d   r|dxx   dz  cc<   |S |dk(  rrt        | ||      }|ra|j                  |       dj                  d |d   d d D              }	dt        |d          d|j                  dd	       d|	rd|	 ndz   |d<   |S |dk(  r;|dk\  r6t        | ||dz         }
|
|d<   t        |
      |d<   dt        |
       |d<   |S |dk(  rt        | ||dz         }||d<   d| |d<   |S |dk(  r|dk\  rzt        | ||dz         }t        | ||dz         }
||d<   |
|d<   t        |
      |d<   d t        |
       d!| d"|d<   t!        ||
      rdd#|
t        |
      t#        ||
      d$g|d%<   |S |d&k(  r|dk\  rt        | ||d'z         }t        | ||dz         }||d(<   ||d)<   t        |      |d*<   d+t	        |       d,t        |       d-|d<   t!        ||      rdd#|t        |      t#        ||      d$g|d%<   |S |d.k(  ret        | ||d'z         }||d/<   d0| |d<   |d'k(  rA|dk\  r<t        | ||dz         }||d1<   t        |      |d2<   |dxx   d3t        |       z  cc<   |S |d4v rK|d5k(  rd6|d<   |S |d7k(  rd8|d<   |S t        | ||d'z         }||d9<   |d:k(  rd;nd<d=t	        |       d>z   |d<   |S |d?k(  r|dk\  rt        | ||d'z         }t        | ||dz         }t        | ||dz         }t        | ||dz         }t        | ||d&z         }||d/<   ||d@<   ||dA<   ||dB<   ||dC<   dD| dE| dF| dG|dHdI|dH
|d<   |S |dk(  rt        | ||dz         }
|
|d<   t        |
      |d<   |dz   |dJ<   t        |dz         |dK<   dLt        |
       dMt        |dz          dN|d<   t!        ||
      rdd#|
t        |
      t#        ||
      d$g|d%<   |S |dOk(  rdP|d<   |S |dQk(  r|dk\  rt        | ||d'z         }t        | ||dz         }||d/<   ||d1<   t        |      |d2<   dRt	        |       dSt        |       d-|d<   t!        ||      rpdd#|t        |      t#        ||      d$}t%        | ||      }	|	r@|	|dT<   |g|dU<   |	j'                         r|	j'                         d	   n|	}|dxx   dV| z  cc<   |g|d%<   |S |dWk(  rdX|d<   |S |dYk(  r|dk\  rt        | ||d'z         }t        | ||dz         }t        | ||dz         }
||d/<   ||dZ<   t        |      |d[<   |
|d<   t        |
      |d<   d\t	        |       d]t        |       d^t        |
       d_|d<   t!        ||
      rdd`|
t        |
      t#        ||
      d$g|d%<   |S |dak(  rkt        | ||d'z         }t        | ||dz         }t        | ||dz         }||d/<   ||db<   ||dc<   ddt	        |       det	        |       dFt	        |       df|d<   |S |dgk(  rBt        | ||d'z         }t        | ||dz         }||d/<   ||dh<   |d	k(  rdindjdk| dl| dmz   |d<   |S |dnk(  r#t        | ||d'z         }||dh<   do| dl| dm|d<   |S |dpk(  r|dk\  rt        | ||d'z         }|dqz  }t)        |drz        }t        | ||dz         }t        | ||dz         }|j                  ||||ds|dt|t        |      du       dv| dw| dx|dtdyt        |       dz	|d<   t!        ||      rdd#|t        |      t#        ||      d$g|d%<   |S |d{k(  r|dk\  rt        | ||d'z         }t        | ||dz         }t        | ||dz         }||d/<   ||d|<   ds|dt|d}<   ||d~<   t        |      |d<   d|d'k(  rdn|d	k(  rdnd| z   d|ddt        |       z   |d<   |S |dk(  r|dk\  rt        | ||d'z         }||d/<   |d	k(  rVt        | ||dz         }t        | ||dz         }|j                  ||t        |      dd       d| dt        |       d|d<   |S |d'k(  rt        | ||dz         } t        | ||dz         }!t        | ||dz         }t        | ||d&z         }|j                  | |!|t        |      |dd       dt	        |        dFt	        |!       dt        |       d!| d	|d<   |S |dk(  rit        | ||dz         } t        | ||dz         }!t        | ||dz         }|j                  | |!|dd       dt	        |        dFt	        |!       d!| d|d<   |S dt	        |       d|d<   |S |dk(  r|dk\  rt        | ||d'z         }||d/<   |dv rvt        | ||dz         }||d<   t        |      |d
<   |d	k(  rdnd|d<   d| dt        |       d|d    d-|d<   t!        ||      rdd#|t        |      t#        ||      d$g|d%<   n|dv rt        | ||dz         } t        | ||dz         }!t        | ||dz         }"|j                  | |!|"|d'k(  rdndd       d| dt	        |        dFt	        |!       dFt	        |"       d|d    d-|d<   nAt        | ||dz         }||d1<   t        |      |d2<   dt	        |       dSt        |       d-|d<   d%|vrD|j                  d1      3t!        ||d1         r$|d1   }dd#|t        |      t#        ||      d$g|d%<   |S |dk(  r|dk\  rt        | ||d'z         }t        | ||dz         }#t        | ||dz         }$t        | ||dz         }%t        | ||dz         }&t        | ||dz         }'|j                  ||#ds|#dt|$|%|&|'gd       dt	        |       d|#dd|$ dF|% d|& dF|' d|d<   |S |dk(  r)t        | ||d'z         }||d<   dt	        |       d|d<   |S |dk(  rs|dk\  rmt        | ||d'z         dqz  }t        | ||dz         dz  }(t        | ||dz         dz  })t        | ||dz         }*t        | ||dz         }|j                  ||(|)|*|t        |      d       |dk(  rt+        | ||      }+|+|d<   dt	        |(       dt	        |)       dt	        |*       dSt        |       d	|d<   |+rw|dxx   ddj                  |+d dO       z   t        |+      dOkD  rdndz   z  cc<   nAdt	        |       dt	        |(       dt	        |)       dt	        |*       dSt        |       
|d<   t!        ||      rdd#|t        |      t#        ||      d$g|d%<   |S |dk(  r|dk\  rt        | ||d'z         },t        | ||dz         }-t        | ||dz         }.t        | ||dz         } t        | ||dz         }!|j                  |,|-|.| |!d       dt	        |,       d|-dtd|. d| dtd|!dt
|d<   |-dv r|dxx   dz  cc<   t!        ||.      rdd#|.t        |.      t#        ||.      d$g|d%<   |S |dk(  r|dk\  rt        | ||d'z         },t        | ||dz         }-t        | ||dz         }.|j                  |,|-|.dɜ       dt	        |,       d|-dtd|. |d<   |-dk(  r|dxx   dz  cc<   t!        ||.      rdd#|.t        |.      t#        ||.      d$g|d%<   |S |dk(  r|dk\  rt        | ||d'z         }t        | ||dz         }/t        | ||dz         }
||d/<   |/|d<   |
|d<   t        |
      |d<   dt	        |       d|/dtdt        |
       dҝ|d<   t!        ||
      rdd#|
t        |
      t#        ||
      d$g|d%<   |S |dk(  rEt        | ||d'z         }t        | ||dz         }0||d/<   |0|d<   |d'k(  rdn|d	k(  rdnd՛ d|0 dם|d<   |S |dk(  r|dk\  rt        | ||dz         }||d1<   t        |      |d2<   dt        |       d-|d<   t!        ||      rt-        | ||dګ      }1|1|d<   |1j                  dg       D 2cg c]6  }2|2j                  dݫ      s#|2j                  d      r|2j                  dd      8 }3}2|3r"|dxx   ddj                  |3d d       z   z  cc<   dd#|t        |      t#        ||      d$g|d%<   |S |dk(  rl|dk\  rgt        | ||d'z         }4t        | ||dz         }0t        | ||dz         }
|4|d<   |0|d<   |
|d<   t        |
      |d<   d|0 d|4 dt        |
       dҝ|d<   |S |dk(  rJt        | ||d'z         },t        | ||dz         }|,|d<   ||dh<   dt	        |,       dt	        |       d|d<   |S |dk(  rt        | ||d'z         },t        | ||dz         }t        | ||dz         }
|,|d<   ||dh<   |
|d<   t        |
      |d<   dt	        |,       dFt	        |       dt        |
       d|d<   t!        ||
      rdd#|
t        |
      t#        ||
      d$g|d%<   |S |dk(  rk|dk\  rft        | ||d'z         }5t        | ||dz         }6t        | ||dz         }7t        | ||dz         }8dt	        |5       dt	        |6       d|7 dF|8 d	|d<   |S |dk(  r|dk\  rt        | ||d'z         }t        | ||dz         }7t        | ||dz         }8t        | ||dz         }9t        | ||dz         }
|
|d<   t        |
      |d<   dt	        |       d|7 d|8 dt	        |9       dt        |
       d|d<   |S |dk(  r||dk\  rwt        | ||d'z         }t        | ||dz         }9t        | ||dz         }:t        | ||dz         };dt	        |       dt	        |9       dt	        |:       d^t	        |;       |d<   |S |dk(  r|dk\  rt        | ||d'z         }t        | ||dz         }9t        | ||dz         }6t        | ||dz         }7t        | ||dz         }8dt	        |       dt	        |9       dt	        |6       d|7 d|8 
|d<   |S |dk(  r|dk\  rt        | ||d'z         }t        | ||dz         }7t        | ||dz         }8t        | ||dz         }9t        | ||d&z         }dt	        |       d|7 d|8 dt	        |9       dt	        |       
|d<   |S |dk(  r\t        | ||d'z         }t        | ||dz         }9t        | ||dz         }d t	        |       dt	        |9       dt	        |       |d<   |S |dqk(  rd|d<   |S |dk(  rdt        | ||dz         }
|
|d<   t        |
      |d<   dt        |
       d|d<   t!        ||
      rdd#|
t        |
      t#        ||
      d$g|d%<   |S |drk(  rxt        | ||d'z         }t        | ||dz         }<d|<dz  z   }=||dh<   |<|d<   |=|d<   t        |=      |d	<   d
t	        |       dt	        |<       dt        |=       |d<   |S |dk(  r|dk\  rt        | ||d'z         }t        | ||dz         }>||dh<   |>|d<   t        |>      |d<   dt	        |       dt        |>       d-|d<   t!        ||>      rdd#|>t        |>      t#        ||>      d$g|d%<   |S |dk(  rd|d<   |S |dk(  rd|d<   |S |dk(  r|dk\  rt        | ||d'z         }t        | ||dz         }/t        | ||dz         }
||d/<   |/|d<   |
|d<   t        |
      |d<   dt	        |       d|/ dt        |
       |d<   t!        ||
      rdd#|
t        |
      t#        ||
      d$g|d%<   |S |dk\  r)g }?t/        d|d      D ]|  }@t        | |||@z         }t!        ||      s
|t0        k(  s)@d|@dH|t        |      t#        ||      d$}|dQk(  r|d   dk(  rt%        | ||      }	|	r|	|dT<   |?j3                  |       ~ |?r|?|d%<   |?D Acg c])  }A|Aj                  dT      rAdT   j'                         d	   + }B}A|BrB|?D Acg c]  }A|Aj                  dT      sA c}A|dU<   ddj                  Bd d       z   |d<   |S dj                  d |?D              |d<   |S c c}2w c c}Aw c c}Aw (  Nunknownrt   )rX   r   rm   r   r   handlerVaHexr   r   r   zobject field initializerr   r   z; writes object +0xec -> r   r   r   z; writes object +0x14 = 0x0101r   , c              3  8   K   | ]  }d |d    d|d      yw)[r   z]=r   NrJ   r   s     rM   rx   z!decode_command.<locals>.<genexpr>]  s0        E'N#2eJ&7%89 s   r   r   z*indexed work/global table loader; entries=z knownWrites=r   z table=0x0059db60z sample rG   r   r   targetVatargetVaHexzjump -> r   countzdelay/countdown count=zloop/wait target=z count=z; handler stores target in object+0x3c and count in object+0x60 on first pass, then jumps back to object+0x3c until the countdown reaches zeroz+0x04)rZ   	offsetHexrL   r   r   pointerOperandsr   r	   kindchildScriptVachildScriptVaHexzcreate child object kind=z script=z; handler advances +0x08r1   r   ztransient helper mode 	payloadVapayloadVaHexz
; payload >   r2   r3   r4   r5   r2   zJreset runtime descriptor index queue at 0x004576e8; handler advances +0x04r3   zTprocess/rebuild runtime descriptor index queue at 0x004576e8; handler advances +0x04operandIndexr4   addremovez" runtime descriptor index operand=z- via 0x004576e8 queue; handler advances +0x04r6   xyobjectIdstateztile-to-draw position mode=z tile=(r   z) objectId=0xrR   z	 state=0xcontinuationVacontinuationVaHexzcall/push-continuation -> z; pushes return address z^ to object return stack object+0x44[object+0x5c], increments object+0x5c, then jumps to targetr   zkreturn/pop-continuation; decrements object+0x5c and resumes at object return stack object+0x44[object+0x5c]r#   zprompt/text command mode=z	 payload=textPreviewtextPayloadRefsz; text payload: r$   zDprompt-completion wait; holds VM until global prompt callback clearsr   maskmaskHexzinput-mask branch mode=z mask=z target=z2; handler either advances +0x0c or jumps to targetz+0x08r   subAsubBzaction/evaluate mode=z args=z; handler advances +4r    r   zstore current child objectzload runtime object slotr   z through 0x0059dd70[z]; handler advances +0x04r!   z"destroy/clear runtime object slot=r"   r>   r?   rH   r   )rawSlotr   restoreCursor
filterMaskfilterMaskHexr  r  z"linked-object script fanout; slot=z restoreChildCursor=z object+0x14 mask=0xz childScript=z; parent stream advances +0x08r+   
filterWordfilterWordHexflagsflagsHexzactive-object flag setclearzmode z; filter object+0x14 mask=r   z; flags=r'   
0x004010d2)repeatCountrL   r   calledFunctionVaHexz,repeat render/palette command mode=0; count=z value=z"; calls 0x004010d2 once per repeat
0x00401518)r   r   rL   r   r0  r1  z+repeat render/palette command mode=1; args=z9; passes stream+4 plus args to 0x00401518 once per repeat
0x0040146a)r   r   r0  r1  z+repeat render/palette command mode=2; args=z"; calls 0x0040146a once per repeatz+repeat render/palette command unknown mode=z; handler still advances +0x08r(   >   r   r   rL   
0x00401036
0x00401699r1  zrender/palette command mode=z; value=z; calls >   r	   r   
0x004015b9
0x00401632)r   r   r   r1  z; args=z$render/palette command unknown mode=r   r   )r   r   r   rectzdraw/fill rect mode=r   z rect=(z)-(z); handler advances +0x0cr-   zstore byte z/ into global 0x0059e37c; handler advances +0x04r         )r   submode	highFlagsauxr  r  0   resourceNamesz)resource list install/load mode=0x30 sub=z high=z aux=zK; handler stores payload to 0x0059e2d4 and calls resource loader 0x0042cf5az; resources: z ...zresource/sprite command mode=z sub=r   )groupr   literalr   r   z&field arithmetic/write command; group=z
 field=+0xz	 literal=r   r   >         z5; field matches active object position word candidater   )r@  r   rA  z,dword field arithmetic/write command; group=r   z;; field matches active object script pointer slot candidater   	testValuez,conditional branch via compare helper; mode=z test=0xz -> z; else +0x08r%   bitIndexr   z global flag bit z in 0x0059db60 bitsetr)   z3resource mini-stream runner via 0x00423a2f payload=)r  resourceMiniStreamr  r   z; z / r&   expectedzbranch if global flag bit z == r:   r@  z'store active script group key 0x574544=z, 0x574543=z; handler advances +0x04r;   z*branch if active script group key equals (z) -> z; else advances +0x08r/   zHstep global position words 0x4576dc/0x4576de toward target; advanceMode=z axis=z	 target=(r   r7   z/branch if active object position matches; mode=z x=z y=z kind=z; else +0x0cr8   zHscan active objects by object+0x16; compare/increment object+0x70; mode=r9   zQscan active objects by object+0x16 and compare object+0xe8/+0xea positions; mode=r<   zMscan linked active objects and set object position/motion/state fields; mode=z state=r=   z)active object sequence/motion scan; mode=z"skip/no-op; handler advances +0x04rE   zBbranch on active descriptor count 0x004576e8; if count is zero -> z, otherwise advances +0x08iPwE    descriptorIndexdescriptorVadescriptorVaHexz7cache descriptor base into 0x0059db30 slot table; slot=z descriptorIndex=z descriptorBase=r@   tableVar   zDstore selected root from inline pointer table into 0x0059de30; slot=z table=rA   zycall selected root if 0x0059de30 is set; handler first advances +0x04, pushes that continuation, then jumps to 0x0059de30rB   zCselected-root alternate call/cleanup helper; handler advances +0x04rD   zcondition/test mode=r   r   .dataztext payload: c              3  &   K   | ]	  }|d      ywr   NrJ   rv   items     rM   rx   z!decode_command.<locals>.<genexpr>  s     *O4
+;*O   )r^   r   r[   rN   rS   OPCODE_NAMESr   rn   r   r   r   r   r   r{   rg   rc   rj   r   r   r   boolr   r  r   MAP_LOADER_FUNCTIONr}   )CrV   rW   rX   rm   r   r   r   r   r   previewtargetr  r  child_scriptr   payloadoperandr  r  	object_idr  	value_row
first_liner!  sub_asub_br   raw_slotrestore_cursorfilter_wordr+  rL   r   r   r   r   x0y0x1y1r;  
high_flagsr=  r   r@  r   rA  
test_valuebitminicommandmini_summariesrG  advance_mode	axis_modex_valuey_valueobject_kindqueued_valuesequence_targetdescriptor_indexdescriptor_vatablevaluesrZ   rQ  preview_valuessC                                                                      rM   decode_commandry  A  s["   Xr"FC2v6F
#xV
,Cr&\"&&vy9k#x@A''#,	C ~!#x4JJt7C	NJI$=d:>Nq>QR\>]=^"__&'I"BB
~1#xDJJvii  #H-bq1  G
vh/01vzzJ[]^?_>` a## ,3XgY'< 	N 
~&A+S(BF+ J"6]M#E&M?3IH JG 
4C26*G1%9I@ J 
4FaKC26*S(BF+G J"6]MfgeW =N N 	I
 6"$!&M+Hf=' &C!"f JY 
4FaK#xa(3"q&1F+O"'"54T$ZL|I\H]]uvI<($%!,/+HlC' &C!"H J{ 
4#xa(F1$8I191#xa0G&C"'.C	N
5>*:;;Nj Ji 
+	+T>iC	Nd Jc t^sC	N` J] hQ/G")C D.h6tG}oErst 	NX JQ 
4FaK#xa(XrAv&XrAv&sHb1f-	3"q&)FCC#JG61QC}YsO9USVKY 	Iz Js 
4S(BF+ J"6]M "Q#(a= (v 8%%*26]O 4;; 	I
 6"$!&M+Hf=' &C!"Z JK 
4; 	IH J 
4FaK#xa(c8R!V,F"K#GnN4T$ZL	%PW.IYYqrI7#$ !'N+Hg>I #3':G+2	-(*3%&8?8J8J8LW//1!4RY
I$4ZL"AA&/[C!"T JS 
4_IP JO 
4FbL#xa(3"q&)S(BF+FFtI J"6]M%d4j\d}HUSY]O \? ? 	I 6"$!&M+Hf=' &C!"r Je 
4#xa(3"q&)3"q&)FFF#DJ<vd5k]!DK= Q" " 	IV JO 
4#xa(#xa(FF-1QY)<Vtf06OPQ 	ID J} 
4#xa(F=dVCWX\W]]vwIv Ju 
4FaKc8R!V,$ho.3"q&)3"q&1

#!/"#%d3Z!-$),$7
	
6-n-==QRVWZQ[ \ .//MO 	I
 <(  !() %l 3/,G&C!"F Ju 
4FaK#xa(#xa0C26*F'L!#K#45OG,J!	u$!)w5Q*;t*<HU5\NST 	Ib JY 
4FaK#xa(F19sHb1f-EXrAv.EJJ$!%L'3	 wuU|n4VX 	N@ Jy QYsHb1f-EsHb1f-EXrAv.EsHb1f-EJJ!%L$'3 U}Ad5k]'%,wug VJJ 	N^ JU QYsHb1f-EsHb1f-EsHb1f-EJJ$'3	 U}Ad5k]'% A33 	N@ Ju  K4PT:,VtuC	Nt Js 
4FaK#xa(F6>XrAv.E CL#ElC
O9=C%&.tfHU5\N K2344LN 	N Xu%!(" %e/%@+ *%& V^sHb1f-EsHb1f-EsHb1f-EJJ7;qy|l	  /tf 5U}Ad5k]!DK= A2344LN 	N #xa0G&C"'.CCDJ<yY^_fYgXh  iA  BC	NC'CGGK,@,LQVW_adepaqQr+&G$ !'N+Hg>' &C!"^ JQ 
4FbL#xa(#xa0hQ'hQ'hQ'hR(

%!+c!23R$	
 	 #4:,jT8J KD"SAbT)BD 	Iv
 Jo
 
43"q&)G&tE{m3bcIh
 Jg
 
4FaK#xa(4/S(BF+d2XrAv.5
hQ'c8R!V,

# !'N
 	 4<,S(GDE#(C ;DM? KZ()tCyk5>BR S\\ 	N
 I/DIIeBQi4H"HVYZ_V`cdVdFjl"mm 0T
|5g PZ()tCyk5>BRT 	N 7#$ !'N+Hg>' &C!"j	 J]	 
4FbL3"q&)C26*c8R!V,C26*C27+

 
 	%[ME#;iy IC[E#;0 	I
 $$	NUUN7#$ !'N+Hg>' &C!"r Je 
4FaK3"q&)C26*c8R!V,

 
 	%[ME#;iyJ 	I F?	N[[N7#$ !'N+Hg>' &C!"D Jw 
4FaK#xa(hQ/
S(BF+F%K J"6]MJ<x
3'7tE&M?,X 	I 6"$!&M+Hf=' &C!"\ JO 
4#xa(#xa(FJ	u$!)wJJ[\_[` a# # 	ID J} 
4FaKc8R!V,"K#GnNNuU\~N^^vwI7#.sHgTUVD(,C$%  $xx
B7{{6*w{{9/E Ir*N 
 I$N2A4F)G"GG$ !'N+Hg>' &C!"^ JQ 
4FaKc8R!V,#xa(S(BF+"JJ J"6]M(T(4fl[ 	I@ J{ 
43"q&)#xa(GF5d5k]+dSWj\ Z% % 	Ip Ji 
43"q&)#xa(S(BF+GF J"6]M8eQtDzl S- 57 	I 6"$!&M+Hf=' &C!"N JA 
4FaK#xa0sHb1f-	c8R!V,c8R!V,-.fT)_4EYwiWXY`Xaabd 	Iv Jo 
4FbL#xa(c8R!V,c8R!V,hQ/S(BF+ J"6]MJ<s7)3wivd;>O=PPTUZ[aUbTccoq 	I^ JW 
4FaK#xa(hQ/#xa0S(BF3J<vd;&7%8\@R?SS[\`ap\q[rt 	IL JE 
4FaK#xa(hQ/sHb1f-	c8R!V,c8R!V,J<vd;&7%8tI>OsSZR[[^_f^gi 	Ix Jq 
4FaK#xa(c8R!V,c8R!V,hQ/3"q&)J<s7)3wivd;>O=PPWX\]bXcWdf 	Id J] 
4#xa(hQ/3"q&)J<vd;&7%8U}N 	IT JM 
4=IJ JI 
4S(BF+ J"6]M##(=/1KM 	I 6"$!&M+Hf=' &C!"v Ji 
4#xa(c8R!V4"%5%<<F!1+N!&}!5J<06F1G0H I#M235 	IX JO 
4FaK#xa(C26*FI!%LLJ<wuU|n4LN 	I 5!$!%L+He<' &C!"x Jk 
4A 	Ih Ja 
4^I^ J] 
4FaK#xa(hQ/
S(BF+F%K J"6]M/T
|7:,dSXY_S`RabI6"$!&M+Hf=' &C!"H J; 
1Avq) 	)FXrF{3EXu%2E)E$#&vcl!3" %e/%@	 T>i	&:g&E*3%@G3:	-0i(	) %+C!" #88M* ]#..03N 
 ;A)]4TXXmE\$)]%&!1EJJ~bq?Q4R!RI J "&*O*O!OIJmX *^s    C;Aeb6.Aec,AedAec           
        g }|}t               }d}d}	g }
g }t        |      D ]  }||v r$|j                  |t        |      ddddd        nk||z
  |k\  r n`|j	                  |       	 t        | ||      }|j                  |       |j                  d      t        k(  s|j                  d      t        k(  rd	}	d	}|j                  d
      xs g D ]  }|j                  d      t        k(  sd	}	d	}! |j                  d      dk(  r%|j                  d      r|
j                  |d          |j                  d      r|j                  |d          |j                  d      dk(  r nQ|j                  d      dk(  r n;|j                  d      dk(  r n%|t        |j                  dd      xs d      z  } |t        |      ||
||	|t        |      dS # t        $ r Y  )w xY w)NFrG   zloop-detectedr   z6decode stopped because this cursor was already visited)rX   r   r   r   r   r   r  r  Tr  rL   rm   r   r   r   r   r   r   r   )startVa
startVaHexr  objectEcWritesr   mapLoaderRefFoundrouteProofFounddecodedCommandCount)r-  r   r}   rN   r  ry  rU   r   rU  r|   r   r{   )rV   rW   start_var  	max_bytesrowsr   visitedroute_proofmap_loader_refobject_ec_writestext_payload_refsr   r   rZ  s                  rM   decode_streamr    s    "$DFGKN-/.0<  $1WKKv-S  H	)F	 h7C 	C77:"559MQd9d!NKww017R 	#G{{7#'::!%"	# 778$)<##C
O477$%$$S):%;<778$778$778$#cggh*/a00I$1L Ho*,+&"4y	 	+  		s   +G	G#"G#c                <   dt        j                  dt              z   }g }|D ]n  }|d   dvrt        |d         }|t        |d         z   }| || }d}	 |j	                  ||      }	|	dk  rJ|j                  t        |d         |	z          |	d	z   }> t        |      S )
Ns   ^  rf   r   >   .text.rdatarM  r   r   r   rX   r	   )ra   pack
PAYLOAD_VAr   findr}   sorted)
rV   rW   patterncallersr   	raw_startraw_enddatar   hits
             rM   find_payload_callersr  R  s    !FKKj$AAGG 6?">>'	c'*"5669W%))GU+CQwNN3wt}-34!GE  '?rP   c           	        ||z
  }||z   }g }	 t        | |||      }	t        dt        t	        |	      dz
  d            D ]S  }
t        j                  d|	|
      d   }||v s"|j                  ||
z   t        ||
z         |t        |      ||   d       U t               }g }|D ]3  }|d   |d   f}||v r|j                  |       |j                  |       5 |S # t        $ r |cY S w xY w)Nr   r   rf   )atVaatVaHexr  r  r   r  r   )r[   rU   r   maxr{   ra   unpack_fromr}   rN   r-  r  )rV   rW   cns_strings	center_vabeforeafterr   rY   refsr  rZ   rL   seenuniquer   keys                   rM   cns_refs_nearr  e  s    EE>D!#DsHeT2 3s4y1}a01 	""4v6q9KKK 0!$U|#E* 	 "%D#%F 6{CK($;c M+  s   C C('C(c                    |dz
  }d}g }	 t        | |||      }d}	 |j                  d|      }|dk  r	 |S ||z   }	t        | ||	      }
|
r|
d   r|j	                  |
       |dz   }J# t        $ r |cY S w xY w)Nr*   i   r   r   r   r	   )r[   rU   r  r   r}   )rV   rW   r  r   rY   r  r  r   r  rX   r   s              rM   initializer_blocks_nearr    s    ED!#DsHeT2 E
ii+U37 K S[!#x4D$KKa   s   A& &A43A4c           	     x   |dz
  }t        | ||      }t        | ||      }g }|D ]:  }|d   D ]0  }	|	d   }
t        ||
      s|j                  t	        | ||
             2 < t        d |D              }t        d |D              }t        | |||      }i d|dt        |      d|d	t        |      d
|dt        |      dt        ||z
        dk  dt        | ||d      j                  d      d|dt        |D ch c]  }|d   	 c}      d|d|dt        |      d|d|d|rdS |rdS dS c c}w )Nr   r   rL   c              3  &   K   | ]	  }|d      ywr~  NrJ   rv   streams     rM   rx   zcaller_row.<locals>.<genexpr>  s     NVV/0NrR  c              3  &   K   | ]	  }|d      ywr  NrJ   r  s     rM   rx   zcaller_row.<locals>.<genexpr>  s     MFf./MrR  callerVacallerVaHexcontextStartVacontextStartVaHexentryPointerVaentryPointerVaHexentryPointerLooksLocalr   commandRawHexr   rt   nearbyCnsRefsnearbyCnsNamesr    initializerBlocksWritingObjectEcnestedObjectEcScriptsnestedObjectEcScriptCountr~  r  classificationzroute-proofzactive-object-script-contextzresource-context-caller)rg   r  rj   r}   r  r   r  rN   absr[   r   r  r{   )rV   rW   r  	caller_vacontext_startentry_pointerinitializersnested_scriptsr   r   rW  
map_loaderr  cns_refsr   s                  rM   
caller_rowr    s    $MX}5M*3)DLN L*% 	LE7^FXv&%%mC6&JK	LL
 N~NNJMnMMKS(KCHIuY' 	- 	U=1	
 	- 	U=1 	!#mm&C"Dv"M 	h	1=AA#F 	 	&!B##f+!BC 	+L 	  	$S%8 	Z 	;  	 # (  0' * ++  "Cs   >D7c                2   | j                         }t        |      }t        ||      }t        ||      D cg c]  }t	        ||||       }}t        |D ch c]*  }|d   D ]   }|d   D ]  }t        ||d         r|d    " , c}}}      }	g }
t               }|D ]B  }|d   D ]8  }|d   D ].  }|d   }||v r|j                  |       |
j                  |       0 : D t        d |D              }t        d |D              }|D cg c]
  }|d   s	| }}d	t        t              t        |      t        |      t        d
 |D              |	D cg c]  }t        |       c}t        |
      ||ddd
||
g dg ddS c c}w c c}}}w c c}w c c}w )Nr  r   rL   r  r   c              3  &   K   | ]	  }|d      ywr  rJ   rv   r   s     rM   rx   z build_summary.<locals>.<genexpr>  s     @c+,@rR  c              3  &   K   | ]	  }|d      ywr  rJ   r  s     rM   rx   z build_summary.<locals>.<genexpr>  s     A#S,-ArR  r  zObject payload 0x442c75 callersc              3  &   K   | ]	  }|d      yw)r  NrJ   r  s     rM   rx   z build_summary.<locals>.<genexpr>  s     ,aRUS1L-M,arR  Fz0x442c75 is reused by manual interaction/resource contexts; nested +0xec scripts currently resolve to prompt/item/switch payloads, not route proof)
r  callerCountactiveObjectContextCountr  nestedObjectEcTargetsHextextPayloadRefCountr  r~  sceneAutoTransitionClaimr  )zcNo caller is promoted to a concrete map transition without a map loader or selected map/root write.z5Nearby map CNS resources are treated as context only.zjThis analysis keeps map movement manual: overlap can arm scripts, but scene-auto movement is not inferred.zThe active chain decoded here is classified as switch/chest/item interaction because its data operands preview as prompts and item messages.)zUdo not use the 0x4467ec chain as a map-route proof; it is an interaction prompt chainzrcontinue looking for active object scripts whose data operands reference map roots, coordinates, or the map loaderzGuse manual trigger samples as constraints, not as automatic route proof)titler   r  r   	nonClaims	nextSteps)
read_bytesr   r   r  r  r  rj   r-  r  r}   r   rN   r  r{   r   )exe_pathrV   rW   r  rX   r  callerr   r   nested_targetstext_payloadsseen_text_payloadsr  refrL   r  r  r   active_object_contextss                      rM   build_summaryr    s   



CS!H"31KDXY\^fDghbz#xb9hGh => *%	 5>*	 	g N M#&5 *45 	*F/0 *G.."&&u-$$S)*	** @@@KAAAJ-4Yc<W8XcYY2!*-w<(+,B(C),,aY`,a)aCQ(R%u(R#&}#5*!+(- s
 (

- + i& Z )Ss   F/F
FFFc                R   | d   }ddd|d    dd|d    d	|d
    d|d    ddj                  d |d   D              xs d d|d    d|d    d|d    d|d    ddddddddddd d!g}| d"   D ]  }dj                  d# |d$   d d% D              }t        |d$         d%kD  r|d&z  }g }|d'   D ]  }|j                  d( |d)   D                |j                  d*|d+    d,|d-    d.|d/    d0|xs d1 d0dj                  d2 |D              xs d1 d0|d    d3        |g d4z  }| d"   D ]%  }|d5   D ]  }|j                  d6|d7    d8|d+    d       |j                  d       |j                  d9|d:           |j                  d|d           |j                  d|d           |j                  d       |j                  d;       |j                  d<       |d=   d d> D ]S  }|j                  d*|d?    d,|j	                  d@d       d.|j	                  dAd       d0|j	                  dd       d3	       U |j                  d        ( |g dBz  }| dC   d dD D ]B  }	dEj                  |	dF   j                         d dG       }
|j                  d*|	dH    d.|
 d3       D |j                  d       |dIdgz  }| dJ   D ]  }|j                  dK|         |g dLz  }| dM   D ]  }|j                  dK|         |j                  d       dNj                  |      S )ONr   z!# Object Payload 0x442c75 CallersrG   z- payload: `r  `z- caller count: r  z- active object contexts: r  z- nested object +0xec scripts: r  z- nested object +0xec targets: r	  c              3  (   K   | ]
  }d | d   ywr  NrJ   rP  s     rM   rx   zmarkdown.<locals>.<genexpr>  s     3jDavQK3j   r  nonez- text payload refs: r  z- route proof found: r  z- map loader ref found: r~  z- scene auto transition claim: r  u	   ## 결론u~   `0x442c75` 호출부 6곳 중 3곳은 근처 초기화 블록에서 `object +0xec`를 다른 스크립트로 직접 채운다.u   그러나 nested script가 참조하는 `0x2f` 데이터는 스위치/상자/아이템 발견/획득 프롬프트로 디코드된다.us   따라서 이 3개는 수동 이동 경로가 아니라 수동 상호작용 오브젝트 체인으로 분류한다.u   다만 현재 디코드 범위에서는 맵 로더 `0x0042449c` 또는 목적지 맵/root/좌표 write가 확인되지 않았으므로 경로로 승격하지 않는다.z## Caller SummaryzJ| caller | entry ptr | class | CNS context | +0xec targets | route proof |z|---|---|---|---|---|---|r  c              3  (   K   | ]
  }d | d   ywr  rJ   rv   r   s     rM   rx   zmarkdown.<locals>.<genexpr>  s     J!D6Jr  r  r   z, ...r  c              3  &   K   | ]	  }|d      ywrO  rJ   r   s     rM   rx   zmarkdown.<locals>.<genexpr>#       K5,KrR  r   z| `r  z` | `r  z` | r  z | -c              3  (   K   | ]
  }d | d   ywr  rJ   rv   rW  s     rM   rx   zmarkdown.<locals>.<genexpr>&  s     'L&!F81'Lr  z |)rG   z## Nested +0xec ScriptsrG   r  z### `r|  z` from caller `z- decoded commands: r  z#| VA | opcode | meaning | summary |z|---|---|---|---|r  r   r   r   r   )z## Text Payload EvidencerG   z| VA | preview |z	|---|---|r   r   <br>r  r   r   u   ## 하지 않는 주장r  z- )rG   u   ## 다음 작업rG   r  ry   )r   r{   r|   r}   r   r   )r   slinesr   cnstargetsr   r  rk  r  rV  rQ  s               rM   markdownr    sf   	A+

q()+
1]+,-
$Q'A%B$CD
)!,G*H)IJ
)$))3jANhLi3j*j*tnt)uv
"7 89:
"3 456
"1%8#9":;
)!,F*G)HI

 	I 	P} 	s

T#/E2 y! 

iiJ4D0Ebq0IJJs#$%)7NC:; 	LDNNK$z:JKK	L#m$%U3/B+C*DDM]I^H__bzcl#dii'LG'LLSPSTTWX[\mXnWooqs	


 
  E
 y! 12 	FLL5!5 6oc-FXEYYZ[\LLLL/7L0M/NOPLL08I1J0KLMLL3F;N4O3PQRLLLL>?LL,-!*-cr2 ''*+5["1M0Nd{{<45SYPR9S8TTVX
 LL	  
  E ()#2. =++c-0;;=bqABs3z?+4y;<= 
LL	!
 E $ "r$[!"	  E
 $ "r$[!"	LL99UrP   c                   | d   }g }| d   D ]  }dj                  d |d   d d D              xs d}g }|d   D ]  }|j                  d	 |d
   D                |j                  d|d    d|d    dt        j                  |d          d| ddj                  d |D              xs d d|d    d        g }| d   D ]  }|d   D ]  }|j                  d|d    d|d    d       |j                  d|d    d|d    d       |j                  d       |d   d d  D ]  }	|j                  d|	d!    dt        j                  |	j                  d"d#             dt        j                  |	j                  d$d#             dt        j                  |	j                  dd#             d	        |j                  d%         d&j                  g d'd(d)d*d+d,d-d.d/d0d1d2d3d4d5d6d7|d8    dd9|d:    dd;|d<    dd=dj                  |d>          dd?|d@    ddA|d    ddB|d    ddC|dD    ddEdFdGdH|d8    dIdJ|d:    dIdK|d<    dIdLt        |d         j                          dIdMt        |d         j                          dIdNt        |dD         j                          dOdPdQdR|dSdT|dUdV| dW   d dX D 
cg c]8  }
d|
dY    ddZj                  d[ |
d\   j                         d d] D               d: c}
dSd^d_| d`   D cg c]  }dat        j                  |       db c}dcddde      S c c}
w c c}w )fNr   r  r	  c              3  F   K   | ]  }t        j                  |        y wri   htmlescaper  s     rM   rx   zrender_html.<locals>.<genexpr>\  s     PdD)P   !r  r   r  r  c              3  &   K   | ]	  }|d      ywrO  rJ   r   s     rM   rx   zrender_html.<locals>.<genexpr>_  r  rR  r   z<tr><td><code>r  z</code></td><td><code>r  z</code></td><td>r  z	</td><td>c              3  N   K   | ]  }d t        j                  |       d  yw)z<code>z</code>Nr  r  s     rM   rx   zrender_html.<locals>.<genexpr>f  s#     Yvvdkk&&9%:'BYs   #%r  z
</td></tr>r  z
<h3><code>r|  z</code> from <code>z</code></h3>z<p>route proof found: z / map loader ref found: r~  z</p>z`<table><thead><tr><th>VA</th><th>opcode</th><th>meaning</th><th>summary</th></tr></thead><tbody>r  r   r   r   rG   r   z</tbody></table>ry   z<!doctype html>z<html lang="ko">z<head>z  <meta charset="utf-8" />z0  <title>Object Payload 0x442c75 Callers</title>z	  <style>z~    body{font-family:system-ui,-apple-system,Segoe UI,sans-serif;margin:24px;line-height:1.5;color:#1f2937;background:#f8fafc}z>    code{background:#e5e7eb;border-radius:4px;padding:1px 4px}zR    table{border-collapse:collapse;width:100%;background:white;margin:12px 0 24px}zR    th,td{border:1px solid #d1d5db;padding:8px;text-align:left;vertical-align:top}z    th{background:#f3f4f6}z)    .marker{font-size:12px;color:#475569}z
  </style>z</head>z<body>z*  <h1>Object Payload 0x442c75 Callers</h1>z.  <p class="marker">payload 0x442c75 callers: r  z,  <p class="marker">active object contexts: r  z1  <p class="marker">nested object +0xec scripts: r  z1  <p class="marker">nested object +0xec targets: r  z'  <p class="marker">text payload refs: r  z'  <p class="marker">route proof found: z*  <p class="marker">map loader ref found: z1  <p class="marker">scene auto transition claim: r  z  <p><code>0x442c75</code> is reused by interaction/resource contexts. The decoded active chain points to prompt/item/switch payloads, not a route proof.</p>z
  <script>z3    window.HWANSE_OBJECT_PAYLOAD_442C75_CALLERS = {z      callerCount: r   z       activeObjectContextCount: z!      nestedObjectEcScriptCount: z      routeProofFound: z      mapLoaderRefFound: z       sceneAutoTransitionClaim: z    };z  </script>z  <h2>Caller Summary</h2>z  <table><thead><tr><th>caller</th><th>entry ptr</th><th>class</th><th>CNS context</th><th>+0xec targets</th><th>route proof</th></tr></thead><tbody>z  </tbody></table>z  <h2>Nested +0xec Scripts</h2>z   <h2>Text Payload Evidence</h2>zC  <table><thead><tr><th>VA</th><th>preview</th></tr></thead><tbody>r   r   r   r  c              3  F   K   | ]  }t        j                  |        y wri   r  )rv   r   s     rM   rx   zrender_html.<locals>.<genexpr>  s     aTt{{40ar  r  r   u     <h2>하지 않는 주장</h2>z  <ul>r  z    <li>z</li>z  </ul>z</body>z</html>)	r   r|   r}   r  r  r   r   lowerr   )r   r  r  r   r  r  r   nestedr  rk  r  rQ  s               rM   render_htmlr  X  sG   	ADy! 
iiPc:J6KBQ6OPPWTW:; 	LDNNK$z:JKK	L]+, -012 3;;s#3456 7% 99YQXYY`]`a b()* +		

 Fy! .12 	.FMMJvl';&<<OPSTaPbOccopqMM(0A)B(C D))/0C)D(ETK MM|}!*-cr2 !!(!1 2 3!!%W[[b-I!J K L;;w{{<'DEF G;;w{{9b'ABC D	 MM,-!	..$ 99 ::: 	: 	%	:
 	;: 	: 	I: 	I: 	]: 	]: 	%: 	4: 	: 	: 	:  	5!:" ;1];K:LDQ#:$ 9;U9V8WW[\%:& >a@[>\=]]ab':( >diiJdHe>f=ggkl):* 4A6K4L3MTR+:, 4A6G4H3IN-:. 7q9L7M6NdS/:0 >a@Z>[=\\`a1:2 	h3:4 	5:6 	>7:8 a./q19:: +1-G+H*IK;:< ,A.I,J+K1M=:> "#a(9&:";"A"A"C!DAF?:@ $C*=(>$?$E$E$G#HJA:B +3q1K/L+M+S+S+U*VWC:D 	E:F 	G:H 	$I:J 	`K:L 
M:N 	O:P 	*Q:R 
S:T 	+U:V 	NW:b 01#26


 	Z) *;;aS=O=Z=Z=\]_^_=`aab c

Y:f 	g:h 	*i:j 	k:l ;B+:N	O$HT[[&'u
-	Om:n 	o:p 	q:r 	s: : :X

 
Ps   &=M!
3 M&
c                 (   t        j                  t              } | j                  dt        t
               | j                  dt        d       | j                         }t        j                  d       t        |j                        }t        d	z  j                  t        j                  |d
d      dz   d       |j                  &|j                  j                  t        |      d       t!        t        j                  |d   d
d             y )N)descriptionz--exe)typedefaultz--md-outz%Optional legacy markdown output path.)r  helpT)exist_okz"object_payload_442c75_callers.jsonF)r   :)ensure_ascii
separatorsry   zutf-8)encodingr   r   )r  indent)argparseArgumentParser__doc__add_argumentr   EXE
parse_argsOUTmkdirr  rV   
write_textjsondumpsmd_outr  print)parserr   r   s      rM   mainr    s    $$9F
dC8

4[\DIItIDHH%G//;;

7:FM <  {{x07C	$**WY'eA
FGrP   __main__)rL   
int | Nonereturnr   )
rV   bytesrW   
list[dict]rX   r   rY   r   r  r  )rV   r  rW   r  rX   r   r  r   )rW   r  rL   r   r  rT  )rV   r  rW   r  rm   r   r  r  )  )
rV   r  rW   r  rX   r   rY   r   r  r   )r  r   )rV   r  rW   r  rX   r   rY   r   r   r   r  z	list[str])r2   )
rV   r  rW   r  rX   r   r   r   r  r   )rW   r  rX   r   r  z
str | None)rV   r  rW   r  rX   r   r  zdict[str, Any] | None)
rV   r  rW   r  rX   r   rm   r   r  r   )rV   r  rW   r  rX   r   r  dict[str, Any])r   )
rV   r  rW   r  rX   r   r  r   r  r  )r   r  )rV   r  rW   r  r  r   r  r   r  r   r  r  )rV   r  rW   r  r  z	list[int])r?   i   )rV   r  rW   r  r  dict[int, str]r  r   r  r   r  r   r  list[dict[str, Any]])rV   r  rW   r  r  r   r  r  )
rV   r  rW   r  r  r  r  r   r  r  )r  r   r  r  )r   r  r  r   )r  None)7r  
__future__r   r  r  r  ra   pathlibr   typingr   probe_exe_scene_tablesr   r   r   __file__resolveparentsROOTr  r
  r  rU  rl   rS  rN   rS   r[   r^   rc   rg   rj   rn   r   r   r   r   r   r   r   r   r   r  r  ry  r  r  r  r  r  r  r  r  r  __name__rJ   rP   rM   <module>r(     s  
 #       P P H~''*
Ul
]
  " =.=+= 	
= 	&	=
 	
"= 	
#= 	
= 	
= 	
$= 	
%= 	
!= 	
#= 	
"= 	
= 	
$=  	
#!=" 	
"#=$ 	
%=& 	/'=( 	,)=* 	
+=, 	
#-=. 	
/=0 	
'1=2 	
'3=4 	
5=6 	
"7=8 	
9=: 	
;=< 	
)==> 	
"?=@ 	
%A=B 	
C=D 	
#E=F 	
G=H 	
I=J 	
$K=L 	
 M=N 	
!O=P 	
#Q=R 	
%S=T 	
'U=V 	
W=X 	
 Y=Z 	
/[=\ 	
)]=^ 	
'_=` 	
'a=b 	
"c=d 	
#e=f 	
&g=h *

'


"

!
*y=@&,AA5*D,
8v<~.&
# 	
# 	
#	
 	
# 	
# 	
# 	
# 	
# 	
! 	
( 	
" 	
" 	
" 	
%  	
"!" 	
&#$ '
&
&
&
&
%/ 6!" 	" 	"	
 	" 	" 	" 	" 	" 	! 	" 	! 	! 	! 	!  	!!" 	"#$ 




/ 6K\$Ol <	<< < 	<
 < <~0 "	""  " 	"
 " " "J*)	))  ) 	)
 )X4nSl_DH" zF rP   