Function at 0x41a8f0
Capabilities:
Check if file exists
Check os version
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x53a625
mov eax, dword fs:[0]
push eax
sub esp, 0x36c
mov eax, dword [0x58d984]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ecx, 0x597b00
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x41a926
sub ecx, edx
sar ecx, 1
jne 0x41a93c
call fcn.00419e20
mov esi, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push 0x597b00
call esi
test eax, eax
je 0x41a9bd
push 0x208
lea eax, [ebp - 0x258]
push 0
push eax
call fcn.0050ce60
add esp, 0xc
lea eax, [ebp - 0x258]
push str.SodaMSOAddin.dll
push 0x597b00
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
lea eax, [ebp - 0x258]
push eax
lea ecx, [ebp - 0x374]
call fcn.004036d0
push dword [ebp - 0x374]
call esi
test eax, eax
je 0x41a99f
mov byte [0x597ae8], 1
mov edx, dword [ebp - 0x374]
or eax, 0xffffffff
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x41a9bd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, 0x597d74
call fcn.0041eeb0
test al, al
je 0x41ab93
cmp byte [0x58ce68], 0
je 0x41ab17
push 0x5979d0
mov dword [0x5979d0], 0x114
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
test eax, eax
jne 0x41aa9e
push 0x40
push eax
lea eax, [ebp - 0x50]
push eax
call fcn.0050ce60
add esp, 0xc
mov dword [ebp - 0x370], 1
lea eax, [ebp - 0x378]
mov dword [ebp - 0x378], 0x40
push eax
lea eax, [ebp - 0x50]
push eax
lea eax, [ebp - 0x370]
push eax
push 0x5472d4
push str.SOFTWAREMicrosoftWindows_NTCurrentVersion
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.SHLWAPI.dll_SHGetValueW]
test eax, eax
jne 0x41aa73
movsx eax, byte [ebp - 0x50]
sub eax, 0x30
mov dword [0x5979e0], 2
mov dword [0x5979d4], eax
lea eax, [ebp - 0x4e]
push eax
call fcn.0051745c
mov ecx, eax
add esp, 4
mov dword [0x5979d8], ecx
jmp 0x41aaa4
call dword [sym.imp.KERNEL32.dll_GetVersion]
movzx ecx, ax
mov bl, 4
shr ecx, 8
cmp bl, al
movzx edx, al
sbb eax, eax
mov dword [0x5979d4], edx
neg eax
mov dword [0x5979d8], ecx
inc eax
mov dword [0x5979e0], eax
jmp 0x41aaaa
mov ecx, dword [0x5979d8]
mov edx, dword [0x5979d4]
cmp edx, 6
ja 0x41aab6
jne 0x41ab10
cmp ecx, 2
jb 0x41ab10
push 0x110
lea eax, [ebp - 0x368]
push 0
push eax
call fcn.0050ce60
add esp, 0xc
mov dword [ebp - 0x36c], 0x114
push str.RtlGetVersion
push str.ntdll.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x41ab10
lea ecx, [ebp - 0x36c]
push ecx
call eax
test eax, eax
jne 0x41ab10
mov ecx, 0x45
lea esi, [ebp - 0x36c]
mov edi, 0x5979d0
rep movsd dword es:[edi], dword [esi]
mov byte [0x58ce68], 0
mov ecx, 0x45
lea edi, [ebp - 0x164]
mov esi, 0x5979d0
rep movsd dword es:[edi], dword [esi]
cmp dword [ebp - 0x160], 5
jne 0x41ab5a
cmp dword [ebp - 0x15c], 1
jb 0x41ab5a
call fcn.004049c0
push str.runSetup_XP
push str.Reader___SetupHelper
push eax
call fcn.00404b40
add esp, 0xc
xor al, al
jmp 0x41ac50
call fcn.004049c0
push str.runSetup_silent
push str.Reader___SetupHelper
push eax
call fcn.00404b40
add esp, 0xc
call fcn.0041a000
test al, al
je 0x41ab87
call fcn.004049c0
push str.runSetup_isLowerSetup
jmp 0x41ab45
call fcn.0041a750
xor al, al
jmp 0x41ac50
call fcn.004049c0
push str.runSetup_window
push str.Reader___SetupHelper
push eax
call fcn.00404b40
add esp, 0xc
push 0
push str.SodaMSOAddinSetupWnd_Class
call dword [sym.imp.USER32.dll_FindWindowW]
test eax, eax
je 0x41abde
push eax
call fcn.00405f00
call fcn.004049c0
push str.runSetup_window_already_exist
push str.Reader___SetupHelper
push eax
call fcn.00404b40
add esp, 0x10
xor al, al
jmp 0x41ac50
push 0x59a134
push 0x28
call fcn.004eda8b
add esp, 8
mov dword [ebp - 0x370], eax
mov dword [ebp - 4], 0
test eax, eax
je 0x41ac09
mov ecx, eax
call fcn.0043a230
mov esi, eax
jmp 0x41ac0b
xor esi, esi
push 0
push 0
push 0x86020000
push 0x544c1c
push 0
push esi
push str.SetupWnd.xml
push str.SetupWnd
mov dword [ebp - 4], 0xffffffff
call fcn.00446090
add esp, 0x20
test eax, eax
jne 0x41ac4e
test esi, esi
je 0x41ab53
mov eax, dword [esi]
mov ecx, esi
push 1
call dword [eax + 0x14]
xor al, al
jmp 0x41ac50
mov al, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004eda39
mov esp, ebp
pop ebp
ret