Function at 0x437710
Capabilities:
Check mutex on windows

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x50b439
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x1ea4
call fcn.004ef140
mov eax, dword [0x54f018]
xor eax, esp
mov dword [esp + 0x1ea0], eax
push ebx
push esi
push edi
mov eax, dword [0x54f018]
xor eax, esp
push eax
lea eax, [esp + 0x1eb8]
mov dword fs:[0], eax
mov esi, ecx
xor ebx, ebx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x28], ebx
call fcn.00493c40
mov ecx, dword [esi + 0x12a8]
sub ecx, dword [esi + 0x12a4]
mov dword [esp + 0x20], eax
mov eax, 0x8c55841d
imul ecx
add edx, ecx
sar edx, 0xb
mov eax, edx
shr eax, 0x1f
add eax, edx
mov cl, al
xor al, al
cmp cl, bl
jbe 0x4377ba
mov edx, dword [esi + 0x12a4]
jmp 0x4377a0
movzx edi, al
imul edi, edi, 0xe98
cmp byte [edi + edx + 1], 0xff
jne 0x438177
inc al
cmp al, cl
jb 0x4377a0
push 0x80
or eax, 0xffffffff
lea ecx, [esp + 0x101b]
push 0xff
push ecx
mov byte [esp + 0x1022], bl
mov dword [esp + 0x1008], ebx
mov dword [esp + 0x100c], ebx
mov dword [esp + 0x1010], ebx
mov dword [esp + 0x1014], ebx
mov word [esp + 0x1018], bx
mov dword [esp + 0x101a], eax
mov dword [esp + 0x101e], eax
call sub.MSVCR100.dll_memset
mov esi, dword [esi + 0x134c]
mov edx, dword [esi]
mov edx, dword [edx + 4]
add esp, 0xc
lea eax, [esp + 0xffc]
push eax
mov ecx, esi
call edx
test eax, eax
je 0x4382ba
lea esi, [esp + 0x7c]
call fcn.00404170
mov eax, dword [esp + 0x100d]
movzx edx, byte [esp + 0x1015]
mov ecx, 0x20
lea esi, [esp + 0x1016]
lea edi, [esp + 0x932]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [esp + 0x1011]
movsb byte es:[edi], byte [esi]
mov dword [esp + 0x929], eax
mov eax, dword [esp + 0xffc]
mov dword [esp + 0x92d], ecx
mov ecx, dword [esp + 0x1000]
mov byte [esp + 0x931], dl
mov edx, dword [esp + 0x1004]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x1008]
mov dword [esp + 0x9c], ecx
mov cl, byte [esp + 0x100c]
mov dword [esp + 0xa0], edx
mov dl, byte [ebp + 8]
mov dword [esp + 0xa4], eax
xor eax, eax
push 0x6c
mov byte [esp + 0xac], cl
mov byte [esp + 0x80], dl
mov dword [esp + 0x82], eax
mov dword [esp + 0x86], eax
mov dword [esp + 0x8a], eax
mov dword [esp + 0x8e], eax
mov dword [esp + 0x92], eax
mov dword [esp + 0x96], eax
mov word [esp + 0x9a], ax
mov byte [esp + 0x81], bl
call dword [sym.imp.mfc100.dll_Ordinal_1294]
mov esi, eax
add esp, 4
mov dword [esp + 0x18], esi
mov dword [esp + 0x1ec0], ebx
cmp esi, ebx
je 0x43793a
sub esp, 0x1c
mov eax, esp
mov dword [esp + 0x40], esp
push ebx
push eax
call fcn.004eac70
add esp, 8
call fcn.00479810
jmp 0x43793c
xor eax, eax
mov dword [esp + 0x1ec0], 0xffffffff
push ebx
mov dword [esp + 0x9b8], eax
call fcn.004e9a20
add esp, 4
push 0x6c36b0
mov dword [esp + 0xd00], eax
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov edi, dword [sym.imp.KERNEL32.dll_CreateMutexA]
cmp dword [0x6c37a8], ebx
jne 0x437a17
push 0x14
call dword [sym.imp.mfc100.dll_Ordinal_1294]
mov esi, eax
add esp, 4
mov dword [esp + 0x24], esi
mov dword [esp + 0x1ec0], 1
cmp esi, ebx
je 0x437a04
push 0x1c
mov dword [esi + 8], ebx
call dword [sym.imp.mfc100.dll_Ordinal_1294]
add esp, 4
cmp eax, ebx
je 0x4379da
mov dword [esi + 4], eax
mov dword [eax], eax
mov eax, dword [esi + 4]
mov dword [eax + 4], eax
mov eax, dword [esi + 4]
mov dword [eax + 8], eax
mov ecx, dword [esi + 4]
push 0x51d12c
mov byte [ecx + 0x18], 1
mov edx, dword [esi + 4]
push ebx
push ebx
mov byte [edx + 0x19], 1
call edi
mov dword [esi + 0x10], eax
jmp 0x437a06
lea eax, [esp + 0x18]
push eax
lea ecx, [esp + 0x34]
mov dword [esp + 0x1c], ebx
call dword [sym.imp.MSVCR100.dll_public:_void___thiscall_std::exception::constructor_char_const__const_const__]
push 0x535fb0
lea ecx, [esp + 0x34]
push ecx
mov dword [esp + 0x38], vtable.std::bad_alloc.0
call sub.MSVCR100.dll__CxxThrowException
xor esi, esi
mov dword [esp + 0x1ec0], 0xffffffff
mov dword [0x6c37a8], esi
push 0x6c36b0
call dword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov esi, dword [0x6c37a8]
mov eax, dword [esi + 0x10]
mov dl, byte [esp + 0x7d]
push 0xffffffffffffffff
push eax
mov byte [esp + 0x1c], dl
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push 0x51d12c
push ebx
push ebx
call edi
mov edi, eax
lea eax, [esp + 0x14]
mov ecx, esi
call fcn.0041df20
mov dword [eax], edi
mov ecx, 5
mov dword [eax + 4], ecx
mov ecx, dword [esi + 0x10]
push ecx
call dword [sym.imp.KERNEL32.dll_ReleaseMutex]
mov ecx, dword [esp + 0x20]
call fcn.0049efc0
xor edx, edx
cmp eax, 7
mov eax, dword [esp + 0x9b4]
setne dl
lea ecx, [esp + 0xf88]
mov dword [eax + 0x28], edx
call fcn.004a1820
mov esi, 0x10
mov dword [esp + 0x1ec0], 2
cmp dword [eax + 0x14], esi
jb 0x437aa4
mov eax, dword [eax]
mov ecx, dword [esp + 0x9b4]
mov edx, dword [ecx]
mov edx, dword [edx + 4]
push ebx
push eax
mov eax, dword [esp + 0x85]
push eax
call edx
test eax, eax
sete byte [esp + 0x14]
mov dword [esp + 0x1ec0], 0xffffffff
cmp dword [esp + 0xf9c], esi
jb 0x437ae8
mov eax, dword [esp + 0xf88]
push eax
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 4
cmp byte [esp + 0x14], bl
jne 0x4382ba
mov ecx, dword [esp + 0x9b4]
mov edx, dword [ecx]
mov eax, dword [edx + 0x18]
call eax
cmp dword [esp + 0x9b4], ebx
je 0x4382ba
lea esi, [esp + 0xa9]
xor edi, edi
lea ecx, [esp + 0x933]
mov dword [esp + 0x18], esi
cmp byte [esp + edi + 0x92a], bl
jne 0x437b6f
xor eax, eax
lea esp, [esp]
cmp byte [ecx + eax], bl
jne 0x437b66
mov edx, dword [esp + 0x98]
mov dword [esi], edx
mov edx, dword [esp + 0x9c]
mov dword [esi + 4], edx
mov edx, dword [esp + 0xa0]
mov dword [esi + 8], edx
mov edx, dword [esp + 0xa4]
mov dword [esi + 0xc], edx
mov dl, byte [esp + 0xa8]
mov byte [esi + 0x10], dl
inc eax
add esi, 0x11
cmp eax, 0x10
jb 0x437b30
mov esi, dword [esp + 0x18]
inc edi
add esi, 0x110
add ecx, 0x10
mov dword [esp + 0x18], esi
cmp edi, 8
jb 0x437b21
mov ecx, dword [esp + 0x20]
lea edi, [esp + 0xfe0]
call fcn.0049a5a0
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x1edc], 3
mov dword [esp + 0x40], esp
push 0xffffffffffffffff
push ebx
lea eax, [esp + 0x1004]
mov edi, 0xf
mov dword [ecx + 0x14], edi
mov dword [ecx + 0x10], ebx
push eax
mov byte [ecx], bl
call fcn.00401460
sub esp, 0x1c
mov byte [esp + 0x1ef8], 4
mov esi, esp
mov dword [esi + 0x14], edi
lea eax, [esp + 0xd0]
mov dword [esi + 0x10], ebx
mov dword [esp + 0x50], esp
mov byte [esi], bl
lea edi, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x437bf0
sub eax, edi
push eax
lea ecx, [esp + 0xd4]
push ecx
mov ecx, esi
call fcn.004016d0
lea esi, [esp + 0xfdc]
mov byte [esp + 0x1ef8], 3
call fcn.004addf0
mov edi, 0xf
mov dword [esp + 0xf48], edi
mov dword [esp + 0xf44], ebx
mov byte [esp + 0xf34], bl
mov dword [esp + 0xf64], edi
mov dword [esp + 0xf60], ebx
mov byte [esp + 0xf50], bl
mov dword [esp + 0xf2c], edi
mov dword [esp + 0xf28], ebx
mov byte [esp + 0xf18], bl
mov dword [esp + 0xf80], edi
mov dword [esp + 0xf7c], ebx
mov byte [esp + 0xf6c], bl
lea edx, [esp + 0xf50]
push edx
lea eax, [esp + 0xf38]
push eax
lea edx, [esp + 0xf74]
lea ecx, [esp + 0xf20]
mov byte [esp + 0x1ec8], 9
call fcn.004adfb0
push 0x524
call dword [sym.imp.mfc100.dll_Ordinal_1294]
mov esi, eax
add esp, 4
mov dword [esp + 0x24], esi
mov byte [esp + 0x1ec0], 0xa
cmp esi, ebx
je 0x437dd1
lea eax, [esp + 0x98]
mov dword [esp + 0xf9c], edi
mov dword [esp + 0xf98], ebx
mov byte [esp + 0xf88], bl
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
cmp dl, bl
jne 0x437ce4
sub eax, ecx
push eax
lea ecx, [esp + 0x9c]
push ecx
lea ecx, [esp + 0xf90]
call fcn.004016d0
sub esp, 0x1c
mov byte [esp + 0x1edc], 0xb
mov ecx, esp
mov dword [esp + 0x34], esp
push 0xffffffffffffffff
push ebx
lea edx, [esp + 0xf90]
mov dword [ecx + 0x14], edi
mov dword [ecx + 0x10], ebx
push edx
mov dword [esp + 0x50], 1
mov byte [ecx], bl
call fcn.00401460
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x1ef8], 0xc
mov dword [esp + 0xb0], esp
push 0xffffffffffffffff
push ebx
lea eax, [esp + 0xf58]
mov dword [ecx + 0x14], edi
mov dword [ecx + 0x10], ebx
push eax
mov byte [ecx], bl
call fcn.00401460
sub esp, 0x1c
mov ecx, esp
mov byte [esp + 0x1f14], 0xd
mov dword [esp + 0xc8], esp
push 0xffffffffffffffff
push ebx
lea edx, [esp + 0xfac]
mov dword [ecx + 0x14], edi
mov dword [ecx + 0x10], ebx
push edx
mov byte [ecx], bl
call fcn.00401460
sub esp, 0x1c
mov ecx, esp
mov byte [esp + 0x1f30], 0xe
mov dword [esp + 0x9c], esp
push 0xffffffffffffffff
push ebx
lea eax, [esp + 0xfac]
mov dword [ecx + 0x14], edi
mov dword [ecx + 0x10], ebx
push eax
mov byte [ecx], bl
call fcn.00401460
lea ecx, [esp + 0xff8]
push ecx
mov byte [esp + 0x1f34], 0xb
call fcn.0047cbe0
jmp 0x437dd3
xor eax, eax
movzx edx, byte [esp + 0x7d]
mov esi, dword [esp + 0x1c]
mov dword [esp + 0x1ec0], 9
test byte [esp + 0x28], 1
mov dword [esi + edx*4 + 0x12c4], eax
je 0x437e10
cmp dword [esp + 0xf9c], 0x10
jb 0x437e10
mov eax, dword [esp + 0xf88]
push eax
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 4
push esi
lea ecx, [esp + 0x80]
call fcn.0043c340
mov dword [esp + 0x9c0], eax
cmp dword [esp + 0x20], ebx
je 0x438181
push esi
lea eax, [esp + 0x80]
call fcn.00436780
mov ecx, dword [esi + 0x20]
mov esi, dword [sym.imp.USER32.dll_GetParent]
push ecx
call esi
mov edi, dword [sym.imp.mfc100.dll_Ordinal_4345]
push eax
call edi
mov edx, dword [eax + 0x20]
push edx
call esi
push eax
call edi
cmp eax, ebx
jne 0x437e61
xor eax, eax
jmp 0x437e64
mov eax, dword [eax + 0x20]
push ebx
lea ecx, [esp + 0x80]
push ecx
push 0x86a
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
call fcn.0041f0a0
movzx edi, byte [esp + 0x7d]
imul edi, edi, 0xe98
add edi, dword [eax]
mov ecx, 0x3a6
lea esi, [esp + 0x7c]
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0x1c]
lea ecx, [esp + 0x7c]
call fcn.0043fbc0
mov edx, dword [edi + 0x12b8]
sub edx, dword [edi + 0x12b4]
movzx eax, byte [esp + 0x7d]
sar edx, 2
cmp edx, eax
jbe 0x437ee3
mov esi, edi
mov ecx, dword [esi + 0x12b4]
mov edi, dword [ecx + eax*4]
call fcn.004514b0
movzx edx, byte [esp + 0x7d]
mov eax, dword [esi + 0x12b4]
mov eax, dword [eax + edx*4]
mov cl, byte [esp + 0x7c]
mov byte [eax + 0xb8], cl
push 0xe10
lea edx, [esp + 0x10a0]
push ebx
push edx
call sub.MSVCR100.dll_memset
sub esp, 0xe8c
mov edi, esp
mov ecx, 0x3a6
lea esi, [esp + 0xf14]
rep movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0xeb4]
push esi
lea ecx, [esp + 0x1f38]
call fcn.0043f7e0
sub esp, 0x1c
mov ecx, esp
mov dword [esp + 0x48], esp
call fcn.004a1820
mov ecx, dword [esi + 0x135c]
mov eax, dword [ecx]
mov eax, dword [eax + 8]
lea edx, [esp + 0x10b8]
push edx
call eax
lea ecx, [esp + 0x6c]
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
call dword [sym.imp.mfc100.dll_Ordinal_316]
lea ecx, [esp + 0x70]
call dword [sym.imp.mfc100.dll_Ordinal_316]
mov byte [esp + 0x1ec0], 0x10
push esi
lea edx, [esp + 0x44]
lea ecx, [esp + 0x80]
mov dword [esp + 0x60], ebx
call fcn.0043c950
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0xf88], ebx
mov dword [esp + 0xf8c], ebx
mov dword [esp + 0xf90], ebx
lea ecx, [esp + 0x40]
lea edi, [esp + 0x30]
mov byte [esp + 0x1ec0], 0x12
call fcn.0044b800
lea ecx, [esp + 0xf88]
push ecx
mov edx, edi
push edx
mov eax, esi
call fcn.0043bb90
mov esi, dword [esp + 0x30]
cmp esi, ebx
je 0x437feb
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x34]
push eax
push ecx
mov eax, esi
call fcn.0044c850
push esi
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 0xc
lea ecx, [esp + 0x70]
call dword [sym.imp.mfc100.dll_Ordinal_901]
lea ecx, [esp + 0x6c]
call dword [sym.imp.mfc100.dll_Ordinal_901]
mov esi, dword [esp + 0x44]
cmp esi, ebx
je 0x43802d
mov edi, dword [esp + 0x48]
cmp esi, edi
je 0x438023
nop
mov ecx, esi
call dword [sym.imp.mfc100.dll_Ordinal_901]
add esi, 4
cmp esi, edi
jne 0x438010
mov esi, dword [esp + 0x44]
push esi
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 4
mov esi, 0x10
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
cmp dword [esp + 0xf80], esi
jb 0x438058
mov edx, dword [esp + 0xf6c]
push edx
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 4
mov edi, 0xf
mov dword [esp + 0xf80], edi
mov dword [esp + 0xf7c], ebx
mov byte [esp + 0xf6c], bl
cmp dword [esp + 0xf2c], esi
jb 0x43808c
mov eax, dword [esp + 0xf18]
push eax
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 4
mov dword [esp + 0xf2c], edi
mov dword [esp + 0xf28], ebx
mov byte [esp + 0xf18], bl
cmp dword [esp + 0xf64], esi
jb 0x4380bb
mov ecx, dword [esp + 0xf50]
push ecx
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 4
mov dword [esp + 0xf64], edi
mov dword [esp + 0xf60], ebx
mov byte [esp + 0xf50], bl
cmp dword [esp + 0xf48], esi
jb 0x4380ea
mov edx, dword [esp + 0xf34]
push edx
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 4
mov dword [esp + 0xf48], edi
mov dword [esp + 0xf44], ebx
mov byte [esp + 0xf34], bl
cmp dword [esp + 0xfd4], esi
jb 0x438119
mov eax, dword [esp + 0xfc0]
push eax
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 4
mov dword [esp + 0xfd4], edi
mov dword [esp + 0xfd0], ebx
mov byte [esp + 0xfc0], bl
cmp dword [esp + 0xfb8], esi
jb 0x438148
mov ecx, dword [esp + 0xfa4]
push ecx
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 4
mov dword [esp + 0xfb8], edi
mov dword [esp + 0xfb4], ebx
mov byte [esp + 0xfa4], bl
cmp dword [esp + 0xff4], esi
jb 0x438177
mov edx, dword [esp + 0xfe0]
push edx
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 4
mov eax, 1
jmp 0x4382bc
mov esi, 0x10
cmp dword [esp + 0xf80], esi
jb 0x4381a0
mov eax, dword [esp + 0xf6c]
push eax
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 4
mov dword [esp + 0xf80], edi
mov dword [esp + 0xf7c], ebx
mov byte [esp + 0xf6c], bl
cmp dword [esp + 0xf2c], esi
jb 0x4381cf
mov ecx, dword [esp + 0xf18]
push ecx
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 4
mov dword [esp + 0xf2c], edi
mov dword [esp + 0xf28], ebx
mov byte [esp + 0xf18], bl
cmp dword [esp + 0xf64], esi
jb 0x4381fe
mov edx, dword [esp + 0xf50]
push edx
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 4
mov dword [esp + 0xf64], edi
mov dword [esp + 0xf60], ebx
mov byte [esp + 0xf50], bl
cmp dword [esp + 0xf48], esi
jb 0x43822d
mov eax, dword [esp + 0xf34]
push eax
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 4
mov dword [esp + 0xf48], edi
mov dword [esp + 0xf44], ebx
mov byte [esp + 0xf34], bl
cmp dword [esp + 0xfd4], esi
jb 0x43825c
mov ecx, dword [esp + 0xfc0]
push ecx
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 4
mov dword [esp + 0xfd4], edi
mov dword [esp + 0xfd0], ebx
mov byte [esp + 0xfc0], bl
cmp dword [esp + 0xfb8], esi
jb 0x43828b
mov edx, dword [esp + 0xfa4]
push edx
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 4
mov dword [esp + 0xfb8], edi
mov dword [esp + 0xfb4], ebx
mov byte [esp + 0xfa4], bl
cmp dword [esp + 0xff4], esi
jb 0x4382ba
mov eax, dword [esp + 0xfe0]
push eax
call dword [sym.imp.mfc100.dll_Ordinal_1296]
add esp, 4
xor eax, eax
mov ecx, dword [esp + 0x1eb8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x1ea0]
xor ecx, esp
call fcn.004e8d32
mov esp, ebp
pop ebp
ret 8