Function at 0x529e10
Capabilities:
Generate random numbers using a mersenne twister

Disassembly:
push r15
mov eax, 0x1da8
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
call fcn.0050cf20
sub rsp, rax
lea rdx, str.mt19937
lea r12, [rsp + 0x13d8]
mov r13, rcx
lea rbx, [rsp + 0xa10]
mov rcx, r12
call fcn.00402c24
mov rdx, r12
mov rcx, rbx
call fcn.005bd0a0
mov rcx, r12
lea rdi, [rsp + 0x50]
lea r14, [rsp + 0x38]
mov rsi, r12
call fcn.005d5f80
mov rcx, rbx
call fcn.005bd0c0
mov rcx, rbx
mov dword [rsp + 0x13d8], eax
call fcn.005bd0c0
mov rcx, rbx
mov dword [rsp + 0x13dc], eax
call fcn.005bd0c0
mov rcx, rbx
mov dword [rsp + 0x13e0], eax
call fcn.005bd0c0
mov qword [rsp + 0x38], 0
mov dword [rsp + 0x13e4], eax
mov qword [rsp + 0x40], 0
mov qword [rsp + 0x48], 0
jmp 0x529ed4
mov eax, dword [rsi]
mov rdx, qword [rsp + 0x40]
mov dword [rsp + 0x50], eax
cmp rdx, qword [rsp + 0x48]
je 0x529ef3
mov dword [rdx], eax
add rdx, 4
mov qword [rsp + 0x40], rdx
jmp 0x529efe
mov r8, rdi
mov rcx, r14
call fcn.005d4e70
add rsi, 4
lea rax, [rsp + 0x13e8]
cmp rsi, rax
jne 0x529ed4
lea rax, [rsp + 0x50]
mov r9, rax
jmp 0x529f2c
mov dword [rax], 0x8b8b8b8b
add rax, 4
cmp rax, rbx
jne 0x529f2c
mov r15, qword [rsp + 0x38]
mov r11, qword [rsp + 0x40]
mov ecx, 0x270
mov r10d, 0x270
sub r11, r15
sar r11, 2
lea rsi, [r11 + 1]
cmp rsi, 0x270
cmovae rcx, rsi
xor r8d, r8d
mov rax, r8
xor edx, edx
div r10
lea rax, [r8 + 0x132]
lea rbp, [r9 + rdx*4]
mov rdi, rdx
xor edx, edx
div r10
lea r14, [r9 + rdx*4]
xor edx, edx
mov eax, dword [r14]
mov dword [rsp + 0x2c], eax
lea rax, [r8 - 1]
div r10
mov eax, dword [rsp + rdx*4 + 0x50]
xor eax, dword [rbp]
xor eax, dword [rsp + 0x2c]
mov edx, eax
shr eax, 0x1b
xor eax, edx
imul eax, eax, 0x19660d
lea ebx, [rax + r11]
test r8, r8
je 0x529fcb
lea ebx, [rax + rdi]
cmp r11, r8
jb 0x529fcb
mov edx, dword [r15 + r8*4 - 4]
add edx, eax
lea ebx, [rdx + rdi]
add eax, dword [rsp + 0x2c]
xor edx, edx
mov dword [r14], eax
lea rax, [r8 + 0x13d]
inc r8
div r10
add dword [r9 + rdx*4], ebx
mov dword [rbp], ebx
cmp rcx, r8
jne 0x529f69
cmp rsi, 0xfffffffffffffd90
mov r8d, 0x270
sbb rax, rax
and eax, 0x270
lea rbp, [rcx + rax + 1]
lea r11, [rcx + 1]
cmp rbp, r11
je 0x52a077
mov rax, rcx
xor edx, edx
div r8
lea rax, [rcx + 0x132]
mov rdi, rdx
lea rbx, [r9 + rdx*4]
xor edx, edx
div r8
lea rax, [rcx - 1]
lea rsi, [r9 + rdx*4]
xor edx, edx
div r8
mov r10d, dword [rsi]
mov eax, dword [rsp + rdx*4 + 0x50]
add eax, r10d
add eax, dword [rbx]
mov edx, eax
shr eax, 0x1b
xor eax, edx
imul eax, eax, 0x5d588b65
mov edx, eax
xor eax, r10d
sub edx, edi
mov dword [rsi], eax
lea rax, [rcx + 0x13d]
mov rcx, r11
mov edi, edx
xor edx, edx
div r8
xor dword [r9 + rdx*4], edi
mov dword [rbx], edi
jmp 0x52a00b
mov al, 1
xor edx, edx
mov ecx, dword [r9 + rdx*4]
mov dword [r12 + rdx*4], ecx
test al, al
je 0x52a09f
test rdx, rdx
jne 0x52a09a
mov eax, dword [rsp + 0x13d8]
not eax
shr eax, 0x1f
jmp 0x52a09f
test ecx, ecx
sete al
inc rdx
cmp rdx, 0x270
jne 0x52a07b
test al, al
je 0x52a0ba
mov dword [rsp + 0x13d8], 0x80000000
lea rdx, str.__cpp_httplib_multipart_data_
mov rcx, r13
mov qword [rsp + 0x1d98], 0x270
call fcn.00402c24
mov ebx, 0x10
lea rsi, str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
cmp qword [rsp + 0x1d98], 0x26f
jbe 0x52a1c3
mov rdx, r12
lea r9, [rsp + 0x1764]
mov rcx, r12
mov eax, dword [rcx]
mov r8d, dword [rcx + 4]
and eax, 0x80000000
and r8d, 0x7fffffff
or eax, r8d
mov r8d, eax
shr r8d, 1
xor r8d, dword [rcx + 0x634]
and eax, 1
je 0x52a12d
mov eax, 0x9908b0df
xor eax, r8d
add rcx, 4
mov dword [rcx - 4], eax
cmp r9, rcx
jne 0x52a101
lea r8, [r12 + 0x630]
mov eax, dword [rdx + 0x38c]
mov ecx, dword [rdx + 0x390]
and eax, 0x80000000
and ecx, 0x7fffffff
or eax, ecx
mov ecx, eax
shr ecx, 1
xor ecx, dword [rdx]
and eax, 1
je 0x52a16d
mov eax, 0x9908b0df
xor eax, ecx
add rdx, 4
mov dword [rdx + 0x388], eax
cmp r8, rdx
jne 0x52a144
mov eax, dword [rsp + 0x1d94]
mov edx, dword [rsp + 0x13d8]
and eax, 0x80000000
and edx, 0x7fffffff
or eax, edx
mov edx, eax
shr edx, 1
xor edx, dword [rsp + 0x1a08]
and eax, 1
je 0x52a1ae
mov eax, 0x9908b0df
mov qword [rsp + 0x1d98], 0
xor eax, edx
mov dword [rsp + 0x1d94], eax
mov rax, qword [rsp + 0x1d98]
mov ecx, 0x3e
lea rdx, [rax + 1]
mov eax, dword [rsp + rax*4 + 0x13d8]
mov qword [rsp + 0x1d98], rdx
mov edx, eax
shr edx, 0xb
xor eax, edx
mov edx, eax
shl edx, 7
and edx, 0x9d2c5680
xor eax, edx
mov edx, eax
shl edx, 0xf
and edx, 0xefc60000
xor eax, edx
mov edx, eax
shr edx, 0x12
xor eax, edx
xor edx, edx
div rcx
mov rcx, r13
movsx edx, byte [rsi + rdx]
call fcn.005d81a0
dec ebx
jne 0x52a0e1
lea rcx, [rsp + 0x38]
call fcn.00401dc4
mov rax, r13
add rsp, 0x1da8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret