Function at 0x1004ae10
Capabilities:
Access peb ldr_data
Encode data using xor
Get number of processors
Hash data using fnv
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
cmp dword [0x101e24d0], 0
je 0x1004b10c
mov eax, dword [0x101e1d08]
push ebx
push esi
xor esi, esi
push edi
test eax, eax
je 0x1004ae4c
xor edx, edx
mov ecx, dword [0x101e24d0]
mov al, 1
add ecx, edx
xchg byte [ecx], al
mov eax, dword [0x101e1d08]
inc esi
add edx, 0x14
cmp esi, eax
jb 0x1004ae33
xor edx, edx
test eax, eax
je 0x1004ae6e
xor ecx, ecx
mov eax, dword [0x101e24d0]
lea ecx, [ecx + 0x14]
inc edx
mov eax, dword [ecx + eax - 0xc]
mov byte [eax + 0x30], 1
mov eax, dword [0x101e1d08]
cmp edx, eax
jb 0x1004ae54
mov ebx, dword [sym.imp.KERNEL32.dll_ReleaseSemaphore]
mov ecx, 4
mov dword [ebp - 4], ecx
nop dword [eax]
xor edi, edi
test eax, eax
je 0x1004aeb2
xor esi, esi
nop dword [eax + eax]
mov eax, dword [0x101e24d0]
push 0
push 1
mov eax, dword [esi + eax + 8]
push dword [eax + 0x50]
call ebx
mov eax, dword [0x101e1d08]
lea esi, [esi + 0x14]
inc edi
cmp edi, eax
jb 0x1004ae90
mov ecx, dword [ebp - 4]
sub ecx, 1
mov dword [ebp - 4], ecx
jne 0x1004ae80
mov dword [ebp - 0xc], 0
test eax, eax
je 0x1004b0f1
xor ebx, ebx
mov dword [ebp - 4], ebx
nop
mov ecx, dword [0x101e26dc]
test ecx, ecx
jne 0x1004afa1
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
nop word [eax + eax]
mov ebx, dword [eax + 0x18]
mov dword [ebp - 0x1c], ebx
mov ecx, dword [ebx + 0x3c]
mov edx, dword [ecx + ebx + 0x78]
mov ecx, dword [ecx + ebx + 0x7c]
mov dword [ebp - 0x14], ecx
lea ecx, [edx + ebx]
mov dword [ebp - 0x14], ecx
cmp ecx, ebx
je 0x1004af78
mov edx, dword [ecx + 0x18]
test edx, edx
je 0x1004af78
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edx*4]
add ecx, ebx
nop dword [eax]
mov esi, dword [ecx - 4]
sub ecx, 4
add esi, ebx
mov dword [ebp - 0x10], ecx
dec edx
mov edi, 0x34508368
mov dword [ebp - 8], edx
mov bl, byte [esi]
inc esi
test bl, bl
je 0x1004af71
nop dword [eax + eax]
movsx edx, bl
lea esi, [esi + 1]
sub bl, 0x41
mov ecx, edx
or ecx, 0x20
cmp bl, 0x19
mov bl, byte [esi - 1]
cmova ecx, edx
xor ecx, edi
imul edi, ecx, 0x1000193
test bl, bl
jne 0x1004af40
mov edx, dword [ebp - 8]
cmp edi, 0xce290063
je 0x1004af7f
mov ecx, dword [ebp - 0x10]
mov ebx, dword [eax + 0x18]
test edx, edx
jne 0x1004af20
mov eax, dword [eax]
jmp 0x1004aef0
mov eax, dword [ebp - 0x14]
mov esi, dword [ebp - 0x1c]
mov ebx, dword [ebp - 4]
mov ecx, dword [eax + 0x1c]
mov eax, dword [eax + 0x24]
add ecx, esi
add eax, esi
movzx eax, word [eax + edx*2]
mov ecx, dword [ecx + eax*4]
add ecx, esi
mov dword [0x101e26dc], ecx
mov eax, dword [0x101e24d0]
mov eax, dword [ebx + eax + 0x10]
push dword [eax]
call ecx
mov ecx, dword [0x101e26e8]
test ecx, ecx
jne 0x1004b081
mov eax, dword fs:[0x30]
mov eax, dword [eax + 0xc]
mov eax, dword [eax + 0xc]
nop dword [eax + eax]
mov ebx, dword [eax + 0x18]
mov dword [ebp - 0x10], ebx
mov ecx, dword [ebx + 0x3c]
mov edx, dword [ecx + ebx + 0x78]
mov ecx, dword [ecx + ebx + 0x7c]
mov dword [ebp - 0x1c], ecx
lea ecx, [edx + ebx]
mov dword [ebp - 0x14], ecx
cmp ecx, ebx
je 0x1004b058
mov edx, dword [ecx + 0x18]
test edx, edx
je 0x1004b058
mov ecx, dword [ecx + 0x20]
lea ecx, [ecx + edx*4]
add ecx, ebx
nop dword [eax]
sub ecx, 4
dec edx
mov dword [ebp - 0x1c], ecx
mov edi, 0x3d52d02a
mov dword [ebp - 8], edx
mov ecx, dword [ecx]
add ecx, ebx
mov bl, byte [ecx]
inc ecx
test bl, bl
je 0x1004b04e
nop word [eax + eax]
movsx esi, bl
lea ecx, [ecx + 1]
sub bl, 0x41
mov edx, esi
or edx, 0x20
cmp bl, 0x19
mov bl, byte [ecx - 1]
cmova edx, esi
xor edx, edi
imul edi, edx, 0x1000193
test bl, bl
jne 0x1004b020
mov edx, dword [ebp - 8]
cmp edi, 0x65a43839
je 0x1004b05f
mov ecx, dword [ebp - 0x1c]
mov ebx, dword [eax + 0x18]
test edx, edx
jne 0x1004b000
mov eax, dword [eax]
jmp 0x1004afd0
mov eax, dword [ebp - 0x14]
mov esi, dword [ebp - 0x10]
mov ebx, dword [ebp - 4]
mov ecx, dword [eax + 0x1c]
mov eax, dword [eax + 0x24]
add ecx, esi
add eax, esi
movzx eax, word [eax + edx*2]
mov ecx, dword [ecx + eax*4]
add ecx, esi
mov dword [0x101e26e8], ecx
mov eax, dword [0x101e24d0]
push 0x64
mov eax, dword [ebx + eax + 0x10]
push dword [eax]
call ecx
cmp eax, 0x102
jne 0x1004b0a0
mov eax, dword [0x101e24d0]
mov al, byte [ebx + eax + 1]
mov eax, dword [0x101e24d0]
mov esi, dword [ebx + eax + 4]
test esi, esi
je 0x1004b0c4
push esi
call dword [sym.imp.KERNEL32.dll_DeleteCriticalSection]
push 0x18
push esi
call fcn.100b595a
mov eax, dword [0x101e24d0]
add esp, 8
push dword [ebx + eax + 0x10]
mov dword [ebx + eax + 4], 0
call fcn.101155e2
mov edx, dword [ebp - 0xc]
add ebx, 0x14
inc edx
mov dword [ebp - 4], ebx
add esp, 4
mov dword [ebp - 0xc], edx
cmp edx, dword [0x101e1d08]
jb 0x1004aed0
push dword [0x101e24d0]
call fcn.101155e2
add esp, 4
mov dword [0x101e24d0], 0
pop edi
pop esi
pop ebx
xor eax, eax
mov esp, ebp
pop ebp
ret