Function at 0x180016530
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 [0x1801f2250]
movaps xmmword [rax - 0x28], xmm6
movaps xmmword [rax - 0x38], xmm7
call fcn.18000a910
mov r8d, 1
lea rcx, [rsp + 0x70]
mov edx, eax
mov r14d, eax
call fcn.180008100
xor edx, edx
mov ecx, r14d
call fcn.180009f60
test eax, eax
je 0x180012e2c
xor edx, edx
mov ecx, r14d
call fcn.18000a150
jmp 0x180012e2f
mov eax, r14d
mov ecx, eax
call fcn.1800081d0
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.18000a9b0
test eax, eax
jne 0x180012e97
cmp bl, 0x64
jae 0x180012e97
mov ecx, edi
call fcn.18000a980
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.18000a9b0
test eax, eax
je 0x180012e64
mov ecx, edi
call fcn.18000a9b0
xor ebx, ebx
test eax, eax
jne 0x180012ea8
mov ebp, ebx
jmp 0x180012f17
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.18000b0c0
mov ecx, edi
mov ebp, eax
call fcn.18000a9f0
mov rax, qword [0x1801f2260]
mov rcx, qword [rax + 0x40]
cmp byte [rcx], bl
je 0x180012f17
xor r8d, r8d
lea rdx, str.MPBitset
mov ecx, ebp
call fcn.180007ff0
mov ecx, ebp
call fcn.180009720
mov ecx, ebp
mov edi, eax
call fcn.180009660
test eax, eax
je 0x180012f10
mov ecx, edi
call fcn.180009880
mov ecx, ebp
call fcn.18000ba90
xor r9d, r9d
mov ecx, ebp
lea edx, [r9 + 1]
call fcn.18000b650
mov ecx, ebp
call fcn.18000b780
mov rax, qword gs:[0x58]
mov ecx, dword [0x1801f2234]
mov esi, 0x18
mov rdi, qword [rax + rcx*8]
mov eax, dword [rdi + rsi]
cmp dword [0x1801f3090], eax
jle 0x180012fdb
lea rcx, [0x1801f3090]
call fcn.18014f528
cmp dword [0x1801f3090], 0xffffffff
jne 0x180012fdb
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 0x180012f80
lea eax, [r9 + r9*8]
mov edx, eax
lea rcx, [0x1801f3090]
shr edx, 0xb
xor edx, eax
imul eax, edx, 0x8001
mov dword [0x1801f3094], eax
call fcn.18014f4bc
mov eax, dword [rdi + rsi]
cmp dword [0x1801f3098], eax
jle 0x18001306b
lea rcx, [0x1801f3098]
call fcn.18014f528
cmp dword [0x1801f3098], 0xffffffff
jne 0x18001306b
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 0x180013010
lea eax, [r9 + r9*8]
mov edx, eax
lea rcx, [0x1801f3098]
shr edx, 0xb
xor edx, eax
imul eax, edx, 0x8001
mov dword [0x1801f309c], eax
call fcn.18014f4bc
mov eax, dword [rdi + rsi]
cmp dword [0x1801f30a0], eax
jle 0x1800130fb
lea rcx, [0x1801f30a0]
call fcn.18014f528
cmp dword [0x1801f30a0], 0xffffffff
jne 0x1800130fb
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 0x1800130a0
lea eax, [r9 + r9*8]
mov edx, eax
lea rcx, [0x1801f30a0]
shr edx, 0xb
xor edx, eax
imul eax, edx, 0x8001
mov dword [0x1801f30a4], eax
call fcn.18014f4bc
lea rdx, [rsp + 0xd0]
call fcn.18000a350
mov r8d, dword [0x1801f3094]
mov edx, dword [rsp + 0xd0]
call fcn.18000a2e0
mov r8d, dword [0x1801f309c]
mov edx, dword [rsp + 0xd0]
call fcn.18000a2e0
mov r8d, dword [0x1801f30a4]
mov edx, dword [rsp + 0xd0]
call fcn.18000a2e0
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 0x180013150
lea eax, [r9 + r9*8]
mov ecx, eax
shr ecx, 0xb
xor ecx, eax
imul esi, ecx, 0x8001
test esi, esi
je 0x180013207
mov ecx, esi
xor dil, dil
call fcn.18000a9b0
test eax, eax
jne 0x1800131e5
nop dword [rax + rax]
cmp dil, 0x64
jae 0x1800131e5
mov ecx, esi
call fcn.18000a980
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.18000a9b0
test eax, eax
je 0x1800131b0
mov ecx, esi
call fcn.18000a9b0
test eax, eax
jne 0x1800132fb
lea rdx, str.Failed_to_spawn_model__did_you_give_an_incorrect_model_
lea rcx, str.Spawn
call fcn.180007c00
mov edi, 0xffffffff
mov edx, dword [rsp + 0xd0]
mov ecx, edi
call fcn.18000a290
mov ecx, edi
call fcn.18000a240
mov edx, 0x119
mov r8d, 1
mov ecx, edi
call fcn.18000a690
mov r9d, r14d
mov edx, ebp
mov ecx, edi
call fcn.18000ac50
mov r8d, r14d
mov edx, ebp
mov ecx, edi
call fcn.18000ab90
mov edx, r14d
mov ecx, edi
call fcn.18000aea0
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 0x180013260
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.18000bae0
mov r9d, 0x10
xor r8d, r8d
mov edx, r14d
mov ecx, edi
call fcn.18000ae20
mov ecx, edi
call fcn.18000a3c0
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.180009fc0
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.18000a9f0
mov rax, qword [0x1801f2260]
mov rcx, qword [rax + 0x40]
cmp byte [rcx], 0
je 0x18001320c
xor r8d, r8d
lea rdx, str.MPBitset
mov ecx, edi
call fcn.180007ff0
jmp 0x18001320c
jmp 0x180012dd0