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

Disassembly:
mov eax, 0x1006493c
call fcn.10063950
sub esp, 0x64
cmp byte [ebp + 0x10], 0
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
je 0x1001d210
mov dword [ebp - 0x20], 0x3991
cmp dword [ebp - 0x20], 0x3b67
jle 0x1001d1a9
xor esi, esi
xor edi, edi
mov eax, edi
mov ecx, 0x10080db8
xor eax, esi
cdq
push edx
push eax
call fcn.10004c02
inc edi
cmp edi, 0x4bc6
jl 0x1001d186
inc esi
cmp esi, 0x1530
jl 0x1001d184
mov eax, dword [ebp + 0x1c]
push 0x1a
pop esi
mov ecx, dword [eax]
cmp ecx, esi
jge 0x1001d1bf
mov eax, dword [ebp + 8]
movzx edx, word [eax]
add edx, ecx
jmp 0x1001d1cc
mov eax, ecx
cdq
idiv esi
mov eax, dword [ebp + 0x18]
movzx eax, word [eax]
add edx, eax
mov ecx, dword [ebp + 0x24]
push edx
call fcn.10016d1d
and dword [ebp - 4], 0
cmp dword [ebp - 0x20], 0x38aa
jge 0x1001d1f1
mov edx, str.ypjcpfy_mntvyw_lsmuasu_jucsdd
mov ecx, 0x10080db8
call fcn.10007110
jmp 0x1001d618
mov eax, dword [0x106be750]
test al, 1
jne 0x1001d25f
or dword [0x106bfae4], 0xffffffff
or eax, 1
mov ecx, 0x1571
mov dword [0x106be750], eax
xor edx, edx
mov dword [0x106be764], ecx
inc edx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x106be764], ecx
inc edx
cmp edx, 0x270
jl 0x1001d236
mov dword [0x106be760], 0x270
push 2
pop ebx
mov dword [ebp - 0x18], 0xffffffff
lea ecx, [ebp - 0x48]
mov dword [ebp - 0x1c], 0xcf86
mov dword [ebp - 0x20], 0x21c9b6cd
push ebx
call fcn.10004e2c
lea eax, [ebp - 0x3c]
mov dword [ebp - 4], ebx
push eax
push ecx
lea eax, [ebp - 0x48]
xor cl, cl
push eax
push 0x2e09
call fcn.1001ac30
mov eax, dword [ebp - 0x18]
add esp, 0x10
add eax, dword [ebp - 0x18]
je 0x1001d2b2
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
xor ecx, ecx
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x20]
cmp eax, 1
setge cl
mov dword [ebp - 0x20], ecx
mov eax, dword [ebp - 0x18]
mov esi, dword [ebp - 0x48]
neg eax
sbb eax, eax
neg eax
cmp eax, dword [esi + 4]
jle 0x1001d3cb
mov dword [ebp - 0x2c], 0xffff
mov dword [ebp - 0x28], 0x7cb6
cmp dword [ebp - 0x28], 0x7e43
jle 0x1001d375
xor esi, esi
mov dword [ebp - 0x24], esi
xor edi, edi
mov dword [ebp - 0x18], edi
mov eax, esi
mov dword [ebp - 0x20], 0x196d
cdq
xor ebx, ebx
idiv edi
mov dword [ebp - 0x30], edx
xor esi, esi
mov edi, 0xa40
mov eax, esi
lea ecx, [ebp - 0x6c]
cdq
push edx
push eax
call fcn.10001a95
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x1001d334
mov eax, dword [eax]
push eax
call fcn.1004cf6c
pop ecx
push 0
push 1
lea ecx, [ebp - 0x6c]
call fcn.100052fb
add esi, ebx
dec edi
jne 0x1001d31d
add ebx, dword [ebp - 0x30]
dec dword [ebp - 0x20]
jne 0x1001d316
mov edi, dword [ebp - 0x18]
mov esi, dword [ebp - 0x24]
inc edi
mov dword [ebp - 0x18], edi
cmp edi, 0x739c
jl 0x1001d305
inc esi
mov dword [ebp - 0x24], esi
cmp esi, 0x64b2
jl 0x1001d300
push 2
pop ebx
mov dword [ebp - 0x38], 0xea38
cmp dword [ebp - 0x28], 0x7b47
jge 0x1001d390
push str.clrcc_pxa_yxindepln_begzwbsoi_njwpuyk_pqnbpl_nsze_plxkb_isqivrj_fbgunjeu_lkasaraqw_piyb_zlqgxi
call fcn.1004cf6c
pop ecx
lea eax, [ebp - 0x2c]
mov dword [ebp - 4], ebx
push 0x2455
push eax
mov edx, 0x7c80
mov dword [ebp - 0x34], 5
call fcn.1001acd8
pop ecx
pop ecx
lea eax, [ebp - 0x34]
push eax
push ecx
lea eax, [ebp - 0x1c]
push eax
push ecx
lea eax, [ebp - 0x38]
push eax
lea eax, [ebp - 0x2c]
push eax
call fcn.1001cf21
add esp, 0x18
jmp 0x1001d40e
mov dword [ebp - 0x20], 1
xor edx, edx
mov dword [ebp - 0x28], 0x8c547fce
mov dword [ebp - 0x30], 0x83ea6de4
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
cmp ecx, eax
mov eax, dword [ebp - 0x18]
setl dl
xor ecx, ecx
cmp edx, eax
setl cl
mov dword [ebp - 0x28], ecx
mov eax, dword [ebp - 0x20]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x20]
mov eax, dword [esi + 4]
mov dword [ebp - 0x30], eax
call fcn.1001ba1f
or dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x48], 0
je 0x1001d42d
push dword [ebp - 0x48]
call fcn.1004d139
and dword [ebp - 0x48], 0
and dword [ebp - 0x44], 0
and dword [ebp - 0x40], 0
pop ecx
push 0
push 0x836
push 0x106be760
mov edx, 0x6c85
mov ecx, 0x106be688
call fcn.1001bd5a
mov dword [ebp - 0x28], 0xce7
add esp, 0xc
cmp dword [ebp - 0x28], 0xe65
jle 0x1001d485
xor esi, esi
xor edi, edi
mov eax, esi
mov ecx, 0x10080db8
cdq
idiv edi
mov eax, edx
cdq
push edx
push eax
call fcn.10004c02
inc edi
cmp edi, 0x791f
jl 0x1001d45f
inc esi
cmp esi, 0x137
jl 0x1001d45d
mov dword [ebp - 4], 5
cmp dword [ebp - 0x28], 0xa0c
jge 0x1001d4a4
mov edx, str.goy_uqhizgeke_obwozc_vohytdo_edajdc_bmncfxm_sqghjjqzq_rjrldy_naewg
mov ecx, 0x10080db8
call fcn.10007110
or dword [ebp - 4], 0xffffffff
mov dword [ebp - 0x18], 0
jmp 0x1001d4d9
mov eax, dword [ebp - 0x18]
mov dword [ebp + eax*4 - 0x54], 0x93b4e1a3
inc dword [ebp - 0x18]
cmp dword [ebp - 0x18], 3
jl 0x1001d4cb
push 0
mov edx, 0x34b4
mov ecx, 0x3c3c
call fcn.1001b9ef
mov dword [ebp - 0x28], 0x6ea1
cmp dword [ebp - 0x28], 0x709f
pop ecx
jle 0x1001d527
xor esi, esi
xor edi, edi
lea eax, [edi + esi]
mov ecx, 0x10080db8
cdq
push edx
push eax
call fcn.10004c02
inc edi
cmp edi, 0x162c
jl 0x1001d505
inc esi
cmp esi, 0x1e7c
jl 0x1001d503
push 0x27ed
push ecx
lea eax, [ebp - 0x11]
mov byte [ebp - 0x11], 0
push 0x579
push eax
mov cl, 1
call fcn.1001ac30
add esp, 0x10
mov dword [ebp - 4], 7
cmp dword [ebp - 0x28], 0x6d38
jge 0x1001d563
mov edx, str.nkqqrpe_dkj_wqmilwob
mov ecx, 0x10080db8
call fcn.10007110
mov eax, dword [0x106be760]
cmp eax, 0x270
jne 0x1001d5c9
mov edx, 0x106be768
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, ecx
xor eax, dword [edx + 0x630]
mov dword [edx + 0x9bc], eax
add edx, 4
cmp edx, 0x106bf128
jl 0x1001d574
jmp 0x1001d5d5
cmp eax, 0x4e0
jb 0x1001d5da
call fcn.1001dcaa
mov eax, dword [0x106be760]
mov edx, dword [eax*4 + 0x106be764]
inc eax
mov dword [0x106be760], eax
mov eax, edx
shr eax, 0xb
and eax, dword [0x106bfae4]
xor edx, eax
mov eax, edx
and eax, 0xff3a58ad
shl eax, 7
xor edx, eax
mov eax, edx
and eax, 0xffffdf8c
shl eax, 0xf
xor edx, eax
mov eax, dword [ebp + 0xc]
mov ecx, edx
shr ecx, 0x12
xor ecx, edx
mov dword [eax], ecx
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret