home bbs files messages ]

Forums before death by AOL, social media and spammers... "We can't have nice things"

   comp.lang.asm.x86      Ahh, the lost art of x86 assembly      4,675 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 2,807 of 4,675   
   wolfgang kern to All   
   Re: BASE64 again   
   13 Jul 17 13:04:38   
   
   From: nowhere@never.at   
      
   Hi Kerr, here is my current direct 4:3 SMC skelleton:   
      
   it can use dh,dl,dx,ah (78,62,7862,A1) for either sub or xor   
   three-byte modifiers.   
      
   100 pop cx   
   101 push cx   
   102 push cx        ;ax=0   
   103 push byte 3e   ;cx=003e  62 byte for now :(   
   105 push 7862      ;dx=7862   
   108 pop ax   
   109 push ax   
   10a xor ax,7962   
   10d push ax        ;bx=0100   
   10e push cx  dup2  ;sp,bp=0   
   110 xor al,7e      ;   
   112 push ax        ;si=017e   
   113 push byte 042  ;di=0042   
   115 popa           ;   
   116 push BX        ;for ret   
   117 push DI        ;for ret   
   118 sub ax,5e73    ;->a18d xor 6666 = EB C7 (AH wont be altered)   
   11b xor [bx+58],ax ;back-branch to 0121   
   11e push bx        ;later popped as di   
   11f jnc 0142       ;=jmp always after xor (73 21)   
      
   121 lodsb          ;AC=24-78   
   122 cmp al,21      ;   
   124 jc 121         ;skip 72 FB  ACFB=255d-7862   
   126 lodsb          ;AC   
   127 cmp al,41      ;twice to avoid dec SI inbetween   
   129 jnz 126        ;skip 75 FB  AAFB=235d-7862   
   12b stosb          ;AA   
   12c loop 126       ;E2 F8       F8E2=7144-7862   
   12e sub [bp+..],dx ;1.   
   131 sub [bb+..],dx ;2.   
   134 sub [bp+..],dx ;3.   
   137 sub [bp+..],dx ;4.   
   13a sub [bp+..],dx ;5.   
   13b pop di         ;=0100   
   13e jnz 015a       ;=jmp always 75 1a 1A=62 xor 78   
   140 0d 0a   
      
   142 36 36   
   144 xor al,2b      ;8d xor 2b =A6 ,xor 65 =C3   
   146 sub [bx+21],dh ;   
   149 sub [bx+25],dx ;   
   14c sub [bx+2a],dx ;   
   14f sub [bx+2c],dx ;   
   152 xor [bx+3f],dh ;   
   155 xor [bx+7e],al ;create RET   
   158 6666 jmp 121   ;becomes EB C7   
      
   15a 6666           ;slide nops   
   15c sub [bp+..],dl ;6.   
   15f sub [bp+..],dl ;7.   
   162 sub [bp+..],dl ;8.   
   165 sub [bp+..],dx ;9.   
   168 sub [bp+..],dx ;10.   
   16b sub [bp+..],dx ;11.   
   17e sub [bb+..],dh ;12.   
   171 sub [bp+..],dx ;13.   
   174 sub [bp+..],dx ;14.   
   177 sub [bp+..],dx ;15.   
   17a xor [bp+..],ah ;16. ie: if required, 80 = 21 xor A1   
   17d 656565         ;the return goes here   
   180 4141           ;41 is my first but I it twice   
   182 0d0a           ;   
   184 4141415555 ..  ;the raw string continues here followed by crlf   
   1c3 74...          ;B64-string 29 byte   
   1e0 ***            ;Total= 224   
      
   If I use your 44 byte decoder here it may show a total of 206 or even   
   less. Let's see if this is possible ...   
   __   
   wolfgang   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca