// File: /workspace/github_c_makefile_star2_O0/intel[P]pf-bb-config/vrb1/vrb1_cfg_app.c
// Function: vrb1_device_data
void vrb1_device_data(void *dev)
{
	uint32_t vf_idx, num, min, max;
	uint64_t avg;
	hw_device *accel_dev = (hw_device *)dev;
	uint8_t *bar0addr = accel_dev->bar0Addr;

	LOG_RESP(INFO, "Device Status:: %d VFs\n", accel_dev->numvfs);
	for (vf_idx = 0; vf_idx < accel_dev->numvfs; vf_idx++)
		LOG_RESP(INFO, "-  VF %d %s\n", vf_idx,
			 bb_acc_device_status_str(accel_dev->dev_status[vf_idx]));
	LOG_RESP(INFO, "5GUL counters: Code Blocks");
	print_all_stat32(accel_dev, HWPfPermonACountVf, accel_dev->numvfs, VRB1_PMON_OFF_1);
	LOG_RESP(INFO, "5GUL counters: Data (Bytes)");
	print_all_stat32(accel_dev, HWPfPermonAKCntLoVf, accel_dev->numvfs, VRB1_PMON_OFF_1);
	LOG_RESP(INFO, "5GUL counters: Per Engine");
	print_all_stat32(accel_dev, HWPfPermonACbCountFec, VRB1_5GUL_ENGS, VRB1_PMON_OFF_2);
	LOG_RESP(INFO, "5GDL counters: Code Blocks");
	print_all_stat32(accel_dev, HWPfPermonBCountVf, accel_dev->numvfs, VRB1_PMON_OFF_1);
	LOG_RESP(INFO, "5GDL counters: Data (Bytes)");
	print_all_stat32(accel_dev, HWPfPermonBKCntLoVf, accel_dev->numvfs, VRB1_PMON_OFF_1);
	LOG_RESP(INFO, "5GDL counters: Per Engine");
	print_all_stat32(accel_dev, HWPfPermonBCbCountFec, VRB1_5GDL_ENGS, VRB1_PMON_OFF_2);
	LOG_RESP(INFO, "FFT counters: Code Blocks");
	print_all_stat32(accel_dev, HWPfPermonCCountVf, accel_dev->numvfs, VRB1_PMON_OFF_1);
	LOG_RESP(INFO, "FFT counters: Data (Bytes)");
	print_all_stat32(accel_dev, HWPfPermonCKCntLoVf, accel_dev->numvfs, VRB1_PMON_OFF_1);
	LOG_RESP(INFO, "FFT counters: Per Engine");
	print_all_stat32(accel_dev, HWPfPermonCCbCountFec, VRB1_FFT_ENGS, VRB1_PMON_OFF_2);
	/* Bus Monitor */
	vrb1_reg_fast_write(bar0addr, HWPfPermonAControlBusMon, VRB1_BUSMON_STOP);
	min = vrb1_reg_read(bar0addr, HWPfPermonAMinLatBusMon);
	max = vrb1_reg_read(bar0addr, HWPfPermonAMaxLatBusMon);
	num = vrb1_reg_read(bar0addr, HWPfPermonATotalReqCntBusMon);
	if (num > 0) {
		avg = (vrb1_reg_read(bar0addr, HWPfPermonATotalLatLowBusMon) +
				vrb1_reg_read(bar0addr, HWPfPermonATotalLatUpperBusMon)
				* ((uint64_t)1 << 32)) / num;
		LOG_RESP(INFO, "Bus Monitor A (ns) Avg %u - Num %u - Min %d - Max %d",
				(uint32_t) avg, num, min, max);
	}
	vrb1_reg_fast_write(bar0addr, HWPfPermonAControlBusMon, VRB1_BUSMON_RESET);
	vrb1_reg_fast_write(bar0addr, HWPfPermonAControlBusMon, VRB1_BUSMON_START);
	vrb1_reg_fast_write(bar0addr, HWPfPermonCControlBusMon, VRB1_BUSMON_STOP);
	min = vrb1_reg_read(bar0addr, HWPfPermonCMinLatBusMon);
	max = vrb1_reg_read(bar0addr, HWPfPermonCMaxLatBusMon);
	num = vrb1_reg_read(bar0addr, HWPfPermonCTotalReqCntBusMon);
	if (num > 0) {
		avg = (vrb1_reg_read(bar0addr, HWPfPermonCTotalLatLowBusMon) +
				vrb1_reg_read(bar0addr, HWPfPermonCTotalLatUpperBusMon)
				* ((uint64_t)1 << 32)) / num;
		LOG_RESP(INFO, "Bus Monitor C (ns) Avg %u - Num %u - Min %d - Max %d",
				(uint32_t) avg, num, min, max);
	}
	vrb1_reg_fast_write(bar0addr, HWPfPermonCControlBusMon, VRB1_BUSMON_RESET);
	vrb1_reg_fast_write(bar0addr, HWPfPermonCControlBusMon, VRB1_BUSMON_START);

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
movq 0xb0(%rax), %rax
movq %rax, -0x30(%rbp)
callq 0x16250
movq %rax, %rcx
leaq 0x25b9e(%rip), %rax     # 0x3b8d0
movq 0x10(%rax), %r8
movq -0x28(%rbp), %rax
movl 0x4f8(%rax), %r9d
movl $0x2, %edi
movl $0x1, %esi
leaq 0xe5ec(%rip), %rdx      # 0x2433e
movb $0x0, %al
callq 0x216e0
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
movq -0x28(%rbp), %rcx
cmpl 0x4f8(%rcx), %eax
jae 0x15dd6
callq 0x16250
movq %rax, -0x48(%rbp)
leaq 0x25b51(%rip), %rax     # 0x3b8d0
movq 0x10(%rax), %rax
movq %rax, -0x40(%rbp)
movl -0xc(%rbp), %eax
movl %eax, -0x34(%rbp)
movq -0x28(%rbp), %rax
movl -0xc(%rbp), %ecx
movq 0xf0(%rax,%rcx,8), %rax
movl %eax, %edi
callq 0x21ac0
movq -0x48(%rbp), %rcx
movq -0x40(%rbp), %r8
movl -0x34(%rbp), %r9d
movl $0x2, %edi
movl $0x1, %esi
leaq 0xe59d(%rip), %rdx      # 0x2435d
movq %rax, (%rsp)
movb $0x0, %al
callq 0x216e0
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x15d60
callq 0x16250
movq %rax, %rcx
leaq 0x25aeb(%rip), %rax     # 0x3b8d0
movq 0x10(%rax), %r8
movl $0x2, %edi
movl $0x1, %esi
leaq 0xd9ad(%rip), %rdx      # 0x237a7
movb $0x0, %al
callq 0x216e0
movq -0x28(%rbp), %rdi
movq -0x28(%rbp), %rax
movl 0x4f8(%rax), %edx
movl $0xb98008, %esi         # imm = 0xB98008
movl $0x100, %ecx            # imm = 0x100
callq 0x22c90
callq 0x16250
movq %rax, %rcx
leaq 0x25aa3(%rip), %rax     # 0x3b8d0
movq 0x10(%rax), %r8
movl $0x2, %edi
movl $0x1, %esi
leaq 0xd987(%rip), %rdx      # 0x237c9
movb $0x0, %al
callq 0x216e0
movq -0x28(%rbp), %rdi
movq -0x28(%rbp), %rax
movl 0x4f8(%rax), %edx
movl $0xb98010, %esi         # imm = 0xB98010
movl $0x100, %ecx            # imm = 0x100
callq 0x22c90
callq 0x16250
movq %rax, %rcx
leaq 0x25a5b(%rip), %rax     # 0x3b8d0
movq 0x10(%rax), %r8
movl $0x2, %edi
movl $0x1, %esi
leaq 0xd962(%rip), %rdx      # 0x237ec
movb $0x0, %al
callq 0x216e0
movq -0x28(%rbp), %rdi
movl $0xb9c100, %esi         # imm = 0xB9C100
movl $0x5, %edx
movl $0x10, %ecx
callq 0x22c90
callq 0x16250
movq %rax, %rcx
leaq 0x25a18(%rip), %rax     # 0x3b8d0
movq 0x10(%rax), %r8
movl $0x2, %edi
movl $0x1, %esi
leaq 0xd940(%rip), %rdx      # 0x2380d
movb $0x0, %al
callq 0x216e0
movq -0x28(%rbp), %rdi
movq -0x28(%rbp), %rax
movl 0x4f8(%rax), %edx
movl $0xba8008, %esi         # imm = 0xBA8008
movl $0x100, %ecx            # imm = 0x100
callq 0x22c90
callq 0x16250
movq %rax, %rcx
leaq 0x259d0(%rip), %rax     # 0x3b8d0
movq 0x10(%rax), %r8
movl $0x2, %edi
movl $0x1, %esi
leaq 0xd91a(%rip), %rdx      # 0x2382f
movb $0x0, %al
callq 0x216e0
movq -0x28(%rbp), %rdi
movq -0x28(%rbp), %rax
movl 0x4f8(%rax), %edx
movl $0xba8010, %esi         # imm = 0xBA8010
movl $0x100, %ecx            # imm = 0x100
callq 0x22c90
callq 0x16250
movq %rax, %rcx
leaq 0x25988(%rip), %rax     # 0x3b8d0
movq 0x10(%rax), %r8
movl $0x2, %edi
movl $0x1, %esi
leaq 0xd8f5(%rip), %rdx      # 0x23852
movb $0x0, %al
callq 0x216e0
movq -0x28(%rbp), %rdi
movl $0xbac100, %esi         # imm = 0xBAC100
movl $0x2, %edx
movl $0x10, %ecx
callq 0x22c90
callq 0x16250
movq %rax, %rcx
leaq 0x25945(%rip), %rax     # 0x3b8d0
movq 0x10(%rax), %r8
movl $0x2, %edi
movl $0x1, %esi
leaq 0xe3d1(%rip), %rdx      # 0x24371
movb $0x0, %al
callq 0x216e0
movq -0x28(%rbp), %rdi
movq -0x28(%rbp), %rax
movl 0x4f8(%rax), %edx
movl $0xbb8008, %esi         # imm = 0xBB8008
movl $0x100, %ecx            # imm = 0x100
callq 0x22c90
callq 0x16250
movq %rax, %rcx
leaq 0x258fd(%rip), %rax     # 0x3b8d0
movq 0x10(%rax), %r8
movl $0x2, %edi
movl $0x1, %esi
leaq 0xe3aa(%rip), %rdx      # 0x24392
movb $0x0, %al
callq 0x216e0
movq -0x28(%rbp), %rdi
movq -0x28(%rbp), %rax
movl 0x4f8(%rax), %edx
movl $0xbb8010, %esi         # imm = 0xBB8010
movl $0x100, %ecx            # imm = 0x100
callq 0x22c90
callq 0x16250
movq %rax, %rcx
leaq 0x258b5(%rip), %rax     # 0x3b8d0
movq 0x10(%rax), %r8
movl $0x2, %edi
movl $0x1, %esi
leaq 0xe384(%rip), %rdx      # 0x243b4
movb $0x0, %al
callq 0x216e0
movq -0x28(%rbp), %rdi
movl $0xbbc100, %esi         # imm = 0xBBC100
movl $0x1, %edx
movl $0x10, %ecx
callq 0x22c90
movq -0x30(%rbp), %rdi
movl $0xb9c400, %esi         # imm = 0xB9C400
xorl %edx, %edx
callq 0x14210
movq -0x30(%rbp), %rdi
movl $0xb9c40c, %esi         # imm = 0xB9C40C
callq 0x13540
movl %eax, -0x14(%rbp)
movq -0x30(%rbp), %rdi
movl $0xb9c500, %esi         # imm = 0xB9C500
callq 0x13540
movl %eax, -0x18(%rbp)
movq -0x30(%rbp), %rdi
movl $0xb9c50c, %esi         # imm = 0xB9C50C
callq 0x13540
movl %eax, -0x10(%rbp)
cmpl $0x0, -0x10(%rbp)
jbe 0x16123
movq -0x30(%rbp), %rdi
movl $0xb9c504, %esi         # imm = 0xB9C504
callq 0x13540
movl %eax, %eax
movq %rax, -0x50(%rbp)
movq -0x30(%rbp), %rdi
movl $0xb9c508, %esi         # imm = 0xB9C508
callq 0x13540
movl %eax, %ecx
movq -0x50(%rbp), %rax
movl %ecx, %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movl -0x10(%rbp), %ecx
xorl %edx, %edx
divq %rcx
movq %rax, -0x20(%rbp)
callq 0x16250
movq %rax, %rcx
leaq 0x257e8(%rip), %rax     # 0x3b8d0
movq 0x10(%rax), %r8
movq -0x20(%rbp), %rax
movl %eax, %r9d
movl -0x10(%rbp), %r11d
movl -0x14(%rbp), %r10d
movl -0x18(%rbp), %eax
movl $0x2, %edi
movl $0x1, %esi
leaq 0xe2c5(%rip), %rdx      # 0x243d4
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
movl %eax, 0x10(%rsp)
movb $0x0, %al
callq 0x216e0
movq -0x30(%rbp), %rdi
movl $0xb9c400, %esi         # imm = 0xB9C400
movl $0x1, %edx
callq 0x14210
movq -0x30(%rbp), %rdi
movl $0xb9c400, %esi         # imm = 0xB9C400
movl $0x2, %edx
callq 0x14210
movq -0x30(%rbp), %rdi
movl $0xbbc400, %esi         # imm = 0xBBC400
xorl %edx, %edx
callq 0x14210
movq -0x30(%rbp), %rdi
movl $0xbbc40c, %esi         # imm = 0xBBC40C
callq 0x13540
movl %eax, -0x14(%rbp)
movq -0x30(%rbp), %rdi
movl $0xbbc500, %esi         # imm = 0xBBC500
callq 0x13540
movl %eax, -0x18(%rbp)
movq -0x30(%rbp), %rdi
movl $0xbbc50c, %esi         # imm = 0xBBC50C
callq 0x13540
movl %eax, -0x10(%rbp)
cmpl $0x0, -0x10(%rbp)
jbe 0x1621d
movq -0x30(%rbp), %rdi
movl $0xbbc504, %esi         # imm = 0xBBC504
callq 0x13540
movl %eax, %eax
movq %rax, -0x58(%rbp)
movq -0x30(%rbp), %rdi
movl $0xbbc508, %esi         # imm = 0xBBC508
callq 0x13540
movl %eax, %ecx
movq -0x58(%rbp), %rax
movl %ecx, %ecx
shlq $0x20, %rcx
addq %rcx, %rax
movl -0x10(%rbp), %ecx
xorl %edx, %edx
divq %rcx
movq %rax, -0x20(%rbp)
callq 0x16250
movq %rax, %rcx
leaq 0x256ee(%rip), %rax     # 0x3b8d0
movq 0x10(%rax), %r8
movq -0x20(%rbp), %rax
movl %eax, %r9d
movl -0x10(%rbp), %r11d
movl -0x14(%rbp), %r10d
movl -0x18(%rbp), %eax
movl $0x2, %edi
movl $0x1, %esi
leaq 0xe207(%rip), %rdx      # 0x24410
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
movl %eax, 0x10(%rsp)
movb $0x0, %al
callq 0x216e0
movq -0x30(%rbp), %rdi
movl $0xbbc400, %esi         # imm = 0xBBC400
movl $0x1, %edx
callq 0x14210
movq -0x30(%rbp), %rdi
movl $0xbbc400, %esi         # imm = 0xBBC400
movl $0x2, %edx
callq 0x14210
addq $0x70, %rsp
popq %rbp
retq
nopl (%rax)