Function at 0x4746a0
Capabilities:
Get number of processors
Query or enumerate registry value

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4b9f48
push eax
mov dword fs:[0], esp
sub esp, 0x20
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x40]
cmp edi, 0x2f
jne 0x4746d3
push 0
push 0
push str.GetOptionVal_47
call sub.MFC42.DLL_AfxMessageBox_1
call fcn.00475e80
push 1
push 0x4e65d8
lea ecx, [esp + 0x2c]
call sub.MFC42.DLL_CSingleLock::CSingleLock
lea ebx, [edi + edi*4]
xor esi, esi
shl ebx, 2
mov dword [esp + 0x38], esi
mov dword [esp + 0x10], esi
mov eax, dword [ebx + 0x4e65ec]
mov dword [esp + 0x20], ebx
cmp eax, esi
je 0x474748
push ecx
mov ecx, dword [ebx + 0x4e65f0]
mov eax, esp
mov dword [esp + 0x20], esp
lea edx, [esp + 0x1c]
mov dword [eax], ecx
lea eax, [esp + 0x20]
push edx
push eax
call sub.MFC42.DLL_CTime::GetTickCount
mov ecx, eax
call fcn.00426ed0
cmp dword [esp + 0x18], 0x78
jl 0x4747e6
cmp dword [0x4e6f14], esi
jne 0x4747e6
mov dword [ebx + 0x4e65ec], esi
mov eax, dword [ebx + 0x4e65ec]
mov ebp, 1
test eax, eax
jne 0x4748ed
push 0xc8
call sub.MFC42.DLL_operatornew
add esp, 4
lea ecx, [esp + 0x14]
mov ebx, eax
mov dword [esp + 0x18], 0x64
push ecx
push str.Software8uftp
push reloc.WS2_32.dll_accept
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test eax, eax
jne 0x47482d
lea edx, [esp + 0x18]
lea ecx, [edi + edi*8]
push edx
lea eax, [esp + 0x20]
push ebx
push eax
mov eax, dword [esp + 0x20]
lea edx, [ecx*4 + 0x4e3654]
push 0
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x47481a
cmp dword [esp + 0x1c], 4
jne 0x4747f1
mov ecx, dword [esp + 0x18]
cmp ecx, 4
ja 0x47481a
mov edx, ecx
mov esi, ebx
lea edi, [esp + 0x10]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
xor ebp, ebp
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x10]
mov edi, dword [esp + 0x40]
jmp 0x47481a
mov esi, dword [ebx + 0x4e65fc]
jmp 0x474b3a
xor eax, eax
cmp byte [eax + ebx], 0
je 0x4747ff
inc eax
cmp eax, 0x64
jl 0x4747f3
cmp eax, 0x64
jne 0x474808
mov byte [ebx + 0x63], 0
push ebx
call dword [sym.imp.MSVCRT.dll_atoi]
mov esi, eax
add esp, 4
mov dword [esp + 0x10], esi
xor ebp, ebp
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test ebp, ebp
je 0x4748e0
mov ecx, 0x19
xor eax, eax
mov edi, ebx
rep stosd dword es:[edi], eax
lea ecx, [esp + 0x14]
push ecx
push str.Software8uftp
push reloc.WS2_32.dll_bind
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyA]
test eax, eax
jne 0x4748dc
lea edx, [esp + 0x18]
lea eax, [esp + 0x1c]
push edx
push ebx
push eax
mov eax, dword [esp + 0x4c]
push 0
lea ecx, [eax + eax*8]
mov eax, dword [esp + 0x24]
lea edx, [ecx*4 + 0x4e3654]
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x4748d1
cmp dword [esp + 0x1c], 4
jne 0x4748ac
mov ecx, dword [esp + 0x18]
cmp ecx, 4
ja 0x4748d1
mov edx, ecx
mov esi, ebx
lea edi, [esp + 0x10]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
xor ebp, ebp
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x10]
jmp 0x4748d1
xor eax, eax
cmp byte [eax + ebx], 0
je 0x4748ba
inc eax
cmp eax, 0x64
jl 0x4748ae
cmp eax, 0x64
jne 0x4748c3
mov byte [ebx + 0x63], 0
push ebx
call dword [sym.imp.MSVCRT.dll_atoi]
add esp, 4
mov esi, eax
xor ebp, ebp
mov eax, dword [esp + 0x14]
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov edi, dword [esp + 0x40]
push ebx
call sub.MFC42.DLL_operatordelete
mov ebx, dword [esp + 0x24]
add esp, 4
lea eax, [edi - 2]
cmp eax, 0x70
ja case.0x474901.27
xor ecx, ecx
mov cl, byte [eax + 0x474bc8]
jmp dword [ecx*4 + 0x474b60]
test esi, esi
jne case.0x474901.27
jmp 0x474b02
cmp esi, 0x1f4
jle 0x474927
mov esi, 0xf
jmp case.0x474901.27
cmp esi, 0xf
jge case.0x474901.27
mov esi, 0xf
jmp case.0x474901.27
cmp esi, 0x1f4
jle 0x47494c
mov esi, 0x1e
jmp case.0x474901.27
cmp esi, 0xf
jge case.0x474901.27
mov esi, 0x1e
jmp case.0x474901.27
cmp esi, 0x5a
jge 0x47496e
mov esi, 0x5a
jmp case.0x474901.27
cmp esi, 0x3e7
jle case.0x474901.27
mov esi, 0x5a
jmp case.0x474901.27
test esi, esi
jl 0x474998
test ebp, ebp
jne 0x474998
cmp esi, 0x3e7
jle case.0x474901.27
mov esi, 0x14
jmp case.0x474901.27
test esi, esi
jl 0x4749b6
test ebp, ebp
jne 0x4749b6
cmp esi, 0x3e7
jle case.0x474901.27
mov esi, 0x1e
jmp case.0x474901.27
cmp esi, 1
je case.0x474901.27
xor esi, esi
jmp case.0x474901.27
cmp esi, 1
jl 0x474b02
cmp esi, 0xffff
jle case.0x474901.27
jmp 0x474b02
cmp esi, 1
jl 0x4749fb
cmp esi, 0xffff
jle case.0x474901.27
mov esi, 0xffff
jmp case.0x474901.27
test esi, esi
jg case.0x474901.27
mov esi, 0x708
jmp case.0x474901.27
test ebp, ebp
jne 0x474a28
test esi, esi
jl 0x474a28
cmp esi, 3
jle case.0x474901.27
xor esi, esi
jmp case.0x474901.27
test ebp, ebp
jne 0x474b02
test esi, esi
jl 0x474b02
cmp esi, 3
jle case.0x474901.27
jmp 0x474b02
test ebp, ebp
jne 0x474a61
test esi, esi
jl 0x474a61
cmp esi, 0xf423f
jle case.0x474901.27
mov esi, 0x400
jmp case.0x474901.27
test ebp, ebp
jne 0x474a7d
cmp esi, 1
jl 0x474a7d
cmp esi, 0xa
jle case.0x474901.27
mov esi, 2
jmp case.0x474901.27
test esi, esi
jl 0x474a90
cmp esi, 5
jle case.0x474901.27
xor esi, esi
jmp case.0x474901.27
test ebp, ebp
jne 0x474a9c
test esi, esi
jg case.0x474901.27
mov esi, 0xa
jmp case.0x474901.27
test ebp, ebp
je case.0x474901.27
jmp 0x474b02
test ebp, ebp
je case.0x474901.27
mov esi, 0x20
jmp case.0x474901.27
test esi, esi
jl 0x474abd
cmp esi, 1
jle case.0x474901.27
xor esi, esi
jmp case.0x474901.27
test ebp, ebp
jne 0x474ace
test esi, esi
jl 0x474ace
cmp esi, 2
jle case.0x474901.27
or esi, 0xffffffff
jmp case.0x474901.27
test ebp, ebp
jne 0x474ae0
test esi, esi
jl 0x474ae0
cmp esi, 2
jle case.0x474901.27
xor esi, esi
jmp case.0x474901.27
test ebp, ebp
jne 0x474af2
cmp esi, 1
jl 0x474af2
cmp esi, 0x48
jle case.0x474901.27
xor esi, esi
jmp case.0x474901.27
test ebp, ebp
je case.0x474901.27
xor esi, esi
jmp case.0x474901.27
test ebp, ebp
je case.0x474901.27
mov esi, 1
mov eax, dword [ebx + 0x4e65ec]
test eax, eax
jne 0x474b3a
lea edx, [esp + 0x40]
mov edi, 1
push edx
mov dword [ebx + 0x4e65ec], edi
call sub.MFC42.DLL_CTime::GetTickCount
mov eax, dword [eax]
mov dword [ebx + 0x4e65f0], eax
mov dword [ebx + 0x4e65fc], esi
mov dword [ebx + 0x4e65f4], edi
lea ecx, [esp + 0x24]
mov dword [esp + 0x38], 0xffffffff
call sub.MFC42.DLL_CSingleLock::Unlock
mov ecx, dword [esp + 0x30]
mov eax, esi
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x2c
ret