Function at 0x140004058
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1f]
sub rsp, 0xf8
mov r15, qword [rcx + 0x18]
mov qword [rbp - 0x69], r15
mov ecx, dword [r15 + 0x2c]
call fcn.140002d29
mov ecx, dword [r15 + 0xd8]
mov r13, rax
call fcn.140002d29
mov edx, dword [r15 + 0x90]
mov r8, r15
mov rcx, r13
mov rdi, rax
call fcn.140002b79
mov rbx, rax
mov edx, 0xe0
mov ecx, 0x40
call rbx
mov edx, dword [r15 + 0x68]
mov r8, r15
mov rcx, r13
mov r14, rax
call fcn.140002b79
mov qword [r14 + 0x88], rax
mov r8, r15
mov edx, dword [r15 + 0xf0]
mov rcx, r13
call fcn.140002b79
mov qword [r14 + 0x60], rax
mov r8, r15
mov edx, dword [r15 + 0x98]
mov rcx, r13
call fcn.140002b79
mov qword [r14 + 0xb8], rax
mov r8, r15
mov qword [r14 + 0xd8], rbx
mov rcx, rdi
mov edx, dword [r15 + 0x128]
call fcn.140002b79
mov qword [r14 + 0x58], rax
mov r8, r15
mov qword [r14 + 0x98], rdi
mov rcx, r13
mov edx, dword [r15 + 0x14]
call fcn.140002b79
mov qword [r14 + 0x18], rax
mov r8, r15
mov edx, dword [r15 + 0x4c]
mov rcx, r13
call fcn.140002b79
mov qword [r14 + 0x50], rax
mov r8, r15
mov edx, dword [r15 + 0x34]
mov rcx, r13
call fcn.140002b79
mov qword [r14 + 0x38], rax
mov r8, r15
mov edx, dword [r15 + 0xe8]
mov rcx, r13
call fcn.140002b79
mov qword [r14 + 0x80], rax
mov r8, r15
mov edx, dword [r15 + 0xdc]
mov rcx, rdi
call fcn.140002b79
mov qword [r14 + 0xc8], rax
mov r8, r15
mov qword [r14 + 0x40], r15
mov rcx, r13
mov edx, dword [r15 + 0x20]
call fcn.140002b79
mov qword [r14 + 0x70], rax
mov r8, r15
mov edx, dword [r15 + 0x74]
mov rcx, rdi
call fcn.140002b79
mov qword [r14 + 0x68], rax
mov r8, r15
mov edx, dword [r15 + 0x64]
mov rcx, rdi
call fcn.140002b79
mov qword [r14], rax
mov r8, r15
mov edx, dword [r15 + 4]
mov rcx, r13
call fcn.140002b79
mov qword [r14 + 0xc0], rax
mov r8, r15
mov edx, dword [r15 + 0x94]
mov rcx, r13
call fcn.140002b79
mov qword [r14 + 0x20], rax
mov r8, r15
mov edx, dword [r15 + 0xb4]
mov rcx, r13
call fcn.140002b79
mov qword [r14 + 0x48], rax
mov r8, r15
mov edx, dword [r15 + 0x10]
mov rcx, r13
call fcn.140002b79
mov qword [r14 + 0x28], rax
mov r8, r15
mov qword [r14 + 0x10], r13
mov rcx, r13
mov edx, dword [r15 + 0x10c]
call fcn.140002b79
mov r8, r15
mov qword [r14 + 8], rax
mov edx, 0x80e96588
mov rcx, r13
call fcn.140002b79
mov qword [r14 + 0xd0], rax
mov rax, qword [r14 + 0x40]
mov edx, dword [rax + 0x44]
mov ecx, dword [rax + 0x24]
call qword [r14 + 0xd8]
mov rcx, qword [r14 + 0x40]
mov edx, 0x18
mov rbx, rax
mov ecx, dword [rcx + 0x24]
call qword [r14 + 0xd8]
lea rdx, [r15 + 0xbc]
mov r8d, 3
mov rcx, rax
mov rdi, rax
call fcn.140002ea9
mov rcx, rdi
call fcn.140002e29
movzx ecx, byte [r15 + 0x6c]
mov edx, eax
add rdx, rdi
mov byte [rdx], cl
movzx ecx, byte [r15 + 0x6d]
mov byte [rdx + 1], cl
mov rcx, rdi
movzx eax, byte [r15 + 0x6e]
mov byte [rdx + 2], al
movzx eax, byte [r15 + 0x6f]
mov byte [rdx + 3], al
call fcn.140002e29
mov ecx, eax
movzx eax, byte [r15 + 0x114]
add rcx, rdi
mov byte [rcx], al
movzx eax, byte [r15 + 0x115]
mov byte [rcx + 1], al
movzx eax, byte [r15 + 0x116]
mov byte [rcx + 2], al
movzx eax, byte [r15 + 0x117]
mov byte [rcx + 3], al
mov rcx, rdi
call fcn.140002e29
test eax, eax
je 0x140003afd
mov ecx, eax
lea rdx, [rdi + rcx]
lea r8, [rbx + rcx*2]
nop
movsx ecx, byte [rdx]
lea rdx, [rdx - 1]
mov word [r8], cx
lea r8, [r8 - 2]
add eax, 0xffffffff
jne 0x140003ae9
mov ecx, eax
mov rdx, rbx
movsx eax, byte [rdi + rcx]
mov word [rbx + rcx*2], ax
mov rcx, r14
call fcn.140002ae9
mov edx, dword [r15 + 0xa4]
mov r8, r15
mov rcx, rax
mov rbx, rax
call fcn.140002b79
mov edx, dword [r15 + 0xe4]
mov r8, r15
mov rcx, rbx
mov qword [rbp - 0x59], rax
call fcn.140002b79
mov edx, dword [r15 + 0xa0]
mov r8, r15
mov rcx, rbx
mov qword [rbp - 0x51], rax
call fcn.140002b79
mov edx, dword [r15 + 0x108]
mov r8, r15
mov rcx, rbx
mov qword [rbp - 0x39], rax
call fcn.140002b79
mov edx, dword [r15 + 0x5c]
mov r8, r15
mov rcx, rbx
mov qword [rbp - 0x49], rax
call fcn.140002b79
mov edx, dword [r15 + 0xd4]
mov r8, r15
mov rcx, rbx
mov qword [rbp - 0x21], rax
call fcn.140002b79
mov edx, dword [r15 + 0x9c]
mov r8, r15
mov rcx, rbx
mov qword [rbp - 0x41], rax
call fcn.140002b79
mov edx, dword [r15 + 0xec]
mov r8, r15
mov rcx, rbx
mov qword [rbp - 0x29], rax
call fcn.140002b79
mov qword [rbp - 0x31], rax
mov rax, qword [r14 + 0x40]
mov edx, dword [rax + 0x44]
mov ecx, dword [rax + 0x24]
call qword [r14 + 0xd8]
mov rcx, qword [r14 + 0x40]
mov edx, 0x1d
mov rdi, rax
mov ecx, dword [rcx + 0x24]
call qword [r14 + 0xd8]
lea rdx, [r15 + 0x100]
mov r8d, 4
mov rcx, rax
mov rbx, rax
call fcn.140002ea9
mov rcx, rbx
call fcn.140002e29
movzx ecx, byte [r15 + 0x80]
mov edx, eax
mov byte [rdx + rbx], cl
movzx ecx, byte [r15 + 0x81]
mov byte [rdx + rbx + 1], cl
mov rcx, rbx
call fcn.140002e29
mov ecx, eax
movzx eax, byte [r15 + 0x114]
mov byte [rcx + rbx], al
movzx eax, byte [r15 + 0x115]
mov byte [rcx + rbx + 1], al
movzx eax, byte [r15 + 0x116]
mov byte [rcx + rbx + 2], al
movzx eax, byte [r15 + 0x117]
mov byte [rcx + rbx + 3], al
mov rcx, rbx
call fcn.140002e29
test eax, eax
je 0x140003c8d
mov ecx, eax
lea rdx, [rbx + rcx]
lea r8, [rdi + rcx*2]
nop dword [rax + rax]
movsx ecx, byte [rdx]
lea rdx, [rdx - 1]
mov word [r8], cx
lea r8, [r8 - 2]
add eax, 0xffffffff
jne 0x140003c79
mov ecx, eax
mov rdx, rdi
movsx eax, byte [rbx + rcx]
mov word [rdi + rcx*2], ax
mov rcx, r14
call fcn.140002ae9
mov edx, dword [r15 + 0x40]
mov r8, r15
mov rcx, rax
mov r12, rax
call fcn.140002b79
mov qword [r14 + 0x78], rax
mov r8, r15
mov edx, dword [r15 + 0x3c]
mov rcx, r12
call fcn.140002b79
mov qword [r14 + 0xa8], rax
mov r8, r15
mov edx, dword [r15 + 0x78]
mov rcx, r12
call fcn.140002b79
mov qword [r14 + 0xa0], rax
mov rax, qword [r14 + 0x40]
mov edx, dword [rax + 0x44]
mov ecx, dword [rax + 0x24]
call qword [r14 + 0xd8]
mov r8, r15
mov rcx, r14
mov rdx, rax
mov rsi, rax
call fcn.1400036d9
cmp byte [rsi + 1], 0
jne 0x140003d12
cmp byte [rsi + 5], 0
je 0x140003d44
mov edi, 0x1f
nop
mov rbx, qword [r14 + 0xc8]
lea rcx, [rbp + 0x6f]
mov edx, 8
call fcn.1400030d9
lea rdx, [rbp + 0x6f]
mov qword [rbp + 0x6f], 0xffffffffff2ea640
xor ecx, ecx
call rbx
sub rdi, 1
jne 0x140003d19
xor ecx, ecx
call qword [r14 + 0x80]
xor ecx, ecx
cmp byte [rsi + 6], cl
jne 0x140003dc6
cmp byte [rsi + 7], cl
jne 0x140003dc6
mov edi, dword [r15 + 0xc8]
lea r9, [rbp - 0x59]
add rdi, rax
mov qword [rsp + 0x48], rcx
mov rdx, rdi
lea r8, [rsp + 0x48]
mov rcx, r14
call fcn.140001989
test eax, eax
jg 0x140003dc6
nop word [rax + rax]
mov rbx, qword [r14 + 0xc8]
lea rcx, [rbp + 0x7f]
mov edx, 8
call fcn.1400030d9
lea rdx, [rbp + 0x7f]
mov qword [rbp + 0x7f], 0xfffffffffd158a40
xor ecx, ecx
call rbx
lea r9, [rbp - 0x59]
mov rdx, rdi
lea r8, [rsp + 0x48]
mov rcx, r14
call fcn.140001989
test eax, eax
jle 0x140003d89
mov edx, dword [r15 + 0x38]
mov r8, r15
mov rcx, r12
mov qword [rbp - 0x19], r14
call fcn.140002b79
mov edx, dword [r15 + 0xf8]
mov r8, r15
mov rcx, r12
mov qword [rbp - 0x11], rax
call fcn.140002b79
mov edx, dword [r15 + 0xb0]
mov r8, r15
mov rcx, r13
mov qword [rbp - 9], rax
call fcn.140002b79
mov qword [rbp - 1], rax
xor edi, edi
mov rax, qword [r14 + 0x40]
mov r12d, edi
mov edx, dword [rax + 0x44]
mov ecx, dword [rax + 0x24]
call qword [r14 + 0xd8]
mov r8d, 0x104
xor ecx, ecx
mov rdx, rax
mov rbx, rax
call qword [r14 + 0x48]
mov qword [rsp + 0x30], rdi
lea r8d, [rdi + 1]
mov dword [rsp + 0x28], 0x80
xor r9d, r9d
mov edx, 0x80000000
mov dword [rsp + 0x20], 3
mov rcx, rbx
call qword [r14 + 0x20]
mov rbx, rax
cmp rax, 0xffffffffffffffff
je 0x140003eb9
xor edx, edx
mov rcx, rax
call qword [r14 + 0x38]
mov edi, eax
test eax, eax
jne 0x140003e7a
mov rcx, rbx
call qword [r14 + 0x70]
jmp 0x140003eb9
mov rax, qword [r14 + 0x40]
mov rdx, rdi
mov ecx, dword [rax + 0x24]
call qword [r14 + 0xd8]
lea r9, [rbp + 0x67]
mov r8d, edi
mov rsi, rax
mov rcx, rbx
xor eax, eax
mov rdx, rsi
mov dword [rbp + 0x67], eax
mov qword [rsp + 0x20], rax
call qword [r14 + 8]
mov rdx, qword [r14 + 0x70]
mov rcx, rbx
test eax, eax
je 0x140003eb7
mov r12, rsi
call rdx
mov edx, dword [r15 + 0x50]
mov r8, r15
mov rcx, r13
call fcn.140002b79
movsxd rcx, dword [r15 + 0xc0]
lea rdx, [r15 + 0x54]
mov qword [rbp - 0x61], rax
add r12, rcx
mov eax, dword [rdx]
xor r13d, r13d
mov dword [rsp + 0x58], eax
mov eax, dword [r15 + 0x58]
mov edi, dword [r12]
mov esi, dword [r12 + 4]
mov dword [rsp + 0x40], eax
mov eax, dword [r15 + 0x84]
xor eax, dword [r15 + 0x70]
mov qword [rbp - 0x79], r13
mov qword [rsp + 0x50], r13
cmp edi, eax
jne 0x140003fa8
lea r8d, [r13 + 4]
lea rcx, [rbp + 0x6f]
call fcn.140002ea9
mov word [rbp + 0x73], 0xa0d
lea rbx, [r12 + 8]
nop
lea r10, [rbx + 1]
mov r9d, r13d
mov r8, r10
lea rax, [rbp + 0x6f]
sub r8, rax
nop dword [rax]
nop word [rax + rax]
mov ecx, r13d
lea rax, [rbp + 0x6f]
movzx edx, byte [rax]
cmp byte [r8 + rax], dl
je 0x140003f5e
cmp dl, 0x3f
jne 0x140003f94
inc ecx
inc rax
cmp ecx, 6
jb 0x140003f50
mov ebx, r9d
add rbx, r10
je 0x140004346
mov r9, r14
mov qword [rsp + 0x20], r15
lea r8, [rsp + 0x50]
mov edx, esi
mov rcx, rbx
call fcn.1400015a9
test al, al
je 0x140003f29
jmp 0x140004346
inc r9d
inc r8
cmp r9d, 0x4ecfc7a
jb 0x140003f49
jmp 0x140004346
mov eax, edi
test edi, edi
jne 0x140003fb5
mov rax, qword [r14 + 0x40]
mov eax, dword [rax + 0x44]
mov edx, eax
mov rax, qword [r14 + 0x40]
mov ecx, dword [rax + 0x24]
call qword [r14 + 0xd8]
lea rdx, [r12 + 8]
mov r8d, edi
mov rcx, rax
mov rbx, rax
call fcn.140002ea9
test edi, edi
je 0x140003ff5
lea eax, [rdi - 1]
mov rdx, rbx
shr eax, 2
inc eax
nop
xor dword [rdx], esi
lea rdx, [rdx + 4]
sub rax, 1
jne 0x140003fe9
mov rax, qword [r14 + 0x40]
mov edx, dword [rax + 0x44]
mov ecx, dword [rax + 0x24]
call qword [r14 + 0xd8]
mov r12, rax
movzx eax, byte [rbx]
test al, al
je 0x14000402e
mov rdx, r12
nop word [rax + rax]
movsx ecx, al
lea rbx, [rbx + 1]
mov word [rdx], cx
lea rdx, [rdx + 2]
movzx eax, byte [rbx]
test al, al
jne 0x140004019
mov rax, qword [r14 + 0x40]
mov edx, dword [rax + 0x44]
mov ecx, dword [rax + 0x24]
call qword [r14 + 0xd8]
mov rdx, rax
mov ecx, 0x104
mov rsi, rax
call qword [r14 + 0x18]
mov rcx, qword [r14 + 0x40]
mov edx, 0x12
mov ecx, dword [rcx + 0x24]
call qword [r14 + 0xd8]
mov rbx, qword [r14 + 0x88]
lea rcx, [rbp + 0x7f]
mov rdi, rax
mov eax, 0x25
mov word [rbp + 0x6f], ax
mov eax, pe_nt_image_headers64
mov word [rbp + 0x71], ax
mov word [rbp + 0x73], r13w
lea edx, [rax - 0x70]
call fcn.1400030d9
lea rcx, [rbp + 0x7f]
call rbx
mov r8d, dword [rbp + 0x7f]
lea rdx, [rbp + 0x6f]
mov rcx, rdi
call qword [r14]
mov rdx, rdi
mov rcx, rsi
call fcn.140003259
mov rcx, r12
call fcn.140002e69
mov edx, r13d
mov dword [rbp + 0x6f], edx
test eax, eax
je 0x1400040e3
mov r10d, dword [r15 + 0x60]
mov r8, r12
mov r9d, eax
mov ecx, r10d
lea r8, [r8 + 2]
imul ecx, edx
movzx edx, word [r8 - 2]
add edx, ecx
sub r9, 1
jne 0x1400040c9
mov dword [rbp + 0x6f], edx
mov rax, qword [r14 + 0x40]
mov edx, dword [rax + 0x44]
mov ecx, dword [rax + 0x24]
call qword [r14 + 0xd8]
mov r9d, dword [rbp + 0x6f]
lea rdx, [rbp - 0x19]
mov rbx, rax
mov qword [rbp - 0x71], rax
lea rax, [rbp + 0x7f]
mov qword [rsp + 0x28], r15
mov r8, rbx
mov qword [rsp + 0x20], rax
mov rcx, r14
mov dword [rbp + 0x7f], r13d
call fcn.140001da9
xor r9d, r9d
mov qword [rsp + 0x30], r13
mov dword [rsp + 0x28], 0x80
mov edx, 0x80000000
mov rcx, rbx
mov dword [rsp + 0x20], 3
lea r8d, [r9 + 1]
call qword [r14 + 0x20]
mov rsi, rax
cmp rax, 0xffffffffffffffff
je 0x140004167
xor edx, edx
mov rcx, rax
call qword [r14 + 0x38]
mov ebx, eax
test eax, eax
jne 0x140004188
mov rcx, rsi
call qword [r14 + 0x70]
mov rax, qword [r14 + 0x40]
mov edx, dword [rax + 0x44]
mov ecx, dword [rax + 0x24]
call qword [r14 + 0xd8]
mov r15d, dword [rsp + 0x58]
mov edi, r13d
mov rsi, rax
jmp 0x14000423c
mov rax, qword [r14 + 0x40]
mov rdx, rbx
mov rdi, rbx
mov ecx, dword [rax + 0x24]
call qword [r14 + 0xd8]
lea r9, [rsp + 0x48]
mov r8d, ebx
mov r13, rax
mov rcx, rsi
xor eax, eax
mov rdx, r13
mov dword [rsp + 0x48], eax
mov qword [rsp + 0x20], rax
call qword [r14 + 8]
mov rdx, qword [r14 + 0x70]
mov rcx, rsi
test eax, eax
jne 0x1400041ce
call rdx
xor r13d, r13d
jmp 0x140004167
call rdx
mov ecx, dword [rbp + 0x7f]
xor r9d, r9d
mov eax, ecx
mov byte [rbp + 0x6a], cl
shr eax, 0x18
mov edx, r9d
mov byte [rbp + 0x67], al
mov eax, ecx
shr eax, 0x10
mov byte [rbp + 0x68], al
mov eax, ecx
shr eax, 8
mov byte [rbp + 0x69], al
test ebx, ebx
je 0x14000421e
mov r8, r13
mov eax, edx
lea r8, [r8 + 1]
movzx ecx, byte [rbp + rax + 0x67]
mov eax, edx
xor byte [r8 - 1], cl
lea ecx, [rdx + 1]
cmp eax, 3
mov edx, r9d
cmovne edx, ecx
sub rdi, 1
jne 0x1400041fb
mov rcx, qword [rbp - 0x71]
test rcx, rcx
je 0x140004324
call qword [r14 + 0x60]
jmp 0x140004324
xor r13d, r13d
cmp word [rsi], 0
mov rcx, r13
je 0x14000425c
mov rdx, rsi
nop
mov word [rdx], r13w
lea rcx, [rcx + 1]
cmp word [rsi + rcx*2], 0
lea rdx, [rsi + rcx*2]
jne 0x140004249
mov eax, edi
movzx ecx, word [r12 + rax*2]
cmp cx, 0x3b
je 0x140004285
mov rdx, rsi
test cx, cx
je 0x140004285
inc edi
mov word [rdx], cx
add rdx, 2
movzx ecx, word [r12 + rdi*2]
cmp cx, 0x3b
jne 0x14000426c
mov rcx, rsi
inc edi
call fcn.140002e69
test eax, eax
jne 0x1400042bb
mov rbx, qword [r14 + 0xc8]
lea edx, [rax + 8]
lea rcx, [rbp + 0x67]
mov edi, r13d
call fcn.1400030d9
lea rdx, [rbp + 0x67]
mov qword [rbp + 0x67], 0xfffffffffd1f4e40
xor ecx, ecx
call rbx
jmp 0x14000423c
lea r9, [rbp - 0x59]
mov rdx, rsi
lea r8, [rbp - 0x79]
mov rcx, r14
invalid
invalid
invalid