Function at 0x180015e30
Capabilities:
Encode data using xor

Disassembly:
mov rax, rsp
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rbp
mov qword [rax + 8], rcx
push rsi
push rdi
push r14
sub rsp, 0xb0
mov ecx, dword [0x1801f22c0]
movaps xmmword [rax - 0x28], xmm6
movaps xmmword [rax - 0x38], xmm7
call fcn.18000a8d0
mov r8d, 1
lea rcx, [rsp + 0x70]
mov edx, eax
mov r14d, eax
call fcn.1800080c0
xor edx, edx
mov ecx, r14d
call fcn.180009f20
test eax, eax
je 0x180012a1c
xor edx, edx
mov ecx, r14d
call fcn.18000a110
jmp 0x180012a1f
mov eax, r14d
mov ecx, eax
call fcn.180008190
movsd xmm1, qword [rsp + 0x80]
movaps xmm7, xmm0
mov edi, dword [rsp + 0xd0]
xor bl, bl
movups xmm6, xmmword [rsp + 0x70]
mov ecx, edi
movsd qword [rsp + 0x80], xmm1
call fcn.18000a970
test eax, eax
jne 0x180012a87
cmp bl, 0x64
jae 0x180012a87
mov ecx, edi
call fcn.18000a940
mov rax, qword gs:[0x20]
mov rcx, qword [rax]
mov byte [rcx + 0x20], 0
mov rcx, qword [rcx + 8]
call qword [sym.imp.KERNEL32.dll_SwitchToFiber]
mov ecx, edi
inc bl
call fcn.18000a970
test eax, eax
je 0x180012a54
mov ecx, edi
call fcn.18000a970
xor ebx, ebx
test eax, eax
jne 0x180012a98
mov ebp, ebx
jmp 0x180012b07
movss xmm3, dword [rsp + 0x80]
movaps xmm2, xmm6
shufps xmm2, xmm6, 0xaa
movaps xmm1, xmm6
mov dword [rsp + 0x30], ebx
mov ecx, edi
movss dword [rsp + 0x20], xmm7
call fcn.18000b080
mov ecx, edi
mov ebp, eax
call fcn.18000a9b0
mov rax, qword [0x1801f22d0]
mov rcx, qword [rax + 0x40]
cmp byte [rcx], bl
je 0x180012b07
xor r8d, r8d
lea rdx, str.MPBitset
mov ecx, ebp
call fcn.180007fb0
mov ecx, ebp
call fcn.1800096e0
mov ecx, ebp
mov edi, eax
call fcn.180009620
test eax, eax
je 0x180012b00
mov ecx, edi
call fcn.180009840
mov ecx, ebp
call fcn.18000ba50
xor r9d, r9d
mov ecx, ebp
lea edx, [r9 + 1]
call fcn.18000b610
mov ecx, ebp
call fcn.18000b740
mov rax, qword gs:[0x58]
mov ecx, dword [0x1801f22a4]
mov esi, 0x18
mov rdi, qword [rax + rcx*8]
mov eax, dword [rdi + rsi]
cmp dword [0x1801f3100], eax
jle 0x180012bcb
lea rcx, [0x1801f3100]
call fcn.18014ed38
cmp dword [0x1801f3100], 0xffffffff
jne 0x180012bcb
lea r10, str.PLAYER
mov r9d, ebx
mov r8b, 0x50
nop word [rax + rax]
movzx edx, r8b
lea r10, [r10 + 1]
sub r8b, 0x41
cmp r8b, 0x19
movzx r8d, byte [r10]
lea eax, [rdx + 0x20]
movzx ecx, al
cmova ecx, edx
movsx eax, cl
add eax, r9d
imul r9d, eax, 0x401
mov eax, r9d
shr eax, 6
xor r9d, eax
test r8b, r8b
jne 0x180012b70
lea eax, [r9 + r9*8]
mov edx, eax
lea rcx, [0x1801f3100]
shr edx, 0xb
xor edx, eax
imul eax, edx, 0x8001
mov dword [0x1801f3104], eax
call fcn.18014eccc
mov eax, dword [rdi + rsi]
cmp dword [0x1801f3108], eax
jle 0x180012c5b
lea rcx, [0x1801f3108]
call fcn.18014ed38
cmp dword [0x1801f3108], 0xffffffff
jne 0x180012c5b
lea r10, str.CIVMALE
mov r9d, ebx
mov r8b, 0x43
nop dword [rax]
movzx edx, r8b
lea r10, [r10 + 1]
sub r8b, 0x41
cmp r8b, 0x19
movzx r8d, byte [r10]
lea eax, [rdx + 0x20]
movzx ecx, al
cmova ecx, edx
movsx eax, cl
add eax, r9d
imul r9d, eax, 0x401
mov eax, r9d
shr eax, 6
xor r9d, eax
test r8b, r8b
jne 0x180012c00
lea eax, [r9 + r9*8]
mov edx, eax
lea rcx, [0x1801f3108]
shr edx, 0xb
xor edx, eax
imul eax, edx, 0x8001
mov dword [0x1801f310c], eax
call fcn.18014eccc
mov eax, dword [rdi + rsi]
cmp dword [0x1801f3110], eax
jle 0x180012ceb
lea rcx, [0x1801f3110]
call fcn.18014ed38
cmp dword [0x1801f3110], 0xffffffff
jne 0x180012ceb
lea r10, str.CIVFEMALE
mov r9d, ebx
mov r8b, 0x43
nop dword [rax]
movzx edx, r8b
lea r10, [r10 + 1]
sub r8b, 0x41
cmp r8b, 0x19
movzx r8d, byte [r10]
lea eax, [rdx + 0x20]
movzx ecx, al
cmova ecx, edx
movsx eax, cl
add eax, r9d
imul r9d, eax, 0x401
mov eax, r9d
shr eax, 6
xor r9d, eax
test r8b, r8b
jne 0x180012c90
lea eax, [r9 + r9*8]
mov edx, eax
lea rcx, [0x1801f3110]
shr edx, 0xb
xor edx, eax
imul eax, edx, 0x8001
mov dword [0x1801f3114], eax
call fcn.18014eccc
lea rdx, [rsp + 0xd0]
call fcn.18000a310
mov r8d, dword [0x1801f3104]
mov edx, dword [rsp + 0xd0]
call fcn.18000a2a0
mov r8d, dword [0x1801f310c]
mov edx, dword [rsp + 0xd0]
call fcn.18000a2a0
mov r8d, dword [0x1801f3114]
mov edx, dword [rsp + 0xd0]
call fcn.18000a2a0
lea r10, str.u_m_m_jesus_01
mov r9d, ebx
mov r8b, 0x75
nop
movzx edx, r8b
lea r10, [r10 + 1]
sub r8b, 0x41
cmp r8b, 0x19
movzx r8d, byte [r10]
lea eax, [rdx + 0x20]
movzx ecx, al
cmova ecx, edx
movsx eax, cl
add eax, r9d
imul r9d, eax, 0x401
mov eax, r9d
shr eax, 6
xor r9d, eax
test r8b, r8b
jne 0x180012d40
lea eax, [r9 + r9*8]
mov ecx, eax
shr ecx, 0xb
xor ecx, eax
imul esi, ecx, 0x8001
test esi, esi
je 0x180012df7
mov ecx, esi
xor dil, dil
call fcn.18000a970
test eax, eax
jne 0x180012dd5
nop dword [rax + rax]
cmp dil, 0x64
jae 0x180012dd5
mov ecx, esi
call fcn.18000a940
mov rax, qword gs:[0x20]
mov rcx, qword [rax]
mov byte [rcx + 0x20], 0
mov rcx, qword [rcx + 8]
call qword [sym.imp.KERNEL32.dll_SwitchToFiber]
mov ecx, esi
inc dil
call fcn.18000a970
test eax, eax
je 0x180012da0
mov ecx, esi
call fcn.18000a970
test eax, eax
jne 0x180012eeb
lea rdx, str.Failed_to_spawn_model__did_you_give_an_incorrect_model_
lea rcx, str.Spawn
call fcn.180007bc0
mov edi, 0xffffffff
mov edx, dword [rsp + 0xd0]
mov ecx, edi
call fcn.18000a250
mov ecx, edi
call fcn.18000a200
mov edx, 0x119
mov r8d, 1
mov ecx, edi
call fcn.18000a650
mov r9d, r14d
mov edx, ebp
mov ecx, edi
call fcn.18000ac10
mov r8d, r14d
mov edx, ebp
mov ecx, edi
call fcn.18000ab50
mov edx, r14d
mov ecx, edi
call fcn.18000ae60
lea r10, str.WEAPON_RAILGUN
mov r8b, 0x57
nop
movzx edx, r8b
lea r10, [r10 + 1]
sub r8b, 0x41
cmp r8b, 0x19
movzx r8d, byte [r10]
lea eax, [rdx + 0x20]
movzx ecx, al
cmova ecx, edx
movsx eax, cl
add eax, ebx
imul ebx, eax, 0x401
mov eax, ebx
shr eax, 6
xor ebx, eax
test r8b, r8b
jne 0x180012e50
lea eax, [rbx + rbx*8]
mov dword [rsp + 0x20], 1
mov edx, eax
mov r9d, 1
shr edx, 0xb
mov r8d, 0x270f
xor edx, eax
mov ecx, edi
imul edx, edx, 0x8001
call fcn.18000baa0
mov r9d, 0x10
xor r8d, r8d
mov edx, r14d
mov ecx, edi
call fcn.18000ade0
mov ecx, edi
call fcn.18000a380
lea r11, [rsp + 0xb0]
mov rbx, qword [r11 + 0x28]
mov rbp, qword [r11 + 0x30]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
mov rsp, r11
pop r14
pop rdi
pop rsi
ret
mov r8d, esi
mov ecx, ebp
call fcn.180009f80
mov edi, eax
mov rax, qword gs:[0x20]
mov rcx, qword [rax]
mov byte [rcx + 0x20], 0
mov rcx, qword [rcx + 8]
call qword [sym.imp.KERNEL32.dll_SwitchToFiber]
mov ecx, esi
call fcn.18000a9b0
mov rax, qword [0x1801f22d0]
mov rcx, qword [rax + 0x40]
cmp byte [rcx], 0
je 0x180012dfc
xor r8d, r8d
lea rdx, str.MPBitset
mov ecx, edi
call fcn.180007fb0
jmp 0x180012dfc
jmp 0x1800129c0