// File: Stygain[P]bandwidth-monitor/src/graph.cpp
// Function: GraphDataColumn::Update()
void GraphDataColumn::Update()
{
	if (next == NULL)
	{
		if (graphType == GT_PKTS_RECV)
		{
			int pktsRecvDiff = 0;
			if (this->interface != NULL)
			{
				if (this->interface->r_packetsLast != 0)
				{
					pktsRecvDiff += this->interface->r_packets - this->interface->r_packetsLast;
				}
			}
			else
			{
				for (size_t i = 0; i < this->interfaces->size(); i++)
				{
					if (!this->interfaces->at(i)->IsHidden())
					{
						if (this->interfaces->at(i)->r_packetsLast != 0)
						{
							pktsRecvDiff += this->interfaces->at(i)->r_packets - this->interfaces->at(i)->r_packetsLast;
						}
					}
				}
			}
			this->value = pktsRecvDiff;
		}
		else if (graphType == GT_BYTES_RECV)
		{
			int bytesRecvDiff = 0;
			if (this->interface != NULL)
			{
				if (this->interface->r_bytesLast != 0)
				{
					bytesRecvDiff += this->interface->r_bytes - this->interface->r_bytesLast;
				}
			}
			else
			{
				for (size_t i = 0; i < this->interfaces->size(); i++)
				{
					if (!this->interfaces->at(i)->IsHidden())
					{
						if (this->interfaces->at(i)->r_bytesLast != 0)
						{
							bytesRecvDiff += this->interfaces->at(i)->r_bytes - this->interfaces->at(i)->r_bytesLast;
						}
					}
				}
			}
			this->value = bytesRecvDiff;
		}
		else if (graphType == GT_PKTS_SEND)
		{
			int pktsSendDiff = 0;
			if (this->interface != NULL)
			{
				if (this->interface->t_packetsLast != 0)
				{
					pktsSendDiff += this->interface->t_packets - this->interface->t_packetsLast;
				}
			}
			else
			{
				for (size_t i = 0; i < this->interfaces->size(); i++)
				{
					if (!this->interfaces->at(i)->IsHidden())
					{
						if (this->interfaces->at(i)->t_packetsLast != 0)
						{
							pktsSendDiff += this->interfaces->at(i)->t_packets - this->interfaces->at(i)->t_packetsLast;
						}
					}
				}
			}
			this->value = pktsSendDiff;
		}
		else if (graphType == GT_BYTES_SEND)
		{
			int bytesSendDiff = 0;
			if (this->interface != NULL)
			{
				if (this->interface->t_bytesLast != 0)
				{
					bytesSendDiff += this->interface->t_bytes - this->interface->t_bytesLast;
				}
			}
			else
			{
				for (size_t i = 0; i < this->interfaces->size(); i++)
				{
					if (!this->interfaces->at(i)->IsHidden())
					{
						if (this->interfaces->at(i)->t_bytesLast != 0)
						{
							bytesSendDiff += this->interfaces->at(i)->t_bytes - this->interfaces->at(i)->t_bytesLast;
						}
					}
				}
			}
			this->value = bytesSendDiff;
		}
	}
	else
	{
		this->value = this->next->GetValue();
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
cmpq $0x0, 0x18(%rax)
jne 0xdf65
movq -0x50(%rbp), %rax
cmpl $0x1, 0x4(%rax)
jne 0xdbf3
movq -0x50(%rbp), %rax
movl $0x0, -0xc(%rbp)
cmpq $0x0, 0x10(%rax)
je 0xdb24
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
cmpq $0x0, 0x50(%rax)
je 0xdb1f
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rcx
movq 0x48(%rcx), %rcx
movq 0x10(%rax), %rax
subq 0x50(%rax), %rcx
movslq -0xc(%rbp), %rax
addq %rcx, %rax
movl %eax, -0xc(%rbp)
jmp 0xdbe5
movq $0x0, -0x18(%rbp)
movq -0x50(%rbp), %rax
movq -0x18(%rbp), %rcx
movq %rcx, -0x58(%rbp)
movq 0x8(%rax), %rdi
callq 0x9c70
movq %rax, %rcx
movq -0x58(%rbp), %rax
cmpq %rcx, %rax
jae 0xdbe3
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0xf330
movq (%rax), %rdi
callq 0x130c0
testb $0x1, %al
jne 0xdbd0
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0xf330
movq (%rax), %rax
cmpq $0x0, 0x50(%rax)
je 0xdbce
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0xf330
movq %rax, %rcx
movq -0x50(%rbp), %rax
movq (%rcx), %rcx
movq 0x48(%rcx), %rcx
movq %rcx, -0x60(%rbp)
movq 0x8(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0xf330
movq -0x60(%rbp), %rcx
movq (%rax), %rax
subq 0x50(%rax), %rcx
movslq -0xc(%rbp), %rax
addq %rcx, %rax
movl %eax, -0xc(%rbp)
jmp 0xdbd0
jmp 0xdbd2
movq -0x18(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x18(%rbp)
jmp 0xdb2c
jmp 0xdbe5
movq -0x50(%rbp), %rax
movl -0xc(%rbp), %ecx
movl %ecx, (%rax)
jmp 0xdf63
movq -0x50(%rbp), %rax
cmpl $0x0, 0x4(%rax)
jne 0xdd14
movq -0x50(%rbp), %rax
movl $0x0, -0x1c(%rbp)
cmpq $0x0, 0x10(%rax)
je 0xdc45
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
cmpq $0x0, 0x10(%rax)
je 0xdc40
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rcx
movq 0x8(%rcx), %rcx
movq 0x10(%rax), %rax
subq 0x10(%rax), %rcx
movslq -0x1c(%rbp), %rax
addq %rcx, %rax
movl %eax, -0x1c(%rbp)
jmp 0xdd06
movq $0x0, -0x28(%rbp)
movq -0x50(%rbp), %rax
movq -0x28(%rbp), %rcx
movq %rcx, -0x68(%rbp)
movq 0x8(%rax), %rdi
callq 0x9c70
movq %rax, %rcx
movq -0x68(%rbp), %rax
cmpq %rcx, %rax
jae 0xdd04
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x28(%rbp), %rsi
callq 0xf330
movq (%rax), %rdi
callq 0x130c0
testb $0x1, %al
jne 0xdcf1
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x28(%rbp), %rsi
callq 0xf330
movq (%rax), %rax
cmpq $0x0, 0x10(%rax)
je 0xdcef
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x28(%rbp), %rsi
callq 0xf330
movq %rax, %rcx
movq -0x50(%rbp), %rax
movq (%rcx), %rcx
movq 0x8(%rcx), %rcx
movq %rcx, -0x70(%rbp)
movq 0x8(%rax), %rdi
movq -0x28(%rbp), %rsi
callq 0xf330
movq -0x70(%rbp), %rcx
movq (%rax), %rax
subq 0x10(%rax), %rcx
movslq -0x1c(%rbp), %rax
addq %rcx, %rax
movl %eax, -0x1c(%rbp)
jmp 0xdcf1
jmp 0xdcf3
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0xdc4d
jmp 0xdd06
movq -0x50(%rbp), %rax
movl -0x1c(%rbp), %ecx
movl %ecx, (%rax)
jmp 0xdf61
movq -0x50(%rbp), %rax
cmpl $0x3, 0x4(%rax)
jne 0xde35
movq -0x50(%rbp), %rax
movl $0x0, -0x2c(%rbp)
cmpq $0x0, 0x10(%rax)
je 0xdd66
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
cmpq $0x0, 0x68(%rax)
je 0xdd61
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rcx
movq 0x60(%rcx), %rcx
movq 0x10(%rax), %rax
subq 0x68(%rax), %rcx
movslq -0x2c(%rbp), %rax
addq %rcx, %rax
movl %eax, -0x2c(%rbp)
jmp 0xde27
movq $0x0, -0x38(%rbp)
movq -0x50(%rbp), %rax
movq -0x38(%rbp), %rcx
movq %rcx, -0x78(%rbp)
movq 0x8(%rax), %rdi
callq 0x9c70
movq %rax, %rcx
movq -0x78(%rbp), %rax
cmpq %rcx, %rax
jae 0xde25
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x38(%rbp), %rsi
callq 0xf330
movq (%rax), %rdi
callq 0x130c0
testb $0x1, %al
jne 0xde12
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x38(%rbp), %rsi
callq 0xf330
movq (%rax), %rax
cmpq $0x0, 0x68(%rax)
je 0xde10
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x38(%rbp), %rsi
callq 0xf330
movq %rax, %rcx
movq -0x50(%rbp), %rax
movq (%rcx), %rcx
movq 0x60(%rcx), %rcx
movq %rcx, -0x80(%rbp)
movq 0x8(%rax), %rdi
movq -0x38(%rbp), %rsi
callq 0xf330
movq -0x80(%rbp), %rcx
movq (%rax), %rax
subq 0x68(%rax), %rcx
movslq -0x2c(%rbp), %rax
addq %rcx, %rax
movl %eax, -0x2c(%rbp)
jmp 0xde12
jmp 0xde14
movq -0x38(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x38(%rbp)
jmp 0xdd6e
jmp 0xde27
movq -0x50(%rbp), %rax
movl -0x2c(%rbp), %ecx
movl %ecx, (%rax)
jmp 0xdf5f
movq -0x50(%rbp), %rax
cmpl $0x2, 0x4(%rax)
jne 0xdf5d
movq -0x50(%rbp), %rax
movl $0x0, -0x3c(%rbp)
cmpq $0x0, 0x10(%rax)
je 0xde87
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rax
cmpq $0x0, 0x30(%rax)
je 0xde82
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rcx
movq 0x28(%rcx), %rcx
movq 0x10(%rax), %rax
subq 0x30(%rax), %rcx
movslq -0x3c(%rbp), %rax
addq %rcx, %rax
movl %eax, -0x3c(%rbp)
jmp 0xdf54
movq $0x0, -0x48(%rbp)
movq -0x50(%rbp), %rax
movq -0x48(%rbp), %rcx
movq %rcx, -0x88(%rbp)
movq 0x8(%rax), %rdi
callq 0x9c70
movq %rax, %rcx
movq -0x88(%rbp), %rax
cmpq %rcx, %rax
jae 0xdf52
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x48(%rbp), %rsi
callq 0xf330
movq (%rax), %rdi
callq 0x130c0
testb $0x1, %al
jne 0xdf3f
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x48(%rbp), %rsi
callq 0xf330
movq (%rax), %rax
cmpq $0x0, 0x30(%rax)
je 0xdf3d
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x48(%rbp), %rsi
callq 0xf330
movq %rax, %rcx
movq -0x50(%rbp), %rax
movq (%rcx), %rcx
movq 0x28(%rcx), %rcx
movq %rcx, -0x90(%rbp)
movq 0x8(%rax), %rdi
movq -0x48(%rbp), %rsi
callq 0xf330
movq -0x90(%rbp), %rcx
movq (%rax), %rax
subq 0x30(%rax), %rcx
movslq -0x3c(%rbp), %rax
addq %rcx, %rax
movl %eax, -0x3c(%rbp)
jmp 0xdf3f
jmp 0xdf41
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0xde8f
jmp 0xdf54
movq -0x50(%rbp), %rax
movl -0x3c(%rbp), %ecx
movl %ecx, (%rax)
jmp 0xdf5f
jmp 0xdf61
jmp 0xdf63
jmp 0xdf7a
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0xdf90
movl %eax, %ecx
movq -0x50(%rbp), %rax
movl %ecx, (%rax)
addq $0x90, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)