Function at 0x1000fab10
Capabilities:
Resume thread
Suspend thread

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r15
lea rbp, [rsp - 0x60]
sub rsp, 0x160
mov rax, qword [0x10022f440]
xor rax, rsp
mov qword [rbp + 0x50], rax
mov r12, rcx
mov rcx, r8
mov rdi, r8
mov dword [rsp + 0x34], edx
call fcn.1000d7e30
xor r15d, r15d
mov rsi, rax
mov rax, qword [rdi + 0xf48]
mov qword [rsp + 0x38], rax
cmp qword [rdi + 0xf28], r15
je 0x1000fab77
mov ecx, dword [rdi + 0x1088]
test ecx, ecx
jg 0x1000fab77
mov dword [rsp + 0x20], r15d
cmp rax, qword [rsi + 8]
je 0x1000fab7f
mov dword [rsp + 0x20], 1
mov r13d, dword [rdi + 0x1060]
mov ebx, dword [rdi + 0xaec]
mov dword [rsp + 0x30], ebx
call fcn.10006bba0
test eax, eax
je 0x1000fac83
mov ecx, dword [r12 + 0x10]
mov eax, 0x51eb851f
mul ecx
shr edx, 5
imul edx, edx, 0x64
cmp ecx, edx
je 0x1000fac83
mov rax, qword [rdi + 0x70c8]
cmp rax, qword [rdi + 0x70e0]
je 0x1000fabd5
mov qword [rdi + 0x70e0], rax
xor eax, eax
jmp 0x1000fb1c6
lea rcx, [rdi + 0x70f0]
call qword [sym.imp.KERNEL32.dll_QueryDepthSList]
test ax, ax
jne 0x1000fac01
mov eax, dword [rdi + 0xaec]
test eax, eax
je 0x1000fac01
mov rax, qword [rdi + 0x70b0]
test byte [rax + 0x2d8], 4
je 0x1000fac7c
mov rax, qword [rdi + 0x70b0]
test rax, rax
je 0x1000fac7c
cmp rax, qword [rdi + 0x1020]
jne 0x1000fac20
mov eax, dword [rdi + 0xaec]
test eax, eax
jne 0x1000fac7c
mov rax, qword [rdi + 0x70b0]
inc dword [rdi + 0xab8]
xor edx, edx
mov rcx, qword [rax + 0x228]
mov edi, dword [rcx + 0xf0]
lea ecx, [rdx + 0x4a]
mov r8d, edi
call qword [sym.imp.KERNEL32.dll_OpenThread]
mov rbx, rax
test rax, rax
je 0x1000fac7c
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp edi, eax
je 0x1000fac73
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_SuspendThread]
or ecx, 0xffffffff
cmp eax, ecx
je 0x1000fac73
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_ResumeThread]
mov rcx, rbx
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
jmp 0x1000fb1c6
mov qword [rsp + 0x1a8], r14
or r14, 0xffffffffffffffff
test ebx, ebx
jne 0x1000fae10
cmp r13d, dword [rsi + 4]
jne 0x1000fae10
mov rcx, rdi
call fcn.1000d9c90
test eax, eax
jne 0x1000fae10
mov rdx, qword [rdi + 0x1020]
lea rcx, [rsi + 0x18]
call fcn.1000f9010
lea rdx, [0x10002a128]
lea rcx, [rsi + 0x18]
call fcn.1000f9250
test eax, eax
je 0x1000fadff
mov eax, dword [rsi + 0x18]
cmp dword [rsi + 0x1b0], eax
jne 0x1000fadff
mov rax, qword [r12 + 0x18]
movzx ecx, word [rax + 0x88]
xor eax, eax
mov dword [rbp - 0x50], r15d
mov qword [rbp - 0x50], rax
mov eax, dword [rdi + 0xabc]
mov dword [rbp - 0x40], r15d
mov dword [rbp - 0x38], eax
mov rax, qword [rsi + 0x1a8]
mov word [rbp - 0x3c], cx
mov qword [rbp - 0x30], rax
movabs rax, 0x7fffffffffffffff
mov qword [rbp - 0x28], r13
mov qword [rbp - 0x20], rax
cmp qword [rsi + 0xc0], r15
je 0x1000fad53
lea rcx, [rsi + 0x190]
call fcn.1000f26f0
imul rax, rax, 0x64
cqo
idiv qword [rsi + 0xc0]
mov dword [rbp - 0x18], eax
jmp 0x1000fad57
mov dword [rbp - 0x18], r15d
lea rcx, [rsi + 0xa8]
call fcn.1000f27e0
test rax, rax
je 0x1000fad94
lea rcx, [rsi + 0x50]
call fcn.1000f26f0
lea rcx, [rsi + 0xa8]
mov rbx, rax
imul rbx, rbx, 0x64
call fcn.1000f27e0
mov r11, rax
mov rax, rbx
cqo
idiv r11
mov dword [rbp - 0x14], eax
jmp 0x1000fad9b
mov dword [rbp - 0x14], 0x64
lea rcx, [rsi + 0xa8]
call fcn.1000f27f0
lea rcx, [rbp + 0x38]
mov dword [rbp - 0x10], eax
mov rax, qword [rsi + 0x190]
mov qword [rbp - 8], rax
mov rax, qword [rsi + 0x198]
mov qword [rbp], rax
mov eax, dword [rsi + 0x114]
sub eax, dword [rsi + 0xcc]
mov dword [rbp + 8], eax
mov rax, qword [rsi + 0x120]
sub rax, qword [rsi + 0xd8]
mov qword [rbp + 0x10], rax
call fcn.1000c9610
or ecx, 0xffffffff
test eax, eax
cmove ecx, dword [rbp + 0x48]
mov dword [rbp + 0x18], ecx
lea rcx, [rbp - 0x50]
call fcn.1000fcec0
lea rdx, [rsi + 0x18]
mov rcx, rdi
call fcn.1000d9f10
jmp 0x1000faf8e
cmp dword [rsi + 0x1b0], r15d
je 0x1000faf48
mov rax, qword [r12 + 0x18]
movzx ecx, word [rax + 0x88]
xor eax, eax
mov dword [rsp + 0x40], r15d
mov qword [rsp + 0x40], rax
mov eax, dword [rdi + 0xabc]
mov dword [rsp + 0x50], 1
mov dword [rsp + 0x58], eax
mov rax, qword [rsi + 0x1a8]
mov word [rsp + 0x54], cx
mov qword [rsp + 0x60], rax
movabs rax, 0x7fffffffffffffff
mov qword [rsp + 0x68], r13
mov qword [rsp + 0x70], rax
cmp qword [rsi + 0xc0], r15
je 0x1000fae94
lea rcx, [rsi + 0x190]
call fcn.1000f26f0
imul rax, rax, 0x64
cqo
idiv qword [rsi + 0xc0]
mov dword [rsp + 0x78], eax
jmp 0x1000fae99
mov dword [rsp + 0x78], r15d
lea rcx, [rsi + 0xa8]
call fcn.1000f27e0
test rax, rax
je 0x1000faed7
lea rcx, [rsi + 0x50]
call fcn.1000f26f0
lea rcx, [rsi + 0xa8]
mov rbx, rax
imul rbx, rbx, 0x64
call fcn.1000f27e0
mov r11, rax
mov rax, rbx
cqo
idiv r11
mov dword [rsp + 0x7c], eax
jmp 0x1000faedf
mov dword [rsp + 0x7c], 0x64
lea rcx, [rsi + 0xa8]
call fcn.1000f27f0
lea rcx, [rbp + 0x20]
mov dword [rbp - 0x80], eax
mov rax, qword [rsi + 0x190]
mov qword [rbp - 0x78], rax
mov rax, qword [rsi + 0x198]
mov qword [rbp - 0x70], rax
mov eax, dword [rsi + 0x114]
sub eax, dword [rsi + 0xcc]
mov dword [rbp - 0x68], eax
mov rax, qword [rsi + 0x120]
sub rax, qword [rsi + 0xd8]
mov qword [rbp - 0x60], rax
call fcn.1000c9610
or ecx, 0xffffffff
test eax, eax
cmove ecx, dword [rbp + 0x30]
mov dword [rbp - 0x58], ecx
lea rcx, [rsp + 0x40]
call fcn.1000fcec0
or r14, 0xffffffffffffffff
mov rcx, qword [r12 + 8]
lea rbx, [rsi + 0x18]
test rcx, rcx
je 0x1000faf7f
test rbx, rbx
je 0x1000faf6c
mov rax, qword [rbx + 0x190]
test rax, rax
je 0x1000faf7f
cmp rax, rcx
jne 0x1000faf7f
mov rcx, qword [r12]
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov qword [r12], r14
mov qword [r12 + 8], r15
test rbx, rbx
je 0x1000faf8e
mov dword [rbx], r15d
mov dword [rbx + 0x198], r15d
mov r14, qword [rdi + 0x3570]
mov rbx, qword [rdi + 0xab0]
mov edx, 1
mov ecx, r13d
mov rax, r14
sub ecx, dword [rsi + 4]
sub rax, qword [rsi + 0x10]
cmp ecx, edx
cmova edx, ecx
mov ecx, edx
xor edx, edx
imul rax, rax, 0x64
div rcx
cmp rax, 0xa
jbe 0x1000fafe6
movabs rax, 0x2492492492492493
mul rbx
mov rax, rbx
sub rax, rdx
shr rax, 1
add rax, rdx
shr rax, 2
add rbx, rax
jmp 0x1000fb006
movabs rax, 0x642c8590b21642c9
mul rbx
mov rax, rbx
sub rax, rdx
shr rax, 1
add rax, rdx
shr rax, 4
sub rbx, rax
call fcn.10006bef0
cmp rbx, rax
jb 0x1000fb018
call fcn.10006bef0
mov rbx, rax
mov rcx, qword [0x10023cbf0]
cmp rbx, rcx
cmovbe rbx, rcx
call fcn.100068bb0
test byte [rax + 0xc1], 1
je 0x1000fb03d
mov qword [rdi + 0xab0], rbx
jmp 0x1000fb0b1
call fcn.100068bb0
test byte [rax + 0xc1], 2
je 0x1000fb054
mov rax, qword [0x10023cbf0]
jmp 0x1000fb0aa
call fcn.10006af70
mov rbx, rax
cmp qword [rax], 0xffffffffffffffff
jne 0x1000fb068
or rbx, 0xffffffffffffffff
jmp 0x1000fb0a1
call fcn.10011b7d0
test eax, eax
je 0x1000fb08a
call fcn.10011b7f0
xor edx, edx
mov r11, rax
mov rax, qword [rbx]
imul rax, rax, 0x3e8
div r11
jmp 0x1000fb09e
movabs rax, 0x346dc5d63886594b
mul qword [rbx]
mov rax, rdx
shr rax, 0xb
mov rbx, rax
call fcn.10006af30
imul rax, rbx
mov qword [rdi + 0xab0], rax
mov rax, qword [rsp + 0x38]
lea rcx, [rdi + 0xf00]
mov rdx, rdi
mov qword [rsi + 8], rax
mov eax, dword [rsp + 0x30]
mov dword [rsi + 4], r13d
mov dword [rsi], eax
mov qword [rsi + 0x10], r14
call fcn.1000d42e0
mov r14, qword [rsp + 0x1a8]
cmp qword [rdi + 0xf28], r15
je 0x1000fb172
cmp dword [rdi + 0x1018], r15d
jne 0x1000fb0fe
cmp dword [rdi + 0xf50], 1
jne 0x1000fb172
cmp dword [rdi + 0xf10], r15d
jne 0x1000fb172
movsxd rdx, dword [rdi + 0x1088]
movsxd rax, dword [0x10023cc00]
cmp rdx, rax
jge 0x1000fb172
mov rcx, rdi
call fcn.1000d9bc0
test eax, eax
jne 0x1000fb172
lock inc dword [rdi + 0x1088]
mov rcx, qword [rdi + 0x1070]
lea r8d, [rax + 1]
xor r9d, r9d
mov rdx, rdi
call fcn.1000fef70
test eax, eax
je 0x1000fb16b
mov dword [rdi + 0xf50], 1
lock dec dword [rdi + 0x1088]
cmp dword [rdi + 0xabc], 0x100000
jae 0x1000fb172
call fcn.10006b8f0
jmp 0x1000fb172
mov dword [rdi + 0xf50], r15d
cmp dword [rsp + 0x34], 1
jne 0x1000fb191
mov ecx, dword [rdi + 0x107c]
mov eax, dword [r12 + 0x380]
add ecx, eax
mov dword [r12 + 0x380], ecx
call fcn.100068bb0
mov esi, dword [rsp + 0x20]
test byte [rax + 0xbe], 4
je 0x1000fb1bd
test esi, esi
jne 0x1000fb1bf
mov ebx, dword [rdi + 0xabc]
call fcn.10006b720
lea rcx, [0x10002a5d0]
mov edx, ebx
call rax
test esi, esi
sete r15b
mov eax, r15d
mov rcx, qword [rbp + 0x50]
xor rcx, rsp
call fcn.10005f420
add rsp, 0x160
pop r15
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret