Function at 0x421fd0
Capabilities:
Check mutex on windows
Delete file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x49b678
mov eax, dword fs:[0]
push eax
sub esp, 0x20
push ebx
push esi
push edi
mov eax, dword [0x4c7050]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
call fcn.00418470
mov edi, eax
call fcn.0042dda0
test eax, eax
lea eax, [ebp - 0x14]
push eax
je 0x42201d
call fcn.0042c070
add esp, 4
mov dword [ebp - 4], 0
jmp 0x42202c
call fcn.0042bd00
add esp, 4
mov dword [ebp - 4], 1
push 0xc
push str.updater.log
lea ecx, [ebp - 0x14]
call fcn.00402db0
mov eax, dword [ebp - 0x14]
cmp dword [eax - 4], 1
jle 0x422052
push dword [eax - 0xc]
lea ecx, [ebp - 0x14]
call fcn.00403410
mov eax, dword [ebp - 0x14]
push eax
mov ecx, edi
call fcn.00432210
mov edx, dword [ebp - 0x14]
or ebx, 0xffffffff
add edx, 0xfffffff0
mov dword [ebp - 4], ebx
mov eax, ebx
lea ecx, [edx + 0xc]
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x42207c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp + 8]
push esi
push str._n_n_nUpdater_Started_with_params:__s_n
push edi
call fcn.00432340
add esp, 0xc
lea ecx, [ebp - 0x2c]
push 1
push esi
call fcn.00431420
push str.runmode
lea ecx, [ebp - 0x2c]
mov dword [ebp - 4], 2
call fcn.004315e0
push eax
lea ecx, [ebp - 0x10]
call fcn.00401830
mov eax, dword [ebp - 0x10]
mov byte [ebp - 4], 3
cmp dword [eax - 4], 1
jle 0x4220d1
push dword [eax - 0xc]
lea ecx, [ebp - 0x10]
call fcn.00403410
mov eax, dword [ebp - 0x10]
push eax
push str.Updater_runmode:__s_n
push edi
call fcn.00432340
mov eax, dword [ebp - 0x10]
add esp, 0xc
mov ecx, str.addproduct
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x42210e
test dx, dx
je 0x42210a
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x42210e
add eax, 4
add ecx, 4
test dx, dx
jne 0x4220e8
xor eax, eax
jmp 0x422113
sbb eax, eax
or eax, 1
test eax, eax
sete al
test al, al
je 0x42214d
push str.info
lea ecx, [ebp - 0x2c]
call fcn.004315e0
push eax
lea ecx, [ebp - 0x14]
call fcn.00401830
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 4
push eax
call fcn.0041df70
add esp, 4
push dword [ebp - 0x14]
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
jmp 0x422188
lea eax, [ebp - 0x10]
push eax
push str.delproduct
call fcn.0041df00
add esp, 8
test al, al
je 0x4221b1
push str.name
lea ecx, [ebp - 0x2c]
call fcn.004315e0
push eax
lea ecx, [ebp - 0x14]
call fcn.00401830
lea eax, [ebp - 0x14]
mov byte [ebp - 4], 5
push eax
call fcn.0041e450
add esp, 4
mov edx, dword [ebp - 0x14]
mov ecx, ebx
add edx, 0xfffffff0
mov byte [ebp - 4], 3
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4223b5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x4223b5
lea eax, [ebp - 0x10]
push eax
push str.checkupdate
call fcn.0041df00
add esp, 8
test al, al
je 0x4222b4
push str.Skillbrains_Updarer_CMDARG_RUNMODE_CHECKUPDATE
push 1
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov esi, eax
push str.Checking_update_mutex_n
push edi
mov dword [ebp - 0x14], esi
call fcn.00432340
add esp, 8
push 0
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
test eax, eax
jne 0x4222a1
call fcn.00430980
test eax, eax
je 0x4222a1
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov ecx, eax
mov eax, 0x10624dd3
mul ecx
mov ecx, 0x78
shr edx, 6
mov eax, edx
xor edx, edx
div ecx
imul esi, edx, 0x1f4
push esi
push str.Waiting__dms_delay_before_request_n
push edi
call fcn.00432340
add esp, 0xc
push esi
call dword [sym.imp.KERNEL32.dll_Sleep]
push ecx
mov ecx, esp
push str.TimeToUpdate
call fcn.00401830
call fcn.0042c970
add esp, 4
call fcn.0041e360
call fcn.00430880
test eax, eax
je 0x42229e
call fcn.0042dda0
test eax, eax
je 0x422284
push ecx
mov ecx, esp
push str.TimeToInstall
call fcn.00401830
call fcn.0042c8b0
add esp, 4
push ecx
mov ecx, esp
push str.TimeToInstall
call fcn.00401830
call fcn.0042c970
add esp, 4
call fcn.0041e300
mov esi, dword [ebp - 0x14]
push esi
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x4223b5
lea eax, [ebp - 0x10]
push eax
push str.addtask
call fcn.0041df00
add esp, 8
test al, al
je 0x4222d3
call fcn.0041e050
jmp 0x4223b5
lea eax, [ebp - 0x10]
push eax
push str.deltask
call fcn.0041df00
add esp, 8
test al, al
je 0x4222f2
call fcn.0041e530
jmp 0x4223b5
lea eax, [ebp - 0x10]
push eax
push str.addsystask
call fcn.0041df00
add esp, 8
test al, al
je 0x422311
call fcn.0041e0f0
jmp 0x4223b5
lea eax, [ebp - 0x10]
push eax
push str.delsystask
call fcn.0041df00
add esp, 8
test al, al
je 0x422330
call fcn.0041e5c0
jmp 0x4223b5
lea eax, [ebp - 0x10]
push eax
push str.uninstall
call fcn.0041df00
add esp, 8
test al, al
je 0x42234c
call fcn.0041ec90
jmp 0x4223b5
lea eax, [ebp - 0x10]
push eax
push str.ping
call fcn.0041df00
add esp, 8
test al, al
je 0x4223b5
push 0x4a3f4c
lea ecx, [ebp - 0x2c]
call fcn.004315e0
push eax
lea ecx, [ebp - 0x18]
call fcn.00401830
lea eax, [ebp - 0x18]
mov byte [ebp - 4], 6
push eax
call fcn.0041eb30
mov ecx, esp
push str.Ping
call fcn.00401830
call fcn.0042c8b0
mov ecx, esp
push str.Ping
call fcn.00401830
call fcn.0042c970
add esp, 4
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x18]
call fcn.00402240
push str.Updater_Finished__n_n_n
push edi
call fcn.00432340
add esp, 8
dec dword [0x4cbbc8]
jne 0x4223d7
test edi, edi
je 0x4223d7
mov eax, dword [edi]
mov ecx, edi
push 1
call dword [eax]
mov edx, dword [ebp - 0x10]
add edx, 0xfffffff0
mov byte [ebp - 4], 2
lea eax, [edx + 0xc]
lock xadd dword [eax], ebx
dec ebx
test ebx, ebx
jg 0x4223f5
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x2c]
mov dword [ebp - 4], 0xffffffff
call fcn.004314f0
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret