Function at 0x5101a0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xc8
movaps xmmword [rsp + 0xb0], xmm6
mov dword [rsp + 0x84], r9d
mov qword [rsp + 0x90], r8
mov qword [rsp + 0x68], rdx
mov qword [rsp + 0x58], rcx
mov rax, qword [rcx]
mov qword [rsp + 0x60], rax
mov rax, qword [rax + 0x30]
mov rcx, rax
xor rcx, 0xffffffffffffbfff
test rcx, rax
je 0x5101fb
mov rax, qword [rsp + 0x68]
cmp byte [rax + 0x3f], 0
je 0x510217
movaps xmm6, xmmword [rsp + 0xb0]
add rsp, 0xc8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rax, qword [rsp + 0x58]
mov al, byte [rax + 0xd7]
mov byte [rsp + 0x53], al
mov r13, qword [rsp + 0x68]
mov rcx, qword [r13 + 0x60]
mov rax, qword [rsp + 0x60]
mov rax, qword [rax + 0x20]
test rcx, rcx
je 0x5102bf
lea rdx, [rax + 0x18]
mov edi, 0xffffffff
xor ebp, ebp
nop dword [rax]
add rbp, 1
add edi, 1
lea rbx, [rdx + 0x20]
cmp qword [rdx], rcx
mov rdx, rbx
jne 0x510250
mov r8, qword [rsp + 0x130]
mov r15, qword [r13 + 0x48]
test r15, r15
jne 0x5102d5
mov rbp, qword [r13]
mov rsi, qword [rcx + 0x60]
test rsi, rsi
je 0x510a01
mov bl, byte [rbp]
test bl, bl
je 0x510a0b
lea rdx, [rbp + 1]
xor eax, eax
lea rdi, [0x005fade0]
nop dword [rax]
movzx ebx, bl
movzx ebx, byte [rbx + rdi]
add ebx, eax
imul eax, ebx, 0x9e3779b1
movzx ebx, byte [rdx]
add rdx, 1
test bl, bl
jne 0x5102a0
jmp 0x510a0d
mov edi, 0xffff8000
mov r8, qword [rsp + 0x130]
mov r15, qword [r13 + 0x48]
test r15, r15
je 0x510274
mov dword [rsp + 0x54], edi
movsxd rcx, edi
shl rcx, 5
mov qword [rsp + 0xa8], rcx
mov r12, qword [rax + rcx]
mov rax, qword [rsp + 0x90]
add eax, 1
mov dword [rsp + 0x98], eax
lea rsi, [0x005fade0]
mov qword [rsp + 0x88], r12
jmp 0x510322
mov r15, qword [r15 + 8]
test r15, r15
mov r13, qword [rsp + 0x68]
je 0x5109ec
mov qword [rsp + 0x78], 0
mov qword [rsp + 0x70], 0
test r8, r8
je 0x510390
mov rax, qword [r13]
mov rdi, qword [r15 + 0x10]
test rax, rax
je 0x5106c0
test rdi, rdi
mov r14, qword [rsp + 0x58]
je 0x5106ce
xor ecx, ecx
jmp 0x510372
movzx edx, byte [rdx + rsi]
cmp dl, byte [rbp + rsi]
jne 0x5106ce
add rcx, 1
movzx edx, byte [rax + rcx]
movzx ebp, byte [rdi + rcx]
cmp dl, bpl
jne 0x510360
test dl, dl
jne 0x51036e
jmp 0x510399
mov rdi, qword [r15 + 0x10]
mov r14, qword [rsp + 0x58]
mov esi, dword [rsp + 0x54]
cmp byte [r14 + 0xd7], 0
je 0x5103d0
mov rcx, qword [rsp + 0x60]
mov rdx, rdi
mov r8, r12
call fcn.00426380
mov rbp, rax
test rax, rax
jne 0x5103e8
jmp 0x51040d
mov rcx, r14
xor edx, edx
mov r8, rdi
mov r9, r12
call fcn.004190c0
mov rbp, rax
test rax, rax
je 0x51040d
lea rax, [rsp + 0x70]
mov qword [rsp + 0x20], rax
mov rcx, r14
mov rdx, rbp
mov r8, r15
lea r9, [rsp + 0x78]
call fcn.005134a0
test eax, eax
je 0x510771
cmp byte [rsp + 0x53], 0
je 0x510760
test rbp, rbp
setne dl
sete r9b
mov rax, qword [rsp + 0x60]
cmp byte [rax + 0x67], 0
setne al
sete bl
xor ecx, ecx
cmp al, dl
mov r8, qword [rsp + 0x130]
jne 0x5109c4
or bl, r9b
xor bl, 1
lea rsi, [0x005fade0]
jne 0x510744
mov rcx, r14
call fcn.004c6120
mov r12, rax
mov eax, dword [rax + 0x90]
mov ecx, dword [r15 + 0x28]
test ecx, ecx
jle 0x510666
lea r13d, [rax + rcx]
add r13d, 1
xor r14d, r14d
jmp 0x5104ca
lea ecx, [rax + 1]
mov dword [r12 + 0x90], ecx
mov rcx, qword [r12 + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x32
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], r13d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
add r14, 1
movsxd rax, dword [r15 + 0x28]
cmp r14, rax
jge 0x51065e
mov rax, r14
shl rax, 4
mov edx, dword [r15 + rax + 0x40]
mov r9, qword [r15]
mov eax, dword [r9 + 0x30]
mov ecx, eax
xor ecx, 0xffffffdf
test ecx, eax
je 0x510613
test dx, dx
js 0x510613
mov r11, qword [r9 + 8]
movzx esi, word [r11 + 0x12]
and esi, 0x20
test dx, dx
je 0x510530
mov eax, edx
shl eax, 0x10
movsx r10d, dx
test r10d, r10d
mov ecx, 1
cmovle r10d, ecx
mov r8, r10
xor r8, 0xfffffffffffffffe
cmp eax, 0x20000
jge 0x51053a
xor edi, edi
xor edx, edx
jmp 0x5105d1
xor r10d, r10d
xor edx, edx
jmp 0x510603
mov ebp, r10d
xor ebp, 0x80000001
and ebp, r10d
lea rax, [r11 + 0x42]
xor edi, edi
xor ebx, ebx
mov rcx, rbp
nop word cs:[rax + rax]
nop dword [rax + rax]
movzx edx, si
shr edx, 5
mov esi, edx
not esi
and esi, 1
and edx, 0xfffffffe
or edx, esi
add ebx, edx
mov edx, edi
and edx, 1
mov rsi, rdi
xor rsi, 1
or rsi, rdx
lea rdx, [rsi + rsi*2]
movzx esi, word [r11 + rdx*8 + 0x12]
shr esi, 5
mov edx, esi
xor edx, 0x7fe
and edx, esi
mov esi, edx
not esi
and esi, 0x220a
and edx, 0x5f5
or edx, esi
xor edx, 0x220b
add edx, ebx
add rdi, 2
movzx ebx, word [rax]
mov esi, ebx
xor esi, 0xffffffdf
and esi, ebx
add rcx, 0xfffffffffffffffe
add rax, 0x30
mov ebx, edx
cmp rbp, rdi
jne 0x510560
test r8d, r10d
je 0x510603
lea rax, [rdi + rdi*2]
movzx eax, word [r11 + rax*8 + 0x2a]
movzx ecx, si
mov esi, eax
xor esi, 0xffffffdf
and esi, eax
shr ecx, 5
mov eax, ecx
not eax
and eax, 0x4fd0
and ecx, 0x2f
or ecx, eax
xor ecx, 0x4fd1
add edx, ecx
test si, si
je 0x510613
sub r10d, edx
add r10w, word [r9 + 0x38]
mov edx, r10d
movsx r8d, dx
add r8d, dword [rsp + 0x98]
movsxd rax, dword [r12 + 0x90]
cmp dword [r12 + 0x94], eax
jg 0x510480
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x32
mov r9d, r13d
call fcn.0047df60
add r14, 1
movsxd rax, dword [r15 + 0x28]
cmp r14, rax
jl 0x5104ca
mov eax, dword [r12 + 0x90]
movzx r8d, byte [r15 + 0x2c]
cmp dword [r12 + 0x94], eax
jle 0x51086f
lea ecx, [rax + 1]
mov dword [r12 + 0x90], ecx
mov rcx, qword [r12 + 0x88]
cdqe
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x9e
mov dword [rcx + rax*8 + 4], r8d
mov edx, 0xffffffff
mov qword [rcx + rax*8 + 8], rdx
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x51088a
test rdi, rdi
mov r14, qword [rsp + 0x58]
je 0x510399
mov eax, dword [r15 + 0x28]
test eax, eax
jle 0x510740
shl rax, 4
xor ecx, ecx
xor edx, edx
cmp dword [rsp + 0x138], 0
je 0x510720
movsxd rbp, dword [r15 + rcx + 0x40]
cmp dword [r8 + rbp*4], 0
jns 0x510399
movsx ebx, word [r13 + 0x34]
cmp ebp, ebx
je 0x510399
add rdx, 1
add rcx, 0x10
cmp rax, rcx
jne 0x5106f0
jmp 0x510740
movsxd rbp, dword [r15 + rcx + 0x40]
cmp dword [r8 + rbp*4], 0
jns 0x5109e2
add rdx, 1
add rcx, 0x10
cmp rax, rcx
jne 0x510720
nop dword [rax]
xor eax, eax
xor ecx, ecx
xor al, 1
test cl, al
je 0x5109d5
jmp 0x510310
mov al, 1
xor ecx, ecx
mov r8, qword [rsp + 0x130]
jmp 0x5109c4
mov r12, qword [rsp + 0x70]
test r12, r12
je 0x510893
cmp dword [r15 + 0x28], 0
jle 0x5108b1
mov r14, qword [rsp + 0x78]
xor edi, edi
xor ebx, ebx
test r14, r14
jne 0x5107b1
jmp 0x510821
add rdi, 1
movsxd rax, dword [r15 + 0x28]
cmp rdi, rax
jge 0x5108b3
movsx eax, word [r13 + 0x34]
cmp dword [r12 + rdi*4], eax
jne 0x5107c4
mov dword [r12 + rdi*4], 0xffffffff
mov rax, qword [rsp + 0x60]
cmp qword [rax + 0x1f8], 0
je 0x5107a0
mov rdx, qword [rbp]
mov rax, qword [rbp + 8]
mov rcx, qword [r14 + 8]
movsx rcx, word [rcx + rdi*2]
lea rcx, [rcx + rcx*2]
mov r8, qword [rax + rcx*8]
mov rcx, qword [rsp + 0x58]
mov r9d, esi
call fcn.004da600
xor ebx, ebx
cmp eax, 2
sete bl
jmp 0x5107a0
add rdi, 1
movsxd rax, dword [r15 + 0x28]
cmp rdi, rax
jge 0x5108b3
movsx eax, word [r13 + 0x34]
cmp dword [r12 + rdi*4], eax
jne 0x510834
mov dword [r12 + rdi*4], 0xffffffff
mov rax, qword [rsp + 0x60]
cmp qword [rax + 0x1f8], 0
mov rcx, qword [rsp + 0x58]
je 0x510810
mov rdx, qword [rbp]
mov rax, qword [rbp + 8]
movsx rbx, word [rbp + 0x34]
lea rbx, [rbx + rbx*2]
mov r8, qword [rax + rbx*8]
mov r9d, esi
call fcn.004da600
xor ebx, ebx
cmp eax, 2
sete bl
jmp 0x510810
mov dword [rsp + 0x20], 0
mov rcx, r12
mov edx, 0x9e
mov r9d, 0xffffffff
call fcn.0047df60
xor eax, eax
xor ecx, ecx
jmp 0x5109b4
mov eax, dword [r15 + 0x40]
mov dword [rsp + 0xa4], eax
lea r12, [rsp + 0xa4]
cmp dword [r15 + 0x28], 0
jg 0x51078a
xor ebx, ebx
cmp esi, 1
mov rsi, qword [rsp + 0x58]
je 0x5108f3
mov rax, qword [rsi]
mov rax, qword [rax + 0x20]
mov rcx, qword [rsp + 0xa8]
mov rax, qword [rax + rcx + 8]
cmp byte [rax + 0x11], 0
je 0x5108f3
mov r8d, dword [rbp + 0x28]
mov rax, qword [rbp]
mov qword [rsp + 0x20], rax
mov rcx, rsi
mov edx, dword [rsp + 0x54]
xor r9d, r9d
call fcn.004c63a0
add dword [rsi + 0x34], 1
mov rax, qword [rsp + 0x90]
test eax, eax
mov edi, dword [rsp + 0x84]
je 0x510938
mov r9, qword [rsp + 0x78]
mov dword [rsp + 0x40], ebx
mov dword [rsp + 0x30], eax
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], r15
mov dword [rsp + 0x38], 0xffffffff
mov rcx, rsi
mov edx, dword [rsp + 0x54]
mov r8, rbp
call fcn.00513950
test edi, edi
je 0x5109a1
mov rax, qword [rsi + 0xa0]
test rax, rax
cmove rax, rsi
mov rax, qword [rax + 0xb0]
test rax, rax
je 0x510973
mov rax, qword [rax]
cmp rax, qword [r15 + 0x30]
jne 0x510966
cmp byte [r15 + 0x2d], 8
je 0x5109a1
cmp rax, qword [r15 + 0x38]
jne 0x510973
cmp byte [r15 + 0x2e], 8
je 0x5109a1
mov r9, qword [rsp + 0x78]
mov dword [rsp + 0x40], ebx
mov dword [rsp + 0x30], edi
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], r15
mov dword [rsp + 0x38], 1
mov rcx, rsi
mov edx, dword [rsp + 0x54]
mov r8, rbp
call fcn.00513950
mov rdx, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x60]
call fcn.00408130
mov al, 1
mov cl, 1
mov r8, qword [rsp + 0x130]
mov r12, qword [rsp + 0x88]
lea rsi, [0x005fade0]
xor al, 1
test cl, al
jne 0x510310
xor cl, al
jne 0x510310
jmp 0x5101fb
mov r13, qword [rsp + 0x68]
jmp 0x510399
mov rcx, qword [r13 + 0x60]
mov rbp, qword [r13]
mov rsi, qword [rcx + 0x60]
test rsi, rsi
jne 0x510285
lea rdx, [rcx + 0x54]
add rcx, 0x58
jmp 0x510a21
xor eax, eax
xor edx, edx
div dword [rcx + 0x50]
shl rdx, 4
lea rcx, [rsi + rdx]
add rcx, 8
add rdx, rsi
mov r9d, dword [rdx]
lea r10, [0x0213b3c8]
test r9d, r9d
je 0x510a7a
lea rbx, [0x005fade0]
mov rcx, qword [rcx]
add r9d, 0xffffffff
mov rdi, qword [rcx + 0x18]
xor esi, esi
jmp 0x510a5d
movzx eax, byte [rax + rbx]
cmp al, byte [rdx + rbx]
jne 0x510a70
add rsi, 1
movzx eax, byte [rdi + rsi]
movzx edx, byte [rbp + rsi]
cmp al, dl
jne 0x510a50
test al, al
jne 0x510a59
jmp 0x510a77
test r9d, r9d
jne 0x510a37
jmp 0x510a7a
mov r10, rcx
mov rdi, qword [r10 + 0x10]
test rdi, rdi
je 0x5101fb
movabs rax, 0xec1652235a467cab
xor ecx, ecx
test r8, r8
setne cl
mov qword [rsp + 0x98], rcx
mov r13d, eax
not r13d
or r13d, eax
lea r12, [rsp + 0x70]
lea r14, [rsp + 0x78]
movabs r15, 0x100000001
xorps xmm6, xmm6
jmp 0x510afc
mov qword [rbp + 0x18], 0
mov rcx, qword [rsp + 0x60]
mov rdx, rbp
call fcn.004688d0
mov rdx, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x60]
call fcn.00408130
mov r8, qword [rsp + 0x130]
mov rdi, qword [rdi + 0x18]
test rdi, rdi
je 0x5101fb
mov qword [rsp + 0x78], 0
mov qword [rsp + 0x70], 0
test r8, r8
je 0x510b34
mov rcx, qword [rsp + 0x68]
mov rdx, rdi
mov r9d, dword [rsp + 0x138]
call fcn.0050eab0
mov r8, qword [rsp + 0x130]
test eax, eax
je 0x510aef
cmp byte [rdi + 0x2c], 0
jne 0x510b70
mov rax, qword [rsp + 0x60]
mov eax, dword [rax + 0x30]
and eax, r13d
test eax, 0x80000
jne 0x510b70
mov rax, qword [rsp + 0x58]
cmp qword [rax + 0xa0], 0
jne 0x510b70
mov rax, qword [rsp + 0x58]
cmp byte [rax + 0x20], 0
je 0x510aef
nop
mov qword [rsp + 0x20], r12
mov rsi, qword [rsp + 0x58]
mov rcx, rsi
mov rdx, qword [rsp + 0x68]
mov r8, rdi
mov r9, r14
call fcn.005134a0
test eax, eax
je 0x510bc0
cmp byte [rsp + 0x53], 0
je 0x5101fb
mov rax, qword [rsp + 0x60]
cmp byte [rax + 0x67], 0
mov r8, qword [rsp + 0x130]
je 0x510aef
jmp 0x5101fb
mov rcx, qword [rsi]
mov edx, 0x70
call fcn.00429840
test rax, rax
mov rsi, qword [rsp + 0x90]
je 0x510ad8
mov rbp, rax
mov qword [rax], r15
movups xmmword [rax + 8], xmm6
movups xmmword [rax + 0x18], xmm6
movups xmmword [rax + 0x28], xmm6
movups xmmword [rax + 0x38], xmm6
movups xmmword [rax + 0x48], xmm6
movups xmmword [rax + 0x58], xmm6
mov qword [rax + 0x68], 0
mov qword [rax + 0x10], 0
mov rax, qword [rdi]
mov qword [rbp + 0x28], rax
mov rcx, qword [rax]
mov qword [rbp + 0x18], rcx
add dword [rax + 0x2c], 1
mov rcx, qword [rsp + 0x58]
mov eax, dword [rcx + 0x34]
lea edx, [rax + 1]
mov dword [rcx + 0x34], edx
mov dword [rbp + 0x4c], eax
mov edx, dword [rsp + 0x84]
test edx, edx
je 0x510c67
mov rax, qword [rsp + 0x70]
mov r9, qword [rsp + 0x78]
mov dword [rsp + 0x30], edx
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rdi
mov dword [rsp + 0x38], 0xffffffff
mov rdx, rbp
mov r8, qword [rsp + 0x68]
call fcn.00514e60
test esi, esi
je 0x510ac3
mov rax, qword [rsp + 0x98]
movzx ebx, byte [rdi + rax + 0x2d]
mov r9, qword [rsp + 0x78]
mov rax, qword [rsp + 0x70]
mov dword [rsp + 0x30], esi
mov qword [rsp + 0x28], rax
mov qword [rsp + 0x20], rdi
mov dword [rsp + 0x38], 1
mov rcx, qword [rsp + 0x58]
mov rdx, rbp
mov r8, qword [rsp + 0x68]
call fcn.00514e60
mov eax, ebx
xor al, 2
and al, bl
cmp al, 8
je 0x510ac3
cmp byte [rdi + 0x2c], 0
jne 0x510ac3
mov al, 1
test al, al
je 0x510ac3
mov rcx, qword [rsp + 0x58]
mov rax, qword [rcx + 0xa0]
test rax, rax
cmove rax, rcx
mov byte [rax + 0x21], 1
jmp 0x510ac3