Function at 0x2e3d17a90
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 rbx, [0x2e3f3bea0]
mov eax, dword [rcx + 0x80]
mov r12, rcx
mov rdi, rdx
mov rsi, r8
test eax, eax
je 0x2e3d17add
jmp 0x2e3d17afa
lea rdx, [rax + 1]
mov qword [r12 + 0x28], rdx
movzx eax, byte [rax]
cmp al, 0x4f
je 0x2e3d17b23
mov r8d, dword [r12 + 0x80]
test r8d, r8d
jne 0x2e3d17afa
mov rax, qword [r12 + 0x28]
test rax, rax
je 0x2e3d17b10
cmp rax, qword [r12 + 0x38]
jb 0x2e3d17ac0
mov dword [r12 + 0x80], 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 [r12 + 0x18]
call sub.msvcrt.dll_fgetc
cmp eax, 0xffffffff
je 0x2e3d17aee
cmp al, 0x4f
jne 0x2e3d17ad0
cmp byte [r12 + 0x44], 0
jne 0x2e3d17d30
mov rax, qword [r12 + 0x28]
test rax, rax
je 0x2e3d17da2
mov rdx, rax
sub rdx, qword [r12 + 0x30]
mov r13d, edx
sub edx, 0x19
cmp edx, dword [r12 + 0x40]
ja 0x2e3d17afa
mov rdx, qword [r12 + 0x38]
movzx r8d, byte [0x2e3e6a701]
cmp rdx, rax
jbe 0x2e3d17cc0
lea rcx, [rax + 1]
mov qword [r12 + 0x28], rcx
cmp byte [rax], r8b
jne 0x2e3d17d70
movzx r8d, byte [0x2e3e6a702]
cmp rcx, rdx
jae 0x2e3d17cfd
lea rax, [rcx + 1]
mov qword [r12 + 0x28], rax
cmp byte [rcx], r8b
jne 0x2e3d17d70
cmp rax, rdx
jae 0x2e3d17aee
lea rdx, [rax + 1]
mov qword [r12 + 0x28], rdx
movzx eax, byte [rax]
cmp al, byte [0x2e3e6a703]
mov edx, dword [r12 + 0x80]
jne 0x2e3d1801b
test edx, edx
jne 0x2e3d17afa
mov eax, dword [str.OggS]
lea rbp, [rsp + 0x34]
lea r15, [rsp + 0x30]
lea r14, [rsp + 0x4b]
mov dword [rsp + 0x30], eax
jmp 0x2e3d17c0a
mov dword [r12 + 0x80], 1
xor eax, eax
mov byte [rbp], al
add rbp, 1
cmp rbp, r14
je 0x2e3d17c37
mov rax, qword [r12 + 0x28]
test rax, rax
je 0x2e3d17ca0
cmp rax, qword [r12 + 0x38]
jae 0x2e3d17bf0
lea rcx, [rax + 1]
add rbp, 1
mov qword [r12 + 0x28], rcx
movzx eax, byte [rax]
mov byte [rbp - 1], al
cmp rbp, r14
jne 0x2e3d17c0a
mov edx, dword [r12 + 0x80]
test edx, edx
jne 0x2e3d17afa
cmp byte [rsp + 0x34], 0
je 0x2e3d17dbd
cmp byte [r12 + 0x44], 0
jne 0x2e3d17d88
cmp qword [r12 + 0x28], 0
mov dword [r12 + 0x80], 0
je 0x2e3d17e76
mov rax, qword [r12 + 0x38]
add r13, qword [r12 + 0x30]
cmp r13, rax
jb 0x2e3d17d98
mov qword [r12 + 0x28], rax
mov dword [r12 + 0x80], 1
jmp 0x2e3d17afa
mov rcx, qword [r12 + 0x18]
call sub.msvcrt.dll_fgetc
cmp eax, 0xffffffff
jne 0x2e3d17bfe
jmp 0x2e3d17bf0
cmp byte [0x2e3e6a701], 0
mov dword [r12 + 0x80], 1
jne 0x2e3d17afa
mov rcx, qword [r12 + 0x28]
test rcx, rcx
je 0x2e3d17ed0
mov rdx, qword [r12 + 0x38]
movzx r8d, byte [0x2e3e6a702]
cmp rcx, rdx
jb 0x2e3d17b8b
cmp byte [0x2e3e6a702], 0
mov dword [r12 + 0x80], 1
jne 0x2e3d17afa
mov rax, qword [r12 + 0x28]
test rax, rax
je 0x2e3d17ef4
mov rdx, qword [r12 + 0x38]
jmp 0x2e3d17b9d
mov eax, 0xffffffe7
xor r13d, r13d
cmp dword [r12 + 0x40], eax
jb 0x2e3d17afa
mov rax, qword [r12 + 0x28]
test rax, rax
jne 0x2e3d17b52
mov rcx, qword [r12 + 0x18]
call sub.msvcrt.dll_fgetc
cmp eax, 0xffffffff
je 0x2e3d17cc0
cmp byte [0x2e3e6a701], al
je 0x2e3d17cd9
mov ecx, dword [r12 + 0x80]
test ecx, ecx
je 0x2e3d17c52
jmp 0x2e3d17afa
mov eax, dword [r12 + 0x80]
jmp 0x2e3d17ab6
mov qword [r12 + 0x28], r13
jmp 0x2e3d17add
mov rcx, qword [r12 + 0x18]
call sub.msvcrt.dll_ftell
sub eax, dword [r12 + 0x20]
mov r13d, eax
lea eax, [r13 - 0x19]
jmp 0x2e3d17d38
movzx eax, byte [rsp + 0x47]
xor ebp, ebp
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
mov eax, ebp
add r15, 1
shl ebp, 8
shr eax, 0x18
xor al, byte [r15 - 1]
movzx eax, al
xor ebp, dword [rbx + rax*4]
cmp r14, r15
jne 0x2e3d17df0
movzx r8d, byte [rsp + 0x4a]
test r8d, r8d
je 0x2e3d17f4a
xor r15d, r15d
xor r14d, r14d
jmp 0x2e3d17e51
lea rcx, [rax + 1]
mov qword [r12 + 0x28], rcx
movzx ecx, byte [rax]
add r15d, ecx
mov eax, ebp
add r14d, 1
shl ebp, 8
shr eax, 0x18
xor eax, ecx
xor ebp, dword [rbx + rax*4]
cmp r14d, r8d
je 0x2e3d17fa0
mov rax, qword [r12 + 0x28]
test rax, rax
je 0x2e3d17f0c
cmp rax, qword [r12 + 0x38]
jb 0x2e3d17e28
mov dword [r12 + 0x80], 1
xor ecx, ecx
jmp 0x2e3d17e37
mov edx, r13d
add edx, dword [r12 + 0x20]
jb 0x2e3d17f34
test r13d, r13d
js 0x2e3d17f34
mov rcx, qword [r12 + 0x18]
xor r8d, r8d
call sub.msvcrt.dll_fseek
test eax, eax
je 0x2e3d17d88
mov edx, dword [r12 + 0x20]
mov rcx, qword [r12 + 0x18]
mov dword [r12 + 0x80], 1
mov r8d, 2
call sub.msvcrt.dll_fseek
mov eax, dword [r12 + 0x80]
jmp 0x2e3d17ab6
mov rcx, qword [r12 + 0x18]
call sub.msvcrt.dll_fgetc
cmp eax, 0xffffffff
je 0x2e3d17cfd
cmp byte [0x2e3e6a702], al
je 0x2e3d17d16
jmp 0x2e3d17d70
mov rcx, qword [r12 + 0x18]
call sub.msvcrt.dll_fgetc
cmp eax, 0xffffffff
jne 0x2e3d17bb2
jmp 0x2e3d17aee
mov rcx, qword [r12 + 0x18]
mov dword [rsp + 0x28], r8d
call sub.msvcrt.dll_fgetc
mov r8d, dword [rsp + 0x28]
cmp eax, 0xffffffff
je 0x2e3d17e66
movzx ecx, al
add r15d, ecx
jmp 0x2e3d17e37
mov dword [r12 + 0x80], 1
mov edx, 0x7fffffff
jmp 0x2e3d17e8d
cmp dword [rsp + 0x2c], ebp
jne 0x2e3d17c52
test rdi, rdi
je 0x2e3d17f78
xor eax, eax
cmp byte [r12 + 0x44], 0
jne 0x2e3d17f76
mov rax, qword [r12 + 0x28]
test rax, rax
je 0x2e3d18028
sub eax, dword [r12 + 0x30]
mov dword [rdi], eax
test rsi, rsi
je 0x2e3d17f89
xor eax, eax
test byte [rsp + 0x35], 4
setne al
mov dword [rsi], eax
lea edx, [r13 - 1]
mov rcx, r12
call fcn.2e3e44fc0
mov eax, 1
jmp 0x2e3d17afc
test r15d, r15d
je 0x2e3d17f4a
mov eax, dword [r12 + 0x80]
test eax, eax
jne 0x2e3d17afa
xor r14d, r14d
jmp 0x2e3d17fe8
mov dword [r12 + 0x80], 1
xor ecx, ecx
mov eax, ebp
add r14d, 1
shl ebp, 8
shr eax, 0x18
xor eax, ecx
xor ebp, dword [rbx + rax*4]
cmp r14d, r15d
je 0x2e3d17f4a
mov rax, qword [r12 + 0x28]
test rax, rax
je 0x2e3d18007
cmp rax, qword [r12 + 0x38]
jae 0x2e3d17fc0
lea rcx, [rax + 1]
mov qword [r12 + 0x28], rcx
movzx ecx, byte [rax]
jmp 0x2e3d17fce
mov rcx, qword [r12 + 0x18]
call sub.msvcrt.dll_fgetc
cmp eax, 0xffffffff
je 0x2e3d17fc0
movzx ecx, al
jmp 0x2e3d17fce
test edx, edx
je 0x2e3d17c52
jmp 0x2e3d17afa
mov rcx, qword [r12 + 0x18]
call sub.msvcrt.dll_ftell
sub eax, dword [r12 + 0x20]
jmp 0x2e3d17f76