Function at 0x4257e0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x28
mov rbx, rdx
mov r13, rcx
movzx r12d, r8b
cmp r12b, 8
sete al
mov ecx, 2
mov edi, r12d
cmove edi, ecx
cmp r12b, 4
sete dl
cmovne edi, r12d
xor dl, al
cmovne edi, ecx
lea eax, [rdi - 1]
cmp eax, 3
jb 0x425858
lea rax, [0x005fb813]
mov qword [rsp + 0x20], rax
lea rdx, [0x005fc003]
lea r8, [0x0060752f]
mov edi, 0x15
mov ecx, 0x15
mov r9d, 0x2a4f3
call fcn.00408970
jmp 0x425ba0
mov r14, r9
test rbx, rbx
je 0x42589c
mov rsi, qword [r13 + 0x278]
test rsi, rsi
je 0x4258ae
mov cl, byte [rbx]
test cl, cl
je 0x4258cd
lea rdx, [rbx + 1]
xor eax, eax
lea rbp, [0x005fade0]
nop
movzx ecx, cl
movzx ecx, byte [rcx + rbp]
add ecx, eax
imul eax, ecx, 0x9e3779b1
movzx ecx, byte [rdx]
add rdx, 1
test cl, cl
jne 0x425880
jmp 0x4258cf
mov r15, qword [r13 + 0x10]
test r15, r15
jne 0x42595d
jmp 0x425b0a
lea rdx, [r13 + 0x26c]
lea r9, [r13 + 0x270]
mov r10d, dword [rdx]
lea r8, [0x0213b3c8]
test r10d, r10d
jne 0x4258f6
jmp 0x425939
xor eax, eax
xor edx, edx
div dword [r13 + 0x268]
shl rdx, 4
lea r9, [rsi + rdx]
add r9, 8
add rdx, rsi
mov r10d, dword [rdx]
lea r8, [0x0213b3c8]
test r10d, r10d
je 0x425939
lea rsi, [0x005fade0]
mov r9, qword [r9]
add r10d, 0xffffffff
mov rcx, qword [r9 + 0x18]
xor ebp, ebp
jmp 0x42591d
movzx eax, byte [rax + rsi]
cmp al, byte [rdx + rsi]
jne 0x42592f
add rbp, 1
movzx eax, byte [rcx + rbp]
movzx edx, byte [rbx + rbp]
cmp al, dl
jne 0x425910
test al, al
jne 0x425919
jmp 0x425936
test r10d, r10d
jne 0x4258fd
jmp 0x425939
mov r8, r9
mov rax, qword [r8 + 0x10]
test rax, rax
je 0x425b0a
mov ecx, edi
lea rcx, [rcx + rcx*4]
lea r15, [rax + rcx*8]
add r15, 0xffffffffffffffd8
test r15, r15
je 0x425b0a
cmp qword [r15 + 0x18], 0
je 0x425b0a
cmp dword [r13 + 0xd8], 0
je 0x425990
lea r8, [0x006074eb]
mov edi, 5
mov rcx, r13
mov edx, 5
call fcn.0040f2f0
jmp 0x425ba0
mov rax, qword [r13 + 8]
test rax, rax
je 0x4259c6
nop dword [rax]
mov ecx, dword [rax + 0xc8]
mov edx, ecx
xor edx, 3
and edx, ecx
mov ecx, edx
and ecx, 1
xor edx, 1
or edx, ecx
mov dword [rax + 0xc8], edx
mov rax, qword [rax + 0x10]
test rax, rax
jne 0x4259a0
movzx r8d, byte [r15 + 8]
mov eax, r8d
and eax, 0xfffffff7
cmp edi, eax
jne 0x425b0a
mov rsi, qword [r13 + 0x278]
test rsi, rsi
je 0x425a1c
mov cl, byte [rbx]
test cl, cl
je 0x425a2c
lea rdx, [rbx + 1]
xor eax, eax
lea rbp, [0x005fade0]
movzx ecx, cl
movzx ecx, byte [rcx + rbp]
add ecx, eax
imul eax, ecx, 0x9e3779b1
movzx ecx, byte [rdx]
add rdx, 1
test cl, cl
jne 0x425a00
jmp 0x425a2e
lea rdx, [r13 + 0x26c]
lea r10, [r13 + 0x270]
jmp 0x425a46
xor eax, eax
xor edx, edx
div dword [r13 + 0x268]
shl rdx, 4
lea r10, [rsi + rdx]
add r10, 8
add rdx, rsi
mov r11d, dword [rdx]
lea r9, [0x0213b3c8]
test r11d, r11d
je 0x425a99
lea rsi, [0x005fade0]
mov r10, qword [r10]
add r11d, 0xffffffff
mov rdx, qword [r10 + 0x18]
xor ebp, ebp
jmp 0x425a7d
movzx eax, byte [rax + rsi]
cmp al, byte [rcx + rsi]
jne 0x425a8f
add rbp, 1
movzx eax, byte [rdx + rbp]
movzx ecx, byte [rbx + rbp]
cmp al, cl
jne 0x425a70
test al, al
jne 0x425a79
jmp 0x425a96
test r11d, r11d
jne 0x425a5c
jmp 0x425a99
mov r9, r10
mov rsi, qword [r9 + 0x10]
cmp byte [rsi + 8], r8b
je 0x425ab1
cmp byte [rsi + 0x30], r8b
je 0x425ad2
cmp byte [rsi + 0x58], r8b
je 0x425af3
jmp 0x425b0a
mov rax, qword [rsi + 0x20]
test rax, rax
je 0x425ac4
mov rcx, qword [rsi + 0x10]
call rax
mov r8b, byte [r15 + 8]
mov qword [rsi + 0x18], 0
cmp byte [rsi + 0x30], r8b
jne 0x425aa9
mov rax, qword [rsi + 0x48]
test rax, rax
je 0x425ae5
mov rcx, qword [rsi + 0x38]
call rax
mov r8b, byte [r15 + 8]
mov qword [rsi + 0x40], 0
cmp byte [rsi + 0x58], r8b
jne 0x425b0a
mov rax, qword [rsi + 0x70]
test rax, rax
je 0x425b02
mov rcx, qword [rsi + 0x60]
call rax
mov qword [rsi + 0x68], 0
mov rcx, r13
mov edx, edi
mov r8, rbx
mov r9d, 1
call fcn.00478ca0
test rax, rax
je 0x425b8f
mov rcx, qword [rsp + 0x90]
mov rdx, qword [rsp + 0x98]
mov qword [rax + 0x18], rcx
mov qword [rax + 0x10], r14
mov qword [rax + 0x20], rdx
mov ecx, r12d
xor ecx, 0xf7
and ecx, r12d
mov edx, edi
not edx
mov ebp, ecx
not ebp
mov ebx, edx
and ebx, 0x17
and edi, 0xffffffe8
or edi, ebx
or edx, ebp
and ebp, 0x17
and ecx, 0xffffffe8
or ecx, ebp
xor ecx, edi
not edx
or edx, ecx
mov byte [rax + 8], dl
mov dword [r13 + 0x50], 0
cmp qword [r13 + 0x190], 0
je 0x425b96
xor edi, edi
mov rcx, r13
xor edx, edx
call fcn.00430650
jmp 0x425ba0
mov edi, 7
jmp 0x425ba0
mov dword [r13 + 0x54], 0xffffffff
xor edi, edi
mov eax, edi
add rsp, 0x28
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret