Function at 0x4558a0
Capabilities:
Link many functions at runtime
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4bad68
mov eax, dword fs:[0]
push eax
sub esp, 0x18
push ebx
push esi
push edi
mov eax, dword [0x5603e8]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
dec eax
cmp eax, 3
ja case.default.0x4558d1
jmp dword [eax*4 + 0x455df4]
mov dword [ebp + 8], 0x4d826c
mov dword [ebp - 0x10], str.Microsoft_Office_11.0_Object_Library
jmp case.default.0x4558d1
mov dword [ebp + 8], 0x4d8214
mov dword [ebp - 0x10], str.Microsoft_Office_12.0_Object_Library
jmp case.default.0x4558d1
mov dword [ebp + 8], 0x4d81bc
mov dword [ebp - 0x10], str.Microsoft_Office_14.0_Object_Library
jmp case.default.0x4558d1
mov dword [ebp + 8], 0x4d8164
mov dword [ebp - 0x10], str.Microsoft_Office_15.0_Object_Library
xor edi, edi
mov dword [ebp - 0x24], edi
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], edi
push 0x2001f
push str.TypeLib
push edi
mov dword [ebp - 4], edi
call fcn.0043b220
add esp, 4
push eax
lea ecx, [ebp - 0x24]
call fcn.00412570
mov esi, eax
cmp esi, edi
je 0x455968
mov eax, dword [ebp - 0x24]
cmp eax, edi
je 0x455954
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x14], edi
cmp ebx, edi
je 0x4559c6
cmp dword [ebx], edi
je 0x4559b7
push str.Advapi32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
cmp eax, edi
je 0x455a00
push str.RegCreateKeyTransactedW
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, edi
je 0x455a00
mov ecx, dword [ebx]
mov esi, dword [ebp - 0x24]
push edi
push ecx
lea edx, [ebp - 0x18]
push edx
lea ecx, [ebp - 0x14]
push ecx
push edi
push 0x2001f
push edi
push edi
push edi
push str.2DF8D04C_5BFA_101B_BDE5_00AA0044DE52
push esi
call eax
jmp 0x4559e6
cmp dword [ebx + 4], edi
je 0x455a00
lea edx, [ebp - 0x18]
push edx
lea eax, [ebp - 0x14]
push eax
jmp 0x4559ce
lea ecx, [ebp - 0x18]
push ecx
lea edx, [ebp - 0x14]
push edx
mov esi, dword [ebp - 0x24]
push edi
push 0x2001f
push edi
push edi
push edi
push str.2DF8D04C_5BFA_101B_BDE5_00AA0044DE52
push esi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
cmp eax, edi
jne 0x455a03
cmp esi, edi
je 0x4559f5
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, dword [ebp - 0x14]
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x20], edi
jmp 0x455a03
mov esi, dword [ebp - 0x24]
mov dword [ebp - 0x14], edi
cmp ebx, edi
je 0x455a50
cmp dword [ebx], edi
je 0x455a4b
push str.Advapi32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
cmp eax, edi
je 0x455a84
push str.RegCreateKeyTransactedW
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, edi
je 0x455a84
mov ecx, dword [ebx]
push edi
push ecx
lea edx, [ebp - 0x18]
push edx
mov edx, dword [ebp + 8]
lea ecx, [ebp - 0x14]
push ecx
push edi
push 0x2001f
push edi
push edi
push edi
push edx
push esi
call eax
jmp 0x455a6c
cmp dword [ebx + 4], edi
je 0x455a84
mov edx, dword [ebp + 8]
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0x14]
push ecx
push edi
push 0x2001f
push edi
push edi
push edi
push edx
push esi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
cmp eax, edi
jne 0x455a84
cmp esi, edi
je 0x455a7b
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, dword [ebp - 0x14]
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x20], edi
cmp dword [ebp - 0x10], edi
jne 0x455a93
push 0x80004005
call fcn.00417330
mov eax, dword [ebp - 0x10]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov edx, dword [ebp - 0x10]
lea ecx, [eax + eax + 2]
push ecx
push edx
push 1
push edi
push edi
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov dword [ebp - 0x14], edi
cmp ebx, edi
je 0x455b09
cmp dword [ebx], edi
je 0x455afa
push str.Advapi32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
cmp eax, edi
je 0x455b3e
push str.RegCreateKeyTransactedW
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, edi
je 0x455b3e
mov ecx, dword [ebx]
push edi
push ecx
lea edx, [ebp - 0x18]
push edx
lea ecx, [ebp - 0x14]
push ecx
push edi
push 0x2001f
push edi
push edi
push edi
push 0x4c9330
push esi
call eax
jmp 0x455b26
cmp dword [ebx + 4], edi
je 0x455b3e
lea edx, [ebp - 0x18]
push edx
lea eax, [ebp - 0x14]
push eax
jmp 0x455b11
lea ecx, [ebp - 0x18]
push ecx
lea edx, [ebp - 0x14]
push edx
push edi
push 0x2001f
push edi
push edi
push edi
push 0x4c9330
push esi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
cmp eax, edi
jne 0x455b3e
cmp esi, edi
je 0x455b35
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, dword [ebp - 0x14]
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x14], edi
cmp ebx, edi
je 0x455b96
cmp dword [ebx], edi
je 0x455b87
push str.Advapi32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
cmp eax, edi
je 0x455bcb
push str.RegCreateKeyTransactedW
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, edi
je 0x455bcb
mov ecx, dword [ebx]
push edi
push ecx
lea edx, [ebp - 0x18]
push edx
lea ecx, [ebp - 0x14]
push ecx
push edi
push 0x2001f
push edi
push edi
push edi
push str.win32
push esi
call eax
jmp 0x455bb3
cmp dword [ebx + 4], edi
je 0x455bcb
lea edx, [ebp - 0x18]
push edx
lea eax, [ebp - 0x14]
push eax
jmp 0x455b9e
lea ecx, [ebp - 0x18]
push ecx
lea edx, [ebp - 0x14]
push edx
push edi
push 0x2001f
push edi
push edi
push edi
push str.win32
push esi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
cmp eax, edi
jne 0x455bcb
cmp esi, edi
je 0x455bc2
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, dword [ebp - 0x14]
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x20], edi
mov ebx, dword [ebp + 0xc]
cmp ebx, edi
jne 0x455bdc
push 0x80004005
call fcn.00417330
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
add eax, eax
push eax
push ebx
push 1
push edi
push edi
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push 0x2001f
push str.TypeLib
push edi
call fcn.0043b220
add esp, 4
push eax
lea ecx, [ebp - 0x24]
call fcn.00412570
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 0x14], edi
cmp ebx, edi
je 0x455c6d
cmp dword [ebx], edi
je 0x455c5e
push str.Advapi32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
cmp eax, edi
je 0x455ca7
push str.RegCreateKeyTransactedW
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, edi
je 0x455ca7
mov ecx, dword [ebx]
mov esi, dword [ebp - 0x24]
push edi
push ecx
lea edx, [ebp - 0x18]
push edx
lea ecx, [ebp - 0x14]
push ecx
push edi
push 0x2001f
push edi
push edi
push edi
push str.2DF8D04C_5BFA_101B_BDE5_00AA0044DE52
push esi
call eax
jmp 0x455c8d
cmp dword [ebx + 4], edi
je 0x455ca7
lea edx, [ebp - 0x18]
push edx
lea eax, [ebp - 0x14]
push eax
jmp 0x455c75
lea ecx, [ebp - 0x18]
push ecx
lea edx, [ebp - 0x14]
push edx
mov esi, dword [ebp - 0x24]
push edi
push 0x2001f
push edi
push edi
push edi
push str.2DF8D04C_5BFA_101B_BDE5_00AA0044DE52
push esi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
cmp eax, edi
jne 0x455caa
cmp esi, edi
je 0x455c9c
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, dword [ebp - 0x14]
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x20], edi
jmp 0x455caa
mov esi, dword [ebp - 0x24]
mov dword [ebp - 0x14], edi
cmp ebx, edi
je 0x455cf7
cmp dword [ebx], edi
je 0x455cf2
push str.Advapi32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
cmp eax, edi
je 0x455d2b
push str.RegCreateKeyTransactedW
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, edi
je 0x455d2b
mov ecx, dword [ebx]
push edi
push ecx
lea edx, [ebp - 0x18]
push edx
mov edx, dword [ebp + 8]
lea ecx, [ebp - 0x14]
push ecx
push edi
push 0x2001f
push edi
push edi
push edi
push edx
push esi
call eax
jmp 0x455d13
cmp dword [ebx + 4], edi
je 0x455d2b
mov edx, dword [ebp + 8]
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0x14]
push ecx
push edi
push 0x2001f
push edi
push edi
push edi
push edx
push esi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
cmp eax, edi
jne 0x455d2b
cmp esi, edi
je 0x455d22
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, dword [ebp - 0x14]
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x20], edi
mov dword [ebp + 8], edi
cmp ebx, edi
je 0x455d83
cmp dword [ebx], edi
je 0x455d74
push str.Advapi32.dll
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
cmp eax, edi
je 0x455db2
push str.RegCreateKeyTransactedW
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, edi
je 0x455db2
mov ecx, dword [ebx]
push edi
push ecx
lea edx, [ebp - 0x18]
push edx
lea ecx, [ebp + 8]
push ecx
push edi
push 0x2001f
push edi
push edi
push edi
push str.FLAGS
push esi
call eax
jmp 0x455da0
cmp dword [ebx + 4], edi
je 0x455db2
lea edx, [ebp - 0x18]
push edx
lea eax, [ebp + 8]
push eax
jmp 0x455d8b
lea ecx, [ebp - 0x18]
push ecx
lea edx, [ebp + 8]
push edx
push edi
push 0x2001f
push edi
push edi
push edi
push str.FLAGS
push esi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
cmp eax, edi
jne 0x455db2
cmp esi, edi
je 0x455daf
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, dword [ebp + 8]
push 0x4c9330
call dword [sym.imp.KERNEL32.dll_lstrlenW]
inc eax
add eax, eax
push eax
push 0x4c9330
push 1
push edi
push edi
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov ebx, eax
cmp esi, edi
je 0x455dde
push esi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret