Function at 0x180021390
Capabilities:
Encode data using xor

Disassembly:
push rsi
push rdi
push rbx
sub rsp, 0x30
mov rsi, rcx
cmp qword [rcx + 0x20], 0
je 0x18002142c
movabs rdi, 0x100002600
nop
mov rcx, rsi
call fcn.180023c30
mov eax, dword [rsi + 0x14]
cmp rax, 0x20
ja 0x1800213f7
bt rdi, rax
jb 0x1800213b0
jmp 0x1800213f7
mov rcx, rsi
call fcn.180021660
test al, al
je 0x18002151e
mov rcx, rsi
call fcn.180023c30
mov eax, dword [rsi + 0x14]
cmp rax, 0x20
ja 0x1800213f7
bt rdi, rax
jb 0x1800213e0
cmp eax, 0x2f
jne 0x180021402
cmp byte [rsi + 0x10], 0
jne 0x1800213d0
inc eax
cmp eax, 0x7e
ja case.0x18002141b.1
lea rcx, [0x180044c4c]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
mov rcx, rsi
add rsp, 0x30
pop rbx
pop rdi
pop rsi
jmp 0x180023430
mov rcx, rsi
call fcn.180023c30
cmp eax, 0xef
jne 0x18002152b
mov rcx, rsi
call fcn.180023c30
cmp eax, 0xbb
jne 0x180021461
mov rcx, rsi
call fcn.180023c30
cmp eax, 0xbf
je 0x1800213a5
cmp byte [0x1800520ee], 0
jne 0x180021509
mov rax, qword [0x1800509c0]
movabs r8, 0x1cd3f9678a29b089
add r8, rax
movabs r9, 0x1cd3f9678a29b072
add r9, rax
xor ecx, ecx
movabs r10, 0x642c8590b21642c9
lea r11, [0x1800520c1]
nop word cs:[rax + rax]
mov rax, rcx
mul r10
mov rax, rcx
sub rax, rdx
shr rax, 1
add rax, rdx
shr rax, 4
imul rax, rax, 0xffffffffffffffe9
add rax, r9
movzx edx, byte [r8 + rcx]
movzx eax, byte [rcx + rax]
not dl
mov ebx, eax
and bl, dl
or dl, al
mov eax, ebx
xor al, 0xe5
mov edi, edx
xor dil, 0x1a
xor bl, 0x1a
and bl, dil
xor dl, 0xe5
and dl, al
or dl, bl
mov byte [rcx + r11], dl
inc rcx
cmp rcx, 0x2d
jne 0x1800214b0
mov byte [0x1800520ee], 1
movabs rax, 0x1cd3f9678a299cd7
add rax, qword [0x1800509c8]
mov qword [rsi + 0x70], rax
mov eax, 0xe
add rsp, 0x30
pop rbx
pop rdi
pop rsi
ret
mov byte [rsi + 0x18], 1
dec qword [rsi + 0x20]
mov rax, qword [rsi + 0x28]
test rax, rax
je 0x180021542
lea rcx, [rsi + 0x28]
jmp 0x18002154f
mov rax, qword [rsi + 0x30]
test rax, rax
je 0x180021555
lea rcx, [rsi + 0x30]
dec rax
mov qword [rcx], rax
cmp dword [rsi + 0x14], 0xffffffff
je 0x1800213a5
dec qword [rsi + 0x40]
jmp 0x1800213a5
mov eax, 0xf
jmp 0x180021523
movabs rcx, 0x1cd3f9678a29b0cb
add rcx, qword [0x1800509c0]
call fcn.180039320
movabs rax, 0x1cd3f9678a299cd7
add rax, qword [0x1800509e8]
jmp 0x18002151a
mov rcx, rsi
add rsp, 0x30
pop rbx
pop rdi
pop rsi
jmp fcn.180021980
mov eax, 0xd
jmp 0x180021523
mov eax, 0xc
jmp 0x180021523
mov eax, 8
jmp 0x180021523
mov eax, 0xa
jmp 0x180021523
mov byte [rsp + 0x24], 0x65
mov dword [rsp + 0x20], 0x736c6166
lea rdx, [rsp + 0x20]
mov r8d, 5
mov rcx, rsi
mov r9d, 2
call fcn.1800218f0
jmp 0x180021523
mov dword [rsp + 0x28], 0x6c6c756e
lea rdx, [rsp + 0x28]
mov r8d, 4
mov rcx, rsi
mov r9d, 3
call fcn.1800218f0
jmp 0x180021523
mov dword [rsp + 0x2c], 0x65757274
lea rdx, [rsp + 0x2c]
mov r8d, 4
mov rcx, rsi
mov r9d, 1
call fcn.1800218f0
jmp 0x180021523
mov eax, 9
jmp 0x180021523
mov eax, 0xb
jmp 0x180021523
push rbp
push r14
push rsi
push rdi
push rbx
sub rsp, 0x40
lea rbp, [rsp + 0x40]
mov qword [rbp - 8], 0xfffffffffffffffe
mov rsi, rcx
lea rdi, [rcx + 0x50]
mov qword [rcx + 0x60], 0
cmp qword [rcx + 0x68], 0x10
mov rax, rdi
jb 0x180023464
mov rax, qword [rsi + 0x50]
mov byte [rax], 0
mov rdx, qword [rsi + 0x38]
cmp rdx, qword [rsi + 0x40]
je 0x180023475
mov qword [rsi + 0x40], rdx
movzx eax, byte [rsi + 0x14]
mov byte [rbp - 9], al
cmp rdx, qword [rsi + 0x48]
je 0x18002348a
mov byte [rdx], al
inc qword [rsi + 0x40]
jmp 0x180023497
lea rcx, [rsi + 0x38]
lea r8, [rbp - 9]
call fcn.180023d20
mov r9d, dword [rsi + 0x14]
lea eax, [r9 - 0x31]
cmp eax, 9
jae 0x1800234e8
mov rax, qword [rsi + 0x60]
mov rcx, qword [rsi + 0x68]
cmp rax, rcx
jae 0x1800234d1
lea rdx, [rax + 1]
mov qword [rsi + 0x60], rdx
mov rdx, rdi
cmp rcx, 0x10
jb 0x1800234c6
mov rdx, qword [rsi + 0x50]
mov byte [rdx + rax], r9b
mov byte [rdx + rax + 1], 0
jmp 0x1800234de
mov edx, 1
mov rcx, rdi
call fcn.1800130c0
mov ebx, 5
jmp 0x1800235cd
cmp r9d, 0x30
je 0x18002351e
cmp r9d, 0x2d
jne 0x18002355f
mov rax, qword [rsi + 0x60]
mov rcx, qword [rsi + 0x68]
cmp rax, rcx
jae 0x18002354f
lea rdx, [rax + 1]
mov qword [rsi + 0x60], rdx
mov rdx, rdi
cmp rcx, 0x10
jb 0x180023516
mov rdx, qword [rsi + 0x50]
mov word [rdx + rax], 0x2d
jmp 0x18002355f
mov rax, qword [rsi + 0x60]
mov rcx, qword [rsi + 0x68]
cmp rax, rcx
jae 0x1800239d7
lea rdx, [rax + 1]
mov qword [rsi + 0x60], rdx
mov rdx, rdi
cmp rcx, 0x10
jb 0x180023544
mov rdx, qword [rsi + 0x50]
mov word [rdx + rax], 0x30
jmp 0x1800239e7
mov edx, 1
mov rcx, rdi
mov r9b, 0x2d
call fcn.1800130c0
mov rcx, rsi
call fcn.180023c30
lea ecx, [rax - 0x31]
cmp ecx, 9
jae 0x180023bc7
movzx r9d, byte [rsi + 0x14]
mov rax, qword [rsi + 0x60]
mov rcx, qword [rsi + 0x68]
cmp rax, rcx
jae 0x1800235aa
lea rdx, [rax + 1]
mov qword [rsi + 0x60], rdx
mov rdx, rdi
cmp rcx, 0x10
jb 0x18002359a
mov rdx, qword [rsi + 0x50]
mov byte [rdx + rax], r9b
mov byte [rdx + rax + 1], 0
mov ebx, 6
jmp 0x1800235cd
mov edx, 1
mov rcx, rdi
call fcn.1800130c0
mov ebx, 6
jmp 0x1800235cd
mov edx, 1
mov rcx, rdi
call fcn.1800130c0
mov rcx, rsi
call fcn.180023c30
lea ecx, [rax - 0x30]
cmp ecx, 0xa
jae 0x18002360f
movzx r9d, byte [rsi + 0x14]
mov rax, qword [rsi + 0x60]
mov rcx, qword [rsi + 0x68]
cmp rax, rcx
jae 0x1800235c0
lea rdx, [rax + 1]
mov qword [rsi + 0x60], rdx
mov rdx, rdi
cmp rcx, 0x10
jb 0x180023604
mov rdx, qword [rsi + 0x50]
mov byte [rdx + rax], r9b
mov byte [rdx + rax + 1], 0
jmp 0x1800235cd
cmp eax, 0x2e
je 0x180023a0f
cmp eax, 0x45
je 0x180023626
cmp eax, 0x65
jne 0x1800236cd
movzx r9d, byte [rsi + 0x14]
mov rax, qword [rsi + 0x60]
mov rcx, qword [rsi + 0x68]
cmp rax, rcx
jae 0x180023658
lea rdx, [rax + 1]
mov qword [rsi + 0x60], rdx
mov rdx, rdi
cmp rcx, 0x10
jb 0x18002364d
mov rdx, qword [rsi + 0x50]
mov byte [rdx + rax], r9b
mov byte [rdx + rax + 1], 0
jmp 0x180023665
mov edx, 1
mov rcx, rdi
call fcn.1800130c0
mov rcx, rsi
call fcn.180023c30
lea ecx, [rax - 0x30]
cmp ecx, 0xa
jae 0x18002380d
movzx r9d, byte [rsi + 0x14]
mov rax, qword [rsi + 0x60]
mov rcx, qword [rsi + 0x68]
cmp rax, rcx
jae 0x1800236ab
lea rdx, [rax + 1]
mov qword [rsi + 0x60], rdx
mov rdx, rdi
cmp rcx, 0x10
jb 0x1800236a0
mov rdx, qword [rsi + 0x50]
mov byte [rdx + rax], r9b
mov byte [rdx + rax + 1], 0
jmp 0x1800236b8
mov edx, 1
mov rcx, rdi
call fcn.1800130c0
mov rcx, rsi
call fcn.180023c30
add eax, 0xffffffd0
mov ebx, 7
cmp eax, 9
jbe 0x18002370d
mov byte [rsi + 0x18], 1
dec qword [rsi + 0x20]
mov rax, qword [rsi + 0x28]
test rax, rax
je 0x18002373f
lea rcx, [rsi + 0x28]
jmp 0x18002374c
mov edx, 1
mov rcx, rdi
call fcn.1800130c0
mov rcx, rsi
call fcn.180023c30
add eax, 0xffffffd0
cmp eax, 0xa
jae 0x1800236cd
movzx r9d, byte [rsi + 0x14]
mov rax, qword [rsi + 0x60]
mov rcx, qword [rsi + 0x68]
cmp rax, rcx
jae 0x1800236f0
lea rdx, [rax + 1]
mov qword [rsi + 0x60], rdx
mov rdx, rdi
cmp rcx, 0x10
jb 0x180023734
mov rdx, qword [rsi + 0x50]
mov byte [rdx + rax], r9b
mov byte [rdx + rax + 1], 0
jmp 0x1800236fd
mov rax, qword [rsi + 0x30]
test rax, rax
je 0x180023752
lea rcx, [rsi + 0x30]
dec rax
mov qword [rcx], rax
cmp dword [rsi + 0x14], 0xffffffff
je 0x18002375c
dec qword [rsi + 0x40]
mov qword [rbp - 0x18], 0
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__errno]
mov dword [rax], 0
cmp ebx, 6
je 0x1800237b7
cmp ebx, 5
jne 0x1800237e3
cmp qword [rsi + 0x68], 0x10
mov rcx, rdi
jb 0x180023788
mov rcx, qword [rsi + 0x50]
lea rdx, [rbp - 0x18]
mov r8d, 0xa
call qword [sym.imp.api_ms_win_crt_convert_l1_1_0.dll_strtoull]
mov rbx, rax
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__errno]
cmp dword [rax], 0
jne 0x1800237e3
mov qword [rsi + 0x80], rbx
mov eax, 5
jmp 0x180023bbc
cmp qword [rsi + 0x68], 0x10
mov rcx, rdi
jb 0x1800237c5
mov rcx, qword [rsi + 0x50]
lea rdx, [rbp - 0x18]
mov r8d, 0xa
call qword [sym.imp.api_ms_win_crt_convert_l1_1_0.dll_strtoll]
mov rbx, rax
call qword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__errno]
cmp dword [rax], 0
je 0x180023850
cmp qword [rsi + 0x68], 0x10
jb 0x1800237ee
mov rdi, qword [rsi + 0x50]
lea rdx, [rbp - 0x18]
mov rcx, rdi
call qword [sym.imp.api_ms_win_crt_convert_l1_1_0.dll_strtod]
movsd qword [rsi + 0x88], xmm0
mov eax, 7
jmp 0x180023bbc
cmp eax, 0x2d
je 0x180023817
cmp eax, 0x2b
jne 0x18002385e
movzx r9d, byte [rsi + 0x14]
mov rax, qword [rsi + 0x60]
mov rcx, qword [rsi + 0x68]
cmp rax, rcx
jae 0x1800238fc
lea rdx, [rax + 1]
mov qword [rsi + 0x60], rdx
mov rdx, rdi
cmp rcx, 0x10
jb 0x180023842
mov rdx, qword [rsi + 0x50]
mov byte [rdx + rax], r9b
mov byte [rdx + rax + 1], 0
jmp 0x180023909
mov qword [rsi + 0x78], rbx
mov eax, 6
jmp 0x180023bbc
cmp byte [0x180052c85], 0
jne 0x1800238e6
mov rax, qword [0x180050b70]
movabs r8, 0x539dc6cd94f3df6e
add r8, rax
movabs r9, 0x539dc6cd94f3df5a
add r9, rax
xor ecx, ecx
movabs r10, 0xcccccccccccccccd
lea r11, [0x180052c4a]
nop dword [rax + rax]
mov rax, rcx
mul r10
shr rdx, 2
and rdx, 0xfffffffffffffffc
lea rax, [rdx + rdx*4]
mov rdx, r9
sub rdx, rax
movzx eax, byte [r8 + rcx]
movzx edx, byte [rdx + rcx]
mov ebx, edx
xor dl, al
xor al, 0x85
xor bl, 0x7a
or bl, al
and dl, al
not bl
or bl, dl
mov byte [rcx + r11], bl
inc rcx
cmp rcx, 0x3b
jne 0x1800238a0
mov byte [0x180052c85], 1
movabs rax, 0x539dc6cd94f3b85d
add rax, qword [0x180050b88]
jmp 0x180023bb3
mov edx, 1
mov rcx, rdi
call fcn.1800130c0
mov rcx, rsi
call fcn.180023c30
add eax, 0xffffffd0
cmp eax, 0xa
jb 0x180023679
cmp byte [0x180052cb9], 0
jne 0x1800239c1
mov rax, qword [0x180050b70]
movabs r8, 0x539dc6cd94f3dfda
add r8, rax
movabs r9, 0x539dc6cd94f3dfc1
add r9, rax
xor ecx, ecx
movabs r10, 0x47ae147ae147ae15
lea r11, [0x180052c86]
nop
mov rax, rcx
mul r10
mov rax, rcx
sub rax, rdx
shr rax, 1
add rax, rdx
shr rax, 4
imul rax, rax, 0xffffffffffffffe7
add rax, r9
movzx eax, byte [rcx + rax]
mov edx, eax
and dl, 0x7b
or dl, 0x80
mov ebx, eax
and bl, 0x84
xor bl, dl
mov edx, eax
xor dl, 0x84
xor al, 0x7b
or al, dl
xor bl, 4
mov edx, ebx
xor dl, al
or bl, al
not bl
or bl, dl
xor bl, byte [r8 + rcx]
xor bl, 0x7b
mov byte [rcx + r11], bl
inc rcx
cmp rcx, 0x33
jne 0x180023960
mov byte [0x180052cb9], 1
movabs rax, 0x539dc6cd94f3b85d
add rax, qword [0x180050b90]
jmp 0x180023bb3
mov edx, 1
mov rcx, rdi
mov r9b, 0x30
call fcn.1800130c0
mov ebx, 5
mov rcx, rsi
call fcn.180023c30
cmp eax, 0x65
je 0x180023626
cmp eax, 0x45
je 0x180023626
cmp eax, 0x2e
jne 0x1800236cd
movzx r9d, byte [rsi + 0x90]
mov rax, qword [rsi + 0x60]
mov rcx, qword [rsi + 0x68]
cmp rax, rcx
jae 0x180023a44
lea rdx, [rax + 1]
mov qword [rsi + 0x60], rdx
mov rdx, rdi
cmp rcx, 0x10
jb 0x180023a39
mov rdx, qword [rsi + 0x50]
mov byte [rdx + rax], r9b
mov byte [rdx + rax + 1], 0
jmp 0x180023a51
mov edx, 1
mov rcx, rdi
call fcn.1800130c0
mov rcx, rsi
call fcn.180023c30
add eax, 0xffffffd0
cmp eax, 9
jbe 0x180023b4d
cmp byte [0x180052c49], 0
jne 0x180023ba2
mov rax, qword [0x180050b70]
movabs r10, 0x539dc6cd94f3df1d
add r10, rax
movabs r11, 0x539dc6cd94f3df0d
add r11, rax
movabs rdi, 0x539dc6cd94f3df0c
add rdi, rax
mov ecx, 1
xor r8d, r8d
movabs rbx, 0xf0f0f0f0f0f0f0f1
lea r14, [0x180052c20]
nop dword [rax]
mov rax, rcx
mul rbx
mov r9, rdx
mov rax, r8
mul rbx
mov rax, rdx
shr rax, 4
and rdx, 0xfffffffffffffff0
add rdx, rax
mov rax, rdi
sub rax, rdx
movzx eax, byte [rax + r8]
xor al, byte [r10 + r8]
mov byte [r8 + r14], al
cmp r8, 0x28
je 0x180023b9b
mov rax, r9
shr rax, 4
and r9, 0xfffffffffffffff0
add r9, rax
mov rax, r11
sub rax, r9
movzx eax, byte [rax + r8]
xor al, byte [r10 + r8 + 1]
mov byte [r8 + r14 + 1], al
add r8, 2
add rcx, 2
jmp 0x180023ac0
mov edx, 1
mov rcx, rdi
call fcn.1800130c0
mov rcx, rsi
call fcn.180023c30
lea ecx, [rax - 0x30]
cmp ecx, 0xa
jae 0x180023b7f
movzx r9d, byte [rsi + 0x14]
mov rax, qword [rsi + 0x60]
mov rcx, qword [rsi + 0x68]
cmp rax, rcx
jae 0x180023b30
lea rdx, [rax + 1]
mov qword [rsi + 0x60], rdx
mov rdx, rdi
cmp rcx, 0x10
jb 0x180023b74
mov rdx, qword [rsi + 0x50]
mov byte [rdx + rax], r9b
mov byte [rdx + rax + 1], 0
jmp 0x180023b3d
cmp eax, 0x45
je 0x180023626
cmp eax, 0x65
je 0x180023626
mov ebx, 7
jmp 0x1800236cd
mov byte [0x180052c49], 1
movabs rax, 0x539dc6cd94f3b85d
add rax, qword [0x180050b80]
mov qword [rsi + 0x70], rax
mov eax, 0xe
add rsp, 0x40
pop rbx
pop rdi
pop rsi
pop r14
pop rbp
ret
cmp eax, 0x30
jne 0x180023be1
mov edx, dword [rsi + 0x14]
mov rcx, rsi
call fcn.180023ed0
mov ebx, 6
jmp 0x1800239ec
movabs rcx, 0x539dc6cd94f3deb2
add rcx, qword [0x180050b70]
call fcn.18003a4d0
movabs rax, 0x539dc6cd94f3b85d
add rax, qword [0x180050b78]
jmp 0x180023bb3