Function at 0x140027090
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
lea rsi, [0x14043f0a0]
mov eax, dword [rcx + 0x98]
mov rbx, rcx
mov rbp, rdx
mov rdi, r8
test eax, eax
je 0x1400270db
jmp 0x1400270f4
lea rdx, [rax + 1]
mov qword [rbx + 0x40], rdx
movzx eax, byte [rax]
cmp al, 0x4f
je 0x140027122
mov r8d, dword [rbx + 0x98]
test r8d, r8d
jne 0x1400270f4
mov rax, qword [rbx + 0x40]
test rax, rax
je 0x140027110
cmp rax, qword [rbx + 0x50]
jb 0x1400270c0
mov dword [rbx + 0x98], 1
xor eax, eax
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rcx, qword [rbx + 0x30]
call sym.fgetc
cmp eax, 0xffffffff
je 0x1400270ea
cmp al, 0x4f
jne 0x1400270cf
cmp byte [rbx + 0x5c], 0
jne 0x140027310
mov rax, qword [rbx + 0x40]
test rax, rax
je 0x140027379
mov rdx, rax
sub rdx, qword [rbx + 0x48]
mov r13d, edx
sub edx, 0x19
cmp edx, dword [rbx + 0x58]
ja 0x1400270f4
mov rdx, qword [rbx + 0x50]
movzx r8d, byte [0x14018c037]
cmp rax, rdx
jae 0x1400272a0
lea rcx, [rax + 1]
mov qword [rbx + 0x40], rcx
cmp byte [rax], r8b
jne 0x14002734c
movzx r8d, byte [0x14018c038]
cmp rcx, rdx
jae 0x1400272d9
lea rax, [rcx + 1]
mov qword [rbx + 0x40], rax
cmp byte [rcx], r8b
jne 0x14002734c
cmp rdx, rax
jbe 0x1400270ea
lea rdx, [rax + 1]
mov qword [rbx + 0x40], rdx
movzx eax, byte [rax]
cmp al, byte [0x14018c039]
mov edx, dword [rbx + 0x98]
jne 0x140027618
test edx, edx
jne 0x1400270f4
mov eax, dword [0x14018c036]
lea r12, [rsp + 0x34]
lea r15, [rsp + 0x30]
lea r14, [rsp + 0x4b]
mov dword [rsp + 0x30], eax
jmp 0x1400271f9
mov dword [rbx + 0x98], 1
xor eax, eax
mov byte [r12], al
add r12, 1
cmp r12, r14
je 0x140027221
mov rax, qword [rbx + 0x40]
test rax, rax
je 0x140027280
cmp rax, qword [rbx + 0x50]
jae 0x1400271e0
lea rcx, [rax + 1]
add r12, 1
mov qword [rbx + 0x40], rcx
movzx eax, byte [rax]
mov byte [r12 - 1], al
cmp r12, r14
jne 0x1400271f9
mov edx, dword [rbx + 0x98]
test edx, edx
jne 0x1400270f4
cmp byte [rsp + 0x34], 0
je 0x14002738e
cmp byte [rbx + 0x5c], 0
jne 0x140027360
mov dword [rbx + 0x98], 0
cmp qword [rbx + 0x40], 0
je 0x14002744c
mov rax, qword [rbx + 0x50]
add r13, qword [rbx + 0x48]
cmp r13, rax
jb 0x140027370
mov qword [rbx + 0x40], rax
mov dword [rbx + 0x98], 1
jmp 0x1400270f4
mov rcx, qword [rbx + 0x30]
call sym.fgetc
cmp eax, 0xffffffff
jne 0x1400271ec
jmp 0x1400271e0
cmp byte [0x14018c037], 0
mov dword [rbx + 0x98], 1
jne 0x1400270f4
mov rcx, qword [rbx + 0x40]
test rcx, rcx
je 0x14002749c
mov rdx, qword [rbx + 0x50]
movzx r8d, byte [0x14018c038]
cmp rcx, rdx
jb 0x140027182
cmp byte [0x14018c038], 0
mov dword [rbx + 0x98], 1
jne 0x1400270f4
mov rax, qword [rbx + 0x40]
test rax, rax
je 0x1400274bf
mov rdx, qword [rbx + 0x50]
jmp 0x140027193
mov eax, 0xffffffe7
xor r13d, r13d
cmp dword [rbx + 0x58], eax
jb 0x1400270f4
mov rax, qword [rbx + 0x40]
test rax, rax
jne 0x14002714b
mov rcx, qword [rbx + 0x30]
call sym.fgetc
cmp eax, 0xffffffff
je 0x1400272a0
cmp byte [0x14018c037], al
je 0x1400272b7
mov ecx, dword [rbx + 0x98]
test ecx, ecx
je 0x14002723a
jmp 0x1400270f4
mov eax, dword [rbx + 0x98]
jmp 0x1400270b6
mov qword [rbx + 0x40], r13
jmp 0x1400270db
mov rcx, qword [rbx + 0x30]
call sym.ftell
sub eax, dword [rbx + 0x38]
mov r13d, eax
lea eax, [r13 - 0x19]
jmp 0x140027318
movzx eax, byte [rsp + 0x47]
xor r12d, r12d
shl eax, 8
mov edx, eax
movzx eax, byte [rsp + 0x46]
add edx, eax
movzx eax, byte [rsp + 0x48]
shl eax, 0x10
add edx, eax
movzx eax, byte [rsp + 0x49]
mov dword [rsp + 0x46], 0
shl eax, 0x18
add eax, edx
mov dword [rsp + 0x2c], eax
nop word [rax + rax]
mov eax, r12d
add r15, 1
shl r12d, 8
shr eax, 0x18
xor al, byte [r15 - 1]
movzx eax, al
xor r12d, dword [rsi + rax*4]
cmp r14, r15
jne 0x1400273c8
movzx r8d, byte [rsp + 0x4a]
test r8d, r8d
je 0x140027511
xor r15d, r15d
xor r14d, r14d
jmp 0x14002742b
lea rcx, [rax + 1]
mov qword [rbx + 0x40], rcx
movzx ecx, byte [rax]
add r15d, ecx
mov eax, r12d
add r14d, 1
shl r12d, 8
shr eax, 0x18
xor eax, ecx
xor r12d, dword [rsi + rax*4]
cmp r14d, r8d
je 0x1400275a0
mov rax, qword [rbx + 0x40]
test rax, rax
je 0x1400274d6
cmp rax, qword [rbx + 0x50]
jb 0x140027400
mov dword [rbx + 0x98], 1
xor ecx, ecx
jmp 0x14002740e
mov edx, r13d
add edx, dword [rbx + 0x38]
jb 0x1400274fd
test r13d, r13d
js 0x1400274fd
mov rcx, qword [rbx + 0x30]
xor r8d, r8d
call sym.fseek
test eax, eax
je 0x140027360
mov edx, dword [rbx + 0x38]
mov rcx, qword [rbx + 0x30]
mov r8d, 2
mov dword [rbx + 0x98], 1
call sym.fseek
mov eax, dword [rbx + 0x98]
jmp 0x1400270b6
mov rcx, qword [rbx + 0x30]
call sym.fgetc
cmp eax, 0xffffffff
je 0x1400272d9
cmp byte [0x14018c038], al
je 0x1400272f0
jmp 0x14002734c
mov rcx, qword [rbx + 0x30]
call sym.fgetc
cmp eax, 0xffffffff
jne 0x1400271a7
jmp 0x1400270ea
mov rcx, qword [rbx + 0x30]
mov dword [rsp + 0x28], r8d
call sym.fgetc
mov r8d, dword [rsp + 0x28]
cmp eax, 0xffffffff
je 0x14002743e
movzx ecx, al
add r15d, ecx
jmp 0x14002740e
mov dword [rbx + 0x98], 1
mov edx, 0x7fffffff
jmp 0x140027461
cmp dword [rsp + 0x2c], r12d
jne 0x14002723a
test rbp, rbp
je 0x14002753c
xor eax, eax
cmp byte [rbx + 0x5c], 0
jne 0x140027539
mov rax, qword [rbx + 0x40]
test rax, rax
je 0x140027668
sub eax, dword [rbx + 0x48]
mov dword [rbp], eax
test rdi, rdi
je 0x14002754d
xor eax, eax
test byte [rsp + 0x35], 4
setne al
mov dword [rdi], eax
cmp byte [rbx + 0x5c], 0
jne 0x14002765e
mov dword [rbx + 0x98], 0
sub r13d, 1
cmp qword [rbx + 0x40], 0
je 0x140027625
mov rax, qword [rbx + 0x48]
mov rdx, qword [rbx + 0x50]
add rax, r13
cmp rax, rdx
jb 0x140027679
mov qword [rbx + 0x40], rdx
mov eax, 1
mov dword [rbx + 0x98], 1
jmp 0x1400270f6
test r15d, r15d
je 0x140027511
mov eax, dword [rbx + 0x98]
test eax, eax
jne 0x1400270f4
xor r14d, r14d
jmp 0x1400275e9
mov dword [rbx + 0x98], 1
xor ecx, ecx
mov eax, r12d
add r14d, 1
shl r12d, 8
shr eax, 0x18
xor eax, ecx
xor r12d, dword [rsi + rax*4]
cmp r15d, r14d
je 0x140027511
mov rax, qword [rbx + 0x40]
test rax, rax
je 0x140027605
cmp rax, qword [rbx + 0x50]
jae 0x1400275c0
lea rcx, [rax + 1]
mov qword [rbx + 0x40], rcx
movzx ecx, byte [rax]
jmp 0x1400275cc
mov rcx, qword [rbx + 0x30]
call sym.fgetc
cmp eax, 0xffffffff
je 0x1400275c0
movzx ecx, al
jmp 0x1400275cc
test edx, edx
je 0x14002723a
jmp 0x1400270f4
mov edx, r13d
add edx, dword [rbx + 0x38]
jb 0x140027687
test r13d, r13d
js 0x140027687
mov rcx, qword [rbx + 0x30]
xor r8d, r8d
call sym.fseek
test eax, eax
je 0x14002765e
mov edx, dword [rbx + 0x38]
mov rcx, qword [rbx + 0x30]
mov r8d, 2
mov dword [rbx + 0x98], 1
call sym.fseek
mov eax, 1
jmp 0x1400270f6
mov rcx, qword [rbx + 0x30]
call sym.ftell
sub eax, dword [rbx + 0x38]
jmp 0x140027539
mov qword [rbx + 0x40], rax
mov eax, 1
jmp 0x1400270f6
mov dword [rbx + 0x98], 1
mov edx, 0x7fffffff
jmp 0x140027632