Function at 0x405b90
Capabilities:
Check if file exists
Copy file
Create process on windows
Print debug messages
Query environment variable

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4c6f57
mov eax, dword fs:[0]
push eax
sub esp, 0x3c0
mov eax, dword [0x50545c]
xor eax, ebp
mov dword [ebp - 0x24], eax
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push 0x4d2e6c
mov eax, dword [ebp + 8]
push eax
lea ecx, [ebp - 0x248]
push ecx
call fcn.0040f270
add esp, 0xc
mov dword [ebp - 4], 0
push 0x4d2e68
lea ecx, [ebp - 0x258]
call fcn.00412370
mov byte [ebp - 4], 1
push 0x4d2e64
lea ecx, [ebp - 0x25c]
call fcn.00412370
mov byte [ebp - 4], 2
mov edx, dword [ebp + 8]
push edx
lea eax, [ebp - 0x25c]
push eax
lea ecx, [ebp - 0x260]
push ecx
call fcn.0040f190
add esp, 0xc
mov dword [ebp - 0x3b4], eax
mov edx, dword [ebp - 0x3b4]
mov dword [ebp - 0x3b8], edx
mov byte [ebp - 4], 3
lea eax, [ebp - 0x258]
push eax
mov ecx, dword [ebp - 0x3b8]
push ecx
lea edx, [ebp - 0x264]
push edx
call fcn.0040f190
add esp, 0xc
mov dword [ebp - 0x3bc], eax
mov eax, dword [ebp - 0x3bc]
mov dword [ebp - 0x308], eax
mov byte [ebp - 4], 4
mov ecx, dword [ebp - 0x308]
mov edx, dword [ecx]
mov eax, dword [edx - 0xc]
mov dword [ebp - 0x300], eax
mov ecx, dword [ebp - 0x308]
mov edx, dword [ecx]
mov dword [ebp - 0x304], edx
mov eax, dword [ebp - 0x300]
push eax
mov ecx, dword [ebp - 0x304]
push ecx
lea ecx, [ebp - 0x248]
call fcn.00411880
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x264]
sub edx, 0x10
mov dword [ebp - 0x30c], edx
mov ecx, dword [ebp - 0x30c]
call fcn.004029d0
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x260]
sub eax, 0x10
mov dword [ebp - 0x310], eax
mov ecx, dword [ebp - 0x310]
call fcn.004029d0
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x25c]
sub ecx, 0x10
mov dword [ebp - 0x314], ecx
mov ecx, dword [ebp - 0x314]
call fcn.004029d0
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x258]
sub edx, 0x10
mov dword [ebp - 0x318], edx
mov ecx, dword [ebp - 0x318]
call fcn.004029d0
mov eax, dword [ebp - 0x248]
mov dword [ebp - 0x31c], eax
lea ecx, [ebp - 0x2e4]
mov dword [ebp - 0x2e8], ecx
push 3
mov edx, dword [ebp - 0x31c]
push edx
lea ecx, [ebp - 0x2e8]
call fcn.004101c0
lea eax, [ebp - 0x2e8]
mov dword [ebp - 0x320], eax
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x320]
mov edx, dword [ecx]
mov dword [ebp - 0x324], edx
mov eax, dword [ebp - 0x324]
push eax
lea ecx, [ebp - 0x244]
call fcn.0040f590
mov byte [ebp - 4], 7
mov ecx, dword [ebp - 0x2e8]
mov dword [ebp - 0x338], ecx
lea edx, [ebp - 0x2e4]
cmp dword [ebp - 0x338], edx
je 0x405d9e
mov eax, dword [ebp - 0x338]
push eax
call fcn.00493a9a
add esp, 4
cmp dword [ebp - 0x22c], 0x10
jb 0x405db5
mov ecx, dword [ebp - 0x240]
mov dword [ebp - 0x3c0], ecx
jmp 0x405dc1
lea edx, [ebp - 0x240]
mov dword [ebp - 0x3c0], edx
push 0
mov eax, dword [ebp - 0x3c0]
push eax
call dword [sym.imp.KERNEL32.dll_WinExec]
push 0xbb8
call dword [sym.imp.KERNEL32.dll_Sleep]
push str.CUpdatePatchApp::InitInstance__
lea ecx, [ebp - 0x228]
call fcn.00412290
mov byte [ebp - 4], 8
mov ecx, dword [ebp - 0x248]
mov edx, dword [ecx - 0xc]
mov dword [ebp - 0x344], edx
mov eax, dword [ebp - 0x344]
push eax
mov ecx, dword [ebp - 0x248]
push ecx
lea ecx, [ebp - 0x228]
call fcn.00411880
mov edx, dword [ebp - 0x228]
push edx
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
mov eax, dword [ebp + 8]
push eax
lea ecx, [ebp - 0x20]
call fcn.00412990
mov byte [ebp - 4], 9
call fcn.0044fb81
push eax
lea ecx, [ebp - 0x1c]
call fcn.00412940
mov byte [ebp - 4], 0xa
call fcn.0044fb81
push eax
lea ecx, [ebp - 0x14]
call fcn.00412940
mov byte [ebp - 4], 0xb
push 0
push str.Est_Patch_
lea ecx, [ebp - 0x20]
call fcn.0040ee60
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x18], 0
jle 0x405f80
mov ecx, dword [ebp - 0x18]
push ecx
lea edx, [ebp - 0x2ec]
push edx
lea ecx, [ebp - 0x20]
call fcn.0040f0f0
mov dword [ebp - 0x3c4], eax
mov eax, dword [ebp - 0x3c4]
mov dword [ebp - 0x354], eax
mov byte [ebp - 4], 0xc
mov ecx, dword [ebp - 0x354]
push ecx
lea ecx, [ebp - 0x20]
call fcn.00412a10
mov byte [ebp - 4], 0xb
mov edx, dword [ebp - 0x2ec]
sub edx, 0x10
mov dword [ebp - 0x358], edx
mov ecx, dword [ebp - 0x358]
call fcn.004029d0
push str.FileInfoFor32system.txt
lea eax, [ebp - 0x20]
push eax
lea ecx, [ebp - 0x2f0]
push ecx
call fcn.0040f270
add esp, 0xc
mov dword [ebp - 0x3c8], eax
mov edx, dword [ebp - 0x3c8]
mov dword [ebp - 0x35c], edx
mov byte [ebp - 4], 0xd
mov eax, dword [ebp - 0x35c]
push eax
lea ecx, [ebp - 0x1c]
call fcn.00412a10
mov byte [ebp - 4], 0xb
mov ecx, dword [ebp - 0x2f0]
sub ecx, 0x10
mov dword [ebp - 0x360], ecx
mov ecx, dword [ebp - 0x360]
call fcn.004029d0
push str.FileInfoFor64system.txt
lea edx, [ebp - 0x20]
push edx
lea eax, [ebp - 0x2f4]
push eax
call fcn.0040f270
add esp, 0xc
mov dword [ebp - 0x3cc], eax
mov ecx, dword [ebp - 0x3cc]
mov dword [ebp - 0x364], ecx
mov byte [ebp - 4], 0xe
mov edx, dword [ebp - 0x364]
push edx
lea ecx, [ebp - 0x14]
call fcn.00412a10
mov byte [ebp - 4], 0xb
mov eax, dword [ebp - 0x2f4]
sub eax, 0x10
mov dword [ebp - 0x368], eax
mov ecx, dword [ebp - 0x368]
call fcn.004029d0
push 0xff
lea ecx, [ebp - 0x224]
push ecx
push str.ALLUSERSPROFILE
call dword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0
je 0x4060f9
call fcn.0044fb81
push eax
lea ecx, [ebp - 0x24c]
call fcn.00412940
mov byte [ebp - 4], 0xf
lea edx, [ebp - 0x224]
push edx
push 0x4d2d7c
lea eax, [ebp - 0x24c]
push eax
call fcn.00413630
add esp, 0xc
mov ecx, dword [ebp - 0x24c]
mov dword [ebp - 0x36c], ecx
mov edx, dword [ebp - 0x36c]
push edx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4060dd
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x370], eax
mov ecx, dword [ebp - 0x370]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4060d0
mov edx, dword [ebp - 0x14]
mov dword [ebp - 0x374], edx
mov eax, dword [ebp - 0x374]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4060d0
push 0x4d2d48
lea ecx, [ebp - 0x24c]
push ecx
lea edx, [ebp - 0x250]
push edx
call fcn.0040f270
add esp, 0xc
mov byte [ebp - 4], 0x10
push 0x4d2d14
lea eax, [ebp - 0x24c]
push eax
lea ecx, [ebp - 0x254]
push ecx
call fcn.0040f270
add esp, 0xc
mov edx, dword [ebp - 0x250]
mov dword [ebp - 0x378], edx
push 0
mov eax, dword [ebp - 0x378]
push eax
mov ecx, dword [ebp - 0x1c]
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov edx, dword [ebp - 0x254]
mov dword [ebp - 0x37c], edx
push 0
mov eax, dword [ebp - 0x37c]
push eax
mov ecx, dword [ebp - 0x14]
push ecx
call dword [sym.imp.KERNEL32.dll_CopyFileW]
push str.CUpdatePatchApp::InitInstance___Copy_CheckList_to_setup_path_is_done.
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
lea ecx, [ebp - 0x254]
call fcn.004129d0
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x250]
call fcn.004129d0
jmp 0x4060db
push str.CUpdatePatchApp::InitInstance___CheckList_does_not_generate.
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x4060e8
push str.CUpdatePatchApp::InitInstance___CDGUpDownloads_folder_path_does_not_exist.
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x24c]
call fcn.004129d0
jmp 0x406104
push str.CUpdatePatchApp::InitInstance___Get_Environment_Param_is_failed.
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x14]
call fcn.004129d0
mov byte [ebp - 4], 9
lea ecx, [ebp - 0x1c]
call fcn.004129d0
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x20]
call fcn.004129d0
mov byte [ebp - 4], 7
lea ecx, [ebp - 0x228]
call fcn.004129d0
mov byte [ebp - 4], 0
push 0
push 1
lea ecx, [ebp - 0x244]
call fcn.00410110
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x248]
call fcn.004129d0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
mov ecx, dword [ebp - 0x24]
xor ecx, ebp
call fcn.0049318c
mov esp, ebp
pop ebp
ret