Function at 0x41f280
Capabilities:
Check mutex on windows

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x2c
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
xor edx, edx
mov dword [esp + 0x1c], eax
movzx eax, byte [esp + edx + 0x1c]
mov ecx, eax
and eax, 0xf
shr cl, 4
add eax, 0x61
add ecx, 0x41
mov byte [edx + edx + 0x4ec241], al
mov byte [edx + edx + 0x4ec240], cl
add edx, 1
cmp edx, 4
jne 0x41f293
xor eax, eax
mov edx, 0x5f
jmp 0x41f2cf
movzx edx, byte [eax + str.__shmem3_winpthreads_tdm_]
mov byte [eax + 0x4ec248], dl
add eax, 1
cmp eax, 0x1a
jne 0x41f2c8
xor eax, eax
mov edx, 0x5f
jmp 0x41f2f7
movzx edx, byte [eax + str.__shmem3_winpthreads_tdm_]
mov byte [eax + 0x4ec280], dl
add eax, 1
cmp eax, 0x19
jne 0x41f2f0
mov byte [0x4ec299], 0x2d
mov dword [0x4ec29a], 0x61616161
mov dword [0x4ec29e], 0x61616161
mov dword [0x4ec2a2], 0x61616161
mov dword [0x4ec2a6], 0x61616161
mov dword [0x4ec2aa], 0x61616161
mov dword [0x4ec2ae], 0x61616161
mov dword [0x4ec2b2], 0x61616161
mov dword [0x4ec2b6], 0x61616161
mov byte [0x4ec2ba], 0
mov dword [esp + 8], 0x4ec240
mov dword [esp + 4], 0
mov dword [esp], 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
sub esp, 0xc
mov ebx, eax
mov dword [esp + 4], 0xffffffff
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
sub esp, 8
mov esi, eax
test eax, eax
jne 0x41f4ea
mov dword [esp], 0x4ec280
call dword [sym.imp.KERNEL32.dll_FindAtomA]
sub esp, 4
test ax, ax
jne 0x41f440
mov edx, 0x4ec1e0
mov eax, 0x20
lea esi, [esi]
lea esi, [esi]
bt edx, eax
jae 0x41f3e0
mov ecx, eax
neg ecx
mov byte [ecx + 0x4ec2ba], 0x41
sub eax, 1
jne 0x41f3d0
mov dword [esp], 0x4ec280
call dword [sym.imp.KERNEL32.dll_AddAtomA]
sub esp, 4
test ax, ax
je 0x41f4d9
mov dword [esp], sym.___shmem3_winpthreads_tdm_cleanup_local_region
mov dword [0x4ec1e0], 0x4ec1e0
call sym.__onexit
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
sub esp, 4
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [0x4ec1e0]
sub esp, 4
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
movzx eax, ax
mov ebp, 0x20
mov edi, 1
mov dword [esp + 8], 0x3b
mov dword [esp + 4], 0x4ec280
mov dword [esp], eax
call dword [sym.imp.KERNEL32.dll_GetAtomNameA]
mov edx, eax
sub esp, 0xc
xor eax, eax
test edx, edx
je 0x41f50a
lea esi, [esi]
cmp byte [eax + 0x4ec29a], 0x41
jne 0x41f48b
mov ecx, ebp
mov edx, edi
sub ecx, eax
shl edx, cl
or esi, edx
add eax, 1
cmp eax, 0x20
jne 0x41f478
mov eax, esi
mov dword [0x4ec1e0], eax
jmp 0x41f4ac
cmp edx, 0x4ec1e0
je 0x41f414
mov edx, eax
mov eax, dword [eax + 4]
test eax, eax
jne 0x41f4a0
cmp edx, 0x4ec1e0
je 0x41f414
mov dword [edx + 4], 0x4ec1e0
mov dword [esp], sym.___shmem3_winpthreads_tdm_cleanup_local_region
call sym.__onexit
jmp 0x41f414
mov eax, str.failed_to_add_string_to_atom_table_n
call sym.___shmem_get_error
xor eax, eax
jmp 0x41f431
mov eax, str.failed_to_to_lock_creation_mutex_n
call sym.___shmem_get_error
mov dword [esp], ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
sub esp, 4
add esp, 0x2c
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, str.failed_to_get_string_from_atom_n
call sym.___shmem_get_error
xor eax, eax
jmp 0x41f495