Function at 0x4451a0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x491999
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x1a8
push ebx
push ebp
push esi
xor esi, esi
push edi
mov ebp, ecx
mov dword [esp + 0x2c], esi
mov dword [esp + 0x28], vtable.CFont.0
mov ebx, dword [esp + 0x1c8]
push 0x48
push 0x5a
push ebx
mov dword [esp + 0x1cc], esi
call dword [sym.imp.GDI32.dll_GetDeviceCaps]
push eax
push 8
call dword [sym.imp.KERNEL32.DLL_MulDiv]
neg eax
mov dword [esp + 0x7c], eax
mov edi, 0x4ae23c
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov dword [esp + 0x80], esi
mov dword [esp + 0x84], esi
mov dword [esp + 0x88], esi
mov dword [esp + 0x8c], esi
lea edx, [esp + 0x98]
mov eax, ecx
mov esi, edi
mov edi, edx
mov byte [esp + 0x90], 0
shr ecx, 2
mov byte [esp + 0x91], 0
mov byte [esp + 0x92], 0
mov byte [esp + 0x93], 0
mov byte [esp + 0x94], 4
mov byte [esp + 0x95], 0
mov byte [esp + 0x96], 0
mov byte [esp + 0x97], 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 + 0x7c]
push ecx
call dword [sym.imp.GDI32.dll_CreateFontIndirectA]
push eax
lea ecx, [esp + 0x2c]
call fcn.0047da9d
mov edi, dword [esp + 0x2c]
lea eax, [esp + 0x28]
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 + 0x6c]
push edx
push eax
call dword [sym.imp.USER32.dll_GetClientRect]
lea ecx, [esp + 0x5c]
push ecx
push 5
push str.19999
push ebx
call dword [sym.imp.GDI32.dll_GetTextExtentPoint32A]
mov edx, dword [esp + 0x60]
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x68], edx
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x78]
sub edx, dword [esp + 0x60]
add ecx, eax
xor eax, eax
push 1
mov dword [esp + 0x74], eax
mov dword [ebp + 0x48], eax
mov eax, dword [esp + 0x78]
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 0x445415
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x10]
cdq
idiv ecx
mov edi, eax
test edi, edi
jge 0x44533c
xor edi, edi
jmp 0x445349
cmp edi, 0xff
jle 0x445349
mov edi, 0xff
mov ecx, eax
test ecx, ecx
jge 0x445353
xor ecx, ecx
jmp 0x445360
cmp ecx, 0xff
jle 0x445360
mov ecx, 0xff
test eax, eax
jge 0x445368
xor eax, eax
jmp 0x445374
cmp eax, 0xff
jle 0x445374
mov eax, 0xff
xor edx, edx
and edi, 0xff
mov dh, al
mov dl, cl
lea ecx, [esp + 0x30]
shl edx, 8
or edx, edi
push edx
push 1
push 0
call fcn.0047db0a
mov edi, dword [esp + 0x34]
lea eax, [esp + 0x30]
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 + 0x30], vtable.CGdiObject.0
lea ecx, [esp + 0x30]
mov byte [esp + 0x1c0], 1
call fcn.0047daf4
mov ecx, dword [esp + 0x10]
inc esi
add ecx, 0x40
mov byte [esp + 0x1c0], 0
mov dword [esp + 0x10], ecx
mov ecx, dword [ebp + 0x58]
cmp esi, ecx
jl 0x44532b
mov edi, dword [sym.imp.GDI32.dll_SelectObject]
push 0
push 2
push 0
lea ecx, [esp + 0x54]
call fcn.0047db0a
mov esi, dword [esp + 0x4c]
lea eax, [esp + 0x48]
neg eax
sbb eax, eax
mov byte [esp + 0x1c0], 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 + 0x20], 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 + 0x10]
push edx
push ebx
call edi
push 0x707070
push 1
push 0
lea ecx, [esp + 0x5c]
call fcn.0047db0a
push 0x404040
push 1
push 0
lea ecx, [esp + 0x4c]
mov byte [esp + 0x1cc], 3
call fcn.0047db0a
mov eax, dword [ebp + 0x3c]
test eax, eax
je 0x445822
mov eax, dword [0x4b3040]
mov dword [esp + 0x18], eax
mov esi, dword [sym.imp.GDI32.dll_SetTextAlign]
push 0
push ebx
mov byte [esp + 0x1c8], 5
call esi
lea ecx, [esp + 0xb8]
push str.previous_temperature
push ecx
call fcn.00452382
lea edi, [esp + 0xc0]
or ecx, 0xffffffff
xor eax, eax
add esp, 8
repne scasb al, byte es:[edi]
mov eax, dword [ebp + 0x50]
lea edx, [esp + 0xb8]
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_temperature
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0xb8]
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 + 0xb8]
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov eax, dword [ebp + 0x4c]
not ecx
dec ecx
push ecx
lea ecx, [esp + 0xbc]
push ecx
push edx
push eax
push ebx
call dword [sym.imp.GDI32.dll_TextOutA]
mov eax, dword [ebp + 0x3c]
mov dword [esp + 0x14], 0
movsx ecx, byte [eax + 9]
movsx eax, byte [eax + 7]
mov edi, eax
mov dword [esp + 0x24], ecx
sub edi, ecx
mov dword [esp + 0x64], eax
mov dword [esp + 0x20], edi
js 0x445715
mov esi, ecx
mov dword [esp + 0x1c], esi
jmp 0x4455be
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x24]
cmp esi, ecx
je 0x4455f3
cmp esi, eax
je 0x4455f3
mov eax, esi
mov ecx, 0xa
cdq
idiv ecx
test edx, edx
je 0x4455f3
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 + 0x10], eax
jmp 0x4456b3
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 + 0x10], eax
mov eax, dword [ebp + 0x40]
lea edx, [esp + 0x18]
push 0
push edx
push eax
push esi
call fcn.0041ce70
mov edi, dword [esp + 0x28]
or ecx, 0xffffffff
xor eax, eax
add esp, 0x10
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0xb8]
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]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x68]
imul eax, edi
cdq
idiv dword [esp + 0x20]
mov esi, eax
mov eax, ecx
cdq
sub eax, edx
mov edx, esi
sar eax, 1
mov esi, eax
mov eax, dword [ebp + 0x50]
neg esi
sub esi, edx
add esi, eax
mov eax, dword [ebp + 0x60]
sub eax, esi
cmp eax, ecx
jg 0x44567f
test edi, edi
jne 0x4456a8
lea edi, [esp + 0xb8]
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [ebp + 0x44]
repne scasb al, byte es:[edi]
not ecx
dec ecx
sub edx, 4
push ecx
lea ecx, [esp + 0xbc]
push ecx
push esi
push edx
push ebx
call dword [sym.imp.GDI32.dll_TextOutA]
mov edi, dword [esp + 0x20]
mov dword [ebp + 0x60], esi
mov esi, dword [esp + 0x1c]
mov eax, esi
mov ecx, 5
cdq
idiv ecx
test edx, edx
jne 0x4456ff
mov edx, dword [esp + 0x24]
mov eax, esi
sub eax, edx
mov esi, dword [ebp + 0x50]
imul eax, dword [ebp + 0x58]
cdq
idiv edi
mov edx, dword [ebp + 0x44]
push 0
sub esi, eax
push esi
push edx
push ebx
call dword [sym.imp.GDI32.dll_MoveToEx]
mov eax, dword [ebp + 0x4c]
push esi
push eax
push ebx
call dword [sym.imp.GDI32.dll_LineTo]
mov ecx, dword [esp + 0x10]
push ecx
push ebx
call dword [sym.imp.GDI32.dll_SelectObject]
mov esi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
inc eax
inc esi
cmp eax, edi
mov dword [esp + 0x14], eax
mov dword [esp + 0x1c], esi
jle 0x4455b6
push 0xffff
push 1
push 0
lea ecx, [esp + 0x44]
call fcn.0047db0a
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 [esp + 0x10], eax
mov dword [esp + 0x14], 0
mov si, word [ecx + 0x1e]
test esi, esi
jle 0x4457e3
jmp 0x445760
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 0x14]
xor edx, edx
mov dx, word [ecx + 0x20]
lea eax, [edx + eax + 1]
cdq
idiv esi
mov eax, dword [ebp + 0x54]
imul eax, dword [esp + 0x14]
mov cl, byte [edx + ecx + 0x22]
cdq
idiv esi
mov edx, dword [esp + 0x24]
mov esi, eax
mov eax, dword [ebp + 0x44]
add esi, eax
movsx eax, cl
sub eax, edx
imul eax, dword [ebp + 0x58]
cdq
idiv edi
mov edi, dword [ebp + 0x50]
sub edi, eax
cmp cl, 0x80
je 0x4457c9
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x4457c3
mov ecx, dword [ebp + 0x60]
mov edx, dword [ebp + 0x5c]
push 0
push ecx
push edx
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 + 0x14]
xor esi, esi
inc eax
mov si, word [ecx + 0x1e]
mov dword [esp + 0x14], eax
cmp eax, esi
jl 0x44575c
mov eax, dword [esp + 0x10]
push eax
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 + 0x1c0], 6
call fcn.0047daf4
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c0], 4
call fcn.0047a59e
mov edi, dword [sym.imp.GDI32.dll_SelectObject]
jmp 0x445827
mov esi, vtable.CGdiObject.0
mov ecx, dword [esp + 0x58]
push ecx
push ebx
call edi
mov dword [esp + 0x40], esi
lea ecx, [esp + 0x40]
mov byte [esp + 0x1c0], 7
call fcn.0047daf4
mov dword [esp + 0x50], esi
lea ecx, [esp + 0x50]
mov byte [esp + 0x1c0], 8
call fcn.0047daf4
mov dword [esp + 0x48], esi
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 9
call fcn.0047daf4
mov dword [esp + 0x28], esi
lea ecx, [esp + 0x28]
mov dword [esp + 0x1c0], 0xa
call fcn.0047daf4
mov ecx, dword [esp + 0x1b8]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x1b4
ret 4