Function at 0x140020260
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
mov rbp, rsp
sub rsp, 0x58
xor r15d, r15d
mov rsi, rcx
mov qword [rbp + 0x58], r15
mov r13d, r15d
mov dword [0x14003f6d0], r15d
mov r12d, r15d
mov dword [0x14003f6d4], r15d
test rcx, rcx
jne 0x14002029f
lea ebx, [rcx + 0x57]
jmp 0x140020bca
mov rdi, qword [rcx + 0x10]
mov qword [rbp + 0x60], rdi
cmp dword [rdi], 0x66676572
jne 0x140020bc5
mov eax, dword [rdi + 8]
cmp dword [rdi + 4], eax
jne 0x140020bc5
mov r10d, 1
cmp dword [rdi + 0x14], r10d
jne 0x140020bc5
cmp dword [rdi + 0x18], 5
ja 0x140020bc5
cmp dword [rdi + 0x20], r10d
jne 0x140020bc5
mov eax, dword [rdi + 0x28]
add eax, 0x1000
cmp eax, dword [rcx + 0x30]
ja 0x140020bc5
mov eax, r15d
lea edx, [r10 + 0x7e]
mov rcx, rdi
xor eax, dword [rcx]
lea rcx, [rcx + 4]
sub rdx, r10
jne 0x1400202fe
cmp eax, 0xffffffff
mov ecx, 0xfffffffe
cmove eax, ecx
test eax, eax
cmove eax, r10d
cmp dword [rdi + 0x1fc], eax
jne 0x140020bc5
lea rcx, [rdi + 0x1000]
mov rdx, rsi
call fcn.14001fbc4
mov r11b, al
test al, al
je 0x140020bc5
mov r14d, dword [rdi + 0x28]
mov ebx, r10d
mov r10d, dword [rcx + 8]
add r14, rdi
mov dword [0x14003f6d4], r10d
mov eax, r10d
mov dword [0x14003f6d0], ebx
add rcx, rax
cmp rcx, r14
ja 0x14002037e
mov rdx, rsi
call fcn.14001fbc4
mov r11b, al
inc ebx
mov eax, dword [rcx + 8]
add r10d, eax
test r11b, r11b
jne 0x14002035e
mov dword [0x14003f6d4], r10d
mov dword [0x14003f6d0], ebx
test r11b, r11b
je 0x140020bc5
mov ecx, dword [rdi + 0x24]
mov rdx, rdi
call fcn.14001f8e8
mov rbx, rax
test rax, rax
je 0x140020bc5
cmp dword [rax], r15d
jg 0x140020bc5
xor edx, edx
mov rcx, rsi
call fcn.14001e354
mov qword [rbp - 0x30], rax
mov r13, rax
test rax, rax
jne 0x1400203d2
lea ebx, [rax + 8]
jmp 0x140020bca
mov qword [rsi + 0x38], rax
lea r10, [rbx + 4]
mov rcx, rbx
mov qword [rax + 0x28], r10
call fcn.14001fcd4
xor ebx, ebx
test al, al
je 0x140020bc5
movzx eax, word [r10 + 2]
mov ecx, 0x380
and ax, cx
mov word [r13 + 0x22], ax
mov eax, dword [r10 + 0x34]
shr eax, 0x14
and ax, 0xe
mov word [r13 + 0x24], ax
mov eax, 0xfc7f
and word [r10 + 2], ax
mov rax, qword [r13 + 0x28]
and dword [rax + 0x34], 0xff1fffff
lea rax, [rbp - 0x18]
mov qword [rbp - 0x10], rax
lea rax, [rbp - 0x18]
mov qword [rbp - 0x18], rax
lea rax, [rbp - 0x18]
mov qword [r13], rax
lea rax, [rbp - 0x18]
mov qword [r13 + 8], rax
lea rax, [rbp - 0x18]
cmp qword [rbp - 0x18], rax
je 0x140020456
lea ecx, [rbx + 3]
int 0x29
lea rax, [rbp - 0x18]
mov qword [rbp - 0x18], r13
cmp r13, rax
mov qword [rbp - 0x10], r13
mov r15, r13
je 0x140020b68
mov rax, qword [r15]
lea rcx, [rbp - 0x18]
cmp qword [r15 + 8], rcx
jne 0x140020bbe
cmp qword [rax + 8], r15
jne 0x140020bbe
mov qword [rbp - 0x18], rax
lea rcx, [rbp - 0x18]
mov qword [rax + 8], rcx
mov r13, qword [r15 + 0x28]
mov dword [r15 + 0x1c], 0x746e
mov qword [r15 + 0x10], rsi
mov qword [rbp - 0x28], r13
mov ecx, dword [r13 + 0x30]
cmp ecx, 0xffffffff
je 0x1400204d3
mov rdx, rdi
call fcn.14001f8e8
test rax, rax
je 0x140020b63
cmp dword [rax], ebx
jg 0x140020b63
add rax, 4
mov qword [r15 + 0x60], rax
cmp r15, qword [rbp - 0x30]
jne 0x1400204f0
mov rdx, r13
mov rcx, rsi
call fcn.140020ce4
mov ebx, eax
test eax, eax
jne 0x140020b68
xor ebx, ebx
mov rdx, qword [rsi + 0x10]
mov ecx, dword [r13 + 0x2c]
call fcn.14001f8e8
test rax, rax
je 0x140020531
cmp dword [rax], ebx
jg 0x140020531
lea r8, [rsi + 0x40]
lea rcx, [rax + 4]
mov rax, qword [r8]
jmp 0x14002051b
mov rax, qword [rax]
cmp rax, r8
je 0x140020524
mov rdx, rax
cmp rcx, qword [rax + 0x10]
jne 0x140020513
cmp rcx, qword [rdx + 0x10]
mov rax, rbx
cmove rax, rdx
jmp 0x140020534
mov rax, rbx
mov qword [r15 + 0x48], rax
test rax, rax
je 0x140020b63
mov r9d, dword [r13 + 0x24]
lea r14, [r15 + 0x68]
mov qword [r14 + 8], r14
mov qword [r14], r14
mov dword [rbp + 0x50], r9d
test r9d, r9d
je 0x14002079a
mov ecx, dword [r13 + 0x28]
mov rdx, rdi
call fcn.14001f8e8
test rax, rax
je 0x140020b63
cmp dword [rax], ebx
jg 0x140020b63
add rax, 4
mov dword [rbp + 0x48], ebx
mov qword [rbp - 0x38], rax
test r9d, r9d
je 0x14002079a
mov edx, 0x10
lea ecx, [rdx + 0x20]
call qword [sym.imp.msvcrt.dll__aligned_malloc]
xor r10d, r10d
mov rbx, rax
test rax, rax
je 0x140020b9b
mov rax, qword [rbp - 0x38]
mov rdx, rdi
mov ecx, dword [rax]
call fcn.14001f8e8
mov qword [rbx + 0x10], rax
mov rdx, rax
mov qword [rbx + 0x20], r10
mov qword [rbx + 0x28], r10
lea rcx, [rax + 4]
mov qword [rbx + 0x18], rcx
test rax, rax
je 0x140020b90
mov ecx, dword [rax]
test ecx, ecx
jg 0x140020b90
movzx eax, word [rax + 6]
neg ecx
add eax, 0x14
cmp eax, ecx
ja 0x140020b90
mov eax, 0x6b76
cmp word [rdx + 4], ax
jne 0x140020b90
cmp dword [rdx + 8], r10d
jne 0x140020613
cmp dword [rdx + 0xc], 0xffffffff
jne 0x140020b90
mov rax, qword [r14 + 8]
mov qword [rbx], r14
mov qword [rbx + 8], rax
cmp qword [rax], r14
jne 0x140020b89
mov qword [rax], rbx
mov qword [r14 + 8], rbx
mov rcx, qword [rbx + 0x18]
cmp dword [rcx + 4], 0x80000000
jb 0x140020644
lea rax, [rcx + 8]
jmp 0x14002077a
mov rax, qword [rsi + 0x10]
mov edx, dword [rax + 0x14]
dec edx
shl edx, 0xc
add edx, dword [rax + 0x18]
cmp edx, 4
jb 0x140020759
cmp dword [rcx + 4], 0x3fd8
jbe 0x140020759
mov ecx, dword [rcx + 8]
mov rdx, rdi
call fcn.14001f8e8
test rax, rax
je 0x140020b63
cmp dword [rax], r10d
jg 0x140020b63
lea r14, [rax + 4]
mov eax, 0x6264
cmp word [r14], ax
jne 0x140020b63
cmp r10w, word [r14 + 2]
je 0x140020b63
cmp dword [r14 + 4], 0xffffffff
je 0x140020b63
movzx eax, word [r14 + 2]
mov edx, 0x10
lea rax, [rax*8 + 8]
mov rcx, rax
mov qword [rbp - 0x20], rax
call qword [sym.imp.msvcrt.dll__aligned_malloc]
mov r13, rax
test rax, rax
je 0x140020b9b
mov r8, qword [rbp - 0x20]
xor edx, edx
mov rcx, rax
call sub.msvcrt.dll_memset
mov qword [r13], r14
mov rdx, rdi
mov ecx, dword [r14 + 4]
call fcn.14001f8e8
xor r10d, r10d
mov r11, rax
test rax, rax
je 0x140020b63
cmp dword [rax], r10d
jg 0x140020b63
mov r9d, r10d
cmp r10w, word [r14 + 2]
jae 0x14002074f
mov r10d, r9d
mov rdx, rdi
mov ecx, dword [r11 + r10*4 + 4]
call fcn.14001f8e8
xor ecx, ecx
test rax, rax
je 0x140020b63
cmp dword [rax], ecx
jg 0x140020b63
mov qword [r13 + r10*8 + 8], rax
inc r9d
movzx eax, word [r14 + 2]
cmp r9d, eax
jb 0x14002071a
mov qword [rbx + 0x20], r13
lea r14, [r15 + 0x68]
jmp 0x14002077e
mov ecx, dword [rcx + 8]
mov rdx, rdi
call fcn.14001f8e8
test rax, rax
je 0x140020b63
cmp dword [rax], r10d
jg 0x140020b63
add rax, 4
mov qword [rbx + 0x28], rax
mov eax, dword [rbp + 0x48]
add qword [rbp - 0x38], 4
inc eax
mov dword [rbp + 0x48], eax
cmp eax, dword [rbp + 0x50]
jb 0x14002058e
mov r13, qword [rbp - 0x28]
xor ebx, ebx
mov r13d, dword [r13 + 0x14]
test r13d, r13d
je 0x140020b53
mov rax, qword [rbp + 0x58]
test rax, rax
je 0x1400207bb
mov rdx, rax
mov rcx, rsi
call fcn.14001f720
mov rbx, r13
mov edx, 0x10
shl rbx, 3
mov rcx, rbx
call qword [sym.imp.msvcrt.dll__aligned_malloc]
mov qword [rbp + 0x58], rax
test rax, rax
je 0x140020bb0
mov r8, rbx
xor edx, edx
mov rcx, rax
call sub.msvcrt.dll_memset
mov rax, qword [rbp - 0x28]
mov rdx, rdi
mov ecx, dword [rax + 0x1c]
call fcn.14001f8e8
xor ecx, ecx
mov r10, rax
test rax, rax
je 0x140020b63
cmp dword [rax], ecx
jg 0x140020b63
mov eax, 0x6972
cmp word [r10 + 4], ax
jne 0x1400208f3
mov r11d, ecx
mov r14d, ecx
cmp cx, word [r10 + 6]
jae 0x1400208f3
mov eax, r14d
mov rdx, rdi
mov ecx, dword [r10 + rax*4 + 8]
call fcn.14001f8e8
xor ecx, ecx
mov r9, rax
test rax, rax
je 0x140020b63
cmp dword [rax], ecx
jg 0x140020b63
movzx eax, word [rax + 4]
mov edx, 0x696c
cmp ax, dx
jne 0x140020898
mov ebx, ecx
mov rdx, qword [rsi + 0x10]
cmp cx, word [r9 + 6]
jae 0x1400208e2
mov rdi, qword [rbp + 0x58]
mov eax, ebx
mov ecx, dword [r9 + rax*4 + 8]
call fcn.14001f8e8
mov ecx, r11d
inc ebx
inc r11d
mov qword [rdi + rcx*8], rax
movzx eax, word [r9 + 6]
cmp ebx, eax
jb 0x140020875
jmp 0x1400208dc
mov edx, 0x666c
sub ax, dx
mov edx, 0xfdff
test dx, ax
jne 0x1400208e2
movzx ebx, word [r9 + 6]
mov rdx, qword [rsi + 0x10]
test rbx, rbx
je 0x1400208e2
mov rdi, qword [rbp + 0x58]
add r9, 8
mov ecx, dword [r9]
call fcn.14001f8e8
mov ecx, r11d
lea r9, [r9 + 8]
inc r11d
mov qword [rdi + rcx*8], rax
sub rbx, 1
jne 0x1400208c0
mov rdi, qword [rbp + 0x60]
xor ecx, ecx
movzx eax, word [r10 + 6]
inc r14d
cmp r14d, eax
jb 0x140020830
movzx eax, word [r10 + 4]
mov edx, 0x666c
sub ax, dx
mov edx, 0xfdff
test dx, ax
je 0x140020948
mov eax, 0x696c
cmp word [r10 + 4], ax
jne 0x140020981
mov r11d, ecx
mov rdx, qword [rsi + 0x10]
cmp cx, word [r10 + 6]
jae 0x140020981
mov rdi, qword [rbp + 0x58]
mov r9d, r11d
mov ecx, dword [r10 + r9*4 + 8]
call fcn.14001f8e8
mov qword [rdi + r9*8], rax
inc r11d
movzx eax, word [r10 + 6]
cmp r11d, eax
jb 0x140020928
jmp 0x14002097d
movzx r9d, word [r10 + 6]
mov r11d, ecx
mov rdx, qword [rsi + 0x10]
test r9, r9
je 0x140020981
mov rdi, qword [rbp + 0x58]
add r10, 8
mov ecx, dword [r10]
call fcn.14001f8e8
mov ecx, r11d
lea r10, [r10 + 8]
inc r11d
mov qword [rdi + rcx*8], rax
sub r9, 1
jne 0x140020961
mov rdi, qword [rbp + 0x60]
xor eax, eax
mov ebx, r13d
mov r14d, eax
cmp r13d, 1
jbe 0x140020a8c
test r12, r12
jne 0x1400209af
mov rdx, r15
mov rcx, rsi
call fcn.14001e354
mov r12, rax
test rax, rax
je 0x140020b9b
mov rdx, r15
mov rcx, rsi
call fcn.14001e354
mov r10, rax
xor eax, eax
test r10, r10
je 0x140020b9b
cmp ebx, r13d
jne 0x1400209d1
mov qword [r15 + 0x40], r12
mov r8, qword [rbp + 0x58]
mov edx, r14d
mov qword [r12 + 0x30], r10
mov rcx, qword [r8 + rdx*8]
test rcx, rcx
je 0x140020b63
cmp dword [rcx], eax
jg 0x140020b63
mov qword [r12 + 0x88], rcx
mov r11, qword [r8 + rdx*8]
add r11, 4
mov qword [r12 + 0x28], r11
mov rcx, qword [r8 + rdx*8]
call fcn.14001fcd4
test al, al
je 0x140020b63
movzx eax, word [r11 + 2]
mov ecx, 0x380
and ax, cx
lea rcx, [rbp - 0x18]
mov word [r12 + 0x22], ax
mov eax, dword [r11 + 0x34]
shr eax, 0x14
and ax, 0xe
mov word [r12 + 0x24], ax
mov eax, 0xfc7f
and word [r11 + 2], ax
mov rax, qword [r12 + 0x28]
and dword [rax + 0x34], 0xff1fffff
mov rax, qword [rbp - 0x10]
mov qword [r12], rcx
lea rcx, [rbp - 0x18]
mov qword [r12 + 8], rax
cmp qword [rax], rcx
jne 0x140020ba2
mov qword [rax], r12
dec ebx
inc r14d
mov qword [rbp - 0x10], r12
mov r12, r10
cmp ebx, 1
ja 0x140020993
cmp r13d, 1
jne 0x140020aad
mov rdx, r15
mov rcx, rsi
call fcn.14001e354
xor ebx, ebx
mov r12, rax
test rax, rax
je 0x140020b9b
mov qword [r15 + 0x40], rax
jmp 0x140020aaf
xor ebx, ebx
mov r13, qword [rbp + 0x58]
mov ecx, r14d
mov qword [r12 + 0x30], rbx
mov rax, qword [r13 + rcx*8]
test rax, rax
je 0x140020b63
cmp dword [rax], ebx
jg 0x140020b63
mov qword [r12 + 0x88], rax
mov r10, qword [r13 + rcx*8]
add r10, 4
mov qword [r12 + 0x28], r10
mov rcx, qword [r13 + rcx*8]
call fcn.14001fcd4
test al, al
je 0x140020b63
movzx eax, word [r10 + 2]
mov ecx, 0x380
and ax, cx
lea rcx, [rbp - 0x18]
mov word [r12 + 0x22], ax
mov eax, dword [r10 + 0x34]
shr eax, 0x14
and ax, 0xe
mov word [r12 + 0x24], ax
mov eax, 0xfc7f
and word [r10 + 2], ax
mov rax, qword [r12 + 0x28]
and dword [rax + 0x34], 0xff1fffff
mov rax, qword [rbp - 0x10]
mov qword [r12], rcx
lea rcx, [rbp - 0x18]
mov qword [r12 + 8], rax
cmp qword [rax], rcx
jne 0x140020ba9
mov qword [rax], r12
mov qword [rbp - 0x10], r12
mov r12, rbx
mov r15, qword [rbp - 0x18]
lea rax, [rbp - 0x18]
cmp r15, rax
jmp 0x140020468
mov ebx, 0x3f9
mov rcx, qword [rbp + 0x58]
xor r15d, r15d
test rcx, rcx
je 0x140020b7f
mov rdx, rcx
mov rcx, rsi
call fcn.14001f720
test ebx, ebx
je 0x140020bde
mov r13, qword [rbp - 0x30]
jmp 0x140020bca
mov ecx, 3
int 0x29
mov rcx, rbx
call qword [sym.imp.msvcrt.dll__aligned_free]
jmp 0x140020b63
mov ebx, 8
jmp 0x140020b68
mov ecx, 3
int 0x29
mov ecx, 3
int 0x29
mov r13, qword [rbp - 0x30]
mov ebx, 8
xor r15d, r15d
jmp 0x140020bca
mov ecx, 3
int 0x29
mov ebx, 0x3f9
mov rcx, r13
call fcn.140020bf8
mov rcx, rsi
mov qword [rsi + 0x38], r15
call fcn.140020e84
mov eax, ebx
add rsp, 0x58
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret