Function at 0x20311de0
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, rcx
mov rax, qword [0x205da420]
xor rax, rsp
mov qword [rsp + 0x80], rax
mov eax, r9d
and eax, 0x1f
cmp eax, 0xd
jb 0x20311e81
cmp eax, 0x14
jbe 0x20311eae
cmp eax, 0x17
jbe 0x20311f13
cmp eax, 0x19
ja 0x20311fd0
cmp eax, 0x18
jne 0x20312103
mov rbx, rdx
mov ebp, r9d
lea rax, [0x2046f1b8]
mov qword [r8], rax
mov rcx, r8
mov rdi, r8
call fcn.200a3bf0
mov r8, rdi
lea rax, [0x2046e1c8]
mov qword [rdi], rax
mov rdi, qword [rdi + 0x60]
mov r9d, ebp
test rdi, rdi
je 0x20312592
test r9b, 0x20
jne 0x203122dd
mov rdx, rbx
jmp 0x20311fb0
cmp eax, 4
ja 0x20311ee4
cmp eax, 1
jbe 0x20311f57
mov rdi, rdx
cmp eax, 2
je 0x203125a1
cmp eax, 4
jne 0x2031208b
lock inc dword [r8 + 8]
jmp 0x2031208b
cmp eax, 0xf
jae 0x20311f6a
cmp eax, 0xd
jne 0x20311fff
test esi, esi
je 0x20312762
mov rdi, r8
mov rcx, r8
mov esi, r9d
call fcn.200782c0
test sil, sil
jns 0x20311ff2
jmp 0x203125a1
cmp eax, 8
jbe 0x20311f95
cmp eax, 0xb
jae 0x2031200b
cmp eax, 9
jne 0x20312127
movzx eax, byte [0x205b7a09]
cmp al, 0x37
je 0x203124d4
jmp 0x2031242f
cmp eax, 0x15
je 0x203120ab
cmp eax, 0x16
jne 0x203120c0
lea rax, [0x2046e1c8]
mov qword [r8], rax
mov rdi, qword [r8 + 0x60]
test rdi, rdi
je 0x20312441
mov rcx, qword [rdi + 8]
test rcx, rcx
je 0x203128af
test r9b, r9b
jns 0x203128f6
jmp 0x203121a1
test eax, eax
je 0x20312092
mov rax, r8
mov r8, rdx
mov rdx, rsi
jmp 0x20311f7f
cmp eax, 0x10
ja 0x2031203f
cmp eax, 0xf
je 0x2031208b
mov rax, rsi
mov qword [rsp + 0x78], r8
mov qword [rsp + 0x70], r8
mov qword [rsp + 0x30], rdx
xor ecx, ecx
jmp 0x20312470
cmp eax, 6
jbe 0x2031207e
cmp eax, 8
jne 0x20312131
test r8d, r8d
je 0x20312037
mov rcx, rdx
mov edi, r9d
mov r14, r8
mov rbx, rdx
call fcn.200782c0
mov rdx, rbx
mov r8, r14
mov r9d, edi
xor edi, edi
xor ecx, ecx
jmp 0x2031202d
cmp eax, 0x1a
jne 0x20312170
mov esi, r9d
mov rdi, r8
mov rcx, r8
mov rbx, rdx
call fcn.2007ad00
test ebx, ebx
je 0x203122b9
mov rcx, rdi
call fcn.200782c0
jmp 0x203125a1
lea rdi, [0x205ebf90]
jmp 0x203125a1
cmp eax, 0xc
jne 0x203121e1
mov rdi, qword [rdx + 8]
test rdi, rdi
sete cl
movzx eax, byte [0x205b7972]
cmp al, 0x2a
je 0x2031274d
test r9b, 0x40
jne 0x20312640
mov rdi, rdx
jmp 0x203125a1
cmp eax, 0x12
jbe 0x203121f1
mov edi, 0xffffffff
cmp eax, 0x14
je 0x203125a1
movzx eax, byte [0x205b79f5]
cmp al, 0x61
jne 0x203122f2
test r9d, 0x200
je 0x203125cd
lea rdi, [0x205b79e0]
jmp 0x203125a1
cmp eax, 5
je 0x2031208b
mov rcx, r8
call fcn.20423908
xor edi, edi
jmp 0x203125a1
mov r11, qword [rdx + 0x38]
mov rbx, qword [r11]
test rbx, rbx
je 0x20312239
lea r10, [rdx + 0x38]
jmp 0x203129ae
test r8d, r8d
je 0x20312250
lea rdi, [rsp + 0x48]
xor ecx, ecx
jmp 0x2031265e
movzx eax, byte [0x205b79b5]
lea rdi, [0x205b79a0]
cmp al, 0x59
je 0x203125a1
mov cl, 0xcf
nop dword [rax + rax]
mov al, 0x19
lock cmpxchg byte [0x205b79b5], cl
je 0x2031231e
cmp al, 0x59
je 0x203123bf
test r9d, 0x200
je 0x203120e0
jmp 0x2031208b
test edx, edx
je 0x203122c8
lea r10, [rsp + 0x30]
lea rbx, [rsp + 0x78]
lea rcx, [rsp + 0x50]
lea rax, [rsp + 0x68]
mov r11, rbx
jmp 0x203124a5
movzx edi, byte [r8 + 0x19]
jmp 0x203125a1
movzx eax, byte [0x205b7af3]
lea rdi, [0x205b7af0]
cmp al, 0xeb
je 0x203125a1
mov dl, 0x12
lea rcx, [rsp + 0x68]
mov al, 0x3d
lock cmpxchg byte [0x205b7af3], dl
je 0x203123dc
cmp al, 0xeb
je 0x203125a1
test r9b, r9b
jns 0x2031214e
jmp 0x2031249b
mov ebx, r9d
cmp eax, 0x1b
ja 0x20312262
movzx eax, byte [0x205b79d6]
cmp al, 0x74
je 0x20312a1d
lea rdi, [rsp + 0x48]
lea rcx, [rsp + 0x40]
mov r9d, ebx
test r9b, r9b
jns 0x203128f6
mov r15, rdx
mov r14, r8
mov ebp, r9d
mov rbx, qword [rcx]
mov rax, qword [rbx + 0x10]
call qword [case.0x200c66ec.0]
test rax, rax
je 0x20312417
add rbx, 0x10
lea rcx, [rsp + 0x20]
lea r11, [rsp + 0x58]
lea r10, [rsp + 0x50]
mov r9d, ebp
mov r8, r14
mov rdx, r15
jmp 0x203129cc
mov rcx, r8
mov rdi, r8
call fcn.20423890
jmp 0x203125a1
cmp eax, 0x11
jne 0x20312290
mov rax, qword [rdx]
mov rax, qword [rax + 0x18]
lea r9, [rsp + 0x58]
mov rcx, rdx
mov rdx, r9
call qword [case.0x200c66ec.0]
mov rax, qword [rsp + 0x60]
mov rcx, qword [rsi + 8]
mov rax, qword [rax + 8]
cmp rax, qword [rcx + 8]
sete al
mov ecx, dword [rsp + 0x58]
cmp ecx, dword [rsi]
sete cl
and cl, al
movzx edi, cl
jmp 0x203125a1
mov edi, 0xffffffff
test r9d, 0x100
jne 0x203125a1
jmp 0x2031249b
mov rdi, rsi
test r9b, 0x20
je 0x20311ec8
jmp 0x203125a1
xor eax, eax
sub eax, dword [rsi - 4]
cdqe
lea rdi, [rsi + rax]
add rdi, 0xffffffffffffff68
mov rcx, rdi
mov r14, r8
call fcn.200a7e10
test r14d, r14d
je 0x203123ce
mov r9d, ebx
jmp 0x203123df
mov qword [rsp + 0x28], rdx
mov qword [rsp + 0x50], r8
mov qword [rsp + 0x48], rsi
mov qword [rsp + 0x40], rsi
mov qword [rsp + 0x20], r8
cmp rsi, r8
jae 0x20312a08
xor eax, eax
jmp 0x20312502
test sil, 0x40
je 0x203125a1
jmp 0x203125cd
mov rdi, r8
test r9d, 0x100
jne 0x203125a1
jmp 0x2031267d
mov rcx, qword [rdi + 8]
test rcx, rcx
mov rdx, rbx
jne 0x20312529
jmp 0x2031257e
mov cl, 0x4f
lea rdi, [0x205b79e0]
mov al, 0xa6
lock cmpxchg byte [0x205b79f5], cl
je 0x203128c3
test r9b, 0x20
je 0x2031249b
cmp al, 0x61
jne 0x203122fb
jmp 0x203125a1
test r9d, 0x100
je 0x20312692
mov ecx, 0x51e9d00c
mov r8d, 0x51e9d00a
xor r10d, r10d
movabs r11, 0xcccccccccccccccd
lea rsi, [0x2048ff20]
add rsi, 0x51e9d008
lea rdi, [0x205b79a0]
mov rax, rcx
mul r11
mov r9, rdx
mov rax, r8
mul r11
shr rdx, 2
and rdx, 0xfffffffffffffffc
lea rax, [rdx + rdx*4]
mov rdx, rsi
sub rdx, rax
movzx eax, byte [rdx + r10 + 3]
xor al, 0xf1
add byte [r10 + rdi], al
cmp r10, 0x14
je 0x20312422
shr r9, 2
and r9, 0xfffffffffffffffc
lea rax, [r9 + r9*4]
mov rdx, rsi
sub rdx, rax
add rdx, 4
movzx eax, byte [rdx + r10]
xor al, 0xf1
add byte [r10 + rdi + 1], al
add r10, 2
add rcx, 2
add r8, 2
jmp 0x20312358
test r9b, 0x40
je 0x203125a1
jmp 0x20312938
test bl, 0x40
je 0x203125a1
jmp 0x20312491
mov rdi, rcx
test r9b, 0x20
jne 0x203123fd
mov rcx, rdi
mov ebx, r9d
call fcn.200782c0
test bl, bl
jns 0x203125a1
jmp 0x2031267d
xor byte [0x205b7af0], 0xed
xor byte [0x205b7af1], 0x26
xor byte [0x205b7af2], 0x8c
jmp 0x203125cd
mov r9d, ebp
mov r8, r14
jmp 0x203128af
mov al, 0x59
xchg byte [0x205b79b5], al
jmp 0x203125a1
mov cl, 0xda
mov al, 0x2d
lock cmpxchg byte [0x205b7a09], cl
je 0x2031244f
cmp al, 0x37
je 0x20312456
test r9d, 0x200
je 0x2031242f
jmp 0x203128d0
xor eax, eax
jmp 0x203125de
test r9b, 0x40
jne 0x203124d4
mov al, 0x61
xchg byte [0x205b79f5], al
lea rdi, [0x205b79e0]
jmp 0x203125a1
mov qword [rsp + 0x68], rcx
cmp rcx, rax
jae 0x2031249b
mov rcx, qword [rsp + 0x30]
mov rdx, qword [rsp + 0x68]
movzx ecx, byte [rcx + rdx]
mov r8, qword [rsp + 0x70]
mov byte [r8 + rdx], cl
mov rcx, qword [rsp + 0x68]
inc rcx
jmp 0x20312470
mov rdi, qword [rsp + 0x78]
jmp 0x203125a1
test r9b, 0x40
jne 0x203124e0
mov edi, 0xffffffff
test byte [rdx + 0x70], 4
jne 0x203125a1
mov r8, qword [rdx + 0x68]
cmp r8, rax
cmovb r8, rax
cmp r8, rbx
jbe 0x203125a1
test r9b, 0x20
jne 0x203124ed
lea rdi, [0x205b7a00]
jmp 0x203125a1
mov rcx, rsi
call fcn.200782c0
jmp 0x2031267d
mov qword [rdx + 0x68], r8
sub r8d, dword [r11]
mov dword [rcx], r8d
mov rax, qword [r10]
mov rbx, qword [rax]
jmp 0x203125c8
cmp rax, qword [rsp + 0x28]
jae 0x203128f0
mov rcx, qword [rsp + 0x20]
movzx ecx, byte [rcx + rax]
mov r10, qword [rsp + 0x40]
mov byte [r10 + rax], cl
lea rdi, [rsp + 0x78]
lea rcx, [rsp + 0x68]
test r9d, 0x200
jne 0x20312537
inc rax
jmp 0x20312502
mov rbx, r8
mov ebp, r9d
mov rax, qword [rcx]
mov rax, qword [rax + 0x10]
call qword [case.0x200c66ec.0]
test rax, rax
je 0x2031256e
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
mov r8, rbx
jmp 0x2031257e
mov r9d, ebp
test r9b, 0x40
mov r8, rbx
je 0x20312778
mov rcx, rdi
mov edi, r9d
mov rbx, r8
call fcn.200782c0
mov r8, rbx
mov r9d, edi
xor eax, eax
test esi, esi
jne 0x20312629
jmp 0x20312762
mov rcx, qword [rsp + 0x80]
xor rcx, rsp
call fcn.20421ce0
mov rax, rdi
add rsp, 0x88
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
movzx edi, byte [rbx]
jmp 0x203125a1
mov al, 0xeb
xchg byte [0x205b7af3], al
lea rdi, [0x205b7af0]
jmp 0x203125a1
lea ecx, [rax + 0x6d21f3b4]
mov edx, 0xba2e8ba3
imul rdx, rcx
shr rdx, 0x23
lea ecx, [rdx + rdx*4]
lea ecx, [rdx + rcx*2]
neg ecx
add ecx, eax
add ecx, 0x6d21f3b4
cdqe
lea rdi, [0x205b7a00]
movzx edx, byte [rax + rdi]
lea r10, [0x2048ff80]
sub r10, rcx
xor dl, byte [r10 + 0xa]
xor dl, 0x9d
mov byte [rax + rdi], dl
inc eax
cmp eax, 9
jge 0x20312633
test r9b, r9b
jns 0x203125de
jmp 0x203128d8
mov al, 0x37
xchg byte [0x205b7a09], al
jmp 0x203125a1
mov r10b, 0x47
mov al, 0x15
lock cmpxchg byte [0x205b7972], r10b
je 0x203126ae
test r9b, 0x20
je 0x20312762
cmp al, 0x2a
je 0x20312685
test r9b, r9b
js 0x20312640
mov rbx, rdx
mov r14, r8
mov rcx, rsi
mov edi, r9d
call fcn.200782c0
mov r9d, edi
test r9b, 0x40
jne 0x2031269e
mov rdi, rsi
jmp 0x203125a1
test r9d, 0x400
jne 0x2031274d
lea rdi, [0x205b7af0]
jmp 0x203125a1
lea rdi, [rsp + 0x70]
mov r8, r14
mov rdx, rbx
jmp 0x20311f3c
mov eax, 0x82b8d5b7
mov edx, 0x7d472a5e
mov r8d, 1
mov r9d, 0x82b8d5b8
mov r10d, 0x7d472a5c
mov r11d, 0xba2e8ba3
lea rsi, [0x205b7960]
lea rbx, [0x2048fef0]
nop
mov r14d, edx
imul r14, r11
shr r14, 0x24
lea r15d, [r14 + r14*4]
lea ebp, [r14 + r15*4]
add r14d, eax
add r14d, ebp
mov r15d, r10d
imul r15, r11
shr r15, 0x24
lea r12d, [r15 + r15*4]
lea ebp, [r15 + r12*4]
add r15d, r9d
add r15d, ebp
movzx ebp, byte [r15 + rbx]
xor bpl, 0x6d
add byte [r8 + rsi - 1], bpl
movzx ebp, byte [r14 + rbx]
xor bpl, 0x6d
add byte [r8 + rsi], bpl
add eax, 0xfffffffe
add edx, 2
add r8, 2
add r9d, 0xfffffffe
add r10d, 2
cmp r8, 0x13
jne 0x203126e0
mov al, 0x2a
xchg byte [0x205b7972], al
test cl, 1
je 0x203125a1
lea rdi, [0x205b7960]
jmp 0x203125a1
mov rdi, r8
jmp 0x203125a1
mov rdx, qword [rsp + 0x28]
test rdx, rdx
je 0x203127fd
mov rax, qword [rsp + 0x20]
lea r8, [rdx - 1]
mov r10, rdx
and r10, 3
je 0x203127a8
lea rcx, [rdx - 1]
movzx r11d, byte [rax + rdx - 1]
mov rsi, qword [rsp + 0x40]
mov byte [rsi + rdx - 1], r11b
mov rdx, rcx
dec r10
jne 0x2031278a
jmp 0x203127ab
mov rcx, rdx
cmp r8, 3
jb 0x203127fd
mov rdx, rcx
movzx r8d, byte [rax + rcx - 1]
mov r10, qword [rsp + 0x40]
mov byte [r10 + rcx - 1], r8b
movzx r8d, byte [rax + rcx - 2]
mov r10, qword [rsp + 0x40]
mov byte [r10 + rcx - 2], r8b
movzx r8d, byte [rax + rcx - 3]
mov r10, qword [rsp + 0x40]
mov byte [r10 + rcx - 3], r8b
movzx r8d, byte [rax + rcx - 4]
mov r10, qword [rsp + 0x40]
mov byte [r10 + rcx - 4], r8b
add rdx, 0xfffffffffffffffc
mov rcx, rdx
jne 0x203127b4
test r9d, 0x800
je 0x203125cd
mov rdi, qword [rsp + 0x48]
jmp 0x203125a1
mov ecx, 0x2f63a086
xor r8d, r8d
movabs r9, 0xcccccccccccccccd
lea r10, [0x2048ff60]
lea r11, [0x205b79e0]
nop word cs:[rax + rax]
mov rax, rcx
mul r9
shr rdx, 2
and rdx, 0xfffffffffffffffc
lea rdx, [rdx + rdx*4]
mov rax, r10
sub rax, rdx
movzx edx, byte [rax + r8 + 0x2f63a086]
xor dl, 0x46
add byte [r8 + r11], dl
cmp r8, 0x14
je 0x2031245c
movzx eax, byte [rax + r8 + 0x2f63a087]
xor al, 0x46
add byte [r8 + r11 + 1], al
add r8, 2
add rcx, 2
jmp 0x20312840
mov rcx, qword [rax]
mov r10, qword [rcx]
mov rcx, rax
mov edx, 1
mov rax, r10
mov ebx, r9d
mov r14, r8
call qword [case.0x200c66ec.0]
mov r8, r14
mov r9d, ebx
mov rcx, rdi
mov edi, r9d
mov rbx, r8
call fcn.200782c0
mov r8, rbx
mov r9d, edi
test r9d, 0x100
jne 0x20312814
test esi, esi
je 0x20312762
mov rcx, r8
mov rdi, r8
call fcn.200782c0
jmp 0x203125a1
cmp al, 0x74
je 0x20312a1d
test r9b, 0x20
je 0x20312912
mov cl, 0x24
mov al, 0xe2
lock cmpxchg byte [0x205b79d6], cl
je 0x2031292b
test r9d, 0x200
je 0x203128e8
jmp 0x2031208b
test r9d, 0x100
jne 0x2031280a
lea rdi, [rsp + 0x28]
xor ecx, ecx
jmp 0x203126ae
test r9d, 0x400
je 0x2031247a
mov rdi, rdx
mov ecx, 0x574565d0
xor r14d, r14d
movabs r15, 0x2e8ba2e8ba2e8ba3
lea r12, [0x2048ff40]
lea r13, [0x205b79c0]
lea r10, [rsp + 0x38]
lea r11, [rsp + 0x50]
lea rbx, [0x2048ff4f]
mov rax, rcx
mul r15
shr rdx, 2
imul rax, rdx, 0xffffffffffffffea
add rax, r12
movzx edx, byte [r14 + rax + 0x574565d0]
movzx eax, byte [r14 + rax + 0x574565d1]
xor dl, 0x96
add byte [r14 + r13], dl
xor al, 0x96
add byte [r14 + r13 + 1], al
add r14, 2
add rcx, 2
cmp r14, 0x16
jne 0x2031296c
mov rdx, rdi
test r9d, 0x800
je 0x20312a08
mov rdi, qword [rdx + 0x50]
lea rax, [rsp + 0x50]
cmp dword [rdi], 0
mov rcx, rdi
jg 0x203125c8
test r9d, 0x400
je 0x2031288c
mov rax, qword [rdx + 0x40]
mov rax, qword [rax]
test rax, rax
jne 0x203124a5
lea r10, [rsp + 0x38]
lea r11, [rsp + 0x50]
xor ebx, ebx
test r9d, 0x1000
jne 0x203129ae
mov edi, 0xffffffff
jmp 0x203125a1
test r9d, 0x2000
jne 0x2031276a
mov al, 0x74
xchg byte [0x205b79d6], al
lea rdi, [0x205b79c0]
jmp 0x203125a1