Function at 0x14003ee20
Capabilities:
Terminate thread

Disassembly:
jmp 0x14003ee20
push r12
push r13
push r14
push r15
push rbp
sub rsp, 0x1b0
mov r12d, edx
movups xmmword [rsp + 0x90], xmm9
mov r14d, r9d
mov r10, qword [0x14016fb98]
mov r15d, r8d
xor r10, rsp
mov rbp, rcx
mov qword [rsp + 0x1a8], r10
cmp r12d, 0xfffffffd
je 0x14003ee94
cmp r12d, 0xfffffffe
je 0x14003ee94
mov rcx, qword [rbp + 0x30]
add rcx, 0x30
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
test r12d, r12d
jl 0x14003ee94
mov r8, qword [rbp + 0x30]
movsxd r12, r12d
mov r9, qword [r8]
lea r10, [r12 + r12*4]
test byte [r9 + r10*8 + 0x20], 4
je 0x14003ee94
mov r9d, 1
jmp 0x14003ee97
xor r9d, r9d
mov rcx, qword [rbp + 0xc8]
lea rdx, [rsp + 0xa0]
mov r13d, dword [rbp + 0x1d0]
test cl, 3
je 0x14003eec5
mov al, byte [rcx]
inc rcx
test al, al
mov byte [rdx], al
je 0x14003eeca
inc rdx
test cl, 3
jne 0x14003eeb2
call fcn.14000239c
cmp r14d, 0xfffffffe
je 0x14003f4fc
cmp r14d, 0x10c
je 0x14003f4fc
cmp r14d, 0x2f6
je 0x14003f4fc
cmp r14d, 0xffffffff
je 0x14003f064
cmp r14d, 0x18
je 0x14003f064
cmp r14d, 0x1b
je 0x14003f064
cmp r14d, 0x265
je 0x14003f064
cmp r14d, 0x3f
jne 0x14003efc6
test r9d, r9d
jne 0x14003ef35
test byte [rbp + 0x27f], 8
je 0x14003f144
mov r9d, dword [rsp + 0x200]
test r9d, r9d
mov r10d, r9d
cmovne r14d, r10d
cmp qword [rbp + 0x1b8], 0
je 0x14003f112
mov edx, 2
mov r8d, r13d
mov ecx, dword [rsp + 0x200]
lea r9, [rsp + 0xa0]
call fcn.1400011fe
mov r9, rax
mov rdx, r9
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x14003ef9f
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
movsxd r13, eax
mov r8, qword [rbp + 0x1b8]
cmp r13, r8
jb 0x14003f0e2
mov rdx, r9
mov rcx, qword [rbp + 0x110]
call fcn.140003d46
jmp 0x14003f112
and r15d, 9
or r9d, r15d
je 0x14003f144
mov r9d, dword [rsp + 0x200]
test r9d, r9d
mov r10d, r9d
cmovne r14d, r10d
cmp qword [rbp + 0x1b8], 0
je 0x14003f112
mov edx, 2
mov r8d, r13d
mov ecx, dword [rsp + 0x200]
lea r9, [rsp + 0xa0]
call fcn.1400011fe
mov r9, rax
mov rdx, r9
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x14003f03d
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
movsxd r13, eax
mov r8, qword [rbp + 0x1b8]
cmp r13, r8
jb 0x14003f0e2
mov rdx, r9
mov rcx, qword [rbp + 0x110]
call fcn.140003d46
jmp 0x14003f112
and r15d, 0xa
or r9d, r15d
je 0x14003f144
mov r14d, 0xffffffff
cmp qword [rbp + 0x1b8], 0
je 0x14003f112
mov edx, 2
mov r8d, r13d
mov ecx, dword [rsp + 0x200]
lea r9, [rsp + 0xa0]
call fcn.1400011fe
mov r9, rax
mov rdx, r9
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x14003f0cf
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
movsxd r13, eax
mov r8, qword [rbp + 0x1b8]
cmp r13, r8
jae 0x14003efb2
mov rdx, r9
mov r8, r13
mov rcx, qword [rbp + 0x110]
call fcn.140003d46
mov rcx, qword [rbp + 0x110]
mov edx, 0x20
mov r8, qword [rbp + 0x1b8]
add rcx, r13
sub r8, r13
call fcn.140003ad0
cmp r12d, 0xfffffffe
je 0x14003f4ac
cmp r12d, 0xfffffffd
je 0x14003f47b
mov rcx, qword [rbp + 0x30]
add rcx, 0x30
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov ecx, dword [rbp + 0x1d0]
call fcn.1400013bb
jmp 0x14003f47b
pxor xmm9, xmm9
movups xmmword [rsp + 0x60], xmm9
movq qword [rsp + 0x70], xmm9
mov r9, qword [rbp + 0x1b8]
mov r10, qword [rbp + 0x110]
mov rcx, qword [rbp + 0x30]
add rcx, 0x30
mov qword [0x140171c60], r9
mov qword [0x140171c58], r10
or byte [rbp + 0x27d], 0x80
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rdx, rbp
lea rcx, [rsp + 0x60]
call fcn.140001465
lea rcx, [0x140185e68]
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp r13d, 0xfffffff9
lea rbp, [0x140000000]
lea edx, [r13 + 6]
cmovle edx, r13d
and edx, 0x7f
mov rbp, qword [rbp + rdx*8 + 0x191b40]
test rbp, rbp
je 0x14003f4d0
cmp r13d, dword [rbp + 0x40]
je 0x14003f1e1
mov rbp, qword [rbp + 0x38]
test rbp, rbp
je 0x14003f4d0
cmp r13d, dword [rbp + 0x40]
jne 0x14003f1ce
mov rcx, qword [rbp + 0x30]
test rcx, rcx
je 0x14003f4c1
add rcx, 0x30
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
test byte [rbp + 0x279], 0x18
jne 0x14003f297
mov edx, dword [rbp + 0x40]
cmp edx, 0xfffffff9
lea r10, [0x140000000]
lea r9d, [rdx + 6]
cmovle r9d, edx
and r9d, 0x7f
mov r11, qword [r10 + r9*8 + 0x191b40]
cmp edx, dword [r11 + 0x40]
jne 0x14003f25a
cmp edx, 0xfffffff9
lea r10, [0x140000000]
mov r15, r10
lea r9d, [rdx + 6]
cmovg edx, r9d
and edx, 0x7f
mov r11, qword [r10 + rdx*8 + 0x191b40]
mov r12, qword [r11 + 0x38]
mov qword [r15 + rdx*8 + 0x191b40], r12
jmp 0x14003f297
cmp edx, 0xfffffff9
lea r10, [0x140000000]
lea r9d, [rdx + 6]
cmovle r9d, edx
and r9d, 0x7f
mov r10, qword [r10 + r9*8 + 0x191b40]
mov r9, qword [r10 + 0x38]
cmp edx, dword [r9 + 0x40]
je 0x14003f28f
mov r10, r9
mov r9, qword [r9 + 0x38]
cmp edx, dword [r9 + 0x40]
jne 0x14003f282
mov rdx, qword [r9 + 0x38]
mov qword [r10 + 0x38], rdx
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
lea rcx, [0x140185e68]
mov dword [0x140185ea8], eax
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rdx, qword [rbp + 0xd0]
mov qword [rbp + 0xd0], 0
test rdx, rdx
je 0x14003f2cf
mov qword [rdx + 8], 0
mov r9, qword [rbp + 0x30]
movups xmm0, xmmword [r9 + 0x30]
movups xmm1, xmmword [r9 + 0x40]
mov rdx, qword [r9 + 0x50]
mov qword [rsp + 0x50], rdx
mov rdx, qword [r9 + 0x60]
movups xmmword [rsp + 0x30], xmm0
movups xmmword [rsp + 0x40], xmm1
test rdx, rdx
je 0x14003f33e
mov r10, qword [rdx]
mov qword [r9 + 0x60], r10
cmp qword [rdx + 8], 0
je 0x14003f331
movups xmm0, xmmword [rdx + 8]
movups xmmword [rsp + 0x80], xmm0
mov rcx, qword [rsp + 0x80]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_TerminateThread]
mov rcx, qword [rsp + 0x80]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov r9, qword [rbp + 0x30]
mov rdx, qword [r9 + 0x60]
test rdx, rdx
jne 0x14003f2f9
xor r15d, r15d
mov rdx, qword [r9 + 8]
xor r12d, r12d
test rdx, rdx
jle 0x14003f388
mov r10, qword [r9]
test byte [r12 + r10 + 0x20], 4
je 0x14003f37c
mov rdx, qword [r12 + r10 + 8]
mov dword [rdx], 1
mov r9, qword [rbp + 0x30]
mov r10, qword [r9]
mov rcx, qword [r10 + r12]
call qword [sym.imp.KERNEL32.dll_SetEvent]
mov r9, qword [rbp + 0x30]
mov rdx, qword [r9 + 8]
inc r15
add r12, 0x28
cmp r15, rdx
jl 0x14003f34d
cmp dword [r9 + 0x18], 0
je 0x14003f3c6
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov rdx, qword [rbp + 0x30]
cmp eax, dword [rdx + 0x18]
je 0x14003f3c6
cmp qword [rdx + 0x10], 0
je 0x14003f3c6
movups xmm0, xmmword [rdx + 0x10]
movups xmmword [rsp + 0x20], xmm0
mov rcx, qword [rsp + 0x20]
xor edx, edx
call qword [sym.imp.KERNEL32.dll_TerminateThread]
mov rcx, qword [rsp + 0x20]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rdx, qword [rbp + 0x30]
mov rcx, qword [rdx]
call fcn.14000231f
mov rcx, qword [rbp + 0x30]
call fcn.14000231f
test byte [rbp + 0x279], 0x18
je 0x14003f445
mov r9d, dword [rbp + 0x1d0]
mov edx, 0x280
movups xmmword [rbp + 0x280], xmm9
movq qword [rbp + 0x290], xmm9
movups xmmword [rbp + rdx - 0x10], xmm9
movups xmmword [rbp + rdx - 0x20], xmm9
movups xmmword [rbp + rdx - 0x30], xmm9
movups xmmword [rbp + rdx - 0x40], xmm9
sub rdx, 0x40
jne 0x14003f401
mov dl, byte [rbp + 0x279]
and dl, 0xe7
add dl, 8
or byte [rbp + 0x282], 4
mov byte [rbp + 0x279], dl
mov dword [rbp + 0x1d0], r9d
mov dword [rbp + 0x40], r9d
jmp 0x14003f44d
mov rcx, rbp
call fcn.14000231f
lea rcx, [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
lea rcx, [rsp + 0x30]
call qword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
mov ecx, r14d
mov edx, 2
mov r8d, r13d
lea r9, [rsp + 0xa0]
call fcn.1400035df
mov rcx, qword [rsp + 0x1a8]
xor rcx, rsp
cmp rcx, qword [0x14016fb98]
jne 0x14003f4bc
movups xmm9, xmmword [rsp + 0x90]
mov eax, r14d
add rsp, 0x1b0
pop rbp
pop r15
pop r14
pop r13
pop r12
ret
mov rcx, qword [rbp + 0x30]
add rcx, 0x30
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x14003f47b
call fcn.140003bcf
lea rcx, [0x140185e68]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x14003f463
cmp dword [0x140185ea8], 0
je 0x14003f4c1
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp eax, dword [0x140185ea8]
je 0x14003f4c1
lea rcx, [0x140185e68]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_ExitThread]
and r15d, 0xc
or r9d, r15d
je 0x14003f144
mov r14d, 0xfffffffe
cmp qword [rbp + 0x1b8], 0
je 0x14003f112
mov edx, 2
mov r8d, r13d
mov ecx, dword [rsp + 0x200]
lea r9, [rsp + 0xa0]
call fcn.1400011fe
mov r9, rax
mov rdx, r9
mov rcx, rdx
and rdx, 0xfffffffffffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [rdx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x14003f567
mov rax, rdx
add rdx, rcx
call fcn.1400023c9
movsxd r13, eax
mov r8, qword [rbp + 0x1b8]
cmp r13, r8
jb 0x14003f0e2
mov rdx, r9
mov rcx, qword [rbp + 0x110]
call fcn.140003d46
jmp 0x14003f112