Function at 0x10018a574
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0xb0
mov rax, qword [0x1004946a0]
xor rax, rsp
mov qword [rsp + 0xa0], rax
mov rax, qword [rcx + 0x10]
lea r8, section..data
mov r13d, 0xfffffff
lea r9, [rax + 0xd]
lea rdi, [r9 - 1]
mov qword [rsp + 0x80], rcx
mov ecx, dword [rax + 5]
mov ebp, dword [rax + 9]
mov r14d, dword [rax + 1]
lea r15, [0x100000000]
and rbp, r13
mov qword [rsp + 0x68], rdx
and rcx, r13
mov qword [rsp + 0x90], rcx
and r14, r13
add rbp, r15
mov qword [rsp + 0x78], rbp
mov qword [rsp + 0x88], r14
xor r12d, r12d
cmp rdi, r8
jb 0x10018a636
mov ecx, dword [0x10005e244]
mov eax, dword [0x1002f3aa4]
imul ecx, eax
mov eax, ecx
add rax, r8
cmp rdi, rax
jae 0x10018a636
mov rax, rdi
sub rax, r8
mov ecx, dword [0x1002f3aa4]
cqo
idiv rcx
mov edx, dword [0x1002f3aa4]
imul rdx, rax
add r8, rdx
jmp 0x10018a639
mov r8, r12
cmp r8, r12
jne 0x10018a648
mov r8, rdi
and r8, 0xffffffffffff0000
mov esi, ebp
sub r9, r8
lea rax, [r9 - 0x40]
cmp rax, r12
cmovl rax, r12
sub esi, r15d
mov dword [rsp + 0x50], esi
lea rdi, [rax + r8]
xor eax, eax
lea ecx, [rax + 0x40]
rep stosb byte [rdi], al
mov edi, dword [0x1002f3aa4]
sub rdi, r14
add rdi, 1
mov r9, rdi
cmp rdi, r12
je 0x10018a6b2
mov rcx, qword [0x100495210]
imul rcx, rcx, 0x343fd
shl rax, 0x10
add rcx, 0x269ec3
mov rdx, rcx
shr rdx, 0x10
movzx edx, dx
or rax, rdx
shr r9, 0x10
jne 0x10018a686
mov qword [0x100495210], rcx
mov ecx, esi
xor edx, edx
div rdi
lea rbx, [rdx + r8]
mov rdx, r14
mov qword [rsp + 0x60], rbx
mov r8, rbx
mov eax, 0x38bbf869
mov rdx, qword [r14 + rbp]
lea rcx, [rsp + 0x58]
mov dil, r12b
mov qword [rsp + 0x58], rdx
mov eax, 0x7d722b62
mov r10, qword [rsp + 0x58]
mov r9d, dword [rsp + 0x5c]
mov rcx, r15
and r10, r13
mov r11, 0xfffffffffffff000
and r9, r13
mov r13d, 4
mov rax, qword [0x1003f4900]
mov qword [rsp + 0x28], r12
add r10, r15
sub rcx, rax
mov qword [rsp + 0x40], rcx
jne 0x10018a785
cmp r9, r12
mov r8, r12
jbe 0x10018aa40
mov r11d, 0xe373700e
mov r15d, 0x1c8c8ff2
mov ecx, dword [rsp + 0x2c]
mov edx, dword [rsp + 0x28]
movzx eax, byte [r10 + r8]
add r8, 1
sub eax, r15d
add edx, eax
add eax, ecx
imul rax, r11
mov qword [rsp + 0x38], rax
mov ecx, dword [rsp + 0x38]
shr rax, 0x20
add ecx, eax
imul ecx, ecx, 0xe373700e
ror ecx, 0x11
imul ecx, ecx, 0xe373700e
ror ecx, 0x11
add edx, ecx
cmp r8, r9
jb 0x10018a73c
mov dword [rsp + 0x2c], ecx
mov dword [rsp + 0x28], edx
jmp 0x10018aa40
movsxd rcx, dword [0x10000003c]
mov r8d, dword [rcx + r15 + 0xb0]
lea rax, [r10 + r9]
mov ecx, dword [rcx + r15 + 0xb4]
mov qword [rsp + 0x70], rax
add r8, r15
mov eax, r10d
sub eax, r15d
mov esi, eax
mov ebx, eax
add rax, r9
mov r12, rax
and rbx, r11
and r12, r11
sub rsi, rbx
sub rax, r12
add rcx, r8
mov qword [rsp + 0x38], rcx
mov qword [rsp + 0x30], rax
jmp 0x10018a7e2
mov eax, dword [r8]
cmp rax, rbx
jae 0x10018a7e7
mov eax, dword [r8 + 4]
add r8, rax
cmp r8, rcx
jne 0x10018a7d3
xor r11d, r11d
cmp r8, rcx
je 0x10018a822
mov eax, dword [r8]
cmp rax, rbx
jne 0x10018a822
mov ecx, dword [r8 + 4]
sub rcx, 8
shr rcx, 1
je 0x10018a81d
mov ax, word [r8 + r11*2 + 8]
and eax, 0xfff
cmp rax, rsi
jae 0x10018a81d
add r11, 1
cmp r11, rcx
jne 0x10018a804
mov rcx, qword [rsp + 0x38]
mov edx, dword [rsp + 0x2c]
mov r15d, 0x1c8c8ff2
mov esi, 0xe373700e
mov r9d, dword [rsp + 0x28]
mov rbp, qword [rsp + 0x40]
cmp r8, rcx
je 0x10018a9d0
mov eax, dword [r8]
cmp rax, r12
ja 0x10018a9d0
mov edi, dword [r8 + 4]
lea rax, [rdi - 8]
shr rax, 1
cmp r11, rax
jne 0x10018a87d
add r8, rdi
cmp r8, rcx
je 0x10018a9d0
mov eax, dword [r8]
cmp rax, r12
ja 0x10018a9d0
xor r11d, r11d
jmp 0x10018a850
mov eax, dword [r8]
cmp rax, r12
jne 0x10018a89b
mov ax, word [r8 + r11*2 + 8]
and eax, 0xfff
cmp rax, qword [rsp + 0x30]
jae 0x10018a9d0
mov rax, r11
add r11, 1
test word [r8 + rax*2 + 8], 0xf000
je 0x10018a83b
xor edi, edi
movzx ecx, word [r8 + rax*2 + 8]
mov ebx, ecx
and ebx, 0xfff
add ebx, dword [r8]
lea rax, [0x100000000]
add rbx, rax
mov rax, rbx
sub rax, r10
je 0x10018a91b
mov r14, rax
movzx eax, byte [rdi + r10]
add rdi, 1
sub eax, r15d
add r9d, eax
add eax, edx
imul rax, rsi
mov qword [rsp + 0x48], rax
shr rax, 0x20
mov edx, dword [rsp + 0x48]
add edx, eax
imul edx, edx, 0xe373700e
ror edx, 0x11
imul edx, edx, 0xe373700e
ror edx, 0x11
add r9d, edx
cmp rdi, r14
jb 0x10018a8d4
mov dword [rsp + 0x2c], edx
mov dword [rsp + 0x28], r9d
shr ecx, 0xc
mov rax, qword [rbx]
mov qword [rsp + 0x48], rax
cmp ecx, 3
je 0x10018a939
sub ecx, 0xa
neg ecx
sbb r10d, r10d
add r10d, 3
jmp 0x10018a93f
mov r10d, 2
mov rsi, rbp
neg rsi
sub r10d, 2
je 0x10018a966
cmp r10d, 1
je 0x10018a957
or rcx, 0xffffffffffffffff
jmp 0x10018a96d
mov ecx, 8
add rax, rsi
mov qword [rsp + 0x48], rax
jmp 0x10018a96d
add dword [rsp + 0x48], esi
mov rcx, r13
mov esi, 0xe373700e
xor r10d, r10d
test rcx, rcx
je 0x10018a9c2
movzx eax, byte [rsp + r10 + 0x48]
add r10, 1
sub eax, r15d
add r9d, eax
add eax, edx
imul rax, rsi
mov qword [rsp + 0x40], rax
mov edx, dword [rsp + 0x40]
shr rax, 0x20
add edx, eax
imul edx, edx, 0xe373700e
ror edx, 0x11
imul edx, edx, 0xe373700e
ror edx, 0x11
add r9d, edx
cmp r10, rcx
jb 0x10018a97a
mov dword [rsp + 0x2c], edx
mov dword [rsp + 0x28], r9d
lea r10, [rcx + rbx]
mov rcx, qword [rsp + 0x38]
jmp 0x10018a83b
mov r14, qword [rsp + 0x88]
mov r8, qword [rsp + 0x70]
mov rbp, qword [rsp + 0x78]
xor r12d, r12d
sub r8, r10
mov rcx, r12
mov dil, cl
je 0x10018aa37
movzx eax, byte [rcx + r10]
add rcx, 1
sub eax, r15d
add r9d, eax
add eax, edx
imul rax, rsi
mov qword [rsp + 0x70], rax
shr rax, 0x20
mov edx, dword [rsp + 0x70]
add edx, eax
imul edx, edx, 0xe373700e
ror edx, 0x11
imul edx, edx, 0xe373700e
ror edx, 0x11
add r9d, edx
cmp rcx, r8
jb 0x10018a9f0
mov dword [rsp + 0x2c], edx
mov dword [rsp + 0x28], r9d
mov esi, dword [rsp + 0x50]
mov rbx, qword [rsp + 0x60]
mov rcx, r12
mov al, cl
add rcx, 1
and eax, 7
mov al, byte [rsp + rax + 0x28]
mov byte [rsp + rcx + 0x97], al
cmp rcx, 8
jb 0x10018aa43
mov eax, 0x85104089
mov r10, rbx
mov r12b, r14b
mov r15, rbp
and r12d, 7
mov rax, qword [rsp + 0x98]
mov qword [rsp + 0x38], rbx
je 0x10018af1a
mov ebx, esi
not ebx
xor r8d, r8d
xor r11d, r11d
mov dword [rsp + 0x40], r8d
xor r10d, r10d
mov dword [rsp + 0x30], r11d
test r12d, r12d
jle 0x10018aad9
lea r9d, [r8 + 0x38]
cmp r10d, r13d
movzx edx, byte [r15]
jge 0x10018aab6
lea ecx, [r9 - 0x20]
shl edx, cl
or r11d, edx
jmp 0x10018aabe
mov ecx, r9d
shl edx, cl
or r8d, edx
add r10d, 1
add r15, 1
sub r9d, 8
cmp r10d, r12d
jl 0x10018aaa2
mov dword [rsp + 0x30], r11d
mov dword [rsp + 0x40], r8d
movzx r10d, word [rsp + 0x9e]
mov ecx, esi
movzx r9d, ax
movzx r8d, word [rsp + 0x9a]
movzx r11d, word [rsp + 0x9c]
sub ecx, r10d
xor ecx, eax
xor ebx, ecx
mov esi, ebx
mov ecx, ebx
xor ecx, r10d
ror esi, 0xc
imul ecx, r11d
xor esi, ecx
xor esi, dword [rsp + 0x50]
mov edx, esi
mov ecx, esi
xor edx, r11d
rol edx, 2
rol ecx, 9
imul edx, r8d
sub edx, ecx
xor ebx, edx
mov ecx, ebx
mov edx, ebx
xor edx, r8d
rol edx, 7
ror ecx, 4
imul edx, r9d
xor ecx, edx
xor esi, ecx
mov ecx, esi
mov edx, esi
xor edx, r8d
shr ecx, 7
imul edx, r10d
add edx, ecx
mov ecx, dword [rsp + 0x9c]
xor ebx, edx
mov edx, eax
xor edx, ebx
sub ecx, edx
xor esi, ecx
mov ecx, esi
mov edx, esi
xor edx, r11d
shr ecx, 6
rol edx, 4
imul edx, r8d
add edx, ecx
xor ebx, edx
mov edx, dword [rsp + 0x9c]
mov ecx, ebx
xor edx, ebx
ror edx, 0xa
rol ecx, 8
imul edx, r9d
add ecx, edx
xor esi, ecx
mov ecx, esi
mov edx, esi
sub edx, eax
rol edx, 2
ror ecx, 9
imul edx, r10d
xor ecx, edx
xor ebx, ecx
mov edx, ebx
ror edx, 2
mov ecx, ebx
xor ecx, r9d
imul ecx, r11d
add edx, ecx
xor esi, edx
mov edx, esi
mov ecx, esi
sub edx, r11d
shr ecx, 4
mov r11d, dword [rsp + 0x40]
imul edx, r8d
sub edx, ecx
xor ebx, edx
mov edx, dword [rsp + 0x9c]
mov ecx, ebx
xor edx, ebx
xor ebx, r11d
mov r8d, ebx
rol edx, 0xd
ror ecx, 5
imul edx, r9d
sub edx, ecx
xor r9d, r9d
xor edx, dword [rsp + 0x30]
xor esi, edx
test r12d, r12d
mov edx, esi
jle 0x10018ac2c
mov rcx, qword [rsp + 0x38]
cmp r9d, r13d
jge 0x10018ac10
rol edx, 8
mov byte [rcx], dl
add rcx, 1
xor dil, dl
jmp 0x10018ac1e
rol r8d, 8
mov byte [rcx], r8b
add rcx, 1
xor dil, r8b
add r9d, 1
cmp r9d, r12d
jl 0x10018abfd
mov qword [rsp + 0x38], rcx
lea ecx, [r12 - 4]
test ecx, ecx
jle 0x10018af02
sub r13d, ecx
shl r13d, 3
mov ecx, r13d
shr ebx, cl
shl ebx, cl
mov r10, qword [rsp + 0x38]
mov r12d, dword [rsp + 0x30]
mov r13, r14
shr r13, 3
je 0x10018ae49
movzx r14d, word [rsp + 0x9a]
movzx ebp, word [rsp + 0x9c]
movzx edx, word [rsp + 0x9e]
movzx ecx, ax
mov dword [rsp + 0x40], edx
mov dword [rsp + 0x30], ecx
movzx ecx, byte [r15 + 1]
movzx r8d, byte [r15 + 4]
movzx r9d, byte [r15]
shl r9d, 8
shl r8d, 8
add r15, 8
or r9d, ecx
movzx ecx, byte [r15 - 6]
shl r9d, 8
or r9d, ecx
movzx ecx, byte [r15 - 5]
shl r9d, 8
or r9d, ecx
movzx ecx, byte [r15 - 3]
or r8d, ecx
movzx ecx, byte [r15 - 2]
xor esi, r9d
shl r8d, 8
or r8d, ecx
shl r8d, 8
movzx ecx, byte [r15 - 1]
or r8d, ecx
mov ecx, esi
sub ecx, edx
xor ecx, eax
xor ecx, r8d
xor ebx, ecx
mov edx, ebx
mov ecx, ebx
xor ecx, dword [rsp + 0x40]
ror edx, 0xc
imul ecx, ebp
xor edx, ecx
xor esi, edx
mov edx, esi
mov ecx, esi
xor edx, ebp
rol edx, 2
rol ecx, 9
imul edx, r14d
sub edx, ecx
xor ebx, edx
mov edx, ebx
xor edx, r14d
mov ecx, ebx
rol edx, 7
ror ecx, 4
imul edx, dword [rsp + 0x30]
xor ecx, edx
xor esi, ecx
movzx ecx, word [rsp + 0x9e]
mov edx, esi
xor edx, r14d
imul edx, ecx
mov ecx, esi
shr ecx, 7
add edx, ecx
mov ecx, dword [rsp + 0x9c]
xor ebx, edx
mov edx, eax
xor edx, ebx
sub ecx, edx
xor esi, ecx
mov ecx, esi
mov edx, esi
xor edx, ebp
shr ecx, 6
rol edx, 4
imul edx, r14d
add edx, ecx
xor ebx, edx
mov edx, dword [rsp + 0x9c]
mov ecx, ebx
xor edx, ebx
ror edx, 0xa
rol ecx, 8
imul edx, dword [rsp + 0x30]
add ecx, edx
xor esi, ecx
mov ecx, esi
mov edx, esi
sub edx, eax
rol edx, 2
ror ecx, 9
imul edx, dword [rsp + 0x40]
xor ecx, edx
xor ebx, ecx
mov ecx, ebx
mov edx, ebx
xor ecx, dword [rsp + 0x30]
ror edx, 2
imul ecx, ebp
add edx, ecx
xor esi, edx
mov edx, esi
mov ecx, esi
sub edx, ebp
shr ecx, 4
imul edx, r14d
sub edx, ecx
xor ebx, edx
mov ecx, ebx
mov edx, dword [rsp + 0x9c]
xor edx, ebx
xor ebx, r11d
mov r11d, r8d
mov byte [r10 + 7], bl
rol edx, 0xd
ror ecx, 5
imul edx, dword [rsp + 0x30]
sub edx, ecx
xor edx, r12d
mov r12d, r9d
xor esi, edx
xor dil, sil
movzx edx, word [rsp + 0x9e]
mov byte [r10 + 3], sil
ror esi, 8
xor dil, bl
mov byte [r10 + 2], sil
ror ebx, 8
mov byte [r10 + 6], bl
xor dil, sil
ror esi, 8
xor dil, bl
mov byte [r10 + 1], sil
ror ebx, 8
xor dil, sil
ror esi, 8
xor dil, bl
mov byte [r10 + 5], bl
ror ebx, 8
mov cl, bl
mov byte [r10], sil
mov byte [r10 + 4], bl
add r10, 8
xor cl, sil
xor dil, cl
ror esi, 8
ror ebx, 8
sub r13, 1
jne 0x10018ac82
mov rbp, qword [rsp + 0x78]
mov r14, qword [rsp + 0x88]
cmp dil, byte [r14 + rbp + 8]
je 0x10018af42
call fcn.1002d3e40
mov ebx, 0xffff
lea r10, [0x1003e8888]
mov rsi, qword [rsp + 0x80]
mov qword [rsi + 0x10], r10
mov r11, rax
mov rcx, qword [0x100495210]
mov rax, 0xfffffffffffff000
lea r8, [rsi + 0x18]
and r8, 0xfffffffffffffff8
and r11, rax
lea r9, [r8 + 0xfff]
and r9, rax
xor edi, edi
imul rcx, rcx, 0x343fd
shl rdi, 0x10
add rcx, 0x269ec3
mov rax, rcx
shr rax, 0x10
movzx edx, ax
or rdi, rdx
shr rbx, 0x10
jne 0x10018ae99
mov qword [0x100495210], rcx
movabs rax, 0x8000800080008001
mul rdi
shr rdx, 0xf
imul rdx, rdx, 0xffff
mov rax, qword [rsp + 0x68]
mov qword [rax + 0x98], r11
sub rdi, rdx
add rdi, 1
mov qword [rax + 0xb0], rdi
mov qword [rsp + 0x68], 0
jmp 0x10018af38
xor ebx, ebx
test ecx, ecx
jns 0x10018ac47
neg ecx
shl ecx, 3
shr esi, cl
shl esi, cl
jmp 0x10018ac47
xor ebx, ebx
mov r12d, esi
mov r11d, esi
not r11d
xor esi, esi
jmp 0x10018ac51
mov rax, qword [rsp + 0x68]
mov qword [r8], rax
add r8, 8
cmp r8, r9
jb 0x10018af2c
jmp 0x10018b05f
lea r15, [0x100000000]
mov rsi, r15
mov rbx, rbp
mov r12, qword [rsp + 0x60]
mov rax, qword [0x1003f4900]
sub rbx, r12
sub rsi, rax
jne 0x10018af6c
test rbx, rbx
je 0x10018b040
mov rcx, qword [0x1000016e8]
mov r11, r12
xor edi, edi
sub r11, rbp
sub ebp, r15d
lea r13d, [r14 + rbp]
lea r14, [0x1000016e8]
lea r8d, [rcx - 1]
test r8d, r8d
js 0x10018afbf
lea eax, [r8 + rdi]
cdq
sub eax, edx
sar eax, 1
movsxd rdx, eax
mov r9d, dword [r14 + rdx*4 + 4]
and r9d, 0xfffffff
cmp ebp, r9d
jae 0x10018afb5
lea r8d, [rax - 1]
jmp 0x10018afba
jbe 0x10018afc4
lea edi, [rax + 1]
cmp r8d, edi
jge 0x10018af92
movsxd r10, edi
jmp 0x10018b039
movsxd r10, eax
jmp 0x10018b039
mov edx, dword [r14 + r10*4 + 4]
mov eax, edx
and eax, 0xfffffff
cmp eax, r13d
jae 0x10018b040
mov r8, rdx
mov edi, edx
sar edx, 0x1e
shl edi, 2
and r8d, 0xfffffff
and edx, 3
sar edi, 0x1e
add r8, r15
xor r9d, r9d
and edi, 3
sub edi, 1
je 0x10018b014
sub edi, 1
je 0x10018b00f
cmp edi, 1
jne 0x10018b01a
mov r9, rsi
jmp 0x10018b01a
mov r9, rbx
jmp 0x10018b01a
mov r9, rsi
sub r9, rbx
sub edx, 2
je 0x10018b02a
cmp edx, 1
jne 0x10018b035
add qword [r8 + r11], r9
jmp 0x10018b02e
add dword [r8 + r11], r9d
mov rcx, qword [0x1000016e8]
add r10, 1
mov eax, ecx
cmp r10, rax
jb 0x10018afc9
mov eax, dword [0x1002f3aa4]
mov eax, 0x219d474
mov rdx, qword [rsp + 0x90]
mov rsi, qword [rsp + 0x80]
lea r10, [r12 + rdx]
mov qword [rsi + 0x10], r10
mov rcx, qword [rsp + 0xa0]
xor rcx, rsp
call fcn.1002d532c
mov rbx, qword [rsp + 0x100]
add rsp, 0xb0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret