diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ad4dee57..77d780d08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ ## Unreleased +**Features** + +- Add support for win arm64 PE unwind codes ([#978](https://github.com/getsentry/symbolic/pull/978)) + + **Fixes** - Disable `PE` import table parser and be more permissive during parsing. ([#964](https://github.com/getsentry/symbolic/pull/964)) diff --git a/symbolic-cfi/src/lib.rs b/symbolic-cfi/src/lib.rs index 023830718..2d24f10d0 100644 --- a/symbolic-cfi/src/lib.rs +++ b/symbolic-cfi/src/lib.rs @@ -19,7 +19,7 @@ use std::collections::HashMap; use std::error::Error; -use std::fmt; +use std::fmt::{self, Display}; use std::io::{self, Write}; use std::ops::Range; @@ -38,7 +38,9 @@ use symbolic_debuginfo::macho::{ }; use symbolic_debuginfo::pdb::pdb::{self, FallibleIterator, FrameData, Rva, StringTable}; use symbolic_debuginfo::pdb::PdbObject; -use symbolic_debuginfo::pe::{PeObject, RuntimeFunction, StackFrameOffset, UnwindOperation}; +use symbolic_debuginfo::pe::{ + Arm64UnwindCode, PeObject, RuntimeFunction, StackFrameOffset, UnwindOperation, +}; use symbolic_debuginfo::{Object, ObjectError, ObjectLike}; /// The magic file preamble to identify cficache files. @@ -385,7 +387,13 @@ impl AsciiCfiWriter { Object::MachO(o) => self.process_macho(o), Object::Elf(o) => self.process_dwarf(o, false), Object::Pdb(o) => self.process_pdb(o), - Object::Pe(o) => self.process_pe(o), + Object::Pe(o) => { + if o.arch() == Arch::Arm64 { + self.process_pe_arm64(o) + } else { + self.process_pe(o) + } + } Object::Wasm(o) => self.process_dwarf(o, false), Object::SourceBundle(_) => Ok(()), Object::PortablePdb(_) => Ok(()), @@ -1207,6 +1215,415 @@ impl AsciiCfiWriter { Ok(()) } + + fn process_pe_arm64(&mut self, pe: &PeObject<'_>) -> Result<(), CfiError> { + /// Helper struct to assist in encoding breakpad CFI entries for a PE ARM64 binary. + /// See https://learn.microsoft.com/en-us/cpp/build/arm64-exception-handling for detailed + /// information. + struct BreakpadEncoder<'a> { + function_address: u32, + function_size: u32, + stack_size: i32, + + last_reg_kind: RegisterType, + last_reg_num: u8, + last_offset: i32, + cfa_touched: bool, + ra_written: bool, + writer: &'a mut dyn Write, + } + + /// The kinds of registers that can be saved for unwinding. + #[derive(Copy, Clone)] + enum RegisterType { + X, + D, + Q, + } + + impl RegisterType { + fn get_size(&self) -> i32 { + match self { + Self::Q => 16, + _ => 8, + } + } + } + + impl Display for RegisterType { + fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { + match self { + RegisterType::X => f.write_str("x"), + RegisterType::D => f.write_str("d"), + RegisterType::Q => f.write_str("q"), + } + } + } + + impl<'a> BreakpadEncoder<'a> { + fn new(writer: &'a mut impl Write, function_address: u32, function_size: u32) -> Self { + BreakpadEncoder { + function_address, + function_size, + stack_size: 0, + last_reg_kind: RegisterType::X, + last_reg_num: 0, + last_offset: 0, + cfa_touched: false, + ra_written: false, + writer, + } + } + + /// Computes the memory location relative to CFI, offset above SP + fn get_indexed(&self, offset: u32) -> i32 { + (offset as i32).wrapping_sub(self.stack_size) + } + + /// Computes a pair of adjacent 8-byte memory locations relative to CFI, offset above SP + fn get_indexed_pair(&self, offset: u32, typ: RegisterType) -> (i32, i32) { + ( + (offset as i32).wrapping_sub(self.stack_size), + (offset as i32) + .wrapping_sub(self.stack_size) + .wrapping_add(typ.get_size()), + ) + } + + /// Computes the memory location relative to CFI, offset below SP + fn get_pre_indexed(&self, offset: u32) -> i32 { + (-(offset as i32)).wrapping_sub(self.stack_size) + } + + /// Computes a pair of adjacent memory locations relative to CFI, offset below SP + fn get_pre_indexed_pair(&self, offset: u32, typ: RegisterType) -> (i32, i32) { + ( + (-(offset as i32)).wrapping_sub(self.stack_size), + (-(offset as i32)) + .wrapping_sub(self.stack_size) + .wrapping_add(typ.get_size()), + ) + } + + fn begin_instruction(&mut self, instruction_num: usize) -> std::io::Result<()> { + if instruction_num == 0 { + let addr = self.function_address; + let size = self.function_size; + write!(self.writer, "STACK CFI INIT {addr:x} {size:x}") + } else { + let addr: u32 = self.function_address + (instruction_num * 4) as u32; + write!(self.writer, "STACK CFI {addr:x}") + } + } + + fn end_instruction(&mut self, offset: usize) -> std::io::Result<()> { + // If we're the very first CFI entry, and the cfa wasn't explicitly set, set it to + // a default of sp. + if offset == 0 && !self.cfa_touched { + write!(self.writer, " .cfa: .sp")?; + } + if offset == 0 && !self.ra_written { + write!(self.writer, " .ra: .x30")?; + } + self.ra_written = false; + self.cfa_touched = false; + writeln!(self.writer) + } + + fn maybe_save_ra( + &mut self, + typ: RegisterType, + o2: i32, + second_reg: u8, + ) -> Result<(), io::Error> { + Ok(if second_reg == 30 && matches!(typ, RegisterType::X) { + self.ra_written = true; + write!(self.writer, " .ra: .cfa {o2} + ^")?; + }) + } + + /// Save the next pair of registers to next subsequent locations in memory. This must + /// be called directly after any kind of 'pair' write (except for reg_lr), so that + /// there is an established register kind, number and memory offset to define as 'last'. + fn save_next_pair(&mut self) -> std::io::Result<()> { + let typ = self.last_reg_kind; + let first_reg = self.last_reg_num.wrapping_add(1); + let second_reg = first_reg.wrapping_add(1); + let o1 = self.last_offset.wrapping_add(typ.get_size()); + let o2 = o1.wrapping_add(typ.get_size()); + + // Remember the new offsets/number; it is valid to call save_next_pair after a valid + // save_next_pair call. + self.last_offset = o2; + self.last_reg_num = second_reg; + + write!( + self.writer, + " .{typ}{first_reg}: .cfa {o1} + ^ .{typ}{second_reg}: .cfa {o2} + ^" + )?; + self.maybe_save_ra(typ, o2, second_reg) + } + + /// Save (x#, lr/x30) registers. + fn save_indexed_reg_and_lr( + &mut self, + reg: u8, + offset_bytes: u32, + ) -> std::io::Result<()> { + let (o1, o2) = self.get_indexed_pair(offset_bytes, RegisterType::X); + self.ra_written = true; + + write!( + self.writer, + " .x{reg}: .cfa {o1} + ^ .x30: .cfa {o2} + ^ .ra: .cfa {o2} + ^" + ) + } + + /// Save any (r#, r# + 1) register pair. + fn save_indexed_pair( + &mut self, + typ: RegisterType, + first_reg: u8, + offset_bytes: u32, + ) -> std::io::Result<()> { + let (o1, o2) = self.get_indexed_pair(offset_bytes, typ); + let second_reg = first_reg + 1; + + self.last_reg_kind = typ; + self.last_reg_num = second_reg; + self.last_offset = o2; + + write!( + self.writer, + " .{typ}{first_reg}: .cfa {o1} + ^ .{typ}{second_reg}: .cfa {o2} + ^" + )?; + + self.maybe_save_ra(typ, o2, second_reg) + } + + /// Save any r# register. + fn save_indexed( + &mut self, + typ: RegisterType, + reg_num: u8, + offset_bytes: u32, + ) -> std::io::Result<()> { + let o1 = self.get_indexed(offset_bytes); + write!(self.writer, " .{typ}{reg_num}: .cfa {o1} + ^") + } + + /// Save an (r#, r# + 1) register pair, pre-indxed (points past SP.) + fn save_pre_indexed_pair( + &mut self, + typ: RegisterType, + first_reg: u8, + offset_bytes: u32, + ) -> std::io::Result<()> { + let (o1, o2) = self.get_pre_indexed_pair(offset_bytes, typ); + let second_reg: u8 = first_reg + 1; + + self.last_reg_kind = typ; + self.last_reg_num = second_reg; + self.last_offset = o2; + + self.alloc_stack(offset_bytes)?; + + write!( + self.writer, + " .{typ}{first_reg}: .cfa {o1} + ^ .{typ}{second_reg}: .cfa {o2} + ^" + )?; + + self.maybe_save_ra(typ, o2, second_reg) + } + + /// Save a r# register, pre-indxed (points past SP.) + fn save_pre_indexed( + &mut self, + typ: RegisterType, + reg_num: u8, + offset_bytes: u32, + ) -> std::io::Result<()> { + let o1 = self.get_pre_indexed(offset_bytes); + self.alloc_stack(offset_bytes)?; + + write!(self.writer, " .{typ}{reg_num}: .cfa {o1} + ^") + } + + /// Grow the stack by the specified size; update the cfa accordingly + fn alloc_stack(&mut self, size: u32) -> std::io::Result<()> { + self.stack_size += size as i32; + self.cfa_touched = true; + write!(self.writer, " .cfa: .sp {} +", self.stack_size) + } + } + + let sections = pe.sections(); + let exception_data = match pe.exception_data() { + Some(data) => data, + None => return Ok(()), + }; + + let mut unwind_codes = Vec::new(); + + 'functions: for function_result in exception_data.functions_arm64() { + let function = + function_result.map_err(|e| CfiError::new(CfiErrorKind::BadDebugInfo, e))?; + + if let Some(unwind_info_result) = + exception_data.get_unwind_info_arm64(function, sections) + { + let unwind_info = + unwind_info_result.map_err(|e| CfiError::new(CfiErrorKind::BadDebugInfo, e))?; + unwind_codes.clear(); + + let Ok(codes_iter) = unwind_info.unwind_codes(0) else { + continue 'functions; + }; + + for code_result in codes_iter { + let code = match code_result { + Ok(code) => code, + Err(_) => { + continue 'functions; + } + }; + + // Look for an end/endc; there can be additional instructions following these, + // such as nops, that we should just skip. + if matches!(code.code, Arm64UnwindCode::End | Arm64UnwindCode::EndC) { + break; + } + unwind_codes.push(code); + } + + let mut enc = BreakpadEncoder::new( + &mut self.inner, + function.begin_address, + function.function_length(), + ); + + for (instruction_num, code) in unwind_codes.iter().rev().enumerate() { + enc.begin_instruction(instruction_num)?; + match code.code { + Arm64UnwindCode::AllocSmall { size_bytes } + | Arm64UnwindCode::AllocMedium { size_bytes } + | Arm64UnwindCode::AllocLarge { size_bytes } => { + enc.alloc_stack(size_bytes)?; + } + + Arm64UnwindCode::SaveFpLr { offset_bytes } => { + // save pair at [sp+#Z*8], offset <= 504. + enc.save_indexed_pair(RegisterType::X, 29, offset_bytes)?; + } + + Arm64UnwindCode::SaveFpLrPreindexed { offset_bytes } => { + // save pair at [sp-(#Z+1)*8]!, pre-indexed offset >= -512 + enc.save_pre_indexed_pair(RegisterType::X, 29, offset_bytes)?; + } + + Arm64UnwindCode::SaveR19R20Preindexed { offset_bytes } => { + // save pair at [sp-#Z*8]!, pre-indexed offset >= -248 + enc.save_pre_indexed_pair(RegisterType::X, 19, offset_bytes)?; + } + + Arm64UnwindCode::SaveReg { reg, offset_bytes } => { + // save reg x(19+#X) at [sp+#Z*8], offset <= 504 + enc.save_indexed(RegisterType::X, reg, offset_bytes)?; + } + + Arm64UnwindCode::SaveRegPreindexed { reg, offset_bytes } => { + // save reg x(19+#X) at [sp-(#Z+1)*8]!, pre-indexed offset >= -256 + enc.save_pre_indexed(RegisterType::X, reg, offset_bytes)?; + } + + Arm64UnwindCode::SaveRegPair { + first_reg, + offset_bytes, + } => { + // save x(19+#X) pair at [sp+#Z*8], offset <= 504 + enc.save_indexed_pair(RegisterType::X, first_reg, offset_bytes)?; + } + + Arm64UnwindCode::SaveRegPairPreindexed { + first_reg, + offset_bytes, + } => { + // save pair x(19+#X) at [sp-(#Z+1)*8]!, pre-indexed offset >= -512 + enc.save_pre_indexed_pair(RegisterType::X, first_reg, offset_bytes)?; + } + + Arm64UnwindCode::SaveLrPair { + first_reg, + offset_bytes, + } => { + // save pair at [sp+#Z*8], offset <= 504 + enc.save_indexed_reg_and_lr(first_reg, offset_bytes)?; + } + Arm64UnwindCode::SaveFRegPair { + first_reg, + offset_bytes, + } => { + // save pair d(8+#X) at [sp+#Z*8], offset <= 504 + enc.save_indexed_pair(RegisterType::D, first_reg, offset_bytes)?; + } + + Arm64UnwindCode::SaveFRegPairPreindexed { + first_reg, + offset_bytes, + } => { + // save pair d(8+#X) at [sp-(#Z+1)*8]!, pre-indexed offset >= -512 + enc.save_pre_indexed_pair(RegisterType::D, first_reg, offset_bytes)?; + } + Arm64UnwindCode::SaveFReg { reg, offset_bytes } => { + // save reg d(8+#X) at [sp+#Z*8], offset <= 504 + enc.save_indexed(RegisterType::D, reg, offset_bytes)?; + } + Arm64UnwindCode::SaveFRegPreindexed { reg, offset_bytes } => { + // save reg d(8+#X) at [sp-(#Z+1)*8]!, pre-indexed offset >= -256 + enc.save_pre_indexed(RegisterType::D, reg, offset_bytes)?; + } + + Arm64UnwindCode::SaveNext => { + // Save the _next_ register pair to the next stack-space, where 'next' + // is relative to the last pair that was saved. (This instruction must + // come after a save for a register pair, including a SaveNext.) + enc.save_next_pair()?; + } + + Arm64UnwindCode::SaveAnyReg { + kind, + pair, + preindexed, + reg, + offset_bytes, + } => { + let typ = match kind { + 0 => RegisterType::X, + 1 => RegisterType::D, + // Q is really '2', but use this as a catch-all, as well. + _ => RegisterType::Q, + }; + + match (pair, preindexed) { + (true, true) => { + enc.save_pre_indexed_pair(typ, reg, offset_bytes)? + } + (true, false) => enc.save_indexed_pair(typ, reg, offset_bytes)?, + (false, true) => enc.save_pre_indexed(typ, reg, offset_bytes)?, + (false, false) => enc.save_indexed(typ, reg, offset_bytes)?, + } + } + _ => { + // To avoid empty cfi lines, just emit a redundant stack alloc + enc.alloc_stack(0)?; + } + } + enc.end_instruction(instruction_num)?; + } + } + } + Ok(()) + } } impl AsciiCfiWriter { @@ -1287,7 +1704,7 @@ impl CfiCache<'static> { AsciiCfiWriter::new(&mut buffer).process(object)?; - let byteview = ByteView::from_vec(buffer); + let byteview: ByteView<'_> = ByteView::from_vec(buffer); let inner = CfiCacheInner::Versioned(CFICACHE_LATEST_VERSION, CfiCacheV1 { byteview }); Ok(CfiCache { inner }) } diff --git a/symbolic-cfi/tests/snapshots/test_cfi__cfi_pe_arm64.snap b/symbolic-cfi/tests/snapshots/test_cfi__cfi_pe_arm64.snap new file mode 100644 index 000000000..8643866e4 --- /dev/null +++ b/symbolic-cfi/tests/snapshots/test_cfi__cfi_pe_arm64.snap @@ -0,0 +1,1100 @@ +--- +source: symbolic-cfi/tests/test_cfi.rs +assertion_line: 131 +expression: cfi +--- +STACK CFI INIT 1000 15e0 .cfa: .sp 16 + .ra: .x30 +STACK CFI INIT 1050 15fc .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 1054 .cfa: .sp 16 + +STACK CFI INIT 1348 1700 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 134c .cfa: .sp 32 + +STACK CFI INIT 1388 1a04 .cfa: .sp 32 + .ra: .x30 +STACK CFI INIT 13b0 1a18 .cfa: .sp 96 + .x19: .cfa -96 + ^ .x20: .cfa -88 + ^ .ra: .x30 +STACK CFI 13b4 .x21: .cfa -80 + ^ .x22: .cfa -72 + ^ +STACK CFI 13b8 .x23: .cfa -64 + ^ .x24: .cfa -56 + ^ +STACK CFI 13bc .x25: .cfa -48 + ^ .x26: .cfa -40 + ^ +STACK CFI 13c0 .x27: .cfa -32 + ^ .x28: .cfa -24 + ^ +STACK CFI 13c4 .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 13c8 .cfa: .sp 96 + +STACK CFI INIT 1404 1a38 .cfa: .sp 96 + .x19: .cfa -96 + ^ .x20: .cfa -88 + ^ .ra: .x30 +STACK CFI 1408 .x21: .cfa -80 + ^ .x22: .cfa -72 + ^ +STACK CFI 140c .x23: .cfa -64 + ^ .x24: .cfa -56 + ^ +STACK CFI 1410 .x25: .cfa -48 + ^ .x26: .cfa -40 + ^ +STACK CFI 1414 .x27: .cfa -32 + ^ .x28: .cfa -24 + ^ +STACK CFI 1418 .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 141c .cfa: .sp 96 + +STACK CFI INIT 1458 1a58 .cfa: .sp 112 + .ra: .x30 +STACK CFI 145c .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 1460 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 1464 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 1468 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 146c .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 1470 .x27: .cfa -16 + ^ .x28: .cfa -8 + ^ +STACK CFI INIT 1750 1094 .cfa: .sp 112 + .x29: .cfa -112 + ^ .x30: .cfa -104 + ^ .ra: .cfa -104 + ^ +STACK CFI 1754 .cfa: .sp 112 + +STACK CFI INIT 2590 f64 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 2594 .cfa: .sp 16 + +STACK CFI 2598 .cfa: .sp 32 + +STACK CFI INIT 29b0 f78 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 29b4 .cfa: .sp 16 + +STACK CFI 29b8 .cfa: .sp 32 + +STACK CFI INIT 3100 f50 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 3104 .cfa: .sp 16 + +STACK CFI 3108 .cfa: .sp 32 + +STACK CFI INIT 31e8 f8c .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 31ec .cfa: .sp 32 + +STACK CFI INIT 3ab0 1014 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 3ab4 .cfa: .sp 64 + +STACK CFI INIT 4298 1114 .cfa: .sp 0 + .ra: .x30 +STACK CFI 429c .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 42a0 .cfa: .sp 48 + +STACK CFI INIT 42c0 111c .cfa: .sp 0 + .ra: .x30 +STACK CFI 42c4 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 42c8 .cfa: .sp 48 + +STACK CFI INIT 42f0 111c .cfa: .sp 0 + .ra: .x30 +STACK CFI 42f4 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 42f8 .cfa: .sp 48 + +STACK CFI INIT 4360 1458 .cfa: .sp 0 + .ra: .x30 +STACK CFI 4364 .cfa: .sp 64 + .x19: .cfa -64 + ^ .x20: .cfa -56 + ^ +STACK CFI 4368 .x21: .cfa -48 + ^ .x22: .cfa -40 + ^ +STACK CFI 436c .x23: .cfa -32 + ^ .x24: .cfa -24 + ^ +STACK CFI 4370 .x25: .cfa -16 + ^ .x26: .cfa -8 + ^ +STACK CFI 4374 .cfa: .sp 80 + .x29: .cfa -80 + ^ .x30: .cfa -72 + ^ .ra: .cfa -72 + ^ +STACK CFI 4378 .cfa: .sp 80 + +STACK CFI INIT 44f0 146c .cfa: .sp 0 + .ra: .x30 +STACK CFI 44f4 .cfa: .sp 48 + .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 44f8 .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 44fc .x23: .cfa -16 + ^ +STACK CFI 4500 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 4504 .cfa: .sp 96 + +STACK CFI INIT 4640 11e0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 4644 .cfa: .sp 48 + .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 4648 .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 464c .x23: .cfa -16 + ^ +STACK CFI 4650 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 4654 .cfa: .sp 96 + +STACK CFI INIT 4790 1318 .cfa: .sp 0 + .ra: .x30 +STACK CFI 4794 .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI 4798 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 479c .cfa: .sp 64 + +STACK CFI INIT 4840 1368 .cfa: .sp 0 + .ra: .x30 +STACK CFI 4844 .cfa: .sp 64 + .x19: .cfa -64 + ^ .x20: .cfa -56 + ^ +STACK CFI 4848 .x21: .cfa -48 + ^ .x22: .cfa -40 + ^ +STACK CFI 484c .x23: .cfa -32 + ^ .x24: .cfa -24 + ^ +STACK CFI 4850 .x25: .cfa -16 + ^ .x26: .cfa -8 + ^ +STACK CFI 4854 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 4858 .cfa: .sp 96 + +STACK CFI INIT 4918 1124 .cfa: .sp 0 + .ra: .x30 +STACK CFI 491c .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 4920 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 4924 .cfa: .sp 48 + +STACK CFI INIT 4a60 1390 .cfa: .sp 0 + .ra: .x30 +STACK CFI 4a64 .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI 4a68 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 4a6c .cfa: .sp 48 + +STACK CFI INIT 4ae8 1260 .cfa: .sp 0 + .ra: .x30 +STACK CFI 4aec .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 4af0 .cfa: .sp 32 + +STACK CFI INIT 4be8 1190 .cfa: .sp 0 + .ra: .x30 +STACK CFI 4bec .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI 4bf0 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 4bf4 .cfa: .sp 48 + +STACK CFI INIT 4d30 12f8 .cfa: .sp 0 + .ra: .x30 +STACK CFI 4d34 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 4d38 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 4d3c .cfa: .sp 48 + +STACK CFI INIT 4d88 1348 .cfa: .sp 0 + .ra: .x30 +STACK CFI 4d8c .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 4d90 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 4d94 .cfa: .sp 48 + +STACK CFI INIT 4f50 1238 .cfa: .sp 0 + .ra: .x30 +STACK CFI 4f54 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 4f58 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 4f5c .cfa: .sp 48 + +STACK CFI INIT 4fe0 1420 .cfa: .sp 0 + .ra: .x30 +STACK CFI 4fe4 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 4fe8 .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 4fec .cfa: .sp 32 + +STACK CFI 4ff0 .cfa: .sp 48 + +STACK CFI INIT 51a8 14b8 .cfa: .sp 0 + .ra: .x30 +STACK CFI 51ac .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 51b0 .x21: .cfa -16 + ^ .x22: .cfa -8 + ^ +STACK CFI 51b4 .cfa: .sp 176 + .x29: .cfa -176 + ^ .x30: .cfa -168 + ^ .ra: .cfa -168 + ^ +STACK CFI 51b8 .cfa: .sp 176 + +STACK CFI INIT 5260 11b0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 5264 .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 5268 .x21: .cfa -16 + ^ .x22: .cfa -8 + ^ +STACK CFI 526c .cfa: .sp 208 + .x29: .cfa -208 + ^ .x30: .cfa -200 + ^ .ra: .cfa -200 + ^ +STACK CFI 5270 .cfa: .sp 208 + +STACK CFI INIT 54a0 1114 .cfa: .sp 0 + .ra: .x30 +STACK CFI 54a4 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 54a8 .cfa: .sp 48 + +STACK CFI INIT 5790 12c0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 5794 .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 5798 .x21: .cfa -16 + ^ .x22: .cfa -8 + ^ +STACK CFI 579c .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 57a0 .cfa: .sp 64 + +STACK CFI INIT 5860 13b0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 5864 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 5868 .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 586c .x21: .cfa -16 + ^ +STACK CFI 5870 .cfa: .sp 48 + +STACK CFI 5874 .cfa: .sp 64 + +STACK CFI INIT 5e98 13d4 .cfa: .sp 0 + .ra: .x30 +STACK CFI 5e9c .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 5ea0 .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 5ea4 .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 5ea8 .x23: .cfa -16 + ^ .x24: .cfa -8 + ^ +STACK CFI 5eac .cfa: .sp 64 + +STACK CFI 5eb0 .cfa: .sp 80 + +STACK CFI INIT 6208 1278 .cfa: .sp 0 + .ra: .x30 +STACK CFI 620c .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 6210 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 6214 .cfa: .sp 64 + +STACK CFI INIT 6900 14f0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 6904 .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI 6908 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 690c .cfa: .sp 32 + +STACK CFI INIT 6958 1500 .cfa: .sp 0 + .ra: .x30 +STACK CFI 695c .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 6960 .x21: .cfa -16 + ^ .x22: .cfa -8 + ^ +STACK CFI 6964 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 6968 .cfa: .sp 64 + +STACK CFI INIT 7220 1530 .cfa: .sp 0 + .ra: .x30 +STACK CFI 7224 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 7228 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 722c .cfa: .sp 48 + +STACK CFI INIT 72c0 1560 .cfa: .sp 0 + .ra: .x30 +STACK CFI 72c4 .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI 72c8 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 72cc .cfa: .sp 32 + +STACK CFI INIT 73d0 15a0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 73d4 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 73d8 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 73dc .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 73e0 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 73e4 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 73e8 .x27: .cfa -16 + ^ .x28: .cfa -8 + ^ +STACK CFI 73ec .cfa: .sp 96 + +STACK CFI 73f0 .cfa: .sp 112 + +STACK CFI INIT 7750 15d0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 7754 .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI 7758 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 775c .cfa: .sp 32 + +STACK CFI INIT 7850 160c .cfa: .sp 0 + .ra: .x30 +STACK CFI 7854 .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI 7858 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 785c .cfa: .sp 32 + +STACK CFI INIT 7950 161c .cfa: .sp 0 + .ra: .x30 +STACK CFI 7954 .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 7958 .x21: .cfa -16 + ^ +STACK CFI 795c .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 7960 .cfa: .sp 64 + +STACK CFI INIT 7b10 168c .cfa: .sp 0 + .ra: .x30 +STACK CFI 7b14 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 7b18 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 7b1c .cfa: .sp 32 + +STACK CFI INIT 7bc8 169c .cfa: .sp 0 + .ra: .x30 +STACK CFI 7bcc .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 7bd0 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 7bd4 .cfa: .sp 32 + +STACK CFI INIT 7c70 1660 .cfa: .sp 0 + .ra: .x30 +STACK CFI 7c74 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 7c78 .cfa: .sp 32 + +STACK CFI INIT 7ee0 1114 .cfa: .sp 0 + .ra: .x30 +STACK CFI 7ee4 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 7ee8 .cfa: .sp 48 + +STACK CFI INIT 8148 1708 .cfa: .sp 0 + .ra: .x30 +STACK CFI 814c .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 8150 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 8154 .cfa: .sp 32 + +STACK CFI INIT 8548 1780 .cfa: .sp 0 + .ra: .x30 +STACK CFI 854c .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 8550 .cfa: .sp 112 + .x29: .cfa -112 + ^ .x30: .cfa -104 + ^ .ra: .cfa -104 + ^ +STACK CFI 8554 .cfa: .sp 112 + +STACK CFI INIT 8808 175c .cfa: .sp 0 + .ra: .x30 +STACK CFI 880c .cfa: .sp 48 + .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 8810 .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 8814 .x23: .cfa -16 + ^ .x24: .cfa -8 + ^ +STACK CFI 8818 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 881c .cfa: .sp 96 + +STACK CFI INIT 8968 1740 .cfa: .sp 0 + .ra: .x30 +STACK CFI 896c .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 8970 .cfa: .sp 16 + +STACK CFI 8974 .cfa: .sp 32 + +STACK CFI INIT 8a80 1770 .cfa: .sp 0 + .ra: .x30 +STACK CFI 8a84 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 8a88 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 8a8c .cfa: .sp 32 + +STACK CFI INIT 8c58 17b0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 8c5c .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 8c60 .cfa: .sp 16 + +STACK CFI INIT 8c88 17d8 .cfa: .sp 0 + .ra: .x30 +STACK CFI 8c8c .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI 8c90 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 8c94 .cfa: .sp 64 + +STACK CFI INIT 8d48 17b8 .cfa: .sp 0 + .ra: .x30 +STACK CFI 8d4c .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI 8d50 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 8d54 .cfa: .sp 32 + +STACK CFI INIT 8dc8 17c8 .cfa: .sp 0 + .ra: .x30 +STACK CFI 8dcc .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 8dd0 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 8dd4 .cfa: .sp 32 + +STACK CFI INIT 91c8 1828 .cfa: .sp 0 + .ra: .x30 +STACK CFI 91cc .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 91d0 .cfa: .sp 16 + +STACK CFI 91d4 .cfa: .sp 32 + +STACK CFI INIT 9348 1848 .cfa: .sp 0 + .ra: .x30 +STACK CFI 934c .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 9350 .cfa: .sp 16 + +STACK CFI INIT 97f0 1930 .cfa: .sp 0 + .ra: .x30 +STACK CFI 97f4 .cfa: .sp 48 + .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 97f8 .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 97fc .x23: .cfa -16 + ^ +STACK CFI 9800 .cfa: .sp 80 + .x29: .cfa -80 + ^ .x30: .cfa -72 + ^ .ra: .cfa -72 + ^ +STACK CFI 9804 .cfa: .sp 80 + +STACK CFI INIT 99e0 196c .cfa: .sp 0 + .ra: .x30 +STACK CFI 99e4 .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 99e8 .x21: .cfa -16 + ^ +STACK CFI 99ec .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 99f0 .cfa: .sp 48 + +STACK CFI INIT 9ba8 19ac .cfa: .sp 0 + .ra: .x30 +STACK CFI 9bac .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 9bb0 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 9bb4 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 9bb8 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 9bbc .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 9bc0 .x27: .cfa -16 + ^ .x28: .cfa -8 + ^ +STACK CFI 9bc4 .cfa: .sp 96 + +STACK CFI 9bc8 .cfa: .sp 112 + +STACK CFI INIT a0d0 19dc .cfa: .sp 0 + .ra: .x30 +STACK CFI a0d4 .cfa: .sp 80 + .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI a0d8 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI a0dc .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI a0e0 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI a0e4 .x27: .cfa -16 + ^ .x28: .cfa -8 + ^ +STACK CFI a0e8 .cfa: .sp 192 + .x29: .cfa -192 + ^ .x30: .cfa -184 + ^ .ra: .cfa -184 + ^ +STACK CFI a0ec .cfa: .sp 192 + +STACK CFI INIT a440 1994 .cfa: .sp 0 + .ra: .x30 +STACK CFI a444 .cfa: .sp 80 + .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI a448 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI a44c .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI a450 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI a454 .x27: .cfa -16 + ^ .x28: .cfa -8 + ^ +STACK CFI a458 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI a45c .cfa: .sp 96 + +STACK CFI INIT a750 18bc .cfa: .sp 0 + .ra: .x30 +STACK CFI a754 .cfa: .sp 80 + .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI a758 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI a75c .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI a760 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI a764 .x27: .cfa -16 + ^ +STACK CFI a768 .cfa: .sp 256 + .x29: .cfa -256 + ^ .x30: .cfa -248 + ^ .ra: .cfa -248 + ^ +STACK CFI a76c .cfa: .sp 256 + +STACK CFI INIT aa20 1854 .cfa: .sp 0 + .ra: .x30 +STACK CFI aa24 .cfa: .sp 80 + .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI aa28 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI aa2c .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI aa30 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI aa34 .x27: .cfa -16 + ^ +STACK CFI aa38 .cfa: .sp 176 + .x29: .cfa -176 + ^ .x30: .cfa -168 + ^ .ra: .cfa -168 + ^ +STACK CFI aa3c .cfa: .sp 176 + +STACK CFI INIT acb8 1918 .cfa: .sp 0 + .ra: .x30 +STACK CFI acbc .cfa: .sp 80 + .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI acc0 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI acc4 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI acc8 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI accc .x27: .cfa -16 + ^ .x28: .cfa -8 + ^ +STACK CFI acd0 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI acd4 .cfa: .sp 96 + +STACK CFI INIT b1a8 1a94 .cfa: .sp 0 + .ra: .x30 +STACK CFI b1ac .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI b1b0 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI b1b4 .cfa: .sp 48 + +STACK CFI INIT b310 1a84 .cfa: .sp 0 + .ra: .x30 +STACK CFI b314 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI b318 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI b31c .cfa: .sp 48 + +STACK CFI INIT b458 1ac8 .cfa: .sp 0 + .ra: .x30 +STACK CFI b45c .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI b460 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI b464 .cfa: .sp 48 + +STACK CFI INIT b530 1aec .cfa: .sp 0 + .ra: .x30 +STACK CFI b534 .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI b538 .x21: .cfa -16 + ^ .x22: .cfa -8 + ^ +STACK CFI b53c .cfa: .sp 128 + .x29: .cfa -128 + ^ .x30: .cfa -120 + ^ .ra: .cfa -120 + ^ +STACK CFI b540 .cfa: .sp 128 + +STACK CFI INIT b618 1b10 .cfa: .sp 0 + .ra: .x30 +STACK CFI b61c .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI b620 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI b624 .cfa: .sp 48 + +STACK CFI INIT b970 1b34 .cfa: .sp 0 + .ra: .x30 +STACK CFI b974 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI b978 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI b97c .cfa: .sp 64 + +STACK CFI INIT bb08 1b6c .cfa: .sp 0 + .ra: .x30 +STACK CFI bb0c .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI bb10 .x21: .cfa -16 + ^ +STACK CFI bb14 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI bb18 .cfa: .sp 64 + +STACK CFI INIT bd88 1bd0 .cfa: .sp 0 + .ra: .x30 +STACK CFI bd8c .cfa: .sp 80 + .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI bd90 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI bd94 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI bd98 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI bd9c .x27: .cfa -16 + ^ +STACK CFI bda0 .cfa: .sp 144 + .x29: .cfa -144 + ^ .x30: .cfa -136 + ^ .ra: .cfa -136 + ^ +STACK CFI bda4 .cfa: .sp 144 + +STACK CFI INIT c030 1ba4 .cfa: .sp 0 + .ra: .x30 +STACK CFI c034 .cfa: .sp 48 + .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI c038 .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI c03c .x23: .cfa -16 + ^ +STACK CFI c040 .cfa: .sp 80 + .x29: .cfa -80 + ^ .x30: .cfa -72 + ^ .ra: .cfa -72 + ^ +STACK CFI c044 .cfa: .sp 80 + +STACK CFI INIT c128 1be8 .cfa: .sp 0 + .ra: .x30 +STACK CFI c12c .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI c130 .x21: .cfa -16 + ^ .x22: .cfa -8 + ^ +STACK CFI c134 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI c138 .cfa: .sp 64 + +STACK CFI INIT c4d0 1c34 .cfa: .sp 0 + .ra: .x30 +STACK CFI c4d4 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI c4d8 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI c4dc .cfa: .sp 48 + +STACK CFI INIT c598 1c28 .cfa: .sp 0 + .ra: .x30 +STACK CFI c59c .cfa: .sp 112 + .x29: .cfa -112 + ^ .x30: .cfa -104 + ^ .ra: .cfa -104 + ^ +STACK CFI c5a0 .cfa: .sp 112 + +STACK CFI INIT c630 1c10 .cfa: .sp 0 + .ra: .x30 +STACK CFI c634 .cfa: .sp 80 + .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI c638 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI c63c .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI c640 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI c644 .x27: .cfa -16 + ^ +STACK CFI c648 .cfa: .sp 112 + .x29: .cfa -112 + ^ .x30: .cfa -104 + ^ .ra: .cfa -104 + ^ +STACK CFI c64c .cfa: .sp 112 + +STACK CFI INIT c918 1c58 .cfa: .sp 0 + .ra: .x30 +STACK CFI c91c .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI c920 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI c924 .cfa: .sp 48 + +STACK CFI INIT cbd0 1ca4 .cfa: .sp 0 + .ra: .x30 +STACK CFI cbd4 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI cbd8 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI cbdc .cfa: .sp 32 + +STACK CFI INIT cd48 1c7c .cfa: .sp 0 + .ra: .x30 +STACK CFI cd4c .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI cd50 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI cd54 .cfa: .sp 48 + +STACK CFI INIT cf60 1cc8 .cfa: .sp 0 + .ra: .x30 +STACK CFI cf64 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI cf68 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI cf6c .cfa: .sp 48 + +STACK CFI INIT cfb0 1cb4 .cfa: .sp 0 + .ra: .x30 +STACK CFI cfb4 .cfa: .sp 48 + .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI cfb8 .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI cfbc .x23: .cfa -16 + ^ .x24: .cfa -8 + ^ +STACK CFI cfc0 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI cfc4 .cfa: .sp 96 + +STACK CFI INIT d2b8 1cec .cfa: .sp 0 + .ra: .x30 +STACK CFI d2bc .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI d2c0 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI d2c4 .cfa: .sp 48 + +STACK CFI INIT d380 1cec .cfa: .sp 0 + .ra: .x30 +STACK CFI d384 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI d388 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI d38c .cfa: .sp 48 + +STACK CFI INIT d4b8 1d08 .cfa: .sp 0 + .ra: .x30 +STACK CFI d4bc .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI d4c0 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI d4c4 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI d4c8 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI d4cc .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI d4d0 .x27: .cfa -16 + ^ +STACK CFI d4d4 .cfa: .sp 96 + +STACK CFI INIT d9a0 1d24 .cfa: .sp 0 + .ra: .x30 +STACK CFI d9a4 .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI d9a8 .x21: .cfa -16 + ^ +STACK CFI d9ac .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI d9b0 .cfa: .sp 48 + +STACK CFI INIT da48 1d38 .cfa: .sp 0 + .ra: .x30 +STACK CFI da4c .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI da50 .cfa: .sp 16 + +STACK CFI INIT dd58 1d40 .cfa: .sp 0 + .ra: .x30 +STACK CFI dd5c .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI dd60 .x21: .cfa -16 + ^ +STACK CFI dd64 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI dd68 .cfa: .sp 64 + +STACK CFI INIT e180 1d68 .cfa: .sp 0 + .ra: .x30 +STACK CFI e184 .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI e188 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI e18c .cfa: .sp 32 + +STACK CFI INIT e1d0 1d98 .cfa: .sp 0 + .ra: .x30 +STACK CFI e1d4 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI e1d8 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI e1dc .cfa: .sp 32 + +STACK CFI INIT e250 1dc8 .cfa: .sp 0 + .ra: .x30 +STACK CFI e254 .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI e258 .x21: .cfa -16 + ^ +STACK CFI e25c .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI e260 .cfa: .sp 48 + +STACK CFI INIT e9a0 1dec .cfa: .sp 0 + .ra: .x30 +STACK CFI e9a4 .cfa: .sp 48 + .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI e9a8 .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI e9ac .x23: .cfa -16 + ^ +STACK CFI e9b0 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI e9b4 .cfa: .sp 64 + +STACK CFI INIT eae8 1e00 .cfa: .sp 0 + .ra: .x30 +STACK CFI eaec .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI eaf0 .x21: .cfa -16 + ^ +STACK CFI eaf4 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI eaf8 .cfa: .sp 48 + +STACK CFI INIT ecc8 1dd8 .cfa: .sp 0 + .ra: .x30 +STACK CFI eccc .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI ecd0 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI ecd4 .cfa: .sp 48 + +STACK CFI INIT ee78 1eb4 .cfa: .sp 0 + .ra: .x30 +STACK CFI ee7c .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI ee80 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI ee84 .cfa: .sp 48 + +STACK CFI INIT eec0 1e80 .cfa: .sp 0 + .ra: .x30 +STACK CFI eec4 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI eec8 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI eecc .cfa: .sp 64 + +STACK CFI INIT efc0 1e54 .cfa: .sp 0 + .ra: .x30 +STACK CFI efc4 .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI efc8 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI efcc .cfa: .sp 96 + +STACK CFI INIT f0d0 1e48 .cfa: .sp 0 + .ra: .x30 +STACK CFI f0d4 .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI f0d8 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI f0dc .cfa: .sp 32 + +STACK CFI INIT f128 1e1c .cfa: .sp 0 + .ra: .x30 +STACK CFI f12c .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI f130 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI f134 .cfa: .sp 48 + +STACK CFI INIT f1f8 1e10 .cfa: .sp 0 + .ra: .x30 +STACK CFI f1fc .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI f200 .cfa: .sp 16 + +STACK CFI INIT f338 2c .cfa: .sp 0 + .ra: .x30 +STACK CFI f33c .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI f340 .x21: .cfa -16 + ^ +STACK CFI f344 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI f348 .cfa: .sp 64 + +STACK CFI INIT f498 8 .cfa: .sp 0 + .ra: .x30 +STACK CFI f49c .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI f4a0 .x21: .cfa -16 + ^ .x22: .cfa -8 + ^ +STACK CFI f4a4 .cfa: .sp 80 + .x29: .cfa -80 + ^ .x30: .cfa -72 + ^ .ra: .cfa -72 + ^ +STACK CFI f4a8 .cfa: .sp 80 + +STACK CFI INIT f528 50 .cfa: .sp 0 + .ra: .x30 +STACK CFI f52c .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI f530 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI f534 .cfa: .sp 48 + +STACK CFI INIT f5f0 1ed8 .cfa: .sp 0 + .ra: .x30 +STACK CFI f5f4 .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI f5f8 .x21: .cfa -16 + ^ +STACK CFI f5fc .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI f600 .cfa: .sp 48 + +STACK CFI INIT f6d0 1f20 .cfa: .sp 0 + .ra: .x30 +STACK CFI f6d4 .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI f6d8 .x21: .cfa -16 + ^ +STACK CFI f6dc .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI f6e0 .cfa: .sp 48 + +STACK CFI INIT f770 1f30 .cfa: .sp 0 + .ra: .x30 +STACK CFI f774 .cfa: .sp 64 + .x19: .cfa -64 + ^ .x20: .cfa -56 + ^ +STACK CFI f778 .x21: .cfa -48 + ^ .x22: .cfa -40 + ^ +STACK CFI f77c .x23: .cfa -32 + ^ .x24: .cfa -24 + ^ +STACK CFI f780 .x25: .cfa -16 + ^ .x26: .cfa -8 + ^ +STACK CFI f784 .cfa: .sp 80 + .x29: .cfa -80 + ^ .x30: .cfa -72 + ^ .ra: .cfa -72 + ^ +STACK CFI f788 .cfa: .sp 80 + +STACK CFI INIT f980 1ee8 .cfa: .sp 0 + .ra: .x30 +STACK CFI f984 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI f988 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI f98c .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI f990 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI f994 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI f998 .x27: .cfa -16 + ^ +STACK CFI f99c .cfa: .sp 96 + +STACK CFI INIT fd90 1f08 .cfa: .sp 0 + .ra: .x30 +STACK CFI fd94 .cfa: .sp 80 + .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI fd98 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI fd9c .cfa: .sp 80 + +STACK CFI fda0 .cfa: .sp 80 + +STACK CFI fda4 .cfa: .sp 80 + +STACK CFI fda8 .cfa: .sp 112 + .x29: .cfa -112 + ^ .x30: .cfa -104 + ^ .ra: .cfa -104 + ^ +STACK CFI fdac .cfa: .sp 112 + +STACK CFI INIT fed8 1f64 .cfa: .sp 0 + .ra: .x30 +STACK CFI fedc .cfa: .sp 80 + .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI fee0 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI fee4 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI fee8 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI feec .x27: .cfa -16 + ^ +STACK CFI fef0 .cfa: .sp 112 + .x29: .cfa -112 + ^ .x30: .cfa -104 + ^ .ra: .cfa -104 + ^ +STACK CFI fef4 .cfa: .sp 112 + +STACK CFI INIT 10090 1f7c .cfa: .sp 0 + .ra: .x30 +STACK CFI 10094 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 10098 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 1009c .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 100a0 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 100a4 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 100a8 .x27: .cfa -16 + ^ +STACK CFI 100ac .cfa: .sp 96 + +STACK CFI INIT 102f8 1f44 .cfa: .sp 0 + .ra: .x30 +STACK CFI 102fc .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 10300 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 10304 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 10308 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 1030c .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 10310 .x27: .cfa -16 + ^ +STACK CFI 10314 .cfa: .sp 96 + +STACK CFI INIT 10630 1ff0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 10634 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 10638 .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 1063c .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 10640 .x23: .cfa -16 + ^ .x24: .cfa -8 + ^ +STACK CFI 10644 .cfa: .sp 64 + +STACK CFI INIT 10850 1fe4 .cfa: .sp 0 + .ra: .x30 +STACK CFI 10854 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 10858 .cfa: .sp 16 + +STACK CFI INIT 108b0 1fb0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 108b4 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 108b8 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 108bc .cfa: .sp 32 + +STACK CFI INIT 10950 1fd0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 10954 .cfa: .sp 48 + .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 10958 .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 1095c .x23: .cfa -16 + ^ +STACK CFI 10960 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 10964 .cfa: .sp 64 + +STACK CFI INIT 10a68 1fc0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 10a6c .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 10a70 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 10a74 .cfa: .sp 32 + +STACK CFI INIT 10b10 1f9c .cfa: .sp 0 + .ra: .x30 +STACK CFI 10b14 .cfa: .sp 48 + .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 10b18 .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 10b1c .x23: .cfa -16 + ^ +STACK CFI 10b20 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 10b24 .cfa: .sp 64 + +STACK CFI INIT 10bf8 98 .cfa: .sp 0 + .ra: .x30 +STACK CFI 10bfc .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 10c00 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 10c04 .cfa: .sp 48 + +STACK CFI INIT 10c48 bc .cfa: .sp 0 + .ra: .x30 +STACK CFI 10c4c .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 10c50 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 10c54 .cfa: .sp 48 + +STACK CFI INIT 10f70 80 .cfa: .sp 0 + .ra: .x30 +STACK CFI 10f74 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 10f78 .cfa: .sp 64 + +STACK CFI INIT 11260 e0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 11264 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 11268 .cfa: .sp 16 + +STACK CFI INIT 11290 100 .cfa: .sp 0 + .ra: .x30 +STACK CFI 11294 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 11298 .cfa: .sp 16 + +STACK CFI INIT 11c10 11c .cfa: .sp 0 + .ra: .x30 +STACK CFI 11c14 .cfa: .sp 48 + .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 11c18 .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 11c1c .x23: .cfa -16 + ^ .x24: .cfa -8 + ^ +STACK CFI 11c20 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 11c24 .cfa: .sp 64 + +STACK CFI INIT 11e58 148 .cfa: .sp 0 + .ra: .x30 +STACK CFI 11e5c .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 11e60 .x21: .cfa -16 + ^ +STACK CFI 11e64 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 11e68 .cfa: .sp 64 + +STACK CFI INIT 11f28 130 .cfa: .sp 0 + .ra: .x30 +STACK CFI 11f2c .cfa: .sp 80 + .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 11f30 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 11f34 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 11f38 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 11f3c .x27: .cfa -16 + ^ +STACK CFI 11f40 .cfa: .sp 112 + .x29: .cfa -112 + ^ .x30: .cfa -104 + ^ .ra: .cfa -104 + ^ +STACK CFI 11f44 .cfa: .sp 112 + +STACK CFI INIT 12a98 16c .cfa: .sp 0 + .ra: .x30 +STACK CFI 12a9c .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 12aa0 .x21: .cfa -16 + ^ .x22: .cfa -8 + ^ +STACK CFI 12aa4 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 12aa8 .cfa: .sp 64 + +STACK CFI INIT 12e18 190 .cfa: .sp 0 + .ra: .x30 +STACK CFI 12e1c .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI 12e20 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 12e24 .cfa: .sp 32 + +STACK CFI INIT 12ef8 1b4 .cfa: .sp 0 + .ra: .x30 +STACK CFI 12efc .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 12f00 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 12f04 .cfa: .sp 48 + +STACK CFI INIT 13178 21c .cfa: .sp 0 + .ra: .x30 +STACK CFI 1317c .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 13180 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 13184 .cfa: .sp 48 + +STACK CFI INIT 131c8 288 .cfa: .sp 0 + .ra: .x30 +STACK CFI 131cc .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 131d0 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 131d4 .cfa: .sp 48 + +STACK CFI INIT 13250 240 .cfa: .sp 0 + .ra: .x30 +STACK CFI 13254 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 13258 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 1325c .cfa: .sp 48 + +STACK CFI INIT 132a0 264 .cfa: .sp 0 + .ra: .x30 +STACK CFI 132a4 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 132a8 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 132ac .cfa: .sp 48 + +STACK CFI INIT 13650 1848 .cfa: .sp 0 + .ra: .x30 +STACK CFI 13654 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 13658 .cfa: .sp 16 + +STACK CFI INIT 13678 1d8 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1367c .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 13680 .cfa: .sp 32 + +STACK CFI INIT 136d8 1ec .cfa: .sp 0 + .ra: .x30 +STACK CFI 136dc .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 136e0 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 136e4 .cfa: .sp 48 + +STACK CFI INIT 137a8 208 .cfa: .sp 0 + .ra: .x30 +STACK CFI 137ac .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI 137b0 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 137b4 .cfa: .sp 48 + +STACK CFI INIT 138b8 2ac .cfa: .sp 0 + .ra: .x30 +STACK CFI 138bc .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 138c0 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 138c4 .cfa: .sp 48 + +STACK CFI INIT 13a10 31c .cfa: .sp 0 + .ra: .x30 +STACK CFI 13a14 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 13a18 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 13a1c .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 13a20 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 13a24 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 13a28 .x27: .cfa -16 + ^ +STACK CFI 13a2c .cfa: .sp 96 + +STACK CFI INIT 14048 348 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1404c .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 14050 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 14054 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 14058 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 1405c .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 14060 .x27: .cfa -16 + ^ +STACK CFI 14064 .cfa: .sp 96 + +STACK CFI INIT 14190 364 .cfa: .sp 0 + .ra: .x30 +STACK CFI 14194 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 14198 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 1419c .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 141a0 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 141a4 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 141a8 .x27: .cfa -16 + ^ +STACK CFI 141ac .cfa: .sp 96 + +STACK CFI INIT 142d8 380 .cfa: .sp 0 + .ra: .x30 +STACK CFI 142dc .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 142e0 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 142e4 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 142e8 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 142ec .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 142f0 .x27: .cfa -16 + ^ +STACK CFI 142f4 .cfa: .sp 96 + +STACK CFI INIT 14468 2ec .cfa: .sp 0 + .ra: .x30 +STACK CFI 1446c .cfa: .sp 64 + .x19: .cfa -64 + ^ .x20: .cfa -56 + ^ +STACK CFI 14470 .x21: .cfa -48 + ^ .x22: .cfa -40 + ^ +STACK CFI 14474 .x23: .cfa -32 + ^ .x24: .cfa -24 + ^ +STACK CFI 14478 .x25: .cfa -16 + ^ +STACK CFI 1447c .x27: .cfa -8 + ^ +STACK CFI 14480 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 14484 .cfa: .sp 96 + +STACK CFI INIT 145c8 2d0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 145cc .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 145d0 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 145d4 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 145d8 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 145dc .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 145e0 .x27: .cfa -16 + ^ +STACK CFI 145e4 .cfa: .sp 96 + +STACK CFI INIT 148d0 39c .cfa: .sp 0 + .ra: .x30 +STACK CFI 148d4 .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 148d8 .x21: .cfa -16 + ^ +STACK CFI 148dc .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 148e0 .cfa: .sp 48 + +STACK CFI INIT 14ab0 3c8 .cfa: .sp 0 + .ra: .x30 +STACK CFI 14ab4 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 14ab8 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 14abc .cfa: .sp 48 + +STACK CFI INIT 14e98 3ac .cfa: .sp 0 + .ra: .x30 +STACK CFI 14e9c .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 14ea0 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 14ea4 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 14ea8 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 14eac .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 14eb0 .x27: .cfa -16 + ^ +STACK CFI 14eb4 .cfa: .sp 96 + +STACK CFI INIT 159b8 3f0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 159bc .cfa: .sp 64 + .x19: .cfa -64 + ^ .x20: .cfa -56 + ^ +STACK CFI 159c0 .x21: .cfa -48 + ^ .x22: .cfa -40 + ^ +STACK CFI 159c4 .x23: .cfa -32 + ^ .x24: .cfa -24 + ^ +STACK CFI 159c8 .x25: .cfa -16 + ^ +STACK CFI 159cc .x27: .cfa -8 + ^ +STACK CFI 159d0 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 159d4 .cfa: .sp 96 + +STACK CFI INIT 15f88 420 .cfa: .sp 0 + .ra: .x30 +STACK CFI 15f8c .cfa: .sp 64 + .x19: .cfa -64 + ^ .x20: .cfa -56 + ^ +STACK CFI 15f90 .x21: .cfa -48 + ^ .x22: .cfa -40 + ^ +STACK CFI 15f94 .x23: .cfa -32 + ^ .x24: .cfa -24 + ^ +STACK CFI 15f98 .x25: .cfa -16 + ^ +STACK CFI 15f9c .x27: .cfa -8 + ^ +STACK CFI 15fa0 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 15fa4 .cfa: .sp 96 + +STACK CFI INIT 16798 450 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1679c .cfa: .sp 48 + .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 167a0 .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 167a4 .x23: .cfa -16 + ^ +STACK CFI 167a8 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 167ac .cfa: .sp 96 + +STACK CFI INIT 16c18 470 .cfa: .sp 0 + .ra: .x30 +STACK CFI 16c1c .cfa: .sp 80 + .x29: .cfa -80 + ^ .x30: .cfa -72 + ^ .ra: .cfa -72 + ^ +STACK CFI 16c20 .x19: .cfa -64 + ^ .x20: .cfa -56 + ^ +STACK CFI 16c24 .x21: .cfa -48 + ^ .x22: .cfa -40 + ^ +STACK CFI 16c28 .x23: .cfa -32 + ^ .x24: .cfa -24 + ^ +STACK CFI 16c2c .x25: .cfa -16 + ^ +STACK CFI 16c30 .cfa: .sp 80 + +STACK CFI INIT 17198 488 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1719c .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 171a0 .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 171a4 .cfa: .sp 32 + +STACK CFI INIT 17298 4b8 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1729c .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 172a0 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 172a4 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 172a8 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 172ac .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 172b0 .x27: .cfa -16 + ^ +STACK CFI 172b4 .cfa: .sp 96 + +STACK CFI INIT 17428 49c .cfa: .sp 0 + .ra: .x30 +STACK CFI 1742c .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 17430 .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 17434 .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 17438 .x23: .cfa -16 + ^ .x24: .cfa -8 + ^ +STACK CFI 1743c .cfa: .sp 64 + +STACK CFI INIT 17628 4d4 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1762c .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 17630 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 17634 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 17638 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 1763c .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 17640 .x27: .cfa -16 + ^ +STACK CFI 17644 .cfa: .sp 96 + +STACK CFI INIT 177e0 4f0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 177e4 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 177e8 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 177ec .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 177f0 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 177f4 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 177f8 .x27: .cfa -16 + ^ +STACK CFI 177fc .cfa: .sp 96 + +STACK CFI INIT 17bb8 100 .cfa: .sp 0 + .ra: .x30 +STACK CFI 17bbc .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 17bc0 .cfa: .sp 16 + +STACK CFI INIT 17c50 54c .cfa: .sp 0 + .ra: .x30 +STACK CFI 17c54 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 17c58 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 17c5c .cfa: .sp 48 + +STACK CFI INIT 17d60 50c .cfa: .sp 0 + .ra: .x30 +STACK CFI 17d64 .cfa: .sp 64 + .x19: .cfa -64 + ^ .x20: .cfa -56 + ^ +STACK CFI 17d68 .x21: .cfa -48 + ^ .x22: .cfa -40 + ^ +STACK CFI 17d6c .x23: .cfa -32 + ^ .x24: .cfa -24 + ^ +STACK CFI 17d70 .x25: .cfa -16 + ^ +STACK CFI 17d74 .x27: .cfa -8 + ^ +STACK CFI 17d78 .cfa: .sp 112 + .x29: .cfa -112 + ^ .x30: .cfa -104 + ^ .ra: .cfa -104 + ^ +STACK CFI 17d7c .cfa: .sp 112 + +STACK CFI INIT 18310 578 .cfa: .sp 0 + .ra: .x30 +STACK CFI 18314 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 18318 .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 1831c .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 18320 .x23: .cfa -16 + ^ .x24: .cfa -8 + ^ +STACK CFI 18324 .cfa: .sp 64 + +STACK CFI INIT 185f8 594 .cfa: .sp 0 + .ra: .x30 +STACK CFI 185fc .cfa: .sp 80 + .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 18600 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 18604 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 18608 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 1860c .x27: .cfa -16 + ^ +STACK CFI 18610 .cfa: .sp 112 + .x29: .cfa -112 + ^ .x30: .cfa -104 + ^ .ra: .cfa -104 + ^ +STACK CFI 18614 .cfa: .sp 112 + +STACK CFI INIT 18d48 5b4 .cfa: .sp 0 + .ra: .x30 +STACK CFI 18d4c .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 18d50 .cfa: .sp 16 + +STACK CFI INIT 18df0 5c8 .cfa: .sp 0 + .ra: .x30 +STACK CFI 18df4 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 18df8 .cfa: .sp 16 + +STACK CFI INIT 190e0 5e4 .cfa: .sp 0 + .ra: .x30 +STACK CFI 190e4 .cfa: .sp 80 + .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 190e8 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 190ec .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 190f0 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 190f4 .x27: .cfa -16 + ^ +STACK CFI 190f8 .cfa: .sp 144 + .x29: .cfa -144 + ^ .x30: .cfa -136 + ^ .ra: .cfa -136 + ^ +STACK CFI 190fc .cfa: .sp 144 + +STACK CFI INIT 19338 5fc .cfa: .sp 0 + .ra: .x30 +STACK CFI 1933c .cfa: .sp 64 + .x19: .cfa -64 + ^ .x20: .cfa -56 + ^ +STACK CFI 19340 .x21: .cfa -48 + ^ .x22: .cfa -40 + ^ +STACK CFI 19344 .x23: .cfa -32 + ^ .x24: .cfa -24 + ^ +STACK CFI 19348 .x25: .cfa -16 + ^ +STACK CFI 1934c .cfa: .sp 80 + .x29: .cfa -80 + ^ .x30: .cfa -72 + ^ .ra: .cfa -72 + ^ +STACK CFI 19350 .cfa: .sp 80 + +STACK CFI INIT 194d0 610 .cfa: .sp 0 + .ra: .x30 +STACK CFI 194d4 .cfa: .sp 80 + .x29: .cfa -80 + ^ .x30: .cfa -72 + ^ .ra: .cfa -72 + ^ +STACK CFI 194d8 .x19: .cfa -64 + ^ .x20: .cfa -56 + ^ +STACK CFI 194dc .x21: .cfa -48 + ^ .x22: .cfa -40 + ^ +STACK CFI 194e0 .x23: .cfa -32 + ^ .x24: .cfa -24 + ^ +STACK CFI 194e4 .x25: .cfa -16 + ^ +STACK CFI 194e8 .cfa: .sp 80 + +STACK CFI INIT 198c8 62c .cfa: .sp 0 + .ra: .x30 +STACK CFI 198cc .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 198d0 .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 198d4 .cfa: .sp 32 + +STACK CFI INIT 199d8 6a4 .cfa: .sp 0 + .ra: .x30 +STACK CFI 199dc .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 199e0 .x21: .cfa -16 + ^ .x22: .cfa -8 + ^ +STACK CFI 199e4 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 199e8 .cfa: .sp 64 + +STACK CFI INIT 19ca0 690 .cfa: .sp 0 + .ra: .x30 +STACK CFI 19ca4 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 19ca8 .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 19cac .cfa: .sp 32 + +STACK CFI INIT 19ee8 680 .cfa: .sp 0 + .ra: .x30 +STACK CFI 19eec .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 19ef0 .x21: .cfa -16 + ^ +STACK CFI 19ef4 .cfa: .sp 656 + +STACK CFI 19ef8 .x29: .cfa -656 + ^ .x30: .cfa -648 + ^ .ra: .cfa -648 + ^ +STACK CFI 19efc .cfa: .sp 656 + +STACK CFI INIT 1a070 658 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1a074 .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 1a078 .x21: .cfa -16 + ^ +STACK CFI 1a07c .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 1a080 .cfa: .sp 48 + +STACK CFI INIT 1a1d0 640 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1a1d4 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 1a1d8 .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 1a1dc .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 1a1e0 .x23: .cfa -16 + ^ +STACK CFI 1a1e4 .cfa: .sp 64 + +STACK CFI INIT 1a658 6c8 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1a65c .cfa: .sp 80 + .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 1a660 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 1a664 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 1a668 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 1a66c .x27: .cfa -16 + ^ +STACK CFI 1a670 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 1a674 .cfa: .sp 96 + +STACK CFI INIT 1a998 6e0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1a99c .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 1a9a0 .x21: .cfa -16 + ^ .x22: .cfa -8 + ^ +STACK CFI 1a9a4 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 1a9a8 .cfa: .sp 48 + +STACK CFI INIT 1ac38 6f0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1ac3c .cfa: .sp 48 + .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 1ac40 .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 1ac44 .x23: .cfa -16 + ^ +STACK CFI 1ac48 .cfa: .sp 80 + .x29: .cfa -80 + ^ .x30: .cfa -72 + ^ .ra: .cfa -72 + ^ +STACK CFI 1ac4c .cfa: .sp 80 + +STACK CFI INIT 1bc88 72c .cfa: .sp 0 + .ra: .x30 +STACK CFI 1bc8c .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 1bc90 .cfa: .sp 16 + +STACK CFI INIT 1bf68 744 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1bf6c .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 1bf70 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 1bf74 .cfa: .sp 32 + +STACK CFI INIT 1c360 758 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1c364 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 1c368 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 1c36c .cfa: .sp 32 + +STACK CFI INIT 1c5f8 79c .cfa: .sp 0 + .ra: .x30 +STACK CFI 1c5fc .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 1c600 .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 1c604 .x21: .cfa -16 + ^ .x22: .cfa -8 + ^ +STACK CFI 1c608 .cfa: .sp 48 + +STACK CFI INIT 1c938 7b4 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1c93c .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 1c940 .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 1c944 .cfa: .sp 32 + +STACK CFI INIT 1ca28 7cc .cfa: .sp 0 + .ra: .x30 +STACK CFI 1ca2c .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 1ca30 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 1ca34 .cfa: .sp 48 + +STACK CFI INIT 1cb90 780 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1cb94 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 1cb98 .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 1cb9c .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 1cba0 .x23: .cfa -16 + ^ +STACK CFI 1cba4 .cfa: .sp 64 + +STACK CFI INIT 1ce70 830 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1ce74 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 1ce78 .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 1ce7c .x21: .cfa -16 + ^ +STACK CFI 1ce80 .cfa: .sp 48 + +STACK CFI INIT 1d100 804 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1d104 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 1d108 .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 1d10c .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 1d110 .x23: .cfa -16 + ^ +STACK CFI 1d114 .cfa: .sp 64 + +STACK CFI INIT 1d3a0 81c .cfa: .sp 0 + .ra: .x30 +STACK CFI 1d3a4 .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 1d3a8 .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 1d3ac .x21: .cfa -16 + ^ +STACK CFI 1d3b0 .cfa: .sp 48 + +STACK CFI INIT 1d698 7f0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1d69c .cfa: .sp 48 + .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 1d6a0 .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 1d6a4 .x23: .cfa -16 + ^ .x24: .cfa -8 + ^ +STACK CFI 1d6a8 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 1d6ac .cfa: .sp 64 + +STACK CFI INIT 1d728 7dc .cfa: .sp 0 + .ra: .x30 +STACK CFI 1d72c .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 1d730 .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 1d734 .x21: .cfa -16 + ^ .x22: .cfa -8 + ^ +STACK CFI 1d738 .cfa: .sp 48 + +STACK CFI INIT 1dbf0 860 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1dbf4 .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 1dbf8 .x21: .cfa -16 + ^ .x22: .cfa -8 + ^ +STACK CFI 1dbfc .cfa: .sp 48 + .x29: .cfa -48 + ^ .x30: .cfa -40 + ^ .ra: .cfa -40 + ^ +STACK CFI 1dc00 .cfa: .sp 48 + +STACK CFI INIT 1dcf0 84c .cfa: .sp 0 + .ra: .x30 +STACK CFI 1dcf4 .cfa: .sp 48 + .x19: .cfa -48 + ^ .x20: .cfa -40 + ^ +STACK CFI 1dcf8 .x21: .cfa -32 + ^ .x22: .cfa -24 + ^ +STACK CFI 1dcfc .x23: .cfa -16 + ^ .x24: .cfa -8 + ^ +STACK CFI 1dd00 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 1dd04 .cfa: .sp 64 + +STACK CFI INIT 1de70 870 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1de74 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 1de78 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 1de7c .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 1de80 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 1de84 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 1de88 .x27: .cfa -16 + ^ +STACK CFI 1de8c .cfa: .sp 96 + +STACK CFI INIT 1dfe0 5c8 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1dfe4 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 1dfe8 .cfa: .sp 16 + +STACK CFI INIT 1e308 88c .cfa: .sp 0 + .ra: .x30 +STACK CFI 1e30c .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 1e310 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 1e314 .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 1e318 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 1e31c .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 1e320 .x27: .cfa -16 + ^ +STACK CFI 1e324 .cfa: .sp 96 + +STACK CFI INIT 1e6b8 8ac .cfa: .sp 0 + .ra: .x30 +STACK CFI 1e6bc .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI 1e6c0 .cfa: .sp 16 + +STACK CFI INIT 1f5a0 8c4 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1f5a4 .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 1f5a8 .x21: .cfa -16 + ^ +STACK CFI 1f5ac .cfa: .sp 80 + .x29: .cfa -80 + ^ .x30: .cfa -72 + ^ .ra: .cfa -72 + ^ +STACK CFI 1f5b0 .cfa: .sp 80 + +STACK CFI INIT 1f700 8dc .cfa: .sp 0 + .ra: .x30 +STACK CFI 1f704 .cfa: .sp 96 + .x29: .cfa -96 + ^ .x30: .cfa -88 + ^ .ra: .cfa -88 + ^ +STACK CFI 1f708 .x19: .cfa -80 + ^ .x20: .cfa -72 + ^ +STACK CFI 1f70c .x21: .cfa -64 + ^ .x22: .cfa -56 + ^ +STACK CFI 1f710 .x23: .cfa -48 + ^ .x24: .cfa -40 + ^ +STACK CFI 1f714 .x25: .cfa -32 + ^ .x26: .cfa -24 + ^ +STACK CFI 1f718 .x27: .cfa -16 + ^ +STACK CFI 1f71c .cfa: .sp 96 + +STACK CFI INIT 1fb90 8fc .cfa: .sp 0 + .ra: .x30 +STACK CFI 1fb94 .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 1fb98 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 1fb9c .cfa: .sp 32 + +STACK CFI INIT 1fc68 920 .cfa: .sp 0 + .ra: .x30 +STACK CFI 1fc6c .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 1fc70 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 1fc74 .cfa: .sp 32 + +STACK CFI INIT 215f0 1100 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21634 1000 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 2164c 1080 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21690 1180 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21694 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 216ac 1180 .cfa: .sp 0 + .ra: .x30 +STACK CFI 216b0 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 216c8 1340 .cfa: .sp 0 + .ra: .x30 +STACK CFI 216cc .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21704 1180 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21708 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21720 1188 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21724 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21740 1188 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21744 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21760 1188 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21764 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21780 1188 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21784 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 217a0 1188 .cfa: .sp 0 + .ra: .x30 +STACK CFI 217a4 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 217c0 1188 .cfa: .sp 0 + .ra: .x30 +STACK CFI 217c4 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 217e0 1188 .cfa: .sp 0 + .ra: .x30 +STACK CFI 217e4 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21800 1188 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21804 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21820 1180 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21824 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 2183c 1180 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21840 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21858 1180 .cfa: .sp 0 + .ra: .x30 +STACK CFI 2185c .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21874 1654 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21878 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 218a4 1680 .cfa: .sp 0 + .ra: .x30 +STACK CFI 218a8 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 218d8 17a4 .cfa: .sp 0 + .ra: .x30 +STACK CFI 218dc .cfa: .sp 16 + .x19: .cfa -16 + ^ .x20: .cfa -8 + ^ +STACK CFI 218e0 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI INIT 21980 1800 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21984 .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI 21988 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI INIT 21a88 18fc .cfa: .sp 0 + .ra: .x30 +STACK CFI 21a8c .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21ab4 1908 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21ab8 .cfa: .sp 16 + .x19: .cfa -16 + ^ +STACK CFI 21abc .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI INIT 21b74 18a4 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21b78 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21b98 18b0 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21b9c .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21bd4 1abc .cfa: .sp 0 + .ra: .x30 +STACK CFI 21bd8 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21bfc 18fc .cfa: .sp 0 + .ra: .x30 +STACK CFI 21c00 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21c28 18fc .cfa: .sp 0 + .ra: .x30 +STACK CFI 21c2c .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21c54 18fc .cfa: .sp 0 + .ra: .x30 +STACK CFI 21c58 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21c80 1d8c .cfa: .sp 0 + .ra: .x30 +STACK CFI 21c84 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21ca8 1dbc .cfa: .sp 0 + .ra: .x30 +STACK CFI 21cac .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21cd0 1ea8 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21cd4 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21d1c 18fc .cfa: .sp 0 + .ra: .x30 +STACK CFI 21d20 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21d48 74 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21d4c .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21d7c 18fc .cfa: .sp 0 + .ra: .x30 +STACK CFI 21d80 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21da8 1abc .cfa: .sp 0 + .ra: .x30 +STACK CFI 21dac .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21dd0 1abc .cfa: .sp 0 + .ra: .x30 +STACK CFI 21dd4 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21df8 18fc .cfa: .sp 0 + .ra: .x30 +STACK CFI 21dfc .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21e24 1abc .cfa: .sp 0 + .ra: .x30 +STACK CFI 21e28 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21e4c 1654 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21e50 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21e7c 1abc .cfa: .sp 0 + .ra: .x30 +STACK CFI 21e80 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21ea4 1abc .cfa: .sp 0 + .ra: .x30 +STACK CFI 21ea8 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21ecc 74 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21ed0 .cfa: .sp 16 + .x29: .cfa -16 + ^ .x30: .cfa -8 + ^ .ra: .cfa -8 + ^ +STACK CFI INIT 21f00 1440 .cfa: .sp 0 + .ra: .x30 +STACK CFI 21f04 .cfa: .sp 32 + .x29: .cfa -32 + ^ .x30: .cfa -24 + ^ .ra: .cfa -24 + ^ +STACK CFI 21f08 .cfa: .sp 32 + +STACK CFI INIT 22018 1570 .cfa: .sp 0 + .ra: .x30 +STACK CFI 2201c .cfa: .sp 32 + .x19: .cfa -32 + ^ .x20: .cfa -24 + ^ +STACK CFI 22020 .x21: .cfa -16 + ^ +STACK CFI 22024 .cfa: .sp 64 + .x29: .cfa -64 + ^ .x30: .cfa -56 + ^ .ra: .cfa -56 + ^ +STACK CFI 22028 .cfa: .sp 64 + diff --git a/symbolic-cfi/tests/test_cfi.rs b/symbolic-cfi/tests/test_cfi.rs index 1d5e56489..cebdb3cf4 100644 --- a/symbolic-cfi/tests/test_cfi.rs +++ b/symbolic-cfi/tests/test_cfi.rs @@ -119,3 +119,16 @@ fn cfi_from_elf_arm64() -> Result<(), Error> { Ok(()) } + +#[test] +fn cfi_from_pe_arm64() -> Result<(), Error> { + let buffer = ByteView::open(fixture("windows/arm64/test.exe"))?; + let object = Object::parse(&buffer)?; + + let buf: Vec = AsciiCfiWriter::transform(&object)?; + let cfi = str::from_utf8(&buf)?; + // Verify that .ra: x30 appears in INIT rows + insta::assert_snapshot!("cfi_pe_arm64", cfi); + + Ok(()) +} diff --git a/symbolic-testutils/fixtures/windows/arm64/test.exe b/symbolic-testutils/fixtures/windows/arm64/test.exe new file mode 100644 index 000000000..b0d38ac0a Binary files /dev/null and b/symbolic-testutils/fixtures/windows/arm64/test.exe differ