Function at 0x413930
Capabilities:
Check if file exists
Hash data with md5

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x168
mov eax, dword [0x4f2500]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov ebx, edx
push ebx
mov esi, ecx
push esi
push str.CopyProgramFile_Enter.lpszSrcFile___s__lpszDstFile___s
push 0x2d1
mov dword [ebp - 0x168], eax
mov dword [ebp - 0x15c], esi
mov dword [ebp - 0x164], ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [0x4f6d14]
push eax
push str.ModuleAid.cpp
push 1
push ecx
mov eax, str.CModuleAidManger::CopyProgramFile
call fcn.00403090
mov edi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
add esp, 0x20
push esi
call edi
test eax, eax
je 0x413b2f
push ebx
call edi
test eax, eax
je 0x413b72
xor eax, eax
push 3
mov dword [ebp - 0x144], eax
mov dword [ebp - 0x148], eax
push esi
lea eax, [ebp - 0xc8]
lea edx, [ebp - 0xc4]
push eax
mov dword [ebp - 0x158], 0x67452301
mov dword [ebp - 0x154], 0xefcdab89
mov dword [ebp - 0x150], 0x98badcfe
mov dword [ebp - 0x14c], 0x10325476
mov dword [ebp - 0xc8], edx
call fcn.00417220
mov ecx, dword [ebp - 0xc8]
lea edi, [ebp - 0x158]
call fcn.00412730
mov esi, 0xf
mov ecx, eax
mov dword [ebp - 0x28], esi
mov dword [ebp - 0x2c], 0
mov byte [ebp - 0x3c], 0
lea edi, [ecx + 1]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x413a23
sub ecx, edi
push ecx
push eax
lea ecx, [ebp - 0x3c]
call fcn.00402a10
mov eax, dword [ebp - 0xc8]
lea ecx, [ebp - 0xc4]
cmp eax, ecx
je 0x413a4f
push eax
call fcn.004251be
add esp, 4
push 3
push ebx
lea eax, [ebp - 0xc8]
lea edx, [ebp - 0xc4]
push eax
mov dword [ebp - 0xc8], edx
call fcn.00417220
mov ecx, dword [ebp - 0xc8]
lea edi, [ebp - 0x158]
call fcn.00412730
mov dword [ebp - 0xc], esi
xor esi, esi
mov ecx, eax
mov dword [ebp - 0x10], esi
mov byte [ebp - 0x20], 0
lea edi, [ecx + 1]
lea esp, [esp]
mov dl, byte [ecx]
inc ecx
test dl, dl
jne 0x413a90
sub ecx, edi
push ecx
push eax
lea ecx, [ebp - 0x20]
call fcn.00402a10
mov eax, dword [ebp - 0xc8]
lea ecx, [ebp - 0xc4]
cmp eax, ecx
je 0x413abc
push eax
call fcn.004251be
add esp, 4
mov edi, dword [ebp - 0xc]
mov ebx, dword [ebp - 0x20]
mov ecx, ebx
cmp edi, 0x10
jae 0x413acc
lea ecx, [ebp - 0x20]
cmp dword [ebp - 0x28], 0x10
mov eax, dword [ebp - 0x3c]
jae 0x413ad8
lea eax, [ebp - 0x3c]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x413af8
test dl, dl
je 0x413af4
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x413af8
add eax, 2
add ecx, 2
test dl, dl
jne 0x413ad8
xor eax, eax
jmp 0x413afd
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, esi
jne 0x413b44
cmp edi, 0x10
jb 0x413b0f
push ebx
call fcn.00423310
add esp, 4
cmp dword [ebp - 0x28], 0x10
mov dword [ebp - 0xc], 0xf
mov dword [ebp - 0x10], esi
mov byte [ebp - 0x20], 0
jb 0x413b2f
mov edx, dword [ebp - 0x3c]
push edx
call fcn.00423310
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0042292e
mov esp, ebp
pop ebp
ret 4
cmp edi, 0x10
jb 0x413b52
push ebx
call fcn.00423310
add esp, 4
cmp dword [ebp - 0x28], 0x10
mov dword [ebp - 0xc], 0xf
mov dword [ebp - 0x10], esi
mov byte [ebp - 0x20], 0
jb 0x413b72
mov eax, dword [ebp - 0x3c]
push eax
call fcn.00423310
add esp, 4
push str.CopyProgramFile_2
push 0x2e1
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [0x4f6d14]
push eax
push str.ModuleAid.cpp
push 1
push ecx
mov eax, str.CModuleAidManger::CopyProgramFile
call fcn.00403090
add esp, 0x18
call fcn.0040a740
mov ebx, eax
mov eax, str._delay
lea esi, [ebp - 0x160]
call fcn.004032d0
mov eax, esi
call fcn.00407120
mov esi, eax
mov eax, dword [ebp - 0x160]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x413be0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test esi, esi
je 0x413c0e
mov edi, dword [ebp - 0x164]
mov esi, dword [ebp - 0x15c]
mov ebx, dword [ebp - 0x168]
call fcn.00414480
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0042292e
mov esp, ebp
pop ebp
ret 4
mov ecx, dword [ebp - 0x168]
mov ebx, dword [ebp - 0x164]
push ecx
mov ecx, dword [ebp - 0x15c]
call fcn.00413360
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0042292e
mov esp, ebp
pop ebp
ret 4