Subversion Repositories Kolibri OS

Rev

Rev 1681 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;* Call: ***************************************************************
  2. lzma_compress:
  3.         push    ebp
  4.         mov     ebp,esp
  5.         and     esp,0xFFFFFFF8
  6.         sub     esp,0xC
  7.         push    ebx
  8.         push    esi
  9.         push    edi
  10.         push    2
  11.         pop     esi
  12.         xor     ebx,ebx
  13.         mov     [esp+0x14],esi
  14.         mov     [0x19FB0],bl
  15.         mov     byte [0x19FB1],1
  16.         mov     [esp+0x10],esi
  17. ;----------------------------------------------------------
  18. .labl_00:
  19.         mov     ecx,[esp+0x10]
  20.         xor     edi,edi
  21.         sar     ecx,1
  22.         dec     ecx
  23.         inc     edi
  24.         shl     edi,cl
  25.         cmp     edi,ebx
  26.         jbe     .labl_01
  27.         mov     eax,[esp+0x14]
  28.         push    edi
  29.         push    dword [esp+0x14]
  30.         lea     eax,[eax+0x19FB0]
  31.         push    eax
  32.         call    _memset
  33.         add     esp,0xC
  34.         add     [esp+0x14],edi
  35. ;----------------------------------------------------------
  36. .labl_01:
  37.         inc     dword [esp+0x10]
  38.         cmp     dword [esp+0x10],0x14
  39.         jl      .labl_00
  40.         mov     edi,[ebp+0x14]
  41.         push    3
  42.         pop     eax
  43.         mov     ecx,edi
  44.         and     ecx,eax
  45.         mov     edx,0x80        ;'€'
  46.         mov     [0x1CC30],edx
  47.         mov     [0x51A00],esi
  48.         mov     [0x1CC34],eax
  49.         mov     [0x1B234],eax
  50.         mov     [0x2956C],ebx
  51.         mov     [0x19FA9],bl
  52.         mov     [0x19FA8],bl
  53.         je      .labl_02
  54.         sub     edi,ecx
  55.         add     edi,4
  56. ;----------------------------------------------------------
  57. .labl_02:
  58.         mov     [0x519F4],eax
  59.         mov     eax,[0x29568]
  60.         mov     [0x519F0],edi
  61.         add     edi,0x6000
  62.         inc     eax
  63.         mov     [0x519F8],ebx
  64.         mov     [0x519FC],ebx
  65.         mov     [0x52218],edx
  66.         mov     [0x51A0C],eax
  67.         mov     [0x52224],edi
  68.         mov     dword [0x52220],0xFF    ;'ÿ'
  69.         call    lz_cm_01
  70.         call    cm_pr_07
  71.         call    cm_pr_08
  72.         call    cm_pr_09
  73.         push    0x7F    ;''
  74.         pop     esi
  75.         mov     [0x19F64],esi
  76.         mov     [esp+0x10],ebx
  77. ;----------------------------------------------------------
  78. .labl_03:
  79.         push    dword [esp+0x10]
  80.         mov     eax,0xD6D8
  81.         call    cm_pr_01
  82.         inc     dword [esp+0x10]
  83.         cmp     dword [esp+0x10],4
  84.         jb      .labl_03
  85.         mov     [0x294F4],esi
  86.         xor     esi,esi
  87. ;----------------------------------------------------------
  88. .labl_04:
  89.         push    esi
  90.         mov     eax,0x1CC68
  91.         call    cm_pr_01
  92.         inc     esi
  93.         cmp     esi,4
  94.         jb      .labl_04
  95.         mov     eax,[ebp+8]
  96.         mov     esi,[ebp+0xC]
  97.         dec     eax
  98.         mov     [0x52628],eax
  99.         mov     eax,[ebp+0x10]
  100.         inc     eax
  101.         mov     [0x52630],eax
  102.         mov     ecx,0x110000
  103.         xor     eax,eax
  104.         mov     [0x1CC28],ebx
  105.         mov     [0x1CC2C],ebx
  106.         mov     [0x1B400],ebx
  107.         mov     [0x1B404],ebx
  108.         mov     [0x52634],esi
  109.         mov     dword [0x5262C],1
  110.         rep     stosd  
  111.         mov     [0x5221C],ebx
  112. ;----------------------------------------------------------
  113. .labl_08:
  114.         push    8
  115.         mov     eax,ebx
  116.         pop     ecx
  117. ;----------------------------------------------------------
  118. .labl_07:
  119.         test    al,1
  120.         je      .labl_05
  121.         shr     eax,1
  122.         xor     eax,0xEDB88320
  123.         jmp     .labl_06
  124. ;----------------------------------------------------------
  125. .labl_05:
  126.         shr     eax,1
  127. ;----------------------------------------------------------
  128. .labl_06:
  129.         dec     ecx
  130.         jne     .labl_07
  131.         mov     [0x52228+ebx*4],eax
  132.         inc     ebx
  133.         cmp     ebx,0x100
  134.         jb      .labl_08
  135. ;----------------------------------------------------------
  136. .labl_09:
  137.         call    lz_cm_02
  138.         test    al,al
  139.         jne     .labl_09
  140.         mov     eax,[0x52634]
  141.         pop     edi
  142.         sub     eax,esi
  143.         pop     esi
  144.         pop     ebx
  145.         mov     esp,ebp
  146.         pop     ebp
  147.         ret     0x10
  148. ;*****************************************************************************
  149.  
  150. ;* Call: ***************************************************************
  151. _memset:
  152.         push    edi
  153.         mov     edi,[esp+8]
  154.         mov     al,[esp+12]
  155.         mov     ecx,[esp+16]
  156.         rep     stosb  
  157.         pop     edi
  158.         ret    
  159. ;*****************************************************************************
  160.  
  161. ;* Call: ***************************************************************
  162. lz_cm_01:
  163.         and     dword [0x51A10],0
  164.         and     dword [0x51A14],0
  165.         or      dword [0x51A04],0xFFFFFFFF
  166.         push    ebx
  167.         push    esi
  168.         push    edi
  169.         xor     eax,eax
  170.         mov     edi,0x1BC08
  171.         stosd  
  172.         stosd  
  173.         xor     ebx,ebx
  174.         stosd  
  175.         inc     ebx
  176.         mov     byte [0x519EC],0
  177.         mov     byte [0x19FAB],0
  178.         stosd  
  179.         mov     [0x51A08],ebx
  180.         mov     byte [0x519ED],0
  181.         xor     ecx,ecx
  182. ;----------------------------------------------------------
  183. .labl_00:
  184.         mov     eax,ebx
  185.         shl     eax,cl
  186.         push    8
  187.         pop     edx
  188.         sub     edx,ecx
  189.         lea     esi,[0x51A18+eax*4]
  190.         shl     edx,6
  191. ;----------------------------------------------------------
  192. .labl_01:
  193.         mov     edi,eax
  194.         shl     edi,6
  195.         shr     edi,cl
  196.         add     edi,edx
  197.         mov     [esi],edi
  198.         add     esi,4
  199.         dec     eax
  200.         jne     .labl_01
  201.         inc     ecx
  202.         cmp     ecx,9
  203.         jl      .labl_00
  204.         push    0xC
  205.         pop     edx
  206.         mov     esi,0x400
  207.         mov     eax,esi
  208.         mov     ecx,edx
  209.         mov     edi,0x29538
  210.         rep     stosd  
  211.         mov     ecx,edx
  212.         mov     edi,0x1AF00
  213.         rep     stosd  
  214.         mov     ecx,edx
  215.         mov     edi,0x1CC38
  216.         rep     stosd  
  217.         mov     ecx,edx
  218.         mov     edi,0x515B8
  219.         rep     stosd  
  220.         xor     ecx,ecx
  221. ;----------------------------------------------------------
  222. .labl_02:
  223.         lea     edi,[ecx+0x1A7B0]
  224.         mov     eax,esi
  225.         stosd  
  226.         stosd  
  227.         stosd  
  228.         stosd  
  229.         lea     edi,[ecx+0x1AF30]
  230.         mov     eax,esi
  231.         stosd  
  232.         stosd  
  233.         stosd  
  234.         add     ecx,0x40        ;'@'
  235.         cmp     ecx,0x300
  236.         stosd  
  237.         jl      .labl_02
  238.         mov     eax,[0x519F4]
  239.         mov     ecx,[0x519F8]
  240.         add     ecx,eax
  241.         mov     eax,ebx
  242.         shl     eax,cl
  243.         test    eax,eax
  244.         jbe     .labl_04
  245.         xor     edx,edx
  246.         mov     ebx,eax
  247. ;----------------------------------------------------------
  248. .labl_03:
  249.         mov     eax,[0x519F0]
  250.         lea     edi,[edx+eax]
  251.         mov     ecx,0x300
  252.         mov     eax,esi
  253.         add     edx,0xC00
  254.         dec     ebx
  255.         rep     stosd  
  256.         jne     .labl_03
  257. ;----------------------------------------------------------
  258. .labl_04:
  259.         mov     edi,0x1BC18
  260. ;----------------------------------------------------------
  261. .labl_05:
  262.         push    6
  263.         pop     ecx
  264.         mov     eax,edi
  265.         call    cm_pr_15
  266.         add     edi,0x404
  267.         cmp     edi,0x1CC28
  268.         jl      .labl_05
  269.         push    0x72    ;'r'
  270.         mov     eax,esi
  271.         pop     ecx
  272.         mov     edi,0x1B238
  273.         mov     esi,0xD6D8
  274.         rep     stosd
  275.         call    cm_pr_00
  276.         mov     esi,0x1CC68
  277.         call    cm_pr_00
  278.         push    4
  279.         pop     ecx
  280.         mov     eax,0x515E8
  281.         call    cm_pr_15
  282.         pop     edi
  283.         xor     eax,eax
  284.         pop     esi
  285.         mov     byte [0x19FAA],0        ;0x1B238
  286.         mov     [0x29574],eax
  287.         mov     [0x1AEF8],eax
  288.         mov     [0x1AEFC],eax
  289.         pop     ebx
  290.         ret    
  291. ;*****************************************************************************
  292.  
  293. ;* Call: ***************************************************************
  294. lz_cm_02:
  295.         sub     esp,0x2C
  296.         cmp     byte [0x19FA8],0
  297.         push    ebx
  298.         push    ebp
  299.         push    esi
  300.         push    edi
  301.         je      .labl_01
  302. ;----------------------------------------------------------
  303. .labl_00:
  304.         xor     al,al
  305.         jmp     .labl_28
  306. ;----------------------------------------------------------
  307. .labl_01:
  308.         mov     ebp,[0x1B400]
  309.         mov     edi,[0x1B404]
  310.         mov     eax,ebp
  311.         or      eax,edi
  312.         mov     byte [0x19FA8],1
  313.         mov     [esp+0x34],ebp
  314.         mov     [esp+0x38],edi
  315.         jne     .labl_04
  316.         mov     eax,[0x52630]
  317.         sub     eax,[0x5262C]
  318.         jne     .labl_03
  319.         push    5
  320.         pop     esi
  321. ;----------------------------------------------------------
  322. .labl_02:
  323.         call    cm_pr_13
  324.         dec     esi
  325.         jne     .labl_02
  326.         jmp     .labl_00
  327. ;----------------------------------------------------------
  328. .labl_03:
  329.         call    cm_pr_06
  330.         movzx   esi,byte [0x519EC]
  331.         mov     edx,esi
  332.         shl     edx,6
  333.         xor     edi,edi
  334.         push    edi
  335.         add     edx,0x1AF30
  336.         call    cm_pr_14
  337.         mov     al,[esi+LiteralNextStates]
  338.         mov     ecx,[0x5262C]
  339.         mov     [0x519EC],al
  340.         mov     eax,[0x52628]
  341.         sub     eax,[0x1AEFC]
  342.         mov     bl,[eax+ecx]
  343.         mov     al,[0x19FAB]
  344.         mov     [esp+0x18],bl
  345.         push    dword [esp+0x18]
  346.         push    edi
  347.         call    cm_pr_04
  348.         imul    eax,eax,0xC00
  349.         add     eax,[0x519F0]
  350.         push    eax
  351.         call    cm_pr_03
  352.         dec     dword [0x1AEFC]
  353.         xor     ebp,ebp
  354.         inc     ebp
  355.         mov     [0x19FAB],bl
  356.         mov     [0x1B400],ebp
  357.         mov     [0x1B404],edi
  358. ;----------------------------------------------------------
  359. .labl_04:
  360.         mov     eax,[0x52630]
  361.         sub     eax,[0x5262C]
  362.         jne     .labl_06
  363.         push    5
  364.         pop     esi
  365. ;----------------------------------------------------------
  366. .labl_05:
  367.         call    cm_pr_13
  368.         dec     esi
  369.         jne     .labl_05
  370.         jmp     .labl_00
  371. ;----------------------------------------------------------
  372. .labl_06:
  373.         lea     eax,[esp+0x14]
  374.         push    eax
  375.         lea     eax,[esp+0x14]
  376.         push    eax
  377.         mov     ebx,ebp
  378.         push    ebp
  379.         and     ebx,3
  380.         call    lz_cm_03
  381.         cmp     dword [esp+0x14],1
  382.         jne     .labl_09
  383.         cmp     dword [esp+0x10],0xFFFFFFFF
  384.         jne     .labl_09
  385.         movzx   eax,byte [0x519EC]
  386.         shl     eax,4
  387.         add     eax,ebx
  388.         push    0
  389.         lea     edx,[0x1AF30+eax*4]
  390.         call    cm_pr_14
  391.         mov     eax,[0x52628]
  392.         mov     esi,[0x1AEFC]
  393.         mov     ebx,[0x5262C]
  394.         sub     eax,esi
  395.         mov     al,[eax+ebx]
  396.         mov     [esp+0x18],al
  397.         mov     al,[0x19FAB]
  398.         push    ebp
  399.         call    cm_pr_04
  400.         imul    eax,eax,0xC00
  401.         add     eax,[0x519F0]
  402.         cmp     byte [0x519EC],7
  403.         push    dword [esp+0x18]
  404.         jb      .labl_07
  405.         mov     ecx,[0x52628]
  406.         sub     ecx,[0x1BC08]
  407.         sub     ecx,esi
  408.         mov     cl,[ecx+ebx-1]
  409.         mov     [esp+0x34],cl
  410.         push    dword [esp+0x34]
  411.         push    eax
  412.         call    lz_cm_04
  413.         jmp     .labl_08
  414. ;----------------------------------------------------------
  415. .labl_07:
  416.         push    eax
  417.         call    cm_pr_03
  418. ;----------------------------------------------------------
  419. .labl_08:
  420.         movzx   eax,byte [0x519EC]
  421.         mov     al,[eax+LiteralNextStates]
  422.         mov     [0x519EC],al
  423.         mov     al,[esp+0x18]
  424.         jmp     .labl_24
  425. ;----------------------------------------------------------
  426. .labl_09:
  427.         movzx   edi,byte [0x519EC]
  428.         mov     eax,edi
  429.         shl     eax,4
  430.         add     eax,ebx
  431.         shl     eax,2
  432.         push    1
  433.         lea     edx,[eax+0x1AF30]
  434.         mov     [esp+0x28],eax
  435.         call    cm_pr_14
  436.         cmp     dword [esp+0x10],4
  437.         jnb     .labl_17
  438.         mov     esi,edi
  439.         shl     esi,2
  440.         push    1
  441.         lea     edx,[esi+0x515B8]
  442.         call    cm_pr_14
  443.         cmp     dword [esp+0x10],0
  444.         lea     edx,[esi+0x1CC38]
  445.         jne     .labl_10
  446.         push    0
  447.         call    cm_pr_14
  448.         mov     edx,[esp+0x24]
  449.         xor     eax,eax
  450.         cmp     dword [esp+0x14],1
  451.         lea     edx,[edx+0x1A7B0]
  452.         setne   al
  453.         jmp     .labl_12
  454. ;----------------------------------------------------------
  455. .labl_10:
  456.         push    1
  457.         call    cm_pr_14
  458.         cmp     dword [esp+0x10],1
  459.         lea     edx,[esi+0x1AF00]
  460.         jne     .labl_11
  461.         push    0
  462.         jmp     .labl_13
  463. ;----------------------------------------------------------
  464. .labl_11:
  465.         push    1
  466.         call    cm_pr_14
  467.         mov     eax,[esp+0x10]
  468.         add     eax,0xFFFFFFFE
  469.         lea     edx,[esi+0x29538]
  470. ;----------------------------------------------------------
  471. .labl_12:
  472.         push    eax
  473. ;----------------------------------------------------------
  474. .labl_13:
  475.         call    cm_pr_14
  476.         mov     eax,[esp+0x14]
  477.         cmp     eax,1
  478.         jne     .labl_14
  479.         mov     al,[edi+ShortRepNextStates]
  480.         jmp     .labl_15
  481. ;----------------------------------------------------------
  482. .labl_14:
  483.         add     eax,0xFFFFFFFE
  484.         mov     esi,0x1CC68
  485.         call    cm_pr_02
  486.         mov     al,[edi+RepNextStates]
  487. ;----------------------------------------------------------
  488. .labl_15:
  489.         mov     [0x519EC],al
  490.         mov     eax,[esp+0x10]
  491.         mov     ecx,[0x1BC08+eax*4]
  492.         test    eax,eax
  493.         je      .labl_23
  494. ;----------------------------------------------------------
  495. .labl_16:
  496.         dec     eax
  497.         mov     edx,[0x1BC08+eax*4]
  498.         mov     [0x1BC0C+eax*4],edx
  499.         jne     .labl_16
  500.         mov     [0x1BC08],ecx
  501.         jmp     .labl_23
  502. ;----------------------------------------------------------
  503. .labl_17:
  504.         push    0
  505.         lea     edx,[0x515B8+edi*4]
  506.         call    cm_pr_14
  507.         mov     al,[edi+MatchNextStates]
  508.         mov     edi,[esp+0x14]
  509.         mov     [0x519EC],al
  510.         add     edi,0xFFFFFFFE
  511.         mov     eax,edi
  512.         mov     esi,0xD6D8
  513.         call    cm_pr_02
  514.         sub     dword [esp+0x10],4
  515.         mov     eax,[esp+0x10]
  516.         call    cm_pr_000
  517.         cmp     dword [esp+0x14],6
  518.         mov     ebx,eax
  519.         jb      .labl_18
  520.         push    3
  521.         pop     edi
  522. ;----------------------------------------------------------
  523. .labl_18:
  524.         imul    edi,edi,0x404
  525.         push    ebx
  526.         add     edi,0x1BC18
  527.         call    cm_pr_16
  528.         cmp     ebx,4
  529.         jb      .labl_21
  530.         mov     esi,[esp+0x10]
  531.         xor     eax,eax
  532.         inc     eax
  533.         mov     ecx,ebx
  534.         mov     edi,ebx
  535.         and     edi,eax
  536.         shr     ecx,1
  537.         dec     ecx
  538.         or      edi,2
  539.         shl     edi,cl
  540.         sub     esi,edi
  541.         cmp     ebx,0xE
  542.         jnb     .labl_20
  543.         mov     [esp+0x20],esi
  544.         mov     [esp+0x1C],eax
  545.         test    ecx,ecx
  546.         jle     .labl_21
  547.         mov     [esp+0x24],ecx
  548. ;----------------------------------------------------------
  549. .labl_19:
  550.         mov     edx,[esp+0x1C]
  551.         mov     esi,[esp+0x20]
  552.         sub     edx,ebx
  553.         add     edx,edi
  554.         and     esi,1
  555.         push    esi
  556.         lea     edx,[0x1B234+edx*4]
  557.         call    cm_pr_14
  558.         mov     eax,[esp+0x1C]
  559.         shr     dword [esp+0x20],1
  560.         dec     dword [esp+0x24]
  561.         lea     eax,[esi+eax*2]
  562.         mov     [esp+0x1C],eax
  563.         jne     .labl_19
  564.         jmp     .labl_21
  565. ;----------------------------------------------------------
  566. .labl_20:
  567.         lea     eax,[ecx-4]
  568.         mov     ecx,esi
  569.         shr     ecx,4
  570.         push    ecx
  571.         call    lz_cm_05
  572.         and     esi,0xF
  573.         push    esi
  574.         call    lz_cm_06
  575.         dec     dword [0x1B230]
  576.         jne     .labl_21
  577.         call    cm_pr_09
  578. ;----------------------------------------------------------
  579. .labl_21:
  580.         mov     eax,0x1BC14
  581. ;----------------------------------------------------------
  582. .labl_22:
  583.         mov     ecx,[eax-4]
  584.         mov     [eax],ecx
  585.         sub     eax,4
  586.         cmp     eax,0x1BC08
  587.         jne     .labl_22
  588.         mov     eax,[esp+0x10]
  589.         mov     [0x1BC08],eax
  590. ;----------------------------------------------------------
  591. .labl_23:
  592.         mov     eax,[0x52628]
  593.         mov     esi,[0x1AEFC]
  594.         mov     ebx,[0x5262C]
  595.         mov     ecx,[esp+0x14]
  596.         mov     edi,[0x1B404]
  597.         sub     eax,esi
  598.         add     eax,ebx
  599.         mov     al,[eax+ecx-1]
  600. ;----------------------------------------------------------
  601. .labl_24:
  602.         sub     esi,[esp+0x14]
  603.         add     ebp,[esp+0x14]
  604.         mov     [0x19FAB],al
  605.         adc     edi,0
  606.         mov     eax,ebp
  607.         sub     eax,[0x1CC28]
  608.         mov     ecx,edi
  609.         sbb     ecx,[0x1CC2C]
  610.         mov     [0x1AEFC],esi
  611.         mov     [0x1B400],ebp
  612.         mov     [0x1B404],edi
  613.         mov     [esp+0x28],ecx
  614.         jne     .labl_25
  615.         cmp     eax,0x200
  616.         jb      .labl_26
  617. ;----------------------------------------------------------
  618. .labl_25:
  619.         call    cm_pr_07
  620.         call    cm_pr_08
  621.         mov     [0x1CC28],ebp
  622.         mov     [0x1CC2C],edi
  623. ;----------------------------------------------------------
  624. .labl_26:
  625.         test    esi,esi
  626.         jne     .labl_06
  627.         mov     eax,[0x52630]
  628.         sub     eax,ebx
  629.         je      .labl_29
  630.         mov     ecx,ebp
  631.         sub     ecx,[esp+0x34]
  632.         mov     eax,edi
  633.         sbb     eax,[esp+0x38]
  634.         test    eax,eax
  635.         ja      .labl_27
  636.         jb      .labl_06
  637.         cmp     ecx,0x1000
  638.         jb      .labl_06
  639. ;----------------------------------------------------------
  640. .labl_27:
  641.         mov     byte [0x19FA8],0
  642.         mov     al,1
  643. ;----------------------------------------------------------
  644. .labl_28:
  645.         pop     edi
  646.         pop     esi
  647.         pop     ebp
  648.         pop     ebx
  649.         add     esp,0x2C
  650.         ret    
  651. ;----------------------------------------------------------
  652. .labl_29:
  653.         push    5
  654.         pop     esi
  655. ;----------------------------------------------------------
  656. .labl_30:
  657.         call    cm_pr_13
  658.         dec     esi
  659.         jne     .labl_30
  660.         jmp     .labl_00
  661. ;*****************************************************************************
  662.  
  663. ;* Call: ***************************************************************
  664. lz_cm_03:
  665.         push    ebp
  666.         mov     ebp,esp
  667.         mov     ecx,[0x1AEF8]
  668.         sub     esp,0x74
  669.         push    esi
  670.         cmp     [0x29574],ecx
  671.         je      .labl_00
  672.         mov     eax,ecx
  673.         imul    eax,eax,0x28
  674.         add     eax,0x29578
  675.         mov     edx,[eax+0x10]
  676.         mov     eax,[eax+0x14]
  677.         mov     esi,edx
  678.         sub     esi,ecx
  679.         mov     ecx,[ebp+0x10]
  680.         mov     [ecx],esi
  681.         mov     ecx,[ebp+0xC]
  682.         mov     [ecx],eax
  683.         mov     [0x1AEF8],edx
  684.         jmp     .labl_76
  685. ;----------------------------------------------------------
  686. .labl_00:
  687.         push    edi
  688.         xor     edi,edi
  689.         cmp     byte [0x19FAA],0        ;0x1B238
  690.         mov     [0x29574],edi
  691.         mov     [0x1AEF8],edi
  692.         jne     .labl_01
  693.         call    cm_pr_06
  694.         jmp     .labl_02
  695. ;----------------------------------------------------------
  696. .labl_01:
  697.         mov     eax,[0x19FAC]
  698.         mov     byte [0x19FAA],0        ;0x1B238
  699. ;----------------------------------------------------------
  700. .labl_02:
  701.         push    ebx
  702.         mov     ebx,[ebp+8]
  703.         mov     [ebp-0x10],eax
  704.         mov     eax,ebx
  705.         shl     eax,2
  706.         mov     [ebp-0x4C],eax
  707. ;----------------------------------------------------------
  708. .labl_03:
  709.         mov     esi,edi
  710.         shl     esi,2
  711.         mov     eax,[esi+0x1BC08]
  712.         push    eax
  713.         mov     [ebp+esi-0x64],eax
  714.         push    dword 0xFFFFFFFF
  715.         mov     eax,0x111
  716.         call    cm_pr_18
  717.         mov     [ebp+esi-0x74],eax
  718.         test    edi,edi
  719.         je      .labl_04
  720.         mov     ecx,[ebp-0x4C]
  721.         cmp     eax,[ebp+ecx-0x74]
  722.         jbe     .labl_05
  723. ;----------------------------------------------------------
  724. .labl_04:
  725.         mov     ebx,edi
  726.         mov     [ebp-0x4C],esi
  727. ;----------------------------------------------------------
  728. .labl_05:
  729.         inc     edi
  730.         cmp     edi,4
  731.         jb      .labl_03
  732.         mov     eax,[ebp+ebx*4-0x74]
  733.         mov     ecx,0x80        ;'€'
  734.         mov     [ebp-0x44],eax
  735.         cmp     eax,ecx
  736.         jb      .labl_06
  737.         mov     ecx,[ebp+0xC]
  738.         mov     [ecx],ebx
  739.         jmp     .labl_07
  740. ;----------------------------------------------------------
  741. .labl_06:
  742.         cmp     [ebp-0x10],ecx
  743.         jb      .labl_08
  744.         mov     eax,[0x1ACB0]
  745.         mov     ecx,[ebp+0xC]
  746.         add     eax,4
  747.         mov     [ecx],eax
  748.         mov     eax,[ebp-0x10]
  749. ;----------------------------------------------------------
  750. .labl_07:
  751.         mov     ecx,[ebp+0x10]
  752.         mov     [ecx],eax
  753.         dec     eax
  754.         call    lz_cm_07
  755.         jmp     .labl_75
  756. ;----------------------------------------------------------
  757. .labl_08:
  758.         mov     ecx,[0x52628]
  759.         mov     eax,[0x5262C]
  760.         mov     dl,[eax+ecx-1]
  761.         sub     eax,[0x1BC08]
  762.         mov     bl,[0x519EC]
  763.         mov     [0x29578],bl
  764.         mov     al,[eax+ecx-2]
  765.         mov     [ebp-0x34],al
  766.         mov     eax,[ebp+8]
  767.         and     eax,3
  768.         movzx   ecx,bl
  769.         shl     ecx,4
  770.         add     ecx,eax
  771.         mov     esi,[0x1AF30+ecx*4]
  772.         mov     [ebp-0x1C],eax
  773.         cmp     bl,7
  774.         sbb     al,al
  775.         mov     [ebp-0x30],dl
  776.         push    dword [ebp-0x30]
  777.         inc     al
  778.         push    dword [ebp-0x34]
  779.         movzx   eax,al
  780.         push    eax
  781.         push    dword [ebp+8]
  782.         mov     al,[0x19FAB]
  783.         mov     [ebp-0x4C],esi
  784.         call    cm_pr_05
  785.         or      dword [0x295B4],0xFFFFFFFF
  786.         and     dword [0x295B0],0
  787.         shr     esi,2
  788.         add     eax,[0x51A18+esi*4]
  789.         mov     byte [0x295A1],0
  790.         mov     [0x295AC],eax
  791.         lea     esi,[ebp-0x64]
  792.         mov     edi,0x29590
  793.         movsd  
  794.         movsd  
  795.         mov     eax,0x800
  796.         mov     ecx,eax
  797.         sub     ecx,[ebp-0x4C]
  798.         movsd  
  799.         shr     ecx,2
  800.         mov     edx,[0x51A18+ecx*4]
  801.         movzx   ecx,bl
  802.         movsd  
  803.         mov     esi,[0x515B8+ecx*4]
  804.         sub     eax,esi
  805.         shr     eax,2
  806.         mov     edi,[0x51A18+eax*4]
  807.         mov     al,[ebp-0x30]
  808.         add     edi,edx
  809.         mov     [ebp-0x4C],edx
  810.         cmp     [ebp-0x34],al
  811.         jne     .labl_09
  812.         push    dword [ebp-0x1C]
  813.         mov     al,bl
  814.         call    cm_pr_10
  815.         add     eax,edi
  816.         cmp     eax,[0x295AC]
  817.         jnb     .labl_09
  818.         and     dword [0x295B4],0
  819.         mov     [0x295AC],eax
  820.         mov     byte [0x295A1],0
  821. ;----------------------------------------------------------
  822. .labl_09:
  823.         push    2
  824.         pop     eax
  825.         cmp     [ebp-0x10],eax
  826.         jnb     .labl_10
  827.         mov     eax,[ebp+0xC]
  828.         mov     ecx,[0x295B4]
  829.         mov     [eax],ecx
  830.         mov     eax,[ebp+0x10]
  831.         mov     dword [eax],1
  832.         jmp     .labl_75
  833. ;----------------------------------------------------------
  834. .labl_10:
  835.         mov     ecx,[ebp-0x10]
  836.         shr     esi,2
  837.         mov     esi,[0x51A18+esi*4]
  838.         add     esi,[ebp-0x4C]
  839.         mov     [ebp-0x4C],esi
  840.         cmp     ecx,[ebp-0x44]
  841.         ja      .labl_11
  842.         and     dword [ebp-0x10],0
  843. ;----------------------------------------------------------
  844. .labl_11:
  845.         mov     [ebp-0x18],eax
  846.         cmp     [ebp-0x10],eax
  847.         jb      .labl_13
  848.         mov     esi,0x295DC
  849. ;----------------------------------------------------------
  850. .labl_12:
  851.         mov     eax,[ebp-0x18]
  852.         mov     edx,[0x1AAB0+eax*4]
  853.         push    dword [ebp-0x1C]
  854.         and     dword [esi-4],0
  855.         lea     ecx,[edx+4]
  856.         mov     [esi],ecx
  857.         call    cm_pr_12
  858.         add     eax,[ebp-0x4C]
  859.         inc     dword [ebp-0x18]
  860.         mov     [esi-8],eax
  861.         mov     eax,[ebp-0x18]
  862.         mov     byte [esi-0x13],0
  863.         add     esi,0x28        ;'('
  864.         cmp     eax,[ebp-0x10]
  865.         jbe     .labl_12
  866. ;----------------------------------------------------------
  867. .labl_13:
  868.         mov     ecx,[ebp-0x10]
  869.         cmp     ecx,[ebp-0x44]
  870.         jnb     .labl_14
  871.         mov     ecx,[ebp-0x44]
  872.         mov     [ebp-0x10],ecx
  873. ;----------------------------------------------------------
  874. .labl_14:
  875.         cmp     [ebp-0x18],ecx
  876.         ja      .labl_16
  877.         mov     eax,[ebp-0x18]
  878.         sub     ecx,[ebp-0x18]
  879.         imul    eax,eax,0x28
  880.         add     eax,0x29584
  881.         inc     ecx
  882. ;----------------------------------------------------------
  883. .labl_15:
  884.         mov     dword [eax],0x0FFFFFFF
  885.         add     eax,0x28        ;'('
  886.         dec     ecx
  887.         jne     .labl_15
  888. ;----------------------------------------------------------
  889. .labl_16:
  890.         and     dword [ebp-0x18],0
  891. ;----------------------------------------------------------
  892. .labl_17:
  893.         mov     eax,[ebp-0x18]
  894.         mov     eax,[ebp+eax*4-0x74]
  895.         push    2
  896.         pop     ecx
  897.         mov     [ebp-0x20],ecx
  898.         cmp     eax,ecx
  899.         jb      .labl_20
  900.         mov     esi,0x295D4
  901. ;----------------------------------------------------------
  902. .labl_18:
  903.         push    dword [ebp-0x1C]
  904.         mov     edx,[ebp-0x18]
  905.         movzx   eax,bl
  906.         push    eax
  907.         mov     eax,[ebp-0x20]
  908.         call    cm_pr_11
  909.         add     eax,edi
  910.         cmp     eax,[esi]
  911.         jnb     .labl_19
  912.         and     dword [esi+4],0
  913.         mov     [esi],eax
  914.         mov     eax,[ebp-0x18]
  915.         mov     [esi+8],eax
  916.         mov     byte [esi-0xB],0
  917. ;----------------------------------------------------------
  918. .labl_19:
  919.         inc     dword [ebp-0x20]
  920.         mov     eax,[ebp-0x18]
  921.         mov     ecx,[ebp-0x20]
  922.         add     esi,0x28        ;'('
  923.         cmp     ecx,[ebp+eax*4-0x74]
  924.         jbe     .labl_18
  925. ;----------------------------------------------------------
  926. .labl_20:
  927.         inc     dword [ebp-0x18]
  928.         cmp     dword [ebp-0x18],4
  929.         jb      .labl_17
  930.         mov     eax,[ebp-0x10]
  931.         xor     ecx,ecx
  932.         inc     ecx
  933.         mov     [ebp-8],eax
  934.         mov     [ebp-0xC],ecx
  935.         cmp     eax,ecx
  936.         je      .labl_74
  937. ;----------------------------------------------------------
  938. .labl_21:
  939.         mov     edi,[ebp-0xC]
  940.         inc     dword [ebp+8]
  941.         mov     ebx,edi
  942.         imul    ebx,ebx,0x28
  943.         mov     dl,[ebx+0x29579]
  944.         mov     esi,[ebx+0x29588]
  945.         test    dl,dl
  946.         je      .labl_25
  947.         dec     esi
  948.         cmp     byte [ebx+0x2957A],0
  949.         je      .labl_23
  950.         mov     eax,[ebx+0x2957C]
  951.         imul    eax,eax,0x28
  952.         cmp     dword [ebx+0x29580],4
  953.         mov     al,[eax+0x29578]
  954.         movzx   eax,al
  955.         jnb     .labl_22
  956.         mov     al,[eax+RepNextStates]
  957.         jmp     .labl_24
  958. ;----------------------------------------------------------
  959. .labl_22:
  960.         mov     al,[eax+MatchNextStates]
  961.         jmp     .labl_24
  962. ;----------------------------------------------------------
  963. .labl_23:
  964.         mov     eax,esi
  965.         imul    eax,eax,0x28
  966.         mov     al,[eax+0x29578]
  967. ;----------------------------------------------------------
  968. .labl_24:
  969.         movzx   eax,al
  970.         mov     cl,[eax+LiteralNextStates]
  971.         jmp     .labl_26
  972. ;----------------------------------------------------------
  973. .labl_25:
  974.         mov     eax,esi
  975.         imul    eax,eax,0x28
  976.         mov     cl,[eax+0x29578]
  977. ;----------------------------------------------------------
  978. .labl_26:
  979.         dec     edi
  980.         cmp     esi,edi
  981.         jne     .labl_29
  982.         cmp     dword [ebx+0x2958C],0
  983.         movzx   eax,cl
  984.         jne     .labl_27
  985.         mov     al,[eax+ShortRepNextStates]
  986.         jmp     .labl_28
  987. ;----------------------------------------------------------
  988. .labl_27:
  989.         mov     al,[eax+LiteralNextStates]
  990. ;----------------------------------------------------------
  991. .labl_28:
  992.         mov     [ebp-0x14],al
  993.         jmp     .labl_35
  994. ;----------------------------------------------------------
  995. .labl_29:
  996.         test    dl,dl
  997.         je      .labl_31
  998.         cmp     byte [ebx+0x2957A],0
  999.         je      .labl_31
  1000.         mov     esi,[ebx+0x2957C]
  1001.         mov     eax,[ebx+0x29580]
  1002.         movzx   ecx,cl
  1003. ;----------------------------------------------------------
  1004. .labl_30:
  1005.         mov     cl,[ecx+RepNextStates]
  1006.         jmp     .labl_32
  1007. ;----------------------------------------------------------
  1008. .labl_31:
  1009.         mov     eax,[ebx+0x2958C]
  1010.         movzx   ecx,cl
  1011.         cmp     eax,4
  1012.         jb      .labl_30
  1013.         mov     cl,[ecx+MatchNextStates]
  1014. ;----------------------------------------------------------
  1015. .labl_32:
  1016.         imul    esi,esi,0x28
  1017.         add     esi,0x29578
  1018.         mov     [ebp-0x14],cl
  1019.         mov     edx,esi
  1020.         cmp     eax,4
  1021.         jnb     .labl_34
  1022.         mov     ecx,[edx+eax*4+0x18]
  1023.         xor     esi,esi
  1024.         inc     esi
  1025.         mov     [ebp-0x64],ecx
  1026.         cmp     eax,esi
  1027.         jb      .labl_33
  1028.         lea     esi,[edx+0x18]
  1029.         mov     ecx,eax
  1030.         lea     edi,[ebp-0x60]
  1031.         rep     movsd  
  1032.         lea     esi,[eax+1]
  1033.         cmp     esi,4
  1034.         jnb     .labl_35
  1035. ;----------------------------------------------------------
  1036. .labl_33:
  1037.         push    4
  1038.         lea     edx,[edx+esi*4+0x18]
  1039.         pop     ecx
  1040.         lea     edi,[ebp+esi*4-0x64]
  1041.         sub     ecx,esi
  1042.         mov     esi,edx
  1043.         rep     movsd  
  1044.         jmp     .labl_35
  1045. ;----------------------------------------------------------
  1046. .labl_34:
  1047.         add     eax,0xFFFFFFFC
  1048.         mov     [ebp-0x64],eax
  1049.         lea     esi,[edx+0x18]
  1050.         lea     edi,[ebp-0x60]
  1051.         movsd  
  1052.         movsd  
  1053.         movsd  
  1054. ;----------------------------------------------------------
  1055. .labl_35:
  1056.         mov     al,[ebp-0x14]
  1057.         mov     [ebx+0x29578],al
  1058.         lea     edi,[ebx+0x29590]
  1059.         lea     esi,[ebp-0x64]
  1060.         movsd  
  1061.         movsd  
  1062.         movsd  
  1063.         movsd  
  1064.         call    cm_pr_06
  1065.         mov     [ebp-0x2C],eax
  1066.         cmp     eax,0x80        ;'€'
  1067.         jnb     .labl_73
  1068.         mov     eax,[ebx+0x29584]
  1069.         mov     edi,[0x5262C]
  1070.         mov     esi,[ebp+8]
  1071.         mov     [ebp-0x48],eax
  1072.         mov     eax,[0x52628]
  1073.         lea     eax,[edi+eax-1]
  1074.         mov     cl,[eax]
  1075.         mov     [ebp-0x30],cl
  1076.         push    dword [ebp-0x30]
  1077.         mov     ecx,eax
  1078.         sub     ecx,[ebp-0x64]
  1079.         and     esi,3
  1080.         mov     cl,[ecx-1]
  1081.         mov     [ebp-0x34],cl
  1082.         movzx   ecx,byte [ebp-0x14]
  1083.         push    dword [ebp-0x34]
  1084.         mov     [ebp-0x40],ecx
  1085.         shl     ecx,4
  1086.         add     ecx,esi
  1087.         mov     ecx,[0x1AF30+ecx*4]
  1088.         cmp     byte [ebp-0x14],7
  1089.         mov     [ebp-0x4C],ecx
  1090.         sbb     cl,cl
  1091.         inc     cl
  1092.         movzx   ecx,cl
  1093.         push    ecx
  1094.         push    dword [ebp+8]
  1095.         mov     [ebp-0x28],eax
  1096.         mov     al,[eax-1]
  1097.         mov     [ebp-0x1C],esi
  1098.         call    cm_pr_05
  1099.         mov     esi,eax
  1100.         mov     eax,[ebp-0x4C]
  1101.         shr     eax,2
  1102.         add     esi,[0x51A18+eax*4]
  1103.         mov     byte [ebp-1],0
  1104.         add     esi,[ebp-0x48]
  1105.         cmp     esi,[ebx+0x295AC]
  1106.         jnb     .labl_36
  1107.         mov     eax,[ebp-0xC]
  1108.         or      dword [ebx+0x295B4],0xFFFFFFFF
  1109.         mov     [ebx+0x295AC],esi
  1110.         mov     [ebx+0x295B0],eax
  1111.         mov     byte [ebx+0x295A1],0
  1112.         mov     byte [ebp-1],1
  1113. ;----------------------------------------------------------
  1114. .labl_36:
  1115.         mov     edx,[ebp-0x40]
  1116.         mov     edx,[0x515B8+edx*4]
  1117.         mov     ecx,0x800
  1118.         mov     eax,ecx
  1119.         sub     eax,[ebp-0x4C]
  1120.         sub     ecx,edx
  1121.         shr     eax,2
  1122.         mov     eax,[0x51A18+eax*4]
  1123.         add     eax,[ebp-0x48]
  1124.         shr     ecx,2
  1125.         mov     ecx,[0x51A18+ecx*4]
  1126.         add     ecx,eax
  1127.         mov     [ebp-0x4C],eax
  1128.         mov     al,[ebp-0x30]
  1129.         mov     [ebp-0x54],edx
  1130.         mov     [ebp-0x48],ecx
  1131.         cmp     [ebp-0x34],al
  1132.         jne     .labl_38
  1133.         mov     eax,[ebp-0xC]
  1134.         cmp     [ebx+0x295B0],eax
  1135.         jnb     .labl_37
  1136.         cmp     dword [ebx+0x295B4],0
  1137.         je      .labl_38
  1138. ;----------------------------------------------------------
  1139. .labl_37:
  1140.         push    dword [ebp-0x1C]
  1141.         mov     al,[ebp-0x14]
  1142.         call    cm_pr_10
  1143.         add     eax,[ebp-0x48]
  1144.         cmp     eax,[ebx+0x295AC]
  1145.         ja      .labl_38
  1146.         and     dword [ebx+0x295B4],0
  1147.         mov     [ebx+0x295AC],eax
  1148.         mov     eax,[ebp-0xC]
  1149.         mov     [ebx+0x295B0],eax
  1150.         mov     byte [ebx+0x295A1],0
  1151. ;----------------------------------------------------------
  1152. .labl_38:
  1153.         mov     eax,[0x52630]
  1154.         sub     eax,edi
  1155.         mov     ecx,0xFFF
  1156.         sub     ecx,[ebp-0xC]
  1157.         inc     eax
  1158.         mov     [ebp-0x38],eax
  1159.         cmp     eax,ecx
  1160.         jbe     .labl_39
  1161.         mov     eax,ecx
  1162.         mov     [ebp-0x38],ecx
  1163. ;----------------------------------------------------------
  1164. .labl_39:
  1165.         mov     [ebp-0x24],eax
  1166.         cmp     eax,2
  1167.         jb      .labl_72
  1168.         mov     ecx,0x80        ;'€'
  1169.         cmp     eax,ecx
  1170.         jbe     .labl_40
  1171.         mov     [ebp-0x24],ecx
  1172. ;----------------------------------------------------------
  1173. .labl_40:
  1174.         cmp     dword [ebp-0x24],3
  1175.         jb      .labl_45
  1176.         cmp     byte [ebp-1],0
  1177.         jne     .labl_45
  1178.         mov     ecx,[ebp-0x64]
  1179.         xor     eax,eax
  1180.         inc     eax
  1181.         inc     ecx
  1182.         cmp     [ebp-0x24],eax
  1183.         jbe     .labl_42
  1184.         mov     edi,[ebp-0x28]
  1185.         mov     edx,edi
  1186.         sub     edx,ecx
  1187. ;----------------------------------------------------------
  1188. .labl_41:
  1189.         mov     cl,[eax+edi]
  1190.         cmp     cl,[edx+eax]
  1191.         jne     .labl_42
  1192.         inc     eax
  1193.         cmp     eax,[ebp-0x24]
  1194.         jb      .labl_41
  1195. ;----------------------------------------------------------
  1196. .labl_42:
  1197.         dec     eax
  1198.         mov     [ebp-0x20],eax
  1199.         cmp     eax,2
  1200.         jb      .labl_45
  1201.         mov     eax,[ebp-0x40]
  1202.         mov     al,[eax+LiteralNextStates]
  1203.         mov     ecx,[ebp+8]
  1204.         movzx   edx,al
  1205.         mov     [ebp-0x3C],al
  1206.         mov     eax,edx
  1207.         shl     eax,4
  1208.         inc     ecx
  1209.         mov     edi,0x800
  1210.         and     ecx,3
  1211.         add     eax,ecx
  1212.         mov     ebx,edi
  1213.         sub     ebx,[0x1AF30+eax*4]
  1214.         mov     eax,edi
  1215.         sub     eax,[0x515B8+edx*4]
  1216.         mov     edx,[ebp-0xC]
  1217.         shr     ebx,2
  1218.         mov     edi,[0x51A18+ebx*4]
  1219.         shr     eax,2
  1220.         add     edi,[0x51A18+eax*4]
  1221.         mov     eax,[ebp-0x20]
  1222.         add     edi,esi
  1223.         lea     esi,[edx+eax]
  1224.         mov     eax,[ebp-8]
  1225.         lea     edx,[esi+1]
  1226.         cmp     eax,edx
  1227.         jnb     .labl_44
  1228.         sub     edx,[ebp-8]
  1229.         imul    eax,eax,0x28
  1230.         add     eax,0x29584
  1231.         add     [ebp-8],edx
  1232. ;----------------------------------------------------------
  1233. .labl_43:
  1234.         add     eax,0x28        ;'('
  1235.         dec     edx
  1236.         mov     dword [eax],0x0FFFFFFF
  1237.         jne     .labl_43
  1238. ;----------------------------------------------------------
  1239. .labl_44:
  1240.         mov     eax,[ebp-0x20]
  1241.         push    ecx
  1242.         push    dword [ebp-0x3C]
  1243.         xor     edx,edx
  1244.         call    cm_pr_11
  1245.         imul    esi,esi,0x28
  1246.         add     eax,edi
  1247.         add     esi,0x295A0
  1248.         cmp     eax,[esi+0xC]
  1249.         jnb     .labl_45
  1250.         mov     [esi+0xC],eax
  1251.         mov     eax,[ebp-0xC]
  1252.         inc     eax
  1253.         and     dword [esi+0x14],0
  1254.         mov     [esi+0x10],eax
  1255.         mov     byte [esi+1],1
  1256.         mov     byte [esi+2],0
  1257. ;----------------------------------------------------------
  1258. .labl_45:
  1259.         and     dword [ebp-0x18],0
  1260. ;----------------------------------------------------------
  1261. .labl_46:
  1262.         mov     eax,[ebp-0x18]
  1263.         mov     eax,[ebp+eax*4-0x64]
  1264.         mov     edx,[ebp-0x28]
  1265.         inc     eax
  1266.         mov     ecx,edx
  1267.         sub     ecx,eax
  1268.         mov     [ebp-0x44],eax
  1269.         mov     al,[edx]
  1270.         mov     [ebp-0x50],ecx
  1271.         cmp     al,[ecx]
  1272.         jne     .labl_58
  1273.         mov     al,[edx+1]
  1274.         cmp     al,[ecx+1]
  1275.         jne     .labl_58
  1276.         push    2
  1277.         pop     esi
  1278.         cmp     [ebp-0x24],esi
  1279.         jbe     .labl_48
  1280. ;----------------------------------------------------------
  1281. .labl_47:
  1282.         mov     al,[edx+esi]
  1283.         cmp     al,[ecx+esi]
  1284.         jne     .labl_48
  1285.         inc     esi
  1286.         cmp     esi,[ebp-0x24]
  1287.         jb      .labl_47
  1288. ;----------------------------------------------------------
  1289. .labl_48:
  1290.         mov     eax,[ebp-0xC]
  1291.         lea     ebx,[eax+esi]
  1292.         mov     [ebp-0x20],ebx
  1293.         imul    ebx,ebx,0x28
  1294.         mov     edi,esi
  1295.         add     ebx,0x29584
  1296. ;----------------------------------------------------------
  1297. .labl_49:
  1298.         mov     eax,[ebp-8]
  1299.         mov     ecx,[ebp-0x20]
  1300.         cmp     eax,ecx
  1301.         jnb     .labl_51
  1302.         sub     ecx,[ebp-8]
  1303.         imul    eax,eax,0x28
  1304.         add     eax,0x29584
  1305.         add     [ebp-8],ecx
  1306. ;----------------------------------------------------------
  1307. .labl_50:
  1308.         add     eax,0x28        ;'('
  1309.         dec     ecx
  1310.         mov     dword [eax],0x0FFFFFFF
  1311.         jne     .labl_50
  1312. ;----------------------------------------------------------
  1313. .labl_51:
  1314.         push    dword [ebp-0x1C]
  1315.         mov     edx,[ebp-0x18]
  1316.         push    dword [ebp-0x14]
  1317.         mov     eax,esi
  1318.         call    cm_pr_11
  1319.         add     eax,[ebp-0x48]
  1320.         cmp     eax,[ebx]
  1321.         jnb     .labl_52
  1322.         mov     [ebx],eax
  1323.         mov     eax,[ebp-0xC]
  1324.         mov     [ebx+4],eax
  1325.         mov     eax,[ebp-0x18]
  1326.         mov     [ebx+8],eax
  1327.         mov     byte [ebx-0xB],0
  1328. ;----------------------------------------------------------
  1329. .labl_52:
  1330.         dec     esi
  1331.         sub     ebx,0x28        ;'('
  1332.         dec     dword [ebp-0x20]
  1333.         cmp     esi,2
  1334.         jnb     .labl_49
  1335.         lea     eax,[edi+1]
  1336.         lea     esi,[eax+0x80]
  1337.         cmp     esi,[ebp-0x38]
  1338.         jbe     .labl_53
  1339.         mov     esi,[ebp-0x38]
  1340. ;----------------------------------------------------------
  1341. .labl_53:
  1342.         cmp     eax,esi
  1343.         jnb     .labl_55
  1344.         mov     edx,[ebp-0x28]
  1345.         mov     ecx,eax
  1346.         sub     ecx,[ebp-0x44]
  1347.         add     ecx,edx
  1348. ;----------------------------------------------------------
  1349. .labl_54:
  1350.         mov     bl,[eax+edx]
  1351.         cmp     bl,[ecx]
  1352.         jne     .labl_55
  1353.         inc     eax
  1354.         inc     ecx
  1355.         cmp     eax,esi
  1356.         jb      .labl_54
  1357. ;----------------------------------------------------------
  1358. .labl_55:
  1359.         or      ecx,0xFFFFFFFF
  1360.         sub     ecx,edi
  1361.         add     eax,ecx
  1362.         mov     [ebp-0x10],eax
  1363.         cmp     eax,2
  1364.         jb      .labl_58
  1365.         mov     eax,[ebp-0x40]
  1366.         mov     al,[eax+RepNextStates]
  1367.         mov     edx,[ebp+8]
  1368.         movzx   eax,al
  1369.         mov     ebx,eax
  1370.         mov     al,[eax+LiteralNextStates]
  1371.         lea     ecx,[edi+edx]
  1372.         mov     [ebp-0x3C],al
  1373.         movzx   eax,al
  1374.         mov     esi,ecx
  1375.         and     esi,3
  1376.         shl     ebx,4
  1377.         add     esi,ebx
  1378.         mov     esi,[0x1AF30+esi*4]
  1379.         lea     ebx,[edi+edx+1]
  1380.         mov     [ebp-0x20],eax
  1381.         mov     eax,[ebp-0x28]
  1382.         movzx   edx,byte [edi+eax]
  1383.         mov     al,[eax+edi-1]
  1384.         push    edx
  1385.         mov     edx,[ebp-0x50]
  1386.         movzx   edx,byte [edx+edi]
  1387.         push    edx
  1388.         shr     esi,02
  1389.         mov     esi,[0x51A18+esi*4]
  1390.         push    1
  1391.         push    ecx
  1392.         mov     [ebp-0x44],esi
  1393.         and     ebx,3
  1394.         call    cm_pr_05
  1395.         push    dword [ebp-0x1C]
  1396.         mov     edx,[ebp-0x18]
  1397.         push    dword [ebp-0x14]
  1398.         mov     esi,eax
  1399.         mov     eax,edi
  1400.         call    cm_pr_11
  1401.         mov     ecx,[ebp-0x20]
  1402.         add     esi,eax
  1403.         shl     ecx,4
  1404.         add     ecx,ebx
  1405.         mov     eax,0x800
  1406.         mov     edx,eax
  1407.         sub     edx,[0x1AF30+ecx*4]
  1408.         mov     ecx,[ebp-0x20]
  1409.         sub     eax,[0x515B8+ecx*4]
  1410.         mov     ecx,[ebp-0xC]
  1411.         shr     edx,2
  1412.         add     esi,[0x51A18+edx*4]
  1413.         shr     eax,2
  1414.         add     esi,[0x51A18+eax*4]
  1415.         mov     eax,[ebp-0x10]
  1416.         add     esi,[ebp-0x44]
  1417.         lea     eax,[eax+edi+1]
  1418.         add     esi,[ebp-0x48]
  1419.         add     eax,ecx
  1420.         mov     [ebp-0x44],eax
  1421.         cmp     [ebp-8],eax
  1422.         jnb     .labl_57
  1423.         mov     eax,[ebp-8]
  1424.         mov     ecx,[ebp-0x44]
  1425.         imul    eax,eax,0x28
  1426.         sub     ecx,[ebp-8]
  1427.         add     eax,0x29584
  1428.         add     [ebp-8],ecx
  1429. ;----------------------------------------------------------
  1430. .labl_56:
  1431.         add     eax,0x28        ;'('
  1432.         dec     ecx
  1433.         mov     dword [eax],0x0FFFFFFF
  1434.         jne     .labl_56
  1435. ;----------------------------------------------------------
  1436. .labl_57:
  1437.         mov     eax,[ebp-0x10]
  1438.         push    ebx
  1439.         push    dword [ebp-0x3C]
  1440.         xor     edx,edx
  1441.         call    cm_pr_11
  1442.         mov     ecx,[ebp-0x44]
  1443.         imul    ecx,ecx,0x28
  1444.         add     eax,esi
  1445.         add     ecx,0x29578
  1446.         cmp     eax,[ecx+0xC]
  1447.         jnb     .labl_58
  1448.         and     dword [ecx+0x14],0
  1449.         mov     [ecx+0xC],eax
  1450.         mov     eax,[ebp-0xC]
  1451.         lea     edx,[edi+eax+1]
  1452.         mov     [ecx+4],eax
  1453.         mov     eax,[ebp-0x18]
  1454.         mov     [ecx+0x10],edx
  1455.         mov     byte [ecx+1],1
  1456.         mov     byte [ecx+2],1
  1457.         mov     [ecx+8],eax
  1458. ;----------------------------------------------------------
  1459. .labl_58:
  1460.         inc     dword [ebp-0x18]
  1461.         cmp     dword [ebp-0x18],4
  1462.         jb      .labl_46
  1463.         mov     eax,[ebp-0x24]
  1464.         cmp     [ebp-0x2C],eax
  1465.         jbe     .labl_59
  1466.         mov     [ebp-0x2C],eax
  1467. ;----------------------------------------------------------
  1468. .labl_59:
  1469.         cmp     dword [ebp-0x2C],2
  1470.         jb      .labl_72
  1471.         mov     esi,[ebp-0x2C]
  1472.         cmp     esi,2
  1473.         jne     .labl_60
  1474.         cmp     dword [0x1AAB8],0x80    ;'€'
  1475.         jnb     .labl_72
  1476. ;----------------------------------------------------------
  1477. .labl_60:
  1478.         mov     eax,[ebp-0x54]
  1479.         shr     eax,2
  1480.         mov     eax,[0x51A18+eax*4]
  1481.         add     eax,[ebp-0x4C]
  1482.         mov     [ebp-0x4C],eax
  1483.         mov     eax,[ebp-0xC]
  1484.         lea     ecx,[esi+eax]
  1485.         cmp     [ebp-8],ecx
  1486.         jnb     .labl_62
  1487.         mov     eax,[ebp-8]
  1488.         imul    eax,eax,0x28
  1489.         mov     edx,ecx
  1490.         sub     edx,[ebp-8]
  1491.         add     eax,0x29584
  1492.         add     [ebp-8],edx
  1493. ;----------------------------------------------------------
  1494. .labl_61:
  1495.         add     eax,0x28        ;'('
  1496.         dec     edx
  1497.         mov     dword [eax],0x0FFFFFFF
  1498.         jne     .labl_61
  1499. ;----------------------------------------------------------
  1500. .labl_62:
  1501.         imul    ecx,ecx,0x28
  1502.         add     ecx,0x29584
  1503.         lea     eax,[0x1AAB4+esi*4]
  1504.         lea     edi,[esi+1]
  1505.         mov     [ebp-0x24],eax
  1506.         mov     ebx,ecx
  1507.         mov     [ebp-0x48],ecx
  1508. ;----------------------------------------------------------
  1509. .labl_63:
  1510.         mov     eax,[ebp-0x24]
  1511.         mov     esi,[eax-4]
  1512.         push    dword [ebp-0x1C]
  1513.         lea     eax,[edi-1]
  1514.         mov     edx,esi
  1515.         call    cm_pr_12
  1516.         add     eax,[ebp-0x4C]
  1517.         mov     [ebp-0x50],eax
  1518.         cmp     eax,[ebx]
  1519.         jnb     .labl_64
  1520.         mov     [ebx],eax
  1521.         mov     eax,[ebp-0xC]
  1522.         mov     [ebx+4],eax
  1523.         lea     eax,[esi+4]
  1524.         mov     [ebx+8],eax
  1525.         mov     byte [ebx-0xB],0
  1526. ;----------------------------------------------------------
  1527. .labl_64:
  1528.         lea     eax,[edi-1]
  1529.         cmp     eax,[ebp-0x2C]
  1530.         je      .labl_65
  1531.         mov     eax,[ebp-0x24]
  1532.         cmp     esi,[eax]
  1533.         je      .labl_71
  1534. ;----------------------------------------------------------
  1535. .labl_65:
  1536.         inc     esi
  1537.         lea     ecx,[edi+0x80]
  1538.         mov     [ebp-0x44],esi
  1539.         mov     [ebp-0x10],edi
  1540.         cmp     ecx,[ebp-0x38]
  1541.         jbe     .labl_66
  1542.         mov     ecx,[ebp-0x38]
  1543. ;----------------------------------------------------------
  1544. .labl_66:
  1545.         cmp     edi,ecx
  1546.         jnb     .labl_68
  1547.         mov     eax,edi
  1548.         sub     eax,esi
  1549.         add     eax,[ebp-0x28]
  1550. ;----------------------------------------------------------
  1551. .labl_67:
  1552.         mov     edx,[ebp-0x10]
  1553.         mov     esi,[ebp-0x28]
  1554.         mov     dl,[edx+esi]
  1555.         cmp     dl,[eax]
  1556.         jne     .labl_68
  1557.         inc     dword [ebp-0x10]
  1558.         inc     eax
  1559.         cmp     [ebp-0x10],ecx
  1560.         jb      .labl_67
  1561. ;----------------------------------------------------------
  1562. .labl_68:
  1563.         or      ecx,0xFFFFFFFF
  1564.         lea     eax,[edi-1]
  1565.         sub     ecx,eax
  1566.         add     [ebp-0x10],ecx
  1567.         cmp     dword [ebp-0x10],2
  1568.         jb      .labl_71
  1569.         mov     eax,[ebp-0x40]
  1570.         mov     al,[eax+MatchNextStates]
  1571.         mov     ecx,[ebp+8]
  1572.         movzx   eax,al
  1573.         mov     esi,eax
  1574.         mov     al,[eax+LiteralNextStates]
  1575.         lea     edx,[edi+ecx-1]
  1576.         mov     [ebp-0x3C],al
  1577.         movzx   eax,al
  1578.         shl     esi,4
  1579.         mov     ebx,edx
  1580.         and     ebx,3
  1581.         add     esi,ebx
  1582.         mov     esi,[0x1AF30+esi*4]
  1583.         lea     ebx,[edi+ecx]
  1584.         mov     [ebp-0x20],eax
  1585.         mov     eax,[ebp-0x28]
  1586.         movzx   ecx,byte [edi+eax-1]
  1587.         push    ecx
  1588.         mov     ecx,edi
  1589.         sub     ecx,[ebp-0x44]
  1590.         shr     esi,2
  1591.         movzx   ecx,byte [ecx+eax-1]
  1592.         mov     esi,[0x51A18+esi*4]
  1593.         mov     al,[edi+eax-2]
  1594.         push    ecx
  1595.         push    1
  1596.         push    edx
  1597.         mov     [ebp-0x54],esi
  1598.         and     ebx,3
  1599.         call    cm_pr_05
  1600.         mov     ecx,[ebp-0x20]
  1601.         mov     esi,eax
  1602.         shl     ecx,4
  1603.         add     ecx,ebx
  1604.         mov     eax,0x800
  1605.         mov     edx,eax
  1606.         sub     edx,[0x1AF30+ecx*4]
  1607.         mov     ecx,[ebp-0x20]
  1608.         sub     eax,[0x515B8+ecx*4]
  1609.         mov     ecx,[ebp-0xC]
  1610.         shr     edx,2
  1611.         add     esi,[0x51A18+edx*4]
  1612.         shr     eax,2
  1613.         add     esi,[0x51A18+eax*4]
  1614.         mov     eax,[ebp-0x10]
  1615.         add     esi,[ebp-0x54]
  1616.         add     eax,edi
  1617.         add     esi,[ebp-0x50]
  1618.         add     eax,ecx
  1619.         mov     [ebp-0x20],eax
  1620.         cmp     [ebp-8],eax
  1621.         jnb     .labl_70
  1622.         mov     eax,[ebp-8]
  1623.         mov     ecx,[ebp-0x20]
  1624.         imul    eax,eax,0x28
  1625.         sub     ecx,[ebp-8]
  1626.         add     eax,0x29584
  1627.         add     [ebp-8],ecx
  1628. ;----------------------------------------------------------
  1629. .labl_69:
  1630.         add     eax,0x28        ;'('
  1631.         dec     ecx
  1632.         mov     dword [eax],0x0FFFFFFF
  1633.         jne     .labl_69
  1634. ;----------------------------------------------------------
  1635. .labl_70:
  1636.         mov     eax,[ebp-0x10]
  1637.         push    ebx
  1638.         push    dword [ebp-0x3C]
  1639.         xor     edx,edx
  1640.         call    cm_pr_11
  1641.         mov     ecx,[ebp-0x20]
  1642.         mov     ebx,[ebp-0x48]
  1643.         imul    ecx,ecx,0x28
  1644.         add     eax,esi
  1645.         add     ecx,0x29578
  1646.         cmp     eax,[ecx+0xC]
  1647.         jnb     .labl_71
  1648.         and     dword [ecx+0x14],0
  1649.         mov     [ecx+0xC],eax
  1650.         mov     eax,[ebp-0xC]
  1651.         lea     edx,[edi+eax]
  1652.         mov     [ecx+4],eax
  1653.         mov     eax,[ebp-0x44]
  1654.         add     eax,3
  1655.         mov     [ecx+0x10],edx
  1656.         mov     byte [ecx+1],1
  1657.         mov     byte [ecx+2],1
  1658.         mov     [ecx+8],eax
  1659. ;----------------------------------------------------------
  1660. .labl_71:
  1661.         sub     dword [ebp-0x24],4
  1662.         sub     ebx,0x28        ;'('
  1663.         dec     edi
  1664.         lea     eax,[edi-1]
  1665.         mov     [ebp-0x48],ebx
  1666.         cmp     eax,2
  1667.         jnb     .labl_63
  1668. ;----------------------------------------------------------
  1669. .labl_72:
  1670.         inc     dword [ebp-0xC]
  1671.         mov     eax,[ebp-0xC]
  1672.         cmp     eax,[ebp-8]
  1673.         jne     .labl_21
  1674.         jmp     .labl_74
  1675. ;----------------------------------------------------------
  1676. .labl_73:
  1677.         mov     eax,[ebp-0x2C]
  1678.         mov     [0x19FAC],eax
  1679.         mov     byte [0x19FAA],1        ;0x1B238
  1680. ;----------------------------------------------------------
  1681. .labl_74:
  1682.         push    dword [ebp-0xC]
  1683.         push    dword [ebp+0xC]
  1684.         call    lz_cm_08
  1685.         mov     ecx,[ebp+0x10]
  1686.         mov     [ecx],eax
  1687. ;----------------------------------------------------------
  1688. .labl_75:
  1689.         pop     ebx
  1690.         pop     edi
  1691. ;----------------------------------------------------------
  1692. .labl_76:
  1693.         pop     esi
  1694.         leave  
  1695.         ret     0xC
  1696. ;*****************************************************************************
  1697.  
  1698. ;* Call: ***************************************************************
  1699. lz_cm_04:
  1700.         push    ebp
  1701.         mov     ebp,esp
  1702.         push    ecx
  1703.         push    ebx
  1704.         push    esi
  1705.         xor     ebx,ebx
  1706.         push    edi
  1707.         inc     ebx
  1708.         mov     dword [ebp-4],8
  1709. ;----------------------------------------------------------
  1710. .labl_00:
  1711.         dec     dword [ebp-4]
  1712.         movzx   ecx,byte [ebp-4]
  1713.         movzx   esi,byte [ebp+0xC]
  1714.         movzx   edi,byte [ebp+0x10]
  1715.         shr     esi,cl
  1716.         shr     edi,cl
  1717.         mov     ecx,[ebp+8]
  1718.         and     esi,1
  1719.         lea     eax,[esi+1]
  1720.         shl     eax,8
  1721.         add     eax,ebx
  1722.         and     edi,1
  1723.         push    edi
  1724.         lea     edx,[ecx+eax*4]
  1725.         call    cm_pr_14
  1726.         add     ebx,ebx
  1727.         or      ebx,edi
  1728.         cmp     esi,edi
  1729.         jne     .labl_02
  1730.         cmp     dword [ebp-4],0
  1731.         jne     .labl_00
  1732.         jmp     .labl_03
  1733. ;----------------------------------------------------------
  1734. .labl_01:
  1735.         dec     dword [ebp-4]
  1736.         movzx   esi,byte [ebp+0x10]
  1737.         mov     cl,[ebp-4]
  1738.         mov     eax,[ebp+8]
  1739.         shr     esi,cl
  1740.         lea     edx,[eax+ebx*4]
  1741.         and     esi,1
  1742.         push    esi
  1743.         call    cm_pr_14
  1744.         add     ebx,ebx
  1745.         or      ebx,esi
  1746. ;----------------------------------------------------------
  1747. .labl_02:
  1748.         cmp     dword [ebp-4],0
  1749.         jne     .labl_01
  1750. ;----------------------------------------------------------
  1751. .labl_03:
  1752.         pop     edi
  1753.         pop     esi
  1754.         pop     ebx
  1755.         leave  
  1756.         ret     0xC
  1757. ;*****************************************************************************
  1758.  
  1759. ;* Call: ***************************************************************
  1760. lz_cm_05:
  1761.         push    esi
  1762.         mov     esi,eax
  1763.         jmp     .labl_02
  1764. ;----------------------------------------------------------
  1765. .labl_00:
  1766.         mov     eax,[esp+8]
  1767.         shr     dword [0x51A04],1
  1768.         dec     esi
  1769.         mov     ecx,esi
  1770.         shr     eax,cl
  1771.         test    al,1
  1772.         je      .labl_01
  1773.         mov     eax,[0x51A04]
  1774.         add     [0x51A10],eax
  1775.         adc     dword [0x51A14],0
  1776. ;----------------------------------------------------------
  1777. .labl_01:
  1778.         cmp     dword [0x51A04],0x1000000
  1779.         jnb     .labl_02
  1780.         shl     dword [0x51A04],8
  1781.         call    cm_pr_13
  1782. ;----------------------------------------------------------
  1783. .labl_02:
  1784.         test    esi,esi
  1785.         jne     .labl_00
  1786.         pop     esi
  1787.         ret     4
  1788. ;*****************************************************************************
  1789.  
  1790. ;* Call: ***************************************************************
  1791. lz_cm_06:
  1792.         push    esi
  1793.         xor     esi,esi
  1794.         push    edi
  1795.         mov     edi,[0x519E8]
  1796.         inc     esi
  1797. ;----------------------------------------------------------
  1798. .labl_00:
  1799.         mov     eax,[esp+0xC]
  1800.         and     eax,1
  1801.         lea     edx,[0x515E8+esi*4]
  1802.         push    eax
  1803.         lea     esi,[eax+esi*2]
  1804.         call    cm_pr_14
  1805.         shr     dword [esp+0xC],1
  1806.         dec     edi
  1807.         jne     .labl_00
  1808.         pop     edi
  1809.         pop     esi
  1810.         ret     4
  1811. ;*****************************************************************************
  1812.  
  1813. ;* Call: ***************************************************************
  1814. lz_cm_07:
  1815.         push    esi
  1816.         mov     esi,eax
  1817.         test    esi,esi
  1818.         je      .labl_01
  1819.         add     [0x1AEFC],esi
  1820. ;----------------------------------------------------------
  1821. .labl_00:
  1822.         dec     esi
  1823.         call    lz_cm_09
  1824.         call    cm_pr_19
  1825.         test    esi,esi
  1826.         jne     .labl_00
  1827. ;----------------------------------------------------------
  1828. .labl_01:
  1829.         pop     esi
  1830.         ret    
  1831. ;*****************************************************************************
  1832.  
  1833. ;* Call: ***************************************************************
  1834. lz_cm_08:
  1835.         push    ebp
  1836.         mov     ebp,esp
  1837.         push    ecx
  1838.         mov     ecx,[ebp+0xC]
  1839.         mov     eax,ecx
  1840.         imul    eax,eax,0x28
  1841.         mov     edx,[eax+0x29588]
  1842.         mov     eax,[eax+0x2958C]
  1843.         push    ebx
  1844.         push    esi
  1845.         mov     [0x29574],ecx
  1846.         mov     [ebp-4],eax
  1847.         push    edi
  1848. ;----------------------------------------------------------
  1849. .labl_00:
  1850.         imul    ecx,ecx,0x28
  1851.         cmp     byte [ecx+0x29579],0
  1852.         je      .labl_01
  1853.         mov     eax,edx
  1854.         imul    eax,eax,0x28
  1855.         or      dword [eax+0x2958C],0xFFFFFFFF
  1856.         lea     esi,[eax+0x29579]
  1857.         lea     edi,[eax+0x29588]
  1858.         lea     ebx,[edx-1]
  1859.         mov     byte [esi],0
  1860.         mov     [edi],ebx
  1861.         cmp     byte [ecx+0x2957A],0
  1862.         je      .labl_01
  1863.         mov     byte [esi-0x28],0
  1864.         mov     esi,[ecx+0x2957C]
  1865.         mov     [edi-0x28],esi
  1866.         mov     ecx,[ecx+0x29580]
  1867.         mov     [eax+0x29564],ecx
  1868. ;----------------------------------------------------------
  1869. .labl_01:
  1870.         mov     ecx,[ebp-4]
  1871.         mov     eax,edx
  1872.         imul    eax,eax,0x28
  1873.         mov     esi,edx
  1874.         mov     edx,[eax+0x2958C]
  1875.         mov     [eax+0x2958C],ecx
  1876.         mov     ecx,[ebp+0xC]
  1877.         mov     [ebp-4],edx
  1878.         mov     edx,[eax+0x29588]
  1879.         mov     [eax+0x29588],ecx
  1880.         mov     ecx,esi
  1881.         mov     [ebp+0xC],ecx
  1882.         test    esi,esi
  1883.         jne     .labl_00
  1884.         mov     eax,[0x2958C]
  1885.         mov     ecx,[ebp+8]
  1886.         pop     edi
  1887.         mov     [ecx],eax
  1888.         mov     eax,[0x29588]
  1889.         pop     esi
  1890.         mov     [0x1AEF8],eax
  1891.         pop     ebx
  1892.         leave
  1893.         ret     8
  1894. ;*****************************************************************************
  1895.  
  1896. ;* Call: ***************************************************************
  1897. lz_cm_09:
  1898.         push    ebp
  1899.         mov     ebp,esp
  1900.         mov     edx,[0x52218]
  1901.         mov     eax,[0x5262C]
  1902.         mov     ecx,[0x52630]
  1903.         sub     esp,0x2C
  1904.         push    esi
  1905.         lea     esi,[edx+eax]
  1906.         cmp     esi,ecx
  1907.         ja      .labl_00
  1908.         mov     [ebp-0x18],edx
  1909.         jmp     .labl_01
  1910. ;----------------------------------------------------------
  1911. .labl_00:
  1912.         sub     ecx,eax
  1913.         mov     [ebp-0x18],ecx
  1914.         cmp     ecx,3
  1915.         jb      .labl_13
  1916. ;----------------------------------------------------------
  1917. .labl_01:
  1918.         mov     ecx,[0x51A0C]
  1919.         mov     edx,eax
  1920.         sub     edx,ecx
  1921.         cmp     ecx,eax
  1922.         mov     ecx,[0x52628]
  1923.         lea     esi,[ecx+eax]
  1924.         movzx   ecx,byte [esi+2]
  1925.         push    ebx
  1926.         movzx   ebx,word [esi]
  1927.         push    edi
  1928.         sbb     edi,edi
  1929.         and     dword [ebp-0x1C],0
  1930.         and     dword [ebp-0x28],0
  1931.         shl     ecx,8
  1932.         and     edi,edx
  1933.         movzx   edx,byte [esi]
  1934.         xor     ecx,[0x52228+edx*4]
  1935.         movzx   edx,byte [esi+1]
  1936.         xor     ecx,edx
  1937.         mov     edx,[0x52224]
  1938.         and     ecx,0xFFFFF
  1939.         lea     ecx,[edx+ecx*4]
  1940.         mov     [edx+ebx*4+0x400000],eax
  1941.         mov     ebx,[ecx]
  1942.         mov     [ecx],eax
  1943.         mov     ecx,[0x5221C]
  1944.         lea     ecx,[edx+ecx*8+0x440000]
  1945.         mov     [ebp-4],ebx
  1946.         lea     ebx,[ecx+4]
  1947.         mov     [ebp-0xC],ecx
  1948.         mov     ecx,[0x52220]
  1949.         mov     [ebp-0x10],ebx
  1950.         mov     [ebp-0x14],ecx
  1951.         cmp     [ebp-4],edi
  1952.         jbe     .labl_11
  1953. ;----------------------------------------------------------
  1954. .labl_02:
  1955.         mov     ecx,[ebp-0x14]
  1956.         dec     dword [ebp-0x14]
  1957.         test    ecx,ecx
  1958.         je      .labl_11
  1959.         mov     ecx,[0x52628]
  1960.         mov     ebx,[ebp-4]
  1961.         add     ecx,ebx
  1962.         mov     [ebp-0x24],ecx
  1963.         mov     ecx,[ebp-0x28]
  1964.         cmp     ecx,[ebp-0x1C]
  1965.         jb      .labl_03
  1966.         mov     ecx,[ebp-0x1C]
  1967. ;----------------------------------------------------------
  1968. .labl_03:
  1969.         mov     ebx,[ebp-0x24]
  1970.         mov     [ebp-8],ecx
  1971.         add     ecx,esi
  1972.         sub     ebx,esi
  1973.         mov     [ebp-0x20],ebx
  1974.         jmp     .labl_05
  1975. ;----------------------------------------------------------
  1976. .labl_04:
  1977.         mov     ecx,[ebp-0x2C]
  1978.         mov     ebx,[ebp-0x20]
  1979. ;----------------------------------------------------------
  1980. .labl_05:
  1981.         mov     bl,[ebx+ecx]
  1982.         cmp     bl,[ecx]
  1983.         jne     .labl_06
  1984.         inc     dword [ebp-8]
  1985.         inc     ecx
  1986.         mov     [ebp-0x2C],ecx
  1987.         mov     ecx,[ebp-8]
  1988.         cmp     ecx,[ebp-0x18]
  1989.         jne     .labl_04
  1990. ;----------------------------------------------------------
  1991. .labl_06:
  1992.         mov     ecx,[0x5221C]
  1993.         mov     ebx,eax
  1994.         sub     ebx,[ebp-4]
  1995.         cmp     ebx,ecx
  1996.         ja      .labl_07
  1997.         sub     ecx,ebx
  1998.         jmp     .labl_08
  1999. ;----------------------------------------------------------
  2000. .labl_07:
  2001.         sub     ecx,ebx
  2002.         add     ecx,[0x51A0C]
  2003. ;----------------------------------------------------------
  2004. .labl_08:
  2005.         lea     ecx,[edx+ecx*8+0x440000]
  2006.         mov     [ebp-0x20],ecx
  2007.         mov     ecx,[ebp-8]
  2008.         cmp     ecx,[ebp-0x18]
  2009.         je      .labl_14
  2010.         mov     ebx,[ebp-0x24]
  2011.         mov     bl,[ecx+ebx]
  2012.         cmp     bl,[ecx+esi]
  2013.         mov     ecx,[ebp-4]
  2014.         jnb     .labl_09
  2015.         mov     ebx,[ebp-0xC]
  2016.         mov     [ebx],ecx
  2017.         mov     ecx,[ebp-0x20]
  2018.         mov     ebx,[ebp-8]
  2019.         add     ecx,4
  2020.         mov     [ebp-0xC],ecx
  2021.         mov     [ebp-0x1C],ebx
  2022.         jmp     .labl_10
  2023. ;----------------------------------------------------------
  2024. .labl_09:
  2025.         mov     ebx,[ebp-0x10]
  2026.         mov     [ebx],ecx
  2027.         mov     ecx,[ebp-0x20]
  2028.         mov     ebx,[ebp-8]
  2029.         mov     [ebp-0x10],ecx
  2030.         mov     [ebp-0x28],ebx
  2031. ;----------------------------------------------------------
  2032. .labl_10:
  2033.         mov     ecx,[ecx]
  2034.         mov     [ebp-4],ecx
  2035.         cmp     ecx,edi
  2036.         ja      .labl_02
  2037. ;----------------------------------------------------------
  2038. .labl_11:
  2039.         mov     eax,[ebp-0xC]
  2040.         and     dword [eax],0
  2041.         mov     eax,[ebp-0x10]
  2042.         and     dword [eax],0
  2043. ;----------------------------------------------------------
  2044. .labl_12:
  2045.         pop     edi
  2046.         pop     ebx
  2047. ;----------------------------------------------------------
  2048. .labl_13:
  2049.         pop     esi
  2050.         leave  
  2051.         ret    
  2052. ;----------------------------------------------------------
  2053. .labl_14:
  2054.         mov     eax,[ebp-0x20]
  2055.         mov     ecx,[eax]
  2056.         mov     edx,[ebp-0xC]
  2057.         mov     [edx],ecx
  2058.         mov     eax,[eax+4]
  2059.         mov     ecx,[ebp-0x10]
  2060.         mov     [ecx],eax
  2061.         jmp     .labl_12
  2062. ;*****************************************************************************
  2063.  
  2064. ;* Call: ***************************************************************
  2065. cm_pr_000:
  2066.         cmp     eax,0x400
  2067.         jnb     .labl_00
  2068.         movzx   eax,byte [eax+0x19FB0]
  2069.         ret
  2070. ;----------------------------------------------------------
  2071. .labl_00:
  2072.         cmp     eax,0x80000
  2073.         jnb     .labl_01
  2074.         shr     eax,9
  2075.         movzx   eax,byte [eax+0x19FB0]
  2076.         add     eax,0x12
  2077.         ret
  2078. ;----------------------------------------------------------
  2079. .labl_01:
  2080.         shr     eax,0x12
  2081.         movzx   eax,byte [eax+0x19FB0]
  2082.         add     eax,0x24 ;'$'
  2083.         ret
  2084. ;*****************************************************************************
  2085.  
  2086. ;* Call: ***************************************************************
  2087. cm_pr_00:
  2088.         push    ebx
  2089.         push    edi
  2090.         mov     eax,0x400
  2091.         push    4
  2092.         mov     [esi],eax
  2093.         mov     [esi+4],eax
  2094.         lea     edi,[esi+0x4048]
  2095.         pop     ebx
  2096. ;----------------------------------------------------------
  2097. .labl_00:
  2098.         push    3
  2099.         lea     eax,[edi-0x4040]
  2100.         pop     ecx
  2101.         call    cm_pr_15
  2102.         push    3
  2103.         pop     ecx
  2104.         mov     eax,edi
  2105.         call    cm_pr_15
  2106.         add     edi,0x404
  2107.         dec     ebx
  2108.         jne     .labl_00
  2109.         push    8
  2110.         pop     ecx
  2111.         pop     edi
  2112.         lea     eax,[esi+0x8088]
  2113.         pop     ebx
  2114.         jmp     cm_pr_15
  2115. ;*****************************************************************************
  2116.  
  2117. ;* Call: ***************************************************************
  2118. cm_pr_01:
  2119.         push    ebx
  2120.         push    edi
  2121.         mov     edi,eax
  2122.         xor     ebx,ebx
  2123.         cmp     [edi+0xC88C],ebx
  2124.         jbe     .labl_01
  2125.         mov     eax,[esp+0xC]
  2126.         push    esi
  2127.         lea     esi,[edi+eax*4+0x848C]
  2128. ;----------------------------------------------------------
  2129. .labl_00:
  2130.         mov     eax,[esp+0x10]
  2131.         mov     edx,ebx
  2132.         call    lz_cm_10
  2133.         mov     [esi],eax
  2134.         inc     ebx
  2135.         add     esi,0x40        ;'@'
  2136.         cmp     ebx,[edi+0xC88C]
  2137.         jb      .labl_00
  2138.         pop     esi
  2139. ;----------------------------------------------------------
  2140. .labl_01:
  2141.         mov     eax,[edi+0xC88C]
  2142.         mov     ecx,[esp+0xC]
  2143.         mov     [edi+ecx*4+0xC890],eax
  2144.         pop     edi
  2145.         pop     ebx
  2146.         ret     4
  2147. ;*****************************************************************************
  2148.  
  2149. ;* Call: ***************************************************************
  2150. lz_cm_10:
  2151.         push    ebp
  2152.         mov     ebp,esp
  2153.         push    ecx
  2154.         push    esi
  2155.         cmp     edx,8
  2156.         jnb     .labl_00
  2157.         imul    eax,eax,0x404
  2158.         lea     esi,[eax+edi+8]
  2159.         call    cm_pr_17
  2160.         mov     ecx,[edi]
  2161.         shr     ecx,2
  2162.         add     eax,[0x51A18+ecx*4]
  2163.         jmp     .labl_03
  2164. ;----------------------------------------------------------
  2165. .labl_00:
  2166.         push    ebx
  2167.         mov     ebx,0x800
  2168.         mov     ecx,ebx
  2169.         sub     ecx,[edi]
  2170.         shr     ecx,2
  2171.         mov     ecx,[0x51A18+ecx*4]
  2172.         mov     [ebp-4],ecx
  2173.         cmp     edx,0x10
  2174.         jnb     .labl_01
  2175.         imul    eax,eax,0x404
  2176.         add     edx,0xFFFFFFF8
  2177.         lea     esi,[eax+edi+0x4048]
  2178.         call    cm_pr_17
  2179.         mov     ecx,[edi+4]
  2180.         shr     ecx,2
  2181.         add     eax,[0x51A18+ecx*4]
  2182.         jmp     .labl_02
  2183. ;----------------------------------------------------------
  2184. .labl_01:
  2185.         add     edx,0xFFFFFFF0
  2186.         lea     esi,[edi+0x8088]
  2187.         call    cm_pr_17
  2188.         sub     ebx,[edi+4]
  2189.         shr     ebx,2
  2190.         add     eax,[0x51A18+ebx*4]
  2191. ;----------------------------------------------------------
  2192. .labl_02:
  2193.         add     [ebp-4],eax
  2194.         mov     eax,[ebp-4]
  2195.         pop     ebx
  2196. ;----------------------------------------------------------
  2197. .labl_03:
  2198.         pop     esi
  2199.         leave  
  2200.         ret    
  2201. ;*****************************************************************************
  2202.  
  2203. ;* Call: ***************************************************************
  2204. cm_pr_02:
  2205.         push    edi
  2206.         mov     edi,eax
  2207.         mov     edx,esi
  2208.         cmp     edi,8
  2209.         jnb     .labl_00
  2210.         push    0
  2211.         call    cm_pr_14
  2212.         mov     eax,ebx
  2213.         imul    eax,eax,0x404
  2214.         push    edi
  2215.         lea     edi,[eax+esi+8]
  2216.         jmp     .labl_02
  2217. ;----------------------------------------------------------
  2218. .labl_00:
  2219.         push    1
  2220.         call    cm_pr_14
  2221.         lea     edx,[esi+4]
  2222.         cmp     edi,0x10
  2223.         jnb     .labl_01
  2224.         push    0
  2225.         call    cm_pr_14
  2226.         add     edi,0xFFFFFFF8
  2227.         mov     eax,ebx
  2228.         imul    eax,eax,0x404
  2229.         push    edi
  2230.         lea     edi,[eax+esi+0x4048]
  2231.         jmp     .labl_02
  2232. ;----------------------------------------------------------
  2233. .labl_01:
  2234.         push    1
  2235.         call    cm_pr_14
  2236.         add     edi,0xFFFFFFF0
  2237.         push    edi
  2238.         lea     edi,[esi+0x8088]
  2239. ;----------------------------------------------------------
  2240. .labl_02:
  2241.         call    cm_pr_16
  2242.         dec     dword [esi+ebx*4+0xC890]
  2243.         pop     edi
  2244.         jne     .labl_03
  2245.         push    ebx
  2246.         mov     eax,esi
  2247.         call    cm_pr_01
  2248. ;----------------------------------------------------------
  2249. .labl_03:
  2250.         ret    
  2251. ;*****************************************************************************
  2252.  
  2253. ;* Call: ***************************************************************
  2254. cm_pr_03:
  2255.         push    ebx
  2256.         push    esi
  2257.         push    edi
  2258.         xor     edi,edi
  2259.         push    8
  2260.         inc     edi
  2261.         pop     ebx
  2262. ;----------------------------------------------------------
  2263. .labl_00:
  2264.         movzx   esi,byte [esp+0x14]
  2265.         mov     eax,[esp+0x10]
  2266.         dec     ebx
  2267.         mov     cl,bl
  2268.         shr     esi,cl
  2269.         lea     edx,[eax+edi*4]
  2270.         and     esi,1
  2271.         push    esi
  2272.         call    cm_pr_14
  2273.         add     edi,edi
  2274.         or      edi,esi
  2275.         test    ebx,ebx
  2276.         jne     .labl_00
  2277.         pop     edi
  2278.         pop     esi
  2279.         pop     ebx
  2280.         ret     8
  2281. ;*****************************************************************************
  2282.  
  2283. ;* Call: ***************************************************************
  2284. cm_pr_04:
  2285.         mov     edx,[0x519F4]
  2286.         push    esi
  2287.         mov     esi,[0x519FC]
  2288.         and     esi,[esp+8]
  2289.         push    8
  2290.         pop     ecx
  2291.         movzx   eax,al
  2292.         sub     cl,dl
  2293.         shr     eax,cl
  2294.         mov     ecx,edx
  2295.         shl     esi,cl
  2296.         add     eax,esi
  2297.         pop     esi
  2298.         ret     4
  2299. ;*****************************************************************************
  2300.  
  2301. ;* Call: ***************************************************************
  2302. cm_pr_05:
  2303.         push    dword [esp+0x10]
  2304.         push    dword [esp+0x10]
  2305.         push    dword [esp+0x10]
  2306.         push    dword [esp+0x10]
  2307.         call    cm_pr_04
  2308.         imul    eax,eax,0xC00
  2309.         add     eax,[0x519F0]
  2310.         push    eax
  2311.         call    lz_cm_11
  2312.         ret     0x10
  2313. ;*****************************************************************************
  2314.  
  2315. ;* Call: ***************************************************************
  2316. lz_cm_11:
  2317.         push    ebp
  2318.         mov     ebp,esp
  2319.         push    ecx
  2320.         push    ebx
  2321.         push    esi
  2322.         xor     esi,esi
  2323.         xor     eax,eax
  2324.         inc     esi
  2325.         push    edi
  2326.         mov     dword [ebp-4],8
  2327.         cmp     [ebp+0xC],al
  2328.         je      .labl_02
  2329.         movzx   ecx,byte [ebp+0x14]
  2330.         mov     [ebp+0xC],ecx
  2331. ;----------------------------------------------------------
  2332. .labl_00:
  2333.         dec     dword [ebp-4]
  2334.         movzx   ecx,byte [ebp-4]
  2335.         movzx   edi,byte [ebp+0x10]
  2336.         mov     edx,[ebp+0xC]
  2337.         mov     ebx,[ebp+8]
  2338.         shr     edi,cl
  2339.         shr     edx,cl
  2340.         and     edi,1
  2341.         mov     ecx,edi
  2342.         shl     ecx,8
  2343.         add     ecx,esi
  2344.         mov     ecx,[ebx+ecx*4+0x400]
  2345.         and     edx,1
  2346.         sub     ecx,edx
  2347.         mov     ebx,edx
  2348.         neg     ebx
  2349.         xor     ecx,ebx
  2350.         shr     ecx,2
  2351.         and     ecx,0x1FF
  2352.         add     eax,[0x51A18+ecx*4]
  2353.         add     esi,esi
  2354.         or      esi,edx
  2355.         cmp     edi,edx
  2356.         jne     .labl_01
  2357.         cmp     dword [ebp-4],0
  2358.         jne     .labl_00
  2359.         jmp     .labl_04
  2360. ;----------------------------------------------------------
  2361. .labl_01:
  2362.         cmp     dword [ebp-4],0
  2363.         je      .labl_04
  2364. ;----------------------------------------------------------
  2365. .labl_02:
  2366.         movzx   edi,byte [ebp+0x14]
  2367. ;----------------------------------------------------------
  2368. .labl_03:
  2369.         dec     dword [ebp-4]
  2370.         mov     cl,[ebp-4]
  2371.         mov     edx,edi
  2372.         shr     edx,cl
  2373.         mov     ecx,[ebp+8]
  2374.         mov     ecx,[ecx+esi*4]
  2375.         add     esi,esi
  2376.         and     edx,1
  2377.         sub     ecx,edx
  2378.         mov     ebx,edx
  2379.         neg     ebx
  2380.         xor     ecx,ebx
  2381.         shr     ecx,2
  2382.         and     ecx,0x1FF
  2383.         add     eax,[0x51A18+ecx*4]
  2384.         or      esi,edx
  2385.         cmp     dword [ebp-4],0
  2386.         jne     .labl_03
  2387. ;----------------------------------------------------------
  2388. .labl_04:
  2389.         pop     edi
  2390.         pop     esi
  2391.         pop     ebx
  2392.         leave  
  2393.         ret     0x10
  2394. ;*****************************************************************************
  2395.  
  2396. ;* Call: ***************************************************************
  2397. cm_pr_06:
  2398.         push    esi
  2399.         call    lz_cm_12
  2400.         mov     ecx,eax
  2401.         mov     esi,0x80        ;'€'
  2402.         cmp     ecx,esi
  2403.         jne     .labl_00
  2404.         push    dword [0x1ACB0]
  2405.         lea     eax,[esi+0x11]
  2406.         push    esi
  2407.         call    cm_pr_18
  2408.         mov     ecx,eax
  2409.         add     ecx,esi
  2410. ;----------------------------------------------------------
  2411. .labl_00:
  2412.         inc     dword [0x1AEFC]
  2413.         call    cm_pr_19
  2414.         mov     eax,ecx
  2415.         pop     esi
  2416.         ret    
  2417. ;*****************************************************************************
  2418.  
  2419. ;* Call: ***************************************************************
  2420. lz_cm_12:
  2421.         push    ebp
  2422.         mov     ebp,esp
  2423.         sub     esp,0x34
  2424.         mov     edx,[0x52218]
  2425.         mov     ecx,[0x5262C]
  2426.         mov     eax,[0x52630]
  2427.         and     dword [ebp-0x18],0
  2428.         push    esi
  2429.         lea     esi,[edx+ecx]
  2430.         cmp     esi,eax
  2431.         ja      .labl_02
  2432.         mov     [ebp-0x20],edx
  2433. ;----------------------------------------------------------
  2434. .labl_00:
  2435.         mov     eax,[0x51A0C]
  2436.         mov     edx,ecx
  2437.         sub     edx,eax
  2438.         cmp     eax,ecx
  2439.         sbb     eax,eax
  2440.         and     eax,edx
  2441.         mov     [ebp-0x28],eax
  2442.         mov     eax,[0x52628]
  2443.         push    ebx
  2444.         push    edi
  2445.         lea     edi,[eax+ecx]
  2446.         movzx   edx,byte [edi+2]
  2447.         movzx   esi,byte [edi]
  2448.         movzx   eax,word [edi]
  2449.         shl     edx,8
  2450.         xor     edx,[0x52228+esi*4]
  2451.         movzx   esi,byte [edi+1]
  2452.         xor     edx,esi
  2453.         mov     esi,[0x52224]
  2454.         and     edx,0xFFFFF
  2455.         lea     edx,[esi+edx*4]
  2456.         mov     ebx,[edx]
  2457.         lea     eax,[esi+eax*4+0x400000]
  2458.         mov     [ebp-8],ebx
  2459.         mov     ebx,[eax]
  2460.         mov     [eax],ecx
  2461.         or      dword [0x01AAB8],0xFFFFFFFF
  2462.         cmp     ebx,[ebp-0x28]
  2463.         jbe     .labl_01
  2464.         mov     eax,ecx
  2465.         sub     eax,ebx
  2466.         dec     eax
  2467.         mov     [0x01AAB8],eax
  2468.         mov     dword [ebp-0x18],2
  2469. ;----------------------------------------------------------
  2470. .labl_01:
  2471.         mov     ebx,[0x5221C]
  2472.         and     dword [ebp-0x24],0
  2473.         mov     [edx],ecx
  2474.         or      dword [0x1AABC],0xFFFFFFFF
  2475.         and     dword [ebp-0x30],0
  2476.         lea     edx,[esi+ebx*8+0x440000]
  2477.         lea     eax,[edx+4]
  2478.         mov     [ebp-0x14],eax
  2479.         mov     eax,[0x52220]
  2480.         mov     [ebp-0x1C],eax
  2481.         mov     eax,[ebp-8]
  2482.         mov     [ebp-0x10],edx
  2483.         jmp     .labl_13
  2484. ;----------------------------------------------------------
  2485. .labl_02:
  2486.         sub     eax,ecx
  2487.         mov     [ebp-0x20],eax
  2488.         cmp     eax,3
  2489.         jnb     .labl_00
  2490.         xor     eax,eax
  2491.         jmp     .labl_16
  2492. ;----------------------------------------------------------
  2493. .labl_03:
  2494.         mov     eax,[ebp-0x1C]
  2495.         dec     dword [ebp-0x1C]
  2496.         test    eax,eax
  2497.         je      .labl_14
  2498.         mov     eax,[0x52628]
  2499.         mov     edx,[ebp-8]
  2500.         add     eax,edx
  2501.         mov     [ebp-0x2C],eax
  2502.         mov     eax,[ebp-0x30]
  2503.         cmp     eax,[ebp-0x24]
  2504.         jb      .labl_04
  2505.         mov     eax,[ebp-0x24]
  2506. ;----------------------------------------------------------
  2507. .labl_04:
  2508.         mov     edx,[ebp-0x2C]
  2509.         mov     [ebp-4],eax
  2510.         add     eax,edi
  2511.         sub     edx,edi
  2512.         mov     [ebp-0xC],edx
  2513.         jmp     .labl_06
  2514. ;----------------------------------------------------------
  2515. .labl_05:
  2516.         mov     edx,[ebp-0xC]
  2517.         mov     eax,[ebp-0x34]
  2518. ;----------------------------------------------------------
  2519. .labl_06:
  2520.         mov     dl,[edx+eax]
  2521.         cmp     dl,[eax]
  2522.         jne     .labl_07
  2523.         inc     dword [ebp-4]
  2524.         inc     eax
  2525.         mov     [ebp-0x34],eax
  2526.         mov     eax,[ebp-4]
  2527.         cmp     eax,[ebp-0x20]
  2528.         jne     .labl_05
  2529. ;----------------------------------------------------------
  2530. .labl_07:
  2531.         mov     eax,ecx
  2532.         sub     eax,[ebp-8]
  2533.         mov     [ebp-0xC],eax
  2534.         mov     eax,[ebp-0x18]
  2535.         cmp     eax,[ebp-4]
  2536.         jnb     .labl_09
  2537. ;----------------------------------------------------------
  2538. .labl_08:
  2539.         mov     edx,[ebp-0xC]
  2540.         inc     eax
  2541.         dec     edx
  2542.         mov     [0x1AAB0+eax*4],edx
  2543.         cmp     eax,[ebp-4]
  2544.         jb      .labl_08
  2545.         mov     [ebp-0x18],eax
  2546. ;----------------------------------------------------------
  2547. .labl_09:
  2548.         mov     eax,ebx
  2549.         sub     eax,[ebp-0xC]
  2550.         cmp     [ebp-0xC],ebx
  2551.         jbe     .labl_10
  2552.         add     eax,[0x51A0C]
  2553. ;----------------------------------------------------------
  2554. .labl_10:
  2555.         lea     eax,[esi+eax*8+0x440000]
  2556.         mov     [ebp-0xC],eax
  2557.         mov     eax,[ebp-4]
  2558.         cmp     eax,[ebp-0x20]
  2559.         je      .labl_17
  2560.         mov     edx,[ebp-0x2C]
  2561.         mov     dl,[eax+edx]
  2562.         cmp     dl,[eax+edi]
  2563.         mov     eax,[ebp-8]
  2564.         jnb     .labl_11
  2565.         mov     edx,[ebp-0x10]
  2566.         mov     [edx],eax
  2567.         mov     eax,[ebp-0xC]
  2568.         mov     edx,[ebp-4]
  2569.         add     eax,4
  2570.         mov     [ebp-0x10],eax
  2571.         mov     [ebp-0x24],edx
  2572.         jmp     .labl_12
  2573. ;----------------------------------------------------------
  2574. .labl_11:
  2575.         mov     edx,[ebp-0x14]
  2576.         mov     [edx],eax
  2577.         mov     eax,[ebp-0xC]
  2578.         mov     edx,[ebp-4]
  2579.         mov     [ebp-0x14],eax
  2580.         mov     [ebp-0x30],edx
  2581. ;----------------------------------------------------------
  2582. .labl_12:
  2583.         mov     eax,[eax]
  2584.         mov     [ebp-8],eax
  2585. ;----------------------------------------------------------
  2586. .labl_13:
  2587.         cmp     eax,[ebp-0x28]
  2588.         ja      .labl_03
  2589. ;----------------------------------------------------------
  2590. .labl_14:
  2591.         mov     eax,[ebp-0x10]
  2592.         and     dword [eax],0
  2593.         mov     eax,[ebp-0x14]
  2594.         and     dword [eax],0
  2595. ;----------------------------------------------------------
  2596. .labl_15:
  2597.         mov     eax,[ebp-0x18]
  2598.         pop     edi
  2599.         pop     ebx
  2600. ;----------------------------------------------------------
  2601. .labl_16:
  2602.         pop     esi
  2603.         leave  
  2604.         ret    
  2605. ;----------------------------------------------------------
  2606. .labl_17:
  2607.         mov     eax,[ebp-0xC]
  2608.         mov     ecx,[eax]
  2609.         mov     edx,[ebp-0x10]
  2610.         mov     [edx],ecx
  2611.         mov     eax,[eax+4]
  2612.         mov     ecx,[ebp-0x14]
  2613.         mov     [ecx],eax
  2614.         jmp     .labl_15
  2615. ;*****************************************************************************
  2616.  
  2617. ;* Call: ***************************************************************
  2618. cm_pr_07:
  2619.         push    ecx
  2620.         push    ebx
  2621.         push    ebp
  2622.         push    esi
  2623.         push    edi
  2624.         xor     ebp,ebp
  2625.         mov     esi,0x1BC18
  2626.         mov     dword [esp+0x10],4
  2627. ;----------------------------------------------------------
  2628. .labl_00:
  2629.         xor     edi,edi
  2630. ;----------------------------------------------------------
  2631. .labl_01:
  2632.         mov     ebx,[0x29570]
  2633.         cmp     edi,ebx
  2634.         jnb     .labl_03
  2635.         mov     edx,edi
  2636.         call    cm_pr_17
  2637.         lea     ecx,[edi+ebp]
  2638.         inc     edi
  2639.         mov     [0x1A3B0+ecx*4],eax
  2640.         cmp     edi,0xE
  2641.         jb      .labl_01
  2642.         cmp     edi,ebx
  2643.         jnb     .labl_03
  2644.         lea     ebx,[edi+ebp]
  2645.         lea     ebx,[0x1A3B0+ebx*4]
  2646. ;----------------------------------------------------------
  2647. .labl_02:
  2648.         mov     edx,edi
  2649.         call    cm_pr_17
  2650.         mov     ecx,edi
  2651.         shr     ecx,1
  2652.         sub     ecx,5
  2653.         shl     ecx,6
  2654.         add     eax,ecx
  2655.         mov     [ebx],eax
  2656.         inc     edi
  2657.         add     ebx,4
  2658.         cmp     edi,[0x29570]
  2659.         jb      .labl_02
  2660. ;----------------------------------------------------------
  2661. .labl_03:
  2662.         add     esi,0x404
  2663.         add     ebp,0x40        ;'@'
  2664.         dec     dword [esp+0x10]
  2665.         jne     .labl_00
  2666.         pop     edi
  2667.         pop     esi
  2668.         pop     ebp
  2669.         pop     ebx
  2670.         pop     ecx
  2671.         ret    
  2672. ;***********************************************************************
  2673.  
  2674. ;* Call: ***************************************************************
  2675. cm_pr_08:
  2676.         push    ebp
  2677.         mov     ebp,esp
  2678.         sub     esp,0x24
  2679.         and     dword [ebp-0x14],0
  2680.         push    ebx
  2681.         push    esi
  2682.         push    edi
  2683.         push    4
  2684.         pop     ebx
  2685.         mov     dword [ebp-0x18],0x1B418
  2686.         mov     dword [ebp-0x10],0x1A3B0
  2687.         mov     [ebp-0x24],ebx
  2688. ;----------------------------------------------------------
  2689. .labl_00:
  2690.         mov     eax,[ebp-0x18]
  2691.         mov     esi,[ebp-0x10]
  2692.         lea     edi,[eax-0x10]
  2693.         movsd  
  2694.         movsd  
  2695.         movsd  
  2696.         movsd  
  2697.         mov     [ebp-4],ebx
  2698.         mov     [ebp-0xC],eax
  2699. ;----------------------------------------------------------
  2700. .labl_01:
  2701.         mov     esi,[ebp-4]
  2702.         mov     eax,esi
  2703.         call    cm_pr_000
  2704.         mov     edx,eax
  2705.         mov     ecx,edx
  2706.         xor     eax,eax
  2707.         inc     eax
  2708.         mov     [ebp-0x20],edx
  2709.         and     edx,eax
  2710.         shr     ecx,1
  2711.         dec     ecx
  2712.         or      edx,2
  2713.         shl     edx,cl
  2714.         xor     edi,edi
  2715.         mov     [ebp-8],eax
  2716.         mov     [ebp-0x1C],ecx
  2717.         sub     esi,edx
  2718.         test    ecx,ecx
  2719.         je      .labl_03
  2720. ;----------------------------------------------------------
  2721. .labl_02:
  2722.         mov     eax,[ebp-8]
  2723.         sub     eax,[ebp-0x20]
  2724.         mov     ecx,esi
  2725.         add     eax,edx
  2726.         mov     eax,[0x1B234+eax*4]
  2727.         and     ecx,1
  2728.         sub     eax,ecx
  2729.         mov     ebx,ecx
  2730.         neg     ebx
  2731.         xor     eax,ebx
  2732.         shr     eax,2
  2733.         and     eax,0x1FF
  2734.         add     edi,[0x51A18+eax*4]
  2735.         mov     eax,[ebp-8]
  2736.         shr     esi,1
  2737.         dec     dword [ebp-0x1C]
  2738.         lea     eax,[ecx+eax*2]
  2739.         mov     [ebp-8],eax
  2740.         jne     .labl_02
  2741.         push    4
  2742.         pop     ebx
  2743. ;----------------------------------------------------------
  2744. .labl_03:
  2745.         mov     eax,[ebp-0x20]
  2746.         mov     ecx,[ebp-0x14]
  2747.         add     ecx,eax
  2748.         mov     eax,[0x1A3B0+ecx*4]
  2749.         mov     ecx,[ebp-0xC]
  2750.         add     [ebp-0xC],ebx
  2751.         add     eax,edi
  2752.         inc     dword [ebp-4]
  2753.         cmp     dword [ebp-4],0x80      ;'€'
  2754.         mov     [ecx],eax
  2755.         jb      .labl_01
  2756.         add     dword [ebp-0x10],0x100
  2757.         add     dword [ebp-0x14],0x40   ;'@'
  2758.         add     dword [ebp-0x18],0x200
  2759.         dec     dword [ebp-0x24]
  2760.         jne     .labl_00
  2761.         pop     edi
  2762.         pop     esi
  2763.         pop     ebx
  2764.         leave  
  2765.         ret    
  2766. ;***********************************************************************
  2767.  
  2768. ;* Call: ***************************************************************
  2769. cm_pr_09:
  2770.         push    ebp
  2771.         mov     ebp,esp
  2772.         push    ecx
  2773.         push    ecx
  2774.         push    ebx
  2775.         push    esi
  2776.         xor     esi,esi
  2777.         push    edi
  2778.         mov     [ebp-8],esi
  2779. ;----------------------------------------------------------
  2780. .labl_00:
  2781.         mov     eax,[0x519E8]
  2782.         xor     edx,edx
  2783.         xor     ecx,ecx
  2784.         inc     edx
  2785.         mov     [ebp-4],eax
  2786. ;----------------------------------------------------------
  2787. .labl_01:
  2788.         mov     edi,[0x515E8+edx*4]
  2789.         mov     eax,esi
  2790.         and     eax,1
  2791.         sub     edi,eax
  2792.         mov     ebx,eax
  2793.         neg     ebx
  2794.         xor     edi,ebx
  2795.         shr     edi,2
  2796.         and     edi,0x1FF
  2797.         add     ecx,[0x51A18+edi*4]
  2798.         shr     esi,1
  2799.         dec     dword [ebp-4]
  2800.         lea     edx,[eax+edx*2]
  2801.         jne     .labl_01
  2802.         mov     esi,[ebp-8]
  2803.         push    0x10
  2804.         mov     [0x51578+esi*4],ecx
  2805.         inc     esi
  2806.         pop     eax
  2807.         mov     [ebp-8],esi
  2808.         cmp     esi,eax
  2809.         jb      .labl_00
  2810.         pop     edi
  2811.         pop     esi
  2812.         mov     [0x1B230],eax
  2813.         pop     ebx
  2814.         leave  
  2815.         ret    
  2816. ;***********************************************************************
  2817.  
  2818. ;* Call: ***************************************************************
  2819. cm_pr_10:
  2820.         movzx   eax,al
  2821.         mov     edx,[0x1CC38+eax*4]
  2822.         mov     ecx,eax
  2823.         shl     ecx,4
  2824.         add     ecx,[esp+4]
  2825.         shr     edx,2
  2826.         mov     ecx,[0x1A7B0+ecx*4]
  2827.         shr     ecx,2
  2828.         mov     eax,[0x51A18+ecx*4]
  2829.         add     eax,[0x51A18+edx*4]
  2830.         ret     4
  2831. ;***********************************************************************
  2832.  
  2833. ;* Call: ***************************************************************
  2834. cm_pr_11:
  2835.         movzx   ecx,byte [esp+4]
  2836.         shl     eax,4
  2837.         add     eax,[esp+8]
  2838.         push    esi
  2839.         mov     eax,[0x25074+eax*4]
  2840.         mov     esi,0x800
  2841.         test    edx,edx
  2842.         jne     .labl_00
  2843.         mov     edx,ecx
  2844.         mov     ecx,[0x1CC38+ecx*4]
  2845.         shl     edx,4
  2846.         add     edx,[esp+0xC]
  2847.         sub     esi,[0x1A7B0+edx*4]
  2848.         shr     ecx,2
  2849.         jmp     .labl_02
  2850. ;----------------------------------------------------------
  2851. .labl_00:
  2852.         push    edi
  2853.         shl     ecx,2
  2854.         mov     edi,esi
  2855.         sub     edi,[ecx+0x1CC38]
  2856.         shr     edi,2
  2857.         add     eax,[0x51A18+edi*4]
  2858.         pop     edi
  2859.         cmp     edx,1
  2860.         jne     .labl_01
  2861.         mov     ecx,[ecx+0x1AF00]
  2862.         shr     ecx,2
  2863.         add     eax,[0x51A18+ecx*4]
  2864.         jmp     .labl_03
  2865. ;----------------------------------------------------------
  2866. .labl_01:
  2867.         sub     esi,[ecx+0x1AF00]
  2868.         mov     ecx,[ecx+0x29538]
  2869.         add     edx,0xFFFFFFFE
  2870.         sub     ecx,edx
  2871.         neg     edx
  2872.         xor     ecx,edx
  2873.         shr     ecx,2
  2874.         and     ecx,0x1FF
  2875. ;----------------------------------------------------------
  2876. .labl_02:
  2877.         shr     esi,2
  2878.         mov     edx,[0x51A18+esi*4]
  2879.         add     edx,[0x51A18+ecx*4]
  2880.         add     eax,edx
  2881. ;----------------------------------------------------------
  2882. .labl_03:
  2883.         pop     esi
  2884.         ret     8
  2885. ;***********************************************************************
  2886.  
  2887. ;* Call: ***************************************************************
  2888. cm_pr_12:
  2889.         push    esi
  2890.         mov     esi,eax
  2891.         mov     ecx,0x80        ;'€'
  2892.         cmp     esi,2
  2893.         jne     .labl_00
  2894.         cmp     edx,ecx
  2895.         jb      .labl_01
  2896.         mov     eax,0x0FFFFFFF
  2897.         jmp     .labl_09
  2898. ;----------------------------------------------------------
  2899. .labl_00:
  2900.         cmp     esi,6
  2901.         jnb     .labl_02
  2902. ;----------------------------------------------------------
  2903. .labl_01:
  2904.         lea     eax,[esi-2]
  2905.         jmp     .labl_03
  2906. ;----------------------------------------------------------
  2907. .labl_02:
  2908.         push    3
  2909.         pop     eax
  2910. ;----------------------------------------------------------
  2911. .labl_03:
  2912.         cmp     edx,ecx
  2913.         jnb     .labl_04
  2914.         shl     eax,7
  2915.         add     eax,edx
  2916.         mov     ecx,[0x1B408+eax*4]
  2917.         jmp     .labl_08
  2918. ;----------------------------------------------------------
  2919. .labl_04:
  2920.         mov     ecx,edx
  2921.         cmp     edx,0x10000
  2922.         jnb     .labl_05
  2923.         shr     ecx,6
  2924.         movzx   ecx,byte [ecx+0x19FB0]
  2925.         add     ecx,0xC
  2926.         jmp     .labl_07
  2927. ;----------------------------------------------------------
  2928. .labl_05:
  2929.         cmp     edx,0x2000000
  2930.         jnb     .labl_06
  2931.         shr     ecx,0xF
  2932.         movzx   ecx,byte [ecx+0x19FB0]
  2933.         add     ecx,0x1E
  2934.         jmp     .labl_07
  2935. ;----------------------------------------------------------
  2936. .labl_06:
  2937.         shr     ecx,0x18
  2938.         movzx   ecx,byte [ecx+0x19FB0]
  2939.         add     ecx,0x30        ;'0'
  2940. ;----------------------------------------------------------
  2941. .labl_07:
  2942.         shl     eax,6
  2943.         add     eax,ecx
  2944.         mov     ecx,[0x1A3B0+eax*4]
  2945.         and     edx,0xF
  2946.         add     ecx,[0x51578+edx*4]
  2947. ;----------------------------------------------------------
  2948. .labl_08:
  2949.         shl     esi,4
  2950.         add     esi,[esp+8]
  2951.         mov     eax,[0x15AE4+esi*4]
  2952.         add     eax,ecx
  2953. ;----------------------------------------------------------
  2954. .labl_09:
  2955.         pop     esi
  2956.         ret     4
  2957. ;***********************************************************************
  2958.  
  2959. ;* Call: ***************************************************************
  2960. cm_pr_13:
  2961.         push    ecx
  2962.         push    ecx
  2963.         mov     eax,[0x51A10]
  2964.         push    esi
  2965.         mov     esi,[0x51A14]
  2966.         cmp     eax,0xFF000000
  2967.         jb      .labl_00
  2968.         test    esi,esi
  2969.         je      .labl_02
  2970. ;----------------------------------------------------------
  2971. .labl_00:
  2972.         mov     cl,[0x519ED]
  2973.         and     dword [esp+8],0
  2974.         mov     edx,esi
  2975.         push    ebx
  2976. ;----------------------------------------------------------
  2977. .labl_01:
  2978.         mov     bl,dl
  2979.         add     bl,cl
  2980.         mov     ecx,[0x52634]
  2981.         inc     dword [0x52634]
  2982.         mov     [ecx],bl
  2983.         or      cl,0xFF
  2984.         dec     dword [0x51A08]
  2985.         jne     .labl_01
  2986.         mov     cl,[0x51A13]
  2987.         mov     [0x519ED],cl
  2988.         pop     ebx
  2989. ;----------------------------------------------------------
  2990. .labl_02:
  2991.         inc     dword [0x51A08]
  2992.         shl     eax,8
  2993.         and     dword [0x51A14],0
  2994.         mov     [0x51A10],eax
  2995.         pop     esi
  2996.         pop     ecx
  2997.         pop     ecx
  2998.         ret    
  2999. ;***********************************************************************
  3000.  
  3001. ;* Call: ***************************************************************
  3002. cm_pr_14:
  3003.         mov     ecx,[0x51A04]
  3004.         mov     eax,[edx]
  3005.         shr     ecx,0xB
  3006.         imul    ecx,eax
  3007.         cmp     dword [esp+4],0
  3008.         jne     .labl_00
  3009.         mov     [0x51A04],ecx
  3010.         mov     ecx,0x800
  3011.         sub     ecx,eax
  3012.         shr     ecx,5
  3013.         add     ecx,eax
  3014.         mov     [edx],ecx
  3015.         jmp     .labl_01
  3016. ;----------------------------------------------------------
  3017. .labl_00:
  3018.         add     [0x51A10],ecx
  3019.         adc     dword [0x51A14],0
  3020.         sub     [0x51A04],ecx
  3021.         mov     ecx,eax
  3022.         shr     ecx,5
  3023.         sub     eax,ecx
  3024.         mov     [edx],eax
  3025. ;----------------------------------------------------------
  3026. .labl_01:
  3027.         cmp     dword [0x51A04],0x1000000
  3028.         jnb     .labl_02
  3029.         shl     dword [0x51A04],8
  3030.         call    cm_pr_13
  3031. ;----------------------------------------------------------
  3032. .labl_02:
  3033.         ret     4
  3034. ;***********************************************************************
  3035.  
  3036. ;* Call: ***************************************************************
  3037. cm_pr_15:
  3038.         xor     edx,edx
  3039.         inc     edx
  3040.         shl     edx,cl
  3041.         mov     [eax+0x400],ecx
  3042.         lea     ecx,[edx-1]
  3043.         test    ecx,ecx
  3044.         jbe     .labl_00
  3045.         push    edi
  3046.         lea     edi,[eax+4]
  3047.         mov     eax,0x400
  3048.         rep     stosd  
  3049.         pop     edi
  3050. ;----------------------------------------------------------
  3051. .labl_00:
  3052.         ret    
  3053. ;***********************************************************************
  3054.  
  3055. ;* Call: ***************************************************************
  3056. cm_pr_16:
  3057.         mov     eax,[esp+4]
  3058.         push    ebx
  3059.         mov     ebx,[edi+0x400]
  3060.         push    esi
  3061.         xor     esi,esi
  3062.         inc     esi
  3063.         add     eax,eax
  3064.         mov     [esp+0xC],eax
  3065. ;----------------------------------------------------------
  3066. .labl_00:
  3067.         mov     eax,[esp+0xC]
  3068.         mov     ecx,ebx
  3069.         shr     eax,cl
  3070.         lea     edx,[edi+esi*4]
  3071.         and     eax,1
  3072.         push    eax
  3073.         lea     esi,[eax+esi*2]
  3074.         call    cm_pr_14
  3075.         dec     ebx
  3076.         jne     .labl_00
  3077.         pop     esi
  3078.         pop     ebx
  3079.         ret     4
  3080. ;***********************************************************************
  3081.  
  3082. ;* Call: ***************************************************************
  3083. cm_pr_17:
  3084.         mov     ecx,[esi+0x400]
  3085.         push    edi
  3086.         xor     edi,edi
  3087.         inc     edi
  3088.         shl     edi,cl
  3089.         xor     eax,eax
  3090.         or      edx,edi
  3091. ;----------------------------------------------------------
  3092. .labl_00:
  3093.         mov     ecx,edx
  3094.         shr     edx,1
  3095.         mov     edi,[esi+edx*4]
  3096.         and     ecx,1
  3097.         sub     edi,ecx
  3098.         neg     ecx
  3099.         xor     edi,ecx
  3100.         shr     edi,2
  3101.         and     edi,0x1FF
  3102.         add     eax,[0x51A18+edi*4]
  3103.         cmp     edx,1
  3104.         jne     .labl_00
  3105.         pop     edi
  3106.         ret    
  3107. ;***********************************************************************
  3108.  
  3109. ;* Call: ***************************************************************
  3110. cm_pr_18:
  3111.         mov     ecx,[0x52630]
  3112.         push    edi
  3113.         mov     edi,eax
  3114.         mov     eax,[0x5262C]
  3115.         sub     ecx,eax
  3116.         sub     ecx,[esp+8]
  3117.         cmp     edi,ecx
  3118.         jbe     .labl_00
  3119.         mov     edi,ecx
  3120. ;----------------------------------------------------------
  3121. .labl_00:
  3122.         mov     ecx,[0x52628]
  3123.         inc     dword [esp+0xC]
  3124.         add     ecx,eax
  3125.         add     ecx,[esp+8]
  3126.         xor     eax,eax
  3127.         test    edi,edi
  3128.         jbe     .labl_03
  3129.         push    esi
  3130.         mov     esi,ecx
  3131.         sub     esi,[esp+0x10]
  3132. ;----------------------------------------------------------
  3133. .labl_01:
  3134.         mov     dl,[eax+ecx]
  3135.         cmp     dl,[esi+eax]
  3136.         jne     .labl_02
  3137.         inc     eax
  3138.         cmp     eax,edi
  3139.         jb      .labl_01
  3140. ;----------------------------------------------------------
  3141. .labl_02:
  3142.         pop     esi
  3143. ;----------------------------------------------------------
  3144. .labl_03:
  3145.         pop     edi
  3146.         ret     8
  3147. ;***********************************************************************
  3148.  
  3149. ;* Call: ***************************************************************
  3150. cm_pr_19:
  3151.         inc     dword [0x5221C]
  3152.         mov     eax,[0x5221C]
  3153.         cmp     eax,[0x51A0C]
  3154.         jne     .labl_00
  3155.         and     dword [0x5221C],0
  3156. ;----------------------------------------------------------
  3157. .labl_00:
  3158.         inc     dword [0x5262C]
  3159.         ret    
  3160. ;***********************************************************************
  3161.