Function at 0x14014efd0
Capabilities:
Check for software breakpoints

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
mov qword [rsp + 0x10], rdx
mov qword [rsp + 8], rcx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x498]
sub rsp, 0x5c8
mov r12, r9
mov r13, rcx
test rcx, rcx
jne 0x14014f01b
lea rcx, str.Aborting_HookFunc_because_pRealFunctionAddr_is_null_n
call fcn.14029c740
jmp 0x14014fa88
test rdx, rdx
jne 0x14014f031
lea rcx, str.Aborting_HookFunc_because_pHookFunctionAddr_is_null_n
call fcn.14029c740
jmp 0x14014fa88
xor edx, edx
call fcn.14014fb60
call qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
mov qword [rbp - 0x10], rax
mov qword [rbp - 0x48], r13
mov edx, dword [rbp + 0x500]
test edx, edx
jle 0x14014f099
movzx ecx, byte [r13]
cmp cl, 0xeb
jne 0x14014f068
movsx rcx, byte [r13 + 1]
add r13, 2
add r13, rcx
jmp 0x14014f08f
cmp cl, 0xe9
jne 0x14014f07a
movsxd rax, dword [r13 + 1]
add r13, 5
add r13, rax
jmp 0x14014f08f
cmp cl, 0xff
jne 0x14014f095
cmp byte [r13 + 1], 0x25
jne 0x14014f095
movsxd rcx, dword [r13 + 2]
mov r13, qword [rcx + r13 + 6]
dec edx
test edx, edx
jg 0x14014f050
mov qword [rbp - 0x48], r13
mov edx, 5
mov rcx, r13
call fcn.14014ee30
test al, al
jne 0x14014f0b9
mov rdx, r13
lea rcx, str.Warning:_hook_target_starting_at__p_covers_a_non_executable_page_n
call fcn.14029c740
cmp byte [r13], 0xeb
jne 0x14014f0d4
mov rdx, r13
lea rcx, str.Warning:_hook_target_starting_at__p_begins_with_uncoditional_2_byte_jump__skipping_n
call fcn.14029c740
jmp 0x14014fa88
mov byte [rbp - 0x80], 0xe9
mov word [rbp - 0x70], 0x25ff
mov dword [rbp - 0x6e], 0
xor r15d, r15d
mov dword [rbp - 0x5c], r15d
mov rsi, r13
xor r14b, r14b
lea ebx, [r15 + 1]
nop word [rax + rax]
lea r8, [rbp - 0x60]
lea rdx, [rbp - 0x54]
mov rcx, rsi
call fcn.14014ff10
movzx ecx, al
test al, al
je 0x14014f7e8
test r14b, r14b
je 0x14014f13c
movzx eax, byte [rsi]
cmp al, 0xcc
je 0x14014f13c
cmp al, 0x90
je 0x14014f13c
mov rdx, r13
lea rcx, str.Warning:_hook_target_starting_at__p_contains_early_RET_n
call fcn.14029c740
xor cl, cl
movzx eax, byte [rsi]
add al, 0x3e
movzx r14d, r14b
cmp al, 1
cmovbe r14d, ebx
test cl, cl
je 0x14014f7e8
cmp dword [rbp - 0x60], 4
ja 0x14014f7e8
movsxd rdi, dword [rbp - 0x54]
movsxd rax, r15d
lea rcx, [rbp - 0x40]
add rcx, rax
mov r8, rdi
mov rdx, rsi
call fcn.140320ff0
add rsi, rdi
add r15d, edi
mov dword [rbp - 0x5c], r15d
cmp r15d, 5
mov ebx, 1
jb 0x14014f100
cmp r15d, 0x30
jle 0x14014f1a6
lea rcx, str.Copied_more_than_MAX_HOOKED_FUNCTION_PREAMBLE_LENGTH_bytes_to_make_room_for_E9_jmp_of_5_bytes___Bad_opcode_parsing__n
call fcn.14029c740
jmp 0x14014fa88
mov rcx, r13
call fcn.14014ef10
mov rdi, rax
test rax, rax
jne 0x14014f1df
mov rcx, r13
call fcn.14014eab0
mov rcx, r13
call fcn.14014ef10
mov rdi, rax
test rax, rax
jne 0x14014f1df
lea rcx, str.Error_allocating_trampoline_memory__no_memory_within___2gb__prior_failures___n
call fcn.14029c740
jmp 0x14014fa88
mov qword [r12], rdi
movups xmm0, xmmword [rbp - 0x40]
movups xmmword [rbp + 0x3c], xmm0
movups xmm1, xmmword [rbp - 0x30]
movups xmmword [rbp + 0x4c], xmm1
movups xmm0, xmmword [rbp - 0x20]
movups xmmword [rbp + 0x5c], xmm0
mov dword [rbp + 0x38], r15d
mov qword [rbp + 0x20], r13
mov qword [rbp + 0x28], 0
mov qword [rbp + 0x30], 0
xor ebx, ebx
mov dword [rbp - 0x5c], ebx
test r15d, r15d
jle 0x14014f319
movsxd r14, ebx
lea rsi, [rbp - 0x40]
add rsi, r14
lea r8, [rbp - 0x54]
lea rdx, [rbp - 0x60]
mov rcx, rsi
call fcn.14014ff10
test al, al
je 0x14014f3d3
mov edx, dword [rbp - 0x54]
cmp edx, 4
ja 0x14014f3d3
mov ecx, edx
test edx, edx
je 0x14014f30a
sub ecx, 1
je 0x14014f2e2
sub ecx, 1
je 0x14014f383
sub ecx, 1
je 0x14014f379
cmp ecx, 1
jne 0x14014f3b1
movzx eax, byte [rsi]
cmp al, 0xeb
jne 0x14014f39e
cmp dword [rbp - 0x60], 2
jne 0x14014f39e
cmp r15d, 0x2d
jg 0x14014f38d
mov byte [rsi], 0xe9
mov eax, r15d
sub eax, ebx
sub eax, 2
movsxd r8, eax
lea eax, [rbx + 2]
movsxd rcx, eax
lea rdx, [rbp - 0x40]
add rdx, rcx
lea eax, [rbx + 5]
movsxd rcx, eax
lea rax, [rbp - 0x40]
add rcx, rax
call fcn.140320ff0
movsx eax, byte [rbp + r14 - 0x3f]
sub eax, 3
mov dword [rbp + r14 - 0x3f], eax
mov dword [rbp - 0x60], 5
add r15d, 3
mov eax, 1
add eax, ebx
movsxd rcx, eax
lea rdx, [rbp - 0x40]
add rdx, rcx
movsxd rcx, dword [rdx]
sub rcx, rdi
add rcx, r13
movsxd rax, ecx
cmp rax, rcx
jne 0x14014f3c2
mov dword [rdx], ecx
add ebx, dword [rbp - 0x60]
mov dword [rbp - 0x5c], ebx
cmp ebx, r15d
jl 0x14014f221
mov r12, rdi
mov qword [rbp + 0x28], rdi
movsxd rbx, r15d
mov r8, rbx
lea rdx, [rbp - 0x40]
mov rcx, rdi
call fcn.140320ff0
add rdi, rbx
lea r8, [rbx + r13]
mov rcx, r8
sub rcx, rdi
sub rcx, 5
mov dword [rbp - 0x7f], ecx
movsxd rax, ecx
mov edx, recv
cmp rax, rcx
je 0x14014f49f
mov qword [rbp - 0x6a], r8
movsd xmm0, qword [rbp - 0x70]
movsd qword [rdi], xmm0
mov eax, dword [rbp - 0x68]
mov dword [rdi + 8], eax
movzx eax, word [rbp - 0x64]
mov word [rdi + 0xc], ax
mov eax, edx
jmp 0x14014f4b0
mov eax, 3
jmp 0x14014f2e7
mov eax, 2
jmp 0x14014f2e7
lea rcx, str.Cant_fixup_EB_jmp_because_there_isnt_enough_room_to_expand_to_E9_jmp_n
call fcn.14029c740
jmp 0x14014fa88
mov edx, eax
lea rcx, str.Opcode__x_of_type_k_EBYTEOffsetAtByteTwo_cant_be_converted_to_larger_relative_address_n
call fcn.14029c740
jmp 0x14014fa88
lea rcx, str.Unknown_opcode_relative_offset_enum_value__d_n
call fcn.14029c740
jmp 0x14014fa88
lea rcx, str.Cant_relocate_and_adjust_offset_because_offset_is_too_big_after_relocation._n
call fcn.14029c740
jmp 0x14014fa88
movzx eax, byte [rbp - 0x2d]
movzx ecx, byte [rbp - 0x2e]
movzx edx, byte [rbp - 0x2f]
movzx r10d, byte [rbp - 0x30]
movzx r11d, byte [rbp - 0x31]
movzx ebx, byte [rbp - 0x32]
movzx edi, byte [rbp - 0x33]
movzx esi, byte [rbp - 0x34]
movzx r14d, byte [rbp - 0x35]
movzx r15d, byte [rbp - 0x36]
movzx r12d, byte [rbp - 0x37]
movzx r13d, byte [rbp - 0x38]
movzx r9d, byte [rbp - 0x3f]
movzx r8d, byte [rbp - 0x40]
mov dword [rsp + 0xa8], eax
mov dword [rsp + 0xa0], ecx
mov dword [rsp + 0x98], edx
mov dword [rsp + 0x90], r10d
mov dword [rsp + 0x88], r11d
mov dword [rsp + 0x80], ebx
mov dword [rsp + 0x78], edi
mov dword [rsp + 0x70], esi
mov dword [rsp + 0x68], r14d
mov dword [rsp + 0x60], r15d
mov dword [rsp + 0x58], r12d
mov dword [rsp + 0x50], r13d
movzx eax, byte [rbp - 0x39]
mov dword [rsp + 0x48], eax
movzx eax, byte [rbp - 0x3a]
mov dword [rsp + 0x40], eax
movzx eax, byte [rbp - 0x3b]
mov dword [rsp + 0x38], eax
movzx eax, byte [rbp - 0x3c]
mov dword [rsp + 0x30], eax
movzx eax, byte [rbp - 0x3d]
mov dword [rsp + 0x28], eax
movzx eax, byte [rbp - 0x3e]
mov dword [rsp + 0x20], eax
mov edx, dword [rbp - 0x5c]
lea rcx, str.Failed_parsing_copied_bytes_during_detour____shouldnt_happen_as_this_is_a_second_pass:_position__d_n_02X__02X__02X__02X__02X__02X__02X__02X__02X__02X__02X__02X__02X__02X__02X__02X__02X__02X__02X__02X_n
call fcn.14029c740
jmp 0x14014fa88
mov eax, dword [rbp - 0x80]
mov dword [rdi], eax
movzx eax, byte [rbp - 0x7c]
mov byte [rdi + 4], al
mov eax, 5
lea rbx, [rax + rdi]
mov qword [rbp + 0x30], rbx
mov r8, qword [rbp + 0x4e8]
mov rcx, r8
sub rcx, rbx
sub rcx, 5
mov dword [rbp - 0x7f], ecx
movsxd rax, ecx
cmp rax, rcx
je 0x14014f4f1
mov qword [rbp - 0x6a], r8
movsd xmm0, qword [rbp - 0x70]
movsd qword [rbx], xmm0
mov eax, dword [rbp - 0x68]
mov dword [rbx + 8], eax
movzx eax, word [rbp - 0x64]
mov word [rbx + 0xc], ax
jmp 0x14014f502
mov eax, dword [rbp - 0x80]
mov dword [rbx], eax
movzx eax, byte [rbp - 0x7c]
mov byte [rbx + 4], al
mov edx, 5
mov r8, rbx
sub r8, r12
add r8, rdx
mov rdx, r12
mov r15, qword [rbp - 0x10]
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_FlushInstructionCache]
sub rbx, r13
sub rbx, 5
mov dword [rbp - 0x7f], ebx
movsxd rax, ebx
cmp rax, rbx
je 0x14014f53e
lea rcx, str.Warning:_Jump_from_function_to_intermediate_trampoline_is_too_far__Shouldnt_happen.
call fcn.14029c740
jmp 0x14014fa88
call fcn.14014eed0
mov ecx, eax
xor edx, edx
lea rax, [r13 + 4]
div rcx
mov rbx, rax
xor edx, edx
mov rax, r13
div rcx
mov rdi, rax
mov dword [rbp - 0x58], 0
mov dword [rbp - 0x50], 0
lea r9, [rbp - 0x58]
mov edx, 1
lea r8d, [rdx + 0x3f]
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
jne 0x14014f595
lea rcx, str.Warning:_VirtualProtect_call_failed_during_hook_attempt_n
call fcn.14029c740
jmp 0x14014fa88
cmp rdi, rbx
je 0x14014f5da
lea r9, [rbp - 0x50]
mov edx, 1
lea r8d, [rdx + 0x3f]
lea rcx, [r13 + 4]
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
jne 0x14014f5da
lea r9, [rbp - 0x4c]
mov r8d, dword [rbp - 0x58]
lea edx, [rax + 1]
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
lea rcx, str.Warning:_VirtualProtect__2__call_failed_during_hook_attempt_n
call fcn.14029c740
jmp 0x14014fa88
xor sil, sil
mov rax, qword [rbp + 0x4f0]
mov qword [rax], r12
lea rax, [rbp + 0x70]
mov qword [rsp + 0x20], rax
mov r9d, 5
lea r8, [rbp - 0x80]
mov rdx, r13
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_WriteProcessMemory]
test eax, eax
jne 0x14014f61b
lea rcx, str.WriteProcessMemory___call_failed_trying_to_overwrite_first_5_bytes_of_function_body_during_hook_n
call fcn.14029c740
xor r12d, r12d
jmp 0x14014f64c
mov rax, qword [rbp + 0x4f8]
xor r12d, r12d
mov qword [rax], r12
mov sil, 1
lea r8d, [r12 + 5]
mov rdx, r13
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_FlushInstructionCache]
test eax, eax
jne 0x14014f64c
lea rcx, str.FlushInstructionCache___call_failed_trying_to_overwrite_first_5_bytes_of_function_body_during_hook_n
call fcn.14029c740
cmp rdi, rbx
je 0x14014f683
mov r8d, dword [rbp - 0x50]
lea eax, [r8 - 0x40]
test eax, 0xffffffbf
je 0x14014f683
lea r9, [rbp - 0x4c]
mov edx, 1
lea rcx, [r13 + 4]
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
jne 0x14014f683
lea rcx, str.Warning:_VirtualProtect__2__call_failed_to_restore_protection_flags_during_hook_attempt_n
call fcn.14029c740
mov r8d, dword [rbp - 0x58]
lea eax, [r8 - 0x40]
test eax, 0xffffffbf
je 0x14014f6b4
lea r9, [rbp - 0x4c]
mov edx, 1
mov rcx, r13
call qword [sym.imp.KERNEL32.dll_VirtualProtect]
test eax, eax
jne 0x14014f6b4
lea rcx, str.Warning:_VirtualProtect_call_failed_to_restore_protection_flags_during_hook_attempt_n
call fcn.14029c740
test sil, sil
je 0x14014f7df
lea rdi, [0x1405d7e68]
mov qword [rbp - 0x48], rdi
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
mov r14, qword [rbp + 0x4e0]
mov rbx, qword [0x1405d7e48]
mov rax, qword [rbx + 8]
mov qword [rbp], rax
mov dword [rbp + 8], r12d
mov rcx, rbx
cmp byte [rax + 0x19], 0
jne 0x14014f71c
mov qword [rbp], rax
cmp qword [rax + 0x20], r14
jae 0x14014f709
mov dword [rbp + 8], r12d
mov rax, qword [rax + 0x10]
jmp 0x14014f716
mov dword [rbp + 8], 1
mov rcx, rax
mov rax, qword [rax]
cmp byte [rax + 0x19], 0
je 0x14014f6f5
cmp byte [rcx + 0x19], 0
jne 0x14014f72c
cmp r14, qword [rcx + 0x20]
jae 0x14014f7ae
movabs rax, 0x222222222222222
cmp qword [0x1405d7e50], rax
je 0x14014faa4
lea r15, [0x1405d7e48]
mov qword [rbp - 0x70], r15
mov qword [rbp - 0x68], r12
mov qword [rbp - 0x68], r12
mov ecx, 0x78
call fcn.14031dc78
mov qword [rbp - 0x68], rax
mov qword [rax + 0x20], r14
xorps xmm0, xmm0
movups xmmword [rax + 0x28], xmm0
movups xmmword [rax + 0x38], xmm0
movups xmmword [rax + 0x48], xmm0
movups xmmword [rax + 0x58], xmm0
movups xmmword [rax + 0x68], xmm0
mov qword [rax], rbx
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbx
mov word [rax + 0x18], 0
mov qword [rbp - 0x68], r12
movups xmm0, xmmword [rbp]
movaps xmmword [rbp - 0x70], xmm0
mov r8, rax
lea rdx, [rbp - 0x70]
mov rcx, r15
call fcn.140146bc0
mov rcx, rax
movaps xmm0, xmmword [rbp + 0x20]
movups xmmword [rcx + 0x28], xmm0
movaps xmm1, xmmword [rbp + 0x30]
movups xmmword [rcx + 0x38], xmm1
movaps xmm0, xmmword [rbp + 0x40]
movups xmmword [rcx + 0x48], xmm0
movaps xmm1, xmmword [rbp + 0x50]
movups xmmword [rcx + 0x58], xmm1
movaps xmm0, xmmword [rbp + 0x60]
movups xmmword [rcx + 0x68], xmm0
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
movzx eax, sil
jmp 0x14014fa8a
mov byte [rbp + 0x4e0], 1
lea rdi, [0x1405d7e68]
mov qword [rbp - 0x10], rdi
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
mov rbx, qword [0x1405d7ec8]
mov rax, qword [rbx + 8]
mov rcx, rbx
cmp byte [rax + 0x19], 0
jne 0x14014f830
cmp qword [rax + 0x20], r13
jae 0x14014f824
mov rax, qword [rax + 0x10]
jmp 0x14014f82a
mov rcx, rax
mov rax, qword [rax]
cmp byte [rax + 0x19], 0
je 0x14014f818
cmp byte [rcx + 0x19], 0
jne 0x14014f845
cmp r13, qword [rcx + 0x20]
jb 0x14014f845
cmp rcx, rbx
jne 0x14014f900
mov byte [rbp + 0x4e0], 0
mov rax, qword [rbx + 8]
mov qword [rbp], rax
xor r14d, r14d
mov dword [rbp + 8], r14d
mov rcx, rbx
cmp byte [rax + 0x19], r14b
jne 0x14014f88b
mov qword [rbp], rax
cmp qword [rax + 0x20], r13
jae 0x14014f878
mov dword [rbp + 8], r14d
mov rax, qword [rax + 0x10]
jmp 0x14014f885
mov dword [rbp + 8], 1
mov rcx, rax
mov rax, qword [rax]
cmp byte [rax + 0x19], r14b
je 0x14014f864
cmp byte [rcx + 0x19], r14b
jne 0x14014f897
cmp r13, qword [rcx + 0x20]
jae 0x14014f900
movabs rax, 0x666666666666666
cmp qword [0x1405d7ed0], rax
je 0x14014fa9e
lea rsi, [0x1405d7ec8]
mov qword [rbp - 0x70], rsi
mov qword [rbp - 0x68], r14
mov qword [rbp - 0x68], r14
mov ecx, 0x28
call fcn.14031dc78
mov qword [rbp - 0x68], rax
mov qword [rax + 0x20], r13
mov qword [rax], rbx
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbx
mov word [rax + 0x18], 0
mov qword [rbp - 0x68], r14
movups xmm0, xmmword [rbp]
movaps xmmword [rbp - 0x70], xmm0
mov r8, rax
lea rdx, [rbp - 0x70]
mov rcx, rsi
call fcn.140146bc0
nop
mov rcx, rdi
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
movzx eax, byte [r13 + 0xf]
movzx ecx, byte [r13 + 0xe]
movzx edx, byte [r13 + 0xd]
movzx r8d, byte [r13 + 0xc]
movzx r9d, byte [r13 + 0xb]
movzx r10d, byte [r13 + 0xa]
movzx r11d, byte [r13 + 9]
movzx ebx, byte [r13 + 8]
movzx edi, byte [r13 + 7]
movzx esi, byte [r13 + 6]
movzx r14d, byte [r13 + 5]
movzx r15d, byte [r13 + 4]
movzx r12d, byte [r13 + 3]
movzx r13d, byte [r13 + 2]
mov dword [rsp + 0xa8], eax
mov dword [rsp + 0xa0], ecx
mov dword [rsp + 0x98], edx
mov dword [rsp + 0x90], r8d
mov dword [rsp + 0x88], r9d
mov dword [rsp + 0x80], r10d
mov dword [rsp + 0x78], r11d
mov dword [rsp + 0x70], ebx
mov dword [rsp + 0x68], edi
mov dword [rsp + 0x60], esi
mov dword [rsp + 0x58], r14d
mov dword [rsp + 0x50], r15d
mov dword [rsp + 0x48], r12d
mov dword [rsp + 0x40], r13d
mov rcx, qword [rbp - 0x48]
movzx eax, byte [rcx + 1]
mov dword [rsp + 0x38], eax
movzx eax, byte [rcx]
mov dword [rsp + 0x30], eax
mov qword [rsp + 0x28], rcx
mov eax, dword [rbp - 0x5c]
mov dword [rsp + 0x20], eax
lea r9, str.AMD64
lea r8, str.Unknown_opcodes_for__s_at__d_bytes_for_func__p:__02X__02X__02X__02X__02X__02X__02X__02X__02X__02X__02X__02X__02X__02X__02X__02X_n
mov edx, 0x400
lea rcx, [rbp + 0x84]
call fcn.14014feb0
lea rcx, [rbp + 0x84]
call fcn.14029c740
cmp byte [rbp + 0x4e0], 0
jne 0x14014fa88
lea rax, [rbp + 0x84]
mov rcx, 0xffffffffffffffff
inc rcx
cmp byte [rax + rcx], 0
jne 0x14014fa06
mov dword [rbp + 0x80], ecx
mov r9, qword [0x1405d7e40]
test r9, r9
jne 0x14014fa74
mov ecx, 0x160
call fcn.14031dc78
mov qword [rbp + 0x4e0], rax
test rax, rax
je 0x14014fa64
mov byte [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
mov r9d, 0x32
mov r8d, 0x8000
lea rdx, str.GameOverlayRender_DetourErrorStream
mov rcx, rax
call fcn.1401b95a0
mov r9, rax
jmp 0x14014fa67
xor r9d, r9d
mov qword [0x1405d7e40], r9
mov ecx, dword [rbp + 0x80]
mov rax, qword [r9]
lea r8d, [rcx + 4]
lea rdx, [rbp + 0x80]
mov rcx, r9
call qword [rax + 0x18]
xor al, al
add rsp, 0x5c8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
call fcn.14010b490
nop
call fcn.14010b490
int3