Function at 0x14012c650
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x98
mov r14, r8
mov r15, rdx
mov r13, rcx
mov eax, dword [0x140601e88]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
mov ecx, dword [rax + 8]
lea edx, [rcx + 1]
mov dword [rax + 8], edx
test ecx, ecx
je 0x14012c69e
test byte [r13 + 0x59], 8
jne 0x14012c6be
jmp 0x14012cc66
lea rcx, [0x140569688]
call fcn.1400f4fe0
mov rcx, rax
call qword [sym.imp.KERNEL32.DLL_EnterCriticalSection]
test byte [r13 + 0x59], 8
je 0x14012cc66
movsx ecx, word [r13 + 0x28]
movsx eax, word [r13 + 0x2c]
sub eax, ecx
movzx r8d, byte [r13 + 0x58]
mov ebx, r8d
neg ebx
lea r10d, [rax + r8]
cmp r10d, ebx
jle 0x14012cc66
movsx edx, word [r13 + 0x2a]
movsx ecx, word [r13 + 0x2e]
sub ecx, edx
add r8d, ecx
cmp r8d, ebx
jle 0x14012cc66
mov edx, dword [r14 + 8]
mov esi, dword [r14]
cmp edx, esi
jle 0x14012cc66
mov edi, dword [r14 + 4]
mov ebp, dword [r14 + 0xc]
cmp ebp, edi
jle 0x14012cc66
cmp r10d, esi
jle 0x14012cc66
cmp r8d, edi
jle 0x14012cc66
cmp edx, ebx
jle 0x14012cc66
cmp ebp, ebx
jle 0x14012cc66
mov qword [rsp + 0x20], 0
mov dword [rsp + 0x28], eax
mov dword [rsp + 0x2c], ecx
mov cl, byte [r13 + 0x5b]
mov rsi, qword [r13 + 0x10]
xor r9d, r9d
test rsi, rsi
setne al
test cl, 0x20
je 0x14012c767
mov r9d, dword [r13 + 0x1c]
jmp 0x14012c76a
mov r9b, al
mov eax, r8d
mov edx, ebx
mov ebp, r10d
mov edi, ebx
test r9d, r9d
mov qword [rsp + 0x68], r13
mov dword [rsp + 0x74], ebx
mov qword [rsp + 0x90], r8
mov dword [rsp + 0x70], r10d
jle 0x14012c82b
mov qword [rsp + 0x48], r14
mov r14, r15
add r13, 0x10
mov r15d, r9d
shl r15, 4
add r15, 0xfffffffffffffff0
xor ebx, ebx
lea r12, [rsp + 0x20]
nop word cs:[rax + rax]
nop dword [rax + rax]
add rsi, rbx
test cl, 0x20
cmove rsi, r13
mov rcx, qword [rsi]
mov rax, qword [rcx]
mov rdx, r14
mov r8, r12
call qword [rax + 0x10]
movsx edi, word [rsi + 8]
movsx edx, word [rsi + 0xa]
movsx ebp, word [rsi + 0xc]
movsx eax, word [rsi + 0xe]
mov dword [rsp + 0x20], edi
mov dword [rsp + 0x24], edx
mov dword [rsp + 0x28], ebp
mov dword [rsp + 0x2c], eax
cmp r15, rbx
je 0x14012c811
mov rax, qword [rsp + 0x68]
movzx ecx, byte [rax + 0x5b]
mov rsi, qword [rax + 0x10]
add rbx, 0x10
jmp 0x14012c7c0
mov r13, qword [rsp + 0x68]
movzx ecx, byte [r13 + 0x58]
sub edi, ecx
add ebp, ecx
sub edx, ecx
add eax, ecx
mov r15, r14
mov r14, qword [rsp + 0x48]
mov dword [rsp + 0x58], edi
mov dword [rsp + 0x60], ebp
mov dword [rsp + 0x5c], edx
mov dword [rsp + 0x64], eax
mov rbx, qword [r13 + 0x48]
test rbx, rbx
je 0x14012c9fb
xor r12d, r12d
mov dword [rsp + 0x48], 0
mov dword [rsp + 0x54], 0
nop dword [rax + rax]
movzx eax, byte [rbx + 0x59]
test al, 8
je 0x14012c927
movsx edi, word [rbx + 0x28]
movsx esi, word [rbx + 0x2a]
test al, 4
movzx edx, r12b
mov r12d, edx
mov eax, 1
cmove r12d, eax
movsx eax, word [rbx + 0x2e]
cmp dword [rsp + 0x90], eax
cmovg r12d, edx
movsx ecx, word [rbx + 0x2c]
cmp dword [rsp + 0x70], ecx
cmovg r12d, edx
mov ebp, dword [rsp + 0x74]
cmp ebp, esi
cmovl r12d, edx
cmp ebp, edi
cmovl r12d, edx
test byte [rbx + 0x5a], 8
jne 0x14012c8bf
mov al, 1
mov dword [rsp + 0x54], eax
jmp 0x14012c927
test byte [rsp + 0x48], 1
jne 0x14012c8d1
test byte [r13 + 0x59], 4
jne 0x14012c95a
mov dword [rsp + 0x30], edi
mov dword [rsp + 0x34], esi
mov rax, qword [r15]
mov rcx, r15
lea rdx, [rsp + 0x30]
call qword [rax + 0x30]
mov eax, dword [r14]
mov ecx, dword [r14 + 4]
mov edx, dword [r14 + 8]
mov ebp, dword [r14 + 0xc]
sub eax, edi
sub edx, edi
sub ecx, esi
sub ebp, esi
mov dword [rsp + 0x30], eax
mov dword [rsp + 0x34], ecx
mov dword [rsp + 0x38], edx
mov dword [rsp + 0x3c], ebp
mov rcx, rbx
mov rdx, r15
lea r8, [rsp + 0x30]
call fcn.14012c650
mov rax, qword [r15]
mov rcx, r15
call qword [rax + 0x28]
test byte [rbx + 0x5b], 0x40
jne 0x14012c9dc
mov rax, qword [rbx + 0x30]
test rax, rax
je 0x14012c9dc
mov rbx, qword [rbx + 0x40]
cmp rbx, qword [rax + 0x48]
je 0x14012c9dc
test rbx, rbx
jne 0x14012c860
jmp 0x14012c9dc
cmp cx, di
jle 0x14012c8d1
cmp ax, si
jle 0x14012c8d1
mov ebp, dword [rsp + 0x28]
mov r9d, dword [rsp + 0x20]
cmp ebp, r9d
jle 0x14012c8d1
mov r8d, dword [rsp + 0x24]
mov edx, dword [rsp + 0x2c]
cmp edx, r8d
jle 0x14012c8d1
cmp ebp, edi
jle 0x14012c8d1
cmp edx, esi
jle 0x14012c8d1
cmp r9d, ecx
jge 0x14012c8d1
cmp r8d, eax
jge 0x14012c8d1
mov rax, qword [r15]
mov rcx, r15
call qword [rax + 0x20]
mov rax, qword [r15]
mov rcx, r15
lea rdx, [rsp + 0x20]
call qword [rax + 0x48]
movsx edi, word [rbx + 0x28]
movsx esi, word [rbx + 0x2a]
mov al, 1
mov dword [rsp + 0x48], eax
jmp 0x14012c8d1
test byte [rsp + 0x48], 1
mov esi, dword [rsp + 0x54]
je 0x14012c9f0
mov rax, qword [r15]
mov rcx, r15
call qword [rax + 0x28]
test r12b, 1
je 0x14012c9fd
jmp 0x14012cabe
xor esi, esi
mov eax, dword [rsp + 0x60]
cmp eax, dword [rsp + 0x58]
jle 0x14012cabe
mov eax, dword [rsp + 0x5c]
cmp dword [rsp + 0x64], eax
jle 0x14012cabe
lea rcx, [rsp + 0x58]
mov rdx, r14
call fcn.14016bde0
test al, al
je 0x14012cabe
mov rax, qword [r15]
lea rdx, [rsp + 0x58]
mov rcx, r15
call qword [rax + 0x58]
test al, al
je 0x14012cabe
cmp byte [r13 + 0x58], 0
mov rax, qword [r15]
je 0x14012ca92
lea rdx, [rsp + 0x58]
mov rcx, r15
call qword [rax + 0x38]
mov edx, dword [rsp + 0x20]
mov r8d, dword [rsp + 0x24]
mov rcx, r15
call fcn.14017d830
mov rax, qword [r13]
mov rcx, r13
mov rdx, r15
call qword [rax + pe_nt_image_headers64]
mov rcx, r13
mov rdx, r15
call fcn.14012cce0
mov rax, qword [r15]
mov rcx, r15
call qword [rax + 0x28]
mov rax, qword [r15]
mov rcx, r15
call qword [rax + 0x28]
jmp 0x14012cabe
lea rdx, [rsp + 0x20]
mov rcx, r15
call qword [rax + 0x40]
mov rax, qword [r13]
mov rcx, r13
mov rdx, r15
call qword [rax + pe_nt_image_headers64]
mov rcx, r13
mov rdx, r15
call fcn.14012cce0
mov rax, qword [r15]
mov rcx, r15
call qword [rax + 0x28]
test sil, 1
je 0x14012cc66
mov r8d, dword [rsp + 0x28]
mov ecx, dword [rsp + 0x20]
cmp r8d, ecx
jle 0x14012cc66
mov ebp, dword [rsp + 0x24]
mov edx, dword [rsp + 0x2c]
cmp edx, ebp
jle 0x14012cc66
mov ebx, dword [r14 + 4]
mov eax, dword [r14 + 0xc]
cmp ebp, ebx
cmovg ebx, ebp
cmp edx, eax
mov edi, eax
cmovl edi, edx
cmp edi, ebx
cmovl edi, ebx
mov esi, eax
cmovl esi, edi
cmp edx, eax
cmovl esi, edi
mov eax, dword [r14]
cmp ecx, eax
cmovg eax, ecx
mov ecx, dword [r14 + 8]
cmp ecx, eax
cmovl ecx, eax
cmp r8d, ecx
cmovl ecx, r8d
mov dword [rsp + 0x30], eax
mov dword [rsp + 0x34], ebx
mov dword [rsp + 0x38], ecx
mov dword [rsp + 0x3c], esi
mov rax, qword [r15]
lea rdx, [rsp + 0x30]
mov r12, r15
mov rcx, r15
call qword [rax + 0x38]
mov rbx, qword [r13 + 0x48]
test rbx, rbx
je 0x14012cc5c
lea r14, [rsp + 0x78]
lea r15, [rsp + 0x80]
test byte [rbx + 0x59], 8
je 0x14012cc3a
test byte [rbx + 0x5a], 8
jne 0x14012cc3a
movsx r11d, word [rbx + 0x28]
movsx r9d, word [rbx + 0x2a]
movsx r10d, word [rbx + 0x2c]
movsx r8d, word [rbx + 0x2e]
mov r13d, dword [rsp + 0x20]
add r13d, r11d
mov ecx, dword [rsp + 0x24]
add ecx, r9d
mov edi, dword [rsp + 0x30]
mov edx, dword [rsp + 0x34]
mov esi, dword [rsp + 0x38]
mov ebp, dword [rsp + 0x3c]
sub edi, r13d
sub esi, r13d
sub edx, ecx
sub ebp, ecx
mov dword [rsp + 0x80], edi
mov dword [rsp + 0x84], edx
mov dword [rsp + 0x88], esi
mov dword [rsp + 0x8c], ebp
cmp esi, edi
jle 0x14012cc3a
cmp ebp, edx
jle 0x14012cc3a
sub r10d, r11d
mov rax, qword [rsp + 0x68]
movzx r11d, byte [rax + 0x58]
mov eax, r11d
neg eax
add r10d, r11d
cmp r10d, eax
jle 0x14012cc3a
sub r8d, r9d
add r8d, r11d
cmp r8d, eax
jle 0x14012cc3a
cmp r10d, edi
jle 0x14012cc3a
cmp r8d, edx
jle 0x14012cc3a
cmp esi, eax
jle 0x14012cc3a
cmp ebp, eax
jle 0x14012cc3a
mov dword [rsp + 0x78], r13d
mov dword [rsp + 0x7c], ecx
mov rcx, r12
mov rax, qword [r12]
mov rdx, r14
call qword [rax + 0x30]
mov rcx, rbx
mov rdx, r12
mov r8, r15
call fcn.14012c650
mov rcx, r12
mov rax, qword [r12]
call qword [rax + 0x28]
test byte [rbx + 0x5b], 0x40
jne 0x14012cc5c
mov rax, qword [rbx + 0x30]
test rax, rax
je 0x14012cc5c
mov rbx, qword [rbx + 0x40]
cmp rbx, qword [rax + 0x48]
je 0x14012cc5c
test rbx, rbx
jne 0x14012cb60
mov rax, qword [r12]
mov rcx, r12
call qword [rax + 0x28]
mov eax, dword [0x140601e88]
mov rcx, qword gs:[0x58]
mov rax, qword [rcx + rax*8]
add dword [rax + 8], 0xffffffff
jne 0x14012cc97
lea rcx, [0x140569688]
call fcn.1400f4fe0
mov rcx, rax
call qword [sym.imp.KERNEL32.DLL_LeaveCriticalSection]
nop
add rsp, 0x98
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret