Function at 0x402b70
Capabilities:
Print debug messages

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x320
push ebx
push esi
push edi
push str.PPLLoader
push 0x40a100
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov eax, dword [ebp + 8]
push eax
call fcn.004033b0
add esp, 4
mov ecx, dword [ebp + 0x14]
push ecx
mov edx, dword [ebp + 8]
push edx
call fcn.00403430
add esp, 8
test eax, eax
jne 0x402bd6
push str._Loader__InitInstance_
push 0x40a1c8
call sub.MFC42.DLL_CString::Format
add esp, 8
mov ecx, 0x40a1c8
call fcn.00401410
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
xor eax, eax
jmp 0x403373
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
push 0x4076a4
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [ebp - 0x24], eax
cmp dword [ebp - 0x24], 0
jne 0x402bfc
mov eax, 1
jmp 0x403373
push str.URLDownloadToFileA
mov eax, dword [ebp - 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x28], eax
cmp dword [ebp - 0x28], 0
jne 0x402c28
mov ecx, dword [ebp - 0x24]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov eax, 1
jmp 0x403373
push str.kernel32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov dword [ebp - 0x2c], eax
cmp dword [ebp - 0x2c], 0
jne 0x402c50
mov edx, dword [ebp - 0x24]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov eax, 1
jmp 0x403373
push 0x407670
mov eax, dword [ebp - 0x2c]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [ebp - 0x30], eax
cmp dword [ebp - 0x30], 0
jne 0x402c86
mov ecx, dword [ebp - 0x24]
push ecx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov edx, dword [ebp - 0x2c]
push edx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov eax, 1
jmp 0x403373
call dword [sym.imp.MSVCRT.dll___p___argc]
mov eax, dword [eax]
mov dword [ebp - 0x34], eax
call dword [sym.imp.MSVCRT.dll___p___argv]
mov ecx, dword [eax]
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x3c], 0
lea edx, [ebp - 0x2b8]
push edx
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_class_std::allocator_char__const__]
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x50], 2
jmp 0x402ccc
mov eax, dword [ebp - 0x50]
add eax, 1
mov dword [ebp - 0x50], eax
mov ecx, dword [ebp - 0x50]
cmp ecx, dword [ebp - 0x34]
jge 0x402d16
push str._version
mov edx, dword [ebp - 0x50]
mov eax, dword [ebp - 0x38]
mov ecx, dword [eax + edx*4]
push ecx
call dword [sym.imp.MSVCRT.dll__stricmp]
add esp, 8
test eax, eax
jne 0x402d14
mov edx, dword [ebp - 0x50]
add edx, 1
cmp edx, dword [ebp - 0x34]
jge 0x402d14
mov eax, dword [ebp - 0x50]
mov ecx, dword [ebp - 0x38]
mov edx, dword [ecx + eax*4 + 4]
push edx
call dword [sym.imp.MSVCRT.dll__strdup]
add esp, 4
mov dword [ebp - 0x3c], eax
jmp 0x402d16
jmp 0x402cc3
mov eax, dword [ebp - 0x38]
mov ecx, dword [eax + 4]
mov dword [ebp - 0x54], ecx
mov edx, dword [ebp - 0x54]
push edx
push str._Loader__pszUrl:_s
push 0x40a1c8
call sub.MFC42.DLL_CString::Format
add esp, 0xc
mov ecx, 0x40a1c8
call fcn.00401410
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push 0xa
lea eax, [ebp - 0x60]
push eax
mov ecx, dword [ebp - 0x34]
push ecx
call dword [sym.imp.MSVCRT.dll__itoa]
add esp, 0xc
lea edx, [ebp - 0x60]
push edx
push str._Loader__argc:_s
push 0x40a1c8
call sub.MFC42.DLL_CString::Format
add esp, 0xc
mov ecx, 0x40a1c8
call fcn.00401410
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov eax, dword [ebp + 0x10]
push eax
push str._Loader_
push 0x40a1c8
call sub.MFC42.DLL_CString::Format
add esp, 0xc
mov ecx, 0x40a1c8
call fcn.00401410
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push 0x104
lea ecx, [ebp - 0x164]
push ecx
push str.Product
mov edx, dword [ebp + 0x10]
push edx
call fcn.00401080
add esp, 0x10
test eax, eax
je 0x402dd9
lea eax, [ebp - 0x164]
push eax
mov ecx, 0x40a0fc
call sub.MFC42.DLL_CString::operator_2
push 0x104
lea ecx, [ebp - 0x164]
push ecx
push str.Custom
mov edx, dword [ebp + 0x10]
push edx
call fcn.00401080
add esp, 0x10
test eax, eax
je 0x402e0b
lea eax, [ebp - 0x164]
push eax
mov ecx, 0x40a0f8
call sub.MFC42.DLL_CString::operator_2
push 0x104
lea ecx, [ebp - 0x164]
push ecx
push str.Channel
mov edx, dword [ebp + 0x10]
push edx
call fcn.00401080
add esp, 0x10
test eax, eax
je 0x402e3d
lea eax, [ebp - 0x164]
push eax
mov ecx, 0x40a0f4
call sub.MFC42.DLL_CString::operator_2
push 0x104
lea ecx, [ebp - 0x164]
push ecx
push str.SoftID
mov edx, dword [ebp + 0x10]
push edx
call fcn.00401080
add esp, 0x10
test eax, eax
je 0x402e6f
lea eax, [ebp - 0x164]
push eax
mov ecx, 0x40a0f0
call sub.MFC42.DLL_CString::operator_2
mov ecx, dword [0x40a0f0]
push ecx
mov edx, dword [0x40a0f4]
push edx
mov eax, dword [0x40a0f8]
push eax
mov ecx, dword [0x40a0fc]
push ecx
push str._Loader__Product:_s_Custom:_s_Channel:_s_SoftID:_s
push 0x40a1c8
call sub.MFC42.DLL_CString::Format
add esp, 0x18
mov ecx, 0x40a1c8
call fcn.00401410
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
mov byte [ebp - 0x268], 0
mov ecx, 0x40
xor eax, eax
lea edi, [ebp - 0x267]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
push 7
push str.http:__
mov edx, dword [ebp - 0x54]
push edx
call dword [sym.imp.MSVCRT.dll__strnicmp]
add esp, 0xc
test eax, eax
jne 0x402f7d
lea eax, [ebp - 0x268]
push eax
mov ecx, dword [ebp - 0x54]
push ecx
call fcn.00401a00
add esp, 8
test eax, eax
jne 0x402f17
mov dword [ebp - 0x2bc], 1
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov eax, dword [ebp - 0x2bc]
jmp 0x403373
mov dword [ebp - 0x26c], 0
lea edx, [ebp - 0x268]
push edx
push 0x40a270
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0
push 0
push 0
mov eax, dword [0x40a374]
push eax
push 0
push 0x40a270
mov ecx, dword [ebp - 0x54]
push ecx
mov ecx, 0x40a1e0
call fcn.00403e10
mov edx, dword [ebp - 0x54]
push edx
push str._Loader__StartDownload_pszUrl:_s
push 0x40a1c8
call sub.MFC42.DLL_CString::Format
add esp, 0xc
mov ecx, 0x40a1c8
call fcn.00401410
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
jmp 0x402f8e
mov eax, dword [ebp - 0x54]
push eax
lea ecx, [ebp - 0x268]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathAppendA]
lea edx, [ebp - 0x268]
push edx
call dword [sym.imp.SHLWAPI.dll_PathFindExtensionA]
mov dword [ebp - 0x270], eax
cmp dword [ebp - 0x270], 0
je 0x402fc6
push str..cfg
mov eax, dword [ebp - 0x270]
push eax
call fcn.00403380
add esp, 8
test eax, eax
jne 0x4032ce
lea ecx, [ebp - 0x27c]
call fcn.004051a0
lea ecx, [ebp - 0x268]
push ecx
lea ecx, [ebp - 0x27c]
call fcn.004052a0
push 0
push str.enable
push str.software
lea ecx, [ebp - 0x27c]
call fcn.004053d0
mov dword [ebp - 0x280], eax
cmp dword [ebp - 0x280], 0
jne 0x403032
mov dword [ebp - 0x2c0], 1
lea ecx, [ebp - 0x27c]
call fcn.00405220
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov eax, dword [ebp - 0x2c0]
jmp 0x403373
push 0x407540
push 0x407588
push str.software
lea edx, [ebp - 0x290]
push edx
lea ecx, [ebp - 0x27c]
call fcn.00405470
push 0x407540
push str.name
push str.software
lea eax, [ebp - 0x2a0]
push eax
lea ecx, [ebp - 0x27c]
call fcn.00405470
lea ecx, [ebp - 0x290]
call dword [sym.imp.MSVCP60.dll_public:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::empty_void_const]
and eax, 0xff
test eax, eax
jne 0x40309e
lea ecx, [ebp - 0x2a0]
call dword [sym.imp.MSVCP60.dll_public:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::empty_void_const]
and eax, 0xff
test eax, eax
je 0x4030df
mov dword [ebp - 0x2c4], 1
lea ecx, [ebp - 0x2a0]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [ebp - 0x290]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [ebp - 0x27c]
call fcn.00405220
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov eax, dword [ebp - 0x2c4]
jmp 0x403373
push 0x407540
push str.version
push str.software
lea ecx, [ebp - 0x2b0]
push ecx
lea ecx, [ebp - 0x27c]
call fcn.00405470
lea ecx, [ebp - 0x2b0]
call dword [sym.imp.MSVCP60.dll_public:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::empty_void_const]
and eax, 0xff
test eax, eax
jne 0x403185
cmp dword [ebp - 0x3c], 0
je 0x403185
lea ecx, [ebp - 0x2b0]
call dword [sym.imp.MSVCP60.dll_public:_char_const____thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::c_str_void_const]
push eax
mov edx, dword [ebp - 0x3c]
push edx
call fcn.00401bf0
add esp, 8
test eax, eax
jne 0x403185
mov dword [ebp - 0x2c8], 1
lea ecx, [ebp - 0x2b0]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [ebp - 0x2a0]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [ebp - 0x290]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [ebp - 0x27c]
call fcn.00405220
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov eax, dword [ebp - 0x2c8]
jmp 0x403373
push 0x407540
push str.parameter
push str.software
lea eax, [ebp - 0x2d8]
push eax
lea ecx, [ebp - 0x27c]
call fcn.00405470
push eax
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__]
lea ecx, [ebp - 0x2d8]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [ebp - 0x268]
push ecx
lea ecx, [ebp - 0x290]
call dword [sym.imp.MSVCP60.dll_public:_char_const____thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::c_str_void_const]
push eax
call fcn.00401a00
add esp, 8
test eax, eax
jne 0x403229
mov dword [ebp - 0x2dc], 1
lea ecx, [ebp - 0x2b0]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [ebp - 0x2a0]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [ebp - 0x290]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [ebp - 0x27c]
call fcn.00405220
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov eax, dword [ebp - 0x2dc]
jmp 0x403373
mov dword [ebp - 0x2b4], 0
lea edx, [ebp - 0x268]
push edx
push 0x40a270
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
push 0
push 0
push 0
mov eax, dword [0x40a374]
push eax
push 0
push 0x40a270
lea ecx, [ebp - 0x290]
call dword [sym.imp.MSVCP60.dll_public:_char_const____thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::c_str_void_const]
push eax
mov ecx, 0x40a1e0
call fcn.00403e10
lea ecx, [ebp - 0x290]
call dword [sym.imp.MSVCP60.dll_public:_char_const____thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::c_str_void_const]
push eax
push str._Loader__StartDownload_installURL:_s
push 0x40a1c8
call sub.MFC42.DLL_CString::Format
add esp, 0xc
mov ecx, 0x40a1c8
call fcn.00401410
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea ecx, [ebp - 0x2b0]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [ebp - 0x2a0]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [ebp - 0x290]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
lea ecx, [ebp - 0x27c]
call fcn.00405220
push 0x4072f0
mov ecx, 0x40a1d0
call dword [0x4070d8]
lea ecx, [ebp - 0x268]
push ecx
mov ecx, 0x40a1d0
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::operator_char_const__]
push 0x4072f0
mov ecx, 0x40a1d0
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::operator_char_const__]
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP60.dll_public:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::empty_void_const]
and eax, 0xff
test eax, eax
jne 0x403331
push 0x4072f4
mov ecx, 0x40a1d0
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::operator_char_const__]
lea edx, [ebp - 0x4c]
push edx
mov ecx, 0x40a1d0
call dword [0x4070dc]
push 0
push 0
push 0
lea eax, [ebp - 0x1c]
push eax
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
je 0x40335b
lea ecx, [ebp - 0x1c]
push ecx
call dword [sym.imp.USER32.dll_TranslateMessage]
lea edx, [ebp - 0x1c]
push edx
call dword [sym.imp.USER32.dll_DispatchMessageA]
jmp 0x403331
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x2e0], eax
lea ecx, [ebp - 0x4c]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::destructor_void_]
mov eax, dword [ebp - 0x2e0]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10