Function at 0x419a90
Capabilities:
Terminate thread

Disassembly:
push ebx
push esi
push edi
mov esi, ecx
call dword [sym.imp.KERNEL30.dll_GetCurrentThreadId]
push eax
push str.CloseWorkThreads__x__n
call fcn.0045f780
add esp, 8
mov edi, dword [sym.imp.KERNEL30.dll_CloseHandle]
mov ebx, dword [sym.imp.KERNEL30.dll_TerminateThread]
mov edx, dword [sym.imp.KERNEL30.dll_EnterCriticalSection]
mov ecx, dword [sym.imp.KERNEL30.dll_WaitForSingleObject]
mov eax, dword [esi + 0xe88]
test eax, eax
jne 0x419d63
mov eax, dword [esi + 0xe8c]
test eax, eax
jne 0x419af9
cmp dword [esi + 0xe90], eax
jne 0x419af5
cmp dword [esi + 0xf10], eax
jne 0x419af5
cmp dword [esi + 0xf14], eax
je 0x419da7
test eax, eax
je 0x419b39
push 0x3e8
push eax
call ecx
mov ecx, dword [sym.imp.KERNEL30.dll_WaitForSingleObject]
mov edx, dword [sym.imp.KERNEL30.dll_EnterCriticalSection]
cmp eax, 0x102
je 0x419ac1
test eax, eax
je 0x419b22
push 0
push dword [esi + 0xe8c]
call ebx
push dword [esi + 0xe8c]
call edi
mov dword [esi + 0xe8c], 0
jmp 0x419ab5
mov eax, dword [esi + 0xe90]
test eax, eax
je 0x419b87
push 0x3e8
push eax
call ecx
mov ecx, dword [sym.imp.KERNEL30.dll_WaitForSingleObject]
mov edx, dword [sym.imp.KERNEL30.dll_EnterCriticalSection]
cmp eax, 0x102
je 0x419ac1
test eax, eax
je 0x419b70
push 0
push dword [esi + 0xe90]
call ebx
push dword [esi + 0xe90]
call edi
mov dword [esi + 0xe90], 0
jmp 0x419ab5
cmp dword [esi + 0xf10], 0
jle 0x419c73
lea eax, [esi + 0xf68]
push eax
call edx
lea ebx, [esi + 0xe18]
mov eax, dword [ebx + 4]
xor ecx, ecx
cmp eax, ebx
cmove eax, ecx
test eax, eax
je 0x419bc8
cmp dword [esi + 0x100c], ecx
jne 0x419bc8
push 0x64
lea ecx, [esi + 0xf64]
call fcn.0045ea50
jmp 0x419ba3
mov dword [esi + 0xe4c], ecx
push ecx
lea ecx, [esi + 0xf64]
call fcn.0045eba0
lea eax, [esi + 0xf68]
push eax
call dword [sym.imp.KERNEL30.dll_LeaveCriticalSection]
mov eax, dword [esi + 0xf10]
mov ebx, dword [sym.imp.KERNEL30.dll_TerminateThread]
mov edi, dword [sym.imp.KERNEL30.dll_CloseHandle]
mov ecx, dword [sym.imp.KERNEL30.dll_WaitForSingleObject]
mov edx, dword [sym.imp.KERNEL30.dll_EnterCriticalSection]
test eax, eax
jle 0x419ac1
nop dword [eax]
mov ecx, dword [esi + eax*4 + 0xe90]
lea edi, [esi + eax*4]
test ecx, ecx
je 0x419c5b
push 0x3e8
push ecx
call dword [sym.imp.KERNEL30.dll_WaitForSingleObject]
cmp eax, 0x102
je 0x419c6b
test eax, eax
je 0x419c3f
push 0
push dword [edi + 0xe90]
call ebx
push dword [edi + 0xe90]
call dword [sym.imp.KERNEL30.dll_CloseHandle]
mov dword [edi + 0xe90], 0
mov eax, dword [esi + 0xf10]
dec eax
mov dword [esi + 0xf10], eax
test eax, eax
jg 0x419c10
jmp 0x419aa9
mov eax, dword [esi + 0xf10]
jmp 0x419c62
cmp dword [esi + 0xf14], 0
jle 0x419ac1
lea eax, [esi + 0xf8c]
push eax
call edx
lea ebx, [esi + 0xe60]
nop
mov eax, dword [ebx + 4]
xor ecx, ecx
cmp eax, ebx
cmove eax, ecx
test eax, eax
je 0x419cb5
cmp dword [esi + 0x100c], ecx
jne 0x419cb5
push 0x64
lea ecx, [esi + 0xf88]
call fcn.0045ea50
jmp 0x419c90
mov dword [esi + 0xe80], ecx
push ecx
lea ecx, [esi + 0xf88]
call fcn.0045eba0
lea eax, [esi + 0xf8c]
push eax
call dword [sym.imp.KERNEL30.dll_LeaveCriticalSection]
mov eax, dword [esi + 0xf14]
mov ebx, dword [sym.imp.KERNEL30.dll_TerminateThread]
mov edi, dword [sym.imp.KERNEL30.dll_CloseHandle]
mov ecx, dword [sym.imp.KERNEL30.dll_WaitForSingleObject]
mov edx, dword [sym.imp.KERNEL30.dll_EnterCriticalSection]
test eax, eax
jle 0x419ac1
nop word [eax + eax]
mov ecx, dword [esi + eax*4 + 0xee0]
lea edi, [esi + eax*4]
test ecx, ecx
je 0x419d4b
push 0x3e8
push ecx
call dword [sym.imp.KERNEL30.dll_WaitForSingleObject]
cmp eax, 0x102
je 0x419d5b
test eax, eax
je 0x419d2f
push 0
push dword [edi + 0xee0]
call ebx
push dword [edi + 0xee0]
call dword [sym.imp.KERNEL30.dll_CloseHandle]
mov dword [edi + 0xee0], 0
mov eax, dword [esi + 0xf14]
dec eax
mov dword [esi + 0xf14], eax
test eax, eax
jg 0x419d00
jmp 0x419aa9
mov eax, dword [esi + 0xf14]
jmp 0x419d52
push 0x3e8
push eax
call ecx
mov ecx, dword [sym.imp.KERNEL30.dll_WaitForSingleObject]
mov edx, dword [sym.imp.KERNEL30.dll_EnterCriticalSection]
cmp eax, 0x102
je 0x419ac1
test eax, eax
je 0x419d90
push 0
push dword [esi + 0xe88]
call ebx
push dword [esi + 0xe88]
call edi
mov dword [esi + 0xe88], 0
jmp 0x419ab5
pop edi
pop esi
pop ebx
ret