Function at 0x20297f20
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x30
mov esi, r9d
test ecx, ecx
je 0x20297fc9
test edx, edx
je 0x20298075
mov ecx, 0xe5bbea3c
add ecx, dword [0x205731d0]
xor ecx, esi
mov eax, dword [0x20573094]
add eax, esi
add eax, 0xfffff417
cdqe
add rax, qword [0x20573100]
call qword [case.0x2010e313.0]
test al, 1
jne 0x202981a5
mov edi, esi
xor edi, 0xa2311f26
nop word [rax + rax]
movzx ecx, byte [0x205731d4]
lea eax, [rcx + 0x37]
add cl, 0xe5
lock cmpxchg byte [0x20572faf], cl
je 0x2029810e
mov ecx, dword [0x205730a4]
add ecx, esi
add ecx, 0xfffff417
movsxd r8, ecx
add r8, qword [0x20573110]
mov ecx, eax
mov edx, edi
mov rax, r8
call qword [case.0x2010e313.0]
test al, 1
je 0x20297f80
jmp 0x202981a5
test edx, edx
je 0x202980c9
mov edx, esi
xor edx, 0x90685f1c
mov eax, dword [0x20573098]
add eax, esi
add eax, 0xfffff417
cdqe
add rax, qword [0x20573120]
lea rcx, [rsp + 0x28]
call qword [case.0x2010e313.0]
cmp byte [rsp + 0x28], 0x34
je 0x202982c0
mov edi, esi
xor edi, 0x305c405e
lea rbx, [rsp + 0x28]
mov ebp, esi
xor ebp, 0xce6431d1
nop word [rax + rax]
mov eax, dword [0x205730b0]
add eax, esi
add eax, 0xfffff417
cdqe
add rax, qword [0x205730c8]
mov rcx, rbx
mov edx, edi
call qword [case.0x2010e313.0]
test al, 1
jne 0x202981b1
movzx ecx, byte [rsp + 0x28]
mov eax, dword [0x205730a8]
add eax, esi
add eax, 0xfffff417
cdqe
add rax, qword [0x20573108]
mov edx, ebp
call qword [case.0x2010e313.0]
test al, 1
je 0x20298020
jmp 0x202982c0
mov ecx, esi
xor ecx, 0x58b66497
mov eax, dword [0x20573090]
add eax, esi
add eax, 0xfffff417
cdqe
add rax, qword [0x205730d0]
call qword [case.0x2010e313.0]
test al, 1
jne 0x20298303
mov cl, 0x13
nop word cs:[rax + rax]
mov al, 0x7f
lock cmpxchg byte [0x20572fb9], cl
je 0x2029820b
cmp al, 0xf0
jne 0x202980b0
jmp 0x20298303
movzx eax, byte [0x20572fcd]
cmp al, 0xa4
je 0x20298382
nop dword [rax + rax]
movzx ecx, byte [0x205731d4]
lea eax, [rcx - 0x4f]
add cl, 0x73
lock cmpxchg byte [0x20572fcd], cl
je 0x2029830f
movzx ecx, byte [0x205731d4]
add cl, 0xa0
cmp al, cl
jne 0x202980e0
jmp 0x20298382
xor edi, edi
lea r15, [0x20572fa0]
mov ebx, esi
xor ebx, 0xd3c7675a
mov ebp, 0xbe9
sub ebp, esi
lea r14, [rsp + 0x28]
xor esi, 0xb44d33ce
nop word cs:[rax + rax]
lea rcx, [r15 + rdi]
mov eax, dword [0x2057309c]
sub eax, ebp
cdqe
add rax, qword [0x205730f0]
mov edx, edi
mov r8, r14
mov r9d, ebx
call qword [case.0x2010e313.0]
movzx r12d, byte [rsp + 0x28]
mov eax, dword [0x20573080]
sub eax, ebp
cdqe
add rax, qword [0x205730e8]
mov ecx, edi
mov rdx, r14
mov r8d, esi
call qword [case.0x2010e313.0]
mov rax, qword [rsp + 0x28]
mov byte [rax], r12b
lea eax, [rdi + 1]
cmp eax, 0xe
jg 0x2029819d
inc rdi
jmp 0x20298140
mov al, 0x38
xchg byte [0x20572faf], al
lea rax, [0x20572fa0]
jmp 0x20298389
xor edi, edi
lea r14, [0x20573060]
lea r15, [0x2047c2a0]
mov ebx, esi
xor ebx, 0x4ae5085e
nop dword [rax]
movzx edx, byte [rdi + r14]
xor dl, byte [rdi + r15]
mov eax, dword [0x205730a0]
add eax, esi
add eax, 0xfffff417
cdqe
add rax, qword [0x20573118]
mov ecx, edi
mov r8d, ebx
call qword [case.0x2010e313.0]
lea eax, [rdi + 1]
cmp eax, 0x14
jg 0x202982b8
inc rdi
jmp 0x202981d0
xor edi, edi
mov ebx, esi
xor ebx, 0xf61bdae6
lea r14, [rsp + 0x28]
mov ebp, esi
xor ebp, 0xc8d89463
lea r15, [0x2047c1f0]
lea r12, [0x20572fb0]
mov eax, dword [0x205731d0]
mov ecx, eax
xor ecx, 0x73536181
and eax, 0x73536181
lea eax, [rcx + rax*2]
mov ecx, dword [0x20573088]
add ecx, esi
add eax, ecx
add eax, 0xfffff417
cdqe
add rax, qword [0x205730e0]
mov ecx, edi
mov rdx, r14
mov r8d, ebx
call qword [case.0x2010e313.0]
mov rcx, qword [rsp + 0x28]
mov eax, dword [0x2057308c]
add eax, esi
mov edx, dword [0x205731d0]
add eax, edx
add eax, 0x73535598
cdqe
add rax, qword [0x205730d8]
mov rdx, r14
mov r8d, ebp
call qword [case.0x2010e313.0]
movzx eax, byte [rsp + 0x28]
xor al, byte [rdi + r15]
mov byte [rdi + r12], al
lea eax, [rdi + 1]
cmp eax, 8
jg 0x202982cc
inc rdi
jmp 0x20298230
mov al, 0x34
xchg byte [0x20573075], al
lea rax, [0x20573060]
jmp 0x20298389
mov eax, dword [0x205731d0]
mov ecx, eax
xor ecx, 0xa90b276
mov edx, eax
and edx, 0xa90b276
lea ecx, [rcx + rdx*2]
xor ecx, esi
add esi, dword [0x20573084]
add eax, esi
add eax, 0x73535598
cdqe
add rax, qword [0x205730f8]
call qword [case.0x2010e313.0]
lea rax, [0x20572fb0]
jmp 0x20298389
xor ebp, ebp
mov edi, esi
xor edi, 0xcc1888c7
lea rbx, [rsp + 0x27]
lea r14, [rsp + 0x28]
lea r15, [0x20572fc0]
nop word [rax + rax]
mov eax, dword [0x205730ac]
add eax, esi
add eax, 0xfffff417
cdqe
add rax, qword [0x205730c0]
mov ecx, ebp
mov rdx, rbx
mov r8, r14
mov r9d, edi
call qword [case.0x2010e313.0]
movzx eax, byte [rsp + 0x27]
mov rcx, qword [rsp + 0x28]
add al, byte [rcx]
movsxd rcx, ebp
mov byte [rcx + r15], al
mov eax, ecx
xor eax, 1
and ecx, 1
lea ebp, [rax + rcx*2]
cmp ebp, 0xd
jl 0x20298330
mov al, 0xa4
xchg byte [0x20572fcd], al
lea rax, [0x20572fc0]
add rsp, 0x30
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret