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

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rbp
mov qword [rsp + 0x20], rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x50
mov rsi, rcx
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x48], rcx
xor r12d, r12d
mov dword [rsp + 0x24], r12d
lea edi, [r12 + 0x10]
mov rax, qword gs:[0x58]
mov rbx, qword [rax]
mov eax, reloc.WS2_32.dll_recv
mov eax, dword [rax + rbx]
cmp dword [0x1408e9840], eax
jle 0x1400047d1
lea rcx, [0x1408e9840]
call fcn.14005bf78
cmp dword [0x1408e9840], 0xffffffff
jne 0x1400047d1
mov qword [0x1408e9820], r12
mov qword [0x1408e9830], r12
mov qword [0x1408e9838], 0xf
lea r8d, [r12 + 0x3e]
lea rdx, str.0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
lea rcx, [0x1408e9820]
call fcn.140003650
lea rcx, [0x140074410]
call fcn.14005c30c
nop
lea rcx, [0x1408e9840]
call fcn.14005bf18
mov r14d, 0x13b8
mov eax, dword [r14 + rbx]
mov r15d, 0x30
mov ebp, 0xffffffff
test al, 1
jne 0x140004841
or eax, 1
mov dword [r14 + rbx], eax
mov edi, r15d
add rdi, rbx
call fcn.14005a298
mov ecx, eax
mov dword [rdi + 0x1384], ebp
mov dword [rdi + 4], eax
mov edx, 1
lea r8, [rdi + 8]
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [r8], ecx
inc rdx
lea r8, [r8 + 4]
cmp rdx, 0x270
jb 0x140004810
mov dword [rdi], 0x270
mov eax, dword [r14 + rbx]
mov edi, reloc.WS2_32.dll_recv
mov ebp, 0x18
test al, 2
jne 0x140004866
or eax, 2
mov dword [r14 + rbx], eax
mov rax, qword [0x1408e9830]
add rax, 0xfffffffffffffffe
mov qword [rbp + rbx], r12
mov qword [rbp + rbx + 8], rax
mov qword [rsi], r12
mov qword [rsi + 0x10], r12
mov qword [rsi + 0x18], recv
mov byte [rsi], 0
mov dword [rsp + 0x24], 1
mov rdx, rdi
mov rcx, rsi
call fcn.140009ab0
mov qword [rsi + 0x10], 0
mov eax, ebp
add rax, rbx
mov qword [rsp + 0x40], rax
mov r14d, r15d
add r14, rbx
movzx ebx, byte [rsp + 0x20]
nop dword [rax + rax]
dec rdi
mov qword [rsp + 0x38], rdi
mov r13, qword [rax + 8]
mov rax, qword [rax]
mov qword [rsp + 0x28], rax
mov rdi, 0xffffffffffffffff
mov ecx, 0xffffffff
mov r12d, 0x40
nop word [rax + rax]
dec r12
shr rdi, 1
cmp rdi, rcx
ja 0x1400048e0
sub r13, rax
cmp r13, 0xffffffffffffffff
jne 0x14000492d
xor esi, esi
xor ebp, ebp
nop dword [rax + rax]
lea rcx, [r12 - 1]
shl rsi, cl
add rsi, rsi
nop dword [rax + rax]
mov rcx, r14
call fcn.14000a670
mov eax, eax
cmp rax, rdi
ja 0x140004910
or rsi, rax
add rbp, r12
cmp rbp, 0x40
jb 0x140004900
jmp 0x1400049a4
lea r9, [r13 + 1]
xor esi, esi
xor ebp, ebp
test r13, r13
je 0x140004979
nop word [rax + rax]
lea rcx, [r12 - 1]
shl rsi, cl
add rsi, rsi
nop dword [rax + rax]
mov rcx, r14
call fcn.14000a670
mov eax, eax
cmp rax, rdi
ja 0x140004950
or rsi, rax
lea rcx, [r12 - 1]
shl rbp, cl
add rbp, rbp
or rbp, rdi
cmp rbp, r13
jb 0x140004940
lea r9, [r13 + 1]
xor edx, edx
mov rax, rbp
div r9
mov r8, rdx
mov rcx, rax
xor edx, edx
mov rax, rsi
div r9
cmp rax, rcx
jb 0x140004999
cmp r8, r13
jne 0x140004931
xor edx, edx
mov rax, rsi
div r9
mov rsi, rdx
lea rax, [0x1408e9820]
cmp qword [0x1408e9838], 0x10
cmovae rax, qword [0x1408e9820]
add rax, rsi
mov rcx, qword [rsp + 0x28]
movzx r9d, byte [rax + rcx]
mov rsi, qword [rsp + 0x30]
mov rcx, qword [rsi + 0x10]
mov rdx, qword [rsi + 0x18]
cmp rcx, rdx
jae 0x1400049f9
lea rax, [rcx + 1]
mov qword [rsi + 0x10], rax
mov rax, rsi
cmp rdx, 0x10
jb 0x1400049ee
mov rax, qword [rsi]
mov byte [rax + rcx], r9b
mov byte [rax + rcx + 1], 0
jmp 0x140004a0a
movzx r8d, bl
mov edx, 1
mov rcx, rsi
call fcn.140009c20
mov rdi, qword [rsp + 0x38]
test rdi, rdi
mov rax, qword [rsp + 0x40]
jne 0x1400048b0
mov rax, rsi
lea r11, [rsp + 0x50]
mov rbx, qword [r11 + 0x38]
mov rbp, qword [r11 + 0x40]
mov rsi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rdi
ret