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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
push rsi
push rdi
push r14
sub rsp, 0x20
mov edi, 4
mov rax, qword gs:[0x58]
add rdi, qword [rax]
xor r14d, r14d
mov eax, dword [rdi]
cmp dword [0x14005bf5c], eax
jle 0x140043188
lea rcx, [0x14005bf5c]
call fcn.140049a0c
cmp dword [0x14005bf5c], 0xffffffff
jne 0x140043188
xorps xmm0, xmm0
movups xmmword [0x14005d318], xmm0
mov qword [0x14005d328], r14
mov qword [0x14005d330], 0xf
lea ecx, [r14 + 0x50]
call fcn.140049cd4
mov rdx, rax
mov qword [0x14005d318], rax
mov qword [0x14005d328], 0x47
mov qword [0x14005d330], 0x4f
movaps xmm0, xmmword [str.0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_____]
movups xmmword [rax], xmm0
movaps xmm1, xmmword [0x140052990]
movups xmmword [rax + 0x10], xmm1
movaps xmm0, xmmword [0x1400529a0]
movups xmmword [rax + 0x20], xmm0
movaps xmm1, xmmword [0x1400529b0]
movups xmmword [rax + 0x30], xmm1
mov eax, dword [0x1400529c0]
mov dword [rdx + 0x40], eax
movzx eax, word [0x1400529c4]
mov word [rdx + 0x44], ax
movzx eax, byte [0x1400529c6]
mov byte [rdx + 0x46], al
mov byte [rdx + 0x47], r14b
lea rcx, [0x14004afd0]
call fcn.140049cbc
nop
lea rcx, [0x14005bf5c]
call fcn.1400499a0
mov eax, dword [rdi]
cmp dword [0x14005bf7c], eax
jle 0x1400431b3
lea rcx, [0x14005bf7c]
call fcn.140049a0c
cmp dword [0x14005bf7c], 0xffffffff
jne 0x1400431b3
lea rcx, [0x14005bf7c]
call fcn.1400499a0
lea rbp, [0x14005bf90]
mov ebx, 0x270
mov eax, dword [rdi]
cmp dword [0x14005bf54], eax
jle 0x14004322f
lea rcx, [0x14005bf54]
call fcn.140049a0c
cmp dword [0x14005bf54], 0xffffffff
jne 0x14004322f
call qword [sym.imp.MSVCP140.dll_unsigned_int___cdecl_std::_Random_device_void_]
mov dword [0x14005d314], 0xffffffff
mov dword [0x14005bf94], eax
mov r8d, 1
nop word [rax + rax]
mov edx, eax
shr edx, 0x1e
xor edx, eax
imul eax, edx, 0x6c078965
add eax, r8d
mov dword [rbp + r8*4 + 4], eax
inc r8
cmp r8, rbx
jb 0x140043200
mov dword [0x14005bf90], ebx
lea rcx, [0x14005bf54]
call fcn.1400499a0
mov eax, dword [rdi]
cmp dword [0x14005bf58], eax
jle 0x140043272
lea rcx, [0x14005bf58]
call fcn.140049a0c
cmp dword [0x14005bf58], 0xffffffff
jne 0x140043272
mov qword [0x14005bf68], r14
mov rax, qword [0x14005d328]
dec rax
mov qword [0x14005bf70], rax
lea rcx, [0x14005bf58]
call fcn.1400499a0
mov qword [rsp + 0x40], rbp
mov rsi, qword [0x14005bf68]
mov rdx, qword [0x14005bf70]
sub rdx, rsi
cmp rdx, 0xffffffffffffffff
jne 0x140043575
lea r8, [0x14005bf98]
mov r11d, 0x9c4
mov r9d, 0xd50
mov ecx, dword [0x14005bf90]
cmp ecx, ebx
jne 0x140043304
mov r10, r8
mov rdi, rbx
nop word [rax + rax]
mov edx, dword [r10 - 4]
xor edx, dword [r10]
btr edx, 0x1f
xor edx, dword [r10 - 4]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
xor ecx, dword [r10 + 0x630]
shr edx, 1
xor ecx, edx
mov dword [r10 + 0x9bc], ecx
lea r10, [r10 + 4]
sub rdi, 1
jne 0x1400432c0
mov ecx, dword [0x14005bf90]
jmp 0x1400433d0
cmp ecx, 0x4e0
jb 0x1400433d0
mov r10, r11
mov edx, dword [r10 + rbp]
xor edx, dword [r10 + rbp + 4]
btr edx, 0x1f
xor edx, dword [r10 + rbp]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
xor ecx, dword [r10 + rbp + 0x634]
shr edx, 1
xor ecx, edx
mov dword [r10 + rbp - 0x9c0], ecx
add r10, 4
cmp r10, r9
jb 0x140043313
mov r10, r9
mov edx, dword [r10 + rbp]
xor edx, dword [r10 + rbp + 4]
btr edx, 0x1f
xor edx, dword [r10 + rbp]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
xor ecx, dword [r10 + rbp - 0xd4c]
shr edx, 1
xor ecx, edx
mov dword [r10 + rbp - 0x9c0], ecx
add r10, 4
cmp r10, 0x1380
jb 0x140043352
mov edx, dword [0x14005d310]
xor edx, dword [0x14005bf94]
btr edx, 0x1f
xor edx, dword [0x14005d310]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
shr edx, 1
xor ecx, edx
xor ecx, dword [0x14005c5c4]
mov dword [0x14005c950], ecx
mov dword [0x14005bf90], r14d
mov ecx, r14d
mov eax, ecx
mov edx, dword [rbp + rax*4 + 4]
lea r10d, [rcx + 1]
mov dword [0x14005bf90], r10d
mov eax, edx
shr eax, 0xb
and eax, dword [0x14005d314]
xor edx, eax
mov eax, edx
and eax, 0xff3a58ad
shl eax, 7
xor edx, eax
mov ecx, edx
and edx, 0xffffdf8c
shl edx, 0xf
mov eax, edx
xor rax, rcx
mov rdi, rax
shr rdi, 0x12
xor rdi, rax
shl rdi, 0x20
cmp r10d, ebx
jne 0x140043465
nop dword [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 rbx, 1
jne 0x140043420
mov r10d, dword [0x14005bf90]
jmp 0x14004352e
cmp r10d, 0x4e0
jb 0x14004352e
mov edx, dword [r11 + rbp]
xor edx, dword [r11 + rbp + 4]
btr edx, 0x1f
xor edx, dword [r11 + rbp]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
xor ecx, dword [r11 + rbp + 0x634]
shr edx, 1
xor ecx, edx
mov dword [r11 + rbp - 0x9c0], ecx
add r11, 4
cmp r11, r9
jb 0x140043472
nop
mov edx, dword [r9 + rbp]
xor edx, dword [r9 + rbp + 4]
btr edx, 0x1f
xor edx, dword [r9 + rbp]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
xor ecx, dword [r9 + rbp - 0xd4c]
shr edx, 1
xor ecx, edx
mov dword [r9 + rbp - 0x9c0], ecx
add r9, 4
cmp r9, 0x1380
jb 0x1400434b0
mov edx, dword [0x14005d310]
xor edx, dword [0x14005bf94]
btr edx, 0x1f
xor edx, dword [0x14005d310]
mov eax, edx
and al, 1
neg al
sbb ecx, ecx
and ecx, 0x9908b0df
shr edx, 1
xor ecx, edx
xor ecx, dword [0x14005c5c4]
mov dword [0x14005c950], ecx
mov dword [0x14005bf90], r14d
mov r10d, r14d
mov eax, r10d
mov ecx, dword [rbp + rax*4 + 4]
lea eax, [r10 + 1]
mov dword [0x14005bf90], eax
mov eax, ecx
shr eax, 0xb
and eax, dword [0x14005d314]
xor ecx, eax
mov eax, ecx
and eax, 0xff3a58ad
shl eax, 7
xor ecx, eax
mov eax, ecx
and ecx, 0xffffdf8c
shl ecx, 0xf
xor rcx, rax
mov rax, rcx
shr rax, 0x12
xor rax, rcx
or rdi, rax
jmp 0x140043585
inc rdx
lea rcx, [rsp + 0x40]
call fcn.140049330
mov rdi, rax
lea rcx, [0x14005d318]
cmp qword [0x14005d330], 0x10
cmovae rcx, qword [0x14005d318]
lea rax, [rsi + rdi]
movzx eax, byte [rax + rcx]
mov rbx, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x50]
add rsp, 0x20
pop r14
pop rdi
pop rsi
ret