Function at 0x402140
Capabilities:
Delete file
Enumerate files on windows
Get common file path
Get file version info
Set file attributes

Disassembly:
push 0xffffffffffffffff
push 0x4036b6
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x778
push ebx
push ebp
push esi
push edi
xor ebx, ebx
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x379]
mov byte [esp + 0x378], bl
mov byte [esp + 0x47c], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x47d]
mov byte [esp + 0x30], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x31]
mov byte [esp + 0x274], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x275]
mov byte [esp + 0x684], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x685]
mov byte [esp + 0x580], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x581]
push 1
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x37c]
push 0x25
push eax
push ebx
mov byte [esp + 0x22], 1
mov byte [esp + 0x21], 1
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
test eax, eax
jne 0x402233
push ebx
push ebx
push str.RegisterOCX
push str.SHGetSpecialFolderPath__CSIDL_SYSTEM__failed__function_return.
call fcn.00401470
add esp, 0x10
xor al, al
jmp 0x402803
or ecx, 0xffffffff
mov edi, str.MacromedFlash
xor eax, eax
lea edx, [esp + 0x378]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov byte [esp + 0x13], bl
mov ebp, ecx
mov esi, edi
or ecx, 0xffffffff
mov edi, edx
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea edx, [esp + 0x47c]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x378]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x47c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str..
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea eax, [esp + 0x134]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x480]
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov ebp, eax
cmp ebp, 0xffffffff
mov dword [esp + 0x20], ebp
jne 0x402301
push ebx
push ebx
lea edx, [esp + 0x484]
push str.FindFirstFile__INVALID_HANDLE_VALUE____RegisterOCX
push edx
call fcn.00401470
add esp, 0x10
xor al, al
jmp 0x402803
test byte [esp + 0x134], 0x10
jne 0x402760
push ebx
push 1
lea eax, [esp + 0x168]
push str.FileData.cFileName___RegisterOCX
push eax
call fcn.00401470
lea edi, [esp + 0x170]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x40]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x40]
push ecx
call dword [sym.imp.MSVCRT.dll__mbsupr]
push str..OCX
push eax
call dword [sym.imp.MSVCRT.dll__mbsstr]
add esp, 0x1c
test eax, eax
je 0x402760
or ecx, 0xffffffff
lea edi, [esp + 0x378]
xor eax, eax
lea edx, [esp + 0x30]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push ebx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x34]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x405924
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x34]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x164]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea eax, [esp + 0x34]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
call sub.VERSION.dll_GetFileVersionInfoSizeA
mov esi, eax
cmp esi, ebx
jne 0x40241c
push ebx
push ebx
lea ecx, [esp + 0x38]
push str.GetFileVersionInfoSize_failed___RegisterOCX
push ecx
call fcn.00401470
add esp, 0x10
jmp 0x402697
lea edx, [esi + 1]
push edx
call sub.MFC42.DLL_operatornew
add esp, 4
mov ebp, eax
lea eax, [esp + 0x30]
push ebp
push esi
push ebx
push eax
call sub.VERSION.dll_GetFileVersionInfoA
test eax, eax
je 0x402676
lea ecx, [esp + 0x1c]
lea edx, [esp + 0x14]
push ecx
push edx
push str.StringFileInfo040904b0FileVersion
push ebp
mov dword [esp + 0x24], ebx
mov dword [esp + 0x2c], ebx
call sub.VERSION.dll_VerQueryValueA
cmp eax, ebx
je case.default.0x4024bc
mov eax, dword [esp + 0x14]
push ebx
push 1
push str.VerQueryValue___RegisterOCX
push eax
call fcn.00401470
add esp, 0xc
mov ecx, esp
mov dword [esp + 0x28], esp
push 0x405b2c
call sub.MFC42.DLL_CString::CString
mov edx, dword [esp + 0x18]
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push edx
mov dword [esp + 0x79c], ebx
call sub.MFC42.DLL_CString::CString
or esi, 0xffffffff
mov dword [esp + 0x798], esi
call fcn.004028f0
add esp, 8
cmp eax, 3
ja case.default.0x4024bc
jmp dword [eax*4 + 0x40281c]
push ebx
push 1
push str.VER_COMPARE_ERROR___RegisterOCX
push 0x405b2c
jmp 0x402682
push ebx
push 1
push str.VER_COMPARE_PREV_NEWER___RegisterOCX
push 0x405b2c
call fcn.00401470
mov al, byte [esp + 0x21]
add esp, 0x10
cmp al, bl
je 0x4024f8
mov byte [esp + 0x11], bl
jmp 0x402540
push ecx
lea edx, [esp + 0x584]
mov ecx, esp
mov dword [esp + 0x1c], esp
push edx
call sub.MFC42.DLL_CString::CString
mov eax, dword [esp + 0x18]
push ecx
mov ecx, esp
mov dword [esp + 0x2c], esp
push eax
mov dword [esp + 0x79c], 1
call sub.MFC42.DLL_CString::CString
mov dword [esp + 0x798], esi
call fcn.004028f0
add esp, 8
cmp eax, 1
jne case.default.0x4024bc
mov edi, dword [esp + 0x14]
mov ecx, esi
xor eax, eax
lea edx, [esp + 0x580]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x684]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x30]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
jmp case.default.0x4024bc
push ebx
push 1
push str.VER_COMPARE_PREV_OLDER___RegisterOCX
push 0x405b2c
call fcn.00401470
lea ecx, [esp + 0x40]
push ecx
push str.regsvr32.exe__u__s
call fcn.00402830
add esp, 0x18
lea edx, [esp + 0x30]
push 0x80
push edx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
test eax, eax
jne 0x4025e0
push ebx
push ebx
lea eax, [esp + 0x38]
push str.SetFileAttributes_failed___RegisterOCX
push eax
call fcn.00401470
add esp, 0x10
lea ecx, [esp + 0x30]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
test eax, eax
push ebx
jne 0x402600
push ebx
lea edx, [esp + 0x38]
push str.DeleteFile_failed___RegisterOCX
push edx
jmp 0x402682
push 1
lea eax, [esp + 0x38]
push str.DeleteFile_done___RegisterOCX
push eax
jmp 0x402682
cmp byte [esp + 0x11], bl
je 0x402667
mov edi, dword [esp + 0x14]
mov ecx, esi
xor eax, eax
lea edx, [esp + 0x580]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov byte [esp + 0x11], bl
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x684]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x30]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
push ebx
push 1
push str.VER_COMPARE_SAME___RegisterOCX
push 0x405b2c
jmp 0x402682
push ebx
push ebx
lea ecx, [esp + 0x38]
push str.GetFileVersionInfo_failed___RegisterOCX
push ecx
call fcn.00401470
add esp, 0x10
push ebp
call sub.MFC42.DLL_operatordelete
mov ebp, dword [esp + 0x24]
add esp, 4
cmp byte [esp + 0x12], bl
jne 0x4026b9
lea edx, [esp + 0x28]
lea eax, [esp + 0x148]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_CompareFileTime]
cmp eax, 1
jne 0x402760
mov ecx, dword [esp + 0x148]
lea edi, [esp + 0x378]
mov dword [esp + 0x28], ecx
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [esp + 0x14c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [esp + 0x2c], edx
lea edx, [esp + 0x274]
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
lea edx, [esp + 0x274]
rep movsb byte es:[edi], byte [esi]
mov edi, 0x405924
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov byte [esp + 0x12], bl
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x274]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0x160]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, edx
mov edx, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, edx
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea eax, [esp + 0x134]
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x402301
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x12
jne 0x402789
mov byte [esp + 0x13], 1
jmp 0x4027a0
push ebx
push ebx
lea ecx, [esp + 0x484]
push str.FindNextFile__failed____RegisterOCX
push ecx
call fcn.00401470
add esp, 0x10
push ebp
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp byte [esp + 0x11], bl
jne 0x4027cc
push ebx
push 1
lea edx, [esp + 0x68c]
push str.tszOCXVerPath___RegisterOCX
push edx
call fcn.00401470
lea eax, [esp + 0x284]
push eax
jmp 0x4027ef
cmp byte [esp + 0x12], bl
jne 0x4027fc
push ebx
push 1
lea ecx, [esp + 0x27c]
push str.tszOCXPath___RegisterOCX
push ecx
call fcn.00401470
lea edx, [esp + 0x284]
push edx
push str.regsvr32.exe__s
call fcn.00402830
add esp, 0x18
cmp byte [esp + 0x13], bl
setne al
mov ecx, dword [esp + 0x788]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x784
ret