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

Disassembly:
mov eax, 0x10061070
call fcn.10060010
sub esp, 0x54
cmp byte [ebp + 0x1c], 0
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
mov esi, edx
mov dword [ebp - 0x20], ecx
je 0x1001c92c
cmp byte [ebp + 8], 0
je 0x1001c623
mov edx, dword [ebp + 0x14]
mov dword [edx], 0
jmp 0x1001c619
mov ecx, dword [edx]
mov eax, dword [esi]
mov dword [eax + ecx*4], 1
inc dword [edx]
cmp dword [edx], 2
jl 0x1001c60c
jmp 0x1001c966
mov dword [ebp - 0x14], 0x7bc0
xor esi, esi
cmp dword [ebp - 0x14], 0x7d9e
jle 0x1001c68b
mov edi, esi
mov ebx, esi
mov ecx, esi
mov dword [ebp - 0x14], esi
lea eax, [ebx + edi]
xor eax, ecx
lea ecx, [ebp - 0x60]
cdq
push edx
push eax
call fcn.100025b7
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x1001c658
mov eax, dword [eax]
push eax
call fcn.1004b05d
pop ecx
push esi
push 1
lea ecx, [ebp - 0x60]
call fcn.10007cc3
mov ecx, dword [ebp - 0x14]
inc ecx
mov dword [ebp - 0x14], ecx
cmp ecx, 0x6295
jl 0x1001c63e
inc ebx
cmp ebx, 0x2b98
jl 0x1001c639
inc edi
cmp edi, 0x5344
jl 0x1001c637
mov eax, dword [0x1009f724]
test al, 1
jne 0x1001c6da
or dword [0x100a0ad4], 0xffffffff
or eax, 1
mov ecx, 0x1571
mov dword [0x1009f724], eax
xor edx, edx
mov dword [0x1009f754], ecx
inc edx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x1009f754], ecx
inc edx
cmp edx, 0x270
jl 0x1001c6b1
mov dword [0x1009f750], 0x270
push 4
lea ecx, [ebp - 0x30]
call fcn.1000199f
mov dword [ebp - 4], esi
mov dword [ebp - 0x14], 0x4258
cmp dword [ebp - 0x14], 0x4323
jle 0x1001c721
mov edi, esi
mov ebx, esi
mov eax, edi
mov ecx, 0x1007bf98
cdq
idiv ebx
mov eax, edx
cdq
push edx
push eax
call fcn.10007154
inc ebx
cmp ebx, 0x5573
jl 0x1001c6fb
inc edi
cmp edi, 0x1a7a
jl 0x1001c6f9
mov dword [ebp - 0x18], 0xe1e87df2
mov byte [ebp - 4], 1
cmp dword [ebp - 0x14], 0x4071
jge 0x1001c762
mov edx, str.oij_htizy_eglhh_lapyh_cmy_viq_xheed_gfodwfeg_mgplbp_sflqe_puggc_idob_amn_vzlcun
mov ecx, 0x1007bf98
call fcn.1000a079
jmp 0x1001c762
push ecx
lea eax, [ebp - 0x30]
mov dword [ebp - 4], esi
push eax
push ecx
push 0x54ad
push 0x25d
push 0x760d
xor dl, dl
lea ecx, [ebp - 0x24]
call fcn.1001d990
push 0x194f
lea eax, [ebp - 0x30]
mov edx, 0x2913
push esi
push eax
lea ecx, [ebp - 0x18]
call fcn.1001d9d2
or dword [ebp - 4], 0xffffffff
add esp, 0x24
cmp dword [ebp - 0x30], 0
je 0x1001c7ba
push dword [ebp - 0x30]
call fcn.10048a74
pop ecx
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x28], esi
cmp byte [0x1009f661], 0
jne 0x1001c88f
push ecx
push 0x803
push ecx
push 0x1009f750
push 0x3c59
push esi
push 0x52eb
sub esp, 0xc
push 0x6206
call fcn.1001ca90
add esp, 0x2c
lea ecx, [ebp - 0x3c]
push 2
call fcn.1000199f
push 3
pop edi
push ecx
mov dword [ebp - 4], edi
lea eax, [ebp + 0x1c]
push ecx
mov dword [ebp - 0x1c], 0xf7a73d2d
lea edx, [ebp - 0x3c]
mov dword [ebp - 0x14], 0xbd4dfbd6
push eax
call fcn.1001ceea
add esp, 0xc
mov dword [ebp + 0x1c], esi
jmp 0x1001c82c
mov eax, dword [ebp + 0x1c]
mov dword [ebp + eax*4 - 0x48], esi
inc dword [ebp + 0x1c]
cmp dword [ebp + 0x1c], edi
jl 0x1001c822
lea eax, [ebp - 0x1c]
xor dl, dl
push 0x4cc3
push eax
mov ecx, 0x290f
call fcn.1001cc45
or dword [ebp - 4], 0xffffffff
cmp dword [ebp - 0x3c], 0
pop ecx
pop ecx
je 0x1001c85b
push dword [ebp - 0x3c]
call fcn.10048a74
pop ecx
push esi
push 0x2da5
push 0x533b
push esi
push 0x1c8
push 0x6797
push 0x1009f661
push 0x4e60
push 1
mov edx, 0x1023
mov ecx, 0x4ca6
call fcn.1001c5d9
add esp, 0x24
mov eax, dword [0x1009f750]
cmp eax, 0x270
jne 0x1001c8db
mov edx, 0x1009f758
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, 0x100a0118
jl 0x1001c8a0
jmp 0x1001c8e7
cmp eax, 0x4e0
jb 0x1001c8ec
call fcn.1001dfd6
mov eax, dword [0x1009f750]
mov ecx, dword [eax*4 + 0x1009f754]
inc eax
mov dword [0x1009f750], eax
mov eax, ecx
shr eax, 0xb
and eax, dword [0x100a0ad4]
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 ecx, dword [ebp - 0x20]
mov dword [ecx], eax
jmp 0x1001c966
cmp byte [ebp + 0x28], 0
je 0x1001c960
mov eax, dword [ebp + 0x20]
push 0x1a
pop esi
mov ecx, dword [eax]
cmp ecx, esi
jge 0x1001c948
mov eax, dword [ebp + 0xc]
movzx edx, word [eax]
add edx, ecx
jmp 0x1001c955
mov eax, ecx
cdq
idiv esi
mov eax, dword [ebp + 0x24]
movzx eax, word [eax]
add edx, eax
mov ecx, dword [ebp + 0x18]
push edx
call fcn.10019cf7
jmp 0x1001c966
mov eax, dword [ebp + 0x10]
mov byte [eax], 1
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret