Function at 0x459180
Capabilities:
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
mov edx, dword [0x4bec40]
test edx, edx
mov dword [ebp - 0xc], ebx
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
jle 0x459b55
mov eax, dword [ebp + 0xc]
mov esi, dword [eax]
cmp esi, dword [0x4bec44]
jne 0x4591be
cmp esi, 0xffffffff
je 0x4591c1
dec edx
mov dword [0x4bec40], edx
mov dword [0x4bec44], esi
jmp 0x4591d7
cmp esi, 0xffffffff
mov dword [0x4bec40], 4
mov dword [0x4bec44], esi
je 0x459b4b
test esi, esi
jl 0x45953b
cmp esi, 0x68
jg 0x459536
inc esi
mov eax, esi
mov ebx, esi
mov edx, esi
test eax, eax
jl 0x45951e
mov dword [ebp - 0x1c], esi
cmp eax, 0x271
jg 0x45951e
mov esi, eax
lea ecx, [eax*4]
shl esi, 5
sub esi, ecx
cmp dword [esi + 0x4c7798], 0
je 0x459513
mov dword [ebp - 0x18], edx
cmp eax, 0x68
jg 0x4593d1
cmp dword [esi + 0x4c778c], 0
je 0x45926e
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 + 0x4c7788]
jne 0x45926e
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 [0x4bed00], 2
jge 0x45929c
mov eax, dword [esi + 0x4c7784]
test eax, eax
je 0x45928b
mov eax, 0x98
jmp 0x459322
mov dword [esi + 0x4c7784], 1
xor eax, eax
jmp 0x459322
lea eax, [ebx*4]
shl ebx, 5
sub ebx, eax
lea edx, [ebx + 0x4c7784]
push edx
call fcn.0046add0
add esp, 4
test eax, eax
je 0x4592c2
mov eax, 0x98
jmp 0x459322
mov edx, dword [ebp - 0x18]
mov ecx, edx
shl ecx, 5
lea eax, [edx*4]
sub ecx, eax
cmp dword [ecx + 0x4c7780], 0
je 0x459779
mov dword [ecx + 0x4c7784], 0
push 0xffffffffffffffff
lea eax, [edx*4]
shl edx, 5
sub edx, eax
push dword [edx + 0x4c7780]
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 + 0x4c7784]
push ecx
call fcn.0046add0
add esp, 4
test eax, eax
je 0x45932d
mov eax, 0x98
jmp 0x459354
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 + 0x4c7788], eax
xor eax, eax
mov dword [ecx + 0x4c778c], 1
test eax, eax
jne 0x459771
mov eax, dword [ebp - 0x18]
mov ecx, eax
shl ecx, 5
lea edx, [eax*4]
sub ecx, edx
mov edx, dword [ecx + 0x4c7798]
test edx, edx
mov dword [ebp - 0x14], edx
jne 0x45973d
mov dword [ecx + 0x4c778c], 0
mov dword [ecx + 0x4c7788], 0xffffffff
cmp dword [0x4bed00], 2
jge 0x4593aa
mov dword [ecx + 0x4c7784], 0
jmp 0x459513
mov dword [ecx + 0x4c7784], 0
lea edx, [eax*4]
shl eax, 5
sub eax, edx
push dword [eax + 0x4c7780]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
jmp 0x459510
call fcn.00459b60
mov edi, eax
mov edx, dword [0x4bed00]
cmp edx, 2
jge 0x459403
mov eax, dword [esi + 0x4c7784]
test eax, eax
jne 0x45948b
mov dword [esi + 0x4c7784], 1
mov ebx, dword [ebp - 0x18]
jmp 0x45948b
lea eax, [ebx*4]
shl ebx, 5
sub ebx, eax
lea edx, [ebx + 0x4c7784]
push edx
call fcn.0046add0
add esp, 4
test eax, eax
jne 0x459482
mov edx, dword [ebp - 0x18]
mov ecx, edx
shl ecx, 5
lea eax, [edx*4]
sub ecx, eax
cmp dword [ecx + 0x4c7780], 0
je 0x459a04
mov dword [ecx + 0x4c7784], 0
lea eax, [edx*4]
shl edx, 5
sub edx, eax
push 0xffffffffffffffff
push dword [edx + 0x4c7780]
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 + 0x4c7784]
push ecx
call fcn.0046add0
add esp, 4
mov edx, dword [0x4bed00]
mov ebx, dword [ebp - 0x18]
cmp edx, 1
je 0x4599e1
mov ecx, ebx
lea eax, [ebx*4]
shl ecx, 5
sub ecx, eax
mov edx, dword [ecx + 0x4c7798]
test edx, edx
mov dword [ebp - 0x14], edx
jne 0x4597ce
mov edx, dword [0x4bed00]
cmp edx, 1
je 0x4597aa
mov eax, dword [ebp - 0x18]
cmp edx, 2
jge 0x4594e2
lea edx, [ebx*4]
shl ebx, 5
sub ebx, edx
mov dword [ebx + 0x4c7784], 0
jmp 0x459513
lea edx, [ebx*4]
shl ebx, 5
sub ebx, edx
mov dword [ebx + 0x4c7784], 0
lea ecx, [eax*4]
shl eax, 5
sub eax, ecx
push dword [eax + 0x4c7780]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [ebp - 0x18]
inc eax
mov ebx, eax
mov edx, eax
jns 0x4591fa
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 0x45953d
mov eax, esi
lea ebx, [ebp - 0x10]
mov dword [esp + 0xc], ebx
lea edx, [ebp - 0x18]
lea ecx, [ebp - 0x14]
call fcn.00458ad0
mov edi, eax
mov ebx, dword [ebp - 0x18]
mov eax, ebx
call fcn.00459b60
cmp eax, 0x7fffffff
je 0x45956c
cmp eax, 0xfffffffa
lea esi, [eax + 5]
jg 0x45956c
mov esi, eax
mov eax, dword [ebp + 0xc]
test edi, edi
mov dword [eax], esi
jne 0x45972e
mov edx, dword [ebp - 0x14]
test edx, edx
je 0x459ab9
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
test ecx, ecx
je 0x45959e
mov eax, edx
cmp eax, ecx
je 0x459aab
mov eax, dword [eax + 0x28]
test eax, eax
jne 0x45958f
cmp dword [edx + 0xc], 0
je 0x4595c8
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edx, dword [ebp - 0x14]
cmp eax, dword [edx + 8]
jne 0x4595c8
mov eax, dword [ebp + 0x10]
cmp eax, 0xb
je 0x4596bb
mov ebx, 0x28
jmp 0x459654
cmp dword [0x4bed00], 2
jge 0x4595ea
mov eax, dword [edx + 4]
test eax, eax
je 0x4595df
mov eax, 0x98
jmp 0x459630
mov dword [edx + 4], 1
xor eax, eax
jmp 0x459630
add edx, 4
push edx
call fcn.0046add0
add esp, 4
test eax, eax
je 0x459601
mov eax, 0x98
jmp 0x459630
mov eax, dword [ebp - 0x14]
cmp dword [eax], 0
je 0x459a8f
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.0046add0
add esp, 4
test eax, eax
je 0x45963b
mov ebx, 0x98
jmp 0x459650
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 0x4596bb
mov eax, dword [0x4bed00]
cmp eax, 1
je 0x459a35
cmp eax, 2
jge 0x459682
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x4c7784], 0
jmp 0x4596a7
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x4c7784], 0
push dword [edx + 0x4c7780]
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 [0x4bed00]
cmp eax, 1
je 0x459a62
cmp eax, 2
jge 0x4596e9
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x4c7784], 0
jmp 0x45970e
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x4c7784], 0
push dword [edx + 0x4c7780]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp + 0x10]
call fcn.00459ba0
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.00459ba0
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 0x459762
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 0x45925c
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 + 0x4c7780], eax
mov dword [ebx + 0x4c7784], 0
jmp 0x4592ea
push dword [ecx + 0x4c7794]
push dword [ecx + 0x4c7790]
call fcn.0046adb0
add esp, 8
mov ebx, dword [ebp - 0x18]
mov eax, ebx
mov edx, dword [0x4bed00]
jmp 0x4594c5
cmp dword [edx + 0xc], 0
je 0x4597ec
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edx, dword [ebp - 0x14]
cmp eax, dword [edx + 8]
jne 0x4597ec
mov ebx, 0x28
jmp 0x459878
cmp dword [0x4bed00], 2
jge 0x45980e
mov eax, dword [edx + 4]
test eax, eax
je 0x459803
mov eax, 0x98
jmp 0x459854
mov dword [edx + 4], 1
xor eax, eax
jmp 0x459854
add edx, 4
push edx
call fcn.0046add0
add esp, 4
test eax, eax
je 0x459825
mov eax, 0x98
jmp 0x459854
mov eax, dword [ebp - 0x14]
cmp dword [eax], 0
je 0x4599c5
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.0046add0
add esp, 4
test eax, eax
je 0x45985f
mov ebx, 0x98
jmp 0x459874
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 0x4598e9
mov eax, dword [0x4bed00]
cmp eax, 1
je 0x45996b
cmp eax, 2
jge 0x4598a6
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x4c7784], 0
jmp 0x4598cb
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x4c7784], 0
push dword [edx + 0x4c7780]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
cmp edi, 0xfffffffa
lea edx, [edi + 5]
mov ecx, dword [ebp + 0xc]
mov eax, ebx
jg 0x4598da
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 [0x4bed00]
cmp eax, 1
je 0x459998
cmp eax, 2
jge 0x459917
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x4c7784], 0
jmp 0x45993c
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x4c7784], 0
push dword [edx + 0x4c7780]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp + 0x10]
call fcn.00459ba0
cmp edi, 0xfffffffa
lea ebx, [edi + 5]
mov ecx, dword [ebp + 8]
jg 0x459954
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 + 0x4c7794]
push dword [edx + 0x4c7790]
call fcn.0046adb0
add esp, 8
mov eax, dword [0x4bed00]
jmp 0x459886
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
push dword [edx + 0x4c7794]
push dword [edx + 0x4c7790]
call fcn.0046adb0
add esp, 8
mov eax, dword [0x4bed00]
jmp 0x4598f7
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 0x459838
lea eax, [ebx*4]
shl ebx, 5
sub ebx, eax
lea edx, [ebx + 0x4c7790]
push edx
call fcn.0046ad80
add esp, 4
mov ebx, dword [ebp - 0x18]
jmp 0x459494
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 + 0x4c7780], eax
mov dword [ebx + 0x4c7784], 0
jmp 0x45944a
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
push dword [edx + 0x4c7794]
push dword [edx + 0x4c7790]
call fcn.0046adb0
add esp, 8
mov eax, dword [0x4bed00]
jmp 0x459662
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
push dword [edx + 0x4c7794]
push dword [edx + 0x4c7790]
call fcn.0046adb0
add esp, 8
mov eax, dword [0x4bed00]
jmp 0x4596c9
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 0x459614
mov edx, dword [eax + 0x28]
test edx, edx
mov dword [ebp - 0x14], edx
jne 0x45959e
mov ecx, dword [0x4bed00]
cmp ecx, 1
je 0x459b1b
mov eax, dword [ebp - 0x18]
lea edx, [ebx*4]
shl ebx, 5
sub ebx, edx
cmp ecx, 2
jge 0x459ae4
mov dword [ebx + 0x4c7784], 0
jmp 0x459b09
mov dword [ebx + 0x4c7784], 0
lea edx, [eax*4]
shl eax, 5
sub eax, edx
push dword [eax + 0x4c7780]
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 0x4591ef
lea eax, [ebx*4]
shl ebx, 5
sub ebx, eax
push dword [ebx + 0x4c7794]
push dword [ebx + 0x4c7790]
call fcn.0046adb0
add esp, 8
mov ebx, dword [ebp - 0x18]
mov eax, ebx
mov ecx, dword [0x4bed00]
jmp 0x459ac7
mov esi, 0xffffffff
jmp 0x4591e8
mov eax, 2
mov esp, ebp
pop ebp
ret