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

Disassembly:
mov eax, dword fs:[0]
push 0xffffffffffffffff
push 0x4bab08
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 0x475003
push 0
push 0
push str.GetOptionVal_47
call sub.MFC42.DLL_AfxMessageBox_1
call fcn.004767b0
push 1
push 0x4e66d8
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 + 0x4e66ec]
mov dword [esp + 0x20], ebx
cmp eax, esi
je 0x475078
push ecx
mov ecx, dword [ebx + 0x4e66f0]
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.00426e80
cmp dword [esp + 0x18], 0x78
jl 0x475116
cmp dword [0x4e7014], esi
jne 0x475116
mov dword [ebx + 0x4e66ec], esi
mov eax, dword [ebx + 0x4e66ec]
mov ebp, 1
test eax, eax
jne 0x47521d
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 0x47515d
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 + 0x4e36c4]
push 0
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x47514a
cmp dword [esp + 0x1c], 4
jne 0x475121
mov ecx, dword [esp + 0x18]
cmp ecx, 4
ja 0x47514a
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 0x47514a
mov esi, dword [ebx + 0x4e66fc]
jmp 0x47546a
xor eax, eax
cmp byte [eax + ebx], 0
je 0x47512f
inc eax
cmp eax, 0x64
jl 0x475123
cmp eax, 0x64
jne 0x475138
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 0x475210
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 0x47520c
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 + 0x4e36c4]
push edx
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExA]
test eax, eax
jne 0x475201
cmp dword [esp + 0x1c], 4
jne 0x4751dc
mov ecx, dword [esp + 0x18]
cmp ecx, 4
ja 0x475201
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 0x475201
xor eax, eax
cmp byte [eax + ebx], 0
je 0x4751ea
inc eax
cmp eax, 0x64
jl 0x4751de
cmp eax, 0x64
jne 0x4751f3
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.0x475231.27
xor ecx, ecx
mov cl, byte [eax + 0x4754f8]
jmp dword [ecx*4 + 0x475490]
test esi, esi
jne case.0x475231.27
jmp 0x475432
cmp esi, 0x1f4
jle 0x475257
mov esi, 0xf
jmp case.0x475231.27
cmp esi, 0xf
jge case.0x475231.27
mov esi, 0xf
jmp case.0x475231.27
cmp esi, 0x1f4
jle 0x47527c
mov esi, 0x1e
jmp case.0x475231.27
cmp esi, 0xf
jge case.0x475231.27
mov esi, 0x1e
jmp case.0x475231.27
cmp esi, 0x5a
jge 0x47529e
mov esi, 0x5a
jmp case.0x475231.27
cmp esi, 0x3e7
jle case.0x475231.27
mov esi, 0x5a
jmp case.0x475231.27
test esi, esi
jl 0x4752c8
test ebp, ebp
jne 0x4752c8
cmp esi, 0x3e7
jle case.0x475231.27
mov esi, 0x14
jmp case.0x475231.27
test esi, esi
jl 0x4752e6
test ebp, ebp
jne 0x4752e6
cmp esi, 0x3e7
jle case.0x475231.27
mov esi, 0x1e
jmp case.0x475231.27
cmp esi, 1
je case.0x475231.27
xor esi, esi
jmp case.0x475231.27
cmp esi, 1
jl 0x475432
cmp esi, 0xffff
jle case.0x475231.27
jmp 0x475432
cmp esi, 1
jl 0x47532b
cmp esi, 0xffff
jle case.0x475231.27
mov esi, 0xffff
jmp case.0x475231.27
test esi, esi
jg case.0x475231.27
mov esi, 0x708
jmp case.0x475231.27
test ebp, ebp
jne 0x475358
test esi, esi
jl 0x475358
cmp esi, 3
jle case.0x475231.27
xor esi, esi
jmp case.0x475231.27
test ebp, ebp
jne 0x475432
test esi, esi
jl 0x475432
cmp esi, 3
jle case.0x475231.27
jmp 0x475432
test ebp, ebp
jne 0x475391
test esi, esi
jl 0x475391
cmp esi, 0xf423f
jle case.0x475231.27
mov esi, 0x400
jmp case.0x475231.27
test ebp, ebp
jne 0x4753ad
cmp esi, 1
jl 0x4753ad
cmp esi, 0xa
jle case.0x475231.27
mov esi, 2
jmp case.0x475231.27
test esi, esi
jl 0x4753c0
cmp esi, 5
jle case.0x475231.27
xor esi, esi
jmp case.0x475231.27
test ebp, ebp
jne 0x4753cc
test esi, esi
jg case.0x475231.27
mov esi, 0xa
jmp case.0x475231.27
test ebp, ebp
je case.0x475231.27
jmp 0x475432
test ebp, ebp
je case.0x475231.27
mov esi, 0x20
jmp case.0x475231.27
test esi, esi
jl 0x4753ed
cmp esi, 1
jle case.0x475231.27
xor esi, esi
jmp case.0x475231.27
test ebp, ebp
jne 0x4753fe
test esi, esi
jl 0x4753fe
cmp esi, 2
jle case.0x475231.27
or esi, 0xffffffff
jmp case.0x475231.27
test ebp, ebp
jne 0x475410
test esi, esi
jl 0x475410
cmp esi, 2
jle case.0x475231.27
xor esi, esi
jmp case.0x475231.27
test ebp, ebp
jne 0x475422
cmp esi, 1
jl 0x475422
cmp esi, 0x48
jle case.0x475231.27
xor esi, esi
jmp case.0x475231.27
test ebp, ebp
je case.0x475231.27
xor esi, esi
jmp case.0x475231.27
test ebp, ebp
je case.0x475231.27
mov esi, 1
mov eax, dword [ebx + 0x4e66ec]
test eax, eax
jne 0x47546a
lea edx, [esp + 0x40]
mov edi, 1
push edx
mov dword [ebx + 0x4e66ec], edi
call sub.MFC42.DLL_CTime::GetTickCount
mov eax, dword [eax]
mov dword [ebx + 0x4e66f0], eax
mov dword [ebx + 0x4e66fc], esi
mov dword [ebx + 0x4e66f4], 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