All pastes #577221 Raw Edit

Chao7

public text v1 · immutable
·published 2007-06-19 20:38 UTC
rendered paste body
sub_41CBA0 proc near                    ; CODE XREF: sub_410110+8Cp
                                        ; sub_427120+14Ap ...

var_2= byte ptr -2
var_1= byte ptr -1
arg_0= dword ptr  8
arg_4= dword ptr  0Ch

push     ebp
mov      ebp, esp
push     ecx

mov     eax, [ebp+arg_0]    ; eax = arg_0
mov     cl, [eax]           ; cl = * (byte *) arg_0
mov     [ebp+var_1], cl     ; var_1 = cl

; so... var_1 = * (byte *) arg_0

mov     edx, [ebp+arg_0]    ; edx = arg_0
mov     eax, [ebp+arg_4]    ; eax = arg_4
mov     cl, [eax]           ; cl = * (byte *) arg_4
mov     [edx], cl           ; *(byte *) arg_0 = cl

; so... * (byte *) arg_0 = * (byte *) arg_4

mov     edx, [ebp+arg_4]    ; edx = arg_4
mov     al, [ebp+var_1]     ; al = var_1
mov     [edx], al           ; *(byte *) arg_4 = al

; so... * (byte *) arg_4 = var_1

; that referenced w/ the set of var_1 from above...
; it would be ... * (byte *) arg_4 = * (byte *) arg_0
; the inverse of what is in the middle here

mov     esp, ebp
pop     ebp
retn


; This is simply 'Transpose Memory Bytes'.
; Crap like this is strewn throughout the code... it should be optimized far better.
; It should be inlined, like;

mov al, [esi]
mov ah, [edi]
mov [esi], ah
mov [edi], al

; I understand this was compiled with MSVC 2003, but that is nuts.