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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x60
cmp byte [ebp + 0x10], 0
je 0x10012f05
mov byte [ebp - 1], 0
cmp byte [ebp - 1], 0
je 0x10013270
push 0x2645
push 0xc15
push 0
call dword [sym.imp.USER32.dll_InflateRect]
jmp 0x10013270
xor edx, edx
mov dword [ebp - 8], 0xa0d461e3
mov dword [ebp - 8], edx
jmp 0x10012f21
mov eax, dword [ebp - 8]
mov dword [ebp + eax*4 - 0x2c], 0xfffffffb
inc dword [ebp - 8]
cmp dword [ebp - 8], 3
jl 0x10012f13
mov dword [ebp - 8], edx
jmp 0x10012f3a
mov eax, dword [ebp - 8]
mov dword [ebp + eax*4 - 0x48], 7
inc dword [ebp - 8]
cmp dword [ebp - 8], 4
jl 0x10012f2c
push esi
push edi
xor edi, edi
mov dword [ebp - 8], edx
inc edi
jmp 0x10012f58
mov eax, dword [ebp - 8]
mov dword [ebp + eax*4 - 0x10], 8
inc dword [ebp - 8]
cmp dword [ebp - 8], edi
jl 0x10012f4a
mov dword [ebp - 8], edx
jmp 0x10012f70
mov eax, dword [ebp - 8]
mov dword [ebp + eax*4 - 0x18], 0xc821f997
inc dword [ebp - 8]
cmp dword [ebp - 8], edi
jl 0x10012f62
mov esi, edi
cmp dword [ebp - 0x28], edx
jne 0x10012f7e
mov esi, edx
mov eax, dword [ebp - 0x2c]
xor ecx, ecx
cmp esi, eax
mov eax, dword [ebp - 0x2c]
sete cl
add eax, ecx
mov ecx, dword [ebp - 0x28]
imul ecx, eax
mov dword [ebp - 8], ecx
cmp dword [ebp - 8], edx
jne 0x10012fa0
cmp dword [ebp - 0x28], edx
je 0x10012fa2
mov edx, edi
mov eax, dword [ebp - 0x28]
lea ecx, [edx - 1]
xor edx, edx
cmp eax, ecx
setle dl
mov dword [ebp - 0x40], edx
xor edx, edx
mov ecx, dword [ebp - 0x28]
mov eax, dword [ebp - 8]
cmp eax, ecx
mov eax, dword [ebp - 8]
setne dl
xor ecx, ecx
cmp edx, eax
setge cl
inc ecx
neg ecx
sbb ecx, ecx
xor edx, edx
inc ecx
add ecx, dword [ebp - 0x40]
mov eax, dword [ebp - 0x28]
cmp ecx, 0xcfda
setg dl
xor ecx, ecx
cmp eax, edx
setge cl
imul eax, ecx, 5
mov dword [ebp - 8], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x40], eax
test eax, eax
jne 0x10012ffa
mov eax, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x24]
mov ecx, 0xcb0b
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x10]
sub ecx, eax
cmp dword [ebp - 0x2c], ecx
jle 0x10013019
cmp dword [ebp - 0x10], 0
je 0x10013019
mov eax, edi
jmp 0x1001301b
xor eax, eax
xor edx, edx
mov esi, 0x270
cmp eax, 0x7b17b4d2
mov eax, dword [ebp - 0x10]
setle dl
xor ecx, ecx
cmp edx, eax
mov eax, dword [ebp - 0x10]
setle cl
xor edx, edx
add ecx, 0xdbb7a2e2
cmp ecx, eax
mov eax, dword [0x10070c1c]
setge dl
mov dword [ebp - 0x18], edx
test al, 1
jne 0x1001308f
or eax, edi
mov ecx, 0x1571
or dword [0x10071fa4], 0xffffffff
mov edx, edi
mov dword [0x10070c1c], eax
mov dword [0x10070c24], ecx
mov eax, ecx
shr eax, 0x1e
xor eax, ecx
imul ecx, eax, 0x6c078965
add ecx, edx
mov dword [edx*4 + 0x10070c24], ecx
inc edx
cmp edx, esi
jl 0x1001306b
mov eax, esi
mov dword [0x10070c20], eax
jmp 0x10013094
mov eax, dword [0x10070c20]
cmp byte [0x10070ba4], 0
jne 0x100131db
mov dword [ebp - 0xc], 0xfffffffd
mov dword [ebp - 0xc], 0
cmp dword [ebp - 0xc], 0xffffffe3
je 0x100131c3
mov dword [ebp - 0x14], 0xfffffffe
mov dword [ebp - 0x14], 0x45c2f1fc
mov dword [ebp - 8], 0
jmp 0x100130da
mov eax, dword [ebp - 8]
mov dword [ebp + eax*4 - 0x38], edi
inc dword [ebp - 8]
cmp dword [ebp - 8], 3
jl 0x100130d0
mov dword [ebp - 8], 0
jmp 0x100130f7
mov eax, dword [ebp - 8]
mov dword [ebp + eax*4 - 0x20], 0xfffa
inc dword [ebp - 8]
cmp dword [ebp - 8], 2
jl 0x100130e9
mov dword [ebp - 0x38], 0x1a
jmp 0x10013135
mov dword [ebp - 8], 0x2fb5a5ef
mov dword [ebp - 8], edi
cmp dword [ebp - 8], 0
jl 0x10013132
mov eax, dword [ebp - 8]
xor ecx, ecx
mov eax, dword [ebp + eax*4 - 0x20]
cmp eax, edi
setle cl
imul eax, ecx, 0xffffbae3
mov dword [ebp - 0x14], eax
dec dword [ebp - 8]
jns 0x10013116
dec dword [ebp - 0x38]
cmp dword [ebp - 0x38], 0xf
jle 0x10013106
mov dword [ebp - 0x14], 0x5320
cmp dword [ebp - 0x14], 0x55e7
jle 0x10013197
xor esi, esi
mov dword [ebp - 8], esi
mov edi, esi
mov esi, 0x77fc
mov eax, edi
lea ecx, [ebp - 0x60]
cdq
push edx
push eax
call fcn.10001a65
pop ecx
pop ecx
cmp dword [eax + 0x14], 0x10
jb 0x1001316e
mov eax, dword [eax]
push eax
call fcn.1003f93c
pop ecx
push 0
push 1
lea ecx, [ebp - 0x60]
call fcn.10009a96
dec edi
dec esi
jne 0x10013157
mov esi, dword [ebp - 8]
inc esi
mov dword [ebp - 8], esi
cmp esi, 0x81a
jl 0x10013150
xor edi, edi
inc edi
cmp dword [ebp - 0xc], 0
jne 0x100131be
cmp dword [ebp - 0x14], 0x52ee
jge 0x100131b1
push str.guyqg_dkgkwjw_xmrgwaw
call fcn.1003f93c
pop ecx
dec dword [ebp - 0xc]
cmp dword [ebp - 0xc], 0xffffffe3
jne 0x100130b9
mov esi, 0x270
mov edx, 0x10070c20
xor cl, cl
call fcn.10012265
push ecx
call fcn.1001248d
mov eax, dword [0x10070c20]
pop ecx
pop edi
cmp eax, esi
pop esi
jne 0x10013221
mov edx, 0x10070c28
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, 0x100715e8
jl 0x100131e6
jmp 0x1001322d
cmp eax, 0x4e0
jb 0x10013232
call fcn.1001497c
mov eax, dword [0x10070c20]
mov edx, dword [eax*4 + 0x10070c24]
inc eax
mov dword [0x10070c20], eax
mov eax, edx
shr eax, 0xb
and eax, dword [0x10071fa4]
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 + 0x14]
mov ecx, edx
shr ecx, 0x12
xor ecx, edx
mov dword [eax], ecx
mov esp, ebp
pop ebp
ret