Function at 0x415657
Capabilities:
Create process on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x6d96ad
mov eax, dword fs:[0]
push eax
sub esp, 0x10
push ebx
push esi
push edi
mov eax, dword [0x79a200]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
push str.Patch_Start_
call fcn.0041d700
add esp, 4
cmp dword [edi + 0x40], 0
je 0x415898
push ecx
push dword [edi + 8]
call fcn.004152f0
push 0x7addc8
mov dword [ebp - 0x1c], 0x7addc8
mov byte [ebp - 0x18], 1
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
lea ecx, [edi - 4]
mov dword [ebp - 4], 0
call fcn.004158d0
cmp eax, 4
ja case.default.0x415628
jmp dword [eax*4 + 0x4158b4]
push str.Patch_Success_
call fcn.0041d700
mov eax, dword [edi + 0x40]
add esp, 4
mov dword [edi + 0x3c], 0xa
test eax, eax
je case.default.0x415628
push 0
push 0xa
jmp 0x415881
push str.Launcher_Restart_because_Launcher_Patched.
call fcn.0041d700
mov eax, dword [0x7adb38]
add esp, 4
test eax, eax
je 0x41567e
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [0x7adb38], 0
mov eax, dword fs:[0x2c]
mov ecx, dword [eax]
mov eax, dword [0x7ae4ec]
cmp eax, dword [ecx + 8]
jle 0x4156c5
push 0x7ae4ec
call fcn.0068d914
add esp, 4
cmp dword [0x7ae4ec], 0xffffffff
jne 0x4156c5
call fcn.0040f780
push 0x6ea4a0
call fcn.0068dbb4
push 0x7ae4ec
call fcn.0068d8c3
add esp, 8
mov eax, dword [0x7ae544]
add eax, 0xfffffff0
push eax
call fcn.004066d0
add eax, 0x10
add esp, 4
mov dword [ebp - 0x14], eax
mov byte [ebp - 4], 1
mov ecx, dword [eax - 0x10]
test ecx, ecx
je 0x4156f2
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
jne 0x415708
call fcn.0054592c
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
mov ecx, eax
test ecx, ecx
je 0x4158aa
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x10], eax
mov eax, 0x77182c
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x10]
test eax, 0xffff0000
jne 0x415731
movzx eax, ax
push eax
call fcn.00406a60
jmp 0x41573b
push 0x77182c
call fcn.0040bd50
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x14]
mov esi, dword [ebp - 0x10]
push dword [esi - 0xc]
push esi
call fcn.0040bc00
or ebx, 0xffffffff
mov byte [ebp - 4], 1
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x41576c
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [0x7adc2c]
cmp dword [eax - 4], 1
jle 0x415789
push dword [eax - 0xc]
mov ecx, 0x7adc2c
call fcn.00406e20
mov eax, dword [0x7adc2c]
mov esi, dword [ebp - 0x14]
push 1
push 0
push eax
push esi
push 0
push dword [edi + 0x40]
call dword [sym.imp.SHELL32.dll_ShellExecuteW]
mov eax, dword [edi + 0x40]
mov dword [edi + 0x3c], 0xb
test eax, eax
je 0x4157bb
push 0
push 0xb
push 0x8065
push eax
call dword [sym.imp.USER32.dll_PostMessageW]
mov byte [ebp - 4], 0
add esi, 0xfffffff0
lock xadd dword [esi + 0xc], ebx
dec ebx
test ebx, ebx
jg case.default.0x415628
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
jmp case.default.0x415628
push str.ProcessFullVersionPatch
call fcn.0041d700
mov edx, 0x3f5
lea ecx, [ebp - 0x10]
call fcn.0041abd0
mov byte [ebp - 4], 4
push dword [ebp - 0x10]
push 0
call fcn.0041d690
add esp, 0xc
push 0
push 0
push dword [ebp - 0x10]
call fcn.0054779e
mov byte [ebp - 4], 0
or eax, 0xffffffff
mov edx, dword [ebp - 0x10]
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x415830
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push 0
push 0
push 0x10
push dword [edi + 0x40]
call dword [sym.imp.USER32.dll_SendMessageW]
jmp case.default.0x415628
push str.Patch_Failed_
call fcn.0041d700
mov eax, dword [edi + 0x40]
add esp, 4
mov dword [edi + 0x3c], 0xc
test eax, eax
je case.default.0x415628
push 0
push 0xc
jmp 0x415881
push str.Patch_Terminate_
call fcn.0041d700
mov eax, dword [edi + 0x40]
add esp, 4
mov dword [edi + 0x3c], 0xd
test eax, eax
je case.default.0x415628
push 0
push 0xd
push 0x8065
push eax
call dword [sym.imp.USER32.dll_PostMessageW]
push 0x7addc8
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.00407310
inc ecx
pop eax
inc ecx
add byte [edi], ch
push esi
inc ecx
add byte [edi + 0x56], dl
inc ecx
add ch, bl
push edi
inc ecx
add byte [edx + 0x58], ah
inc ecx
add ah, cl
int3