Function at 0x1002f0b0
Capabilities:
Encode data using xor
Generate random numbers using a mersenne twister
Query service status

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
mov byte [ebp - 4], cl
push esi
push edi
test cl, cl
je 0x1002f0da
mov eax, dword [ebp + 8]
cmp byte [eax], 0
je 0x1002f382
xor esi, esi
push esi
push esi
call dword [sym.imp.ADVAPI32.dll_QueryServiceStatus]
jmp 0x1002f382
xor esi, esi
mov dword [ebp - 0x14], esi
mov dword [ebp - 8], 0xec79cf18
mov dword [ebp - 0x2c], 0x673292c5
mov dword [ebp - 0x24], 0x6887e08a
mov dword [ebp - 0x30], 0xedbcc772
mov dword [ebp - 0x14], esi
jmp 0x1002f278
mov dword [ebp - 0xc], 0x96a485bf
mov dword [ebp - 0x10], 1
mov dword [ebp - 0x1c], 0x96141e4f
mov dword [ebp - 8], 0xf7b40076
mov dword [ebp - 0x18], 0x3f6d1d89
mov dword [ebp - 8], esi
jmp 0x1002f139
mov eax, dword [ebp - 8]
mov dword [ebp + eax*4 - 0x20], 0xb96c
inc dword [ebp - 8]
cmp dword [ebp - 8], 1
jl 0x1002f12b
mov dword [ebp - 8], esi
jmp 0x1002f152
mov eax, dword [ebp - 8]
mov dword [ebp + eax*4 - 0x28], 0x80a3888a
inc dword [ebp - 8]
cmp dword [ebp - 8], 1
jl 0x1002f144
cmp dword [ebp - 0xc], esi
jne 0x1002f16b
mov eax, dword [ebp - 0x1c]
inc dword [ebp - 0x1c]
neg eax
jne 0x1002f16b
mov eax, esi
jmp 0x1002f16e
xor eax, eax
inc eax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x20]
cmp dword [ebp - 8], esi
jne 0x1002f1ea
mov eax, dword [ebp - 0xc]
or ecx, 0xffffffff
mov eax, dword [ebp - 0x18]
xor edx, edx
mov eax, dword [ebp - 0x2c]
dec dword [ebp - 0x18]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x20]
sub ecx, eax
mov eax, dword [ebp - 0x24]
cmp ecx, 2
setge dl
xor ecx, ecx
cmp edx, eax
sete cl
xor eax, eax
cmp ecx, 0x5aba
setle al
xor ecx, ecx
cmp eax, 1
setg cl
xor eax, eax
cmp ecx, 0xfffffffe
setg al
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0xc]
cmp dword [ebp - 8], eax
jg 0x1002f1d1
cmp dword [ebp - 8], esi
jne 0x1002f1d1
mov edx, esi
jmp 0x1002f1d4
xor edx, edx
inc edx
mov eax, dword [ebp - 0x24]
xor ecx, ecx
cmp edx, eax
setl cl
mov dword [ebp - 0xc], ecx
cmp dword [ebp - 0xc], esi
jne 0x1002f1ea
mov edx, esi
jmp 0x1002f1ed
xor edx, edx
inc edx
mov eax, dword [ebp - 0x20]
xor ecx, ecx
cmp edx, eax
mov eax, dword [ebp - 0x28]
setl cl
add eax, ecx
je 0x1002f227
push esi
lea eax, [ebp - 0x10]
push eax
push ecx
push ecx
call fcn.1002e73d
add esp, 0x10
mov dword [ebp - 0xc], 0xffffffe2
jmp 0x1002f21f
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x10], eax
inc dword [ebp - 0xc]
cmp dword [ebp - 0xc], 8
jle 0x1002f216
jmp 0x1002f275
push ecx
mov dword [ebp - 0xc], 0xdeab2dd2
lea edx, [ebp - 0x18]
push ecx
call fcn.1002f4f2
pop ecx
pop ecx
mov dword [ebp - 0x10], esi
jmp 0x1002f26f
mov dword [ebp - 8], 0x6a781b38
mov eax, dword [ebp - 0xc]
mov eax, dword [ebp - 0x18]
mov eax, dword [ebp - 0x30]
mov eax, dword [ebp - 0xc]
mov eax, dword [ebp - 0x14]
mov eax, dword [ebp - 0x28]
mov eax, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x2c]
mov eax, dword [ebp - 8]
mov eax, dword [ebp - 8]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], esi
jne 0x1002f275
dec dword [ebp - 0x10]
cmp dword [ebp - 0x10], 0xfffffffa
jne 0x1002f23f
dec dword [ebp - 0x14]
cmp dword [ebp - 0x14], 0xffffffff
jle 0x1002f103
mov eax, dword [0x100aedc8]
mov edi, 0x270
test al, 1
jne 0x1002f2d1
or dword [0x100aedc4], 0xffffffff
or eax, 1
mov edx, 0x1571
mov dword [0x100aedc8], eax
xor ecx, ecx
mov dword [0x100ada44], edx
inc ecx
mov eax, edx
shr eax, 0x1e
xor eax, edx
imul edx, eax, 0x6c078965
add edx, ecx
mov dword [ecx*4 + 0x100ada44], edx
inc ecx
cmp ecx, edi
jl 0x1002f2ad
mov eax, edi
mov dword [0x100ada40], eax
jmp 0x1002f2d6
mov eax, dword [0x100ada40]
cmp byte [0x100ad89c], 0
jne 0x1002f328
push ecx
push 0x696c
push 0x1af4
push esi
push ecx
push 0x4e63
push 0x1b25
push ecx
push esi
push ecx
mov edx, 0x73e2
mov cl, 1
call fcn.1002e437
add esp, 0x24
xor cl, cl
push 0x20b0
push 0x100ada40
call fcn.1002e705
mov eax, dword [0x100ada40]
add esp, 0xc
mov byte [0x100ad89c], 1
cmp eax, edi
jne 0x1002f333
call fcn.1002fbef
jmp 0x1002f33f
cmp eax, 0x4e0
jb 0x1002f344
call fcn.1002fb2f
mov eax, dword [0x100ada40]
mov edx, dword [eax*4 + 0x100ada44]
inc eax
mov dword [0x100ada40], eax
mov eax, edx
shr eax, 0xb
and eax, dword [0x100aedc4]
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
pop edi
pop esi
mov esp, ebp
pop ebp
ret