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

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x102e0679
mov eax, dword fs:[0]
push eax
push ebx
mov eax, 0x1470
call fcn.102a78c0
mov eax, dword [0x103aa200]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
mov dword [ebp - 0x1410], edi
mov edx, edi
lea ecx, [ebp - 0x147c]
call fcn.10051c30
push 0xe
push 0x1038c504
push 0
mov ecx, eax
mov dword [ebp - 4], 0
call fcn.100510d0
mov dword [ebp - 0x1418], 0
xorps xmm0, xmm0
movups xmmword [ebp - 0x1428], xmm0
mov dword [ebp - 0x1414], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x1428], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x1418], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
lea ecx, [ebp - 0x1428]
mov byte [ebp - 4], 1
call fcn.100a3f10
mov byte [ebp - 4], 0
mov ecx, dword [ebp - 0x1414]
cmp ecx, 0xf
jbe 0x10078344
mov edx, dword [ebp - 0x1428]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1007833a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10078b92
push ecx
push edx
call fcn.102a6f8e
add esp, 8
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x1468]
mov dword [ebp - 0x1418], 0
mov dword [ebp - 0x1414], 0xf
mov byte [ebp - 0x1428], 0
cmp ecx, 0xf
jbe 0x100783a0
mov edx, dword [ebp - 0x147c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10078396
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10078b92
push ecx
push edx
call fcn.102a6f8e
add esp, 8
cmp edi, 4
jge 0x10078b74
lea eax, [edi + edi*2]
shl eax, 3
lea ecx, [ebp - 0x2c]
mov dword [ebp - 0x140c], eax
lea eax, [eax + 0x103b87d0]
push eax
call fcn.10050100
lea eax, [ebp - 0x2c]
mov dword [ebp - 4], 2
mov esi, dword [edi*4 + 0x103b804c]
lea ecx, [ebp - 0x7c]
push eax
mov dword [ebp - 0x142c], esi
call fcn.10050100
mov dword [ebp - 0x64], esi
mov dword [ebp - 0x60], 1
mov byte [ebp - 4], 3
mov eax, dword [0x103b8688]
lea edi, [eax + edi*8]
lea eax, [ebp - 0x7c]
mov ecx, edi
push eax
lea eax, [ebp - 0x141c]
push eax
call fcn.100943e0
mov esi, dword [ebp - 0x1414]
lea eax, [ebp - 0x7c]
push eax
push esi
call fcn.10094490
test al, al
jne 0x10078422
mov esi, dword [edi]
lea ecx, [ebp - 0x1444]
mov edx, dword [ebp - 0x142c]
cmp esi, dword [edi]
jne 0x100787ac
call fcn.10051c30
mov esi, eax
mov byte [ebp - 4], 4
mov ecx, 0x7fffffff
mov edx, dword [ebp - 0x1c]
sub ecx, edx
cmp ecx, 0xa
jb 0x10078b97
cmp dword [ebp - 0x18], 0xf
lea eax, [ebp - 0x2c]
push edx
cmova eax, dword [ebp - 0x2c]
lea ecx, [ebp - 0x1464]
push eax
push 0xa
push 0x1038c520
lea eax, [ebp - 0x2c]
push eax
push dword [ebp - 0x1410]
call fcn.100512b0
push 8
push 0x1038c514
lea ecx, [ebp - 0x1464]
mov byte [ebp - 4], 5
call fcn.10050970
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x147c], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x146c], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
push esi
lea eax, [ebp - 0x147c]
mov byte [ebp - 4], 6
push eax
push dword [ebp - 0x1410]
lea ecx, [ebp - 0x1428]
call fcn.10091180
lea ecx, [ebp - 0x1428]
mov byte [ebp - 4], 7
call fcn.100a3f10
mov byte [ebp - 4], 6
mov ecx, dword [ebp - 0x1414]
cmp ecx, 0xf
jbe 0x10078525
mov edx, dword [ebp - 0x1428]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1007851b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10078b9c
push ecx
push edx
call fcn.102a6f8e
add esp, 8
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0x1468]
mov dword [ebp - 0x1418], 0
mov dword [ebp - 0x1414], 0xf
mov byte [ebp - 0x1428], 0
cmp ecx, 0xf
jbe 0x1007857e
mov edx, dword [ebp - 0x147c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10078574
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10078b9c
push ecx
push edx
call fcn.102a6f8e
add esp, 8
mov byte [ebp - 4], 4
mov ecx, dword [ebp - 0x1450]
cmp ecx, 0xf
jbe 0x100785bc
mov edx, dword [ebp - 0x1464]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x100785b2
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10078b9c
push ecx
push edx
call fcn.102a6f8e
add esp, 8
mov byte [ebp - 4], 3
mov ecx, dword [ebp - 0x1430]
mov dword [ebp - 0x1454], 0
mov dword [ebp - 0x1450], 0xf
mov byte [ebp - 0x1464], 0
cmp ecx, 0xf
jbe 0x10078615
mov edx, dword [ebp - 0x1444]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1007860b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10078b9c
push ecx
push edx
call fcn.102a6f8e
add esp, 8
mov esi, dword [edi]
mov ecx, edi
push dword [esi + 4]
push edi
call fcn.1008e680
mov dword [esi + 4], esi
lea ecx, [ebp - 0x44]
mov dword [esi], esi
mov dword [esi + 8], esi
mov dword [edi + 4], 0
call fcn.100771a0
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x140c]
lea ecx, [eax + 0x103b8740]
lea eax, [ebp - 0x44]
cmp ecx, eax
je 0x10078661
cmp dword [ebp - 0x30], 0xf
push dword [ebp - 0x34]
cmova eax, dword [ebp - 0x44]
push eax
call fcn.1005c230
call fcn.102a6b48
mov dword [ebp - 0x84], 0xffffffff
mov edx, 1
mov dword [ebp - 0x1404], eax
nop dword [eax + eax]
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [ebp + edx*4 - 0x1404], eax
inc edx
cmp edx, 0x270
jb 0x10078680
lea eax, [ebp - 0x1408]
mov dword [ebp - 0x1408], 0x270
push 0x9c41
lea ecx, [ebp - 0x140c]
mov dword [ebp - 0x140c], eax
call fcn.10097230
add eax, 0x80004e20
cmp eax, 0x80000000
lea ecx, [eax - 0x80000000]
lea esi, [eax - 0x80000000]
mov eax, dword [ebp - 0x1410]
cmovae esi, ecx
lea ecx, [ebp - 0x144c]
mov dword [eax*4 + 0x103b807c], esi
lea eax, [ebp - 0x44]
push eax
call fcn.10050100
mov dword [ebp - 0x1434], esi
mov dword [ebp - 0x1430], 1
lea eax, [ebp - 0x7c]
mov byte [ebp - 4], 9
push eax
mov ecx, edi
call fcn.100868f0
mov esi, eax
lea eax, [ebp - 0x144c]
push eax
mov ecx, esi
call fcn.1005adf0
mov ecx, dword [ebp - 0x1434]
mov dword [esi + 0x18], ecx
mov ecx, dword [ebp - 0x1430]
mov dword [esi + 0x1c], ecx
mov ecx, dword [ebp - 0x1438]
cmp ecx, 0xf
jbe 0x10078775
mov edx, dword [ebp - 0x144c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x1007876b
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10078ba1
push ecx
push edx
call fcn.102a6f8e
add esp, 8
mov ecx, dword [ebp - 0x30]
cmp ecx, 0xf
jbe 0x10078afe
mov edx, dword [ebp - 0x44]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10078af4
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10078ba1
jmp 0x10078af4
call fcn.10051c30
mov esi, eax
mov byte [ebp - 4], 0xa
mov ecx, 0x7fffffff
mov edx, dword [ebp - 0x1c]
sub ecx, edx
cmp ecx, 0xa
jb 0x10078ba6
cmp dword [ebp - 0x18], 0xf
lea eax, [ebp - 0x2c]
push edx
cmova eax, dword [ebp - 0x2c]
lea ecx, [ebp - 0x1428]
push eax
push 0xa
push 0x1038c52c
lea eax, [ebp - 0x2c]
push eax
push dword [ebp - 0x1410]
call fcn.100512b0
push 8
push 0x1038c514
lea ecx, [ebp - 0x1428]
mov byte [ebp - 4], 0xb
call fcn.10050970
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x147c], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x146c], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
push esi
lea eax, [ebp - 0x147c]
mov byte [ebp - 4], 0xc
push eax
push dword [ebp - 0x1410]
lea ecx, [ebp - 0x1464]
call fcn.10091180
lea ecx, [ebp - 0x1464]
mov byte [ebp - 4], 0xd
call fcn.100a3f10
mov byte [ebp - 4], 0xc
mov ecx, dword [ebp - 0x1450]
cmp ecx, 0xf
jbe 0x1007889b
mov edx, dword [ebp - 0x1464]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10078891
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10078bab
push ecx
push edx
call fcn.102a6f8e
add esp, 8
mov byte [ebp - 4], 0xb
mov ecx, dword [ebp - 0x1468]
mov dword [ebp - 0x1454], 0
mov dword [ebp - 0x1450], 0xf
mov byte [ebp - 0x1464], 0
cmp ecx, 0xf
jbe 0x100788f4
mov edx, dword [ebp - 0x147c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x100788ea
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10078bab
push ecx
push edx
call fcn.102a6f8e
add esp, 8
mov byte [ebp - 4], 0xa
mov ecx, dword [ebp - 0x1414]
cmp ecx, 0xf
jbe 0x10078932
mov edx, dword [ebp - 0x1428]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10078928
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10078bab
push ecx
push edx
call fcn.102a6f8e
add esp, 8
mov byte [ebp - 4], 3
mov ecx, dword [ebp - 0x1430]
mov dword [ebp - 0x1418], 0
mov dword [ebp - 0x1414], 0xf
mov byte [ebp - 0x1428], 0
cmp ecx, 0xf
jbe 0x1007898b
mov edx, dword [ebp - 0x1444]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10078981
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10078bab
push ecx
push edx
call fcn.102a6f8e
add esp, 8
lea ecx, [ebp - 0x5c]
call fcn.100771a0
mov byte [ebp - 4], 0xe
mov eax, dword [ebp - 0x140c]
lea ecx, [eax + 0x103b8740]
lea eax, [ebp - 0x5c]
cmp ecx, eax
je 0x100789bb
cmp dword [ebp - 0x48], 0xf
push dword [ebp - 0x4c]
cmova eax, dword [ebp - 0x5c]
push eax
call fcn.1005c230
call fcn.102a6b48
mov dword [ebp - 0x84], 0xffffffff
mov edx, 1
mov dword [ebp - 0x1404], eax
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [ebp + edx*4 - 0x1404], eax
inc edx
cmp edx, 0x270
jb 0x100789d5
lea eax, [ebp - 0x1408]
mov dword [ebp - 0x1408], 0x270
push 0x9c41
lea ecx, [ebp - 0x140c]
mov dword [ebp - 0x140c], eax
call fcn.10097230
add eax, 0x80004e20
cmp eax, 0x80000000
lea ecx, [eax - 0x80000000]
lea esi, [eax - 0x80000000]
mov eax, dword [ebp - 0x1410]
cmovae esi, ecx
lea ecx, [ebp - 0x144c]
mov dword [eax*4 + 0x103b807c], esi
lea eax, [ebp - 0x5c]
push eax
call fcn.10050100
mov dword [ebp - 0x1434], esi
mov dword [ebp - 0x1430], 1
lea eax, [ebp - 0x7c]
mov byte [ebp - 4], 0xf
push eax
mov ecx, edi
call fcn.100868f0
mov esi, eax
lea eax, [ebp - 0x144c]
push eax
mov ecx, esi
call fcn.1005adf0
mov ecx, dword [ebp - 0x1434]
mov dword [esi + 0x18], ecx
mov ecx, dword [ebp - 0x1430]
mov dword [esi + 0x1c], ecx
mov ecx, dword [ebp - 0x1438]
cmp ecx, 0xf
jbe 0x10078aca
mov edx, dword [ebp - 0x144c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10078ac0
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10078bb0
push ecx
push edx
call fcn.102a6f8e
add esp, 8
mov ecx, dword [ebp - 0x48]
cmp ecx, 0xf
jbe 0x10078afe
mov edx, dword [ebp - 0x5c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10078af4
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10078bb0
push ecx
push edx
call fcn.102a6f8e
add esp, 8
mov ecx, dword [ebp - 0x68]
cmp ecx, 0xf
jbe 0x10078b32
mov edx, dword [ebp - 0x7c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10078b28
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10078bb5
push ecx
push edx
call fcn.102a6f8e
add esp, 8
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x68], 0xf
mov byte [ebp - 0x7c], 0
cmp ecx, 0xf
jbe 0x10078b74
mov edx, dword [ebp - 0x2c]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x10078b6a
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x10078bb5
push ecx
push edx
call fcn.102a6f8e
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.102a6f38
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
call fcn.102b3a2f
call fcn.1004cba0
call fcn.102b3a2f
call fcn.102b3a2f
call fcn.1004cba0
call fcn.102b3a2f
call fcn.102b3a2f
call fcn.102b3a2f
int3