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

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4ba9d8
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 0x474d43
push 0
push 0
push str.GetOptionVal_47
call sub.MFC42.DLL_AfxMessageBox_1
call fcn.004764f0
push 1
push 0x4e7698
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 + 0x4e76ac]
mov dword [esp + 0x20], ebx
cmp eax, esi
je 0x474db6
push ecx
mov ecx, dword [ebx + 0x4e76b0]
mov eax, esp
mov dword [esp + 0x20], esp
lea edx, [esp + 0x20]
mov dword [eax], ecx
lea eax, [esp + 0x1c]
push edx
push eax
call sub.MFC42.DLL_CTime::GetTickCount
mov ecx, eax
call fcn.00427350
cmp dword [eax], 0x78
jl 0x474e54
cmp dword [0x4e7fd4], esi
jne 0x474e54
mov dword [ebx + 0x4e76ac], esi
mov eax, dword [ebx + 0x4e76ac]
mov ebp, 1
test eax, eax
jne 0x474f5b
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 0x474e9b
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 + 0x4e4684]
push 0
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x474e88
cmp dword [esp + 0x1c], 4
jne 0x474e5f
mov ecx, dword [esp + 0x18]
cmp ecx, 4
ja 0x474e88
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 0x474e88
mov esi, dword [ebx + 0x4e76bc]
jmp 0x4751a8
xor eax, eax
cmp byte [eax + ebx], 0
je 0x474e6d
inc eax
cmp eax, 0x64
jl 0x474e61
cmp eax, 0x64
jne 0x474e76
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 0x474f4e
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 0x474f4a
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 + 0x4e4684]
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x474f3f
cmp dword [esp + 0x1c], 4
jne 0x474f1a
mov ecx, dword [esp + 0x18]
cmp ecx, 4
ja 0x474f3f
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 0x474f3f
xor eax, eax
cmp byte [eax + ebx], 0
je 0x474f28
inc eax
cmp eax, 0x64
jl 0x474f1c
cmp eax, 0x64
jne 0x474f31
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.0x474f6f.27
xor ecx, ecx
mov cl, byte [eax + 0x475238]
jmp dword [ecx*4 + 0x4751d0]
test esi, esi
jne case.0x474f6f.27
jmp 0x475170
cmp esi, 0x1f4
jle 0x474f95
mov esi, 0xf
jmp case.0x474f6f.27
cmp esi, 0xf
jge case.0x474f6f.27
mov esi, 0xf
jmp case.0x474f6f.27
cmp esi, 0x1f4
jle 0x474fba
mov esi, 0x1e
jmp case.0x474f6f.27
cmp esi, 0xf
jge case.0x474f6f.27
mov esi, 0x1e
jmp case.0x474f6f.27
cmp esi, 0x5a
jge 0x474fdc
mov esi, 0x5a
jmp case.0x474f6f.27
cmp esi, 0x3e7
jle case.0x474f6f.27
mov esi, 0x5a
jmp case.0x474f6f.27
test esi, esi
jl 0x475006
test ebp, ebp
jne 0x475006
cmp esi, 0x3e7
jle case.0x474f6f.27
mov esi, 0x14
jmp case.0x474f6f.27
test esi, esi
jl 0x475024
test ebp, ebp
jne 0x475024
cmp esi, 0x3e7
jle case.0x474f6f.27
mov esi, 0x1e
jmp case.0x474f6f.27
cmp esi, 1
je case.0x474f6f.27
xor esi, esi
jmp case.0x474f6f.27
cmp esi, 1
jl 0x475170
cmp esi, 0xffff
jle case.0x474f6f.27
jmp 0x475170
cmp esi, 1
jl 0x475069
cmp esi, 0xffff
jle case.0x474f6f.27
mov esi, 0xffff
jmp case.0x474f6f.27
test esi, esi
jg case.0x474f6f.27
mov esi, 0x708
jmp case.0x474f6f.27
test ebp, ebp
jne 0x475096
test esi, esi
jl 0x475096
cmp esi, 3
jle case.0x474f6f.27
xor esi, esi
jmp case.0x474f6f.27
test ebp, ebp
jne 0x475170
test esi, esi
jl 0x475170
cmp esi, 3
jle case.0x474f6f.27
jmp 0x475170
test ebp, ebp
jne 0x4750cf
test esi, esi
jl 0x4750cf
cmp esi, 0xf423f
jle case.0x474f6f.27
mov esi, 0x400
jmp case.0x474f6f.27
test ebp, ebp
jne 0x4750eb
cmp esi, 1
jl 0x4750eb
cmp esi, 0xa
jle case.0x474f6f.27
mov esi, 2
jmp case.0x474f6f.27
test esi, esi
jl 0x4750fe
cmp esi, 5
jle case.0x474f6f.27
xor esi, esi
jmp case.0x474f6f.27
test ebp, ebp
jne 0x47510a
test esi, esi
jg case.0x474f6f.27
mov esi, 0xa
jmp case.0x474f6f.27
test ebp, ebp
je case.0x474f6f.27
jmp 0x475170
test ebp, ebp
je case.0x474f6f.27
mov esi, 0x20
jmp case.0x474f6f.27
test esi, esi
jl 0x47512b
cmp esi, 1
jle case.0x474f6f.27
xor esi, esi
jmp case.0x474f6f.27
test ebp, ebp
jne 0x47513c
test esi, esi
jl 0x47513c
cmp esi, 2
jle case.0x474f6f.27
or esi, 0xffffffff
jmp case.0x474f6f.27
test ebp, ebp
jne 0x47514e
test esi, esi
jl 0x47514e
cmp esi, 2
jle case.0x474f6f.27
xor esi, esi
jmp case.0x474f6f.27
test ebp, ebp
jne 0x475160
cmp esi, 1
jl 0x475160
cmp esi, 0x48
jle case.0x474f6f.27
xor esi, esi
jmp case.0x474f6f.27
test ebp, ebp
je case.0x474f6f.27
xor esi, esi
jmp case.0x474f6f.27
test ebp, ebp
je case.0x474f6f.27
mov esi, 1
mov eax, dword [ebx + 0x4e76ac]
test eax, eax
jne 0x4751a8
lea edx, [esp + 0x40]
mov edi, 1
push edx
mov dword [ebx + 0x4e76ac], edi
call sub.MFC42.DLL_CTime::GetTickCount
mov eax, dword [eax]
mov dword [ebx + 0x4e76b0], eax
mov dword [ebx + 0x4e76bc], esi
mov dword [ebx + 0x4e76b4], 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