* Re: [PATCH v4 2/2] powerpc/hv-24x7: Add sysfs files inside hv-24x7 device to show cpumask
From: Madhavan Srinivasan @ 2020-07-08 9:34 UTC (permalink / raw)
To: Kajol Jain, linuxppc-dev, mpe; +Cc: nathanl, ego, suka, maddy, anju
In-Reply-To: <20200708085955.655686-3-kjain@linux.ibm.com>
On 7/8/20 2:29 PM, Kajol Jain wrote:
> Patch here adds a cpumask attr to hv_24x7 pmu along with ABI documentation.
>
> Primary use to expose the cpumask is for the perf tool which has the
> capability to parse the driver sysfs folder and understand the
> cpumask file. Having cpumask file will reduce the number of perf command
> line parameters (will avoid "-C" option in the perf tool
> command line). It can also notify the user which is
> the current cpu used to retrieve the counter data.
>
> command:# cat /sys/devices/hv_24x7/cpumask
> 0
>
> Signed-off-by: Kajol Jain <kjain@linux.ibm.com>
> Reviewed-by: Gautham R. Shenoy <ego@linux.vnet.ibm.com>
> ---
> .../sysfs-bus-event_source-devices-hv_24x7 | 7 ++++
> arch/powerpc/perf/hv-24x7.c | 33 ++++++++++++++++++-
> 2 files changed, 39 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7 b/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7
> index e8698afcd952..ee89d0e94602 100644
> --- a/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7
> +++ b/Documentation/ABI/testing/sysfs-bus-event_source-devices-hv_24x7
> @@ -43,6 +43,13 @@ Description: read only
> This sysfs interface exposes the number of cores per chip
> present in the system.
>
> +What: /sys/devices/hv_24x7/cpumask
> +Date: June 2020
> +Contact: Linux on PowerPC Developer List <linuxppc-dev@lists.ozlabs.org>
> +Description: read only
> + This sysfs file exposes the cpumask which is designated to make
> + HCALLs to retrieve hv-24x7 pmu event counter data.
> +
> What: /sys/bus/event_source/devices/hv_24x7/event_descs/<event-name>
> Date: February 2014
> Contact: Linux on PowerPC Developer List <linuxppc-dev@lists.ozlabs.org>
> diff --git a/arch/powerpc/perf/hv-24x7.c b/arch/powerpc/perf/hv-24x7.c
> index 93b4700dcf8c..3f769bb2d06a 100644
> --- a/arch/powerpc/perf/hv-24x7.c
> +++ b/arch/powerpc/perf/hv-24x7.c
> @@ -448,6 +448,12 @@ static ssize_t device_show_string(struct device *dev,
> return sprintf(buf, "%s\n", (char *)d->var);
> }
>
> +static ssize_t cpumask_get_attr(struct device *dev,
> + struct device_attribute *attr, char *buf)
> +{
> + return cpumap_print_to_pagebuf(true, buf, &hv_24x7_cpumask);
> +}
> +
> static ssize_t sockets_show(struct device *dev,
> struct device_attribute *attr, char *buf)
> {
> @@ -1116,6 +1122,17 @@ static DEVICE_ATTR_RO(sockets);
> static DEVICE_ATTR_RO(chipspersocket);
> static DEVICE_ATTR_RO(coresperchip);
>
> +static DEVICE_ATTR(cpumask, S_IRUGO, cpumask_get_attr, NULL);
> +
> +static struct attribute *cpumask_attrs[] = {
> + &dev_attr_cpumask.attr,
> + NULL,
> +};
> +
> +static struct attribute_group cpumask_attr_group = {
> + .attrs = cpumask_attrs,
> +};
> +
> static struct bin_attribute *if_bin_attrs[] = {
> &bin_attr_catalog,
> NULL,
> @@ -1143,6 +1160,11 @@ static const struct attribute_group *attr_groups[] = {
> &event_desc_group,
> &event_long_desc_group,
> &if_group,
> + /*
> + * This NULL is a placeholder for the cpumask attr which will update
> + * onlyif cpuhotplug registration is successful
> + */
> + NULL,
> NULL,
> };
>
> @@ -1684,7 +1706,7 @@ static int hv_24x7_cpu_hotplug_init(void)
>
> static int hv_24x7_init(void)
> {
> - int r;
> + int r, i = -1;
> unsigned long hret;
> struct hv_perf_caps caps;
>
> @@ -1731,6 +1753,15 @@ static int hv_24x7_init(void)
> if (r)
> return r;
>
> + /*
> + * Cpu hotplug init is successful, add the
> + * cpumask file as part of pmu attr group and
> + * assign it to very first NULL location.
> + */
> + while (attr_groups[++i])
> + /* nothing */;
> + attr_groups[i] = &cpumask_attr_group;
> +
We can avoid this complex stuff right.
Now that if the cpuhotplug init fail, we fail the pmu
registration right, with that, we dont need this dance.
Cant we just add the cpumask_attr_group right next to if_group
in "attr_group"?
Maddy
> r = perf_pmu_register(&h_24x7_pmu, h_24x7_pmu.name, -1);
> if (r)
> return r;
^ permalink raw reply
* Re: [PATCH] selftests/powerpc: Purge extra count_pmc() calls of ebb selftests
From: Sachin Sant @ 2020-07-08 10:38 UTC (permalink / raw)
To: Desnes A. Nunes do Rosario; +Cc: shuah, linuxppc-dev
In-Reply-To: <20200626164737.21943-1-desnesn@linux.ibm.com>
> On 26-Jun-2020, at 10:17 PM, Desnes A. Nunes do Rosario <desnesn@linux.ibm.com> wrote:
>
> An extra count on ebb_state.stats.pmc_count[PMC_INDEX(pmc)] is being per-
> formed when count_pmc() is used to reset PMCs on a few selftests. This
> extra pmc_count can occasionally invalidate results, such as the ones from
> cycles_test shown hereafter. The ebb_check_count() failed with an above
> the upper limit error due to the extra value on ebb_state.stats.pmc_count.
>
> Furthermore, this extra count is also indicated by extra PMC1 trace_log on
> the output of the cycle test (as well as on pmc56_overflow_test):
>
> ==========
> ...
> [21]: counter = 8
> [22]: register SPRN_MMCR0 = 0x0000000080000080
> [23]: register SPRN_PMC1 = 0x0000000080000004
> [24]: counter = 9
> [25]: register SPRN_MMCR0 = 0x0000000080000080
> [26]: register SPRN_PMC1 = 0x0000000080000004
> [27]: counter = 10
> [28]: register SPRN_MMCR0 = 0x0000000080000080
> [29]: register SPRN_PMC1 = 0x0000000080000004
>>> [30]: register SPRN_PMC1 = 0x000000004000051e
> PMC1 count (0x280000546) above upper limit 0x2800003e8 (+0x15e)
> [FAIL] Test FAILED on line 52
> failure: cycles
> ==========
>
> Signed-off-by: Desnes A. Nunes do Rosario <desnesn@linux.ibm.com>
> ---
I too have run into similar failure with cycles_test. I will add that the failure
is inconsistent. I have run into this issue 1 out of 25 times. The failure always
happen at first instance. Subsequent tries work correctly.
With this patch applied the test completes successfully 25 out of 25 times.
# ./cycles_test
test: cycles
…..
…..
[25]: register SPRN_MMCR0 = 0x0000000080000080
[26]: register SPRN_PMC1 = 0x0000000080000004
[27]: counter = 10
[28]: register SPRN_MMCR0 = 0x0000000080000080
[29]: register SPRN_PMC1 = 0x0000000080000004
[30]: register SPRN_PMC1 = 0x000000004000048f
PMC1 count (0x2800004b7) above upper limit 0x2800003e8 (+0xcf)
[FAIL] Test FAILED on line 52
failure: cycles
With the patch
# ./cycles_test
test: cycles
…..
…..
[25]: register SPRN_MMCR0 = 0x0000000080000080
[26]: register SPRN_PMC1 = 0x0000000080000004
[27]: counter = 10
[28]: register SPRN_MMCR0 = 0x0000000080000080
[29]: register SPRN_PMC1 = 0x0000000080000004
PMC1 count (0x280000028) is between 0x27ffffc18 and 0x2800003e8 delta +0x410/-0x3c0
success: cycles
#
FWIW Tested-by : Sachin Sant <sachinp@linux.vnet.ibm.com>
Thanks
-Sachin
^ permalink raw reply
* Re: [PATCH v2 06/10] powerpc/perf: power10 Performance Monitoring support
From: Athira Rajeev @ 2020-07-08 10:56 UTC (permalink / raw)
To: Michael Neuling; +Cc: maddy, linuxppc-dev
In-Reply-To: <babc98c50100bb2cc925a6518bdb885909f0c473.camel@neuling.org>
> On 07-Jul-2020, at 12:20 PM, Michael Neuling <mikey@neuling.org> wrote:
>
>
>> @@ -480,6 +520,7 @@ int isa207_compute_mmcr(u64 event[], int n_ev,
>> mmcr[1] = mmcr1;
>> mmcr[2] = mmcra;
>> mmcr[3] = mmcr2;
>> + mmcr[4] = mmcr3;
>
> This is fragile like the kvm vcpu case I commented on before but it gets passed
> in via a function parameter?! Can you create a struct to store these in rather
> than this odd ball numbering?
Mikey,
Yes, it gets passed as cpuhw->mmcr array
I will check on these cleanup changes for the kvm vcpu case as well as cpu_hw_events mmcr array
Thanks
Athira
>
> The cleanup should start in patch 1/10 here:
>
> /*
> * The order of the MMCR array is:
> - * - 64-bit, MMCR0, MMCR1, MMCRA, MMCR2
> + * - 64-bit, MMCR0, MMCR1, MMCRA, MMCR2, MMCR3
> * - 32-bit, MMCR0, MMCR1, MMCR2
> */
> - unsigned long mmcr[4];
> + unsigned long mmcr[5];
>
>
>
> mikey
^ permalink raw reply
* Re: [PATCH v2 01/10] powerpc/perf: Add support for ISA3.1 PMU SPRs
From: Michael Ellerman @ 2020-07-08 11:02 UTC (permalink / raw)
To: Athira Rajeev; +Cc: mikey, maddy, linuxppc-dev
In-Reply-To: <1593595262-1433-2-git-send-email-atrajeev@linux.vnet.ibm.com>
Athira Rajeev <atrajeev@linux.vnet.ibm.com> writes:
...
> diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c
> index cd6a742..5c64bd3 100644
> --- a/arch/powerpc/perf/core-book3s.c
> +++ b/arch/powerpc/perf/core-book3s.c
> @@ -39,10 +39,10 @@ struct cpu_hw_events {
> unsigned int flags[MAX_HWEVENTS];
> /*
> * The order of the MMCR array is:
> - * - 64-bit, MMCR0, MMCR1, MMCRA, MMCR2
> + * - 64-bit, MMCR0, MMCR1, MMCRA, MMCR2, MMCR3
> * - 32-bit, MMCR0, MMCR1, MMCR2
> */
> - unsigned long mmcr[4];
> + unsigned long mmcr[5];
> struct perf_event *limited_counter[MAX_LIMITED_HWCOUNTERS];
> u8 limited_hwidx[MAX_LIMITED_HWCOUNTERS];
> u64 alternatives[MAX_HWEVENTS][MAX_EVENT_ALTERNATIVES];
...
> @@ -1310,6 +1326,10 @@ static void power_pmu_enable(struct pmu *pmu)
> if (!cpuhw->n_added) {
> mtspr(SPRN_MMCRA, cpuhw->mmcr[2] & ~MMCRA_SAMPLE_ENABLE);
> mtspr(SPRN_MMCR1, cpuhw->mmcr[1]);
> +#ifdef CONFIG_PPC64
> + if (ppmu->flags & PPMU_ARCH_310S)
> + mtspr(SPRN_MMCR3, cpuhw->mmcr[4]);
> +#endif /* CONFIG_PPC64 */
> goto out_enable;
> }
>
> @@ -1353,6 +1373,11 @@ static void power_pmu_enable(struct pmu *pmu)
> if (ppmu->flags & PPMU_ARCH_207S)
> mtspr(SPRN_MMCR2, cpuhw->mmcr[3]);
>
> +#ifdef CONFIG_PPC64
> + if (ppmu->flags & PPMU_ARCH_310S)
> + mtspr(SPRN_MMCR3, cpuhw->mmcr[4]);
> +#endif /* CONFIG_PPC64 */
I don't think you need the #ifdef CONFIG_PPC64?
cheers
^ permalink raw reply
* Re: [PATCH v2 03/10] powerpc/xmon: Add PowerISA v3.1 PMU SPRs
From: Michael Ellerman @ 2020-07-08 11:04 UTC (permalink / raw)
To: Athira Rajeev; +Cc: mikey, maddy, linuxppc-dev
In-Reply-To: <1593595262-1433-4-git-send-email-atrajeev@linux.vnet.ibm.com>
Athira Rajeev <atrajeev@linux.vnet.ibm.com> writes:
> From: Madhavan Srinivasan <maddy@linux.ibm.com>
>
> PowerISA v3.1 added three new perfromance
> monitoring unit (PMU) speical purpose register (SPR).
> They are Monitor Mode Control Register 3 (MMCR3),
> Sampled Instruction Event Register 2 (SIER2),
> Sampled Instruction Event Register 3 (SIER3).
>
> Patch here adds a new dump function dump_310_sprs
> to print these SPR values.
>
> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
> ---
> arch/powerpc/xmon/xmon.c | 15 +++++++++++++++
> 1 file changed, 15 insertions(+)
>
> diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c
> index 7efe4bc..8917fe8 100644
> --- a/arch/powerpc/xmon/xmon.c
> +++ b/arch/powerpc/xmon/xmon.c
> @@ -2022,6 +2022,20 @@ static void dump_300_sprs(void)
> #endif
> }
>
> +static void dump_310_sprs(void)
> +{
> +#ifdef CONFIG_PPC64
> + if (!cpu_has_feature(CPU_FTR_ARCH_31))
> + return;
> +
> + printf("mmcr3 = %.16lx\n",
> + mfspr(SPRN_MMCR3));
> +
> + printf("sier2 = %.16lx sier3 = %.16lx\n",
> + mfspr(SPRN_SIER2), mfspr(SPRN_SIER3));
Why not all on one line like many of the others?
cheers
^ permalink raw reply
* Re: [PATCH v2 04/10] powerpc/perf: Add power10_feat to dt_cpu_ftrs
From: Michael Ellerman @ 2020-07-08 11:15 UTC (permalink / raw)
To: Athira Rajeev; +Cc: mikey, maddy, linuxppc-dev
In-Reply-To: <1593595262-1433-5-git-send-email-atrajeev@linux.vnet.ibm.com>
Athira Rajeev <atrajeev@linux.vnet.ibm.com> writes:
> From: Madhavan Srinivasan <maddy@linux.ibm.com>
>
> Add power10 feature function to dt_cpu_ftrs.c along
> with a power10 specific init() to initialize pmu sprs.
>
> Signed-off-by: Madhavan Srinivasan <maddy@linux.ibm.com>
> ---
> arch/powerpc/include/asm/reg.h | 3 +++
> arch/powerpc/kernel/cpu_setup_power.S | 7 +++++++
> arch/powerpc/kernel/dt_cpu_ftrs.c | 26 ++++++++++++++++++++++++++
> 3 files changed, 36 insertions(+)
>
> diff --git a/arch/powerpc/include/asm/reg.h b/arch/powerpc/include/asm/reg.h
> index 21a1b2d..900ada1 100644
> --- a/arch/powerpc/include/asm/reg.h
> +++ b/arch/powerpc/include/asm/reg.h
> @@ -1068,6 +1068,9 @@
> #define MMCR0_PMC2_LOADMISSTIME 0x5
> #endif
>
> +/* BHRB disable bit for PowerISA v3.10 */
> +#define MMCRA_BHRB_DISABLE 0x0000002000000000
> +
> /*
> * SPRG usage:
> *
> diff --git a/arch/powerpc/kernel/cpu_setup_power.S b/arch/powerpc/kernel/cpu_setup_power.S
> index efdcfa7..e8b3370c 100644
> --- a/arch/powerpc/kernel/cpu_setup_power.S
> +++ b/arch/powerpc/kernel/cpu_setup_power.S
> @@ -233,3 +233,10 @@ __init_PMU_ISA207:
> li r5,0
> mtspr SPRN_MMCRS,r5
> blr
> +
> +__init_PMU_ISA31:
> + li r5,0
> + mtspr SPRN_MMCR3,r5
> + LOAD_REG_IMMEDIATE(r5, MMCRA_BHRB_DISABLE)
> + mtspr SPRN_MMCRA,r5
> + blr
This doesn't seem like it belongs in this patch. It's not called?
cheers
^ permalink raw reply
* [PATCH] arch: powerpc: Remove unnecessary cast in kfree()
From: Xu Wang @ 2020-07-08 7:22 UTC (permalink / raw)
To: mpe, benh, paulus, vulab, linuxppc-dev; +Cc: linux-kernel
Remove unnecassary casts in the argument to kfree.
Signed-off-by: Xu Wang <vulab@iscas.ac.cn>
---
arch/powerpc/platforms/pseries/dlpar.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/arch/powerpc/platforms/pseries/dlpar.c b/arch/powerpc/platforms/pseries/dlpar.c
index 16e86ba8aa20..1f3d26806295 100644
--- a/arch/powerpc/platforms/pseries/dlpar.c
+++ b/arch/powerpc/platforms/pseries/dlpar.c
@@ -379,7 +379,7 @@ static void pseries_hp_work_fn(struct work_struct *work)
handle_dlpar_errorlog(hp_work->errlog);
kfree(hp_work->errlog);
- kfree((void *)work);
+ kfree(work);
}
void queue_hotplug_event(struct pseries_hp_errorlog *hp_errlog)
--
2.17.1
^ permalink raw reply related
* Re: [PATCH v2 07/10] powerpc/perf: support BHRB disable bit and new filtering modes
From: Athira Rajeev @ 2020-07-08 7:41 UTC (permalink / raw)
To: Michael Neuling; +Cc: Vaidyanathan Srinivasan, maddy, linuxppc-dev, ego
In-Reply-To: <0cf26e42a3b190d5ea69d1ba61ae71bcaeee1973.camel@neuling.org>
[-- Attachment #1: Type: text/plain, Size: 8382 bytes --]
> On 07-Jul-2020, at 12:47 PM, Michael Neuling <mikey@neuling.org> wrote:
>
> On Wed, 2020-07-01 at 05:20 -0400, Athira Rajeev wrote:
>> PowerISA v3.1 has few updates for the Branch History Rolling Buffer(BHRB).
>> First is the addition of BHRB disable bit and second new filtering
>> modes for BHRB.
>>
>> BHRB disable is controlled via Monitor Mode Control Register A (MMCRA)
>> bit 26, namely "BHRB Recording Disable (BHRBRD)". This field controls
>> whether BHRB entries are written when BHRB recording is enabled by other
>> bits. Patch implements support for this BHRB disable bit.
>
> Probably good to note here that this is backwards compatible. So if you have a
> kernel that doesn't know about this bit, it'll clear it and hence you still get
> BHRB.
>
> You should also note why you'd want to do disable this (ie. the core will run
> faster).
>
Sure Mikey, will add these information in commit message
Thanks
Athira
>> Secondly PowerISA v3.1 introduce filtering support for
>> PERF_SAMPLE_BRANCH_IND_CALL/COND. The patch adds BHRB filter support
>> for "ind_call" and "cond" in power10_bhrb_filter_map().
>>
>> 'commit bb19af816025 ("powerpc/perf: Prevent kernel address leak to userspace
>> via BHRB buffer")'
>> added a check in bhrb_read() to filter the kernel address from BHRB buffer.
>> Patch here modified
>> it to avoid that check for PowerISA v3.1 based processors, since PowerISA v3.1
>> allows
>> only MSR[PR]=1 address to be written to BHRB buffer.
>>
>> Signed-off-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
>> ---
>> arch/powerpc/perf/core-book3s.c | 27 +++++++++++++++++++++------
>> arch/powerpc/perf/isa207-common.c | 13 +++++++++++++
>> arch/powerpc/perf/power10-pmu.c | 13 +++++++++++--
>> arch/powerpc/platforms/powernv/idle.c | 14 ++++++++++++++
>
> This touches the idle code so we should get those guys on CC (adding Vaidy and
> Ego).
>
>> 4 files changed, 59 insertions(+), 8 deletions(-)
>>
>> diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c
>> index fad5159..9709606 100644
>> --- a/arch/powerpc/perf/core-book3s.c
>> +++ b/arch/powerpc/perf/core-book3s.c
>> @@ -466,9 +466,13 @@ static void power_pmu_bhrb_read(struct perf_event *event,
>> struct cpu_hw_events *
>> * addresses at this point. Check the privileges before
>> * exporting it to userspace (avoid exposure of regions
>> * where we could have speculative execution)
>> + * Incase of ISA 310, BHRB will capture only user-space
>> + * address,hence include a check before filtering code
>> */
>> - if (is_kernel_addr(addr) && perf_allow_kernel(&event-
>>> attr) != 0)
>> - continue;
>> + if (!(ppmu->flags & PPMU_ARCH_310S))
>> + if (is_kernel_addr(addr) &&
>> + perf_allow_kernel(&event->attr) != 0)
>> + continue;
>>
>> /* Branches are read most recent first (ie. mfbhrb 0 is
>> * the most recent branch).
>> @@ -1212,7 +1216,7 @@ static void write_mmcr0(struct cpu_hw_events *cpuhw,
>> unsigned long mmcr0)
>> static void power_pmu_disable(struct pmu *pmu)
>> {
>> struct cpu_hw_events *cpuhw;
>> - unsigned long flags, mmcr0, val;
>> + unsigned long flags, mmcr0, val, mmcra = 0;
>>
>> if (!ppmu)
>> return;
>> @@ -1245,12 +1249,23 @@ static void power_pmu_disable(struct pmu *pmu)
>> mb();
>> isync();
>>
>> + val = mmcra = cpuhw->mmcr[2];
>> +
>> /*
>> * Disable instruction sampling if it was enabled
>> */
>> - if (cpuhw->mmcr[2] & MMCRA_SAMPLE_ENABLE) {
>> - mtspr(SPRN_MMCRA,
>> - cpuhw->mmcr[2] & ~MMCRA_SAMPLE_ENABLE);
>> + if (cpuhw->mmcr[2] & MMCRA_SAMPLE_ENABLE)
>> + mmcra = cpuhw->mmcr[2] & ~MMCRA_SAMPLE_ENABLE;
>> +
>> + /* Disable BHRB via mmcra [:26] for p10 if needed */
>> + if (!(cpuhw->mmcr[2] & MMCRA_BHRB_DISABLE))
>> + mmcra |= MMCRA_BHRB_DISABLE;
>> +
>> + /* Write SPRN_MMCRA if mmcra has either disabled
>> + * instruction sampling or BHRB
>> + */
>> + if (val != mmcra) {
>> + mtspr(SPRN_MMCRA, mmcra);
>> mb();
>> isync();
>> }
>> diff --git a/arch/powerpc/perf/isa207-common.c b/arch/powerpc/perf/isa207-
>> common.c
>> index 7d4839e..463d925 100644
>> --- a/arch/powerpc/perf/isa207-common.c
>> +++ b/arch/powerpc/perf/isa207-common.c
>> @@ -404,6 +404,12 @@ int isa207_compute_mmcr(u64 event[], int n_ev,
>>
>> mmcra = mmcr1 = mmcr2 = mmcr3 = 0;
>>
>> + /* Disable bhrb unless explicitly requested
>> + * by setting MMCRA [:26] bit.
>> + */
>> + if (cpu_has_feature(CPU_FTR_ARCH_31))
>> + mmcra |= MMCRA_BHRB_DISABLE;
>> +
>> /* Second pass: assign PMCs, set all MMCR1 fields */
>> for (i = 0; i < n_ev; ++i) {
>> pmc = (event[i] >> EVENT_PMC_SHIFT) & EVENT_PMC_MASK;
>> @@ -475,10 +481,17 @@ int isa207_compute_mmcr(u64 event[], int n_ev,
>> }
>>
>> if (event[i] & EVENT_WANTS_BHRB) {
>> + /* set MMCRA[:26] to 0 for Power10 to enable BHRB */
>> + if (cpu_has_feature(CPU_FTR_ARCH_31))
>> + mmcra &= ~MMCRA_BHRB_DISABLE;
>> val = (event[i] >> EVENT_IFM_SHIFT) & EVENT_IFM_MASK;
>> mmcra |= val << MMCRA_IFM_SHIFT;
>> }
>>
>> + /* set MMCRA[:26] to 0 if there is user request for BHRB */
>> + if (cpu_has_feature(CPU_FTR_ARCH_31) &&
>> has_branch_stack(pevents[i]))
>> + mmcra &= ~MMCRA_BHRB_DISABLE;
>> +
>> if (pevents[i]->attr.exclude_user)
>> mmcr2 |= MMCR2_FCP(pmc);
>>
>> diff --git a/arch/powerpc/perf/power10-pmu.c b/arch/powerpc/perf/power10-pmu.c
>> index d64d69d..07fb919 100644
>> --- a/arch/powerpc/perf/power10-pmu.c
>> +++ b/arch/powerpc/perf/power10-pmu.c
>> @@ -82,6 +82,8 @@
>>
>> /* MMCRA IFM bits - POWER10 */
>> #define POWER10_MMCRA_IFM1 0x0000000040000000UL
>> +#define POWER10_MMCRA_IFM2 0x0000000080000000UL
>> +#define POWER10_MMCRA_IFM3 0x00000000C0000000UL
>> #define POWER10_MMCRA_BHRB_MASK 0x00000000C0000000UL
>>
>> /* Table of alternatives, sorted by column 0 */
>> @@ -233,8 +235,15 @@ static u64 power10_bhrb_filter_map(u64
>> branch_sample_type)
>> if (branch_sample_type & PERF_SAMPLE_BRANCH_ANY_RETURN)
>> return -1;
>>
>> - if (branch_sample_type & PERF_SAMPLE_BRANCH_IND_CALL)
>> - return -1;
>> + if (branch_sample_type & PERF_SAMPLE_BRANCH_IND_CALL) {
>> + pmu_bhrb_filter |= POWER10_MMCRA_IFM2;
>> + return pmu_bhrb_filter;
>> + }
>> +
>> + if (branch_sample_type & PERF_SAMPLE_BRANCH_COND) {
>> + pmu_bhrb_filter |= POWER10_MMCRA_IFM3;
>> + return pmu_bhrb_filter;
>> + }
>>
>> if (branch_sample_type & PERF_SAMPLE_BRANCH_CALL)
>> return -1;
>> diff --git a/arch/powerpc/platforms/powernv/idle.c
>> b/arch/powerpc/platforms/powernv/idle.c
>> index 2dd4673..7db99c7 100644
>> --- a/arch/powerpc/platforms/powernv/idle.c
>> +++ b/arch/powerpc/platforms/powernv/idle.c
>> @@ -611,6 +611,7 @@ static unsigned long power9_idle_stop(unsigned long psscr,
>> bool mmu_on)
>> unsigned long srr1;
>> unsigned long pls;
>> unsigned long mmcr0 = 0;
>> + unsigned long mmcra_bhrb = 0;
>> struct p9_sprs sprs = {}; /* avoid false used-uninitialised */
>> bool sprs_saved = false;
>>
>> @@ -657,6 +658,15 @@ static unsigned long power9_idle_stop(unsigned long
>> psscr, bool mmu_on)
>> */
>> mmcr0 = mfspr(SPRN_MMCR0);
>> }
>> +
>> + if (cpu_has_feature(CPU_FTR_ARCH_31)) {
>> + /* POWER10 uses MMCRA[:26] as BHRB disable bit
>> + * to disable BHRB logic when not used. Hence Save and
>> + * restore MMCRA after a state-loss idle.
>> + */
>> + mmcra_bhrb = mfspr(SPRN_MMCRA);
>
>
> Why is the bhrb bit of mmcra special here?
This to save/restore BHRB disable bit in state-loss idle state to make sure
we keep BHRB disabled if it was not enabled on request at runtime.
>
>> + }
>> +
>> if ((psscr & PSSCR_RL_MASK) >= pnv_first_spr_loss_level) {
>> sprs.lpcr = mfspr(SPRN_LPCR);
>> sprs.hfscr = mfspr(SPRN_HFSCR);
>> @@ -721,6 +731,10 @@ static unsigned long power9_idle_stop(unsigned long
>> psscr, bool mmu_on)
>> mtspr(SPRN_MMCR0, mmcr0);
>> }
>>
>> + /* Reload MMCRA to restore BHRB disable bit for POWER10 */
>> + if (cpu_has_feature(CPU_FTR_ARCH_31))
>> + mtspr(SPRN_MMCRA, mmcra_bhrb);
>> +
>> /*
>> * DD2.2 and earlier need to set then clear bit 60 in MMCRA
>> * to ensure the PMU starts running.
[-- Attachment #2: Type: text/html, Size: 37042 bytes --]
^ permalink raw reply
* Re: [PATCH 2/2] KVM: PPC: Book3S HV: rework secure mem slot dropping
From: Bharata B Rao @ 2020-07-08 11:25 UTC (permalink / raw)
To: Laurent Dufour
Cc: Ram Pai, linux-kernel, kvm-ppc, paulus, sathnaga, sukadev,
linuxppc-dev, bauerman
In-Reply-To: <20200703155914.40262-3-ldufour@linux.ibm.com>
On Fri, Jul 03, 2020 at 05:59:14PM +0200, Laurent Dufour wrote:
> When a secure memslot is dropped, all the pages backed in the secure device
> (aka really backed by secure memory by the Ultravisor) should be paged out
> to a normal page. Previously, this was achieved by triggering the page
> fault mechanism which is calling kvmppc_svm_page_out() on each pages.
>
> This can't work when hot unplugging a memory slot because the memory slot
> is flagged as invalid and gfn_to_pfn() is then not trying to access the
> page, so the page fault mechanism is not triggered.
>
> Since the final goal is to make a call to kvmppc_svm_page_out() it seems
> simpler to directly calling it instead of triggering such a mechanism. This
> way kvmppc_uvmem_drop_pages() can be called even when hot unplugging a
> memslot.
Yes, this appears much simpler.
>
> Since kvmppc_uvmem_drop_pages() is already holding kvm->arch.uvmem_lock,
> the call to __kvmppc_svm_page_out() is made.
> As __kvmppc_svm_page_out needs the vma pointer to migrate the pages, the
> VMA is fetched in a lazy way, to not trigger find_vma() all the time. In
> addition, the mmap_sem is help in read mode during that time, not in write
> mode since the virual memory layout is not impacted, and
> kvm->arch.uvmem_lock prevents concurrent operation on the secure device.
>
> Cc: Ram Pai <linuxram@us.ibm.com>
> Cc: Bharata B Rao <bharata@linux.ibm.com>
> Cc: Paul Mackerras <paulus@ozlabs.org>
> Signed-off-by: Laurent Dufour <ldufour@linux.ibm.com>
> ---
> arch/powerpc/kvm/book3s_hv_uvmem.c | 54 ++++++++++++++++++++----------
> 1 file changed, 37 insertions(+), 17 deletions(-)
>
> diff --git a/arch/powerpc/kvm/book3s_hv_uvmem.c b/arch/powerpc/kvm/book3s_hv_uvmem.c
> index 852cc9ae6a0b..479ddf16d18c 100644
> --- a/arch/powerpc/kvm/book3s_hv_uvmem.c
> +++ b/arch/powerpc/kvm/book3s_hv_uvmem.c
> @@ -533,35 +533,55 @@ static inline int kvmppc_svm_page_out(struct vm_area_struct *vma,
> * fault on them, do fault time migration to replace the device PTEs in
> * QEMU page table with normal PTEs from newly allocated pages.
> */
> -void kvmppc_uvmem_drop_pages(const struct kvm_memory_slot *free,
> +void kvmppc_uvmem_drop_pages(const struct kvm_memory_slot *slot,
> struct kvm *kvm, bool skip_page_out)
> {
> int i;
> struct kvmppc_uvmem_page_pvt *pvt;
> - unsigned long pfn, uvmem_pfn;
> - unsigned long gfn = free->base_gfn;
> + struct page *uvmem_page;
> + struct vm_area_struct *vma = NULL;
> + unsigned long uvmem_pfn, gfn;
> + unsigned long addr, end;
> +
> + down_read(&kvm->mm->mmap_sem);
You should be using mmap_read_lock(kvm->mm) with recent kernels.
> +
> + addr = slot->userspace_addr;
> + end = addr + (slot->npages * PAGE_SIZE);
>
> - for (i = free->npages; i; --i, ++gfn) {
> - struct page *uvmem_page;
> + gfn = slot->base_gfn;
> + for (i = slot->npages; i; --i, ++gfn, addr += PAGE_SIZE) {
> +
> + /* Fetch the VMA if addr is not in the latest fetched one */
> + if (!vma || (addr < vma->vm_start || addr >= vma->vm_end)) {
> + vma = find_vma_intersection(kvm->mm, addr, end);
> + if (!vma ||
> + vma->vm_start > addr || vma->vm_end < end) {
> + pr_err("Can't find VMA for gfn:0x%lx\n", gfn);
> + break;
> + }
> + }
The first find_vma_intersection() was called for the range spanning the
entire memslot, but you have code to check if vma remains valid for the
new addr in each iteration. Guess you wanted to get vma for one page at
a time and use it for subsequent pages until it covers the range?
Regards,
Bharata.
^ permalink raw reply
* Re: [PATCH v2 07/10] powerpc/perf: support BHRB disable bit and new filtering modes
From: Michael Ellerman @ 2020-07-08 11:42 UTC (permalink / raw)
To: Athira Rajeev; +Cc: mikey, maddy, linuxppc-dev
In-Reply-To: <1593595262-1433-8-git-send-email-atrajeev@linux.vnet.ibm.com>
Athira Rajeev <atrajeev@linux.vnet.ibm.com> writes:
> PowerISA v3.1 has few updates for the Branch History Rolling Buffer(BHRB).
^
a
> First is the addition of BHRB disable bit and second new filtering
^
is
> modes for BHRB.
>
> BHRB disable is controlled via Monitor Mode Control Register A (MMCRA)
> bit 26, namely "BHRB Recording Disable (BHRBRD)". This field controls
Most people call that bit 37.
> whether BHRB entries are written when BHRB recording is enabled by other
> bits. Patch implements support for this BHRB disable bit.
^
This
> Secondly PowerISA v3.1 introduce filtering support for
.. that should be in a separate patch please.
> PERF_SAMPLE_BRANCH_IND_CALL/COND. The patch adds BHRB filter support
^
This
> for "ind_call" and "cond" in power10_bhrb_filter_map().
>
> 'commit bb19af816025 ("powerpc/perf: Prevent kernel address leak to userspace via BHRB buffer")'
That doesn't need single quotes, and should be wrapped at 72 columns
like the rest of the text.
> added a check in bhrb_read() to filter the kernel address from BHRB buffer. Patch here modified
> it to avoid that check for PowerISA v3.1 based processors, since PowerISA v3.1 allows
> only MSR[PR]=1 address to be written to BHRB buffer.
And that should be a separate patch again please.
> Signed-off-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
> ---
> arch/powerpc/perf/core-book3s.c | 27 +++++++++++++++++++++------
> arch/powerpc/perf/isa207-common.c | 13 +++++++++++++
> arch/powerpc/perf/power10-pmu.c | 13 +++++++++++--
> arch/powerpc/platforms/powernv/idle.c | 14 ++++++++++++++
> 4 files changed, 59 insertions(+), 8 deletions(-)
>
> diff --git a/arch/powerpc/perf/core-book3s.c b/arch/powerpc/perf/core-book3s.c
> index fad5159..9709606 100644
> --- a/arch/powerpc/perf/core-book3s.c
> +++ b/arch/powerpc/perf/core-book3s.c
> @@ -466,9 +466,13 @@ static void power_pmu_bhrb_read(struct perf_event *event, struct cpu_hw_events *
> * addresses at this point. Check the privileges before
> * exporting it to userspace (avoid exposure of regions
> * where we could have speculative execution)
> + * Incase of ISA 310, BHRB will capture only user-space
^
In case of ISA v3.1,
> + * address,hence include a check before filtering code
^ ^
addresses, hence .
> */
> - if (is_kernel_addr(addr) && perf_allow_kernel(&event->attr) != 0)
> - continue;
> + if (!(ppmu->flags & PPMU_ARCH_310S))
> + if (is_kernel_addr(addr) &&
> + perf_allow_kernel(&event->attr) != 0)
> + continue;
The indentation is weird. You should just check all three conditions
with &&.
>
> /* Branches are read most recent first (ie. mfbhrb 0 is
> * the most recent branch).
> @@ -1212,7 +1216,7 @@ static void write_mmcr0(struct cpu_hw_events *cpuhw, unsigned long mmcr0)
> static void power_pmu_disable(struct pmu *pmu)
> {
> struct cpu_hw_events *cpuhw;
> - unsigned long flags, mmcr0, val;
> + unsigned long flags, mmcr0, val, mmcra = 0;
You initialise it below.
> if (!ppmu)
> return;
> @@ -1245,12 +1249,23 @@ static void power_pmu_disable(struct pmu *pmu)
> mb();
> isync();
>
> + val = mmcra = cpuhw->mmcr[2];
> +
For mmcr0 (above), val is the variable we mutate and mmcr0 is the
original value. But here you've done the reverse, which is confusing.
> /*
> * Disable instruction sampling if it was enabled
> */
> - if (cpuhw->mmcr[2] & MMCRA_SAMPLE_ENABLE) {
> - mtspr(SPRN_MMCRA,
> - cpuhw->mmcr[2] & ~MMCRA_SAMPLE_ENABLE);
> + if (cpuhw->mmcr[2] & MMCRA_SAMPLE_ENABLE)
> + mmcra = cpuhw->mmcr[2] & ~MMCRA_SAMPLE_ENABLE;
You just loaded cpuhw->mmcr[2] into mmcra, use it rather than referring
back to cpuhw->mmcr[2] over and over.
> +
> + /* Disable BHRB via mmcra [:26] for p10 if needed */
> + if (!(cpuhw->mmcr[2] & MMCRA_BHRB_DISABLE))
You don't need to check that it's clear AFAICS. Just always set disable
and the check against val below will catch the nop case.
> + mmcra |= MMCRA_BHRB_DISABLE;
> +
> + /* Write SPRN_MMCRA if mmcra has either disabled
Comment format is wrong.
> + * instruction sampling or BHRB
Full stop please.
> + */
> + if (val != mmcra) {
> + mtspr(SPRN_MMCRA, mmcra);
> mb();
> isync();
> }
> diff --git a/arch/powerpc/perf/isa207-common.c b/arch/powerpc/perf/isa207-common.c
> index 7d4839e..463d925 100644
> --- a/arch/powerpc/perf/isa207-common.c
> +++ b/arch/powerpc/perf/isa207-common.c
> @@ -404,6 +404,12 @@ int isa207_compute_mmcr(u64 event[], int n_ev,
>
> mmcra = mmcr1 = mmcr2 = mmcr3 = 0;
>
> + /* Disable bhrb unless explicitly requested
> + * by setting MMCRA [:26] bit.
> + */
Comment format again.
> + if (cpu_has_feature(CPU_FTR_ARCH_31))
> + mmcra |= MMCRA_BHRB_DISABLE;
Here we do a feature check before setting MMCRA_BHRB_DISABLE, but you
didn't above?
> +
> /* Second pass: assign PMCs, set all MMCR1 fields */
> for (i = 0; i < n_ev; ++i) {
> pmc = (event[i] >> EVENT_PMC_SHIFT) & EVENT_PMC_MASK;
> @@ -475,10 +481,17 @@ int isa207_compute_mmcr(u64 event[], int n_ev,
> }
>
> if (event[i] & EVENT_WANTS_BHRB) {
> + /* set MMCRA[:26] to 0 for Power10 to enable BHRB */
"set MMCRA[:26] to 0" == "clear MMCRA[:26]"
> + if (cpu_has_feature(CPU_FTR_ARCH_31))
> + mmcra &= ~MMCRA_BHRB_DISABLE;
Newline please.
> val = (event[i] >> EVENT_IFM_SHIFT) & EVENT_IFM_MASK;
> mmcra |= val << MMCRA_IFM_SHIFT;
> }
>
> + /* set MMCRA[:26] to 0 if there is user request for BHRB */
> + if (cpu_has_feature(CPU_FTR_ARCH_31) && has_branch_stack(pevents[i]))
> + mmcra &= ~MMCRA_BHRB_DISABLE;
> +
I think it would be cleaner if you did a single test, eg:
if (cpu_has_feature(CPU_FTR_ARCH_31) &&
(has_branch_stack(pevents[i]) || (event[i] & EVENT_WANTS_BHRB)))
mmcra &= ~MMCRA_BHRB_DISABLE;
> if (pevents[i]->attr.exclude_user)
> mmcr2 |= MMCR2_FCP(pmc);
>
> diff --git a/arch/powerpc/perf/power10-pmu.c b/arch/powerpc/perf/power10-pmu.c
> index d64d69d..07fb919 100644
> --- a/arch/powerpc/perf/power10-pmu.c
> +++ b/arch/powerpc/perf/power10-pmu.c
> @@ -82,6 +82,8 @@
>
> /* MMCRA IFM bits - POWER10 */
> #define POWER10_MMCRA_IFM1 0x0000000040000000UL
> +#define POWER10_MMCRA_IFM2 0x0000000080000000UL
> +#define POWER10_MMCRA_IFM3 0x00000000C0000000UL
> #define POWER10_MMCRA_BHRB_MASK 0x00000000C0000000UL
>
> /* Table of alternatives, sorted by column 0 */
> @@ -233,8 +235,15 @@ static u64 power10_bhrb_filter_map(u64 branch_sample_type)
> if (branch_sample_type & PERF_SAMPLE_BRANCH_ANY_RETURN)
> return -1;
>
> - if (branch_sample_type & PERF_SAMPLE_BRANCH_IND_CALL)
> - return -1;
> + if (branch_sample_type & PERF_SAMPLE_BRANCH_IND_CALL) {
> + pmu_bhrb_filter |= POWER10_MMCRA_IFM2;
> + return pmu_bhrb_filter;
> + }
> +
> + if (branch_sample_type & PERF_SAMPLE_BRANCH_COND) {
> + pmu_bhrb_filter |= POWER10_MMCRA_IFM3;
> + return pmu_bhrb_filter;
> + }
>
> if (branch_sample_type & PERF_SAMPLE_BRANCH_CALL)
> return -1;
> diff --git a/arch/powerpc/platforms/powernv/idle.c b/arch/powerpc/platforms/powernv/idle.c
> index 2dd4673..7db99c7 100644
> --- a/arch/powerpc/platforms/powernv/idle.c
> +++ b/arch/powerpc/platforms/powernv/idle.c
> @@ -611,6 +611,7 @@ static unsigned long power9_idle_stop(unsigned long psscr, bool mmu_on)
> unsigned long srr1;
> unsigned long pls;
> unsigned long mmcr0 = 0;
> + unsigned long mmcra_bhrb = 0;
> struct p9_sprs sprs = {}; /* avoid false used-uninitialised */
> bool sprs_saved = false;
>
> @@ -657,6 +658,15 @@ static unsigned long power9_idle_stop(unsigned long psscr, bool mmu_on)
> */
> mmcr0 = mfspr(SPRN_MMCR0);
> }
> +
> + if (cpu_has_feature(CPU_FTR_ARCH_31)) {
> + /* POWER10 uses MMCRA[:26] as BHRB disable bit
Comment format.
> + * to disable BHRB logic when not used. Hence Save and
> + * restore MMCRA after a state-loss idle.
> + */
> + mmcra_bhrb = mfspr(SPRN_MMCRA);
> + }
It's the whole mmcra it should be called mmcra?
> +
> if ((psscr & PSSCR_RL_MASK) >= pnv_first_spr_loss_level) {
> sprs.lpcr = mfspr(SPRN_LPCR);
> sprs.hfscr = mfspr(SPRN_HFSCR);
> @@ -721,6 +731,10 @@ static unsigned long power9_idle_stop(unsigned long psscr, bool mmu_on)
> mtspr(SPRN_MMCR0, mmcr0);
> }
>
> + /* Reload MMCRA to restore BHRB disable bit for POWER10 */
> + if (cpu_has_feature(CPU_FTR_ARCH_31))
> + mtspr(SPRN_MMCRA, mmcra_bhrb);
> +
> /*
> * DD2.2 and earlier need to set then clear bit 60 in MMCRA
> * to ensure the PMU starts running.
cheers
^ permalink raw reply
* Re: [PATCH v2 10/10] powerpc/perf: Add extended regs support for power10 platform
From: Michael Ellerman @ 2020-07-08 12:04 UTC (permalink / raw)
To: Athira Rajeev; +Cc: mikey, maddy, linuxppc-dev
In-Reply-To: <1593595262-1433-11-git-send-email-atrajeev@linux.vnet.ibm.com>
Athira Rajeev <atrajeev@linux.vnet.ibm.com> writes:
> Include capability flag `PERF_PMU_CAP_EXTENDED_REGS` for power10
> and expose MMCR3, SIER2, SIER3 registers as part of extended regs.
> Also introduce `PERF_REG_PMU_MASK_31` to define extended mask
> value at runtime for power10
>
> Signed-off-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
> ---
> arch/powerpc/include/uapi/asm/perf_regs.h | 6 ++++++
> arch/powerpc/perf/perf_regs.c | 10 +++++++++-
> arch/powerpc/perf/power10-pmu.c | 6 ++++++
> tools/arch/powerpc/include/uapi/asm/perf_regs.h | 6 ++++++
> tools/perf/arch/powerpc/include/perf_regs.h | 3 +++
> tools/perf/arch/powerpc/util/perf_regs.c | 6 ++++++
Please split into a kernel patch and a tools patch. And cc the tools people.
> 6 files changed, 36 insertions(+), 1 deletion(-)
>
> diff --git a/arch/powerpc/include/uapi/asm/perf_regs.h b/arch/powerpc/include/uapi/asm/perf_regs.h
> index 485b1d5..020b51c 100644
> --- a/arch/powerpc/include/uapi/asm/perf_regs.h
> +++ b/arch/powerpc/include/uapi/asm/perf_regs.h
> @@ -52,6 +52,9 @@ enum perf_event_powerpc_regs {
> PERF_REG_POWERPC_MMCR0,
> PERF_REG_POWERPC_MMCR1,
> PERF_REG_POWERPC_MMCR2,
> + PERF_REG_POWERPC_MMCR3,
> + PERF_REG_POWERPC_SIER2,
> + PERF_REG_POWERPC_SIER3,
> /* Max regs without the extended regs */
> PERF_REG_POWERPC_MAX = PERF_REG_POWERPC_MMCRA + 1,
> };
> @@ -62,4 +65,7 @@ enum perf_event_powerpc_regs {
> #define PERF_REG_PMU_MASK_300 (((1ULL << (PERF_REG_POWERPC_MMCR2 + 1)) - 1) \
> - PERF_REG_PMU_MASK)
>
> +/* PERF_REG_EXTENDED_MASK value for CPU_FTR_ARCH_31 */
> +#define PERF_REG_PMU_MASK_31 (((1ULL << (PERF_REG_POWERPC_SIER3 + 1)) - 1) \
> + - PERF_REG_PMU_MASK)
Wrapping that provides no benefit, just let it be long.
> #endif /* _UAPI_ASM_POWERPC_PERF_REGS_H */
> diff --git a/arch/powerpc/perf/perf_regs.c b/arch/powerpc/perf/perf_regs.c
> index c8a7e8c..c969935 100644
> --- a/arch/powerpc/perf/perf_regs.c
> +++ b/arch/powerpc/perf/perf_regs.c
> @@ -81,6 +81,12 @@ static u64 get_ext_regs_value(int idx)
> return mfspr(SPRN_MMCR1);
> case PERF_REG_POWERPC_MMCR2:
> return mfspr(SPRN_MMCR2);
> + case PERF_REG_POWERPC_MMCR3:
> + return mfspr(SPRN_MMCR3);
> + case PERF_REG_POWERPC_SIER2:
> + return mfspr(SPRN_SIER2);
> + case PERF_REG_POWERPC_SIER3:
> + return mfspr(SPRN_SIER3);
Indentation is wrong.
> default: return 0;
> }
> }
> @@ -89,7 +95,9 @@ u64 perf_reg_value(struct pt_regs *regs, int idx)
> {
> u64 PERF_REG_EXTENDED_MAX;
>
> - if (cpu_has_feature(CPU_FTR_ARCH_300))
> + if (cpu_has_feature(CPU_FTR_ARCH_31))
> + PERF_REG_EXTENDED_MAX = PERF_REG_POWERPC_SIER3 + 1;
There's no way to know if that's correct other than going back to the
header to look at the list of values.
So instead you should define it in the header, next to the other values,
with a meaningful name, like PERF_REG_MAX_ISA_31 or something.
> + else if (cpu_has_feature(CPU_FTR_ARCH_300))
> PERF_REG_EXTENDED_MAX = PERF_REG_POWERPC_MMCR2 + 1;
Same.
> if (idx == PERF_REG_POWERPC_SIER &&
> diff --git a/arch/powerpc/perf/power10-pmu.c b/arch/powerpc/perf/power10-pmu.c
> index 07fb919..51082d6 100644
> --- a/arch/powerpc/perf/power10-pmu.c
> +++ b/arch/powerpc/perf/power10-pmu.c
> @@ -86,6 +86,8 @@
> #define POWER10_MMCRA_IFM3 0x00000000C0000000UL
> #define POWER10_MMCRA_BHRB_MASK 0x00000000C0000000UL
>
> +extern u64 mask_var;
Why is it extern? Also not a good name for a global.
Hang on, it's not even used? Is there some macro magic somewhere?
> /* Table of alternatives, sorted by column 0 */
> static const unsigned int power10_event_alternatives[][MAX_ALT] = {
> { PM_RUN_CYC_ALT, PM_RUN_CYC },
> @@ -397,6 +399,7 @@ static void power10_config_bhrb(u64 pmu_bhrb_filter)
> .cache_events = &power10_cache_events,
> .attr_groups = power10_pmu_attr_groups,
> .bhrb_nr = 32,
> + .capabilities = PERF_PMU_CAP_EXTENDED_REGS,
> };
>
> int init_power10_pmu(void)
> @@ -408,6 +411,9 @@ int init_power10_pmu(void)
> strcmp(cur_cpu_spec->oprofile_cpu_type, "ppc64/power10"))
> return -ENODEV;
>
> + /* Set the PERF_REG_EXTENDED_MASK here */
> + mask_var = PERF_REG_PMU_MASK_31;
> +
> rc = register_power_pmu(&power10_pmu);
> if (rc)
> return rc;
cheers
^ permalink raw reply
* Re: [PATCH v2 09/10] tools/perf: Add perf tools support for extended register capability in powerpc
From: Michael Ellerman @ 2020-07-08 12:04 UTC (permalink / raw)
To: Athira Rajeev; +Cc: mikey, maddy, linuxppc-dev
In-Reply-To: <1593595262-1433-10-git-send-email-atrajeev@linux.vnet.ibm.com>
Athira Rajeev <atrajeev@linux.vnet.ibm.com> writes:
> From: Anju T Sudhakar <anju@linux.vnet.ibm.com>
>
> Add extended regs to sample_reg_mask in the tool side to use
> with `-I?` option. Perf tools side uses extended mask to display
> the platform supported register names (with -I? option) to the user
> and also send this mask to the kernel to capture the extended registers
> in each sample. Hence decide the mask value based on the processor
> version.
>
> Signed-off-by: Anju T Sudhakar <anju@linux.vnet.ibm.com>
> [Decide extended mask at run time based on platform]
> Signed-off-by: Athira Rajeev <atrajeev@linux.vnet.ibm.com>
> Reviewed-by: Madhavan Srinivasan <maddy@linux.vnet.ibm.com>
Will need an ack from perf tools folks, who are not on Cc by the looks.
> diff --git a/tools/arch/powerpc/include/uapi/asm/perf_regs.h b/tools/arch/powerpc/include/uapi/asm/perf_regs.h
> index f599064..485b1d5 100644
> --- a/tools/arch/powerpc/include/uapi/asm/perf_regs.h
> +++ b/tools/arch/powerpc/include/uapi/asm/perf_regs.h
> @@ -48,6 +48,18 @@ enum perf_event_powerpc_regs {
> PERF_REG_POWERPC_DSISR,
> PERF_REG_POWERPC_SIER,
> PERF_REG_POWERPC_MMCRA,
> - PERF_REG_POWERPC_MAX,
> + /* Extended registers */
> + PERF_REG_POWERPC_MMCR0,
> + PERF_REG_POWERPC_MMCR1,
> + PERF_REG_POWERPC_MMCR2,
> + /* Max regs without the extended regs */
> + PERF_REG_POWERPC_MAX = PERF_REG_POWERPC_MMCRA + 1,
I don't really understand this idea of a max that's not the max.
> };
> +
> +#define PERF_REG_PMU_MASK ((1ULL << PERF_REG_POWERPC_MAX) - 1)
> +
> +/* PERF_REG_EXTENDED_MASK value for CPU_FTR_ARCH_300 */
> +#define PERF_REG_PMU_MASK_300 (((1ULL << (PERF_REG_POWERPC_MMCR2 + 1)) - 1) \
> + - PERF_REG_PMU_MASK)
> +
> #endif /* _UAPI_ASM_POWERPC_PERF_REGS_H */
> diff --git a/tools/perf/arch/powerpc/include/perf_regs.h b/tools/perf/arch/powerpc/include/perf_regs.h
> index e18a355..46ed00d 100644
> --- a/tools/perf/arch/powerpc/include/perf_regs.h
> +++ b/tools/perf/arch/powerpc/include/perf_regs.h
> @@ -64,7 +64,10 @@
> [PERF_REG_POWERPC_DAR] = "dar",
> [PERF_REG_POWERPC_DSISR] = "dsisr",
> [PERF_REG_POWERPC_SIER] = "sier",
> - [PERF_REG_POWERPC_MMCRA] = "mmcra"
> + [PERF_REG_POWERPC_MMCRA] = "mmcra",
> + [PERF_REG_POWERPC_MMCR0] = "mmcr0",
> + [PERF_REG_POWERPC_MMCR1] = "mmcr1",
> + [PERF_REG_POWERPC_MMCR2] = "mmcr2",
> };
>
> static inline const char *perf_reg_name(int id)
> diff --git a/tools/perf/arch/powerpc/util/perf_regs.c b/tools/perf/arch/powerpc/util/perf_regs.c
> index 0a52429..9179230 100644
> --- a/tools/perf/arch/powerpc/util/perf_regs.c
> +++ b/tools/perf/arch/powerpc/util/perf_regs.c
> @@ -6,9 +6,14 @@
>
> #include "../../../util/perf_regs.h"
> #include "../../../util/debug.h"
> +#include "../../../util/event.h"
> +#include "../../../util/header.h"
> +#include "../../../perf-sys.h"
>
> #include <linux/kernel.h>
>
> +#define PVR_POWER9 0x004E
> +
> const struct sample_reg sample_reg_masks[] = {
> SMPL_REG(r0, PERF_REG_POWERPC_R0),
> SMPL_REG(r1, PERF_REG_POWERPC_R1),
> @@ -55,6 +60,9 @@
> SMPL_REG(dsisr, PERF_REG_POWERPC_DSISR),
> SMPL_REG(sier, PERF_REG_POWERPC_SIER),
> SMPL_REG(mmcra, PERF_REG_POWERPC_MMCRA),
> + SMPL_REG(mmcr0, PERF_REG_POWERPC_MMCR0),
> + SMPL_REG(mmcr1, PERF_REG_POWERPC_MMCR1),
> + SMPL_REG(mmcr2, PERF_REG_POWERPC_MMCR2),
> SMPL_REG_END
> };
>
> @@ -163,3 +171,50 @@ int arch_sdt_arg_parse_op(char *old_op, char **new_op)
>
> return SDT_ARG_VALID;
> }
> +
> +uint64_t arch__intr_reg_mask(void)
> +{
> + struct perf_event_attr attr = {
> + .type = PERF_TYPE_HARDWARE,
> + .config = PERF_COUNT_HW_CPU_CYCLES,
> + .sample_type = PERF_SAMPLE_REGS_INTR,
> + .precise_ip = 1,
> + .disabled = 1,
> + .exclude_kernel = 1,
> + };
> + int fd, ret;
> + char buffer[64];
> + u32 version;
> + u64 extended_mask = 0;
> +
> + /* Get the PVR value to set the extended
> + * mask specific to platform
Comment format is wrong, and punctuation please.
> + */
> + get_cpuid(buffer, sizeof(buffer));
> + ret = sscanf(buffer, "%u,", &version);
This is powerpc specific code, why not just use mfspr(SPRN_PVR), rather
than redirecting via printf/sscanf.
> +
> + if (ret != 1) {
> + pr_debug("Failed to get the processor version, unable to output extended registers\n");
> + return PERF_REGS_MASK;
> + }
> +
> + if (version == PVR_POWER9)
> + extended_mask = PERF_REG_PMU_MASK_300;
> + else
> + return PERF_REGS_MASK;
> +
> + attr.sample_regs_intr = extended_mask;
> + attr.sample_period = 1;
> + event_attr_init(&attr);
> +
> + /*
> + * check if the pmu supports perf extended regs, before
> + * returning the register mask to sample.
> + */
> + fd = sys_perf_event_open(&attr, 0, -1, -1, 0);
> + if (fd != -1) {
> + close(fd);
> + return (extended_mask | PERF_REGS_MASK);
> + }
> + return PERF_REGS_MASK;
I think this would read a bit better like:
mask = PERF_REGS_MASK;
if (version == PVR_POWER9)
extended_mask = PERF_REG_PMU_MASK_300;
else
return mask;
attr.sample_regs_intr = extended_mask;
attr.sample_period = 1;
event_attr_init(&attr);
/*
* check if the pmu supports perf extended regs, before
* returning the register mask to sample.
*/
fd = sys_perf_event_open(&attr, 0, -1, -1, 0);
if (fd != -1) {
close(fd);
mask |= extended_mask;
}
return mask;
cheers
^ permalink raw reply
* Re: [PATCH v2 4/4] powerpc/mm/radix: Create separate mappings for hot-plugged memory
From: Michael Ellerman @ 2020-07-08 12:14 UTC (permalink / raw)
To: Aneesh Kumar K.V, linuxppc-dev; +Cc: Bharata B Rao
In-Reply-To: <aa2e029f-d6f3-60da-7840-0b377da0337a@linux.ibm.com>
"Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com> writes:
> On 7/8/20 10:14 AM, Michael Ellerman wrote:
>> "Aneesh Kumar K.V" <aneesh.kumar@linux.ibm.com> writes:
>>> To enable memory unplug without splitting kernel page table
>>> mapping, we force the max mapping size to the LMB size. LMB
>>> size is the unit in which hypervisor will do memory add/remove
>>> operation.
>>>
>>> This implies on pseries system, we now end up mapping
>>
>> Please expand on why it "implies" that for pseries.
>>
>>> memory with 2M page size instead of 1G. To improve
>>> that we want hypervisor to hint the kernel about the hotplug
>>> memory range. This was added that as part of
>> That
>>>
>>> commit b6eca183e23e ("powerpc/kernel: Enables memory
>>> hot-remove after reboot on pseries guests")
>>>
>>> But we still don't do that on PowerVM. Once we get PowerVM
>>
>> I think you mean PowerVM doesn't provide that hint yet?
>>
>> Realistically it won't until P10. So this means we'll always use 2MB on
>> Power9 PowerVM doesn't it?
>>
>> What about KVM?
>>
>> Have you done any benchmarking on the impact of switching the linear
>> mapping to 2MB pages?
>>
>
> The TLB impact should be minimal because with a 256M LMB size partition
> scoped entries are still 2M and hence we end up with TLBs of 2M size.
>
>
>>> updated, we can then force the 2M mapping only to hot-pluggable
>>> memory region using memblock_is_hotpluggable(). Till then
>>> let's depend on LMB size for finding the mapping page size
>>> for linear range.
>>>
>
> updated
>
>
> powerpc/mm/radix: Create separate mappings for hot-plugged memory
>
> To enable memory unplug without splitting kernel page table
> mapping, we force the max mapping size to the LMB size. LMB
> size is the unit in which hypervisor will do memory add/remove
> operation.
>
> Pseries systems supports max LMB size of 256MB. Hence on pseries,
> we now end up mapping memory with 2M page size instead of 1G. To improve
> that we want hypervisor to hint the kernel about the hotplug
> memory range. That was added that as part of
>
> commit b6eca18 ("powerpc/kernel: Enables memory
> hot-remove after reboot on pseries guests")
>
> But PowerVM doesn't provide that hint yet. Once we get PowerVM
> updated, we can then force the 2M mapping only to hot-pluggable
> memory region using memblock_is_hotpluggable(). Till then
> let's depend on LMB size for finding the mapping page size
> for linear range.
>
> With this change KVM guest will also be doing linear mapping with
> 2M page size.
...
>>> @@ -494,17 +544,27 @@ void __init radix__early_init_devtree(void)
>>> * Try to find the available page sizes in the device-tree
>>> */
>>> rc = of_scan_flat_dt(radix_dt_scan_page_sizes, NULL);
>>> - if (rc != 0) /* Found */
>>> - goto found;
>>> + if (rc == 0) {
>>> + /*
>>> + * no page size details found in device tree
>>> + * let's assume we have page 4k and 64k support
>>
>> Capitals and punctuation please?
>>
>>> + */
>>> + mmu_psize_defs[MMU_PAGE_4K].shift = 12;
>>> + mmu_psize_defs[MMU_PAGE_4K].ap = 0x0;
>>> +
>>> + mmu_psize_defs[MMU_PAGE_64K].shift = 16;
>>> + mmu_psize_defs[MMU_PAGE_64K].ap = 0x5;
>>> + }
>>
>> Moving that seems like an unrelated change. It's a reasonable change but
>> I'd rather you did it in a standalone patch.
>>
>
> we needed that change so that we can call radix_memory_block_size() for
> both found and !found case.
But the found and !found cases converge at found:, which is where you
call it. So I don't understand.
But as I said below, it would be even simpler if you worked out the
memory block size first.
cheers
>>> /*
>>> - * let's assume we have page 4k and 64k support
>>> + * Max mapping size used when mapping pages. We don't use
>>> + * ppc_md.memory_block_size() here because this get called
>>> + * early and we don't have machine probe called yet. Also
>>> + * the pseries implementation only check for ibm,lmb-size.
>>> + * All hypervisor supporting radix do expose that device
>>> + * tree node.
>>> */
>>> - mmu_psize_defs[MMU_PAGE_4K].shift = 12;
>>> - mmu_psize_defs[MMU_PAGE_4K].ap = 0x0;
>>> -
>>> - mmu_psize_defs[MMU_PAGE_64K].shift = 16;
>>> - mmu_psize_defs[MMU_PAGE_64K].ap = 0x5;
>>> -found:
>>> + radix_mem_block_size = radix_memory_block_size();
>>
>> If you did that earlier in the function, before
>> radix_dt_scan_page_sizes(), the logic would be simpler.
>>
>>> return;
>>> }
^ permalink raw reply
* Re: [PATCH 2/2] KVM: PPC: Book3S HV: rework secure mem slot dropping
From: Laurent Dufour @ 2020-07-08 12:16 UTC (permalink / raw)
To: bharata
Cc: Ram Pai, linux-kernel, kvm-ppc, paulus, sathnaga, sukadev,
linuxppc-dev, bauerman
In-Reply-To: <20200708112531.GA7902@in.ibm.com>
Le 08/07/2020 à 13:25, Bharata B Rao a écrit :
> On Fri, Jul 03, 2020 at 05:59:14PM +0200, Laurent Dufour wrote:
>> When a secure memslot is dropped, all the pages backed in the secure device
>> (aka really backed by secure memory by the Ultravisor) should be paged out
>> to a normal page. Previously, this was achieved by triggering the page
>> fault mechanism which is calling kvmppc_svm_page_out() on each pages.
>>
>> This can't work when hot unplugging a memory slot because the memory slot
>> is flagged as invalid and gfn_to_pfn() is then not trying to access the
>> page, so the page fault mechanism is not triggered.
>>
>> Since the final goal is to make a call to kvmppc_svm_page_out() it seems
>> simpler to directly calling it instead of triggering such a mechanism. This
>> way kvmppc_uvmem_drop_pages() can be called even when hot unplugging a
>> memslot.
>
> Yes, this appears much simpler.
Thanks Bharata for reviewing this.
>
>>
>> Since kvmppc_uvmem_drop_pages() is already holding kvm->arch.uvmem_lock,
>> the call to __kvmppc_svm_page_out() is made.
>> As __kvmppc_svm_page_out needs the vma pointer to migrate the pages, the
>> VMA is fetched in a lazy way, to not trigger find_vma() all the time. In
>> addition, the mmap_sem is help in read mode during that time, not in write
>> mode since the virual memory layout is not impacted, and
>> kvm->arch.uvmem_lock prevents concurrent operation on the secure device.
>>
>> Cc: Ram Pai <linuxram@us.ibm.com>
>> Cc: Bharata B Rao <bharata@linux.ibm.com>
>> Cc: Paul Mackerras <paulus@ozlabs.org>
>> Signed-off-by: Laurent Dufour <ldufour@linux.ibm.com>
>> ---
>> arch/powerpc/kvm/book3s_hv_uvmem.c | 54 ++++++++++++++++++++----------
>> 1 file changed, 37 insertions(+), 17 deletions(-)
>>
>> diff --git a/arch/powerpc/kvm/book3s_hv_uvmem.c b/arch/powerpc/kvm/book3s_hv_uvmem.c
>> index 852cc9ae6a0b..479ddf16d18c 100644
>> --- a/arch/powerpc/kvm/book3s_hv_uvmem.c
>> +++ b/arch/powerpc/kvm/book3s_hv_uvmem.c
>> @@ -533,35 +533,55 @@ static inline int kvmppc_svm_page_out(struct vm_area_struct *vma,
>> * fault on them, do fault time migration to replace the device PTEs in
>> * QEMU page table with normal PTEs from newly allocated pages.
>> */
>> -void kvmppc_uvmem_drop_pages(const struct kvm_memory_slot *free,
>> +void kvmppc_uvmem_drop_pages(const struct kvm_memory_slot *slot,
>> struct kvm *kvm, bool skip_page_out)
>> {
>> int i;
>> struct kvmppc_uvmem_page_pvt *pvt;
>> - unsigned long pfn, uvmem_pfn;
>> - unsigned long gfn = free->base_gfn;
>> + struct page *uvmem_page;
>> + struct vm_area_struct *vma = NULL;
>> + unsigned long uvmem_pfn, gfn;
>> + unsigned long addr, end;
>> +
>> + down_read(&kvm->mm->mmap_sem);
>
> You should be using mmap_read_lock(kvm->mm) with recent kernels.
Absolutely, shame on me, I reviewed Michel's series about that!
Paul, Michael, could you fix that when pulling this patch or should I sent a
whole new series?
>
>> +
>> + addr = slot->userspace_addr;
>> + end = addr + (slot->npages * PAGE_SIZE);
>>
>> - for (i = free->npages; i; --i, ++gfn) {
>> - struct page *uvmem_page;
>> + gfn = slot->base_gfn;
>> + for (i = slot->npages; i; --i, ++gfn, addr += PAGE_SIZE) {
>> +
>> + /* Fetch the VMA if addr is not in the latest fetched one */
>> + if (!vma || (addr < vma->vm_start || addr >= vma->vm_end)) {
>> + vma = find_vma_intersection(kvm->mm, addr, end);
>> + if (!vma ||
>> + vma->vm_start > addr || vma->vm_end < end) {
>> + pr_err("Can't find VMA for gfn:0x%lx\n", gfn);
>> + break;
>> + }
>> + }
>
> The first find_vma_intersection() was called for the range spanning the
> entire memslot, but you have code to check if vma remains valid for the
> new addr in each iteration. Guess you wanted to get vma for one page at
> a time and use it for subsequent pages until it covers the range?
That's the goal, fetch the VMA once and no more until we reach its end boundary.
^ permalink raw reply
* Re: Failure to build librseq on ppc
From: Michael Ellerman @ 2020-07-08 12:27 UTC (permalink / raw)
To: Segher Boessenkool, Mathieu Desnoyers
Cc: Boqun Feng, linuxppc-dev, Michael Jeanson
In-Reply-To: <20200708005922.GW3598@gate.crashing.org>
[-- Attachment #1: Type: text/plain, Size: 6822 bytes --]
Segher Boessenkool <segher@kernel.crashing.org> writes:
> Hi!
>
> On Tue, Jul 07, 2020 at 03:17:10PM -0400, Mathieu Desnoyers wrote:
>> I'm trying to build librseq at:
>>
>> https://git.kernel.org/pub/scm/libs/librseq/librseq.git
>>
>> on powerpc, and I get these errors when building the rseq basic
>> test mirrored from the kernel selftests code:
>>
>> /tmp/ccieEWxU.s: Assembler messages:
>> /tmp/ccieEWxU.s:118: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:118: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:121: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:121: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:626: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:626: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:629: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:629: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:735: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:735: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:738: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:738: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:741: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:741: Error: junk at end of line: `,8'
>> Makefile:581: recipe for target 'basic_percpu_ops_test.o' failed
>
> You'll have to show the actual failing machine code, and with enough
> context that we can relate this to the source code.
>
> -save-temps helps, or use -S instead of -c, etc.
Attached below.
$ gcc -Wall basic_percpu_ops_test.s
basic_percpu_ops_test.s: Assembler messages:
basic_percpu_ops_test.s:133: Error: operand out of domain (3 is not a multiple of 4)
basic_percpu_ops_test.s:133: Error: syntax error; found `,', expected `('
basic_percpu_ops_test.s:133: Error: junk at end of line: `,8'
basic_percpu_ops_test.s:136: Error: operand out of domain (3 is not a multiple of 4)
basic_percpu_ops_test.s:136: Error: syntax error; found `,', expected `('
basic_percpu_ops_test.s:136: Error: junk at end of line: `,8'
basic_percpu_ops_test.s:818: Error: operand out of domain (3 is not a multiple of 4)
basic_percpu_ops_test.s:818: Error: syntax error; found `,', expected `('
basic_percpu_ops_test.s:818: Error: junk at end of line: `,8'
basic_percpu_ops_test.s:821: Error: operand out of domain (3 is not a multiple of 4)
basic_percpu_ops_test.s:821: Error: syntax error; found `,', expected `('
basic_percpu_ops_test.s:821: Error: junk at end of line: `,8'
basic_percpu_ops_test.s:955: Error: operand out of domain (3 is not a multiple of 4)
basic_percpu_ops_test.s:955: Error: syntax error; found `,', expected `('
basic_percpu_ops_test.s:955: Error: junk at end of line: `,8'
basic_percpu_ops_test.s:958: Error: operand out of domain (3 is not a multiple of 4)
basic_percpu_ops_test.s:958: Error: syntax error; found `,', expected `('
basic_percpu_ops_test.s:958: Error: junk at end of line: `,8'
basic_percpu_ops_test.s:961: Error: operand out of domain (3 is not a multiple of 4)
basic_percpu_ops_test.s:961: Error: syntax error; found `,', expected `('
basic_percpu_ops_test.s:961: Error: junk at end of line: `,8'
$ sed '133!d' basic_percpu_ops_test.s
ld %r17, 3,8
$ sed '136!d' basic_percpu_ops_test.s
std 7, 3,8
$ sed '818!d' basic_percpu_ops_test.s
ld %r17, 3,8
$ sed '821!d' basic_percpu_ops_test.s
std 4, 3,8
$ sed '955!d' basic_percpu_ops_test.s
ld %r17, 3,8
$ sed '958!d' basic_percpu_ops_test.s
ld %r17, 3,8
$ sed '961!d' basic_percpu_ops_test.s
std %r17, 3,8
# 211 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.quad 1f, (2f - 1f), 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.quad 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.quad 1f, .L8
.popsection
lis %r17, (3b)@highest
ori %r17, %r17, (3b)@higher
rldicr %r17, %r17, 32, 31
oris %r17, %r17, (3b)@high
ori %r17, %r17, (3b)@l
std %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
ld %r17, 3,8 <--- line 133
cmpd cr7, %r17, 6
bne- cr7, .L8
std 7, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L8
.popsection
Tracking back to the source is "interesting", given there's a lot of
macros involved :)
I think that's from:
#define LOAD_WORD "ld "
#define RSEQ_ASM_OP_CMPEQ(var, expect, label) \
LOAD_WORD "%%r17, %[" __rseq_str(var) "]\n\t" \
CMP_WORD "cr7, %%r17, %[" __rseq_str(expect) "]\n\t" \
"bne- cr7, " __rseq_str(label) "\n\t"
static inline __attribute__((always_inline))
int rseq_cmpeqv_storev(intptr_t *v, intptr_t expect, intptr_t newv, int cpu)
{
RSEQ_INJECT_C(9)
__asm__ __volatile__ goto (
RSEQ_ASM_DEFINE_TABLE(3, 1f, 2f, 4f) /* start, commit, abort */
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[cmpfail])
#ifdef RSEQ_COMPARE_TWICE
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[error1])
RSEQ_ASM_DEFINE_EXIT_POINT(1f, %l[error2])
#endif
/* Start rseq by storing table entry pointer into rseq_cs. */
RSEQ_ASM_STORE_RSEQ_CS(1, 3b, rseq_cs)
/* cmp cpuid */
RSEQ_ASM_CMP_CPU_ID(cpu_id, current_cpu_id, 4f)
RSEQ_INJECT_ASM(3)
/* cmp @v equal to @expect */
RSEQ_ASM_OP_CMPEQ(v, expect, %l[cmpfail]) <----
RSEQ_INJECT_ASM(4)
#ifdef RSEQ_COMPARE_TWICE
/* cmp cpuid */
RSEQ_ASM_CMP_CPU_ID(cpu_id, current_cpu_id, %l[error1])
/* cmp @v equal to @expect */
RSEQ_ASM_OP_CMPEQ(v, expect, %l[error2])
#endif
/* final store */
RSEQ_ASM_OP_FINAL_STORE(newv, v, 2)
RSEQ_INJECT_ASM(5)
RSEQ_ASM_DEFINE_ABORT(4, abort)
: /* gcc asm goto does not allow outputs */
: [cpu_id] "r" (cpu),
[current_cpu_id] "m" (__rseq_abi.cpu_id),
[rseq_cs] "m" (__rseq_abi.rseq_cs),
[v] "m" (*v), <----
[expect] "r" (expect),
[newv] "r" (newv)
RSEQ_INJECT_INPUT
: "memory", "cc", "r17"
RSEQ_INJECT_CLOBBER
: abort, cmpfail
#ifdef RSEQ_COMPARE_TWICE
, error1, error2
#endif
);
cheers
[-- Attachment #2: basic_percpu_ops_test.s --]
[-- Type: text/plain, Size: 121743 bytes --]
.file "basic_percpu_ops_test.c"
.abiversion 2
.section ".text"
.Ltext0:
.section .rodata.str1.8,"aMS",@progbits,1
.align 3
.LC0:
.string "basic_percpu_ops_test.c"
.align 3
.LC1:
.string "lock->c[cpu].v == 1"
.section ".text"
.align 2
.p2align 4,,15
.type rseq_percpu_unlock.part.0, @function
rseq_percpu_unlock.part.0:
.LFB111:
.file 1 "basic_percpu_ops_test.c"
.loc 1 72 6 view -0
.cfi_startproc
.LCF0:
0: addis 2,12,.TOC.-.LCF0@ha
addi 2,2,.TOC.-.LCF0@l
.localentry rseq_percpu_unlock.part.0,.-rseq_percpu_unlock.part.0
mflr 0
std 0,16(1)
stdu 1,-32(1)
.cfi_def_cfa_offset 32
.cfi_offset 65, 16
.LVL0:
.loc 1 74 2 view .LVU1
li 5,74
addis 6,2,.LANCHOR0@toc@ha
addis 4,2,.LC0@toc@ha
addis 3,2,.LC1@toc@ha
addi 6,6,.LANCHOR0@toc@l
addi 4,4,.LC0@toc@l
addi 3,3,.LC1@toc@l
bl __assert_fail
nop
.LVL1:
.long 0
.byte 0,0,0,1,128,0,0,0
.cfi_endproc
.LFE111:
.size rseq_percpu_unlock.part.0,.-rseq_percpu_unlock.part.0
.align 2
.p2align 4,,15
.globl rseq_this_cpu_lock
.type rseq_this_cpu_lock, @function
rseq_this_cpu_lock:
.LVL2:
.LFB101:
.loc 1 51 1 view -0
.cfi_startproc
.LCF1:
0: addis 2,12,.TOC.-.LCF1@ha
addi 2,2,.TOC.-.LCF1@l
.localentry rseq_this_cpu_lock,.-rseq_this_cpu_lock
.loc 1 51 1 is_stmt 0 view .LVU3
std 17,-120(1)
.cfi_offset 17, -120
addis 9,2,__rseq_abi@got@tprel@ha
.LBB78:
.LBB79:
.LBB80:
.file 2 "../include/rseq/rseq-ppc.h"
.loc 2 211 2 view .LVU4
li 6,0
ld 9,__rseq_abi@got@tprel@l(9)
li 7,1
.LBE80:
.LBE79:
.LBB82:
.LBB83:
.file 3 "../include/rseq/rseq.h"
.loc 3 142 9 view .LVU5
add 9,9,__rseq_abi@tls
.L5:
.L8:
.L6:
.LBE83:
.LBE82:
.LBE78:
.loc 1 52 2 is_stmt 1 view .LVU6
.loc 1 54 2 view .LVU7
.LBB87:
.loc 1 55 3 view .LVU8
.loc 1 57 3 view .LVU9
.LBB85:
.LBI82:
.loc 3 140 24 view .LVU10
.LBB84:
.loc 3 142 2 view .LVU11
.loc 3 142 9 is_stmt 0 view .LVU12
lwz 10,0(9)
.LBE84:
.LBE85:
.loc 1 57 7 view .LVU13
extsw 10,10
.LVL3:
.loc 1 58 3 is_stmt 1 view .LVU14
.LBB86:
.LBI79:
.loc 2 207 5 view .LVU15
.LBB81:
.loc 2 211 2 view .LVU16
sldi 8,10,7
#APP
# 211 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.quad 1f, (2f - 1f), 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.quad 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.quad 1f, .L8
.popsection
lis %r17, (3b)@highest
ori %r17, %r17, (3b)@higher
rldicr %r17, %r17, 32, 31
oris %r17, %r17, (3b)@high
ori %r17, %r17, (3b)@l
std %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
ld %r17, 3,8
cmpd cr7, %r17, 6
bne- cr7, .L8
std 7, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L8
.popsection
# 0 "" 2
.LVL4:
.loc 2 211 2 is_stmt 0 view .LVU17
#NO_APP
.LBE81:
.LBE86:
.loc 1 60 3 is_stmt 1 view .LVU18
.LBE87:
.loc 1 68 2 view .LVU19
#APP
# 68 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
.loc 1 69 2 view .LVU20
.loc 1 70 1 is_stmt 0 view .LVU21
#NO_APP
ld 17,-120(1)
mr 3,10
.LVL5:
.loc 1 70 1 view .LVU22
.cfi_restore 17
blr
.long 0
.byte 0,0,0,0,0,15,0,0
.cfi_endproc
.LFE101:
.size rseq_this_cpu_lock,.-rseq_this_cpu_lock
.section .rodata.str1.8
.align 3
.LC3:
.string "Error: rseq_register_current_thread(...) failed(%d): %s\n"
.align 3
.LC4:
.string "Error: rseq_unregister_current_thread(...) failed(%d): %s\n"
.section ".toc","aw"
.align 3
.LC2:
.quad stderr
.section ".text"
.align 2
.p2align 4,,15
.globl test_percpu_spinlock_thread
.type test_percpu_spinlock_thread, @function
test_percpu_spinlock_thread:
.LVL6:
.LFB103:
.loc 1 83 1 is_stmt 1 view -0
.cfi_startproc
.LCF2:
0: addis 2,12,.TOC.-.LCF2@ha
addi 2,2,.TOC.-.LCF2@l
.localentry test_percpu_spinlock_thread,.-test_percpu_spinlock_thread
.loc 1 83 1 is_stmt 0 view .LVU24
mflr 0
std 28,-32(1)
std 29,-24(1)
std 30,-16(1)
std 31,-8(1)
std 0,16(1)
stdu 1,-144(1)
.cfi_def_cfa_offset 144
.cfi_offset 65, 16
.cfi_offset 28, -32
.cfi_offset 29, -24
.cfi_offset 30, -16
.cfi_offset 31, -8
.loc 1 84 2 is_stmt 1 view .LVU25
.loc 1 83 1 is_stmt 0 view .LVU26
mr 31,3
.LVL7:
.loc 1 85 2 is_stmt 1 view .LVU27
.loc 1 87 2 view .LVU28
.loc 1 87 6 is_stmt 0 view .LVU29
bl rseq_register_current_thread
nop
.LVL8:
.loc 1 87 5 view .LVU30
mr. 30,3
bne 0,.L11
.LVL9:
.LBB98:
.LBB99:
.loc 1 92 14 is_stmt 1 view .LVU31
.loc 1 92 22 is_stmt 0 view .LVU32
addis 29,31,0x4
.LBB100:
.LBB101:
.loc 1 79 2 view .LVU33
li 28,0
.LBE101:
.LBE100:
.loc 1 92 2 view .LVU34
lwz 9,0(29)
cmpwi 0,9,0
ble 0,.L17
.LVL10:
.p2align 4,,15
.L16:
.loc 1 93 3 is_stmt 1 view .LVU35
.loc 1 93 9 is_stmt 0 view .LVU36
mr 3,31
bl rseq_this_cpu_lock
.LVL11:
.loc 1 94 3 is_stmt 1 view .LVU37
sldi 3,3,7
.LVL12:
.loc 1 94 3 is_stmt 0 view .LVU38
add 9,31,3
.loc 1 94 21 view .LVU39
addis 9,9,0x2
ld 10,0(9)
addi 10,10,1
std 10,0(9)
.loc 1 95 3 is_stmt 1 view .LVU40
.LVL13:
.LBB105:
.LBI100:
.loc 1 72 6 view .LVU41
.LBB102:
.loc 1 74 2 view .LVU42
ldx 9,31,3
cmpdi 0,9,1
bne 0,.L22
.loc 1 79 2 view .LVU43
.loc 1 79 2 view .LVU44
#APP
# 79 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
.loc 1 79 2 view .LVU45
#NO_APP
.LBE102:
.LBE105:
.loc 1 92 2 is_stmt 0 view .LVU46
lwz 9,0(29)
.loc 1 92 31 view .LVU47
addi 10,30,1
.LBB106:
.LBB103:
.loc 1 79 2 view .LVU48
stdx 28,31,3
.loc 1 79 2 is_stmt 1 view .LVU49
.LVL14:
.loc 1 79 2 is_stmt 0 view .LVU50
.LBE103:
.LBE106:
.loc 1 92 30 is_stmt 1 view .LVU51
.loc 1 92 31 is_stmt 0 view .LVU52
extsw 30,10
.LVL15:
.loc 1 92 14 is_stmt 1 view .LVU53
.loc 1 92 2 is_stmt 0 view .LVU54
cmpw 0,9,10
bgt 0,.L16
.LVL16:
.L17:
.loc 1 97 2 is_stmt 1 view .LVU55
.loc 1 97 6 is_stmt 0 view .LVU56
bl rseq_unregister_current_thread
nop
.LVL17:
.loc 1 97 5 view .LVU57
cmpdi 0,3,0
bne 0,.L23
.LBE99:
.LBE98:
.loc 1 103 2 is_stmt 1 discriminator 1 view .LVU58
.loc 1 104 1 is_stmt 0 discriminator 1 view .LVU59
addi 1,1,144
.cfi_remember_state
.cfi_def_cfa_offset 0
ld 0,16(1)
ld 28,-32(1)
ld 29,-24(1)
ld 30,-16(1)
ld 31,-8(1)
.LVL18:
.loc 1 104 1 discriminator 1 view .LVU60
mtlr 0
.cfi_restore 65
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
blr
.LVL19:
.L22:
.cfi_restore_state
.LBB114:
.LBB112:
.LBB107:
.LBB104:
.loc 1 104 1 discriminator 1 view .LVU61
bl rseq_percpu_unlock.part.0
.LVL20:
.L11:
.loc 1 104 1 discriminator 1 view .LVU62
.LBE104:
.LBE107:
.LBE112:
.LBE114:
.loc 1 88 3 is_stmt 1 view .LVU63
addis 9,2,.LC2@toc@ha
ld 9,.LC2@toc@l(9)
ld 31,0(9)
.LVL21:
.loc 1 89 4 is_stmt 0 view .LVU64
bl __errno_location
nop
.LVL22:
.loc 1 88 3 view .LVU65
lwa 6,0(3)
mr 3,6
std 6,104(1)
bl strerror
nop
.LVL23:
.LBB115:
.LBI115:
.file 4 "/usr/include/powerpc64le-linux-gnu/bits/stdio2.h"
.loc 4 98 1 is_stmt 1 view .LVU66
.LBB116:
.loc 4 100 3 view .LVU67
.loc 4 100 10 is_stmt 0 view .LVU68
ld 6,104(1)
addis 5,2,.LC3@toc@ha
li 4,1
addi 5,5,.LC3@toc@l
.LBE116:
.LBE115:
.loc 1 88 3 view .LVU69
mr 7,3
.LBB118:
.LBB117:
.loc 4 100 10 view .LVU70
mr 3,31
bl __fprintf_chk
nop
.LVL24:
.loc 4 100 10 view .LVU71
.LBE117:
.LBE118:
.loc 1 90 3 is_stmt 1 view .LVU72
bl abort
nop
.LVL25:
.L23:
.LBB119:
.LBB113:
.loc 1 98 3 view .LVU73
addis 9,2,.LC2@toc@ha
ld 9,.LC2@toc@l(9)
ld 31,0(9)
.LVL26:
.loc 1 99 4 is_stmt 0 view .LVU74
bl __errno_location
nop
.LVL27:
.loc 1 98 3 view .LVU75
lwa 6,0(3)
mr 3,6
std 6,104(1)
bl strerror
nop
.LVL28:
.LBB108:
.LBI108:
.loc 4 98 1 is_stmt 1 view .LVU76
.LBB109:
.loc 4 100 3 view .LVU77
.loc 4 100 10 is_stmt 0 view .LVU78
ld 6,104(1)
addis 5,2,.LC4@toc@ha
li 4,1
addi 5,5,.LC4@toc@l
.LBE109:
.LBE108:
.loc 1 98 3 view .LVU79
mr 7,3
.LBB111:
.LBB110:
.loc 4 100 10 view .LVU80
mr 3,31
bl __fprintf_chk
nop
.LVL29:
.loc 4 100 10 view .LVU81
.LBE110:
.LBE111:
.loc 1 100 3 is_stmt 1 view .LVU82
bl abort
nop
.LVL30:
.LBE113:
.LBE119:
.long 0
.byte 0,0,0,1,128,4,0,0
.cfi_endproc
.LFE103:
.size test_percpu_spinlock_thread,.-test_percpu_spinlock_thread
.align 2
.p2align 4,,15
.globl rseq_percpu_unlock
.type rseq_percpu_unlock, @function
rseq_percpu_unlock:
.LVL31:
.LFB102:
.loc 1 73 1 view -0
.cfi_startproc
.LCF3:
0: addis 2,12,.TOC.-.LCF3@ha
addi 2,2,.TOC.-.LCF3@l
.localentry rseq_percpu_unlock,.-rseq_percpu_unlock
.loc 1 74 2 view .LVU84
sldi 4,4,7
.LVL32:
.loc 1 74 2 is_stmt 0 view .LVU85
ldx 9,3,4
cmpdi 0,9,1
bne 0,.L29
.loc 1 79 2 is_stmt 1 view .LVU86
.loc 1 79 2 view .LVU87
#APP
# 79 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
.loc 1 79 2 view .LVU88
#NO_APP
li 9,0
stdx 9,3,4
.loc 1 79 2 view .LVU89
blr
.L29:
.loc 1 73 1 is_stmt 0 discriminator 1 view .LVU90
mflr 0
std 0,16(1)
stdu 1,-32(1)
.cfi_def_cfa_offset 32
.cfi_offset 65, 16
bl rseq_percpu_unlock.part.0
.LVL33:
.loc 1 73 1 discriminator 1 view .LVU91
.long 0
.byte 0,0,0,1,128,0,0,0
.cfi_endproc
.LFE102:
.size rseq_percpu_unlock,.-rseq_percpu_unlock
.section .rodata.str1.8
.align 3
.LC5:
.string "sum == (uint64_t)data.reps * num_threads"
.section ".text"
.align 2
.p2align 4,,15
.globl test_percpu_spinlock
.type test_percpu_spinlock, @function
test_percpu_spinlock:
.LFB104:
.loc 1 113 1 is_stmt 1 view -0
.cfi_startproc
.LCF4:
0: addis 2,12,.TOC.-.LCF4@ha
addi 2,2,.TOC.-.LCF4@l
.localentry test_percpu_spinlock,.-test_percpu_spinlock
.loc 1 113 1 is_stmt 0 view .LVU93
mflr 0
addis 12,1,0xfffc
.cfi_def_cfa 12, 262144
.cfi_register 65, 0
std 25,-56(1)
std 26,-48(1)
std 27,-40(1)
std 28,-32(1)
std 29,-24(1)
std 30,-16(1)
std 31,-8(1)
std 0,16(1)
.cfi_offset 25, -56
.cfi_offset 26, -48
.cfi_offset 27, -40
.cfi_offset 28, -32
.cfi_offset 29, -24
.cfi_offset 30, -16
.cfi_offset 31, -8
.cfi_offset 65, 16
mr 0,1
.LPSRL0:
stdu 0,-4096(1)
cmpd 0,1,12
bne 0,.LPSRL0
.cfi_def_cfa_register 1
stdu 0,-352(1)
.cfi_def_cfa_offset 262496
lis 10,0x4
mr 31,1
.cfi_def_cfa_register 31
.loc 1 113 1 view .LVU94
ori 10,10,0x118
.loc 1 117 12 view .LVU95
ld 9,0(1)
.loc 1 113 1 view .LVU96
add 10,10,31
addi 6,31,159
ld 8,-28688(13)
std 8,0(10)
li 8,0
.loc 1 114 2 is_stmt 1 view .LVU97
.LVL34:
.loc 1 115 2 view .LVU98
.loc 1 116 2 view .LVU99
.loc 1 117 2 view .LVU100
.loc 1 113 1 is_stmt 0 view .LVU101
rldicr 30,6,0,56
.LBB126:
.LBB127:
.file 5 "/usr/include/powerpc64le-linux-gnu/bits/string_fortified.h"
.loc 5 71 10 view .LVU102
lis 5,0x4
.LBE127:
.LBE126:
.loc 1 117 12 view .LVU103
stdu 9,-1600(1)
.LBB131:
.LBB128:
.loc 5 71 10 view .LVU104
mr 3,30
ori 5,5,0x80
li 4,0
.LBE128:
.LBE131:
.loc 1 121 12 view .LVU105
addis 27,30,0x4
addis 25,2,test_percpu_spinlock_thread@toc@ha
addi 25,25,test_percpu_spinlock_thread@toc@l
.LBB132:
.LBB129:
.loc 5 71 10 view .LVU106
bl memset
nop
.LVL35:
.LBE129:
.LBE132:
.loc 1 121 12 view .LVU107
li 9,5000
.loc 1 117 12 view .LVU108
addi 28,1,32
.LVL36:
.loc 1 118 2 is_stmt 1 view .LVU109
.loc 1 120 2 view .LVU110
.LBB133:
.LBI126:
.loc 5 59 1 view .LVU111
.LBB130:
.loc 5 71 3 view .LVU112
.loc 5 71 3 is_stmt 0 view .LVU113
.LBE130:
.LBE133:
.loc 1 121 2 is_stmt 1 view .LVU114
addi 26,28,1600
.loc 1 121 12 is_stmt 0 view .LVU115
mr 29,28
stw 9,0(27)
.loc 1 123 2 is_stmt 1 view .LVU116
.LVL37:
.loc 1 123 14 view .LVU117
.p2align 5
.L31:
.loc 1 124 3 discriminator 3 view .LVU118
mr 3,29
mr 6,30
mr 5,25
li 4,0
addi 29,29,8
bl pthread_create
nop
.LVL38:
.loc 1 123 31 discriminator 3 view .LVU119
.loc 1 123 14 discriminator 3 view .LVU120
.loc 1 123 2 is_stmt 0 discriminator 3 view .LVU121
cmpld 0,29,26
bne 0,.L31
addi 29,28,-8
addi 28,28,1592
.LVL39:
.p2align 5
.L32:
.loc 1 128 3 is_stmt 1 discriminator 3 view .LVU122
ldu 3,8(29)
li 4,0
bl pthread_join
nop
.LVL40:
.loc 1 127 31 discriminator 3 view .LVU123
.loc 1 127 14 discriminator 3 view .LVU124
.loc 1 127 2 is_stmt 0 discriminator 3 view .LVU125
cmpld 0,29,28
bne 0,.L32
addis 30,30,0x2
.loc 1 130 6 view .LVU126
li 9,0
.p2align 5
.L33:
.LVL41:
.loc 1 132 3 is_stmt 1 discriminator 3 view .LVU127
.loc 1 132 7 is_stmt 0 discriminator 3 view .LVU128
ld 10,0(30)
addi 30,30,128
.loc 1 131 2 discriminator 3 view .LVU129
cmpld 0,27,30
.loc 1 132 7 discriminator 3 view .LVU130
add 9,9,10
.LVL42:
.loc 1 131 31 is_stmt 1 discriminator 3 view .LVU131
.loc 1 131 14 discriminator 3 view .LVU132
.loc 1 131 2 is_stmt 0 discriminator 3 view .LVU133
bne 0,.L33
.loc 1 134 2 is_stmt 1 view .LVU134
lwa 10,0(27)
mulli 10,10,200
cmpd 0,10,9
bne 0,.L40
.loc 1 135 1 is_stmt 0 view .LVU135
lis 9,0x4
.LVL43:
.loc 1 135 1 view .LVU136
ori 9,9,0x118
add 9,9,31
ld 10,0(9)
ld 9,-28688(13)
xor. 10,10,9
li 9,0
bne 0,.L41
ld 1,0(1)
.cfi_remember_state
.cfi_def_cfa 1, 0
ld 0,16(1)
ld 25,-56(1)
ld 26,-48(1)
ld 27,-40(1)
ld 28,-32(1)
.LVL44:
.loc 1 135 1 view .LVU137
ld 29,-24(1)
ld 30,-16(1)
ld 31,-8(1)
mtlr 0
.cfi_restore 65
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
.cfi_restore 27
.cfi_restore 26
.cfi_restore 25
blr
.LVL45:
.L40:
.cfi_restore_state
.LBB134:
.LBI134:
.loc 1 112 6 is_stmt 1 view .LVU138
.LBB135:
.loc 1 134 2 view .LVU139
addis 6,2,.LANCHOR0+24@toc@ha
addis 4,2,.LC0@toc@ha
addis 3,2,.LC5@toc@ha
addi 6,6,.LANCHOR0+24@toc@l
li 5,134
addi 4,4,.LC0@toc@l
addi 3,3,.LC5@toc@l
bl __assert_fail
nop
.LVL46:
.L41:
.loc 1 134 2 is_stmt 0 view .LVU140
.LBE135:
.LBE134:
.loc 1 135 1 view .LVU141
bl __stack_chk_fail
nop
.LVL47:
.long 0
.byte 0,0,0,1,128,7,0,0
.cfi_endproc
.LFE104:
.size test_percpu_spinlock,.-test_percpu_spinlock
.align 2
.p2align 4,,15
.globl this_cpu_list_push
.type this_cpu_list_push, @function
this_cpu_list_push:
.LVL48:
.LFB105:
.loc 1 140 1 is_stmt 1 view -0
.cfi_startproc
.LCF5:
0: addis 2,12,.TOC.-.LCF5@ha
addi 2,2,.TOC.-.LCF5@l
.localentry this_cpu_list_push,.-this_cpu_list_push
.loc 1 140 1 is_stmt 0 view .LVU143
std 17,-120(1)
.cfi_offset 17, -120
addis 9,2,__rseq_abi@got@tprel@ha
ld 9,__rseq_abi@got@tprel@l(9)
.LBB136:
.LBB137:
.LBB138:
.loc 3 142 9 view .LVU144
add 9,9,__rseq_abi@tls
.L43:
.L49:
.L44:
.LBE138:
.LBE137:
.LBE136:
.loc 1 141 2 is_stmt 1 view .LVU145
.loc 1 143 2 view .LVU146
.LBB143:
.loc 1 144 3 view .LVU147
.loc 1 145 3 view .LVU148
.loc 1 147 3 view .LVU149
.LBB140:
.LBI137:
.loc 3 140 24 view .LVU150
.LBB139:
.loc 3 142 2 view .LVU151
.loc 3 142 9 is_stmt 0 view .LVU152
lwz 10,0(9)
.LBE139:
.LBE140:
.loc 1 147 7 view .LVU153
extsw 10,10
.LVL49:
.loc 1 149 3 is_stmt 1 view .LVU154
.loc 1 149 22 is_stmt 0 view .LVU155
sldi 8,10,7
ldx 7,3,8
.LVL50:
.loc 1 150 3 is_stmt 1 view .LVU156
.loc 1 151 3 view .LVU157
.loc 1 152 3 view .LVU158
.loc 1 152 14 is_stmt 0 view .LVU159
std 7,8(4)
.loc 1 153 3 is_stmt 1 view .LVU160
.LVL51:
.LBB141:
.LBI141:
.loc 2 207 5 view .LVU161
.LBB142:
.loc 2 211 2 view .LVU162
#APP
# 211 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.quad 1f, (2f - 1f), 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.quad 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.quad 1f, .L49
.popsection
lis %r17, (3b)@highest
ori %r17, %r17, (3b)@higher
rldicr %r17, %r17, 32, 31
oris %r17, %r17, (3b)@high
ori %r17, %r17, (3b)@l
std %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
ld %r17, 3,8
cmpd cr7, %r17, 7
bne- cr7, .L49
std 4, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L49
.popsection
# 0 "" 2
.LVL52:
.loc 2 211 2 is_stmt 0 view .LVU163
#NO_APP
.LBE142:
.LBE141:
.loc 1 154 3 is_stmt 1 view .LVU164
.LBE143:
.loc 1 158 2 view .LVU165
.loc 1 158 5 is_stmt 0 view .LVU166
cmpdi 0,5,0
beq 0,.L42
.loc 1 159 3 is_stmt 1 view .LVU167
.loc 1 159 9 is_stmt 0 view .LVU168
stw 10,0(5)
.L42:
.loc 1 160 1 view .LVU169
ld 17,-120(1)
.cfi_restore 17
blr
.long 0
.byte 0,0,0,0,0,15,0,0
.cfi_endproc
.LFE105:
.size this_cpu_list_push,.-this_cpu_list_push
.align 2
.p2align 4,,15
.globl this_cpu_list_pop
.type this_cpu_list_pop, @function
this_cpu_list_pop:
.LVL53:
.LFB106:
.loc 1 169 1 is_stmt 1 view -0
.cfi_startproc
.LCF6:
0: addis 2,12,.TOC.-.LCF6@ha
addi 2,2,.TOC.-.LCF6@l
.localentry this_cpu_list_pop,.-this_cpu_list_pop
.loc 1 169 1 is_stmt 0 view .LVU171
std 17,-120(1)
stdu 1,-176(1)
.cfi_def_cfa_offset 176
.cfi_offset 17, -120
.LBB144:
.LBB145:
.LBB146:
.loc 2 271 2 view .LVU172
li 6,0
.LBE146:
.LBE145:
.LBE144:
.loc 1 169 1 view .LVU173
ld 9,-28688(13)
std 9,40(1)
li 9,0
addis 9,2,__rseq_abi@got@tprel@ha
ld 9,__rseq_abi@got@tprel@l(9)
.LBB155:
.LBB149:
.LBB150:
.loc 3 142 9 view .LVU174
add 9,9,__rseq_abi@tls
.LBE150:
.LBE149:
.LBB152:
.LBB147:
.loc 2 271 2 view .LVU175
li 7,8
.L56:
.LBE147:
.LBE152:
.LBE155:
.loc 1 170 2 is_stmt 1 view .LVU176
.LBB156:
.loc 1 171 3 view .LVU177
.loc 1 172 3 view .LVU178
.loc 1 173 3 view .LVU179
.loc 1 174 3 view .LVU180
.loc 1 176 3 view .LVU181
.LBB153:
.LBI149:
.loc 3 140 24 view .LVU182
.LBB151:
.loc 3 142 2 view .LVU183
.loc 3 142 9 is_stmt 0 view .LVU184
lwz 10,0(9)
.LBE151:
.LBE153:
.loc 1 176 7 view .LVU185
extsw 10,10
.LVL54:
.loc 1 177 3 is_stmt 1 view .LVU186
.loc 1 178 3 view .LVU187
.loc 1 179 3 view .LVU188
.loc 1 180 3 view .LVU189
.loc 1 181 3 view .LVU190
.LBB154:
.LBI145:
.loc 2 266 5 view .LVU191
.LBB148:
.loc 2 271 2 view .LVU192
sldi 8,10,7
#APP
# 271 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.quad 1f, (2f - 1f), 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.quad 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.quad 1f, .L58
.popsection
lis %r17, (3b)@highest
ori %r17, %r17, (3b)@higher
rldicr %r17, %r17, 32, 31
oris %r17, %r17, (3b)@high
ori %r17, %r17, (3b)@l
std %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
ld %r17, 3,8
cmpd cr7, %r17, 6
beq- cr7, .L58
ld %r17, 3,8
std %r17, 32(1)
ldx %r17, 7, %r17
std %r17, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L56
.popsection
# 0 "" 2
.LVL55:
.loc 2 271 2 is_stmt 0 view .LVU193
#NO_APP
.LBE148:
.LBE154:
.loc 1 183 3 is_stmt 1 view .LVU194
.loc 1 184 4 view .LVU195
.loc 1 184 7 is_stmt 0 view .LVU196
cmpdi 0,4,0
beq 0,.L55
.loc 1 185 5 is_stmt 1 view .LVU197
.loc 1 185 11 is_stmt 0 view .LVU198
stw 10,0(4)
.L55:
.loc 1 186 4 is_stmt 1 view .LVU199
.loc 1 186 11 is_stmt 0 view .LVU200
ld 3,32(1)
.LVL56:
.L52:
.loc 1 186 11 view .LVU201
.LBE156:
.loc 1 192 1 view .LVU202
ld 9,40(1)
ld 10,-28688(13)
xor. 9,9,10
li 10,0
.LVL57:
.loc 1 192 1 view .LVU203
bne 0,.L63
addi 1,1,176
.cfi_remember_state
.cfi_def_cfa_offset 0
.LVL58:
.loc 1 192 1 view .LVU204
ld 17,-120(1)
.cfi_restore 17
blr
.L53:
.LVL59:
.p2align 4,,15
.L58:
.cfi_restore_state
.L54:
.LBB157:
.loc 1 189 11 view .LVU205
li 3,0
.LVL60:
.loc 1 189 11 view .LVU206
b .L52
.LVL61:
.L63:
.loc 1 189 11 view .LVU207
mflr 0
.cfi_register 65, 0
std 0,192(1)
.cfi_offset 65, 16
.LBE157:
.loc 1 192 1 view .LVU208
bl __stack_chk_fail
nop
.LVL62:
.loc 1 192 1 view .LVU209
.long 0
.byte 0,0,0,1,128,15,0,0
.cfi_endproc
.LFE106:
.size this_cpu_list_pop,.-this_cpu_list_pop
.section ".toc","aw"
.set .LC6,.LC2
.section ".text"
.align 2
.p2align 4,,15
.globl test_percpu_list_thread
.type test_percpu_list_thread, @function
test_percpu_list_thread:
.LVL63:
.LFB108:
.loc 1 210 1 is_stmt 1 view -0
.cfi_startproc
.LCF7:
0: addis 2,12,.TOC.-.LCF7@ha
addi 2,2,.TOC.-.LCF7@l
.localentry test_percpu_list_thread,.-test_percpu_list_thread
.loc 1 210 1 is_stmt 0 view .LVU211
mflr 0
std 29,-24(1)
std 30,-16(1)
std 31,-8(1)
std 0,16(1)
stdu 1,-144(1)
.cfi_def_cfa_offset 144
.cfi_offset 65, 16
.cfi_offset 29, -24
.cfi_offset 30, -16
.cfi_offset 31, -8
.loc 1 211 2 is_stmt 1 view .LVU212
.loc 1 212 2 view .LVU213
lis 31,0x1
.loc 1 210 1 is_stmt 0 view .LVU214
mr 29,3
.LVL64:
.loc 1 214 2 is_stmt 1 view .LVU215
.loc 1 214 6 is_stmt 0 view .LVU216
bl rseq_register_current_thread
nop
.LVL65:
.loc 1 214 6 view .LVU217
ori 31,31,0x86a0
.loc 1 214 5 view .LVU218
cmpdi 0,3,0
bne 0,.L74
.p2align 4,,15
.L65:
.LVL66:
.LBB168:
.loc 1 221 3 is_stmt 1 view .LVU219
.loc 1 223 3 view .LVU220
.loc 1 223 10 is_stmt 0 view .LVU221
li 4,0
mr 3,29
bl this_cpu_list_pop
.LVL67:
mr 30,3
.LVL68:
.loc 1 224 3 is_stmt 1 view .LVU222
bl sched_yield
nop
.LVL69:
.loc 1 225 3 view .LVU223
.loc 1 225 6 is_stmt 0 view .LVU224
cmpdi 0,30,0
beq 0,.L66
.loc 1 226 4 is_stmt 1 view .LVU225
mr 4,30
li 5,0
mr 3,29
bl this_cpu_list_push
.LVL70:
.L66:
.LBE168:
.loc 1 220 26 discriminator 2 view .LVU226
.loc 1 220 14 discriminator 2 view .LVU227
addi 9,31,-1
.loc 1 220 2 is_stmt 0 discriminator 2 view .LVU228
rldicl. 31,9,0,32
.LVL71:
.loc 1 220 2 discriminator 2 view .LVU229
bne 0,.L65
.loc 1 229 2 is_stmt 1 view .LVU230
.loc 1 229 6 is_stmt 0 view .LVU231
bl rseq_unregister_current_thread
nop
.LVL72:
.loc 1 229 5 view .LVU232
cmpdi 0,3,0
bne 0,.L75
.loc 1 235 2 is_stmt 1 view .LVU233
.loc 1 236 1 is_stmt 0 view .LVU234
addi 1,1,144
.cfi_remember_state
.cfi_def_cfa_offset 0
ld 0,16(1)
ld 29,-24(1)
.LVL73:
.loc 1 236 1 view .LVU235
ld 30,-16(1)
.LVL74:
.loc 1 236 1 view .LVU236
ld 31,-8(1)
.LVL75:
.loc 1 236 1 view .LVU237
mtlr 0
.cfi_restore 65
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
blr
.LVL76:
.L74:
.cfi_restore_state
.loc 1 215 3 is_stmt 1 view .LVU238
addis 9,2,.LC6@toc@ha
ld 9,.LC6@toc@l(9)
ld 31,0(9)
.loc 1 216 4 is_stmt 0 view .LVU239
bl __errno_location
nop
.LVL77:
.loc 1 215 3 view .LVU240
lwa 6,0(3)
mr 3,6
std 6,104(1)
bl strerror
nop
.LVL78:
.LBB169:
.LBI169:
.loc 4 98 1 is_stmt 1 view .LVU241
.LBB170:
.loc 4 100 3 view .LVU242
.loc 4 100 10 is_stmt 0 view .LVU243
ld 6,104(1)
addis 5,2,.LC3@toc@ha
li 4,1
addi 5,5,.LC3@toc@l
.LBE170:
.LBE169:
.loc 1 215 3 view .LVU244
mr 7,3
.LBB172:
.LBB171:
.loc 4 100 10 view .LVU245
mr 3,31
bl __fprintf_chk
nop
.LVL79:
.loc 4 100 10 view .LVU246
.LBE171:
.LBE172:
.loc 1 217 3 is_stmt 1 view .LVU247
bl abort
nop
.LVL80:
.L75:
.LBB173:
.LBI173:
.loc 1 209 7 view .LVU248
.LBB174:
.loc 1 230 3 view .LVU249
addis 9,2,.LC6@toc@ha
ld 9,.LC6@toc@l(9)
ld 31,0(9)
.LVL81:
.loc 1 231 4 is_stmt 0 view .LVU250
bl __errno_location
nop
.LVL82:
.loc 1 230 3 view .LVU251
lwa 6,0(3)
mr 3,6
std 6,104(1)
bl strerror
nop
.LVL83:
.LBB175:
.LBI175:
.loc 4 98 1 is_stmt 1 view .LVU252
.LBB176:
.loc 4 100 3 view .LVU253
.loc 4 100 10 is_stmt 0 view .LVU254
ld 6,104(1)
addis 5,2,.LC4@toc@ha
li 4,1
addi 5,5,.LC4@toc@l
.LBE176:
.LBE175:
.loc 1 230 3 view .LVU255
mr 7,3
.LBB178:
.LBB177:
.loc 4 100 10 view .LVU256
mr 3,31
bl __fprintf_chk
nop
.LVL84:
.loc 4 100 10 view .LVU257
.LBE177:
.LBE178:
.loc 1 232 3 is_stmt 1 view .LVU258
bl abort
nop
.LVL85:
.LBE174:
.LBE173:
.long 0
.byte 0,0,0,1,128,3,0,0
.cfi_endproc
.LFE108:
.size test_percpu_list_thread,.-test_percpu_list_thread
.align 2
.p2align 4,,15
.globl __percpu_list_pop
.type __percpu_list_pop, @function
__percpu_list_pop:
.LVL86:
.LFB107:
.loc 1 199 1 view -0
.cfi_startproc
.loc 1 200 2 view .LVU260
.loc 1 202 2 view .LVU261
sldi 4,4,7
.LVL87:
.loc 1 199 1 is_stmt 0 view .LVU262
mr 9,3
.loc 1 202 7 view .LVU263
ldx 3,3,4
.LVL88:
.loc 1 203 2 is_stmt 1 view .LVU264
.loc 1 203 5 is_stmt 0 view .LVU265
cmpdi 0,3,0
beqlr 0
.loc 1 205 2 is_stmt 1 view .LVU266
.loc 1 205 20 is_stmt 0 view .LVU267
ld 10,8(3)
stdx 10,9,4
.loc 1 206 2 is_stmt 1 view .LVU268
.loc 1 207 1 is_stmt 0 view .LVU269
blr
.long 0
.byte 0,0,0,0,0,0,0,0
.cfi_endproc
.LFE107:
.size __percpu_list_pop,.-__percpu_list_pop
.section .rodata.str1.8
.align 3
.LC7:
.string "node"
.align 3
.LC8:
.string "sum == expected_sum"
.section ".text"
.align 2
.p2align 4,,15
.globl test_percpu_list
.type test_percpu_list, @function
test_percpu_list:
.LFB109:
.loc 1 240 1 is_stmt 1 view -0
.cfi_startproc
.LCF9:
0: addis 2,12,.TOC.-.LCF9@ha
addi 2,2,.TOC.-.LCF9@l
.localentry test_percpu_list,.-test_percpu_list
mflr 0
addis 12,1,0xfffe
.cfi_def_cfa 12, 131072
.cfi_register 65, 0
std 25,-56(1)
std 26,-48(1)
std 27,-40(1)
std 28,-32(1)
std 29,-24(1)
std 30,-16(1)
std 31,-8(1)
std 0,16(1)
.cfi_offset 25, -56
.cfi_offset 26, -48
.cfi_offset 27, -40
.cfi_offset 28, -32
.cfi_offset 29, -24
.cfi_offset 30, -16
.cfi_offset 31, -8
.cfi_offset 65, 16
mr 0,1
.LPSRL1:
stdu 0,-4096(1)
cmpd 0,1,12
bne 0,.LPSRL1
.cfi_def_cfa_register 1
stdu 0,-1952(1)
.cfi_def_cfa_offset 133024
.loc 1 240 1 is_stmt 0 view .LVU271
lis 9,0x2
addi 26,1,159
ori 9,9,0x758
rldicr 26,26,0,56
add 9,9,1
.LBB179:
.LBB180:
.loc 5 71 10 view .LVU272
lis 5,0x2
li 4,0
mr 3,26
.LBE180:
.LBE179:
.loc 1 240 1 view .LVU273
ld 10,-28688(13)
std 10,0(9)
li 10,0
.loc 1 241 2 is_stmt 1 view .LVU274
.loc 1 242 2 view .LVU275
.LVL89:
.loc 1 243 2 view .LVU276
.loc 1 244 2 view .LVU277
.loc 1 245 2 view .LVU278
.loc 1 247 2 view .LVU279
.LBB182:
.LBI179:
.loc 5 59 1 view .LVU280
.LBB181:
.loc 5 71 3 view .LVU281
.loc 5 71 10 is_stmt 0 view .LVU282
bl memset
nop
.LVL90:
.loc 5 71 10 view .LVU283
.LBE181:
.LBE182:
.loc 1 250 2 is_stmt 1 view .LVU284
lis 9,0x2
ori 9,9,0x98
li 4,128
add 5,1,9
li 3,0
bl sched_getaffinity
nop
.LVL91:
.loc 1 251 2 view .LVU285
.loc 1 251 14 view .LVU286
mr 28,26
.loc 1 250 2 is_stmt 0 view .LVU287
mr 30,26
li 27,0
.loc 1 242 20 view .LVU288
li 29,0
b .L85
.LVL92:
.L116:
.loc 1 251 31 is_stmt 1 discriminator 2 view .LVU289
.loc 1 251 14 discriminator 2 view .LVU290
addi 27,27,1
.LVL93:
.loc 1 251 14 is_stmt 0 discriminator 2 view .LVU291
addi 30,30,128
.loc 1 251 2 discriminator 2 view .LVU292
cmpldi 0,27,1024
beq 0,.L112
.LVL94:
.L85:
.loc 1 252 3 is_stmt 1 view .LVU293
.LBB183:
.loc 1 252 8 view .LVU294
.loc 1 252 8 view .LVU295
lis 10,0x2
srdi 9,27,6
ori 10,10,0x760
sldi 9,9,3
add 10,10,1
rlwinm 31,27,0,26,31
add 9,10,9
ld 9,-1736(9)
srd 31,9,31
andi. 31,31,0x1
bne 0,.L84
.loc 1 252 8 is_stmt 0 view .LVU296
.LBE183:
.loc 1 251 31 is_stmt 1 view .LVU297
.LVL95:
.loc 1 251 14 view .LVU298
addi 27,27,1
.LVL96:
.loc 1 251 14 is_stmt 0 view .LVU299
addi 30,30,128
.loc 1 251 2 view .LVU300
cmpldi 0,27,1024
bne 0,.L85
.LVL97:
.L112:
.loc 1 251 2 view .LVU301
lis 9,0x2
addis 27,2,test_percpu_list_thread@toc@ha
ori 9,9,0x118
addi 27,27,test_percpu_list_thread@toc@l
add 30,1,9
lis 9,0x2
ori 9,9,0x758
mr 31,30
add 25,1,9
.p2align 5
.L86:
.loc 1 268 3 is_stmt 1 discriminator 3 view .LVU302
mr 3,31
mr 6,26
mr 5,27
li 4,0
addi 31,31,8
bl pthread_create
nop
.LVL98:
.loc 1 267 23 discriminator 3 view .LVU303
.loc 1 267 14 discriminator 3 view .LVU304
.loc 1 267 2 is_stmt 0 discriminator 3 view .LVU305
cmpld 0,25,31
bne 0,.L86
lis 9,0x2
addi 30,30,1592
ori 9,9,0x110
add 31,1,9
.p2align 5
.L87:
.loc 1 272 3 is_stmt 1 discriminator 3 view .LVU306
ldu 3,8(31)
li 4,0
bl pthread_join
nop
.LVL99:
.loc 1 271 23 discriminator 3 view .LVU307
.loc 1 271 14 discriminator 3 view .LVU308
.loc 1 271 2 is_stmt 0 discriminator 3 view .LVU309
cmpld 0,31,30
bne 0,.L87
li 30,0
.loc 1 242 11 view .LVU310
li 31,0
b .L90
.LVL100:
.p2align 4,,15
.L117:
.loc 1 274 31 is_stmt 1 discriminator 2 view .LVU311
.loc 1 274 14 discriminator 2 view .LVU312
addi 30,30,1
.LVL101:
.loc 1 274 14 is_stmt 0 discriminator 2 view .LVU313
addi 28,28,128
.loc 1 274 2 discriminator 2 view .LVU314
cmpldi 0,30,1024
beq 0,.L113
.LVL102:
.L90:
.LBB184:
.loc 1 275 3 is_stmt 1 view .LVU315
.loc 1 277 3 view .LVU316
.LBB185:
.loc 1 277 8 view .LVU317
.loc 1 277 8 view .LVU318
lis 10,0x2
srdi 9,30,6
ori 10,10,0x760
sldi 9,9,3
add 10,10,1
rlwinm 8,30,0,26,31
add 9,10,9
ld 10,-1736(9)
srd 9,10,8
andi. 9,9,0x1
bne 0,.L109
.loc 1 277 8 is_stmt 0 view .LVU319
.LBE185:
.LBE184:
.loc 1 274 31 is_stmt 1 view .LVU320
.LVL103:
.loc 1 274 14 view .LVU321
addi 30,30,1
.LVL104:
.loc 1 274 14 is_stmt 0 view .LVU322
addi 28,28,128
.loc 1 274 2 view .LVU323
cmpldi 0,30,1024
bne 0,.L90
.LVL105:
.L113:
.loc 1 291 2 is_stmt 1 view .LVU324
cmpld 0,31,29
bne 0,.L114
.loc 1 292 1 is_stmt 0 view .LVU325
lis 9,0x2
ori 9,9,0x758
add 9,9,1
ld 10,0(9)
ld 9,-28688(13)
xor. 10,10,9
li 9,0
bne 0,.L115
ld 1,0(1)
.cfi_remember_state
.cfi_def_cfa_offset 0
ld 0,16(1)
ld 25,-56(1)
ld 26,-48(1)
ld 27,-40(1)
ld 28,-32(1)
ld 29,-24(1)
.LVL106:
.loc 1 292 1 view .LVU326
ld 30,-16(1)
ld 31,-8(1)
.LVL107:
.loc 1 292 1 view .LVU327
mtlr 0
.cfi_restore 65
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
.cfi_restore 27
.cfi_restore 26
.cfi_restore 25
blr
.LVL108:
.p2align 4,,15
.L83:
.cfi_restore_state
.LBB192:
.loc 1 261 4 is_stmt 1 discriminator 2 view .LVU328
.loc 1 261 15 is_stmt 0 discriminator 2 view .LVU329
std 31,0(3)
.loc 1 262 4 is_stmt 1 discriminator 2 view .LVU330
addi 31,31,1
.LVL109:
.loc 1 262 15 is_stmt 0 discriminator 2 view .LVU331
ld 10,0(30)
.LBE192:
.loc 1 254 3 discriminator 2 view .LVU332
cmpldi 0,31,101
.LBB193:
.loc 1 263 19 discriminator 2 view .LVU333
std 3,0(30)
.loc 1 262 15 discriminator 2 view .LVU334
std 10,8(3)
.loc 1 263 4 is_stmt 1 discriminator 2 view .LVU335
.LBE193:
.loc 1 254 25 discriminator 2 view .LVU336
.loc 1 254 15 discriminator 2 view .LVU337
.loc 1 254 3 is_stmt 0 discriminator 2 view .LVU338
beq 0,.L116
.LVL110:
.L84:
.LBB194:
.loc 1 255 4 is_stmt 1 view .LVU339
.loc 1 257 4 view .LVU340
.loc 1 259 11 is_stmt 0 view .LVU341
li 3,16
.loc 1 257 17 view .LVU342
add 29,29,31
.LVL111:
.loc 1 259 4 is_stmt 1 view .LVU343
.loc 1 259 11 is_stmt 0 view .LVU344
bl malloc
nop
.LVL112:
.loc 1 260 4 is_stmt 1 view .LVU345
cmpdi 0,3,0
.loc 1 260 4 is_stmt 0 view .LVU346
bne 0,.L83
.loc 1 260 4 is_stmt 1 discriminator 1 view .LVU347
addis 6,2,.LANCHOR0+48@toc@ha
addis 4,2,.LC0@toc@ha
addis 3,2,.LC7@toc@ha
.LVL113:
.loc 1 260 4 is_stmt 0 discriminator 1 view .LVU348
addi 6,6,.LANCHOR0+48@toc@l
li 5,260
addi 4,4,.LC0@toc@l
addi 3,3,.LC7@toc@l
bl __assert_fail
nop
.LVL114:
.p2align 4,,15
.L89:
.loc 1 260 4 discriminator 1 view .LVU349
.LBE194:
.LBB195:
.LBB186:
.LBB187:
.loc 1 205 2 is_stmt 1 view .LVU350
.loc 1 205 26 is_stmt 0 view .LVU351
ld 10,8(3)
.LBE187:
.LBE186:
.loc 1 281 8 view .LVU352
ld 9,0(3)
.LBB190:
.LBB188:
.loc 1 205 20 view .LVU353
std 10,0(28)
.loc 1 206 2 is_stmt 1 view .LVU354
.LVL115:
.loc 1 206 2 is_stmt 0 view .LVU355
.LBE188:
.LBE190:
.loc 1 281 4 is_stmt 1 view .LVU356
.loc 1 281 8 is_stmt 0 view .LVU357
add 31,31,9
.LVL116:
.loc 1 282 4 is_stmt 1 view .LVU358
bl free
nop
.LVL117:
.L109:
.loc 1 280 9 view .LVU359
.LBB191:
.LBI186:
.loc 1 198 26 view .LVU360
.LBB189:
.loc 1 200 2 view .LVU361
.loc 1 202 2 view .LVU362
.loc 1 202 7 is_stmt 0 view .LVU363
ld 3,0(28)
.LVL118:
.loc 1 203 2 is_stmt 1 view .LVU364
.loc 1 203 5 is_stmt 0 view .LVU365
cmpdi 0,3,0
bne 0,.L89
.loc 1 203 5 view .LVU366
b .L117
.LVL119:
.L114:
.loc 1 203 5 view .LVU367
.LBE189:
.LBE191:
.LBE195:
.loc 1 291 2 is_stmt 1 discriminator 1 view .LVU368
addis 6,2,.LANCHOR0+48@toc@ha
addis 4,2,.LC0@toc@ha
addis 3,2,.LC8@toc@ha
addi 6,6,.LANCHOR0+48@toc@l
li 5,291
addi 4,4,.LC0@toc@l
addi 3,3,.LC8@toc@l
bl __assert_fail
nop
.LVL120:
.L115:
.loc 1 292 1 is_stmt 0 view .LVU369
bl __stack_chk_fail
nop
.LVL121:
.long 0
.byte 0,0,0,1,128,7,0,0
.cfi_endproc
.LFE109:
.size test_percpu_list,.-test_percpu_list
.section .rodata.str1.8
.align 3
.LC10:
.string "spinlock"
.align 3
.LC11:
.string "percpu_list"
.section ".toc","aw"
.set .LC9,.LC2
.section .text.startup,"ax",@progbits
.align 2
.p2align 4,,15
.globl main
.type main, @function
main:
.LFB110:
.loc 1 295 1 is_stmt 1 view -0
.cfi_startproc
.LCF10:
0: addis 2,12,.TOC.-.LCF10@ha
addi 2,2,.TOC.-.LCF10@l
.localentry main,.-main
mflr 0
std 0,16(1)
stdu 1,-128(1)
.cfi_def_cfa_offset 128
.cfi_offset 65, 16
.loc 1 296 2 view .LVU371
.loc 1 296 6 is_stmt 0 view .LVU372
bl rseq_register_current_thread
nop
.LVL122:
.loc 1 296 5 view .LVU373
cmpdi 0,3,0
bne 0,.L125
.loc 1 301 2 is_stmt 1 view .LVU374
.LVL123:
.LBB196:
.LBI196:
.loc 4 105 1 view .LVU375
.LBB197:
.loc 4 107 3 view .LVU376
.loc 4 107 10 is_stmt 0 view .LVU377
addis 3,2,.LC10@toc@ha
addi 3,3,.LC10@toc@l
bl puts
nop
.LVL124:
.loc 4 107 10 view .LVU378
.LBE197:
.LBE196:
.loc 1 302 2 is_stmt 1 view .LVU379
bl test_percpu_spinlock
.LVL125:
.loc 1 303 2 view .LVU380
.LBB198:
.LBI198:
.loc 4 105 1 view .LVU381
.LBB199:
.loc 4 107 3 view .LVU382
.loc 4 107 10 is_stmt 0 view .LVU383
addis 3,2,.LC11@toc@ha
addi 3,3,.LC11@toc@l
bl puts
nop
.LVL126:
.loc 4 107 10 view .LVU384
.LBE199:
.LBE198:
.loc 1 304 2 is_stmt 1 view .LVU385
bl test_percpu_list
.LVL127:
.loc 1 305 2 view .LVU386
.loc 1 305 6 is_stmt 0 view .LVU387
bl rseq_unregister_current_thread
nop
.LVL128:
.loc 1 305 5 view .LVU388
cmpdi 0,3,0
bne 0,.L126
.L120:
.loc 1 314 1 view .LVU389
addi 1,1,128
.cfi_remember_state
.cfi_def_cfa_offset 0
ld 0,16(1)
mtlr 0
.cfi_restore 65
blr
.L125:
.cfi_restore_state
.loc 1 297 3 is_stmt 1 view .LVU390
addis 9,2,.LC9@toc@ha
ld 9,.LC9@toc@l(9)
std 31,120(1)
.cfi_offset 31, -8
ld 31,0(9)
.loc 1 298 4 is_stmt 0 view .LVU391
bl __errno_location
nop
.LVL129:
.loc 1 297 3 view .LVU392
lwa 6,0(3)
mr 3,6
std 6,104(1)
bl strerror
nop
.LVL130:
.LBB200:
.LBI200:
.loc 4 98 1 is_stmt 1 view .LVU393
.LBB201:
.loc 4 100 3 view .LVU394
.loc 4 100 10 is_stmt 0 view .LVU395
ld 6,104(1)
addis 5,2,.LC3@toc@ha
li 4,1
addi 5,5,.LC3@toc@l
.LBE201:
.LBE200:
.loc 1 297 3 view .LVU396
mr 7,3
.LBB203:
.LBB202:
.loc 4 100 10 view .LVU397
mr 3,31
bl __fprintf_chk
nop
.LVL131:
.loc 4 100 10 view .LVU398
.LBE202:
.LBE203:
.loc 1 299 3 is_stmt 1 view .LVU399
ld 31,120(1)
.cfi_restore 31
.loc 1 313 9 is_stmt 0 view .LVU400
li 3,-1
.loc 1 299 3 view .LVU401
b .L120
.L126:
.loc 1 306 3 is_stmt 1 view .LVU402
addis 9,2,.LC9@toc@ha
ld 9,.LC9@toc@l(9)
std 31,120(1)
.cfi_offset 31, -8
.loc 1 306 3 is_stmt 0 view .LVU403
ld 31,0(9)
.loc 1 307 4 view .LVU404
bl __errno_location
nop
.LVL132:
.loc 1 306 3 view .LVU405
lwa 6,0(3)
mr 3,6
std 6,104(1)
bl strerror
nop
.LVL133:
.LBB204:
.LBI204:
.loc 4 98 1 is_stmt 1 view .LVU406
.LBB205:
.loc 4 100 3 view .LVU407
.loc 4 100 10 is_stmt 0 view .LVU408
ld 6,104(1)
addis 5,2,.LC4@toc@ha
li 4,1
addi 5,5,.LC4@toc@l
.LBE205:
.LBE204:
.loc 1 306 3 view .LVU409
mr 7,3
.LBB207:
.LBB206:
.loc 4 100 10 view .LVU410
mr 3,31
bl __fprintf_chk
nop
.LVL134:
.loc 4 100 10 view .LVU411
.LBE206:
.LBE207:
.loc 1 308 3 is_stmt 1 view .LVU412
.loc 1 313 9 is_stmt 0 view .LVU413
ld 31,120(1)
.cfi_restore 31
li 3,-1
.loc 1 308 3 view .LVU414
b .L120
.long 0
.byte 0,0,0,1,128,1,0,0
.cfi_endproc
.LFE110:
.size main,.-main
.section .rodata
.align 3
.set .LANCHOR0,. + 0
.type __PRETTY_FUNCTION__.6038, @object
.size __PRETTY_FUNCTION__.6038, 19
__PRETTY_FUNCTION__.6038:
.string "rseq_percpu_unlock"
.zero 5
.type __PRETTY_FUNCTION__.6065, @object
.size __PRETTY_FUNCTION__.6065, 21
__PRETTY_FUNCTION__.6065:
.string "test_percpu_spinlock"
.zero 3
.type __PRETTY_FUNCTION__.6118, @object
.size __PRETTY_FUNCTION__.6118, 17
__PRETTY_FUNCTION__.6118:
.string "test_percpu_list"
.section ".text"
.Letext0:
.file 6 "/usr/include/powerpc64le-linux-gnu/bits/types.h"
.file 7 "/usr/lib/gcc/powerpc64le-linux-gnu/9/include/stddef.h"
.file 8 "/usr/include/powerpc64le-linux-gnu/bits/cpu-set.h"
.file 9 "/usr/include/time.h"
.file 10 "/usr/include/powerpc64le-linux-gnu/bits/pthreadtypes.h"
.file 11 "/usr/include/powerpc64le-linux-gnu/bits/stdint-uintn.h"
.file 12 "/usr/include/stdint.h"
.file 13 "/usr/include/powerpc64le-linux-gnu/bits/types/struct_FILE.h"
.file 14 "/usr/include/powerpc64le-linux-gnu/bits/types/FILE.h"
.file 15 "/usr/include/stdio.h"
.file 16 "/usr/include/powerpc64le-linux-gnu/bits/sys_errlist.h"
.file 17 "/usr/include/signal.h"
.file 18 "/usr/include/asm-generic/int-l64.h"
.file 19 "/usr/include/errno.h"
.file 20 "/usr/include/linux/rseq.h"
.file 21 "/usr/include/string.h"
.file 22 "/usr/include/stdlib.h"
.file 23 "/usr/include/assert.h"
.file 24 "<built-in>"
.file 25 "/usr/include/sched.h"
.file 26 "/usr/include/pthread.h"
.section .debug_info,"",@progbits
.Ldebug_info0:
.4byte 0x196a
.2byte 0x4
.4byte .Ldebug_abbrev0
.byte 0x8
.uleb128 0x1
.4byte .LASF155
.byte 0xc
.4byte .LASF156
.4byte .LASF157
.4byte .Ldebug_ranges0+0x490
.8byte 0
.4byte .Ldebug_line0
.uleb128 0x2
.byte 0x1
.byte 0x8
.4byte .LASF0
.uleb128 0x2
.byte 0x2
.byte 0x7
.4byte .LASF1
.uleb128 0x2
.byte 0x4
.byte 0x7
.4byte .LASF2
.uleb128 0x2
.byte 0x8
.byte 0x7
.4byte .LASF3
.uleb128 0x2
.byte 0x1
.byte 0x6
.4byte .LASF4
.uleb128 0x2
.byte 0x2
.byte 0x5
.4byte .LASF5
.uleb128 0x3
.byte 0x4
.byte 0x5
.string "int"
.uleb128 0x4
.4byte 0x53
.uleb128 0x5
.4byte .LASF7
.byte 0x6
.byte 0x2a
.byte 0x16
.4byte 0x37
.uleb128 0x2
.byte 0x8
.byte 0x5
.4byte .LASF6
.uleb128 0x5
.4byte .LASF8
.byte 0x6
.byte 0x2d
.byte 0x1b
.4byte 0x3e
.uleb128 0x5
.4byte .LASF9
.byte 0x6
.byte 0x98
.byte 0x19
.4byte 0x6b
.uleb128 0x5
.4byte .LASF10
.byte 0x6
.byte 0x99
.byte 0x1b
.4byte 0x6b
.uleb128 0x6
.byte 0x8
.uleb128 0x7
.byte 0x8
.4byte 0x9e
.uleb128 0x2
.byte 0x1
.byte 0x8
.4byte .LASF11
.uleb128 0x4
.4byte 0x9e
.uleb128 0x5
.4byte .LASF12
.byte 0x7
.byte 0xd1
.byte 0x17
.4byte 0x3e
.uleb128 0x5
.4byte .LASF13
.byte 0x8
.byte 0x20
.byte 0x19
.4byte 0x3e
.uleb128 0x8
.byte 0x80
.byte 0x8
.byte 0x27
.byte 0x9
.4byte 0xd9
.uleb128 0x9
.4byte .LASF28
.byte 0x8
.byte 0x29
.byte 0xe
.4byte 0xd9
.byte 0
.byte 0
.uleb128 0xa
.4byte 0xb6
.4byte 0xe9
.uleb128 0xb
.4byte 0x3e
.byte 0xf
.byte 0
.uleb128 0x5
.4byte .LASF14
.byte 0x8
.byte 0x2a
.byte 0x3
.4byte 0xc2
.uleb128 0x7
.byte 0x8
.4byte 0xa5
.uleb128 0x4
.4byte 0xf5
.uleb128 0xc
.4byte 0xf5
.uleb128 0xa
.4byte 0x98
.4byte 0x115
.uleb128 0xb
.4byte 0x3e
.byte 0x1
.byte 0
.uleb128 0xd
.4byte .LASF15
.byte 0x9
.byte 0x9f
.byte 0xe
.4byte 0x105
.uleb128 0xd
.4byte .LASF16
.byte 0x9
.byte 0xa0
.byte 0xc
.4byte 0x53
.uleb128 0xd
.4byte .LASF17
.byte 0x9
.byte 0xa1
.byte 0x11
.4byte 0x6b
.uleb128 0xd
.4byte .LASF18
.byte 0x9
.byte 0xa6
.byte 0xe
.4byte 0x105
.uleb128 0xd
.4byte .LASF19
.byte 0x9
.byte 0xae
.byte 0xc
.4byte 0x53
.uleb128 0xd
.4byte .LASF20
.byte 0x9
.byte 0xaf
.byte 0x11
.4byte 0x6b
.uleb128 0xe
.4byte .LASF21
.byte 0x9
.2byte 0x112
.byte 0xc
.4byte 0x53
.uleb128 0x2
.byte 0x8
.byte 0x7
.4byte .LASF22
.uleb128 0x5
.4byte .LASF23
.byte 0xa
.byte 0x1b
.byte 0x1b
.4byte 0x3e
.uleb128 0x2
.byte 0x8
.byte 0x5
.4byte .LASF24
.uleb128 0x5
.4byte .LASF25
.byte 0xb
.byte 0x1a
.byte 0x14
.4byte 0x5f
.uleb128 0x5
.4byte .LASF26
.byte 0xb
.byte 0x1b
.byte 0x14
.4byte 0x72
.uleb128 0x5
.4byte .LASF27
.byte 0xc
.byte 0x57
.byte 0x13
.4byte 0x6b
.uleb128 0xf
.4byte .LASF93
.byte 0xd8
.byte 0xd
.byte 0x31
.byte 0x8
.4byte 0x32f
.uleb128 0x9
.4byte .LASF29
.byte 0xd
.byte 0x33
.byte 0x7
.4byte 0x53
.byte 0
.uleb128 0x9
.4byte .LASF30
.byte 0xd
.byte 0x36
.byte 0x9
.4byte 0x98
.byte 0x8
.uleb128 0x9
.4byte .LASF31
.byte 0xd
.byte 0x37
.byte 0x9
.4byte 0x98
.byte 0x10
.uleb128 0x9
.4byte .LASF32
.byte 0xd
.byte 0x38
.byte 0x9
.4byte 0x98
.byte 0x18
.uleb128 0x9
.4byte .LASF33
.byte 0xd
.byte 0x39
.byte 0x9
.4byte 0x98
.byte 0x20
.uleb128 0x9
.4byte .LASF34
.byte 0xd
.byte 0x3a
.byte 0x9
.4byte 0x98
.byte 0x28
.uleb128 0x9
.4byte .LASF35
.byte 0xd
.byte 0x3b
.byte 0x9
.4byte 0x98
.byte 0x30
.uleb128 0x9
.4byte .LASF36
.byte 0xd
.byte 0x3c
.byte 0x9
.4byte 0x98
.byte 0x38
.uleb128 0x9
.4byte .LASF37
.byte 0xd
.byte 0x3d
.byte 0x9
.4byte 0x98
.byte 0x40
.uleb128 0x9
.4byte .LASF38
.byte 0xd
.byte 0x40
.byte 0x9
.4byte 0x98
.byte 0x48
.uleb128 0x9
.4byte .LASF39
.byte 0xd
.byte 0x41
.byte 0x9
.4byte 0x98
.byte 0x50
.uleb128 0x9
.4byte .LASF40
.byte 0xd
.byte 0x42
.byte 0x9
.4byte 0x98
.byte 0x58
.uleb128 0x9
.4byte .LASF41
.byte 0xd
.byte 0x44
.byte 0x16
.4byte 0x348
.byte 0x60
.uleb128 0x9
.4byte .LASF42
.byte 0xd
.byte 0x46
.byte 0x14
.4byte 0x34e
.byte 0x68
.uleb128 0x9
.4byte .LASF43
.byte 0xd
.byte 0x48
.byte 0x7
.4byte 0x53
.byte 0x70
.uleb128 0x9
.4byte .LASF44
.byte 0xd
.byte 0x49
.byte 0x7
.4byte 0x53
.byte 0x74
.uleb128 0x9
.4byte .LASF45
.byte 0xd
.byte 0x4a
.byte 0xb
.4byte 0x7e
.byte 0x78
.uleb128 0x9
.4byte .LASF46
.byte 0xd
.byte 0x4d
.byte 0x12
.4byte 0x30
.byte 0x80
.uleb128 0x9
.4byte .LASF47
.byte 0xd
.byte 0x4e
.byte 0xf
.4byte 0x45
.byte 0x82
.uleb128 0x9
.4byte .LASF48
.byte 0xd
.byte 0x4f
.byte 0x8
.4byte 0x354
.byte 0x83
.uleb128 0x9
.4byte .LASF49
.byte 0xd
.byte 0x51
.byte 0xf
.4byte 0x364
.byte 0x88
.uleb128 0x9
.4byte .LASF50
.byte 0xd
.byte 0x59
.byte 0xd
.4byte 0x8a
.byte 0x90
.uleb128 0x9
.4byte .LASF51
.byte 0xd
.byte 0x5b
.byte 0x17
.4byte 0x36f
.byte 0x98
.uleb128 0x9
.4byte .LASF52
.byte 0xd
.byte 0x5c
.byte 0x19
.4byte 0x37a
.byte 0xa0
.uleb128 0x9
.4byte .LASF53
.byte 0xd
.byte 0x5d
.byte 0x14
.4byte 0x34e
.byte 0xa8
.uleb128 0x9
.4byte .LASF54
.byte 0xd
.byte 0x5e
.byte 0x9
.4byte 0x96
.byte 0xb0
.uleb128 0x9
.4byte .LASF55
.byte 0xd
.byte 0x5f
.byte 0xa
.4byte 0xaa
.byte 0xb8
.uleb128 0x9
.4byte .LASF56
.byte 0xd
.byte 0x60
.byte 0x7
.4byte 0x53
.byte 0xc0
.uleb128 0x9
.4byte .LASF57
.byte 0xd
.byte 0x62
.byte 0x8
.4byte 0x380
.byte 0xc4
.byte 0
.uleb128 0x5
.4byte .LASF58
.byte 0xe
.byte 0x7
.byte 0x19
.4byte 0x1a8
.uleb128 0x10
.4byte .LASF158
.byte 0xd
.byte 0x2b
.byte 0xe
.uleb128 0x11
.4byte .LASF59
.uleb128 0x7
.byte 0x8
.4byte 0x343
.uleb128 0x7
.byte 0x8
.4byte 0x1a8
.uleb128 0xa
.4byte 0x9e
.4byte 0x364
.uleb128 0xb
.4byte 0x3e
.byte 0
.byte 0
.uleb128 0x7
.byte 0x8
.4byte 0x33b
.uleb128 0x11
.4byte .LASF60
.uleb128 0x7
.byte 0x8
.4byte 0x36a
.uleb128 0x11
.4byte .LASF61
.uleb128 0x7
.byte 0x8
.4byte 0x375
.uleb128 0xa
.4byte 0x9e
.4byte 0x390
.uleb128 0xb
.4byte 0x3e
.byte 0x13
.byte 0
.uleb128 0x5
.4byte .LASF62
.byte 0xf
.byte 0x3f
.byte 0x11
.4byte 0x7e
.uleb128 0xd
.4byte .LASF63
.byte 0xf
.byte 0x89
.byte 0xe
.4byte 0x3a8
.uleb128 0x7
.byte 0x8
.4byte 0x32f
.uleb128 0xc
.4byte 0x3a8
.uleb128 0xd
.4byte .LASF64
.byte 0xf
.byte 0x8a
.byte 0xe
.4byte 0x3a8
.uleb128 0xd
.4byte .LASF65
.byte 0xf
.byte 0x8b
.byte 0xe
.4byte 0x3a8
.uleb128 0xd
.4byte .LASF66
.byte 0x10
.byte 0x1a
.byte 0xc
.4byte 0x53
.uleb128 0xa
.4byte 0xfb
.4byte 0x3e2
.uleb128 0x12
.byte 0
.uleb128 0x4
.4byte 0x3d7
.uleb128 0xd
.4byte .LASF67
.byte 0x10
.byte 0x1b
.byte 0x1a
.4byte 0x3e2
.uleb128 0xd
.4byte .LASF68
.byte 0x10
.byte 0x1e
.byte 0xc
.4byte 0x53
.uleb128 0xd
.4byte .LASF69
.byte 0x10
.byte 0x1f
.byte 0x1a
.4byte 0x3e2
.uleb128 0x2
.byte 0x10
.byte 0x4
.4byte .LASF70
.uleb128 0xa
.4byte 0xfb
.4byte 0x422
.uleb128 0xb
.4byte 0x3e
.byte 0x40
.byte 0
.uleb128 0x4
.4byte 0x412
.uleb128 0xe
.4byte .LASF71
.byte 0x11
.2byte 0x11e
.byte 0x1a
.4byte 0x422
.uleb128 0xe
.4byte .LASF72
.byte 0x11
.2byte 0x11f
.byte 0x1a
.4byte 0x422
.uleb128 0x5
.4byte .LASF73
.byte 0x12
.byte 0x1b
.byte 0x16
.4byte 0x37
.uleb128 0x5
.4byte .LASF74
.byte 0x12
.byte 0x1e
.byte 0x17
.4byte 0x3e
.uleb128 0x2
.byte 0x8
.byte 0x4
.4byte .LASF75
.uleb128 0xd
.4byte .LASF76
.byte 0x13
.byte 0x2d
.byte 0xe
.4byte 0x98
.uleb128 0xd
.4byte .LASF77
.byte 0x13
.byte 0x2e
.byte 0xe
.4byte 0x98
.uleb128 0x13
.byte 0x8
.byte 0x14
.byte 0x6d
.byte 0x2
.4byte 0x49a
.uleb128 0x14
.4byte .LASF78
.byte 0x14
.byte 0x6e
.byte 0x9
.4byte 0x44d
.uleb128 0x15
.string "ptr"
.byte 0x14
.byte 0x70
.byte 0x9
.4byte 0x44d
.byte 0
.uleb128 0x16
.4byte .LASF85
.byte 0x20
.byte 0x20
.byte 0x14
.byte 0x3e
.byte 0x8
.4byte 0x4dd
.uleb128 0x9
.4byte .LASF79
.byte 0x14
.byte 0x4b
.byte 0x8
.4byte 0x441
.byte 0
.uleb128 0x9
.4byte .LASF80
.byte 0x14
.byte 0x5a
.byte 0x8
.4byte 0x441
.byte 0x4
.uleb128 0x9
.4byte .LASF81
.byte 0x14
.byte 0x7c
.byte 0x4
.4byte 0x478
.byte 0x8
.uleb128 0x9
.4byte .LASF82
.byte 0x14
.byte 0x90
.byte 0x8
.4byte 0x441
.byte 0x10
.byte 0
.uleb128 0xd
.4byte .LASF83
.byte 0x3
.byte 0x33
.byte 0x1d
.4byte 0x49a
.uleb128 0xd
.4byte .LASF84
.byte 0x3
.byte 0x34
.byte 0xc
.4byte 0x53
.uleb128 0x16
.4byte .LASF86
.byte 0x80
.byte 0x80
.byte 0x1
.byte 0x12
.byte 0x8
.4byte 0x50f
.uleb128 0x17
.string "v"
.byte 0x1
.byte 0x13
.byte 0xb
.4byte 0x19c
.byte 0
.byte 0
.uleb128 0x18
.4byte .LASF87
.4byte 0x20000
.byte 0x80
.byte 0x1
.byte 0x16
.byte 0x8
.4byte 0x52d
.uleb128 0x19
.string "c"
.byte 0x1
.byte 0x17
.byte 0x1b
.4byte 0x52d
.byte 0x80
.byte 0
.byte 0
.uleb128 0x1a
.4byte 0x4f5
.byte 0x80
.4byte 0x53f
.uleb128 0x1b
.4byte 0x3e
.2byte 0x3ff
.byte 0
.uleb128 0x16
.4byte .LASF88
.byte 0x80
.byte 0x80
.byte 0x1
.byte 0x1a
.byte 0x8
.4byte 0x55b
.uleb128 0x9
.4byte .LASF89
.byte 0x1
.byte 0x1b
.byte 0xb
.4byte 0x19c
.byte 0
.byte 0
.uleb128 0x18
.4byte .LASF90
.4byte 0x40080
.byte 0x80
.byte 0x1
.byte 0x1e
.byte 0x8
.4byte 0x59a
.uleb128 0x1c
.4byte .LASF91
.byte 0x1
.byte 0x1f
.byte 0x15
.4byte 0x50f
.byte 0x80
.byte 0
.uleb128 0x1d
.string "c"
.byte 0x1
.byte 0x20
.byte 0x19
.4byte 0x59a
.byte 0x80
.4byte 0x20000
.uleb128 0x1e
.4byte .LASF92
.byte 0x1
.byte 0x21
.byte 0x6
.4byte 0x53
.4byte 0x40000
.byte 0
.uleb128 0x1a
.4byte 0x53f
.byte 0x80
.4byte 0x5ac
.uleb128 0x1b
.4byte 0x3e
.2byte 0x3ff
.byte 0
.uleb128 0xf
.4byte .LASF94
.byte 0x10
.byte 0x1
.byte 0x24
.byte 0x8
.4byte 0x5d4
.uleb128 0x9
.4byte .LASF95
.byte 0x1
.byte 0x25
.byte 0xb
.4byte 0x19c
.byte 0
.uleb128 0x9
.4byte .LASF96
.byte 0x1
.byte 0x26
.byte 0x1b
.4byte 0x5d4
.byte 0x8
.byte 0
.uleb128 0x7
.byte 0x8
.4byte 0x5ac
.uleb128 0x16
.4byte .LASF97
.byte 0x80
.byte 0x80
.byte 0x1
.byte 0x29
.byte 0x8
.4byte 0x5f6
.uleb128 0x9
.4byte .LASF98
.byte 0x1
.byte 0x2a
.byte 0x1b
.4byte 0x5d4
.byte 0
.byte 0
.uleb128 0x18
.4byte .LASF99
.4byte 0x20000
.byte 0x80
.byte 0x1
.byte 0x2d
.byte 0x8
.4byte 0x614
.uleb128 0x19
.string "c"
.byte 0x1
.byte 0x2e
.byte 0x1b
.4byte 0x614
.byte 0x80
.byte 0
.byte 0
.uleb128 0x1a
.4byte 0x5da
.byte 0x80
.4byte 0x626
.uleb128 0x1b
.4byte 0x3e
.2byte 0x3ff
.byte 0
.uleb128 0x1f
.4byte .LASF108
.byte 0x1
.2byte 0x126
.byte 0x5
.4byte 0x53
.8byte .LFB110
.8byte .LFE110-.LFB110
.uleb128 0x1
.byte 0x9c
.4byte 0x835
.uleb128 0x20
.4byte .LASF126
.byte 0x1
.2byte 0x138
.byte 0x1
.uleb128 0x21
.4byte 0x11b4
.8byte .LBI196
.byte .LVU375
.8byte .LBB196
.8byte .LBE196-.LBB196
.byte 0x1
.2byte 0x12d
.byte 0x2
.4byte 0x6a1
.uleb128 0x22
.4byte 0x11c5
.4byte .LLST69
.4byte .LVUS69
.uleb128 0x23
.8byte .LVL124
.4byte 0x189d
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x9
.byte 0x3
.8byte .LC10
.byte 0
.byte 0
.uleb128 0x21
.4byte 0x11b4
.8byte .LBI198
.byte .LVU381
.8byte .LBB198
.8byte .LBE198-.LBB198
.byte 0x1
.2byte 0x12f
.byte 0x2
.4byte 0x6f0
.uleb128 0x22
.4byte 0x11c5
.4byte .LLST70
.4byte .LVUS70
.uleb128 0x23
.8byte .LVL126
.4byte 0x189d
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x9
.byte 0x3
.8byte .LC11
.byte 0
.byte 0
.uleb128 0x25
.4byte 0x11d3
.8byte .LBI200
.byte .LVU393
.4byte .Ldebug_ranges0+0x430
.byte 0x1
.2byte 0x129
.byte 0x3
.4byte 0x753
.uleb128 0x22
.4byte 0x11f0
.4byte .LLST71
.4byte .LVUS71
.uleb128 0x22
.4byte 0x11e4
.4byte .LLST72
.4byte .LVUS72
.uleb128 0x23
.8byte .LVL131
.4byte 0x18b9
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x9
.byte 0x3
.8byte .LC3
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x4
.byte 0x91
.sleb128 -24
.byte 0x94
.byte 0x4
.byte 0
.byte 0
.uleb128 0x25
.4byte 0x11d3
.8byte .LBI204
.byte .LVU406
.4byte .Ldebug_ranges0+0x460
.byte 0x1
.2byte 0x132
.byte 0x3
.4byte 0x7b6
.uleb128 0x22
.4byte 0x11f0
.4byte .LLST73
.4byte .LVUS73
.uleb128 0x22
.4byte 0x11e4
.4byte .LLST74
.4byte .LVUS74
.uleb128 0x23
.8byte .LVL134
.4byte 0x18b9
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x9
.byte 0x3
.8byte .LC4
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x4
.byte 0x91
.sleb128 -24
.byte 0x94
.byte 0x4
.byte 0
.byte 0
.uleb128 0x26
.8byte .LVL122
.4byte 0x18c5
.uleb128 0x26
.8byte .LVL125
.4byte 0xec0
.uleb128 0x26
.8byte .LVL127
.4byte 0x835
.uleb128 0x26
.8byte .LVL128
.4byte 0x18d1
.uleb128 0x26
.8byte .LVL129
.4byte 0x18dd
.uleb128 0x27
.8byte .LVL130
.4byte 0x18e9
.4byte 0x811
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x4
.byte 0x91
.sleb128 -24
.byte 0x94
.byte 0x4
.byte 0
.uleb128 0x26
.8byte .LVL132
.4byte 0x18dd
.uleb128 0x23
.8byte .LVL133
.4byte 0x18e9
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x4
.byte 0x91
.sleb128 -24
.byte 0x94
.byte 0x4
.byte 0
.byte 0
.uleb128 0x28
.4byte .LASF115
.byte 0x1
.byte 0xef
.byte 0x6
.8byte .LFB109
.8byte .LFE109-.LFB109
.uleb128 0x1
.byte 0x9c
.4byte 0xb2b
.uleb128 0x29
.string "i"
.byte 0x1
.byte 0xf1
.byte 0x6
.4byte 0x53
.4byte .LLST56
.4byte .LVUS56
.uleb128 0x29
.string "j"
.byte 0x1
.byte 0xf1
.byte 0x9
.4byte 0x53
.4byte .LLST57
.4byte .LVUS57
.uleb128 0x29
.string "sum"
.byte 0x1
.byte 0xf2
.byte 0xb
.4byte 0x190
.4byte .LLST58
.4byte .LVUS58
.uleb128 0x2a
.4byte .LASF100
.byte 0x1
.byte 0xf2
.byte 0x14
.4byte 0x190
.4byte .LLST59
.4byte .LVUS59
.uleb128 0x2b
.4byte .LASF101
.byte 0x1
.byte 0xf3
.byte 0x15
.4byte 0x5f6
.uleb128 0x2
.byte 0x8a
.sleb128 0
.uleb128 0x2b
.4byte .LASF102
.byte 0x1
.byte 0xf4
.byte 0xc
.4byte 0xb2b
.uleb128 0x3
.byte 0x91
.sleb128 -1672
.uleb128 0x2b
.4byte .LASF103
.byte 0x1
.byte 0xf5
.byte 0xc
.4byte 0xe9
.uleb128 0x3
.byte 0x91
.sleb128 -1800
.uleb128 0x2c
.4byte .LASF120
.4byte 0xb4b
.uleb128 0x9
.byte 0x3
.8byte __PRETTY_FUNCTION__.6118
.uleb128 0x2d
.8byte .LBB183
.8byte .LBE183-.LBB183
.4byte 0x90b
.uleb128 0x2a
.4byte .LASF104
.byte 0x1
.byte 0xfc
.byte 0x8
.4byte 0xaa
.4byte .LLST63
.4byte .LVUS63
.byte 0
.uleb128 0x2e
.4byte .Ldebug_ranges0+0x3f0
.4byte 0x97e
.uleb128 0x2a
.4byte .LASF105
.byte 0x1
.byte 0xff
.byte 0x1d
.4byte 0x5d4
.4byte .LLST68
.4byte .LVUS68
.uleb128 0x27
.8byte .LVL112
.4byte 0x18f6
.4byte 0x93f
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x1
.byte 0x40
.byte 0
.uleb128 0x23
.8byte .LVL114
.4byte 0x1903
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x9
.byte 0x3
.8byte .LC7
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x9
.byte 0x3
.8byte .LC0
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0xa
.2byte 0x104
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0xb
.byte 0x3
.8byte .LANCHOR0
.byte 0x23
.uleb128 0x30
.byte 0
.byte 0
.uleb128 0x2e
.4byte .Ldebug_ranges0+0x380
.4byte 0xa15
.uleb128 0x2f
.4byte .LASF105
.byte 0x1
.2byte 0x113
.byte 0x1c
.4byte 0x5d4
.4byte .LLST64
.4byte .LVUS64
.uleb128 0x2d
.8byte .LBB185
.8byte .LBE185-.LBB185
.4byte 0x9c7
.uleb128 0x2f
.4byte .LASF104
.byte 0x1
.2byte 0x115
.byte 0x8
.4byte 0xaa
.4byte .LLST65
.4byte .LVUS65
.byte 0
.uleb128 0x25
.4byte 0xbe1
.8byte .LBI186
.byte .LVU360
.4byte .Ldebug_ranges0+0x3b0
.byte 0x1
.2byte 0x118
.byte 0x12
.4byte 0xa07
.uleb128 0x22
.4byte 0xbfe
.4byte .LLST66
.4byte .LVUS66
.uleb128 0x30
.4byte 0xbf2
.uleb128 0x31
.4byte .Ldebug_ranges0+0x3b0
.uleb128 0x32
.4byte 0xc0a
.4byte .LLST67
.4byte .LVUS67
.byte 0
.byte 0
.uleb128 0x26
.8byte .LVL117
.4byte 0x190f
.byte 0
.uleb128 0x33
.4byte 0x117e
.8byte .LBI179
.byte .LVU280
.4byte .Ldebug_ranges0+0x350
.byte 0x1
.byte 0xf7
.byte 0x2
.4byte 0xa76
.uleb128 0x22
.4byte 0x11a7
.4byte .LLST60
.4byte .LVUS60
.uleb128 0x22
.4byte 0x119b
.4byte .LLST61
.4byte .LVUS61
.uleb128 0x22
.4byte 0x118f
.4byte .LLST62
.4byte .LVUS62
.uleb128 0x23
.8byte .LVL90
.4byte 0x191c
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8a
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0x40
.byte 0x3d
.byte 0x24
.byte 0
.byte 0
.uleb128 0x27
.8byte .LVL91
.4byte 0x1927
.4byte 0xa9b
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x1
.byte 0x30
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x2
.byte 0x8
.byte 0x80
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x4
.byte 0x91
.sleb128 129272
.byte 0
.uleb128 0x27
.8byte .LVL98
.4byte 0x1933
.4byte 0xac4
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 -8
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8b
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8a
.sleb128 0
.byte 0
.uleb128 0x27
.8byte .LVL99
.4byte 0x193f
.4byte 0xadb
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x27
.8byte .LVL120
.4byte 0x1903
.4byte 0xb1d
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x9
.byte 0x3
.8byte .LC8
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x9
.byte 0x3
.8byte .LC0
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0xa
.2byte 0x123
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0xb
.byte 0x3
.8byte .LANCHOR0
.byte 0x23
.uleb128 0x30
.byte 0
.uleb128 0x26
.8byte .LVL121
.4byte 0x194b
.byte 0
.uleb128 0xa
.4byte 0x171
.4byte 0xb3b
.uleb128 0xb
.4byte 0x3e
.byte 0xc7
.byte 0
.uleb128 0xa
.4byte 0xa5
.4byte 0xb4b
.uleb128 0xb
.4byte 0x3e
.byte 0x10
.byte 0
.uleb128 0x4
.4byte 0xb3b
.uleb128 0x34
.4byte .LASF106
.byte 0x1
.byte 0xd1
.byte 0x7
.4byte 0x96
.byte 0x1
.4byte 0xbdb
.uleb128 0x35
.string "arg"
.byte 0x1
.byte 0xd1
.byte 0x25
.4byte 0x96
.uleb128 0x36
.string "i"
.byte 0x1
.byte 0xd3
.byte 0x6
.4byte 0x53
.uleb128 0x37
.4byte .LASF101
.byte 0x1
.byte 0xd4
.byte 0x16
.4byte 0xbdb
.uleb128 0x38
.uleb128 0x37
.4byte .LASF105
.byte 0x1
.byte 0xdd
.byte 0x1c
.4byte 0x5d4
.uleb128 0x27
.8byte .LVL67
.4byte 0xc17
.4byte 0xbad
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x26
.8byte .LVL69
.4byte 0x1954
.uleb128 0x23
.8byte .LVL70
.4byte 0xd8f
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x1
.byte 0x30
.byte 0
.byte 0
.byte 0
.uleb128 0x7
.byte 0x8
.4byte 0x5f6
.uleb128 0x34
.4byte .LASF107
.byte 0x1
.byte 0xc6
.byte 0x1a
.4byte 0x5d4
.byte 0x1
.4byte 0xc17
.uleb128 0x39
.4byte .LASF101
.byte 0x1
.byte 0xc6
.byte 0x40
.4byte 0xbdb
.uleb128 0x35
.string "cpu"
.byte 0x1
.byte 0xc6
.byte 0x4a
.4byte 0x53
.uleb128 0x37
.4byte .LASF105
.byte 0x1
.byte 0xc8
.byte 0x1b
.4byte 0x5d4
.byte 0
.uleb128 0x3a
.4byte .LASF109
.byte 0x1
.byte 0xa7
.byte 0x1a
.4byte 0x5d4
.8byte .LFB106
.8byte .LFE106-.LFB106
.uleb128 0x1
.byte 0x9c
.4byte 0xd83
.uleb128 0x3b
.4byte .LASF101
.byte 0x1
.byte 0xa7
.byte 0x40
.4byte 0xbdb
.4byte .LLST34
.4byte .LVUS34
.uleb128 0x3b
.4byte .LASF110
.byte 0x1
.byte 0xa8
.byte 0xe
.4byte 0xd83
.4byte .LLST35
.4byte .LVUS35
.uleb128 0x2e
.4byte .Ldebug_ranges0+0x230
.4byte 0xd75
.uleb128 0x2b
.4byte .LASF98
.byte 0x1
.byte 0xab
.byte 0x1c
.4byte 0x5d4
.uleb128 0x3
.byte 0x91
.sleb128 -144
.uleb128 0x2a
.4byte .LASF111
.byte 0x1
.byte 0xac
.byte 0xd
.4byte 0xd89
.4byte .LLST36
.4byte .LVUS36
.uleb128 0x3c
.4byte .LASF112
.byte 0x1
.byte 0xac
.byte 0x18
.4byte 0x19c
.byte 0
.uleb128 0x2a
.4byte .LASF113
.byte 0x1
.byte 0xac
.byte 0x24
.4byte 0xd89
.4byte .LLST37
.4byte .LVUS37
.uleb128 0x3c
.4byte .LASF114
.byte 0x1
.byte 0xad
.byte 0x9
.4byte 0x390
.byte 0x8
.uleb128 0x29
.string "ret"
.byte 0x1
.byte 0xae
.byte 0x7
.4byte 0x53
.4byte .LLST38
.4byte .LVUS38
.uleb128 0x29
.string "cpu"
.byte 0x1
.byte 0xae
.byte 0xc
.4byte 0x53
.4byte .LLST39
.4byte .LVUS39
.uleb128 0x33
.4byte 0x10ca
.8byte .LBI145
.byte .LVU191
.4byte .Ldebug_ranges0+0x280
.byte 0x1
.byte 0xb5
.byte 0x9
.4byte 0xd5f
.uleb128 0x22
.4byte 0x110e
.4byte .LLST40
.4byte .LVUS40
.uleb128 0x22
.4byte 0x1101
.4byte .LLST41
.4byte .LVUS41
.uleb128 0x22
.4byte 0x10f4
.4byte .LLST42
.4byte .LVUS42
.uleb128 0x22
.4byte 0x10e7
.4byte .LLST43
.4byte .LVUS43
.uleb128 0x22
.4byte 0x10dc
.4byte .LLST44
.4byte .LVUS44
.uleb128 0x31
.4byte .Ldebug_ranges0+0x280
.uleb128 0x3d
.4byte 0x111b
.8byte .L53
.uleb128 0x3d
.4byte 0x1124
.8byte .L54
.byte 0
.byte 0
.uleb128 0x3e
.4byte 0x10bd
.8byte .LBI149
.byte .LVU182
.4byte .Ldebug_ranges0+0x2c0
.byte 0x1
.byte 0xb0
.byte 0x9
.byte 0
.uleb128 0x26
.8byte .LVL62
.4byte 0x194b
.byte 0
.uleb128 0x7
.byte 0x8
.4byte 0x53
.uleb128 0x7
.byte 0x8
.4byte 0x19c
.uleb128 0x28
.4byte .LASF116
.byte 0x1
.byte 0x89
.byte 0x6
.8byte .LFB105
.8byte .LFE105-.LFB105
.uleb128 0x1
.byte 0x9c
.4byte 0xec0
.uleb128 0x3f
.4byte .LASF101
.byte 0x1
.byte 0x89
.byte 0x2d
.4byte 0xbdb
.uleb128 0x1
.byte 0x53
.uleb128 0x3f
.4byte .LASF105
.byte 0x1
.byte 0x8a
.byte 0x1d
.4byte 0x5d4
.uleb128 0x1
.byte 0x54
.uleb128 0x3f
.4byte .LASF110
.byte 0x1
.byte 0x8b
.byte 0x9
.4byte 0xd83
.uleb128 0x1
.byte 0x55
.uleb128 0x29
.string "cpu"
.byte 0x1
.byte 0x8d
.byte 0x6
.4byte 0x53
.4byte .LLST26
.4byte .LVUS26
.uleb128 0x31
.4byte .Ldebug_ranges0+0x1d0
.uleb128 0x2a
.4byte .LASF111
.byte 0x1
.byte 0x90
.byte 0xd
.4byte 0xd89
.4byte .LLST27
.4byte .LVUS27
.uleb128 0x2a
.4byte .LASF117
.byte 0x1
.byte 0x90
.byte 0x18
.4byte 0x19c
.4byte .LLST28
.4byte .LVUS28
.uleb128 0x2a
.4byte .LASF118
.byte 0x1
.byte 0x90
.byte 0x20
.4byte 0x19c
.4byte .LLST29
.4byte .LVUS29
.uleb128 0x40
.string "ret"
.byte 0x1
.byte 0x91
.byte 0x7
.4byte 0x53
.byte 0
.uleb128 0x3e
.4byte 0x10bd
.8byte .LBI137
.byte .LVU150
.4byte .Ldebug_ranges0+0x200
.byte 0x1
.byte 0x93
.byte 0x9
.uleb128 0x41
.4byte 0x112e
.8byte .LBI141
.byte .LVU161
.8byte .LBB141
.8byte .LBE141-.LBB141
.byte 0x1
.byte 0x99
.byte 0x9
.uleb128 0x22
.4byte 0x1161
.4byte .LLST30
.4byte .LVUS30
.uleb128 0x22
.4byte 0x1155
.4byte .LLST31
.4byte .LVUS31
.uleb128 0x22
.4byte 0x1149
.4byte .LLST32
.4byte .LVUS32
.uleb128 0x22
.4byte 0x113f
.4byte .LLST33
.4byte .LVUS33
.uleb128 0x3d
.4byte 0x116d
.8byte .L43
.uleb128 0x3d
.4byte 0x1175
.8byte .L44
.byte 0
.byte 0
.byte 0
.uleb128 0x42
.4byte .LASF122
.byte 0x1
.byte 0x70
.byte 0x6
.byte 0x1
.4byte 0xf1b
.uleb128 0x37
.4byte .LASF119
.byte 0x1
.byte 0x72
.byte 0xc
.4byte 0x5a
.uleb128 0x36
.string "i"
.byte 0x1
.byte 0x73
.byte 0x6
.4byte 0x53
.uleb128 0x36
.string "sum"
.byte 0x1
.byte 0x74
.byte 0xb
.4byte 0x190
.uleb128 0x37
.4byte .LASF102
.byte 0x1
.byte 0x75
.byte 0xc
.4byte 0xf1b
.uleb128 0x37
.4byte .LASF95
.byte 0x1
.byte 0x76
.byte 0x1c
.4byte 0x55b
.uleb128 0x2c
.4byte .LASF120
.4byte 0xf3d
.uleb128 0x9
.byte 0x3
.8byte __PRETTY_FUNCTION__.6065
.byte 0
.uleb128 0xa
.4byte 0x171
.4byte 0xf2d
.uleb128 0x43
.4byte 0x3e
.uleb128 0x2
.byte 0x8
.byte 0xc7
.byte 0
.uleb128 0xa
.4byte 0xa5
.4byte 0xf3d
.uleb128 0xb
.4byte 0x3e
.byte 0x14
.byte 0
.uleb128 0x4
.4byte 0xf2d
.uleb128 0x34
.4byte .LASF121
.byte 0x1
.byte 0x52
.byte 0x7
.4byte 0x96
.byte 0x1
.4byte 0xf82
.uleb128 0x35
.string "arg"
.byte 0x1
.byte 0x52
.byte 0x29
.4byte 0x96
.uleb128 0x37
.4byte .LASF95
.byte 0x1
.byte 0x54
.byte 0x1d
.4byte 0xf82
.uleb128 0x36
.string "i"
.byte 0x1
.byte 0x55
.byte 0x6
.4byte 0x53
.uleb128 0x36
.string "cpu"
.byte 0x1
.byte 0x55
.byte 0x9
.4byte 0x53
.byte 0
.uleb128 0x7
.byte 0x8
.4byte 0x55b
.uleb128 0x42
.4byte .LASF123
.byte 0x1
.byte 0x48
.byte 0x6
.byte 0x1
.4byte 0xfc1
.uleb128 0x39
.4byte .LASF91
.byte 0x1
.byte 0x48
.byte 0x2d
.4byte 0xfc1
.uleb128 0x35
.string "cpu"
.byte 0x1
.byte 0x48
.byte 0x37
.4byte 0x53
.uleb128 0x2c
.4byte .LASF120
.4byte 0xfd7
.uleb128 0x9
.byte 0x3
.8byte __PRETTY_FUNCTION__.6038
.byte 0
.uleb128 0x7
.byte 0x8
.4byte 0x50f
.uleb128 0xa
.4byte 0xa5
.4byte 0xfd7
.uleb128 0xb
.4byte 0x3e
.byte 0x12
.byte 0
.uleb128 0x4
.4byte 0xfc7
.uleb128 0x3a
.4byte .LASF124
.byte 0x1
.byte 0x32
.byte 0x5
.4byte 0x53
.8byte .LFB101
.8byte .LFE101-.LFB101
.uleb128 0x1
.byte 0x9c
.4byte 0x10bd
.uleb128 0x3b
.4byte .LASF91
.byte 0x1
.byte 0x32
.byte 0x2c
.4byte 0xfc1
.4byte .LLST2
.4byte .LVUS2
.uleb128 0x29
.string "cpu"
.byte 0x1
.byte 0x34
.byte 0x6
.4byte 0x53
.4byte .LLST3
.4byte .LVUS3
.uleb128 0x31
.4byte .Ldebug_ranges0+0
.uleb128 0x40
.string "ret"
.byte 0x1
.byte 0x37
.byte 0x7
.4byte 0x53
.byte 0
.uleb128 0x33
.4byte 0x112e
.8byte .LBI79
.byte .LVU15
.4byte .Ldebug_ranges0+0x30
.byte 0x1
.byte 0x3a
.byte 0x9
.4byte 0x10a6
.uleb128 0x22
.4byte 0x1161
.4byte .LLST4
.4byte .LVUS4
.uleb128 0x22
.4byte 0x1155
.4byte .LLST5
.4byte .LVUS5
.uleb128 0x22
.4byte 0x1149
.4byte .LLST6
.4byte .LVUS6
.uleb128 0x22
.4byte 0x113f
.4byte .LLST7
.4byte .LVUS7
.uleb128 0x31
.4byte .Ldebug_ranges0+0x30
.uleb128 0x3d
.4byte 0x116d
.8byte .L5
.uleb128 0x3d
.4byte 0x1175
.8byte .L6
.byte 0
.byte 0
.uleb128 0x3e
.4byte 0x10bd
.8byte .LBI82
.byte .LVU10
.4byte .Ldebug_ranges0+0x60
.byte 0x1
.byte 0x39
.byte 0x9
.byte 0
.byte 0
.uleb128 0x44
.4byte .LASF159
.byte 0x3
.byte 0x8c
.byte 0x18
.4byte 0x184
.byte 0x3
.uleb128 0x45
.4byte .LASF129
.byte 0x2
.2byte 0x10a
.byte 0x5
.4byte 0x53
.byte 0x3
.4byte 0x112e
.uleb128 0x46
.string "v"
.byte 0x2
.2byte 0x10a
.byte 0x2a
.4byte 0xd89
.uleb128 0x47
.4byte .LASF112
.byte 0x2
.2byte 0x10a
.byte 0x36
.4byte 0x19c
.uleb128 0x47
.4byte .LASF125
.byte 0x2
.2byte 0x10b
.byte 0x11
.4byte 0x390
.uleb128 0x47
.4byte .LASF113
.byte 0x2
.2byte 0x10b
.byte 0x22
.4byte 0xd89
.uleb128 0x46
.string "cpu"
.byte 0x2
.2byte 0x10b
.byte 0x2c
.4byte 0x53
.uleb128 0x20
.4byte .LASF127
.byte 0x2
.2byte 0x140
.byte 0x1
.uleb128 0x20
.4byte .LASF128
.byte 0x2
.2byte 0x143
.byte 0x1
.byte 0
.uleb128 0x48
.4byte .LASF130
.byte 0x2
.byte 0xcf
.byte 0x5
.4byte 0x53
.byte 0x3
.4byte 0x117e
.uleb128 0x35
.string "v"
.byte 0x2
.byte 0xcf
.byte 0x22
.4byte 0xd89
.uleb128 0x39
.4byte .LASF118
.byte 0x2
.byte 0xcf
.byte 0x2e
.4byte 0x19c
.uleb128 0x39
.4byte .LASF131
.byte 0x2
.byte 0xcf
.byte 0x3f
.4byte 0x19c
.uleb128 0x35
.string "cpu"
.byte 0x2
.byte 0xcf
.byte 0x49
.4byte 0x53
.uleb128 0x49
.4byte .LASF127
.byte 0x2
.byte 0xfc
.byte 0x1
.uleb128 0x49
.4byte .LASF128
.byte 0x2
.byte 0xff
.byte 0x1
.byte 0
.uleb128 0x4a
.4byte .LASF135
.byte 0x5
.byte 0x3b
.byte 0x1
.4byte 0x96
.byte 0x3
.4byte 0x11b4
.uleb128 0x39
.4byte .LASF132
.byte 0x5
.byte 0x3b
.byte 0x1
.4byte 0x96
.uleb128 0x39
.4byte .LASF133
.byte 0x5
.byte 0x3b
.byte 0x1
.4byte 0x53
.uleb128 0x39
.4byte .LASF134
.byte 0x5
.byte 0x3b
.byte 0x1
.4byte 0xaa
.byte 0
.uleb128 0x4a
.4byte .LASF136
.byte 0x4
.byte 0x69
.byte 0x1
.4byte 0x53
.byte 0x3
.4byte 0x11d3
.uleb128 0x39
.4byte .LASF137
.byte 0x4
.byte 0x69
.byte 0x20
.4byte 0x100
.uleb128 0x4b
.byte 0
.uleb128 0x4a
.4byte .LASF138
.byte 0x4
.byte 0x62
.byte 0x1
.4byte 0x53
.byte 0x3
.4byte 0x11fe
.uleb128 0x39
.4byte .LASF139
.byte 0x4
.byte 0x62
.byte 0x1b
.4byte 0x3ae
.uleb128 0x39
.4byte .LASF137
.byte 0x4
.byte 0x62
.byte 0x3c
.4byte 0x100
.uleb128 0x4b
.byte 0
.uleb128 0x4c
.4byte 0xf88
.8byte .LFB111
.8byte .LFE111-.LFB111
.uleb128 0x1
.byte 0x9c
.4byte 0x126f
.uleb128 0x22
.4byte 0xfa1
.4byte .LLST0
.4byte .LVUS0
.uleb128 0x22
.4byte 0xf95
.4byte .LLST1
.4byte .LVUS1
.uleb128 0x23
.8byte .LVL1
.4byte 0x1903
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x9
.byte 0x3
.8byte .LC1
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x9
.byte 0x3
.8byte .LC0
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8
.byte 0x4a
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x9
.byte 0x3
.8byte .LANCHOR0
.byte 0
.byte 0
.uleb128 0x4c
.4byte 0xf42
.8byte .LFB103
.8byte .LFE103-.LFB103
.uleb128 0x1
.byte 0x9c
.4byte 0x1490
.uleb128 0x22
.4byte 0xf53
.4byte .LLST8
.4byte .LVUS8
.uleb128 0x32
.4byte 0xf5f
.4byte .LLST9
.4byte .LVUS9
.uleb128 0x4d
.4byte 0xf6b
.uleb128 0x4d
.4byte 0xf75
.uleb128 0x4e
.4byte 0xf42
.4byte .Ldebug_ranges0+0x90
.byte 0x1
.byte 0x52
.byte 0x7
.4byte 0x13ec
.uleb128 0x30
.4byte 0xf53
.uleb128 0x31
.4byte .Ldebug_ranges0+0x90
.uleb128 0x4d
.4byte 0xf5f
.uleb128 0x32
.4byte 0xf6b
.4byte .LLST10
.4byte .LVUS10
.uleb128 0x32
.4byte 0xf75
.4byte .LLST11
.4byte .LVUS11
.uleb128 0x33
.4byte 0xf88
.8byte .LBI100
.byte .LVU41
.4byte .Ldebug_ranges0+0xd0
.byte 0x1
.byte 0x5f
.byte 0x3
.4byte 0x132f
.uleb128 0x30
.4byte 0xfa1
.uleb128 0x22
.4byte 0xf95
.4byte .LLST12
.4byte .LVUS12
.uleb128 0x31
.4byte .Ldebug_ranges0+0xd0
.uleb128 0x23
.8byte .LVL20
.4byte 0x11fe
.uleb128 0x4f
.4byte 0xf95
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.byte 0
.uleb128 0x33
.4byte 0x11d3
.8byte .LBI108
.byte .LVU76
.4byte .Ldebug_ranges0+0x120
.byte 0x1
.byte 0x62
.byte 0x3
.4byte 0x1391
.uleb128 0x22
.4byte 0x11f0
.4byte .LLST13
.4byte .LVUS13
.uleb128 0x22
.4byte 0x11e4
.4byte .LLST14
.4byte .LVUS14
.uleb128 0x23
.8byte .LVL29
.4byte 0x18b9
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x9
.byte 0x3
.8byte .LC4
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x4
.byte 0x91
.sleb128 -40
.byte 0x94
.byte 0x4
.byte 0
.byte 0
.uleb128 0x27
.8byte .LVL11
.4byte 0xfdc
.4byte 0x13a9
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x26
.8byte .LVL17
.4byte 0x18d1
.uleb128 0x26
.8byte .LVL27
.4byte 0x18dd
.uleb128 0x27
.8byte .LVL28
.4byte 0x18e9
.4byte 0x13dd
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x4
.byte 0x91
.sleb128 -40
.byte 0x94
.byte 0x4
.byte 0
.uleb128 0x26
.8byte .LVL30
.4byte 0x1960
.byte 0
.byte 0
.uleb128 0x33
.4byte 0x11d3
.8byte .LBI115
.byte .LVU66
.4byte .Ldebug_ranges0+0x150
.byte 0x1
.byte 0x58
.byte 0x3
.4byte 0x144e
.uleb128 0x22
.4byte 0x11f0
.4byte .LLST15
.4byte .LVUS15
.uleb128 0x22
.4byte 0x11e4
.4byte .LLST16
.4byte .LVUS16
.uleb128 0x23
.8byte .LVL24
.4byte 0x18b9
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x9
.byte 0x3
.8byte .LC3
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x4
.byte 0x91
.sleb128 -40
.byte 0x94
.byte 0x4
.byte 0
.byte 0
.uleb128 0x26
.8byte .LVL8
.4byte 0x18c5
.uleb128 0x26
.8byte .LVL22
.4byte 0x18dd
.uleb128 0x27
.8byte .LVL23
.4byte 0x18e9
.4byte 0x1482
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x4
.byte 0x91
.sleb128 -40
.byte 0x94
.byte 0x4
.byte 0
.uleb128 0x26
.8byte .LVL25
.4byte 0x1960
.byte 0
.uleb128 0x4c
.4byte 0xf88
.8byte .LFB102
.8byte .LFE102-.LFB102
.uleb128 0x1
.byte 0x9c
.4byte 0x14d3
.uleb128 0x22
.4byte 0xf95
.4byte .LLST17
.4byte .LVUS17
.uleb128 0x22
.4byte 0xfa1
.4byte .LLST18
.4byte .LVUS18
.uleb128 0x26
.8byte .LVL33
.4byte 0x11fe
.byte 0
.uleb128 0x4c
.4byte 0xec0
.8byte .LFB104
.8byte .LFE104-.LFB104
.uleb128 0x1
.byte 0x9c
.4byte 0x1658
.uleb128 0x50
.4byte 0xecd
.byte 0xc8
.uleb128 0x32
.4byte 0xed9
.4byte .LLST20
.4byte .LVUS20
.uleb128 0x32
.4byte 0xee3
.4byte .LLST21
.4byte .LVUS21
.uleb128 0x51
.4byte 0xeef
.4byte 0xf1b
.4byte .LLST22
.4byte .LVUS22
.uleb128 0x52
.4byte 0xefb
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x33
.4byte 0x117e
.8byte .LBI126
.byte .LVU111
.4byte .Ldebug_ranges0+0x180
.byte 0x1
.byte 0x78
.byte 0x2
.4byte 0x158a
.uleb128 0x22
.4byte 0x11a7
.4byte .LLST23
.4byte .LVUS23
.uleb128 0x22
.4byte 0x119b
.4byte .LLST24
.4byte .LVUS24
.uleb128 0x22
.4byte 0x118f
.4byte .LLST25
.4byte .LVUS25
.uleb128 0x23
.8byte .LVL35
.4byte 0x191c
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0xc
.4byte 0x40080
.byte 0
.byte 0
.uleb128 0x53
.4byte 0xec0
.8byte .LBI134
.byte .LVU138
.8byte .LBB134
.8byte .LBE134-.LBB134
.byte 0x1
.byte 0x70
.byte 0x6
.4byte 0x160a
.uleb128 0x4d
.4byte 0xecd
.uleb128 0x4d
.4byte 0xed9
.uleb128 0x4d
.4byte 0xee3
.uleb128 0x54
.4byte 0xeef
.4byte 0x1658
.uleb128 0x4d
.4byte 0xefb
.uleb128 0x23
.8byte .LVL46
.4byte 0x1903
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x9
.byte 0x3
.8byte .LC5
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x9
.byte 0x3
.8byte .LC0
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8
.byte 0x86
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0xb
.byte 0x3
.8byte .LANCHOR0
.byte 0x23
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x27
.8byte .LVL38
.4byte 0x1933
.4byte 0x1633
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 -8
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x89
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8e
.sleb128 0
.byte 0
.uleb128 0x27
.8byte .LVL40
.4byte 0x193f
.4byte 0x164a
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x26
.8byte .LVL47
.4byte 0x194b
.byte 0
.uleb128 0xa
.4byte 0x171
.4byte 0x1667
.uleb128 0x55
.4byte 0x3e
.byte 0
.uleb128 0x4c
.4byte 0xb50
.8byte .LFB108
.8byte .LFE108-.LFB108
.uleb128 0x1
.byte 0x9c
.4byte 0x184c
.uleb128 0x22
.4byte 0xb61
.4byte .LLST45
.4byte .LVUS45
.uleb128 0x32
.4byte 0xb6d
.4byte .LLST46
.4byte .LVUS46
.uleb128 0x32
.4byte 0xb77
.4byte .LLST47
.4byte .LVUS47
.uleb128 0x56
.4byte 0xb83
.8byte .LBB168
.8byte .LBE168-.LBB168
.4byte 0x16d0
.uleb128 0x32
.4byte 0xb84
.4byte .LLST48
.4byte .LVUS48
.byte 0
.uleb128 0x33
.4byte 0x11d3
.8byte .LBI169
.byte .LVU241
.4byte .Ldebug_ranges0+0x2f0
.byte 0x1
.byte 0xd7
.byte 0x3
.4byte 0x1732
.uleb128 0x22
.4byte 0x11f0
.4byte .LLST49
.4byte .LVUS49
.uleb128 0x22
.4byte 0x11e4
.4byte .LLST50
.4byte .LVUS50
.uleb128 0x23
.8byte .LVL79
.4byte 0x18b9
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x9
.byte 0x3
.8byte .LC3
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x4
.byte 0x91
.sleb128 -40
.byte 0x94
.byte 0x4
.byte 0
.byte 0
.uleb128 0x53
.4byte 0xb50
.8byte .LBI173
.byte .LVU248
.8byte .LBB173
.8byte .LBE173-.LBB173
.byte 0x1
.byte 0xd1
.byte 0x7
.4byte 0x17fd
.uleb128 0x30
.4byte 0xb61
.uleb128 0x4d
.4byte 0xb6d
.uleb128 0x4d
.4byte 0xb77
.uleb128 0x33
.4byte 0x11d3
.8byte .LBI175
.byte .LVU252
.4byte .Ldebug_ranges0+0x320
.byte 0x1
.byte 0xe6
.byte 0x3
.4byte 0x17c8
.uleb128 0x22
.4byte 0x11f0
.4byte .LLST51
.4byte .LVUS51
.uleb128 0x22
.4byte 0x11e4
.4byte .LLST52
.4byte .LVUS52
.uleb128 0x23
.8byte .LVL84
.4byte 0x18b9
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.uleb128 0x24
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x24
.uleb128 0x1
.byte 0x55
.uleb128 0x9
.byte 0x3
.8byte .LC4
.uleb128 0x24
.uleb128 0x1
.byte 0x56
.uleb128 0x4
.byte 0x91
.sleb128 -40
.byte 0x94
.byte 0x4
.byte 0
.byte 0
.uleb128 0x26
.8byte .LVL82
.4byte 0x18dd
.uleb128 0x27
.8byte .LVL83
.4byte 0x18e9
.4byte 0x17ef
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x4
.byte 0x91
.sleb128 -40
.byte 0x94
.byte 0x4
.byte 0
.uleb128 0x26
.8byte .LVL85
.4byte 0x1960
.byte 0
.uleb128 0x26
.8byte .LVL65
.4byte 0x18c5
.uleb128 0x26
.8byte .LVL72
.4byte 0x18d1
.uleb128 0x26
.8byte .LVL77
.4byte 0x18dd
.uleb128 0x27
.8byte .LVL78
.4byte 0x18e9
.4byte 0x183e
.uleb128 0x24
.uleb128 0x1
.byte 0x53
.uleb128 0x4
.byte 0x91
.sleb128 -40
.byte 0x94
.byte 0x4
.byte 0
.uleb128 0x26
.8byte .LVL80
.4byte 0x1960
.byte 0
.uleb128 0x4c
.4byte 0xbe1
.8byte .LFB107
.8byte .LFE107-.LFB107
.uleb128 0x1
.byte 0x9c
.4byte 0x188f
.uleb128 0x22
.4byte 0xbf2
.4byte .LLST53
.4byte .LVUS53
.uleb128 0x22
.4byte 0xbfe
.4byte .LLST54
.4byte .LVUS54
.uleb128 0x32
.4byte 0xc0a
.4byte .LLST55
.4byte .LVUS55
.byte 0
.uleb128 0x57
.uleb128 0xc
.byte 0x9e
.uleb128 0xa
.byte 0x73
.byte 0x70
.byte 0x69
.byte 0x6e
.byte 0x6c
.byte 0x6f
.byte 0x63
.byte 0x6b
.byte 0xa
.byte 0
.uleb128 0x58
.4byte .LASF148
.4byte .LASF149
.byte 0x18
.byte 0
.uleb128 0x57
.uleb128 0xf
.byte 0x9e
.uleb128 0xd
.byte 0x70
.byte 0x65
.byte 0x72
.byte 0x63
.byte 0x70
.byte 0x75
.byte 0x5f
.byte 0x6c
.byte 0x69
.byte 0x73
.byte 0x74
.byte 0xa
.byte 0
.uleb128 0x59
.4byte .LASF140
.4byte .LASF140
.byte 0x4
.byte 0x58
.byte 0xc
.uleb128 0x59
.4byte .LASF141
.4byte .LASF141
.byte 0x3
.byte 0x6a
.byte 0x5
.uleb128 0x59
.4byte .LASF142
.4byte .LASF142
.byte 0x3
.byte 0x6f
.byte 0x5
.uleb128 0x59
.4byte .LASF143
.4byte .LASF143
.byte 0x13
.byte 0x25
.byte 0xd
.uleb128 0x5a
.4byte .LASF144
.4byte .LASF144
.byte 0x15
.2byte 0x18d
.byte 0xe
.uleb128 0x5a
.4byte .LASF145
.4byte .LASF145
.byte 0x16
.2byte 0x21b
.byte 0xe
.uleb128 0x59
.4byte .LASF146
.4byte .LASF146
.byte 0x17
.byte 0x45
.byte 0xd
.uleb128 0x5a
.4byte .LASF147
.4byte .LASF147
.byte 0x16
.2byte 0x235
.byte 0xd
.uleb128 0x58
.4byte .LASF135
.4byte .LASF150
.byte 0x18
.byte 0
.uleb128 0x59
.4byte .LASF151
.4byte .LASF151
.byte 0x19
.byte 0x7d
.byte 0xc
.uleb128 0x59
.4byte .LASF152
.4byte .LASF152
.byte 0x1a
.byte 0xc6
.byte 0xc
.uleb128 0x59
.4byte .LASF153
.4byte .LASF153
.byte 0x1a
.byte 0xd7
.byte 0xc
.uleb128 0x5b
.4byte .LASF160
.4byte .LASF160
.uleb128 0x59
.4byte .LASF154
.4byte .LASF154
.byte 0x19
.byte 0x44
.byte 0xc
.uleb128 0x5a
.4byte .LASF127
.4byte .LASF127
.byte 0x16
.2byte 0x24f
.byte 0xd
.byte 0
.section .debug_abbrev,"",@progbits
.Ldebug_abbrev0:
.uleb128 0x1
.uleb128 0x11
.byte 0x1
.uleb128 0x25
.uleb128 0xe
.uleb128 0x13
.uleb128 0xb
.uleb128 0x3
.uleb128 0xe
.uleb128 0x1b
.uleb128 0xe
.uleb128 0x55
.uleb128 0x17
.uleb128 0x11
.uleb128 0x1
.uleb128 0x10
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x2
.uleb128 0x24
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3e
.uleb128 0xb
.uleb128 0x3
.uleb128 0xe
.byte 0
.byte 0
.uleb128 0x3
.uleb128 0x24
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3e
.uleb128 0xb
.uleb128 0x3
.uleb128 0x8
.byte 0
.byte 0
.uleb128 0x4
.uleb128 0x26
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x5
.uleb128 0x16
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x6
.uleb128 0xf
.byte 0
.uleb128 0xb
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x7
.uleb128 0xf
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x8
.uleb128 0x13
.byte 0x1
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x9
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0xa
.uleb128 0x1
.byte 0x1
.uleb128 0x49
.uleb128 0x13
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0xb
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2f
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0xc
.uleb128 0x37
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0xd
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.byte 0
.byte 0
.uleb128 0xe
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.byte 0
.byte 0
.uleb128 0xf
.uleb128 0x13
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x10
.uleb128 0x16
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x11
.uleb128 0x13
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3c
.uleb128 0x19
.byte 0
.byte 0
.uleb128 0x12
.uleb128 0x21
.byte 0
.byte 0
.byte 0
.uleb128 0x13
.uleb128 0x17
.byte 0x1
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x14
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x15
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x16
.uleb128 0x13
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0xb
.uleb128 0x88
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x17
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x18
.uleb128 0x13
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0x6
.uleb128 0x88
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x19
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x88
.uleb128 0xb
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x1a
.uleb128 0x1
.byte 0x1
.uleb128 0x49
.uleb128 0x13
.uleb128 0x88
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x1b
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2f
.uleb128 0x5
.byte 0
.byte 0
.uleb128 0x1c
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x88
.uleb128 0xb
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x1d
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x88
.uleb128 0xb
.uleb128 0x38
.uleb128 0x6
.byte 0
.byte 0
.uleb128 0x1e
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0x6
.byte 0
.byte 0
.uleb128 0x1f
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x20
.uleb128 0xa
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x39
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x21
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x2138
.uleb128 0xb
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0x5
.uleb128 0x57
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x22
.uleb128 0x5
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.uleb128 0x2137
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x23
.uleb128 0x4109
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x24
.uleb128 0x410a
.byte 0
.uleb128 0x2
.uleb128 0x18
.uleb128 0x2111
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x25
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x2138
.uleb128 0xb
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0x5
.uleb128 0x57
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x26
.uleb128 0x4109
.byte 0
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x27
.uleb128 0x4109
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x28
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x29
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.uleb128 0x2137
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x2a
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.uleb128 0x2137
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x2b
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x2c
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x49
.uleb128 0x13
.uleb128 0x34
.uleb128 0x19
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x2d
.uleb128 0xb
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x2e
.uleb128 0xb
.byte 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x2f
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.uleb128 0x2137
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x30
.uleb128 0x5
.byte 0
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x31
.uleb128 0xb
.byte 0x1
.uleb128 0x55
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x32
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.uleb128 0x2137
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x33
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x2138
.uleb128 0xb
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x57
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x34
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x35
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x36
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x37
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x38
.uleb128 0xb
.byte 0x1
.byte 0
.byte 0
.uleb128 0x39
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3a
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3b
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.uleb128 0x2137
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x3c
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x1c
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x3d
.uleb128 0xa
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.byte 0
.byte 0
.uleb128 0x3e
.uleb128 0x1d
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x2138
.uleb128 0xb
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x57
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x3f
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x40
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x1c
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x41
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x2138
.uleb128 0xb
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x57
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x42
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x43
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2f
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x44
.uleb128 0x2e
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x45
.uleb128 0x2e
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x46
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x47
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x39
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x48
.uleb128 0x2e
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x49
.uleb128 0xa
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x4a
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x34
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x4b
.uleb128 0x18
.byte 0
.byte 0
.byte 0
.uleb128 0x4c
.uleb128 0x2e
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x4d
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x4e
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x57
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x4f
.uleb128 0x410a
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2111
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x50
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x1c
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x51
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.uleb128 0x2137
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x52
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x53
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x2138
.uleb128 0xb
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x57
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x54
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x55
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x56
.uleb128 0xb
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x7
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x57
.uleb128 0x36
.byte 0
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x58
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x59
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x39
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x5a
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x39
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x5b
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.byte 0
.byte 0
.byte 0
.section .debug_loc,"",@progbits
.Ldebug_loc0:
.LVUS69:
.uleb128 .LVU375
.uleb128 .LVU378
.LLST69:
.8byte .LVL123
.8byte .LVL124
.2byte 0x6
.byte 0xf2
.4byte .Ldebug_info0+6287
.sleb128 0
.8byte 0
.8byte 0
.LVUS70:
.uleb128 .LVU381
.uleb128 .LVU384
.LLST70:
.8byte .LVL125
.8byte .LVL126
.2byte 0x6
.byte 0xf2
.4byte .Ldebug_info0+6312
.sleb128 0
.8byte 0
.8byte 0
.LVUS71:
.uleb128 .LVU393
.uleb128 .LVU398
.LLST71:
.8byte .LVL130
.8byte .LVL131
.2byte 0xa
.byte 0x3
.8byte .LC3
.byte 0x9f
.8byte 0
.8byte 0
.LVUS72:
.uleb128 .LVU393
.uleb128 .LVU398
.LLST72:
.8byte .LVL130
.8byte .LVL131
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS73:
.uleb128 .LVU406
.uleb128 .LVU411
.LLST73:
.8byte .LVL133
.8byte .LVL134
.2byte 0xa
.byte 0x3
.8byte .LC4
.byte 0x9f
.8byte 0
.8byte 0
.LVUS74:
.uleb128 .LVU406
.uleb128 .LVU411
.LLST74:
.8byte .LVL133
.8byte .LVL134
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS56:
.uleb128 .LVU286
.uleb128 .LVU289
.uleb128 .LVU289
.uleb128 .LVU290
.uleb128 .LVU290
.uleb128 .LVU291
.uleb128 .LVU293
.uleb128 .LVU298
.uleb128 .LVU298
.uleb128 .LVU299
.uleb128 .LVU311
.uleb128 .LVU312
.uleb128 .LVU312
.uleb128 .LVU313
.uleb128 .LVU315
.uleb128 .LVU321
.uleb128 .LVU321
.uleb128 .LVU322
.uleb128 .LVU328
.uleb128 .LVU349
.uleb128 .LVU349
.uleb128 .LVU367
.LLST56:
.8byte .LVL91
.8byte .LVL92
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte .LVL92
.8byte .LVL92
.2byte 0x1
.byte 0x6b
.8byte .LVL92
.8byte .LVL93
.2byte 0x3
.byte 0x8b
.sleb128 1
.byte 0x9f
.8byte .LVL94
.8byte .LVL95
.2byte 0x1
.byte 0x6b
.8byte .LVL95
.8byte .LVL96
.2byte 0x3
.byte 0x8b
.sleb128 1
.byte 0x9f
.8byte .LVL100
.8byte .LVL100
.2byte 0x1
.byte 0x6e
.8byte .LVL100
.8byte .LVL101
.2byte 0x3
.byte 0x8e
.sleb128 1
.byte 0x9f
.8byte .LVL102
.8byte .LVL103
.2byte 0x1
.byte 0x6e
.8byte .LVL103
.8byte .LVL104
.2byte 0x3
.byte 0x8e
.sleb128 1
.byte 0x9f
.8byte .LVL108
.8byte .LVL114
.2byte 0x1
.byte 0x6b
.8byte .LVL114
.8byte .LVL119
.2byte 0x1
.byte 0x6e
.8byte 0
.8byte 0
.LVUS57:
.uleb128 .LVU328
.uleb128 .LVU331
.uleb128 .LVU339
.uleb128 .LVU349
.LLST57:
.8byte .LVL108
.8byte .LVL109
.2byte 0x1
.byte 0x6f
.8byte .LVL110
.8byte .LVL114
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS58:
.uleb128 .LVU276
.uleb128 .LVU311
.uleb128 .LVU311
.uleb128 .LVU327
.uleb128 .LVU328
.uleb128 .LVU349
.uleb128 .LVU349
.uleb128 0
.LLST58:
.8byte .LVL89
.8byte .LVL100
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte .LVL100
.8byte .LVL107
.2byte 0x1
.byte 0x6f
.8byte .LVL108
.8byte .LVL114
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte .LVL114
.8byte .LFE109
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS59:
.uleb128 .LVU276
.uleb128 .LVU289
.uleb128 .LVU289
.uleb128 .LVU326
.uleb128 .LVU328
.uleb128 0
.LLST59:
.8byte .LVL89
.8byte .LVL92
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte .LVL92
.8byte .LVL106
.2byte 0x1
.byte 0x6d
.8byte .LVL108
.8byte .LFE109
.2byte 0x1
.byte 0x6d
.8byte 0
.8byte 0
.LVUS63:
.uleb128 .LVU289
.uleb128 .LVU291
.uleb128 .LVU291
.uleb128 .LVU293
.uleb128 .LVU295
.uleb128 .LVU299
.uleb128 .LVU299
.uleb128 .LVU301
.uleb128 .LVU328
.uleb128 .LVU349
.LLST63:
.8byte .LVL92
.8byte .LVL93
.2byte 0x1
.byte 0x6b
.8byte .LVL93
.8byte .LVL94
.2byte 0x3
.byte 0x8b
.sleb128 -1
.byte 0x9f
.8byte .LVL94
.8byte .LVL96
.2byte 0x1
.byte 0x6b
.8byte .LVL96
.8byte .LVL97
.2byte 0x3
.byte 0x8b
.sleb128 -1
.byte 0x9f
.8byte .LVL108
.8byte .LVL114
.2byte 0x1
.byte 0x6b
.8byte 0
.8byte 0
.LVUS68:
.uleb128 .LVU289
.uleb128 .LVU293
.uleb128 .LVU328
.uleb128 .LVU339
.uleb128 .LVU345
.uleb128 .LVU348
.LLST68:
.8byte .LVL92
.8byte .LVL94
.2byte 0x1
.byte 0x53
.8byte .LVL108
.8byte .LVL110
.2byte 0x1
.byte 0x53
.8byte .LVL112
.8byte .LVL113
.2byte 0x1
.byte 0x53
.8byte 0
.8byte 0
.LVUS64:
.uleb128 .LVU355
.uleb128 .LVU359
.LLST64:
.8byte .LVL115
.8byte .LVL117-1
.2byte 0x1
.byte 0x53
.8byte 0
.8byte 0
.LVUS65:
.uleb128 .LVU311
.uleb128 .LVU313
.uleb128 .LVU313
.uleb128 .LVU315
.uleb128 .LVU318
.uleb128 .LVU322
.uleb128 .LVU322
.uleb128 .LVU324
.uleb128 .LVU349
.uleb128 .LVU367
.LLST65:
.8byte .LVL100
.8byte .LVL101
.2byte 0x1
.byte 0x6e
.8byte .LVL101
.8byte .LVL102
.2byte 0x3
.byte 0x8e
.sleb128 -1
.byte 0x9f
.8byte .LVL102
.8byte .LVL104
.2byte 0x1
.byte 0x6e
.8byte .LVL104
.8byte .LVL105
.2byte 0x3
.byte 0x8e
.sleb128 -1
.byte 0x9f
.8byte .LVL114
.8byte .LVL119
.2byte 0x1
.byte 0x6e
.8byte 0
.8byte 0
.LVUS66:
.uleb128 .LVU349
.uleb128 .LVU355
.uleb128 .LVU360
.uleb128 .LVU367
.LLST66:
.8byte .LVL114
.8byte .LVL115
.2byte 0x1
.byte 0x6e
.8byte .LVL117
.8byte .LVL119
.2byte 0x1
.byte 0x6e
.8byte 0
.8byte 0
.LVUS67:
.uleb128 .LVU349
.uleb128 .LVU355
.uleb128 .LVU364
.uleb128 .LVU367
.LLST67:
.8byte .LVL114
.8byte .LVL115
.2byte 0x1
.byte 0x53
.8byte .LVL118
.8byte .LVL119
.2byte 0x1
.byte 0x53
.8byte 0
.8byte 0
.LVUS60:
.uleb128 .LVU280
.uleb128 .LVU283
.LLST60:
.8byte .LVL89
.8byte .LVL90
.2byte 0x4
.byte 0x40
.byte 0x3d
.byte 0x24
.byte 0x9f
.8byte 0
.8byte 0
.LVUS61:
.uleb128 .LVU280
.uleb128 .LVU283
.LLST61:
.8byte .LVL89
.8byte .LVL90
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte 0
.8byte 0
.LVUS62:
.uleb128 .LVU280
.uleb128 .LVU283
.uleb128 .LVU283
.uleb128 .LVU283
.LLST62:
.8byte .LVL89
.8byte .LVL90-1
.2byte 0x1
.byte 0x53
.8byte .LVL90-1
.8byte .LVL90
.2byte 0x1
.byte 0x6a
.8byte 0
.8byte 0
.LVUS34:
.uleb128 0
.uleb128 .LVU201
.uleb128 .LVU201
.uleb128 .LVU205
.uleb128 .LVU205
.uleb128 .LVU206
.uleb128 .LVU206
.uleb128 0
.LLST34:
.8byte .LVL53
.8byte .LVL56
.2byte 0x1
.byte 0x53
.8byte .LVL56
.8byte .LVL59
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte .LVL59
.8byte .LVL60
.2byte 0x1
.byte 0x53
.8byte .LVL60
.8byte .LFE106
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte 0
.8byte 0
.LVUS35:
.uleb128 0
.uleb128 .LVU209
.uleb128 .LVU209
.uleb128 0
.LLST35:
.8byte .LVL53
.8byte .LVL62-1
.2byte 0x1
.byte 0x54
.8byte .LVL62-1
.8byte .LFE106
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.8byte 0
.8byte 0
.LVUS36:
.uleb128 .LVU187
.uleb128 .LVU201
.uleb128 .LVU201
.uleb128 .LVU203
.uleb128 .LVU205
.uleb128 .LVU206
.uleb128 .LVU206
.uleb128 .LVU207
.LLST36:
.8byte .LVL54
.8byte .LVL56
.2byte 0xe
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.8byte .LVL56
.8byte .LVL57
.2byte 0xf
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x22
.byte 0x9f
.8byte .LVL59
.8byte .LVL60
.2byte 0xe
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.8byte .LVL60
.8byte .LVL61
.2byte 0xf
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x22
.byte 0x9f
.8byte 0
.8byte 0
.LVUS37:
.uleb128 .LVU190
.uleb128 .LVU204
.uleb128 .LVU204
.uleb128 .LVU205
.uleb128 .LVU205
.uleb128 .LVU209
.uleb128 .LVU209
.uleb128 0
.LLST37:
.8byte .LVL54
.8byte .LVL58
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x90
.byte 0x1c
.byte 0x9f
.8byte .LVL58
.8byte .LVL59
.2byte 0x4
.byte 0x71
.sleb128 -144
.byte 0x9f
.8byte .LVL59
.8byte .LVL62-1
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x90
.byte 0x1c
.byte 0x9f
.8byte .LVL62-1
.8byte .LFE106
.2byte 0x4
.byte 0x91
.sleb128 -144
.byte 0x9f
.8byte 0
.8byte 0
.LVUS38:
.uleb128 .LVU193
.uleb128 .LVU201
.LLST38:
.8byte .LVL55
.8byte .LVL56
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte 0
.8byte 0
.LVUS39:
.uleb128 .LVU186
.uleb128 .LVU203
.uleb128 .LVU205
.uleb128 .LVU207
.LLST39:
.8byte .LVL54
.8byte .LVL57
.2byte 0x1
.byte 0x5a
.8byte .LVL59
.8byte .LVL61
.2byte 0x1
.byte 0x5a
.8byte 0
.8byte 0
.LVUS40:
.uleb128 .LVU191
.uleb128 .LVU193
.uleb128 .LVU205
.uleb128 .LVU206
.LLST40:
.8byte .LVL54
.8byte .LVL55
.2byte 0x1
.byte 0x5a
.8byte .LVL59
.8byte .LVL60
.2byte 0x1
.byte 0x5a
.8byte 0
.8byte 0
.LVUS41:
.uleb128 .LVU191
.uleb128 .LVU193
.uleb128 .LVU205
.uleb128 .LVU206
.LLST41:
.8byte .LVL54
.8byte .LVL55
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x90
.byte 0x1c
.byte 0x9f
.8byte .LVL59
.8byte .LVL60
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x90
.byte 0x1c
.byte 0x9f
.8byte 0
.8byte 0
.LVUS42:
.uleb128 .LVU191
.uleb128 .LVU193
.uleb128 .LVU205
.uleb128 .LVU206
.LLST42:
.8byte .LVL54
.8byte .LVL55
.2byte 0x2
.byte 0x38
.byte 0x9f
.8byte .LVL59
.8byte .LVL60
.2byte 0x2
.byte 0x38
.byte 0x9f
.8byte 0
.8byte 0
.LVUS43:
.uleb128 .LVU191
.uleb128 .LVU193
.uleb128 .LVU205
.uleb128 .LVU206
.LLST43:
.8byte .LVL54
.8byte .LVL55
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte .LVL59
.8byte .LVL60
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte 0
.8byte 0
.LVUS44:
.uleb128 .LVU191
.uleb128 .LVU193
.uleb128 .LVU205
.uleb128 .LVU206
.LLST44:
.8byte .LVL54
.8byte .LVL55
.2byte 0xe
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.8byte .LVL59
.8byte .LVL60
.2byte 0xe
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.8byte 0
.8byte 0
.LVUS26:
.uleb128 .LVU154
.uleb128 0
.LLST26:
.8byte .LVL49
.8byte .LFE105
.2byte 0x1
.byte 0x5a
.8byte 0
.8byte 0
.LVUS27:
.uleb128 .LVU158
.uleb128 0
.LLST27:
.8byte .LVL50
.8byte .LFE105
.2byte 0xe
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.8byte 0
.8byte 0
.LVUS28:
.uleb128 .LVU157
.uleb128 0
.LLST28:
.8byte .LVL50
.8byte .LFE105
.2byte 0x1
.byte 0x54
.8byte 0
.8byte 0
.LVUS29:
.uleb128 .LVU156
.uleb128 0
.LLST29:
.8byte .LVL50
.8byte .LFE105
.2byte 0x1
.byte 0x57
.8byte 0
.8byte 0
.LVUS30:
.uleb128 .LVU161
.uleb128 .LVU163
.LLST30:
.8byte .LVL51
.8byte .LVL52
.2byte 0x1
.byte 0x5a
.8byte 0
.8byte 0
.LVUS31:
.uleb128 .LVU161
.uleb128 .LVU163
.LLST31:
.8byte .LVL51
.8byte .LVL52
.2byte 0x1
.byte 0x54
.8byte 0
.8byte 0
.LVUS32:
.uleb128 .LVU161
.uleb128 .LVU163
.LLST32:
.8byte .LVL51
.8byte .LVL52
.2byte 0x1
.byte 0x57
.8byte 0
.8byte 0
.LVUS33:
.uleb128 .LVU161
.uleb128 .LVU163
.LLST33:
.8byte .LVL51
.8byte .LVL52
.2byte 0xe
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.8byte 0
.8byte 0
.LVUS2:
.uleb128 0
.uleb128 .LVU22
.uleb128 .LVU22
.uleb128 0
.LLST2:
.8byte .LVL2
.8byte .LVL5
.2byte 0x1
.byte 0x53
.8byte .LVL5
.8byte .LFE101
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte 0
.8byte 0
.LVUS3:
.uleb128 .LVU14
.uleb128 0
.LLST3:
.8byte .LVL3
.8byte .LFE101
.2byte 0x1
.byte 0x5a
.8byte 0
.8byte 0
.LVUS4:
.uleb128 .LVU15
.uleb128 .LVU17
.LLST4:
.8byte .LVL3
.8byte .LVL4
.2byte 0x1
.byte 0x5a
.8byte 0
.8byte 0
.LVUS5:
.uleb128 .LVU15
.uleb128 .LVU17
.LLST5:
.8byte .LVL3
.8byte .LVL4
.2byte 0x2
.byte 0x31
.byte 0x9f
.8byte 0
.8byte 0
.LVUS6:
.uleb128 .LVU15
.uleb128 .LVU17
.LLST6:
.8byte .LVL3
.8byte .LVL4
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte 0
.8byte 0
.LVUS7:
.uleb128 .LVU15
.uleb128 .LVU17
.LLST7:
.8byte .LVL3
.8byte .LVL4
.2byte 0xe
.byte 0x7a
.sleb128 0
.byte 0x8
.byte 0x20
.byte 0x24
.byte 0x8
.byte 0x20
.byte 0x26
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.8byte 0
.8byte 0
.LVUS0:
.uleb128 .LVU1
.uleb128 0
.LLST0:
.8byte .LVL0
.8byte .LFE111
.2byte 0x6
.byte 0xfa
.4byte 0xfa1
.byte 0x9f
.8byte 0
.8byte 0
.LVUS1:
.uleb128 .LVU1
.uleb128 0
.LLST1:
.8byte .LVL0
.8byte .LFE111
.2byte 0x6
.byte 0xfa
.4byte 0xf95
.byte 0x9f
.8byte 0
.8byte 0
.LVUS8:
.uleb128 0
.uleb128 .LVU30
.uleb128 .LVU30
.uleb128 .LVU60
.uleb128 .LVU60
.uleb128 .LVU61
.uleb128 .LVU61
.uleb128 .LVU64
.uleb128 .LVU64
.uleb128 .LVU73
.uleb128 .LVU73
.uleb128 .LVU74
.uleb128 .LVU74
.uleb128 0
.LLST8:
.8byte .LVL6
.8byte .LVL8-1
.2byte 0x1
.byte 0x53
.8byte .LVL8-1
.8byte .LVL18
.2byte 0x1
.byte 0x6f
.8byte .LVL18
.8byte .LVL19
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte .LVL19
.8byte .LVL21
.2byte 0x1
.byte 0x6f
.8byte .LVL21
.8byte .LVL25
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte .LVL25
.8byte .LVL26
.2byte 0x1
.byte 0x6f
.8byte .LVL26
.8byte .LFE103
.2byte 0x5
.byte 0x8d
.sleb128 -262144
.byte 0x9f
.8byte 0
.8byte 0
.LVUS9:
.uleb128 .LVU27
.uleb128 .LVU30
.uleb128 .LVU30
.uleb128 .LVU60
.uleb128 .LVU60
.uleb128 .LVU61
.uleb128 .LVU61
.uleb128 .LVU64
.uleb128 .LVU64
.uleb128 .LVU73
.uleb128 .LVU73
.uleb128 .LVU74
.uleb128 .LVU74
.uleb128 0
.LLST9:
.8byte .LVL7
.8byte .LVL8-1
.2byte 0x1
.byte 0x53
.8byte .LVL8-1
.8byte .LVL18
.2byte 0x1
.byte 0x6f
.8byte .LVL18
.8byte .LVL19
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte .LVL19
.8byte .LVL21
.2byte 0x1
.byte 0x6f
.8byte .LVL21
.8byte .LVL25
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte .LVL25
.8byte .LVL26
.2byte 0x1
.byte 0x6f
.8byte .LVL26
.8byte .LFE103
.2byte 0x5
.byte 0x8d
.sleb128 -262144
.byte 0x9f
.8byte 0
.8byte 0
.LVUS10:
.uleb128 .LVU31
.uleb128 .LVU35
.uleb128 .LVU35
.uleb128 .LVU53
.uleb128 .LVU53
.uleb128 .LVU55
.uleb128 .LVU61
.uleb128 .LVU62
.LLST10:
.8byte .LVL9
.8byte .LVL10
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte .LVL10
.8byte .LVL15
.2byte 0x1
.byte 0x6e
.8byte .LVL15
.8byte .LVL16
.2byte 0x1
.byte 0x5a
.8byte .LVL19
.8byte .LVL20
.2byte 0x1
.byte 0x6e
.8byte 0
.8byte 0
.LVUS11:
.uleb128 .LVU37
.uleb128 .LVU38
.LLST11:
.8byte .LVL11
.8byte .LVL12
.2byte 0x1
.byte 0x53
.8byte 0
.8byte 0
.LVUS12:
.uleb128 .LVU41
.uleb128 .LVU50
.uleb128 .LVU61
.uleb128 .LVU62
.LLST12:
.8byte .LVL13
.8byte .LVL14
.2byte 0x1
.byte 0x6f
.8byte .LVL19
.8byte .LVL20
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS13:
.uleb128 .LVU76
.uleb128 .LVU81
.LLST13:
.8byte .LVL28
.8byte .LVL29
.2byte 0xa
.byte 0x3
.8byte .LC4
.byte 0x9f
.8byte 0
.8byte 0
.LVUS14:
.uleb128 .LVU76
.uleb128 .LVU81
.LLST14:
.8byte .LVL28
.8byte .LVL29
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS15:
.uleb128 .LVU66
.uleb128 .LVU71
.LLST15:
.8byte .LVL23
.8byte .LVL24
.2byte 0xa
.byte 0x3
.8byte .LC3
.byte 0x9f
.8byte 0
.8byte 0
.LVUS16:
.uleb128 .LVU66
.uleb128 .LVU71
.LLST16:
.8byte .LVL23
.8byte .LVL24
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS17:
.uleb128 0
.uleb128 .LVU91
.uleb128 .LVU91
.uleb128 0
.LLST17:
.8byte .LVL31
.8byte .LVL33-1
.2byte 0x1
.byte 0x53
.8byte .LVL33-1
.8byte .LFE102
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte 0
.8byte 0
.LVUS18:
.uleb128 0
.uleb128 .LVU85
.uleb128 .LVU85
.uleb128 0
.LLST18:
.8byte .LVL31
.8byte .LVL32
.2byte 0x1
.byte 0x54
.8byte .LVL32
.8byte .LFE102
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.8byte 0
.8byte 0
.LVUS20:
.uleb128 .LVU117
.uleb128 .LVU118
.LLST20:
.8byte .LVL37
.8byte .LVL37
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte 0
.8byte 0
.LVUS21:
.uleb128 .LVU127
.uleb128 .LVU136
.uleb128 .LVU138
.uleb128 .LVU140
.LLST21:
.8byte .LVL41
.8byte .LVL43
.2byte 0x1
.byte 0x59
.8byte .LVL45
.8byte .LVL46-1
.2byte 0x1
.byte 0x59
.8byte 0
.8byte 0
.LVUS22:
.uleb128 .LVU109
.uleb128 .LVU122
.uleb128 .LVU122
.uleb128 .LVU137
.uleb128 .LVU138
.uleb128 0
.LLST22:
.8byte .LVL36
.8byte .LVL39
.2byte 0x2
.byte 0x8c
.sleb128 0
.8byte .LVL39
.8byte .LVL44
.2byte 0x3
.byte 0x8c
.sleb128 -1592
.8byte .LVL45
.8byte .LFE104
.2byte 0x3
.byte 0x8c
.sleb128 -1592
.8byte 0
.8byte 0
.LVUS23:
.uleb128 .LVU111
.uleb128 .LVU113
.LLST23:
.8byte .LVL36
.8byte .LVL36
.2byte 0x6
.byte 0xc
.4byte 0x40080
.byte 0x9f
.8byte 0
.8byte 0
.LVUS24:
.uleb128 .LVU111
.uleb128 .LVU113
.LLST24:
.8byte .LVL36
.8byte .LVL36
.2byte 0x2
.byte 0x30
.byte 0x9f
.8byte 0
.8byte 0
.LVUS25:
.uleb128 .LVU111
.uleb128 .LVU113
.LLST25:
.8byte .LVL36
.8byte .LVL36
.2byte 0x1
.byte 0x6e
.8byte 0
.8byte 0
.LVUS45:
.uleb128 0
.uleb128 .LVU217
.uleb128 .LVU217
.uleb128 .LVU235
.uleb128 .LVU235
.uleb128 .LVU238
.uleb128 .LVU238
.uleb128 0
.LLST45:
.8byte .LVL63
.8byte .LVL65-1
.2byte 0x1
.byte 0x53
.8byte .LVL65-1
.8byte .LVL73
.2byte 0x1
.byte 0x6d
.8byte .LVL73
.8byte .LVL76
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte .LVL76
.8byte .LFE108
.2byte 0x1
.byte 0x6d
.8byte 0
.8byte 0
.LVUS46:
.uleb128 .LVU219
.uleb128 .LVU227
.uleb128 .LVU227
.uleb128 .LVU229
.uleb128 .LVU229
.uleb128 .LVU232
.uleb128 .LVU232
.uleb128 .LVU237
.uleb128 .LVU248
.uleb128 .LVU250
.LLST46:
.8byte .LVL66
.8byte .LVL70
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.8byte .LVL70
.8byte .LVL71
.2byte 0x9
.byte 0xc
.4byte 0x186a1
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.8byte .LVL71
.8byte .LVL72-1
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x79
.sleb128 0
.byte 0x1c
.byte 0x9f
.8byte .LVL72-1
.8byte .LVL75
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.8byte .LVL80
.8byte .LVL81
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.8byte 0
.8byte 0
.LVUS47:
.uleb128 .LVU215
.uleb128 .LVU217
.uleb128 .LVU217
.uleb128 .LVU235
.uleb128 .LVU235
.uleb128 .LVU238
.uleb128 .LVU238
.uleb128 0
.LLST47:
.8byte .LVL64
.8byte .LVL65-1
.2byte 0x1
.byte 0x53
.8byte .LVL65-1
.8byte .LVL73
.2byte 0x1
.byte 0x6d
.8byte .LVL73
.8byte .LVL76
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.8byte .LVL76
.8byte .LFE108
.2byte 0x1
.byte 0x6d
.8byte 0
.8byte 0
.LVUS48:
.uleb128 .LVU222
.uleb128 .LVU223
.uleb128 .LVU223
.uleb128 .LVU236
.uleb128 .LVU248
.uleb128 0
.LLST48:
.8byte .LVL68
.8byte .LVL69-1
.2byte 0x1
.byte 0x53
.8byte .LVL69-1
.8byte .LVL74
.2byte 0x1
.byte 0x6e
.8byte .LVL80
.8byte .LFE108
.2byte 0x1
.byte 0x6e
.8byte 0
.8byte 0
.LVUS49:
.uleb128 .LVU241
.uleb128 .LVU246
.LLST49:
.8byte .LVL78
.8byte .LVL79
.2byte 0xa
.byte 0x3
.8byte .LC3
.byte 0x9f
.8byte 0
.8byte 0
.LVUS50:
.uleb128 .LVU241
.uleb128 .LVU246
.LLST50:
.8byte .LVL78
.8byte .LVL79
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS51:
.uleb128 .LVU252
.uleb128 .LVU257
.LLST51:
.8byte .LVL83
.8byte .LVL84
.2byte 0xa
.byte 0x3
.8byte .LC4
.byte 0x9f
.8byte 0
.8byte 0
.LVUS52:
.uleb128 .LVU252
.uleb128 .LVU257
.LLST52:
.8byte .LVL83
.8byte .LVL84
.2byte 0x1
.byte 0x6f
.8byte 0
.8byte 0
.LVUS53:
.uleb128 0
.uleb128 .LVU264
.uleb128 .LVU264
.uleb128 0
.LLST53:
.8byte .LVL86
.8byte .LVL88
.2byte 0x1
.byte 0x53
.8byte .LVL88
.8byte .LFE107
.2byte 0x1
.byte 0x59
.8byte 0
.8byte 0
.LVUS54:
.uleb128 0
.uleb128 .LVU262
.uleb128 .LVU262
.uleb128 0
.LLST54:
.8byte .LVL86
.8byte .LVL87
.2byte 0x1
.byte 0x54
.8byte .LVL87
.8byte .LFE107
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.8byte 0
.8byte 0
.LVUS55:
.uleb128 .LVU264
.uleb128 0
.LLST55:
.8byte .LVL88
.8byte .LFE107
.2byte 0x1
.byte 0x53
.8byte 0
.8byte 0
.section .debug_aranges,"",@progbits
.4byte 0x3c
.2byte 0x2
.4byte .Ldebug_info0
.byte 0x8
.byte 0
.2byte 0
.2byte 0
.8byte .Ltext0
.8byte .Letext0-.Ltext0
.8byte .LFB110
.8byte .LFE110-.LFB110
.8byte 0
.8byte 0
.section .debug_ranges,"",@progbits
.Ldebug_ranges0:
.8byte .LBB78
.8byte .LBE78
.8byte .LBB87
.8byte .LBE87
.8byte 0
.8byte 0
.8byte .LBB79
.8byte .LBE79
.8byte .LBB86
.8byte .LBE86
.8byte 0
.8byte 0
.8byte .LBB82
.8byte .LBE82
.8byte .LBB85
.8byte .LBE85
.8byte 0
.8byte 0
.8byte .LBB98
.8byte .LBE98
.8byte .LBB114
.8byte .LBE114
.8byte .LBB119
.8byte .LBE119
.8byte 0
.8byte 0
.8byte .LBB100
.8byte .LBE100
.8byte .LBB105
.8byte .LBE105
.8byte .LBB106
.8byte .LBE106
.8byte .LBB107
.8byte .LBE107
.8byte 0
.8byte 0
.8byte .LBB108
.8byte .LBE108
.8byte .LBB111
.8byte .LBE111
.8byte 0
.8byte 0
.8byte .LBB115
.8byte .LBE115
.8byte .LBB118
.8byte .LBE118
.8byte 0
.8byte 0
.8byte .LBB126
.8byte .LBE126
.8byte .LBB131
.8byte .LBE131
.8byte .LBB132
.8byte .LBE132
.8byte .LBB133
.8byte .LBE133
.8byte 0
.8byte 0
.8byte .LBB136
.8byte .LBE136
.8byte .LBB143
.8byte .LBE143
.8byte 0
.8byte 0
.8byte .LBB137
.8byte .LBE137
.8byte .LBB140
.8byte .LBE140
.8byte 0
.8byte 0
.8byte .LBB144
.8byte .LBE144
.8byte .LBB155
.8byte .LBE155
.8byte .LBB156
.8byte .LBE156
.8byte .LBB157
.8byte .LBE157
.8byte 0
.8byte 0
.8byte .LBB145
.8byte .LBE145
.8byte .LBB152
.8byte .LBE152
.8byte .LBB154
.8byte .LBE154
.8byte 0
.8byte 0
.8byte .LBB149
.8byte .LBE149
.8byte .LBB153
.8byte .LBE153
.8byte 0
.8byte 0
.8byte .LBB169
.8byte .LBE169
.8byte .LBB172
.8byte .LBE172
.8byte 0
.8byte 0
.8byte .LBB175
.8byte .LBE175
.8byte .LBB178
.8byte .LBE178
.8byte 0
.8byte 0
.8byte .LBB179
.8byte .LBE179
.8byte .LBB182
.8byte .LBE182
.8byte 0
.8byte 0
.8byte .LBB184
.8byte .LBE184
.8byte .LBB195
.8byte .LBE195
.8byte 0
.8byte 0
.8byte .LBB186
.8byte .LBE186
.8byte .LBB190
.8byte .LBE190
.8byte .LBB191
.8byte .LBE191
.8byte 0
.8byte 0
.8byte .LBB192
.8byte .LBE192
.8byte .LBB193
.8byte .LBE193
.8byte .LBB194
.8byte .LBE194
.8byte 0
.8byte 0
.8byte .LBB200
.8byte .LBE200
.8byte .LBB203
.8byte .LBE203
.8byte 0
.8byte 0
.8byte .LBB204
.8byte .LBE204
.8byte .LBB207
.8byte .LBE207
.8byte 0
.8byte 0
.8byte .Ltext0
.8byte .Letext0
.8byte .LFB110
.8byte .LFE110
.8byte 0
.8byte 0
.section .debug_line,"",@progbits
.Ldebug_line0:
.section .debug_str,"MS",@progbits,1
.LASF136:
.string "printf"
.LASF9:
.string "__off_t"
.LASF89:
.string "count"
.LASF145:
.string "malloc"
.LASF42:
.string "_chain"
.LASF129:
.string "rseq_cmpnev_storeoffp_load"
.LASF12:
.string "size_t"
.LASF96:
.string "next"
.LASF141:
.string "rseq_register_current_thread"
.LASF48:
.string "_shortbuf"
.LASF103:
.string "allowed_cpus"
.LASF88:
.string "test_data_entry"
.LASF112:
.string "expectnot"
.LASF133:
.string "__ch"
.LASF36:
.string "_IO_buf_base"
.LASF110:
.string "_cpu"
.LASF150:
.string "__builtin_memset"
.LASF22:
.string "long long unsigned int"
.LASF95:
.string "data"
.LASF117:
.string "newval"
.LASF115:
.string "test_percpu_list"
.LASF147:
.string "free"
.LASF51:
.string "_codecvt"
.LASF17:
.string "__timezone"
.LASF24:
.string "long long int"
.LASF4:
.string "signed char"
.LASF153:
.string "pthread_join"
.LASF120:
.string "__PRETTY_FUNCTION__"
.LASF28:
.string "__bits"
.LASF43:
.string "_fileno"
.LASF102:
.string "test_threads"
.LASF31:
.string "_IO_read_end"
.LASF118:
.string "expect"
.LASF72:
.string "sys_siglist"
.LASF6:
.string "long int"
.LASF84:
.string "__rseq_handled"
.LASF29:
.string "_flags"
.LASF52:
.string "_wide_data"
.LASF149:
.string "__builtin_puts"
.LASF46:
.string "_cur_column"
.LASF77:
.string "program_invocation_short_name"
.LASF60:
.string "_IO_codecvt"
.LASF75:
.string "double"
.LASF76:
.string "program_invocation_name"
.LASF45:
.string "_old_offset"
.LASF50:
.string "_offset"
.LASF7:
.string "__uint32_t"
.LASF130:
.string "rseq_cmpeqv_storev"
.LASF20:
.string "timezone"
.LASF85:
.string "rseq"
.LASF154:
.string "sched_yield"
.LASF59:
.string "_IO_marker"
.LASF63:
.string "stdin"
.LASF2:
.string "unsigned int"
.LASF54:
.string "_freeres_buf"
.LASF138:
.string "fprintf"
.LASF139:
.string "__stream"
.LASF3:
.string "long unsigned int"
.LASF73:
.string "__u32"
.LASF34:
.string "_IO_write_ptr"
.LASF62:
.string "off_t"
.LASF19:
.string "daylight"
.LASF66:
.string "sys_nerr"
.LASF151:
.string "sched_getaffinity"
.LASF21:
.string "getdate_err"
.LASF1:
.string "short unsigned int"
.LASF100:
.string "expected_sum"
.LASF142:
.string "rseq_unregister_current_thread"
.LASF156:
.string "basic_percpu_ops_test.c"
.LASF38:
.string "_IO_save_base"
.LASF107:
.string "__percpu_list_pop"
.LASF124:
.string "rseq_this_cpu_lock"
.LASF27:
.string "intptr_t"
.LASF49:
.string "_lock"
.LASF79:
.string "cpu_id_start"
.LASF44:
.string "_flags2"
.LASF56:
.string "_mode"
.LASF64:
.string "stdout"
.LASF111:
.string "targetptr"
.LASF113:
.string "load"
.LASF148:
.string "puts"
.LASF70:
.string "long double"
.LASF86:
.string "percpu_lock_entry"
.LASF30:
.string "_IO_read_ptr"
.LASF26:
.string "uint64_t"
.LASF132:
.string "__dest"
.LASF10:
.string "__off64_t"
.LASF158:
.string "_IO_lock_t"
.LASF93:
.string "_IO_FILE"
.LASF16:
.string "__daylight"
.LASF8:
.string "__uint64_t"
.LASF94:
.string "percpu_list_node"
.LASF123:
.string "rseq_percpu_unlock"
.LASF126:
.string "error"
.LASF87:
.string "percpu_lock"
.LASF41:
.string "_markers"
.LASF146:
.string "__assert_fail"
.LASF81:
.string "rseq_cs"
.LASF23:
.string "pthread_t"
.LASF0:
.string "unsigned char"
.LASF105:
.string "node"
.LASF37:
.string "_IO_buf_end"
.LASF5:
.string "short int"
.LASF78:
.string "ptr64"
.LASF134:
.string "__len"
.LASF68:
.string "_sys_nerr"
.LASF106:
.string "test_percpu_list_thread"
.LASF18:
.string "tzname"
.LASF140:
.string "__fprintf_chk"
.LASF13:
.string "__cpu_mask"
.LASF90:
.string "spinlock_test_data"
.LASF98:
.string "head"
.LASF25:
.string "uint32_t"
.LASF121:
.string "test_percpu_spinlock_thread"
.LASF74:
.string "__u64"
.LASF91:
.string "lock"
.LASF11:
.string "char"
.LASF104:
.string "__cpu"
.LASF83:
.string "__rseq_abi"
.LASF160:
.string "__stack_chk_fail"
.LASF127:
.string "abort"
.LASF157:
.string "/home/michael/build/librseq/tests"
.LASF69:
.string "_sys_errlist"
.LASF143:
.string "__errno_location"
.LASF128:
.string "cmpfail"
.LASF99:
.string "percpu_list"
.LASF114:
.string "offset"
.LASF32:
.string "_IO_read_base"
.LASF159:
.string "rseq_cpu_start"
.LASF40:
.string "_IO_save_end"
.LASF71:
.string "_sys_siglist"
.LASF137:
.string "__fmt"
.LASF55:
.string "__pad5"
.LASF97:
.string "percpu_list_entry"
.LASF35:
.string "_IO_write_end"
.LASF57:
.string "_unused2"
.LASF65:
.string "stderr"
.LASF135:
.string "memset"
.LASF109:
.string "this_cpu_list_pop"
.LASF122:
.string "test_percpu_spinlock"
.LASF152:
.string "pthread_create"
.LASF80:
.string "cpu_id"
.LASF125:
.string "voffp"
.LASF39:
.string "_IO_backup_base"
.LASF116:
.string "this_cpu_list_push"
.LASF82:
.string "flags"
.LASF67:
.string "sys_errlist"
.LASF47:
.string "_vtable_offset"
.LASF92:
.string "reps"
.LASF14:
.string "cpu_set_t"
.LASF53:
.string "_freeres_list"
.LASF61:
.string "_IO_wide_data"
.LASF58:
.string "FILE"
.LASF155:
.string "GNU C17 9.3.0 -msecure-plt -mcpu=power8 -g -O2 -fasynchronous-unwind-tables -fstack-protector-strong -fstack-clash-protection"
.LASF101:
.string "list"
.LASF144:
.string "strerror"
.LASF15:
.string "__tzname"
.LASF108:
.string "main"
.LASF33:
.string "_IO_write_base"
.LASF119:
.string "num_threads"
.LASF131:
.string "newv"
.ident "GCC: (Ubuntu 9.3.0-10ubuntu2) 9.3.0"
.section .note.GNU-stack,"",@progbits
^ permalink raw reply
* Re: Failure to build librseq on ppc
From: Mathieu Desnoyers @ 2020-07-08 12:33 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: Boqun Feng, linuxppc-dev, Michael Jeanson
In-Reply-To: <20200708005922.GW3598@gate.crashing.org>
[-- Attachment #1: Type: text/plain, Size: 3101 bytes --]
----- On Jul 7, 2020, at 8:59 PM, Segher Boessenkool segher@kernel.crashing.org wrote:
> Hi!
>
> On Tue, Jul 07, 2020 at 03:17:10PM -0400, Mathieu Desnoyers wrote:
>> I'm trying to build librseq at:
>>
>> https://git.kernel.org/pub/scm/libs/librseq/librseq.git
>>
>> on powerpc, and I get these errors when building the rseq basic
>> test mirrored from the kernel selftests code:
>>
>> /tmp/ccieEWxU.s: Assembler messages:
>> /tmp/ccieEWxU.s:118: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:118: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:121: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:121: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:626: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:626: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:629: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:629: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:735: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:735: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:738: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:738: Error: junk at end of line: `,8'
>> /tmp/ccieEWxU.s:741: Error: syntax error; found `,', expected `('
>> /tmp/ccieEWxU.s:741: Error: junk at end of line: `,8'
>> Makefile:581: recipe for target 'basic_percpu_ops_test.o' failed
>
> You'll have to show the actual failing machine code, and with enough
> context that we can relate this to the source code.
>
> -save-temps helps, or use -S instead of -c, etc.
Sure, see attached .S file.
>
>> I am using this compiler:
>>
>> gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.12)
>> Target: powerpc-linux-gnu
>>
>> So far, I got things to build by changing "m" operands to "Q" operands.
>> Based on
>> https://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html#Machine-Constraints
>> it seems that "Q" means "A memory operand addressed by just a base register."
>
> Yup.
>
>> I suspect that lwz and stw don't expect some kind of immediate offset which
>> can be kept with "m", and "Q" fixes this. Is that the right fix ?
>>
>> And should we change all operands passed to lwz and stw to a "Q" operand ?
>
> No, lwz and stw exactly *do* take an immediate offset.
>
> It sounds like the compiler passed memory addressed by indexed
> addressing, instead. Which is fine for "m", and also fine for those
> insns... well, you need lwzx and stwx.
>
> So perhaps you have code like
>
> int *p;
> int x;
> ...
> asm ("lwz %0,%1" : "=r"(x) : "m"(*p));
We indeed have explicit "lwz" and "stw" instructions in there.
>
> where that last line should actually read
>
> asm ("lwz%X1 %0,%1" : "=r"(x) : "m"(*p));
Indeed, turning those into "lwzx" and "stwx" seems to fix the issue.
There has been some level of extra CPP macro coating around those instructions to
support both ppc32 and ppc64 with the same assembly. So adding %X[arg] is not trivial.
Let me see what can be done here.
Thanks,
Mathieu
>
> ?
>
>
> Segher
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
[-- Attachment #2: basic_percpu_ops_test.S --]
[-- Type: application/octet-stream, Size: 91492 bytes --]
.file "basic_percpu_ops_test.c"
.machine ppc
.section ".text"
.Ltext0:
.cfi_sections .debug_frame
.align 2
.p2align 4,,15
.type rseq_percpu_unlock.part.0, @function
rseq_percpu_unlock.part.0:
.LFB125:
.file 1 "basic_percpu_ops_test.c"
.loc 1 72 0
.cfi_startproc
.LVL0:
stwu 1,-16(1)
.cfi_def_cfa_offset 16
.loc 1 74 0
lis 6,.LANCHOR0@ha
.loc 1 72 0
mflr 0
.loc 1 74 0
lis 4,.LC0@ha
lis 3,.LC1@ha
la 6,.LANCHOR0@l(6)
li 5,74
la 4,.LC0@l(4)
la 3,.LC1@l(3)
.loc 1 72 0
stw 0,20(1)
.cfi_offset 65, 4
.loc 1 74 0
bl __assert_fail
.LVL1:
.cfi_endproc
.LFE125:
.size rseq_percpu_unlock.part.0,.-rseq_percpu_unlock.part.0
.align 2
.p2align 4,,15
.globl rseq_this_cpu_lock
.type rseq_this_cpu_lock, @function
rseq_this_cpu_lock:
.LFB115:
.loc 1 51 0
.cfi_startproc
.LVL2:
stwu 1,-80(1)
.cfi_def_cfa_offset 80
.LBB72:
.LBB73:
.LBB74:
.file 2 "../include/rseq/rseq.h"
.loc 2 142 0
lis 9,_GLOBAL_OFFSET_TABLE_@ha
la 9,_GLOBAL_OFFSET_TABLE_@l(9)
lwz 9,__rseq_abi@got@tprel(9)
.LBE74:
.LBE73:
.LBB77:
.LBB78:
.file 3 "../include/rseq/rseq-ppc.h"
.loc 3 211 0
li 6,0
.LBE78:
.LBE77:
.LBB81:
.LBB75:
.loc 2 142 0
add 9,9,__rseq_abi@tls
.LBE75:
.LBE81:
.LBB82:
.LBB79:
.loc 3 211 0
li 7,1
.LBE79:
.LBE82:
.LBE72:
.loc 1 51 0
stw 17,20(1)
.cfi_offset 17, -60
.L4:
.L7:
.L5:
.LBB85:
.LBB83:
.LBB76:
.loc 2 142 0
lwz 10,0(9)
.LVL3:
.LBE76:
.LBE83:
.loc 1 58 0
slwi 8,10,7
.LBB84:
.LBB80:
.loc 3 211 0
#APP
# 211 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.long 0x0, 1f, 0x0, (2f - 1f), 0x0, 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.long 0x0, 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.long 0x0, 1f, 0x0, .L7
.popsection
lis %r17, (3b)@ha
addi %r17, %r17, (3b)@l
stw %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
lwz %r17, 3,8
cmpw cr7, %r17, 6
bne- cr7, .L7
stw 7, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L7
.popsection
# 0 "" 2
.LVL4:
#NO_APP
.LBE80:
.LBE84:
.LBE85:
.loc 1 68 0
#APP
# 68 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
.loc 1 70 0
#NO_APP
lwz 17,20(1)
mr 3,10
.LVL5:
addi 1,1,80
.cfi_restore 17
.cfi_def_cfa_offset 0
blr
.cfi_endproc
.LFE115:
.size rseq_this_cpu_lock,.-rseq_this_cpu_lock
.align 2
.p2align 4,,15
.globl test_percpu_spinlock_thread
.type test_percpu_spinlock_thread, @function
test_percpu_spinlock_thread:
.LFB117:
.loc 1 83 0
.cfi_startproc
.LVL6:
stwu 1,-32(1)
.cfi_def_cfa_offset 32
mflr 0
stw 31,28(1)
stw 0,36(1)
stw 28,16(1)
stw 29,20(1)
stw 30,24(1)
.cfi_offset 65, 4
.cfi_offset 31, -4
.cfi_offset 28, -16
.cfi_offset 29, -12
.cfi_offset 30, -8
.loc 1 83 0
mr 31,3
.LVL7:
.loc 1 87 0
bl rseq_register_current_thread
.LVL8:
cmpwi 7,3,0
bne- 7,.L11
.LVL9:
.loc 1 92 0 discriminator 1
addis 29,31,0x4
li 30,0
lwz 9,0(29)
.LBB86:
.LBB87:
.loc 1 79 0 discriminator 1
li 28,0
.LBE87:
.LBE86:
.loc 1 92 0 discriminator 1
cmpwi 7,9,0
ble 7,.L17
.LVL10:
.p2align 4,,15
.L18:
.loc 1 93 0 discriminator 3
mr 3,31
bl rseq_this_cpu_lock
.LVL11:
slwi 3,3,7
.LVL12:
add 9,31,3
.loc 1 94 0 discriminator 3
addis 9,9,0x2
lwz 10,0(9)
addi 10,10,1
stw 10,0(9)
.LVL13:
.LBB90:
.LBB88:
.loc 1 74 0 discriminator 3
lwzx 9,31,3
cmpwi 7,9,1
bne- 7,.L23
.loc 1 79 0
#APP
# 79 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
#NO_APP
stwx 28,31,3
.LVL14:
.LBE88:
.LBE90:
.loc 1 92 0
addi 30,30,1
.LVL15:
lwz 9,0(29)
cmpw 7,9,30
bgt 7,.L18
.LVL16:
.L17:
.loc 1 97 0
bl rseq_unregister_current_thread
.LVL17:
cmpwi 7,3,0
bne- 7,.L24
.loc 1 104 0
lwz 0,36(1)
lwz 28,16(1)
lwz 29,20(1)
lwz 30,24(1)
mtlr 0
.cfi_remember_state
.cfi_restore 65
lwz 31,28(1)
.LVL18:
addi 1,1,32
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
.cfi_def_cfa_offset 0
blr
.LVL19:
.L23:
.cfi_restore_state
.LBB91:
.LBB89:
bl rseq_percpu_unlock.part.0
.LVL20:
.L11:
.LBE89:
.LBE91:
.loc 1 88 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 89 0
bl __errno_location
.LVL21:
.loc 1 88 0
lwz 31,0(3)
.LVL22:
mr 3,31
bl strerror
.LVL23:
.LBB92:
.LBB93:
.file 4 "/usr/include/powerpc-linux-gnu/bits/stdio2.h"
.loc 4 97 0
lis 5,.LC2@ha
mr 6,31
la 5,.LC2@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL24:
.LBE93:
.LBE92:
.loc 1 90 0
bl abort
.LVL25:
.L24:
.loc 1 98 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 99 0
bl __errno_location
.LVL26:
.loc 1 98 0
lwz 31,0(3)
.LVL27:
mr 3,31
bl strerror
.LVL28:
.LBB94:
.LBB95:
.loc 4 97 0
lis 5,.LC3@ha
mr 6,31
la 5,.LC3@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL29:
.LBE95:
.LBE94:
.loc 1 100 0
bl abort
.LVL30:
.cfi_endproc
.LFE117:
.size test_percpu_spinlock_thread,.-test_percpu_spinlock_thread
.align 2
.p2align 4,,15
.globl rseq_percpu_unlock
.type rseq_percpu_unlock, @function
rseq_percpu_unlock:
.LFB116:
.loc 1 73 0
.cfi_startproc
.LVL31:
slwi 4,4,7
.LVL32:
.loc 1 74 0
lwzx 9,3,4
cmpwi 7,9,1
bne- 7,.L28
.loc 1 79 0
#APP
# 79 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
#NO_APP
li 9,0
stwx 9,3,4
blr
.L28:
.loc 1 73 0 discriminator 1
stwu 1,-16(1)
.cfi_def_cfa_offset 16
mflr 0
stw 0,20(1)
.cfi_offset 65, 4
bl rseq_percpu_unlock.part.0
.LVL33:
.cfi_endproc
.LFE116:
.size rseq_percpu_unlock,.-rseq_percpu_unlock
.align 2
.p2align 4,,15
.globl test_percpu_spinlock
.type test_percpu_spinlock, @function
test_percpu_spinlock:
.LFB118:
.loc 1 113 0
.cfi_startproc
.loc 1 113 0
stwu 1,-64(1)
.cfi_def_cfa_offset 64
lis 9,0xfffb
mflr 0
ori 9,9,0xff00
.LBB102:
.LBB103:
.file 5 "/usr/include/powerpc-linux-gnu/bits/string3.h"
.loc 5 90 0
lis 5,0x4
ori 5,5,0x80
li 4,0
.LBE103:
.LBE102:
.loc 1 113 0
lwz 10,0(1)
stw 25,36(1)
stw 26,40(1)
stw 27,44(1)
stw 28,48(1)
stw 29,52(1)
stw 30,56(1)
stw 31,60(1)
stw 0,68(1)
.cfi_offset 65, 4
.cfi_offset 25, -28
.cfi_offset 26, -24
.cfi_offset 27, -20
.cfi_offset 28, -16
.cfi_offset 29, -12
.cfi_offset 30, -8
.cfi_offset 31, -4
mr 31,1
.cfi_def_cfa_register 31
.loc 1 113 0
stwux 10,1,9
lis 26,test_percpu_spinlock_thread@ha
la 26,test_percpu_spinlock_thread@l(26)
addi 9,1,135
lwz 8,-28680(2)
stw 8,28(31)
li 8,0
.LVL34:
.loc 1 117 0
stwu 10,-816(1)
.loc 1 113 0
rlwinm 30,9,0,0,24
.LBB106:
.LBB104:
.loc 5 90 0
mr 3,30
.LBE104:
.LBE106:
.loc 1 121 0
addis 27,30,0x4
.LBB107:
.LBB105:
.loc 5 90 0
bl memset
.LVL35:
.LBE105:
.LBE107:
.loc 1 121 0
li 9,5000
.loc 1 117 0
addi 28,1,8
.LVL36:
.loc 1 121 0
stw 9,0(27)
mr 29,28
addi 25,28,800
.LVL37:
.p2align 5,,31
.L30:
.loc 1 124 0 discriminator 3
mr 3,29
mr 6,30
mr 5,26
li 4,0
addi 29,29,4
bl pthread_create
.LVL38:
.loc 1 123 0 discriminator 3
cmplw 7,29,25
bne 7,.L30
addi 29,28,-4
addi 28,28,796
.LVL39:
.p2align 5,,31
.L31:
.loc 1 128 0 discriminator 3
lwzu 3,4(29)
li 4,0
bl pthread_join
.LVL40:
.loc 1 127 0 discriminator 3
cmplw 7,28,29
bne 7,.L31
addis 9,30,0x2
.loc 1 127 0 is_stmt 0
li 7,0
li 10,0
.p2align 5,,31
.L32:
.LVL41:
.loc 1 132 0 is_stmt 1 discriminator 3
lwz 8,0(9)
addi 9,9,128
.loc 1 131 0 discriminator 3
cmplw 7,27,9
.loc 1 132 0 discriminator 3
srawi 6,8,31
addc 10,8,10
.LVL42:
adde 7,6,7
.LVL43:
.loc 1 131 0 discriminator 3
bne 7,.L32
.loc 1 134 0
lwz 9,0(27)
li 8,200
mulhw 8,9,8
mulli 9,9,200
cmplw 7,7,8
bne- 7,.L36
cmplw 7,10,9
bne- 7,.L36
.loc 1 135 0
lwz 9,28(31)
lwz 10,-28680(2)
xor. 9,9,10
li 10,0
.LVL44:
bne- 0,.L42
addi 11,31,64
lwz 0,4(11)
lwz 25,-28(11)
lwz 31,-4(11)
.cfi_remember_state
.cfi_def_cfa 11, 0
lwz 26,-24(11)
mtlr 0
.cfi_restore 65
lwz 27,-20(11)
lwz 28,-16(11)
.LVL45:
lwz 29,-12(11)
lwz 30,-8(11)
mr 1,11
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
.cfi_restore 27
.cfi_restore 26
.cfi_restore 25
.cfi_def_cfa_register 1
.LVL46:
blr
.LVL47:
.L36:
.cfi_restore_state
.LBB108:
.LBB109:
.loc 1 134 0
lis 6,.LANCHOR0@ha
lis 4,.LC0@ha
la 6,.LANCHOR0@l(6)
lis 3,.LC4@ha
addi 6,6,20
li 5,134
la 4,.LC0@l(4)
la 3,.LC4@l(3)
bl __assert_fail
.LVL48:
.L42:
.LBE109:
.LBE108:
.loc 1 135 0
bl __stack_chk_fail
.LVL49:
.cfi_endproc
.LFE118:
.size test_percpu_spinlock,.-test_percpu_spinlock
.align 2
.p2align 4,,15
.globl this_cpu_list_push
.type this_cpu_list_push, @function
this_cpu_list_push:
.LFB119:
.loc 1 140 0
.cfi_startproc
.LVL50:
stwu 1,-80(1)
.cfi_def_cfa_offset 80
.LBB110:
.LBB111:
.LBB112:
.loc 2 142 0
lis 9,_GLOBAL_OFFSET_TABLE_@ha
la 9,_GLOBAL_OFFSET_TABLE_@l(9)
lwz 9,__rseq_abi@got@tprel(9)
add 9,9,__rseq_abi@tls
.LBE112:
.LBE111:
.LBE110:
.loc 1 140 0
stw 17,20(1)
.cfi_offset 17, -60
.L44:
.L45:
.LBB117:
.LBB114:
.LBB113:
.loc 2 142 0
lwz 10,0(9)
.LVL51:
.LBE113:
.LBE114:
.loc 1 149 0
slwi 8,10,7
lwzx 7,3,8
.LVL52:
.loc 1 152 0
stw 7,4(4)
.LVL53:
.LBB115:
.LBB116:
.loc 3 211 0
#APP
# 211 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.long 0x0, 1f, 0x0, (2f - 1f), 0x0, 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.long 0x0, 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.long 0x0, 1f, 0x0, .L44
.popsection
lis %r17, (3b)@ha
addi %r17, %r17, (3b)@l
stw %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
lwz %r17, 3,8
cmpw cr7, %r17, 7
bne- cr7, .L44
stw 4, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L44
.popsection
# 0 "" 2
.LVL54:
#NO_APP
.LBE116:
.LBE115:
.LBE117:
.loc 1 158 0
cmpwi 7,5,0
beq 7,.L43
.loc 1 159 0
stw 10,0(5)
.L43:
.loc 1 160 0
lwz 17,20(1)
addi 1,1,80
.cfi_restore 17
.cfi_def_cfa_offset 0
blr
.cfi_endproc
.LFE119:
.size this_cpu_list_push,.-this_cpu_list_push
.align 2
.p2align 4,,15
.globl this_cpu_list_pop
.type this_cpu_list_pop, @function
this_cpu_list_pop:
.LFB120:
.loc 1 169 0
.cfi_startproc
.LVL55:
stwu 1,-96(1)
.cfi_def_cfa_offset 96
.LBB118:
.LBB119:
.LBB120:
.loc 3 271 0
li 6,0
.LBE120:
.LBE119:
.LBE118:
.loc 1 169 0
mflr 0
.LBB127:
.LBB123:
.LBB121:
.loc 3 271 0
li 7,4
.LBE121:
.LBE123:
.LBE127:
.loc 1 169 0
stw 0,100(1)
stw 17,36(1)
.cfi_offset 65, 4
.cfi_offset 17, -60
.loc 1 169 0
lwz 9,-28680(2)
stw 9,28(1)
li 9,0
.LBB128:
.LBB124:
.LBB125:
.loc 2 142 0
lis 9,_GLOBAL_OFFSET_TABLE_@ha
la 9,_GLOBAL_OFFSET_TABLE_@l(9)
lwz 9,__rseq_abi@got@tprel(9)
add 9,9,__rseq_abi@tls
.L57:
lwz 10,0(9)
.LVL56:
.LBE125:
.LBE124:
.loc 1 177 0
slwi 8,10,7
.LBB126:
.LBB122:
.loc 3 271 0
#APP
# 271 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.long 0x0, 1f, 0x0, (2f - 1f), 0x0, 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.long 0x0, 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.long 0x0, 1f, 0x0, .L61
.popsection
lis %r17, (3b)@ha
addi %r17, %r17, (3b)@l
stw %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
lwz %r17, 3,8
cmpw cr7, %r17, 6
beq- cr7, .L61
lwz %r17, 3,8
stw %r17, 24(1)
lwzx %r17, 7, %r17
stw %r17, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L57
.popsection
# 0 "" 2
.LVL57:
#NO_APP
.LBE122:
.LBE126:
.loc 1 184 0
cmpwi 7,4,0
beq 7,.L59
.loc 1 185 0
stw 10,0(4)
.L59:
.loc 1 186 0
lwz 3,24(1)
.LVL58:
b .L55
.L54:
.LVL59:
.L61:
.loc 1 189 0
li 3,0
.LVL60:
.L55:
.LBE128:
.loc 1 192 0 discriminator 1
lwz 10,28(1)
lwz 9,-28680(2)
xor. 10,10,9
li 9,0
.LVL61:
bne- 0,.L67
.loc 1 192 0 is_stmt 0
lwz 0,100(1)
lwz 17,36(1)
addi 1,1,96
.cfi_remember_state
.cfi_restore 17
.cfi_def_cfa_offset 0
.LVL62:
mtlr 0
.cfi_restore 65
blr
.LVL63:
.L67:
.cfi_restore_state
bl __stack_chk_fail
.LVL64:
.cfi_endproc
.LFE120:
.size this_cpu_list_pop,.-this_cpu_list_pop
.align 2
.p2align 4,,15
.globl test_percpu_list_thread
.type test_percpu_list_thread, @function
test_percpu_list_thread:
.LFB122:
.loc 1 210 0 is_stmt 1
.cfi_startproc
.LVL65:
stwu 1,-32(1)
.cfi_def_cfa_offset 32
mflr 0
stw 29,20(1)
stw 31,28(1)
stw 0,36(1)
stw 30,24(1)
.cfi_offset 65, 4
.cfi_offset 29, -12
.cfi_offset 31, -4
.cfi_offset 30, -8
.loc 1 210 0
mr 29,3
.loc 1 214 0
bl rseq_register_current_thread
.LVL66:
lis 31,0x1
ori 31,31,0x86a0
cmpwi 7,3,0
bne- 7,.L81
.p2align 4,,15
.L75:
.LVL67:
.LBB139:
.loc 1 223 0
li 4,0
mr 3,29
bl this_cpu_list_pop
.LVL68:
mr 30,3
.LVL69:
.loc 1 224 0
bl sched_yield
.LVL70:
.loc 1 225 0
cmpwi 7,30,0
beq 7,.L70
.loc 1 226 0
li 5,0
mr 4,30
mr 3,29
bl this_cpu_list_push
.LVL71:
.L70:
.LBE139:
.loc 1 220 0 discriminator 2
cmpwi 0,31,1
addi 31,31,-1
.LVL72:
bne 0,.L75
.loc 1 229 0
bl rseq_unregister_current_thread
.LVL73:
cmpwi 7,3,0
bne- 7,.L82
.loc 1 236 0
lwz 0,36(1)
lwz 29,20(1)
.LVL74:
lwz 30,24(1)
.LVL75:
lwz 31,28(1)
.LVL76:
addi 1,1,32
.cfi_remember_state
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_def_cfa_offset 0
mtlr 0
.cfi_restore 65
blr
.LVL77:
.L81:
.cfi_restore_state
.LBB140:
.LBB141:
.loc 1 215 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 216 0
bl __errno_location
.LVL78:
.loc 1 215 0
lwz 31,0(3)
mr 3,31
bl strerror
.LVL79:
.LBB142:
.LBB143:
.loc 4 97 0
lis 5,.LC2@ha
mr 6,31
la 5,.LC2@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL80:
.LBE143:
.LBE142:
.loc 1 217 0
bl abort
.LVL81:
.L82:
.LBE141:
.LBE140:
.loc 1 230 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.LVL82:
.loc 1 231 0
bl __errno_location
.LVL83:
.loc 1 230 0
lwz 31,0(3)
.LVL84:
mr 3,31
bl strerror
.LVL85:
.LBB144:
.LBB145:
.loc 4 97 0
lis 5,.LC3@ha
mr 6,31
la 5,.LC3@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL86:
.LBE145:
.LBE144:
.loc 1 232 0
bl abort
.LVL87:
.cfi_endproc
.LFE122:
.size test_percpu_list_thread,.-test_percpu_list_thread
.align 2
.p2align 4,,15
.globl __percpu_list_pop
.type __percpu_list_pop, @function
__percpu_list_pop:
.LFB121:
.loc 1 199 0
.cfi_startproc
.LVL88:
stwu 1,-16(1)
.cfi_def_cfa_offset 16
slwi 4,4,7
.LVL89:
.loc 1 202 0
lwzx 9,3,4
.LVL90:
.loc 1 203 0
cmpwi 7,9,0
beq 7,.L84
.loc 1 205 0
lwz 10,4(9)
stwx 10,3,4
.L84:
.loc 1 207 0
mr 3,9
.LVL91:
addi 1,1,16
.cfi_def_cfa_offset 0
blr
.cfi_endproc
.LFE121:
.size __percpu_list_pop,.-__percpu_list_pop
.align 2
.p2align 4,,15
.globl test_percpu_list
.type test_percpu_list, @function
test_percpu_list:
.LFB123:
.loc 1 240 0
.cfi_startproc
stwu 1,-1008(1)
.cfi_def_cfa_offset 1008
lis 9,0xfffd
mflr 0
ori 9,9,0xff80
.LBB146:
.LBB147:
.loc 5 90 0
lis 5,0x2
li 4,0
.LBE147:
.LBE146:
.loc 1 240 0
lwz 10,0(1)
stw 0,1012(1)
stw 23,972(1)
stw 24,976(1)
stw 25,980(1)
stw 26,984(1)
stw 27,988(1)
stw 29,996(1)
stw 31,1004(1)
stw 28,992(1)
.cfi_offset 65, 4
.cfi_offset 23, -36
.cfi_offset 24, -32
.cfi_offset 25, -28
.cfi_offset 26, -24
.cfi_offset 27, -20
.cfi_offset 29, -12
.cfi_offset 31, -4
.cfi_offset 28, -16
mr 31,1
.cfi_def_cfa_register 31
stw 30,1000(1)
.cfi_offset 30, -8
.loc 1 240 0
stwux 10,1,9
.loc 1 242 0
li 26,0
li 29,0
.loc 1 251 0
li 24,0
.loc 1 240 0
addi 23,1,135
lwz 9,-28680(2)
stw 9,956(31)
li 9,0
.LVL92:
rlwinm 23,23,0,0,24
.LVL93:
.LBB149:
.LBB148:
.loc 5 90 0
mr 3,23
bl memset
.LVL94:
.LBE148:
.LBE149:
.loc 1 250 0
addi 5,31,28
li 4,128
li 3,0
mr 25,23
bl sched_getaffinity
.LVL95:
mr 27,23
.LVL96:
.p2align 4,,15
.L93:
.LBB150:
.loc 1 252 0
addi 10,31,960
rlwinm 9,24,29,3,29
add 9,10,9
rlwinm 10,24,0,27,31
lwz 9,-932(9)
srw 9,9,10
andi. 10,9,1
beq 0,.L90
li 28,0
li 30,1
.LVL97:
.p2align 4,,15
.L114:
.LBE150:
.LBB151:
.loc 1 257 0
addc 29,30,29
.LVL98:
.loc 1 259 0
li 3,8
.loc 1 257 0
adde 26,28,26
.loc 1 259 0
bl malloc
.LVL99:
.loc 1 260 0
cmpwi 0,3,0
beq- 0,.L121
addic 10,30,1
.loc 1 262 0 discriminator 2
lwz 8,0(27)
.loc 1 261 0 discriminator 2
stw 30,0(3)
addze 28,28
.loc 1 263 0 discriminator 2
stw 3,0(27)
.LVL100:
.LBE151:
.loc 1 254 0 discriminator 2
cmpwi 7,28,0
.LBB152:
.loc 1 262 0 discriminator 2
stw 8,4(3)
mr 30,10
.LVL101:
.LBE152:
.loc 1 254 0 discriminator 2
bne 7,.L114
cmplwi 7,10,101
bne 7,.L114
.LVL102:
.p2align 4,,15
.L90:
.loc 1 251 0 discriminator 2
cmpwi 7,24,1023
addi 27,27,128
addi 24,24,1
.LVL103:
bne 7,.L93
lis 28,test_percpu_list_thread@ha
addi 30,31,156
addi 27,31,956
la 28,test_percpu_list_thread@l(28)
.LVL104:
.p2align 5,,31
.L94:
.loc 1 268 0 discriminator 3
mr 3,30
mr 6,23
mr 5,28
li 4,0
addi 30,30,4
bl pthread_create
.LVL105:
.loc 1 267 0 discriminator 3
cmplw 7,27,30
bne 7,.L94
addi 30,31,152
addi 28,31,952
.p2align 5,,31
.L95:
.loc 1 272 0 discriminator 3
lwzu 3,4(30)
li 4,0
bl pthread_join
.LVL106:
.loc 1 271 0 discriminator 3
cmplw 7,28,30
bne 7,.L95
li 28,0
li 30,0
li 27,0
b .L98
.LVL107:
.p2align 4,,15
.L96:
.loc 1 274 0 discriminator 2
cmpwi 7,27,1023
addi 25,25,128
addi 27,27,1
.LVL108:
beq 7,.L122
.LVL109:
.L98:
.LBB153:
.LBB154:
.loc 1 277 0
addi 10,31,960
rlwinm 9,27,29,3,29
add 9,10,9
rlwinm 10,27,0,27,31
lwz 9,-932(9)
srw 9,9,10
andi. 10,9,1
beq 0,.L96
.LVL110:
.LBE154:
.LBB155:
.LBB156:
.loc 1 202 0
lwz 3,0(25)
.LVL111:
.loc 1 203 0
cmpwi 7,3,0
beq 7,.L96
.p2align 4,,15
.L97:
.LVL112:
.loc 1 205 0
lwz 8,4(3)
.LBE156:
.LBE155:
.loc 1 281 0
lwz 9,0(3)
.LBB159:
.LBB157:
.loc 1 205 0
stw 8,0(25)
.LVL113:
.LBE157:
.LBE159:
.loc 1 281 0
srawi 10,9,31
addc 30,9,30
.LVL114:
adde 28,10,28
.LVL115:
.loc 1 282 0
bl free
.LVL116:
.LBB160:
.LBB158:
.loc 1 202 0
lwz 3,0(25)
.LVL117:
.loc 1 203 0
cmpwi 7,3,0
bne 7,.L97
.LVL118:
.LBE158:
.LBE160:
.LBE153:
.loc 1 274 0
cmpwi 7,27,1023
addi 25,25,128
addi 27,27,1
.LVL119:
bne 7,.L98
.LVL120:
.L122:
.loc 1 291 0
cmplw 7,28,26
bne- 7,.L102
cmplw 7,30,29
bne- 7,.L102
.loc 1 292 0
lwz 9,956(31)
lwz 10,-28680(2)
xor. 9,9,10
li 10,0
bne- 0,.L123
addi 11,31,1008
lwz 0,4(11)
lwz 23,-36(11)
lwz 31,-4(11)
.cfi_remember_state
.cfi_def_cfa 11, 0
lwz 24,-32(11)
.LVL121:
mtlr 0
.cfi_restore 65
lwz 25,-28(11)
lwz 26,-24(11)
.LVL122:
lwz 27,-20(11)
.LVL123:
lwz 28,-16(11)
lwz 29,-12(11)
lwz 30,-8(11)
mr 1,11
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
.cfi_restore 27
.cfi_restore 26
.cfi_restore 25
.cfi_restore 24
.cfi_restore 23
.cfi_def_cfa_register 1
blr
.LVL124:
.L121:
.cfi_restore_state
.LBB161:
.loc 1 260 0 discriminator 1
lis 6,.LANCHOR0@ha
lis 4,.LC0@ha
la 6,.LANCHOR0@l(6)
lis 3,.LC5@ha
.LVL125:
addi 6,6,44
li 5,260
la 4,.LC0@l(4)
la 3,.LC5@l(3)
bl __assert_fail
.LVL126:
.L102:
.LBE161:
.loc 1 291 0 discriminator 1
lis 6,.LANCHOR0@ha
lis 4,.LC0@ha
la 6,.LANCHOR0@l(6)
lis 3,.LC6@ha
addi 6,6,44
li 5,291
la 4,.LC0@l(4)
la 3,.LC6@l(3)
bl __assert_fail
.LVL127:
.L123:
.loc 1 292 0
bl __stack_chk_fail
.LVL128:
.cfi_endproc
.LFE123:
.size test_percpu_list,.-test_percpu_list
.section .text.startup,"ax",@progbits
.align 2
.p2align 4,,15
.globl main
.type main, @function
main:
.LFB124:
.loc 1 295 0
.cfi_startproc
stwu 1,-32(1)
.cfi_def_cfa_offset 32
mflr 0
stw 30,24(1)
stw 0,36(1)
stw 31,28(1)
.cfi_offset 65, 4
.cfi_offset 30, -8
.cfi_offset 31, -4
.loc 1 296 0
bl rseq_register_current_thread
.LVL129:
cmpwi 7,3,0
bne 7,.L131
.LVL130:
.LBB162:
.LBB163:
.loc 4 104 0
lis 3,.LC7@ha
la 3,.LC7@l(3)
bl puts
.LVL131:
.LBE163:
.LBE162:
.loc 1 302 0
bl test_percpu_spinlock
.LVL132:
.LBB164:
.LBB165:
.loc 4 104 0
lis 3,.LC8@ha
la 3,.LC8@l(3)
bl puts
.LVL133:
.LBE165:
.LBE164:
.loc 1 304 0
bl test_percpu_list
.LVL134:
.loc 1 305 0
bl rseq_unregister_current_thread
.LVL135:
cmpwi 0,3,0
bne 0,.L132
.L126:
.loc 1 314 0
lwz 0,36(1)
lwz 30,24(1)
lwz 31,28(1)
addi 1,1,32
.cfi_remember_state
.cfi_restore 31
.cfi_restore 30
.cfi_def_cfa_offset 0
mtlr 0
.cfi_restore 65
blr
.L131:
.cfi_restore_state
.loc 1 297 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 298 0
bl __errno_location
.LVL136:
.loc 1 297 0
lwz 31,0(3)
mr 3,31
bl strerror
.LVL137:
.LBB166:
.LBB167:
.loc 4 97 0
lis 5,.LC2@ha
mr 6,31
la 5,.LC2@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL138:
.LBE167:
.LBE166:
.loc 1 313 0
li 3,-1
b .L126
.LVL139:
.L132:
.loc 1 306 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 307 0
bl __errno_location
.LVL140:
.loc 1 306 0
lwz 31,0(3)
mr 3,31
bl strerror
.LVL141:
.LBB168:
.LBB169:
.loc 4 97 0
lis 5,.LC3@ha
mr 6,31
la 5,.LC3@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL142:
.LBE169:
.LBE168:
.loc 1 313 0
li 3,-1
b .L126
.cfi_endproc
.LFE124:
.size main,.-main
.section .rodata
.align 2
.set .LANCHOR0,. + 0
.type __PRETTY_FUNCTION__.5645, @object
.size __PRETTY_FUNCTION__.5645, 19
__PRETTY_FUNCTION__.5645:
.string "rseq_percpu_unlock"
.zero 1
.type __PRETTY_FUNCTION__.5672, @object
.size __PRETTY_FUNCTION__.5672, 21
__PRETTY_FUNCTION__.5672:
.string "test_percpu_spinlock"
.zero 3
.type __PRETTY_FUNCTION__.5725, @object
.size __PRETTY_FUNCTION__.5725, 17
__PRETTY_FUNCTION__.5725:
.string "test_percpu_list"
.section .rodata.str1.4,"aMS",@progbits,1
.align 2
.LC0:
.string "basic_percpu_ops_test.c"
.LC1:
.string "lock->c[cpu].v == 1"
.LC2:
.string "Error: rseq_register_current_thread(...) failed(%d): %s\n"
.zero 3
.LC3:
.string "Error: rseq_unregister_current_thread(...) failed(%d): %s\n"
.zero 1
.LC4:
.string "sum == (uint64_t)data.reps * num_threads"
.zero 3
.LC5:
.string "node"
.zero 3
.LC6:
.string "sum == expected_sum"
.LC7:
.string "spinlock"
.zero 3
.LC8:
.string "percpu_list"
.section ".text"
.Letext0:
.file 6 "/usr/include/powerpc-linux-gnu/bits/types.h"
.file 7 "/usr/lib/gcc/powerpc-linux-gnu/5/include/stddef.h"
.file 8 "/usr/include/powerpc-linux-gnu/bits/sched.h"
.file 9 "/usr/include/powerpc-linux-gnu/bits/pthreadtypes.h"
.file 10 "/usr/include/stdint.h"
.file 11 "/usr/include/stdio.h"
.file 12 "/usr/include/libio.h"
.file 13 "/usr/include/asm-generic/int-ll64.h"
.file 14 "/home/compudj/git/librseq/extra/linux/rseq.h"
.file 15 "/usr/include/assert.h"
.file 16 "/usr/include/powerpc-linux-gnu/bits/errno.h"
.file 17 "/usr/include/string.h"
.file 18 "/usr/include/stdlib.h"
.file 19 "/usr/include/pthread.h"
.file 20 "/usr/include/sched.h"
.file 21 "<built-in>"
.section .debug_info,"",@progbits
.Ldebug_info0:
.4byte 0x142c
.2byte 0x4
.4byte .Ldebug_abbrev0
.byte 0x4
.uleb128 0x1
.4byte .LASF140
.byte 0xc
.4byte .LASF141
.4byte .LASF142
.4byte .Ldebug_ranges0+0x160
.4byte 0
.4byte .Ldebug_line0
.uleb128 0x2
.byte 0x1
.byte 0x8
.4byte .LASF0
.uleb128 0x2
.byte 0x2
.byte 0x7
.4byte .LASF1
.uleb128 0x2
.byte 0x4
.byte 0x7
.4byte .LASF2
.uleb128 0x2
.byte 0x4
.byte 0x7
.4byte .LASF3
.uleb128 0x2
.byte 0x1
.byte 0x6
.4byte .LASF4
.uleb128 0x2
.byte 0x2
.byte 0x5
.4byte .LASF5
.uleb128 0x3
.byte 0x4
.byte 0x5
.string "int"
.uleb128 0x2
.byte 0x8
.byte 0x5
.4byte .LASF6
.uleb128 0x2
.byte 0x8
.byte 0x7
.4byte .LASF7
.uleb128 0x4
.4byte .LASF8
.byte 0x6
.byte 0x37
.4byte 0x56
.uleb128 0x4
.4byte .LASF9
.byte 0x6
.byte 0x83
.4byte 0x7a
.uleb128 0x2
.byte 0x4
.byte 0x5
.4byte .LASF10
.uleb128 0x4
.4byte .LASF11
.byte 0x6
.byte 0x84
.4byte 0x64
.uleb128 0x2
.byte 0x4
.byte 0x7
.4byte .LASF12
.uleb128 0x5
.byte 0x4
.uleb128 0x6
.byte 0x4
.4byte 0x9b
.uleb128 0x2
.byte 0x1
.byte 0x8
.4byte .LASF13
.uleb128 0x4
.4byte .LASF14
.byte 0x7
.byte 0xd8
.4byte 0x33
.uleb128 0x4
.4byte .LASF15
.byte 0x8
.byte 0x76
.4byte 0x3a
.uleb128 0x7
.byte 0x80
.byte 0x8
.byte 0x7d
.4byte 0xcd
.uleb128 0x8
.4byte .LASF22
.byte 0x8
.byte 0x7f
.4byte 0xcd
.byte 0
.byte 0
.uleb128 0x9
.4byte 0xad
.4byte 0xdd
.uleb128 0xa
.4byte 0x8c
.byte 0x1f
.byte 0
.uleb128 0x4
.4byte .LASF16
.byte 0x8
.byte 0x80
.4byte 0xb8
.uleb128 0x6
.byte 0x4
.4byte 0xee
.uleb128 0xb
.4byte 0x9b
.uleb128 0xb
.4byte 0x4f
.uleb128 0x4
.4byte .LASF17
.byte 0x9
.byte 0x31
.4byte 0x3a
.uleb128 0x4
.4byte .LASF18
.byte 0xa
.byte 0x33
.4byte 0x33
.uleb128 0x4
.4byte .LASF19
.byte 0xa
.byte 0x3a
.4byte 0x5d
.uleb128 0x4
.4byte .LASF20
.byte 0xa
.byte 0x7d
.4byte 0x4f
.uleb128 0x4
.4byte .LASF21
.byte 0xb
.byte 0x30
.4byte 0x12f
.uleb128 0xc
.4byte .LASF52
.byte 0x98
.byte 0xc
.byte 0xf1
.4byte 0x2ac
.uleb128 0x8
.4byte .LASF23
.byte 0xc
.byte 0xf2
.4byte 0x4f
.byte 0
.uleb128 0x8
.4byte .LASF24
.byte 0xc
.byte 0xf7
.4byte 0x95
.byte 0x4
.uleb128 0x8
.4byte .LASF25
.byte 0xc
.byte 0xf8
.4byte 0x95
.byte 0x8
.uleb128 0x8
.4byte .LASF26
.byte 0xc
.byte 0xf9
.4byte 0x95
.byte 0xc
.uleb128 0x8
.4byte .LASF27
.byte 0xc
.byte 0xfa
.4byte 0x95
.byte 0x10
.uleb128 0x8
.4byte .LASF28
.byte 0xc
.byte 0xfb
.4byte 0x95
.byte 0x14
.uleb128 0x8
.4byte .LASF29
.byte 0xc
.byte 0xfc
.4byte 0x95
.byte 0x18
.uleb128 0x8
.4byte .LASF30
.byte 0xc
.byte 0xfd
.4byte 0x95
.byte 0x1c
.uleb128 0x8
.4byte .LASF31
.byte 0xc
.byte 0xfe
.4byte 0x95
.byte 0x20
.uleb128 0xd
.4byte .LASF32
.byte 0xc
.2byte 0x100
.4byte 0x95
.byte 0x24
.uleb128 0xd
.4byte .LASF33
.byte 0xc
.2byte 0x101
.4byte 0x95
.byte 0x28
.uleb128 0xd
.4byte .LASF34
.byte 0xc
.2byte 0x102
.4byte 0x95
.byte 0x2c
.uleb128 0xd
.4byte .LASF35
.byte 0xc
.2byte 0x104
.4byte 0x2e4
.byte 0x30
.uleb128 0xd
.4byte .LASF36
.byte 0xc
.2byte 0x106
.4byte 0x2ea
.byte 0x34
.uleb128 0xd
.4byte .LASF37
.byte 0xc
.2byte 0x108
.4byte 0x4f
.byte 0x38
.uleb128 0xd
.4byte .LASF38
.byte 0xc
.2byte 0x10c
.4byte 0x4f
.byte 0x3c
.uleb128 0xd
.4byte .LASF39
.byte 0xc
.2byte 0x10e
.4byte 0x6f
.byte 0x40
.uleb128 0xd
.4byte .LASF40
.byte 0xc
.2byte 0x112
.4byte 0x2c
.byte 0x44
.uleb128 0xd
.4byte .LASF41
.byte 0xc
.2byte 0x113
.4byte 0x41
.byte 0x46
.uleb128 0xd
.4byte .LASF42
.byte 0xc
.2byte 0x114
.4byte 0x2f0
.byte 0x47
.uleb128 0xd
.4byte .LASF43
.byte 0xc
.2byte 0x118
.4byte 0x300
.byte 0x48
.uleb128 0xd
.4byte .LASF44
.byte 0xc
.2byte 0x121
.4byte 0x81
.byte 0x50
.uleb128 0xd
.4byte .LASF45
.byte 0xc
.2byte 0x129
.4byte 0x93
.byte 0x58
.uleb128 0xd
.4byte .LASF46
.byte 0xc
.2byte 0x12a
.4byte 0x93
.byte 0x5c
.uleb128 0xd
.4byte .LASF47
.byte 0xc
.2byte 0x12b
.4byte 0x93
.byte 0x60
.uleb128 0xd
.4byte .LASF48
.byte 0xc
.2byte 0x12c
.4byte 0x93
.byte 0x64
.uleb128 0xd
.4byte .LASF49
.byte 0xc
.2byte 0x12e
.4byte 0xa2
.byte 0x68
.uleb128 0xd
.4byte .LASF50
.byte 0xc
.2byte 0x12f
.4byte 0x4f
.byte 0x6c
.uleb128 0xd
.4byte .LASF51
.byte 0xc
.2byte 0x131
.4byte 0x306
.byte 0x70
.byte 0
.uleb128 0xe
.4byte .LASF143
.byte 0xc
.byte 0x96
.uleb128 0xc
.4byte .LASF53
.byte 0xc
.byte 0xc
.byte 0x9c
.4byte 0x2e4
.uleb128 0x8
.4byte .LASF54
.byte 0xc
.byte 0x9d
.4byte 0x2e4
.byte 0
.uleb128 0x8
.4byte .LASF55
.byte 0xc
.byte 0x9e
.4byte 0x2ea
.byte 0x4
.uleb128 0x8
.4byte .LASF56
.byte 0xc
.byte 0xa2
.4byte 0x4f
.byte 0x8
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x2b3
.uleb128 0x6
.byte 0x4
.4byte 0x12f
.uleb128 0x9
.4byte 0x9b
.4byte 0x300
.uleb128 0xa
.4byte 0x8c
.byte 0
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x2ac
.uleb128 0x9
.4byte 0x9b
.4byte 0x316
.uleb128 0xa
.4byte 0x8c
.byte 0x27
.byte 0
.uleb128 0x4
.4byte .LASF57
.byte 0xb
.byte 0x5a
.4byte 0x6f
.uleb128 0x6
.byte 0x4
.4byte 0x4f
.uleb128 0x2
.byte 0x10
.byte 0x4
.4byte .LASF58
.uleb128 0x4
.4byte .LASF59
.byte 0xd
.byte 0x1a
.4byte 0x33
.uleb128 0x4
.4byte .LASF60
.byte 0xd
.byte 0x1e
.4byte 0x5d
.uleb128 0x2
.byte 0x8
.byte 0x4
.4byte .LASF61
.uleb128 0x7
.byte 0x8
.byte 0xe
.byte 0x72
.4byte 0x36c
.uleb128 0x8
.4byte .LASF62
.byte 0xe
.byte 0x74
.4byte 0x32e
.byte 0
.uleb128 0x8
.4byte .LASF63
.byte 0xe
.byte 0x75
.4byte 0x32e
.byte 0x4
.byte 0
.uleb128 0xf
.byte 0x8
.byte 0xe
.byte 0x6d
.4byte 0x38b
.uleb128 0x10
.4byte .LASF64
.byte 0xe
.byte 0x6e
.4byte 0x339
.uleb128 0x11
.string "ptr"
.byte 0xe
.byte 0x7a
.4byte 0x34b
.byte 0
.uleb128 0xc
.4byte .LASF65
.byte 0x20
.byte 0xe
.byte 0x3e
.4byte 0x3c8
.uleb128 0x8
.4byte .LASF66
.byte 0xe
.byte 0x4b
.4byte 0x32e
.byte 0
.uleb128 0x8
.4byte .LASF67
.byte 0xe
.byte 0x5a
.4byte 0x32e
.byte 0x4
.uleb128 0x8
.4byte .LASF68
.byte 0xe
.byte 0x7c
.4byte 0x36c
.byte 0x8
.uleb128 0x8
.4byte .LASF69
.byte 0xe
.byte 0x90
.4byte 0x32e
.byte 0x10
.byte 0
.uleb128 0xc
.4byte .LASF70
.byte 0x80
.byte 0x1
.byte 0x12
.4byte 0x3df
.uleb128 0x12
.string "v"
.byte 0x1
.byte 0x13
.4byte 0x119
.byte 0
.byte 0
.uleb128 0x13
.4byte .LASF71
.4byte 0x20000
.byte 0x1
.byte 0x16
.4byte 0x3f9
.uleb128 0x12
.string "c"
.byte 0x1
.byte 0x17
.4byte 0x3f9
.byte 0
.byte 0
.uleb128 0x9
.4byte 0x3c8
.4byte 0x40a
.uleb128 0x14
.4byte 0x8c
.2byte 0x3ff
.byte 0
.uleb128 0xc
.4byte .LASF72
.byte 0x80
.byte 0x1
.byte 0x1a
.4byte 0x423
.uleb128 0x8
.4byte .LASF73
.byte 0x1
.byte 0x1b
.4byte 0x119
.byte 0
.byte 0
.uleb128 0x13
.4byte .LASF74
.4byte 0x40080
.byte 0x1
.byte 0x1e
.4byte 0x45b
.uleb128 0x8
.4byte .LASF75
.byte 0x1
.byte 0x1f
.4byte 0x3df
.byte 0
.uleb128 0x15
.string "c"
.byte 0x1
.byte 0x20
.4byte 0x45b
.4byte 0x20000
.uleb128 0x16
.4byte .LASF76
.byte 0x1
.byte 0x21
.4byte 0x4f
.4byte 0x40000
.byte 0
.uleb128 0x9
.4byte 0x40a
.4byte 0x46c
.uleb128 0x14
.4byte 0x8c
.2byte 0x3ff
.byte 0
.uleb128 0xc
.4byte .LASF77
.byte 0x8
.byte 0x1
.byte 0x24
.4byte 0x491
.uleb128 0x8
.4byte .LASF78
.byte 0x1
.byte 0x25
.4byte 0x119
.byte 0
.uleb128 0x8
.4byte .LASF79
.byte 0x1
.byte 0x26
.4byte 0x491
.byte 0x4
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x46c
.uleb128 0xc
.4byte .LASF80
.byte 0x80
.byte 0x1
.byte 0x29
.4byte 0x4b0
.uleb128 0x8
.4byte .LASF81
.byte 0x1
.byte 0x2a
.4byte 0x491
.byte 0
.byte 0
.uleb128 0x13
.4byte .LASF82
.4byte 0x20000
.byte 0x1
.byte 0x2d
.4byte 0x4ca
.uleb128 0x12
.string "c"
.byte 0x1
.byte 0x2e
.4byte 0x4ca
.byte 0
.byte 0
.uleb128 0x9
.4byte 0x497
.4byte 0x4db
.uleb128 0x14
.4byte 0x8c
.2byte 0x3ff
.byte 0
.uleb128 0x17
.4byte .LASF99
.byte 0x3
.byte 0xcf
.4byte 0x4f
.byte 0x3
.4byte 0x524
.uleb128 0x18
.string "v"
.byte 0x3
.byte 0xcf
.4byte 0x524
.uleb128 0x19
.4byte .LASF83
.byte 0x3
.byte 0xcf
.4byte 0x119
.uleb128 0x19
.4byte .LASF84
.byte 0x3
.byte 0xcf
.4byte 0x119
.uleb128 0x18
.string "cpu"
.byte 0x3
.byte 0xcf
.4byte 0x4f
.uleb128 0x1a
.4byte .LASF85
.byte 0x3
.byte 0xfc
.uleb128 0x1a
.4byte .LASF86
.byte 0x3
.byte 0xff
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x119
.uleb128 0x1b
.4byte .LASF144
.byte 0x2
.byte 0x8c
.4byte 0x103
.byte 0x3
.uleb128 0x1c
.4byte .LASF94
.byte 0x1
.byte 0x48
.byte 0x1
.4byte 0x566
.uleb128 0x19
.4byte .LASF75
.byte 0x1
.byte 0x48
.4byte 0x566
.uleb128 0x18
.string "cpu"
.byte 0x1
.byte 0x48
.4byte 0x4f
.uleb128 0x1d
.4byte .LASF96
.4byte 0x57c
.4byte .LASF94
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x3df
.uleb128 0x9
.4byte 0xee
.4byte 0x57c
.uleb128 0xa
.4byte 0x8c
.byte 0x12
.byte 0
.uleb128 0xb
.4byte 0x56c
.uleb128 0x1e
.4byte .LASF89
.byte 0x4
.byte 0x5f
.4byte 0x4f
.byte 0x3
.4byte 0x5a9
.uleb128 0x19
.4byte .LASF87
.byte 0x4
.byte 0x5f
.4byte 0x5af
.uleb128 0x19
.4byte .LASF88
.byte 0x4
.byte 0x5f
.4byte 0x5b4
.uleb128 0x1f
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x124
.uleb128 0x20
.4byte 0x5a9
.uleb128 0x20
.4byte 0xe8
.uleb128 0x1e
.4byte .LASF90
.byte 0x5
.byte 0x4e
.4byte 0x93
.byte 0x3
.4byte 0x5eb
.uleb128 0x19
.4byte .LASF91
.byte 0x5
.byte 0x4e
.4byte 0x93
.uleb128 0x19
.4byte .LASF92
.byte 0x5
.byte 0x4e
.4byte 0x4f
.uleb128 0x19
.4byte .LASF93
.byte 0x5
.byte 0x4e
.4byte 0xa2
.byte 0
.uleb128 0x1c
.4byte .LASF95
.byte 0x1
.byte 0x70
.byte 0x1
.4byte 0x63a
.uleb128 0x21
.4byte .LASF97
.byte 0x1
.byte 0x72
.4byte 0xf3
.uleb128 0x22
.string "i"
.byte 0x1
.byte 0x73
.4byte 0x4f
.uleb128 0x22
.string "sum"
.byte 0x1
.byte 0x74
.4byte 0x10e
.uleb128 0x21
.4byte .LASF98
.byte 0x1
.byte 0x75
.4byte 0x63a
.uleb128 0x21
.4byte .LASF78
.byte 0x1
.byte 0x76
.4byte 0x423
.uleb128 0x1d
.4byte .LASF96
.4byte 0x659
.4byte .LASF95
.byte 0
.uleb128 0x9
.4byte 0xf8
.4byte 0x649
.uleb128 0x23
.4byte 0x8c
.byte 0
.uleb128 0x9
.4byte 0xee
.4byte 0x659
.uleb128 0xa
.4byte 0x8c
.byte 0x14
.byte 0
.uleb128 0xb
.4byte 0x649
.uleb128 0x24
.4byte .LASF100
.byte 0x3
.2byte 0x10a
.4byte 0x4f
.byte 0x3
.4byte 0x6ba
.uleb128 0x25
.string "v"
.byte 0x3
.2byte 0x10a
.4byte 0x524
.uleb128 0x26
.4byte .LASF101
.byte 0x3
.2byte 0x10a
.4byte 0x119
.uleb128 0x26
.4byte .LASF102
.byte 0x3
.2byte 0x10b
.4byte 0x316
.uleb128 0x26
.4byte .LASF103
.byte 0x3
.2byte 0x10b
.4byte 0x524
.uleb128 0x25
.string "cpu"
.byte 0x3
.2byte 0x10b
.4byte 0x4f
.uleb128 0x27
.4byte .LASF85
.byte 0x3
.2byte 0x140
.uleb128 0x27
.4byte .LASF86
.byte 0x3
.2byte 0x143
.byte 0
.uleb128 0x28
.4byte .LASF106
.byte 0x1
.byte 0xd1
.4byte 0x93
.byte 0x1
.4byte 0x6f7
.uleb128 0x18
.string "arg"
.byte 0x1
.byte 0xd1
.4byte 0x93
.uleb128 0x22
.string "i"
.byte 0x1
.byte 0xd3
.4byte 0x4f
.uleb128 0x21
.4byte .LASF104
.byte 0x1
.byte 0xd4
.4byte 0x6f7
.uleb128 0x29
.uleb128 0x21
.4byte .LASF105
.byte 0x1
.byte 0xdd
.4byte 0x491
.byte 0
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x4b0
.uleb128 0x28
.4byte .LASF107
.byte 0x1
.byte 0xc6
.4byte 0x491
.byte 0x1
.4byte 0x72f
.uleb128 0x19
.4byte .LASF104
.byte 0x1
.byte 0xc6
.4byte 0x6f7
.uleb128 0x18
.string "cpu"
.byte 0x1
.byte 0xc6
.4byte 0x4f
.uleb128 0x21
.4byte .LASF105
.byte 0x1
.byte 0xc8
.4byte 0x491
.byte 0
.uleb128 0x1e
.4byte .LASF108
.byte 0x4
.byte 0x66
.4byte 0x4f
.byte 0x3
.4byte 0x74c
.uleb128 0x19
.4byte .LASF88
.byte 0x4
.byte 0x66
.4byte 0x5b4
.uleb128 0x1f
.byte 0
.uleb128 0x2a
.4byte 0x536
.4byte .LFB125
.4byte .LFE125-.LFB125
.uleb128 0x1
.byte 0x9c
.4byte 0x7ae
.uleb128 0x2b
.4byte 0x54d
.uleb128 0x6
.byte 0xfa
.4byte 0x54d
.byte 0x9f
.uleb128 0x2b
.4byte 0x542
.uleb128 0x6
.byte 0xfa
.4byte 0x542
.byte 0x9f
.uleb128 0x2c
.4byte 0x558
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5645
.uleb128 0x2d
.4byte .LVL1
.4byte 0x135c
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC1
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x5
.byte 0x3
.4byte .LC0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8
.byte 0x4a
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x5
.byte 0x3
.4byte .LANCHOR0
.byte 0
.byte 0
.uleb128 0x2f
.4byte .LASF109
.byte 0x1
.byte 0x32
.4byte 0x4f
.4byte .LFB115
.4byte .LFE115-.LFB115
.uleb128 0x1
.byte 0x9c
.4byte 0x850
.uleb128 0x30
.4byte .LASF75
.byte 0x1
.byte 0x32
.4byte 0x566
.4byte .LLST0
.uleb128 0x31
.string "cpu"
.byte 0x1
.byte 0x34
.4byte 0x4f
.uleb128 0x1
.byte 0x5a
.uleb128 0x32
.4byte .Ldebug_ranges0+0
.uleb128 0x22
.string "ret"
.byte 0x1
.byte 0x37
.4byte 0x4f
.uleb128 0x33
.4byte 0x52a
.4byte .LBB73
.4byte .Ldebug_ranges0+0x18
.byte 0x1
.byte 0x39
.uleb128 0x34
.4byte 0x4db
.4byte .LBB77
.4byte .Ldebug_ranges0+0x38
.byte 0x1
.byte 0x3a
.uleb128 0x35
.4byte 0x50a
.4byte .LLST1
.uleb128 0x35
.4byte 0x4ff
.4byte .LLST2
.uleb128 0x35
.4byte 0x4f4
.4byte .LLST3
.uleb128 0x35
.4byte 0x4eb
.4byte .LLST4
.uleb128 0x32
.4byte .Ldebug_ranges0+0x38
.uleb128 0x36
.4byte 0x515
.4byte .L5
.uleb128 0x36
.4byte 0x51c
.4byte .L4
.byte 0
.byte 0
.byte 0
.byte 0
.uleb128 0x2f
.4byte .LASF110
.byte 0x1
.byte 0x52
.4byte 0x93
.4byte .LFB117
.4byte .LFE117-.LFB117
.uleb128 0x1
.byte 0x9c
.4byte 0x9ef
.uleb128 0x37
.string "arg"
.byte 0x1
.byte 0x52
.4byte 0x93
.4byte .LLST5
.uleb128 0x38
.4byte .LASF78
.byte 0x1
.byte 0x54
.4byte 0x9ef
.4byte .LLST6
.uleb128 0x39
.string "i"
.byte 0x1
.byte 0x55
.4byte 0x4f
.4byte .LLST7
.uleb128 0x39
.string "cpu"
.byte 0x1
.byte 0x55
.4byte 0x4f
.4byte .LLST8
.uleb128 0x3a
.4byte 0x536
.4byte .LBB86
.4byte .Ldebug_ranges0+0x58
.byte 0x1
.byte 0x5f
.4byte 0x8e8
.uleb128 0x3b
.4byte 0x54d
.uleb128 0x35
.4byte 0x542
.4byte .LLST9
.uleb128 0x32
.4byte .Ldebug_ranges0+0x58
.uleb128 0x2c
.4byte 0x558
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5645
.uleb128 0x2d
.4byte .LVL20
.4byte 0x74c
.uleb128 0x3c
.4byte 0x542
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.byte 0
.uleb128 0x3d
.4byte 0x581
.4byte .LBB92
.4byte .LBE92-.LBB92
.byte 0x1
.byte 0x58
.4byte 0x932
.uleb128 0x35
.4byte 0x59c
.4byte .LLST10
.uleb128 0x35
.4byte 0x591
.4byte .LLST11
.uleb128 0x2d
.4byte .LVL24
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC2
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3d
.4byte 0x581
.4byte .LBB94
.4byte .LBE94-.LBB94
.byte 0x1
.byte 0x62
.4byte 0x97c
.uleb128 0x35
.4byte 0x59c
.4byte .LLST12
.uleb128 0x35
.4byte 0x591
.4byte .LLST13
.uleb128 0x2d
.4byte .LVL29
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC3
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL8
.4byte 0x1372
.uleb128 0x3f
.4byte .LVL11
.4byte 0x7ae
.4byte 0x999
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL17
.4byte 0x137d
.uleb128 0x3e
.4byte .LVL21
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL23
.4byte 0x1393
.4byte 0x9bf
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL25
.4byte 0x139f
.uleb128 0x3e
.4byte .LVL26
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL28
.4byte 0x1393
.4byte 0x9e5
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL30
.4byte 0x139f
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x423
.uleb128 0x2a
.4byte 0x536
.4byte .LFB116
.4byte .LFE116-.LFB116
.uleb128 0x1
.byte 0x9c
.4byte 0xa42
.uleb128 0x35
.4byte 0x542
.4byte .LLST14
.uleb128 0x35
.4byte 0x54d
.4byte .LLST15
.uleb128 0x2c
.4byte 0x558
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5645
.uleb128 0x2d
.4byte .LVL33
.4byte 0x74c
.uleb128 0x3c
.4byte 0x542
.uleb128 0x3
.byte 0xf3
.uleb128 0x1
.byte 0x53
.uleb128 0x3c
.4byte 0x54d
.uleb128 0x3
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0
.byte 0
.uleb128 0x2a
.4byte 0x5eb
.4byte .LFB118
.4byte .LFE118-.LFB118
.uleb128 0x1
.byte 0x9c
.4byte 0xb71
.uleb128 0x40
.4byte 0x5f7
.byte 0xc8
.uleb128 0x41
.4byte 0x602
.4byte .LLST16
.uleb128 0x41
.4byte 0x60b
.4byte .LLST17
.uleb128 0x42
.4byte 0x616
.4byte 0x63a
.4byte .LLST18
.uleb128 0x2c
.4byte 0x621
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2c
.4byte 0x62c
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5672
.uleb128 0x3a
.4byte 0x5b9
.4byte .LBB102
.4byte .Ldebug_ranges0+0x78
.byte 0x1
.byte 0x78
.4byte 0xace
.uleb128 0x3b
.4byte 0x5df
.uleb128 0x3b
.4byte 0x5d4
.uleb128 0x3b
.4byte 0x5c9
.uleb128 0x2d
.4byte .LVL35
.4byte 0x13ab
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0xc
.4byte 0x40080
.byte 0
.byte 0
.uleb128 0x43
.4byte .LBB109
.4byte .LBE109-.LBB109
.4byte 0xb2f
.uleb128 0x44
.4byte 0x5f7
.uleb128 0x44
.4byte 0x602
.uleb128 0x44
.4byte 0x60b
.uleb128 0x45
.4byte 0x616
.4byte 0xb71
.uleb128 0x44
.4byte 0x621
.uleb128 0x2c
.4byte 0x62c
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5672
.uleb128 0x2d
.4byte .LVL48
.4byte 0x135c
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC4
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x5
.byte 0x3
.4byte .LC0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8
.byte 0x86
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x5
.byte 0x3
.4byte .LANCHOR0+20
.byte 0
.byte 0
.uleb128 0x3f
.4byte .LVL38
.4byte 0x13b4
.4byte 0xb54
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 -4
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8a
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8e
.sleb128 0
.byte 0
.uleb128 0x3f
.4byte .LVL40
.4byte 0x13bf
.4byte 0xb67
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x3e
.4byte .LVL49
.4byte 0x13ca
.byte 0
.uleb128 0x9
.4byte 0xf8
.4byte 0xb80
.uleb128 0x23
.4byte 0x8c
.byte 0
.uleb128 0x46
.4byte .LASF116
.byte 0x1
.byte 0x89
.4byte .LFB119
.4byte .LFE119-.LFB119
.uleb128 0x1
.byte 0x9c
.4byte 0xc68
.uleb128 0x47
.4byte .LASF104
.byte 0x1
.byte 0x89
.4byte 0x6f7
.uleb128 0x1
.byte 0x53
.uleb128 0x47
.4byte .LASF105
.byte 0x1
.byte 0x8a
.4byte 0x491
.uleb128 0x1
.byte 0x54
.uleb128 0x47
.4byte .LASF111
.byte 0x1
.byte 0x8b
.4byte 0x321
.uleb128 0x1
.byte 0x55
.uleb128 0x31
.string "cpu"
.byte 0x1
.byte 0x8d
.4byte 0x4f
.uleb128 0x1
.byte 0x5a
.uleb128 0x32
.4byte .Ldebug_ranges0+0x98
.uleb128 0x48
.4byte .LASF112
.byte 0x1
.byte 0x90
.4byte 0x524
.uleb128 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.uleb128 0x48
.4byte .LASF113
.byte 0x1
.byte 0x90
.4byte 0x119
.uleb128 0x1
.byte 0x54
.uleb128 0x48
.4byte .LASF83
.byte 0x1
.byte 0x90
.4byte 0x119
.uleb128 0x1
.byte 0x57
.uleb128 0x22
.string "ret"
.byte 0x1
.byte 0x91
.4byte 0x4f
.uleb128 0x33
.4byte 0x52a
.4byte .LBB111
.4byte .Ldebug_ranges0+0xb0
.byte 0x1
.byte 0x93
.uleb128 0x49
.4byte 0x4db
.4byte .LBB115
.4byte .LBE115-.LBB115
.byte 0x1
.byte 0x99
.uleb128 0x35
.4byte 0x50a
.4byte .LLST19
.uleb128 0x35
.4byte 0x4ff
.4byte .LLST20
.uleb128 0x35
.4byte 0x4f4
.4byte .LLST21
.uleb128 0x35
.4byte 0x4eb
.4byte .LLST22
.uleb128 0x4a
.4byte .LBB116
.4byte .LBE116-.LBB116
.uleb128 0x36
.4byte 0x515
.4byte .L45
.uleb128 0x36
.4byte 0x51c
.4byte .L44
.byte 0
.byte 0
.byte 0
.byte 0
.uleb128 0x2f
.4byte .LASF114
.byte 0x1
.byte 0xa7
.4byte 0x491
.4byte .LFB120
.4byte .LFE120-.LFB120
.uleb128 0x1
.byte 0x9c
.4byte 0xd7a
.uleb128 0x30
.4byte .LASF104
.byte 0x1
.byte 0xa7
.4byte 0x6f7
.4byte .LLST23
.uleb128 0x30
.4byte .LASF111
.byte 0x1
.byte 0xa8
.4byte 0x321
.4byte .LLST24
.uleb128 0x4b
.4byte .Ldebug_ranges0+0xc8
.4byte 0xd70
.uleb128 0x48
.4byte .LASF81
.byte 0x1
.byte 0xab
.4byte 0x491
.uleb128 0x3
.byte 0x91
.sleb128 -72
.uleb128 0x38
.4byte .LASF112
.byte 0x1
.byte 0xac
.4byte 0x524
.4byte .LLST25
.uleb128 0x4c
.4byte .LASF101
.byte 0x1
.byte 0xac
.4byte 0x119
.byte 0
.uleb128 0x38
.4byte .LASF103
.byte 0x1
.byte 0xac
.4byte 0x524
.4byte .LLST26
.uleb128 0x4c
.4byte .LASF115
.byte 0x1
.byte 0xad
.4byte 0x316
.byte 0x4
.uleb128 0x22
.string "ret"
.byte 0x1
.byte 0xae
.4byte 0x4f
.uleb128 0x39
.string "cpu"
.byte 0x1
.byte 0xae
.4byte 0x4f
.4byte .LLST27
.uleb128 0x3a
.4byte 0x65e
.4byte .LBB119
.4byte .Ldebug_ranges0+0xe8
.byte 0x1
.byte 0xb5
.4byte 0xd60
.uleb128 0x35
.4byte 0x69d
.4byte .LLST28
.uleb128 0x35
.4byte 0x691
.4byte .LLST29
.uleb128 0x35
.4byte 0x685
.4byte .LLST30
.uleb128 0x35
.4byte 0x679
.4byte .LLST31
.uleb128 0x35
.4byte 0x66f
.4byte .LLST32
.uleb128 0x32
.4byte .Ldebug_ranges0+0xe8
.uleb128 0x36
.4byte 0x6a9
.4byte .L54
.uleb128 0x36
.4byte 0x6b1
.4byte .L55
.byte 0
.byte 0
.uleb128 0x4d
.4byte 0x52a
.4byte .LBB124
.4byte .LBE124-.LBB124
.byte 0x1
.byte 0xb0
.byte 0
.uleb128 0x3e
.4byte .LVL64
.4byte 0x13ca
.byte 0
.uleb128 0x2a
.4byte 0x6ba
.4byte .LFB122
.4byte .LFE122-.LFB122
.uleb128 0x1
.byte 0x9c
.4byte 0xf1a
.uleb128 0x35
.4byte 0x6ca
.4byte .LLST33
.uleb128 0x41
.4byte 0x6d5
.4byte .LLST34
.uleb128 0x41
.4byte 0x6de
.4byte .LLST35
.uleb128 0x43
.4byte .LBB139
.4byte .LBE139-.LBB139
.4byte 0xdfc
.uleb128 0x41
.4byte 0x6ea
.4byte .LLST36
.uleb128 0x3f
.4byte .LVL68
.4byte 0xc68
.4byte 0xdd7
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x3e
.4byte .LVL70
.4byte 0x13d3
.uleb128 0x2d
.4byte .LVL71
.4byte 0xb80
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x1
.byte 0x30
.byte 0
.byte 0
.uleb128 0x43
.4byte .LBB140
.4byte .LBE140-.LBB140
.4byte 0xe97
.uleb128 0x35
.4byte 0x6ca
.4byte .LLST37
.uleb128 0x4a
.4byte .LBB141
.4byte .LBE141-.LBB141
.uleb128 0x44
.4byte 0x6d5
.uleb128 0x44
.4byte 0x6de
.uleb128 0x3d
.4byte 0x581
.4byte .LBB142
.4byte .LBE142-.LBB142
.byte 0x1
.byte 0xd7
.4byte 0xe6f
.uleb128 0x35
.4byte 0x59c
.4byte .LLST38
.uleb128 0x35
.4byte 0x591
.4byte .LLST39
.uleb128 0x2d
.4byte .LVL80
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC2
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL78
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL79
.4byte 0x1393
.4byte 0xe8c
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL81
.4byte 0x139f
.byte 0
.byte 0
.uleb128 0x3d
.4byte 0x581
.4byte .LBB144
.4byte .LBE144-.LBB144
.byte 0x1
.byte 0xe6
.4byte 0xee1
.uleb128 0x35
.4byte 0x59c
.4byte .LLST40
.uleb128 0x35
.4byte 0x591
.4byte .LLST41
.uleb128 0x2d
.4byte .LVL86
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC3
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL66
.4byte 0x1372
.uleb128 0x3e
.4byte .LVL73
.4byte 0x137d
.uleb128 0x3e
.4byte .LVL83
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL85
.4byte 0x1393
.4byte 0xf10
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL87
.4byte 0x139f
.byte 0
.uleb128 0x2a
.4byte 0x6fd
.4byte .LFB121
.4byte .LFE121-.LFB121
.uleb128 0x1
.byte 0x9c
.4byte 0xf47
.uleb128 0x35
.4byte 0x70d
.4byte .LLST42
.uleb128 0x35
.4byte 0x718
.4byte .LLST43
.uleb128 0x2c
.4byte 0x723
.uleb128 0x1
.byte 0x59
.byte 0
.uleb128 0x46
.4byte .LASF117
.byte 0x1
.byte 0xef
.4byte .LFB123
.4byte .LFE123-.LFB123
.uleb128 0x1
.byte 0x9c
.4byte 0x1195
.uleb128 0x39
.string "i"
.byte 0x1
.byte 0xf1
.4byte 0x4f
.4byte .LLST44
.uleb128 0x39
.string "j"
.byte 0x1
.byte 0xf1
.4byte 0x4f
.4byte .LLST45
.uleb128 0x39
.string "sum"
.byte 0x1
.byte 0xf2
.4byte 0x10e
.4byte .LLST46
.uleb128 0x38
.4byte .LASF118
.byte 0x1
.byte 0xf2
.4byte 0x10e
.4byte .LLST47
.uleb128 0x48
.4byte .LASF104
.byte 0x1
.byte 0xf3
.4byte 0x4b0
.uleb128 0x2
.byte 0x87
.sleb128 0
.uleb128 0x48
.4byte .LASF98
.byte 0x1
.byte 0xf4
.4byte 0x1195
.uleb128 0x3
.byte 0x91
.sleb128 -852
.uleb128 0x48
.4byte .LASF119
.byte 0x1
.byte 0xf5
.4byte 0xdd
.uleb128 0x3
.byte 0x91
.sleb128 -980
.uleb128 0x4e
.4byte .LASF96
.4byte 0x11b5
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5725
.uleb128 0x3a
.4byte 0x5b9
.4byte .LBB146
.4byte .Ldebug_ranges0+0x108
.byte 0x1
.byte 0xf7
.4byte 0x101b
.uleb128 0x35
.4byte 0x5df
.4byte .LLST48
.uleb128 0x35
.4byte 0x5d4
.4byte .LLST49
.uleb128 0x35
.4byte 0x5c9
.4byte .LLST50
.uleb128 0x2d
.4byte .LVL94
.4byte 0x13ab
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x87
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x2
.byte 0x88
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0x40
.byte 0x3d
.byte 0x24
.byte 0
.byte 0
.uleb128 0x43
.4byte .LBB150
.4byte .LBE150-.LBB150
.4byte 0x1038
.uleb128 0x38
.4byte .LASF120
.byte 0x1
.byte 0xfc
.4byte 0xa2
.4byte .LLST51
.byte 0
.uleb128 0x4b
.4byte .Ldebug_ranges0+0x120
.4byte 0x1090
.uleb128 0x38
.4byte .LASF105
.byte 0x1
.byte 0xff
.4byte 0x491
.4byte .LLST52
.uleb128 0x3f
.4byte .LVL99
.4byte 0x13de
.4byte 0x1063
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x1
.byte 0x38
.byte 0
.uleb128 0x2d
.4byte .LVL126
.4byte 0x135c
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC5
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x5
.byte 0x3
.4byte .LC0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0xa
.2byte 0x104
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x5
.byte 0x3
.4byte .LANCHOR0+44
.byte 0
.byte 0
.uleb128 0x43
.4byte .LBB153
.4byte .LBE153-.LBB153
.4byte 0x1103
.uleb128 0x4f
.4byte .LASF105
.byte 0x1
.2byte 0x113
.4byte 0x491
.uleb128 0x43
.4byte .LBB154
.4byte .LBE154-.LBB154
.4byte 0x10c7
.uleb128 0x50
.4byte .LASF120
.byte 0x1
.2byte 0x115
.4byte 0xa2
.4byte .LLST53
.byte 0
.uleb128 0x51
.4byte 0x6fd
.4byte .LBB155
.4byte .Ldebug_ranges0+0x140
.byte 0x1
.2byte 0x118
.4byte 0x10f9
.uleb128 0x3b
.4byte 0x718
.uleb128 0x35
.4byte 0x70d
.4byte .LLST54
.uleb128 0x32
.4byte .Ldebug_ranges0+0x140
.uleb128 0x41
.4byte 0x723
.4byte .LLST55
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL116
.4byte 0x13ea
.byte 0
.uleb128 0x3f
.4byte .LVL95
.4byte 0x13f6
.4byte 0x1123
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x88
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x2
.byte 0x8
.byte 0x80
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8f
.sleb128 28
.byte 0
.uleb128 0x3f
.4byte .LVL105
.4byte 0x13b4
.4byte 0x1148
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 -4
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8c
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x87
.sleb128 0
.byte 0
.uleb128 0x3f
.4byte .LVL106
.4byte 0x13bf
.4byte 0x115b
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x3f
.4byte .LVL127
.4byte 0x135c
.4byte 0x118b
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC6
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x5
.byte 0x3
.4byte .LC0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0xa
.2byte 0x123
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x5
.byte 0x3
.4byte .LANCHOR0+44
.byte 0
.uleb128 0x3e
.4byte .LVL128
.4byte 0x13ca
.byte 0
.uleb128 0x9
.4byte 0xf8
.4byte 0x11a5
.uleb128 0xa
.4byte 0x8c
.byte 0xc7
.byte 0
.uleb128 0x9
.4byte 0xee
.4byte 0x11b5
.uleb128 0xa
.4byte 0x8c
.byte 0x10
.byte 0
.uleb128 0xb
.4byte 0x11a5
.uleb128 0x52
.4byte .LASF121
.byte 0x1
.2byte 0x126
.4byte 0x4f
.4byte .LFB124
.4byte .LFE124-.LFB124
.uleb128 0x1
.byte 0x9c
.4byte 0x1330
.uleb128 0x27
.4byte .LASF122
.byte 0x1
.2byte 0x138
.uleb128 0x53
.4byte 0x72f
.4byte .LBB162
.4byte .LBE162-.LBB162
.byte 0x1
.2byte 0x12d
.4byte 0x120d
.uleb128 0x35
.4byte 0x73f
.4byte .LLST56
.uleb128 0x2d
.4byte .LVL131
.4byte 0x140f
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC7
.byte 0
.byte 0
.uleb128 0x53
.4byte 0x72f
.4byte .LBB164
.4byte .LBE164-.LBB164
.byte 0x1
.2byte 0x12f
.4byte 0x123e
.uleb128 0x35
.4byte 0x73f
.4byte .LLST57
.uleb128 0x2d
.4byte .LVL133
.4byte 0x140f
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC8
.byte 0
.byte 0
.uleb128 0x53
.4byte 0x581
.4byte .LBB166
.4byte .LBE166-.LBB166
.byte 0x1
.2byte 0x129
.4byte 0x1289
.uleb128 0x35
.4byte 0x59c
.4byte .LLST58
.uleb128 0x35
.4byte 0x591
.4byte .LLST59
.uleb128 0x2d
.4byte .LVL138
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC2
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x53
.4byte 0x581
.4byte .LBB168
.4byte .LBE168-.LBB168
.byte 0x1
.2byte 0x132
.4byte 0x12d5
.uleb128 0x2b
.4byte 0x59c
.uleb128 0x6
.byte 0x3
.4byte .LC3
.byte 0x9f
.uleb128 0x2b
.4byte 0x591
.uleb128 0x1
.byte 0x6e
.uleb128 0x2d
.4byte .LVL142
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC3
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL129
.4byte 0x1372
.uleb128 0x3e
.4byte .LVL132
.4byte 0x5eb
.uleb128 0x3e
.4byte .LVL134
.4byte 0xf47
.uleb128 0x3e
.4byte .LVL135
.4byte 0x137d
.uleb128 0x3e
.4byte .LVL136
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL137
.4byte 0x1393
.4byte 0x1316
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL140
.4byte 0x1388
.uleb128 0x2d
.4byte .LVL141
.4byte 0x1393
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x54
.4byte .LASF123
.byte 0xb
.byte 0xa8
.4byte 0x2ea
.uleb128 0x54
.4byte .LASF124
.byte 0xb
.byte 0xa9
.4byte 0x2ea
.uleb128 0x54
.4byte .LASF125
.byte 0xb
.byte 0xaa
.4byte 0x2ea
.uleb128 0x54
.4byte .LASF126
.byte 0x2
.byte 0x33
.4byte 0x38b
.uleb128 0x55
.4byte .LASF127
.4byte .LASF127
.byte 0xf
.byte 0x45
.uleb128 0x55
.4byte .LASF128
.4byte .LASF128
.byte 0x4
.byte 0x55
.uleb128 0x55
.4byte .LASF129
.4byte .LASF129
.byte 0x2
.byte 0x6a
.uleb128 0x55
.4byte .LASF130
.4byte .LASF130
.byte 0x2
.byte 0x6f
.uleb128 0x55
.4byte .LASF131
.4byte .LASF131
.byte 0x10
.byte 0x32
.uleb128 0x56
.4byte .LASF132
.4byte .LASF132
.byte 0x11
.2byte 0x198
.uleb128 0x56
.4byte .LASF85
.4byte .LASF85
.byte 0x12
.2byte 0x203
.uleb128 0x57
.4byte .LASF90
.4byte .LASF90
.uleb128 0x55
.4byte .LASF133
.4byte .LASF133
.byte 0x13
.byte 0xe9
.uleb128 0x55
.4byte .LASF134
.4byte .LASF134
.byte 0x13
.byte 0xfa
.uleb128 0x57
.4byte .LASF135
.4byte .LASF135
.uleb128 0x55
.4byte .LASF136
.4byte .LASF136
.byte 0x14
.byte 0x41
.uleb128 0x56
.4byte .LASF137
.4byte .LASF137
.byte 0x12
.2byte 0x1d2
.uleb128 0x56
.4byte .LASF138
.4byte .LASF138
.byte 0x12
.2byte 0x1e3
.uleb128 0x55
.4byte .LASF139
.4byte .LASF139
.byte 0x14
.byte 0x7a
.uleb128 0x58
.uleb128 0xc
.byte 0x9e
.uleb128 0xa
.byte 0x73
.byte 0x70
.byte 0x69
.byte 0x6e
.byte 0x6c
.byte 0x6f
.byte 0x63
.byte 0x6b
.byte 0xa
.byte 0
.uleb128 0x59
.4byte .LASF145
.4byte .LASF146
.byte 0x15
.byte 0
.4byte .LASF145
.uleb128 0x58
.uleb128 0xf
.byte 0x9e
.uleb128 0xd
.byte 0x70
.byte 0x65
.byte 0x72
.byte 0x63
.byte 0x70
.byte 0x75
.byte 0x5f
.byte 0x6c
.byte 0x69
.byte 0x73
.byte 0x74
.byte 0xa
.byte 0
.byte 0
.section .debug_abbrev,"",@progbits
.Ldebug_abbrev0:
.uleb128 0x1
.uleb128 0x11
.byte 0x1
.uleb128 0x25
.uleb128 0xe
.uleb128 0x13
.uleb128 0xb
.uleb128 0x3
.uleb128 0xe
.uleb128 0x1b
.uleb128 0xe
.uleb128 0x55
.uleb128 0x17
.uleb128 0x11
.uleb128 0x1
.uleb128 0x10
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x2
.uleb128 0x24
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3e
.uleb128 0xb
.uleb128 0x3
.uleb128 0xe
.byte 0
.byte 0
.uleb128 0x3
.uleb128 0x24
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3e
.uleb128 0xb
.uleb128 0x3
.uleb128 0x8
.byte 0
.byte 0
.uleb128 0x4
.uleb128 0x16
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x5
.uleb128 0xf
.byte 0
.uleb128 0xb
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x6
.uleb128 0xf
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x7
.uleb128 0x13
.byte 0x1
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x8
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x9
.uleb128 0x1
.byte 0x1
.uleb128 0x49
.uleb128 0x13
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0xa
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2f
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0xb
.uleb128 0x26
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0xc
.uleb128 0x13
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0xd
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0xe
.uleb128 0x16
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0xf
.uleb128 0x17
.byte 0x1
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x10
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x11
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x12
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x13
.uleb128 0x13
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0x6
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x14
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2f
.uleb128 0x5
.byte 0
.byte 0
.uleb128 0x15
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0x6
.byte 0
.byte 0
.uleb128 0x16
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0x6
.byte 0
.byte 0
.uleb128 0x17
.uleb128 0x2e
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x18
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x19
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x1a
.uleb128 0xa
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x1b
.uleb128 0x2e
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x1c
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x1d
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x49
.uleb128 0x13
.uleb128 0x34
.uleb128 0x19
.uleb128 0x1c
.uleb128 0xe
.byte 0
.byte 0
.uleb128 0x1e
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x34
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x1f
.uleb128 0x18
.byte 0
.byte 0
.byte 0
.uleb128 0x20
.uleb128 0x37
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x21
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x22
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x23
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x24
.uleb128 0x2e
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x25
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x26
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x27
.uleb128 0xa
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.byte 0
.byte 0
.uleb128 0x28
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x29
.uleb128 0xb
.byte 0x1
.byte 0
.byte 0
.uleb128 0x2a
.uleb128 0x2e
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x2b
.uleb128 0x5
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x2c
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x2d
.uleb128 0x4109
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x2e
.uleb128 0x410a
.byte 0
.uleb128 0x2
.uleb128 0x18
.uleb128 0x2111
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x2f
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x30
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x31
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x32
.uleb128 0xb
.byte 0x1
.uleb128 0x55
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x33
.uleb128 0x1d
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x34
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x35
.uleb128 0x5
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x36
.uleb128 0xa
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.byte 0
.byte 0
.uleb128 0x37
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x38
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x39
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x3a
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3b
.uleb128 0x5
.byte 0
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3c
.uleb128 0x410a
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2111
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x3d
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3e
.uleb128 0x4109
.byte 0
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3f
.uleb128 0x4109
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x40
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x1c
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x41
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x42
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x43
.uleb128 0xb
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x44
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x45
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x46
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x47
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x48
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x49
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x4a
.uleb128 0xb
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.byte 0
.byte 0
.uleb128 0x4b
.uleb128 0xb
.byte 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x4c
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x1c
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x4d
.uleb128 0x1d
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x4e
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x49
.uleb128 0x13
.uleb128 0x34
.uleb128 0x19
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x4f
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x50
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x51
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0x5
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x52
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x53
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0x5
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x54
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.byte 0
.byte 0
.uleb128 0x55
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x56
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.byte 0
.byte 0
.uleb128 0x57
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.byte 0
.byte 0
.uleb128 0x58
.uleb128 0x36
.byte 0
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x59
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x6e
.uleb128 0xe
.byte 0
.byte 0
.byte 0
.section .debug_loc,"",@progbits
.Ldebug_loc0:
.LLST0:
.4byte .LVL2
.4byte .LVL5
.2byte 0x1
.byte 0x53
.4byte .LVL5
.4byte .LFE115
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte 0
.4byte 0
.LLST1:
.4byte .LVL3
.4byte .LVL4
.2byte 0x1
.byte 0x5a
.4byte 0
.4byte 0
.LLST2:
.4byte .LVL3
.4byte .LVL4
.2byte 0x2
.byte 0x31
.byte 0x9f
.4byte 0
.4byte 0
.LLST3:
.4byte .LVL3
.4byte .LVL4
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte 0
.4byte 0
.LLST4:
.4byte .LVL3
.4byte .LVL4
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte 0
.4byte 0
.LLST5:
.4byte .LVL6
.4byte .LVL8-1
.2byte 0x1
.byte 0x53
.4byte .LVL8-1
.4byte .LVL18
.2byte 0x1
.byte 0x6f
.4byte .LVL18
.4byte .LVL19
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL19
.4byte .LVL22
.2byte 0x1
.byte 0x6f
.4byte .LVL22
.4byte .LVL25
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL25
.4byte .LVL27
.2byte 0x1
.byte 0x6f
.4byte .LVL27
.4byte .LFE117
.2byte 0x5
.byte 0x8d
.sleb128 -262144
.byte 0x9f
.4byte 0
.4byte 0
.LLST6:
.4byte .LVL7
.4byte .LVL8-1
.2byte 0x1
.byte 0x53
.4byte .LVL8-1
.4byte .LVL18
.2byte 0x1
.byte 0x6f
.4byte .LVL18
.4byte .LVL19
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL19
.4byte .LVL22
.2byte 0x1
.byte 0x6f
.4byte .LVL22
.4byte .LVL25
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL25
.4byte .LVL27
.2byte 0x1
.byte 0x6f
.4byte .LVL27
.4byte .LFE117
.2byte 0x5
.byte 0x8d
.sleb128 -262144
.byte 0x9f
.4byte 0
.4byte 0
.LLST7:
.4byte .LVL9
.4byte .LVL10
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte .LVL10
.4byte .LVL16
.2byte 0x1
.byte 0x6e
.4byte .LVL19
.4byte .LVL20
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST8:
.4byte .LVL11
.4byte .LVL12
.2byte 0x1
.byte 0x53
.4byte 0
.4byte 0
.LLST9:
.4byte .LVL13
.4byte .LVL14
.2byte 0x1
.byte 0x6f
.4byte .LVL19
.4byte .LVL20
.2byte 0x1
.byte 0x6f
.4byte 0
.4byte 0
.LLST10:
.4byte .LVL23
.4byte .LVL24
.2byte 0x6
.byte 0x3
.4byte .LC2
.byte 0x9f
.4byte 0
.4byte 0
.LLST11:
.4byte .LVL23
.4byte .LVL24
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST12:
.4byte .LVL28
.4byte .LVL29
.2byte 0x6
.byte 0x3
.4byte .LC3
.byte 0x9f
.4byte 0
.4byte 0
.LLST13:
.4byte .LVL28
.4byte .LVL29
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST14:
.4byte .LVL31
.4byte .LVL33-1
.2byte 0x1
.byte 0x53
.4byte .LVL33-1
.4byte .LFE116
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte 0
.4byte 0
.LLST15:
.4byte .LVL31
.4byte .LVL32
.2byte 0x1
.byte 0x54
.4byte .LVL32
.4byte .LFE116
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.4byte 0
.4byte 0
.LLST16:
.4byte .LVL36
.4byte .LVL37
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte 0
.4byte 0
.LLST17:
.4byte .LVL41
.4byte .LVL42
.2byte 0x6
.byte 0x57
.byte 0x93
.uleb128 0x4
.byte 0x5a
.byte 0x93
.uleb128 0x4
.4byte .LVL43
.4byte .LVL44
.2byte 0x6
.byte 0x57
.byte 0x93
.uleb128 0x4
.byte 0x5a
.byte 0x93
.uleb128 0x4
.4byte .LVL47
.4byte .LVL48-1
.2byte 0x6
.byte 0x57
.byte 0x93
.uleb128 0x4
.byte 0x5a
.byte 0x93
.uleb128 0x4
.4byte 0
.4byte 0
.LLST18:
.4byte .LVL36
.4byte .LVL39
.2byte 0x2
.byte 0x8c
.sleb128 0
.4byte .LVL39
.4byte .LVL45
.2byte 0x3
.byte 0x8c
.sleb128 -796
.4byte .LVL45
.4byte .LVL46
.2byte 0x2
.byte 0x71
.sleb128 8
.4byte .LVL47
.4byte .LFE118
.2byte 0x3
.byte 0x8c
.sleb128 -796
.4byte 0
.4byte 0
.LLST19:
.4byte .LVL53
.4byte .LVL54
.2byte 0x1
.byte 0x5a
.4byte 0
.4byte 0
.LLST20:
.4byte .LVL53
.4byte .LVL54
.2byte 0x1
.byte 0x54
.4byte 0
.4byte 0
.LLST21:
.4byte .LVL53
.4byte .LVL54
.2byte 0x1
.byte 0x57
.4byte 0
.4byte 0
.LLST22:
.4byte .LVL53
.4byte .LVL54
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte 0
.4byte 0
.LLST23:
.4byte .LVL55
.4byte .LVL58
.2byte 0x1
.byte 0x53
.4byte .LVL58
.4byte .LVL59
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x1
.byte 0x53
.4byte .LVL60
.4byte .LFE120
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte 0
.4byte 0
.LLST24:
.4byte .LVL55
.4byte .LVL64-1
.2byte 0x1
.byte 0x54
.4byte .LVL64-1
.4byte .LFE120
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.4byte 0
.4byte 0
.LLST25:
.4byte .LVL56
.4byte .LVL58
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte .LVL58
.4byte .LVL59
.2byte 0x9
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x22
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte .LVL60
.4byte .LVL61
.2byte 0x9
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x22
.byte 0x9f
.4byte 0
.4byte 0
.LLST26:
.4byte .LVL56
.4byte .LVL62
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x48
.byte 0x1c
.byte 0x9f
.4byte .LVL62
.4byte .LVL63
.2byte 0x4
.byte 0x71
.sleb128 -72
.byte 0x9f
.4byte .LVL63
.4byte .LVL64-1
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x48
.byte 0x1c
.byte 0x9f
.4byte .LVL64-1
.4byte .LFE120
.2byte 0x4
.byte 0x91
.sleb128 -72
.byte 0x9f
.4byte 0
.4byte 0
.LLST27:
.4byte .LVL56
.4byte .LVL61
.2byte 0x1
.byte 0x5a
.4byte 0
.4byte 0
.LLST28:
.4byte .LVL56
.4byte .LVL57
.2byte 0x1
.byte 0x5a
.4byte .LVL59
.4byte .LVL60
.2byte 0x1
.byte 0x5a
.4byte 0
.4byte 0
.LLST29:
.4byte .LVL56
.4byte .LVL57
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x48
.byte 0x1c
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x48
.byte 0x1c
.byte 0x9f
.4byte 0
.4byte 0
.LLST30:
.4byte .LVL56
.4byte .LVL57
.2byte 0x2
.byte 0x34
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x2
.byte 0x34
.byte 0x9f
.4byte 0
.4byte 0
.LLST31:
.4byte .LVL56
.4byte .LVL57
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte 0
.4byte 0
.LLST32:
.4byte .LVL56
.4byte .LVL57
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte 0
.4byte 0
.LLST33:
.4byte .LVL65
.4byte .LVL66-1
.2byte 0x1
.byte 0x53
.4byte .LVL66-1
.4byte .LVL74
.2byte 0x1
.byte 0x6d
.4byte .LVL74
.4byte .LVL77
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL77
.4byte .LFE122
.2byte 0x1
.byte 0x6d
.4byte 0
.4byte 0
.LLST34:
.4byte .LVL67
.4byte .LVL71
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.4byte .LVL71
.4byte .LVL72
.2byte 0x9
.byte 0xc
.4byte 0x186a1
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.4byte .LVL72
.4byte .LVL76
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.4byte .LVL81
.4byte .LVL84
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.4byte 0
.4byte 0
.LLST35:
.4byte .LVL65
.4byte .LVL66-1
.2byte 0x1
.byte 0x53
.4byte .LVL66-1
.4byte .LVL74
.2byte 0x1
.byte 0x6d
.4byte .LVL74
.4byte .LVL77
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL77
.4byte .LFE122
.2byte 0x1
.byte 0x6d
.4byte 0
.4byte 0
.LLST36:
.4byte .LVL69
.4byte .LVL70-1
.2byte 0x1
.byte 0x53
.4byte .LVL70-1
.4byte .LVL75
.2byte 0x1
.byte 0x6e
.4byte .LVL81
.4byte .LVL82
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST37:
.4byte .LVL77
.4byte .LVL81
.2byte 0x1
.byte 0x6d
.4byte 0
.4byte 0
.LLST38:
.4byte .LVL79
.4byte .LVL80
.2byte 0x6
.byte 0x3
.4byte .LC2
.byte 0x9f
.4byte 0
.4byte 0
.LLST39:
.4byte .LVL79
.4byte .LVL80
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST40:
.4byte .LVL85
.4byte .LVL86
.2byte 0x6
.byte 0x3
.4byte .LC3
.byte 0x9f
.4byte 0
.4byte 0
.LLST41:
.4byte .LVL85
.4byte .LVL86
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST42:
.4byte .LVL88
.4byte .LVL91
.2byte 0x1
.byte 0x53
.4byte .LVL91
.4byte .LFE121
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte 0
.4byte 0
.LLST43:
.4byte .LVL88
.4byte .LVL89
.2byte 0x1
.byte 0x54
.4byte .LVL89
.4byte .LFE121
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.4byte 0
.4byte 0
.LLST44:
.4byte .LVL95
.4byte .LVL96
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte .LVL96
.4byte .LVL102
.2byte 0x1
.byte 0x68
.4byte .LVL102
.4byte .LVL103
.2byte 0x3
.byte 0x88
.sleb128 1
.byte 0x9f
.4byte .LVL103
.4byte .LVL104
.2byte 0x1
.byte 0x68
.4byte .LVL107
.4byte .LVL108
.2byte 0x3
.byte 0x8b
.sleb128 1
.byte 0x9f
.4byte .LVL108
.4byte .LVL118
.2byte 0x1
.byte 0x6b
.4byte .LVL118
.4byte .LVL119
.2byte 0x3
.byte 0x8b
.sleb128 1
.byte 0x9f
.4byte .LVL119
.4byte .LVL123
.2byte 0x1
.byte 0x6b
.4byte .LVL124
.4byte .LVL126
.2byte 0x1
.byte 0x68
.4byte .LVL126
.4byte .LFE123
.2byte 0x1
.byte 0x6b
.4byte 0
.4byte 0
.LLST45:
.4byte .LVL97
.4byte .LVL100
.2byte 0x1
.byte 0x6e
.4byte .LVL100
.4byte .LVL101
.2byte 0x3
.byte 0x8e
.sleb128 1
.byte 0x9f
.4byte .LVL101
.4byte .LVL102
.2byte 0x6
.byte 0x73
.sleb128 0
.byte 0x6
.byte 0x23
.uleb128 0x1
.byte 0x9f
.4byte .LVL124
.4byte .LVL126
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST46:
.4byte .LVL92
.4byte .LVL107
.2byte 0xa
.byte 0x9e
.uleb128 0x8
.4byte 0
.4byte 0
.4byte .LVL107
.4byte .LVL110
.2byte 0x6
.byte 0x6c
.byte 0x93
.uleb128 0x4
.byte 0x6e
.byte 0x93
.uleb128 0x4
.4byte .LVL112
.4byte .LVL114
.2byte 0x6
.byte 0x6c
.byte 0x93
.uleb128 0x4
.byte 0x6e
.byte 0x93
.uleb128 0x4
.4byte .LVL115
.4byte .LVL120
.2byte 0x6
.byte 0x6c
.byte 0x93
.uleb128 0x4
.byte 0x6e
.byte 0x93
.uleb128 0x4
.4byte .LVL124
.4byte .LVL126
.2byte 0xa
.byte 0x9e
.uleb128 0x8
.4byte 0
.4byte 0
.4byte 0
.4byte 0
.LLST47:
.4byte .LVL92
.4byte .LVL96
.2byte 0xa
.byte 0x9e
.uleb128 0x8
.4byte 0
.4byte 0
.4byte .LVL96
.4byte .LVL98
.2byte 0x6
.byte 0x6a
.byte 0x93
.uleb128 0x4
.byte 0x6d
.byte 0x93
.uleb128 0x4
.4byte .LVL102
.4byte .LVL122
.2byte 0x6
.byte 0x6a
.byte 0x93
.uleb128 0x4
.byte 0x6d
.byte 0x93
.uleb128 0x4
.4byte .LVL126
.4byte .LFE123
.2byte 0x6
.byte 0x6a
.byte 0x93
.uleb128 0x4
.byte 0x6d
.byte 0x93
.uleb128 0x4
.4byte 0
.4byte 0
.LLST48:
.4byte .LVL92
.4byte .LVL94
.2byte 0x4
.byte 0x40
.byte 0x3d
.byte 0x24
.byte 0x9f
.4byte 0
.4byte 0
.LLST49:
.4byte .LVL92
.4byte .LVL94
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte 0
.4byte 0
.LLST50:
.4byte .LVL92
.4byte .LVL93
.2byte 0x7
.byte 0x87
.sleb128 0
.byte 0x37
.byte 0x25
.byte 0x37
.byte 0x24
.byte 0x9f
.4byte .LVL93
.4byte .LVL94
.2byte 0x8
.byte 0x71
.sleb128 135
.byte 0x37
.byte 0x25
.byte 0x37
.byte 0x24
.byte 0x9f
.4byte 0
.4byte 0
.LLST51:
.4byte .LVL96
.4byte .LVL103
.2byte 0x1
.byte 0x68
.4byte .LVL103
.4byte .LVL121
.2byte 0x3
.byte 0x88
.sleb128 -1
.byte 0x9f
.4byte .LVL124
.4byte .LVL126
.2byte 0x1
.byte 0x68
.4byte .LVL126
.4byte .LFE123
.2byte 0x3
.byte 0x88
.sleb128 -1
.byte 0x9f
.4byte 0
.4byte 0
.LLST52:
.4byte .LVL99
.4byte .LVL102
.2byte 0x1
.byte 0x53
.4byte .LVL124
.4byte .LVL125
.2byte 0x1
.byte 0x53
.4byte 0
.4byte 0
.LLST53:
.4byte .LVL107
.4byte .LVL108
.2byte 0x1
.byte 0x6b
.4byte .LVL108
.4byte .LVL109
.2byte 0x3
.byte 0x8b
.sleb128 -1
.byte 0x9f
.4byte .LVL109
.4byte .LVL119
.2byte 0x1
.byte 0x6b
.4byte .LVL119
.4byte .LVL120
.2byte 0x3
.byte 0x8b
.sleb128 -1
.byte 0x9f
.4byte 0
.4byte 0
.LLST54:
.4byte .LVL110
.4byte .LVL113
.2byte 0x8
.byte 0x71
.sleb128 135
.byte 0x37
.byte 0x25
.byte 0x37
.byte 0x24
.byte 0x9f
.4byte .LVL116
.4byte .LVL120
.2byte 0x8
.byte 0x71
.sleb128 135
.byte 0x37
.byte 0x25
.byte 0x37
.byte 0x24
.byte 0x9f
.4byte 0
.4byte 0
.LLST55:
.4byte .LVL111
.4byte .LVL113
.2byte 0x1
.byte 0x53
.4byte .LVL117
.4byte .LVL120
.2byte 0x1
.byte 0x53
.4byte 0
.4byte 0
.LLST56:
.4byte .LVL130
.4byte .LVL131
.2byte 0x6
.byte 0xf2
.4byte .Ldebug_info0+5121
.sleb128 0
.4byte 0
.4byte 0
.LLST57:
.4byte .LVL132
.4byte .LVL133
.2byte 0x6
.byte 0xf2
.4byte .Ldebug_info0+5150
.sleb128 0
.4byte 0
.4byte 0
.LLST58:
.4byte .LVL137
.4byte .LVL139
.2byte 0x6
.byte 0x3
.4byte .LC2
.byte 0x9f
.4byte 0
.4byte 0
.LLST59:
.4byte .LVL137
.4byte .LVL139
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.section .debug_aranges,"",@progbits
.4byte 0x24
.2byte 0x2
.4byte .Ldebug_info0
.byte 0x4
.byte 0
.2byte 0
.2byte 0
.4byte .Ltext0
.4byte .Letext0-.Ltext0
.4byte .LFB124
.4byte .LFE124-.LFB124
.4byte 0
.4byte 0
.section .debug_ranges,"",@progbits
.Ldebug_ranges0:
.4byte .LBB72
.4byte .LBE72
.4byte .LBB85
.4byte .LBE85
.4byte 0
.4byte 0
.4byte .LBB73
.4byte .LBE73
.4byte .LBB81
.4byte .LBE81
.4byte .LBB83
.4byte .LBE83
.4byte 0
.4byte 0
.4byte .LBB77
.4byte .LBE77
.4byte .LBB82
.4byte .LBE82
.4byte .LBB84
.4byte .LBE84
.4byte 0
.4byte 0
.4byte .LBB86
.4byte .LBE86
.4byte .LBB90
.4byte .LBE90
.4byte .LBB91
.4byte .LBE91
.4byte 0
.4byte 0
.4byte .LBB102
.4byte .LBE102
.4byte .LBB106
.4byte .LBE106
.4byte .LBB107
.4byte .LBE107
.4byte 0
.4byte 0
.4byte .LBB110
.4byte .LBE110
.4byte .LBB117
.4byte .LBE117
.4byte 0
.4byte 0
.4byte .LBB111
.4byte .LBE111
.4byte .LBB114
.4byte .LBE114
.4byte 0
.4byte 0
.4byte .LBB118
.4byte .LBE118
.4byte .LBB127
.4byte .LBE127
.4byte .LBB128
.4byte .LBE128
.4byte 0
.4byte 0
.4byte .LBB119
.4byte .LBE119
.4byte .LBB123
.4byte .LBE123
.4byte .LBB126
.4byte .LBE126
.4byte 0
.4byte 0
.4byte .LBB146
.4byte .LBE146
.4byte .LBB149
.4byte .LBE149
.4byte 0
.4byte 0
.4byte .LBB151
.4byte .LBE151
.4byte .LBB152
.4byte .LBE152
.4byte .LBB161
.4byte .LBE161
.4byte 0
.4byte 0
.4byte .LBB155
.4byte .LBE155
.4byte .LBB159
.4byte .LBE159
.4byte .LBB160
.4byte .LBE160
.4byte 0
.4byte 0
.4byte .Ltext0
.4byte .Letext0
.4byte .LFB124
.4byte .LFE124
.4byte 0
.4byte 0
.section .debug_line,"",@progbits
.Ldebug_line0:
.section .debug_str,"MS",@progbits,1
.LASF84:
.string "newv"
.LASF102:
.string "voffp"
.LASF17:
.string "pthread_t"
.LASF42:
.string "_shortbuf"
.LASF143:
.string "_IO_lock_t"
.LASF125:
.string "stderr"
.LASF146:
.string "__builtin_puts"
.LASF31:
.string "_IO_buf_end"
.LASF69:
.string "flags"
.LASF83:
.string "expect"
.LASF126:
.string "__rseq_abi"
.LASF29:
.string "_IO_write_end"
.LASF2:
.string "unsigned int"
.LASF79:
.string "next"
.LASF23:
.string "_flags"
.LASF81:
.string "head"
.LASF134:
.string "pthread_join"
.LASF111:
.string "_cpu"
.LASF132:
.string "strerror"
.LASF71:
.string "percpu_lock"
.LASF35:
.string "_markers"
.LASF133:
.string "pthread_create"
.LASF122:
.string "error"
.LASF94:
.string "rseq_percpu_unlock"
.LASF131:
.string "__errno_location"
.LASF104:
.string "list"
.LASF99:
.string "rseq_cmpeqv_storev"
.LASF114:
.string "this_cpu_list_pop"
.LASF18:
.string "uint32_t"
.LASF124:
.string "stdout"
.LASF34:
.string "_IO_save_end"
.LASF137:
.string "malloc"
.LASF93:
.string "__len"
.LASF73:
.string "count"
.LASF15:
.string "__cpu_mask"
.LASF109:
.string "rseq_this_cpu_lock"
.LASF7:
.string "long long unsigned int"
.LASF33:
.string "_IO_backup_base"
.LASF44:
.string "_offset"
.LASF91:
.string "__dest"
.LASF89:
.string "fprintf"
.LASF37:
.string "_fileno"
.LASF116:
.string "this_cpu_list_push"
.LASF85:
.string "abort"
.LASF145:
.string "puts"
.LASF144:
.string "rseq_cpu_start"
.LASF14:
.string "size_t"
.LASF115:
.string "offset"
.LASF130:
.string "rseq_unregister_current_thread"
.LASF26:
.string "_IO_read_base"
.LASF123:
.string "stdin"
.LASF54:
.string "_next"
.LASF138:
.string "free"
.LASF56:
.string "_pos"
.LASF103:
.string "load"
.LASF88:
.string "__fmt"
.LASF120:
.string "__cpu"
.LASF112:
.string "targetptr"
.LASF16:
.string "cpu_set_t"
.LASF87:
.string "__stream"
.LASF117:
.string "test_percpu_list"
.LASF13:
.string "char"
.LASF128:
.string "__fprintf_chk"
.LASF50:
.string "_mode"
.LASF53:
.string "_IO_marker"
.LASF95:
.string "test_percpu_spinlock"
.LASF24:
.string "_IO_read_ptr"
.LASF78:
.string "data"
.LASF63:
.string "ptr32"
.LASF59:
.string "__u32"
.LASF118:
.string "expected_sum"
.LASF86:
.string "cmpfail"
.LASF27:
.string "_IO_write_base"
.LASF6:
.string "long long int"
.LASF108:
.string "printf"
.LASF75:
.string "lock"
.LASF32:
.string "_IO_save_base"
.LASF62:
.string "padding"
.LASF90:
.string "memset"
.LASF8:
.string "__quad_t"
.LASF67:
.string "cpu_id"
.LASF45:
.string "__pad1"
.LASF46:
.string "__pad2"
.LASF47:
.string "__pad3"
.LASF48:
.string "__pad4"
.LASF49:
.string "__pad5"
.LASF65:
.string "rseq"
.LASF129:
.string "rseq_register_current_thread"
.LASF110:
.string "test_percpu_spinlock_thread"
.LASF41:
.string "_vtable_offset"
.LASF66:
.string "cpu_id_start"
.LASF72:
.string "test_data_entry"
.LASF58:
.string "long double"
.LASF20:
.string "intptr_t"
.LASF140:
.string "GNU C11 5.4.0 20160609 -Asystem=linux -Asystem=unix -Asystem=posix -msecure-plt -g -O2 -fstack-protector-strong"
.LASF97:
.string "num_threads"
.LASF64:
.string "ptr64"
.LASF60:
.string "__u64"
.LASF92:
.string "__ch"
.LASF25:
.string "_IO_read_end"
.LASF101:
.string "expectnot"
.LASF5:
.string "short int"
.LASF10:
.string "long int"
.LASF135:
.string "__stack_chk_fail"
.LASF70:
.string "percpu_lock_entry"
.LASF105:
.string "node"
.LASF19:
.string "uint64_t"
.LASF76:
.string "reps"
.LASF113:
.string "newval"
.LASF77:
.string "percpu_list_node"
.LASF98:
.string "test_threads"
.LASF43:
.string "_lock"
.LASF119:
.string "allowed_cpus"
.LASF12:
.string "sizetype"
.LASF3:
.string "long unsigned int"
.LASF22:
.string "__bits"
.LASF39:
.string "_old_offset"
.LASF82:
.string "percpu_list"
.LASF52:
.string "_IO_FILE"
.LASF100:
.string "rseq_cmpnev_storeoffp_load"
.LASF127:
.string "__assert_fail"
.LASF141:
.string "basic_percpu_ops_test.c"
.LASF0:
.string "unsigned char"
.LASF55:
.string "_sbuf"
.LASF28:
.string "_IO_write_ptr"
.LASF80:
.string "percpu_list_entry"
.LASF142:
.string "/home/compudj/git/librseq/tests"
.LASF136:
.string "sched_yield"
.LASF74:
.string "spinlock_test_data"
.LASF139:
.string "sched_getaffinity"
.LASF9:
.string "__off_t"
.LASF4:
.string "signed char"
.LASF57:
.string "off_t"
.LASF1:
.string "short unsigned int"
.LASF121:
.string "main"
.LASF96:
.string "__PRETTY_FUNCTION__"
.LASF61:
.string "double"
.LASF106:
.string "test_percpu_list_thread"
.LASF36:
.string "_chain"
.LASF107:
.string "__percpu_list_pop"
.LASF21:
.string "FILE"
.LASF38:
.string "_flags2"
.LASF68:
.string "rseq_cs"
.LASF40:
.string "_cur_column"
.LASF11:
.string "__off64_t"
.LASF51:
.string "_unused2"
.LASF30:
.string "_IO_buf_base"
.ident "GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609"
.section .note.GNU-stack,"",@progbits
^ permalink raw reply
* Re: [PATCH] selftests/powerpc: Purge extra count_pmc() calls of ebb selftests
From: Desnes Augusto Nunes do Rosario @ 2020-07-08 12:52 UTC (permalink / raw)
To: Sachin Sant; +Cc: shuah, linuxppc-dev
In-Reply-To: <F0DC61BE-076E-4977-812F-532C6F76CFBB@linux.vnet.ibm.com>
On 7/8/20 7:38 AM, Sachin Sant wrote:
>
>> On 26-Jun-2020, at 10:17 PM, Desnes A. Nunes do Rosario <desnesn@linux.ibm.com> wrote:
>>
>> An extra count on ebb_state.stats.pmc_count[PMC_INDEX(pmc)] is being per-
>> formed when count_pmc() is used to reset PMCs on a few selftests. This
>> extra pmc_count can occasionally invalidate results, such as the ones from
>> cycles_test shown hereafter. The ebb_check_count() failed with an above
>> the upper limit error due to the extra value on ebb_state.stats.pmc_count.
>>
>> Furthermore, this extra count is also indicated by extra PMC1 trace_log on
>> the output of the cycle test (as well as on pmc56_overflow_test):
>>
>> ==========
>> ...
>> [21]: counter = 8
>> [22]: register SPRN_MMCR0 = 0x0000000080000080
>> [23]: register SPRN_PMC1 = 0x0000000080000004
>> [24]: counter = 9
>> [25]: register SPRN_MMCR0 = 0x0000000080000080
>> [26]: register SPRN_PMC1 = 0x0000000080000004
>> [27]: counter = 10
>> [28]: register SPRN_MMCR0 = 0x0000000080000080
>> [29]: register SPRN_PMC1 = 0x0000000080000004
>>>> [30]: register SPRN_PMC1 = 0x000000004000051e
>> PMC1 count (0x280000546) above upper limit 0x2800003e8 (+0x15e)
>> [FAIL] Test FAILED on line 52
>> failure: cycles
>> ==========
>>
>> Signed-off-by: Desnes A. Nunes do Rosario <desnesn@linux.ibm.com>
>> ---
> I too have run into similar failure with cycles_test. I will add that the failure
> is inconsistent. I have run into this issue 1 out of 25 times. The failure always
> happen at first instance. Subsequent tries work correctly.
Indeed; on my tests I was running 100 times to validate.
Thanks for the review Sachin
>
> With this patch applied the test completes successfully 25 out of 25 times.
>
> # ./cycles_test
> test: cycles
> …..
> …..
> [25]: register SPRN_MMCR0 = 0x0000000080000080
> [26]: register SPRN_PMC1 = 0x0000000080000004
> [27]: counter = 10
> [28]: register SPRN_MMCR0 = 0x0000000080000080
> [29]: register SPRN_PMC1 = 0x0000000080000004
> [30]: register SPRN_PMC1 = 0x000000004000048f
> PMC1 count (0x2800004b7) above upper limit 0x2800003e8 (+0xcf)
> [FAIL] Test FAILED on line 52
> failure: cycles
>
> With the patch
>
> # ./cycles_test
> test: cycles
> …..
> …..
> [25]: register SPRN_MMCR0 = 0x0000000080000080
> [26]: register SPRN_PMC1 = 0x0000000080000004
> [27]: counter = 10
> [28]: register SPRN_MMCR0 = 0x0000000080000080
> [29]: register SPRN_PMC1 = 0x0000000080000004
> PMC1 count (0x280000028) is between 0x27ffffc18 and 0x2800003e8 delta +0x410/-0x3c0
> success: cycles
> #
>
> FWIW Tested-by : Sachin Sant <sachinp@linux.vnet.ibm.com>
>
> Thanks
> -Sachin
--
Desnes A. Nunes do Rosario
--------------------------------
Advisory Software Engineer - IBM
Virtual Onsite Engineer - Red Hat
^ permalink raw reply
* [PATCH 3/3] misc: cxl: flash: Remove unused variable 'drc_index'
From: Lee Jones @ 2020-07-08 12:57 UTC (permalink / raw)
To: arnd, gregkh
Cc: Frederic Barrat, linuxppc-dev, Lee Jones, linux-kernel,
Andrew Donnellan
In-Reply-To: <20200708125711.3443569-1-lee.jones@linaro.org>
Keeping the pointer increment though.
Fixes the following W=1 kernel build warning:
drivers/misc/cxl/flash.c: In function ‘update_devicetree’:
drivers/misc/cxl/flash.c:178:16: warning: variable ‘drc_index’ set but not used [-Wunused-but-set-variable]
178 | __be32 *data, drc_index, phandle;
| ^~~~~~~~~
Cc: Frederic Barrat <fbarrat@linux.ibm.com>
Cc: Andrew Donnellan <ajd@linux.ibm.com>
Cc: linuxppc-dev@lists.ozlabs.org
Signed-off-by: Lee Jones <lee.jones@linaro.org>
---
drivers/misc/cxl/flash.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/drivers/misc/cxl/flash.c b/drivers/misc/cxl/flash.c
index cb9cca35a2263..774d582ddd70b 100644
--- a/drivers/misc/cxl/flash.c
+++ b/drivers/misc/cxl/flash.c
@@ -175,7 +175,7 @@ static int update_devicetree(struct cxl *adapter, s32 scope)
struct update_nodes_workarea *unwa;
u32 action, node_count;
int token, rc, i;
- __be32 *data, drc_index, phandle;
+ __be32 *data, phandle;
char *buf;
token = rtas_token("ibm,update-nodes");
@@ -213,7 +213,7 @@ static int update_devicetree(struct cxl *adapter, s32 scope)
break;
case OPCODE_ADD:
/* nothing to do, just move pointer */
- drc_index = *data++;
+ *data++;
break;
}
}
--
2.25.1
^ permalink raw reply related
* Re: [PATCH 04/20] Documentation: kgdb: eliminate duplicated word
From: Daniel Thompson @ 2020-07-08 13:14 UTC (permalink / raw)
To: Randy Dunlap
Cc: kvm, linux-doc, David Airlie, kgdb-bugreport, linux-fpga,
Liviu Dudau, dri-devel, Douglas Anderson, Paul Cercueil, keyrings,
Paul Mackerras, linux-i2c, Pavel Machek, Srinivas Pandruvada,
Mihail Atanassov, linux-leds, linux-s390, Hannes Reinecke,
linux-scsi, Jonathan Corbet, Masahiro Yamada, Matthew Wilcox,
Halil Pasic, Jarkko Sakkinen, James Wang, linux-input,
Mali DP Maintainers, Derek Kiernan, linux-mips, Dragan Cvetic,
Wu Hao, Tony Krowiak, linux-kbuild, James E.J. Bottomley,
Jiri Kosina, linux-block, Thomas Bogendoerfer, Jacek Anaszewski,
linux-mm, Dan Williams, Andrew Morton, Mimi Zohar, Jens Axboe,
Michal Marek, Martin K. Petersen, Pierre Morel, linux-kernel,
Wolfram Sang, Daniel Vetter, Jason Wessel, Paolo Bonzini,
linux-integrity, linuxppc-dev, Mike Rapoport, Dan Murphy
In-Reply-To: <20200707180414.10467-5-rdunlap@infradead.org>
On Tue, Jul 07, 2020 at 11:03:58AM -0700, Randy Dunlap wrote:
> Drop the doubled word "driver".
>
> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
> Cc: Jonathan Corbet <corbet@lwn.net>
> Cc: linux-doc@vger.kernel.org
> Cc: Jason Wessel <jason.wessel@windriver.com>
> Cc: Daniel Thompson <daniel.thompson@linaro.org>
> Cc: Douglas Anderson <dianders@chromium.org>
> Cc: kgdb-bugreport@lists.sourceforge.net
Acked-by: Daniel Thompson <daniel.thompson@linaro.org>
Daniel.
^ permalink raw reply
* Re: [PATCH 3/3] misc: cxl: flash: Remove unused variable 'drc_index'
From: Andrew Donnellan @ 2020-07-08 13:17 UTC (permalink / raw)
To: Lee Jones, arnd, gregkh; +Cc: Frederic Barrat, linuxppc-dev, linux-kernel
In-Reply-To: <20200708125711.3443569-4-lee.jones@linaro.org>
On 8/7/20 10:57 pm, Lee Jones wrote:
> Keeping the pointer increment though.
>
> Fixes the following W=1 kernel build warning:
>
> drivers/misc/cxl/flash.c: In function ‘update_devicetree’:
> drivers/misc/cxl/flash.c:178:16: warning: variable ‘drc_index’ set but not used [-Wunused-but-set-variable]
> 178 | __be32 *data, drc_index, phandle;
> | ^~~~~~~~~
>
> Cc: Frederic Barrat <fbarrat@linux.ibm.com>
> Cc: Andrew Donnellan <ajd@linux.ibm.com>
> Cc: linuxppc-dev@lists.ozlabs.org
> Signed-off-by: Lee Jones <lee.jones@linaro.org>
Acked-by: Andrew Donnellan <ajd@linux.ibm.com>
--
Andrew Donnellan OzLabs, ADL Canberra
ajd@linux.ibm.com IBM Australia Limited
^ permalink raw reply
* Re: [PATCH V4 2/3] mm/sparsemem: Enable vmem_altmap support in vmemmap_alloc_block_buf()
From: Catalin Marinas @ 2020-07-08 13:25 UTC (permalink / raw)
To: Anshuman Khandual
Cc: x86, justin.he, linux-doc, Jonathan Corbet, Peter Zijlstra,
Dave Hansen, H. Peter Anvin, linuxppc-dev, linux-kernel, linux-mm,
Ingo Molnar, Paul Mackerras, Andy Lutomirski, Borislav Petkov,
akpm, Will Deacon, Thomas Gleixner, linux-arm-kernel
In-Reply-To: <1594004178-8861-3-git-send-email-anshuman.khandual@arm.com>
On Mon, Jul 06, 2020 at 08:26:17AM +0530, Anshuman Khandual wrote:
> There are many instances where vmemap allocation is often switched between
> regular memory and device memory just based on whether altmap is available
> or not. vmemmap_alloc_block_buf() is used in various platforms to allocate
> vmemmap mappings. Lets also enable it to handle altmap based device memory
> allocation along with existing regular memory allocations. This will help
> in avoiding the altmap based allocation switch in many places. To summarize
> there are two different methods to call vmemmap_alloc_block_buf().
>
> vmemmap_alloc_block_buf(size, node, NULL) /* Allocate from system RAM */
> vmemmap_alloc_block_buf(size, node, altmap) /* Allocate from altmap */
>
> This converts altmap_alloc_block_buf() into a static function, drops it's
s/it's/its/
> entry from the header and updates Documentation/vm/memory-model.rst.
>
> Cc: Jonathan Corbet <corbet@lwn.net>
> Cc: Catalin Marinas <catalin.marinas@arm.com>
> Cc: Will Deacon <will@kernel.org>
> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org>
> Cc: Paul Mackerras <paulus@samba.org>
> Cc: Michael Ellerman <mpe@ellerman.id.au>
> Cc: Dave Hansen <dave.hansen@linux.intel.com>
> Cc: Andy Lutomirski <luto@kernel.org>
> Cc: Peter Zijlstra <peterz@infradead.org>
> Cc: Thomas Gleixner <tglx@linutronix.de>
> Cc: Ingo Molnar <mingo@redhat.com>
> Cc: Borislav Petkov <bp@alien8.de>
> Cc: "H. Peter Anvin" <hpa@zytor.com>
> Cc: Andrew Morton <akpm@linux-foundation.org>
> Cc: linux-doc@vger.kernel.org
> Cc: x86@kernel.org
> Cc: linux-arm-kernel@lists.infradead.org
> Cc: linuxppc-dev@lists.ozlabs.org
> Cc: linux-mm@kvack.org
> Cc: linux-kernel@vger.kernel.org
> Tested-by: Jia He <justin.he@arm.com>
> Suggested-by: Robin Murphy <robin.murphy@arm.com>
> Signed-off-by: Anshuman Khandual <anshuman.khandual@arm.com>
With the fallback argument dropped, the patch looks fine to me.
Reviewed-by: Catalin Marinas <catalin.marinas@arm.com>
^ permalink raw reply
* Re: [PATCH 18/20] Documentation: security/keys: eliminate duplicated word
From: Jarkko Sakkinen @ 2020-07-08 13:32 UTC (permalink / raw)
To: Randy Dunlap
Cc: kvm, linux-doc, David Airlie, kgdb-bugreport, linux-fpga,
Liviu Dudau, dri-devel, Douglas Anderson, Paul Cercueil, keyrings,
Paul Mackerras, linux-i2c, Pavel Machek, Srinivas Pandruvada,
Mihail Atanassov, linux-leds, linux-s390, Daniel Thompson,
linux-scsi, Jonathan Corbet, Masahiro Yamada, Matthew Wilcox,
Halil Pasic, James Wang, linux-input, Mali DP Maintainers,
Derek Kiernan, linux-mips, Dragan Cvetic, Wu Hao, Tony Krowiak,
linux-kbuild, James E.J. Bottomley, Jiri Kosina, Hannes Reinecke,
linux-block, Thomas Bogendoerfer, Jacek Anaszewski, linux-mm,
Dan Williams, Andrew Morton, Mimi Zohar, Jens Axboe, Michal Marek,
Martin K. Petersen, Pierre Morel, linux-kernel, Wolfram Sang,
Daniel Vetter, Jason Wessel, Paolo Bonzini, linux-integrity,
linuxppc-dev, Mike Rapoport, Dan Murphy
In-Reply-To: <20200707180414.10467-19-rdunlap@infradead.org>
On Tue, Jul 07, 2020 at 11:04:12AM -0700, Randy Dunlap wrote:
> Drop the doubled word "in".
>
> Signed-off-by: Randy Dunlap <rdunlap@infradead.org>
> Cc: Jonathan Corbet <corbet@lwn.net>
> Cc: linux-doc@vger.kernel.org
> Cc: James Bottomley <jejb@linux.ibm.com>
> Cc: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
> Cc: Mimi Zohar <zohar@linux.ibm.com>
> Cc: linux-integrity@vger.kernel.org
> Cc: keyrings@vger.kernel.org
Acked-by: Jarkko Sakkinen <jarkko.sakkinen@linux.intel.com>
/Jarkko
^ permalink raw reply
* Re: Failure to build librseq on ppc
From: Mathieu Desnoyers @ 2020-07-08 14:00 UTC (permalink / raw)
To: Segher Boessenkool; +Cc: Boqun Feng, linuxppc-dev, Michael Jeanson
In-Reply-To: <841816533.1735.1594211583710.JavaMail.zimbra@efficios.com>
[-- Attachment #1: Type: text/plain, Size: 6799 bytes --]
----- On Jul 8, 2020, at 8:33 AM, Mathieu Desnoyers mathieu.desnoyers@efficios.com wrote:
> ----- On Jul 7, 2020, at 8:59 PM, Segher Boessenkool segher@kernel.crashing.org
> wrote:
[...]
>>
>> So perhaps you have code like
>>
>> int *p;
>> int x;
>> ...
>> asm ("lwz %0,%1" : "=r"(x) : "m"(*p));
>
> We indeed have explicit "lwz" and "stw" instructions in there.
>
>>
>> where that last line should actually read
>>
>> asm ("lwz%X1 %0,%1" : "=r"(x) : "m"(*p));
>
> Indeed, turning those into "lwzx" and "stwx" seems to fix the issue.
>
> There has been some level of extra CPP macro coating around those instructions
> to
> support both ppc32 and ppc64 with the same assembly. So adding %X[arg] is not
> trivial.
> Let me see what can be done here.
I did the following changes which appear to generate valid asm.
See attached corresponding .S output.
I grepped for uses of "m" asm operand in Linux powerpc code and noticed it's pretty much
always used with e.g. "lwz%U1%X1". I could find one blog post discussing that %U is about
update flag, and nothing about %X. Are those documented ?
Although it appears to generate valid asm, I have the feeling I'm relying on undocumented
features here. :-/
Here is the diff on https://git.kernel.org/pub/scm/libs/librseq/librseq.git/tree/include/rseq/rseq-ppc.h
It's only compile-tested on powerpc32 so far:
diff --git a/include/rseq/rseq-ppc.h b/include/rseq/rseq-ppc.h
index eb53953..f689fe9 100644
--- a/include/rseq/rseq-ppc.h
+++ b/include/rseq/rseq-ppc.h
@@ -47,9 +47,9 @@ do { \
#ifdef __PPC64__
-#define STORE_WORD "std "
-#define LOAD_WORD "ld "
-#define LOADX_WORD "ldx "
+#define STORE_WORD(arg) "std%U[" __rseq_str(arg) "]%X[" __rseq_str(arg) "] " /* To memory ("m" constraint) */
+#define LOAD_WORD(arg) "lwd%U[" __rseq_str(arg) "]%X[" __rseq_str(arg) "] " /* From memory ("m" constraint) */
+#define LOADX_WORD "ldx " /* From base register ("b" constraint) */
#define CMP_WORD "cmpd "
#define __RSEQ_ASM_DEFINE_TABLE(label, version, flags, \
@@ -89,9 +89,9 @@ do { \
#else /* #ifdef __PPC64__ */
-#define STORE_WORD "stw "
-#define LOAD_WORD "lwz "
-#define LOADX_WORD "lwzx "
+#define STORE_WORD(arg) "stw%U[" __rseq_str(arg) "]%X[" __rseq_str(arg) "] " /* To memory ("m" constraint) */
+#define LOAD_WORD(arg) "lwz%U[" __rseq_str(arg) "]%X[" __rseq_str(arg) "] " /* From memory ("m" constraint) */
+#define LOADX_WORD "lwzx " /* From base register ("b" constraint) */
#define CMP_WORD "cmpw "
#define __RSEQ_ASM_DEFINE_TABLE(label, version, flags, \
@@ -125,7 +125,7 @@ do { \
RSEQ_INJECT_ASM(1) \
"lis %%r17, (" __rseq_str(cs_label) ")@ha\n\t" \
"addi %%r17, %%r17, (" __rseq_str(cs_label) ")@l\n\t" \
- "stw %%r17, %[" __rseq_str(rseq_cs) "]\n\t" \
+ "stw%U[" __rseq_str(rseq_cs) "]%X[" __rseq_str(rseq_cs) "] %%r17, %[" __rseq_str(rseq_cs) "]\n\t" \
__rseq_str(label) ":\n\t"
#endif /* #ifdef __PPC64__ */
@@ -136,7 +136,7 @@ do { \
#define RSEQ_ASM_CMP_CPU_ID(cpu_id, current_cpu_id, label) \
RSEQ_INJECT_ASM(2) \
- "lwz %%r17, %[" __rseq_str(current_cpu_id) "]\n\t" \
+ "lwz%U[" __rseq_str(current_cpu_id) "]%X[" __rseq_str(current_cpu_id) "] %%r17, %[" __rseq_str(current_cpu_id) "]\n\t" \
"cmpw cr7, %[" __rseq_str(cpu_id) "], %%r17\n\t" \
"bne- cr7, " __rseq_str(label) "\n\t"
@@ -153,25 +153,25 @@ do { \
* RSEQ_ASM_OP_* (else): doesn't have hard-code registers(unless cr7)
*/
#define RSEQ_ASM_OP_CMPEQ(var, expect, label) \
- LOAD_WORD "%%r17, %[" __rseq_str(var) "]\n\t" \
+ LOAD_WORD(var) "%%r17, %[" __rseq_str(var) "]\n\t" \
CMP_WORD "cr7, %%r17, %[" __rseq_str(expect) "]\n\t" \
"bne- cr7, " __rseq_str(label) "\n\t"
#define RSEQ_ASM_OP_CMPNE(var, expectnot, label) \
- LOAD_WORD "%%r17, %[" __rseq_str(var) "]\n\t" \
+ LOAD_WORD(var) "%%r17, %[" __rseq_str(var) "]\n\t" \
CMP_WORD "cr7, %%r17, %[" __rseq_str(expectnot) "]\n\t" \
"beq- cr7, " __rseq_str(label) "\n\t"
#define RSEQ_ASM_OP_STORE(value, var) \
- STORE_WORD "%[" __rseq_str(value) "], %[" __rseq_str(var) "]\n\t"
+ STORE_WORD(var) "%[" __rseq_str(value) "], %[" __rseq_str(var) "]\n\t"
/* Load @var to r17 */
#define RSEQ_ASM_OP_R_LOAD(var) \
- LOAD_WORD "%%r17, %[" __rseq_str(var) "]\n\t"
+ LOAD_WORD(var) "%%r17, %[" __rseq_str(var) "]\n\t"
/* Store r17 to @var */
#define RSEQ_ASM_OP_R_STORE(var) \
- STORE_WORD "%%r17, %[" __rseq_str(var) "]\n\t"
+ STORE_WORD(var) "%%r17, %[" __rseq_str(var) "]\n\t"
/* Add @count to r17 */
#define RSEQ_ASM_OP_R_ADD(count) \
@@ -196,11 +196,11 @@ do { \
"333:\n\t" \
#define RSEQ_ASM_OP_R_FINAL_STORE(var, post_commit_label) \
- STORE_WORD "%%r17, %[" __rseq_str(var) "]\n\t" \
+ STORE_WORD(var) "%%r17, %[" __rseq_str(var) "]\n\t" \
__rseq_str(post_commit_label) ":\n\t"
#define RSEQ_ASM_OP_FINAL_STORE(value, var, post_commit_label) \
- STORE_WORD "%[" __rseq_str(value) "], %[" __rseq_str(var) "]\n\t" \
+ STORE_WORD(var) "%[" __rseq_str(value) "], %[" __rseq_str(var) "]\n\t" \
__rseq_str(post_commit_label) ":\n\t"
static inline __attribute__((always_inline))
Thanks,
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
[-- Attachment #2: basic_percpu_ops_test-fix.S --]
[-- Type: application/octet-stream, Size: 91499 bytes --]
.file "basic_percpu_ops_test.c"
.machine ppc
.section ".text"
.Ltext0:
.cfi_sections .debug_frame
.align 2
.p2align 4,,15
.type rseq_percpu_unlock.part.0, @function
rseq_percpu_unlock.part.0:
.LFB125:
.file 1 "basic_percpu_ops_test.c"
.loc 1 72 0
.cfi_startproc
.LVL0:
stwu 1,-16(1)
.cfi_def_cfa_offset 16
.loc 1 74 0
lis 6,.LANCHOR0@ha
.loc 1 72 0
mflr 0
.loc 1 74 0
lis 4,.LC0@ha
lis 3,.LC1@ha
la 6,.LANCHOR0@l(6)
li 5,74
la 4,.LC0@l(4)
la 3,.LC1@l(3)
.loc 1 72 0
stw 0,20(1)
.cfi_offset 65, 4
.loc 1 74 0
bl __assert_fail
.LVL1:
.cfi_endproc
.LFE125:
.size rseq_percpu_unlock.part.0,.-rseq_percpu_unlock.part.0
.align 2
.p2align 4,,15
.globl rseq_this_cpu_lock
.type rseq_this_cpu_lock, @function
rseq_this_cpu_lock:
.LFB115:
.loc 1 51 0
.cfi_startproc
.LVL2:
stwu 1,-80(1)
.cfi_def_cfa_offset 80
.LBB72:
.LBB73:
.LBB74:
.file 2 "../include/rseq/rseq.h"
.loc 2 142 0
lis 9,_GLOBAL_OFFSET_TABLE_@ha
la 9,_GLOBAL_OFFSET_TABLE_@l(9)
lwz 9,__rseq_abi@got@tprel(9)
.LBE74:
.LBE73:
.LBB77:
.LBB78:
.file 3 "../include/rseq/rseq-ppc.h"
.loc 3 211 0
li 6,0
.LBE78:
.LBE77:
.LBB81:
.LBB75:
.loc 2 142 0
add 9,9,__rseq_abi@tls
.LBE75:
.LBE81:
.LBB82:
.LBB79:
.loc 3 211 0
li 7,1
.LBE79:
.LBE82:
.LBE72:
.loc 1 51 0
stw 17,20(1)
.cfi_offset 17, -60
.L4:
.L7:
.L5:
.LBB85:
.LBB83:
.LBB76:
.loc 2 142 0
lwz 10,0(9)
.LVL3:
.LBE76:
.LBE83:
.loc 1 58 0
slwi 8,10,7
.LBB84:
.LBB80:
.loc 3 211 0
#APP
# 211 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.long 0x0, 1f, 0x0, (2f - 1f), 0x0, 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.long 0x0, 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.long 0x0, 1f, 0x0, .L7
.popsection
lis %r17, (3b)@ha
addi %r17, %r17, (3b)@l
stw %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
lwzx %r17, 3,8
cmpw cr7, %r17, 6
bne- cr7, .L7
stwx 7, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L7
.popsection
# 0 "" 2
.LVL4:
#NO_APP
.LBE80:
.LBE84:
.LBE85:
.loc 1 68 0
#APP
# 68 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
.loc 1 70 0
#NO_APP
lwz 17,20(1)
mr 3,10
.LVL5:
addi 1,1,80
.cfi_restore 17
.cfi_def_cfa_offset 0
blr
.cfi_endproc
.LFE115:
.size rseq_this_cpu_lock,.-rseq_this_cpu_lock
.align 2
.p2align 4,,15
.globl test_percpu_spinlock_thread
.type test_percpu_spinlock_thread, @function
test_percpu_spinlock_thread:
.LFB117:
.loc 1 83 0
.cfi_startproc
.LVL6:
stwu 1,-32(1)
.cfi_def_cfa_offset 32
mflr 0
stw 31,28(1)
stw 0,36(1)
stw 28,16(1)
stw 29,20(1)
stw 30,24(1)
.cfi_offset 65, 4
.cfi_offset 31, -4
.cfi_offset 28, -16
.cfi_offset 29, -12
.cfi_offset 30, -8
.loc 1 83 0
mr 31,3
.LVL7:
.loc 1 87 0
bl rseq_register_current_thread
.LVL8:
cmpwi 7,3,0
bne- 7,.L11
.LVL9:
.loc 1 92 0 discriminator 1
addis 29,31,0x4
li 30,0
lwz 9,0(29)
.LBB86:
.LBB87:
.loc 1 79 0 discriminator 1
li 28,0
.LBE87:
.LBE86:
.loc 1 92 0 discriminator 1
cmpwi 7,9,0
ble 7,.L17
.LVL10:
.p2align 4,,15
.L18:
.loc 1 93 0 discriminator 3
mr 3,31
bl rseq_this_cpu_lock
.LVL11:
slwi 3,3,7
.LVL12:
add 9,31,3
.loc 1 94 0 discriminator 3
addis 9,9,0x2
lwz 10,0(9)
addi 10,10,1
stw 10,0(9)
.LVL13:
.LBB90:
.LBB88:
.loc 1 74 0 discriminator 3
lwzx 9,31,3
cmpwi 7,9,1
bne- 7,.L23
.loc 1 79 0
#APP
# 79 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
#NO_APP
stwx 28,31,3
.LVL14:
.LBE88:
.LBE90:
.loc 1 92 0
addi 30,30,1
.LVL15:
lwz 9,0(29)
cmpw 7,9,30
bgt 7,.L18
.LVL16:
.L17:
.loc 1 97 0
bl rseq_unregister_current_thread
.LVL17:
cmpwi 7,3,0
bne- 7,.L24
.loc 1 104 0
lwz 0,36(1)
lwz 28,16(1)
lwz 29,20(1)
lwz 30,24(1)
mtlr 0
.cfi_remember_state
.cfi_restore 65
lwz 31,28(1)
.LVL18:
addi 1,1,32
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
.cfi_def_cfa_offset 0
blr
.LVL19:
.L23:
.cfi_restore_state
.LBB91:
.LBB89:
bl rseq_percpu_unlock.part.0
.LVL20:
.L11:
.LBE89:
.LBE91:
.loc 1 88 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 89 0
bl __errno_location
.LVL21:
.loc 1 88 0
lwz 31,0(3)
.LVL22:
mr 3,31
bl strerror
.LVL23:
.LBB92:
.LBB93:
.file 4 "/usr/include/powerpc-linux-gnu/bits/stdio2.h"
.loc 4 97 0
lis 5,.LC2@ha
mr 6,31
la 5,.LC2@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL24:
.LBE93:
.LBE92:
.loc 1 90 0
bl abort
.LVL25:
.L24:
.loc 1 98 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 99 0
bl __errno_location
.LVL26:
.loc 1 98 0
lwz 31,0(3)
.LVL27:
mr 3,31
bl strerror
.LVL28:
.LBB94:
.LBB95:
.loc 4 97 0
lis 5,.LC3@ha
mr 6,31
la 5,.LC3@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL29:
.LBE95:
.LBE94:
.loc 1 100 0
bl abort
.LVL30:
.cfi_endproc
.LFE117:
.size test_percpu_spinlock_thread,.-test_percpu_spinlock_thread
.align 2
.p2align 4,,15
.globl rseq_percpu_unlock
.type rseq_percpu_unlock, @function
rseq_percpu_unlock:
.LFB116:
.loc 1 73 0
.cfi_startproc
.LVL31:
slwi 4,4,7
.LVL32:
.loc 1 74 0
lwzx 9,3,4
cmpwi 7,9,1
bne- 7,.L28
.loc 1 79 0
#APP
# 79 "basic_percpu_ops_test.c" 1
lwsync
# 0 "" 2
#NO_APP
li 9,0
stwx 9,3,4
blr
.L28:
.loc 1 73 0 discriminator 1
stwu 1,-16(1)
.cfi_def_cfa_offset 16
mflr 0
stw 0,20(1)
.cfi_offset 65, 4
bl rseq_percpu_unlock.part.0
.LVL33:
.cfi_endproc
.LFE116:
.size rseq_percpu_unlock,.-rseq_percpu_unlock
.align 2
.p2align 4,,15
.globl test_percpu_spinlock
.type test_percpu_spinlock, @function
test_percpu_spinlock:
.LFB118:
.loc 1 113 0
.cfi_startproc
.loc 1 113 0
stwu 1,-64(1)
.cfi_def_cfa_offset 64
lis 9,0xfffb
mflr 0
ori 9,9,0xff00
.LBB102:
.LBB103:
.file 5 "/usr/include/powerpc-linux-gnu/bits/string3.h"
.loc 5 90 0
lis 5,0x4
ori 5,5,0x80
li 4,0
.LBE103:
.LBE102:
.loc 1 113 0
lwz 10,0(1)
stw 25,36(1)
stw 26,40(1)
stw 27,44(1)
stw 28,48(1)
stw 29,52(1)
stw 30,56(1)
stw 31,60(1)
stw 0,68(1)
.cfi_offset 65, 4
.cfi_offset 25, -28
.cfi_offset 26, -24
.cfi_offset 27, -20
.cfi_offset 28, -16
.cfi_offset 29, -12
.cfi_offset 30, -8
.cfi_offset 31, -4
mr 31,1
.cfi_def_cfa_register 31
.loc 1 113 0
stwux 10,1,9
lis 26,test_percpu_spinlock_thread@ha
la 26,test_percpu_spinlock_thread@l(26)
addi 9,1,135
lwz 8,-28680(2)
stw 8,28(31)
li 8,0
.LVL34:
.loc 1 117 0
stwu 10,-816(1)
.loc 1 113 0
rlwinm 30,9,0,0,24
.LBB106:
.LBB104:
.loc 5 90 0
mr 3,30
.LBE104:
.LBE106:
.loc 1 121 0
addis 27,30,0x4
.LBB107:
.LBB105:
.loc 5 90 0
bl memset
.LVL35:
.LBE105:
.LBE107:
.loc 1 121 0
li 9,5000
.loc 1 117 0
addi 28,1,8
.LVL36:
.loc 1 121 0
stw 9,0(27)
mr 29,28
addi 25,28,800
.LVL37:
.p2align 5,,31
.L30:
.loc 1 124 0 discriminator 3
mr 3,29
mr 6,30
mr 5,26
li 4,0
addi 29,29,4
bl pthread_create
.LVL38:
.loc 1 123 0 discriminator 3
cmplw 7,29,25
bne 7,.L30
addi 29,28,-4
addi 28,28,796
.LVL39:
.p2align 5,,31
.L31:
.loc 1 128 0 discriminator 3
lwzu 3,4(29)
li 4,0
bl pthread_join
.LVL40:
.loc 1 127 0 discriminator 3
cmplw 7,28,29
bne 7,.L31
addis 9,30,0x2
.loc 1 127 0 is_stmt 0
li 7,0
li 10,0
.p2align 5,,31
.L32:
.LVL41:
.loc 1 132 0 is_stmt 1 discriminator 3
lwz 8,0(9)
addi 9,9,128
.loc 1 131 0 discriminator 3
cmplw 7,27,9
.loc 1 132 0 discriminator 3
srawi 6,8,31
addc 10,8,10
.LVL42:
adde 7,6,7
.LVL43:
.loc 1 131 0 discriminator 3
bne 7,.L32
.loc 1 134 0
lwz 9,0(27)
li 8,200
mulhw 8,9,8
mulli 9,9,200
cmplw 7,7,8
bne- 7,.L36
cmplw 7,10,9
bne- 7,.L36
.loc 1 135 0
lwz 9,28(31)
lwz 10,-28680(2)
xor. 9,9,10
li 10,0
.LVL44:
bne- 0,.L42
addi 11,31,64
lwz 0,4(11)
lwz 25,-28(11)
lwz 31,-4(11)
.cfi_remember_state
.cfi_def_cfa 11, 0
lwz 26,-24(11)
mtlr 0
.cfi_restore 65
lwz 27,-20(11)
lwz 28,-16(11)
.LVL45:
lwz 29,-12(11)
lwz 30,-8(11)
mr 1,11
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
.cfi_restore 27
.cfi_restore 26
.cfi_restore 25
.cfi_def_cfa_register 1
.LVL46:
blr
.LVL47:
.L36:
.cfi_restore_state
.LBB108:
.LBB109:
.loc 1 134 0
lis 6,.LANCHOR0@ha
lis 4,.LC0@ha
la 6,.LANCHOR0@l(6)
lis 3,.LC4@ha
addi 6,6,20
li 5,134
la 4,.LC0@l(4)
la 3,.LC4@l(3)
bl __assert_fail
.LVL48:
.L42:
.LBE109:
.LBE108:
.loc 1 135 0
bl __stack_chk_fail
.LVL49:
.cfi_endproc
.LFE118:
.size test_percpu_spinlock,.-test_percpu_spinlock
.align 2
.p2align 4,,15
.globl this_cpu_list_push
.type this_cpu_list_push, @function
this_cpu_list_push:
.LFB119:
.loc 1 140 0
.cfi_startproc
.LVL50:
stwu 1,-80(1)
.cfi_def_cfa_offset 80
.LBB110:
.LBB111:
.LBB112:
.loc 2 142 0
lis 9,_GLOBAL_OFFSET_TABLE_@ha
la 9,_GLOBAL_OFFSET_TABLE_@l(9)
lwz 9,__rseq_abi@got@tprel(9)
add 9,9,__rseq_abi@tls
.LBE112:
.LBE111:
.LBE110:
.loc 1 140 0
stw 17,20(1)
.cfi_offset 17, -60
.L44:
.L45:
.LBB117:
.LBB114:
.LBB113:
.loc 2 142 0
lwz 10,0(9)
.LVL51:
.LBE113:
.LBE114:
.loc 1 149 0
slwi 8,10,7
lwzx 7,3,8
.LVL52:
.loc 1 152 0
stw 7,4(4)
.LVL53:
.LBB115:
.LBB116:
.loc 3 211 0
#APP
# 211 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.long 0x0, 1f, 0x0, (2f - 1f), 0x0, 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.long 0x0, 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.long 0x0, 1f, 0x0, .L44
.popsection
lis %r17, (3b)@ha
addi %r17, %r17, (3b)@l
stw %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
lwzx %r17, 3,8
cmpw cr7, %r17, 7
bne- cr7, .L44
stwx 4, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L44
.popsection
# 0 "" 2
.LVL54:
#NO_APP
.LBE116:
.LBE115:
.LBE117:
.loc 1 158 0
cmpwi 7,5,0
beq 7,.L43
.loc 1 159 0
stw 10,0(5)
.L43:
.loc 1 160 0
lwz 17,20(1)
addi 1,1,80
.cfi_restore 17
.cfi_def_cfa_offset 0
blr
.cfi_endproc
.LFE119:
.size this_cpu_list_push,.-this_cpu_list_push
.align 2
.p2align 4,,15
.globl this_cpu_list_pop
.type this_cpu_list_pop, @function
this_cpu_list_pop:
.LFB120:
.loc 1 169 0
.cfi_startproc
.LVL55:
stwu 1,-96(1)
.cfi_def_cfa_offset 96
.LBB118:
.LBB119:
.LBB120:
.loc 3 271 0
li 6,0
.LBE120:
.LBE119:
.LBE118:
.loc 1 169 0
mflr 0
.LBB127:
.LBB123:
.LBB121:
.loc 3 271 0
li 7,4
.LBE121:
.LBE123:
.LBE127:
.loc 1 169 0
stw 0,100(1)
stw 17,36(1)
.cfi_offset 65, 4
.cfi_offset 17, -60
.loc 1 169 0
lwz 9,-28680(2)
stw 9,28(1)
li 9,0
.LBB128:
.LBB124:
.LBB125:
.loc 2 142 0
lis 9,_GLOBAL_OFFSET_TABLE_@ha
la 9,_GLOBAL_OFFSET_TABLE_@l(9)
lwz 9,__rseq_abi@got@tprel(9)
add 9,9,__rseq_abi@tls
.L57:
lwz 10,0(9)
.LVL56:
.LBE125:
.LBE124:
.loc 1 177 0
slwi 8,10,7
.LBB126:
.LBB122:
.loc 3 271 0
#APP
# 271 "../include/rseq/rseq-ppc.h" 1
.pushsection __rseq_cs, "aw"
.balign 32
3:
.long 0x0, 0x0
.long 0x0, 1f, 0x0, (2f - 1f), 0x0, 4f
.popsection
.pushsection __rseq_cs_ptr_array, "aw"
.long 0x0, 3b
.popsection
.pushsection __rseq_exit_point_array, "aw"
.long 0x0, 1f, 0x0, .L61
.popsection
lis %r17, (3b)@ha
addi %r17, %r17, (3b)@l
stw %r17, 8(9)
1:
lwz %r17, 4(9)
cmpw cr7, 10, %r17
bne- cr7, 4f
lwzx %r17, 3,8
cmpw cr7, %r17, 6
beq- cr7, .L61
lwzx %r17, 3,8
stw %r17, 24(1)
lwzx %r17, 7, %r17
stwx %r17, 3,8
2:
.pushsection __rseq_failure, "ax"
.long 0x0fe5000b
4:
b .L57
.popsection
# 0 "" 2
.LVL57:
#NO_APP
.LBE122:
.LBE126:
.loc 1 184 0
cmpwi 7,4,0
beq 7,.L59
.loc 1 185 0
stw 10,0(4)
.L59:
.loc 1 186 0
lwz 3,24(1)
.LVL58:
b .L55
.L54:
.LVL59:
.L61:
.loc 1 189 0
li 3,0
.LVL60:
.L55:
.LBE128:
.loc 1 192 0 discriminator 1
lwz 10,28(1)
lwz 9,-28680(2)
xor. 10,10,9
li 9,0
.LVL61:
bne- 0,.L67
.loc 1 192 0 is_stmt 0
lwz 0,100(1)
lwz 17,36(1)
addi 1,1,96
.cfi_remember_state
.cfi_restore 17
.cfi_def_cfa_offset 0
.LVL62:
mtlr 0
.cfi_restore 65
blr
.LVL63:
.L67:
.cfi_restore_state
bl __stack_chk_fail
.LVL64:
.cfi_endproc
.LFE120:
.size this_cpu_list_pop,.-this_cpu_list_pop
.align 2
.p2align 4,,15
.globl test_percpu_list_thread
.type test_percpu_list_thread, @function
test_percpu_list_thread:
.LFB122:
.loc 1 210 0 is_stmt 1
.cfi_startproc
.LVL65:
stwu 1,-32(1)
.cfi_def_cfa_offset 32
mflr 0
stw 29,20(1)
stw 31,28(1)
stw 0,36(1)
stw 30,24(1)
.cfi_offset 65, 4
.cfi_offset 29, -12
.cfi_offset 31, -4
.cfi_offset 30, -8
.loc 1 210 0
mr 29,3
.loc 1 214 0
bl rseq_register_current_thread
.LVL66:
lis 31,0x1
ori 31,31,0x86a0
cmpwi 7,3,0
bne- 7,.L81
.p2align 4,,15
.L75:
.LVL67:
.LBB139:
.loc 1 223 0
li 4,0
mr 3,29
bl this_cpu_list_pop
.LVL68:
mr 30,3
.LVL69:
.loc 1 224 0
bl sched_yield
.LVL70:
.loc 1 225 0
cmpwi 7,30,0
beq 7,.L70
.loc 1 226 0
li 5,0
mr 4,30
mr 3,29
bl this_cpu_list_push
.LVL71:
.L70:
.LBE139:
.loc 1 220 0 discriminator 2
cmpwi 0,31,1
addi 31,31,-1
.LVL72:
bne 0,.L75
.loc 1 229 0
bl rseq_unregister_current_thread
.LVL73:
cmpwi 7,3,0
bne- 7,.L82
.loc 1 236 0
lwz 0,36(1)
lwz 29,20(1)
.LVL74:
lwz 30,24(1)
.LVL75:
lwz 31,28(1)
.LVL76:
addi 1,1,32
.cfi_remember_state
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_def_cfa_offset 0
mtlr 0
.cfi_restore 65
blr
.LVL77:
.L81:
.cfi_restore_state
.LBB140:
.LBB141:
.loc 1 215 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 216 0
bl __errno_location
.LVL78:
.loc 1 215 0
lwz 31,0(3)
mr 3,31
bl strerror
.LVL79:
.LBB142:
.LBB143:
.loc 4 97 0
lis 5,.LC2@ha
mr 6,31
la 5,.LC2@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL80:
.LBE143:
.LBE142:
.loc 1 217 0
bl abort
.LVL81:
.L82:
.LBE141:
.LBE140:
.loc 1 230 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.LVL82:
.loc 1 231 0
bl __errno_location
.LVL83:
.loc 1 230 0
lwz 31,0(3)
.LVL84:
mr 3,31
bl strerror
.LVL85:
.LBB144:
.LBB145:
.loc 4 97 0
lis 5,.LC3@ha
mr 6,31
la 5,.LC3@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL86:
.LBE145:
.LBE144:
.loc 1 232 0
bl abort
.LVL87:
.cfi_endproc
.LFE122:
.size test_percpu_list_thread,.-test_percpu_list_thread
.align 2
.p2align 4,,15
.globl __percpu_list_pop
.type __percpu_list_pop, @function
__percpu_list_pop:
.LFB121:
.loc 1 199 0
.cfi_startproc
.LVL88:
stwu 1,-16(1)
.cfi_def_cfa_offset 16
slwi 4,4,7
.LVL89:
.loc 1 202 0
lwzx 9,3,4
.LVL90:
.loc 1 203 0
cmpwi 7,9,0
beq 7,.L84
.loc 1 205 0
lwz 10,4(9)
stwx 10,3,4
.L84:
.loc 1 207 0
mr 3,9
.LVL91:
addi 1,1,16
.cfi_def_cfa_offset 0
blr
.cfi_endproc
.LFE121:
.size __percpu_list_pop,.-__percpu_list_pop
.align 2
.p2align 4,,15
.globl test_percpu_list
.type test_percpu_list, @function
test_percpu_list:
.LFB123:
.loc 1 240 0
.cfi_startproc
stwu 1,-1008(1)
.cfi_def_cfa_offset 1008
lis 9,0xfffd
mflr 0
ori 9,9,0xff80
.LBB146:
.LBB147:
.loc 5 90 0
lis 5,0x2
li 4,0
.LBE147:
.LBE146:
.loc 1 240 0
lwz 10,0(1)
stw 0,1012(1)
stw 23,972(1)
stw 24,976(1)
stw 25,980(1)
stw 26,984(1)
stw 27,988(1)
stw 29,996(1)
stw 31,1004(1)
stw 28,992(1)
.cfi_offset 65, 4
.cfi_offset 23, -36
.cfi_offset 24, -32
.cfi_offset 25, -28
.cfi_offset 26, -24
.cfi_offset 27, -20
.cfi_offset 29, -12
.cfi_offset 31, -4
.cfi_offset 28, -16
mr 31,1
.cfi_def_cfa_register 31
stw 30,1000(1)
.cfi_offset 30, -8
.loc 1 240 0
stwux 10,1,9
.loc 1 242 0
li 26,0
li 29,0
.loc 1 251 0
li 24,0
.loc 1 240 0
addi 23,1,135
lwz 9,-28680(2)
stw 9,956(31)
li 9,0
.LVL92:
rlwinm 23,23,0,0,24
.LVL93:
.LBB149:
.LBB148:
.loc 5 90 0
mr 3,23
bl memset
.LVL94:
.LBE148:
.LBE149:
.loc 1 250 0
addi 5,31,28
li 4,128
li 3,0
mr 25,23
bl sched_getaffinity
.LVL95:
mr 27,23
.LVL96:
.p2align 4,,15
.L93:
.LBB150:
.loc 1 252 0
addi 10,31,960
rlwinm 9,24,29,3,29
add 9,10,9
rlwinm 10,24,0,27,31
lwz 9,-932(9)
srw 9,9,10
andi. 10,9,1
beq 0,.L90
li 28,0
li 30,1
.LVL97:
.p2align 4,,15
.L114:
.LBE150:
.LBB151:
.loc 1 257 0
addc 29,30,29
.LVL98:
.loc 1 259 0
li 3,8
.loc 1 257 0
adde 26,28,26
.loc 1 259 0
bl malloc
.LVL99:
.loc 1 260 0
cmpwi 0,3,0
beq- 0,.L121
addic 10,30,1
.loc 1 262 0 discriminator 2
lwz 8,0(27)
.loc 1 261 0 discriminator 2
stw 30,0(3)
addze 28,28
.loc 1 263 0 discriminator 2
stw 3,0(27)
.LVL100:
.LBE151:
.loc 1 254 0 discriminator 2
cmpwi 7,28,0
.LBB152:
.loc 1 262 0 discriminator 2
stw 8,4(3)
mr 30,10
.LVL101:
.LBE152:
.loc 1 254 0 discriminator 2
bne 7,.L114
cmplwi 7,10,101
bne 7,.L114
.LVL102:
.p2align 4,,15
.L90:
.loc 1 251 0 discriminator 2
cmpwi 7,24,1023
addi 27,27,128
addi 24,24,1
.LVL103:
bne 7,.L93
lis 28,test_percpu_list_thread@ha
addi 30,31,156
addi 27,31,956
la 28,test_percpu_list_thread@l(28)
.LVL104:
.p2align 5,,31
.L94:
.loc 1 268 0 discriminator 3
mr 3,30
mr 6,23
mr 5,28
li 4,0
addi 30,30,4
bl pthread_create
.LVL105:
.loc 1 267 0 discriminator 3
cmplw 7,27,30
bne 7,.L94
addi 30,31,152
addi 28,31,952
.p2align 5,,31
.L95:
.loc 1 272 0 discriminator 3
lwzu 3,4(30)
li 4,0
bl pthread_join
.LVL106:
.loc 1 271 0 discriminator 3
cmplw 7,28,30
bne 7,.L95
li 28,0
li 30,0
li 27,0
b .L98
.LVL107:
.p2align 4,,15
.L96:
.loc 1 274 0 discriminator 2
cmpwi 7,27,1023
addi 25,25,128
addi 27,27,1
.LVL108:
beq 7,.L122
.LVL109:
.L98:
.LBB153:
.LBB154:
.loc 1 277 0
addi 10,31,960
rlwinm 9,27,29,3,29
add 9,10,9
rlwinm 10,27,0,27,31
lwz 9,-932(9)
srw 9,9,10
andi. 10,9,1
beq 0,.L96
.LVL110:
.LBE154:
.LBB155:
.LBB156:
.loc 1 202 0
lwz 3,0(25)
.LVL111:
.loc 1 203 0
cmpwi 7,3,0
beq 7,.L96
.p2align 4,,15
.L97:
.LVL112:
.loc 1 205 0
lwz 8,4(3)
.LBE156:
.LBE155:
.loc 1 281 0
lwz 9,0(3)
.LBB159:
.LBB157:
.loc 1 205 0
stw 8,0(25)
.LVL113:
.LBE157:
.LBE159:
.loc 1 281 0
srawi 10,9,31
addc 30,9,30
.LVL114:
adde 28,10,28
.LVL115:
.loc 1 282 0
bl free
.LVL116:
.LBB160:
.LBB158:
.loc 1 202 0
lwz 3,0(25)
.LVL117:
.loc 1 203 0
cmpwi 7,3,0
bne 7,.L97
.LVL118:
.LBE158:
.LBE160:
.LBE153:
.loc 1 274 0
cmpwi 7,27,1023
addi 25,25,128
addi 27,27,1
.LVL119:
bne 7,.L98
.LVL120:
.L122:
.loc 1 291 0
cmplw 7,28,26
bne- 7,.L102
cmplw 7,30,29
bne- 7,.L102
.loc 1 292 0
lwz 9,956(31)
lwz 10,-28680(2)
xor. 9,9,10
li 10,0
bne- 0,.L123
addi 11,31,1008
lwz 0,4(11)
lwz 23,-36(11)
lwz 31,-4(11)
.cfi_remember_state
.cfi_def_cfa 11, 0
lwz 24,-32(11)
.LVL121:
mtlr 0
.cfi_restore 65
lwz 25,-28(11)
lwz 26,-24(11)
.LVL122:
lwz 27,-20(11)
.LVL123:
lwz 28,-16(11)
lwz 29,-12(11)
lwz 30,-8(11)
mr 1,11
.cfi_restore 31
.cfi_restore 30
.cfi_restore 29
.cfi_restore 28
.cfi_restore 27
.cfi_restore 26
.cfi_restore 25
.cfi_restore 24
.cfi_restore 23
.cfi_def_cfa_register 1
blr
.LVL124:
.L121:
.cfi_restore_state
.LBB161:
.loc 1 260 0 discriminator 1
lis 6,.LANCHOR0@ha
lis 4,.LC0@ha
la 6,.LANCHOR0@l(6)
lis 3,.LC5@ha
.LVL125:
addi 6,6,44
li 5,260
la 4,.LC0@l(4)
la 3,.LC5@l(3)
bl __assert_fail
.LVL126:
.L102:
.LBE161:
.loc 1 291 0 discriminator 1
lis 6,.LANCHOR0@ha
lis 4,.LC0@ha
la 6,.LANCHOR0@l(6)
lis 3,.LC6@ha
addi 6,6,44
li 5,291
la 4,.LC0@l(4)
la 3,.LC6@l(3)
bl __assert_fail
.LVL127:
.L123:
.loc 1 292 0
bl __stack_chk_fail
.LVL128:
.cfi_endproc
.LFE123:
.size test_percpu_list,.-test_percpu_list
.section .text.startup,"ax",@progbits
.align 2
.p2align 4,,15
.globl main
.type main, @function
main:
.LFB124:
.loc 1 295 0
.cfi_startproc
stwu 1,-32(1)
.cfi_def_cfa_offset 32
mflr 0
stw 30,24(1)
stw 0,36(1)
stw 31,28(1)
.cfi_offset 65, 4
.cfi_offset 30, -8
.cfi_offset 31, -4
.loc 1 296 0
bl rseq_register_current_thread
.LVL129:
cmpwi 7,3,0
bne 7,.L131
.LVL130:
.LBB162:
.LBB163:
.loc 4 104 0
lis 3,.LC7@ha
la 3,.LC7@l(3)
bl puts
.LVL131:
.LBE163:
.LBE162:
.loc 1 302 0
bl test_percpu_spinlock
.LVL132:
.LBB164:
.LBB165:
.loc 4 104 0
lis 3,.LC8@ha
la 3,.LC8@l(3)
bl puts
.LVL133:
.LBE165:
.LBE164:
.loc 1 304 0
bl test_percpu_list
.LVL134:
.loc 1 305 0
bl rseq_unregister_current_thread
.LVL135:
cmpwi 0,3,0
bne 0,.L132
.L126:
.loc 1 314 0
lwz 0,36(1)
lwz 30,24(1)
lwz 31,28(1)
addi 1,1,32
.cfi_remember_state
.cfi_restore 31
.cfi_restore 30
.cfi_def_cfa_offset 0
mtlr 0
.cfi_restore 65
blr
.L131:
.cfi_restore_state
.loc 1 297 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 298 0
bl __errno_location
.LVL136:
.loc 1 297 0
lwz 31,0(3)
mr 3,31
bl strerror
.LVL137:
.LBB166:
.LBB167:
.loc 4 97 0
lis 5,.LC2@ha
mr 6,31
la 5,.LC2@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL138:
.LBE167:
.LBE166:
.loc 1 313 0
li 3,-1
b .L126
.LVL139:
.L132:
.loc 1 306 0
lis 9,stderr@ha
lwz 30,stderr@l(9)
.loc 1 307 0
bl __errno_location
.LVL140:
.loc 1 306 0
lwz 31,0(3)
mr 3,31
bl strerror
.LVL141:
.LBB168:
.LBB169:
.loc 4 97 0
lis 5,.LC3@ha
mr 6,31
la 5,.LC3@l(5)
li 4,1
mr 7,3
mr 3,30
crxor 6,6,6
bl __fprintf_chk
.LVL142:
.LBE169:
.LBE168:
.loc 1 313 0
li 3,-1
b .L126
.cfi_endproc
.LFE124:
.size main,.-main
.section .rodata
.align 2
.set .LANCHOR0,. + 0
.type __PRETTY_FUNCTION__.5645, @object
.size __PRETTY_FUNCTION__.5645, 19
__PRETTY_FUNCTION__.5645:
.string "rseq_percpu_unlock"
.zero 1
.type __PRETTY_FUNCTION__.5672, @object
.size __PRETTY_FUNCTION__.5672, 21
__PRETTY_FUNCTION__.5672:
.string "test_percpu_spinlock"
.zero 3
.type __PRETTY_FUNCTION__.5725, @object
.size __PRETTY_FUNCTION__.5725, 17
__PRETTY_FUNCTION__.5725:
.string "test_percpu_list"
.section .rodata.str1.4,"aMS",@progbits,1
.align 2
.LC0:
.string "basic_percpu_ops_test.c"
.LC1:
.string "lock->c[cpu].v == 1"
.LC2:
.string "Error: rseq_register_current_thread(...) failed(%d): %s\n"
.zero 3
.LC3:
.string "Error: rseq_unregister_current_thread(...) failed(%d): %s\n"
.zero 1
.LC4:
.string "sum == (uint64_t)data.reps * num_threads"
.zero 3
.LC5:
.string "node"
.zero 3
.LC6:
.string "sum == expected_sum"
.LC7:
.string "spinlock"
.zero 3
.LC8:
.string "percpu_list"
.section ".text"
.Letext0:
.file 6 "/usr/include/powerpc-linux-gnu/bits/types.h"
.file 7 "/usr/lib/gcc/powerpc-linux-gnu/5/include/stddef.h"
.file 8 "/usr/include/powerpc-linux-gnu/bits/sched.h"
.file 9 "/usr/include/powerpc-linux-gnu/bits/pthreadtypes.h"
.file 10 "/usr/include/stdint.h"
.file 11 "/usr/include/stdio.h"
.file 12 "/usr/include/libio.h"
.file 13 "/usr/include/asm-generic/int-ll64.h"
.file 14 "/home/compudj/git/librseq/extra/linux/rseq.h"
.file 15 "/usr/include/assert.h"
.file 16 "/usr/include/powerpc-linux-gnu/bits/errno.h"
.file 17 "/usr/include/string.h"
.file 18 "/usr/include/stdlib.h"
.file 19 "/usr/include/pthread.h"
.file 20 "/usr/include/sched.h"
.file 21 "<built-in>"
.section .debug_info,"",@progbits
.Ldebug_info0:
.4byte 0x142c
.2byte 0x4
.4byte .Ldebug_abbrev0
.byte 0x4
.uleb128 0x1
.4byte .LASF140
.byte 0xc
.4byte .LASF141
.4byte .LASF142
.4byte .Ldebug_ranges0+0x160
.4byte 0
.4byte .Ldebug_line0
.uleb128 0x2
.byte 0x1
.byte 0x8
.4byte .LASF0
.uleb128 0x2
.byte 0x2
.byte 0x7
.4byte .LASF1
.uleb128 0x2
.byte 0x4
.byte 0x7
.4byte .LASF2
.uleb128 0x2
.byte 0x4
.byte 0x7
.4byte .LASF3
.uleb128 0x2
.byte 0x1
.byte 0x6
.4byte .LASF4
.uleb128 0x2
.byte 0x2
.byte 0x5
.4byte .LASF5
.uleb128 0x3
.byte 0x4
.byte 0x5
.string "int"
.uleb128 0x2
.byte 0x8
.byte 0x5
.4byte .LASF6
.uleb128 0x2
.byte 0x8
.byte 0x7
.4byte .LASF7
.uleb128 0x4
.4byte .LASF8
.byte 0x6
.byte 0x37
.4byte 0x56
.uleb128 0x4
.4byte .LASF9
.byte 0x6
.byte 0x83
.4byte 0x7a
.uleb128 0x2
.byte 0x4
.byte 0x5
.4byte .LASF10
.uleb128 0x4
.4byte .LASF11
.byte 0x6
.byte 0x84
.4byte 0x64
.uleb128 0x2
.byte 0x4
.byte 0x7
.4byte .LASF12
.uleb128 0x5
.byte 0x4
.uleb128 0x6
.byte 0x4
.4byte 0x9b
.uleb128 0x2
.byte 0x1
.byte 0x8
.4byte .LASF13
.uleb128 0x4
.4byte .LASF14
.byte 0x7
.byte 0xd8
.4byte 0x33
.uleb128 0x4
.4byte .LASF15
.byte 0x8
.byte 0x76
.4byte 0x3a
.uleb128 0x7
.byte 0x80
.byte 0x8
.byte 0x7d
.4byte 0xcd
.uleb128 0x8
.4byte .LASF22
.byte 0x8
.byte 0x7f
.4byte 0xcd
.byte 0
.byte 0
.uleb128 0x9
.4byte 0xad
.4byte 0xdd
.uleb128 0xa
.4byte 0x8c
.byte 0x1f
.byte 0
.uleb128 0x4
.4byte .LASF16
.byte 0x8
.byte 0x80
.4byte 0xb8
.uleb128 0x6
.byte 0x4
.4byte 0xee
.uleb128 0xb
.4byte 0x9b
.uleb128 0xb
.4byte 0x4f
.uleb128 0x4
.4byte .LASF17
.byte 0x9
.byte 0x31
.4byte 0x3a
.uleb128 0x4
.4byte .LASF18
.byte 0xa
.byte 0x33
.4byte 0x33
.uleb128 0x4
.4byte .LASF19
.byte 0xa
.byte 0x3a
.4byte 0x5d
.uleb128 0x4
.4byte .LASF20
.byte 0xa
.byte 0x7d
.4byte 0x4f
.uleb128 0x4
.4byte .LASF21
.byte 0xb
.byte 0x30
.4byte 0x12f
.uleb128 0xc
.4byte .LASF52
.byte 0x98
.byte 0xc
.byte 0xf1
.4byte 0x2ac
.uleb128 0x8
.4byte .LASF23
.byte 0xc
.byte 0xf2
.4byte 0x4f
.byte 0
.uleb128 0x8
.4byte .LASF24
.byte 0xc
.byte 0xf7
.4byte 0x95
.byte 0x4
.uleb128 0x8
.4byte .LASF25
.byte 0xc
.byte 0xf8
.4byte 0x95
.byte 0x8
.uleb128 0x8
.4byte .LASF26
.byte 0xc
.byte 0xf9
.4byte 0x95
.byte 0xc
.uleb128 0x8
.4byte .LASF27
.byte 0xc
.byte 0xfa
.4byte 0x95
.byte 0x10
.uleb128 0x8
.4byte .LASF28
.byte 0xc
.byte 0xfb
.4byte 0x95
.byte 0x14
.uleb128 0x8
.4byte .LASF29
.byte 0xc
.byte 0xfc
.4byte 0x95
.byte 0x18
.uleb128 0x8
.4byte .LASF30
.byte 0xc
.byte 0xfd
.4byte 0x95
.byte 0x1c
.uleb128 0x8
.4byte .LASF31
.byte 0xc
.byte 0xfe
.4byte 0x95
.byte 0x20
.uleb128 0xd
.4byte .LASF32
.byte 0xc
.2byte 0x100
.4byte 0x95
.byte 0x24
.uleb128 0xd
.4byte .LASF33
.byte 0xc
.2byte 0x101
.4byte 0x95
.byte 0x28
.uleb128 0xd
.4byte .LASF34
.byte 0xc
.2byte 0x102
.4byte 0x95
.byte 0x2c
.uleb128 0xd
.4byte .LASF35
.byte 0xc
.2byte 0x104
.4byte 0x2e4
.byte 0x30
.uleb128 0xd
.4byte .LASF36
.byte 0xc
.2byte 0x106
.4byte 0x2ea
.byte 0x34
.uleb128 0xd
.4byte .LASF37
.byte 0xc
.2byte 0x108
.4byte 0x4f
.byte 0x38
.uleb128 0xd
.4byte .LASF38
.byte 0xc
.2byte 0x10c
.4byte 0x4f
.byte 0x3c
.uleb128 0xd
.4byte .LASF39
.byte 0xc
.2byte 0x10e
.4byte 0x6f
.byte 0x40
.uleb128 0xd
.4byte .LASF40
.byte 0xc
.2byte 0x112
.4byte 0x2c
.byte 0x44
.uleb128 0xd
.4byte .LASF41
.byte 0xc
.2byte 0x113
.4byte 0x41
.byte 0x46
.uleb128 0xd
.4byte .LASF42
.byte 0xc
.2byte 0x114
.4byte 0x2f0
.byte 0x47
.uleb128 0xd
.4byte .LASF43
.byte 0xc
.2byte 0x118
.4byte 0x300
.byte 0x48
.uleb128 0xd
.4byte .LASF44
.byte 0xc
.2byte 0x121
.4byte 0x81
.byte 0x50
.uleb128 0xd
.4byte .LASF45
.byte 0xc
.2byte 0x129
.4byte 0x93
.byte 0x58
.uleb128 0xd
.4byte .LASF46
.byte 0xc
.2byte 0x12a
.4byte 0x93
.byte 0x5c
.uleb128 0xd
.4byte .LASF47
.byte 0xc
.2byte 0x12b
.4byte 0x93
.byte 0x60
.uleb128 0xd
.4byte .LASF48
.byte 0xc
.2byte 0x12c
.4byte 0x93
.byte 0x64
.uleb128 0xd
.4byte .LASF49
.byte 0xc
.2byte 0x12e
.4byte 0xa2
.byte 0x68
.uleb128 0xd
.4byte .LASF50
.byte 0xc
.2byte 0x12f
.4byte 0x4f
.byte 0x6c
.uleb128 0xd
.4byte .LASF51
.byte 0xc
.2byte 0x131
.4byte 0x306
.byte 0x70
.byte 0
.uleb128 0xe
.4byte .LASF143
.byte 0xc
.byte 0x96
.uleb128 0xc
.4byte .LASF53
.byte 0xc
.byte 0xc
.byte 0x9c
.4byte 0x2e4
.uleb128 0x8
.4byte .LASF54
.byte 0xc
.byte 0x9d
.4byte 0x2e4
.byte 0
.uleb128 0x8
.4byte .LASF55
.byte 0xc
.byte 0x9e
.4byte 0x2ea
.byte 0x4
.uleb128 0x8
.4byte .LASF56
.byte 0xc
.byte 0xa2
.4byte 0x4f
.byte 0x8
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x2b3
.uleb128 0x6
.byte 0x4
.4byte 0x12f
.uleb128 0x9
.4byte 0x9b
.4byte 0x300
.uleb128 0xa
.4byte 0x8c
.byte 0
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x2ac
.uleb128 0x9
.4byte 0x9b
.4byte 0x316
.uleb128 0xa
.4byte 0x8c
.byte 0x27
.byte 0
.uleb128 0x4
.4byte .LASF57
.byte 0xb
.byte 0x5a
.4byte 0x6f
.uleb128 0x6
.byte 0x4
.4byte 0x4f
.uleb128 0x2
.byte 0x10
.byte 0x4
.4byte .LASF58
.uleb128 0x4
.4byte .LASF59
.byte 0xd
.byte 0x1a
.4byte 0x33
.uleb128 0x4
.4byte .LASF60
.byte 0xd
.byte 0x1e
.4byte 0x5d
.uleb128 0x2
.byte 0x8
.byte 0x4
.4byte .LASF61
.uleb128 0x7
.byte 0x8
.byte 0xe
.byte 0x72
.4byte 0x36c
.uleb128 0x8
.4byte .LASF62
.byte 0xe
.byte 0x74
.4byte 0x32e
.byte 0
.uleb128 0x8
.4byte .LASF63
.byte 0xe
.byte 0x75
.4byte 0x32e
.byte 0x4
.byte 0
.uleb128 0xf
.byte 0x8
.byte 0xe
.byte 0x6d
.4byte 0x38b
.uleb128 0x10
.4byte .LASF64
.byte 0xe
.byte 0x6e
.4byte 0x339
.uleb128 0x11
.string "ptr"
.byte 0xe
.byte 0x7a
.4byte 0x34b
.byte 0
.uleb128 0xc
.4byte .LASF65
.byte 0x20
.byte 0xe
.byte 0x3e
.4byte 0x3c8
.uleb128 0x8
.4byte .LASF66
.byte 0xe
.byte 0x4b
.4byte 0x32e
.byte 0
.uleb128 0x8
.4byte .LASF67
.byte 0xe
.byte 0x5a
.4byte 0x32e
.byte 0x4
.uleb128 0x8
.4byte .LASF68
.byte 0xe
.byte 0x7c
.4byte 0x36c
.byte 0x8
.uleb128 0x8
.4byte .LASF69
.byte 0xe
.byte 0x90
.4byte 0x32e
.byte 0x10
.byte 0
.uleb128 0xc
.4byte .LASF70
.byte 0x80
.byte 0x1
.byte 0x12
.4byte 0x3df
.uleb128 0x12
.string "v"
.byte 0x1
.byte 0x13
.4byte 0x119
.byte 0
.byte 0
.uleb128 0x13
.4byte .LASF71
.4byte 0x20000
.byte 0x1
.byte 0x16
.4byte 0x3f9
.uleb128 0x12
.string "c"
.byte 0x1
.byte 0x17
.4byte 0x3f9
.byte 0
.byte 0
.uleb128 0x9
.4byte 0x3c8
.4byte 0x40a
.uleb128 0x14
.4byte 0x8c
.2byte 0x3ff
.byte 0
.uleb128 0xc
.4byte .LASF72
.byte 0x80
.byte 0x1
.byte 0x1a
.4byte 0x423
.uleb128 0x8
.4byte .LASF73
.byte 0x1
.byte 0x1b
.4byte 0x119
.byte 0
.byte 0
.uleb128 0x13
.4byte .LASF74
.4byte 0x40080
.byte 0x1
.byte 0x1e
.4byte 0x45b
.uleb128 0x8
.4byte .LASF75
.byte 0x1
.byte 0x1f
.4byte 0x3df
.byte 0
.uleb128 0x15
.string "c"
.byte 0x1
.byte 0x20
.4byte 0x45b
.4byte 0x20000
.uleb128 0x16
.4byte .LASF76
.byte 0x1
.byte 0x21
.4byte 0x4f
.4byte 0x40000
.byte 0
.uleb128 0x9
.4byte 0x40a
.4byte 0x46c
.uleb128 0x14
.4byte 0x8c
.2byte 0x3ff
.byte 0
.uleb128 0xc
.4byte .LASF77
.byte 0x8
.byte 0x1
.byte 0x24
.4byte 0x491
.uleb128 0x8
.4byte .LASF78
.byte 0x1
.byte 0x25
.4byte 0x119
.byte 0
.uleb128 0x8
.4byte .LASF79
.byte 0x1
.byte 0x26
.4byte 0x491
.byte 0x4
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x46c
.uleb128 0xc
.4byte .LASF80
.byte 0x80
.byte 0x1
.byte 0x29
.4byte 0x4b0
.uleb128 0x8
.4byte .LASF81
.byte 0x1
.byte 0x2a
.4byte 0x491
.byte 0
.byte 0
.uleb128 0x13
.4byte .LASF82
.4byte 0x20000
.byte 0x1
.byte 0x2d
.4byte 0x4ca
.uleb128 0x12
.string "c"
.byte 0x1
.byte 0x2e
.4byte 0x4ca
.byte 0
.byte 0
.uleb128 0x9
.4byte 0x497
.4byte 0x4db
.uleb128 0x14
.4byte 0x8c
.2byte 0x3ff
.byte 0
.uleb128 0x17
.4byte .LASF99
.byte 0x3
.byte 0xcf
.4byte 0x4f
.byte 0x3
.4byte 0x524
.uleb128 0x18
.string "v"
.byte 0x3
.byte 0xcf
.4byte 0x524
.uleb128 0x19
.4byte .LASF83
.byte 0x3
.byte 0xcf
.4byte 0x119
.uleb128 0x19
.4byte .LASF84
.byte 0x3
.byte 0xcf
.4byte 0x119
.uleb128 0x18
.string "cpu"
.byte 0x3
.byte 0xcf
.4byte 0x4f
.uleb128 0x1a
.4byte .LASF85
.byte 0x3
.byte 0xfc
.uleb128 0x1a
.4byte .LASF86
.byte 0x3
.byte 0xff
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x119
.uleb128 0x1b
.4byte .LASF144
.byte 0x2
.byte 0x8c
.4byte 0x103
.byte 0x3
.uleb128 0x1c
.4byte .LASF94
.byte 0x1
.byte 0x48
.byte 0x1
.4byte 0x566
.uleb128 0x19
.4byte .LASF75
.byte 0x1
.byte 0x48
.4byte 0x566
.uleb128 0x18
.string "cpu"
.byte 0x1
.byte 0x48
.4byte 0x4f
.uleb128 0x1d
.4byte .LASF96
.4byte 0x57c
.4byte .LASF94
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x3df
.uleb128 0x9
.4byte 0xee
.4byte 0x57c
.uleb128 0xa
.4byte 0x8c
.byte 0x12
.byte 0
.uleb128 0xb
.4byte 0x56c
.uleb128 0x1e
.4byte .LASF89
.byte 0x4
.byte 0x5f
.4byte 0x4f
.byte 0x3
.4byte 0x5a9
.uleb128 0x19
.4byte .LASF87
.byte 0x4
.byte 0x5f
.4byte 0x5af
.uleb128 0x19
.4byte .LASF88
.byte 0x4
.byte 0x5f
.4byte 0x5b4
.uleb128 0x1f
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x124
.uleb128 0x20
.4byte 0x5a9
.uleb128 0x20
.4byte 0xe8
.uleb128 0x1e
.4byte .LASF90
.byte 0x5
.byte 0x4e
.4byte 0x93
.byte 0x3
.4byte 0x5eb
.uleb128 0x19
.4byte .LASF91
.byte 0x5
.byte 0x4e
.4byte 0x93
.uleb128 0x19
.4byte .LASF92
.byte 0x5
.byte 0x4e
.4byte 0x4f
.uleb128 0x19
.4byte .LASF93
.byte 0x5
.byte 0x4e
.4byte 0xa2
.byte 0
.uleb128 0x1c
.4byte .LASF95
.byte 0x1
.byte 0x70
.byte 0x1
.4byte 0x63a
.uleb128 0x21
.4byte .LASF97
.byte 0x1
.byte 0x72
.4byte 0xf3
.uleb128 0x22
.string "i"
.byte 0x1
.byte 0x73
.4byte 0x4f
.uleb128 0x22
.string "sum"
.byte 0x1
.byte 0x74
.4byte 0x10e
.uleb128 0x21
.4byte .LASF98
.byte 0x1
.byte 0x75
.4byte 0x63a
.uleb128 0x21
.4byte .LASF78
.byte 0x1
.byte 0x76
.4byte 0x423
.uleb128 0x1d
.4byte .LASF96
.4byte 0x659
.4byte .LASF95
.byte 0
.uleb128 0x9
.4byte 0xf8
.4byte 0x649
.uleb128 0x23
.4byte 0x8c
.byte 0
.uleb128 0x9
.4byte 0xee
.4byte 0x659
.uleb128 0xa
.4byte 0x8c
.byte 0x14
.byte 0
.uleb128 0xb
.4byte 0x649
.uleb128 0x24
.4byte .LASF100
.byte 0x3
.2byte 0x10a
.4byte 0x4f
.byte 0x3
.4byte 0x6ba
.uleb128 0x25
.string "v"
.byte 0x3
.2byte 0x10a
.4byte 0x524
.uleb128 0x26
.4byte .LASF101
.byte 0x3
.2byte 0x10a
.4byte 0x119
.uleb128 0x26
.4byte .LASF102
.byte 0x3
.2byte 0x10b
.4byte 0x316
.uleb128 0x26
.4byte .LASF103
.byte 0x3
.2byte 0x10b
.4byte 0x524
.uleb128 0x25
.string "cpu"
.byte 0x3
.2byte 0x10b
.4byte 0x4f
.uleb128 0x27
.4byte .LASF85
.byte 0x3
.2byte 0x140
.uleb128 0x27
.4byte .LASF86
.byte 0x3
.2byte 0x143
.byte 0
.uleb128 0x28
.4byte .LASF106
.byte 0x1
.byte 0xd1
.4byte 0x93
.byte 0x1
.4byte 0x6f7
.uleb128 0x18
.string "arg"
.byte 0x1
.byte 0xd1
.4byte 0x93
.uleb128 0x22
.string "i"
.byte 0x1
.byte 0xd3
.4byte 0x4f
.uleb128 0x21
.4byte .LASF104
.byte 0x1
.byte 0xd4
.4byte 0x6f7
.uleb128 0x29
.uleb128 0x21
.4byte .LASF105
.byte 0x1
.byte 0xdd
.4byte 0x491
.byte 0
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x4b0
.uleb128 0x28
.4byte .LASF107
.byte 0x1
.byte 0xc6
.4byte 0x491
.byte 0x1
.4byte 0x72f
.uleb128 0x19
.4byte .LASF104
.byte 0x1
.byte 0xc6
.4byte 0x6f7
.uleb128 0x18
.string "cpu"
.byte 0x1
.byte 0xc6
.4byte 0x4f
.uleb128 0x21
.4byte .LASF105
.byte 0x1
.byte 0xc8
.4byte 0x491
.byte 0
.uleb128 0x1e
.4byte .LASF108
.byte 0x4
.byte 0x66
.4byte 0x4f
.byte 0x3
.4byte 0x74c
.uleb128 0x19
.4byte .LASF88
.byte 0x4
.byte 0x66
.4byte 0x5b4
.uleb128 0x1f
.byte 0
.uleb128 0x2a
.4byte 0x536
.4byte .LFB125
.4byte .LFE125-.LFB125
.uleb128 0x1
.byte 0x9c
.4byte 0x7ae
.uleb128 0x2b
.4byte 0x54d
.uleb128 0x6
.byte 0xfa
.4byte 0x54d
.byte 0x9f
.uleb128 0x2b
.4byte 0x542
.uleb128 0x6
.byte 0xfa
.4byte 0x542
.byte 0x9f
.uleb128 0x2c
.4byte 0x558
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5645
.uleb128 0x2d
.4byte .LVL1
.4byte 0x135c
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC1
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x5
.byte 0x3
.4byte .LC0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8
.byte 0x4a
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x5
.byte 0x3
.4byte .LANCHOR0
.byte 0
.byte 0
.uleb128 0x2f
.4byte .LASF109
.byte 0x1
.byte 0x32
.4byte 0x4f
.4byte .LFB115
.4byte .LFE115-.LFB115
.uleb128 0x1
.byte 0x9c
.4byte 0x850
.uleb128 0x30
.4byte .LASF75
.byte 0x1
.byte 0x32
.4byte 0x566
.4byte .LLST0
.uleb128 0x31
.string "cpu"
.byte 0x1
.byte 0x34
.4byte 0x4f
.uleb128 0x1
.byte 0x5a
.uleb128 0x32
.4byte .Ldebug_ranges0+0
.uleb128 0x22
.string "ret"
.byte 0x1
.byte 0x37
.4byte 0x4f
.uleb128 0x33
.4byte 0x52a
.4byte .LBB73
.4byte .Ldebug_ranges0+0x18
.byte 0x1
.byte 0x39
.uleb128 0x34
.4byte 0x4db
.4byte .LBB77
.4byte .Ldebug_ranges0+0x38
.byte 0x1
.byte 0x3a
.uleb128 0x35
.4byte 0x50a
.4byte .LLST1
.uleb128 0x35
.4byte 0x4ff
.4byte .LLST2
.uleb128 0x35
.4byte 0x4f4
.4byte .LLST3
.uleb128 0x35
.4byte 0x4eb
.4byte .LLST4
.uleb128 0x32
.4byte .Ldebug_ranges0+0x38
.uleb128 0x36
.4byte 0x515
.4byte .L5
.uleb128 0x36
.4byte 0x51c
.4byte .L4
.byte 0
.byte 0
.byte 0
.byte 0
.uleb128 0x2f
.4byte .LASF110
.byte 0x1
.byte 0x52
.4byte 0x93
.4byte .LFB117
.4byte .LFE117-.LFB117
.uleb128 0x1
.byte 0x9c
.4byte 0x9ef
.uleb128 0x37
.string "arg"
.byte 0x1
.byte 0x52
.4byte 0x93
.4byte .LLST5
.uleb128 0x38
.4byte .LASF78
.byte 0x1
.byte 0x54
.4byte 0x9ef
.4byte .LLST6
.uleb128 0x39
.string "i"
.byte 0x1
.byte 0x55
.4byte 0x4f
.4byte .LLST7
.uleb128 0x39
.string "cpu"
.byte 0x1
.byte 0x55
.4byte 0x4f
.4byte .LLST8
.uleb128 0x3a
.4byte 0x536
.4byte .LBB86
.4byte .Ldebug_ranges0+0x58
.byte 0x1
.byte 0x5f
.4byte 0x8e8
.uleb128 0x3b
.4byte 0x54d
.uleb128 0x35
.4byte 0x542
.4byte .LLST9
.uleb128 0x32
.4byte .Ldebug_ranges0+0x58
.uleb128 0x2c
.4byte 0x558
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5645
.uleb128 0x2d
.4byte .LVL20
.4byte 0x74c
.uleb128 0x3c
.4byte 0x542
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.byte 0
.uleb128 0x3d
.4byte 0x581
.4byte .LBB92
.4byte .LBE92-.LBB92
.byte 0x1
.byte 0x58
.4byte 0x932
.uleb128 0x35
.4byte 0x59c
.4byte .LLST10
.uleb128 0x35
.4byte 0x591
.4byte .LLST11
.uleb128 0x2d
.4byte .LVL24
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC2
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3d
.4byte 0x581
.4byte .LBB94
.4byte .LBE94-.LBB94
.byte 0x1
.byte 0x62
.4byte 0x97c
.uleb128 0x35
.4byte 0x59c
.4byte .LLST12
.uleb128 0x35
.4byte 0x591
.4byte .LLST13
.uleb128 0x2d
.4byte .LVL29
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC3
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL8
.4byte 0x1372
.uleb128 0x3f
.4byte .LVL11
.4byte 0x7ae
.4byte 0x999
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL17
.4byte 0x137d
.uleb128 0x3e
.4byte .LVL21
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL23
.4byte 0x1393
.4byte 0x9bf
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL25
.4byte 0x139f
.uleb128 0x3e
.4byte .LVL26
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL28
.4byte 0x1393
.4byte 0x9e5
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL30
.4byte 0x139f
.byte 0
.uleb128 0x6
.byte 0x4
.4byte 0x423
.uleb128 0x2a
.4byte 0x536
.4byte .LFB116
.4byte .LFE116-.LFB116
.uleb128 0x1
.byte 0x9c
.4byte 0xa42
.uleb128 0x35
.4byte 0x542
.4byte .LLST14
.uleb128 0x35
.4byte 0x54d
.4byte .LLST15
.uleb128 0x2c
.4byte 0x558
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5645
.uleb128 0x2d
.4byte .LVL33
.4byte 0x74c
.uleb128 0x3c
.4byte 0x542
.uleb128 0x3
.byte 0xf3
.uleb128 0x1
.byte 0x53
.uleb128 0x3c
.4byte 0x54d
.uleb128 0x3
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0
.byte 0
.uleb128 0x2a
.4byte 0x5eb
.4byte .LFB118
.4byte .LFE118-.LFB118
.uleb128 0x1
.byte 0x9c
.4byte 0xb71
.uleb128 0x40
.4byte 0x5f7
.byte 0xc8
.uleb128 0x41
.4byte 0x602
.4byte .LLST16
.uleb128 0x41
.4byte 0x60b
.4byte .LLST17
.uleb128 0x42
.4byte 0x616
.4byte 0x63a
.4byte .LLST18
.uleb128 0x2c
.4byte 0x621
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2c
.4byte 0x62c
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5672
.uleb128 0x3a
.4byte 0x5b9
.4byte .LBB102
.4byte .Ldebug_ranges0+0x78
.byte 0x1
.byte 0x78
.4byte 0xace
.uleb128 0x3b
.4byte 0x5df
.uleb128 0x3b
.4byte 0x5d4
.uleb128 0x3b
.4byte 0x5c9
.uleb128 0x2d
.4byte .LVL35
.4byte 0x13ab
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0xc
.4byte 0x40080
.byte 0
.byte 0
.uleb128 0x43
.4byte .LBB109
.4byte .LBE109-.LBB109
.4byte 0xb2f
.uleb128 0x44
.4byte 0x5f7
.uleb128 0x44
.4byte 0x602
.uleb128 0x44
.4byte 0x60b
.uleb128 0x45
.4byte 0x616
.4byte 0xb71
.uleb128 0x44
.4byte 0x621
.uleb128 0x2c
.4byte 0x62c
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5672
.uleb128 0x2d
.4byte .LVL48
.4byte 0x135c
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC4
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x5
.byte 0x3
.4byte .LC0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8
.byte 0x86
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x5
.byte 0x3
.4byte .LANCHOR0+20
.byte 0
.byte 0
.uleb128 0x3f
.4byte .LVL38
.4byte 0x13b4
.4byte 0xb54
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 -4
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8a
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8e
.sleb128 0
.byte 0
.uleb128 0x3f
.4byte .LVL40
.4byte 0x13bf
.4byte 0xb67
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x3e
.4byte .LVL49
.4byte 0x13ca
.byte 0
.uleb128 0x9
.4byte 0xf8
.4byte 0xb80
.uleb128 0x23
.4byte 0x8c
.byte 0
.uleb128 0x46
.4byte .LASF116
.byte 0x1
.byte 0x89
.4byte .LFB119
.4byte .LFE119-.LFB119
.uleb128 0x1
.byte 0x9c
.4byte 0xc68
.uleb128 0x47
.4byte .LASF104
.byte 0x1
.byte 0x89
.4byte 0x6f7
.uleb128 0x1
.byte 0x53
.uleb128 0x47
.4byte .LASF105
.byte 0x1
.byte 0x8a
.4byte 0x491
.uleb128 0x1
.byte 0x54
.uleb128 0x47
.4byte .LASF111
.byte 0x1
.byte 0x8b
.4byte 0x321
.uleb128 0x1
.byte 0x55
.uleb128 0x31
.string "cpu"
.byte 0x1
.byte 0x8d
.4byte 0x4f
.uleb128 0x1
.byte 0x5a
.uleb128 0x32
.4byte .Ldebug_ranges0+0x98
.uleb128 0x48
.4byte .LASF112
.byte 0x1
.byte 0x90
.4byte 0x524
.uleb128 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.uleb128 0x48
.4byte .LASF113
.byte 0x1
.byte 0x90
.4byte 0x119
.uleb128 0x1
.byte 0x54
.uleb128 0x48
.4byte .LASF83
.byte 0x1
.byte 0x90
.4byte 0x119
.uleb128 0x1
.byte 0x57
.uleb128 0x22
.string "ret"
.byte 0x1
.byte 0x91
.4byte 0x4f
.uleb128 0x33
.4byte 0x52a
.4byte .LBB111
.4byte .Ldebug_ranges0+0xb0
.byte 0x1
.byte 0x93
.uleb128 0x49
.4byte 0x4db
.4byte .LBB115
.4byte .LBE115-.LBB115
.byte 0x1
.byte 0x99
.uleb128 0x35
.4byte 0x50a
.4byte .LLST19
.uleb128 0x35
.4byte 0x4ff
.4byte .LLST20
.uleb128 0x35
.4byte 0x4f4
.4byte .LLST21
.uleb128 0x35
.4byte 0x4eb
.4byte .LLST22
.uleb128 0x4a
.4byte .LBB116
.4byte .LBE116-.LBB116
.uleb128 0x36
.4byte 0x515
.4byte .L45
.uleb128 0x36
.4byte 0x51c
.4byte .L44
.byte 0
.byte 0
.byte 0
.byte 0
.uleb128 0x2f
.4byte .LASF114
.byte 0x1
.byte 0xa7
.4byte 0x491
.4byte .LFB120
.4byte .LFE120-.LFB120
.uleb128 0x1
.byte 0x9c
.4byte 0xd7a
.uleb128 0x30
.4byte .LASF104
.byte 0x1
.byte 0xa7
.4byte 0x6f7
.4byte .LLST23
.uleb128 0x30
.4byte .LASF111
.byte 0x1
.byte 0xa8
.4byte 0x321
.4byte .LLST24
.uleb128 0x4b
.4byte .Ldebug_ranges0+0xc8
.4byte 0xd70
.uleb128 0x48
.4byte .LASF81
.byte 0x1
.byte 0xab
.4byte 0x491
.uleb128 0x3
.byte 0x91
.sleb128 -72
.uleb128 0x38
.4byte .LASF112
.byte 0x1
.byte 0xac
.4byte 0x524
.4byte .LLST25
.uleb128 0x4c
.4byte .LASF101
.byte 0x1
.byte 0xac
.4byte 0x119
.byte 0
.uleb128 0x38
.4byte .LASF103
.byte 0x1
.byte 0xac
.4byte 0x524
.4byte .LLST26
.uleb128 0x4c
.4byte .LASF115
.byte 0x1
.byte 0xad
.4byte 0x316
.byte 0x4
.uleb128 0x22
.string "ret"
.byte 0x1
.byte 0xae
.4byte 0x4f
.uleb128 0x39
.string "cpu"
.byte 0x1
.byte 0xae
.4byte 0x4f
.4byte .LLST27
.uleb128 0x3a
.4byte 0x65e
.4byte .LBB119
.4byte .Ldebug_ranges0+0xe8
.byte 0x1
.byte 0xb5
.4byte 0xd60
.uleb128 0x35
.4byte 0x69d
.4byte .LLST28
.uleb128 0x35
.4byte 0x691
.4byte .LLST29
.uleb128 0x35
.4byte 0x685
.4byte .LLST30
.uleb128 0x35
.4byte 0x679
.4byte .LLST31
.uleb128 0x35
.4byte 0x66f
.4byte .LLST32
.uleb128 0x32
.4byte .Ldebug_ranges0+0xe8
.uleb128 0x36
.4byte 0x6a9
.4byte .L54
.uleb128 0x36
.4byte 0x6b1
.4byte .L55
.byte 0
.byte 0
.uleb128 0x4d
.4byte 0x52a
.4byte .LBB124
.4byte .LBE124-.LBB124
.byte 0x1
.byte 0xb0
.byte 0
.uleb128 0x3e
.4byte .LVL64
.4byte 0x13ca
.byte 0
.uleb128 0x2a
.4byte 0x6ba
.4byte .LFB122
.4byte .LFE122-.LFB122
.uleb128 0x1
.byte 0x9c
.4byte 0xf1a
.uleb128 0x35
.4byte 0x6ca
.4byte .LLST33
.uleb128 0x41
.4byte 0x6d5
.4byte .LLST34
.uleb128 0x41
.4byte 0x6de
.4byte .LLST35
.uleb128 0x43
.4byte .LBB139
.4byte .LBE139-.LBB139
.4byte 0xdfc
.uleb128 0x41
.4byte 0x6ea
.4byte .LLST36
.uleb128 0x3f
.4byte .LVL68
.4byte 0xc68
.4byte 0xdd7
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x3e
.4byte .LVL70
.4byte 0x13d3
.uleb128 0x2d
.4byte .LVL71
.4byte 0xb80
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8d
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x1
.byte 0x30
.byte 0
.byte 0
.uleb128 0x43
.4byte .LBB140
.4byte .LBE140-.LBB140
.4byte 0xe97
.uleb128 0x35
.4byte 0x6ca
.4byte .LLST37
.uleb128 0x4a
.4byte .LBB141
.4byte .LBE141-.LBB141
.uleb128 0x44
.4byte 0x6d5
.uleb128 0x44
.4byte 0x6de
.uleb128 0x3d
.4byte 0x581
.4byte .LBB142
.4byte .LBE142-.LBB142
.byte 0x1
.byte 0xd7
.4byte 0xe6f
.uleb128 0x35
.4byte 0x59c
.4byte .LLST38
.uleb128 0x35
.4byte 0x591
.4byte .LLST39
.uleb128 0x2d
.4byte .LVL80
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC2
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL78
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL79
.4byte 0x1393
.4byte 0xe8c
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL81
.4byte 0x139f
.byte 0
.byte 0
.uleb128 0x3d
.4byte 0x581
.4byte .LBB144
.4byte .LBE144-.LBB144
.byte 0x1
.byte 0xe6
.4byte 0xee1
.uleb128 0x35
.4byte 0x59c
.4byte .LLST40
.uleb128 0x35
.4byte 0x591
.4byte .LLST41
.uleb128 0x2d
.4byte .LVL86
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC3
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL66
.4byte 0x1372
.uleb128 0x3e
.4byte .LVL73
.4byte 0x137d
.uleb128 0x3e
.4byte .LVL83
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL85
.4byte 0x1393
.4byte 0xf10
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL87
.4byte 0x139f
.byte 0
.uleb128 0x2a
.4byte 0x6fd
.4byte .LFB121
.4byte .LFE121-.LFB121
.uleb128 0x1
.byte 0x9c
.4byte 0xf47
.uleb128 0x35
.4byte 0x70d
.4byte .LLST42
.uleb128 0x35
.4byte 0x718
.4byte .LLST43
.uleb128 0x2c
.4byte 0x723
.uleb128 0x1
.byte 0x59
.byte 0
.uleb128 0x46
.4byte .LASF117
.byte 0x1
.byte 0xef
.4byte .LFB123
.4byte .LFE123-.LFB123
.uleb128 0x1
.byte 0x9c
.4byte 0x1195
.uleb128 0x39
.string "i"
.byte 0x1
.byte 0xf1
.4byte 0x4f
.4byte .LLST44
.uleb128 0x39
.string "j"
.byte 0x1
.byte 0xf1
.4byte 0x4f
.4byte .LLST45
.uleb128 0x39
.string "sum"
.byte 0x1
.byte 0xf2
.4byte 0x10e
.4byte .LLST46
.uleb128 0x38
.4byte .LASF118
.byte 0x1
.byte 0xf2
.4byte 0x10e
.4byte .LLST47
.uleb128 0x48
.4byte .LASF104
.byte 0x1
.byte 0xf3
.4byte 0x4b0
.uleb128 0x2
.byte 0x87
.sleb128 0
.uleb128 0x48
.4byte .LASF98
.byte 0x1
.byte 0xf4
.4byte 0x1195
.uleb128 0x3
.byte 0x91
.sleb128 -852
.uleb128 0x48
.4byte .LASF119
.byte 0x1
.byte 0xf5
.4byte 0xdd
.uleb128 0x3
.byte 0x91
.sleb128 -980
.uleb128 0x4e
.4byte .LASF96
.4byte 0x11b5
.uleb128 0x5
.byte 0x3
.4byte __PRETTY_FUNCTION__.5725
.uleb128 0x3a
.4byte 0x5b9
.4byte .LBB146
.4byte .Ldebug_ranges0+0x108
.byte 0x1
.byte 0xf7
.4byte 0x101b
.uleb128 0x35
.4byte 0x5df
.4byte .LLST48
.uleb128 0x35
.4byte 0x5d4
.4byte .LLST49
.uleb128 0x35
.4byte 0x5c9
.4byte .LLST50
.uleb128 0x2d
.4byte .LVL94
.4byte 0x13ab
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x87
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x2
.byte 0x88
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0x40
.byte 0x3d
.byte 0x24
.byte 0
.byte 0
.uleb128 0x43
.4byte .LBB150
.4byte .LBE150-.LBB150
.4byte 0x1038
.uleb128 0x38
.4byte .LASF120
.byte 0x1
.byte 0xfc
.4byte 0xa2
.4byte .LLST51
.byte 0
.uleb128 0x4b
.4byte .Ldebug_ranges0+0x120
.4byte 0x1090
.uleb128 0x38
.4byte .LASF105
.byte 0x1
.byte 0xff
.4byte 0x491
.4byte .LLST52
.uleb128 0x3f
.4byte .LVL99
.4byte 0x13de
.4byte 0x1063
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x1
.byte 0x38
.byte 0
.uleb128 0x2d
.4byte .LVL126
.4byte 0x135c
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC5
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x5
.byte 0x3
.4byte .LC0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0xa
.2byte 0x104
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x5
.byte 0x3
.4byte .LANCHOR0+44
.byte 0
.byte 0
.uleb128 0x43
.4byte .LBB153
.4byte .LBE153-.LBB153
.4byte 0x1103
.uleb128 0x4f
.4byte .LASF105
.byte 0x1
.2byte 0x113
.4byte 0x491
.uleb128 0x43
.4byte .LBB154
.4byte .LBE154-.LBB154
.4byte 0x10c7
.uleb128 0x50
.4byte .LASF120
.byte 0x1
.2byte 0x115
.4byte 0xa2
.4byte .LLST53
.byte 0
.uleb128 0x51
.4byte 0x6fd
.4byte .LBB155
.4byte .Ldebug_ranges0+0x140
.byte 0x1
.2byte 0x118
.4byte 0x10f9
.uleb128 0x3b
.4byte 0x718
.uleb128 0x35
.4byte 0x70d
.4byte .LLST54
.uleb128 0x32
.4byte .Ldebug_ranges0+0x140
.uleb128 0x41
.4byte 0x723
.4byte .LLST55
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL116
.4byte 0x13ea
.byte 0
.uleb128 0x3f
.4byte .LVL95
.4byte 0x13f6
.4byte 0x1123
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x88
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x2
.byte 0x8
.byte 0x80
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8f
.sleb128 28
.byte 0
.uleb128 0x3f
.4byte .LVL105
.4byte 0x13b4
.4byte 0x1148
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 -4
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x2
.byte 0x8c
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x87
.sleb128 0
.byte 0
.uleb128 0x3f
.4byte .LVL106
.4byte 0x13bf
.4byte 0x115b
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x30
.byte 0
.uleb128 0x3f
.4byte .LVL127
.4byte 0x135c
.4byte 0x118b
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC6
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x5
.byte 0x3
.4byte .LC0
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x3
.byte 0xa
.2byte 0x123
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x5
.byte 0x3
.4byte .LANCHOR0+44
.byte 0
.uleb128 0x3e
.4byte .LVL128
.4byte 0x13ca
.byte 0
.uleb128 0x9
.4byte 0xf8
.4byte 0x11a5
.uleb128 0xa
.4byte 0x8c
.byte 0xc7
.byte 0
.uleb128 0x9
.4byte 0xee
.4byte 0x11b5
.uleb128 0xa
.4byte 0x8c
.byte 0x10
.byte 0
.uleb128 0xb
.4byte 0x11a5
.uleb128 0x52
.4byte .LASF121
.byte 0x1
.2byte 0x126
.4byte 0x4f
.4byte .LFB124
.4byte .LFE124-.LFB124
.uleb128 0x1
.byte 0x9c
.4byte 0x1330
.uleb128 0x27
.4byte .LASF122
.byte 0x1
.2byte 0x138
.uleb128 0x53
.4byte 0x72f
.4byte .LBB162
.4byte .LBE162-.LBB162
.byte 0x1
.2byte 0x12d
.4byte 0x120d
.uleb128 0x35
.4byte 0x73f
.4byte .LLST56
.uleb128 0x2d
.4byte .LVL131
.4byte 0x140f
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC7
.byte 0
.byte 0
.uleb128 0x53
.4byte 0x72f
.4byte .LBB164
.4byte .LBE164-.LBB164
.byte 0x1
.2byte 0x12f
.4byte 0x123e
.uleb128 0x35
.4byte 0x73f
.4byte .LLST57
.uleb128 0x2d
.4byte .LVL133
.4byte 0x140f
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x5
.byte 0x3
.4byte .LC8
.byte 0
.byte 0
.uleb128 0x53
.4byte 0x581
.4byte .LBB166
.4byte .LBE166-.LBB166
.byte 0x1
.2byte 0x129
.4byte 0x1289
.uleb128 0x35
.4byte 0x59c
.4byte .LLST58
.uleb128 0x35
.4byte 0x591
.4byte .LLST59
.uleb128 0x2d
.4byte .LVL138
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC2
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x53
.4byte 0x581
.4byte .LBB168
.4byte .LBE168-.LBB168
.byte 0x1
.2byte 0x132
.4byte 0x12d5
.uleb128 0x2b
.4byte 0x59c
.uleb128 0x6
.byte 0x3
.4byte .LC3
.byte 0x9f
.uleb128 0x2b
.4byte 0x591
.uleb128 0x1
.byte 0x6e
.uleb128 0x2d
.4byte .LVL142
.4byte 0x1367
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8e
.sleb128 0
.uleb128 0x2e
.uleb128 0x1
.byte 0x54
.uleb128 0x1
.byte 0x31
.uleb128 0x2e
.uleb128 0x1
.byte 0x55
.uleb128 0x5
.byte 0x3
.4byte .LC3
.uleb128 0x2e
.uleb128 0x1
.byte 0x56
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x3e
.4byte .LVL129
.4byte 0x1372
.uleb128 0x3e
.4byte .LVL132
.4byte 0x5eb
.uleb128 0x3e
.4byte .LVL134
.4byte 0xf47
.uleb128 0x3e
.4byte .LVL135
.4byte 0x137d
.uleb128 0x3e
.4byte .LVL136
.4byte 0x1388
.uleb128 0x3f
.4byte .LVL137
.4byte 0x1393
.4byte 0x1316
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.uleb128 0x3e
.4byte .LVL140
.4byte 0x1388
.uleb128 0x2d
.4byte .LVL141
.4byte 0x1393
.uleb128 0x2e
.uleb128 0x1
.byte 0x53
.uleb128 0x2
.byte 0x8f
.sleb128 0
.byte 0
.byte 0
.uleb128 0x54
.4byte .LASF123
.byte 0xb
.byte 0xa8
.4byte 0x2ea
.uleb128 0x54
.4byte .LASF124
.byte 0xb
.byte 0xa9
.4byte 0x2ea
.uleb128 0x54
.4byte .LASF125
.byte 0xb
.byte 0xaa
.4byte 0x2ea
.uleb128 0x54
.4byte .LASF126
.byte 0x2
.byte 0x33
.4byte 0x38b
.uleb128 0x55
.4byte .LASF127
.4byte .LASF127
.byte 0xf
.byte 0x45
.uleb128 0x55
.4byte .LASF128
.4byte .LASF128
.byte 0x4
.byte 0x55
.uleb128 0x55
.4byte .LASF129
.4byte .LASF129
.byte 0x2
.byte 0x6a
.uleb128 0x55
.4byte .LASF130
.4byte .LASF130
.byte 0x2
.byte 0x6f
.uleb128 0x55
.4byte .LASF131
.4byte .LASF131
.byte 0x10
.byte 0x32
.uleb128 0x56
.4byte .LASF132
.4byte .LASF132
.byte 0x11
.2byte 0x198
.uleb128 0x56
.4byte .LASF85
.4byte .LASF85
.byte 0x12
.2byte 0x203
.uleb128 0x57
.4byte .LASF90
.4byte .LASF90
.uleb128 0x55
.4byte .LASF133
.4byte .LASF133
.byte 0x13
.byte 0xe9
.uleb128 0x55
.4byte .LASF134
.4byte .LASF134
.byte 0x13
.byte 0xfa
.uleb128 0x57
.4byte .LASF135
.4byte .LASF135
.uleb128 0x55
.4byte .LASF136
.4byte .LASF136
.byte 0x14
.byte 0x41
.uleb128 0x56
.4byte .LASF137
.4byte .LASF137
.byte 0x12
.2byte 0x1d2
.uleb128 0x56
.4byte .LASF138
.4byte .LASF138
.byte 0x12
.2byte 0x1e3
.uleb128 0x55
.4byte .LASF139
.4byte .LASF139
.byte 0x14
.byte 0x7a
.uleb128 0x58
.uleb128 0xc
.byte 0x9e
.uleb128 0xa
.byte 0x73
.byte 0x70
.byte 0x69
.byte 0x6e
.byte 0x6c
.byte 0x6f
.byte 0x63
.byte 0x6b
.byte 0xa
.byte 0
.uleb128 0x59
.4byte .LASF145
.4byte .LASF146
.byte 0x15
.byte 0
.4byte .LASF145
.uleb128 0x58
.uleb128 0xf
.byte 0x9e
.uleb128 0xd
.byte 0x70
.byte 0x65
.byte 0x72
.byte 0x63
.byte 0x70
.byte 0x75
.byte 0x5f
.byte 0x6c
.byte 0x69
.byte 0x73
.byte 0x74
.byte 0xa
.byte 0
.byte 0
.section .debug_abbrev,"",@progbits
.Ldebug_abbrev0:
.uleb128 0x1
.uleb128 0x11
.byte 0x1
.uleb128 0x25
.uleb128 0xe
.uleb128 0x13
.uleb128 0xb
.uleb128 0x3
.uleb128 0xe
.uleb128 0x1b
.uleb128 0xe
.uleb128 0x55
.uleb128 0x17
.uleb128 0x11
.uleb128 0x1
.uleb128 0x10
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x2
.uleb128 0x24
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3e
.uleb128 0xb
.uleb128 0x3
.uleb128 0xe
.byte 0
.byte 0
.uleb128 0x3
.uleb128 0x24
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3e
.uleb128 0xb
.uleb128 0x3
.uleb128 0x8
.byte 0
.byte 0
.uleb128 0x4
.uleb128 0x16
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x5
.uleb128 0xf
.byte 0
.uleb128 0xb
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x6
.uleb128 0xf
.byte 0
.uleb128 0xb
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x7
.uleb128 0x13
.byte 0x1
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x8
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x9
.uleb128 0x1
.byte 0x1
.uleb128 0x49
.uleb128 0x13
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0xa
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2f
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0xb
.uleb128 0x26
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0xc
.uleb128 0x13
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0xd
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0xe
.uleb128 0x16
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0xf
.uleb128 0x17
.byte 0x1
.uleb128 0xb
.uleb128 0xb
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x10
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x11
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x12
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x13
.uleb128 0x13
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0xb
.uleb128 0x6
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x14
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2f
.uleb128 0x5
.byte 0
.byte 0
.uleb128 0x15
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0x6
.byte 0
.byte 0
.uleb128 0x16
.uleb128 0xd
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x38
.uleb128 0x6
.byte 0
.byte 0
.uleb128 0x17
.uleb128 0x2e
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x18
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x19
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x1a
.uleb128 0xa
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x1b
.uleb128 0x2e
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x1c
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x1d
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x49
.uleb128 0x13
.uleb128 0x34
.uleb128 0x19
.uleb128 0x1c
.uleb128 0xe
.byte 0
.byte 0
.uleb128 0x1e
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x34
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x1f
.uleb128 0x18
.byte 0
.byte 0
.byte 0
.uleb128 0x20
.uleb128 0x37
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x21
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x22
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x23
.uleb128 0x21
.byte 0
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x24
.uleb128 0x2e
.byte 0x1
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x25
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x26
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x27
.uleb128 0xa
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.byte 0
.byte 0
.uleb128 0x28
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x20
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x29
.uleb128 0xb
.byte 0x1
.byte 0
.byte 0
.uleb128 0x2a
.uleb128 0x2e
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x2b
.uleb128 0x5
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x2c
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x2d
.uleb128 0x4109
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x2e
.uleb128 0x410a
.byte 0
.uleb128 0x2
.uleb128 0x18
.uleb128 0x2111
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x2f
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x30
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x31
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x32
.uleb128 0xb
.byte 0x1
.uleb128 0x55
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x33
.uleb128 0x1d
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x34
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x35
.uleb128 0x5
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x36
.uleb128 0xa
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.byte 0
.byte 0
.uleb128 0x37
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x38
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x39
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0x8
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x3a
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3b
.uleb128 0x5
.byte 0
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3c
.uleb128 0x410a
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2111
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x3d
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3e
.uleb128 0x4109
.byte 0
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x3f
.uleb128 0x4109
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x40
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x1c
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x41
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x42
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x43
.uleb128 0xb
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x44
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x45
.uleb128 0x34
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x46
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x27
.uleb128 0x19
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x47
.uleb128 0x5
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x48
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x49
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x4a
.uleb128 0xb
.byte 0x1
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.byte 0
.byte 0
.uleb128 0x4b
.uleb128 0xb
.byte 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x4c
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x1c
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x4d
.uleb128 0x1d
.byte 0
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x4e
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x49
.uleb128 0x13
.uleb128 0x34
.uleb128 0x19
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x4f
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x50
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x49
.uleb128 0x13
.uleb128 0x2
.uleb128 0x17
.byte 0
.byte 0
.uleb128 0x51
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x52
.uleb128 0x1
.uleb128 0x55
.uleb128 0x17
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0x5
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x52
.uleb128 0x2e
.byte 0x1
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.uleb128 0x27
.uleb128 0x19
.uleb128 0x49
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x40
.uleb128 0x18
.uleb128 0x2117
.uleb128 0x19
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x53
.uleb128 0x1d
.byte 0x1
.uleb128 0x31
.uleb128 0x13
.uleb128 0x11
.uleb128 0x1
.uleb128 0x12
.uleb128 0x6
.uleb128 0x58
.uleb128 0xb
.uleb128 0x59
.uleb128 0x5
.uleb128 0x1
.uleb128 0x13
.byte 0
.byte 0
.uleb128 0x54
.uleb128 0x34
.byte 0
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x49
.uleb128 0x13
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.byte 0
.byte 0
.uleb128 0x55
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.byte 0
.byte 0
.uleb128 0x56
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0x5
.byte 0
.byte 0
.uleb128 0x57
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.byte 0
.byte 0
.uleb128 0x58
.uleb128 0x36
.byte 0
.uleb128 0x2
.uleb128 0x18
.byte 0
.byte 0
.uleb128 0x59
.uleb128 0x2e
.byte 0
.uleb128 0x3f
.uleb128 0x19
.uleb128 0x3c
.uleb128 0x19
.uleb128 0x6e
.uleb128 0xe
.uleb128 0x3
.uleb128 0xe
.uleb128 0x3a
.uleb128 0xb
.uleb128 0x3b
.uleb128 0xb
.uleb128 0x6e
.uleb128 0xe
.byte 0
.byte 0
.byte 0
.section .debug_loc,"",@progbits
.Ldebug_loc0:
.LLST0:
.4byte .LVL2
.4byte .LVL5
.2byte 0x1
.byte 0x53
.4byte .LVL5
.4byte .LFE115
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte 0
.4byte 0
.LLST1:
.4byte .LVL3
.4byte .LVL4
.2byte 0x1
.byte 0x5a
.4byte 0
.4byte 0
.LLST2:
.4byte .LVL3
.4byte .LVL4
.2byte 0x2
.byte 0x31
.byte 0x9f
.4byte 0
.4byte 0
.LLST3:
.4byte .LVL3
.4byte .LVL4
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte 0
.4byte 0
.LLST4:
.4byte .LVL3
.4byte .LVL4
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte 0
.4byte 0
.LLST5:
.4byte .LVL6
.4byte .LVL8-1
.2byte 0x1
.byte 0x53
.4byte .LVL8-1
.4byte .LVL18
.2byte 0x1
.byte 0x6f
.4byte .LVL18
.4byte .LVL19
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL19
.4byte .LVL22
.2byte 0x1
.byte 0x6f
.4byte .LVL22
.4byte .LVL25
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL25
.4byte .LVL27
.2byte 0x1
.byte 0x6f
.4byte .LVL27
.4byte .LFE117
.2byte 0x5
.byte 0x8d
.sleb128 -262144
.byte 0x9f
.4byte 0
.4byte 0
.LLST6:
.4byte .LVL7
.4byte .LVL8-1
.2byte 0x1
.byte 0x53
.4byte .LVL8-1
.4byte .LVL18
.2byte 0x1
.byte 0x6f
.4byte .LVL18
.4byte .LVL19
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL19
.4byte .LVL22
.2byte 0x1
.byte 0x6f
.4byte .LVL22
.4byte .LVL25
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL25
.4byte .LVL27
.2byte 0x1
.byte 0x6f
.4byte .LVL27
.4byte .LFE117
.2byte 0x5
.byte 0x8d
.sleb128 -262144
.byte 0x9f
.4byte 0
.4byte 0
.LLST7:
.4byte .LVL9
.4byte .LVL10
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte .LVL10
.4byte .LVL16
.2byte 0x1
.byte 0x6e
.4byte .LVL19
.4byte .LVL20
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST8:
.4byte .LVL11
.4byte .LVL12
.2byte 0x1
.byte 0x53
.4byte 0
.4byte 0
.LLST9:
.4byte .LVL13
.4byte .LVL14
.2byte 0x1
.byte 0x6f
.4byte .LVL19
.4byte .LVL20
.2byte 0x1
.byte 0x6f
.4byte 0
.4byte 0
.LLST10:
.4byte .LVL23
.4byte .LVL24
.2byte 0x6
.byte 0x3
.4byte .LC2
.byte 0x9f
.4byte 0
.4byte 0
.LLST11:
.4byte .LVL23
.4byte .LVL24
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST12:
.4byte .LVL28
.4byte .LVL29
.2byte 0x6
.byte 0x3
.4byte .LC3
.byte 0x9f
.4byte 0
.4byte 0
.LLST13:
.4byte .LVL28
.4byte .LVL29
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST14:
.4byte .LVL31
.4byte .LVL33-1
.2byte 0x1
.byte 0x53
.4byte .LVL33-1
.4byte .LFE116
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte 0
.4byte 0
.LLST15:
.4byte .LVL31
.4byte .LVL32
.2byte 0x1
.byte 0x54
.4byte .LVL32
.4byte .LFE116
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.4byte 0
.4byte 0
.LLST16:
.4byte .LVL36
.4byte .LVL37
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte 0
.4byte 0
.LLST17:
.4byte .LVL41
.4byte .LVL42
.2byte 0x6
.byte 0x57
.byte 0x93
.uleb128 0x4
.byte 0x5a
.byte 0x93
.uleb128 0x4
.4byte .LVL43
.4byte .LVL44
.2byte 0x6
.byte 0x57
.byte 0x93
.uleb128 0x4
.byte 0x5a
.byte 0x93
.uleb128 0x4
.4byte .LVL47
.4byte .LVL48-1
.2byte 0x6
.byte 0x57
.byte 0x93
.uleb128 0x4
.byte 0x5a
.byte 0x93
.uleb128 0x4
.4byte 0
.4byte 0
.LLST18:
.4byte .LVL36
.4byte .LVL39
.2byte 0x2
.byte 0x8c
.sleb128 0
.4byte .LVL39
.4byte .LVL45
.2byte 0x3
.byte 0x8c
.sleb128 -796
.4byte .LVL45
.4byte .LVL46
.2byte 0x2
.byte 0x71
.sleb128 8
.4byte .LVL47
.4byte .LFE118
.2byte 0x3
.byte 0x8c
.sleb128 -796
.4byte 0
.4byte 0
.LLST19:
.4byte .LVL53
.4byte .LVL54
.2byte 0x1
.byte 0x5a
.4byte 0
.4byte 0
.LLST20:
.4byte .LVL53
.4byte .LVL54
.2byte 0x1
.byte 0x54
.4byte 0
.4byte 0
.LLST21:
.4byte .LVL53
.4byte .LVL54
.2byte 0x1
.byte 0x57
.4byte 0
.4byte 0
.LLST22:
.4byte .LVL53
.4byte .LVL54
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte 0
.4byte 0
.LLST23:
.4byte .LVL55
.4byte .LVL58
.2byte 0x1
.byte 0x53
.4byte .LVL58
.4byte .LVL59
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x1
.byte 0x53
.4byte .LVL60
.4byte .LFE120
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte 0
.4byte 0
.LLST24:
.4byte .LVL55
.4byte .LVL64-1
.2byte 0x1
.byte 0x54
.4byte .LVL64-1
.4byte .LFE120
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.4byte 0
.4byte 0
.LLST25:
.4byte .LVL56
.4byte .LVL58
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte .LVL58
.4byte .LVL59
.2byte 0x9
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x22
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte .LVL60
.4byte .LVL61
.2byte 0x9
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x22
.byte 0x9f
.4byte 0
.4byte 0
.LLST26:
.4byte .LVL56
.4byte .LVL62
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x48
.byte 0x1c
.byte 0x9f
.4byte .LVL62
.4byte .LVL63
.2byte 0x4
.byte 0x71
.sleb128 -72
.byte 0x9f
.4byte .LVL63
.4byte .LVL64-1
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x48
.byte 0x1c
.byte 0x9f
.4byte .LVL64-1
.4byte .LFE120
.2byte 0x4
.byte 0x91
.sleb128 -72
.byte 0x9f
.4byte 0
.4byte 0
.LLST27:
.4byte .LVL56
.4byte .LVL61
.2byte 0x1
.byte 0x5a
.4byte 0
.4byte 0
.LLST28:
.4byte .LVL56
.4byte .LVL57
.2byte 0x1
.byte 0x5a
.4byte .LVL59
.4byte .LVL60
.2byte 0x1
.byte 0x5a
.4byte 0
.4byte 0
.LLST29:
.4byte .LVL56
.4byte .LVL57
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x48
.byte 0x1c
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x7
.byte 0x71
.sleb128 0
.byte 0x6
.byte 0x8
.byte 0x48
.byte 0x1c
.byte 0x9f
.4byte 0
.4byte 0
.LLST30:
.4byte .LVL56
.4byte .LVL57
.2byte 0x2
.byte 0x34
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x2
.byte 0x34
.byte 0x9f
.4byte 0
.4byte 0
.LLST31:
.4byte .LVL56
.4byte .LVL57
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte 0
.4byte 0
.LLST32:
.4byte .LVL56
.4byte .LVL57
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte .LVL59
.4byte .LVL60
.2byte 0x8
.byte 0x7a
.sleb128 0
.byte 0x37
.byte 0x24
.byte 0x73
.sleb128 0
.byte 0x22
.byte 0x9f
.4byte 0
.4byte 0
.LLST33:
.4byte .LVL65
.4byte .LVL66-1
.2byte 0x1
.byte 0x53
.4byte .LVL66-1
.4byte .LVL74
.2byte 0x1
.byte 0x6d
.4byte .LVL74
.4byte .LVL77
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL77
.4byte .LFE122
.2byte 0x1
.byte 0x6d
.4byte 0
.4byte 0
.LLST34:
.4byte .LVL67
.4byte .LVL71
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.4byte .LVL71
.4byte .LVL72
.2byte 0x9
.byte 0xc
.4byte 0x186a1
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.4byte .LVL72
.4byte .LVL76
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.4byte .LVL81
.4byte .LVL84
.2byte 0x9
.byte 0xc
.4byte 0x186a0
.byte 0x8f
.sleb128 0
.byte 0x1c
.byte 0x9f
.4byte 0
.4byte 0
.LLST35:
.4byte .LVL65
.4byte .LVL66-1
.2byte 0x1
.byte 0x53
.4byte .LVL66-1
.4byte .LVL74
.2byte 0x1
.byte 0x6d
.4byte .LVL74
.4byte .LVL77
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte .LVL77
.4byte .LFE122
.2byte 0x1
.byte 0x6d
.4byte 0
.4byte 0
.LLST36:
.4byte .LVL69
.4byte .LVL70-1
.2byte 0x1
.byte 0x53
.4byte .LVL70-1
.4byte .LVL75
.2byte 0x1
.byte 0x6e
.4byte .LVL81
.4byte .LVL82
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST37:
.4byte .LVL77
.4byte .LVL81
.2byte 0x1
.byte 0x6d
.4byte 0
.4byte 0
.LLST38:
.4byte .LVL79
.4byte .LVL80
.2byte 0x6
.byte 0x3
.4byte .LC2
.byte 0x9f
.4byte 0
.4byte 0
.LLST39:
.4byte .LVL79
.4byte .LVL80
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST40:
.4byte .LVL85
.4byte .LVL86
.2byte 0x6
.byte 0x3
.4byte .LC3
.byte 0x9f
.4byte 0
.4byte 0
.LLST41:
.4byte .LVL85
.4byte .LVL86
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST42:
.4byte .LVL88
.4byte .LVL91
.2byte 0x1
.byte 0x53
.4byte .LVL91
.4byte .LFE121
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x53
.byte 0x9f
.4byte 0
.4byte 0
.LLST43:
.4byte .LVL88
.4byte .LVL89
.2byte 0x1
.byte 0x54
.4byte .LVL89
.4byte .LFE121
.2byte 0x4
.byte 0xf3
.uleb128 0x1
.byte 0x54
.byte 0x9f
.4byte 0
.4byte 0
.LLST44:
.4byte .LVL95
.4byte .LVL96
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte .LVL96
.4byte .LVL102
.2byte 0x1
.byte 0x68
.4byte .LVL102
.4byte .LVL103
.2byte 0x3
.byte 0x88
.sleb128 1
.byte 0x9f
.4byte .LVL103
.4byte .LVL104
.2byte 0x1
.byte 0x68
.4byte .LVL107
.4byte .LVL108
.2byte 0x3
.byte 0x8b
.sleb128 1
.byte 0x9f
.4byte .LVL108
.4byte .LVL118
.2byte 0x1
.byte 0x6b
.4byte .LVL118
.4byte .LVL119
.2byte 0x3
.byte 0x8b
.sleb128 1
.byte 0x9f
.4byte .LVL119
.4byte .LVL123
.2byte 0x1
.byte 0x6b
.4byte .LVL124
.4byte .LVL126
.2byte 0x1
.byte 0x68
.4byte .LVL126
.4byte .LFE123
.2byte 0x1
.byte 0x6b
.4byte 0
.4byte 0
.LLST45:
.4byte .LVL97
.4byte .LVL100
.2byte 0x1
.byte 0x6e
.4byte .LVL100
.4byte .LVL101
.2byte 0x3
.byte 0x8e
.sleb128 1
.byte 0x9f
.4byte .LVL101
.4byte .LVL102
.2byte 0x6
.byte 0x73
.sleb128 0
.byte 0x6
.byte 0x23
.uleb128 0x1
.byte 0x9f
.4byte .LVL124
.4byte .LVL126
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.LLST46:
.4byte .LVL92
.4byte .LVL107
.2byte 0xa
.byte 0x9e
.uleb128 0x8
.4byte 0
.4byte 0
.4byte .LVL107
.4byte .LVL110
.2byte 0x6
.byte 0x6c
.byte 0x93
.uleb128 0x4
.byte 0x6e
.byte 0x93
.uleb128 0x4
.4byte .LVL112
.4byte .LVL114
.2byte 0x6
.byte 0x6c
.byte 0x93
.uleb128 0x4
.byte 0x6e
.byte 0x93
.uleb128 0x4
.4byte .LVL115
.4byte .LVL120
.2byte 0x6
.byte 0x6c
.byte 0x93
.uleb128 0x4
.byte 0x6e
.byte 0x93
.uleb128 0x4
.4byte .LVL124
.4byte .LVL126
.2byte 0xa
.byte 0x9e
.uleb128 0x8
.4byte 0
.4byte 0
.4byte 0
.4byte 0
.LLST47:
.4byte .LVL92
.4byte .LVL96
.2byte 0xa
.byte 0x9e
.uleb128 0x8
.4byte 0
.4byte 0
.4byte .LVL96
.4byte .LVL98
.2byte 0x6
.byte 0x6a
.byte 0x93
.uleb128 0x4
.byte 0x6d
.byte 0x93
.uleb128 0x4
.4byte .LVL102
.4byte .LVL122
.2byte 0x6
.byte 0x6a
.byte 0x93
.uleb128 0x4
.byte 0x6d
.byte 0x93
.uleb128 0x4
.4byte .LVL126
.4byte .LFE123
.2byte 0x6
.byte 0x6a
.byte 0x93
.uleb128 0x4
.byte 0x6d
.byte 0x93
.uleb128 0x4
.4byte 0
.4byte 0
.LLST48:
.4byte .LVL92
.4byte .LVL94
.2byte 0x4
.byte 0x40
.byte 0x3d
.byte 0x24
.byte 0x9f
.4byte 0
.4byte 0
.LLST49:
.4byte .LVL92
.4byte .LVL94
.2byte 0x2
.byte 0x30
.byte 0x9f
.4byte 0
.4byte 0
.LLST50:
.4byte .LVL92
.4byte .LVL93
.2byte 0x7
.byte 0x87
.sleb128 0
.byte 0x37
.byte 0x25
.byte 0x37
.byte 0x24
.byte 0x9f
.4byte .LVL93
.4byte .LVL94
.2byte 0x8
.byte 0x71
.sleb128 135
.byte 0x37
.byte 0x25
.byte 0x37
.byte 0x24
.byte 0x9f
.4byte 0
.4byte 0
.LLST51:
.4byte .LVL96
.4byte .LVL103
.2byte 0x1
.byte 0x68
.4byte .LVL103
.4byte .LVL121
.2byte 0x3
.byte 0x88
.sleb128 -1
.byte 0x9f
.4byte .LVL124
.4byte .LVL126
.2byte 0x1
.byte 0x68
.4byte .LVL126
.4byte .LFE123
.2byte 0x3
.byte 0x88
.sleb128 -1
.byte 0x9f
.4byte 0
.4byte 0
.LLST52:
.4byte .LVL99
.4byte .LVL102
.2byte 0x1
.byte 0x53
.4byte .LVL124
.4byte .LVL125
.2byte 0x1
.byte 0x53
.4byte 0
.4byte 0
.LLST53:
.4byte .LVL107
.4byte .LVL108
.2byte 0x1
.byte 0x6b
.4byte .LVL108
.4byte .LVL109
.2byte 0x3
.byte 0x8b
.sleb128 -1
.byte 0x9f
.4byte .LVL109
.4byte .LVL119
.2byte 0x1
.byte 0x6b
.4byte .LVL119
.4byte .LVL120
.2byte 0x3
.byte 0x8b
.sleb128 -1
.byte 0x9f
.4byte 0
.4byte 0
.LLST54:
.4byte .LVL110
.4byte .LVL113
.2byte 0x8
.byte 0x71
.sleb128 135
.byte 0x37
.byte 0x25
.byte 0x37
.byte 0x24
.byte 0x9f
.4byte .LVL116
.4byte .LVL120
.2byte 0x8
.byte 0x71
.sleb128 135
.byte 0x37
.byte 0x25
.byte 0x37
.byte 0x24
.byte 0x9f
.4byte 0
.4byte 0
.LLST55:
.4byte .LVL111
.4byte .LVL113
.2byte 0x1
.byte 0x53
.4byte .LVL117
.4byte .LVL120
.2byte 0x1
.byte 0x53
.4byte 0
.4byte 0
.LLST56:
.4byte .LVL130
.4byte .LVL131
.2byte 0x6
.byte 0xf2
.4byte .Ldebug_info0+5121
.sleb128 0
.4byte 0
.4byte 0
.LLST57:
.4byte .LVL132
.4byte .LVL133
.2byte 0x6
.byte 0xf2
.4byte .Ldebug_info0+5150
.sleb128 0
.4byte 0
.4byte 0
.LLST58:
.4byte .LVL137
.4byte .LVL139
.2byte 0x6
.byte 0x3
.4byte .LC2
.byte 0x9f
.4byte 0
.4byte 0
.LLST59:
.4byte .LVL137
.4byte .LVL139
.2byte 0x1
.byte 0x6e
.4byte 0
.4byte 0
.section .debug_aranges,"",@progbits
.4byte 0x24
.2byte 0x2
.4byte .Ldebug_info0
.byte 0x4
.byte 0
.2byte 0
.2byte 0
.4byte .Ltext0
.4byte .Letext0-.Ltext0
.4byte .LFB124
.4byte .LFE124-.LFB124
.4byte 0
.4byte 0
.section .debug_ranges,"",@progbits
.Ldebug_ranges0:
.4byte .LBB72
.4byte .LBE72
.4byte .LBB85
.4byte .LBE85
.4byte 0
.4byte 0
.4byte .LBB73
.4byte .LBE73
.4byte .LBB81
.4byte .LBE81
.4byte .LBB83
.4byte .LBE83
.4byte 0
.4byte 0
.4byte .LBB77
.4byte .LBE77
.4byte .LBB82
.4byte .LBE82
.4byte .LBB84
.4byte .LBE84
.4byte 0
.4byte 0
.4byte .LBB86
.4byte .LBE86
.4byte .LBB90
.4byte .LBE90
.4byte .LBB91
.4byte .LBE91
.4byte 0
.4byte 0
.4byte .LBB102
.4byte .LBE102
.4byte .LBB106
.4byte .LBE106
.4byte .LBB107
.4byte .LBE107
.4byte 0
.4byte 0
.4byte .LBB110
.4byte .LBE110
.4byte .LBB117
.4byte .LBE117
.4byte 0
.4byte 0
.4byte .LBB111
.4byte .LBE111
.4byte .LBB114
.4byte .LBE114
.4byte 0
.4byte 0
.4byte .LBB118
.4byte .LBE118
.4byte .LBB127
.4byte .LBE127
.4byte .LBB128
.4byte .LBE128
.4byte 0
.4byte 0
.4byte .LBB119
.4byte .LBE119
.4byte .LBB123
.4byte .LBE123
.4byte .LBB126
.4byte .LBE126
.4byte 0
.4byte 0
.4byte .LBB146
.4byte .LBE146
.4byte .LBB149
.4byte .LBE149
.4byte 0
.4byte 0
.4byte .LBB151
.4byte .LBE151
.4byte .LBB152
.4byte .LBE152
.4byte .LBB161
.4byte .LBE161
.4byte 0
.4byte 0
.4byte .LBB155
.4byte .LBE155
.4byte .LBB159
.4byte .LBE159
.4byte .LBB160
.4byte .LBE160
.4byte 0
.4byte 0
.4byte .Ltext0
.4byte .Letext0
.4byte .LFB124
.4byte .LFE124
.4byte 0
.4byte 0
.section .debug_line,"",@progbits
.Ldebug_line0:
.section .debug_str,"MS",@progbits,1
.LASF84:
.string "newv"
.LASF102:
.string "voffp"
.LASF17:
.string "pthread_t"
.LASF42:
.string "_shortbuf"
.LASF143:
.string "_IO_lock_t"
.LASF125:
.string "stderr"
.LASF146:
.string "__builtin_puts"
.LASF31:
.string "_IO_buf_end"
.LASF69:
.string "flags"
.LASF83:
.string "expect"
.LASF126:
.string "__rseq_abi"
.LASF29:
.string "_IO_write_end"
.LASF2:
.string "unsigned int"
.LASF79:
.string "next"
.LASF23:
.string "_flags"
.LASF81:
.string "head"
.LASF134:
.string "pthread_join"
.LASF111:
.string "_cpu"
.LASF132:
.string "strerror"
.LASF71:
.string "percpu_lock"
.LASF35:
.string "_markers"
.LASF133:
.string "pthread_create"
.LASF122:
.string "error"
.LASF94:
.string "rseq_percpu_unlock"
.LASF131:
.string "__errno_location"
.LASF104:
.string "list"
.LASF99:
.string "rseq_cmpeqv_storev"
.LASF114:
.string "this_cpu_list_pop"
.LASF18:
.string "uint32_t"
.LASF124:
.string "stdout"
.LASF34:
.string "_IO_save_end"
.LASF137:
.string "malloc"
.LASF93:
.string "__len"
.LASF73:
.string "count"
.LASF15:
.string "__cpu_mask"
.LASF109:
.string "rseq_this_cpu_lock"
.LASF7:
.string "long long unsigned int"
.LASF33:
.string "_IO_backup_base"
.LASF44:
.string "_offset"
.LASF91:
.string "__dest"
.LASF89:
.string "fprintf"
.LASF37:
.string "_fileno"
.LASF116:
.string "this_cpu_list_push"
.LASF85:
.string "abort"
.LASF145:
.string "puts"
.LASF144:
.string "rseq_cpu_start"
.LASF14:
.string "size_t"
.LASF115:
.string "offset"
.LASF130:
.string "rseq_unregister_current_thread"
.LASF26:
.string "_IO_read_base"
.LASF123:
.string "stdin"
.LASF54:
.string "_next"
.LASF138:
.string "free"
.LASF56:
.string "_pos"
.LASF103:
.string "load"
.LASF88:
.string "__fmt"
.LASF120:
.string "__cpu"
.LASF112:
.string "targetptr"
.LASF16:
.string "cpu_set_t"
.LASF87:
.string "__stream"
.LASF117:
.string "test_percpu_list"
.LASF13:
.string "char"
.LASF128:
.string "__fprintf_chk"
.LASF50:
.string "_mode"
.LASF53:
.string "_IO_marker"
.LASF95:
.string "test_percpu_spinlock"
.LASF24:
.string "_IO_read_ptr"
.LASF78:
.string "data"
.LASF63:
.string "ptr32"
.LASF59:
.string "__u32"
.LASF118:
.string "expected_sum"
.LASF86:
.string "cmpfail"
.LASF27:
.string "_IO_write_base"
.LASF6:
.string "long long int"
.LASF108:
.string "printf"
.LASF75:
.string "lock"
.LASF32:
.string "_IO_save_base"
.LASF62:
.string "padding"
.LASF90:
.string "memset"
.LASF8:
.string "__quad_t"
.LASF67:
.string "cpu_id"
.LASF45:
.string "__pad1"
.LASF46:
.string "__pad2"
.LASF47:
.string "__pad3"
.LASF48:
.string "__pad4"
.LASF49:
.string "__pad5"
.LASF65:
.string "rseq"
.LASF129:
.string "rseq_register_current_thread"
.LASF110:
.string "test_percpu_spinlock_thread"
.LASF41:
.string "_vtable_offset"
.LASF66:
.string "cpu_id_start"
.LASF72:
.string "test_data_entry"
.LASF58:
.string "long double"
.LASF20:
.string "intptr_t"
.LASF140:
.string "GNU C11 5.4.0 20160609 -Asystem=linux -Asystem=unix -Asystem=posix -msecure-plt -g -O2 -fstack-protector-strong"
.LASF97:
.string "num_threads"
.LASF64:
.string "ptr64"
.LASF60:
.string "__u64"
.LASF92:
.string "__ch"
.LASF25:
.string "_IO_read_end"
.LASF101:
.string "expectnot"
.LASF5:
.string "short int"
.LASF10:
.string "long int"
.LASF135:
.string "__stack_chk_fail"
.LASF70:
.string "percpu_lock_entry"
.LASF105:
.string "node"
.LASF19:
.string "uint64_t"
.LASF76:
.string "reps"
.LASF113:
.string "newval"
.LASF77:
.string "percpu_list_node"
.LASF98:
.string "test_threads"
.LASF43:
.string "_lock"
.LASF119:
.string "allowed_cpus"
.LASF12:
.string "sizetype"
.LASF3:
.string "long unsigned int"
.LASF22:
.string "__bits"
.LASF39:
.string "_old_offset"
.LASF82:
.string "percpu_list"
.LASF52:
.string "_IO_FILE"
.LASF100:
.string "rseq_cmpnev_storeoffp_load"
.LASF127:
.string "__assert_fail"
.LASF141:
.string "basic_percpu_ops_test.c"
.LASF0:
.string "unsigned char"
.LASF55:
.string "_sbuf"
.LASF28:
.string "_IO_write_ptr"
.LASF80:
.string "percpu_list_entry"
.LASF142:
.string "/home/compudj/git/librseq/tests"
.LASF136:
.string "sched_yield"
.LASF74:
.string "spinlock_test_data"
.LASF139:
.string "sched_getaffinity"
.LASF9:
.string "__off_t"
.LASF4:
.string "signed char"
.LASF57:
.string "off_t"
.LASF1:
.string "short unsigned int"
.LASF121:
.string "main"
.LASF96:
.string "__PRETTY_FUNCTION__"
.LASF61:
.string "double"
.LASF106:
.string "test_percpu_list_thread"
.LASF36:
.string "_chain"
.LASF107:
.string "__percpu_list_pop"
.LASF21:
.string "FILE"
.LASF38:
.string "_flags2"
.LASF68:
.string "rseq_cs"
.LASF40:
.string "_cur_column"
.LASF11:
.string "__off64_t"
.LASF51:
.string "_unused2"
.LASF30:
.string "_IO_buf_base"
.ident "GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609"
.section .note.GNU-stack,"",@progbits
^ permalink raw reply related
* Re: [PATCH] powerpc: select ARCH_HAS_MEMBARRIER_SYNC_CORE
From: Mathieu Desnoyers @ 2020-07-08 14:12 UTC (permalink / raw)
To: Nicholas Piggin; +Cc: linux-arch, linuxppc-dev
In-Reply-To: <1594185107.e130s0d92x.astroid@bobo.none>
----- On Jul 8, 2020, at 1:17 AM, Nicholas Piggin npiggin@gmail.com wrote:
> Excerpts from Mathieu Desnoyers's message of July 7, 2020 9:25 pm:
>> ----- On Jul 7, 2020, at 1:50 AM, Nicholas Piggin npiggin@gmail.com wrote:
>>
[...]
>>> I should actually change the comment for 64-bit because soft masked
>>> interrupt replay is an interesting case. I thought it was okay (because
>>> the IPI would cause a hard interrupt which does do the rfi) but that
>>> should at least be written.
>>
>> Yes.
>>
>>> The context synchronisation happens before
>>> the Linux IPI function is called, but for the purpose of membarrier I
>>> think that is okay (the membarrier just needs to have caused a memory
>>> barrier + context synchronistaion by the time it has done).
>>
>> Can you point me to the code implementing this logic ?
>
> It's mostly in arch/powerpc/kernel/exception-64s.S and
> powerpc/kernel/irq.c, but a lot of asm so easier to explain.
>
> When any Linux code does local_irq_disable(), we set interrupts as
> software-masked in a per-cpu flag. When interrupts (including IPIs) come
> in, the first thing we do is check that flag and if we are masked, then
> record that the interrupt needs to be "replayed" in another per-cpu
> flag. The interrupt handler then exits back using RFI (which is context
> synchronising the CPU). Later, when the kernel code does
> local_irq_enable(), it checks the replay flag to see if anything needs
> to be done. At that point we basically just call the interrupt handler
> code like a normal function, and when that returns there is no context
> synchronising instruction.
AFAIU this can only happen for interrupts nesting over irqoff sections,
therefore over kernel code, never userspace, right ?
>
> So membarrier IPI will always cause target CPUs to perform a context
> synchronising instruction, but sometimes it happens before the IPI
> handler function runs.
If my understanding is correct, the replayed interrupt handler logic
only nests over kernel code, which will eventually need to issue a
context synchronizing instruction before returning to user-space.
All we care about is that starting from the membarrier, each core
either:
- interrupt user-space to issue the context synchronizing instruction if
they were running userspace, or
- _eventually_ issue a context synchronizing instruction before returning
to user-space if they were running kernel code.
So your earlier statement "the membarrier just needs to have caused a memory
barrier + context synchronistaion by the time it has done" is not strictly
correct: the context synchronizing instruction does not strictly need to
happen on each core before membarrier returns. A similar line of thoughts
can be followed for memory barriers.
Thanks,
Mathieu
--
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
^ permalink raw reply
* Re: Failure to build librseq on ppc
From: Christophe Leroy @ 2020-07-08 14:21 UTC (permalink / raw)
To: Mathieu Desnoyers, Segher Boessenkool
Cc: Boqun Feng, linuxppc-dev, Michael Jeanson
In-Reply-To: <1623833219.1877.1594216801865.JavaMail.zimbra@efficios.com>
Le 08/07/2020 à 16:00, Mathieu Desnoyers a écrit :
> ----- On Jul 8, 2020, at 8:33 AM, Mathieu Desnoyers mathieu.desnoyers@efficios.com wrote:
>
>> ----- On Jul 7, 2020, at 8:59 PM, Segher Boessenkool segher@kernel.crashing.org
>> wrote:
> [...]
>>>
>>> So perhaps you have code like
>>>
>>> int *p;
>>> int x;
>>> ...
>>> asm ("lwz %0,%1" : "=r"(x) : "m"(*p));
>>
>> We indeed have explicit "lwz" and "stw" instructions in there.
>>
>>>
>>> where that last line should actually read
>>>
>>> asm ("lwz%X1 %0,%1" : "=r"(x) : "m"(*p));
>>
>> Indeed, turning those into "lwzx" and "stwx" seems to fix the issue.
>>
>> There has been some level of extra CPP macro coating around those instructions
>> to
>> support both ppc32 and ppc64 with the same assembly. So adding %X[arg] is not
>> trivial.
>> Let me see what can be done here.
>
> I did the following changes which appear to generate valid asm.
> See attached corresponding .S output.
>
> I grepped for uses of "m" asm operand in Linux powerpc code and noticed it's pretty much
> always used with e.g. "lwz%U1%X1". I could find one blog post discussing that %U is about
> update flag, and nothing about %X. Are those documented ?
As far as I can see, %U is mentioned in
https://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html in the
powerpc subpart, at the "m" constraint.
For the %X I don't know.
Christophe
>
> Although it appears to generate valid asm, I have the feeling I'm relying on undocumented
> features here. :-/
>
^ permalink raw reply
page: next (older) | prev (newer) | latest
- recent:[subjects (threaded)|topics (new)|topics (active)]
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox