Function at 0x412910
Capabilities:
Execute anti-debugging instructions
Get system information on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x84
push ebx
push esi
push edi
mov esi, ecx
mov eax, dword [str.GenuineIntel]
mov ecx, dword [0x453c38]
mov edx, dword [0x453c3c]
mov dword [ebp - 0x80], ecx
mov ecx, dword [str.CyrixInstead]
mov dword [ebp - 0x77], ecx
mov cl, byte [0x453c30]
mov dword [ebp - 0x84], eax
mov al, byte [0x453c40]
mov byte [ebp - 0x6b], cl
mov ecx, dword [0x453c1c]
mov dword [ebp - 0x7c], edx
mov edx, dword [0x453c28]
mov byte [ebp - 0x78], al
mov eax, dword [0x453c2c]
mov dword [ebp - 0x62], ecx
mov ecx, dword [0x453c08]
mov dword [ebp - 0x73], edx
mov edx, dword [str.NexGenDriven]
mov dword [ebp - 0x6f], eax
mov eax, dword [0x453c18]
mov dword [ebp - 0x59], ecx
mov ecx, dword [str.UMC_UMC_UMC]
mov dword [ebp - 0x6a], edx
mov dl, byte [0x453c20]
mov dword [ebp - 0x66], eax
mov eax, dword [str.AuthenticAMD]
mov dword [ebp - 0x50], ecx
xor ecx, ecx
mov byte [ebp - 0x5e], dl
mov edx, dword [0x453c0c]
mov dword [ebp - 0x5d], eax
mov al, byte [0x453c10]
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x55], edx
mov edx, dword [0x453bfc]
mov dword [ebp - 0x18], ecx
mov byte [ebp - 0x51], al
mov eax, dword [0x453c00]
xor ebx, ebx
mov dword [ebp - 0x14], ecx
mov byte [ebp - 0x10], bl
mov dword [ebp - 0x4c], edx
mov dword [ebp - 0x48], eax
mov byte [ebp - 0x44], bl
mov byte [ebp - 0x10], cl
mov eax, 0
cpuid
mov dword [ebp - 0x1c], ebx
mov dword [ebp - 0x18], edx
mov dword [ebp - 0x14], ecx
mov eax, 1
cpuid
mov dword [ebp - 0xc], eax
mov dword [ebp - 8], edx
mov edx, dword [ebp - 0xc]
mov edi, dword [ebp - 8]
mov ecx, edx
mov eax, edx
shr ecx, 4
shr eax, 8
and edx, 0xf
and ecx, 0xf
and eax, 0xf
push edx
mov dword [ebp - 4], edx
push ecx
push eax
lea edx, [esi + 4]
and edi, 0x400000
push str._d__d__d
push edx
mov dword [esi + 8], eax
mov dword [esi + 0xc], ecx
mov dword [esi + 0x10], edi
call fcn.00426a41
add esp, 0x14
lea edi, [esi + 0x14]
mov ecx, edi
push 0x481860
call fcn.0042b993
lea ecx, [ebp - 0x84]
mov dword [ebp - 8], ebx
mov dword [ebp - 0xc], ecx
lea eax, [ebp - 0x1c]
mov bl, byte [eax]
mov dl, bl
cmp bl, byte [ecx]
jne 0x412a79
test dl, dl
je 0x412a75
mov bl, byte [eax + 1]
mov dl, bl
cmp bl, byte [ecx + 1]
jne 0x412a79
add eax, 2
add ecx, 2
test dl, dl
jne 0x412a55
xor eax, eax
jmp 0x412a7e
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x412a97
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 0xc]
inc eax
add ecx, 0xd
cmp eax, 5
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], ecx
jl 0x412a52
mov eax, dword [ebp - 8]
mov ebx, 1
sub eax, 0
je 0x412c8e
dec eax
je 0x412c4c
sub eax, 2
jne case.default.0x412cb8
mov eax, dword [esi + 8]
sub eax, 4
je 0x412bb4
dec eax
je 0x412b2b
dec eax
jne case.default.0x412cb8
mov eax, dword [esi + 0xc]
lea ecx, [eax - 1]
cmp ecx, 3
ja case.default.0x412ad9
jmp dword [ecx*4 + 0x412e68]
push str.Athlon
mov ecx, edi
call fcn.0042bbe6
jmp case.default.0x412cb8
push str.Duron
mov ecx, edi
call fcn.0042bbe6
jmp case.default.0x412cb8
push str.Thunderbird
mov ecx, edi
call fcn.0042bbe6
jmp case.default.0x412cb8
mov ecx, dword [ebp - 4]
push ecx
push eax
push str.AMD_Model__d__Step__d
push edi
call fcn.00426a41
add esp, 0x10
jmp 0x412e02
mov eax, dword [esi + 0xc]
cmp eax, 9
ja case.0x412b33.4
jmp dword [eax*4 + 0x412e78]
push str.AMD_K5__SSA5__PR75__PR90__or_PR100_
mov ecx, edi
call fcn.0042b993
jmp case.default.0x412cb8
push str.AMD_K5__5k86__PR120__PR133_
mov ecx, edi
call fcn.0042b993
jmp case.default.0x412cb8
push str.AMD_K5__5k86__PR166_
mov ecx, edi
call fcn.0042b993
jmp case.default.0x412cb8
push str.AMD_K5__5k86__PR200_
mov ecx, edi
call fcn.0042b993
jmp case.default.0x412cb8
push str.AMD_K6
jmp 0x412dfb
push str.AMD_K6_2
jmp 0x412dfb
push str.AMD_K6_III
jmp 0x412dfb
mov edx, dword [ebp - 4]
push edx
push eax
push str.AMD_K5_6_Model__d__d
push edi
call fcn.00426a41
add esp, 0x10
jmp case.default.0x412cb8
mov eax, dword [esi + 0xc]
lea ecx, [eax - 3]
cmp ecx, 0xd
ja case.0x412bc7.9
xor edx, edx
mov dl, byte [ecx + 0x412ebc]
jmp dword [edx*4 + 0x412ea0]
push 0x453b0c
mov ecx, edi
call fcn.0042b993
jmp case.default.0x412cb8
push str.DX2_WriteBack
mov ecx, edi
call fcn.0042b993
jmp case.default.0x412cb8
push str.DX4_WriteThrough
mov ecx, edi
call fcn.0042b993
jmp case.default.0x412cb8
push str.DX4_WriteBack
mov ecx, edi
call fcn.0042b993
jmp case.default.0x412cb8
push str.Am5x86__WriteThrough_Cache_
mov ecx, edi
call fcn.0042b993
jmp case.default.0x412cb8
push str.Am5x86__WriteBack_Cache_
mov ecx, edi
call fcn.0042b993
jmp case.default.0x412cb8
mov ecx, dword [ebp - 4]
push ecx
push eax
push str.486__d__d
push edi
call fcn.00426a41
add esp, 0x10
jmp case.default.0x412cb8
mov edx, dword [ebp - 4]
mov eax, dword [esi + 0xc]
mov ecx, dword [esi + 8]
push edx
push eax
push ecx
push str.Cyrix_Family__d_Model__d_Step__d
push edi
call fcn.00426a41
mov eax, dword [esi + 8]
add esp, 0x14
cmp eax, 6
jne case.default.0x412cb8
mov eax, dword [esi + 0xc]
test eax, eax
jne case.default.0x412cb8
push str.Cyrix_Cyrix_M2
mov ecx, edi
call fcn.0042bbe6
jmp case.default.0x412cb8
mov eax, dword [esi + 8]
add eax, 0xfffffffc
cmp eax, 0xb
ja case.default.0x412cb8
xor edx, edx
mov dl, byte [eax + 0x412ee0]
jmp dword [edx*4 + 0x412ecc]
mov eax, dword [esi + 0xc]
cmp eax, 9
ja case.default.0x412cb8
jmp dword [eax*4 + 0x412eec]
push str.486_DX
mov ecx, edi
call fcn.0042bbe6
jmp case.default.0x412cb8
push str.486_SX
mov ecx, edi
call fcn.0042bbe6
jmp case.default.0x412cb8
push str.486_DX2
mov ecx, edi
call fcn.0042bbe6
jmp case.default.0x412cb8
push str.486_SL
mov ecx, edi
call fcn.0042bbe6
jmp case.default.0x412cb8
push str.486_SX2
mov ecx, edi
call fcn.0042bbe6
jmp case.default.0x412cb8
push str.486_DX2_WriteBack
mov ecx, edi
call fcn.0042bbe6
jmp case.default.0x412cb8
push str.486_DX4
mov ecx, edi
call fcn.0042bbe6
jmp case.default.0x412cb8
push str.486_DX4_WriteBack
mov ecx, edi
call fcn.0042bbe6
jmp case.default.0x412cb8
mov eax, dword [esi + 0xc]
cmp eax, 7
ja case.default.0x412d4f
jmp dword [eax*4 + 0x412f14]
push str.Pentium_A_Step___May_contain_the_FDIV_bug._
mov ecx, edi
call fcn.0042bbe6
jmp case.default.0x412cb8
push str.Pentium
mov ecx, edi
call fcn.0042bbe6
jmp case.default.0x412cb8
push str.Pentium
jmp 0x412dfb
mov ecx, dword [ebp - 4]
push ecx
push eax
push str.Pentium__Model__d_Step__d
push edi
call fcn.00426a41
add esp, 0x10
jmp case.default.0x412cb8
mov eax, dword [esi + 0xc]
cmp eax, 8
ja case.0x412d9c.2
jmp dword [eax*4 + 0x412f34]
push str.Pentium_II_or_Pro
jmp 0x412dfb
mov eax, dword [ebp - 4]
sub eax, 0
je case.0x412d9c.6
sub eax, 2
je 0x412dbe
push str.Pentium_II
jmp 0x412dfb
push str.Pentium_II_Xeon
jmp 0x412dfb
push str.Celeron
jmp 0x412dfb
push str.Pentium_III
jmp 0x412dfb
push str.Celeron2_Coppermine
jmp 0x412dfb
mov edx, dword [ebp - 4]
push edx
push eax
push str.Pentium_Model__d_Step__d
push edi
call fcn.00426a41
add esp, 0x10
jmp case.default.0x412cb8
mov eax, dword [esi + 0xc]
test eax, eax
jne case.default.0x412cb8
push str.Pentium_IV
mov ecx, edi
call fcn.0042bbe6
mov dword [esi + 0x10], ebx
rdtsc
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], edx
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
rdtsc
mov dword [ebp - 0xc], eax
mov dword [ebp - 4], edx
mov eax, dword [ebp - 0xc]
mov edi, dword [ebp - 8]
sub eax, edi
mov dword [ebp - 0xc], eax
fild dword [ebp - 0xc]
fmul qword [0x439a20]
fadd qword [0x439a18]
call fcn.00415cb0
lea ecx, [ebp - 0x1c]
mov dword [esi + 0x20], eax
push ecx
lea ecx, [esi + 0x18]
call fcn.0042b993
lea edx, [ebp - 0x40]
push edx
call dword [sym.imp.KERNEL32.dll_GetSystemInfo]
mov eax, dword [ebp - 0x2c]
pop edi
mov dword [esi + 0x1c], eax
mov al, bl
pop esi
pop ebx
mov esp, ebp
pop ebp
ret