Function at 0x1000fae0
Capabilities:
Generate random numbers via winapi

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x94
mov eax, dword [section..data]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
mov ebx, ecx
mov byte [ebp - 0x8b], dl
push esi
push edi
mov byte [ebp - 0x89], 0
test byte [ebx + 0xc3], 2
je 0x1000fd88
mov al, byte [ebx + 0x370]
mov byte [ebp - 0x8a], al
movzx eax, word [ebx + 0xd2]
mov dword [ebp - 0x90], eax
movzx eax, byte [0x1005858c]
add eax, 0x28
push eax
push 0
push dword [0x10059a38]
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov esi, eax
lea edi, [esi + 0x28]
mov dword [ebp - 0x94], edi
test esi, esi
je 0x1000fd4b
mov dword [esi + 0x14], ebx
lea ecx, [ebx + 0xcc]
xorps xmm0, xmm0
movups xmmword [esi + 0x18], xmm0
mov al, byte [0x1005858c]
mov byte [esi + 0x19], al
movzx eax, byte [0x1005858b]
test ecx, ecx
je 0x1000fb87
push eax
push ecx
push edi
call fcn.10049810
add esp, 0xc
jmp 0x1000fb93
push 2
push eax
push edi
push 0
call dword [sym.imp.bcrypt.dll_BCryptGenRandom]
movzx eax, byte [0x1005858b]
add edi, eax
mov eax, dword [ebp - 0x90]
mov word [edi], ax
add edi, 2
mov al, byte [ebp - 0x8a]
test al, al
je 0x1000fbd6
movzx eax, al
push eax
mov dword [ebp - 0x90], eax
lea eax, [ebx + 0x372]
push eax
push edi
call fcn.10049810
mov ecx, dword [ebp - 0x90]
add esp, 0xc
add edi, ecx
jmp 0x1000fbd8
xor ecx, ecx
push 2
mov eax, 7
sub eax, ecx
push eax
push edi
push 0
call dword [sym.imp.bcrypt.dll_BCryptGenRandom]
mov ecx, dword [ebx + 0x128]
mov edx, esi
mov edi, dword [ebp - 0x94]
call fcn.10005600
test al, al
jne 0x1000fc8b
push esi
push 0
push dword [0x10059a38]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov al, byte [ebp - 0x89]
inc al
mov byte [ebp - 0x89], al
cmp al, 8
ja 0x1000fc66
test byte [0x10059abc], 1
je 0x1000fb12
push str.CID_collision__trying_again
push 0xffffffffffffffff
lea eax, [ebp - 0x88]
push 0x80
push eax
call fcn.100015f0
lea eax, [ebp - 0x88]
mov edx, 0x1004c9b0
push eax
push ebx
call fcn.10001280
add esp, 0x18
jmp 0x1000fb12
test byte [0x10059abb], 4
je 0x1000fd6e
push str.Too_many_CID_collisions
push ebx
mov edx, 0x1004c7e0
call fcn.10001280
add esp, 8
jmp 0x1000fd6e
test byte [0x10059aba], 0x80
je 0x1000fcae
movzx eax, byte [esi + 0x19]
mov edx, 0x1004cea8
push edi
push eax
push dword [esi + 0x24]
push dword [esi + 0x20]
push ebx
call fcn.1000d210
add esp, 0x14
mov eax, dword [ebx + 0xf0]
mov ecx, dword [ebx + 0xf4]
mov dword [esi + 0x24], ecx
mov dword [esi + 0x20], eax
add dword [ebx + 0xf0], 1
adc dword [ebx + 0xf4], 0
cmp dword [esi + 0x24], 0
ja 0x1000fcda
cmp dword [esi + 0x20], 0
jbe 0x1000fcee
or byte [esi + 0x18], 2
lea ecx, [ebx + 0xa70]
mov edx, 0x100
call fcn.1002f8f0
add ebx, 0x360
cmp byte [ebp - 0x8b], 0
je 0x1000fd1d
or byte [esi + 0x18], 1
lea ecx, [esi + 0x10]
mov eax, dword [ebx]
mov dword [ecx], eax
mov eax, esi
mov dword [ebx], ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100483f7
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebx]
test ecx, ecx
je 0x1000fd2d
mov eax, dword [ecx]
mov ebx, ecx
mov ecx, eax
test eax, eax
jne 0x1000fd23
lea eax, [esi + 0x10]
mov dword [ebx], eax
mov dword [eax], 0
mov eax, esi
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.100483f7
mov esp, ebp
pop ebp
ret
test byte [0x10059ab8], 2
je 0x1000fd6e
movzx eax, byte [0x1005858c]
add eax, 0x28
push 0
push eax
push str.new_Src_CID
call fcn.10001500
add esp, 0xc
push 0
push 0
push 0xffffffffffffffff
push 0x80410003
mov edx, 0x12
mov ecx, ebx
call fcn.10010570
add esp, 0x10
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.100483f7
mov esp, ebp
pop ebp
ret