Function at 0x401000
Capabilities:
Accept command line arguments
Create process on windows
Terminate process

Disassembly:
push ebp
push ebx
push edi
push esi
mov eax, 0x2084c
call fcn.004013c0
lea edi, [esp + 0x44]
push 0x400
push edi
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
cmp eax, 0x400
jne 0x401043
push 0x10
push str.TMLoader
push str.Failed_to_launch_a_game_with_modifications__because_the_path_is_too_long.
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
push 1
call dword [sym.imp.KERNEL32.dll_ExitProcess]
mov edx, 1
nop dword [eax + eax]
mov esi, edi
xor eax, eax
add edi, 2
mov ecx, esi
jmp 0x401073
cmp esi, ecx
movzx eax, al
cmovne eax, edx
cmove ecx, edi
nop word cs:[eax + eax]
add edi, 2
movzx ebx, word [edi - 2]
cmp ebx, 0x2e
jle 0x401090
cmp ebx, 0x5c
je 0x401050
cmp ebx, 0x2f
jne 0x401070
jmp 0x401050
je 0x40105b
test ebx, ebx
jne 0x401070
test al, 1
cmove ecx, esi
movzx edx, word [esi]
cmp edx, 0x53
je 0x4010b0
test edx, edx
je 0x40113e
jmp 0x40115a
movzx edx, word [esi + 2]
test edx, edx
je 0x40113e
cmp edx, 0x68
jne 0x40115a
movzx edx, word [esi + 4]
test edx, edx
je 0x40113e
cmp edx, 0x69
jne 0x40115a
movzx edx, word [esi + 6]
test edx, edx
je 0x40113e
cmp edx, 0x6d
jne 0x40115a
movzx edx, word [esi + 8]
test edx, edx
je 0x40113e
cmp edx, 0x52
jne 0x40115a
movzx edx, word [esi + 0xa]
test edx, edx
je 0x40113e
cmp edx, 0x75
jne 0x40115a
movzx edx, word [esi + 0xc]
test edx, edx
je 0x40113e
cmp edx, 0x6e
jne 0x40115a
movzx edx, word [esi + 0xe]
test edx, edx
je 0x40113e
cmp edx, 0x2e
jne 0x40115a
movzx edx, word [esi + 0x10]
test edx, edx
je 0x40113e
cmp edx, 0x65
jne 0x40115a
movzx edx, word [esi + 0x12]
test edx, edx
je 0x40113e
cmp edx, 0x78
jne 0x40115a
movzx edx, word [esi + 0x14]
test edx, edx
je 0x40113e
cmp edx, 0x65
jne 0x40115a
push 0x10
push str.TMLoader
push str.This_program_is_not_yet_integrated_to_any_game.
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
push 2
call dword [sym.imp.KERNEL32.dll_ExitProcess]
movaps xmm0, xmmword [str.tmml:rundefa]
movups xmmword [esp + 0x84c], xmm0
mov word [esp + 0x85c], 0x3b
mov edi, 0x22
nop dword [eax + eax]
movzx edx, word [ecx + edi - 0x22]
test edx, edx
je 0x40119b
cmp edx, 0x2e
je 0x40119b
mov word [esp + edi + 0x83c], dx
add edi, 2
jmp 0x401180
mov word [esp + edi + 0x83c], 0x3b
test al, 1
jne 0x40124f
movsd xmm0, qword [0x402010]
movsd qword [esp + edi + 0x83e], xmm0
mov dword [esp + edi + 0x846], 0x6c0075
mov word [esp + edi + 0x84a], 0x74
lea ebp, [esp + edi]
add ebp, 0x84c
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
xor ebx, ebx
test eax, eax
je 0x4012da
mov word [ebp], 0x3b
movzx ecx, word [eax]
cmp cx, 0x22
jne 0x401220
add eax, 2
nop
movzx ecx, word [eax]
add eax, 2
test ecx, ecx
je 0x4012cc
cmp ecx, 0x22
jne 0x401200
cmp word [eax], 0
jne 0x401236
jmp 0x4012cf
test cx, cx
je 0x4012cf
movzx ecx, word [eax + 2]
add eax, 2
cmp cx, 0x20
jne 0x401220
movzx ecx, word [eax + 2]
mov ebx, eax
nop dword [eax]
add ebx, 2
cmp cx, 0x20
jne 0x401284
movzx ecx, word [ebx + 2]
jmp 0x401240
add edi, 0xfffffff2
mov eax, esi
nop word cs:[eax + eax]
movzx ecx, word [eax]
test ecx, ecx
je 0x4011d3
cmp ecx, 0x2e
je 0x4011d3
add eax, 2
mov word [esp + edi + 0x84c], cx
add edi, 2
jmp 0x401260
lea eax, [esp + 0x84c]
lea ebp, [edi + eax]
add ebp, 2
test cx, cx
je 0x4012da
cmp edi, 0x1fffa
jg 0x4012da
lea ebp, [esp + edi]
add ebp, 0x84c
mov eax, 2
mov word [ebp + eax], cx
movzx ecx, word [ebx + eax]
lea edx, [eax + 2]
test cx, cx
je 0x4012c8
add eax, edi
cmp eax, 0x1fffb
mov eax, edx
jl 0x4012ac
add ebp, edx
jmp 0x4012da
add eax, 0xfffffffe
lea ebp, [esp + edi]
add ebp, 0x84e
mov ebx, eax
mov word [ebp], 0
mov dword [esp], 0
mov dword [esp + 0x2c], 0
mov word [esp + 0x30], 0
mov eax, esp
push eax
call dword [sym.imp.KERNEL32.dll_GetStartupInfoW]
test byte [esp + 0x2c], 1
movzx eax, word [esp + 0x30]
mov edi, 0xa
cmovne edi, eax
lea eax, [esp + 0x84c]
push edi
push 0
push 0
push eax
push 0
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
cmp eax, 0x20
ja 0x4013ac
push 0x30
push str.TMLoader
push str.Failed_to_launch_a_game_with_modifications._nTo_fix_this_issue__run_TMLoader_and_install_the_protocol._nTrying_to_launch_the_backup_game_instead.
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
nop word cs:[eax + eax]
cmp word [esi], 0x2e
lea esi, [esi + 2]
jne 0x401350
mov eax, dword [esi]
mov dword [esi + 8], eax
movzx eax, word [esi + 4]
mov word [esi + 0xc], ax
movsd xmm0, qword [str.bak.]
movsd qword [esi], xmm0
mov word [esi + 0xe], 0
lea eax, [esp + 0x44]
push edi
push 0
push ebx
push eax
push 0
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
cmp eax, 0x20
ja 0x4013ac
push 0x10
push str.TMLoader
push str.Failed_to_launch_the_backup_game.
push 0
call dword [sym.imp.USER32.dll_MessageBoxW]
push 3
call dword [sym.imp.KERNEL32.dll_ExitProcess]
push 0
call dword [sym.imp.KERNEL32.dll_ExitProcess]