Function at 0x405a00
Capabilities:
Extract resource via kernel32 functions
Get system information on windows
Print debug messages

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4e56ae
mov eax, dword fs:[0]
push eax
sub esp, 0xa8
mov eax, dword [0x525060]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov ebx, dword [ebp + 8]
push str.CInstallCtrl::Install____r_n
call dword [sym.imp.KERNEL32.dll_OutputDebugStringA]
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
cmp word [ebx], 0
jne 0x405a50
xor ecx, ecx
jmp 0x405a64
mov ecx, ebx
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x405a55
sub ecx, edx
sar ecx, 1
push ecx
lea esi, [edi + 4]
push ebx
mov ecx, esi
call fcn.00401d70
cmp dword [esi + 0x14], 8
jb 0x405a7a
mov ecx, dword [esi]
jmp 0x405a7c
mov ecx, esi
mov eax, dword [esi + 0x10]
cmp word [ecx + eax*2 - 2], 0x5c
jne 0x405aad
lea ecx, [eax - 1]
cmp eax, ecx
jae 0x405a98
push str.invalid_string_position
call fcn.0040bf24
cmp dword [esi + 0x14], 8
mov dword [esi + 0x10], ecx
jb 0x405aa5
mov eax, dword [esi]
jmp 0x405aa7
mov eax, esi
xor edx, edx
mov word [eax + ecx*2], dx
cmp dword [esi + 0x14], 8
jb 0x405ab7
mov ecx, dword [esi]
jmp 0x405ab9
mov ecx, esi
call fcn.0040b030
cmp eax, 1
je 0x405adf
push 1
push 0x5141d0
mov ecx, esi
call fcn.004075b0
push 4
push 0x5141d4
mov ecx, eax
call fcn.004075b0
cmp dword [esi + 0x14], 8
jb 0x405ae9
mov ecx, dword [esi]
jmp 0x405aeb
mov ecx, esi
call fcn.0040bac0
cmp dword [esi + 0x14], 8
jb 0x405afa
mov ecx, dword [esi]
jmp 0x405afc
mov ecx, esi
mov eax, dword [esi + 0x10]
cmp word [ecx + eax*2 - 2], 0x5c
je 0x405b15
push 1
push 0x5141d0
mov ecx, esi
call fcn.004075b0
push 0
mov ecx, edi
call fcn.00406810
lea eax, [ebp - 0x80]
mov byte [ebp - 0x81], 0
push eax
call dword [sym.imp.KERNEL32.dll_GetNativeSystemInfo]
mov ax, word [ebp - 0x80]
cmp ax, 9
je 0x405b43
cmp ax, 6
je 0x405b43
xor eax, eax
jmp 0x405b48
mov eax, 1
test eax, eax
mov dword [ebp - 0xa0], 7
mov edx, str.zzdsMenu_64.dll
mov dword [ebp - 0xa4], 0
mov ecx, str.zzdsMenu_32.dll
cmove edx, ecx
xor eax, eax
mov word [ebp - 0xb4], ax
cmp word [edx], ax
jne 0x405b7d
xor ecx, ecx
jmp 0x405b91
mov ecx, edx
lea ebx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x405b82
sub ecx, ebx
sar ecx, 1
push ecx
push edx
lea ecx, [ebp - 0xb4]
call fcn.00401d70
lea eax, [ebp - 0xb4]
mov dword [ebp - 4], 0
push eax
mov ecx, edi
call fcn.004070d0
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0xa0]
cmp eax, 8
jb 0x405bd8
inc eax
lea ecx, [ebp - 0xb4]
push eax
push dword [ebp - 0xb4]
call fcn.00401ed0
push 0xf
xor eax, eax
mov dword [ebp - 0xa0], 7
push str.ZZWordAddin.dll
lea ecx, [ebp - 0xb4]
mov dword [ebp - 0xa4], 0
mov word [ebp - 0xb4], ax
call fcn.00401d70
lea eax, [ebp - 0xb4]
mov dword [ebp - 4], 1
push eax
mov ecx, edi
call fcn.004070d0
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0xa0]
cmp eax, 8
jb 0x405c41
inc eax
lea ecx, [ebp - 0xb4]
push eax
push dword [ebp - 0xb4]
call fcn.00401ed0
push 0
mov dword [ebp - 0x90], 0
mov dword [ebp - 0x94], 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push str.ZIPRES
push 0x84
push eax
mov dword [ebp - 0x88], eax
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov ebx, eax
test ebx, ebx
jne 0x405c82
mov dword [ebp - 0x88], eax
jmp 0x405cd0
push ebx
push dword [ebp - 0x88]
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov dword [ebp - 0x8c], eax
push ebx
test eax, eax
jne 0x405cac
call dword [sym.imp.KERNEL32.dll_FreeResource]
mov dword [ebp - 0x88], 0
jmp 0x405cd0
push dword [ebp - 0x88]
call dword [sym.imp.KERNEL32.dll_SizeofResource]
push dword [ebp - 0x8c]
mov dword [ebp - 0x90], eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov dword [ebp - 0x88], eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push 0x514298
push 0x83
push eax
mov dword [ebp - 0x8c], eax
call dword [sym.imp.KERNEL32.dll_FindResourceW]
mov ebx, eax
test ebx, ebx
je 0x405d37
push ebx
push dword [ebp - 0x8c]
call dword [sym.imp.KERNEL32.dll_LoadResource]
mov dword [ebp - 0x98], eax
push ebx
test eax, eax
jne 0x405d17
call dword [sym.imp.KERNEL32.dll_FreeResource]
xor ebx, ebx
jmp 0x405d37
push dword [ebp - 0x8c]
call dword [sym.imp.KERNEL32.dll_SizeofResource]
push dword [ebp - 0x98]
mov dword [ebp - 0x94], eax
call dword [sym.imp.KERNEL32.dll_LockResource]
mov ebx, eax
cmp dword [ebp - 0x88], 0
je 0x405dfd
cmp dword [ebp - 0x90], 0
je 0x405dfd
test ebx, ebx
je 0x405dfd
cmp dword [ebp - 0x94], 0
je 0x405dfd
push 0x48
lea eax, [ebp - 0x5c]
push 0
push eax
call fcn.004c3b60
add esp, 0xc
lea ecx, [ebp - 0x5c]
push ebx
call fcn.004016c0
sub esp, 0x28
mov dword [ebp - 4], 2
mov al, byte [ebp - 0xa8]
mov ecx, esp
push 0x64
mov dword [ecx], vtable.std::_Func_base_void__int_.0
mov dword [ecx], vtable.._AV___Func_impl_V___Binder_U_Unforced_std__P8CInstallCtrl__AEXH_ZQAV3_ABU___Ph__00_2__std__V__allocator_H_2_XH_std__.0
mov dword [ecx + 4], 0x4067f0
mov byte [ecx + 8], al
mov dword [ecx + 0xc], edi
mov dword [ecx + 0x24], ecx
lea ecx, [ebp - 0x5c]
push 0
call fcn.004017e0
cmp dword [esi + 0x14], 8
jb 0x405dc1
mov esi, dword [esi]
push esi
push dword [ebp - 0x90]
lea ecx, [ebp - 0x5c]
push dword [ebp - 0x88]
call fcn.00401860
lea ecx, [ebp - 0x5c]
mov dword [ebp - 4], 0xffffffff
mov bl, al
call fcn.00401770
test bl, bl
je 0x405e03
push 1
mov ecx, edi
call fcn.00406810
mov ecx, edi
call fcn.00406f20
jmp 0x405e03
mov bl, byte [ebp - 0x81]
call dword [sym.imp.ole32.dll_CoUninitialize]
mov ecx, dword [edi + 0x1c]
test ecx, ecx
je 0x405e22
push 0
movzx eax, bl
push eax
push 0x403
push ecx
call dword [sym.imp.USER32.dll_PostMessageW]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00412614
mov esp, ebp
pop ebp
ret 4