Function at 0x4cdfb0
Capabilities:
Encode data using xor
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, 0x48
mov ebp, r9d
mov rdi, rcx
mov r15d, dword [rsp + 0xb0]
test rdx, rdx
je 0x4ce034
test ebp, ebp
js 0x4cdfe6
mov rbx, rdx
movsx eax, word [rdx + 0x34]
cmp eax, ebp
jne 0x4ce09b
movsxd rax, dword [rdi + 0x90]
cmp dword [rdi + 0x94], eax
jle 0x4ce07e
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x87
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], r15d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x4ce362
movsxd rax, dword [rdi + 0x90]
cmp dword [rdi + 0x94], eax
jle 0x4ce1c0
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x5e
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], ebp
mov dword [rcx + rax*8 + 0xc], r15d
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x4ce362
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x87
mov r9d, r15d
call fcn.0047df60
jmp 0x4ce362
mov edx, 0xaf
cmp byte [rbx + 0x3f], 1
mov r9d, ebp
jne 0x4ce1e0
movsxd rax, dword [rdi + 0x90]
cmp dword [rdi + 0x94], eax
jle 0x4ce233
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
lea rax, [rax + rax*2]
mov byte [rcx + rax*8], dl
mov word [rcx + rax*8 + 2], 0
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], r15d
mov qword [rcx + rax*8 + 0x10], 0
mov byte [rcx + rax*8 + 1], 0
mov dl, byte [rbx + 0x3f]
cmp dl, 2
je 0x4ce24c
mov qword [rsp + 0x30], 0
mov r9, qword [rbx + 8]
movsxd rsi, ebp
lea r10, [rsi + rsi*2]
movzx ebp, word [r9 + r10*8 + 0x10]
test ebp, ebp
sete al
test dl, dl
sete cl
cmp cl, al
je 0x4ce24f
test dl, dl
jne 0x4ce24f
mov rdx, qword [rbx + 0x50]
test rdx, rdx
je 0x4ce24f
cmp dword [rdx], ebp
jl 0x4ce24f
add ebp, 0xffffffff
movsxd rax, ebp
shl rax, 5
mov rdx, qword [rdx + rax + 8]
test rdx, rdx
je 0x4ce24f
mov rcx, qword [rdi]
mov r8b, byte [rcx + 0x64]
mov r9b, byte [r9 + r10*8 + 0xc]
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
call fcn.004808c0
mov r8, qword [rsp + 0x30]
test r8, r8
je 0x4ce24f
mov rcx, qword [rdi]
cmp byte [rcx + 0x67], 0
je 0x4ce503
mov edx, 0xfffffff6
call fcn.00444fc0
mov rax, qword [rbx + 8]
lea rcx, [rsi + rsi*2]
cmp byte [rax + rcx*8 + 0xc], 0x45
je 0x4ce262
jmp 0x4ce362
mov rcx, rdi
mov edx, 0x5e
mov r9d, ebp
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp fcn.0047df60
mov eax, ebp
mov r11, qword [rbx + 8]
lea rdx, [rax + rax*2]
movzx esi, word [r11 + rdx*8 + 0x12]
mov eax, esi
xor eax, 0xffdf
test ax, si
je 0x4ce2ac
lea rax, [r11 + rdx*8]
mov rdi, qword [rdi + 0x18]
mov ecx, esi
not ecx
or ecx, 0xfeff
cmp cx, 0xffff
je 0x4ce30f
mov r8, qword [rax]
lea rdx, [0x00602e08]
mov rcx, rdi
call fcn.00419aa0
jmp 0x4ce362
mov dword [rsp + 0x20], r15d
mov rcx, rdi
call fcn.0047df60
mov dl, byte [rbx + 0x3f]
cmp dl, 2
jne 0x4ce107
movsxd rsi, ebp
mov rax, qword [rbx + 8]
lea rcx, [rsi + rsi*2]
cmp byte [rax + rcx*8 + 0xc], 0x45
jne 0x4ce362
cmp byte [rbx + 0x3f], 1
je 0x4ce362
movsxd rax, dword [rdi + 0x90]
cmp dword [rdi + 0x94], eax
jle 0x4ce373
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
mov rcx, qword [rdi + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x57
mov dword [rcx + rax*8 + 4], r15d
xorps xmm0, xmm0
movups xmmword [rcx + rax*8 + 8], xmm0
jmp 0x4ce362
mov eax, dword [rbx + 0x30]
test al, al
js 0x4ce38e
not eax
or eax, 0xffffffdf
cmp eax, 0xffffffff
je 0x4ce3f9
test bp, bp
js 0x4ce3f9
movzx eax, word [r11 + 0x12]
and eax, 0x20
test bp, bp
je 0x4ce40b
mov edx, ebp
shl edx, 0x10
movsx ecx, bp
test ecx, ecx
mov esi, 1
cmovg esi, ecx
mov ecx, esi
and ecx, 1
cmp edx, 0x20000
jge 0x4ce414
mov r10d, 1
xor edx, edx
jmp 0x4ce4c9
lea rbp, [r11 + rdx*8]
add rbp, 0x12
mov r14d, dword [rdi + 0x40]
mov ecx, esi
not ecx
and ecx, 0x9c5
mov edx, esi
and edx, 0xfffff63a
or edx, ecx
xor edx, 0x8c5
and esi, 0x100
or esi, edx
mov word [rbp], si
add r8d, 1
mov dword [rdi + 0x40], r8d
mov rcx, rdi
mov rdx, rbx
mov r8, rax
mov r9d, r15d
call fcn.004ca9d0
mov dword [rdi + 0x40], r14d
and byte [rbp + 1], 0xfe
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov dword [rsp + 0x20], 0
mov rcx, rdi
mov edx, 0x57
mov r8d, r15d
xor r9d, r9d
jmp 0x4ce091
lea rax, [rbx + 0x10]
nop word cs:[rax + rax]
nop dword [rax]
mov rcx, qword [rax]
mov eax, dword [rcx + 0x64]
mov edx, eax
xor edx, 0xfffffffc
and edx, eax
lea rax, [rcx + 0x28]
cmp edx, 2
jne 0x4ce3a0
movzx r10d, word [rcx + 0x60]
mov edx, 0x5e
mov r9d, 0xffffffff
test r10, r10
je 0x4ce0ad
mov rsi, qword [rcx + 8]
shl r10, 0x10
xor ecx, ecx
xor eax, eax
cmp word [rsi], bp
je 0x4ce400
add rax, 1
add rcx, 0x10000
add rsi, 2
cmp r10, rcx
jne 0x4ce3db
jmp 0x4ce0ad
mov edx, ebp
jmp 0x4ce4f5
sar ecx, 0x10
mov r9d, ecx
jmp 0x4ce0ad
xor esi, esi
xor edx, edx
jmp 0x4ce4e8
mov qword [rsp + 0x38], rcx
movabs r13, 0x3f8f8198852bb19c
mov r14d, esi
xor r14d, 0x80000001
mov qword [rsp + 0x40], rsi
and r14d, esi
xor ecx, ecx
mov r12, r13
not r12
and r13, 0xfffffffffffffffe
xor edx, edx
mov r10, rcx
movzx eax, ax
shr eax, 5
mov ecx, eax
not ecx
and ecx, 1
and eax, 0xfffffffe
or eax, ecx
add edx, eax
mov rax, r10
not rax
mov rcx, rax
movabs rsi, 0x3f8f8198852bb19c
and rcx, rsi
mov r9, r10
and r9, r12
or r9, rcx
mov ecx, r12d
and ecx, 1
or rcx, r13
xor rcx, r9
not eax
or esi, r12d
and esi, eax
and esi, 1
or rsi, rcx
lea rax, [rsi + rsi*2]
movzx eax, byte [r11 + rax*8 + 0x12]
and al, 0x20
cmp al, 1
adc dx, 0
lea rcx, [r10 + 2]
lea rax, [rcx + rcx*2]
movzx eax, word [r11 + rax*8 + 0x12]
and eax, 0x20
add r14, 0xfffffffffffffffe
jne 0x4ce443
add r10, 3
mov rsi, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x4ce4e8
lea rcx, [r10 + r10*2]
movzx eax, ax
movzx ecx, word [r11 + rcx*8 + 0x12]
and ecx, 0x20
shr eax, 5
xor eax, 1
add edx, eax
mov eax, ecx
test ax, ax
je 0x4ce4f5
sub esi, edx
add si, word [rbx + 0x38]
mov edx, esi
movsx r9d, dx
mov edx, 0x5e
jmp 0x4ce0ad
mov rax, qword [rdi + 0x88]
mov ecx, dword [rdi + 0x90]
add ecx, 0xffffffff
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
mov byte [rax + rcx*8 + 1], 0xf6
mov qword [rax + rcx*8 + 0x10], r8
mov rax, qword [rbx + 8]
lea rcx, [rsi + rsi*2]
cmp byte [rax + rcx*8 + 0xc], 0x45
je 0x4ce262
jmp 0x4ce362