Function at 0x424330
Capabilities:
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x2c
mov edx, dword [0x505b60]
test edx, edx
mov dword [ebp - 0xc], ebx
mov dword [ebp - 8], edi
mov dword [ebp - 4], esi
jle 0x424d05
mov eax, dword [ebp + 0xc]
mov esi, dword [eax]
cmp esi, dword [0x505b64]
jne 0x42436e
cmp esi, 0xffffffff
je 0x424371
dec edx
mov dword [0x505b60], edx
mov dword [0x505b64], esi
jmp 0x424387
cmp esi, 0xffffffff
mov dword [0x505b60], 4
mov dword [0x505b64], esi
je 0x424cfb
test esi, esi
jl 0x4246eb
cmp esi, 0x68
jg 0x4246e6
inc esi
mov eax, esi
mov ebx, esi
mov edx, esi
test eax, eax
jl 0x4246ce
mov dword [ebp - 0x1c], esi
cmp eax, 0x271
jg 0x4246ce
mov esi, eax
lea ecx, [eax*4]
shl esi, 5
sub esi, ecx
cmp dword [esi + 0x5087d8], 0
je 0x4246c3
mov dword [ebp - 0x18], edx
cmp eax, 0x68
jg 0x424581
cmp dword [esi + 0x5087cc], 0
je 0x42441e
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 + 0x5087c8]
jne 0x42441e
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 [0x5044a0], 2
jge 0x42444c
mov eax, dword [esi + 0x5087c4]
test eax, eax
je 0x42443b
mov eax, 0x98
jmp 0x4244d2
mov dword [esi + 0x5087c4], 1
xor eax, eax
jmp 0x4244d2
lea eax, [ebx*4]
shl ebx, 5
sub ebx, eax
lea edx, [ebx + 0x5087c4]
push edx
call fcn.00416dd0
add esp, 4
test eax, eax
je 0x424472
mov eax, 0x98
jmp 0x4244d2
mov edx, dword [ebp - 0x18]
mov ecx, edx
shl ecx, 5
lea eax, [edx*4]
sub ecx, eax
cmp dword [ecx + 0x5087c0], 0
je 0x424929
mov dword [ecx + 0x5087c4], 0
push 0xffffffffffffffff
lea eax, [edx*4]
shl edx, 5
sub edx, eax
push dword [edx + 0x5087c0]
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 + 0x5087c4]
push ecx
call fcn.00416dd0
add esp, 4
test eax, eax
je 0x4244dd
mov eax, 0x98
jmp 0x424504
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 + 0x5087c8], eax
xor eax, eax
mov dword [ecx + 0x5087cc], 1
test eax, eax
jne 0x424921
mov eax, dword [ebp - 0x18]
mov ecx, eax
shl ecx, 5
lea edx, [eax*4]
sub ecx, edx
mov edx, dword [ecx + 0x5087d8]
test edx, edx
mov dword [ebp - 0x14], edx
jne 0x4248ed
mov dword [ecx + 0x5087cc], 0
mov dword [ecx + 0x5087c8], 0xffffffff
cmp dword [0x5044a0], 2
jge 0x42455a
mov dword [ecx + 0x5087c4], 0
jmp 0x4246c3
mov dword [ecx + 0x5087c4], 0
lea edx, [eax*4]
shl eax, 5
sub eax, edx
push dword [eax + 0x5087c0]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
jmp 0x4246c0
call fcn.00424d10
mov edi, eax
mov edx, dword [0x5044a0]
cmp edx, 2
jge 0x4245b3
mov eax, dword [esi + 0x5087c4]
test eax, eax
jne 0x42463b
mov dword [esi + 0x5087c4], 1
mov ebx, dword [ebp - 0x18]
jmp 0x42463b
lea eax, [ebx*4]
shl ebx, 5
sub ebx, eax
lea edx, [ebx + 0x5087c4]
push edx
call fcn.00416dd0
add esp, 4
test eax, eax
jne 0x424632
mov edx, dword [ebp - 0x18]
mov ecx, edx
shl ecx, 5
lea eax, [edx*4]
sub ecx, eax
cmp dword [ecx + 0x5087c0], 0
je 0x424bb4
mov dword [ecx + 0x5087c4], 0
lea eax, [edx*4]
shl edx, 5
sub edx, eax
push 0xffffffffffffffff
push dword [edx + 0x5087c0]
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 + 0x5087c4]
push ecx
call fcn.00416dd0
add esp, 4
mov edx, dword [0x5044a0]
mov ebx, dword [ebp - 0x18]
cmp edx, 1
je 0x424b91
mov ecx, ebx
lea eax, [ebx*4]
shl ecx, 5
sub ecx, eax
mov edx, dword [ecx + 0x5087d8]
test edx, edx
mov dword [ebp - 0x14], edx
jne 0x42497e
mov edx, dword [0x5044a0]
cmp edx, 1
je 0x42495a
mov eax, dword [ebp - 0x18]
cmp edx, 2
jge 0x424692
lea edx, [ebx*4]
shl ebx, 5
sub ebx, edx
mov dword [ebx + 0x5087c4], 0
jmp 0x4246c3
lea edx, [ebx*4]
shl ebx, 5
sub ebx, edx
mov dword [ebx + 0x5087c4], 0
lea ecx, [eax*4]
shl eax, 5
sub eax, ecx
push dword [eax + 0x5087c0]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [ebp - 0x18]
inc eax
mov ebx, eax
mov edx, eax
jns 0x4243aa
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 0x4246ed
mov eax, esi
lea ebx, [ebp - 0x10]
mov dword [esp + 0xc], ebx
lea edx, [ebp - 0x18]
lea ecx, [ebp - 0x14]
call fcn.00423c80
mov edi, eax
mov ebx, dword [ebp - 0x18]
mov eax, ebx
call fcn.00424d10
cmp eax, 0x7fffffff
je 0x42471c
cmp eax, 0xfffffffa
lea esi, [eax + 5]
jg 0x42471c
mov esi, eax
mov eax, dword [ebp + 0xc]
test edi, edi
mov dword [eax], esi
jne 0x4248de
mov edx, dword [ebp - 0x14]
test edx, edx
je 0x424c69
mov eax, dword [ebp + 8]
mov ecx, dword [eax]
test ecx, ecx
je 0x42474e
mov eax, edx
cmp eax, ecx
je 0x424c5b
mov eax, dword [eax + 0x28]
test eax, eax
jne 0x42473f
cmp dword [edx + 0xc], 0
je 0x424778
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edx, dword [ebp - 0x14]
cmp eax, dword [edx + 8]
jne 0x424778
mov eax, dword [ebp + 0x10]
cmp eax, 0xb
je 0x42486b
mov ebx, 0x28
jmp 0x424804
cmp dword [0x5044a0], 2
jge 0x42479a
mov eax, dword [edx + 4]
test eax, eax
je 0x42478f
mov eax, 0x98
jmp 0x4247e0
mov dword [edx + 4], 1
xor eax, eax
jmp 0x4247e0
add edx, 4
push edx
call fcn.00416dd0
add esp, 4
test eax, eax
je 0x4247b1
mov eax, 0x98
jmp 0x4247e0
mov eax, dword [ebp - 0x14]
cmp dword [eax], 0
je 0x424c3f
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.00416dd0
add esp, 4
test eax, eax
je 0x4247eb
mov ebx, 0x98
jmp 0x424800
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 0x42486b
mov eax, dword [0x5044a0]
cmp eax, 1
je 0x424be5
cmp eax, 2
jge 0x424832
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x5087c4], 0
jmp 0x424857
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x5087c4], 0
push dword [edx + 0x5087c0]
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 [0x5044a0]
cmp eax, 1
je 0x424c12
cmp eax, 2
jge 0x424899
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x5087c4], 0
jmp 0x4248be
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x5087c4], 0
push dword [edx + 0x5087c0]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp + 0x10]
call fcn.00424d50
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.00424d50
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 0x424912
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 0x42440c
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 + 0x5087c0], eax
mov dword [ebx + 0x5087c4], 0
jmp 0x42449a
push dword [ecx + 0x5087d4]
push dword [ecx + 0x5087d0]
call fcn.00416db0
add esp, 8
mov ebx, dword [ebp - 0x18]
mov eax, ebx
mov edx, dword [0x5044a0]
jmp 0x424675
cmp dword [edx + 0xc], 0
je 0x42499c
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edx, dword [ebp - 0x14]
cmp eax, dword [edx + 8]
jne 0x42499c
mov ebx, 0x28
jmp 0x424a28
cmp dword [0x5044a0], 2
jge 0x4249be
mov eax, dword [edx + 4]
test eax, eax
je 0x4249b3
mov eax, 0x98
jmp 0x424a04
mov dword [edx + 4], 1
xor eax, eax
jmp 0x424a04
add edx, 4
push edx
call fcn.00416dd0
add esp, 4
test eax, eax
je 0x4249d5
mov eax, 0x98
jmp 0x424a04
mov eax, dword [ebp - 0x14]
cmp dword [eax], 0
je 0x424b75
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.00416dd0
add esp, 4
test eax, eax
je 0x424a0f
mov ebx, 0x98
jmp 0x424a24
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 0x424a99
mov eax, dword [0x5044a0]
cmp eax, 1
je 0x424b1b
cmp eax, 2
jge 0x424a56
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x5087c4], 0
jmp 0x424a7b
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x5087c4], 0
push dword [edx + 0x5087c0]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
cmp edi, 0xfffffffa
lea edx, [edi + 5]
mov ecx, dword [ebp + 0xc]
mov eax, ebx
jg 0x424a8a
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 [0x5044a0]
cmp eax, 1
je 0x424b48
cmp eax, 2
jge 0x424ac7
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x5087c4], 0
jmp 0x424aec
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
mov dword [edx + 0x5087c4], 0
push dword [edx + 0x5087c0]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [ebp - 0x14]
mov edx, dword [ebp + 0x10]
call fcn.00424d50
cmp edi, 0xfffffffa
lea ebx, [edi + 5]
mov ecx, dword [ebp + 8]
jg 0x424b04
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 + 0x5087d4]
push dword [edx + 0x5087d0]
call fcn.00416db0
add esp, 8
mov eax, dword [0x5044a0]
jmp 0x424a36
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
push dword [edx + 0x5087d4]
push dword [edx + 0x5087d0]
call fcn.00416db0
add esp, 8
mov eax, dword [0x5044a0]
jmp 0x424aa7
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 0x4249e8
lea eax, [ebx*4]
shl ebx, 5
sub ebx, eax
lea edx, [ebx + 0x5087d0]
push edx
call fcn.00416d80
add esp, 4
mov ebx, dword [ebp - 0x18]
jmp 0x424644
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 + 0x5087c0], eax
mov dword [ebx + 0x5087c4], 0
jmp 0x4245fa
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
push dword [edx + 0x5087d4]
push dword [edx + 0x5087d0]
call fcn.00416db0
add esp, 8
mov eax, dword [0x5044a0]
jmp 0x424812
mov edx, dword [ebp - 0x18]
lea eax, [edx*4]
shl edx, 5
sub edx, eax
push dword [edx + 0x5087d4]
push dword [edx + 0x5087d0]
call fcn.00416db0
add esp, 8
mov eax, dword [0x5044a0]
jmp 0x424879
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 0x4247c4
mov edx, dword [eax + 0x28]
test edx, edx
mov dword [ebp - 0x14], edx
jne 0x42474e
mov ecx, dword [0x5044a0]
cmp ecx, 1
je 0x424ccb
mov eax, dword [ebp - 0x18]
lea edx, [ebx*4]
shl ebx, 5
sub ebx, edx
cmp ecx, 2
jge 0x424c94
mov dword [ebx + 0x5087c4], 0
jmp 0x424cb9
mov dword [ebx + 0x5087c4], 0
lea edx, [eax*4]
shl eax, 5
sub eax, edx
push dword [eax + 0x5087c0]
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 0x42439f
lea eax, [ebx*4]
shl ebx, 5
sub ebx, eax
push dword [ebx + 0x5087d4]
push dword [ebx + 0x5087d0]
call fcn.00416db0
add esp, 8
mov ebx, dword [ebp - 0x18]
mov eax, ebx
mov ecx, dword [0x5044a0]
jmp 0x424c77
mov esi, 0xffffffff
jmp 0x424398
mov eax, 2
mov esp, ebp
pop ebp
ret