Function at 0x4286d0
Capabilities:
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
mov edx, dword [0x4eab40]
test edx, edx
mov dword [ebp - 0xc], ebx
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
jle 0x4290a5
mov eax, dword [ebp + 0xc]
mov esi, dword [eax]
cmp esi, dword [0x4eab44]
jne 0x42870e
cmp esi, 0xffffffff
je 0x428711
dec edx
mov dword [0x4eab40], edx
mov dword [0x4eab44], esi
jmp 0x428727
cmp esi, 0xffffffff
mov dword [0x4eab40], 4
mov dword [0x4eab44], esi
je 0x42909b
test esi, esi
jl 0x428a8b
cmp esi, 0x68
jg 0x428a86
inc esi
mov eax, esi
mov ebx, esi
mov edx, esi
test eax, eax
jl 0x428a6e
mov dword [ebp - 0x1c], esi
cmp eax, 0x271
jg 0x428a6e
mov esi, eax
lea ecx, [eax*4]
shl esi, 5
sub esi, ecx
cmp dword [esi + 0x4edf98], 0
je 0x428a63
mov dword [ebp - 0x18], edx
cmp eax, 0x68
jg 0x428921
cmp dword [esi + 0x4edf8c], 0
je 0x4287be
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ebx, dword [ebp - 0x18]
mov esi, ebx
shl esi, 5
lea edx, [ebx*4]
sub esi, edx
cmp eax, dword [esi + 0x4edf88]
jne 0x4287be
mov esi, dword [ebp - 0x1c]
mov eax, 0x28
mov edx, dword [ebp + 0xc]
mov ebx, dword [ebp - 0xc]
mov edi, dword [ebp - 8]
mov dword [edx], esi
mov esi, dword [ebp - 4]
mov esp, ebp
pop ebp
ret
cmp dword [0x4e93e0], 2
jge 0x4287ec
mov eax, dword [esi + 0x4edf84]
test eax, eax
je 0x4287db
mov eax, 0x98
jmp 0x428872
mov dword [esi + 0x4edf84], 1
xor eax, eax
jmp 0x428872
lea eax, [ebx*4]
shl ebx, 5
sub ebx, eax
lea edx, [ebx + 0x4edf84]
push edx
call fcn.00405630
add esp, 4
test eax, eax
je 0x428812
mov eax, 0x98
jmp 0x428872
mov edx, dword [ebp - 0x18]
mov ecx, edx
shl ecx, 5
lea eax, [edx*4]
sub ecx, eax
cmp dword [ecx + 0x4edf80], 0
je 0x428cc9
mov dword [ecx + 0x4edf84], 0
push 0xffffffffffffffff
lea eax, [edx*4]
shl edx, 5
sub edx, eax
push dword [edx + 0x4edf80]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
lea ecx, [edx + 0x4edf84]
push ecx
call fcn.00405630
add esp, 4
test eax, eax
je 0x42887d
mov eax, 0x98
jmp 0x4288a4
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov ecx, dword [ebp - 0x18]
lea edx, [ecx*4]
shl ecx, 5
sub ecx, edx
mov dword [ecx + 0x4edf88], eax
xor eax, eax
mov dword [ecx + 0x4edf8c], 1
test eax, eax
jne 0x428cc1
mov eax, dword [ebp - 0x18]
mov ecx, eax
shl ecx, 5
lea edx, [eax*4]
sub ecx, edx
mov edx, dword [ecx + 0x4edf98]
test edx, edx
mov dword [ebp - 0x14], edx
jne 0x428c8d
mov dword [ecx + 0x4edf8c], 0
mov dword [ecx + 0x4edf88], 0xffffffff
cmp dword [0x4e93e0], 2
jge 0x4288fa
mov dword [ecx + 0x4edf84], 0
jmp 0x428a63
mov dword [ecx + 0x4edf84], 0
lea edx, [eax*4]
shl eax, 5
sub eax, edx
push dword [eax + 0x4edf80]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
jmp 0x428a60
call fcn.004290b0
mov edi, eax
mov edx, dword [0x4e93e0]
cmp edx, 2
jge 0x428953
mov eax, dword [esi + 0x4edf84]
test eax, eax
jne 0x4289db
mov dword [esi + 0x4edf84], 1
mov ebx, dword [ebp - 0x18]
jmp 0x4289db
lea eax, [ebx*4]
shl ebx, 5
sub ebx, eax
lea edx, [ebx + 0x4edf84]
push edx
call fcn.00405630
add esp, 4
test eax, eax
jne 0x4289d2
mov edx, dword [ebp - 0x18]
mov ecx, edx
shl ecx, 5
lea eax, [edx*4]
sub ecx, eax
cmp dword [ecx + 0x4edf80], 0
je 0x428f54
mov dword [ecx + 0x4edf84], 0
lea eax, [edx*4]
shl edx, 5
sub edx, eax
push 0xffffffffffffffff
push dword [edx + 0x4edf80]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
lea ecx, [edx + 0x4edf84]
push ecx
call fcn.00405630
add esp, 4
mov edx, dword [0x4e93e0]
mov ebx, dword [ebp - 0x18]
cmp edx, 1
je 0x428f31
mov ecx, ebx
lea eax, [ebx*4]
shl ecx, 5
sub ecx, eax
mov edx, dword [ecx + 0x4edf98]
test edx, edx
mov dword [ebp - 0x14], edx
jne 0x428d1e
mov edx, dword [0x4e93e0]
cmp edx, 1
je 0x428cfa
mov eax, dword [ebp - 0x18]
cmp edx, 2
jge 0x428a32
lea edx, [ebx*4]
shl ebx, 5
sub ebx, edx
mov dword [ebx + 0x4edf84], 0
jmp 0x428a63
lea edx, [ebx*4]
shl ebx, 5
sub ebx, edx
mov dword [ebx + 0x4edf84], 0
lea ecx, [eax*4]
shl eax, 5
sub eax, ecx
push dword [eax + 0x4edf80]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [ebp - 0x18]
inc eax
mov ebx, eax
mov edx, eax
jns 0x42874a
mov edx, dword [ebp + 0xc]
xor eax, eax
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov dword [edx], 0xffffffff
mov esp, ebp
pop ebp
ret
lea eax, [esi - 5]
jmp 0x428a8d
mov eax, esi
lea ebx, [ebp - 0x10]
mov dword [esp + 0xc], ebx
lea edx, [ebp - 0x18]
lea ecx, [ebp - 0x14]
call fcn.00428020
mov edi, eax
mov ebx, dword [ebp - 0x18]
mov eax, ebx
call fcn.004290b0
cmp eax, 0x7fffffff
je 0x428abc
cmp eax, 0xfffffffa
lea esi, [eax + 5]
jg 0x428abc
mov esi, eax
mov eax, dword [ebp + 0xc]
test edi, edi
mov dword [eax], esi
jne 0x428c7e
mov edx, dword [ebp - 0x14]
test edx, edx
je 0x429009
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
test ecx, ecx
je 0x428aee
mov eax, edx
cmp eax, ecx
je 0x428ffb
mov eax, dword [eax + 0x28]
test eax, eax
jne 0x428adf
cmp dword [edx + 0xc], 0
je 0x428b18
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edx, dword [ebp - 0x14]
cmp eax, dword [edx + 8]
jne 0x428b18
mov eax, dword [ebp + 0x10]
cmp eax, 0xb
je 0x428c0b
mov ebx, 0x28
jmp 0x428ba4
cmp dword [0x4e93e0], 2
jge 0x428b3a
mov eax, dword [edx + 4]
test eax, eax
je 0x428b2f
mov eax, 0x98
jmp 0x428b80
mov dword [edx + 4], 1
xor eax, eax
jmp 0x428b80
add edx, 4
push edx
call fcn.00405630
add esp, 4
test eax, eax
je 0x428b51
mov eax, 0x98
jmp 0x428b80
mov eax, dword [ebp - 0x14]
cmp dword [eax], 0
je 0x428fdf
mov dword [eax + 4], 0
mov eax, dword [ebp - 0x14]
push 0xffffffffffffffff
push dword [eax]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [ebp - 0x14]
add eax, 4
push eax
call fcn.00405630
add esp, 4
test eax, eax
je 0x428b8b
mov ebx, 0x98
jmp 0x428ba0
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edx, dword [ebp - 0x14]
xor ebx, ebx
mov dword [edx + 8], eax
mov dword [edx + 0xc], 1
test ebx, ebx
je 0x428c0b
mov eax, dword [0x4e93e0]
cmp eax, 1
je 0x428f85
cmp eax, 2
jge 0x428bd2
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x4edf84], 0
jmp 0x428bf7
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x4edf84], 0
push dword [edx + 0x4edf80]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov edx, dword [ebp + 0xc]
mov eax, ebx
mov ebx, dword [ebp - 0xc]
mov edi, dword [ebp - 8]
mov dword [edx], esi
mov esi, dword [ebp - 4]
mov esp, ebp
pop ebp
ret
mov eax, dword [0x4e93e0]
cmp eax, 1
je 0x428fb2
cmp eax, 2
jge 0x428c39
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x4edf84], 0
jmp 0x428c5e
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x4edf84], 0
push dword [edx + 0x4edf80]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp + 0x10]
call fcn.004290f0
mov ecx, dword [ebp + 8]
mov edx, dword [ebp - 0x14]
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov dword [ecx], edx
mov esp, ebp
pop ebp
ret
mov eax, edi
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret
mov eax, edx
mov edx, dword [ebp + 0x10]
call fcn.004290f0
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x14]
mov edi, dword [ebp + 0xc]
mov dword [edx], ecx
mov ebx, dword [ecx + 0x100]
cmp ebx, 0xfffffffa
lea esi, [ebx + 5]
jg 0x428cb2
mov esi, ebx
mov dword [edi], esi
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp - 0x1c]
jmp 0x4287ac
xor eax, eax
push eax
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov edx, dword [ebp - 0x18]
mov ebx, edx
shl ebx, 5
lea ecx, [edx*4]
sub ebx, ecx
mov dword [ebx + 0x4edf80], eax
mov dword [ebx + 0x4edf84], 0
jmp 0x42883a
push dword [ecx + 0x4edf94]
push dword [ecx + 0x4edf90]
call fcn.00405610
add esp, 8
mov ebx, dword [ebp - 0x18]
mov eax, ebx
mov edx, dword [0x4e93e0]
jmp 0x428a15
cmp dword [edx + 0xc], 0
je 0x428d3c
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edx, dword [ebp - 0x14]
cmp eax, dword [edx + 8]
jne 0x428d3c
mov ebx, 0x28
jmp 0x428dc8
cmp dword [0x4e93e0], 2
jge 0x428d5e
mov eax, dword [edx + 4]
test eax, eax
je 0x428d53
mov eax, 0x98
jmp 0x428da4
mov dword [edx + 4], 1
xor eax, eax
jmp 0x428da4
add edx, 4
push edx
call fcn.00405630
add esp, 4
test eax, eax
je 0x428d75
mov eax, 0x98
jmp 0x428da4
mov eax, dword [ebp - 0x14]
cmp dword [eax], 0
je 0x428f15
mov dword [eax + 4], 0
mov eax, dword [ebp - 0x14]
push 0xffffffffffffffff
push dword [eax]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [ebp - 0x14]
add eax, 4
push eax
call fcn.00405630
add esp, 4
test eax, eax
je 0x428daf
mov ebx, 0x98
jmp 0x428dc4
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edx, dword [ebp - 0x14]
xor ebx, ebx
mov dword [edx + 8], eax
mov dword [edx + 0xc], 1
test ebx, ebx
je 0x428e39
mov eax, dword [0x4e93e0]
cmp eax, 1
je 0x428ebb
cmp eax, 2
jge 0x428df6
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x4edf84], 0
jmp 0x428e1b
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x4edf84], 0
push dword [edx + 0x4edf80]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
cmp edi, 0xfffffffa
lea edx, [edi + 5]
mov ecx, dword [ebp + 0xc]
mov eax, ebx
jg 0x428e2a
mov edx, edi
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov dword [ecx], edx
mov esp, ebp
pop ebp
ret
mov eax, dword [0x4e93e0]
cmp eax, 1
je 0x428ee8
cmp eax, 2
jge 0x428e67
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x4edf84], 0
jmp 0x428e8c
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x4edf84], 0
push dword [edx + 0x4edf80]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp + 0x10]
call fcn.004290f0
cmp edi, 0xfffffffa
lea ebx, [edi + 5]
mov ecx, dword [ebp + 8]
jg 0x428ea4
mov ebx, edi
mov esi, dword [ebp + 0xc]
mov edx, dword [ebp - 0x14]
mov dword [ecx], edx
mov dword [esi], ebx
mov ebx, dword [ebp - 0xc]
mov esi, dword [ebp - 4]
mov edi, dword [ebp - 8]
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
push dword [edx + 0x4edf94]
push dword [edx + 0x4edf90]
call fcn.00405610
add esp, 8
mov eax, dword [0x4e93e0]
jmp 0x428dd6
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
push dword [edx + 0x4edf94]
push dword [edx + 0x4edf90]
call fcn.00405610
add esp, 8
mov eax, dword [0x4e93e0]
jmp 0x428e47
xor eax, eax
push eax
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov edx, dword [ebp - 0x14]
mov dword [edx], eax
mov dword [edx + 4], 0
jmp 0x428d88
lea eax, [ebx*4]
shl ebx, 5
sub ebx, eax
lea edx, [ebx + 0x4edf90]
push edx
call fcn.004055e0
add esp, 4
mov ebx, dword [ebp - 0x18]
jmp 0x4289e4
xor eax, eax
push eax
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov edx, dword [ebp - 0x18]
mov ebx, edx
shl ebx, 5
lea ecx, [edx*4]
sub ebx, ecx
mov dword [ebx + 0x4edf80], eax
mov dword [ebx + 0x4edf84], 0
jmp 0x42899a
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
push dword [edx + 0x4edf94]
push dword [edx + 0x4edf90]
call fcn.00405610
add esp, 8
mov eax, dword [0x4e93e0]
jmp 0x428bb2
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
push dword [edx + 0x4edf94]
push dword [edx + 0x4edf90]
call fcn.00405610
add esp, 8
mov eax, dword [0x4e93e0]
jmp 0x428c19
xor eax, eax
push eax
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov edx, dword [ebp - 0x14]
mov dword [edx], eax
mov dword [edx + 4], 0
jmp 0x428b64
mov edx, dword [eax + 0x28]
test edx, edx
mov dword [ebp - 0x14], edx
jne 0x428aee
mov ecx, dword [0x4e93e0]
cmp ecx, 1
je 0x42906b
mov eax, dword [ebp - 0x18]
lea edx, [ebx*4]
shl ebx, 5
sub ebx, edx
cmp ecx, 2
jge 0x429034
mov dword [ebx + 0x4edf84], 0
jmp 0x429059
mov dword [ebx + 0x4edf84], 0
lea edx, [eax*4]
shl eax, 5
sub eax, edx
push dword [eax + 0x4edf80]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp + 0xc]
inc eax
mov ebx, eax
lea edx, [esi + 1]
mov dword [ecx], edx
mov edx, eax
jmp 0x42873f
lea eax, [ebx*4]
shl ebx, 5
sub ebx, eax
push dword [ebx + 0x4edf94]
push dword [ebx + 0x4edf90]
call fcn.00405610
add esp, 8
mov ebx, dword [ebp - 0x18]
mov eax, ebx
mov ecx, dword [0x4e93e0]
jmp 0x429017
mov esi, 0xffffffff
jmp 0x428738
mov eax, 2
mov esp, ebp
pop ebp
ret