Function at 0x402653
Capabilities:
Create directory
Create process on windows
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x5dc
mov dword [ebp - 0x14], 0
lea eax, [ebp - 0x5dc]
push eax
push 1
push 0
push str.SoftwareMicrosoftWindowsCurrentVersionApp_PathsCEAPPMGR.EXE
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExA]
mov dword [ebp - 0x58c], eax
cmp dword [ebp - 0x58c], 0
je 0x4026ab
push 0
push 0x40922c
push str.Could_not_find_the_CEAppMgr_Installer_Program_on_this_Desktop_PC_
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
jmp 0x402a62
mov dword [ebp - 0x228], 0x104
lea ecx, [ebp - 0x228]
push ecx
lea edx, [ebp - 0x32c]
push edx
push 0
push 0
push 0x40a0a0
mov eax, dword [ebp - 0x5dc]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
mov dword [ebp - 0x58c], eax
cmp dword [ebp - 0x58c], 0
je 0x402706
push 0
push 0x409278
push str.Could_not_find_the_CEAppMgr_Installer_Program_path_in_Registry_File_
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
jmp 0x402a62
mov ecx, dword [ebp - 0x5dc]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea edx, [ebp - 0x32c]
push edx
lea eax, [ebp - 0x118]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea ecx, [ebp - 0x118]
mov dword [ebp - 0x11c], ecx
jmp 0x402744
mov edx, dword [ebp - 0x11c]
add edx, 1
mov dword [ebp - 0x11c], edx
mov eax, dword [ebp - 0x11c]
movsx ecx, byte [eax]
test ecx, ecx
je 0x40276d
mov edx, dword [ebp - 0x11c]
movsx eax, byte [edx]
cmp eax, 0x5c
jne 0x40276b
mov ecx, dword [ebp - 0x11c]
add ecx, 1
mov dword [ebp - 0x14], ecx
jmp 0x402735
cmp dword [ebp - 0x14], 0
jne 0x402791
push 0
push 0x4092c8
push str.Could_not_find_the_CEAppMgr_Installer_Program_directory_
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
jmp 0x402a62
mov edx, dword [ebp - 0x14]
mov byte [edx], 0
push 0x40a0a4
lea eax, [ebp - 0x484]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov dword [ebp - 0x590], 0
push 0x104
lea ecx, [ebp - 0x224]
push ecx
mov edx, dword [ebp - 0x590]
add edx, 0x190
push edx
push 0xc8
call fcn.00401d4b
add esp, 0x10
test eax, eax
je 0x402949
lea eax, [ebp - 0x118]
push eax
lea ecx, [ebp - 0x380]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea edx, [ebp - 0x224]
push edx
lea eax, [ebp - 0x380]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0
lea ecx, [ebp - 0x380]
push ecx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
jne 0x402849
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x402849
push 0
lea edx, [ebp - 0x380]
push edx
push str.Couldnt_create_the_Install_Directory_
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
jmp 0x402a62
mov eax, dword [ebp - 0x590]
add eax, 0xc8
push eax
lea ecx, [ebp - 0x380]
push ecx
lea edx, [ebp - 0x484]
push edx
call fcn.00402109
add esp, 0xc
lea eax, [ebp - 0x330]
push eax
lea ecx, [ebp - 0x380]
push ecx
mov edx, dword [ebp - 0x590]
add edx, 0xc8
push edx
call fcn.0040218e
add esp, 0xc
cmp dword [ebp - 0x330], 0
je 0x4028b7
push 0
lea eax, [ebp - 0x380]
push eax
push str.Error_occurred_while_saving_ini_files_to_disk_
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
jmp 0x402a62
mov dword [ebp - 0x594], 0
lea ecx, [ebp - 0x330]
push ecx
lea edx, [ebp - 0x380]
push edx
mov eax, dword [ebp - 0x590]
add eax, 0xc8
push eax
mov ecx, dword [ebp - 0x594]
add ecx, 0x64
push ecx
mov edx, dword [ebp - 0x590]
add edx, 0x64
push edx
call fcn.00401fc5
add esp, 0x14
test eax, eax
je 0x40290c
mov eax, dword [ebp - 0x594]
add eax, 1
mov dword [ebp - 0x594], eax
jmp 0x4028c1
cmp dword [ebp - 0x330], 0
je 0x402935
push 0
lea ecx, [ebp - 0x380]
push ecx
push str.Error_occurred_while_saving_cab_files_to_disk_
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
jmp 0x402a62
mov edx, dword [ebp - 0x590]
add edx, 1
mov dword [ebp - 0x590], edx
jmp 0x4027b3
mov dword [ebp - 0x590], 0
lea eax, [ebp - 0x330]
push eax
mov ecx, dword [ebp - 0x590]
add ecx, 0x12c
push ecx
call fcn.004022d1
add esp, 8
test eax, eax
je 0x402984
mov edx, dword [ebp - 0x590]
add edx, 1
mov dword [ebp - 0x590], edx
jmp 0x402953
cmp dword [ebp - 0x330], 0
je 0x4029ad
push 0
lea eax, [ebp - 0x118]
push eax
push str.Error_occurred_while_saving_manual_file_to_disk_
push 0
call dword [sym.imp.USER32.dll_MessageBoxA]
mov eax, 1
jmp 0x402a62
lea ecx, [ebp - 0x32c]
push ecx
lea edx, [ebp - 0x588]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0x4093c8
lea eax, [ebp - 0x588]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
lea ecx, [ebp - 0x484]
push ecx
lea edx, [ebp - 0x588]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0x44
push 0
lea eax, [ebp - 0x5d8]
push eax
call fcn.00402d60
add esp, 0xc
mov dword [ebp - 0x5d8], 0x44
lea ecx, [ebp - 0x10]
push ecx
lea edx, [ebp - 0x5d8]
push edx
push 0
push 0
push 0x20
push 0
push 0
push 0
lea eax, [ebp - 0x588]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_CreateProcessA]
mov dword [ebp - 0x120], eax
cmp dword [ebp - 0x120], 0
jne 0x402a40
mov eax, 1
jmp 0x402a62
mov ecx, dword [ebp - 0xc]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0xffffffffffffffff
mov edx, dword [ebp - 0x10]
push edx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [ebp - 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
mov esp, ebp
pop ebp
ret