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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10113a8b
mov eax, dword fs:[0]
push eax
mov eax, 0x1f828
call fcn.100f7e00
mov eax, dword [0x10167410]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
xor ebx, ebx
push ebx
mov edi, 0xf
push 0x10121e28
lea ecx, [ebp - 0x1f824]
mov dword [ebp - 0x1f82c], eax
mov dword [ebp - 0x1f810], edi
mov dword [ebp - 0x1f814], ebx
mov byte [ebp - 0x1f824], bl
call fcn.10002cd0
mov dword [ebp - 4], ebx
call fcn.10111209
cmp dword [ebp - 0x1f810], 0x10
mov dword [ebp - 4], 0xffffffff
jb 0x1000328f
mov ecx, dword [ebp - 0x1f824]
push ecx
call fcn.1000459d
add esp, 4
mov dword [ebp - 0x1f810], edi
mov dword [ebp - 0x1f814], ebx
mov byte [ebp - 0x1f824], bl
call fcn.10111209
mov ecx, 1
jmp 0x100032b0
mov edx, eax
shr edx, 0x1e
xor eax, edx
imul eax, eax, 0x6c078965
add eax, ecx
inc ecx
cmp ecx, 0x270
jl 0x100032b0
push ebx
mov word [esi], bx
call fcn.100f812c
push eax
call fcn.100f8ac1
fldz
add esp, 8
mov ecx, 0x1e45
lea eax, [ebp - 0x1e468]
fst dword [eax - 8]
add eax, 0x10
dec ecx
fst dword [eax - 0x14]
fst dword [eax - 0x10]
fst dword [eax - 0xc]
jns 0x100032e7
fstp st(0)
lea edi, [ebp - 0x1e470]
fld dword [0x10121d50]
mov ebx, 0x1e46
fstp dword [ebp - 0x1f810]
call fcn.100f8ad3
cdq
mov ecx, 0x64
idiv ecx
inc edx
mov dword [ebp - 0x1f7fc], edx
fild dword [ebp - 0x1f7fc]
fstp dword [ebp - 0x1f818]
call fcn.100f8ad3
cdq
mov ecx, 0x50
idiv ecx
mov ecx, dword [ebp - 0x1f810]
add edi, 0x10
inc edx
dec ebx
mov dword [ebp - 0x1f7fc], edx
fild dword [ebp - 0x1f7fc]
mov edx, dword [ebp - 0x1f818]
mov dword [edi - 0x10], edx
fstp dword [ebp - 0x1f814]
mov eax, dword [ebp - 0x1f814]
fld dword [ebp - 0x1f814]
mov dword [edi - 0xc], eax
fdivr qword [0x10121d48]
mov dword [edi - 8], ecx
fstp dword [ebp - 0x1f80c]
mov edx, dword [ebp - 0x1f80c]
mov dword [edi - 4], edx
jne 0x10003312
fldz
lea edi, [ebx + 0x14]
lea ecx, [ebp - 0x1e468]
mov edx, 0x60e
fcom dword [ecx]
fnstsw ax
test ah, 5
jp 0x100033c5
fld dword [ecx]
fsub dword [ecx - 4]
fstp dword [ebp - 0x1f7fc]
fld dword [ebp - 0x1f7fc]
fst dword [ecx]
fcomp st(1)
fnstsw ax
test ah, 0x41
jp 0x100033c5
fst dword [ecx]
fcom dword [ecx + 0x10]
fnstsw ax
test ah, 5
jp 0x100033f0
fld dword [ecx + 0x10]
fsub dword [ecx + 0xc]
fstp dword [ebp - 0x1f7fc]
fld dword [ebp - 0x1f7fc]
fst dword [ecx + 0x10]
fcomp st(1)
fnstsw ax
test ah, 0x41
jp 0x100033f0
fst dword [ecx + 0x10]
fcom dword [ecx + 0x20]
fnstsw ax
test ah, 5
jp 0x1000341b
fld dword [ecx + 0x20]
fsub dword [ecx + 0x1c]
fstp dword [ebp - 0x1f7fc]
fld dword [ebp - 0x1f7fc]
fst dword [ecx + 0x20]
fcomp st(1)
fnstsw ax
test ah, 0x41
jp 0x1000341b
fst dword [ecx + 0x20]
fcom dword [ecx + 0x30]
fnstsw ax
test ah, 5
jp 0x10003446
fld dword [ecx + 0x30]
fsub dword [ecx + 0x2c]
fstp dword [ebp - 0x1f7fc]
fld dword [ebp - 0x1f7fc]
fst dword [ecx + 0x30]
fcomp st(1)
fnstsw ax
test ah, 0x41
jp 0x10003446
fst dword [ecx + 0x30]
fcom dword [ecx + 0x40]
fnstsw ax
test ah, 5
jp 0x10003471
fld dword [ecx + 0x40]
fsub dword [ecx + 0x3c]
fstp dword [ebp - 0x1f7fc]
fld dword [ebp - 0x1f7fc]
fst dword [ecx + 0x40]
fcomp st(1)
fnstsw ax
test ah, 0x41
jp 0x10003471
fst dword [ecx + 0x40]
add ecx, 0x50
dec edx
jne 0x1000339e
dec edi
jne 0x10003393
movzx eax, byte [esi]
fstp st(0)
movzx ecx, byte [esi + 1]
mov edi, 0x3cadc0
cmp dword [ebp + 0x10], edi
jle 0x1000358d
lea esp, [esp]
inc al
movzx eax, al
mov edx, dword [esi + eax*4 + 4]
lea ebx, [ecx + edx]
mov dword [ebp - 0x1f804], edx
movzx ecx, bl
mov ebx, dword [esi + ecx*4 + 4]
mov dword [esi + eax*4 + 4], ebx
mov dword [esi + ecx*4 + 4], edx
mov dl, byte [esi + eax*4 + 4]
mov byte [ebp - 0x1f7fd], dl
movzx edx, dl
lea edx, [esi + edx*4 + 4]
mov dword [ebp - 0x1f808], edx
xor edx, edx
mov dword [ebp - 0x1f830], ebx
mov bl, byte [esi + ecx*4 + 4]
test bl, bl
sete dl
mov byte [ebp - 0x1f7fe], bl
mov ebx, dword [ebp - 0x1f808]
add edx, dword [ebx]
mov dword [esi + eax*4 + 4], edx
movzx edx, byte [ebp - 0x1f7fe]
lea edx, [esi + edx*4 + 4]
mov dword [ebp - 0x1f7fc], edx
mov ebx, edx
mov ebx, dword [ebx]
xor edx, edx
cmp byte [ebp - 0x1f7fd], dl
sete dl
inc edi
add ebx, edx
mov dword [ebp - 0x1f834], edx
lea edx, [eax + ecx]
movzx edx, dl
mov dword [ebp - 0x1f828], edx
mov dl, byte [ebp - 0x1f830]
add dl, byte [ebp - 0x1f828]
mov dword [esi + ecx*4 + 4], ebx
add dl, byte [ebp - 0x1f804]
movzx edx, dl
movzx ebx, byte [esi + edx*4 + 4]
lea edx, [esi + edx*4 + 4]
mov dword [ebp - 0x1f804], edx
mov edx, dword [ebp - 0x1f82c]
xor byte [edx + edi - 1], bl
mov edx, dword [ebp - 0x1f804]
mov ebx, dword [edx]
mov edx, dword [ebp - 0x1f808]
xor dword [edx], ebx
mov ebx, dword [esi + eax*4 + 4]
add ebx, dword [ebp - 0x1f834]
mov edx, dword [ebp - 0x1f7fc]
xor dword [edx], ebx
cmp edi, dword [ebp + 0x10]
jl 0x100034a0
mov byte [esi + 1], cl
mov byte [esi], al
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.100f7de6
mov esp, ebp
pop ebp
ret