Function at 0x4319c4
Capabilities:
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
mov dword [ebp - 0xc], edi
mov dword [ebp - 8], esi
mov dword [ebp - 4], ebx
mov edi, dword [ebp + 0xc]
mov esi, dword [edi]
cmp esi, 0xffffffff
je 0x432260
cmp esi, 0x69
jge 0x431e4f
add esi, 1
cmp esi, 0x272
jge 0x431be4
mov eax, esi
shl eax, 2
mov edi, esi
shl edi, 5
sub edi, eax
mov edx, dword [edi + 0x4407e78]
test edx, edx
je 0x431bd2
cmp esi, 0x69
jge 0x431b23
mov eax, dword [edi + 0x4407e6c]
test eax, eax
je 0x431a4b
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp eax, dword [edi + 0x4407e68]
jne 0x431a4b
mov edi, dword [ebp + 0xc]
mov eax, 0x28
mov ebx, dword [ebp - 4]
mov dword [edi], esi
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 0xc]
mov esp, ebp
pop ebp
ret
mov eax, dword [0x4c9460]
cmp eax, 2
jge 0x431a74
mov eax, dword [edi + 0x4407e64]
test eax, eax
je 0x431a66
mov eax, 0x98
jmp 0x431ab9
mov dword [edi + 0x4407e64], 1
xor eax, eax
jmp 0x431ab9
lea ebx, [edi + 0x4407e64]
push ebx
call fcn.004161ac
pop ecx
test eax, eax
je 0x431a8c
mov eax, 0x98
jmp 0x431ab9
mov eax, dword [edi + 0x4407e60]
test eax, eax
je 0x431c2b
mov dword [edi + 0x4407e64], 0
push 0xffffffffffffffff
push dword [edi + 0x4407e60]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push ebx
call fcn.004161ac
pop ecx
test eax, eax
je 0x431ac4
mov eax, 0x98
jmp 0x431adc
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [edi + 0x4407e6c], 1
mov dword [edi + 0x4407e68], eax
xor eax, eax
test eax, eax
jne 0x431c23
mov ebx, dword [edi + 0x4407e78]
test ebx, ebx
jne 0x431bf9
mov eax, dword [0x4c9460]
mov dword [edi + 0x4407e6c], 0
cmp eax, 2
mov dword [edi + 0x4407e68], 0xffffffff
jge 0x431bbc
mov dword [edi + 0x4407e64], 0
jmp 0x431bd2
mov eax, dword [0x4c9460]
cmp eax, 2
jge 0x431b43
mov eax, dword [edi + 0x4407e64]
test eax, eax
jne 0x431b81
mov dword [edi + 0x4407e64], 1
jmp 0x431b81
lea ebx, [edi + 0x4407e64]
push ebx
call fcn.004161ac
pop ecx
test eax, eax
jne 0x431b81
mov eax, dword [edi + 0x4407e60]
test eax, eax
je 0x431e2f
mov dword [edi + 0x4407e64], 0
push 0xffffffffffffffff
push dword [edi + 0x4407e60]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push ebx
call fcn.004161ac
pop ecx
mov eax, dword [0x4c9460]
cmp eax, 1
je 0x431e1d
mov ebx, dword [edi + 0x4407e78]
test ebx, ebx
jne 0x431c69
mov eax, dword [0x4c9460]
cmp eax, 1
je 0x431c4b
cmp eax, 2
jge 0x431bbc
mov dword [edi + 0x4407e64], 0
jmp 0x431bd2
push dword [edi + 0x4407e60]
mov dword [edi + 0x4407e64], 0
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
add esi, 1
cmp esi, 0x272
jl 0x4319f9
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp - 4]
mov esi, dword [ebp - 8]
mov dword [edi], 0xffffffff
xor eax, eax
mov edi, dword [ebp - 0xc]
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp + 0xc]
mov edx, dword [ebp + 0x10]
mov eax, ebx
call fcn.0043226c
mov edx, dword [ebp + 8]
mov esi, dword [ebp - 8]
mov dword [edx], ebx
mov ecx, dword [ebx + 0xec]
add ecx, 5
mov ebx, dword [ebp - 4]
mov dword [edi], ecx
mov edi, dword [ebp - 0xc]
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp + 0xc]
jmp 0x431a3c
xor eax, eax
push eax
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [edi + 0x4407e64], 0
mov dword [edi + 0x4407e60], eax
jmp 0x431aa4
push dword [edi + 0x4407e74]
push dword [edi + 0x4407e70]
call fcn.00416160
add esp, 8
mov eax, dword [0x4c9460]
jmp 0x431bab
mov eax, dword [ebx + 0xc]
mov dword [ebp - 0x14], edi
mov edi, dword [ebp + 0xc]
test eax, eax
je 0x431c8b
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp eax, dword [ebx + 8]
jne 0x431c8b
mov eax, 0x28
jmp 0x431d0c
mov eax, dword [0x4c9460]
cmp eax, 2
jge 0x431cae
mov eax, dword [ebx + 4]
test eax, eax
je 0x431ca3
mov eax, 0x98
jmp 0x431ceb
mov dword [ebx + 4], 1
xor eax, eax
jmp 0x431ceb
lea eax, [ebx + 4]
mov dword [ebp - 0x18], eax
push eax
call fcn.004161ac
pop ecx
test eax, eax
je 0x431cc6
mov eax, 0x98
jmp 0x431ceb
mov eax, dword [ebx]
test eax, eax
je 0x431e04
mov dword [ebx + 4], 0
push 0xffffffffffffffff
push dword [ebx]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [ebp - 0x18]
push eax
call fcn.004161ac
pop ecx
test eax, eax
je 0x431cf6
mov eax, 0x98
jmp 0x431d08
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [ebx + 0xc], 1
mov dword [ebx + 8], eax
xor eax, eax
test eax, eax
je 0x431d5d
mov edx, dword [0x4c9460]
cmp edx, 1
je 0x431dbb
cmp edx, 2
jge 0x431d2f
mov edx, dword [ebp - 0x14]
mov dword [edx + 0x4407e64], 0
jmp 0x431d4e
mov edx, dword [ebp - 0x14]
push dword [edx + 0x4407e60]
mov dword [ebp - 0x18], eax
mov dword [edx + 0x4407e64], 0
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [ebp - 0x18]
mov ebx, dword [ebp - 4]
mov dword [edi], esi
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 0xc]
mov esp, ebp
pop ebp
ret
mov eax, dword [0x4c9460]
cmp eax, 1
je 0x431de3
cmp eax, 2
jge 0x431d7b
mov eax, dword [ebp - 0x14]
mov dword [eax + 0x4407e64], 0
jmp 0x431d94
mov eax, dword [ebp - 0x14]
push dword [eax + 0x4407e60]
mov dword [eax + 0x4407e64], 0
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov edx, dword [ebp + 0x10]
mov eax, ebx
call fcn.0043226c
mov edx, dword [ebp + 8]
mov esi, dword [ebp - 8]
mov dword [edx], ebx
mov ecx, dword [ebx + 0xec]
add ecx, 5
mov ebx, dword [ebp - 4]
mov dword [edi], ecx
mov edi, dword [ebp - 0xc]
mov esp, ebp
pop ebp
ret
mov edx, dword [ebp - 0x14]
push dword [edx + 0x4407e74]
push dword [edx + 0x4407e70]
mov dword [ebp - 0x18], eax
call fcn.00416160
mov eax, dword [ebp - 0x18]
add esp, 8
mov edx, dword [0x4c9460]
jmp 0x431d1b
mov eax, dword [ebp - 0x14]
push dword [eax + 0x4407e74]
push dword [eax + 0x4407e70]
call fcn.00416160
add esp, 8
mov eax, dword [0x4c9460]
jmp 0x431d67
xor eax, eax
push eax
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [ebx + 4], 0
mov dword [ebx], eax
jmp 0x431cd7
lea eax, [edi + 0x4407e70]
push eax
call fcn.00416180
pop ecx
jmp 0x431b8f
xor eax, eax
push eax
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [edi + 0x4407e64], 0
mov dword [edi + 0x4407e60], eax
jmp 0x431b6c
mov eax, 0x3ee4f99d
imul esi
mov ecx, esi
mov ebx, dword [0x4c9460]
sar edx, 7
sar ecx, 0x1f
sub edx, ecx
imul eax, edx, 0x209
neg eax
add eax, esi
lea edx, [eax + 0x69]
mov dword [ebp - 0x10], edx
cmp ebx, 2
jge 0x431eaf
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
mov edx, dword [edx + 0x4407e64]
test edx, edx
jne 0x431f35
mov edx, dword [ebp - 0x10]
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
mov dword [edx + 0x4407e64], 1
jmp 0x431f35
lea eax, [eax*4 + 0x1a4]
mov edx, eax
shl edx, 3
sub edx, eax
lea ecx, [edx + 0x4407e64]
push ecx
call fcn.004161ac
pop ecx
test eax, eax
jne 0x431f35
mov edx, dword [ebp - 0x10]
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
mov ecx, dword [edx + 0x4407e60]
test ecx, ecx
je 0x432226
mov edx, dword [ebp - 0x10]
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
mov dword [edx + 0x4407e64], 0
mov edx, dword [ebp - 0x10]
push 0xffffffffffffffff
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
push dword [edx + 0x4407e60]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov edx, dword [ebp - 0x10]
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
lea ecx, [edx + 0x4407e64]
push ecx
call fcn.004161ac
pop ecx
mov eax, dword [0x4c9460]
cmp eax, 1
je 0x432207
mov eax, dword [ebp - 0x10]
mov ecx, eax
shl ecx, 2
mov edx, eax
shl edx, 5
sub edx, ecx
mov ebx, dword [edx + 0x4407e78]
test ebx, ebx
je 0x431f6e
lea ecx, [esi - 5]
cmp ecx, dword [ebx + 0xec]
jle 0x431f6e
mov ebx, dword [ebx + 0x28]
test ebx, ebx
jne 0x431f5f
test ebx, ebx
je 0x43211e
lea ecx, [esi - 5]
cmp ecx, dword [ebx + 0xec]
jne 0x431f8c
mov ebx, dword [ebx + 0x28]
test ebx, ebx
je 0x43211e
mov eax, dword [ebx + 0xc]
test eax, eax
je 0x431fa8
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp eax, dword [ebx + 8]
jne 0x431fa8
mov eax, 0x28
jmp 0x432029
mov eax, dword [0x4c9460]
cmp eax, 2
jge 0x431fcb
mov eax, dword [ebx + 4]
test eax, eax
je 0x431fc0
mov eax, 0x98
jmp 0x432008
mov dword [ebx + 4], 1
xor eax, eax
jmp 0x432008
lea eax, [ebx + 4]
mov dword [ebp - 0x18], eax
push eax
call fcn.004161ac
pop ecx
test eax, eax
je 0x431fe3
mov eax, 0x98
jmp 0x432008
mov eax, dword [ebx]
test eax, eax
je 0x4321ee
mov dword [ebx + 4], 0
push 0xffffffffffffffff
push dword [ebx]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov eax, dword [ebp - 0x18]
push eax
call fcn.004161ac
pop ecx
test eax, eax
je 0x432013
mov eax, 0x98
jmp 0x432025
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [ebx + 0xc], 1
mov dword [ebx + 8], eax
xor eax, eax
test eax, eax
je 0x43209b
mov edx, dword [0x4c9460]
cmp edx, 1
je 0x432191
cmp edx, 2
jge 0x432056
mov ecx, dword [ebp - 0x10]
mov edx, ecx
shl edx, 2
shl ecx, 5
sub ecx, edx
mov dword [ecx + 0x4407e64], 0
jmp 0x43208c
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x14], eax
mov edx, ecx
shl edx, 2
shl ecx, 5
sub ecx, edx
mov dword [ecx + 0x4407e64], 0
mov edx, dword [ebp - 0x10]
mov ebx, edx
shl ebx, 2
shl edx, 5
sub edx, ebx
push dword [edx + 0x4407e60]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov eax, dword [ebp - 0x14]
mov ebx, dword [ebp - 4]
mov dword [edi], esi
mov esi, dword [ebp - 8]
mov edi, dword [ebp - 0xc]
mov esp, ebp
pop ebp
ret
mov eax, dword [0x4c9460]
cmp eax, 1
je 0x4321c3
cmp eax, 2
jge 0x4320c7
mov edx, dword [ebp - 0x10]
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
mov dword [edx + 0x4407e64], 0
jmp 0x4320f7
mov edx, dword [ebp - 0x10]
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
mov dword [edx + 0x4407e64], 0
mov esi, dword [ebp - 0x10]
mov ecx, esi
shl ecx, 2
shl esi, 5
sub esi, ecx
push dword [esi + 0x4407e60]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov edx, dword [ebp + 0x10]
mov eax, ebx
call fcn.0043226c
mov edx, dword [ebp + 8]
mov esi, dword [ebp - 8]
mov dword [edx], ebx
mov ecx, dword [ebx + 0xec]
add ecx, 5
mov ebx, dword [ebp - 4]
mov dword [edi], ecx
mov edi, dword [ebp - 0xc]
mov esp, ebp
pop ebp
ret
mov ecx, dword [0x4c9460]
cmp ecx, 1
je 0x432172
mov edx, eax
shl edx, 2
shl eax, 5
sub eax, edx
cmp ecx, 2
jge 0x432144
mov dword [eax + 0x4407e64], 0
jmp 0x432167
mov dword [eax + 0x4407e64], 0
mov edx, dword [ebp - 0x10]
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
push dword [edx + 0x4407e60]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov esi, dword [ebp - 0x10]
add esi, 1
jmp 0x4319ed
push dword [edx + 0x4407e74]
push dword [edx + 0x4407e70]
call fcn.00416160
add esp, 8
mov eax, dword [ebp - 0x10]
mov ecx, dword [0x4c9460]
jmp 0x432129
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x14], eax
mov edx, ecx
shl edx, 2
shl ecx, 5
sub ecx, edx
push dword [ecx + 0x4407e74]
push dword [ecx + 0x4407e70]
call fcn.00416160
mov eax, dword [ebp - 0x14]
add esp, 8
mov edx, dword [0x4c9460]
jmp 0x432038
mov edx, dword [ebp - 0x10]
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
push dword [edx + 0x4407e74]
push dword [edx + 0x4407e70]
call fcn.00416160
add esp, 8
mov eax, dword [0x4c9460]
jmp 0x4320a9
xor eax, eax
push eax
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [ebx + 4], 0
mov dword [ebx], eax
jmp 0x431ff4
mov edx, dword [ebp - 0x10]
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
lea ecx, [edx + 0x4407e70]
push ecx
call fcn.00416180
pop ecx
jmp 0x431f43
xor eax, eax
push eax
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov ecx, dword [ebp - 0x10]
mov ebx, dword [ebp - 0x10]
mov edx, ecx
shl edx, 2
shl ecx, 5
sub ecx, edx
mov dword [ecx + 0x4407e60], eax
mov eax, ebx
shl eax, 2
shl ebx, 5
sub ebx, eax
mov dword [ebx + 0x4407e64], 0
jmp 0x431f00
mov esi, 0xffffffff
jmp 0x4319ea