Function at 0x180120630
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r12
push r14
sub rsp, 0x80
movabs rax, 0x50fac3a3e030a6e1
mov dword [0x1805870e8], 1
mov qword [0x1805dd278], rax
xor r12d, r12d
mov eax, dword [0x1805b11f0]
mov rbp, rcx
mov qword [rsp + 0xa8], r12
mov dword [rsp + 0xa8], eax
mov rax, qword [rsp + 0xa8]
mov qword [0x180587120], rax
mov dword [0x1805870f8], r12d
call fcn.1801e4620
mov qword [rsp + 0xa8], r12
mov r14d, dword [rax]
movabs rax, 0x7239b21a38f536ba
mov qword [0x1805dd278], rax
mov dword [rsp + 0xa8], r14d
mov rax, qword [rsp + 0xa8]
mov qword [0x180587120], rax
mov dword [0x1805870f8], r12d
mov dword [0x1805870e8], 1
call fcn.1801e4620
cmp dword [rax], r12d
je 0x180120be2
mov qword [rsp + 0xa0], rbx
mov ebx, r12d
mov qword [rsp + 0xb0], rsi
lea rsi, str.WEAPON_RAILGUN
mov qword [rsp + 0x78], rdi
mov edi, r12d
mov qword [rsp + 0x70], r15
movaps xmmword [rsp + 0x60], xmm6
nop dword [rax]
mov eax, edi
movsx ecx, byte [rax + rsi]
call fcn.180370a88
add eax, ebx
inc edi
imul ebx, eax, 0x401
mov eax, ebx
shr eax, 6
xor ebx, eax
cmp edi, 0xe
jb 0x180120710
lea eax, [rbx + rbx*8]
mov qword [rsp + 0xa8], r12
mov ecx, eax
mov dword [rsp + 0xa8], r14d
shr ecx, 0xb
xor ecx, eax
mov dword [0x1805870f8], r12d
movabs rax, 0x3fef770d40960d5a
imul r15d, ecx, 0x8001
mov qword [0x1805dd278], rax
mov rax, qword [rsp + 0xa8]
mov qword [rsp + 0xa8], r12
mov qword [0x180587120], rax
mov dword [rsp + 0xa8], 1
mov rax, qword [rsp + 0xa8]
mov qword [0x180587128], rax
mov dword [0x1805870e8], 2
call fcn.1801e4620
mov rdi, 0xffffffffffffffff
movsd xmm0, qword [rax + 0x10]
movups xmm6, xmmword [rax]
movsd qword [rsp + 0x50], xmm0
nop
inc rdi
cmp byte [rdi + rbp], r12b
jne 0x1801207c0
mov esi, r12d
mov ebx, r12d
test rdi, rdi
je 0x1801207f8
mov rax, r12
movsx ecx, byte [rax + rbp]
call fcn.180370a88
add eax, ebx
inc esi
imul ebx, eax, 0x401
mov eax, ebx
shr eax, 6
xor ebx, eax
mov eax, esi
cmp rax, rdi
jb 0x1801207d7
movabs rax, 0xd127585f77030af
mov qword [rsp + 0xa8], r12
mov qword [0x1805dd278], rax
lea ebx, [rbx + rbx*8]
mov dword [rsp + 0xa8], r14d
mov rax, qword [rsp + 0xa8]
mov qword [0x180587120], rax
mov dword [0x1805870f8], r12d
mov dword [0x1805870e8], 1
call fcn.1801e4620
mov edi, dword [rax]
call fcn.180370444
call fcn.180370444
movss xmm0, dword [0x180504280]
mov eax, ebx
movss xmm1, dword [rsp + 0x50]
movaps xmm3, xmm6
shr eax, 0xb
addss xmm1, xmm0
xor eax, ebx
mov dword [rsp + 0x38], 1
movss dword [rsp + 0x28], xmm0
movaps xmm2, xmm6
imul edx, eax, 0x8001
mov ecx, 0x1a
shufps xmm3, xmm6, 0xaa
movss dword [rsp + 0x20], xmm1
call fcn.18015abd0
mov qword [rsp + 0xa8], r12
mov ebx, eax
mov dword [rsp + 0xa8], r14d
movabs rax, 0x2a7819605465fbce
mov rcx, qword [rsp + 0xa8]
mov qword [rsp + 0xa8], r12
mov qword [0x180587120], rcx
mov dword [rsp + 0xa8], edi
mov rcx, qword [rsp + 0xa8]
mov qword [0x180587128], rcx
mov dword [0x1805870f8], r12d
mov qword [0x1805dd278], rax
mov dword [0x1805870e8], 2
call fcn.1801e4620
mov qword [rsp + 0xa8], r12
movabs rax, 0x9f3480fe65db31b5
mov qword [0x1805dd278], rax
mov dword [rsp + 0xa8], ebx
mov rax, qword [rsp + 0xa8]
mov qword [rsp + 0xa8], r12
mov qword [0x180587120], rax
mov dword [rsp + 0xa8], edi
mov rax, qword [rsp + 0xa8]
mov qword [0x180587128], rax
mov dword [0x1805870f8], r12d
mov dword [0x1805870e8], 2
call fcn.1801e4620
mov qword [rsp + 0xa8], r12
movabs rax, 0x3dbfc55d5c9bb447
mov qword [0x1805dd278], rax
mov dword [rsp + 0xa8], ebx
mov rax, qword [rsp + 0xa8]
mov qword [rsp + 0xa8], r12
mov qword [0x180587120], rax
mov dword [rsp + 0xa8], edi
mov rax, qword [rsp + 0xa8]
mov qword [0x180587128], rax
mov dword [0x1805870f8], r12d
mov dword [0x1805870e8], 2
call fcn.1801e4620
movabs rax, 0x3882114bde571ad4
mov qword [rsp + 0xa8], r12
mov qword [0x1805dd278], rax
mov dword [rsp + 0xa8], ebx
mov rax, qword [rsp + 0xa8]
mov qword [0x180587120], rax
mov dword [0x1805870f8], r12d
mov qword [0x180587128], r12
mov dword [0x1805870e8], 2
call fcn.1801e4620
movabs rax, 0xc7622c0d36b2fda8
mov dword [0x1805870f8], r12d
mov qword [0x1805dd278], rax
mov qword [rsp + 0xa8], r12
mov dword [rsp + 0xa8], ebx
mov rax, qword [rsp + 0xa8]
mov qword [rsp + 0xa8], r12
mov qword [0x180587120], rax
mov dword [rsp + 0xa8], 0x64
mov rax, qword [rsp + 0xa8]
mov qword [0x180587128], rax
mov dword [0x1805870e8], 2
call fcn.1801e4620
mov r9d, 0x270f
mov dword [rsp + 0x20], 0x270f
mov r8d, r15d
mov edx, r15d
mov ecx, ebx
call fcn.18015ab20
mov qword [rsp + 0xa8], r12
movabs rax, 0xed7f7efe9fabf340
mov qword [0x1805dd278], rax
mov dword [rsp + 0xa8], ebx
mov rax, qword [rsp + 0xa8]
mov qword [rsp + 0xa8], r12
mov qword [0x180587120], rax
mov dword [rsp + 0xa8], 1
mov rax, qword [rsp + 0xa8]
mov qword [0x180587128], rax
mov dword [0x1805870f8], r12d
mov dword [0x1805870e8], 2
call fcn.1801e4620
mov qword [rsp + 0xa8], r12
movabs rax, 0xce2f5fc3af7e8c1e
mov qword [0x1805dd278], rax
mov dword [rsp + 0xa8], edi
mov rax, qword [rsp + 0xa8]
mov qword [rsp + 0xa8], r12
mov qword [0x180587120], rax
mov dword [rsp + 0xa8], 3
mov rax, qword [rsp + 0xa8]
mov qword [0x180587128], rax
mov dword [0x1805870f8], r12d
mov dword [0x1805870e8], 2
call fcn.1801e4620
mov qword [rsp + 0xa8], r12
movabs rax, 0xf5f6378c4f3419d3
mov qword [0x1805dd278], rax
mov dword [rsp + 0xa8], ebx
mov rax, qword [rsp + 0xa8]
mov qword [rsp + 0xa8], r12
mov qword [0x180587120], rax
mov dword [rsp + 0xa8], 0x1388
mov rax, qword [rsp + 0xa8]
mov qword [0x180587128], rax
mov dword [0x1805870f8], r12d
mov dword [0x1805870e8], 2
call fcn.1801e4620
movaps xmm6, xmmword [rsp + 0x60]
mov r15, qword [rsp + 0x70]
mov rdi, qword [rsp + 0x78]
mov rsi, qword [rsp + 0xb0]
mov rbx, qword [rsp + 0xa0]
add rsp, 0x80
pop r14
pop r12
pop rbp
ret