求大神解答一下下面这段的逻辑~
int __cdecl sub_40E720(void *, size_t)
sub_40E720 proc near
var_8C= byte ptr -8Ch
var_4C= byte ptr -4Ch
var_4B= dword ptr -4Bh
var_47= dword ptr -47h
var_43= dword ptr -43h
var_3F= word ptr -3Fh
var_3D= byte ptr -3Dh
var_3C= byte ptr -3Ch
var_3B= dword ptr -3Bh
var_37= dword ptr -37h
var_33= dword ptr -33h
var_2F= dword ptr -2Fh
var_2B= word ptr -2Bh
var_29= byte ptr -29h
var_28= byte ptr -28h
var_27= byte ptr -27h
var_26= byte ptr -26h
var_25= byte ptr -25h
var_24= byte ptr -24h
var_23= byte ptr -23h
var_22= byte ptr -22h
var_21= byte ptr -21h
var_20= byte ptr -20h
var_1F= byte ptr -1Fh
var_1E= byte ptr -1Eh
var_1D= byte ptr -1Dh
var_1C= byte ptr -1Ch
var_1B= byte ptr -1Bh
var_1A= byte ptr -1Ah
var_19= byte ptr -19h
var_18= byte ptr -18h
var_17= byte ptr -17h
var_16= byte ptr -16h
var_15= byte ptr -15h
var_14= byte ptr -14h
var_13= byte ptr -13h
var_12= byte ptr -12h
var_11= byte ptr -11h
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= dword ptr -8
var_4= dword ptr -4
arg_0= dword ptr 8
arg_4= dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 8Ch
push ebx
push esi
push edi
lea edi, [ebp+var_8C]
mov ecx, 23h
mov eax, 0CCCCCCCCh
rep stosd
mov [ebp+var_28], 0D4h
mov [ebp+var_27], 36h
mov [ebp+var_26], 96h
mov [ebp+var_25], 80h
mov [ebp+var_24], 79h
mov [ebp+var_23], 0BEh
mov [ebp+var_22], 16h
mov [ebp+var_21], 87h
mov [ebp+var_20], 0E8h
mov [ebp+var_1F], 0F9h
mov [ebp+var_1E], 4Dh
mov [ebp+var_1D], 89h
mov [ebp+var_1C], 0Dh
mov [ebp+var_1B], 1Dh
mov [ebp+var_1A], 0D9h
mov [ebp+var_19], 2Bh
mov [ebp+var_18], 0F9h
mov [ebp+var_17], 0F1h
mov [ebp+var_16], 38h
mov [ebp+var_15], 57h
mov [ebp+var_14], 15h
mov [ebp+var_13], 79h
mov [ebp+var_12], 5Fh
mov [ebp+var_11], 6Dh
mov [ebp+var_10], 0D8h
mov [ebp+var_F], 0F5h
mov [ebp+var_E], 36h
mov [ebp+var_D], 0F2h
mov [ebp+var_C], 0D0h
mov [ebp+var_B], 62h
mov [ebp+var_A], 0BCh
mov [ebp+var_9], 0F4h
xor eax, eax
mov [ebp+var_8], eax
mov [ebp+var_4], eax
mov [ebp+var_3C], 0
xor ecx, ecx
mov [ebp+var_3B], ecx
mov [ebp+var_37], ecx
mov [ebp+var_33], ecx
mov [ebp+var_2F], ecx
mov [ebp+var_2B], cx
mov [ebp+var_29], cl
mov [ebp+var_4C], 0
xor edx, edx
mov [ebp+var_4B], edx
mov [ebp+var_47], edx
mov [ebp+var_43], edx
mov [ebp+var_3F], dx
mov [ebp+var_3D], dl
mov eax, [ebp+arg_4]
push eax ; size_t
mov ecx, [ebp+arg_0]
push ecx ; void *
lea edx, [ebp+var_4C]
push edx ; void *
call _memcpy
add esp, 0Ch
lea eax, [ebp+var_3C]
push eax
lea ecx, [ebp+var_4C]
push ecx
call sub_40100F
add esp, 8
push 10h ; size_t
lea edx, [ebp+var_28]
push edx ; void *
lea eax, [ebp+var_3C]
push eax ; void *
call _memcmp
add esp, 0Ch
test eax, eax
jnz short loc_40E836