var_2C= dword ptr -2Ch
var_25= byte ptr -25h
var_24= dword ptr -24h
var_1E= byte ptr -1Eh
var_1D= byte ptr -1Dh
var_1C= dword ptr -1Ch
var_18= dword ptr -18h
var_14= dword ptr -14h
var_10= byte ptr -10h
var_F= byte ptr -0Fh
var_E= byte ptr -0Eh
var_D= byte ptr -0Dh
var_C= byte ptr -0Ch
var_B= byte ptr -0Bh
var_A= byte ptr -0Ah
var_9= byte ptr -9
var_8= byte ptr -8
var_7= byte ptr -7
var_6= byte ptr -6
var_5= byte ptr -5
arg_0= dword ptr 8
arg_4= dword ptr 0Ch
arg_8= byte ptr 10h
push ebp
mov ebp, esp
sub esp, 2Ch
push ebx
push esi
push edi
mov eax, [ebp+arg_0]
movzx ecx, byte ptr [eax]
movzx edx, byte ptr [eax+1]
mov [ebp+var_9], cl
movzx ecx, byte ptr [eax+2]
mov [ebp+var_E], dl
movzx edx, byte ptr [eax+3]
mov [ebp+var_7], cl
movzx ecx, byte ptr [eax+4]
mov [ebp+var_B], dl
movzx edx, byte ptr [eax+5]
mov [ebp+var_D], cl
movzx ecx, byte ptr [eax+6]
mov [ebp+var_8], dl
movzx edx, byte ptr [eax+7]
mov [ebp+var_10], cl
movzx ecx, byte ptr [eax+8]
mov [ebp+var_A], dl
movzx edx, byte ptr [eax+9]
mov al, [ebp+arg_8]
mov esi, [ebp+arg_4]
add al, al
add al, al
mov [ebp+var_2C], esi
mov [ebp+var_C], cl
mov [ebp+var_F], dl
mov [ebp+var_25], al
mov [ebp+var_1C], 64656D6Fh
mov [ebp+var_18], 44454D4Fh
mov [ebp+var_14], 4D4F4445h
mov [ebp+var_1D], 0EAh
mov eax, 0
mov [ebp+var_24], eax
xor ecx, ecx
lea ecx, [ecx+0]
loc_4011D0:
mov dl, [ebp+ecx+var_10]
mov bl, byte ptr [ebp+var_24+1]
lea eax, [ecx+1]
imul dl
add byte ptr [ebp+var_24], al
sub bl, al
mov [ebp+var_1E], al
lea eax, [ecx+38h]
imul dl
add byte ptr [ebp+var_24+2], al
inc ecx
mov byte ptr [ebp+var_24+1], bl
cmp ecx, 0Ah
jl short loc_4011D0
mov al, byte ptr [ebp+var_24]
imul [ebp+var_10]
mov dl, [ebp+var_1D]
xor bl, al
lea edi, [ebp+var_1C]
mov [ebp+var_6], al
mov [ebp+var_5], bl
lea ecx, [ebx+1]
xor cl, byte ptr [ebp+var_24+2]
and cl, 3
mov byte ptr [ebp+var_24+2], cl
xor ecx, ecx
sub edi, esi
jmp short loc_401223
jmp short loc_401220
align 10h
loc_401220:
mov esi, [ebp+var_2C]
loc_401223:
add esi, ecx
movzx eax, byte ptr [edi+esi]
mov al, [ebp+eax+var_10]
xor al, dl
mov dl, cl
add dl, dl
add dl, dl
lea ebx, [edx+ecx]
add al, bl
inc ecx
mov [esi], al
lea edx, [eax+22h]
cmp ecx, 0Ch
jl short loc_401220
mov al, [ebp+var_25]
mov ecx, [ebp+var_2C]
and al, 0Ch
or al, byte ptr [ebp+var_24+2]
pop edi
mov [ecx+0Ch], al
pop esi
xor ecx, ebp
mov eax, 1
pop ebx
mov esp, ebp
pop ebp
retnHi, is it possible this function to be reversed? The function has 2 parameters - (uint8_t* source, uint8_t* output). Would like to convert it to get the source from the output. Thanks in advance.