BlinkID / blinkid-ios

Everything you need to add AI-driven ID scanning into your native iOS app.
https://microblink.com/products/blinkid
385 stars 89 forks source link

Crash after scanning document #282

Open khambir opened 4 years ago

khambir commented 4 years ago

Environment

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
Brankacro commented 4 years ago

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 support@microblink.com Thanks, Branka

khambir commented 4 years ago

Quite often - about 80% of scanner launch.

Brankacro commented 4 years ago

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

khambir commented 4 years ago

@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

Brankacro commented 4 years ago

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

pankajhotwani2 commented 4 years ago

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

Cerovec commented 4 years ago

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.

vg-identance commented 4 years ago

Seems we have similar issue.

Cerovec commented 4 years ago

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.

khambir commented 4 years ago

Hi @Cerovec

Unfortunately, I can reproduce the crash on v.5.1.1

juraskrlec commented 4 years ago

Hi @khambir

please send us your demo where you are getting this crash

khambir commented 4 years ago

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

Cerovec commented 4 years ago

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 commented 4 years ago

@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.

pankajhotwani2 commented 4 years ago

@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

khambir commented 4 years ago

@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.

pankajhotwani2 commented 4 years ago

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

vg-identance commented 4 years ago

@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.
pankajhotwani2 commented 4 years ago

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

vg-identance commented 4 years ago

@Cerovec still get same crash on v5.2

jowie commented 4 years ago

@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 commented 4 years ago

@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.

juraskrlec commented 4 years ago

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

culoi commented 4 years ago

@jowie @vg-identance @pankajhotwani2

