Function at 0x1400ef3f0
Capabilities:
Encode data using xor

Disassembly:
mov dword [rsp + 0x20], r9d
mov qword [rsp + 0x18], r8
push rbx
push rsi
push rdi
push r13
push r14
sub rsp, 0x70
cmp dword [rdx + 0x70], 0
mov r14d, r9d
mov rdi, r8
mov r13, rdx
mov rbx, rcx
jne 0x1400ef447
cmp dword [rdx + 0x50], 0
je 0x1400ef423
cmp dword [rdx + 0x1c], 0
jne 0x1400ef447
lea rcx, str.Removing_unwanted_triangles._n
call fcn.1400771e0
cmp dword [r13 + 0x74], 0
je 0x1400ef447
test r14d, r14d
jle 0x1400ef447
lea rcx, str.__Marking_holes_for_elimination._n
call fcn.1400771e0
mov esi, dword [rsp + 0xc8]
test esi, esi
jle 0x1400ef46d
mov ecx, esi
shl ecx, 4
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
mov qword [rsp + 0x30], rax
test rax, rax
je 0x1400efcb4
jmp 0x1400ef476
mov qword [rsp + 0x30], 0
test r14d, r14d
jle 0x1400ef482
cmp dword [r13 + 0x50], 0
je 0x1400ef491
cmp dword [r13 + 0x1c], 0
je 0x1400ef491
test esi, esi
jle 0x1400ef52b
mov dword [rbx + 0x120], 8
mov ecx, 0x1ff0
mov dword [rbx + 0x124], 8
mov dword [rbx + 0x128], 0x3fc
mov dword [rbx + 0x12c], 0x3fc
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
test rax, rax
je 0x1400efccb
mov qword [rbx + 0xf0], rax
xor edx, edx
mov qword [rax], 0
mov rax, qword [rbx + 0xf0]
movsxd r8, dword [rbx + 0x120]
mov qword [rbx + 0xf8], rax
mov qword [rbx + 0x130], 0
lea rcx, [rax + 8]
mov qword [rbx + 0x108], 0
mov rax, rcx
div r8
mov eax, dword [rbx + 0x12c]
sub r8, rdx
mov dword [rbx + 0x138], eax
add r8, rcx
mov qword [rbx + 0x100], r8
cmp dword [r13 + 0x1c], 0
mov qword [rsp + 0xa0], rbp
mov qword [rsp + 0x68], r12
mov qword [rsp + 0x60], r15
lea r15, [0x140000000]
movaps xmmword [rsp + 0x50], xmm6
jne 0x1400ef778
cmp dword [r13 + 0x74], 0
je 0x1400ef567
lea rcx, str.__Marking_concavities__external_triangles__for_elimination._n
call fcn.1400771e0
mov rax, qword [rbx + 0x14340]
mov rcx, qword [rax]
mov eax, ecx
and eax, 3
mov edi, eax
mov r10d, eax
xor rdi, rcx
mov esi, eax
mov r12, rdi
mov dword [rsp + 0xa8], esi
nop word [rax + rax]
mov rcx, qword [rdi + 0x30]
test cl, 2
jne 0x1400ef703
movsxd rdx, esi
mov rax, qword [rdi + rdx*8 + 0x30]
and rax, 0xfffffffffffffffc
cmp rax, qword [rbx + 0x14350]
jne 0x1400ef6b2
or rcx, 2
mov qword [rdi + 0x30], rcx
mov rcx, qword [rbx + 0x108]
test rcx, rcx
je 0x1400ef5e2
mov rax, qword [rcx]
inc dword [rbx + 0x130]
mov qword [rbx + 0x108], rax
mov qword [rcx], rdi
jmp 0x1400ef703
mov edx, dword [rbx + 0x138]
lea r14, [rbx + 0x124]
test edx, edx
jne 0x1400ef685
mov rax, qword [rbx + 0xf8]
lea rbp, [rbx + 0x128]
lea r15, [rbx + 0x120]
cmp qword [rax], 0
jne 0x1400ef649
mov ecx, dword [r14]
imul ecx, dword [rbp]
mov eax, dword [r15]
add eax, 8
add ecx, eax
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
test rax, rax
je 0x1400efce2
mov rcx, qword [rbx + 0xf8]
mov r10d, dword [rsp + 0xa8]
mov qword [rcx], rax
mov qword [rax], 0
mov rax, qword [rbx + 0xf8]
lea r9, [rbx + 0x100]
movsxd r8, dword [r15]
xor edx, edx
lea r15, [0x140000000]
mov rcx, qword [rax]
mov qword [rbx + 0xf8], rcx
add rcx, 8
mov rax, rcx
div r8
sub r8, rdx
mov edx, dword [rbp]
add r8, rcx
mov qword [r9], r8
jmp 0x1400ef68c
lea r9, [rbx + 0x100]
mov rcx, qword [r9]
movsxd rax, dword [r14]
inc dword [rbx + 0x134]
add rax, rcx
inc dword [rbx + 0x130]
mov qword [r9], rax
lea eax, [rdx - 1]
mov dword [rbx + 0x138], eax
mov qword [rcx], rdi
jmp 0x1400ef703
cmp dword [rax + 0x40], 0
jne 0x1400ef703
mov dword [rax + 0x40], 1
movsxd rax, dword [r15 + rdx*4 + 0x168f60]
mov r8, qword [rdi + rax*8 + 0x18]
movsxd rax, dword [r15 + rdx*4 + 0x168f70]
mov rcx, qword [rdi + rax*8 + 0x18]
movsxd rax, dword [rbx + 0x142e8]
cmp dword [r8 + rax*4], 0
jne 0x1400ef6ef
mov dword [r8 + rax*4], 1
movsxd rax, dword [rbx + 0x142e8]
cmp dword [rcx + rax*4], 0
jne 0x1400ef703
mov dword [rcx + rax*4], 1
mov r9, qword [rbx + 0x14340]
movsxd rax, esi
movsxd rax, dword [r15 + rax*4 + 0x168f60]
mov esi, eax
mov rcx, qword [rdi + rax*8]
mov eax, ecx
and eax, 3
mov r8d, eax
xor r8, rcx
mov eax, dword [r15 + rax*4 + 0x168f60]
cmp r8, r9
je 0x1400ef756
mov esi, eax
mov rdi, r8
cdqe
mov rcx, qword [r8 + rax*8]
mov eax, ecx
and eax, 3
mov r8d, eax
xor r8, rcx
mov eax, dword [r15 + rax*4 + 0x168f60]
cmp r8, r9
jne 0x1400ef733
cmp rdi, r12
jne 0x1400ef590
cmp esi, r10d
jne 0x1400ef590
mov rdi, qword [rsp + 0xb0]
mov r14d, dword [rsp + 0xb8]
xorps xmm6, xmm6
test r14d, r14d
jle 0x1400ef98a
cmp dword [r13 + 0x50], 0
jne 0x1400ef98a
add r14d, r14d
xor r12d, r12d
mov dword [rsp + 0xa8], r14d
test r14d, r14d
jle 0x1400ef98a
mov rsi, rdi
nop dword [rax]
movsd xmm1, qword [rsi]
comisd xmm1, xmmword [rbx + 0x14290]
jb 0x1400ef979
movsd xmm0, qword [rbx + 0x14298]
comisd xmm0, xmm1
jb 0x1400ef979
movsd xmm1, qword [rsi + 8]
comisd xmm1, xmmword [rbx + 0x142a0]
jb 0x1400ef979
movsd xmm0, qword [rbx + 0x142a8]
comisd xmm0, xmm1
jb 0x1400ef979
mov rax, qword [rbx + 0x14340]
mov rcx, qword [rax]
mov eax, ecx
and eax, 3
mov edx, eax
mov r9d, eax
xor r9, rcx
mov dword [rsp + 0x40], edx
movsxd rax, dword [r15 + rax*4 + 0x168f60]
mov rcx, rbx
mov qword [rsp + 0x38], r9
mov r8, qword [r9 + rax*8 + 0x18]
movsxd rax, dword [r15 + rdx*4 + 0x168f70]
mov rdx, r13
mov r9, qword [r9 + rax*8 + 0x18]
movsxd rax, r12d
lea rdi, [rdi + rax*8]
mov qword [rsp + 0x20], rdi
call fcn.1400f0e20
comisd xmm0, xmm6
jbe 0x1400ef971
lea r9, [rsp + 0x38]
mov r8, rdi
mov rdx, r13
mov rcx, rbx
call fcn.1400fa3c0
cmp eax, 3
je 0x1400ef971
mov rbp, qword [rsp + 0x38]
mov rax, qword [rbp + 0x30]
test al, 2
jne 0x1400ef971
or rax, 2
mov qword [rbp + 0x30], rax
mov rcx, qword [rbx + 0x108]
test rcx, rcx
je 0x1400ef8a4
mov rax, qword [rcx]
mov qword [rbx + 0x108], rax
jmp 0x1400ef968
mov edx, dword [rbx + 0x138]
lea rdi, [rbx + 0x124]
test edx, edx
jne 0x1400ef946
mov rax, qword [rbx + 0xf8]
lea r15, [rbx + 0x128]
lea r14, [rbx + 0x120]
cmp qword [rax], 0
jne 0x1400ef902
mov ecx, dword [rdi]
imul ecx, dword [r15]
mov eax, dword [r14]
add eax, 8
add ecx, eax
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
test rax, rax
je 0x1400efce2
mov rcx, qword [rbx + 0xf8]
mov qword [rcx], rax
mov qword [rax], 0
mov rax, qword [rbx + 0xf8]
lea r9, [rbx + 0x100]
xor edx, edx
mov rcx, qword [rax]
mov qword [rbx + 0xf8], rcx
lea r8, [rcx + 8]
movsxd rcx, dword [r14]
mov r14d, dword [rsp + 0xa8]
mov rax, r8
div rcx
sub r8, rdx
mov edx, dword [r15]
add r8, rcx
lea r15, [0x140000000]
mov qword [r9], r8
jmp 0x1400ef94d
lea r9, [rbx + 0x100]
mov rcx, qword [r9]
movsxd rax, dword [rdi]
add rax, rcx
inc dword [rbx + 0x134]
mov qword [r9], rax
lea eax, [rdx - 1]
mov dword [rbx + 0x138], eax
inc dword [rbx + 0x130]
mov qword [rcx], rbp
mov rdi, qword [rsp + 0xb0]
add r12d, 2
add rsi, 0x10
cmp r12d, r14d
jl 0x1400ef7b0
mov r14d, dword [rsp + 0xc8]
mov r15, qword [rsp + 0xc0]
test r14d, r14d
jle 0x1400efaa3
mov rdi, qword [rsp + 0x30]
lea r12, [0x140000000]
mov rsi, r15
mov rbp, r15
nop word [rax + rax]
movsd xmm1, qword [rsi]
comisd xmm1, xmmword [rbx + 0x14290]
mov rcx, qword [rbx + 0x14340]
mov qword [rdi], rcx
jb 0x1400efa85
movsd xmm0, qword [rbx + 0x14298]
comisd xmm0, xmm1
jb 0x1400efa85
movsd xmm1, qword [rsi + 8]
comisd xmm1, xmmword [rbx + 0x142a0]
jb 0x1400efa85
movsd xmm0, qword [rbx + 0x142a8]
comisd xmm0, xmm1
jb 0x1400efa85
mov rcx, qword [rcx]
mov eax, ecx
mov qword [rsp + 0x20], rbp
and eax, 3
mov edx, eax
mov r9d, eax
xor r9, rcx
mov dword [rsp + 0x40], edx
movsxd rax, dword [r12 + rax*4 + 0x168f60]
mov rcx, rbx
mov qword [rsp + 0x38], r9
mov r8, qword [r9 + rax*8 + 0x18]
movsxd rax, dword [r12 + rdx*4 + 0x168f70]
mov rdx, r13
mov r9, qword [r9 + rax*8 + 0x18]
call fcn.1400f0e20
comisd xmm0, xmm6
jbe 0x1400efa85
lea r9, [rsp + 0x38]
mov r8, rbp
mov rdx, r13
mov rcx, rbx
call fcn.1400fa3c0
cmp eax, 3
je 0x1400efa85
mov rax, qword [rsp + 0x38]
test byte [rax + 0x30], 2
jne 0x1400efa85
mov qword [rdi], rax
mov eax, dword [rsp + 0x40]
mov dword [rdi + 8], eax
add rbp, 0x20
add rsi, 0x20
add rdi, 0x10
sub r14, 1
jne 0x1400ef9c0
mov r14d, dword [rsp + 0xc8]
cmp dword [rbx + 0x130], 0
mov r12, qword [rsp + 0x30]
jle 0x1400efabc
mov rdx, r13
mov rcx, rbx
call fcn.1400fed90
test r14d, r14d
jle 0x1400efc2e
cmp dword [r13 + 0x70], 0
jne 0x1400efaf8
cmp dword [r13 + 0x18], 0
je 0x1400efaec
cmp dword [r13 + 0xc], 0
lea rax, str.Spreading_regional_attributes._n
lea rcx, str.Spreading_regional_attributes_and_area_constraints._n
cmove rcx, rax
jmp 0x1400efaf3
lea rcx, str.Spreading_regional_area_constraints._n
call fcn.1400771e0
cmp dword [r13 + 0x18], 0
je 0x1400efbc3
cmp dword [r13 + 4], 0
jne 0x1400efbc3
mov rax, qword [rbx]
xor edx, edx
movsxd rcx, dword [rbx + 0x30]
mov qword [rbx + 0x20], rax
lea r8, [rax + 8]
mov rax, r8
div rcx
mov eax, dword [rbx + 0x3c]
sub rcx, rdx
mov dword [rbx + 0x4c], eax
add rcx, r8
mov qword [rbx + 0x28], rcx
mov rcx, rbx
call fcn.140104eb0
mov r8, rax
test rax, rax
je 0x1400efbc3
nop word [rax + rax]
mov eax, dword [rbx + 0x142f4]
add eax, dword [rbx + 0x142dc]
cdqe
mov qword [r8 + rax*8], 0
mov r9, qword [rbx + 0x10]
nop word [rax + rax]
mov r8, qword [rbx + 0x28]
cmp r8, r9
je 0x1400efbc3
mov ecx, dword [rbx + 0x4c]
test ecx, ecx
jne 0x1400efba4
mov rax, qword [rbx + 0x20]
xor edx, edx
movsxd r8, dword [rbx + 0x30]
mov rcx, qword [rax]
mov qword [rbx + 0x20], rcx
add rcx, 8
mov rax, rcx
div r8
sub r8, rdx
add r8, rcx
mov ecx, dword [rbx + 0x38]
movsxd rax, dword [rbx + 0x34]
add rax, r8
mov qword [rbx + 0x28], rax
lea eax, [rcx - 1]
mov dword [rbx + 0x4c], eax
test r8, r8
je 0x1400efbc3
cmp qword [r8 + 8], 0
je 0x1400efb70
jmp 0x1400efb50
mov rdi, r12
mov ebp, r14d
lea rsi, [r15 + 0x10]
nop dword [rax]
mov rax, qword [rdi]
cmp rax, qword [rbx + 0x14340]
je 0x1400efc0e
cmp qword [rax + 8], 0
je 0x1400efc0e
or qword [rax + 0x30], 2
lea rcx, [rbx + 0xf0]
call fcn.1400ff470
mov rcx, qword [rdi]
mov rdx, r13
movsd xmm3, qword [rsi + 8]
movsd xmm2, qword [rsi]
mov qword [rax], rcx
mov rcx, rbx
call fcn.140101280
add rdi, 0x10
add rsi, 0x20
sub rbp, 1
jne 0x1400efbd0
cmp dword [r13 + 0x18], ebp
je 0x1400efc2e
cmp dword [r13 + 4], ebp
jne 0x1400efc2e
inc dword [rbx + 0x142dc]
cmp dword [rsp + 0xb8], 0
jle 0x1400efc3f
cmp dword [r13 + 0x50], 0
je 0x1400efc4b
cmp dword [r13 + 0x1c], 0
je 0x1400efc4b
test r14d, r14d
jle 0x1400efc91
mov rcx, qword [rbx + 0xf0]
test rcx, rcx
je 0x1400efc83
nop word [rax + rax]
mov rax, qword [rcx]
mov qword [rbx + 0xf8], rax
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov rcx, qword [rbx + 0xf8]
mov qword [rbx + 0xf0], rcx
test rcx, rcx
jne 0x1400efc60
test r14d, r14d
jle 0x1400efc91
mov rcx, r12
call qword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov r15, qword [rsp + 0x60]
mov r12, qword [rsp + 0x68]
mov rbp, qword [rsp + 0xa0]
movaps xmm6, xmmword [rsp + 0x50]
add rsp, 0x70
pop r14
pop r13
pop rdi
pop rsi
pop rbx
ret
lea rcx, str.Error:__Out_of_memory._n
call fcn.1400771e0
mov ecx, 1
call fcn.140105b30
int3
lea rcx, str.Error:__Out_of_memory._n
call fcn.1400771e0
mov ecx, 1
call fcn.140105b30
int3
lea rcx, str.Error:__Out_of_memory._n
call fcn.1400771e0
mov ecx, 1
call fcn.140105b30
int3