function: nested_asm (entry: bb_0x2010)

loops: 2 (2 with a derived trip count; max nesting depth 2)
  iters = executions of a block per single call of nested_asm (product of enclosing trip counts);
  ? = not derivable from the code — treat that block's cost as per-iteration, not per-call.
  A block with no iters annotation is in no loop and runs once per call.
  L1  loop  header bb_0x201e  latch bb_0x201a  depth 2  in L2  blocks 2  trips 4 exact  (init r3=0 @bb_0x2016; step +1 (adds r3, #1 @bb_0x201a); limit 3 (cmp r3, #3 @bb_0x201e); continue on le)
  L2  loop  header bb_0x2024  latch bb_0x2022  depth 1  blocks 5  trips 8 exact  (init r4=0 @bb_0x2010; step +1 (adds r4, #1 @bb_0x2022); limit 7 (cmp r4, #7 @bb_0x2024); continue on le)

[nested_asm_0x2010] 0x2010-0x2016  (entry)
source: nested_asm.S:10:12;
  push {r4, r5, lr}
  movs r4, #0
  b #0x2024
  -> bb_0x2024

[nested_asm_0x2016] 0x2016-0x201a  (in L2, iters=8)
source: nested_asm.S:14:15;
  movs r3, #0
  b #0x201e
  -> bb_0x201e

[nested_asm_0x201a] 0x201a-0x201e  (in L1, iters=32)
source: nested_asm.S:17:18;
  adds r5, r5, r3
  adds r3, #1
  -> bb_0x201e (back-edge, loop L1)

[nested_asm_0x201e] 0x201e-0x2022  (loop-header L1, trips=4, in L2, iters=32)
source: nested_asm.S:20:21;
  cmp r3, #3
  ble #0x201a
  -> bb_0x201a (le=taken), bb_0x2022 (gt=fallthrough)

[nested_asm_0x2022] 0x2022-0x2024  (in L2, iters=8)
source: nested_asm.S:22:22;
  adds r4, #1
  -> bb_0x2024 (back-edge, loop L2)

[nested_asm_0x2024] 0x2024-0x2028  (loop-header L2, trips=8, iters=8)
source: nested_asm.S:24:25;
  cmp r4, #7
  ble #0x2016
  -> bb_0x2016 (le=taken), bb_0x2028 (gt=fallthrough)

[nested_asm_0x2028] 0x2028-0x202a  (exit)
source: nested_asm.S:26:26;
  pop {r4, r5, pc}
