Function at 0x439ad0
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, [0x004f50e0]
mov eax, dword [rcx + 0x80]
mov rbx, rcx
mov rbp, rdx
mov rdi, r8
test eax, eax
je 0x439b1b
jmp 0x439b34
lea rdx, [rax + 1]
mov qword [rbx + 0x28], rdx
movzx eax, byte [rax]
cmp al, 0x4f
je 0x439b62
mov r8d, dword [rbx + 0x80]
test r8d, r8d
jne 0x439b34
mov rax, qword [rbx + 0x28]
test rax, rax
je 0x439b50
cmp rax, qword [rbx + 0x38]
jb 0x439b00
mov dword [rbx + 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 [rbx + 0x18]
call sub.msvcrt.dll_fgetc
cmp eax, 0xffffffff
je 0x439b2a
cmp al, 0x4f
jne 0x439b0f
cmp byte [rbx + 0x44], 0
jne 0x439d50
mov rax, qword [rbx + 0x28]
test rax, rax
je 0x439db9
mov rdx, rax
sub rdx, qword [rbx + 0x30]
mov r13d, edx
sub edx, 0x19
cmp dword [rbx + 0x40], edx
jb 0x439b34
mov rdx, qword [rbx + 0x38]
movzx r8d, byte [0x004af127]
cmp rax, rdx
jae 0x439cf0
lea rcx, [rax + 1]
mov qword [rbx + 0x28], rcx
cmp byte [rax], r8b
jne 0x439d8c
movzx r8d, byte [0x004af128]
cmp rcx, rdx
jae 0x439d25
lea rax, [rcx + 1]
mov qword [rbx + 0x28], rax
cmp byte [rcx], r8b
jne 0x439d8c
cmp rax, rdx
jae 0x439b2a
lea rdx, [rax + 1]
mov qword [rbx + 0x28], rdx
movzx eax, byte [rax]
cmp al, byte [0x004af129]
mov edx, dword [rbx + 0x80]
jne 0x43a050
test edx, edx
jne 0x439b34
movzx edx, word [0x004af126]
mov byte [rsp + 0x33], al
lea r12, [rsp + 0x34]
lea r15, [rsp + 0x30]
lea r14, [rsp + 0x4b]
mov word [rsp + 0x30], dx
movzx edx, byte [0x004af128]
mov byte [rsp + 0x32], dl
jmp 0x439c49
mov dword [rbx + 0x80], 1
xor eax, eax
mov byte [r12], al
add r12, 1
cmp r14, r12
je 0x439c71
mov rax, qword [rbx + 0x28]
test rax, rax
je 0x439cd0
cmp rax, qword [rbx + 0x38]
jae 0x439c30
lea rcx, [rax + 1]
add r12, 1
mov qword [rbx + 0x28], rcx
movzx eax, byte [rax]
mov byte [r12 - 1], al
cmp r14, r12
jne 0x439c49
mov edx, dword [rbx + 0x80]
test edx, edx
jne 0x439b34
cmp byte [rsp + 0x34], 0
je 0x439dce
cmp byte [rbx + 0x44], 0
jne 0x439da0
mov dword [rbx + 0x80], 0
cmp qword [rbx + 0x28], 0
je 0x439e84
mov rax, qword [rbx + 0x38]
add r13, qword [rbx + 0x30]
cmp r13, rax
jb 0x439db0
mov qword [rbx + 0x28], rax
mov dword [rbx + 0x80], 1
jmp 0x439b34
mov rcx, qword [rbx + 0x18]
call sub.msvcrt.dll_fgetc
cmp eax, 0xffffffff
jne 0x439c3c
jmp 0x439c30
mov dword [rbx + 0x80], 1
test r8b, r8b
jne 0x439b34
mov rcx, qword [rbx + 0x28]
test rcx, rcx
je 0x439ed4
mov rdx, qword [rbx + 0x38]
movzx r8d, byte [0x004af128]
cmp rcx, rdx
jb 0x439bc2
mov dword [rbx + 0x80], 1
test r8b, r8b
jne 0x439b34
mov rax, qword [rbx + 0x28]
test rax, rax
je 0x439ef7
mov rdx, qword [rbx + 0x38]
jmp 0x439bd3
mov eax, 0xffffffe7
xor r13d, r13d
cmp dword [rbx + 0x40], eax
jb 0x439b34
mov rax, qword [rbx + 0x28]
test rax, rax
jne 0x439b8b
mov rcx, qword [rbx + 0x18]
call sub.msvcrt.dll_fgetc
cmp eax, 0xffffffff
je 0x43a060
cmp byte [0x004af127], al
je 0x439d03
mov ecx, dword [rbx + 0x80]
test ecx, ecx
je 0x439c8a
jmp 0x439b34
mov eax, dword [rbx + 0x80]
jmp 0x439af6
mov qword [rbx + 0x28], r13
jmp 0x439b1b
mov rcx, qword [rbx + 0x18]
call sub.msvcrt.dll_ftell
sub eax, dword [rbx + 0x20]
mov r13d, eax
lea eax, [r13 - 0x19]
jmp 0x439d58
movzx eax, byte [rsp + 0x47]
movzx ecx, byte [rsp + 0x46]
xor r12d, r12d
movzx edx, byte [rsp + 0x48]
shl eax, 8
shl edx, 0x10
add eax, ecx
add eax, edx
movzx edx, byte [rsp + 0x49]
mov dword [rsp + 0x46], 0
shl edx, 0x18
add eax, edx
mov dword [rsp + 0x2c], eax
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 0x439e00
movzx r8d, byte [rsp + 0x4a]
test r8d, r8d
je 0x439f49
xor r15d, r15d
xor r14d, r14d
jmp 0x439e63
lea rcx, [rax + 1]
mov qword [rbx + 0x28], 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 0x439fd8
mov rax, qword [rbx + 0x28]
test rax, rax
je 0x439f0e
cmp rax, qword [rbx + 0x38]
jb 0x439e38
mov dword [rbx + 0x80], 1
xor ecx, ecx
jmp 0x439e46
mov edx, r13d
add edx, dword [rbx + 0x20]
jb 0x439f35
test r13d, r13d
js 0x439f35
mov rcx, qword [rbx + 0x18]
xor r8d, r8d
call sub.msvcrt.dll_fseek
test eax, eax
je 0x439da0
mov edx, dword [rbx + 0x20]
mov rcx, qword [rbx + 0x18]
mov r8d, 2
mov dword [rbx + 0x80], 1
call sub.msvcrt.dll_fseek
mov eax, dword [rbx + 0x80]
jmp 0x439af6
mov rcx, qword [rbx + 0x18]
call sub.msvcrt.dll_fgetc
cmp eax, 0xffffffff
je 0x43a077
cmp byte [0x004af128], al
je 0x439d38
jmp 0x439d8c
mov rcx, qword [rbx + 0x18]
call sub.msvcrt.dll_fgetc
cmp eax, 0xffffffff
jne 0x439be7
jmp 0x439b2a
mov rcx, qword [rbx + 0x18]
mov dword [rsp + 0x28], r8d
call sub.msvcrt.dll_fgetc
mov r8d, dword [rsp + 0x28]
cmp eax, 0xffffffff
je 0x439e76
movzx ecx, al
add r15d, ecx
jmp 0x439e46
mov dword [rbx + 0x80], 1
mov edx, 0x7fffffff
jmp 0x439e99
cmp dword [rsp + 0x2c], r12d
jne 0x439c8a
test rbp, rbp
je 0x439f74
xor eax, eax
cmp byte [rbx + 0x44], 0
jne 0x439f71
mov rax, qword [rbx + 0x28]
test rax, rax
je 0x43a0d1
sub eax, dword [rbx + 0x30]
mov dword [rbp], eax
test rdi, rdi
je 0x439f85
xor eax, eax
test byte [rsp + 0x35], 4
setne al
mov dword [rdi], eax
cmp byte [rbx + 0x44], 0
jne 0x43a0c7
mov dword [rbx + 0x80], 0
sub r13d, 1
cmp qword [rbx + 0x28], 0
je 0x43a08e
mov rax, qword [rbx + 0x30]
mov rdx, qword [rbx + 0x38]
add rax, r13
cmp rax, rdx
jb 0x43a0e2
mov qword [rbx + 0x28], rdx
mov eax, 1
mov dword [rbx + 0x80], 1
jmp 0x439b36
test r15d, r15d
je 0x439f49
mov eax, dword [rbx + 0x80]
test eax, eax
jne 0x439b34
xor r14d, r14d
jmp 0x43a021
mov dword [rbx + 0x80], 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 0x439f49
mov rax, qword [rbx + 0x28]
test rax, rax
je 0x43a03d
cmp rax, qword [rbx + 0x38]
jae 0x439ff8
lea rcx, [rax + 1]
mov qword [rbx + 0x28], rcx
movzx ecx, byte [rax]
jmp 0x43a004
mov rcx, qword [rbx + 0x18]
call sub.msvcrt.dll_fgetc
cmp eax, 0xffffffff
je 0x439ff8
movzx ecx, al
jmp 0x43a004
test edx, edx
je 0x439c8a
jmp 0x439b34
mov dword [rbx + 0x80], 1
movzx r8d, byte [0x004af127]
jmp 0x439cfa
mov dword [rbx + 0x80], 1
movzx r8d, byte [0x004af128]
jmp 0x439d2f
mov edx, r13d
add edx, dword [rbx + 0x20]
jb 0x43a0f0
test r13d, r13d
js 0x43a0f0
mov rcx, qword [rbx + 0x18]
xor r8d, r8d
call sub.msvcrt.dll_fseek
test eax, eax
je 0x43a0c7
mov edx, dword [rbx + 0x20]
mov rcx, qword [rbx + 0x18]
mov r8d, 2
mov dword [rbx + 0x80], 1
call sub.msvcrt.dll_fseek
mov eax, 1
jmp 0x439b36
mov rcx, qword [rbx + 0x18]
call sub.msvcrt.dll_ftell
sub eax, dword [rbx + 0x20]
jmp 0x439f71
mov qword [rbx + 0x28], rax
mov eax, 1
jmp 0x439b36
mov dword [rbx + 0x80], 1
mov edx, 0x7fffffff
jmp 0x43a09b