Function at 0x53e010
Capabilities:
Create thread

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x1c
mov edx, dword [0x880374]
test edx, edx
je 0x53e318
mov ebx, eax
mov dword [esp], 0x8802b4
call dword [sym.imp.kernel32.dll_InitializeCriticalSection]
mov eax, dword [0x880360]
sub esp, 4
test eax, eax
je 0x53e04e
mov dword [esp], 0x8802b0
call eax
sub esp, 4
mov dword [esp], 0x8802b4
call dword [sym.imp.kernel32.dll_EnterCriticalSection]
sub esp, 4
mov dword [esp + 8], 0xa
mov dword [esp + 4], 0x8802b4
mov dword [esp], ebx
call dword [0x880370]
sub esp, 0xc
mov esi, eax
mov dword [esp], 0x8802b4
call dword [sym.imp.kernel32.dll_LeaveCriticalSection]
sub esp, 4
call fcn.0057d110
mov dword [eax], 0x5f5ef4
mov dword [eax + 4], 0x7ac
xor eax, eax
test esi, esi
sete al
mov dword [esp + 4], str.SleepConditionVariableCS_should_return_FALSE_on_untriggered_condvar_n
mov dword [esp], eax
mov esi, dword fs:[0x18]
call fcn.00538680
call fcn.0057d110
mov dword [eax], 0x5f5ef4
mov dword [eax + 4], 0x7ad
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.SleepConditionVariableCS_should_return_ERROR_TIMEOUT_on_untriggered_condvar__not__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [esi + 0x34], 0x5b4
sete al
mov dword [esp], eax
call fcn.00538680
mov eax, dword [0x880360]
test eax, eax
je 0x53e246
mov dword [esp], 0x8802b0
call dword [0x88035c]
sub esp, 4
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0xa
mov dword [esp + 4], 0x8802b0
mov dword [esp], ebx
call dword [0x88036c]
sub esp, 0x10
mov edi, eax
mov dword [esp], 0x8802b0
call dword [0x880354]
sub esp, 4
call fcn.0057d110
mov dword [eax], 0x5f5ef4
mov dword [eax + 4], 0x7b5
xor eax, eax
test edi, edi
sete al
mov dword [esp + 4], str.SleepConditionVariableSRW_should_return_FALSE_on_untriggered_condvar_n
mov dword [esp], eax
call fcn.00538680
call fcn.0057d110
mov dword [eax], 0x5f5ef4
mov dword [eax + 4], 0x7b6
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.SleepConditionVariableSRW_should_return_ERROR_TIMEOUT_on_untriggered_condvar__not__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [esi + 0x34], 0x5b4
sete al
mov dword [esp], eax
call fcn.00538680
mov dword [esp], 0x8802b0
call dword [0x880358]
sub esp, 4
mov dword [esp + 0xc], 1
mov dword [esp + 8], 0xa
mov dword [esp + 4], 0x8802b0
mov dword [esp], ebx
call dword [0x88036c]
sub esp, 0x10
mov edi, eax
mov dword [esp], 0x8802b0
call dword [0x880350]
sub esp, 4
call fcn.0057d110
mov dword [eax], 0x5f5ef4
mov dword [eax + 4], 0x7bc
xor eax, eax
test edi, edi
sete al
mov dword [esp + 4], str.SleepConditionVariableSRW_should_return_FALSE_on_untriggered_condvar_n
mov dword [esp], eax
call fcn.00538680
call fcn.0057d110
mov dword [eax], 0x5f5ef4
mov dword [eax + 4], 0x7bd
mov eax, dword [esi + 0x34]
mov dword [esp + 4], str.SleepConditionVariableSRW_should_return_ERROR_TIMEOUT_on_untriggered_condvar__not__ld_n
mov dword [esp + 8], eax
xor eax, eax
cmp dword [esi + 0x34], 0x5b4
sete al
mov dword [esp], eax
call fcn.00538680
lea edx, [ebp - 0x10]
mov edi, dword [sym.imp.kernel32.dll_CreateThread]
mov dword [0x8802d0], 0
mov dword [esp + 0x14], edx
mov dword [esp + 0xc], ebx
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0x537880
mov dword [esp + 4], 0
mov dword [esp], 0
call edi
lea edx, [ebp - 0x10]
sub esp, 0x18
mov esi, eax
mov dword [esp + 0xc], ebx
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0x53ea00
mov dword [esp + 4], 0
mov dword [esp], 0
call edi
mov ebx, dword [sym.imp.kernel32.dll_Sleep]
mov dword [0x8802d0], 1
sub esp, 0x18
mov edi, eax
lea esi, [esi]
nop
mov dword [esp], 5
call ebx
sub esp, 4
cmp dword [0x8802d0], 8
jbe 0x53e2d0
mov ebx, dword [sym.imp.kernel32.dll_WaitForSingleObject]
mov dword [esp], esi
mov dword [esp + 4], 0x64
call ebx
sub esp, 8
mov dword [esp], edi
mov dword [esp + 4], 0x64
call ebx
sub esp, 8
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov eax, 0x79f
call fcn.00537ed0
mov dword [esp], str.no_condition_variable_support._n
call fcn.00538570
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret