C:\Users\Oliver\Desktop\bin1.txt C:\Users\Oliver\Desktop\bin2.txt
seg000          segment byte public 'CODE' use32 seg000          segment byte public 'CODE' use32
               assume cs:seg000                assume cs:seg000
               ;org 1000000h                ;org 1000000h
               assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing                assume es:nothing, ss:nothing, ds:nothing, fs:nothing, gs:nothing
               jmp     short start                jmp     short start
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
               dd 0A3BFC2AFh                dd 0A3BFC2AFh
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
   
start:                                  ; CODE XREF: seg000:01000000 18j start:                                  ; CODE XREF: seg000:01000000 18j
               sub     esp, 100h                sub     esp, 100h
               xor     ecx, ecx                xor     ecx, ecx
   
prefill_loop:                           ; CODE XREF: seg000:01000013 19j prefill_loop:                           ; CODE XREF: seg000:01000013 19j
               mov     [esp+ecx], cl                mov     [esp+ecx], cl
               inc     cl                inc     cl
               jnz     short prefill_loop                jnz     short prefill_loop
               xor     eax, eax                xor     eax, eax
               mov     edx, 0DEADBEEFh                mov     edx, 0DEADBEEFh
   
magicfill_loop:                         ; CODE XREF: seg000:01000032 19j magicfill_loop:                         ; CODE XREF: seg000:01000032 19j
               add     al, [esp+ecx]                add     al, [esp+ecx]
               add     al, dl                add     al, dl
               ror     edx, 8                ror     edx, 8
               mov     bl, [esp+ecx]                mov     bl, [esp+ecx]
               mov     bh, [esp+eax]                mov     bh, [esp+eax]
               mov     [esp+eax], bl                mov     [esp+eax], bl
               mov     [esp+ecx], bh                mov     [esp+ecx], bh
               inc     cl                inc     cl
               jnz     short magicfill_loop                jnz     short magicfill_loop
               jmp     call_func                jmp     call_func
   
; =============== S U B R O U T I N E ======================================= ; =============== S U B R O U T I N E =======================================
   
; Attributes: noreturn ; Attributes: noreturn
   
func            proc near               ; CODE XREF: seg000:01000097 19p func            proc near               ; CODE XREF: seg000:01000097 19p
               mov     ebx, esp                mov     ebx, esp
               add     ebx, 4                add     ebx, 4
               pop     esp                pop     esp
               pop     eax                pop     eax
               cmp     eax, 'AAAA'                cmp     eax, 'AAAA'
               jnz     short sysexit                jnz     short sysexit
               dec     eax                pop     eax
               cmp     eax, 'BBBB'                cmp     eax, 'BBBB'
               jnz     short sysexit                jnz     short sysexit
               pop     edx                pop     edx
               mov     ecx, edx                mov     ecx, edx
               mov     esi, esp                mov     esi, esp
               mov     edi, ebx                mov     edi, ebx
               sub     edi, ecx                sub     edi, ecx
               rep movsb                rep movsb
               mov     esi, ebx                mov     esi, ebx
               mov     ecx, edx                mov     ecx, edx
               mov     edi, ebx                mov     edi, ebx
               sub     edi, ecx                sub     edi, ecx
               xor     eax, eax                xor     eax, eax
               xor     ebx, ebx                xor     ebx, ebx
               xor     edx, edx                xor     edx, edx
   
loop:                                   ; CODE XREF: func+52 19j loop:                                   ; CODE XREF: func+52 19j
               inc     al                inc     al
               add     bl, [esi+eax]                add     bl, [esi+eax]
               mov     dl, [esi+eax]                mov     dl, [esi+eax]
               mov     dh, [esi+ebx]                mov     dh, [esi+ebx]
               mov     [esi+eax], dh                mov     [esi+eax], dh
               mov     [esi+ebx], dl                mov     [ecx], dl
               add     dl, dh                add     dl, dh
               xor     dh, dh                xor     dh, dh
               mov     bl, [esi+edx]                mov     bl, [esi+edx]
               mov     dl, [edi]                mov     dl, [edi]
               xor     dl, bl                xor     dl, bl
               mov     [edi], dl                mov     [edi], dl
               inc     edi                inc     edi
               dec     ecx                dec     ecx
               jnz     short loop                jnz     short loop
   
sysexit:                                ; CODE XREF: func+F 18j func+17 18j sysexit:                                ; CODE XREF: func+F 18j func+17 18j
               xor     ebx, ebx                xor     ebx, ebx
               mov     eax, ebx                mov     eax, ebx
               inc     al                inc     al
               int     80h                int     80h
func            endp ; sp-analysis failed func            endp ; sp-analysis failed
   
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
   
call_func:                              ; CODE XREF: seg000:01000034 18j call_func:                              ; CODE XREF: seg000:01000034 18j
               nop                nop
               nop                nop
               call    func                call    func
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
end_marker      dd 'AAAA' end_marker      dd 'AAAA'
seg000          ends seg000          ends