Function at 0x421670
Capabilities:
Get number of processors
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x459039
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x1a4
push ebx
push ebp
push esi
xor esi, esi
push edi
mov ebp, ecx
mov dword [esp + 0x34], esi
mov dword [esp + 0x30], vtable.CFont.0
mov ebx, dword [esp + 0x1c4]
push 0x48
push 0x5a
push ebx
mov dword [esp + 0x1c8], esi
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
push eax
push 8
call dword [sym.imp.KERNEL32.dll_MulDiv]
neg eax
mov dword [esp + 0x78], eax
mov edi, str.Arial
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [esp + 0x7c], esi
mov dword [esp + 0x80], esi
mov dword [esp + 0x84], esi
mov dword [esp + 0x88], esi
lea edx, [esp + 0x94]
mov eax, ecx
mov esi, edi
mov edi, edx
mov byte [esp + 0x8c], 0
shr ecx, 2
mov byte [esp + 0x8d], 0
mov byte [esp + 0x8e], 0
mov byte [esp + 0x8f], 0
mov byte [esp + 0x90], 4
mov byte [esp + 0x91], 0
mov byte [esp + 0x92], 0
mov byte [esp + 0x93], 0x20
push 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
push ebx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov esi, dword [sym.imp.GDI32.dll_SetBkMode]
call esi
lea ecx, [esp + 0x78]
push ecx
call dword [sym.imp.GDI32.dll_CreateFontIndirectA]
push eax
lea ecx, [esp + 0x34]
call fcn.0044e5c7
mov edi, dword [esp + 0x34]
lea eax, [esp + 0x30]
neg eax
sbb eax, eax
and eax, edi
mov edi, dword [sym.imp.GDI32.dll_SelectObject]
push eax
push ebx
call edi
mov dword [esp + 0x58], eax
mov eax, dword [ebp + 0x1c]
lea edx, [esp + 0x68]
push edx
push eax
call dword [sym.imp.USER32.dll_GetClientRect]
lea ecx, [esp + 0x60]
push ecx
push 5
push str.19999
push ebx
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x68]
mov dword [esp + 0x5c], edx
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x74]
sub edx, dword [esp + 0x64]
add ecx, eax
xor eax, eax
push 1
mov dword [esp + 0x70], eax
mov dword [ebp + 0x48], eax
mov eax, dword [esp + 0x74]
add edx, 0xfffffffc
mov dword [ebp + 0x4c], eax
sub eax, ecx
push ebx
mov dword [ebp + 0x44], ecx
mov dword [ebp + 0x50], edx
mov dword [ebp + 0x54], eax
mov dword [ebp + 0x58], edx
call esi
mov ecx, dword [ebp + 0x58]
xor esi, esi
cmp ecx, esi
jle 0x4218e2
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x10]
cdq
idiv ecx
mov edi, eax
test edi, edi
jge 0x421809
xor edi, edi
jmp 0x421816
cmp edi, 0xff
jle 0x421816
mov edi, 0xff
mov ecx, eax
test ecx, ecx
jge 0x421820
xor ecx, ecx
jmp 0x42182d
cmp ecx, 0xff
jle 0x42182d
mov ecx, 0xff
test eax, eax
jge 0x421835
xor eax, eax
jmp 0x421841
cmp eax, 0xff
jle 0x421841
mov eax, 0xff
xor edx, edx
and edi, 0xff
mov dh, al
mov dl, cl
lea ecx, [esp + 0x28]
shl edx, 8
or edx, edi
push edx
push 1
push 0
call fcn.0044e634
mov edi, dword [esp + 0x2c]
lea eax, [esp + 0x28]
neg eax
sbb eax, eax
and eax, edi
push eax
push ebx
call dword [sym.imp.GDI32.dll_SelectObject]
mov ecx, dword [ebp + 0x44]
mov edi, eax
mov eax, dword [ebp + 0x48]
push 0
add eax, esi
push eax
push ecx
push ebx
call dword [sym.imp.GDI32.dll_MoveToEx]
mov edx, dword [ebp + 0x48]
mov eax, dword [ebp + 0x4c]
add edx, esi
push edx
push eax
push ebx
call dword [sym.imp.GDI32.dll_LineTo]
push edi
push ebx
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x28], vtable.CGdiObject.0
lea ecx, [esp + 0x28]
mov byte [esp + 0x1bc], 1
call fcn.0044e61e
mov ecx, dword [esp + 0x10]
inc esi
add ecx, 0x40
mov byte [esp + 0x1bc], 0
mov dword [esp + 0x10], ecx
mov ecx, dword [ebp + 0x58]
cmp esi, ecx
jl 0x4217f8
mov edi, dword [sym.imp.GDI32.dll_SelectObject]
push 0
push 2
push 0
lea ecx, [esp + 0x54]
call fcn.0044e634
mov esi, dword [esp + 0x4c]
lea eax, [esp + 0x48]
neg eax
sbb eax, eax
mov byte [esp + 0x1bc], 2
and eax, esi
push eax
push ebx
call edi
mov ecx, dword [ebp + 0x48]
mov edx, dword [ebp + 0x44]
dec ecx
push 0
dec edx
push ecx
push edx
push ebx
mov dword [esp + 0x24], eax
call dword [sym.imp.GDI32.dll_MoveToEx]
mov eax, dword [ebp + 0x48]
mov ecx, dword [ebp + 0x4c]
mov esi, dword [sym.imp.GDI32.dll_LineTo]
dec eax
inc ecx
push eax
push ecx
push ebx
call esi
mov edx, dword [ebp + 0x50]
mov eax, dword [ebp + 0x4c]
inc edx
inc eax
push edx
push eax
push ebx
call esi
mov ecx, dword [ebp + 0x50]
mov edx, dword [ebp + 0x44]
inc ecx
dec edx
push ecx
push edx
push ebx
call esi
mov eax, dword [ebp + 0x48]
mov ecx, dword [ebp + 0x44]
dec eax
dec ecx
push eax
push ecx
push ebx
call esi
mov edx, dword [esp + 0x14]
push edx
push ebx
call edi
push 0x707070
push 1
push 0
lea ecx, [esp + 0x5c]
call fcn.0044e634
push 0x404040
push 1
push 0
lea ecx, [esp + 0x4c]
mov byte [esp + 0x1c8], 3
call fcn.0044e634
mov eax, dword [ebp + 0x3c]
test eax, eax
je 0x421d45
cmp word [eax + 0x20], 0x1f4
je 0x421d45
mov eax, dword [0x472c58]
mov dword [esp + 0x24], eax
mov esi, dword [sym.imp.GDI32.dll_SetTextAlign]
push 0
push ebx
mov byte [esp + 0x1c4], 5
call esi
lea ecx, [esp + 0xb4]
push str.previous
push ecx
call fcn.004335a0
lea edi, [esp + 0xbc]
or ecx, 0xffffffff
xor eax, eax
add esp, 8
repne scasb al, byte es:[edi]
mov eax, dword [ebp + 0x50]
lea edx, [esp + 0xb4]
not ecx
dec ecx
add eax, 2
push ecx
mov ecx, dword [ebp + 0x44]
push edx
push eax
push ecx
push ebx
call dword [sym.imp.GDI32.dll_TextOutA]
push 2
push ebx
call esi
mov edi, str.current
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0xb4]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
mov edi, edx
mov edx, dword [ebp + 0x50]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
add edx, 2
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0xb4]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov eax, dword [ebp + 0x4c]
not ecx
dec ecx
push ecx
lea ecx, [esp + 0xb8]
push ecx
push edx
push eax
push ebx
call dword [sym.imp.GDI32.dll_TextOutA]
mov eax, dword [ebp + 0x3c]
xor ecx, ecx
mov esi, 0x64
mov dword [esp + 0x1c], 0xffffff9c
mov cx, word [eax + 0x1e]
test ecx, ecx
jle 0x421ace
xor edx, edx
mov dword [esp + 0x14], ecx
mov dx, word [eax + 0x20]
mov eax, edx
inc eax
mov dword [esp + 0x10], eax
jmp 0x421a8f
mov eax, dword [esp + 0x10]
cdq
idiv ecx
mov eax, dword [ebp + 0x3c]
mov dl, byte [edx + eax + 0x22]
movsx edi, dl
cmp esi, edi
jle 0x421aab
cmp dl, 0x80
je 0x421aab
mov dword [esp + 0x20], edi
mov esi, edi
cmp dword [esp + 0x1c], edi
jge 0x421aba
cmp dl, 0x80
je 0x421aba
mov dword [esp + 0x1c], edi
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
inc edx
dec eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], eax
jne 0x421a8b
mov eax, dword [esp + 0x1c]
dec esi
inc eax
mov dword [esp + 0x20], esi
mov dword [esp + 0x1c], eax
sub eax, esi
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], 0
js 0x421c32
mov edi, esi
mov dword [esp + 0x28], edi
jmp 0x421afc
mov esi, dword [esp + 0x20]
cmp edi, esi
je 0x421b33
cmp edi, dword [esp + 0x1c]
je 0x421b33
mov eax, edi
mov ecx, 0xa
cdq
idiv ecx
test edx, edx
je 0x421b33
mov edx, dword [esp + 0x44]
lea eax, [esp + 0x40]
neg eax
sbb eax, eax
and eax, edx
push eax
push ebx
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x14], eax
jmp 0x421be0
mov ecx, dword [esp + 0x54]
lea eax, [esp + 0x50]
neg eax
sbb eax, eax
and eax, ecx
push eax
push ebx
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 0x40]
lea edx, [esp + 0x24]
push 0
push edx
push eax
push edi
call fcn.0040f350
mov edi, dword [esp + 0x34]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x10
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0xb4]
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [ebp + 0x58]
imul eax, dword [esp + 0x18]
cdq
idiv dword [esp + 0x10]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea edi, [esp + 0xb4]
mov ecx, eax
mov eax, dword [esp + 0x5c]
cdq
sub eax, edx
lea edx, [esp + 0xb4]
sar eax, 1
mov esi, eax
xor eax, eax
neg esi
sub esi, ecx
mov ecx, dword [ebp + 0x50]
add esi, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov eax, dword [ebp + 0x44]
not ecx
dec ecx
sub eax, 4
push ecx
push edx
push esi
push eax
push ebx
call dword [sym.imp.GDI32.dll_TextOutA]
mov edi, dword [esp + 0x28]
mov dword [ebp + 0x60], esi
mov esi, dword [esp + 0x20]
mov eax, edi
mov ecx, dword [ebp + 0x44]
sub eax, esi
mov esi, dword [ebp + 0x50]
imul eax, dword [ebp + 0x58]
cdq
idiv dword [esp + 0x10]
push 0
sub esi, eax
push esi
push ecx
push ebx
call dword [sym.imp.GDI32.dll_MoveToEx]
mov edx, dword [ebp + 0x4c]
push esi
push edx
push ebx
call dword [sym.imp.GDI32.dll_LineTo]
mov eax, dword [esp + 0x14]
push eax
push ebx
call dword [sym.imp.GDI32.dll_SelectObject]
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
inc eax
inc edi
cmp eax, ecx
mov dword [esp + 0x18], eax
mov dword [esp + 0x28], edi
jle 0x421af8
push 0xffff
push 1
push 0
lea ecx, [esp + 0x44]
call fcn.0044e634
mov esi, dword [esp + 0x3c]
lea eax, [esp + 0x38]
neg eax
sbb eax, eax
and eax, esi
push eax
push ebx
call dword [sym.imp.GDI32.dll_SelectObject]
mov ecx, dword [ebp + 0x3c]
xor esi, esi
mov dword [ebp + 0x5c], 0xffffffff
xor edi, edi
mov si, word [ecx + 0x1e]
mov dword [esp + 0x14], eax
test esi, esi
mov dword [esp + 0x18], edi
jle 0x421d06
jmp 0x421c82
mov edi, dword [esp + 0x18]
xor edx, edx
mov dx, word [ecx + 0x20]
lea eax, [edx + edi + 1]
cdq
idiv esi
mov eax, dword [ebp + 0x54]
imul eax, edi
mov edi, dword [esp + 0x20]
mov cl, byte [edx + ecx + 0x22]
cdq
idiv esi
mov esi, eax
mov eax, dword [ebp + 0x44]
add esi, eax
movsx eax, cl
sub eax, edi
mov edi, dword [ebp + 0x50]
imul eax, dword [ebp + 0x58]
cdq
idiv dword [esp + 0x10]
sub edi, eax
cmp cl, 0x80
je 0x421cec
mov eax, dword [esp + 0x18]
test eax, eax
jle 0x421ce6
mov eax, dword [ebp + 0x5c]
cmp eax, 0xffffffff
je 0x421ce6
mov ecx, dword [ebp + 0x60]
push 0
push ecx
push eax
push ebx
call dword [sym.imp.GDI32.dll_MoveToEx]
push edi
push esi
push ebx
call dword [sym.imp.GDI32.dll_LineTo]
mov dword [ebp + 0x5c], esi
mov dword [ebp + 0x60], edi
mov ecx, dword [ebp + 0x3c]
mov eax, dword [esp + 0x18]
xor esi, esi
inc eax
mov si, word [ecx + 0x1e]
mov dword [esp + 0x18], eax
cmp eax, esi
jl 0x421c7e
mov edx, dword [esp + 0x14]
push edx
push ebx
call dword [sym.imp.GDI32.dll_SelectObject]
mov esi, vtable.CGdiObject.0
mov dword [esp + 0x38], esi
lea ecx, [esp + 0x38]
mov byte [esp + 0x1bc], 6
call fcn.0044e61e
lea ecx, [esp + 0x24]
mov byte [esp + 0x1bc], 4
call fcn.0044a78e
mov edi, dword [sym.imp.GDI32.dll_SelectObject]
jmp 0x421d4a
mov esi, vtable.CGdiObject.0
mov eax, dword [esp + 0x58]
push eax
push ebx
call edi
mov dword [esp + 0x40], esi
lea ecx, [esp + 0x40]
mov byte [esp + 0x1bc], 7
call fcn.0044e61e
mov dword [esp + 0x50], esi
lea ecx, [esp + 0x50]
mov byte [esp + 0x1bc], 8
call fcn.0044e61e
mov dword [esp + 0x48], esi
lea ecx, [esp + 0x48]
mov byte [esp + 0x1bc], 9
call fcn.0044e61e
mov dword [esp + 0x30], esi
lea ecx, [esp + 0x30]
mov dword [esp + 0x1bc], 0xa
call fcn.0044e61e
mov ecx, dword [esp + 0x1b4]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x1b0
ret 4