Function at 0x100252e0
Capabilities:
Encode data using xor
Get number of processors

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10092700
mov eax, dword fs:[0]
push eax
sub esp, 0x5c
mov eax, dword [0x100bb084]
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 esi, ecx
mov eax, dword [esi]
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount64]
mov dword [0x100c3c54], eax
call edi
sub eax, dword [esi + 0x30]
mov ecx, eax
sbb edx, dword [esi + 0x34]
call fcn.10090570
cvtsd2ss xmm0, xmm0
divss xmm0, dword [0x100aee18]
comiss xmm0, dword [0x100aedbc]
jb 0x10025791
call edi
mov dword [esi + 0x30], eax
mov al, byte [esi + 0x20]
mov dword [esi + 0x34], edx
test al, al
je 0x10025580
mov eax, dword [esi + 0x24]
test eax, eax
jle 0x10025360
dec eax
mov dword [esi + 0x24], eax
mov edi, dword [esi + 0x24]
test edi, edi
js 0x1002556f
mov eax, 0x91a2b3c5
mov dword [ebp - 0x14], 0xf
imul edi
mov ecx, edi
mov dword [ebp - 0x18], 0
add edx, edi
mov byte [ebp - 0x28], 0
sar edx, 0xb
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0xe10
sub ecx, eax
mov eax, 0x88888889
imul ecx
mov eax, 0x88888889
add edx, ecx
sar edx, 5
mov ebx, edx
shr ebx, 0x1f
add ebx, edx
imul edi
add edx, edi
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, ecx
shl eax, 4
sub eax, ecx
shl eax, 2
sub edi, eax
mov dword [ebp - 4], 0
push edi
push ebx
cmp ebx, 0xa
jae 0x1002543d
sub esp, 0x18
cmp edi, 0xa
jae 0x10025413
mov bh, 0x4f
mov byte [ebp - 0x2c], 0
mov al, 0x7f
mov byte [ebp - 0x34], bh
mov cl, 0x6a
mov byte [ebp - 0x2c], 0
mov dl, 0x2b
mov ah, al
mov ch, cl
mov bl, 0x75
mov dh, dl
xor ch, bh
xor al, bh
mov byte [ebp - 0x2e], ch
xor cl, bh
xor dl, bh
xor bl, bh
xor ah, bh
xor dh, bh
mov byte [ebp - 0x2d], dh
jmp 0x10025490
mov dh, 0x75
mov byte [ebp - 0x2d], 0
mov cl, 0x50
mov byte [ebp - 0x34], dh
mov dl, 0x11
mov byte [ebp - 0x2d], 0
mov ah, cl
mov al, 0x45
mov bl, 0x4f
mov ch, dl
xor al, dh
xor cl, dh
xor dl, dh
xor bl, dh
xor ah, dh
xor ch, dh
mov byte [ebp - 0x2e], ch
jmp 0x10025490
cmp edi, 0xa
jae 0x1002546c
mov dh, 0x2d
mov byte [ebp - 0x2d], 0
mov al, 8
mov byte [ebp - 0x34], dh
mov cl, 0x49
mov byte [ebp - 0x2d], 0
mov ah, al
mov dl, 0x17
mov bl, 0x1d
mov ch, cl
xor al, dh
xor cl, dh
xor dl, dh
xor bl, dh
xor ah, dh
xor ch, dh
mov byte [ebp - 0x2e], ch
jmp 0x1002548d
mov ch, 0x38
mov byte [ebp - 0x2e], 0
mov al, 0x1d
mov byte [ebp - 0x34], ch
mov cl, 0x5c
mov byte [ebp - 0x2e], 0
mov bl, al
mov dl, 2
mov ah, cl
xor al, ch
xor cl, ch
xor dl, ch
xor bl, ch
xor ah, ch
sub esp, 0x18
mov byte [ebp - 0x33], al
mov byte [ebp - 0x2f], ah
lea eax, [ebp - 0x33]
mov byte [ebp - 0x32], cl
mov ecx, esp
push eax
mov byte [ebp - 0x31], dl
mov byte [ebp - 0x30], bl
call fcn.10004e00
lea eax, [ebp - 0x68]
push eax
call fcn.10004670
add esp, 0x24
lea ecx, [ebp - 0x28]
push eax
call fcn.1000a950
lea ecx, [ebp - 0x68]
call fcn.10004790
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
movaps xmm0, xmmword [str.0cDQTYW]
cmovae eax, dword [ebp - 0x28]
xor ecx, ecx
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x6d43156b
mov byte [ebp - 0x3c], 0
nop dword [eax + eax]
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x13
jb 0x100254f0
sub esp, 0x18
mov byte [ebp - 0x3c], 0
lea eax, [ebp - 0x4f]
mov ecx, esp
push eax
call fcn.10004e00
lea eax, [ebp - 0x68]
push eax
call fcn.10004670
add esp, 0x20
mov ebx, eax
mov byte [ebp - 4], 1
mov edi, dword [esi + 8]
test edi, edi
je 0x1002553e
push 4
push edi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x1002553e
push ebx
mov ecx, edi
call dword [0x100adae4]
mov eax, dword [ebp - 0x54]
cmp eax, 0x10
jb 0x10025553
inc eax
lea ecx, [ebp - 0x68]
push eax
push dword [ebp - 0x68]
call fcn.10004bb0
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x14]
cmp eax, 0x10
jb 0x1002556f
inc eax
lea ecx, [ebp - 0x28]
push eax
push dword [ebp - 0x28]
call fcn.10004bb0
cmp dword [esi + 0x24], 0
jg 0x10025580
mov byte [esi + 0x20], 0
mov dword [esi + 0x24], 0
mov al, byte [esi + 0x21]
test al, al
je 0x10025791
movzx eax, word [esi + 0x28]
test ax, ax
jle 0x10025599
dec eax
mov word [esi + 0x28], ax
movzx edi, word [esi + 0x28]
mov eax, edi
test ax, ax
js 0x10025780
movsx eax, di
mov ecx, 0xe10
cdq
idiv ecx
mov eax, 0x88888889
mov dword [ebp - 0x14], 0xf
mov ecx, edx
mov dword [ebp - 0x18], 0
imul ecx
mov byte [ebp - 0x28], 0
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
movzx ecx, ax
mov eax, edi
cwde
mov edi, 0x3c
cdq
idiv edi
movzx eax, dx
mov dword [ebp - 4], 2
push eax
push ecx
cmp ecx, 0xa
jae 0x1002565c
sub esp, 0x18
cmp eax, 0xa
jae 0x10025632
mov bh, 7
mov byte [ebp - 0x2c], 0
mov al, 0x37
mov byte [ebp - 0x34], bh
mov cl, 0x22
mov byte [ebp - 0x2c], 0
mov dl, 0x63
mov ah, al
mov ch, cl
mov bl, 0x3d
mov dh, dl
xor ch, bh
xor al, bh
mov byte [ebp - 0x2e], ch
xor cl, bh
xor dl, bh
xor bl, bh
xor ah, bh
xor dh, bh
mov byte [ebp - 0x2d], dh
jmp 0x100256ab
mov dh, 0x16
mov byte [ebp - 0x2d], 0
mov cl, 0x33
mov byte [ebp - 0x34], dh
mov dl, 0x72
mov byte [ebp - 0x2d], 0
mov ah, cl
mov al, 0x26
mov bl, 0x2c
mov ch, dl
xor al, dh
xor cl, dh
xor dl, dh
xor bl, dh
xor ah, dh
xor ch, dh
mov byte [ebp - 0x2e], ch
jmp 0x100256ab
cmp eax, 0xa
jae 0x10025687
mov dh, 0x64
mov byte [ebp - 0x2d], 0
mov al, 0x41
mov byte [ebp - 0x34], dh
xor cl, cl
mov ah, al
mov dl, 0x5e
mov bl, 0x54
xor ch, ch
xor al, dh
xor cl, dh
xor dl, dh
xor bl, dh
xor ah, dh
xor ch, dh
mov byte [ebp - 0x2e], ch
jmp 0x100256a8
mov ch, 0x22
mov byte [ebp - 0x2e], 0
mov al, 7
mov byte [ebp - 0x34], ch
mov cl, 0x46
mov byte [ebp - 0x2e], 0
mov bl, al
mov dl, 0x18
mov ah, cl
xor al, ch
xor cl, ch
xor dl, ch
xor bl, ch
xor ah, ch
sub esp, 0x18
mov byte [ebp - 0x33], al
mov byte [ebp - 0x2f], ah
lea eax, [ebp - 0x33]
mov byte [ebp - 0x32], cl
mov ecx, esp
push eax
mov byte [ebp - 0x31], dl
mov byte [ebp - 0x30], bl
call fcn.10004e00
lea eax, [ebp - 0x68]
push eax
call fcn.10004670
add esp, 0x24
lea ecx, [ebp - 0x28]
push eax
call fcn.1000a950
lea ecx, [ebp - 0x68]
call fcn.10004790
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
movaps xmm0, xmmword [str..KCOG_G_I]
cmovae eax, dword [ebp - 0x28]
xor ecx, ecx
push eax
movups xmmword [ebp - 0x50], xmm0
mov dword [ebp - 0x40], 0x5d0b750e
mov word [ebp - 0x3c], 0x73
mov al, byte [ebp - 0x50]
xor byte [ebp + ecx - 0x4f], al
inc ecx
cmp ecx, 0x14
jb 0x10025708
sub esp, 0x18
mov byte [ebp - 0x3b], 0
lea eax, [ebp - 0x4f]
mov ecx, esp
push eax
call fcn.10004e00
lea eax, [ebp - 0x68]
push eax
call fcn.10004670
add esp, 0x20
mov ebx, eax
mov byte [ebp - 4], 3
mov edi, dword [esi + 0xc]
test edi, edi
je 0x10025756
push 4
push edi
call dword [sym.imp.KERNEL32.dll_IsBadReadPtr]
test eax, eax
jne 0x10025756
push ebx
mov ecx, edi
call dword [0x100adae4]
mov eax, dword [ebp - 0x54]
cmp eax, 0x10
jb 0x1002576b
inc eax
lea ecx, [ebp - 0x68]
push eax
push dword [ebp - 0x68]
call fcn.10004bb0
mov eax, dword [ebp - 0x14]
cmp eax, 0x10
jb 0x10025780
inc eax
lea ecx, [ebp - 0x28]
push eax
push dword [ebp - 0x28]
call fcn.10004bb0
cmp word [esi + 0x28], 0
jg 0x10025791
xor eax, eax
mov byte [esi + 0x21], 0
mov word [esi + 0x28], ax
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.10059ed0
mov esp, ebp
pop ebp
ret