Function at 0x18000a394
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
push rsi
push rdi
push r12
push r14
push r15
sub rsp, 0x20
cmp byte [r8], 0x43
mov rbx, rdx
lea rdx, [r8 + 0x10]
mov r15, r9
mov rbp, rcx
jne 0x18000a8d1
cmp byte [r8 + 1], 0x50
jne 0x18000a8d1
cmp byte [r8 + 2], 0x4b
jne 0x18000a8d1
cmp byte [r8 + 3], 0x20
jne 0x18000a8d1
movzx ecx, byte [r8 + 0xf]
movzx eax, byte [r8 + 0xe]
shl rax, 0x30
shl rcx, 0x38
or ecx, eax
movzx eax, byte [r8 + 0xd]
shl rax, 0x28
or ecx, eax
movzx eax, byte [r8 + 0xc]
shl rax, 0x20
or ecx, eax
movzx eax, byte [r8 + 0xb]
shl rax, 0x18
or ecx, eax
movzx eax, byte [r8 + 0xa]
shl rax, 0x10
or ecx, eax
movzx eax, byte [r8 + 9]
shl rax, 8
or ecx, eax
movzx eax, byte [r8 + 8]
or ecx, eax
lea eax, [rcx + 0x10]
cmp eax, 0x800
jbe 0x18000a448
mov eax, 1
jmp 0x18000a8d6
xor r12d, r12d
mov esi, 1
cmp byte [r8 + 4], r12b
jne 0x18000a478
mov rax, rdx
mov r8d, 0x655f
test ecx, ecx
je 0x18000a478
mov r9d, ecx
xor byte [rax], r8b
add rax, rsi
imul r8d, r8d, 0x4115
sub r9, rsi
jne 0x18000a466
mov r8d, ecx
mov rcx, r15
call fcn.18001f064
mov rdi, rax
test rax, rax
jne 0x18000a495
mov eax, 3
jmp 0x18000a8d6
lea r8, str.UpdateDateTime
xor edx, edx
mov rcx, rdi
call fcn.18000bfe4
lea r8, str.ContentOffset
mov qword [rbx], rax
xor edx, edx
mov rcx, rdi
call fcn.18000bfe4
lea r8, str.ContentSize
mov dword [rbx + 8], eax
xor edx, edx
mov rcx, rdi
call fcn.18000bfe4
lea r8, str.TocOffset
mov qword [rbx + 0x10], rax
xor edx, edx
mov rcx, rdi
call fcn.18000bfe4
lea r8, str.TocSize
mov qword [rbx + 0x18], rax
xor edx, edx
mov rcx, rdi
call fcn.18000bfe4
lea r8, str.EtocOffset
mov qword [rbx + 0x20], rax
xor edx, edx
mov rcx, rdi
call fcn.18000bfe4
lea r8, str.EtocSize
mov qword [rbx + 0x28], rax
xor edx, edx
mov rcx, rdi
call fcn.18000bfe4
lea r8, str.ItocOffset
mov qword [rbx + 0x30], rax
xor edx, edx
mov rcx, rdi
call fcn.18000bfe4
lea r8, str.ItocSize
mov qword [rbx + 0x38], rax
xor edx, edx
mov rcx, rdi
call fcn.18000bfe4
lea r8, str.GtocOffset
mov qword [rbx + 0x40], rax
xor edx, edx
mov rcx, rdi
call fcn.18000bfe4
lea r8, str.GtocSize
mov qword [rbx + 0x48], rax
xor edx, edx
mov rcx, rdi
call fcn.18000bfe4
lea r8, str.Updates
mov qword [rbx + 0x50], rax
xor edx, edx
mov rcx, rdi
call fcn.18000bfac
lea r8, str.Version
mov dword [rbx + 0x70], eax
xor edx, edx
mov rcx, rdi
call fcn.18000bf70
lea r8, str.Revision
mov word [rbx + 0x74], ax
xor edx, edx
mov rcx, rdi
call fcn.18000bf70
lea r8, str.Align
mov word [rbx + 0x76], ax
xor edx, edx
mov rcx, rdi
call fcn.18000bf70
lea r8, str.Sorted
mov word [rbx + 0x80], ax
xor edx, edx
mov rcx, rdi
call fcn.18000bf70
mov word [rbx + 0x82], ax
lea r8, [0x180023214]
xor edx, edx
mov rcx, rdi
call fcn.18000bf70
lea r8, str.Comment
mov word [rbx + 0x84], ax
xor edx, edx
mov rcx, rdi
call fcn.18000bf38
lea r8, str.Tvers
mov qword [rbx + 0x98], rax
xor edx, edx
mov rcx, rdi
call fcn.18000bf38
lea rdx, str.CpkMode
mov qword [rbx + 0xa0], rax
mov rcx, rdi
call fcn.18001f2a0
test eax, eax
js 0x18000a656
lea r8, str.CpkMode
xor edx, edx
mov rcx, rdi
call fcn.18000bfac
jmp 0x18000a693
mov rax, qword [rbx + 0x40]
mov rcx, qword [rbx + 0x50]
cmp qword [rbx + 0x20], r12
je 0x18000a68c
test rax, rax
je 0x18000a675
test rcx, rcx
je 0x18000a681
mov eax, 4
jmp 0x18000a693
test rcx, rcx
je 0x18000a681
mov eax, 3
jmp 0x18000a693
neg rax
sbb eax, eax
neg eax
add eax, esi
jmp 0x18000a693
neg rax
sbb eax, eax
not eax
lea rdx, str.EnableFileName
mov dword [rbx + 0x88], eax
mov rcx, rdi
call fcn.18001f2a0
test eax, eax
js 0x18000a6bf
lea r8, str.EnableFileName
xor edx, edx
mov rcx, rdi
call fcn.18000bf70
jmp 0x18000a6ea
mov ecx, dword [rbx + 0x88]
test ecx, ecx
je 0x18000a6e6
sub ecx, esi
je 0x18000a6e1
sub ecx, esi
je 0x18000a6e1
sub ecx, esi
je 0x18000a6e1
sub ecx, esi
je 0x18000a6e6
cmp ecx, esi
jne 0x18000a6e1
mov eax, esi
jmp 0x18000a6ea
movzx eax, si
jmp 0x18000a6ea
movzx eax, r12w
lea r8, str.TocCrc
mov word [rbx + 0x86], ax
xor edx, edx
mov rcx, rdi
call fcn.18000bfac
lea r8, str.ItocCrc
mov dword [rbx + 0x58], eax
xor edx, edx
mov rcx, rdi
call fcn.18000bfac
lea r8, str.GtocCrc
mov dword [rbx + 0x5c], eax
xor edx, edx
mov rcx, rdi
call fcn.18000bfac
lea r8, str.Codec
mov dword [rbx + 0x60], eax
xor edx, edx
mov rcx, rdi
call fcn.18000bfac
lea r8, str.DpkItoc
mov dword [rbx + 0x8c], eax
xor edx, edx
mov rcx, rdi
call fcn.18000bfac
lea r8, str.Files
mov dword [rbx + 0x90], eax
xor edx, edx
mov rcx, rdi
call fcn.18000bfac
mov dword [rbp + 8], eax
lea rdx, str.EnableTocCrc
mov rcx, rdi
mov dword [rbx + 0x64], eax
call fcn.18001f2a0
test eax, eax
js 0x18000a798
lea r8, str.EnableTocCrc
xor edx, edx
mov rcx, rdi
call fcn.18000bf70
jmp 0x18000a7af
cmp dword [rbx + 0x58], r12d
jne 0x18000a7ad
cmp dword [rbx + 0x5c], r12d
jne 0x18000a7ad
mov eax, r12d
cmp dword [rbx + 0x60], r12d
je 0x18000a7af
mov eax, esi
lea rdx, str.EnableFileCrc
mov word [rbx + 0xa8], ax
mov rcx, rdi
call fcn.18001f2a0
test eax, eax
js 0x18000a7dc
lea r8, str.EnableFileCrc
xor edx, edx
mov rcx, rdi
call fcn.18000bf70
jmp 0x18000a7e3
movzx eax, word [rbx + 0xa8]
lea rdx, str.CrcMode
mov word [rbx + 0xaa], ax
mov rcx, rdi
call fcn.18001f2a0
test eax, eax
js 0x18000a816
lea r8, str.CrcMode
xor edx, edx
mov rcx, rdi
call fcn.18000bfac
mov dword [rbx + 0xac], eax
jmp 0x18000a81d
mov dword [rbx + 0xac], r12d
lea rdx, str.CrcTable
mov rcx, rdi
call fcn.18001f2a0
test eax, eax
js 0x18000a850
lea r9, [rsp + 0x60]
xor edx, edx
lea r8, str.CrcTable
mov rcx, rdi
call fcn.18000bed4
mov r14d, dword [rsp + 0x60]
mov rbp, rax
jmp 0x18000a856
mov rbp, r12
mov r14d, r12d
mov rcx, rdi
call fcn.18001f224
test r14d, r14d
jle 0x18000a8cd
test rbp, rbp
je 0x18000a8cd
mov r8d, r14d
mov rdx, rbp
mov rcx, r15
call fcn.18001f064
mov rdi, rax
test rax, rax
je 0x18000a48b
cmp dword [rbx + 0xac], r12d
jne 0x18000a8c5
lea rbp, [0x1800230ec]
xor edx, edx
mov r8, rbp
mov rcx, rax
call fcn.18000bfac
mov r8, rbp
mov dword [rbx + 0x58], eax
mov edx, esi
mov rcx, rdi
call fcn.18000bfac
mov r8, rbp
mov dword [rbx + 0x5c], eax
mov edx, 2
mov rcx, rdi
call fcn.18000bfac
mov dword [rbx + 0x60], eax
mov rcx, rdi
call fcn.18001f224
xor eax, eax
jmp 0x18000a8d6
mov eax, 2
mov rbx, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x58]
add rsp, 0x20
pop r15
pop r14
pop r12
pop rdi
pop rsi
ret