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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1320]
mov eax, 0x1420
call fcn.14007fa40
sub rsp, rax
mov rax, qword [0x1400a9010]
xor rax, rsp
mov qword [rbp + 0x1318], rax
mov rsi, rcx
xor ecx, ecx
call fcn.14006693c
mov rcx, rax
call fcn.1400670d4
xor eax, eax
xorps xmm1, xmm1
movdqu xmmword [rbp + 0x1300], xmm1
mov qword [rbp + 0x1310], rax
mov rbx, qword [rsi + 8]
sub rbx, qword [rsi]
sar rbx, 3
test rbx, rbx
je 0x140055bb6
movabs rax, 0x1fffffffffffffff
cmp rbx, rax
ja 0x140056623
lea rbx, [rbx*8]
cmp rbx, 0x1000
jb 0x140055b65
lea rcx, [rbx + 0x27]
cmp rcx, rbx
jbe 0x140056629
call fcn.140056eb0
test rax, rax
je 0x14005662f
lea rdi, [rax + 0x27]
and rdi, 0xffffffffffffffe0
mov qword [rdi - 8], rax
jmp 0x140055b79
test rbx, rbx
je 0x140055b77
mov rcx, rbx
call fcn.140056eb0
mov rdi, rax
jmp 0x140055b79
xor edi, edi
mov qword [rbp + 0x1300], rdi
mov qword [rbp + 0x1308], rdi
lea rax, [rdi + rbx]
mov qword [rbp + 0x1310], rax
mov rbx, qword [rsi + 8]
mov rdx, qword [rsi]
sub rbx, rdx
mov r8, rbx
mov rcx, rdi
call fcn.14005cd60
sar rbx, 3
lea rax, [rdi + rbx*8]
mov qword [rbp + 0x1308], rax
call fcn.14007f2ec
mov r8d, 0xffffffff
mov dword [rbp + 0x12e4], r8d
mov dword [rsp + 0x64], eax
mov edx, 1
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [rsp + rdx*4 + 0x64], eax
inc rdx
cmp rdx, 0x270
jb 0x140055bd1
mov dword [rsp + 0x60], 0x270
mov rsi, 0xffffffffffffffff
mov r13d, 0x40
nop word [rax + rax]
lea r13, [r13 - 1]
shr rsi, 1
cmp rsi, r8
ja 0x140055c10
mov r9, qword [rbp + 0x1300]
mov qword [rsp + 0x20], r9
mov rcx, qword [rbp + 0x1308]
mov qword [rsp + 0x48], rcx
cmp r9, rcx
je 0x140055d07
mov r15d, 1
lea rax, [r9 + 8]
mov qword [rsp + 0x40], rax
cmp rax, rcx
je 0x140055d07
nop word [rax + rax]
lea r12, [r15 + 1]
xor edi, edi
xor ebx, ebx
test r15, r15
je 0x140055ca6
nop dword [rax]
lea rcx, [r13 - 1]
shl rdi, cl
add rdi, rdi
nop word [rax + rax]
lea rcx, [rsp + 0x60]
call fcn.140056920
mov eax, eax
cmp rax, rsi
ja 0x140055c80
or rdi, rax
lea rcx, [r13 - 1]
shl rbx, cl
add rbx, rbx
or rbx, rsi
cmp rbx, r15
jb 0x140055c70
xor edx, edx
mov rax, rbx
div r12
mov rcx, rax
xor edx, edx
mov rax, rdi
div r12
cmp rax, rcx
jb 0x140055ccb
xor edx, edx
mov rax, rbx
div r12
cmp rdx, r15
jne 0x140055c64
xor edx, edx
mov rax, rdi
div r12
mov r8, qword [rsp + 0x40]
cmp rdx, r15
je 0x140055cf0
mov rcx, qword [r8]
mov r9, qword [rsp + 0x20]
mov rax, qword [r9 + rdx*8]
mov qword [r8], rax
mov qword [r9 + rdx*8], rcx
mov r15, r12
add r8, 8
mov qword [rsp + 0x40], r8
cmp r8, qword [rsp + 0x48]
jne 0x140055c60
xorps xmm0, xmm0
movups xmmword [rbp + 0x12f0], xmm0
mov qword [rbp + 0x12f0], 0
mov qword [rbp + 0x12f8], 0
mov ecx, 0x20
call fcn.140056eb0
mov qword [rax], rax
mov qword [rax + 8], rax
mov qword [rax + 0x10], rax
mov word [rax + 0x18], 0x101
mov qword [rbp + 0x12f0], rax
mov rsi, qword [rbp + 0x1300]
mov r14, qword [rbp + 0x1308]
cmp rsi, r14
je 0x14005653c
movabs r13, 0x7ffffffffffffff
lea r12, [0x140000000]
xor r15d, r15d
call qword [rsi]
call fcn.1400670a8
mov edi, eax
mov eax, 0x2e8ba2e9
imul edi
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
imul ecx, edx, 0xb
sub edi, ecx
mov rdx, qword [rbp + 0x12f0]
mov rcx, qword [rdx + 8]
movzx r8d, byte [rcx + 0x19]
test r8b, r8b
jne 0x140055dc7
mov rax, rcx
nop word [rax + rax]
cmp dword [rax + 0x1c], edi
jge 0x140055dbb
mov rax, qword [rax + 0x10]
jmp 0x140055dc1
mov rdx, rax
mov rax, qword [rax]
cmp byte [rax + 0x19], 0
je 0x140055db0
cmp byte [rdx + 0x19], 0
jne 0x140055dd6
cmp edi, dword [rdx + 0x1c]
jl 0x140055dd6
mov al, 1
jmp 0x140055dd8
xor al, al
test al, al
jne 0x140055d76
mov qword [rsp + 0x20], rcx
mov dword [rsp + 0x28], r15d
mov rax, qword [rbp + 0x12f0]
test r8b, r8b
jne 0x140055e1b
mov qword [rsp + 0x20], rcx
cmp dword [rcx + 0x1c], edi
jge 0x140055e07
mov dword [rsp + 0x28], r15d
mov rcx, qword [rcx + 0x10]
jmp 0x140055e15
mov dword [rsp + 0x28], 1
mov rax, rcx
mov rcx, qword [rcx]
cmp byte [rcx + 0x19], 0
je 0x140055df2
cmp byte [rax + 0x19], 0
jne 0x140055e26
cmp edi, dword [rax + 0x1c]
jge 0x140055e8d
cmp qword [rbp + 0x12f8], r13
je 0x1400565ff
mov rbx, qword [rbp + 0x12f0]
lea rax, [rbp + 0x12f0]
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], r15
mov ecx, 0x20
call fcn.140056eb0
nop
mov dword [rax + 0x1c], edi
mov qword [rax], rbx
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rbx
mov word [rax + 0x18], 0
mov qword [rsp + 0x50], r15
movups xmm0, xmmword [rsp + 0x20]
movaps xmmword [rsp + 0x20], xmm0
mov r8, rax
lea rdx, [rsp + 0x20]
lea rcx, [rbp + 0x12f0]
call fcn.14002cd60
cmp edi, 0xa
ja case.default.0x140055ea4
movsxd rax, edi
mov ecx, dword [r12 + rax*4 + 0x5663c]
add rcx, r12
jmp rcx
lea rdx, str.Trash_code_0
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rcx, rax
call fcn.140050e10
lea rdx, str.Random_string:
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rbx, rax
lea rcx, [rsp + 0x20]
call fcn.140056ab0
nop
mov r8, qword [rax + 0x10]
cmp qword [rax + 0x18], 0x10
jb 0x140055ef0
mov rax, qword [rax]
mov rdx, rax
mov rcx, rbx
call fcn.1400524e0
mov rcx, rax
call fcn.140050e10
nop
mov rdx, qword [rsp + 0x38]
cmp rdx, 0x10
jb case.default.0x140055ea4
inc rdx
mov rcx, qword [rsp + 0x20]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14005652a
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140056605
jmp 0x14005652a
lea rdx, str.Trash_code_1
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rcx, rax
call fcn.140050e10
xor ecx, ecx
call fcn.14006693c
mov rcx, rax
call fcn.1400670d4
mov edi, 0xa
nop dword [rax + rax]
lea rdx, str.Random_number:_:
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rbx, rax
call fcn.1400670a8
mov r8d, eax
mov eax, 0x288df0cb
imul r8d
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
imul ecx, edx, 0x65
sub r8d, ecx
mov edx, r8d
mov rcx, rbx
call fcn.1400566d0
mov rcx, rax
call fcn.140050e10
sub rdi, 1
jne 0x140055f80
jmp case.default.0x140055ea4
lea rdx, str.Trash_code_2
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rcx, rax
call fcn.140050e10
lea rdx, str.Random_string:
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rbx, rax
lea rcx, [rsp + 0x20]
call fcn.140056ab0
nop
mov r8, qword [rax + 0x10]
cmp qword [rax + 0x18], 0x10
jb 0x14005601e
mov rax, qword [rax]
mov rdx, rax
mov rcx, rbx
call fcn.1400524e0
mov rcx, rax
call fcn.140050e10
nop
mov rdx, qword [rsp + 0x38]
cmp rdx, 0x10
jb case.default.0x140055ea4
inc rdx
mov rcx, qword [rsp + 0x20]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14005652a
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14005660b
jmp 0x14005652a
lea rdx, str.Trash_code_3
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rcx, rax
call fcn.140050e10
xor ecx, ecx
call fcn.14006693c
mov rcx, rax
call fcn.1400670d4
mov edi, 0xa
nop word [rax + rax]
lea rdx, str.Random_number:
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rbx, rax
call fcn.1400670a8
mov r8d, eax
mov eax, 0x288df0cb
imul r8d
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
imul ecx, edx, 0x65
sub r8d, ecx
mov edx, r8d
mov rcx, rbx
call fcn.1400566d0
mov rcx, rax
call fcn.140050e10
sub rdi, 1
jne 0x1400560b0
jmp case.default.0x140055ea4
lea rdx, str.Trash_code_4
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rcx, rax
call fcn.140050e10
lea rdx, str.Random_string:
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rbx, rax
lea rcx, [rsp + 0x20]
call fcn.140056ab0
nop
mov r8, qword [rax + 0x10]
cmp qword [rax + 0x18], 0x10
jb 0x14005614e
mov rax, qword [rax]
mov rdx, rax
mov rcx, rbx
call fcn.1400524e0
mov rcx, rax
call fcn.140050e10
nop
mov rdx, qword [rsp + 0x38]
cmp rdx, 0x10
jb case.default.0x140055ea4
inc rdx
mov rcx, qword [rsp + 0x20]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14005652a
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140056611
jmp 0x14005652a
lea rdx, str.Trash_code_5
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rcx, rax
call fcn.140050e10
xor ecx, ecx
call fcn.14006693c
mov rcx, rax
call fcn.1400670d4
mov edi, 0xa
nop word [rax + rax]
lea rdx, str.Random_number:
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rbx, rax
call fcn.1400670a8
mov r8d, eax
mov eax, 0x288df0cb
imul r8d
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
imul ecx, edx, 0x65
sub r8d, ecx
mov edx, r8d
mov rcx, rbx
call fcn.1400566d0
mov rcx, rax
call fcn.140050e10
sub rdi, 1
jne 0x1400561e0
jmp case.default.0x140055ea4
lea rdx, str.Trash_code_6
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rcx, rax
call fcn.140050e10
lea rdx, str.Random_string:
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rbx, rax
lea rcx, [rsp + 0x20]
call fcn.140056ab0
nop
mov r8, qword [rax + 0x10]
cmp qword [rax + 0x18], 0x10
jb 0x14005627e
mov rax, qword [rax]
mov rdx, rax
mov rcx, rbx
call fcn.1400524e0
mov rcx, rax
call fcn.140050e10
nop
mov rdx, qword [rsp + 0x38]
cmp rdx, 0x10
jb case.default.0x140055ea4
inc rdx
mov rcx, qword [rsp + 0x20]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14005652a
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140056617
jmp 0x14005652a
lea rdx, str.Trash_code_7
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rcx, rax
call fcn.140050e10
xor ecx, ecx
call fcn.14006693c
mov rcx, rax
call fcn.1400670d4
mov edi, 0xa
nop word [rax + rax]
lea rdx, str.Random_number:
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rbx, rax
call fcn.1400670a8
mov r8d, eax
mov eax, 0x288df0cb
imul r8d
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
imul ecx, edx, 0x65
sub r8d, ecx
mov edx, r8d
mov rcx, rbx
call fcn.1400566d0
mov rcx, rax
call fcn.140050e10
sub rdi, 1
jne 0x140056310
jmp case.default.0x140055ea4
lea rdx, str.Trash_code_8
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rcx, rax
call fcn.140050e10
lea rdx, str.Random_string:
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rbx, rax
lea rcx, [rsp + 0x20]
call fcn.140056ab0
nop
mov r8, qword [rax + 0x10]
cmp qword [rax + 0x18], 0x10
jb 0x1400563ae
mov rax, qword [rax]
mov rdx, rax
mov rcx, rbx
call fcn.1400524e0
mov rcx, rax
call fcn.140050e10
nop
mov rdx, qword [rsp + 0x38]
cmp rdx, 0x10
jb case.default.0x140055ea4
inc rdx
mov rcx, qword [rsp + 0x20]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14005652a
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14005661d
jmp 0x14005652a
lea rdx, str.Trash_code_9
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rcx, rax
call fcn.140050e10
xor ecx, ecx
call fcn.14006693c
mov rcx, rax
call fcn.1400670d4
mov edi, 0xa
nop word [rax + rax]
lea rdx, str.Random_number:
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rbx, rax
call fcn.1400670a8
mov r8d, eax
mov eax, 0x288df0cb
imul r8d
sar edx, 4
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
imul ecx, edx, 0x65
sub r8d, ecx
mov edx, r8d
mov rcx, rbx
call fcn.1400566d0
mov rcx, rax
call fcn.140050e10
sub rdi, 1
jne 0x140056440
jmp case.default.0x140055ea4
lea rdx, str.Trash_code_10
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rcx, rax
call fcn.140050e10
lea rdx, str.Random_string:
lea rcx, [0x1400ac3d0]
call fcn.140050b50
mov rbx, rax
lea rcx, [rsp + 0x20]
call fcn.140056ab0
nop
mov r8, qword [rax + 0x10]
cmp qword [rax + 0x18], 0x10
jb 0x1400564de
mov rax, qword [rax]
mov rdx, rax
mov rcx, rbx
call fcn.1400524e0
mov rcx, rax
call fcn.140050e10
nop
mov rdx, qword [rsp + 0x38]
cmp rdx, 0x10
jb case.default.0x140055ea4
inc rdx
mov rcx, qword [rsp + 0x20]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14005652a
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x140056635
call fcn.140057214
add rsi, 8
cmp rsi, r14
jne 0x140055d74
mov rax, qword [rbp + 0x12f0]
mov rbx, qword [rax + 8]
cmp byte [rbx + 0x19], 0
jne 0x14005657d
nop dword [rax]
mov r8, qword [rbx + 0x10]
lea rdx, [rbp + 0x12f0]
lea rcx, [rbp + 0x12f0]
call fcn.1400568d0
mov rcx, rbx
mov rbx, qword [rbx]
mov edx, 0x20
call fcn.140057214
cmp byte [rbx + 0x19], 0
je 0x140056550
mov edx, 0x20
mov rcx, qword [rbp + 0x12f0]
call fcn.140057214
nop
mov rcx, qword [rbp + 0x1300]
test rcx, rcx
je 0x1400565cf
mov rdx, qword [rbp + 0x1310]
sub rdx, rcx
and rdx, 0xfffffffffffffff8
mov rax, rcx
cmp rdx, 0x1000
jb 0x1400565ca
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14005662f
call fcn.140057214
mov rcx, qword [rbp + 0x1318]
xor rcx, rsp
call fcn.140056e90
lea r11, [rsp + 0x1420]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
call fcn.1400276b0
nop
call fcn.14005d7e8
int3
call fcn.14005d7e8
int3
call fcn.14005d7e8
int3
call fcn.14005d7e8
int3
call fcn.14005d7e8
nop
call fcn.140029eb0
int3
call fcn.140025390
int3
call fcn.14005d7e8
nop
call fcn.14005d7e8
int3