Function at 0x201c1b00
Capabilities:
Encode data using xor
Read file on windows

Disassembly:
push r15
push r14
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x38
mov rdi, r8
mov rbx, qword [rsp + 0x98]
mov r14, qword [rsp + 0x90]
mov rax, qword [0x205da420]
xor rax, rsp
mov qword [rsp + 0x30], rax
mov eax, r9d
and eax, 0x3f
cmp eax, 0x11
jae case.default.0x201c1b4e
mov esi, 1
mov eax, eax
lea r8, [0x204763d0]
movsxd rax, dword [r8 + rax*4]
add rax, r8
jmp rax
movzx eax, byte [0x2058c7c6]
lea rsi, [0x2058c7b0]
cmp al, 0x55
je case.0x201c21f7.999
mov cl, 0x4a
nop dword [rax + rax]
mov al, 0xfa
lock cmpxchg byte [0x2058c7c6], cl
je 0x201c205a
cmp al, 0x55
jne 0x201c1b70
jmp case.0x201c21f7.999
cmp eax, 0x19
ja 0x201c1be3
cmp eax, 0x13
jbe 0x201c1c18
cmp eax, 0x15
jbe 0x201c1c6d
cmp eax, 0x17
jbe 0x201c1d19
cmp eax, 0x19
jne 0x201c212c
movzx eax, byte [0x2058c7e5]
lea rsi, [0x2058c7d0]
cmp al, 0xcd
je case.0x201c21f7.999
mov cl, 0x5b
mov al, 0xa
lock cmpxchg byte [0x2058c7e5], cl
je 0x201c23f4
cmp al, 0xcd
jne 0x201c1bca
jmp case.0x201c21f7.999
cmp eax, 0x1f
jae 0x201c1c42
cmp eax, 0x1b
jbe 0x201c1ca9
mov r15, rdx
cmp eax, 0x1c
je 0x201c2008
cmp eax, 0x1e
jne 0x201c2038
mov rcx, r14
mov rdx, r15
call fcn.2040717c
mov esi, eax
jmp case.0x201c21f7.999
cmp eax, 0x11
je 0x201c1ce8
mov esi, 0xffffffff
cmp eax, 0x13
je case.0x201c21f7.999
mov r8, rbx
mov r9, rdi
call fcn.204070ac
mov rsi, rax
jmp case.0x201c21f7.999
or eax, dword cs:[rax]
invalid
cmp eax, 0x20
jbe 0x201c1cd6
cmp eax, 0x14
jne 0x201c1d5b
movzx eax, byte [0x2058c923]
lea rsi, [0x2058c920]
cmp al, 0xf5
je case.0x201c21f7.999
mov cl, 0x9e
nop
mov al, 0xbc
lock cmpxchg byte [0x2058c923], cl
je 0x201c21a7
cmp al, 0xf5
jne 0x201c1c90
jmp case.0x201c21f7.999
cmp eax, 0x1a
jne 0x201c1d6f
test edi, edi
je 0x201c26f6
mov rcx, r14
mov rsi, rdx
mov edi, r9d
call fcn.200782c0
test dil, dil
jns case.0x201c21f7.999
jmp 0x201c26f6
cmp eax, 0x1f
jne 0x201c1d84
movzx esi, dil
jmp case.0x201c21f7.999
movzx eax, byte [0x2058c7a5]
lea rsi, [0x2058c790]
cmp al, 0x83
je case.0x201c21f7.999
mov cl, 0x90
mov al, 0x53
lock cmpxchg byte [0x2058c7a5], cl
je 0x201c2163
cmp al, 0x83
jne 0x201c1d00
jmp case.0x201c21f7.999
cmp eax, 0x16
jne 0x201c213b
mov qword [rsp + 0x28], rdi
cmp rdi, rdx
jae 0x201c216d
test rbx, rbx
je 0x201c2563
cmp rbx, 1
mov r8, rbx
adc r8, 0
mov eax, r8d
and eax, 3
cmp rbx, 4
jae 0x201c24fb
xor ecx, ecx
jmp 0x201c2548
cmp qword [rdx + 0x38], 0x10
jb 0x201c214d
mov rsi, qword [rdx + 0x20]
jmp case.0x201c21f7.999
mov rsi, rcx
call fcn.2007c100
test ebx, ebx
jne 0x201c202b
jmp case.0x201c21f7.999
mov rcx, rbx
mov ecx, ebx
call fcn.20406440
mov esi, eax
jmp case.0x201c21f7.999
lock inc dword [r14 + 8]
xor esi, esi
jmp case.0x201c21f7.999
cmp ebx, 0x1e6
jg 0x201c21ce
lea eax, [rbx - 2]
cmp eax, 0xd2
ja case.default.0x201c1dc7
lea rcx, [0x20476414]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
lea rax, [0x20475870]
jmp 0x201c26e3
lea rax, [0x2046e1c8]
mov qword [r14], rax
mov rsi, qword [r14 + 0x60]
test rsi, rsi
je 0x201c1e44
mov rbx, rcx
mov ebp, r9d
mov r15, rdx
mov rcx, qword [rsi + 8]
test rcx, rcx
je 0x201c1e23
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c66ec.0]
test rax, rax
je 0x201c1e23
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c66ec.0]
mov rcx, rsi
call fcn.200782c0
mov rdx, r15
mov r9d, ebp
mov rcx, rbx
test r9d, 0x100
jne 0x201c1e44
xor eax, eax
jmp 0x201c26fb
test ecx, ecx
je 0x201c26f6
mov rcx, r14
call fcn.200782c0
mov rsi, r14
jmp case.0x201c21f7.999
mov rbx, rdx
mov ebp, r9d
call fcn.201baf20
mov rsi, rdi
test bpl, 0x40
je case.0x201c21f7.999
mov rcx, rbx
mov rdx, qword [0x2058d960]
mov r8d, dword [0x2058d950]
mov esi, 0x4fd0
sub esi, eax
sub r8d, esi
movsxd rax, r8d
add rax, rdx
call qword [case.0x200c66ec.0]
mov rcx, qword [0x2058d968]
mov eax, dword [0x2058d958]
sub eax, esi
cdqe
add rax, rcx
mov ecx, edi
mov edx, 0xc9b467d7
call qword [case.0x200c66ec.0]
test al, 1
jne 0x201c2337
mov rcx, qword [0x2058d970]
mov eax, dword [0x2058d954]
sub eax, esi
cdqe
add rax, rcx
mov rsi, rbx
mov rcx, rbx
call qword [case.0x200c66ec.0]
jmp case.0x201c21f7.999
mov r10, qword [rbx + 8]
movzx eax, byte [0x2058c872]
cmp al, 0x1b
je 0x201c22a7
mov cl, 0x27
nop
mov al, 0x36
lock cmpxchg byte [0x2058c872], cl
je 0x201c2205
cmp al, 0x1b
jne 0x201c1f00
jmp 0x201c22a7
test edx, edx
je 0x201c26f6
mov rcx, r14
mov esi, r9d
call fcn.200782c0
mov r9d, esi
jmp 0x201c2728
mov ebp, r9d
lea rax, [0x2046f1b8]
mov qword [rbx], rax
mov rcx, rbx
call fcn.200a3bf0
lea rax, [0x2046e1c8]
mov qword [rbx], rax
mov r15, qword [rbx + 0x60]
test r15, r15
je case.0x201c1b4e.5
mov rcx, qword [r15 + 8]
test rcx, rcx
je 0x201c22ba
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c66ec.0]
test rax, rax
je 0x201c2303
mov rcx, qword [rax]
mov r8, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r8
call qword [case.0x200c66ec.0]
mov r9d, ebp
test ebp, 0x100
je 0x201c2040
jmp 0x201c2312
mov ecx, ebx
mov rdx, r14
call fcn.20407204
mov esi, eax
jmp case.0x201c21f7.999
mov rcx, rdx
call fcn.20423908
xor esi, esi
jmp case.0x201c21f7.999
mov esi, 0xffffffff
mov rax, qword [rdx + 0x38]
mov rcx, qword [rax]
test rcx, rcx
je 0x201c2159
mov r8, qword [rdx + 0x50]
cmp dword [r8], 0
jle 0x201c22bf
movzx esi, byte [rcx]
jmp case.0x201c21f7.999
mov rcx, rbx
call fcn.20402308
mov esi, eax
jmp case.0x201c21f7.999
xor eax, eax
sub eax, dword [rbx - 4]
cdqe
lea rsi, [rbx + rax]
add rsi, 0xffffffffffffff68
mov rcx, rsi
call fcn.200a7e10
test r15d, r15d
je case.0x201c21f7.999
mov rcx, rsi
call fcn.200782c0
jmp case.0x201c21f7.999
test ecx, ecx
je 0x201c2563
mov rcx, rdi
mov esi, r9d
call fcn.200782c0
mov r9d, esi
mov rsi, rdi
test r9b, r9b
js case.0x201c21f7.999
mov ecx, 0xffffffff
lea r8, [rcx - 0xefbfbdd]
lea r11, [0x20475920]
mov edi, 0xf1040424
add rdi, r11
add rcx, 0xfffffffff1040425
xor ebx, ebx
movabs r14, 0x2e8ba2e8ba2e8ba3
lea rsi, [0x2058c7b0]
mov r15d, 0xf1040423
nop word cs:[rax + rax]
mov rax, rcx
mul r14
mov r10, rdx
mov rax, r8
mul r14
shr rdx, 2
imul rax, rdx, 0xffffffffffffffea
add rax, r11
add rax, rbx
movzx eax, byte [r15 + rax]
xor al, 0x36
add byte [rbx + rsi], al
shr r10, 2
imul rax, r10, 0xffffffffffffffea
movzx eax, byte [rdi + rax]
xor al, 0x36
add byte [rbx + rsi + 1], al
add rbx, 2
add rdi, 2
add rcx, 2
add r8, 2
cmp rbx, 0x16
jne 0x201c20a0
test r9d, 0x100
jne 0x201c2740
mov al, 0x55
xchg byte [0x2058c7c6], al
jmp case.0x201c21f7.999
xor esi, esi
jmp case.0x201c21f7.999
mov rcx, r14
call fcn.204024ac
mov esi, eax
jmp case.0x201c21f7.999
mov rcx, r14
mov edx, edi
call fcn.20423890
mov rsi, r14
jmp case.0x201c21f7.999
add rdx, 0x20
mov rsi, rdx
jmp case.0x201c21f7.999
lea r15, [rsp + 0x28]
jmp 0x201c2308
test r9b, 0x40
je 0x201c233f
test rbx, rbx
je 0x201c2563
mov rcx, rbx
and rcx, 3
je 0x201c24a0
mov r8, rbx
lea rax, [r8 - 1]
movzx r9d, byte [rdx + r8 - 1]
mov r10, qword [rsp + 0x28]
mov byte [r10 + r8 - 1], r9b
mov r8, rax
dec rcx
jne 0x201c2186
jmp 0x201c24a3
add byte [0x2058c920], 0x7d
add byte [0x2058c921], 0x59
add byte [0x2058c922], 0xfc
mov al, 0xf5
xchg byte [0x2058c923], al
jmp case.0x201c21f7.999
cmp ebx, 0x960
jg 0x201c256b
lea eax, [rbx - 0x3e6]
cmp eax, 0xf
ja case.default.0x201c21f7
lea rcx, [0x20476760]
movsxd rax, dword [rcx + rax*4]
add rax, rcx
jmp rax
lea rax, [0x20475818]
jmp 0x201c26e3
mov ecx, 0xffffffff
lea r8, [rcx - 0x2573b81f]
lea r11, [0x204759c0]
mov esi, 0xda8c47e2
add rsi, r11
add rcx, 0xffffffffda8c47e3
xor edi, edi
movabs rbx, 0xe38e38e38e38e38f
lea r14, [0x2058c860]
mov r15d, 0xda8c47e1
mov rax, rcx
mul rbx
mov r9, rdx
shr r9, 3
and r9, 0xfffffffffffffffe
mov rax, r8
mul rbx
shr rdx, 3
and rdx, 0xfffffffffffffffe
lea rax, [rdx + rdx*8]
mov rdx, r11
sub rdx, rax
add rdx, rdi
movzx eax, byte [r15 + rdx]
xor al, 0x50
add byte [rdi + r14], al
lea rax, [r9 + r9*8]
neg rax
movzx eax, byte [rsi + rax]
xor al, 0x50
add byte [rdi + r14 + 1], al
add rdi, 2
add rsi, 2
add rcx, 2
add r8, 2
cmp rdi, 0x12
jne 0x201c2240
mov al, 0x1b
xchg byte [0x2058c872], al
test r10, r10
lea rsi, [0x2058c860]
cmovne rsi, r10
jmp case.0x201c21f7.999
mov r9d, ebp
jmp 0x201c2312
mov r9, qword [rdx + 0x40]
mov r10, qword [r9]
test r10, r10
je case.0x201c21f7.999
test byte [rdx + 0x70], 4
jne case.0x201c21f7.999
mov r9, qword [rdx + 0x68]
cmp r9, r10
cmovb r9, r10
cmp r9, rcx
jbe case.0x201c21f7.999
mov qword [rdx + 0x68], r9
sub r9d, dword [rax]
mov dword [r8], r9d
mov rax, qword [rdx + 0x38]
mov rcx, qword [rax]
jmp 0x201c1ff1
xor esi, esi
mov r9d, ebp
test r9b, 0x40
je case.0x201c21f7.999
mov rcx, r15
mov esi, r9d
call fcn.200782c0
test sil, sil
js 0x201c233f
test r14d, r14d
je 0x201c2337
mov rcx, rbx
call fcn.200782c0
mov rsi, rbx
jmp case.0x201c21f7.999
mov rsi, rbx
jmp case.0x201c21f7.999
mov eax, 1
mov ecx, 0xe47faa33
mov edx, 0x1b8055e1
mov r8d, 0xe47faa34
mov r9d, 0x1b8055e0
mov r10d, 0x86186187
lea rsi, [0x2058c790]
lea r11, [0x20475900]
nop
mov edi, r9d
imul rdi, r10
shr rdi, 0x20
mov ebx, r9d
sub ebx, edi
shr ebx, 1
add ebx, edi
shr ebx, 4
lea edi, [rbx + rbx*4]
lea edi, [rbx + rdi*4]
add edi, r8d
movzx ebx, byte [rax + rsi - 1]
xor bl, byte [rdi + r11]
xor bl, 0x5d
mov byte [rax + rsi - 1], bl
cmp rax, 0x15
je 0x201c23e7
mov edi, edx
imul rdi, r10
shr rdi, 0x20
mov ebx, edx
sub ebx, edi
shr ebx, 1
add ebx, edi
shr ebx, 4
lea edi, [rbx + rbx*4]
lea edi, [rbx + rdi*4]
add edi, ecx
movzx ebx, byte [rax + rsi]
mov edi, edi
xor bl, byte [rdi + r11]
xor bl, 0x5d
mov byte [rax + rsi], bl
add rax, 2
add ecx, 0xfffffffe
add edx, 2
add r8d, 0xfffffffe
add r9d, 2
jmp 0x201c2370
mov al, 0x83
xchg byte [0x2058c7a5], al
jmp case.0x201c21f7.999
mov eax, 1
mov ecx, 0xc96ef1f5
mov edx, 0x36910e1f
mov r8d, 0xc96ef1f6
mov r9d, 0x36910e1e
mov r10d, 0x86186187
lea rsi, [0x2058c7d0]
lea r11, [0x20475940]
mov edi, r9d
imul rdi, r10
shr rdi, 0x20
mov ebx, r9d
sub ebx, edi
shr ebx, 1
add ebx, edi
shr ebx, 4
lea edi, [rbx + rbx*4]
lea edi, [rbx + rdi*4]
add edi, r8d
movzx ebx, byte [rdi + r11]
xor bl, 0xad
add byte [rax + rsi - 1], bl
cmp rax, 0x15
je 0x201c2493
mov edi, edx
imul rdi, r10
shr rdi, 0x20
mov ebx, edx
sub ebx, edi
shr ebx, 1
add ebx, edi
shr ebx, 4
lea edi, [rbx + rbx*4]
lea edi, [rbx + rdi*4]
add edi, ecx
mov edi, edi
movzx ebx, byte [rdi + r11]
xor bl, 0xad
add byte [rax + rsi], bl
add rax, 2
add ecx, 0xfffffffe
add edx, 2
add r8d, 0xfffffffe
add r9d, 2
jmp 0x201c2423
mov al, 0xcd
xchg byte [0x2058c7e5], al
jmp case.0x201c21f7.999
mov rax, rbx
cmp rbx, 4
jb 0x201c2563
mov rcx, rax
movzx r8d, byte [rdx + rax - 1]
mov r9, qword [rsp + 0x28]
mov byte [r9 + rax - 1], r8b
movzx r8d, byte [rdx + rax - 2]
mov r9, qword [rsp + 0x28]
mov byte [r9 + rax - 2], r8b
movzx r8d, byte [rdx + rax - 3]
mov r9, qword [rsp + 0x28]
mov byte [r9 + rax - 3], r8b
movzx r8d, byte [rdx + rax - 4]
mov r9, qword [rsp + 0x28]
mov byte [r9 + rax - 4], r8b
add rcx, 0xfffffffffffffffc
mov rax, rcx
jne 0x201c24b0
jmp 0x201c2563
and r8, 0xfffffffffffffffc
xor ecx, ecx
movzx r9d, byte [rdx + rcx]
mov r10, qword [rsp + 0x28]
mov byte [r10 + rcx], r9b
movzx r9d, byte [rdx + rcx + 1]
mov r10, qword [rsp + 0x28]
mov byte [r10 + rcx + 1], r9b
movzx r9d, byte [rdx + rcx + 2]
mov r10, qword [rsp + 0x28]
mov byte [r10 + rcx + 2], r9b
movzx r9d, byte [rdx + rcx + 3]
mov r10, qword [rsp + 0x28]
mov byte [r10 + rcx + 3], r9b
add rcx, 4
cmp r8, rcx
jne 0x201c2501
test rax, rax
je 0x201c2563
movzx r8d, byte [rdx + rcx]
mov r9, qword [rsp + 0x28]
mov byte [r9 + rcx], r8b
inc rcx
dec rax
jne 0x201c254d
mov rsi, rdi
jmp case.0x201c21f7.999
cmp ebx, 0x961
je 0x201c25e9
cmp ebx, 0x964
jne case.0x201c21f7.999
mov dword [0x2058d7dc], 0xb06ab83a
lea rax, [0x20475888]
jmp 0x201c26e3
cmp ebx, 0x1e7
jne case.0x201c21f7.999
lea rax, [0x204758e8]
jmp 0x201c26e3
cmp ebx, 0x10b
jne case.0x201c21f7.999
lea rax, [0x20475860]
jmp 0x201c26e3
lea rax, [0x20475848]
jmp 0x201c26e3
lea rax, [0x20475858]
jmp 0x201c26e3
lea rax, [0x20475850]
jmp 0x201c26e3
lea rax, [0x20475890]
jmp 0x201c26e3
lea rax, [0x20475868]
jmp 0x201c26e3
lea rax, [0x204758c0]
jmp 0x201c26e3
lea rax, [0x20475800]
jmp 0x201c26e3
lea rax, [0x204758a8]
jmp 0x201c26e3
lea rax, [0x20475880]
jmp 0x201c26e3
lea rax, [0x20475808]
jmp 0x201c26e3
lea rax, [0x20475830]
jmp 0x201c26e3
lea rax, [0x20475898]
jmp 0x201c26e3
lea rax, [0x20475838]
jmp 0x201c26e3
lea rax, [0x20475820]
jmp 0x201c26e3
lea rax, [0x204758d0]
jmp 0x201c26e3
lea rax, [0x204758c8]
jmp 0x201c26e3
lea rax, [0x204758b8]
jmp 0x201c26e3
lea rax, [0x204757f8]
jmp 0x201c26e3
lea rax, [0x204758b0]
jmp 0x201c26e3
lea rax, [0x20475828]
jmp 0x201c26e3
lea rax, [0x204757f0]
jmp 0x201c26e3
test r9b, 0x40
jne 0x201c26eb
lea rax, [0x204758d8]
jmp 0x201c26e3
lea rax, [0x20475878]
jmp 0x201c26e3
lea rax, [0x204758e0]
jmp 0x201c26e3
lea rax, [0x20475810]
jmp 0x201c26e3
lea rax, [0x20475840]
jmp 0x201c26e3
lea rax, [0x204758a0]
mov esi, dword [rax + 4]
jmp case.0x201c21f7.999
lea rsi, [0x2058c920]
jmp case.0x201c21f7.999
mov rsi, r14
jmp case.0x201c21f7.999
cmp rax, rdi
jae 0x201c271e
movzx r8d, byte [rcx + rax]
mov byte [rdx + rax], r8b
test r9b, r9b
js 0x201c2723
inc rax
test r9b, 0x40
je 0x201c26fb
mov esi, 1
jmp case.0x201c21f7.999
mov rsi, rdx
jmp case.0x201c21f7.999
mov rsi, rcx
jmp case.0x201c21f7.999
test r9b, 0x40
je 0x201c26f6
mov cl, 0x4a
mov al, 0x56
lock cmpxchg byte [0x2058c7f9], cl
je 0x201c2749
cmp al, 0xf1
jne 0x201c2728
lea rsi, [0x2058c7f0]
jmp case.0x201c21f7.999
movabs rax, 0x37472ecf532ad59f
xor qword [0x2058c7f0], rax
lea rsi, [0x2058c7f0]
xor byte [0x2058c7f8], 0x9f
mov al, 0xf1
xchg byte [0x2058c7f9], al