Function at 0x20254200
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x78
mov rax, qword [0x20490f78]
xor rax, rsp
mov qword [rsp + 0x70], rax
mov r11, qword [0x20475bf8]
movsxd rax, dword [r11]
mov qword [rsp + 0x30], rax
mov al, 1
jmp 0x20254247
mov r8d, dword [0x20389220]
test al, al
je 0x20254240
mov r8d, dword [0x20389220]
test al, al
je 0x20254240
mov dword [rsp + 0x28], r8d
mov rax, qword [rdx]
mov r8, qword [rdx + 0x10]
mov rdi, qword [r8]
mov esi, dword [r8 + 0x14]
movabs r8, 0x23d00000000
mov qword [rcx + 0x149c], r8
xor ebx, ebx
mov r13d, 0xffffffff
xor r9d, r9d
test esi, esi
jg 0x202542a0
jmp 0x2025430d
mov word [rax + r9*4 + 2], 0
inc r9
cmp rsi, r9
je 0x202542d0
cmp word [rax + r9*4], 0
je 0x20254290
movsxd r8, dword [rcx + 0x149c]
lea r10, [r8 + 1]
mov dword [rcx + 0x149c], r10d
mov dword [rcx + r8*4 + 0xbac], r9d
mov byte [rcx + r9 + 0x14a4], 0
mov r13d, r9d
jmp 0x20254298
mov r9d, dword [rcx + 0x149c]
cmp r9d, 1
jle 0x2025430d
mov dword [rdx + 8], r13d
mov edi, dword [rcx + 0x149c]
cmp edi, 2
jl 0x20254493
shr rdi, 1
jmp 0x2025439f
mov r9d, dword [rcx + 0x149c]
cmp r9d, 2
jge 0x202542dd
lea r8d, [r13 + 1]
cmp r13d, 2
cmovl r13d, r8d
cmovge r8d, ebx
lea r10d, [r9 + 1]
mov dword [rcx + 0x149c], r10d
movsxd r9, r9d
mov dword [rcx + r9*4 + 0xbac], r8d
movsxd r8, r8d
mov word [rax + r8*4], 1
mov byte [rcx + r8 + 0x14a4], 0
mov r9d, dword [rcx + 0x16fc]
mov r10d, r9d
not r10d
lea r9d, [r10 + r9*2]
mov dword [rcx + 0x16fc], r9d
test rdi, rdi
je 0x20254300
movzx r8d, word [rdi + r8*4 + 2]
sub dword [rcx + 0x1700], r8d
jmp 0x20254300
mov r15d, ebp
movsxd r8, r15d
mov dword [rcx + r8*4 + 0xba8], r9d
lea r8, [rdi - 1]
cmp rdi, 1
mov rdi, r8
jle 0x20254493
mov r9d, dword [rcx + rdi*4 + 0xba8]
lea r14d, [rdi + rdi]
mov r8d, dword [rcx + 0x149c]
mov r15d, edi
cmp r14d, r8d
jg 0x20254383
movsxd rbx, r9d
mov ebp, edi
jmp 0x202543ee
movsxd r10, ebp
mov dword [rcx + r10*4 + 0xba8], r8d
lea r14d, [r15 + r15]
mov r8d, dword [rcx + 0x149c]
mov ebp, r15d
cmp r14d, r8d
jg 0x20254383
cmp r14d, r8d
jge 0x20254450
mov r8d, r14d
or r8d, 1
movsxd r10, r8d
movsxd r15, dword [rcx + r10*4 + 0xba8]
movsxd r10, r14d
movsxd r10, dword [rcx + r10*4 + 0xba8]
movzx r12d, word [rax + r10*4]
cmp word [rax + r15*4], r12w
jae 0x20254430
mov r15d, r8d
jmp 0x20254453
jne 0x20254450
movzx r12d, byte [rcx + r15 + 0x14a4]
mov r15d, r14d
cmp r12b, byte [rcx + r10 + 0x14a4]
jbe 0x2025441c
jmp 0x20254453
mov r15d, r14d
movsxd r8, r15d
mov r8d, dword [rcx + r8*4 + 0xba8]
movsxd r10, r8d
movzx r14d, word [rax + r10*4]
cmp word [rax + rbx*4], r14w
jb 0x20254380
jne 0x202543d0
movzx r14d, byte [rcx + rbx + 0x14a4]
cmp r14b, byte [rcx + r10 + 0x14a4]
ja 0x202543d0
jmp 0x20254380
add qword [rsp + 0x30], r11
movsxd r11, esi
mov r8d, dword [rcx + 0x149c]
jmp 0x202544d2
mov esi, r9d
movsxd r8, esi
mov dword [rcx + r8*4 + 0xba8], r11d
inc r11
mov r8d, dword [rcx + 0x149c]
cmp r8d, 1
jle 0x20254772
mov edi, dword [rcx + 0xbac]
lea r12d, [r8 - 1]
mov dword [rcx + 0x149c], r12d
movsxd r8, r8d
mov ebx, dword [rcx + r8*4 + 0xba8]
mov dword [rcx + 0xbac], ebx
mov esi, 1
mov r14d, 1
cmp r8d, 3
jl 0x202545e6
movsxd r9, ebx
mov ebp, 1
mov r15d, 2
jmp 0x20254542
movsxd r10, ebp
mov dword [rcx + r10*4 + 0xba8], r8d
lea r15d, [r14 + r14]
mov r12d, dword [rcx + 0x149c]
mov ebp, r14d
cmp r15d, r12d
jg 0x202545e6
cmp r15d, r12d
jge 0x202545a0
mov r8d, r15d
or r8d, 1
movsxd r10, r8d
movsxd r14, dword [rcx + r10*4 + 0xba8]
movsxd r10, r15d
movsxd r10, dword [rcx + r10*4 + 0xba8]
movzx r12d, word [rax + r10*4]
cmp word [rax + r14*4], r12w
jae 0x20254580
mov r14d, r8d
jmp 0x202545a3
jne 0x202545a0
movzx r12d, byte [rcx + r14 + 0x14a4]
mov r14d, r15d
cmp r12b, byte [rcx + r10 + 0x14a4]
jbe 0x20254570
jmp 0x202545a3
mov r14d, r15d
cmp byte [0x204a1cc1], 0
jne 0x202545e3
movsxd r8, r14d
mov r8d, dword [rcx + r8*4 + 0xba8]
movsxd r10, r8d
movzx r15d, word [rax + r10*4]
cmp word [rax + r9*4], r15w
jb 0x202545e3
jne 0x20254520
movzx r15d, byte [rcx + r9 + 0x14a4]
cmp r15b, byte [rcx + r10 + 0x14a4]
ja 0x20254520
mov r14d, ebp
movsxd r9, edi
movsxd r8, r14d
mov dword [rcx + r8*4 + 0xba8], ebx
movsxd rdi, dword [rcx + 0xbac]
movsxd r8, dword [rcx + 0x14a0]
lea r10, [r8 - 1]
mov dword [rcx + 0x14a0], r10d
mov dword [rcx + r8*4 + 0xba4], r9d
movsxd r8, dword [rcx + 0x14a0]
lea r10, [r8 - 1]
mov dword [rcx + 0x14a0], r10d
mov dword [rcx + r8*4 + 0xba4], edi
movzx r8d, word [rax + rdi*4]
add r8w, word [rax + r9*4]
mov word [rax + r11*4], r8w
movzx r8d, byte [rcx + r9 + 0x14a4]
movzx r10d, byte [rcx + rdi + 0x14a4]
cmp r8b, r10b
cmova r10d, r8d
mov r8d, r10d
xor r8b, 1
and r10b, 1
add r10b, r10b
add r10b, r8b
mov byte [rcx + r11 + 0x14a4], r10b
mov word [rax + rdi*4 + 2], r11w
mov word [rax + r9*4 + 2], r11w
mov dword [rcx + 0xbac], r11d
mov r8d, dword [rcx + 0x149c]
cmp r8d, 2
jl 0x202544b3
mov r9d, 1
mov edi, 2
jmp 0x202546d1
movsxd r9, r9d
mov dword [rcx + r9*4 + 0xba8], r8d
lea edi, [rsi + rsi]
mov r8d, dword [rcx + 0x149c]
mov r9d, esi
cmp edi, r8d
jg 0x202544b3
cmp edi, r8d
jge 0x20254730
mov r8d, edi
or r8d, 1
movsxd r10, r8d
movsxd rsi, dword [rcx + r10*4 + 0xba8]
movsxd r10, edi
movsxd r10, dword [rcx + r10*4 + 0xba8]
movzx ebx, word [rax + r10*4]
cmp word [rax + rsi*4], bx
jae 0x20254710
mov esi, r8d
jmp 0x20254732
jne 0x20254730
movzx ebx, byte [rcx + rsi + 0x14a4]
mov esi, edi
cmp bl, byte [rcx + r10 + 0x14a4]
jbe 0x202546fe
jmp 0x20254732
mov esi, edi
movsxd r8, esi
mov r8d, dword [rcx + r8*4 + 0xba8]
movsxd r10, r8d
movzx edi, word [rax + r10*4]
cmp word [rax + r11*4], di
jb 0x202544b0
jne 0x202546b0
movzx ebx, byte [rcx + r11 + 0x14a4]
cmp bl, byte [rcx + r10 + 0x14a4]
ja 0x202546b0
jmp 0x202544b0
mov r8d, dword [rcx + 0xbac]
movsxd r9, dword [rcx + 0x14a0]
lea r10, [r9 - 1]
mov dword [rcx + 0x14a0], r10d
mov dword [rcx + r9*4 + 0xba4], r8d
mov r11, qword [rdx]
mov esi, dword [rdx + 8]
mov rdx, qword [rdx + 0x10]
mov r9, qword [rdx]
mov r10, qword [rdx + 8]
mov edi, dword [rdx + 0x10]
movsxd rdx, dword [rdx + 0x18]
xorps xmm0, xmm0
movups xmmword [rcx + 0xb98], xmm0
movups xmmword [rcx + 0xb88], xmm0
movsxd r8, dword [rcx + 0x14a0]
movsxd r8, dword [rcx + r8*4 + 0xba8]
mov word [r11 + r8*4 + 2], 0
movsxd r12, dword [rcx + 0x14a0]
cmp r12, 0x23b
jg 0x20254ac1
mov dword [rsp + 0x2c], edi
mov qword [rsp + 0x48], r10
mov qword [rsp + 0x40], r9
mov r8d, dword [0x20475bf0]
lea edi, [r8 + 1]
mov dword [0x20475bf0], edi
mov r9d, r8d
not r9d
xor r8d, edi
not edi
and edi, r9d
or edi, r8d
not edi
mov r8b, 1
nop dword [rax]
test r8b, r8b
je 0x20254820
test r8b, r8b
je 0x20254820
test edi, edi
mov qword [rsp + 0x38], r13
je 0x20254838
xor r15d, r15d
jmp 0x20254849
xor r8d, r8d
test r8b, r8b
jne 0x20254d1d
jmp 0x20254d15
xor r8d, r8d
test r8b, r8b
jne 0x20254859
mov r8b, 1
test r8b, r8b
jne 0x20254867
mov r8b, 1
nop dword [rax]
test r8b, r8b
je 0x20254860
jmp 0x20254851
lea r9d, [r12 + 1]
xor r10d, r10d
jmp 0x202548a3
mov bpl, r14b
add r10d, ebp
inc r9d
mov rbx, qword [rsp + 0x30]
mov r8, rbx
inc r8
cmp ebx, 0x23b
mov r12, r8
je 0x20254940
mov qword [rsp + 0x30], r12
movsxd r13, dword [rcx + r12*4 + 0xbac]
movzx r8d, word [r11 + r13*4 + 2]
movzx r8d, word [r11 + r8*4 + 2]
xor ebp, ebp
mov ebx, edx
cmp edx, r8d
setle r14b
jle 0x202548cf
inc r8d
mov ebx, r8d
mov word [r11 + r13*4 + 2], bx
cmp r13d, esi
jg 0x20254880
movsxd r8, ebx
inc word [rcx + r8*2 + 0xb88]
xor r8d, r8d
cmp r13d, dword [rsp + 0x2c]
jl 0x20254904
mov r8d, r13d
sub r8d, dword [rsp + 0x2c]
movsxd r8, r8d
mov r12, qword [rsp + 0x48]
mov r8d, dword [r12 + r8*4]
movzx r12d, word [r11 + r13*4]
add ebx, r8d
imul ebx, r12d
add dword [rcx + 0x16fc], ebx
cmp qword [rsp + 0x40], 0
je 0x20254880
mov rbx, qword [rsp + 0x40]
movzx ebx, word [rbx + r13*4 + 2]
add r8d, ebx
imul r8d, r12d
add dword [rcx + 0x1700], r8d
jmp 0x20254880
test r10d, r10d
mov r13, qword [rsp + 0x38]
je 0x20254ac1
mov bl, 1
xor ebp, ebp
jmp 0x20254992
dec r8d
mov word [rcx + r12*2 + 0xb88], r8w
movsxd r8, r14d
add word [rcx + r8*2 + 0xb88], 2
dec word [rcx + rdx*2 + 0xb88]
lea r8d, [r10 - 2]
cmp r10d, 2
mov r10d, r8d
jle 0x20254a47
mov r12, rdx
jmp 0x202549af
movzx r8d, word [rcx + r12*2 + 0xb88]
test r8w, r8w
jne 0x20254960
mov r14, r12
dec r12
nop word cs:[rax + rax]
test bl, bl
je 0x202549c0
test bl, bl
je 0x202549c0
movzx r8d, word [0x20389218]
cmp edi, 1
mov r13d, 0
sbb r13d, r13d
sub r8d, r15d
and r8d, r13d
nop word cs:[rax + rax]
test bpl, bpl
jne 0x20254a02
test r8w, r8w
setne r13b
test bpl, bpl
je 0x20254a10
test bl, bl
je 0x202549f0
jmp 0x202549f5
or r13b, byte [0x204a1cc1]
test bpl, bpl
jne 0x20254a37
nop dword [rax]
mov r8d, r13d
and r8b, 1
mov byte [0x204a1cc1], r8b
test bpl, bpl
je 0x202549a0
mov r8d, r13d
and r8b, 1
mov byte [0x204a1cc1], r8b
jmp 0x20254a20
test edx, edx
mov r13, qword [rsp + 0x38]
je 0x20254ac1
lea r10, [rcx + 0xba4]
jmp 0x20254a67
dec rdx
test edx, edx
je 0x20254ac1
movzx edi, word [rcx + rdx*2 + 0xb88]
test edi, edi
jne 0x20254a84
jmp 0x20254a60
dec edi
je 0x20254a60
movsxd r8, r9d
lea rbx, [r10 + r8*4]
nop dword [rax + rax]
movsxd r8, dword [rbx]
dec r9d
add rbx, 0xfffffffffffffffc
cmp r8d, esi
jg 0x20254a90
movzx ebp, word [r11 + r8*4 + 2]
mov ebx, edx
sub ebx, ebp
je 0x20254a80
movzx ebp, word [r11 + r8*4]
imul ebx, ebp
add dword [rcx + 0x16fc], ebx
mov word [r11 + r8*4 + 2], dx
jmp 0x20254a80
movzx edx, word [rcx + 0xb88]
lea r8d, [rdx + rdx]
mov word [rsp + 0x52], r8w
movzx r8d, word [rcx + 0xb8a]
lea edx, [r8 + rdx*2]
lea r8d, [rdx + rdx]
mov word [rsp + 0x54], r8w
movzx r8d, word [rcx + 0xb8c]
lea edx, [r8 + rdx*2]
lea r8d, [rdx + rdx]
mov word [rsp + 0x56], r8w
movzx r8d, word [rcx + 0xb8e]
lea edx, [r8 + rdx*2]
lea r8d, [rdx + rdx]
mov word [rsp + 0x58], r8w
movzx r8d, word [rcx + 0xb90]
lea edx, [r8 + rdx*2]
lea r8d, [rdx + rdx]
mov word [rsp + 0x5a], r8w
movzx r8d, word [rcx + 0xb92]
lea edx, [r8 + rdx*2]
lea r8d, [rdx + rdx]
mov word [rsp + 0x5c], r8w
movzx r8d, word [rcx + 0xb94]
lea edx, [r8 + rdx*2]
lea r8d, [rdx + rdx]
mov word [rsp + 0x5e], r8w
movzx r8d, word [rcx + 0xb96]
lea edx, [r8 + rdx*2]
lea r8d, [rdx + rdx]
mov word [rsp + 0x60], r8w
movzx r8d, word [rcx + 0xb98]
lea edx, [r8 + rdx*2]
lea r8d, [rdx + rdx]
mov word [rsp + 0x62], r8w
movzx r8d, word [rcx + 0xb9a]
lea edx, [r8 + rdx*2]
lea r8d, [rdx + rdx]
mov word [rsp + 0x64], r8w
movzx r8d, word [rcx + 0xb9c]
lea edx, [r8 + rdx*2]
lea r8d, [rdx + rdx]
mov word [rsp + 0x66], r8w
movzx r8d, word [rcx + 0xb9e]
lea edx, [r8 + rdx*2]
lea r8d, [rdx + rdx]
mov word [rsp + 0x68], r8w
movzx r8d, word [rcx + 0xba0]
lea edx, [r8 + rdx*2]
add edx, edx
mov word [rsp + 0x6a], dx
add dx, word [rcx + 0xba2]
add edx, edx
mov word [rsp + 0x6c], dx
add dx, word [rcx + 0xba4]
add edx, edx
mov word [rsp + 0x6e], dx
test r13d, r13d
js 0x20254cf6
inc r13d
xor ecx, ecx
jmp 0x20254c20
mov word [rax + rcx*4], si
inc rcx
cmp rcx, r13
je 0x20254cf6
movzx esi, word [rax + rcx*4 + 2]
test esi, esi
je 0x20254c14
movzx edx, word [rsp + rsi*2 + 0x50]
lea r8d, [rdx + 1]
mov word [rsp + rsi*2 + 0x50], r8w
mov r9d, esi
and r9d, 3
xor r10d, r10d
cmp si, 4
jae 0x20254c50
jmp 0x20254cc0
mov r11d, esi
not r11d
xor esi, 0xfffc
and r11d, 0xffff0003
or r11d, esi
inc r11d
xor r10d, r10d
nop dword [rax]
mov r8d, edx
and r8d, 1
or r8d, r10d
shl r8d, 2
mov r10d, edx
not r10d
mov esi, edx
xor esi, 2
and r10d, 0x7ffffffd
or r10d, esi
not r10d
mov esi, edx
shr esi, 2
and esi, 1
or esi, r8d
or esi, r10d
mov r8d, edx
shr r8d, 3
and r8d, 1
lea esi, [r8 + rsi*2]
shr edx, 4
lea r10d, [rsi + rsi]
add r11d, 4
jne 0x20254c70
test r9d, r9d
je 0x20254c10
nop dword [rax]
mov esi, edx
not esi
mov r8d, edx
xor r8d, 1
and esi, 0xfffffffe
or esi, r8d
not esi
or esi, r10d
shr edx, 1
lea r10d, [rsi + rsi]
dec r9d
jne 0x20254cd0
jmp 0x20254c10
mov rcx, qword [rsp + 0x70]
xor rcx, rsp
call fcn.2032c180
nop
add rsp, 0x78
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov r8b, 1
test r8b, r8b
jne 0x20254d27
mov r8b, 1
test r8b, r8b
je 0x20254d20
jmp 0x20254d15
xor r13d, r13d
mov r15d, 0
cmp dword [rsp + 0x28], 0
jle 0x20254849
mov r9b, 1
xor r14d, r14d
xor ebp, ebp
jmp 0x20254d65
and ebp, ebx
or r15d, ebp
add r14d, 2
mov ebp, r15d
cmp r14d, r8d
jge 0x20254849
test r13b, r13b
jne 0x20254dc0
nop word [rax + rax]
test r9b, r9b
je 0x20254dc0
nop word cs:[rax + rax]
test r13b, r13b
jne 0x20254d80
movsxd r8, r14d
add r8, qword [rsp + 0x30]
movzx r10d, word [r8]
mov r15d, ebp
not r15d
nop word [rax + rax]
test r9b, r9b
je 0x20254da0
test r9b, r9b
je 0x20254da0
mov ebx, r10d
not ebx
and r15d, r10d
test r13b, r13b
mov r8d, dword [rsp + 0x28]
jne 0x20254de0
jmp 0x20254dd0
test r9b, r9b
je 0x20254dc0
jmp 0x20254d70
test r9b, r9b
jne 0x20254d50
nop dword [rax]
test r9b, r9b
je 0x20254de0
jmp 0x20254dd0