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

Disassembly:
push 0xffffffffffffffff
push 0x49ad69
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, 0x4ba2ac
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.00476be4
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 0x438f85
mov dword [esp + 0x10], esi
mov eax, dword [esp + 0x10]
cdq
idiv ecx
mov edi, eax
test edi, edi
jge 0x438eac
xor edi, edi
jmp 0x438eb9
cmp edi, 0xff
jle 0x438eb9
mov edi, 0xff
mov ecx, eax
test ecx, ecx
jge 0x438ec3
xor ecx, ecx
jmp 0x438ed0
cmp ecx, 0xff
jle 0x438ed0
mov ecx, 0xff
test eax, eax
jge 0x438ed8
xor eax, eax
jmp 0x438ee4
cmp eax, 0xff
jle 0x438ee4
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.00476c51
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.00476c3b
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 0x438e9b
mov edi, dword [sym.imp.GDI32.dll_SelectObject]
push 0
push 2
push 0
lea ecx, [esp + 0x54]
call fcn.00476c51
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.00476c51
push 0x404040
push 1
push 0
lea ecx, [esp + 0x4c]
mov byte [esp + 0x1cc], 3
call fcn.00476c51
mov eax, dword [ebp + 0x3c]
test eax, eax
je 0x439392
mov eax, dword [0x4bfcf8]
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.00445f52
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 0x439285
mov esi, ecx
mov dword [esp + 0x1c], esi
jmp 0x43912e
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x24]
cmp esi, ecx
je 0x439163
cmp esi, eax
je 0x439163
mov eax, esi
mov ecx, 0xa
cdq
idiv ecx
test edx, edx
je 0x439163
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 0x439223
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.0040e4f0
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 0x4391ef
test edi, edi
jne 0x439218
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 0x43926f
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 0x439126
push 0xffff
push 1
push 0
lea ecx, [esp + 0x44]
call fcn.00476c51
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 0x439353
jmp 0x4392d0
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 0x439339
mov eax, dword [esp + 0x14]
test eax, eax
jle 0x439333
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 0x4392cc
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.00476c3b
lea ecx, [esp + 0x18]
mov byte [esp + 0x1c0], 4
call fcn.004736e5
mov edi, dword [sym.imp.GDI32.dll_SelectObject]
jmp 0x439397
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.00476c3b
mov dword [esp + 0x50], esi
lea ecx, [esp + 0x50]
mov byte [esp + 0x1c0], 8
call fcn.00476c3b
mov dword [esp + 0x48], esi
lea ecx, [esp + 0x48]
mov byte [esp + 0x1c0], 9
call fcn.00476c3b
mov dword [esp + 0x28], esi
lea ecx, [esp + 0x28]
mov dword [esp + 0x1c0], 0xa
call fcn.00476c3b
mov ecx, dword [esp + 0x1b8]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x1b4
ret 4