Function at 0x14002093c
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x68
lea rbp, [rsp + 0x60]
mov r13, r8
mov qword [rbp], rdx
mov rsi, rcx
mov eax, 0x10
call fcn.140074a70
sub rsp, rax
mov qword [rbp - 0x20], rsp
mov eax, 0x10
call fcn.140074a70
sub rsp, rax
mov qword [rbp - 8], rsp
mov eax, 0x10
call fcn.140074a70
sub rsp, rax
mov qword [rbp - 0x10], rsp
mov eax, 0x10
call fcn.140074a70
sub rsp, rax
mov qword [rbp - 0x28], rsp
mov eax, 0x20
call fcn.140074a70
sub rsp, rax
mov r12, rsp
test r8, r8
js 0x140021162
mov qword [rbp - 0x40], rsi
jne 0x1400209d9
movabs rcx, 0xce667071ad3a254
lea rax, [rcx + 1]
xor rax, rcx
xor ecx, ecx
xor r14d, r14d
jmp 0x140020ac8
mov al, byte [0x1400a5058]
sub rsp, 0x20
xor ecx, ecx
mov rdx, r13
call fcn.14004fc65
add rsp, 0x20
test rax, rax
je 0x140021162
movabs rcx, 0x3168ae0169752eea
lea rdx, [rcx + 0x10]
xor rdx, rcx
cmp r13, rdx
jae 0x140020a1b
xor r14d, r14d
mov rcx, r13
jmp 0x140020ac8
movabs rcx, 0xcc7f5de1ca41f1ac
movabs rdx, 0x86307a7776c86a08
movabs r9, 0x15476a8e744681ad
lea r8, [r9 + 0x10]
xor r8, r9
mov r11d, 0x10
xor r9d, r9d
movabs r10, 0x8080808080808080
mov r14, r9
mov r9, r11
mov r11, qword [rbp]
add r11, r14
mov dil, 1
xor esi, esi
xor ebx, ebx
or rsi, qword [r11 + rbx*8]
mov ebx, 1
test dil, 1
mov edi, 0
jne 0x140020a67
test rsi, r10
jne 0x140020a13
add r14, rax
xor esi, esi
lea rdi, [rdx + 1]
xor rdi, rdx
add rdi, rsi
mov bl, byte [r11 + rsi]
lea r15d, [rbx - 0x41]
cmp r15b, 0x1a
setb r15b
shl r15b, 5
or r15b, bl
mov byte [r14 + rsi], r15b
lea rbx, [rcx + 0x10]
xor rbx, rcx
mov rsi, rdi
cmp rdi, rbx
jne 0x140020a85
lea r11, [r9 + r8]
cmp r11, r13
jbe 0x140020a53
mov rcx, r13
mov r14, r9
mov qword [r12], rcx
mov qword [r12 + 8], rax
mov qword [r12 + 0x10], r14
cmp r14, r13
je 0x140021134
mov rax, qword [rbp]
lea rcx, [rax + r13]
mov qword [rbp - 0x30], rcx
movabs r15, 0xdbbcd3b7cb9c2556
movabs rdi, 0x98fa46fd5dd19412
lea r8, [rax + r14]
mov rax, qword [rbp - 0x28]
add rax, 2
mov qword [rbp - 0x48], rax
mov rax, qword [rbp - 0x20]
add rax, 2
mov qword [rbp - 0x38], rax
xor ebx, ebx
lea r9, [0x1400901b4]
mov qword [rbp - 0x18], r13
mov qword [rbp - 0x50], r12
movzx esi, byte [r8]
test sil, sil
js 0x140020b3b
lea rax, [r8 + 1]
jmp 0x140020ba6
mov eax, esi
and eax, 0x1f
movzx edx, byte [r8 + 1]
and edx, 0x3f
cmp sil, 0xdf
jbe 0x140020b88
movzx ecx, byte [r8 + 2]
shl edx, 6
and ecx, 0x3f
or ecx, edx
cmp sil, 0xf0
jb 0x140020b98
movzx esi, byte [r8 + 3]
and eax, 7
shl eax, 0x12
shl ecx, 6
and esi, 0x3f
or esi, ecx
or esi, eax
cmp esi, 0x110000
je 0x140021134
lea rax, [r8 + 4]
jmp 0x140020ba6
lea rcx, [r8 + 2]
shl eax, 6
or eax, edx
mov esi, eax
mov rax, rcx
jmp 0x140020ba6
lea rdx, [r8 + 3]
shl eax, 0xc
or ecx, eax
mov rax, rdx
mov esi, ecx
cmp esi, 0x3a3
mov qword [rbp - 0x60], r8
mov qword [rbp - 0x58], rax
je 0x140020be0
cmp esi, 0x110000
je 0x140021134
cmp esi, 0x80
jae 0x140020c09
lea eax, [rsi - 0x41]
xor ecx, ecx
cmp al, 0x1a
setb cl
shl ecx, 5
or ecx, esi
mov esi, ecx
jmp 0x140020cfb
mov r15, rbx
add r15, r14
je 0x140020d54
cmp r15, r13
jae 0x140020d4e
mov rax, qword [rbp]
cmp byte [rax + r15], 0xbf
jg 0x140020d54
jmp 0x140021162
mov edx, 0x57f
xor eax, eax
lea ecx, [r15 + 1]
xor ecx, r15d
mov r8, rdx
shr r8, cl
mov rcx, rax
add rax, r8
cmp dword [r9 + rax*8], esi
cmova rax, rcx
sub rdx, r8
lea rcx, [rdi + 1]
xor rcx, rdi
cmp rdx, rcx
ja 0x140020c10
mov ecx, dword [r9 + rax*8]
cmp ecx, esi
adc rax, 0
cmp ecx, esi
jne 0x140020cef
movabs rdx, 0x3ea6876dee7230c9
lea rcx, [rdx + 0x4ed]
xor rcx, rdx
cmp rax, rcx
jae 0x140021162
mov esi, dword [r9 + rax*8 + 4]
mov eax, esi
xor eax, 0xd800
add eax, 0xffef0000
cmp eax, 0xffef0800
setb al
cmp esi, 0x110000
sete cl
or cl, al
mov eax, 0x69
cmovne esi, eax
je 0x140020cef
cmp esi, 0x80
jae 0x140020f15
mov r15, qword [r12 + 0x10]
cmp r15, qword [r12]
jne 0x140020cbe
sub rsp, 0x20
mov rcx, r12
call fcn.140021179
add rsp, 0x20
mov rax, qword [r12 + 8]
mov byte [rax + r15], sil
movabs rcx, 0xe1dba812fbf90ca8
lea rax, [rcx + 1]
xor rax, rcx
add rax, r15
mov qword [r12 + 0x10], rax
movabs r15, 0xdbbcd3b7cb9c2556
jmp 0x1400210f5
cmp esi, 0x80
jae 0x140020ea1
mov r15, qword [r12 + 0x10]
cmp r15, qword [r12]
jne 0x140020d1d
sub rsp, 0x20
mov rcx, r12
call fcn.140021179
lea r9, [0x1400901b4]
add rsp, 0x20
mov rax, qword [r12 + 8]
mov byte [rax + r15], sil
movabs rcx, 0xed422d2e36909f6a
lea rax, [rcx + 1]
xor rax, rcx
add rax, r15
mov qword [r12 + 0x10], rax
movabs r15, 0xdbbcd3b7cb9c2556
jmp 0x14002111f
jne 0x140021162
mov rax, qword [rbp]
lea r13, [rax + r15]
xor eax, eax
mov sil, 0xc3
cmp r13, qword [rbp]
je 0x140020e60
movzx r12d, byte [r13 - 1]
test r12b, r12b
js 0x140020d7a
dec r13
jmp 0x140020de0
mov cl, byte [r13 - 2]
cmp cl, 0xc0
jge 0x140020da8
mov dl, byte [r13 - 3]
cmp dl, 0xc0
jge 0x140020db4
movzx r8d, byte [r13 - 4]
add r13, 0xfffffffffffffffc
and r8d, 7
shl r8d, 6
and dl, 0x3f
movzx edx, dl
or edx, r8d
jmp 0x140020dbe
add r13, 0xfffffffffffffffe
and cl, 0x1f
movzx ecx, cl
jmp 0x140020dc9
add r13, 0xfffffffffffffffd
and dl, 0xf
movzx edx, dl
shl edx, 6
and cl, 0x3f
movzx ecx, cl
or ecx, edx
shl ecx, 6
and r12d, 0x3f
or r12d, ecx
cmp r12d, 0x110000
je 0x140020e60
test al, al
jne 0x140020e02
sub rsp, 0x20
mov ecx, r12d
call fcn.140043864
add rsp, 0x20
test al, al
je 0x140020e02
mov r12d, 0x110000
xor eax, eax
jmp 0x140020e04
mov al, 1
cmp r12d, 0x110000
je 0x140020d5e
sub rsp, 0x20
mov ecx, r12d
call fcn.140047f89
add rsp, 0x20
test al, al
mov r13, qword [rbp - 0x18]
je 0x140020e64
movabs rcx, 0xc32a4bb4e3235dc0
lea rax, [rcx + 2]
xor rax, rcx
add r15, rax
je 0x140020f59
cmp r15, r13
jae 0x140020f53
mov rax, qword [rbp]
cmp byte [rax + r15], 0xbf
jg 0x140020f59
jmp 0x140021162
mov r13, qword [rbp - 0x18]
mov rdx, qword [rbp - 0x28]
mov dword [rdx], 0xcf
and sil, 3
or sil, 0x80
mov byte [rdx + 1], sil
sub rsp, 0x20
mov r12, qword [rbp - 0x50]
mov rcx, r12
mov r8, qword [rbp - 0x48]
call fcn.14002153c
add rsp, 0x20
movabs r15, 0xdbbcd3b7cb9c2556
jmp 0x140021118
mov rax, qword [rbp - 0x10]
mov dword [rax], 0
mov eax, esi
cmp esi, 0x800
jae 0x140020edb
shr eax, 6
or al, 0xc0
mov rcx, qword [rbp - 0x10]
mov byte [rcx], al
mov rdx, qword [rbp - 0x10]
and sil, 0x3f
or sil, 0x80
mov byte [rdx + 1], sil
mov r8d, 2
jmp 0x14002106b
cmp esi, 0x10000
jae 0x140021036
shr eax, 0xc
or al, 0xe0
mov rdx, qword [rbp - 0x10]
mov byte [rdx], al
mov eax, esi
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [rdx + 1], al
and sil, 0x3f
or sil, 0x80
mov byte [rdx + 2], sil
mov r8d, 3
jmp 0x14002106b
mov rax, qword [rbp - 8]
mov dword [rax], 0
mov eax, esi
cmp esi, 0x800
jae 0x14002107a
shr eax, 6
or al, 0xc0
mov rcx, qword [rbp - 8]
mov byte [rcx], al
mov rdx, qword [rbp - 8]
and sil, 0x3f
or sil, 0x80
mov byte [rdx + 1], sil
mov r8d, 2
jmp 0x1400210e2
jne 0x140021162
add r15, qword [rbp]
xor eax, eax
mov sil, 0xc2
cmp r15, qword [rbp - 0x30]
je 0x140020e64
movzx r12d, byte [r15]
test r12b, r12b
js 0x140020f7a
inc r15
jmp 0x140020fea
mov ecx, r12d
and ecx, 0x1f
movzx r8d, byte [r15 + 1]
and r8d, 0x3f
cmp r12b, 0xdf
jbe 0x140020fcf
movzx edx, byte [r15 + 2]
shl r8d, 6
and edx, 0x3f
or edx, r8d
cmp r12b, 0xf0
jb 0x140020fde
movzx r12d, byte [r15 + 3]
and ecx, 7
shl ecx, 0x12
shl edx, 6
and r12d, 0x3f
or r12d, edx
or r12d, ecx
cmp r12d, 0x110000
je 0x140020e64
add r15, 4
jmp 0x140020fea
add r15, 2
shl ecx, 6
or ecx, r8d
mov r12d, ecx
jmp 0x140020fea
add r15, 3
shl ecx, 0xc
or edx, ecx
mov r12d, edx
test al, al
jne 0x14002100c
sub rsp, 0x20
mov ecx, r12d
call fcn.140043864
add rsp, 0x20
test al, al
je 0x14002100c
mov r12d, 0x110000
xor eax, eax
jmp 0x14002100e
mov al, 1
cmp r12d, 0x110000
je 0x140020f5f
sub rsp, 0x20
mov ecx, r12d
call fcn.140047f89
add rsp, 0x20
mov esi, eax
or sil, 0xc2
jmp 0x140020e64
shr eax, 0x12
or al, 0xf0
mov rdx, qword [rbp - 0x10]
mov byte [rdx], al
mov eax, esi
shr eax, 0xc
and al, 0x3f
or al, 0x80
mov byte [rdx + 1], al
mov eax, esi
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [rdx + 2], al
and sil, 0x3f
or sil, 0x80
mov byte [rdx + 3], sil
mov r8d, 4
add r8, rdx
sub rsp, 0x20
mov rcx, r12
jmp 0x14002110f
cmp esi, 0x10000
jae 0x1400210ad
shr eax, 0xc
or al, 0xe0
mov rdx, qword [rbp - 8]
mov byte [rdx], al
mov eax, esi
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [rdx + 1], al
and sil, 0x3f
or sil, 0x80
mov byte [rdx + 2], sil
mov r8d, 3
jmp 0x1400210e2
shr eax, 0x12
or al, 0xf0
mov rdx, qword [rbp - 8]
mov byte [rdx], al
mov eax, esi
shr eax, 0xc
and al, 0x3f
or al, 0x80
mov byte [rdx + 1], al
mov eax, esi
shr eax, 6
and al, 0x3f
or al, 0x80
mov byte [rdx + 2], al
and sil, 0x3f
or sil, 0x80
mov byte [rdx + 3], sil
mov r8d, 4
add r8, rdx
sub rsp, 0x20
mov rcx, r12
call fcn.14002153c
add rsp, 0x20
mov rdx, qword [rbp - 0x20]
mov dword [rdx], 0
mov word [rdx], 0x87cc
sub rsp, 0x20
mov rcx, r12
mov r8, qword [rbp - 0x38]
call fcn.14002153c
add rsp, 0x20
lea r9, [0x1400901b4]
sub rbx, qword [rbp - 0x60]
mov r8, qword [rbp - 0x58]
add rbx, r8
cmp r8, qword [rbp - 0x30]
jne 0x140020b2c
mov rax, qword [r12 + 0x10]
mov rcx, qword [rbp - 0x40]
mov qword [rcx + 0x10], rax
mov rax, qword [r12]
mov qword [rcx], rax
mov rax, qword [r12 + 8]
mov qword [rcx + 8], rax
lea rsp, [rbp + 8]
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
ud2