Function at 0x20374e80
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x78
mov r14, r9
mov rdi, r8
mov ebx, edx
mov rsi, rcx
mov eax, edx
and eax, 0x3f
cmp eax, 0xf
ja 0x20374ee8
nop word cs:[rax + rax]
cmp eax, 8
setae r13b
jb 0x20374f12
cmp eax, 0xa
jbe 0x20374f42
cmp eax, 0xb
je 0x20374f67
cmp eax, 0xd
ja 0x20374f73
je 0x20374fb7
mov esi, esi
mov ebx, 0x603e954e
mov eax, 0xe
jmp 0x20374eb0
lea r15, [0x20572590]
xor r13d, r13d
add eax, 0xfffffff0
lea rcx, [0x20437b58]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
mov ebx, 0x85ea5c05
xor r13d, r13d
jmp 0x203752d2
mov r15, r14
cmp eax, 2
ja 0x20375003
test eax, eax
je 0x2037521f
cmp eax, 2
jne 0x20375244
mov rcx, rdi
mov edx, r15d
call fcn.203cac30
mov r15, rdi
jmp case.0x20374f03.2
cmp eax, 8
je 0x20374fed
cmp eax, 0xa
jne 0x20375047
mov rcx, rsi
call fcn.200781e0
xor r13d, r13d
xor r15d, r15d
jmp case.0x20374f03.2
movzx r15d, sil
xor r13d, r13d
jmp case.0x20374f03.2
cmp eax, 0xf
jne 0x20374fd3
mov rdx, rdi
shr rdx, 0x20
mov qword [rsp + 0x70], r14
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x40], r14
cmp rsi, r14
jae 0x20375215
test bx, bx
js 0x2037531d
nop
mov qword [rsp + 0x38], 0
and al, 0x38
add byte [rax], al
add byte [rax], al
mov r9b, 1
mov ebp, esi
mov rax, rsi
jmp 0x203754c6
test edi, edi
je 0x2037543e
test bl, 0x40
jne 0x203751f6
xor r13d, r13d
xor r15d, r15d
jmp case.0x20374f03.2
nop
movzx eax, byte [0x2055a833]
xor r13d, r13d
cmp al, 0x66
mov ebp, esi
jne 0x20375756
jmp 0x2037553a
mov r15d, r14d
mov ebx, 0x4ec83244
mov eax, 4
cmp eax, 2
jbe case.default.0x20375014
add eax, 0xfffffffd
lea rcx, [0x20437b9c]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
nop
movzx eax, byte [0x2055a735]
lea rcx, [0x2055a720]
cmp al, 0x2a
je 0x2037503f
mov dl, 0x62
mov al, 0xc1
lock cmpxchg byte [0x2055a735], dl
je 0x203754b9
cmp al, 0x2a
jne 0x2037502b
mov r15, rcx
jmp case.0x20374f03.2
nop
mov r8, qword [rdi + 8]
test r8, r8
sete cl
movzx eax, byte [0x2055a162]
cmp al, 0x83
jne 0x20375265
lea rax, [rsp + 0x70]
mov ebp, esi
mov r9d, ecx
jmp 0x20375504
mov rcx, r14
call fcn.200786c0
mov r15d, eax
xor r13d, r13d
jmp case.0x20374f03.2
xor r13d, r13d
xor eax, eax
sub eax, dword [r14 - 4]
cdqe
lea r15, [r14 + rax]
add r15, 0xffffffffffffff68
mov rdx, r15
mov r8d, 0x1e446d6e
invalid
invalid
call fcn.20373cd0
test esi, esi
je case.0x20374f03.2
mov ebp, esi
jmp 0x20375803
mov r15d, 0xffffffff
xor r13d, r13d
jmp case.0x20374f03.2
xor r13d, r13d
lock dec dword [rdi + 8]
cmovne rdi, r13
mov r15, rdi
jmp case.0x20374f03.2
nop
movzx eax, byte [0x2055a789]
lea r15, [0x2055a780]
cmp al, 0x5b
jne 0x20375280
xor r13d, r13d
jmp case.0x20374f03.2
lea rax, [0x20413328]
mov qword [rsi], rax
mov rcx, rsi
call fcn.200a5960
lea rax, [0x204122e8]
mov qword [rsi], rax
mov r15, qword [rsi + 0x60]
xor r13d, r13d
test r15, r15
je 0x20375590
nop
mov rcx, qword [r15 + 8]
test rcx, rcx
je 0x20375449
nop
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c7fcc.0]
test rax, rax
ror byte [rdi], 0x84
sbb dword [rax + rax], eax
invalid
nop
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c7fcc.0]
sbb byte [rax], al
jmp 0x20375578
xor ecx, ecx
test edi, edi
je 0x203753a2
xor r13d, r13d
mov rcx, r14
call fcn.20077cc0
mov r15, r14
jmp case.0x20374f03.2
xor r13d, r13d
mov r15, r14
test esi, esi
je case.0x20374f03.2
mov rcx, r14
call fcn.20077cc0
mov r15, r14
jmp case.0x20374f03.2
nop
movzx eax, byte [0x2055a775]
xor r13d, r13d
cmp al, 0xf
jne 0x203759a2
jmp 0x203755ad
test r14d, r14d
je 0x203753fe
test ebx, 0x1000
jne 0x20375412
mov rcx, rsi
call fcn.20077cc0
xor r13d, r13d
mov ebp, esi
jmp 0x20375747
mov rcx, rsi
call fcn.20077cc0
xor r13d, r13d
test ebx, 0x100
mov r15, rsi
jne case.0x20374f03.2
jmp 0x203755b9
nop
mov dword [rsp + 0x20], edi
jmp 0x203752a4
nop
mov r8, qword [r15 + 0x38]
mov rdx, qword [r8]
test rdx, rdx
je 0x2037565c
test ebx, 0x400
jne 0x20375452
mov r15, rdx
jmp case.0x20374f03.2
lea rax, [0x204122e8]
mov qword [rdi], rax
mov r12, qword [rdi + 0x60]
test r12, r12
je 0x2037541f
mov r14, r15
mov ebp, esi
jmp 0x20375819
xor r13d, r13d
test ebx, 0x1000
jne 0x20375433
lea r12, [rsp + 0x58]
mov ebp, esi
jmp 0x20375726
mov cl, 0xb5
xor edx, edx
nop word cs:[rax + rax]
mov al, 0xab
lock cmpxchg byte [0x2055a789], cl
je 0x2037543a
cmp al, 0x5b
jne 0x20375290
mov ecx, edi
test ebx, 0x10000
je 0x203753ad
lea r15, [0x2055a780]
xor r13d, r13d
jmp case.0x20374f03.2
mov r14, r15
nop
mov qword [rsp + 0x68], rdi
mov qword [rsp + 0x50], rsi
mov qword [rsp + 0x60], r14
mov qword [rsp + 0x58], r14
mov qword [rsp + 0x48], rsi
mov qword [rsp + 0x30], 0
jmp 0x20375401
mov rcx, rsi
call fcn.203c91d8
xor r15d, r15d
jmp case.0x20374f03.2
mov cl, 1
lea rax, [rsp + 0x60]
xor r13d, r13d
mov edx, 0x6ea5ac46
mov r8d, 0x915a53ca
mov r9d, 1
mov r10d, 0x6ea5ac47
lea r11, [0x2055a150]
lea r15, [0x20437610]
nop dword [rax]
mov r12d, r8d
imul r12, r12, 0x38e38e39
shr r12, 0x22
add r12d, r12d
lea r12d, [r12 + r12*8]
lea ebp, [rdx + r12]
add r12d, r10d
movzx r12d, byte [r12 + r15]
xor r12b, 0x18
add byte [r9 + r11 - 1], r12b
movzx ebp, byte [rbp + r15]
xor bpl, 0x18
add byte [r9 + r11], bpl
add edx, 0xfffffffe
add r8d, 2
add r9, 2
add r10d, 0xfffffffe
cmp r9, 0x13
jne 0x20375350
jmp 0x20375519
test bl, 0x40
jne 0x20375469
xor edx, edx
nop
mov eax, dword [rsp + 0x20]
shl rdx, 0x20
or rdx, rax
je 0x203754b1
nop
mov rax, qword [rsp + 0x28]
lea r15, [0x2055a760]
test ebx, 0x1000
je 0x20375474
test ebx, 0x100
mov r8, qword [rsp + 0x40]
movzx r8d, byte [r8 + rdx - 1]
mov byte [rax + rdx - 1], r8b
je 0x20375106
dec rdx
jne 0x203753cc
jmp 0x203754b1
xor r13d, r13d
mov r15, rsi
test bl, 0x40
jne case.0x20374f03.2
jmp 0x203755e8
xor r13d, r13d
mov ebp, esi
xor r9d, r9d
jmp 0x20375786
mov r14, r15
test ebx, 0x100
jne case.0x20374f03.2
jmp 0x20375846
mov ebp, esi
jmp 0x2037579e
test bl, bl
js 0x20375481
xor r13d, r13d
mov r15, rsi
jmp case.0x20374f03.2
lea rdx, [r15 + 8]
jmp 0x20375910
nop
mov rcx, qword [r15 + 0x50]
cmp dword [rcx], 0
jg 0x203756db
lea rax, [r15 + 0x38]
jmp 0x20375936
xor r13d, r13d
mov r15, r14
jmp case.0x20374f03.2
nop
mov dword [rsp + 0x20], edx
xor r13d, r13d
jmp 0x203755fa
test ebx, 0x400
jne 0x203754b1
movabs rax, 0x24c6c0cc47f3d060
xor qword [0x2055a780], rax
xor byte [0x2055a788], 0xd5
add ch, dl
mov al, 0x5b
xchg byte [0x2055a789], al
xor r13d, r13d
jmp case.0x20374f03.2
xor r13d, r13d
jmp 0x2037585e
xor eax, eax
mov r14, r15
jmp 0x20375682
nop
ud2
nop
mov rcx, qword [rsp + 0x38]
mov r8, rdx
shl r8, 0x20
mov r10d, edi
or r10, r8
cmp rcx, r10
jae 0x20375514
test ebx, 0x800
je 0x20375532
nop
mov r8, qword [rsp + 0x40]
movzx r8d, byte [r8 + rcx]
mov r10, qword [rsp + 0x28]
mov byte [r10 + rcx], r8b
inc qword [rsp + 0x38]
xor r8d, r8d
xor ecx, ecx
test ebx, 0x4000
je 0x203754c6
xor r13d, r13d
jmp 0x20375963
xor r13d, r13d
xor ecx, ecx
test ebx, 0x200
jne 0x20375993
mov dl, 0x83
xchg byte [0x2055a162], dl
jmp 0x2037584e
xor r13d, r13d
jmp 0x20375786
test ebx, 0x200
je 0x20375560
mov cl, 0x3e
mov al, 0xad
lock cmpxchg byte [0x2055a756], cl
mov ebp, eax
mov ecx, edi
je 0x203755fa
cmp bpl, 0xe
jne 0x2037553a
jmp 0x2037556c
lea r15, [0x2055a830]
jmp case.0x20374f03.2
lea r15, [0x2055a740]
jmp case.0x20374f03.2
mov rcx, r15
call fcn.20077cc0
test ebx, 0x4000
jne 0x20375590
xor r15d, r15d
jmp case.0x20374f03.2
test edi, edi
je 0x20375441
test ebx, 0x400
je 0x203755ad
mov rcx, rsi
call fcn.20077cc0
jmp 0x20375441
lea r15, [0x2055a760]
jmp case.0x20374f03.2
nop
mov rax, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x30]
movzx eax, byte [rax + rcx]
mov rdx, qword [rsp + 0x58]
mov byte [rdx + rcx], al
test ebx, 0x2000
jne 0x2037556c
nop
inc qword [rsp + 0x30]
xor edx, edx
test bl, bl
js 0x2037590b
nop
mov rax, qword [rsp + 0x30]
cmp rax, qword [rsp + 0x68]
jb 0x203755b9
jmp 0x20375988
xor eax, eax
test ebx, 0x10000
je 0x2037560b
mov edi, ecx
jmp 0x203758ab
mov al, 0x2a
xchg byte [0x2055a735], al
lea r15, [0x2055a720]
jmp case.0x20374f03.2
nop
test byte [r15 + 0x70], 4
jne 0x2037565c
nop
mov r10, qword [r15 + 0x68]
cmp r10, r9
cmovb r10, r9
cmp r10, rdx
jbe 0x20375667
test ebx, 0x10000
je 0x203759c2
nop
mov qword [r15 + 0x68], r10
sub r10d, dword [r8]
mov dword [rcx], r10d
mov rax, qword [rax]
mov rdx, qword [rax]
xor eax, eax
mov r14, r15
jmp 0x2037567a
mov r15d, 0xffffffff
jmp case.0x20374f03.2
mov r15d, 0xffffffff
test bl, bl
js 0x203755ad
jmp case.0x20374f03.2
test ebx, 0x2000
je 0x203756db
lea ecx, [rax + 0x69f4e2c]
mov edx, 0xb21642c9
imul rdx, rcx
shr rdx, 0x24
lea ecx, [rdx + rdx*2]
shl ecx, 3
sub edx, ecx
lea ecx, [rax + rdx]
add ecx, 0x69f4e2c
cdqe
lea rdx, [0x2055a720]
movzx r8d, byte [rax + rdx]
lea r9, [0x20437a30]
sub r9, rcx
xor r8b, byte [r9 + 0x16]
xor r8b, 0x28
mov byte [rax + rdx], r8b
inc eax
xor edx, edx
cmp eax, 0x14
mov ecx, edi
jg 0x203755fa
jmp 0x2037567a
nop
movzx r15d, byte [rdx]
jmp case.0x20374f03.2
nop
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c7fcc.0]
test rax, rax
je 0x20375726
test ebx, 0x2000
je 0x2037571a
nop
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c7fcc.0]
jmp 0x20375726
lea r15, [0x2055a780]
jmp case.0x20374f03.2
mov rcx, r12
call fcn.20077cc0
test bx, bx
mov r15, r14
mov eax, ebp
jns 0x20375846
cmp al, 0x66
je 0x203757ca
mov r14, r15
mov r15, rsi
test ebx, 0x400
je case.0x20374f03.2
mov cl, 8
mov al, 0x8b
lock cmpxchg byte [0x2055a833], cl
jne 0x203757bf
test bl, 0x40
je 0x20375558
nop
xor byte [0x2055a830], 0xae
xor byte [0x2055a831], 0x64
xor byte [0x2055a832], 0xc3
xor r9d, r9d
mov al, 0x66
xchg byte [0x2055a833], al
lea r8, [rsp + 0x28]
test bl, bl
jns 0x20375560
mov ecx, r9d
mov dl, 0xc5
mov al, 0xfe
lock cmpxchg byte [0x2055a162], dl
je 0x203757f2
test ebx, 0x2000
je 0x2037576d
cmp al, 0x83
jne 0x203757a0
xor eax, eax
jmp 0x2037589f
mov r15, r14
cmp al, 0x66
jne 0x20375744
test ebx, 0x100
jne 0x20375560
lea rax, [rsp + 0x68]
lea r9, [rsp + 0x30]
lea rdx, [rsp + 0x38]
lea rcx, [rsp + 0x50]
mov r8, r9
jmp 0x20375627
lea r15, [rsp + 0x48]
test ebx, 0x100
je 0x20375888
mov rcx, r15
call fcn.20077cc0
lea r12, [rsp + 0x48]
test bl, 0x40
je case.0x20374f03.2
nop
mov rcx, qword [r12 + 8]
test rcx, rcx
je 0x20375835
test ebx, 0x200
jne 0x203756e5
jmp 0x203751a7
test ebx, 0x400
jne 0x20375726
jmp 0x20375189
xor eax, eax
test esi, esi
je 0x20375874
xor ecx, ecx
test ebx, 0x800
jne 0x2037586c
mov rcx, rdi
call fcn.20077cc0
test bl, bl
cmovns rdi, rsi
mov r15, rdi
jmp case.0x20374f03.2
mov r8, rax
jmp 0x20375963
mov r15, rdi
test ebx, 0x4000
jne case.0x20374f03.2
jmp 0x20375682
test bl, 0x40
jne 0x20375895
mov rax, r8
jmp 0x20375327
lea r15, [rsp + 0x50]
jmp 0x2037513a
test ebx, 0x400
jne 0x20375963
lea ecx, [rax + 0x19ea0aae]
mov edx, 0x86186187
imul rdx, rcx
shr rdx, 0x20
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 4
lea edx, [rcx + rcx*4]
lea ecx, [rcx + rdx*4]
neg ecx
add ecx, eax
add ecx, 0x19ea0aae
movsxd r9, eax
lea rdx, [0x2055a740]
lea rax, [0x20437a50]
movzx eax, byte [rcx + rax]
xor al, 0xda
add byte [r9 + rdx], al
lea eax, [r9 + 1]
xor r8d, r8d
xor ecx, ecx
cmp eax, 0x15
jle 0x2037589f
add rdx, r9
test bl, bl
jns 0x203755e8
lea r15, [rsp + 0x40]
test ebx, 0x100
jne 0x20375578
mov al, 0xe
xchg byte [0x2055a756], al
lea rax, [rsp + 0x28]
lea r8, [rsp + 0x50]
lea rcx, [rsp + 0x20]
mov r15, r14
lea r10, [0x2055a740]
test ebx, 0x800
jne 0x2037595b
nop
mov r9, qword [r15 + 0x40]
mov r9, qword [r9]
test r9, r9
je 0x20375976
test bx, bx
jns 0x2037561f
mov r15, r10
jmp case.0x20374f03.2
lea r15, [0x2055a150]
test cl, 1
cmove r15, r8
jmp case.0x20374f03.2
mov r15d, 0xffffffff
test ebx, 0x1000
je case.0x20374f03.2
nop
mov r15, qword [rsp + 0x60]
jmp case.0x20374f03.2
mov r15, rsi
test ebx, 0x2000
jne case.0x20374f03.2
mov cl, 0xf3
mov al, 0x1b
lock cmpxchg byte [0x2055a775], cl
je 0x203759c2
test bl, 0x40
jne 0x20375a80
cmp al, 0xf
jne 0x20375993
jmp 0x203755ad
mov ecx, 0xd31eb8f0
mov r8d, 0xd31eb8ef
xor r10d, r10d
movabs r11, 0x8618618618618619
lea rax, [0x20437a70]
mov esi, 0xd31eb8e8
add rsi, rax
lea r15, [0x2055a760]
mov rax, rcx
mul r11
mov r9, rdx
mov rax, r8
mul r11
mov rax, r8
sub rax, rdx
shr rax, 1
add rax, rdx
shr rax, 4
imul rax, rax, 0xffffffffffffffeb
add rax, rsi
movzx eax, byte [r10 + rax + 7]
xor al, 0x74
add byte [r10 + r15], al
cmp r10, 0x14
je 0x20375a5d
mov rax, rcx
sub rax, r9
shr rax, 1
add rax, r9
shr rax, 4
imul rax, rax, 0xffffffffffffffeb
add rax, rsi
add rax, 8
ror byte [rax], 0x42
movzx eax, byte [rax + rdx]
xor al, 0x74
add byte [r10 + r15 + 1], al
add r10, 2
add rcx, 2
add r8, 2
jmp 0x203759f0
mov al, 0xf
xchg byte [0x2055a775], al
xor eax, eax
test r13b, 1
cmove rax, r15
add rsp, 0x78
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov ecx, edi
jmp 0x203755fa