Function at 0x40a480
Capabilities:
Accept command line arguments
Check mutex and terminate process on windows
Check mutex on windows
Terminate process

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x4c
or dword [esp + 8], 0xffffffff
push ebx
push esi
push edi
push 0xfffffffffffffffe
xor ebx, ebx
pop edi
push ecx
mov ecx, 0x43de08
mov dword [esp + 0x20], ebx
mov byte [esp + 0x17], bl
mov byte [esp + 0x16], bl
mov dword [esp + 0x24], ebx
mov byte [esp + 0x15], bl
call fcn.0040e36e
push 2
pop esi
test al, al
je 0x40a4ff
xorps xmm0, xmm0
mov dword [esp + 0x44], ebx
lea ecx, [esp + 0x34]
mov dword [esp + 0x48], str.Office
movups xmmword [esp + 0x34], xmm0
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], esi
mov dword [esp + 0x54], edi
call fcn.0040de1b
push 5
push ecx
push esi
lea edx, [esp + 0x24]
mov dword [esp + 0x24], 1
mov ecx, 0x43de08
call fcn.0040e461
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov esi, eax
mov dword [esp + 0x28], vtable.Mso::Logging::StructuredObject_wchar_t_const___1_.0
lea eax, [esp + 0x28]
mov dword [esp + 0x18], esi
push eax
push str.WinMain:
push 0x64
pop eax
push eax
mov edx, 0x851
mov dword [esp + 0x38], str.Param
mov ecx, 0x170b043
mov dword [esp + 0x3c], esi
call fcn.00401cbf
test esi, esi
je 0x40a54e
mov edx, str..exe
mov ecx, esi
call fcn.0040b5f5
jmp 0x40a550
mov eax, ebx
push 0x22
pop edx
test eax, eax
je 0x40a55c
lea esi, [eax + 8]
jmp 0x40a5b9
test esi, esi
je 0x40a571
mov edx, str.msohtmed
mov ecx, esi
call fcn.0040b5f5
push 0x22
pop edx
jmp 0x40a573
mov eax, ebx
test eax, eax
je 0x40a57c
lea esi, [eax + 0x10]
jmp 0x40a5b9
cmp word [esi], dx
jne 0x40a5a2
lea ecx, [esi + 2]
call fcn.0040b32c
test eax, eax
je 0x40a5a2
push 0x20
lea ecx, [eax + 2]
pop edx
call fcn.0040b32c
mov esi, eax
test esi, esi
jne 0x40a5b6
mov esi, dword [esp + 0x18]
push 0x20
pop edx
mov ecx, esi
call fcn.0040b32c
mov esi, eax
test esi, esi
je 0x40a8df
add esi, 2
push 0x22
pop eax
jmp 0x40a5c1
add esi, 2
cmp word [esi], ax
je 0x40a5be
push 0x20
pop eax
jmp 0x40a5ce
add esi, 2
cmp word [esi], ax
je 0x40a5cb
mov edx, esi
mov ecx, str._regserver
call fcn.0040b412
test eax, eax
jne 0x40a603
mov edx, esi
mov ecx, str._regserverfp
call fcn.0040b412
test eax, eax
jne 0x40a603
mov edx, esi
mov ecx, str._unregserver
call fcn.0040b412
test eax, eax
je 0x40a67f
push str.MSOHTMED_REG
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [esp + 0x20], eax
test eax, eax
je 0x40a8df
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x40a8d0
mov edx, esi
mov ecx, str._regserverfp
call fcn.0040b412
test eax, eax
je 0x40a654
xor edx, edx
inc edx
call fcn.004059a9
neg eax
sbb eax, eax
and eax, 2
add edi, eax
jmp 0x40a8d0
mov edx, esi
mov ecx, str._regserver
call fcn.0040b412
test eax, eax
je 0x40a668
xor edx, edx
jmp 0x40a641
mov edx, esi
mov ecx, str._unregserver
call fcn.0040b412
test eax, eax
je 0x40a67f
call fcn.00407a9e
jmp 0x40a646
mov edx, esi
mov ecx, 0x41c4ec
call fcn.0040b412
test eax, eax
je 0x40a6d3
movzx eax, word [esi + 4]
cmp eax, 0x30
jb 0x40a8d0
cmp eax, 0x39
ja 0x40a8d0
cmp word [esi + 6], bx
jne 0x40a8d0
mov word [esp + 0x14], ax
lea ecx, [esp + 0x14]
push 0xa
xor eax, eax
pop edx
mov word [esp + 0x16], ax
call fcn.0040b796
mov ecx, eax
call fcn.00409251
jmp 0x40a646
mov edx, esi
mov ecx, 0x41b888
call fcn.0040b412
test eax, eax
je 0x40a6eb
add esi, 6
mov byte [esp + 0x13], 1
mov edx, esi
mov ecx, 0x41c4f4
call fcn.0040b412
test eax, eax
je 0x40a703
add esi, 6
mov byte [esp + 0x12], 1
mov edx, esi
mov ecx, 0x41c4fc
call fcn.0040b412
test eax, eax
je 0x40a76f
movzx ecx, word [esi + 4]
call fcn.0040b665
push 0x64
pop edx
push 0x20
cmp ax, dx
pop eax
jne 0x40a734
cmp word [esi + 6], ax
jne 0x40a734
mov byte [esp + 0x11], 1
jmp 0x40a76c
cmp ecx, 0x30
jb 0x40a8d0
cmp ecx, 0x39
ja 0x40a8d0
cmp word [esi + 6], ax
jne 0x40a8d0
push 0xa
mov word [esp + 0x18], cx
xor eax, eax
pop edx
lea ecx, [esp + 0x14]
mov word [esp + 0x16], ax
call fcn.0040b796
mov dword [esp + 0x14], eax
add esi, 8
push 0x22
pop ecx
mov eax, esi
mov dword [esp + 0x18], eax
cmp word [esi], cx
jne 0x40a7bf
mov ecx, esi
call fcn.0040b2d4
push 0x22
pop ecx
mov dword [esp + 0x24], eax
cmp word [esi + eax*2 - 2], cx
jne 0x40a7bd
lea ecx, [esi + 2]
xor edx, edx
call fcn.0040b555
mov ecx, eax
mov dword [esp + 0x1c], ecx
test ecx, ecx
je 0x40a8d0
mov eax, dword [esp + 0x24]
xor edx, edx
mov word [ecx + eax*2 - 4], dx
mov eax, ecx
mov dword [esp + 0x18], eax
jmp 0x40a7bf
mov eax, esi
cmp word [eax], bx
je 0x40a8b6
lea eax, [esp + 0x28]
mov dword [esp + 0x28], vtable.Mso::Logging::StructuredObject_wchar_t_const___1_.0
push eax
push str.WinMain:_Before_PHevCreateFileInfo
push 0x64
pop eax
push eax
mov edx, 0x851
mov dword [esp + 0x38], str.Param
mov ecx, 0x170b046
mov dword [esp + 0x3c], esi
call fcn.00401cbf
mov ecx, dword [esp + 0x18]
xor edx, edx
call fcn.00401e89
mov ebx, eax
test ebx, ebx
je 0x40a8b6
lea eax, [esp + 0x28]
mov dword [esp + 0x28], vtable.Mso::Logging::StructuredObject_wchar_t_const___1_.0
push eax
push str.WinMain:_Before_WHevParseFile
push 0x64
pop eax
push eax
mov edx, 0x851
mov dword [esp + 0x38], str.Param
mov ecx, 0x170b047
mov dword [esp + 0x3c], esi
call fcn.00401cbf
cmp dword [esp + 0x14], 0xffffffff
jne 0x40a85a
cmp byte [esp + 0x11], 0
jne 0x40a85a
mov ecx, ebx
call fcn.0040a92a
mov dword [esp + 0x14], eax
jmp 0x40a861
mov ecx, ebx
call fcn.0040a92a
lea eax, [esp + 0x28]
mov dword [esp + 0x28], vtable.Mso::Logging::StructuredObject_wchar_t_const___1_.0
push eax
push str.WinMain:_Before_FHevActivateApp
push 0x64
pop eax
push eax
mov edx, 0x851
mov dword [esp + 0x38], str.Param
mov ecx, 0x170b048
mov dword [esp + 0x3c], esi
call fcn.00401cbf
cmp byte [esp + 0x12], 0
mov ecx, dword [esp + 0x14]
jne 0x40a8b4
cmp ecx, edi
je 0x40a8b4
xor eax, eax
mov edx, ebx
cmp byte [esp + 0x13], al
setne al
push eax
call fcn.00402246
jmp 0x40a8b6
mov edi, ecx
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x40a8c5
mov ecx, eax
call fcn.00401e39
test ebx, ebx
je 0x40a8d0
mov ecx, ebx
call fcn.00401ff6
mov eax, dword [esp + 0x20]
test eax, eax
je 0x40a8df
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
cmp dword [0x43daa8], 0
je 0x40a8ee
call dword [sym.imp.ole32.dll_CoUninitialize]
lea eax, [esp + 0x24]
mov dword [esp + 0x24], 0x41a734
push eax
push str.Param
lea ecx, [esp + 0x30]
call fcn.00401c8a
push eax
push str.WinMain__EXIT_
push 0x64
pop eax
push eax
mov edx, 0x851
mov ecx, 0x170b049
call fcn.00401cbf
push edi
call dword [sym.imp.KERNEL32.dll_ExitProcess]