blinkid-ios icon indicating copy to clipboard operation
blinkid-ios copied to clipboard

Crash after scanning document

Open khambir opened this issue 5 years ago • 45 comments

Environment

  • Xcode version: 11.3
  • BlinkID SDK version: 5.1
  • What are you trying to scan? Passport

Describe the problem

The app is crashing after scanning the document.

Steps to reproduce:

  1. Prepare a document (Passport in my case) and put the document in front of the camera. It is important.
  2. Open the scanner with MBPassportRecognizer
  3. After successfully scanning you will get the crash.

Try to do it several times, the bug is reproducing not every time, but quite often. I use iPhone X. I can not reproduce this bug with BlinkID SDK 5.0, only with 5.1.

Screenshot 2020-01-11 at 09 33 02
GLEngine`gleRunVertexSubmitARM:
    0x1c668bb20 <+0>:    stp    x28, x27, [sp, #-0x60]!
    0x1c668bb24 <+4>:    stp    x26, x25, [sp, #0x10]
    0x1c668bb28 <+8>:    stp    x24, x23, [sp, #0x20]
    0x1c668bb2c <+12>:   stp    x22, x21, [sp, #0x30]
    0x1c668bb30 <+16>:   stp    x20, x19, [sp, #0x40]
    0x1c668bb34 <+20>:   stp    x29, x30, [sp, #0x50]
    0x1c668bb38 <+24>:   add    x29, sp, #0x50            ; =0x50 
    0x1c668bb3c <+28>:   sub    sp, sp, #0x1c0            ; =0x1c0 
    0x1c668bb40 <+32>:   adrp   x8, 161101
    0x1c668bb44 <+36>:   ldr    x8, [x8, #0x798]
    0x1c668bb48 <+40>:   ldr    x8, [x8]
    0x1c668bb4c <+44>:   stur   x8, [x29, #-0x60]
    0x1c668bb50 <+48>:   add    w11, w4, w3
    0x1c668bb54 <+52>:   ldr    x17, [x0, #0x6338]
    0x1c668bb58 <+56>:   ldr    x9, [x0, #0x6448]
    0x1c668bb5c <+60>:   ldr    x15, [x5]
    0x1c668bb60 <+64>:   ldr    x10, [x0, #0x6358]
    0x1c668bb64 <+68>:   ldr    w8, [x5, #0x8]
    0x1c668bb68 <+72>:   ubfiz  w1, w8, #2, #8
    0x1c668bb6c <+76>:   ands   w16, w15, #0xff
    0x1c668bb70 <+80>:   b.eq   0x1c668bdd4               ; <+692>
    0x1c668bb74 <+84>:   stp    x17, x1, [sp, #0x8]
    0x1c668bb78 <+88>:   mov    x13, #0x0
    0x1c668bb7c <+92>:   sub    w17, w16, #0x1            ; =0x1 
    0x1c668bb80 <+96>:   ubfx   x8, x15, #14, #18
    0x1c668bb84 <+100>:  and    w8, w8, #0x3fc
    0x1c668bb88 <+104>:  add    w8, w1, w8
    0x1c668bb8c <+108>:  and    x2, x15, #0x700
    0x1c668bb90 <+112>:  ubfx   w14, w15, #8, #3
    0x1c668bb94 <+116>:  mov    w12, #0x2218
    0x1c668bb98 <+120>:  add    x6, x0, x12
    0x1c668bb9c <+124>:  add    x7, x5, #0x10             ; =0x10 
    0x1c668bba0 <+128>:  add    x19, sp, #0x18            ; =0x18 
    0x1c668bba4 <+132>:  adrp   x20, 161103
    0x1c668bba8 <+136>:  add    x20, x20, #0x170          ; =0x170 
    0x1c668bbac <+140>:  adrp   x27, 161103
    0x1c668bbb0 <+144>:  add    x27, x27, #0xbf0          ; =0xbf0 
    0x1c668bbb4 <+148>:  adrp   x28, 45
    0x1c668bbb8 <+152>:  add    x28, x28, #0x434          ; =0x434 
    0x1c668bbbc <+156>:  b      0x1c668bbcc               ; <+172>
    0x1c668bbc0 <+160>:  adrp   x12, 0
    0x1c668bbc4 <+164>:  add    x12, x12, #0xf1c          ; =0xf1c 
    0x1c668bbc8 <+168>:  b      0x1c668bd7c               ; <+604>
    0x1c668bbcc <+172>:  ldur   x26, [x7, #-0x8]
    0x1c668bbd0 <+176>:  ubfx   x30, x26, #35, #5
    0x1c668bbd4 <+180>:  ubfx   x12, x26, #32, #3
    0x1c668bbd8 <+184>:  ubfx   w25, w26, #14, #6
    0x1c668bbdc <+188>:  ubfiz  w21, w26, #2, #8
    0x1c668bbe0 <+192>:  mov    x1, x8
    0x1c668bbe4 <+196>:  cmp    x13, x17
    0x1c668bbe8 <+200>:  b.hs   0x1c668bbf4               ; <+212>
    0x1c668bbec <+204>:  ldr    w1, [x7]
    0x1c668bbf0 <+208>:  ubfiz  w1, w1, #2, #8
    0x1c668bbf4 <+212>:  sub    w12, w12, #0x1            ; =0x1 
    0x1c668bbf8 <+216>:  ubfx   w22, w26, #11, #3
    0x1c668bbfc <+220>:  lsr    x24, x26, #40
    0x1c668bc00 <+224>:  sub    w23, w1, w21
    0x1c668bc04 <+228>:  stp    w24, w23, [x19, #0x10]
    0x1c668bc08 <+232>:  orr    w23, w25, #0x2
    0x1c668bc0c <+236>:  cmp    w23, #0x2f                ; =0x2f 
    0x1c668bc10 <+240>:  b.eq   0x1c668bc2c               ; <+268>
    0x1c668bc14 <+244>:  cmp    w22, w12
    0x1c668bc18 <+248>:  b.hi   0x1c668be40               ; <+800>
    0x1c668bc1c <+252>:  ldr    w23, [x28, x30, lsl #2]
    0x1c668bc20 <+256>:  ubfx   w26, w26, #8, #3
    0x1c668bc24 <+260>:  cmp    w23, w26
    0x1c668bc28 <+264>:  b.ne   0x1c668be40               ; <+800>
    0x1c668bc2c <+268>:  add    x13, x13, #0x1            ; =0x1 
    0x1c668bc30 <+272>:  add    x23, x20, x30, lsl #7
    0x1c668bc34 <+276>:  add    x23, x23, x12, lsl #5
    0x1c668bc38 <+280>:  ldr    w23, [x23, #0x18]
    0x1c668bc3c <+284>:  add    w21, w23, w21
    0x1c668bc40 <+288>:  cmp    w22, w12
    0x1c668bc44 <+292>:  csel   w26, w22, w12, lo
    0x1c668bc48 <+296>:  cmp    w30, #0x14                ; =0x14 
    0x1c668bc4c <+300>:  b.ne   0x1c668bc74               ; <+340>
    0x1c668bc50 <+304>:  cmp    w25, #0x2d                ; =0x2d 
    0x1c668bc54 <+308>:  b.eq   0x1c668bcd8               ; <+440>
    0x1c668bc58 <+312>:  cmp    w25, #0x2f                ; =0x2f 
    0x1c668bc5c <+316>:  b.ne   0x1c668bd04               ; <+484>
    0x1c668bc60 <+320>:  mov    w12, w26
    0x1c668bc64 <+324>:  add    x12, x20, x12, lsl #5
    0x1c668bc68 <+328>:  ldr    x12, [x12, #0x210]
    0x1c668bc6c <+332>:  str    x6, [x19]
    0x1c668bc70 <+336>:  b      0x1c668bd7c               ; <+604>
    0x1c668bc74 <+340>:  ldr    x12, [x0, #0x6490]
    0x1c668bc78 <+344>:  lsl    w22, w25, #3
    0x1c668bc7c <+348>:  add    x12, x12, x22
    0x1c668bc80 <+352>:  ldr    x12, [x12, #0x3c0]
    0x1c668bc84 <+356>:  str    x12, [x19]
    0x1c668bc88 <+360>:  tst    w24, #0x3
    0x1c668bc8c <+364>:  cset   w22, ne
    0x1c668bc90 <+368>:  tst    x12, #0x3
    0x1c668bc94 <+372>:  cset   w23, ne
    0x1c668bc98 <+376>:  orr    w22, w22, w23
    0x1c668bc9c <+380>:  cmp    x2, #0x200                ; =0x200 
    0x1c668bca0 <+384>:  b.ne   0x1c668bcc0               ; <+416>
    0x1c668bca4 <+388>:  mul    w23, w11, w24
    0x1c668bca8 <+392>:  add    x12, x12, x23
    0x1c668bcac <+396>:  str    x12, [x19]
    0x1c668bcb0 <+400>:  mov    w12, w26
    0x1c668bcb4 <+404>:  cbz    w22, 0x1c668bd50          ; <+560>
    0x1c668bcb8 <+408>:  add    x1, x20, x30, lsl #7
    0x1c668bcbc <+412>:  b      0x1c668bccc               ; <+428>
    0x1c668bcc0 <+416>:  mov    w12, w26
    0x1c668bcc4 <+420>:  cbz    w22, 0x1c668bd1c          ; <+508>
    0x1c668bcc8 <+424>:  add    x1, x27, x30, lsl #7
    0x1c668bccc <+428>:  lsl    x12, x12, #5
    0x1c668bcd0 <+432>:  ldr    x12, [x1, x12]
    0x1c668bcd4 <+436>:  b      0x1c668bd7c               ; <+604>
    0x1c668bcd8 <+440>:  str    xzr, [x19]
    0x1c668bcdc <+444>:  cmp    w14, #0x5                 ; =0x5 
    0x1c668bce0 <+448>:  b.hi   0x1c668bbc0               ; <+160>
    0x1c668bce4 <+452>:  orr    w12, wzr, #0x1
    0x1c668bce8 <+456>:  lsl    w12, w12, w14
    0x1c668bcec <+460>:  mov    w1, #0x2a
    0x1c668bcf0 <+464>:  tst    w12, w1
    0x1c668bcf4 <+468>:  b.eq   0x1c668bbc0               ; <+160>
    0x1c668bcf8 <+472>:  adrp   x12, 0
    0x1c668bcfc <+476>:  add    x12, x12, #0xf00          ; =0xf00 
    0x1c668bd00 <+480>:  b      0x1c668bd7c               ; <+604>
    0x1c668bd04 <+484>:  tbnz   x15, #0x24, 0x1c668bd2c   ; <+524>
    0x1c668bd08 <+488>:  orr    w12, w25, #0x10
    0x1c668bd0c <+492>:  cmp    w12, #0x10                ; =0x10 
    0x1c668bd10 <+496>:  b.ne   0x1c668bd2c               ; <+524>
    0x1c668bd14 <+500>:  mov    w12, #-0x1
    0x1c668bd18 <+504>:  b      0x1c668bd44               ; <+548>
    0x1c668bd1c <+508>:  cmp    w21, w1
    0x1c668bd20 <+512>:  b.ne   0x1c668bd70               ; <+592>
    0x1c668bd24 <+516>:  add    x1, x27, x30, lsl #7
    0x1c668bd28 <+520>:  b      0x1c668bd5c               ; <+572>
    0x1c668bd2c <+524>:  cmp    w25, #0xf                 ; =0xf 
    0x1c668bd30 <+528>:  mov    w12, #0x1e10
    0x1c668bd34 <+532>:  add    w12, w12, w25, lsl #5
    0x1c668bd38 <+536>:  mov    w22, #0x1f10
    0x1c668bd3c <+540>:  add    w22, w22, w25, lsl #4
    0x1c668bd40 <+544>:  csel   w12, w12, w22, hi
    0x1c668bd44 <+548>:  add    x12, x0, w12, sxtw
    0x1c668bd48 <+552>:  str    x12, [x19]
    0x1c668bd4c <+556>:  mov    w12, w26
    0x1c668bd50 <+560>:  cmp    w21, w1
    0x1c668bd54 <+564>:  b.ne   0x1c668bd68               ; <+584>
    0x1c668bd58 <+568>:  add    x1, x20, x30, lsl #7
    0x1c668bd5c <+572>:  add    x12, x1, x12, lsl #5
    0x1c668bd60 <+576>:  ldr    x12, [x12, #0x10]
    0x1c668bd64 <+580>:  b      0x1c668bd7c               ; <+604>
    0x1c668bd68 <+584>:  add    x1, x20, x30, lsl #7
    0x1c668bd6c <+588>:  b      0x1c668bd74               ; <+596>
    0x1c668bd70 <+592>:  add    x1, x27, x30, lsl #7
    0x1c668bd74 <+596>:  add    x12, x1, x12, lsl #5
    0x1c668bd78 <+600>:  ldr    x12, [x12, #0x8]
    0x1c668bd7c <+604>:  str    x12, [x19, #0x8]
    0x1c668bd80 <+608>:  add    x19, x19, #0x18           ; =0x18 
    0x1c668bd84 <+612>:  add    x7, x7, #0x8              ; =0x8 
    0x1c668bd88 <+616>:  cmp    x13, x16
    0x1c668bd8c <+620>:  b.lo   0x1c668bbcc               ; <+172>
    0x1c668bd90 <+624>:  ldp    x17, x1, [sp, #0x8]
    0x1c668bd94 <+628>:  cmp    w14, #0x5                 ; =0x5 
    0x1c668bd98 <+632>:  b.eq   0x1c668bde4               ; <+708>
    0x1c668bd9c <+636>:  cmp    w14, #0x3                 ; =0x3 
    0x1c668bda0 <+640>:  b.eq   0x1c668bdf4               ; <+724>
    0x1c668bda4 <+644>:  cmp    w14, #0x1                 ; =0x1 
    0x1c668bda8 <+648>:  b.ne   0x1c668be1c               ; <+764>
    0x1c668bdac <+652>:  add    x9, x9, w11, sxtw
    0x1c668bdb0 <+656>:  adrp   x8, 0
    0x1c668bdb4 <+660>:  add    x8, x8, #0xe60            ; =0xe60 
    0x1c668bdb8 <+664>:  orr    w12, wzr, #0x18
    0x1c668bdbc <+668>:  add    x14, sp, #0x18            ; =0x18 
    0x1c668bdc0 <+672>:  madd   x15, x13, x12, x14
    0x1c668bdc4 <+676>:  str    x8, [x15, #0x8]
    0x1c668bdc8 <+680>:  add    x12, x17, x1
    0x1c668bdcc <+684>:  add    x13, x14, #0x8            ; =0x8 
    0x1c668bdd0 <+688>:  br     x8
    0x1c668bdd4 <+692>:  mov    x13, #0x0
    0x1c668bdd8 <+696>:  ubfx   w14, w15, #8, #3
    0x1c668bddc <+700>:  cmp    w14, #0x5                 ; =0x5 
    0x1c668bde0 <+704>:  b.ne   0x1c668bd9c               ; <+636>
    0x1c668bde4 <+708>:  add    x9, x9, w11, sxtw #2
    0x1c668bde8 <+712>:  adrp   x8, 0
    0x1c668bdec <+716>:  add    x8, x8, #0xe90            ; =0xe90 
    0x1c668bdf0 <+720>:  b      0x1c668be24               ; <+772>
    0x1c668bdf4 <+724>:  add    x9, x9, w11, sxtw #1
    0x1c668bdf8 <+728>:  adrp   x8, 0
    0x1c668bdfc <+732>:  add    x8, x8, #0xe78            ; =0xe78 
    0x1c668be00 <+736>:  orr    w12, wzr, #0x18
    0x1c668be04 <+740>:  add    x14, sp, #0x18            ; =0x18 
    0x1c668be08 <+744>:  madd   x15, x13, x12, x14
    0x1c668be0c <+748>:  str    x8, [x15, #0x8]
    0x1c668be10 <+752>:  add    x12, x17, x1
    0x1c668be14 <+756>:  add    x13, x14, #0x8            ; =0x8 
    0x1c668be18 <+760>:  br     x8
    0x1c668be1c <+764>:  adrp   x8, 0
    0x1c668be20 <+768>:  add    x8, x8, #0xea8            ; =0xea8 
    0x1c668be24 <+772>:  orr    w12, wzr, #0x18
    0x1c668be28 <+776>:  add    x14, sp, #0x18            ; =0x18 
    0x1c668be2c <+780>:  madd   x15, x13, x12, x14
    0x1c668be30 <+784>:  str    x8, [x15, #0x8]
    0x1c668be34 <+788>:  add    x12, x17, x1
    0x1c668be38 <+792>:  add    x13, x14, #0x8            ; =0x8 
    0x1c668be3c <+796>:  br     x8
    0x1c668be40 <+800>:  fmov   s0, wzr
    0x1c668be44 <+804>:  fmov   s1, wzr
    0x1c668be48 <+808>:  fmov   s2, wzr
    0x1c668be4c <+812>:  fmov   s3, wzr
    0x1c668be50 <+816>:  mov    x1, #0x0
    0x1c668be54 <+820>:  mov    x2, #0x0
    0x1c668be58 <+824>:  bl     0x1c6689d94               ; gleRunVertexSubmitImmediate
    0x1c668be5c <+828>:  b      0x1c668bec4               ; <+932>
    0x1c668be60 <+832>:  cmp    x12, x10
    0x1c668be64 <+836>:  b.hs   0x1c668bebc               ; <+924>
    0x1c668be68 <+840>:  add    x15, sp, #0x18            ; =0x18 
    0x1c668be6c <+844>:  ldrb   w14, [x9], #0x1
    0x1c668be70 <+848>:  ldr    x8, [x13]
    0x1c668be74 <+852>:  br     x8
    0x1c668be78 <+856>:  cmp    x12, x10
    0x1c668be7c <+860>:  b.hs   0x1c668bebc               ; <+924>
    0x1c668be80 <+864>:  add    x15, sp, #0x18            ; =0x18 
    0x1c668be84 <+868>:  ldrh   w14, [x9], #0x2
    0x1c668be88 <+872>:  ldr    x8, [x13]
    0x1c668be8c <+876>:  br     x8
    0x1c668be90 <+880>:  cmp    x12, x10
    0x1c668be94 <+884>:  b.hs   0x1c668bebc               ; <+924>
    0x1c668be98 <+888>:  add    x15, sp, #0x18            ; =0x18 
    0x1c668be9c <+892>:  ldr    w14, [x9], #0x4
    0x1c668bea0 <+896>:  ldr    x8, [x13]
    0x1c668bea4 <+900>:  br     x8
    0x1c668bea8 <+904>:  cmp    x12, x10
    0x1c668beac <+908>:  b.hs   0x1c668bebc               ; <+924>
    0x1c668beb0 <+912>:  add    x15, sp, #0x18            ; =0x18 
    0x1c668beb4 <+916>:  ldr    x8, [x13]
    0x1c668beb8 <+920>:  br     x8
    0x1c668bebc <+924>:  sub    x8, x12, x1
    0x1c668bec0 <+928>:  str    x8, [x0, #0x6338]
    0x1c668bec4 <+932>:  ldur   x8, [x29, #-0x60]
    0x1c668bec8 <+936>:  adrp   x9, 161101
    0x1c668becc <+940>:  ldr    x9, [x9, #0x798]
    0x1c668bed0 <+944>:  ldr    x9, [x9]
    0x1c668bed4 <+948>:  cmp    x9, x8
    0x1c668bed8 <+952>:  b.ne   0x1c668befc               ; <+988>
    0x1c668bedc <+956>:  add    sp, sp, #0x1c0            ; =0x1c0 
    0x1c668bee0 <+960>:  ldp    x29, x30, [sp, #0x50]
    0x1c668bee4 <+964>:  ldp    x20, x19, [sp, #0x40]
    0x1c668bee8 <+968>:  ldp    x22, x21, [sp, #0x30]
    0x1c668beec <+972>:  ldp    x24, x23, [sp, #0x20]
    0x1c668bef0 <+976>:  ldp    x26, x25, [sp, #0x10]
    0x1c668bef4 <+980>:  ldp    x28, x27, [sp], #0x60
    0x1c668bef8 <+984>:  ret    
    0x1c668befc <+988>:  bl     0x1c5a15534               ; symbol stub for: +[RKMessageClassifier preferredLanguages]
    0x1c668bf00 <+992>:  str    w14, [x12]
    0x1c668bf04 <+996>:  ldrsw  x8, [x15, #0x14]
    0x1c668bf08 <+1000>: add    x12, x12, x8
    0x1c668bf0c <+1004>: add    x8, x15, #0x20            ; =0x20 
    0x1c668bf10 <+1008>: add    x15, x15, #0x18           ; =0x18 
    0x1c668bf14 <+1012>: ldr    x8, [x8]
    0x1c668bf18 <+1016>: br     x8
    0x1c668bf1c <+1020>: str    w11, [x12]
    0x1c668bf20 <+1024>: add    w11, w11, #0x1            ; =0x1 
    0x1c668bf24 <+1028>: ldrsw  x8, [x15, #0x14]
    0x1c668bf28 <+1032>: add    x12, x12, x8
    0x1c668bf2c <+1036>: add    x8, x15, #0x20            ; =0x20 
    0x1c668bf30 <+1040>: add    x15, x15, #0x18           ; =0x18 
    0x1c668bf34 <+1044>: ldr    x8, [x8]
    0x1c668bf38 <+1048>: br     x8
    0x1c668bf3c <+1052>: ldr    x8, [x15]
    0x1c668bf40 <+1056>: ldr    w16, [x15, #0x10]
    0x1c668bf44 <+1060>: add    x16, x8, x16
    0x1c668bf48 <+1064>: str    x16, [x15]
    0x1c668bf4c <+1068>: ldrb   w8, [x8]
    0x1c668bf50 <+1072>: strb   w8, [x12]
    0x1c668bf54 <+1076>: ldrsw  x8, [x15, #0x14]
    0x1c668bf58 <+1080>: add    x12, x12, x8
    0x1c668bf5c <+1084>: add    x8, x15, #0x20            ; =0x20 
    0x1c668bf60 <+1088>: add    x15, x15, #0x18           ; =0x18 
    0x1c668bf64 <+1092>: ldr    x8, [x8]
    0x1c668bf68 <+1096>: br     x8
    0x1c668bf6c <+1100>: ldr    x8, [x15]
    0x1c668bf70 <+1104>: ldr    w16, [x15, #0x10]
    0x1c668bf74 <+1108>: add    x16, x8, x16
    0x1c668bf78 <+1112>: str    x16, [x15]
    0x1c668bf7c <+1116>: ldrh   w8, [x8]
    0x1c668bf80 <+1120>: strh   w8, [x12]
    0x1c668bf84 <+1124>: ldrsw  x8, [x15, #0x14]
    0x1c668bf88 <+1128>: add    x12, x12, x8
    0x1c668bf8c <+1132>: add    x8, x15, #0x20            ; =0x20 
    0x1c668bf90 <+1136>: add    x15, x15, #0x18           ; =0x18 
    0x1c668bf94 <+1140>: ldr    x8, [x8]
    0x1c668bf98 <+1144>: br     x8
    0x1c668bf9c <+1148>: ldr    x8, [x15]
    0x1c668bfa0 <+1152>: ldr    w16, [x15, #0x10]
    0x1c668bfa4 <+1156>: add    x16, x8, x16
    0x1c668bfa8 <+1160>: str    x16, [x15]
    0x1c668bfac <+1164>: ldrh   w16, [x8]
    0x1c668bfb0 <+1168>: ldrb   w8, [x8, #0x2]
    0x1c668bfb4 <+1172>: strh   w16, [x12]
    0x1c668bfb8 <+1176>: strb   w8, [x12, #0x2]
    0x1c668bfbc <+1180>: ldrsw  x8, [x15, #0x14]
    0x1c668bfc0 <+1184>: add    x12, x12, x8
    0x1c668bfc4 <+1188>: add    x8, x15, #0x20            ; =0x20 
    0x1c668bfc8 <+1192>: add    x15, x15, #0x18           ; =0x18 
    0x1c668bfcc <+1196>: ldr    x8, [x8]
    0x1c668bfd0 <+1200>: br     x8
    0x1c668bfd4 <+1204>: ldr    x8, [x15]
    0x1c668bfd8 <+1208>: ldr    w16, [x15, #0x10]
    0x1c668bfdc <+1212>: add    x16, x8, x16
    0x1c668bfe0 <+1216>: str    x16, [x15]
    0x1c668bfe4 <+1220>: ldr    w8, [x8]
    0x1c668bfe8 <+1224>: str    w8, [x12]
    0x1c668bfec <+1228>: ldrsw  x8, [x15, #0x14]
    0x1c668bff0 <+1232>: add    x12, x12, x8
    0x1c668bff4 <+1236>: add    x8, x15, #0x20            ; =0x20 
    0x1c668bff8 <+1240>: add    x15, x15, #0x18           ; =0x18 
    0x1c668bffc <+1244>: ldr    x8, [x8]
    0x1c668c000 <+1248>: br     x8
    0x1c668c004 <+1252>: ldr    x8, [x15]
    0x1c668c008 <+1256>: ldr    w16, [x15, #0x10]
    0x1c668c00c <+1260>: add    x16, x8, x16
    0x1c668c010 <+1264>: str    x16, [x15]
    0x1c668c014 <+1268>: ldr    w16, [x8]
    0x1c668c018 <+1272>: str    w16, [x12]
    0x1c668c01c <+1276>: ldrh   w8, [x8, #0x4]
    0x1c668c020 <+1280>: strh   w8, [x12, #0x4]
    0x1c668c024 <+1284>: ldrsw  x8, [x15, #0x14]
    0x1c668c028 <+1288>: add    x12, x12, x8
    0x1c668c02c <+1292>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c030 <+1296>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c034 <+1300>: ldr    x8, [x8]
    0x1c668c038 <+1304>: br     x8
    0x1c668c03c <+1308>: ldr    x8, [x15]
    0x1c668c040 <+1312>: ldr    w16, [x15, #0x10]
    0x1c668c044 <+1316>: add    x16, x8, x16
    0x1c668c048 <+1320>: str    x16, [x15]
    0x1c668c04c <+1324>: ldr    w16, [x8]
    0x1c668c050 <+1328>: str    w16, [x12]
    0x1c668c054 <+1332>: ldr    w8, [x8, #0x4]
    0x1c668c058 <+1336>: str    w8, [x12, #0x4]
    0x1c668c05c <+1340>: ldrsw  x8, [x15, #0x14]
    0x1c668c060 <+1344>: add    x12, x12, x8
    0x1c668c064 <+1348>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c068 <+1352>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c06c <+1356>: ldr    x8, [x8]
    0x1c668c070 <+1360>: br     x8
    0x1c668c074 <+1364>: ldr    x8, [x15]
    0x1c668c078 <+1368>: ldr    w16, [x15, #0x10]
    0x1c668c07c <+1372>: add    x16, x8, x16
    0x1c668c080 <+1376>: str    x16, [x15]
    0x1c668c084 <+1380>: ldr    w16, [x8]
    0x1c668c088 <+1384>: str    w16, [x12]
    0x1c668c08c <+1388>: ldr    w16, [x8, #0x4]
    0x1c668c090 <+1392>: str    w16, [x12, #0x4]
    0x1c668c094 <+1396>: ldr    w8, [x8, #0x8]
    0x1c668c098 <+1400>: str    w8, [x12, #0x8]
    0x1c668c09c <+1404>: ldrsw  x8, [x15, #0x14]
    0x1c668c0a0 <+1408>: add    x12, x12, x8
    0x1c668c0a4 <+1412>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c0a8 <+1416>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c0ac <+1420>: ldr    x8, [x8]
    0x1c668c0b0 <+1424>: br     x8
    0x1c668c0b4 <+1428>: ldr    x8, [x15]
    0x1c668c0b8 <+1432>: ldr    w16, [x15, #0x10]
    0x1c668c0bc <+1436>: add    x16, x8, x16
    0x1c668c0c0 <+1440>: str    x16, [x15]
    0x1c668c0c4 <+1444>: ldr    w16, [x8]
    0x1c668c0c8 <+1448>: str    w16, [x12]
    0x1c668c0cc <+1452>: ldr    w16, [x8, #0x4]
    0x1c668c0d0 <+1456>: str    w16, [x12, #0x4]
    0x1c668c0d4 <+1460>: ldr    w16, [x8, #0x8]
    0x1c668c0d8 <+1464>: str    w16, [x12, #0x8]
    0x1c668c0dc <+1468>: ldr    w8, [x8, #0xc]
    0x1c668c0e0 <+1472>: str    w8, [x12, #0xc]
    0x1c668c0e4 <+1476>: ldrsw  x8, [x15, #0x14]
    0x1c668c0e8 <+1480>: add    x12, x12, x8
    0x1c668c0ec <+1484>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c0f0 <+1488>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c0f4 <+1492>: ldr    x8, [x8]
    0x1c668c0f8 <+1496>: br     x8
    0x1c668c0fc <+1500>: ldr    x8, [x15]
    0x1c668c100 <+1504>: ldr    w16, [x15, #0x10]
    0x1c668c104 <+1508>: add    x16, x8, x16
    0x1c668c108 <+1512>: str    x16, [x15]
    0x1c668c10c <+1516>: ldrh   w8, [x8]
    0x1c668c110 <+1520>: strh   w8, [x12]
    0x1c668c114 <+1524>: ldrsw  x8, [x15, #0x14]
    0x1c668c118 <+1528>: add    x12, x12, x8
    0x1c668c11c <+1532>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c120 <+1536>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c124 <+1540>: ldr    x8, [x8]
    0x1c668c128 <+1544>: br     x8
    0x1c668c12c <+1548>: ldr    x8, [x15]
    0x1c668c130 <+1552>: ldr    w16, [x15, #0x10]
    0x1c668c134 <+1556>: add    x16, x8, x16
    0x1c668c138 <+1560>: str    x16, [x15]
    0x1c668c13c <+1564>: ldr    w16, [x8]
    0x1c668c140 <+1568>: str    w16, [x12]
    0x1c668c144 <+1572>: ldrh   w8, [x8, #0x4]
    0x1c668c148 <+1576>: strh   w8, [x12, #0x4]
    0x1c668c14c <+1580>: ldrsw  x8, [x15, #0x14]
    0x1c668c150 <+1584>: add    x12, x12, x8
    0x1c668c154 <+1588>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c158 <+1592>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c15c <+1596>: ldr    x8, [x8]
    0x1c668c160 <+1600>: br     x8
    0x1c668c164 <+1604>: ldr    x8, [x15]
    0x1c668c168 <+1608>: ldr    w16, [x15, #0x10]
    0x1c668c16c <+1612>: add    x16, x8, x16
    0x1c668c170 <+1616>: str    x16, [x15]
    0x1c668c174 <+1620>: ldr    w8, [x8]
    0x1c668c178 <+1624>: str    w8, [x12]
    0x1c668c17c <+1628>: ldrsw  x8, [x15, #0x14]
    0x1c668c180 <+1632>: add    x12, x12, x8
    0x1c668c184 <+1636>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c188 <+1640>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c18c <+1644>: ldr    x8, [x8]
    0x1c668c190 <+1648>: br     x8
    0x1c668c194 <+1652>: ldr    x8, [x15]
    0x1c668c198 <+1656>: ldr    w16, [x15, #0x10]
    0x1c668c19c <+1660>: add    x16, x8, x16
    0x1c668c1a0 <+1664>: str    x16, [x15]
    0x1c668c1a4 <+1668>: ldr    x8, [x8]
    0x1c668c1a8 <+1672>: str    x8, [x12]
    0x1c668c1ac <+1676>: ldrsw  x8, [x15, #0x14]
    0x1c668c1b0 <+1680>: add    x12, x12, x8
    0x1c668c1b4 <+1684>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c1b8 <+1688>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c1bc <+1692>: ldr    x8, [x8]
    0x1c668c1c0 <+1696>: br     x8
    0x1c668c1c4 <+1700>: ldr    x8, [x15]
    0x1c668c1c8 <+1704>: ldr    w16, [x15, #0x10]
    0x1c668c1cc <+1708>: add    x16, x8, x16
    0x1c668c1d0 <+1712>: str    x16, [x15]
    0x1c668c1d4 <+1716>: ldr    x16, [x8]
    0x1c668c1d8 <+1720>: ldr    w8, [x8, #0x8]
    0x1c668c1dc <+1724>: str    x16, [x12]
    0x1c668c1e0 <+1728>: str    w8, [x12, #0x8]
    0x1c668c1e4 <+1732>: ldrsw  x8, [x15, #0x14]
    0x1c668c1e8 <+1736>: add    x12, x12, x8
    0x1c668c1ec <+1740>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c1f0 <+1744>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c1f4 <+1748>: ldr    x8, [x8]
    0x1c668c1f8 <+1752>: br     x8
    0x1c668c1fc <+1756>: ldr    x8, [x15]
    0x1c668c200 <+1760>: ldr    w16, [x15, #0x10]
    0x1c668c204 <+1764>: add    x16, x8, x16
    0x1c668c208 <+1768>: str    x16, [x15]
    0x1c668c20c <+1772>: ldr    q0, [x8]
    0x1c668c210 <+1776>: str    q0, [x12]
    0x1c668c214 <+1780>: ldrsw  x8, [x15, #0x14]
    0x1c668c218 <+1784>: add    x12, x12, x8
    0x1c668c21c <+1788>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c220 <+1792>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c224 <+1796>: ldr    x8, [x8]
    0x1c668c228 <+1800>: br     x8
    0x1c668c22c <+1804>: ldr    x8, [x15]
    0x1c668c230 <+1808>: ldr    w16, [x15, #0x10]
    0x1c668c234 <+1812>: add    x16, x8, x16
    0x1c668c238 <+1816>: str    x16, [x15]
    0x1c668c23c <+1820>: ldr    w8, [x8]
    0x1c668c240 <+1824>: str    w8, [x12], #0x4
    0x1c668c244 <+1828>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c248 <+1832>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c24c <+1836>: ldr    x8, [x8]
    0x1c668c250 <+1840>: br     x8
    0x1c668c254 <+1844>: ldr    x8, [x15]
    0x1c668c258 <+1848>: ldr    w16, [x15, #0x10]
    0x1c668c25c <+1852>: add    x16, x8, x16
    0x1c668c260 <+1856>: str    x16, [x15]
->  0x1c668c264 <+1860>: ldr    x8, [x8]
    0x1c668c268 <+1864>: str    x8, [x12], #0x8
    0x1c668c26c <+1868>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c270 <+1872>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c274 <+1876>: ldr    x8, [x8]
    0x1c668c278 <+1880>: br     x8
    0x1c668c27c <+1884>: ldr    x8, [x15]
    0x1c668c280 <+1888>: ldr    w16, [x15, #0x10]
    0x1c668c284 <+1892>: add    x16, x8, x16
    0x1c668c288 <+1896>: str    x16, [x15]
    0x1c668c28c <+1900>: ldr    x16, [x8]
    0x1c668c290 <+1904>: ldr    w8, [x8, #0x8]
    0x1c668c294 <+1908>: str    x16, [x12]
    0x1c668c298 <+1912>: str    w8, [x12, #0x8]
    0x1c668c29c <+1916>: add    x12, x12, #0xc            ; =0xc 
    0x1c668c2a0 <+1920>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c2a4 <+1924>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c2a8 <+1928>: ldr    x8, [x8]
    0x1c668c2ac <+1932>: br     x8
    0x1c668c2b0 <+1936>: ldr    x8, [x15]
    0x1c668c2b4 <+1940>: ldr    w16, [x15, #0x10]
    0x1c668c2b8 <+1944>: add    x16, x8, x16
    0x1c668c2bc <+1948>: str    x16, [x15]
    0x1c668c2c0 <+1952>: ldr    q0, [x8]
    0x1c668c2c4 <+1956>: str    q0, [x12], #0x10
    0x1c668c2c8 <+1960>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c2cc <+1964>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c2d0 <+1968>: ldr    x8, [x8]
    0x1c668c2d4 <+1972>: br     x8
    0x1c668c2d8 <+1976>: ldr    x8, [x15]
    0x1c668c2dc <+1980>: ldr    w16, [x15, #0x10]
    0x1c668c2e0 <+1984>: mul    w16, w16, w14
    0x1c668c2e4 <+1988>: ldrb   w8, [x8, w16, uxtw]
    0x1c668c2e8 <+1992>: strb   w8, [x12]
    0x1c668c2ec <+1996>: ldrsw  x8, [x15, #0x14]
    0x1c668c2f0 <+2000>: add    x12, x12, x8
    0x1c668c2f4 <+2004>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c2f8 <+2008>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c2fc <+2012>: ldr    x8, [x8]
    0x1c668c300 <+2016>: br     x8
    0x1c668c304 <+2020>: ldr    x8, [x15]
    0x1c668c308 <+2024>: ldr    w16, [x15, #0x10]
    0x1c668c30c <+2028>: mul    w16, w16, w14
    0x1c668c310 <+2032>: ldrh   w8, [x8, w16, uxtw]
    0x1c668c314 <+2036>: strh   w8, [x12]
    0x1c668c318 <+2040>: ldrsw  x8, [x15, #0x14]
    0x1c668c31c <+2044>: add    x12, x12, x8
    0x1c668c320 <+2048>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c324 <+2052>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c328 <+2056>: ldr    x8, [x8]
    0x1c668c32c <+2060>: br     x8
    0x1c668c330 <+2064>: ldr    x8, [x15]
    0x1c668c334 <+2068>: ldr    w16, [x15, #0x10]
    0x1c668c338 <+2072>: mul    w16, w16, w14
    0x1c668c33c <+2076>: add    x8, x8, x16
    0x1c668c340 <+2080>: ldrh   w16, [x8]
    0x1c668c344 <+2084>: ldrb   w8, [x8, #0x2]
    0x1c668c348 <+2088>: strh   w16, [x12]
    0x1c668c34c <+2092>: strb   w8, [x12, #0x2]
    0x1c668c350 <+2096>: ldrsw  x8, [x15, #0x14]
    0x1c668c354 <+2100>: add    x12, x12, x8
    0x1c668c358 <+2104>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c35c <+2108>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c360 <+2112>: ldr    x8, [x8]
    0x1c668c364 <+2116>: br     x8
    0x1c668c368 <+2120>: ldr    x8, [x15]
    0x1c668c36c <+2124>: ldr    w16, [x15, #0x10]
    0x1c668c370 <+2128>: mul    w16, w16, w14
    0x1c668c374 <+2132>: ldr    w8, [x8, w16, uxtw]
    0x1c668c378 <+2136>: str    w8, [x12]
    0x1c668c37c <+2140>: ldrsw  x8, [x15, #0x14]
    0x1c668c380 <+2144>: add    x12, x12, x8
    0x1c668c384 <+2148>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c388 <+2152>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c38c <+2156>: ldr    x8, [x8]
    0x1c668c390 <+2160>: br     x8
    0x1c668c394 <+2164>: ldr    x8, [x15]
    0x1c668c398 <+2168>: ldr    w16, [x15, #0x10]
    0x1c668c39c <+2172>: mul    w16, w16, w14
    0x1c668c3a0 <+2176>: add    x8, x8, x16
    0x1c668c3a4 <+2180>: ldr    w16, [x8]
    0x1c668c3a8 <+2184>: str    w16, [x12]
    0x1c668c3ac <+2188>: ldrh   w8, [x8, #0x4]
    0x1c668c3b0 <+2192>: strh   w8, [x12, #0x4]
    0x1c668c3b4 <+2196>: ldrsw  x8, [x15, #0x14]
    0x1c668c3b8 <+2200>: add    x12, x12, x8
    0x1c668c3bc <+2204>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c3c0 <+2208>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c3c4 <+2212>: ldr    x8, [x8]
    0x1c668c3c8 <+2216>: br     x8
    0x1c668c3cc <+2220>: ldr    x8, [x15]
    0x1c668c3d0 <+2224>: ldr    w16, [x15, #0x10]
    0x1c668c3d4 <+2228>: mul    w16, w16, w14
    0x1c668c3d8 <+2232>: add    x8, x8, x16
    0x1c668c3dc <+2236>: ldr    w16, [x8]
    0x1c668c3e0 <+2240>: str    w16, [x12]
    0x1c668c3e4 <+2244>: ldr    w8, [x8, #0x4]
    0x1c668c3e8 <+2248>: str    w8, [x12, #0x4]
    0x1c668c3ec <+2252>: ldrsw  x8, [x15, #0x14]
    0x1c668c3f0 <+2256>: add    x12, x12, x8
    0x1c668c3f4 <+2260>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c3f8 <+2264>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c3fc <+2268>: ldr    x8, [x8]
    0x1c668c400 <+2272>: br     x8
    0x1c668c404 <+2276>: ldr    x8, [x15]
    0x1c668c408 <+2280>: ldr    w16, [x15, #0x10]
    0x1c668c40c <+2284>: mul    w16, w16, w14
    0x1c668c410 <+2288>: add    x8, x8, x16
    0x1c668c414 <+2292>: ldr    w16, [x8]
    0x1c668c418 <+2296>: str    w16, [x12]
    0x1c668c41c <+2300>: ldr    w16, [x8, #0x4]
    0x1c668c420 <+2304>: str    w16, [x12, #0x4]
    0x1c668c424 <+2308>: ldr    w8, [x8, #0x8]
    0x1c668c428 <+2312>: str    w8, [x12, #0x8]
    0x1c668c42c <+2316>: ldrsw  x8, [x15, #0x14]
    0x1c668c430 <+2320>: add    x12, x12, x8
    0x1c668c434 <+2324>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c438 <+2328>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c43c <+2332>: ldr    x8, [x8]
    0x1c668c440 <+2336>: br     x8
    0x1c668c444 <+2340>: ldr    x8, [x15]
    0x1c668c448 <+2344>: ldr    w16, [x15, #0x10]
    0x1c668c44c <+2348>: mul    w16, w16, w14
    0x1c668c450 <+2352>: add    x8, x8, x16
    0x1c668c454 <+2356>: ldr    w16, [x8]
    0x1c668c458 <+2360>: str    w16, [x12]
    0x1c668c45c <+2364>: ldr    w16, [x8, #0x4]
    0x1c668c460 <+2368>: str    w16, [x12, #0x4]
    0x1c668c464 <+2372>: ldr    w16, [x8, #0x8]
    0x1c668c468 <+2376>: str    w16, [x12, #0x8]
    0x1c668c46c <+2380>: ldr    w8, [x8, #0xc]
    0x1c668c470 <+2384>: str    w8, [x12, #0xc]
    0x1c668c474 <+2388>: ldrsw  x8, [x15, #0x14]
    0x1c668c478 <+2392>: add    x12, x12, x8
    0x1c668c47c <+2396>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c480 <+2400>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c484 <+2404>: ldr    x8, [x8]
    0x1c668c488 <+2408>: br     x8
    0x1c668c48c <+2412>: ldr    x8, [x15]
    0x1c668c490 <+2416>: ldr    w16, [x15, #0x10]
    0x1c668c494 <+2420>: mul    w16, w16, w14
    0x1c668c498 <+2424>: ldrh   w8, [x8, w16, uxtw]
    0x1c668c49c <+2428>: strh   w8, [x12]
    0x1c668c4a0 <+2432>: ldrsw  x8, [x15, #0x14]
    0x1c668c4a4 <+2436>: add    x12, x12, x8
    0x1c668c4a8 <+2440>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c4ac <+2444>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c4b0 <+2448>: ldr    x8, [x8]
    0x1c668c4b4 <+2452>: br     x8
    0x1c668c4b8 <+2456>: ldr    x8, [x15]
    0x1c668c4bc <+2460>: ldr    w16, [x15, #0x10]
    0x1c668c4c0 <+2464>: mul    w16, w16, w14
    0x1c668c4c4 <+2468>: add    x8, x8, x16
    0x1c668c4c8 <+2472>: ldr    w16, [x8]
    0x1c668c4cc <+2476>: str    w16, [x12]
    0x1c668c4d0 <+2480>: ldrh   w8, [x8, #0x4]
    0x1c668c4d4 <+2484>: strh   w8, [x12, #0x4]
    0x1c668c4d8 <+2488>: ldrsw  x8, [x15, #0x14]
    0x1c668c4dc <+2492>: add    x12, x12, x8
    0x1c668c4e0 <+2496>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c4e4 <+2500>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c4e8 <+2504>: ldr    x8, [x8]
    0x1c668c4ec <+2508>: br     x8
    0x1c668c4f0 <+2512>: ldr    x8, [x15]
    0x1c668c4f4 <+2516>: ldr    w16, [x15, #0x10]
    0x1c668c4f8 <+2520>: mul    w16, w16, w14
    0x1c668c4fc <+2524>: ldr    w8, [x8, w16, uxtw]
    0x1c668c500 <+2528>: str    w8, [x12]
    0x1c668c504 <+2532>: ldrsw  x8, [x15, #0x14]
    0x1c668c508 <+2536>: add    x12, x12, x8
    0x1c668c50c <+2540>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c510 <+2544>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c514 <+2548>: ldr    x8, [x8]
    0x1c668c518 <+2552>: br     x8
    0x1c668c51c <+2556>: ldr    x8, [x15]
    0x1c668c520 <+2560>: ldr    w16, [x15, #0x10]
    0x1c668c524 <+2564>: mul    w16, w16, w14
    0x1c668c528 <+2568>: ldr    x8, [x8, w16, uxtw]
    0x1c668c52c <+2572>: str    x8, [x12]
    0x1c668c530 <+2576>: ldrsw  x8, [x15, #0x14]
    0x1c668c534 <+2580>: add    x12, x12, x8
    0x1c668c538 <+2584>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c53c <+2588>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c540 <+2592>: ldr    x8, [x8]
    0x1c668c544 <+2596>: br     x8
    0x1c668c548 <+2600>: ldr    x8, [x15]
    0x1c668c54c <+2604>: ldr    w16, [x15, #0x10]
    0x1c668c550 <+2608>: mul    w16, w16, w14
    0x1c668c554 <+2612>: add    x8, x8, x16
    0x1c668c558 <+2616>: ldr    x16, [x8]
    0x1c668c55c <+2620>: ldr    w8, [x8, #0x8]
    0x1c668c560 <+2624>: str    x16, [x12]
    0x1c668c564 <+2628>: str    w8, [x12, #0x8]
    0x1c668c568 <+2632>: ldrsw  x8, [x15, #0x14]
    0x1c668c56c <+2636>: add    x12, x12, x8
    0x1c668c570 <+2640>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c574 <+2644>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c578 <+2648>: ldr    x8, [x8]
    0x1c668c57c <+2652>: br     x8
    0x1c668c580 <+2656>: ldr    x8, [x15]
    0x1c668c584 <+2660>: ldr    w16, [x15, #0x10]
    0x1c668c588 <+2664>: mul    w16, w16, w14
    0x1c668c58c <+2668>: ldr    q0, [x8, w16, uxtw]
    0x1c668c590 <+2672>: str    q0, [x12]
    0x1c668c594 <+2676>: ldrsw  x8, [x15, #0x14]
    0x1c668c598 <+2680>: add    x12, x12, x8
    0x1c668c59c <+2684>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c5a0 <+2688>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c5a4 <+2692>: ldr    x8, [x8]
    0x1c668c5a8 <+2696>: br     x8
    0x1c668c5ac <+2700>: ldr    x8, [x15]
    0x1c668c5b0 <+2704>: ldr    w16, [x15, #0x10]
    0x1c668c5b4 <+2708>: mul    w16, w16, w14
    0x1c668c5b8 <+2712>: ldr    w8, [x8, w16, uxtw]
    0x1c668c5bc <+2716>: str    w8, [x12], #0x4
    0x1c668c5c0 <+2720>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c5c4 <+2724>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c5c8 <+2728>: ldr    x8, [x8]
    0x1c668c5cc <+2732>: br     x8
    0x1c668c5d0 <+2736>: ldr    x8, [x15]
    0x1c668c5d4 <+2740>: ldr    w16, [x15, #0x10]
    0x1c668c5d8 <+2744>: mul    w16, w16, w14
    0x1c668c5dc <+2748>: ldr    x8, [x8, w16, uxtw]
    0x1c668c5e0 <+2752>: str    x8, [x12], #0x8
    0x1c668c5e4 <+2756>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c5e8 <+2760>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c5ec <+2764>: ldr    x8, [x8]
    0x1c668c5f0 <+2768>: br     x8
    0x1c668c5f4 <+2772>: ldr    x8, [x15]
    0x1c668c5f8 <+2776>: ldr    w16, [x15, #0x10]
    0x1c668c5fc <+2780>: mul    w16, w16, w14
    0x1c668c600 <+2784>: add    x8, x8, x16
    0x1c668c604 <+2788>: ldr    x16, [x8]
    0x1c668c608 <+2792>: ldr    w8, [x8, #0x8]
    0x1c668c60c <+2796>: str    x16, [x12]
    0x1c668c610 <+2800>: str    w8, [x12, #0x8]
    0x1c668c614 <+2804>: add    x12, x12, #0xc            ; =0xc 
    0x1c668c618 <+2808>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c61c <+2812>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c620 <+2816>: ldr    x8, [x8]
    0x1c668c624 <+2820>: br     x8
    0x1c668c628 <+2824>: ldr    x8, [x15]
    0x1c668c62c <+2828>: ldr    w16, [x15, #0x10]
    0x1c668c630 <+2832>: mul    w16, w16, w14
    0x1c668c634 <+2836>: ldr    q0, [x8, w16, uxtw]
    0x1c668c638 <+2840>: str    q0, [x12], #0x10
    0x1c668c63c <+2844>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c640 <+2848>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c644 <+2852>: ldr    x8, [x8]
    0x1c668c648 <+2856>: br     x8
    0x1c668c64c <+2860>: ldrsw  x8, [x15, #0x14]
    0x1c668c650 <+2864>: add    x12, x12, x8
    0x1c668c654 <+2868>: add    x8, x15, #0x20            ; =0x20 
    0x1c668c658 <+2872>: add    x15, x15, #0x18           ; =0x18 
    0x1c668c65c <+2876>: ldr    x8, [x8]
    0x1c668c660 <+2880>: br     x8

khambir avatar Jan 11 '20 07:01 khambir

Hello, Thank you for all the info. We tried to reproduce the crash on our end on iPhone X, but we had all successful attempts. When you say that it happens quite often, can you tell us some statistics regarding it? Also, you can contact us directly at [email protected] Thanks, Branka

Brankacro avatar Jan 13 '20 13:01 Brankacro

Quite often - about 80% of scanner launch.

khambir avatar Jan 14 '20 08:01 khambir

Hi @khambir, Could you please send us a video of a scanning process with the crashing issue? Thanks, Branka

Brankacro avatar Jan 14 '20 08:01 Brankacro

@Brankacro yes, sure.

As you can see, the scanner works well, but when the document in focus and I activate the passport scanner the app is broken.

video.zip

khambir avatar Jan 14 '20 09:01 khambir

Thanks @khambir for the video. Can you please try one more thing, to build the sample from the Sample folder in the root of our SDK, using the PassportRecognizer and see how it goes? How does this sound? Please, let us know. Thanks, Branka

Brankacro avatar Jan 14 '20 11:01 Brankacro

This issue has been there specifically in SDK 5.1.0. I can reproduce it consistently in the attached sample project. Just try scanning any document that is supported by BlinkIDRecognizer multiple times. Like in the attached sample project, after the document is scanning then you will be asked to confirm if the picture taken is clear enough. Hit "Retake" on that screen to do the re-scan. Do this 2-3 times and you will see the crash. TestBlink.zip

pankajhotwani2 avatar Jan 16 '20 03:01 pankajhotwani2

Hi @khambir and @pankajhotwani2,

Thanks for reporting this. We've investigated this in more detail and so far it seems we've introduced a memory leak in v5.1. We'll take this with the biggest priority for the next week. If we confirm the issue and find the root cause, we'll be updating the SDK immediately after that.

We'll keep you posted.

Jurica.

Cerovec avatar Jan 18 '20 00:01 Cerovec

Seems we have similar issue.

vg-identance avatar Jan 21 '20 14:01 vg-identance

Hi @khambir, @pankajhotwani2, @vg-identance,

We've found a memor leak in v5.1 where there was a retain cycle between MBBlinkIDRecognizer and MBBlinkIDOverlayViewController. We've managed to fix it and we've released v5.1.1 today.

Can you try if you have the same issue with the updated SDK?

Thank you, Jurica.

Cerovec avatar Jan 24 '20 15:01 Cerovec

Hi @Cerovec

Unfortunately, I can reproduce the crash on v.5.1.1

khambir avatar Jan 24 '20 15:01 khambir

Hi @khambir

please send us your demo where you are getting this crash

juraskrlec avatar Jan 24 '20 15:01 juraskrlec

@juraskrlec behavior is the same as here: https://github.com/BlinkID/blinkid-ios/files/4058341/video.zip

khambir avatar Jan 24 '20 15:01 khambir

Hi,

Thank you. What puzzles us is that we cannot reproduce the same thing with our sample apps. We also ran instruments on our sample app and couldn't find any problems. See attached.

Can you:

  1. Try our sample app and see if the crash happens there for you?
  2. Run your test app through instruments (leaks) and see if your custom UI implementation has any memory leaks?

@pankajhotwani2, @vg-identance - are you still experiencing the same issue?

Thank you, Jurica.

Screenshot 2020-01-24 at 17 14 59

Cerovec avatar Jan 24 '20 16:01 Cerovec

@khambir Can you check in your Custom UI implementation how do you dismiss the Recognizer Runner View Controller? It looks like the current process is like this

  1. pressing scan pushes recognizer runner view controller modally
  2. successful scan pushes confirm image view controller modally
  3. hitting retake pushes another recognizer runner view controller modally

If we're right, this is the problem. You can't have multiple recognizer runner view controllers running at the same time in the same stack. You should dismiss the first one before starting another.

Looking forward to your feedback.

Jurica.

Cerovec avatar Jan 24 '20 16:01 Cerovec

@Cerovec Thanks Jurica! I verified the new SDK version 5.1.1 and its working like a charm so the fix that you put in seems to be working correctly.

Note: If you want to cross check then you can try running the TestBlink sample project that I attached in my previous post.

Thanks Again!

Pankaj

pankajhotwani2 avatar Jan 25 '20 13:01 pankajhotwani2

@Cerovec we do not use multiple recognizer runner view controllers running at the same time. Everything works fine with version 5.0, but with 5.1 and 5.1.1 we have the crash. But frankly speaking, it's too hard to reproduce this crash with 5.1.1, but in any case, it is possible for me.

khambir avatar Jan 25 '20 13:01 khambir

I tried again today with 5.1.1 in the same sample app project and today I could reproduce the issue again. So looks like there was still an issue with 5.1.1, its just that it was hard to reproduce. Sorry for the confusion..

So @Cerovec, unfortunately the issue still persist in 5.1.1. Can you confirm?

Thanks, Pankaj

pankajhotwani2 avatar Jan 27 '20 07:01 pankajhotwani2

@Cerovec

  1. Tried your sample app. Can't reproduce the issue (but may be not enough tries).
  2. I don't see leaks during capturing/processing stage and the issue is still exists in 5.1.1 but with may be less chance to happen.

vg-identance avatar Jan 27 '20 10:01 vg-identance

@Cerovec Are there any plans to fix the crash in the upcoming version?

pankajhotwani2 avatar Feb 04 '20 09:02 pankajhotwani2

@Cerovec still get same crash on v5.2

vg-identance avatar Feb 05 '20 17:02 vg-identance

@vg-identance @Cerovec can confirm, same crash for me on v5.2. Going to try 5.0 and see if that helps.

Screenshot 2020-02-18 at 13 41 22

jowie avatar Feb 18 '20 13:02 jowie

@vg-identance @Cerovec I can confirm that on any of the 5.0.x versions, the framework does not crash. As soon as you move to 5.1.0 it becomes unstable.

jowie avatar Feb 18 '20 13:02 jowie

Hi @jowie @vg-identance

Please share with us your code where you are getting this crash, so we can reproduce it at our end and see what's going on.

Best, Jura

juraskrlec avatar Feb 19 '20 10:02 juraskrlec

@jowie @vg-identance @pankajhotwani2

You can also contact us directly to [email protected] (if you don't want to share your code publicly).

Regards

culoi avatar Feb 19 '20 11:02 culoi

Hi @khambir @pankajhotwani2 @vg-identance @jowie,

we were testing TestBlink project provided by pankajhotwani2.

We are getting the same crash on 5.0.0 and 5.2.0.

In provided TestBlink project, crash is solved by moving [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(customScanningComplete:) name:@"scanningComplete" object:nil]; into viewDidLoad. Currently, on every scan observer is added.

With that, the crash was fixed on 5.0.0, but not on 5.2.0.

Since we changed the processing queue, it looks like _dict property still holds a reference.

In - (IBAction)startScan:(id)sender you are setting these properties to nil.

    _fullDocumentImageString = nil;
    _faceImageString = nil;
    _part1Scanned = NO;

If you also add in this method _dict = nil;, the bug will be fixed and it won't crash anymore.

TCvetkovic avatar Mar 05 '20 08:03 TCvetkovic

@TCvetkovic Solution provided worked in TestBlink project. Thanks!

pankajhotwani2 avatar Mar 06 '20 13:03 pankajhotwani2

The solution for my code was different. I was calling reconfigureRecognizers during the scanning process, which it doesn't seem to like. Once I removed that, the crashes went away. 👍

jowie avatar Mar 10 '20 16:03 jowie

@jowie, @pankajhotwani2, @vg-identance

We've managed to find a part of our OpenGL code which was fragile and sensitive to crashes if used from multiple threads. We're releasing v5.3 this week where this will be sorted out as well.

We suggest you upgrade to v5.3 so that we can test if this helps you.

Cerovec avatar Mar 18 '20 06:03 Cerovec

@jowie, @pankajhotwani2, @vg-identance,

Can you please check if v5.3 solves your issues? It was released yesterday.

Thanks, Jurica.

Cerovec avatar Mar 19 '20 10:03 Cerovec

@Cerovec Thanks, seems works better

vg-identance avatar Mar 19 '20 10:03 vg-identance