Function at 0x203793c0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x88
mov rsi, r9
mov rax, qword [0x20562ac8]
xor rax, rsp
mov qword [rsp + 0x80], rax
mov r9d, esi
nop dword [rax + rax]
mov rbx, r8
mov r15d, edx
mov rdi, rcx
mov eax, edx
and eax, 0x1f
cmp eax, 0xd
jae 0x20379440
cmp eax, 6
jae 0x2037953f
cmp eax, 3
jae 0x20379520
test eax, eax
je 0x2037958d
mov edx, 0x5f04e51
mov rcx, rbx
mov r8, rdi
cmp eax, 2
jne case.default.0x2037946a
jmp 0x203795ba
cmp eax, 0x14
jb 0x203794e7
mov edx, 0x8a5574c2
mov rcx, rbx
mov r8, r9
cmp eax, 0x17
je case.default.0x2037946a
add eax, 0xffffffec
lea rcx, [0x20438134]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
lea rax, [0x20413328]
mov qword [rbx], rax
mov rcx, rbx
call fcn.200a5960
lea rax, [0x204122e8]
mov qword [rbx], rax
mov r14, qword [rbx + 0x60]
test r14, r14
je 0x203798a3
lea r12, [r14 + 8]
mov rcx, qword [r14 + 8]
mov ebp, esi
test rcx, rcx
je 0x20379809
test r15d, 0x2000
jne 0x20379d10
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c7fcc.0]
test rax, rax
je 0x20379809
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c7fcc.0]
jmp 0x20379809
cmp eax, 0xd
jne 0x20379569
xor eax, eax
sub eax, dword [rbx - 4]
cdqe
lea r14, [rbx + rax]
add r14, 0xffffffffffffff68
mov rcx, r14
call fcn.200a9d70
test esi, esi
je 0x203797ae
test r15d, 0x200
jne 0x203796c2
jmp 0x203795ae
je 0x2037967d
cmp eax, 4
jne case.0x2037946a.2
mov rcx, rsi
call fcn.203caca8
xor r14d, r14d
jmp case.0x20379558.2
invalid
add byte [rcx - 0x42], al
mov r14d, 0xffffffff
add eax, 0xfffffffa
mov ebp, esi
lea rcx, [0x20438150]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
mov rcx, rsi
mov edx, edi
call fcn.200a9aa0
jmp 0x20379c5e
cmp eax, 0x10
jbe 0x203796cf
cmp eax, 0x11
je 0x2037994f
cmp eax, 0x12
jne 0x20379976
movzx r14d, sil
jmp case.0x20379558.2
movzx eax, byte [0x2055e1c9]
cmp al, 0x34
jne 0x20379709
lea r14, [rsp + 0x78]
test r15d, 0x200
jne 0x203796c2
lea r14, [0x2055e1c0]
jmp case.0x20379558.2
movzx eax, byte [0x2055e1b5]
cmp al, 0x8a
jne 0x2037975e
test r15d, 0x2000
jne 0x20379b66
lea r14, [rsp + 0x70]
jmp 0x20379eb5
movzx eax, byte [0x2055e196]
cmp al, 0x89
jne 0x203799a0
mov ebp, esi
test r15d, 0x100
je 0x20379760
jmp 0x20379c55
mov r14d, 0xffffffff
jmp case.0x20379558.2
mov rcx, rdi
call fcn.203c9238
xor r14d, r14d
jmp case.0x20379558.2
lea rax, [0x204122e8]
mov qword [rsi], rax
mov r14, qword [rsi + 0x60]
test r14, r14
je 0x20379ebd
mov rcx, qword [r14 + 8]
test rcx, rcx
je 0x20379eb5
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c7fcc.0]
test rax, rax
je 0x20379ea8
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c7fcc.0]
test r15b, r15b
jns 0x20379eb5
jmp case.0x2037946a.3
mov rax, qword [rsi + 0x38]
mov r12, qword [rax]
test r12, r12
je 0x20379865
lea rcx, [rsi + 0x38]
mov ebp, esi
mov rdx, qword [rsi + 0x50]
cmp dword [rdx], 0
jle 0x2037981e
test r15d, 0x4000
jne 0x20379a4c
test r15d, 0x1000
je 0x20379e9d
xor r9d, r9d
jmp 0x20379a5e
mov rcx, r14
call fcn.20077cc0
jmp case.0x20379558.2
cmp eax, 0xe
jbe 0x203797d9
cmp eax, 0x10
jne 0x203799c5
test esi, esi
je 0x20379f01
lea r8, [rsp + 0x70]
lea rdx, [rsp + 0x38]
lea r12, [rsp + 0x68]
lea rax, [rsp + 0x78]
lea rcx, [rsp + 0x50]
mov ebp, esi
jmp 0x20379834
test r15d, 0x2000
je 0x20379f12
mov dl, 0x94
lea rcx, [rsp + 0x50]
lea r12, [rsp + 0x40]
lea r8, [rsp + 0x58]
lea r14, [0x2055e1c0]
mov al, 0x23
lock cmpxchg byte [0x2055e1c9], dl
je 0x20379a09
test r15d, 0x100
jne 0x20379a10
cmp al, 0x34
je case.0x20379558.2
test r15b, 0x20
jne 0x2037972e
jmp 0x203799a0
mov ebp, esi
mov cl, 0x13
lea r10, [rsp + 0x50]
mov edx, r15d
and edx, 0x400
mov al, 0x12
lock cmpxchg byte [0x2055e1b5], cl
je 0x20379b72
test r15d, 0x4000
je 0x2037987f
cmp al, 0x8a
je 0x20379795
test edx, edx
jne 0x20379770
cmp al, 0x8a
lea rax, [0x2055e1a0]
lea r14, [0x2055e1c0]
cmove r14, rax
jmp case.0x20379558.2
test r15b, 0x40
je case.0x20379558.2
test r15d, 0x1000
je 0x20379ed2
mov al, 0x8a
xchg byte [0x2055e1b5], al
lea r14, [0x2055e1a0]
jmp case.0x20379558.2
mov r10, qword [rsi + 8]
test r10, r10
sete r11b
movzx eax, byte [0x2055e242]
cmp al, 0x7d
jne 0x20379e5b
test r15b, 0x20
je 0x20379e7b
lea r14, [rsp + 0x58]
lea r12, [rsp + 0x78]
mov ebp, esi
mov rcx, r14
call fcn.20077cc0
lea rcx, [rsp + 0x40]
lea rdx, [rsp + 0x50]
mov rax, rdx
test r15b, 0x40
jne 0x203798a3
mov r8, qword [rsi + 0x40]
mov r8, qword [r8]
test r8, r8
je 0x203799d1
test r15d, 0x200
jne 0x203799a7
mov rcx, rbx
call fcn.20077cc0
test r15d, 0x100
je 0x20379b24
test r15w, r15w
jns 0x20379ddf
jmp 0x2037991c
mov r9d, 0xffffffff
test r15b, 0x20
je 0x20379a5e
lea r14, [rsp + 0x48]
jmp case.0x20379558.2
xor r11d, r11d
jmp 0x20379f1c
movzx eax, byte [0x2055e175]
cmp al, 0xf4
jne 0x203799e5
test r15d, 0x4000
jne 0x20379e14
test edi, edi
je 0x203798b7
mov rcx, rbx
call fcn.20077cc0
mov r14, rbx
jmp case.0x20379558.2
lea rdx, [rsp + 0x70]
lea rax, [rsp + 0x48]
lea rcx, [rsp + 0x20]
lea rsi, [rsp + 0x50]
lea r10, [rsp + 0x58]
test r15d, 0x10000
jne 0x20379a3d
jmp 0x20379b24
test esi, esi
jne 0x20379c88
test byte [rdi], 0x85
sahf
add eax, dword [rax]
add byte [rcx - 0x77], cl
inc byte [rcx - 9]
mov dword [rax], 0xf000001
test dword [rdi + 3], esp
add byte [rax], al
mov r14, rdi
test r15d, 0x100
jne case.0x20379558.2
jmp 0x20379e3d
mov qword [rsp + 0x78], rdi
mov qword [rsp + 0x70], rbx
mov qword [rsp + 0x68], rsi
mov qword [rsp + 0x60], rsi
cmp rbx, rsi
jbe 0x203799f7
mov qword [rsp + 0x58], 0
add byte [rax], al
test r15d, 0x400
je 0x20379e20
lea r10, [rsp + 0x40]
xor r11d, r11d
jmp 0x20379e6b
xor r14d, r14d
lock dec dword [rsi + 8]
cmove r14, rsi
jmp case.0x20379558.2
mov qword [rsp + 0x50], rdi
mov qword [rsp + 0x38], rsi
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x48], rbx
mov qword [rsp + 0x40], rsi
mov qword [rsp + 0x20], 0
jmp 0x20379ed2
test esi, esi
je 0x20379a04
test r15b, 0x40
jne 0x203799a0
mov rcx, rbx
call fcn.20077cc0
test r15b, 0x20
lea r14, [0x2055e1a0]
cmovne r14, rbx
jmp case.0x20379558.2
mov ebp, esi
jmp 0x20379b87
test byte [rsi + 0x70], 4
je 0x20379a16
mov r9d, 0xffffffff
test r15d, 0x800
je 0x203797b8
jmp 0x20379a5e
lock inc dword [rsi + 8]
xor r14d, r14d
jmp case.0x20379558.2
mov r9d, 0xffffffff
test r15d, 0x2000
je 0x20379a5e
jmp 0x20379e20
test r15d, 0x800
je 0x20379cc3
jmp 0x20379ed2
mov qword [rsp + 0x28], rdi
mov rax, rdi
jmp 0x20379b2c
xor r9d, r9d
jmp 0x20379a51
mov ebp, esi
jmp 0x20379c90
mov rdx, r12
mov rax, rcx
mov r9d, 0xffffffff
mov r10, qword [rsi + 0x68]
cmp r10, r8
cmovb r10, r8
cmp r10, r12
jbe 0x20379a5e
add rsi, 0x68
test r15d, 0x10000
je 0x20379b24
mov qword [rsi], r10
sub r10d, dword [rax]
mov dword [rdx], r10d
mov rax, qword [rcx]
mov r12, qword [rax]
mov esp, dword [rax]
mov esp, dword [rax]
movzx r9d, byte [r12]
mov r14, rbx
test r15w, r15w
js case.0x20379558.2
mov r14, r9
jmp case.0x20379558.2
ud2
lea r10, [0x204380c0]
lea r11, [r10 + 0x74d24cae]
add r10, 0x74d24cad
mov ecx, 0x74d24cae
mov r8d, 0x74d24cad
movabs r12, 0x8618618618618619
lea r13, [0x2055e1a0]
lea r14, [0x2055e160]
mov rax, rcx
mul r12
mov r9, rdx
mov rax, r8
mul r12
mov rax, r8
sub rax, rdx
shr rax, 1
add rax, rdx
shr rax, 4
imul rax, rax, 0xffffffffffffffeb
movzx eax, byte [r10 + rax]
xor al, 9
add byte [rcx + r13 - 0x74d24cae], al
cmp rcx, 0x74d24cc2
je 0x203797b8
test r15d, 0x20000
jne case.0x20379558.2
mov rax, rcx
sub rax, r9
shr rax, 1
add rax, r9
shr rax, 4
imul rax, rax, 0xffffffffffffffeb
movzx eax, byte [r11 + rax]
xor al, 9
add byte [rcx + r13 - 0x74d24cad], al
add r11, 2
add rcx, 2
add r10, 2
add r8, 2
jmp 0x20379aa0
mov r14, rbx
jmp case.0x20379558.2
test rax, rax
je 0x20379e51
test r15d, 0x4000
jne 0x20379c98
movzx ecx, byte [rbx + rax - 1]
mov rdx, qword [rsp + 0x60]
mov byte [rdx + rax - 1], cl
mov rax, qword [rsp + 0x28]
dec rax
mov qword [rsp + 0x28], rax
test r15d, 0x10000
je 0x20379b2c
lea r14, [0x2055e1a0]
jmp case.0x20379558.2
test r15d, 0x200
je case.0x2037946a.3
cmp al, 0x89
je 0x20379c34
mov cl, 3
mov al, 0x7d
lock cmpxchg byte [0x2055e196], cl
jne 0x20379b72
test r15b, r15b
js 0x20379b50
test r15d, 0x800
jne 0x20379c48
xor byte [0x2055e180], 0xde
mov eax, 0x10e976a1
mov ecx, 0xef168974
mov edx, 2
mov r8d, 0x10e976a0
mov r9d, 0xba2e8ba3
lea r10, [0x2055e180]
lea r11, [0x204380a0]
mov r14d, ecx
imul r14, r9
shr r14, 0x24
lea ebx, [r14 + r14*4]
lea ebx, [r14 + rbx*4]
add ebx, r14d
lea r14d, [rax + rbx]
movzx ebp, byte [rdx + r10 - 1]
xor bpl, byte [r14 + r11]
xor bpl, 0x8a
mov byte [rdx + r10 - 1], bpl
cmp rdx, 0x16
je 0x203796ad
add ebx, r8d
movzx ebp, byte [rdx + r10]
mov ebx, ebx
xor bpl, byte [rbx + r11]
xor bpl, 0x8a
mov byte [rdx + r10], bpl
add eax, 0xfffffffe
add ecx, 2
add rdx, 2
add r8d, 0xfffffffe
jmp 0x20379bd7
test r15d, 0x2000
je 0x20379c55
xor r11d, r11d
xor r10d, r10d
jmp 0x20379e5b
add al, byte [rax]
invalid
add al, byte [rax]
add byte [rbp + rcx*4 + 0x54], cl
and al, 0x58
lea r10, [rsp + 0x58]
mov r11b, 1
jmp 0x20379e5b
lea r14, [0x2055e180]
jmp case.0x20379558.2
mov r14, rsi
mov rcx, qword [rsp + 0x80]
xor rcx, rsp
call fcn.203c9080
mov rax, r14
add rsp, 0x88
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, rdi
call fcn.20077cc0
mov r14, rdi
test r15b, r15b
js case.0x20379558.2
xor byte [0x2055e1c0], 0xef
test r15d, 0x800
jne 0x20379c88
movabs rax, 0x40a4efc0f0c940a4
xor qword [0x2055e1c1], rax
test r15b, 0x40
jne 0x20379dd7
mov cl, 0xda
mov al, 0xcc
lock cmpxchg byte [0x2055e175], cl
je 0x20379ceb
test r15d, 0x10000
jne case.0x2037946a.2
cmp al, 0xf4
jne 0x20379cb9
jmp 0x20379e14
xor r14d, r14d
jmp case.0x20379558.2
test r15b, r15b
js 0x20379e00
lea r14, [rsp + 0x50]
lea r12, [rsp + 0x48]
lea rcx, [rsp + 0x60]
test r15d, 0x2000
je 0x203794b5
mov ecx, 0xffffffff
lea r8, [rcx - 0x110ac15]
lea rax, [0x20438080]
mov r11d, 0xfeef53eb
add r11, rax
add rcx, 0xfffffffffeef53ec
xor r14d, r14d
movabs r12, 0x8618618618618619
lea r13, [0x2055e160]
mov r10d, 0xfeef53ea
nop dword [rax]
mov rax, rcx
mul r12
mov r9, rdx
mov rax, r8
mul r12
mov rax, r8
sub rax, rdx
shr rax, 1
add rax, rdx
shr rax, 4
imul rax, rax, 0xffffffffffffffeb
lea rdx, [0x20438080]
add rdx, r14
add rax, rdx
movzx eax, byte [r10 + rax]
xor al, 0x99
add byte [r14 + r13], al
cmp r14, 0x14
je 0x20379849
test r15d, 0x400
je 0x20379ebd
mov rax, rcx
sub rax, r9
shr rax, 1
add rax, r9
shr rax, 4
imul rax, rax, 0xffffffffffffffeb
movzx eax, byte [r11 + rax]
xor al, 0x99
add byte [r14 + r13 + 1], al
add r14, 2
add r11, 2
add rcx, 2
add r8, 2
jmp 0x20379d50
mov al, 0x34
xchg byte [0x2055e1c9], al
test r15d, 0x1000
je 0x203795ae
mov al, 0xf4
xchg byte [0x2055e175], al
lea r14, [0x2055e160]
jmp case.0x20379558.2
lea rcx, [rsp + 0x30]
lea rax, [rsp + 0x38]
lea r12, [rsp + 0x68]
jmp 0x20379693
lea r14, [0x2055e160]
jmp case.0x20379558.2
mov rax, qword [rsp + 0x58]
cmp rax, qword [rsp + 0x78]
jae 0x20379e44
mov rax, qword [rsp + 0x58]
movzx ecx, byte [rbx + rax]
mov rdx, qword [rsp + 0x60]
mov byte [rdx + rax], cl
inc qword [rsp + 0x58]
jmp 0x20379e20
mov r14, rsi
test r15b, 0x20
je case.0x20379558.2
mov r14, qword [rsp + 0x68]
jmp case.0x20379558.2
mov cl, 0xf
mov al, 0x95
lock cmpxchg byte [0x2055e242], cl
je 0x20379e73
mov ebp, eax
cmp bpl, 0x7d
jne 0x20379e5b
jmp 0x20379e7b
test r15b, 0x40
je 0x20379e2c
jmp 0x20379ee6
lea r14, [0x2055e230]
test r11b, 1
cmove r14, r10
jmp case.0x20379558.2
mov al, 0x7d
xchg byte [0x2055e242], al
test r15w, r15w
js 0x20379e7b
mov al, 0x89
xchg byte [0x2055e196], al
xor r14d, r14d
test r15d, 0x10000
je 0x20379c55
mov rcx, r14
call fcn.20077cc0
test edi, edi
je 0x20379c5e
mov rcx, rsi
call fcn.20077cc0
jmp 0x20379c5e
mov rax, qword [rsp + 0x20]
lea r10, [rsp + 0x28]
mov r11b, 1
cmp rax, qword [rsp + 0x50]
jae 0x20379f12
test r15b, r15b
js 0x20379f1c
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x20]
movzx eax, byte [rax + rcx]
mov rdx, qword [rsp + 0x48]
mov byte [rdx + rcx], al
test r15b, 0x20
jne 0x20379b24
inc qword [rsp + 0x20]
jmp 0x20379ed2
mov r14, qword [rsp + 0x30]
jmp case.0x20379558.2
lea rbx, [0x20438120]
lea r14, [rbx + 0x2cf21d5d]
add rbx, 0x2cf21d5c
mov ecx, 0x2cf21d5d
mov r8d, 0x2cf21d5c
movabs r12, 0xf0f0f0f0f0f0f0f1
lea r13, [0x2055e230]
nop dword [rax]
mov rax, rcx
mul r12
mov r9, rdx
mov rax, rdx
shr rax, 4
and r9, 0xfffffffffffffff0
add r9, rax
neg r9
mov rax, r8
mul r12
mov rax, rdx
shr rax, 4
and rdx, 0xfffffffffffffff0
add rdx, rax
neg rdx
movzx eax, byte [rcx + r13 - 0x2cf21d5d]
xor al, byte [rbx + rdx]
movzx edx, byte [rcx + r13 - 0x2cf21d5c]
xor al, 0x84
xor dl, byte [r14 + r9]
mov byte [rcx + r13 - 0x2cf21d5d], al
xor dl, 0x84
mov byte [rcx + r13 - 0x2cf21d5c], dl
add r14, 2
add rcx, 2
add rbx, 2
add r8, 2
cmp rcx, 0x2cf21d6f
jne 0x20379f50
test r15d, 0x200
je 0x20379e8f
jmp 0x20379e14