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

Disassembly:
mov eax, 0x10061b50
call fcn.10060e94
sub esp, 0x78
cmp byte [ebp + 0x20], 0
push edi
mov edi, edx
je 0x1000dfb5
mov byte [ebp - 0xd], 0
cmp byte [ebp - 0xd], 0
je 0x1000e328
push 0x6a3e
push 0x73c2
mov dl, 1
call fcn.1000d602
pop ecx
pop ecx
jmp 0x1000e328
movdqa xmm0, xmmword [0x100703d0]
lea eax, [ebp - 0x74]
push ebx
push esi
push dword [ebp - 0x30]
xor esi, esi
lea ecx, [ebp - 0x44]
push eax
lea eax, [ebp - 0x84]
mov dword [ebp - 0x44], esi
push eax
push esi
movdqu xmmword [ebp - 0x84], xmm0
mov dword [ebp - 0x40], esi
mov dword [ebp - 0x3c], esi
call fcn.10001915
mov dword [ebp - 4], esi
mov dword [ebp - 0x14], 0xffffffff
mov dword [ebp - 0x2c], 0xc9eb
mov dword [ebp - 0x28], 0x475ee4c2
mov dword [ebp - 0x18], esi
jmp 0x1000e014
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x74], 0x2e0cf572
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x1000e006
lea eax, [ebp - 0x2c]
mov edx, 0x806
push 0x223b
push eax
xor cl, cl
call fcn.1000eed9
pop ecx
pop ecx
mov dword [ebp - 0x14], esi
cmp dword [ebp - 0x14], 0x1d
push 2
pop ebx
jg 0x1000e076
mov ecx, dword [ebp - 0x44]
mov dword [ebp - 0x18], esi
jmp 0x1000e053
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x38], 0x33a79cc0
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], ebx
jl 0x1000e045
mov eax, dword [ebp - 0x28]
mov edx, 0xd0e75d5f
cmp edx, eax
sbb eax, eax
inc eax
mov dword [ebp - 0x38], eax
cmp dword [ecx + 0xc], esi
jne 0x1000e076
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0x1d
jle 0x1000e040
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x44]
call fcn.100014df
mov eax, dword [0x100dfc10]
test al, 1
jne 0x1000e0cd
or dword [0x100e0fb4], 0xffffffff
or eax, 1
mov ecx, 0x1571
mov dword [0x100dfc10], eax
xor edx, edx
mov dword [0x100dfc34], ecx
inc edx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
mov eax, 0x270
add ecx, edx
mov dword [edx*4 + 0x100dfc34], ecx
inc edx
cmp edx, eax
jl 0x1000e0a8
mov dword [0x100dfc30], eax
mov dword [ebp - 0x18], 0xba394643
mov dword [ebp - 0x30], 0x58a60016
mov dword [ebp - 0x28], 0xffffffff
mov dword [ebp - 0x18], esi
jmp 0x1000e0f5
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x24], 0xc93
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 1
jl 0x1000e0e7
mov dword [ebp - 0x18], esi
jmp 0x1000e19c
mov dword [ebp - 0x14], 0xfc07e17f
mov dword [ebp - 0x28], 0xf84255eb
mov dword [ebp - 0x14], esi
jmp 0x1000e191
mov dword [ebp - 0x20], 0x8fb0
mov eax, dword [ebp - 0x14]
cmp ebx, eax
mov eax, dword [ebp - 0x14]
sbb ecx, ecx
xor edx, edx
inc ecx
cmp ecx, eax
mov eax, dword [ebp - 0x20]
setne dl
xor ecx, ecx
cmp eax, 0x4cf5
mov eax, dword [ebp - 0x24]
setl cl
sub ecx, edx
neg ecx
sbb ecx, ecx
xor edx, edx
inc ecx
cmp ecx, eax
mov eax, dword [ebp - 0x20]
setne dl
xor ecx, ecx
cmp edx, eax
mov edx, dword [ebp - 0x18]
sete cl
sub edx, ecx
xor ecx, ecx
imul edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x14]
cmp edx, eax
setle cl
mov dword [ebp - 0x28], ecx
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp + eax*4 - 0x24]
imul eax, dword [ebp - 0x28]
neg eax
sub eax, dword [ebp - 0x30]
neg eax
sbb eax, eax
inc eax
cmp eax, 0xfffffffb
sbb eax, eax
inc eax
mov dword [ebp - 0x28], eax
mov eax, dword [ebp - 0x20]
inc dword [ebp - 0x14]
cmp dword [ebp - 0x14], esi
jle 0x1000e116
mov eax, dword [ebp - 0x24]
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], esi
jle 0x1000e103
cmp byte [0x1007e120], 0
jne 0x1000e1c0
sub esp, 0x1c
call fcn.1000e597
add esp, 0x14
call fcn.1000f8df
pop ecx
pop ecx
mov dword [ebp - 0x30], 0x2db58e46
lea ecx, [ebp - 0x68]
mov dword [ebp - 0x30], 0x57ad95e1
mov dword [ebp - 0x30], 0x9bf39019
push 3
call fcn.1000145c
push ebx
lea ecx, [ebp - 0x5c]
mov dword [ebp - 4], 1
call fcn.1000145c
mov byte [ebp - 4], bl
lea ecx, [ebp - 0x50]
mov dword [ebp - 0x30], 0x764361a6
push 4
call fcn.1000145c
lea eax, [ebp - 0x1c]
mov byte [ebp - 4], 3
push eax
lea eax, [ebp - 0x68]
xor dl, dl
push eax
call fcn.1000d602
pop ecx
pop ecx
mov dword [ebp - 0x1c], esi
jmp 0x1000e22d
mov ecx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x5c]
mov dword [eax + ecx*4], 0x17d72b90
inc dword [ebp - 0x1c]
cmp dword [ebp - 0x1c], ebx
jl 0x1000e21d
push ecx
push ecx
lea eax, [ebp - 0x50]
push eax
lea edx, [ebp - 0x1c]
call fcn.1000e739
push 0x6cb0
xor dl, dl
mov ecx, 0xa2
call fcn.1000e87a
lea eax, [ebp - 0x50]
xor dl, dl
push eax
push 0x3807
push 0x71ef
push esi
push 1
push 0x2985
mov ecx, 0x141c
call fcn.1000f907
add esp, 0x28
lea ecx, [ebp - 0x50]
call fcn.100014df
lea ecx, [ebp - 0x5c]
call fcn.100014df
lea ecx, [ebp - 0x68]
call fcn.100014df
mov eax, dword [0x100dfc30]
pop esi
pop ebx
cmp eax, 0x270
jne 0x1000e2dc
mov edx, 0x100dfc38
mov ecx, dword [edx - 4]
xor ecx, dword [edx]
and ecx, 0x7fffffff
xor ecx, dword [edx - 4]
mov eax, ecx
and al, 1
movzx eax, al
neg eax
sbb eax, eax
shr ecx, 1
and eax, 0x9908b0df
xor eax, dword [edx + 0x630]
xor eax, ecx
mov dword [edx + 0x9bc], eax
add edx, 4
cmp edx, 0x100e05f8
jl 0x1000e2a1
jmp 0x1000e2e8
cmp eax, 0x4e0
jb 0x1000e2ed
call fcn.100105dd
mov eax, dword [0x100dfc30]
mov ecx, dword [eax*4 + 0x100dfc34]
inc eax
mov dword [0x100dfc30], eax
mov eax, ecx
shr eax, 0xb
and eax, dword [0x100e0fb4]
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
mov dword [edi], eax
mov ecx, dword [ebp - 0xc]
pop edi
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret