Function at 0x40aaf3
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, 0x2c
or dword [esp + 8], 0xffffffff
push ebx
push esi
push edi
push 0xfffffffffffffffe
pop edi
xor ebx, ebx
push ecx
push ecx
mov byte [esp + 0x17], bl
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x24], ebx
mov byte [esp + 0x16], bl
call fcn.0040ebcf
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
mov esi, eax
mov dword [esp + 0x28], vtable.Mso::Logging::StructuredObject_wchar_t_const___1_.0
xor eax, eax
mov dword [esp + 0x2c], str.Param
mov word [esp + 0x34], ax
mov edx, 0x851
lea eax, [esp + 0x28]
mov dword [esp + 0x30], esi
push eax
push 0x4385a4
push 0x64
pop eax
push eax
mov ecx, 0x170b043
call fcn.00401c18
mov edx, str..exe
mov ecx, esi
call fcn.0040c108
mov dword [esp + 0x18], 0x22
test eax, eax
je 0x40ab7d
lea esi, [eax + 8]
jmp 0x40abcc
mov edx, str.msohtmed
mov ecx, esi
call fcn.0040c108
test eax, eax
je 0x40ab92
lea esi, [eax + 0x10]
jmp 0x40abcc
push 0x22
pop eax
cmp word [esi], ax
jne 0x40abb7
lea ecx, [esi + 2]
mov edx, eax
call fcn.0040bdf6
test eax, eax
je 0x40abb7
push 0x20
lea ecx, [eax + 2]
pop edx
call fcn.0040bdf6
test eax, eax
jne 0x40abc9
push 0x20
pop edx
mov ecx, esi
call fcn.0040bdf6
test eax, eax
je 0x40af0f
lea esi, [eax + 2]
movzx eax, word [esi]
mov edx, esi
mov ecx, eax
mov dword [esp + 0x10], esi
cmp ax, word [esp + 0x18]
jne 0x40abf4
push 0x22
pop ecx
add esi, 2
movzx eax, word [esi]
cmp ax, cx
je 0x40abe1
mov dword [esp + 0x10], esi
mov ecx, eax
mov edx, esi
push 0x20
pop eax
cmp cx, ax
jne 0x40ac0a
lea esi, [edx + 2]
mov edx, esi
mov dword [esp + 0x10], esi
cmp word [esi], ax
je 0x40abfc
mov edx, esi
mov ecx, str._regserver
call fcn.0040be84
test eax, eax
jne 0x40ac3a
mov edx, esi
mov ecx, str._regserverfp
call fcn.0040be84
test eax, eax
jne 0x40ac3a
mov edx, esi
mov ecx, str._unregserver
call fcn.0040be84
test eax, eax
je 0x40acb6
push str.MSOHTMED_REG
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov dword [esp + 0x1c], eax
test eax, eax
je 0x40af0f
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x40af00
mov edx, esi
mov ecx, str._regserverfp
call fcn.0040be84
test eax, eax
je 0x40ac8b
xor edx, edx
inc edx
call fcn.00405dba
neg eax
sbb eax, eax
and eax, 2
add edi, eax
jmp 0x40af00
mov edx, esi
mov ecx, str._regserver
call fcn.0040be84
test eax, eax
je 0x40ac9f
xor edx, edx
jmp 0x40ac78
mov edx, esi
mov ecx, str._unregserver
call fcn.0040be84
test eax, eax
je 0x40acb6
call fcn.00408110
jmp 0x40ac7d
mov edx, esi
mov ecx, 0x438638
call fcn.0040be84
test eax, eax
je 0x40ad0a
movzx eax, word [esi + 4]
cmp eax, 0x30
jb 0x40af00
cmp eax, 0x39
ja 0x40af00
cmp word [esi + 6], bx
jne 0x40af00
mov word [esp + 0x14], ax
lea ecx, [esp + 0x14]
push 0xa
xor eax, eax
pop edx
mov word [esp + 0x16], ax
call fcn.0040c2a0
mov ecx, eax
call fcn.004099ba
jmp 0x40ac7d
mov edx, esi
mov dword [esp + 0x18], ebx
mov ecx, 0x4379e0
call fcn.0040be84
test eax, eax
je 0x40ad2d
add esi, 6
mov dword [esp + 0x18], 1
mov dword [esp + 0x10], esi
mov edx, esi
mov ecx, 0x438640
call fcn.0040be84
test eax, eax
je 0x40ad49
add esi, 6
mov byte [esp + 0xf], 1
mov dword [esp + 0x10], esi
mov edx, esi
mov ecx, 0x438648
call fcn.0040be84
test eax, eax
je 0x40adb6
movzx ecx, word [esi + 4]
mov edx, ecx
call fcn.0040c175
push 0x64
pop ebx
push 0x20
cmp ax, bx
pop ebx
jne 0x40ad7c
cmp word [esi + 6], bx
jne 0x40ad7c
mov byte [esp + 0xe], 1
jmp 0x40adaf
lea eax, [edx - 0x30]
cmp ax, 9
ja 0x40af00
cmp word [esi + 6], bx
jne 0x40af00
push 0xa
mov word [esp + 0x18], cx
xor eax, eax
pop edx
lea ecx, [esp + 0x14]
mov word [esp + 0x16], ax
call fcn.0040c2a0
mov dword [esp + 0x14], eax
add esi, 8
mov dword [esp + 0x10], esi
movzx ebx, word [esi]
push 0x22
pop ecx
mov eax, ebx
cmp bx, cx
jne 0x40ae00
mov ecx, esi
call fcn.0040bd8c
mov ecx, eax
mov eax, ebx
push 0x22
pop edx
mov dword [esp + 0x20], ecx
cmp word [esi + ecx*2 - 2], dx
jne 0x40ae00
lea ecx, [esi + 2]
call fcn.0040c066
mov ebx, eax
test ebx, ebx
je 0x40af00
mov eax, dword [esp + 0x20]
xor ecx, ecx
mov esi, ebx
mov word [ebx + eax*2 - 4], cx
movzx eax, word [ebx]
jmp 0x40ae02
xor ebx, ebx
test ax, ax
je 0x40aee6
lea eax, [esp + 0x10]
push eax
push str.Param
lea ecx, [esp + 0x30]
call fcn.00401bdd
push eax
push str.WinMain:_Before_PHevCreateFileInfo
push 0x64
pop eax
push eax
mov edx, 0x851
mov ecx, 0x170b046
call fcn.00401c18
xor edx, edx
mov ecx, esi
call fcn.00401db3
mov esi, eax
test esi, esi
je 0x40aeea
lea eax, [esp + 0x10]
push eax
push str.Param
lea ecx, [esp + 0x30]
call fcn.00401bdd
push eax
push str.WinMain:_Before_WHevParseFile
push 0x64
pop eax
push eax
mov edx, 0x851
mov ecx, 0x170b047
call fcn.00401c18
cmp dword [esp + 0x14], 0xffffffff
jne 0x40ae91
cmp byte [esp + 0xe], 0
jne 0x40ae91
mov ecx, esi
call fcn.0040af5a
mov dword [esp + 0x14], eax
jmp 0x40ae98
mov ecx, esi
call fcn.0040af5a
lea eax, [esp + 0x10]
push eax
push str.Param
lea ecx, [esp + 0x30]
call fcn.00401bdd
push eax
push str.WinMain:_Before_FHevActivateApp
push 0x64
pop eax
push eax
mov edx, 0x851
mov ecx, 0x170b048
call fcn.00401c18
cmp byte [esp + 0xf], 0
mov eax, dword [esp + 0x14]
jne 0x40aee2
cmp eax, edi
je 0x40aee2
push dword [esp + 0x18]
mov edx, esi
mov ecx, eax
call fcn.00402202
jmp 0x40aeea
mov edi, eax
jmp 0x40aeea
mov esi, dword [esp + 0x24]
test ebx, ebx
je 0x40aef5
mov ecx, ebx
call fcn.00401cf4
test esi, esi
je 0x40af00
mov ecx, esi
call fcn.00401f55
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x40af0f
push eax
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
call fcn.00401775
test eax, eax
je 0x40af1e
call dword [sym.imp.ole32.dll_CoUninitialize]
lea eax, [esp + 0x24]
mov dword [esp + 0x24], 0x4367f0
push eax
push str.Param
lea ecx, [esp + 0x30]
call fcn.00401bdd
push eax
push str.WinMain__EXIT_
push 0x64
pop eax
push eax
mov edx, 0x851
mov ecx, 0x170b049
call fcn.00401c18
push edi
call dword [sym.imp.KERNEL32.dll_ExitProcess]