Function at 0x1000dff0
Capabilities:
Generate random numbers via winapi

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x30
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x2c], eax
push esi
mov esi, dword [ebp + 8]
lea eax, [esp + 0x20]
push edi
mov edi, dword [ebp + 0xc]
push eax
mov dword [esp + 0x1c], edx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x14], esi
mov dword [esp + 0x24], edi
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessorNumberEx]
movzx ecx, word [esp + 0x24]
mov eax, dword [0x10059aa8]
movzx edx, byte [esp + 0x26]
add dx, word [eax + ecx*8 + 4]
movzx ecx, word [0x10058586]
movzx eax, dx
xor edx, edx
div ecx
mov dword [edi], 0
movzx ecx, word [0x10058586]
movzx eax, dx
xor edx, edx
mov edi, eax
test esi, esi
je 0x1000e065
movzx eax, word [esi + 0xe]
div ecx
push 2
push 2
lea eax, [esp + 0x30]
mov esi, edx
push eax
push 0
call dword [sym.imp.bcrypt.dll_BCryptGenRandom]
mov eax, dword [0x10058588]
not eax
imul edi, edi, 0x1c0
and ax, word [esp + 0x28]
or ax, si
movzx eax, ax
mov dword [esp + 0xc], eax
add edi, dword [0x100585c8]
push edi
call dword [sym.imp.KERNEL32.dll_InterlockedPopEntrySList]
mov esi, eax
mov dword [esp + 0x28], esi
test esi, esi
jne 0x1000e100
mov esi, dword [edi + 0x14]
mov ecx, esi
push edi
push dword [edi + 0xc]
push dword [edi + 8]
call dword [0x1004b298]
call esi
mov esi, eax
mov dword [esp + 0x34], eax
add esp, 0xc
test esi, esi
jne 0x1000e100
test byte [0x10059ab8], 2
je 0x1000e0ea
push eax
push 0xc70
push str.connection
call fcn.10001500
add esp, 0xc
mov eax, 0x8007000e
pop edi
pop esi
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.100483f7
mov esp, ebp
pop ebp
ret
push 0xc70
push 0
push esi
call fcn.10049330
add esp, 0xc
xor ecx, ecx
push 0
push 1
call fcn.10004ab0
push 0
push 1
mov ecx, 4
call fcn.10004ab0
add esp, 0x10
mov esi, 0x10058590
mov eax, dword [0x10058590]
mov edi, eax
mov edx, dword [0x10058594]
add edi, 1
mov ecx, edx
mov dword [esp + 8], eax
mov dword [esp + 0x14], edx
adc ecx, 0
push ebx
mov ebx, edi
lock cmpxchg8b qword [esi]
mov edi, ebx
pop ebx
mov ecx, dword [esp + 8]
cmp eax, ecx
jne 0x1000e131
mov eax, dword [esp + 0x14]
cmp edx, eax
jne 0x1000e131
mov esi, dword [esp + 0x28]
mov dword [esi + 0xb20], ecx
mov dword [esi + 0xb24], eax
test byte [0x10059ab9], 0x40
je 0x1000e19b
push eax
xor eax, eax
mov edx, 0x1004d068
cmp dword [esp + 0x14], eax
push ecx
setne al
push eax
push esi
call fcn.1000d030
add esp, 0x10
or byte [esi + 0xc0], 1
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
neg ecx
mov word [esi + 0xd2], ax
mov al, byte [esi + 0xc3]
sbb cl, cl
or byte [esi + 0xc4], 4
and al, 0xfd
and cl, 2
mov dword [esi + 0xb8], 1
or cl, al
lea eax, [esp + 0x28]
push eax
mov byte [esi + 0xc3], cl
call dword [sym.imp.KERNEL32.dll_QueryPerformanceCounter]
mov eax, dword [esp + 0x2c]
mov ecx, 0xf4240
push dword [0x10059a9c]
mul ecx
push dword [0x10059a98]
mov ecx, eax
mov eax, edx
push eax
push ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x1c], eax
call fcn.1004a350
push dword [0x10059a9c]
mov ecx, eax
mov edx, 0xf4240
mov eax, dword [esp + 0x2c]
xor edi, edi
push dword [0x10059a98]
mul edx
add edi, eax
adc ecx, edx
push ecx
push edi
call fcn.1004a2e0
push dword [0x10059a9c]
mov edi, eax
mov dword [esp + 0xc], edx
push dword [0x10059a98]
push dword [esp + 0x14]
push dword [esp + 0x20]
call fcn.1004a2e0
mov ecx, dword [esp + 8]
add edi, 0
mov edx, 0x100584c8
mov dword [esi + 0xb30], edi
adc ecx, eax
mov byte [esi + 0xd5], 4
mov dword [esi + 0xb34], ecx
lea eax, [esi + 0x3dc]
lea ecx, [esi + 0x30]
mov word [esi + 0xda], 0x208
mov byte [esi + 0xdc], 2
mov dword [esi + 0x4d8], 3
mov dword [esi + 0x4dc], 0
mov dword [esi + 0x3e0], eax
call fcn.1001ab90
lea eax, [esi + 0x3e4]
mov dword [esi + 0x30], 0
push eax
mov dword [esi + 0x34], 0
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea eax, [esi + 0x364]
mov dword [esi + 0xae0], 0x20000
mov dword [eax + 4], eax
mov dword [eax], eax
lea eax, [esi + 0x67c]
mov dword [eax + 4], eax
mov dword [eax], eax
lea eax, [esi + 0x400]
push eax
mov dword [esi + 0xae4], 0
mov byte [esi + 0x3fc], 0
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea eax, [esi + 0x418]
mov dword [eax + 4], eax
mov dword [eax], eax
lea ecx, [esi + 0x688]
lea eax, [esi + 0xabc]
mov dword [esi + 0xa94], 0
mov dword [eax + 4], eax
lea edx, [esi + 0x30]
mov dword [eax], eax
mov eax, dword [esi + 0x70]
mov dword [esi + 0xa90], eax
call fcn.10038b90
or byte [esi + 0xb12], 1
lea eax, [esi + 0x850]
mov dword [eax], 0
mov ecx, 0xffff
mov dword [esi + 0x854], eax
lea eax, [esi + 0x858]
mov dword [eax], 0
mov dword [esi + 0x85c], eax
xor eax, eax
mov word [esi + 0x860], ax
lea eax, [esi + 0xae8]
mov word [eax + 0x28], cx
mov dword [eax + 4], eax
mov dword [eax + 8], eax
add eax, 0x10
push eax
mov dword [esi + 0x808], 0
mov dword [esi + 0x81c], 0
mov dword [esi + 0x830], 0
mov dword [esi + 0x834], 0
mov dword [esi + 0x838], 0
mov dword [esi + 0x83c], 0
mov dword [esi + 0x840], 0
mov dword [esi + 0x844], 0
mov dword [esi + 0x820], 0
mov dword [esi + 0x824], 0
mov dword [esi + 0x828], 0
call dword [sym.imp.KERNEL32.dll_InitializeCriticalSection]
lea eax, [esi + 0x598]
mov dword [esi + 0x58c], 0
mov dword [esi + 0x588], eax
lea eax, [esi + 0x868]
mov dword [esi + 0x590], 8
mov dword [esi + 0x594], 0x1000
mov dword [esp + 0x28], 0
mov dword [esp + 8], eax
nop dword [eax]
lea eax, [esp + 0x24]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessorNumberEx]
movzx ecx, word [esp + 0x24]
mov eax, dword [0x10059aa8]
movzx edx, byte [esp + 0x26]
add dx, word [eax + ecx*8 + 4]
movzx ecx, word [0x10058586]
movzx eax, dx
xor edx, edx
div ecx
movzx eax, dx
imul ecx, eax, 0x1c0
mov eax, dword [0x100585c8]
add eax, 0x40
add eax, ecx
push eax
mov dword [esp + 0x10], eax
call dword [sym.imp.KERNEL32.dll_InterlockedPopEntrySList]
mov edi, eax
test edi, edi
jne 0x1000e4b6
mov eax, dword [esp + 0xc]
push eax
push dword [eax + 0xc]
mov edi, dword [eax + 0x14]
mov ecx, edi
push dword [eax + 8]
call dword [0x1004b298]
call edi
mov edi, eax
add esp, 0xc
test edi, edi
je 0x1000e996
push 0x198
push 0
push edi
call fcn.10049330
mov ecx, dword [esp + 0x34]
lea eax, [edi + 0x38]
mov dword [edi], ecx
add esp, 0xc
mov dword [edi + 0x20], esi
inc ecx
mov dword [edi + 0x28], eax
lea eax, [edi + 0xc8]
mov dword [edi + 0x2c], 0
mov dword [edi + 0x30], 8
mov dword [edi + 0x34], 0x1000
mov dword [edi + 0xb8], eax
mov eax, dword [esp + 8]
mov dword [edi + 0xbc], 0
mov dword [edi + 0xc0], 8
mov dword [edi + 0xc4], 0x800
mov dword [eax], edi
add eax, 4
mov dword [esp + 0x28], ecx
mov dword [esp + 8], eax
cmp ecx, 3
jb 0x1000e440
lea edi, [esi + 0x100]
mov ecx, esi
mov edx, edi
call fcn.1002ee30
or byte [edi + 1], 2
mov eax, dword [esp + 0x10]
mov byte [esi + 0xd6], 1
mov dword [esi + 0x378], 0
mov dword [esi + 0x380], 0xffffffff
mov dword [esi + 0x384], 0xffffffff
mov dword [esi + 0x388], 1
mov dword [esi + 0x390], 0xffffffff
mov dword [esi + 0x394], 0xffffffff
mov dword [esi + 0x398], 2
mov dword [esi + 0x3a0], 0xffffffff
mov dword [esi + 0x3a4], 0xffffffff
mov dword [esi + 0x3a8], 3
mov dword [esi + 0x3b0], 0xffffffff
mov dword [esi + 0x3b4], 0xffffffff
mov dword [esi + 0x3b8], 4
mov dword [esi + 0x3c0], 0xffffffff
mov dword [esi + 0x3c4], 0xffffffff
mov dword [esi + 0x3c8], 5
mov dword [esi + 0x3d0], 0xffffffff
mov dword [esi + 0x3d4], 0xffffffff
test eax, eax
je 0x1000e867
mov dword [esi], 4
mov cx, word [0x1005853a]
cmp cx, 1
jne 0x1000e653
push 2
push 1
lea eax, [esi + 0xcc]
push eax
push 0
call dword [sym.imp.bcrypt.dll_BCryptGenRandom]
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 4]
cmp word [ecx + 0x20], 2
jne 0x1000e648
mov ecx, dword [ecx + 0x24]
mov dword [esi + 0xcd], ecx
jmp 0x1000e67b
mov ecx, dword [ecx + 0x34]
mov dword [esi + 0xcd], ecx
jmp 0x1000e67b
cmp cx, 2
jne 0x1000e67b
push 2
push 1
lea eax, [esi + 0xcc]
push eax
push 0
call dword [sym.imp.bcrypt.dll_BCryptGenRandom]
mov eax, dword [0x10058530]
mov dword [esi + 0xcd], eax
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x28]
mov eax, dword [eax + 1]
mov dword [esi + 0xb2c], eax
test byte [0x10059ab9], 0x40
je 0x1000e69f
push eax
push esi
mov edx, 0x1004cf38
call fcn.10004850
add esp, 8
or byte [esi + 0xc1], 8
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 4]
movups xmm0, xmmword [eax]
movups xmmword [edi + 0x2c], xmm0
movups xmm0, xmmword [eax + 0x10]
movups xmmword [edi + 0x3c], xmm0
movups xmm0, xmmword [eax + 0x20]
movups xmmword [edi + 0x4c], xmm0
movq xmm0, qword [eax + 0x30]
movq qword [edi + 0x5c], xmm0
mov eax, dword [eax + 0x38]
mov dword [edi + 0x64], eax
or byte [esi + 0xc2], 0x18
mov al, byte [0x10059ab9]
test al, 0x40
je 0x1000e715
lea eax, [edi + 0x4c]
mov edx, 0x1004d048
push eax
push 0x1c
push esi
call fcn.10004960
mov al, byte [0x10059ab9]
add esp, 0xc
test al, 0x40
je 0x1000e715
lea eax, [edi + 0x30]
mov edx, 0x1004c9a0
push eax
push 0x1c
push esi
call fcn.10004960
add esp, 0xc
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x30]
mov al, byte [eax + 0x3b]
mov byte [esp + 0x28], al
movzx eax, al
mov dword [esp + 0xc], eax
add eax, 0x28
push eax
push 0
push dword [0x10059a38]
mov dword [esp + 0x20], ecx
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov dword [esp + 8], eax
test eax, eax
je 0x1000e777
mov cl, byte [esp + 0x28]
xorps xmm0, xmm0
movups xmmword [eax + 0x18], xmm0
mov byte [eax + 0x19], cl
test cl, cl
je 0x1000e777
push dword [esp + 0xc]
add eax, 0x28
push dword [esp + 0x18]
push eax
call fcn.10049810
mov eax, dword [esp + 0x14]
add esp, 0xc
mov dword [edi + 0x68], eax
jmp 0x1000e782
mov dword [edi + 0x68], eax
test eax, eax
je 0x1000e9b3
or byte [eax + 0x18], 8
lea edx, [esi + 0x364]
mov ecx, dword [edi + 0x68]
mov eax, dword [edx + 4]
mov dword [ecx], edx
mov dword [ecx + 4], eax
mov dword [eax], ecx
mov dword [edx + 4], ecx
test byte [0x10059aba], 0x80
je 0x1000e7c5
mov ecx, dword [edi + 0x68]
mov edx, 0x1004c8e0
lea eax, [ecx + 0x28]
push eax
movzx eax, byte [ecx + 0x19]
push eax
push dword [ecx + 0x24]
push dword [ecx + 0x20]
push esi
call fcn.1000d210
add esp, 0x14
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x2c]
mov al, byte [eax + 0x3a]
mov byte [esp + 0x28], al
movzx eax, al
mov dword [esp + 0xc], eax
add eax, 0x28
push eax
push 0
push dword [0x10059a38]
mov dword [esp + 0x20], ecx
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov edi, eax
test edi, edi
je 0x1000e9b3
mov al, byte [esp + 0x28]
xorps xmm0, xmm0
mov dword [edi + 0x14], esi
movups xmmword [edi + 0x18], xmm0
mov byte [edi + 0x19], al
test al, al
je 0x1000e823
push dword [esp + 0xc]
lea eax, [edi + 0x28]
push dword [esp + 0x18]
push eax
call fcn.10049810
add esp, 0xc
or byte [edi + 0x18], 0x11
lea ecx, [edi + 0x10]
mov eax, dword [esi + 0x360]
mov dword [ecx], eax
mov dword [esi + 0x360], ecx
test byte [0x10059aba], 0x80
je 0x1000e92e
lea eax, [edi + 0x28]
mov edx, 0x1004cea8
push eax
movzx eax, byte [edi + 0x19]
push eax
push dword [edi + 0x24]
push dword [edi + 0x20]
push esi
call fcn.1000d210
add esp, 0x14
jmp 0x1000e92e
or byte [esi + 0xc1], 0x20
lea ecx, [esi + 0xc1]
push 0x30
push 0
push dword [0x10059a38]
mov dword [esi], 3
or byte [edi + 1], 0x20
mov dword [esp + 0x30], ecx
mov dword [edi + 0x6c], 0xffffffff
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov dword [esp + 0xc], eax
test eax, eax
je 0x1000e991
xorps xmm0, xmm0
push 2
movups xmmword [eax + 0x18], xmm0
mov byte [eax + 0x19], 8
add eax, 0x28
push 8
push eax
push 0
call dword [sym.imp.bcrypt.dll_BCryptGenRandom]
mov eax, dword [esp + 0xc]
lea edx, [esi + 0x364]
mov dword [edi + 0x68], eax
or byte [eax + 0x18], 8
inc byte [esi + 0xd4]
mov ecx, dword [edi + 0x68]
mov eax, dword [edx + 4]
mov dword [ecx], edx
mov dword [ecx + 4], eax
mov dword [eax], ecx
mov dword [edx + 4], ecx
test byte [0x10059aba], 0x80
je 0x1000e910
mov ecx, dword [edi + 0x68]
mov edx, 0x1004c8e0
lea eax, [ecx + 0x28]
push eax
movzx eax, byte [ecx + 0x19]
push eax
push dword [ecx + 0x24]
push dword [ecx + 0x20]
push esi
call fcn.1000d210
add esp, 0x14
or byte [esi + 0xc0], 2
test byte [0x10059aba], 4
je 0x1000e938
push esi
mov edx, 0x1004c950
call fcn.10001310
add esp, 4
lea eax, [esi + 0xc1]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
test eax, eax
je 0x1000e95b
mov dword [esi + 0x20], eax
test byte [0x10059aba], 2
je 0x1000e95b
push eax
push esi
mov edx, 0x1004d028
call fcn.10004850
add esp, 8
mov edx, dword [esp + 0x1c]
mov ecx, esi
call fcn.1000f480
test al, al
jne 0x1000e978
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x28], 0x8007139f
jmp 0x1000e9c1
mov eax, dword [esp + 0x20]
mov dword [eax], esi
xor eax, eax
pop edi
pop esi
mov ecx, dword [esp + 0x2c]
xor ecx, esp
call fcn.100483f7
mov esp, ebp
pop ebp
ret
mov dword [edi + 0x68], eax
jmp 0x1000e9b3
test byte [0x10059ab8], 2
je 0x1000e9b3
push 0
push 0x198
push str.packet_space
call fcn.10001500
add esp, 0xc
lea ecx, [esi + 0xc1]
mov dword [esp + 0x28], 0x8007000e
or byte [ecx], 1
lea edi, [esi + 0x868]
or byte [ecx], 2
mov eax, 3
mov dword [esp + 8], eax
mov ecx, dword [edi]
test ecx, ecx
je 0x1000e9eb
call fcn.100375b0
mov eax, dword [esp + 8]
mov dword [edi], 0
add edi, 4
sub eax, 1
mov dword [esp + 8], eax
jne 0x1000e9d6
cmp dword [esp + 0x10], 0
je 0x1000ea24
mov eax, dword [esi + 0x360]
test eax, eax
je 0x1000ea24
add eax, 0xfffffff0
push eax
push 0
push dword [0x10059a38]
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov dword [esi + 0x360], 0
mov ecx, dword [esi + 0x364]
lea edi, [esi + 0x364]
cmp ecx, edi
je 0x1000ea50
mov eax, dword [ecx]
push ecx
push 0
push dword [0x10059a38]
mov dword [edi], eax
mov dword [eax + 4], edi
call dword [sym.imp.KERNEL32.dll_HeapFree]
mov ecx, dword [edi]
cmp ecx, edi
jne 0x1000ea34
or ecx, 0xffffffff
lea eax, [esi + 0xb8]
lock xadd dword [eax], ecx
jne 0x1000ea66
mov ecx, esi
call fcn.1000ea80
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x28]
pop edi
pop esi
xor ecx, esp
call fcn.100483f7
mov esp, ebp
pop ebp
ret