static void disas_pc_rel_adr(DisasContext *s, uint32_t insn)

{

    unsigned int page, rd;

    uint64_t base;

    int64_t offset;



    page = extract32(insn, 31, 1);

    /* SignExtend(immhi:immlo) -> offset */

    offset = ((int64_t)sextract32(insn, 5, 19) << 2) | extract32(insn, 29, 2);

    rd = extract32(insn, 0, 5);

    base = s->pc - 4;



    if (page) {

        /* ADRP (page based) */

        base &= ~0xfff;

        offset <<= 12;

    }



    tcg_gen_movi_i64(cpu_reg(s, rd), base + offset);

}

static void disas_pc_rel_adr(DisasContext *s, uint32_t insn)

{

    unsigned int page, rd;

    uint64_t base;

    int64_t offset;



    page = extract32(insn, 31, 1);

    

    offset = ((int64_t)sextract32(insn, 5, 19) << 2) | extract32(insn, 29, 2);

    rd = extract32(insn, 0, 5);

    base = s->pc - 4;



    if (page) {

        

        base &= ~0xfff;

        offset <<= 12;

    }



    tcg_gen_movi_i64(cpu_reg(s, rd), base + offset);

}

    int64_t offset;     offset = ((int64_t)sextract32(insn, 5, 19) << 2) | extract32(insn, 29, 2);
static void FUNC_0(DisasContext *VAR_0, uint32_t VAR_1)

{

    unsigned int VAR_2, VAR_3;

    uint64_t base;

    int64_t offset;



    VAR_2 = extract32(VAR_1, 31, 1);

    

    offset = ((int64_t)sextract32(VAR_1, 5, 19) << 2) | extract32(VAR_1, 29, 2);

    VAR_3 = extract32(VAR_1, 0, 5);

    base = VAR_0->pc - 4;



    if (VAR_2) {

        

        base &= ~0xfff;

        offset <<= 12;

    }



    tcg_gen_movi_i64(cpu_reg(VAR_0, VAR_3), base + offset);

}

static void FUNC_0(DisasContext *VAR_0, uint32_t VAR_1)
{ unsigned int VAR_2, VAR_3; uint64_t base; int64_t offset; VAR_2 = extract32(VAR_1, 31, 1); offset = ((int64_t)sextract32(VAR_1, 5, 19) << 2) | extract32(VAR_1, 29, 2); VAR_3 = extract32(VAR_1, 0, 5); base = VAR_0->pc - 4; if (VAR_2) { base &= ~0xfff; offset <<= 12; } tcg_gen_movi_i64(cpu_reg(VAR_0, VAR_3), base + offset); }