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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x1394
call fcn.10020db0
mov eax, dword [0x1007a058]
xor eax, esp
mov dword [esp + 0x1390], eax
push ebx
push esi
push edi
push 0
mov dword [esp + 0x10], ecx
call fcn.1002b656
add esp, 4
mov dword [esp + 0x1394], 0xffffffff
mov dword [esp + 0x14], eax
mov edx, 1
mov ecx, eax
shr ecx, 0x1e
xor ecx, eax
imul eax, ecx, 0x6c078965
add eax, edx
mov dword [esp + edx*4 + 0x14], eax
inc edx
cmp edx, 0x270
jb 0x10015623
mov esi, 0x270
mov dword [esp + 0x10], esi
cmp esi, 0x270
jne 0x10015696
lea eax, [esp + 0x18]
mov edx, dword [eax - 4]
lea eax, [eax + 4]
xor edx, dword [eax - 4]
and edx, 0x7fffffff
xor edx, dword [eax - 8]
mov ecx, edx
and cl, 1
movzx ecx, cl
neg ecx
sbb ecx, ecx
shr edx, 1
and ecx, 0x9908b0df
xor ecx, dword [eax + 0x62c]
xor ecx, edx
mov dword [eax + 0x9b8], ecx
sub esi, 1
jne 0x10015654
mov esi, dword [esp + 0x10]
jmp 0x10015779
cmp esi, 0x4e0
jb 0x10015779
mov eax, dword [esp + 0x9d4]
lea edi, [esp + 0x9d4]
mov ebx, 0xe3
mov ecx, eax
lea edx, [edi + 4]
xor ecx, dword [edx]
and ecx, 0x7fffffff
xor ecx, eax
mov eax, ecx
and al, 1
movzx eax, al
neg eax
sbb eax, eax
shr ecx, 1
and eax, 0x9908b0df
xor eax, dword [edi + 0x634]
xor eax, ecx
mov dword [edi - 0x9c0], eax
lea edi, [edx]
mov eax, dword [edx]
sub ebx, 1
jne 0x100156b5
mov eax, dword [esp + 0xd60]
lea edi, [esp + 0xd60]
mov ebx, 0x18c
mov ecx, dword [edi + 4]
lea edx, [edi + 4]
xor ecx, eax
and ecx, 0x7fffffff
xor ecx, eax
mov eax, ecx
and al, 1
movzx eax, al
neg eax
sbb eax, eax
shr ecx, 1
and eax, 0x9908b0df
xor eax, dword [edi - 0xd4c]
xor eax, ecx
mov dword [edi - 0x9c0], eax
lea edi, [edx]
mov eax, dword [edx]
sub ebx, 1
jne 0x10015700
mov ecx, dword [esp + 0x1390]
xor ecx, dword [esp + 0x14]
and ecx, 0x7fffffff
xor ecx, dword [esp + 0x1390]
mov eax, ecx
and al, 1
movzx eax, al
neg eax
sbb eax, eax
shr ecx, 1
and eax, 0x9908b0df
xor eax, ecx
xor eax, dword [esp + 0x644]
xor esi, esi
mov dword [esp + 0x9d0], eax
mov dword [esp + 0x10], esi
mov ecx, dword [esp + esi*4 + 0x14]
mov eax, ecx
shr eax, 0xb
inc esi
and eax, dword [esp + 0x1394]
xor ecx, eax
mov dword [esp + 0x10], esi
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, 0xaaaaaaab
mov edi, ecx
shr edi, 0x12
xor edi, ecx
mul edi
shr edx, 1
cmp edx, 0x55555555
jae 0x10015648
xor edx, edx
mov eax, edi
mov ecx, 3
div ecx
sub edx, 0
je 0x1001580a
sub edx, 1
je 0x100157f4
sub edx, 1
jne 0x10015824
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 8]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x28]
push 0xc
push str.HAM_9000___Daisy__Daisy__give_me_your_answer_do.
jmp 0x1001581e
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 8]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x28]
push 0xc
push str.HAM_9000___Look_Dave__I_can_see_youre_really_upset_about_this.
jmp 0x1001581e
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 8]
push eax
mov ecx, dword [eax]
call dword [ecx + 0x28]
push 0xc
push str.HAM_9000___Im_sorry__Dave._Im_afraid_I_cant_do_that.
mov ecx, dword [eax]
push eax
call dword [ecx + 4]
mov ecx, dword [esp + 0x139c]
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.1001fac4
mov esp, ebp
pop ebp
ret 4