Function at 0x203c7990
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0xe8
lea rbp, [rsp + 0x80]
mov qword [rbp + 0x60], 0xfffffffffffffffe
mov rdi, r8
mov rsi, rdx
mov rbx, rcx
lea rcx, [rbp - 0x30]
call fcn.203c7810
mov qword [rbp + 0x40], 0xf
mov qword [rbp + 0x38], 0xc
xor ecx, ecx
mov edx, 1
mov r8d, 0xf268ac77
mov r9d, 0x633b4d1f
call fcn.203d44e0
mov rcx, qword [rax]
mov qword [rbp + 0x28], rcx
mov eax, dword [rax + 8]
mov dword [rbp + 0x30], eax
mov byte [rbp + 0x34], 0
mov qword [rbp + 0x50], rdi
test rdi, rdi
je 0x203c7a5c
mov rax, qword [rbp + 0x50]
lea rcx, [rax + 0x10]
lea rdx, [rbp + 0x28]
mov r8d, 0xc
call fcn.20268b80
mov rdi, rax
mov ecx, 1
xor edx, edx
mov r8d, 0x1bf633fa
mov r9d, 0x4f6f4b9f
call fcn.203d9ff0
mov rcx, rdi
mov rdx, rax
call fcn.20093a90
mov ecx, dword [0x205b7034]
xor ecx, ecx
nop dword [rax]
test cl, cl
jne 0x203c7a50
mov rcx, rax
call fcn.20281030
mov rdx, qword [rbp + 0x40]
cmp rdx, 0x10
jb 0x203c7aca
mov rcx, qword [rbp + 0x28]
lea rax, [rdx + 1]
cmp rax, 0x1000
jb 0x203c7abd
mov rax, qword [rcx - 8]
sub rcx, rax
add rcx, 0xfffffffffffffff8
cmp rcx, 0x20
jae 0x203c851d
add rdx, 0x28
nop
mov ecx, dword [0x205b7030]
lea r8d, [rcx - 1]
imul r8d, ecx
test r8b, 1
je 0x203c7ac2
nop word cs:[rax + rax]
mov ecx, dword [0x205b7034]
cmp ecx, 0x45
jge 0x203c7ab0
jmp 0x203c7a90
mov rdx, rax
jmp 0x203c7ac5
mov rcx, rax
call fcn.2008bfb0
mov qword [rbp + 0x18], rbx
mov rcx, qword [rsi + 8]
mov rax, qword [rbp + 0x50]
add rax, 0x10
mov qword [rbp + 0x20], rax
lea rax, [fcn.203c7990]
lea eax, [rax + rax + 0x640]
mov dword [rbp + 0x4c], eax
mov qword [rbp + 0x10], rcx
mov qword [rbp + 0x58], rcx
mov r13b, 1
nop word [rax + rax]
mov eax, dword [0x205b7030]
lea ecx, [rax + 1]
imul ecx, eax
test cl, 1
jne 0x203c7b40
nop word cs:[rax + rax]
mov eax, dword [0x205b7034]
cmp eax, 0x5f
jge 0x203c7b40
mov eax, dword [0x2059f3b8]
mov ecx, 0xac65a43f
add eax, ecx
test dword [rbp + 0x4c], eax
jne 0x203c7b68
jmp 0x203c7b50
mov eax, dword [0x205b7034]
cmp eax, 0x20
jge 0x203c7b40
jmp 0x203c7b20
movsxd rdi, dword [0x204939a8]
mov eax, dword [0x205b7030]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
je 0x203c7b70
mov eax, dword [0x204939a8]
jmp 0x203c7b50
mov eax, dword [0x205b7030]
nop word cs:[rax + rax]
mov eax, dword [0x205b7030]
mov ecx, dword [0x2059f3b8]
add ecx, eax
inc ecx
imul ecx, eax
test cl, 1
jne 0x203c7b80
mov eax, dword [0x205b7034]
mov ecx, dword [0x2059f3b8]
mov edx, 0xac65a451
add ecx, edx
cmp eax, ecx
lea r10, [fcn.203c7990]
mov r11d, 0xac65a43e
jge 0x203c7c50
mov eax, dword [0x205b7034]
cmp eax, 0x38
jge 0x203c7c50
lea rcx, [0x204939a8]
mov rax, rcx
or rax, rdi
xor rdi, rcx
not rax
or rax, rdi
not rax
nop dword [rax + rax]
mov ecx, dword [0x2059f3b8]
add ecx, r11d
lea edx, [r10 + r10]
add edx, 0x3c60
mov r8d, edx
not r8d
and edx, r8d
lea r9d, [r10 + r10]
add r9d, 0x3c61
and r8d, 0xfffffffe
xor r8d, r9d
or r8d, edx
not r8d
cmp r8d, ecx
jne 0x203c7c34
mov ecx, dword [0x205b7034]
cmp ecx, 0x1f
jle 0x203c7c70
mov ecx, dword [0x205b7030]
mov edx, dword [0x2059f3b8]
add edx, ecx
dec edx
imul edx, ecx
test dl, 1
jne 0x203c7bf0
jmp 0x203c7c29
mov eax, dword [0x205b7030]
lea ecx, [rax - 1]
imul ecx, eax
test cl, 1
jne 0x203c7c50
jmp 0x203c7bc0
mov r14, qword [0x2059f3c0]
movabs rcx, 0xc37f92e534ca1f2
add r14, rcx
imul r14, rax
nop dword [rax + rax]
mov eax, dword [0x2059f3b8]
mov ecx, eax
xor ecx, 0xac65a43f
and eax, 0x2c65a43f
lea eax, [rcx + rax*2]
lea ecx, [r10 + r10]
add ecx, 0xac0
test ecx, eax
jne 0x203c7cbf
mov eax, dword [0x205b7034]
cmp eax, 0x10
jle 0x203c7ce0
mov eax, dword [0x205b7030]
lea ecx, [rax - 1]
imul ecx, eax
and ecx, 1
mov eax, dword [0x2059f3b8]
add eax, r11d
cmp ecx, eax
jne 0x203c7c90
jmp 0x203c7cb4
mov ebx, dword [0x20493984]
mov rax, qword [rbp + 0x58]
mov rax, qword [rax]
cmp rax, qword [rbp + 0x10]
je 0x203c83fa
mov qword [rbp + 0x58], rax
mov rax, qword [rax + 0x18]
call qword [case.0x2010e313.0]
test al, al
je 0x203c7d20
mov rax, qword [rbp + 0x58]
mov esi, dword [rax + 0x20]
jmp 0x203c7d40
mov eax, dword [0x2059f3b8]
mov ecx, eax
xor ecx, 0xac65a43e
not eax
and eax, 0x539a5bc1
or eax, ecx
not eax
lea esi, [rcx + rax*2]
mov rax, qword [rbp + 0x58]
mov rax, qword [rax + 0x10]
cmp rax, 0x13
jne 0x203c7dc0
mov r8, qword [rbp]
mov rcx, qword [rbp - 0x28]
mov r9, qword [rbp - 0x18]
add r8, r8
movabs rdx, 0x6ede5f97c3fc4bec
and r8, rdx
mov rdx, qword [r9 + r8*8 + 8]
cmp rdx, rcx
je 0x203c7dc0
cmp qword [rdx + 0x10], 0x13
jne 0x203c7e55
mov r9, rdx
lea rdx, [fcn.203c7990]
add edx, edx
add edx, 0x2ae0
mov r8d, edx
not r8d
test edx, r8d
mov r10d, 0xac65a475
mov edx, dword [0x205b7034]
mov r8d, dword [0x2059f3b8]
add r8d, r10d
cmp edx, r8d
jge 0x203c7d9c
cmp r9, rcx
jne 0x203c7b00
nop word [rax + rax]
mov qword [rbp - 0x50], rax
mov dword [rbp - 0x48], esi
lea rcx, [rbp - 0x30]
lea rdx, [rbp - 0x60]
lea r8, [rbp - 0x50]
call fcn.203d2b10
add rdi, r14
lea r10, [fcn.203c7990]
jmp 0x203c7e01
mov eax, dword [0x205b7030]
lea ecx, [rax + 1]
imul ecx, eax
test cl, 1
je 0x203c7e12
lea eax, [r10 + r10]
add eax, 0x1280
mov ecx, eax
not ecx
test ecx, eax
jne 0x203c7df0
mov eax, dword [0x205b7034]
cmp eax, 0x52
mov r14d, dword [0x2059dd08]
mov eax, dword [0x205b7034]
cmp eax, 0x17
jge 0x203c7e1b
mov eax, dword [0x205b7034]
cmp eax, 0x35
jg 0x203c7df0
mov eax, dword [0x205b7034]
mov ecx, dword [0x2059f3b8]
mov edx, 0xac65a457
add ecx, edx
cmp eax, ecx
jge 0x203c7fa0
jmp 0x203c7ec0
mov r8, qword [r9 + r8*8]
jmp 0x203c7e6d
mov rdx, r9
cmp r10, 0x13
je 0x203c7d7e
cmp rdx, r8
je 0x203c7dc0
mov r9d, dword [0x205b7030]
lea r10d, [r9 - 1]
imul r10d, r9d
test r10b, 1
jne 0x203c7eb0
nop dword [rax + rax]
mov r9, qword [rdx + 8]
mov r10, qword [r9 + 0x10]
mov r11d, dword [0x205b7030]
lea r15d, [r11 - 1]
imul r15d, r11d
test r15b, 1
je 0x203c7e60
nop dword [rax]
mov r9d, dword [0x205b7034]
cmp r9d, 0x4c
jge 0x203c7eb0
jmp 0x203c7e90
mov eax, dword [0x205b7034]
cmp eax, 0x4e
jge 0x203c7fa0
mov eax, r14d
neg eax
lea ecx, [r14 - 1]
add eax, eax
mov edx, ecx
xor edx, eax
and eax, ecx
lea r15d, [rdx + rax*2]
neg r15d
mov dword [0x2059dd08], r15d
mov r9d, 0xac65a43f
mov r11d, 0xac65a43e
nop word [rax + rax]
mov eax, dword [0x205b7034]
cmp eax, 0x39
jg 0x203c7f3b
mov eax, dword [0x205b7030]
mov ecx, dword [0x2059f3b8]
mov edx, eax
sub edx, ecx
inc edx
imul edx, eax
and edx, 1
mov eax, ecx
xor eax, 0xac65a43e
and ecx, 0x2c65a43e
lea eax, [rax + rcx*2]
cmp edx, eax
je 0x203c7fc0
mov eax, dword [0x2059f3b8]
add eax, r9d
lea ecx, [r10 + r10]
add ecx, 0x1720
mov edx, ecx
not edx
mov r8d, edx
and r8d, eax
not eax
and ecx, eax
or ecx, r8d
and eax, edx
or eax, ecx
cmp eax, 0xffffffff
mov eax, dword [0x205b7034]
cmp eax, 0x1f
jg 0x203c7f66
mov eax, dword [0x205b7030]
lea ecx, [rax - 1]
imul ecx, eax
and ecx, 1
mov eax, dword [0x2059f3b8]
add eax, r11d
cmp ecx, eax
jne 0x203c7f00
jmp 0x203c7f0b
lea eax, [r10 + r10]
add eax, 0x180
mov ecx, eax
not ecx
test ecx, eax
jne 0x203c7fa0
jmp 0x203c7ec0
xor r12d, r12d
test r14d, r15d
jne 0x203c8020
jmp 0x203c7fff
mov ecx, dword [0x205b7030]
lea eax, [rcx - 1]
imul eax, ecx
xor ecx, ecx
sub ecx, dword [0x2059f3b8]
mov edx, ecx
xor edx, 0x539a5bc0
and ecx, 0x539a5bc0
lea ecx, [rdx + rcx*2]
neg ecx
xor edx, edx
div ecx
test edx, edx
je 0x203c800a
mov eax, dword [0x205b7034]
cmp eax, 0x62
jg 0x203c7fd0
xor eax, eax
test al, al
jne 0x203c7fd0
test ebx, ebx
jg 0x203c80d4
nop dword [rax + rax]
cmp qword [rbp + 0x50], 0
je 0x203c7b00
call fcn.203d37e0
mov rcx, qword [rbp + 0x20]
mov rdx, rax
call fcn.20093a90
mov rcx, qword [rbp + 0x58]
cmp qword [rcx + 0x40], 0x10
jb 0x203c8050
mov rdx, qword [rcx + 0x28]
jmp 0x203c8054
lea rdx, [rcx + 0x28]
mov r8, qword [rcx + 0x38]
mov rcx, rax
call fcn.20268b80
mov rdi, rax
mov ecx, 1
xor edx, edx
mov r8d, 0xdf7f5d51
mov r9d, 0x1e2ed85f
call fcn.203d8460
mov rcx, rdi
mov rdx, rax
call fcn.20093a90
and r14d, r15d
mov ecx, dword [0x204939c0]
cmp r14d, 1
mov edx, 0
sbb edx, edx
mov r8d, dword [0x205b7030]
mov r9d, dword [0x2059f3b8]
mov r10d, r8d
sub r10d, r9d
inc r10d
imul r10d, r8d
and r10d, 1
add r9d, 0xac65a43e
cmp r10d, r9d
mov r10d, 0xac65a47e
jne 0x203c8270
jmp 0x203c8250
xor ecx, ecx
xor r12d, r12d
jmp 0x203c80f0
neg eax
mov ecx, eax
cmp eax, ebx
jge 0x203c8020
nop word [rax + rax]
movsxd rax, ecx
mov r8d, dword [rdi + rax]
mov edx, dword [0x205b7030]
lea r9d, [rdx - 1]
imul r9d, edx
test r9b, 1
je 0x203c811b
mov eax, dword [rdi + rax]
jmp 0x203c80f0
mov eax, dword [0x205b7034]
cmp eax, 0x33
jl 0x203c8167
mov eax, dword [0x205b7034]
cmp eax, 0x38
jle 0x203c815c
nop word cs:[rax + rax]
mov eax, dword [0x205b7030]
lea edx, [rax - 1]
imul edx, eax
and edx, 1
mov eax, dword [0x2059f3b8]
mov r9d, eax
xor r9d, 0xac65a43e
and eax, 0x2c65a43e
lea eax, [r9 + rax*2]
cmp edx, eax
jne 0x203c8130
mov eax, dword [0x205b7034]
cmp eax, 0x1a
jge 0x203c8110
mov eax, dword [0x205b7034]
mov edx, dword [0x2059f3b8]
mov r9d, 0xac65a482
add edx, r9d
cmp eax, edx
jge 0x203c8110
mov edx, dword [0x205b7030]
lea eax, [rdx - 1]
imul eax, edx
mov r9d, dword [0x2059f3b8]
mov edx, 0xac65a440
add r9d, edx
xor edx, edx
div r9d
test edx, edx
not r12d
lea eax, [r10 + r10]
add eax, 0x1fe0
mov edx, eax
not edx
test edx, eax
jne 0x203c8200
mov eax, dword [0x205b7034]
cmp eax, 0x45
jge 0x203c8200
mov eax, r12d
and eax, r8d
or r12d, r8d
not r12d
or r12d, eax
mov eax, 0xfffffffc
sub eax, ecx
mov ecx, dword [0x205b7030]
mov edx, dword [0x2059f3b8]
lea r8d, [rcx + rdx]
inc r8d
imul r8d, ecx
and r8d, 1
add edx, 0xac65a43e
cmp r8d, edx
jne 0x203c8240
jmp 0x203c820d
mov eax, dword [0x205b7034]
cmp eax, 0x39
jge 0x203c8200
jmp 0x203c81b6
mov ecx, dword [0x2059f3b8]
add ecx, r11d
lea edx, [r10 + r10]
add edx, 0x29e0
mov r8d, edx
not r8d
and r8d, edx
cmp r8d, ecx
je 0x203c80db
nop word cs:[rax + rax]
test r13b, r13b
je 0x203c8240
jmp 0x203c820d
cmp dword [0x2059f3b8], 0x539a5bc2
jne 0x203c8270
mov r8d, dword [0x205b7030]
mov r10d, 0xac65a470
jmp 0x203c82a6
mov r8d, dword [0x205b7034]
mov r9d, dword [0x2059f3b8]
add r9d, r10d
cmp r8d, r9d
jge 0x203c8270
jmp 0x203c8250
mov r8d, dword [0x205b7034]
mov r9d, dword [0x2059f3b8]
add r9d, r10d
cmp r8d, r9d
jl 0x203c8300
mov r8d, dword [0x205b7034]
cmp r8d, 0x54
jg 0x203c82e0
nop word cs:[rax + rax]
mov r8d, dword [0x205b7030]
mov r9d, 1
sub r9d, r8d
imul r9d, r8d
test r9b, 1
je 0x203c8290
nop word [rax + rax]
mov r8d, dword [0x205b7030]
lea r9d, [r8 - 1]
imul r9d, r8d
test r9b, 1
jne 0x203c82e0
jmp 0x203c82c0
sub ecx, r12d
xor edx, ecx
not edx
and edx, ecx
mov ecx, dword [0x205b7030]
nop
mov ecx, dword [0x205b7034]
cmp ecx, 0x50
jg 0x203c8310
mov r10d, edx
shr r10d, 0x10
mov edi, 0xac65a43f
lea rbx, [fcn.203c7990]
nop
mov r8d, edx
or r8d, r10d
movzx r9d, r8w
add r8b, byte [0x205b39c4]
movzx ecx, word [0x2059f3c8]
mov r11d, ecx
xor r11d, 0x3a
and ecx, 0x3a
lea ecx, [r11 + rcx*2]
add cl, 0xc9
shr r9d, cl
mov ecx, dword [0x205b7030]
lea r11d, [rcx - 1]
imul r11d, ecx
test r11b, 1
je 0x203c8390
mov ecx, dword [0x205b7030]
lea r8d, [rcx - 1]
imul r8d, ecx
test r8b, 1
jmp 0x203c8330
add r8b, 0x18
mov ecx, r8d
xor cl, 0xe8
and r8b, 0x68
add r8b, r8b
add r8b, cl
mov edx, r8d
and dl, r9b
mov ecx, r8d
xor cl, r9b
xor cl, r9b
and cl, r8b
xor cl, r9b
or cl, dl
xor edx, edx
test dl, dl
mov edx, dword [0x2059f3b8]
add edx, edi
lea r8d, [rbx + rbx]
add r8d, 0x4900
test r8d, edx
jne 0x203c83bf
add cl, byte [0x205b6dcd]
mov byte [0x205b6dcd], cl
mov rcx, rax
mov edx, esi
call fcn.20159760
mov rcx, rax
call fcn.20281030
jmp 0x203c7b00
lea rdx, [rbp - 0x30]
mov rcx, qword [rbp + 0x18]
call fcn.203d2730
mov eax, dword [0x205b7034]
cmp eax, 0x29
mov rcx, qword [rbp - 0x18]
mov rax, qword [rbp - 0x10]
mov edx, dword [0x205b7034]
cmp edx, 0x43
jg 0x203c8410
movabs rdx, 0x7917fd066d423a56
mov r8, rax
xor r8, rdx
and rax, rdx
lea rax, [r8 + rax*2]
sub rax, rcx
movabs rdx, 0x86e802f992bdc5aa
add rdx, rax
cmp rdx, 0x1000
jb 0x203c84b0
mov rax, qword [rcx - 8]
mov r8, rcx
xor r8, 0xfffffffffffffff8
and rcx, 0xfffffffffffffff8
mov r9, qword [0x2059f3c0]
movabs r10, 0xc37f92e534ca210
add r10, r9
neg r9
movabs r11, 0xf3c806d1acb35e0e
xor r11, r9
movabs rsi, 0x73c806d1acb35e0e
and rsi, r9
lea r9, [r11 + rsi*2]
neg r9
imul r9, rcx
add r9, r8
sub r9, rax
cmp r9, r10
jae 0x203c8518
add rdx, 0x27
mov rcx, rax
call fcn.2008bfb0
xorps xmm0, xmm0
lea rax, [rbp - 0x18]
movups xmmword [rax], xmm0
mov qword [rax + 0x10], 0
mov rax, qword [rbp - 0x28]
mov rcx, qword [rax + 8]
mov qword [rcx], 0
mov rcx, qword [rax]
test rcx, rcx
je 0x203c84f5
nop
mov rsi, qword [rcx]
mov edx, 0x20
call fcn.2008bfb0
mov rcx, rsi
test rsi, rsi
jne 0x203c84e0
mov rcx, qword [rbp - 0x28]
mov edx, 0x20
call fcn.2008bfb0
nop
add rsp, 0xe8
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
call fcn.20407a4c
call fcn.20407a4c
int3