Advertisement
ontryit

ASMUnit

Mar 16th, 2019
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 15.65 KB | None | 0 0
  1. unit AsmUnit;
  2.  
  3. interface
  4.   procedure sub_100010E8;
  5.  
  6. implementation
  7.  
  8. const
  9.   a0123456789ab_0: AnsiString = '0123456789ABCDEFGHJKMNPRSTUVWXYZ';
  10.  
  11. procedure sub_10001193;
  12. asm
  13.                 mov     eax, [esp+8]
  14.                 push    esi
  15.                 lea     esi, [eax-1]
  16.                 test    esi, esi
  17.                 jl      @loc_10001203
  18.                 push    ebx
  19.                 push    edi
  20.                 mov     edi, [esp+0Ch+4]
  21.  
  22. @loc_100011A5:
  23.                 mov     eax, esi
  24.                 push    8
  25.                 cdq
  26.                 pop     ecx
  27.                 idiv    ecx
  28.                 push    1
  29.                 mov     eax, esi
  30.                 pop     ebx
  31.                 push    8
  32.                 mov     ecx, edx
  33.                 shl     ebx, cl
  34.                 cdq
  35.                 pop     ecx
  36.                 idiv    ecx
  37.                 push    5
  38.                 pop     ecx
  39.                 movsx   eax, byte ptr [eax+edi]
  40.                 test    eax, ebx
  41.                 mov     eax, esi
  42.                 cdq
  43.                 jz      @loc_100011DF
  44.                 idiv    ecx
  45.                 mov     eax, esi
  46.                 mov     ebx, edx
  47.                 cdq
  48.                 idiv    ecx
  49.                 mov     dl, 1
  50.                 mov     ecx, ebx
  51.                 shl     dl, cl
  52.                 add     eax, edi
  53.                 or      [eax], dl
  54.                 jmp     @loc_100011F7
  55.  
  56. @loc_100011DF:
  57.                 idiv    ecx
  58.                 mov     eax, esi
  59.                 push    5
  60.                 pop     ecx
  61.                 mov     ebx, edx
  62.                 cdq
  63.                 idiv    ecx
  64.                 mov     dl, 1
  65.                 mov     ecx, ebx
  66.                 shl     dl, cl
  67.                 not     dl
  68.                 add     eax, edi
  69.                 and     [eax], dl
  70.  
  71. @loc_100011F7:
  72.                 test    ebx, ebx
  73.                 jnz     @loc_100011FE
  74.                 and     byte ptr [eax], 1Fh
  75.  
  76. @loc_100011FE:
  77.                 dec     esi
  78.                 jns     @loc_100011A5
  79.                 pop     edi
  80.                 pop     ebx
  81.  
  82. @loc_10001203:
  83.                 pop     esi
  84.                 retn
  85. end;
  86.  
  87. procedure sub_100013EE;
  88. asm
  89.                 mov     ecx, [esp+4]
  90.                 movzx   eax, byte ptr [ecx+3]
  91.                 movzx   edx, byte ptr [ecx+2]
  92.                 shl     eax, 8
  93.                 add     eax, edx
  94.                 movzx   edx, byte ptr [ecx+1]
  95.                 movzx   ecx, byte ptr [ecx]
  96.                 shl     eax, 8
  97.                 add     eax, edx
  98.                 shl     eax, 8
  99.                 add     eax, ecx
  100.                 retn
  101. end;
  102.  
  103. procedure sub_1000136E;
  104. asm
  105.                 push    ebp
  106.                 mov     ebp, esp
  107.                 sub     esp, 10h
  108.                 mov     eax, [ebp+0Ch]
  109.                 push    esi
  110.                 mov     esi, [ebp+8]
  111.                 push    edi
  112.                 mov     edi, [eax+4]
  113.                 and     [ebp+8], 0
  114.                 mov     ecx, [esi]
  115.                 mov     edx, [esi+4]
  116.                 mov     [ebp-8], edi
  117.                 mov     edi, [eax]
  118.                 mov     [ebp-4], edi
  119.                 mov     edi, [eax+0Ch]
  120.                 mov     eax, [eax+8]
  121.                 mov     [ebp-10h], edi
  122.                 mov     [ebp-0Ch], eax
  123.                 mov     [ebp+0Ch], 20h
  124.  
  125. @loc_100013A3:
  126.                 sub     [ebp+8], 61C88647h
  127.                 mov     eax, edx
  128.                 mov     edi, edx
  129.                 shl     eax, 4
  130.                 add     eax, [ebp-4]
  131.                 shr     edi, 5
  132.                 add     edi, [ebp-8]
  133.                 xor     eax, edi
  134.                 mov     edi, [ebp+8]
  135.                 add     edi, edx
  136.                 xor     eax, edi
  137.                 add     ecx, eax
  138.                 mov     eax, ecx
  139.                 mov     edi, ecx
  140.                 shl     eax, 4
  141.                 add     eax, [ebp-0Ch]
  142.                 shr     edi, 5
  143.                 add     edi, [ebp-10h]
  144.                 xor     eax, edi
  145.                 mov     edi, [ebp+8]
  146.                 add     edi, ecx
  147.                 xor     eax, edi
  148.                 add     edx, eax
  149.                 dec     [ebp+0Ch]
  150.                 jnz     @loc_100013A3
  151.                 mov     [esi], ecx
  152.                 mov     [esi+4], edx
  153.                 pop     edi
  154.                 pop     esi
  155.                 leave
  156.                 retn
  157. end;
  158.  
  159. procedure sub_10001411;
  160. asm
  161.                 mov     eax, [esp+4]
  162.                 mov     ecx, [esp+8]
  163.                 mov     edx, eax
  164.                 shr     edx, 8
  165.                 mov     [ecx+1], dl
  166.                 mov     edx, eax
  167.                 mov     [ecx], al
  168.                 shr     edx, 10h
  169.                 shr     eax, 18h
  170.                 mov     [ecx+2], dl
  171.                 mov     [ecx+3], al
  172.                 retn
  173. end;
  174.  
  175. procedure sub_10001499;
  176. asm
  177.  
  178.                 mov     cl, [esp+4]
  179.                 cmp     cl, 61h
  180.                 jl      @loc_100014AA
  181.                 cmp     cl, 7Ah
  182.                 jg      @loc_100014AA
  183.                 add     cl, 0E0h
  184.  
  185. @loc_100014AA:
  186.                 cmp     cl, 49h
  187.                 jnz     @loc_100014B2
  188.                 add     cl, 0E8h
  189.  
  190. @loc_100014B2:
  191.                 cmp     cl, 4Ch
  192.                 jnz     @loc_100014BA
  193.                 add     cl, 0E5h
  194.  
  195. @loc_100014BA:
  196.                 cmp     cl, 4Fh
  197.                 jnz     @loc_100014C2
  198.                 add     cl, 0E1h
  199.  
  200. @loc_100014C2:
  201.                 cmp     cl, 51h
  202.                 jnz     @loc_100014CA
  203.                 add     cl, 0DFh
  204.  
  205. @loc_100014CA:
  206.                 xor     eax, eax
  207.  
  208. @loc_100014CC:
  209.                 mov     edx, a0123456789ab_0
  210.                 cmp     cl, [edx+eax]
  211.                 jz      @locret_100014DF
  212.                 inc     eax
  213.                 cmp     eax, 20h
  214.                 jl      @loc_100014CC
  215.                 or      al, 0FFh
  216.  
  217. @locret_100014DF:
  218.                 retn
  219. end;
  220.  
  221. procedure sub_100012F2;
  222. asm
  223.                 push    ebp
  224.                 mov     ebp, esp
  225.                 sub     esp, 18h
  226.                 push    ebx
  227.                 mov     ebx, [ebp+8]
  228.                 push    esi
  229.                 push    edi
  230.                 lea     eax, [ebp-8]
  231.                 push    2
  232.                 lea     esi, [ebp-8]
  233.                 sub     ebx, eax
  234.                 pop     edi
  235.  
  236. @loc_10001309:
  237.                 lea     eax, [ebx+esi]
  238.                 push    eax
  239.                 call    sub_100013EE
  240.                 mov     [esi], eax
  241.                 add     esi, 4
  242.                 dec     edi
  243.                 pop     ecx
  244.                 jnz     @loc_10001309
  245.                 mov     edi, [ebp+0Ch]
  246.                 lea     eax, [ebp-18h]
  247.                 lea     esi, [ebp-18h]
  248.                 sub     edi, eax
  249.                 mov     [ebp+8], 4
  250.  
  251. @loc_1000132D:
  252.                 lea     eax, [edi+esi]
  253.                 push    eax
  254.                 call    sub_100013EE
  255.                 mov     [esi], eax
  256.                 add     esi, 4
  257.                 dec     [ebp+8]
  258.                 pop     ecx
  259.                 jnz     @loc_1000132D
  260.                 lea     eax, [ebp-18h]
  261.                 push    eax
  262.                 lea     eax, [ebp-8]
  263.                 push    eax
  264.                 call    sub_1000136E
  265.                 pop     ecx
  266.                 lea     esi, [ebp-8]
  267.                 pop     ecx
  268.                 push    2
  269.                 pop     edi
  270.  
  271. @loc_10001356:
  272.                 lea     eax, [esi+ebx]
  273.                 push    eax
  274.                 push    dword ptr [esi]
  275.                 call    sub_10001411
  276.                 pop     ecx
  277.                 add     esi, 4
  278.                 dec     edi
  279.                 pop     ecx
  280.                 jnz     @loc_10001356
  281.                 pop     edi
  282.                 pop     esi
  283.                 pop     ebx
  284.                 leave
  285.                 retn
  286. end;
  287.  
  288. procedure sub_10001432;
  289. asm
  290.                 push    ebx
  291.                 push    ebp
  292.                 push    esi
  293.                 mov     esi, [esp+0Ch+4]
  294.                 xor     ebx, ebx
  295.                 xor     ebp, ebp
  296.                 cmp     byte ptr [esi], 0
  297.                 jz      @loc_10001476
  298.  
  299. @loc_10001442:
  300.                 mov     al, [esi+ebp]
  301.                 push    eax
  302.                 call    sub_10001499
  303.                 movsx   eax, al
  304.                 cmp     eax, 0FFFFFFFFh
  305.                 pop     ecx
  306.                 jz      @loc_1000146B
  307.                 movzx   eax, al
  308.                 push    20h
  309.                 cdq
  310.                 pop     ecx
  311.                 idiv    ecx
  312.                 mov     eax, a0123456789ab_0
  313.                 mov     al, [edx+eax]
  314.                 mov     [ebx+esi], al
  315.                 inc     ebx
  316.                 jmp     @loc_1000146F
  317.  
  318. @loc_1000146B:
  319.                 and     byte ptr [esi+ebp], 0
  320.  
  321. @loc_1000146F:
  322.                 inc     ebp
  323.                 cmp     byte ptr [esi+ebp], 0
  324.                 jnz     @loc_10001442
  325.  
  326. @loc_10001476:
  327.                 cmp     ebx, ebp
  328.                 jnb     @loc_10001493
  329.                 mov     ecx, ebp
  330.                 push    edi
  331.                 sub     ecx, ebx
  332.                 lea     edi, [ebx+esi]
  333.                 mov     edx, ecx
  334.                 xor     eax, eax
  335.                 shr     ecx, 2
  336.                 rep stosd
  337.                 mov     ecx, edx
  338.                 and     ecx, 3
  339.                 rep stosb
  340.                 pop     edi
  341.  
  342. @loc_10001493:
  343.                 pop     esi
  344.                 mov     eax, ebx
  345.                 pop     ebp
  346.                 pop     ebx
  347.                 retn
  348. end;
  349.  
  350. procedure sub_10001205;
  351. asm
  352.                 push    ebp
  353.                 mov     ebp, esp
  354.                 sub     esp, 130h
  355.                 mov     ecx, [ebp+8]
  356.                 push    ebx
  357.                 push    esi
  358.                 mov     esi, [ebp+10h]
  359.                 push    edi
  360.                 xor     edi, edi
  361.                 lea     eax, [ebp-130h]
  362.                 mov     [esi+4], edi
  363.                 mov     [esi], edi
  364.                 sub     eax, ecx
  365.                 mov     ebx, 12Ch
  366.  
  367. @loc_1000122B:
  368.                 mov     dl, [ecx]
  369.                 test    dl, dl
  370.                 jz      @loc_1000123A
  371.                 mov     [eax+ecx], dl
  372.                 inc     edi
  373.                 inc     ecx
  374.                 cmp     edi, ebx
  375.                 jb      @loc_1000122B
  376.  
  377. @loc_1000123A:
  378.                 and     [ebp+edi-130h], 0
  379.                 lea     eax, [ebp-130h]
  380.                 push    eax
  381.                 call    sub_10001432
  382.                 mov     edi, eax
  383.                 pop     ecx
  384.                 test    edi, edi
  385.                 jz      @loc_100012EB
  386.                 mov     edx, [ebp+0Ch]
  387.                 cmp     byte ptr [edx], 0
  388.                 jz      @loc_1000129F
  389.                 mov     [ebp+edi-130h], 2Ah
  390.                 inc     edi
  391.                 cmp     edi, ebx
  392.                 mov     eax, edi
  393.                 jnb     @loc_10001287
  394.  
  395. @loc_10001270:
  396.                 mov     ecx, eax
  397.                 sub     ecx, edi
  398.                 mov     cl, [ecx+edx]
  399.                 test    cl, cl
  400.                 jz      @loc_10001287
  401.                 mov     [ebp+eax-130h], cl
  402.                 inc     eax
  403.                 cmp     eax, ebx
  404.                 jb      @loc_10001270
  405.  
  406. @loc_10001287:
  407.                 and     [ebp+eax-130h], 0
  408.                 lea     eax, [ebp+edi-130h]
  409.                 push    eax
  410.                 call    sub_10001432
  411.                 pop     ecx
  412.                 add     edi, eax
  413.  
  414. @loc_1000129F:
  415.                 mov     eax, edi
  416.                 push    8
  417.                 cdq
  418.                 pop     ebx
  419.  
  420. @loc_100012A5:
  421.                 mov     ecx, ebx
  422.                 idiv    ecx
  423.                 test    edx, edx
  424.                 jz      @loc_100012BB
  425.                 and     [ebp+edi-130h], 0
  426.                 inc     edi
  427.                 mov     eax, edi
  428.                 cdq
  429.                 jmp     @loc_100012A5
  430.  
  431. @loc_100012BB:
  432.                 mov     eax, edi
  433.                 mov     ecx, ebx
  434.                 cdq
  435.                 idiv    ecx
  436.                 test    eax, eax
  437.                 jle     @loc_100012EB
  438.                 lea     edi, [ebp-130h]
  439.                 mov     [ebp+10h], eax
  440.  
  441. @loc_100012CF:
  442.                 mov     eax, [edi]
  443.                 push    [ebp+14h]
  444.                 xor     [esi], eax
  445.                 mov     eax, [edi+4]
  446.                 xor     [esi+4], eax
  447.                 push    esi
  448.                 call    sub_100012F2
  449.                 pop     ecx
  450.                 add     edi, ebx
  451.                 dec     [ebp+10h]
  452.                 pop     ecx
  453.                 jnz     @loc_100012CF
  454.  
  455. @loc_100012EB:
  456.                 mov     eax, esi
  457.                 pop     edi
  458.                 pop     esi
  459.                 pop     ebx
  460.                 leave
  461.                 retn
  462. end;
  463.  
  464. procedure sub_10001123;
  465. asm
  466.                 push    esi
  467.                 mov     esi, [esp+4+8]
  468.                 push    edi
  469.                 mov     eax, esi
  470.                 push    5
  471.                 mov     edi, [esp+0Ch+4]
  472.                 cdq
  473.                 pop     ecx
  474.                 idiv    ecx
  475.                 test    edx, edx
  476.                 jz      @loc_1000114A
  477.  
  478. @loc_10001139:
  479.                 and     byte ptr [edi+esi], 0
  480.                 inc     esi
  481.                 mov     eax, esi
  482.                 push    5
  483.                 cdq
  484.                 pop     ecx
  485.                 idiv    ecx
  486.                 test    edx, edx
  487.                 jnz     @loc_10001139
  488.  
  489. @loc_1000114A:
  490.                 and     byte ptr [edi+esi], 0
  491.                 mov     eax, esi
  492.                 shl     eax, 3
  493.                 push    eax
  494.                 push    edi
  495.                 call    sub_10001193
  496.                 pop     ecx
  497.                 mov     eax, esi
  498.                 pop     ecx
  499.                 push    5
  500.                 cdq
  501.                 pop     ecx
  502.                 idiv    ecx
  503.                 push    0
  504.                 pop     esi
  505.                 mov     ecx, eax
  506.                 shl     ecx, 3
  507.                 jz      @loc_1000118A
  508.                 push    ebx
  509.  
  510. @loc_1000116F:
  511.                 movzx   eax, byte ptr [esi+edi]
  512.                 push    20h
  513.                 cdq
  514.                 pop     ebx
  515.                 idiv    ebx
  516.                 mov     eax, a0123456789ab_0
  517.                 mov     al, [edx+eax]
  518.                 mov     [esi+edi], al
  519.                 inc     esi
  520.                 cmp     esi, ecx
  521.                 jb      @loc_1000116F
  522.                 pop     ebx
  523.  
  524. @loc_1000118A:
  525.                 and     byte ptr [ecx+edi], 0
  526.                 pop     edi
  527.                 mov     eax, ecx
  528.                 pop     esi
  529.                 retn
  530. end;
  531.  
  532. procedure sub_100010E8;
  533. asm
  534.                 push    ebp
  535.                 mov     ebp, esp
  536.                 sub     esp, 18h
  537.                 push    esi
  538.                 push    edi
  539.                 push    [ebp+14h]
  540.                 lea     eax, [ebp-18h]
  541.                 push    eax
  542.                 push    [ebp+0Ch]
  543.                 push    [ebp+8]
  544.                 call    sub_10001205
  545.                 lea     eax, [ebp-18h]
  546.                 push    8
  547.                 push    eax
  548.                 call    sub_10001123
  549.                 mov     eax, [ebp+10h]
  550.                 lea     esi, [ebp-18h]
  551.                 mov     edi, eax
  552.                 add     esp, 18h
  553.                 movsd
  554.                 movsd
  555.                 movsd
  556.                 and     byte ptr [eax+0Ch], 0
  557.                 pop     edi
  558.                 pop     esi
  559.                 leave
  560.                 retn
  561. end;
  562.  
  563. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement