Function at 0x14029c8a0
Capabilities:
Print debug messages
Terminate process
Write file on windows

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push r12
push r14
push r15
mov eax, 0x13e0
call fcn.14031e1c0
sub rsp, rax
mov r12, r9
mov edi, r8d
mov rbx, rdx
mov r14d, ecx
mov r10d, dword [0x140756750]
mov rax, qword gs:[0x58]
mov ecx, 0x480
mov r11, qword [rax + r10*8]
xor ebp, ebp
mov eax, dword [rcx + r11]
cmp dword [0x14070eed8], eax
jg 0x14029cb35
lea rsi, [0x14070eea8]
mov qword [rsp + 0x30], rsi
call sub.KERNEL32.dll_GetCurrentThreadId
mov r8d, eax
mov edx, dword [0x14070eea8]
cmp eax, edx
je 0x14029c938
xor eax, eax
lock cmpxchg dword [0x14070eea8], r8d
je 0x14029c938
pause
mov edx, r8d
mov rcx, rsi
call fcn.1402931a0
jmp 0x14029c93f
lock inc dword [0x14070eeac]
mov esi, ebp
mov r15d, 0x139b
cmp r14d, 2
jne 0x14029c9c5
test rbx, rbx
je 0x14029c9c5
mov rax, rbx
movzx ecx, byte [rbx]
test cl, cl
je 0x14029c992
cmp cl, 0x2f
je 0x14029c966
cmp cl, 0x5c
jne 0x14029c986
cmp byte [rax + 1], 0x73
jne 0x14029c986
cmp byte [rax + 2], 0x72
jne 0x14029c986
cmp byte [rax + 3], 0x63
jne 0x14029c986
movzx ecx, byte [rax + 4]
cmp cl, 0x2f
je 0x14029c98e
cmp cl, 0x5c
je 0x14029c98e
inc rax
movzx ecx, byte [rax]
jmp 0x14029c958
lea rbx, [rax + 1]
mov dword [rsp + 0x20], edi
mov r9, rbx
lea r8, str._s___d__:
mov rdx, r15
lea rcx, [rsp + 0x40]
call fcn.14029cb90
movsxd rsi, eax
cmp rsi, 0x139a
jbe 0x14029c9c0
mov esi, 0x139a
jmp 0x14029c9c5
cmp esi, 0xffffffff
je 0x14029ca1a
sub r15d, esi
movsxd rdi, r15d
movsxd rax, esi
lea rbx, [rsp + 0x40]
add rbx, rax
call fcn.1400f6f20
mov rcx, qword [rax]
or rcx, 2
mov rax, qword [rsp + 0x1420]
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rbp
mov r9, r12
mov r8, rdi
mov rdx, rbx
call fcn.1403305e8
mov ecx, 0xffffffff
test eax, eax
cmovs eax, ecx
lea ecx, [r15 - 1]
cmp eax, ecx
cmovle ecx, eax
cmp ecx, 0xffffffff
jne 0x14029ca24
mov ebx, 2
jmp 0x14029cafc
add esi, ecx
lea eax, [r14 - 2]
cmp eax, 1
ja 0x14029caa8
mov ecx, 1
call fcn.14032c6f0
mov rcx, rax
call fcn.1403384d8
mov ebx, 2
mov ecx, ebx
call fcn.14032c6f0
mov r9, rax
movsxd r8, esi
lea edx, [rbx - 1]
lea rcx, [rsp + 0x40]
call fcn.1403355c4
mov ecx, ebx
call fcn.14032c6f0
mov rdx, rax
lea ecx, [rbx + 8]
call fcn.14033ccfc
mov ecx, ebx
call fcn.14032c6f0
mov rcx, rax
call fcn.1403384d8
cmp r14d, ebx
jne 0x14029caa8
movsxd rax, esi
lea rcx, [rsp + 0x40]
add rcx, rax
lea rdx, [0x14049e2d4]
call fcn.1402391b0
lea rcx, [rsp + 0x40]
call qword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea rdx, [rsp + 0x40]
mov ecx, r14d
call qword [0x1405bd6d0]
mov ebx, eax
test eax, eax
je 0x14029caeb
cmp eax, 2
jne 0x14029cafc
lea r8, str.Exiting_on_SPEW_ABORT_n
lea edx, [rax - 1]
lea rcx, str.console
call fcn.14029c820
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov rcx, rax
lea edx, [rbx - 1]
call qword [sym.imp.KERNEL32.dll_TerminateProcess]
jmp 0x14029cafc
cmp r14d, 2
je 0x14029cafc
call qword [sym.imp.KERNEL32.dll_IsDebuggerPresent]
test eax, eax
je 0x14029cafc
int3
mov rcx, qword [rsp + 0x30]
lock dec dword [rcx + 4]
mov ecx, dword [rcx + 4]
mov eax, ebx
jne 0x14029cb13
mov rcx, qword [rsp + 0x30]
xchg dword [rcx], ebp
lea r11, [rsp + 0x13e0]
mov rbx, qword [r11 + 0x20]
mov rbp, qword [r11 + 0x28]
mov rsi, qword [r11 + 0x30]
mov rdi, qword [r11 + 0x38]
mov rsp, r11
pop r15
pop r14
pop r12
ret
lea rcx, [0x14070eed8]
call fcn.14031e094
cmp dword [0x14070eed8], 0xffffffff
jne 0x14029c8fe
mov dword [0x14070eea8], ebp
mov dword [0x14070eeac], ebp
lea rcx, [0x14070eeb0]
call fcn.140292ce0
nop
lea rcx, [0x140480920]
call fcn.14031def4
nop
lea rcx, [0x14070eed8]
call fcn.14031e034
jmp 0x14029c8fe