Function at 0x140047580
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rbp
mov qword [rax + 0x20], rsi
push rdi
sub rsp, 0x430
cmp dword [0x14012ca64], 3
movsxd rbp, dword [0x14012ca4c]
mov rdi, qword [0x14012ca68]
mov ebx, ebp
jne 0x1400477a3
mov ecx, ebx
mov qword [rax + 8], r14
call fcn.140049950
xor esi, esi
mov r14, rax
test rax, rax
je 0x1400475db
mov r8d, ebx
xor edx, edx
mov rcx, rax
call fcn.14004b300
mov byte [r14], sil
jmp 0x1400475de
mov r14, rsi
mov r8, rbp
sub r8, 1
js 0x140047621
mov rcx, rsi
lea rdx, [r8 + r14]
nop
movzx eax, byte [rcx + rdi]
inc rcx
mov byte [rdx], al
lea rdx, [rdx - 1]
cmp rcx, r8
jle 0x1400475f0
mov rcx, rdi
lea rdx, [r8 + 1]
sub r14, rdi
nop dword [rax]
movzx eax, byte [r14 + rcx]
mov byte [rcx], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x140047610
mov r14, qword [rsp + 0x440]
mov rdx, rsi
test ebp, ebp
je 0x1400476bd
cmp rbx, 0x40
jb 0x14004769f
movdqa xmm2, xmmword [str.iiiiiiiiiiiiiiii_]
mov rax, rbx
and rax, 0xffffffffffffffc0
nop dword [rax]
movdqu xmm0, xmmword [rdi + rdx]
movdqa xmm1, xmm2
pxor xmm0, xmm2
movdqu xmmword [rdi + rdx], xmm0
movdqu xmm0, xmmword [rdi + rdx + 0x10]
pxor xmm1, xmm0
movdqu xmmword [rdi + rdx + 0x10], xmm1
movdqu xmm0, xmmword [rdi + rdx + 0x20]
movdqa xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rdi + rdx + 0x20], xmm1
movdqu xmm0, xmmword [rdi + rdx + 0x30]
pxor xmm0, xmm2
movdqu xmmword [rdi + rdx + 0x30], xmm0
add rdx, 0x40
cmp rdx, rax
jb 0x140047650
cmp rdx, rbx
jae 0x1400476bd
mov rcx, rbx
lea rax, [rdx + rdi]
sub rcx, rdx
nop
xor byte [rax], 0x69
lea rax, [rax + 1]
sub rcx, 1
jne 0x1400476b0
lea rcx, str.jason
mov qword [rsp + 0x420], rsi
call qword [sym.imp.KERNEL32.dll_lstrlenW]
mov r8d, eax
lea rcx, [rsp + 0x20]
call fcn.140047ac0
test ebp, ebp
je 0x14004782d
mov r9d, dword [rsp + 0x424]
mov r8d, dword [rsp + 0x420]
nop word [rax + rax]
lea eax, [r8 + 1]
and eax, 0x800000ff
jge 0x140047714
dec eax
or eax, 0xffffff00
inc eax
movsxd r8, eax
mov dword [rsp + 0x420], eax
mov eax, dword [rsp + r8*4 + 0x20]
add eax, r9d
and eax, 0x800000ff
jge 0x140047736
dec eax
or eax, 0xffffff00
inc eax
mov dword [rsp + 0x424], eax
movzx edx, byte [rsp + r8*4 + 0x20]
movsxd rcx, eax
mov eax, dword [rsp + rcx*4 + 0x20]
mov dword [rsp + r8*4 + 0x20], eax
movsxd rax, dword [rsp + 0x424]
mov dword [rsp + rax*4 + 0x20], edx
movsxd r9, dword [rsp + 0x424]
movsxd r8, dword [rsp + 0x420]
mov edx, dword [rsp + r9*4 + 0x20]
add edx, dword [rsp + r8*4 + 0x20]
and edx, 0x800000ff
jge 0x140047787
dec edx
or edx, 0xffffff00
inc edx
movsxd rax, edx
movzx ecx, byte [rsp + rax*4 + 0x20]
xor byte [rdi], cl
inc rdi
sub rbx, 1
jne 0x140047700
jmp 0x14004782d
xor esi, esi
test ebp, ebp
je 0x14004782d
cmp rbx, 0x40
jb 0x140047811
movdqa xmm2, xmmword [str.iiiiiiiiiiiiiiii_]
mov rax, rbx
and rax, 0xffffffffffffffc0
movdqu xmm0, xmmword [rdi + rsi]
movdqa xmm1, xmm2
pxor xmm1, xmm0
movdqu xmmword [rdi + rsi], xmm1
movdqu xmm0, xmmword [rdi + rsi + 0x10]
movdqa xmm1, xmm2
pxor xmm0, xmm2
movdqu xmmword [rdi + rsi + 0x10], xmm0
movdqu xmm0, xmmword [rdi + rsi + 0x20]
pxor xmm1, xmm0
movdqu xmmword [rdi + rsi + 0x20], xmm1
movdqu xmm0, xmmword [rdi + rsi + 0x30]
pxor xmm0, xmm2
movdqu xmmword [rdi + rsi + 0x30], xmm0
add rsi, 0x40
cmp rsi, rax
jb 0x1400477c2
cmp rsi, rbx
jae 0x14004782d
lea rax, [rsi + rdi]
sub rbx, rsi
nop dword [rax]
xor byte [rax], 0x69
lea rax, [rax + 1]
sub rbx, 1
jne 0x140047820
lea r11, [rsp + 0x430]
mov rbx, qword [r11 + 0x18]
mov rbp, qword [r11 + 0x20]
mov rsi, qword [r11 + 0x28]
mov rsp, r11
pop rdi
ret