Function at 0x140135430
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push rdi
push r14
push r15
lea rbp, [rsp - 0x14c0]
mov eax, 0x15c0
call fcn.1401e23e0
sub rsp, rax
movaps xmmword [rsp + 0x15b0], xmm6
movaps xmmword [rsp + 0x15a0], xmm7
movaps xmmword [rsp + 0x1590], xmm8
mov rax, qword [0x1402a1fc0]
xor rax, rsp
mov qword [rbp + 0x1480], rax
mov r14, r8
mov rdi, rdx
mov rsi, rcx
xor r15d, r15d
cmp byte [rcx + 0x2a9], r15b
jne 0x140135e4a
mov rbx, qword [rcx + 0x2d0]
mov qword [rsp + 0x58], r15
movdqa xmm0, xmmword [0x140257a00]
movdqu xmmword [rsp + 0x68], xmm0
mov byte [rsp + 0x58], r15b
xor r8d, r8d
lea rdx, [0x14020c37c]
lea rcx, [rsp + 0x58]
call fcn.140005440
nop
mov qword [rsp + 0x78], r15
movdqa xmm0, xmmword [0x140257a00]
movdqu xmmword [rbp - 0x78], xmm0
mov byte [rsp + 0x78], r15b
lea r8d, [r15 + 7]
lea rdx, str.axe_hit
lea rcx, [rsp + 0x78]
call fcn.140005440
nop
lea r8, [rsp + 0x58]
lea rdx, [rsp + 0x78]
mov rcx, rbx
call fcn.14015cd50
nop
lea rcx, [rsp + 0x78]
call fcn.1400053c0
nop
lea rcx, [rsp + 0x58]
call fcn.1400053c0
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov dword [rbp + 0x1474], 0xffffffff
mov dword [rbp + 0xf4], eax
lea edx, [r15 + 1]
nop word [rax + rax]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rbp + rdx*4 + 0xf4], eax
inc rdx
cmp rdx, 0x270
jb 0x140135540
mov edx, 0x270
mov dword [rbp + 0xf0], edx
xorps xmm3, xmm3
xorps xmm1, xmm1
movsd xmm2, qword [0x1402576f8]
mov eax, edx
mov r10d, 2
mov r8d, edx
movsd xmm4, qword [0x140257830]
nop
cmp r8d, 0x270
jne 0x1401355f4
lea r8, [rbp + 0xf8]
mov r9d, 0x270
nop word [rax + rax]
mov edx, dword [r8 - 4]
xor edx, dword [r8]
btr edx, 0x1f
xor edx, dword [r8 - 4]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
xor ecx, dword [r8 + 0x630]
shr edx, 1
xor ecx, edx
mov dword [r8 + 0x9bc], ecx
lea r8, [r8 + 4]
sub r9, 1
jne 0x1401355b0
mov edx, dword [rbp + 0xf0]
jmp 0x1401356e7
cmp eax, 0x4e0
jb 0x1401356e7
mov r8, r15
nop dword [rax]
nop word [rax + rax]
mov edx, dword [rbp + r8*4 + 0xab4]
xor edx, dword [rbp + r8*4 + 0xab8]
btr edx, 0x1f
xor edx, dword [rbp + r8*4 + 0xab4]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
xor ecx, dword [rbp + r8*4 + 0x10e8]
shr edx, 1
xor ecx, edx
mov dword [rbp + r8*4 + 0xf4], ecx
inc r8
cmp r8, 0xe3
jb 0x140135610
mov r8d, 0xe3
mov edx, dword [rbp + r8*4 + 0xab4]
xor edx, dword [rbp + r8*4 + 0xab8]
btr edx, 0x1f
xor edx, dword [rbp + r8*4 + 0xab4]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
xor ecx, dword [rbp + r8*4 - 0x298]
shr edx, 1
xor ecx, edx
mov dword [rbp + r8*4 + 0xf4], ecx
inc r8
cmp r8, 0x26f
jb 0x140135660
mov edx, dword [rbp + 0x1470]
xor edx, dword [rbp + 0xf4]
btr edx, 0x1f
xor edx, dword [rbp + 0x1470]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
shr edx, 1
xor ecx, edx
xor ecx, dword [rbp + 0x724]
mov dword [rbp + 0xab0], ecx
mov edx, r15d
mov dword [rbp + 0xf0], edx
mov eax, edx
mov ecx, dword [rbp + rax*4 + 0xf4]
inc edx
mov r8d, edx
mov dword [rbp + 0xf0], edx
mov eax, ecx
shr eax, 0xb
and eax, dword [rbp + 0x1474]
xor ecx, eax
mov eax, ecx
and eax, 0xff3a58ad
shl eax, 7
xor ecx, eax
mov eax, ecx
and eax, 0xffffdf8c
shl eax, 0xf
xor ecx, eax
mov eax, ecx
shr eax, 0x12
xor eax, ecx
xorps xmm0, xmm0
cvtsi2sd xmm0, rax
subsd xmm0, xmm3
mulsd xmm0, xmm2
addsd xmm1, xmm0
mulsd xmm2, xmm4
sub r10, 1
mov eax, edx
jne 0x140135590
divsd xmm1, xmm2
mulsd xmm1, qword [0x140257760]
addsd xmm1, xmm3
xorps xmm7, xmm7
cvtsd2ss xmm7, xmm1
movaps xmm0, xmm7
call sub.api_ms_win_crt_math_l1_1_0.dll_sinf
xorps xmm8, xmm8
cvtss2sd xmm8, xmm0
mulsd xmm8, qword [0x140257698]
movaps xmm0, xmm7
call sub.api_ms_win_crt_math_l1_1_0.dll_cosf
xorps xmm1, xmm1
cvtss2sd xmm1, xmm0
mulsd xmm1, qword [0x140257698]
cvtpd2ps xmm0, xmm1
movss dword [rsp + 0x30], xmm0
cvtpd2ps xmm1, xmm8
movss dword [rsp + 0x34], xmm1
mov rcx, qword [rsi + 0x2f0]
mov rax, qword [rsp + 0x30]
mov qword [rbp + 0xa0], rax
movss xmm0, dword [0x140257590]
movss dword [rbp + 0xa8], xmm0
add rcx, 0x30
mov dword [rsp + 0x30], r15d
mov rdx, qword [rcx + 8]
cmp rdx, qword [rcx + 0x10]
je 0x1401357f0
mov qword [rdx], rax
mov qword [rdx + 8], 0x3dcccccd
add qword [rcx + 8], 0x10
jmp 0x14013580d
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
lea r9, [rbp + 0xa8]
lea r8, [rbp + 0xa0]
call fcn.14002dd40
mov rcx, qword [rsi + 0x2e0]
mov eax, dword [rcx + 0x98]
add eax, 0xfffffff6
cmovs eax, r15d
mov dword [rcx + 0x98], eax
mov rcx, qword [rsi + 0x2e0]
mov eax, 0x66666667
imul dword [rcx + 0x98]
sar edx, 2
mov eax, edx
shr eax, 0x1f
add edx, eax
je 0x140135895
sub edx, 1
je 0x140135889
sub edx, 1
je 0x14013587d
sub edx, 1
je 0x140135871
cmp edx, 1
je 0x140135865
mov dword [rcx + 0x9c], 0x40200000
jmp 0x14013589f
mov dword [rcx + 0x9c], 0x400ccccd
jmp 0x14013589f
mov dword [rcx + 0x9c], 0x3ff33333
jmp 0x14013589f
mov dword [rcx + 0x9c], 0x3fcccccd
jmp 0x14013589f
mov dword [rcx + 0x9c], 0x3fa66666
jmp 0x14013589f
mov dword [rcx + 0x9c], 0x3f800000
mov byte [rdi + 0x18], 1
mov dword [rdi + 0x10], r15d
movss xmm0, dword [rdi + 8]
mulss xmm0, dword [0x1402575e0]
movss dword [rdi + 0xc], xmm0
movzx edi, byte [rsi + 0x280]
movss xmm6, dword [r14]
cvtps2pd xmm6, xmm6
movaps xmm1, xmm6
movq rdx, xmm6
lea rcx, [0x14020e690]
call fcn.14002b610
movsxd rbx, eax
mov qword [rsp + 0x78], r15
movdqa xmm0, xmmword [0x140257a00]
movdqu xmmword [rbp - 0x78], xmm0
mov byte [rsp + 0x78], 0
xor r8d, r8d
mov rdx, rbx
lea rcx, [rsp + 0x78]
call fcn.14002b7e0
lea rcx, [rsp + 0x78]
cmp qword [rbp - 0x70], 0x10
cmovae rcx, qword [rsp + 0x78]
lea rdx, [rbx + 1]
movaps xmm3, xmm6
movq r9, xmm6
lea r8, [0x14020e690]
call fcn.14002b5b0
nop
movsd xmm6, qword [0x140369a48]
movaps xmm1, xmm6
movq rdx, xmm6
lea rcx, [0x14020e690]
call fcn.14002b610
movsxd rbx, eax
mov qword [rsp + 0x38], r15
movdqa xmm0, xmmword [0x140257a00]
movdqu xmmword [rsp + 0x48], xmm0
mov byte [rsp + 0x38], 0
xor r8d, r8d
mov rdx, rbx
lea rcx, [rsp + 0x38]
call fcn.14002b7e0
lea rcx, [rsp + 0x38]
cmp qword [rsp + 0x50], 0x10
cmovae rcx, qword [rsp + 0x38]
lea rdx, [rbx + 1]
movaps xmm3, xmm6
movq r9, xmm6
lea r8, [0x14020e690]
call fcn.14002b5b0
nop
mov rcx, qword [rsp + 0x48]
mov rdx, qword [rsp + 0x50]
cmp rcx, rdx
jae 0x1401359cf
lea rax, [rcx + 1]
mov qword [rsp + 0x48], rax
lea rax, [rsp + 0x38]
cmp rdx, 0x10
cmovae rax, qword [rsp + 0x38]
mov word [rax + rcx], 0x2c
jmp 0x1401359dc
mov r9b, 0x2c
lea rcx, [rsp + 0x38]
call fcn.1400106a0
movups xmm0, xmmword [rsp + 0x38]
movups xmmword [rbp + 0xb0], xmm0
movups xmm1, xmmword [rsp + 0x48]
movups xmmword [rbp + 0xc0], xmm1
movdqa xmm0, xmmword [0x140257a00]
movdqu xmmword [rsp + 0x48], xmm0
mov byte [rsp + 0x38], 0
lea r9, [rsp + 0x78]
lea r8, [rbp + 0xb0]
lea rcx, [rbp - 0x68]
call fcn.140010810
nop
mov rcx, qword [rbp - 0x58]
mov rdx, qword [rbp - 0x50]
cmp rcx, rdx
jae 0x140135a47
lea rax, [rcx + 1]
mov qword [rbp - 0x58], rax
lea rax, [rbp - 0x68]
cmp rdx, 0x10
cmovae rax, qword [rbp - 0x68]
mov word [rax + rcx], 0x2c
jmp 0x140135a53
mov r9b, 0x2c
lea rcx, [rbp - 0x68]
call fcn.1400106a0
movups xmm0, xmmword [rbp - 0x68]
movups xmmword [rsp + 0x58], xmm0
movups xmm1, xmmword [rbp - 0x58]
movdqu xmmword [rsp + 0x68], xmm1
movdqa xmm0, xmmword [0x140257a00]
movdqu xmmword [rbp - 0x58], xmm0
mov byte [rbp - 0x68], 0
movq rcx, xmm1
psrldq xmm1, 8
movq rdx, xmm1
cmp rcx, rdx
jae 0x140135aab
lea rax, [rcx + 1]
mov qword [rsp + 0x68], rax
lea rax, [rsp + 0x58]
cmp rdx, 0x10
cmovae rax, qword [rsp + 0x58]
mov word [rax + rcx], 0x20
jmp 0x140135ab8
mov r9b, 0x20
lea rcx, [rsp + 0x58]
call fcn.1400106a0
movups xmm0, xmmword [rsp + 0x58]
movups xmmword [rbp + 0x78], xmm0
movups xmm1, xmmword [rsp + 0x68]
movdqu xmmword [rbp + 0x88], xmm1
movdqa xmm0, xmmword [0x140257a00]
movdqu xmmword [rsp + 0x68], xmm0
mov byte [rsp + 0x58], 0
movq rcx, xmm1
psrldq xmm1, 8
movq rdx, xmm1
cmp rcx, rdx
jae 0x140135b15
lea rax, [rcx + 1]
mov qword [rbp + 0x88], rax
lea rax, [rbp + 0x78]
cmp rdx, 0x10
cmovae rax, qword [rbp + 0x78]
mov word [rax + rcx], 0x2c
jmp 0x140135b21
mov r9b, 0x2c
lea rcx, [rbp + 0x78]
call fcn.1400106a0
movups xmm0, xmmword [rbp + 0x78]
movups xmmword [rbp + 0x58], xmm0
movups xmm1, xmmword [rbp + 0x88]
movdqu xmmword [rbp + 0x68], xmm1
movdqa xmm0, xmmword [0x140257a00]
movdqu xmmword [rbp + 0x88], xmm0
mov byte [rbp + 0x78], 0
movq rcx, xmm1
psrldq xmm1, 8
movq rdx, xmm1
cmp rcx, rdx
jae 0x140135b7a
lea rax, [rcx + 1]
mov qword [rbp + 0x68], rax
lea rax, [rbp + 0x58]
cmp rdx, 0x10
cmovae rax, qword [rbp + 0x58]
mov word [rax + rcx], 0x20
jmp 0x140135b86
mov r9b, 0x20
lea rcx, [rbp + 0x58]
call fcn.1400106a0
movups xmm0, xmmword [rbp + 0x58]
movups xmmword [rbp + 0x38], xmm0
movups xmm1, xmmword [rbp + 0x68]
movdqu xmmword [rbp + 0x48], xmm1
movdqa xmm0, xmmword [0x140257a00]
movdqu xmmword [rbp + 0x68], xmm0
mov byte [rbp + 0x58], 0
movq rcx, xmm1
psrldq xmm1, 8
movq rdx, xmm1
cmp rcx, rdx
jae 0x140135bd9
lea rax, [rcx + 1]
mov qword [rbp + 0x48], rax
lea rax, [rbp + 0x38]
cmp rdx, 0x10
cmovae rax, qword [rbp + 0x38]
mov word [rax + rcx], 0x2c
jmp 0x140135be5
mov r9b, 0x2c
lea rcx, [rbp + 0x38]
call fcn.1400106a0
movups xmm0, xmmword [rbp + 0x38]
movups xmmword [rbp + 0x18], xmm0
movups xmm1, xmmword [rbp + 0x48]
movdqu xmmword [rbp + 0x28], xmm1
movdqa xmm0, xmmword [0x140257a00]
movdqu xmmword [rbp + 0x48], xmm0
mov byte [rbp + 0x38], 0
movq rcx, xmm1
psrldq xmm1, 8
movq rdx, xmm1
cmp rcx, rdx
jae 0x140135c3b
lea rax, [rcx + 1]
mov qword [rbp + 0x28], rax
lea rax, [rbp + 0x18]
cmp rdx, 0x10
cmovae rax, qword [rbp + 0x18]
mov byte [rax + rcx], dil
mov byte [rax + rcx + 1], 0
jmp 0x140135c48
movzx r9d, dil
lea rcx, [rbp + 0x18]
call fcn.1400106a0
movups xmm0, xmmword [rbp + 0x18]
movups xmmword [rbp - 8], xmm0
movups xmm1, xmmword [rbp + 0x28]
movdqu xmmword [rbp + 8], xmm1
movdqa xmm0, xmmword [0x140257a00]
movdqu xmmword [rbp + 0x28], xmm0
mov byte [rbp + 0x18], 0
movq rcx, xmm1
psrldq xmm1, 8
movq rdx, xmm1
cmp rcx, rdx
jae 0x140135c9b
lea rax, [rcx + 1]
mov qword [rbp + 8], rax
lea rax, [rbp - 8]
cmp rdx, 0x10
cmovae rax, qword [rbp - 8]
mov word [rax + rcx], 0x2c
jmp 0x140135ca7
mov r9b, 0x2c
lea rcx, [rbp - 8]
call fcn.1400106a0
movups xmm0, xmmword [rbp - 8]
movups xmmword [rbp - 0x28], xmm0
movups xmm1, xmmword [rbp + 8]
movdqu xmmword [rbp - 0x18], xmm1
movdqa xmm0, xmmword [0x140257a00]
movdqu xmmword [rbp + 8], xmm0
mov byte [rbp - 8], 0
movq rcx, xmm1
psrldq xmm1, 8
movq rdx, xmm1
cmp rcx, rdx
jae 0x140135cfa
lea rax, [rcx + 1]
mov qword [rbp - 0x18], rax
lea rax, [rbp - 0x28]
cmp rdx, 0x10
cmovae rax, qword [rbp - 0x28]
mov word [rax + rcx], 0x20
jmp 0x140135d06
mov r9b, 0x20
lea rcx, [rbp - 0x28]
call fcn.1400106a0
movups xmm0, xmmword [rbp - 0x28]
movups xmmword [rbp - 0x48], xmm0
movups xmm1, xmmword [rbp - 0x18]
movdqu xmmword [rbp - 0x38], xmm1
movdqa xmm0, xmmword [0x140257a00]
movdqu xmmword [rbp - 0x18], xmm0
mov byte [rbp - 0x28], 0
movq rcx, xmm1
psrldq xmm1, 8
movq rdx, xmm1
cmp rcx, rdx
jae 0x140135d59
lea rax, [rcx + 1]
mov qword [rbp - 0x38], rax
lea rax, [rbp - 0x48]
cmp rdx, 0x10
cmovae rax, qword [rbp - 0x48]
mov word [rax + rcx], 0xa
jmp 0x140135d65
mov r9b, 0xa
lea rcx, [rbp - 0x48]
call fcn.1400106a0
movups xmm0, xmmword [rbp - 0x48]
movups xmmword [rbp + 0xd0], xmm0
movups xmm1, xmmword [rbp - 0x38]
movups xmmword [rbp + 0xe0], xmm1
movdqa xmm0, xmmword [0x140257a00]
movdqu xmmword [rbp - 0x38], xmm0
mov byte [rbp - 0x48], 0
lea rcx, [rbp - 0x48]
call fcn.1400053c0
nop
lea rcx, [rbp - 0x28]
call fcn.1400053c0
nop
lea rcx, [rbp - 8]
call fcn.1400053c0
nop
lea rcx, [rbp + 0x18]
call fcn.1400053c0
nop
lea rcx, [rbp + 0x38]
call fcn.1400053c0
nop
lea rcx, [rbp + 0x58]
call fcn.1400053c0
nop
lea rcx, [rbp + 0x78]
call fcn.1400053c0
nop
lea rcx, [rsp + 0x58]
call fcn.1400053c0
nop
lea rcx, [rbp - 0x68]
call fcn.1400053c0
nop
lea rcx, [rbp + 0xb0]
call fcn.1400053c0
nop
lea rcx, [rsp + 0x38]
call fcn.1400053c0
nop
lea rcx, [rsp + 0x78]
call fcn.1400053c0
cmp qword [rsi + 0x168], 0
je 0x140135e3e
lea rdx, [rbp + 0xd0]
cmp qword [rbp + 0xe8], 0x10
cmovae rdx, qword [rbp + 0xd0]
lea rcx, [rsi + 0x178]
mov r8, qword [rbp + 0xe0]
call fcn.140011210
nop
lea rcx, [rbp + 0xd0]
call fcn.1400053c0
mov rcx, qword [rbp + 0x1480]
xor rcx, rsp
call fcn.1401e0b10
lea r11, [rsp + 0x15c0]
mov rbx, qword [r11 + 0x48]
movaps xmm6, xmmword [r11 - 0x10]
movaps xmm7, xmmword [r11 - 0x20]
movaps xmm8, xmmword [r11 - 0x30]
mov rsp, r11
pop r15
pop r14
pop rdi
pop rsi
pop rbp
ret