#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */
typedef int /*<<< orphan*/ sz2;
typedef int /*<<< orphan*/ sz1;

/* Variables and functions */
int aml_m8_sec_boot_check(unsigned char *, unsigned char *, int,
                          unsigned char *, int, int /*<<< orphan*/);
int aml_sec_boot_check_efuse(unsigned char *pSRC) {
  unsigned char sz1[] = {
      0xC4, 0x78, 0x4C, 0xC7, 0x7A, 0xE8, 0xF2, 0xDB, 0x2C, 0xBD, 0x08, 0x17,
      0xF7, 0xB5, 0xE9, 0xAE, 0xBB, 0x5B, 0xD0, 0xEC, 0x65, 0x2A, 0xF8, 0x47,
      0xAA, 0x7C, 0xE8, 0x71, 0x39, 0x6E, 0xD7, 0xFB, 0xFC, 0x8A, 0x38, 0x94,
      0x34, 0xE3, 0x3A, 0xDF, 0x0E, 0x19, 0x5A, 0x24, 0x9B, 0xC1, 0x88, 0x77,
      0x6B, 0xFA, 0x63, 0x27, 0x89, 0x18, 0x27, 0x67, 0xE1, 0xE7, 0x0E, 0xD2,
      0xC4, 0x88, 0x2B, 0xE8, 0xF1, 0x0E, 0x0C, 0x26, 0x22, 0xB5, 0xB0, 0x81,
      0x22, 0x63, 0xAA, 0xAD, 0x46, 0xC8, 0xD6, 0x19, 0x7C, 0x0C, 0xD0, 0x8C,
      0xEF, 0xE7, 0x9A, 0x8E, 0x14, 0x6A, 0x49, 0x27, 0xCD, 0xD5, 0xBF, 0x91,
      0xF8, 0x5B, 0x9E, 0x2A, 0xF1, 0x0C, 0xD2, 0x07, 0x67, 0xF5, 0x90, 0xB2,
      0x84, 0x71, 0x68, 0x82, 0x09, 0x0F, 0x63, 0x13, 0x1B, 0x4F, 0xED, 0x55,
      0x49, 0x8B, 0x95, 0x4F, 0x28, 0xC0, 0x8E, 0x29,
  };
  unsigned char sz2[] = {
      0x01,
      0x37,
      0x4B,
  };
  return aml_m8_sec_boot_check(pSRC, sz1, sizeof(sz1), sz2, sizeof(sz2), 0);
}


x86 assembly (clang, -O0):
<aml_sec_boot_check_efuse>:
push   %rbp
mov    %rsp,%rbp
sub    $0xa0,%rsp
mov    %rdi,-0x8(%rbp)
lea    -0x90(%rbp),%rdi
lea    0xec3(%rip),%rsi
mov    $0x80,%edx
call   1030 <memcpy@plt>
mov    0xf32(%rip),%ax
mov    %ax,-0x93(%rbp)
mov    0xf27(%rip),%al
mov    %al,-0x91(%rbp)
mov    -0x8(%rbp),%rdi
lea    -0x90(%rbp),%rsi
lea    -0x93(%rbp),%rcx
mov    $0x80,%edx
mov    $0x3,%r8d
xor    %r9d,%r9d
call   1040 <aml_m8_sec_boot_check@plt>
add    $0xa0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<aml_sec_boot_check_efuse>:
sub    $0x98,%rsp
movaps 0xf52(%rip),%xmm0
movaps %xmm0,0x80(%rsp)
movaps 0xf33(%rip),%xmm0
movaps %xmm0,0x70(%rsp)
movaps 0xf17(%rip),%xmm0
movaps %xmm0,0x60(%rsp)
movaps 0xefb(%rip),%xmm0
movaps %xmm0,0x50(%rsp)
movaps 0xedf(%rip),%xmm0
movaps %xmm0,0x40(%rsp)
movaps 0xec3(%rip),%xmm0
movaps %xmm0,0x30(%rsp)
movaps 0xea7(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movaps 0xe8b(%rip),%xmm0
movaps %xmm0,0x10(%rsp)
movb   $0x4b,0xe(%rsp)
movw   $0x3701,0xc(%rsp)
lea    0x10(%rsp),%rsi
lea    0xc(%rsp),%rcx
mov    $0x80,%edx
mov    $0x3,%r8d
xor    %r9d,%r9d
call   1030 <aml_m8_sec_boot_check@plt>
add    $0x98,%rsp
ret

LLVM IR (-O0):
@__const.aml_sec_boot_check_efuse.sz1 = [128 x i8] c"\C4xL\C7z\E8\F2\DB,\BD\08\17\F7\B5\E9\AE\BB[\D0\ECe*\F8G\AA|\E8q9n\D7\FB\FC\8A8\944\E3:\DF\0E\19Z$\9B\C1\88wk\FAc'\89\18'g\E1\E7\0E\D2\C4\88+\E8\F1\0E\0C&\22\B5\B0\81\22c\AA\ADF\C8\D6\19|\0C\D0\8C\EF\E7\9A\8E\14jI'\CD\D5\BF\91\F8[\9E*\F1\0C\D2\07g\F5\90\B2\84qh\82\09\0Fc\13\1BO\EDUI\8B\95O(\C0\8E)"
@__const.aml_sec_boot_check_efuse.sz2 = [3 x i8] c"\017K"
define i32 @aml_sec_boot_check_efuse(i8* %0) {
%2 = alloca i8*
%3 = alloca [128 x i8]
%4 = alloca [3 x i8]
store i8* %0, i8** %2
%5 = bitcast [128 x i8]* %3 to i8*
%6 = bitcast [3 x i8]* %4 to i8*
%7 = load i8*, i8** %2
%8 = getelementptr inbounds [128 x i8], [128 x i8]* %3, i64 0, i64 0
%9 = getelementptr inbounds [3 x i8], [3 x i8]* %4, i64 0, i64 0
%10 = call i32 @aml_m8_sec_boot_check(i8* %7, i8* %8, i32 128, i8* %9, i32 3, i32 0)
ret i32 %10
}

LLVM IR (-O2):
@__const.aml_sec_boot_check_efuse.sz1 = [128 x i8] c"\C4xL\C7z\E8\F2\DB,\BD\08\17\F7\B5\E9\AE\BB[\D0\ECe*\F8G\AA|\E8q9n\D7\FB\FC\8A8\944\E3:\DF\0E\19Z$\9B\C1\88wk\FAc'\89\18'g\E1\E7\0E\D2\C4\88+\E8\F1\0E\0C&\22\B5\B0\81\22c\AA\ADF\C8\D6\19|\0C\D0\8C\EF\E7\9A\8E\14jI'\CD\D5\BF\91\F8[\9E*\F1\0C\D2\07g\F5\90\B2\84qh\82\09\0Fc\13\1BO\EDUI\8B\95O(\C0\8E)"
@__const.aml_sec_boot_check_efuse.sz2 = [3 x i8] c"\017K"
define i32 @aml_sec_boot_check_efuse(i8* %0) {
%2 = alloca [128 x i8]
%3 = alloca [3 x i8]
%4 = getelementptr inbounds [128 x i8], [128 x i8]* %2, i64 0, i64 0
%5 = getelementptr inbounds [3 x i8], [3 x i8]* %3, i64 0, i64 0
%6 = call i32 @aml_m8_sec_boot_check(i8* %0, i8* %4, i32 128, i8* %5, i32 3, i32 0)
ret i32 %6
}