You can also contact us directly to support@microblink.com (if you don't want to share your code publicly).

Regards

TCvetkovic commented 4 years ago

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.

pankajhotwani2 commented 4 years ago

@TCvetkovic Solution provided worked in TestBlink project. Thanks!

jowie commented 4 years ago

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. 👍

Cerovec commented 4 years ago

@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 commented 4 years ago

@jowie, @pankajhotwani2, @vg-identance,

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

Thanks, Jurica.

vg-identance commented 4 years ago

@Cerovec Thanks, seems works better

khambir commented 4 years ago

Can not reproduce in v5.3

pankajhotwani2 commented 4 years ago

Thanks @Cerovec! New version 5.3.0 is working good so far.

Thanks, Pankaj

Cerovec commented 4 years ago

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

We're reopening this issue as it appears that it still exists. What's your experience? Do you have any crash reporting mechanisms? Do you see the crash happening in production?

Do you have any way of reproducing this issue?

Thanks! Jurica.

vg-identance commented 4 years ago

Not in production yet.

khambir commented 4 years ago

Hi @Cerovec

This crash I do not have in production, but there are other ones. Unfortunately, I can not reproduce them, but I can see crashes in the Firebase crashlytics.

Two types of crashes:

The first one:

Fatal Exception: NSGenericException *** -[AVCaptureSession stopRunning] stopRunning may not be called between calls to beginConfiguration and commitConfiguration

The second one:

Crashed: com.microblink.frame.processing EXC_BAD_ACCESS KERN_INVALID_ADDRESS 0x0000000000000000 scanningRegionForFrameInBounds

Cerovec commented 4 years ago

@vg-identance - thanks for the feedback!

@khambir, thanks! For the crash with [AVCaptureSession stopRunning], we have another issue opened. https://github.com/BlinkID/blinkid-ios/issues/266

For the crash with scanningRegionForFrameInBounds, we didn't have this kind of report. We opened a new issue for it: https://github.com/BlinkID/blinkid-ios/issues/298, we can continue the discussion there.

If anyone else experiences the crashes with GLEngine gleRunVertexSubmitARM:, please let us know.

vg-identance commented 4 years ago

@Cerovec so we finally get to the prod state and begin to receive a lot of crashes with GLEngine gleRunVertexSubmitARM on version 5.3

Cerovec commented 4 years ago

Hi @vg-identance,

Thanks for the update! We have some clues as where the issue might be, but we need some more digging to get to the bottom of it.

In the meantime, keep us informed about the severity of the crash, if possible.

Thanks, Jurica.

vg-identance commented 4 years ago

@Cerovec some of the crash logs:

Crashed: com.microblink.frame.processing
0  GLEngine                       0x2222cb1c0 gleRunVertexSubmitARM + 1924
1  GLEngine                       0x2222c8914 gleSetVertexArrayFunc + 144
2  GLEngine                       0x222271ab0 glDrawArrays_IMM_ES2Exec + 580
3  Microblink                     0x10279133c scanningRegionForFrameInBounds + 1577948
4  libdispatch.dylib              0x2005c17d4 _dispatch_client_callout + 16
5  libdispatch.dylib              0x20056a324 _dispatch_lane_serial_drain$VARIANT$mp + 592
6  libdispatch.dylib              0x20056ae40 _dispatch_lane_invoke$VARIANT$mp + 428
7  libdispatch.dylib              0x2005734ac _dispatch_workloop_worker_thread + 596
8  libsystem_pthread.dylib        0x2007a2114 _pthread_wqthread + 304
9  libsystem_pthread.dylib        0x2007a4cd4 start_wqthread + 4

Crashed: com.microblink.frame.processing
0  GLEngine                       0x1a07f728c gleRunVertexSubmitARM + 1900
1  GLEngine                       0x1a07f4c34 gleSetVertexArrayFunc + 144
2  GLEngine                       0x1a07b91c4 glDrawArrays_IMM_ES2Exec + 712
3  Microblink                     0x10694933c scanningRegionForFrameInBounds + 1577948
4  libdispatch.dylib              0x1863b6184 _dispatch_client_callout + 16
5  libdispatch.dylib              0x186362464 _dispatch_lane_serial_drain$VARIANT$mp + 608
6  libdispatch.dylib              0x186362e58 _dispatch_lane_invoke$VARIANT$mp + 420
7  libdispatch.dylib              0x18636c340 _dispatch_workloop_worker_thread + 588
8  libsystem_pthread.dylib        0x186405fa4 _pthread_wqthread + 276
9  libsystem_pthread.dylib        0x186408ae0 start_wqthread + 8

Crashed: com.microblink.frame.processing
0  GLEngine                       0x1a2bef264 gleRunVertexSubmitARM + 1860
1  GLEngine                       0x1a2becc34 gleSetVertexArrayFunc + 144
2  GLEngine                       0x1a2bb11c4 glDrawArrays_IMM_ES2Exec + 712
3  Microblink                     0x10458133c scanningRegionForFrameInBounds + 1577948
4  libdispatch.dylib              0x1883f3184 _dispatch_client_callout + 16
5  libdispatch.dylib              0x1883d0710 _dispatch_lane_serial_drain$VARIANT$armv81 + 564
6  libdispatch.dylib              0x1883d1128 _dispatch_lane_invoke$VARIANT$armv81 + 400
7  libdispatch.dylib              0x1883da43c _dispatch_workloop_worker_thread + 576
8  libsystem_pthread.dylib        0x188442b88 _pthread_wqthread + 276
9  libsystem_pthread.dylib        0x188445760 start_wqthread + 8

Crashed: com.microblink.frame.processing
0  GLEngine                       0x1bbb90d7c gleRunVertexSubmitARM + 1976
1  GLEngine                       0x1bbbbb5f0 gliSetInteger.cold.1 + 8968
2  GLEngine                       0x1bbb8e510 gleLLVMArrayFunc + 112
3  GLEngine                       0x1bbb8e490 gleSetVertexArrayFunc + 84
4  GLEngine                       0x1bbb50204 glDrawArrays_IMM_ES2Exec + 716
5  OpenGLES                       0x1bbbdf8f8 glDrawArrays + 56
6  Microblink                     0x102de533c scanningRegionForFrameInBounds + 1577948
7  libdispatch.dylib              0x1a0d99fd8 _dispatch_client_callout + 20
8  libdispatch.dylib              0x1a0da0450 _dispatch_lane_serial_drain + 568
9  libdispatch.dylib              0x1a0da0e7c _dispatch_lane_invoke + 368
10 libdispatch.dylib              0x1a0da9f20 _dispatch_workloop_worker_thread + 580
11 libsystem_pthread.dylib        0x1a0dff6d0 _pthread_wqthread + 280
12 libsystem_pthread.dylib        0x1a0e059e8 start_wqthread + 8

Crashed: com.microblink.frame.processing
0  GLEngine                       0x1b3b9c4d4 gleRunVertexSubmitARM + 1844
1  GLEngine                       0x1b3bc8450 gliSetInteger.cold.1 + 7310443600
2  GLEngine                       0x1b3b99ef4 gleSetVertexArrayFunc + 144
3  GLEngine                       0x1b3b5f3b0 glDrawArrays_IMM_ES2Exec + 700
4  Microblink                     0x1032ad33c scanningRegionForFrameInBounds + 1577948
5  libdispatch.dylib              0x198e0b524 _dispatch_client_callout + 16
6  libdispatch.dylib              0x198de8b3c _dispatch_lane_serial_drain$VARIANT$armv81 + 564
7  libdispatch.dylib              0x198de954c _dispatch_lane_invoke$VARIANT$armv81 + 396
8  libdispatch.dylib              0x198df284c _dispatch_workloop_worker_thread + 580
9  libsystem_pthread.dylib        0x198e5cb74 _pthread_wqthread + 272
10 libsystem_pthread.dylib        0x198e5f740 start_wqthread + 8
vg-identance commented 4 years ago

@Cerovec any update on this?

mparadina commented 4 years ago

Hi @vg-identance

Apologies for keeping you waiting.

We've released BlinkID 5.6, where the issue you were having should be fixed now.

Would you mind giving us feedback on whether the new release fixed it?

Regards, Milan

pankajhotwani2 commented 4 years ago

Yes the issue still persist in Blink ID 5.6.0. I rolled back to 5.3.0 which works for me.

Out1and3r commented 4 years ago

Also have this issue in 5.6.0 but only was able to replicate in Debug build with frequency about 1 crash in 150 tries iOS 13.6, xCode 11, Passport

mparadina commented 3 years ago

Hi everyone,

Just to make a follow-up on this thread.

Did you maybe get a chance to test the latest version (v5.8) and trying to reproduce the issue?

Regards, Milan

vg-identance commented 3 years ago

@mparadina currently update with 5.8 still in development