Function at 0x10025628
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 0x10025e8d
cmp esi, 0x69
jge 0x10025a8f
add esi, 1
cmp esi, 0x272
jge 0x10025864
mov eax, esi
shl eax, 2
mov edi, esi
shl edi, 5
sub edi, eax
mov edx, dword [edi + 0x100d0d38]
test edx, edx
je 0x10025852
cmp esi, 0x69
jge 0x10025787
mov eax, dword [edi + 0x100d0d2c]
test eax, eax
je 0x100256af
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp eax, dword [edi + 0x100d0d28]
jne 0x100256af
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 [0x100ce600]
cmp eax, 2
jge 0x100256d8
mov eax, dword [edi + 0x100d0d24]
test eax, eax
je 0x100256ca
mov eax, 0x98
jmp 0x1002571d
mov dword [edi + 0x100d0d24], 1
xor eax, eax
jmp 0x1002571d
lea ebx, [edi + 0x100d0d24]
push ebx
call fcn.10031e7c
pop ecx
test eax, eax
je 0x100256f0
mov eax, 0x98
jmp 0x1002571d
mov eax, dword [edi + 0x100d0d20]
test eax, eax
je 0x100258ab
mov dword [edi + 0x100d0d24], 0
push 0xffffffffffffffff
push dword [edi + 0x100d0d20]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push ebx
call fcn.10031e7c
pop ecx
test eax, eax
je 0x10025728
mov eax, 0x98
jmp 0x10025740
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [edi + 0x100d0d2c], 1
mov dword [edi + 0x100d0d28], eax
xor eax, eax
test eax, eax
jne 0x100258a3
mov ebx, dword [edi + 0x100d0d38]
test ebx, ebx
jne 0x10025879
mov eax, dword [0x100ce600]
mov dword [edi + 0x100d0d2c], 0
cmp eax, 2
mov dword [edi + 0x100d0d28], 0xffffffff
jge 0x1002583c
mov dword [edi + 0x100d0d24], 0
jmp 0x10025852
mov eax, dword [0x100ce600]
cmp eax, 2
jge 0x100257a7
mov eax, dword [edi + 0x100d0d24]
test eax, eax
jne 0x100257e5
mov dword [edi + 0x100d0d24], 1
jmp 0x100257e5
lea ebx, [edi + 0x100d0d24]
push ebx
call fcn.10031e7c
pop ecx
test eax, eax
jne 0x100257e5
mov eax, dword [edi + 0x100d0d20]
test eax, eax
je 0x10025a6f
mov dword [edi + 0x100d0d24], 0
push 0xffffffffffffffff
push dword [edi + 0x100d0d20]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push ebx
call fcn.10031e7c
pop ecx
mov eax, dword [0x100ce600]
test eax, eax
jle 0x100257fb
lea eax, [edi + 0x100d0d30]
push eax
call fcn.10031e50
pop ecx
mov ebx, dword [edi + 0x100d0d38]
test ebx, ebx
jne 0x100258cb
mov eax, dword [0x100ce600]
test eax, eax
jle 0x10025830
push dword [edi + 0x100d0d34]
push dword [edi + 0x100d0d30]
call fcn.10031e30
add esp, 8
mov eax, dword [0x100ce600]
cmp eax, 2
jge 0x1002583c
mov dword [edi + 0x100d0d24], 0
jmp 0x10025852
push dword [edi + 0x100d0d20]
mov dword [edi + 0x100d0d24], 0
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
add esi, 1
cmp esi, 0x272
jl 0x1002565d
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.10025e98
mov edx, dword [ebp + 8]
mov esi, dword [ebp - 8]
mov dword [edx], ebx
mov ecx, dword [ebx + 0xc8]
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 0x100256a0
xor eax, eax
push eax
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [edi + 0x100d0d24], 0
mov dword [edi + 0x100d0d20], eax
jmp 0x10025708
mov eax, dword [ebx + 0xc]
mov dword [ebp - 0x14], edi
mov edi, dword [ebp + 0xc]
test eax, eax
je 0x100258ed
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp eax, dword [ebx + 8]
jne 0x100258ed
mov eax, 0x28
jmp 0x1002596e
mov eax, dword [0x100ce600]
cmp eax, 2
jge 0x10025910
mov eax, dword [ebx + 4]
test eax, eax
je 0x10025905
mov eax, 0x98
jmp 0x1002594d
mov dword [ebx + 4], 1
xor eax, eax
jmp 0x1002594d
lea eax, [ebx + 4]
mov dword [ebp - 0x18], eax
push eax
call fcn.10031e7c
pop ecx
test eax, eax
je 0x10025928
mov eax, 0x98
jmp 0x1002594d
mov eax, dword [ebx]
test eax, eax
je 0x10025a56
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.10031e7c
pop ecx
test eax, eax
je 0x10025958
mov eax, 0x98
jmp 0x1002596a
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [ebx + 0xc], 1
mov dword [ebx + 8], eax
xor eax, eax
test eax, eax
je 0x100259dd
mov edx, dword [0x100ce600]
test edx, edx
jle 0x100259a0
mov edx, dword [ebp - 0x14]
push dword [edx + 0x100d0d34]
push dword [edx + 0x100d0d30]
mov dword [ebp - 0x18], eax
call fcn.10031e30
mov eax, dword [ebp - 0x18]
add esp, 8
mov edx, dword [0x100ce600]
cmp edx, 2
jge 0x100259af
mov edx, dword [ebp - 0x14]
mov dword [edx + 0x100d0d24], 0
jmp 0x100259ce
mov edx, dword [ebp - 0x14]
push dword [edx + 0x100d0d20]
mov dword [ebp - 0x18], eax
mov dword [edx + 0x100d0d24], 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 [0x100ce600]
test eax, eax
jle 0x10025a07
mov eax, dword [ebp - 0x14]
push dword [eax + 0x100d0d34]
push dword [eax + 0x100d0d30]
call fcn.10031e30
add esp, 8
mov eax, dword [0x100ce600]
cmp eax, 2
jge 0x10025a16
mov eax, dword [ebp - 0x14]
mov dword [eax + 0x100d0d24], 0
jmp 0x10025a2f
mov eax, dword [ebp - 0x14]
push dword [eax + 0x100d0d20]
mov dword [eax + 0x100d0d24], 0
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov edx, dword [ebp + 0x10]
mov eax, ebx
call fcn.10025e98
mov edx, dword [ebp + 8]
mov esi, dword [ebp - 8]
mov dword [edx], ebx
mov ecx, dword [ebx + 0xc8]
add ecx, 5
mov ebx, dword [ebp - 4]
mov dword [edi], ecx
mov edi, dword [ebp - 0xc]
mov esp, ebp
pop ebp
ret
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 0x10025939
xor eax, eax
push eax
push eax
push eax
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [edi + 0x100d0d24], 0
mov dword [edi + 0x100d0d20], eax
jmp 0x100257d0
mov eax, 0x3ee4f99d
imul esi
mov ecx, esi
mov ebx, dword [0x100ce600]
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 0x10025aef
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
mov edx, dword [edx + 0x100d0d24]
test edx, edx
jne 0x10025b75
mov edx, dword [ebp - 0x10]
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
mov dword [edx + 0x100d0d24], 1
jmp 0x10025b75
lea eax, [eax*4 + 0x1a4]
mov edx, eax
shl edx, 3
sub edx, eax
lea ecx, [edx + 0x100d0d24]
push ecx
call fcn.10031e7c
pop ecx
test eax, eax
jne 0x10025b75
mov edx, dword [ebp - 0x10]
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
mov ecx, dword [edx + 0x100d0d20]
test ecx, ecx
je 0x10025e53
mov edx, dword [ebp - 0x10]
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
mov dword [edx + 0x100d0d24], 0
mov edx, dword [ebp - 0x10]
push 0xffffffffffffffff
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
push dword [edx + 0x100d0d20]
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 + 0x100d0d24]
push ecx
call fcn.10031e7c
pop ecx
mov eax, dword [0x100ce600]
test eax, eax
jle 0x10025b98
mov edx, dword [ebp - 0x10]
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
lea ecx, [edx + 0x100d0d30]
push ecx
call fcn.10031e50
pop ecx
mov eax, dword [ebp - 0x10]
mov ecx, eax
shl ecx, 2
mov edx, eax
shl edx, 5
sub edx, ecx
mov ebx, dword [edx + 0x100d0d38]
test ebx, ebx
je 0x10025bc3
lea ecx, [esi - 5]
cmp ecx, dword [ebx + 0xc8]
jle 0x10025bc3
mov ebx, dword [ebx + 0x28]
test ebx, ebx
jne 0x10025bb4
test ebx, ebx
je 0x10025dc0
lea ecx, [esi - 5]
cmp ecx, dword [ebx + 0xc8]
jne 0x10025be1
mov ebx, dword [ebx + 0x28]
test ebx, ebx
je 0x10025dc0
mov eax, dword [ebx + 0xc]
test eax, eax
je 0x10025bfd
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp eax, dword [ebx + 8]
jne 0x10025bfd
mov eax, 0x28
jmp 0x10025c82
mov eax, dword [0x100ce600]
cmp eax, 2
jge 0x10025c20
mov eax, dword [ebx + 4]
test eax, eax
je 0x10025c15
mov eax, 0x98
jmp 0x10025c5d
mov dword [ebx + 4], 1
xor eax, eax
jmp 0x10025c5d
lea eax, [ebx + 4]
mov dword [ebp - 0x18], eax
push eax
call fcn.10031e7c
pop ecx
test eax, eax
je 0x10025c38
mov eax, 0x98
jmp 0x10025c5d
mov eax, dword [ebx]
test eax, eax
je 0x10025e3a
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.10031e7c
pop ecx
test eax, eax
je 0x10025c68
mov eax, 0x98
jmp 0x10025c7a
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov dword [ebx + 0xc], 1
mov dword [ebx + 8], eax
xor eax, eax
test eax, eax
je 0x10025d1c
mov edx, dword [0x100ce600]
test edx, edx
jle 0x10025cbe
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 + 0x100d0d34]
push dword [ecx + 0x100d0d30]
call fcn.10031e30
mov eax, dword [ebp - 0x14]
add esp, 8
mov edx, dword [0x100ce600]
cmp edx, 2
jge 0x10025cd7
mov ecx, dword [ebp - 0x10]
mov edx, ecx
shl edx, 2
shl ecx, 5
sub ecx, edx
mov dword [ecx + 0x100d0d24], 0
jmp 0x10025d0d
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 + 0x100d0d24], 0
mov edx, dword [ebp - 0x10]
mov ebx, edx
shl ebx, 2
shl edx, 5
sub edx, ebx
push dword [edx + 0x100d0d20]
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 [0x100ce600]
test eax, eax
jle 0x10025d50
mov edx, dword [ebp - 0x10]
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
push dword [edx + 0x100d0d34]
push dword [edx + 0x100d0d30]
call fcn.10031e30
add esp, 8
mov eax, dword [0x100ce600]
cmp eax, 2
jge 0x10025d69
mov edx, dword [ebp - 0x10]
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
mov dword [edx + 0x100d0d24], 0
jmp 0x10025d99
mov edx, dword [ebp - 0x10]
mov eax, edx
shl eax, 2
shl edx, 5
sub edx, eax
mov dword [edx + 0x100d0d24], 0
mov esi, dword [ebp - 0x10]
mov ecx, esi
shl ecx, 2
shl esi, 5
sub esi, ecx
push dword [esi + 0x100d0d20]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov edx, dword [ebp + 0x10]
mov eax, ebx
call fcn.10025e98
mov edx, dword [ebp + 8]
mov esi, dword [ebp - 8]
mov dword [edx], ebx
mov ecx, dword [ebx + 0xc8]
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 [0x100ce600]
test ecx, ecx
jle 0x10025dec
push dword [edx + 0x100d0d34]
push dword [edx + 0x100d0d30]
call fcn.10031e30
add esp, 8
mov eax, dword [ebp - 0x10]
mov edx, dword [0x100ce600]
cmp edx, 2
jge 0x10025e02
mov edx, eax
shl edx, 2
shl eax, 5
sub eax, edx
mov dword [eax + 0x100d0d24], 0
jmp 0x10025e2f
mov edx, eax
shl edx, 2
shl eax, 5
sub eax, edx
mov dword [eax + 0x100d0d24], 0
mov ecx, dword [ebp - 0x10]
mov eax, ecx
shl eax, 2
shl ecx, 5
sub ecx, eax
push dword [ecx + 0x100d0d20]
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov esi, dword [ebp - 0x10]
add esi, 1
jmp 0x10025651
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 0x10025c49
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 + 0x100d0d20], eax
mov eax, ebx
shl eax, 2
shl ebx, 5
sub ebx, eax
mov dword [ebx + 0x100d0d24], 0
jmp 0x10025b40
mov esi, 0xffffffff
jmp 0x1002564e