// File: chenhn123[P]wdt_util_src/wdt_ct/wdt_dev_api.cpp
// Function: show_info(WdtDevice*, ExecParam*)
int show_info(WDT_DEV *pdev, EXEC_PARAM *pparam)
{
	BOARD_INFO	*pinfo = &pdev->board_info;	
	int ret = 0;

	if (!pdev || !pparam)
		return 0;

	if (!init_n_scan_device(pdev, pparam, 0))
		return 0;

	ret = !(pinfo->dev_type & (FW_MAYBE_ISP | FW_WDT8760_2_ISP));

	if (!ret)
		goto info_exit;

	if (pparam->argus & OPTION_HW_ID) {
		if (pdev->is_legacy)
			printf("%04x%04x", pinfo->vid, pinfo->pid);
		else {
			// to fix the temporary HWID issue, only happened in early build of Fleex.
			if (pinfo->hardware_id == 0x01027401)
				pinfo->hardware_id = 0x01017402;
			printf("%08x", pinfo->hardware_id);
		}
	}

	if (pparam->argus & OPTION_FW_VER) {
		if (pparam->argus & OPTION_HW_ID)
			printf("_");

		if (pdev->board_info.dev_type & FW_WDT8755) {
			printf("%04x", pinfo->firmware_id & 0xFFFF);
        	} else if (pdev->board_info.dev_type & FW_WDT8760_2) {
        		int fwrev = pinfo->dev_info.w8760_feature_devinfo.firmware_id & 0x0FFF;
        		int fwrexext = pinfo->dev_info.w8760_feature_devinfo.firmware_rev_ext & 0x000F;
        		int versionOuput = (fwrev << 4 | fwrexext);
			printf("%04x", versionOuput);
		}
		else if (pdev->board_info.dev_type & FW_WDT8790) {
			int fwrev = pinfo->dev_info.w8790_feature_devinfo.firmware_version & 0x0FFF;
                        int fwrexext = pinfo->dev_info.w8790_feature_devinfo.firmware_revision_ext & 0x000F;
                        int versionOuput = (fwrev << 4 | fwrexext);
                        printf("%04x", versionOuput);

		}
	}	
		
	if (pparam->argus & OPTION_CFG_CHKSUM) {
		if (pparam->argus & (OPTION_FW_VER | OPTION_HW_ID))
			printf("_");
		
		if (pdev->is_legacy)
			printf("%04x%04x", pinfo->sys_param.xmls_id1, pinfo->sys_param.xmls_id2);
		else 
			printf("%08x", pinfo->serial_no);
	}

	if (pparam->argus & (OPTION_HW_ID | OPTION_FW_VER | OPTION_CFG_CHKSUM)) {
		printf("\n");
		goto info_exit;
	}
	
	if (ret) {
		printf("Vendor_ID: 0x%04x\n", pinfo->vid);
		printf("Product_ID: 0x%04x\n", pinfo->pid);
		printf("Firmware_ID: 0x%x\n", pinfo->firmware_id);
		printf("Hardware_ID: 0x%x\n", pinfo->hardware_id);		
		printf("Serial_No: 0x%x\n", pinfo->serial_no);
		if ((pinfo->platform_id[1] & 0xF0) == 0x40)
			printf("Platform_ID: 0x%x(TC)\n", pinfo->platform_id[1]);			
		else
			printf("Platform_ID: 0x%x\n", pinfo->platform_id[1]);
		printf("XmlId1: %x   XmlId2: %x\n", pinfo->sys_param.xmls_id1, pinfo->sys_param.xmls_id2);
		printf("Param: phy_x %d, phy_y %d\n", pinfo->sys_param.Phy_Frmbuf_W, pinfo->sys_param.Phy_Frmbuf_H);
	} 

	if (pparam->argus & OPTION_EXTRA_INFO) {
		if (pinfo->dev_type & FW_WDT8755) {
			printf("\nprotocol_version 0x%x\n", pinfo->dev_info.w8755_dev_info.protocol_version);
			printf("firmware_id 0x%x\n", pinfo->dev_info.w8755_dev_info.firmware_id);
			printf("config_size 0x%x\n", pinfo->dev_info.w8755_dev_info.config_size);
			printf("parameter_map_sum 0x%x\n", pinfo->dev_info.w8755_dev_info.parameter_map_sum);
			printf("firmware_revision 0x%x\n", pinfo->dev_info.w8755_dev_info.firmware_revision);
			printf("max_points 0x%x\n", pinfo->dev_info.w8755_dev_info.max_points); 
			printf("bytes_per_point 0x%x\n", pinfo->dev_info.w8755_dev_info.bytes_per_point);	
			printf("customer_config_id 0x%x\n", pinfo->dev_info.w8755_dev_info.customer_config_id); 	
			printf("boot_partition: ");

			if (pinfo->dev_info.w8755_dev_info.boot_partition == W8755_BP_SECONDARY) 
			{
				printf("Secondary");
				printf("\n\nfastboot_addr: 0x%X\n", pinfo->sec_header.w8755_sec_header.fastboot_addr);
				printf("library_addr: 0x%X\n", pinfo->sec_header.w8755_sec_header.library_addr);
				printf("firmware_image_addr: 0x%X\n", pinfo->sec_header.w8755_sec_header.secondary_image_address);
				printf("parameter_addr: 0x%X\n", pinfo->sec_header.w8755_sec_header.secondary_param_addr);
				printf("ate_firmware_addr: 0x%X\n", pinfo->sec_header.w8755_sec_header.ate_firmware_addr);
				printf("recovery_addr: 0x%X\n", pinfo->sec_header.w8755_sec_header.recovery_addr);
				printf("param_clone_addr: 0x%X\n", pinfo->sec_header.w8755_sec_header.secondary_param_clone_addr);

			}
			else 
			{
				printf("Primary");
				printf("\n\nfastboot_addr: 0x%X\n", pinfo->sec_header.w8755_sec_header.fastboot_addr);
				printf("library_addr: 0x%X\n", pinfo->sec_header.w8755_sec_header.library_addr);
				printf("firmware_image_addr: 0x%X\n", pinfo->sec_header.w8755_sec_header.firmware_image_addr);
				printf("parameter_addr: 0x%X\n", pinfo->sec_header.w8755_sec_header.parameter_addr);
				printf("ate_firmware_addr: 0x%X\n", pinfo->sec_header.w8755_sec_header.ate_firmware_addr);
				printf("recovery_addr: 0x%X\n", pinfo->sec_header.w8755_sec_header.recovery_addr);
				printf("param_clone_addr: 0x%X\n", pinfo->sec_header.w8755_sec_header.param_clone_addr);
			}



		} else if (pinfo->dev_type & FW_WDT8760_2) {
			char str[16];	
			printf("\nMax_points 0x%X\n", pinfo->dev_info.w8760_feature_devinfo.n_touches_usb);
			printf("Bytes_per_point 0x%X\n", pinfo->dev_info.w8760_feature_devinfo.n_bytes_touch);		
			memset(str, 0, 16);
			memcpy(str, pinfo->dev_info.w8760_feature_devinfo.platform_id, 8);
			printf("Platform_id %s\n", str);
			memset(str, 0, 16);
			memcpy(str, pinfo->dev_info.w8760_feature_devinfo.program_name_fourcc, 4);
			printf("ProgramFourcc %s\n", str);
			printf("ProtocolRevision 0x%X\n", pinfo->dev_info.w8760_feature_devinfo.protocol_version);
			printf("FirmwareRevisionExt 0x%X\n", pinfo->dev_info.w8760_feature_devinfo.firmware_rev_ext);
			memset(str, 0, 16);
			memcpy(str, pinfo->dev_info.w8760_feature_devinfo.part_number_ext, 8);		
			printf("PartNumberExt %s\n", str);
		 }else if (pinfo->dev_type & FW_WDT8790) {
			char str[16] ;
			memset(str, 0xff, sizeof(str));
			printf("\nMaxTouches 0x%X\n", pinfo->dev_info.w8790_feature_devinfo.max_touches);
			printf("FirmwareRevisionExt 0x%X\n", pinfo->dev_info.w8790_feature_devinfo.firmware_revision_ext);
			printf("Partition 0x%X\n", pinfo->dev_info.w8790_feature_devinfo.partition);
			printf("PartitionFormatRevision 0x%X\n", pinfo->dev_info.w8790_feature_devinfo.partition_format_revision);

			if(memcmp(str, pinfo->dev_info.w8790_feature_devinfo.part_number, sizeof(str)) == 0)
				printf("PartNumber all 0xFF \n");
			else
			{
				memset(str, '\0', sizeof(str));
				memcpy(str, pinfo->dev_info.w8790_feature_devinfo.part_number, sizeof(pinfo->dev_info.w8790_feature_devinfo.part_number));
				printf("PartNumber %s\n", str);
			}
			printf("RomSignature ");
			for (int idx = 0; idx < 8; idx++)
				printf("%02X", pinfo->dev_info.w8790_feature_devinfo.rom_signature[idx]);
			printf("\n");
			memset(str, '\0', sizeof(str));
			memcpy(str, pinfo->dev_info.w8790_feature_devinfo.program_name_fourcc, 4);
			printf("ProgramFourcc %s\n", str);

		 }

	}

info_exit:	
	close_device(pdev);
	
	return ret;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x10(%rbp), %rax
addq $0x188, %rax            # imm = 0x188
movq %rax, -0x20(%rbp)
movl $0x0, -0x24(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0xa543
cmpq $0x0, -0x18(%rbp)
jne 0xa54f
movl $0x0, -0x4(%rbp)
jmp 0xad8e
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
xorl %edx, %edx
callq 0x9850
cmpl $0x0, %eax
jne 0xa56f
movl $0x0, -0x4(%rbp)
jmp 0xad8e
movq -0x20(%rbp), %rax
movl (%rax), %eax
andl $0x5001, %eax           # imm = 0x5001
cmpl $0x0, %eax
setne %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x24(%rbp)
cmpl $0x0, -0x24(%rbp)
jne 0xa595
jmp 0xad7f
movq -0x18(%rbp), %rax
movl (%rax), %eax
andl $0x4000, %eax           # imm = 0x4000
cmpl $0x0, %eax
je 0xa5fc
movq -0x10(%rbp), %rax
cmpl $0x0, 0x4(%rax)
je 0xa5cd
movq -0x20(%rbp), %rax
movl 0x4(%rax), %esi
movq -0x20(%rbp), %rax
movl 0x8(%rax), %edx
leaq 0x5cb4(%rip), %rdi      # 0x10278
movb $0x0, %al
callq 0x2050
jmp 0xa5fa
movq -0x20(%rbp), %rax
cmpl $0x1027401, 0x14(%rax)  # imm = 0x1027401
jne 0xa5e5
movq -0x20(%rbp), %rax
movl $0x1017402, 0x14(%rax)  # imm = 0x1017402
movq -0x20(%rbp), %rax
movl 0x14(%rax), %esi
leaq 0x5c8e(%rip), %rdi      # 0x10281
movb $0x0, %al
callq 0x2050
jmp 0xa5fc
movq -0x18(%rbp), %rax
movl (%rax), %eax
andl $0x1000, %eax           # imm = 0x1000
cmpl $0x0, %eax
je 0xa707
movq -0x18(%rbp), %rax
movl (%rax), %eax
andl $0x4000, %eax           # imm = 0x4000
cmpl $0x0, %eax
je 0xa62e
leaq 0x5c5f(%rip), %rdi      # 0x10286
movb $0x0, %al
callq 0x2050
movq -0x10(%rbp), %rax
movl 0x188(%rax), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0xa660
movq -0x20(%rbp), %rax
movl 0x10(%rax), %esi
andl $0xffff, %esi           # imm = 0xFFFF
leaq 0x5c28(%rip), %rdi      # 0x1027c
movb $0x0, %al
callq 0x2050
jmp 0xa705
movq -0x10(%rbp), %rax
movl 0x188(%rax), %eax
andl $0x2800, %eax           # imm = 0x2800
cmpl $0x0, %eax
je 0xa6b3
movq -0x20(%rbp), %rax
movl 0x70(%rax), %eax
andl $0xfff, %eax            # imm = 0xFFF
movl %eax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movzbl 0x90(%rax), %eax
andl $0xf, %eax
movl %eax, -0x2c(%rbp)
movl -0x28(%rbp), %eax
shll $0x4, %eax
orl -0x2c(%rbp), %eax
movl %eax, -0x30(%rbp)
movl -0x30(%rbp), %esi
leaq 0x5bd2(%rip), %rdi      # 0x1027c
movb $0x0, %al
callq 0x2050
jmp 0xa703
movq -0x10(%rbp), %rax
movl 0x188(%rax), %eax
andl $0x200, %eax            # imm = 0x200
cmpl $0x0, %eax
je 0xa701
movq -0x20(%rbp), %rax
movl 0x70(%rax), %eax
andl $0xfff, %eax            # imm = 0xFFF
movl %eax, -0x34(%rbp)
movq -0x20(%rbp), %rax
movzbl 0x7d(%rax), %eax
andl $0xf, %eax
movl %eax, -0x38(%rbp)
movl -0x34(%rbp), %eax
shll $0x4, %eax
orl -0x38(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %esi
leaq 0x5b82(%rip), %rdi      # 0x1027c
movb $0x0, %al
callq 0x2050
jmp 0xa703
jmp 0xa705
jmp 0xa707
movq -0x18(%rbp), %rax
movl (%rax), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
je 0xa776
movq -0x18(%rbp), %rax
movl (%rax), %eax
andl $0x5000, %eax           # imm = 0x5000
cmpl $0x0, %eax
je 0xa735
leaq 0x5b58(%rip), %rdi      # 0x10286
movb $0x0, %al
callq 0x2050
movq -0x10(%rbp), %rax
cmpl $0x0, 0x4(%rax)
je 0xa75f
movq -0x20(%rbp), %rax
movzwl 0x20(%rax), %esi
movq -0x20(%rbp), %rax
movzwl 0x22(%rax), %edx
leaq 0x5b22(%rip), %rdi      # 0x10278
movb $0x0, %al
callq 0x2050
jmp 0xa774
movq -0x20(%rbp), %rax
movl 0x18(%rax), %esi
leaq 0x5b14(%rip), %rdi      # 0x10281
movb $0x0, %al
callq 0x2050
jmp 0xa776
movq -0x18(%rbp), %rax
movl (%rax), %eax
andl $0x7000, %eax           # imm = 0x7000
cmpl $0x0, %eax
je 0xa799
leaq 0x553a(%rip), %rdi      # 0xfcc7
movb $0x0, %al
callq 0x2050
jmp 0xad7f
cmpl $0x0, -0x24(%rbp)
je 0xa888
movq -0x20(%rbp), %rax
movl 0x4(%rax), %esi
leaq 0x5ad7(%rip), %rdi      # 0x10288
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x5ad5(%rip), %rdi      # 0x1029b
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0x10(%rax), %esi
leaq 0x5ad4(%rip), %rdi      # 0x102af
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0x14(%rax), %esi
leaq 0x5ad2(%rip), %rdi      # 0x102c2
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0x18(%rax), %esi
leaq 0x5ad0(%rip), %rdi      # 0x102d5
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movzbl 0x43(%rax), %eax
andl $0xf0, %eax
cmpl $0x40, %eax
jne 0xa836
movq -0x20(%rbp), %rax
movzbl 0x43(%rax), %esi
leaq 0x5ab9(%rip), %rdi      # 0x102e6
movb $0x0, %al
callq 0x2050
jmp 0xa84c
movq -0x20(%rbp), %rax
movzbl 0x43(%rax), %esi
leaq 0x5ab8(%rip), %rdi      # 0x102fd
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movzwl 0x20(%rax), %esi
movq -0x20(%rbp), %rax
movzwl 0x22(%rax), %edx
leaq 0x5aad(%rip), %rdi      # 0x10310
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movzwl 0x24(%rax), %esi
movq -0x20(%rbp), %rax
movzwl 0x26(%rax), %edx
leaq 0x5aa8(%rip), %rdi      # 0x10329
movb $0x0, %al
callq 0x2050
movq -0x18(%rbp), %rax
movl (%rax), %eax
andl $0x10, %eax
cmpl $0x0, %eax
je 0xad7d
movq -0x20(%rbp), %rax
movl (%rax), %eax
andl $0x20, %eax
cmpl $0x0, %eax
je 0xaaf8
movq -0x20(%rbp), %rax
movl 0x70(%rax), %esi
leaq 0x5a8a(%rip), %rdi      # 0x10344
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0x74(%rax), %esi
leaq 0x5a8d(%rip), %rdi      # 0x1035c
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0x7c(%rax), %esi
leaq 0x5a8a(%rip), %rdi      # 0x1036e
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0x80(%rax), %esi
leaq 0x5a84(%rip), %rdi      # 0x10380
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0x84(%rax), %esi
leaq 0x5a84(%rip), %rdi      # 0x10398
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0x88(%rax), %esi
leaq 0x5a84(%rip), %rdi      # 0x103b0
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0x8c(%rax), %esi
leaq 0x5a7d(%rip), %rdi      # 0x103c1
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0x90(%rax), %esi
leaq 0x5a7b(%rip), %rdi      # 0x103d7
movb $0x0, %al
callq 0x2050
leaq 0x5a86(%rip), %rdi      # 0x103f0
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
cmpl $0x2, 0x94(%rax)
jne 0xaa3d
leaq 0x5a78(%rip), %rdi      # 0x10401
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0xac(%rax), %esi
leaq 0x5a6a(%rip), %rdi      # 0x1040b
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0xb0(%rax), %esi
leaq 0x5a69(%rip), %rdi      # 0x10422
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0xc8(%rax), %esi
leaq 0x5a65(%rip), %rdi      # 0x10436
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0xcc(%rax), %esi
leaq 0x5a68(%rip), %rdi      # 0x10451
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0xbc(%rax), %esi
leaq 0x5a66(%rip), %rdi      # 0x10467
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0xc0(%rax), %esi
leaq 0x5a67(%rip), %rdi      # 0x10480
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0xd0(%rax), %esi
leaq 0x5a64(%rip), %rdi      # 0x10495
movb $0x0, %al
callq 0x2050
jmp 0xaaf3
leaq 0x5a69(%rip), %rdi      # 0x104ad
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0xac(%rax), %esi
leaq 0x59af(%rip), %rdi      # 0x1040b
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0xb0(%rax), %esi
leaq 0x59ae(%rip), %rdi      # 0x10422
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0xb4(%rax), %esi
leaq 0x59aa(%rip), %rdi      # 0x10436
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0xb8(%rax), %esi
leaq 0x59ad(%rip), %rdi      # 0x10451
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0xbc(%rax), %esi
leaq 0x59ab(%rip), %rdi      # 0x10467
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0xc0(%rax), %esi
leaq 0x59ac(%rip), %rdi      # 0x10480
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movl 0xc4(%rax), %esi
leaq 0x59a9(%rip), %rdi      # 0x10495
movb $0x0, %al
callq 0x2050
jmp 0xad7b
movq -0x20(%rbp), %rax
movl (%rax), %eax
andl $0x2800, %eax           # imm = 0x2800
cmpl $0x0, %eax
je 0xabfd
movq -0x20(%rbp), %rax
movzbl 0x7c(%rax), %esi
leaq 0x599a(%rip), %rdi      # 0x104b5
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movzbl 0x7d(%rax), %esi
leaq 0x5996(%rip), %rdi      # 0x104c7
movb $0x0, %al
callq 0x2050
leaq -0x50(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0x2110
movq -0x20(%rbp), %rax
movq 0x7f(%rax), %rax
movq %rax, -0x50(%rbp)
leaq -0x50(%rbp), %rsi
leaq 0x597e(%rip), %rdi      # 0x104dd
movb $0x0, %al
callq 0x2050
leaq -0x50(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0x2110
movq -0x20(%rbp), %rax
movl 0x95(%rax), %eax
movl %eax, -0x50(%rbp)
leaq -0x50(%rbp), %rsi
leaq 0x595f(%rip), %rdi      # 0x104ed
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movzbl 0x8f(%rax), %esi
leaq 0x5958(%rip), %rdi      # 0x104ff
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movzbl 0x90(%rax), %esi
leaq 0x5956(%rip), %rdi      # 0x10516
movb $0x0, %al
callq 0x2050
leaq -0x50(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0x2110
movq -0x20(%rbp), %rax
movq 0xa1(%rax), %rax
movq %rax, -0x50(%rbp)
leaq -0x50(%rbp), %rsi
leaq 0x593f(%rip), %rdi      # 0x10530
movb $0x0, %al
callq 0x2050
jmp 0xad79
movq -0x20(%rbp), %rax
movl (%rax), %eax
andl $0x200, %eax            # imm = 0x200
cmpl $0x0, %eax
je 0xad77
leaq -0x60(%rbp), %rdi
movl $0xff, %esi
movl $0x10, %edx
callq 0x2110
movq -0x20(%rbp), %rax
movzbl 0x7c(%rax), %esi
leaq 0x590f(%rip), %rdi      # 0x10542
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movzbl 0x7d(%rax), %esi
leaq 0x58cd(%rip), %rdi      # 0x10516
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movzbl 0x7e(%rax), %esi
leaq 0x58f5(%rip), %rdi      # 0x10554
movb $0x0, %al
callq 0x2050
movq -0x20(%rbp), %rax
movzbl 0x7f(%rax), %esi
leaq 0x58ef(%rip), %rdi      # 0x10564
movb $0x0, %al
callq 0x2050
leaq -0x60(%rbp), %rax
movq -0x20(%rbp), %rcx
addq $0x70, %rcx
addq $0x10, %rcx
movups (%rcx), %xmm1
movups (%rax), %xmm0
pcmpeqb %xmm1, %xmm0
pmovmskb %xmm0, %eax
subl $0xffff, %eax           # imm = 0xFFFF
setne %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0xacba
leaq 0x58d1(%rip), %rdi      # 0x10582
movb $0x0, %al
callq 0x2050
jmp 0xacf6
leaq -0x60(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0x2110
movq -0x20(%rbp), %rax
movq 0x80(%rax), %rcx
movq %rcx, -0x60(%rbp)
movq 0x88(%rax), %rax
movq %rax, -0x58(%rbp)
leaq -0x60(%rbp), %rsi
leaq 0x58a9(%rip), %rdi      # 0x10598
movb $0x0, %al
callq 0x2050
leaq 0x58aa(%rip), %rdi      # 0x105a7
movb $0x0, %al
callq 0x2050
movl $0x0, -0x64(%rbp)
cmpl $0x8, -0x64(%rbp)
jge 0xad3a
movq -0x20(%rbp), %rax
movslq -0x64(%rbp), %rcx
movzbl 0x90(%rax,%rcx), %esi
leaq 0x588d(%rip), %rdi      # 0x105b5
movb $0x0, %al
callq 0x2050
movl -0x64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x64(%rbp)
jmp 0xad0b
leaq 0x4f86(%rip), %rdi      # 0xfcc7
movb $0x0, %al
callq 0x2050
leaq -0x60(%rbp), %rdi
xorl %esi, %esi
movl $0x10, %edx
callq 0x2110
movq -0x20(%rbp), %rax
movl 0x98(%rax), %eax
movl %eax, -0x60(%rbp)
leaq -0x60(%rbp), %rsi
leaq 0x577d(%rip), %rdi      # 0x104ed
movb $0x0, %al
callq 0x2050
jmp 0xad79
jmp 0xad7b
jmp 0xad7d
jmp 0xad7f
movq -0x10(%rbp), %rdi
callq 0x9ba0
movl -0x24(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x70, %rsp
popq %rbp
retq
nopw (%rax,%rax)