File 8base_80736669542d3727c77ccda1589f9d7c17568a1d97d98ffae84afbbbf081be67.elf
Function:
    00404cfc
    00404cfccmult:
    00404cfcsub sp, sp, 1376
    00404d00stp x29, x30, [sp+16]
    00404d04add x29, sp, 16
    00404d08str x0, [sp+56]
    00404d0cstr x1, [sp+48]
    00404d10str x2, [sp+40]
    00404d14str x3, [sp+32]
    00404d18add x0, sp, 1128
    00404d1cstr x0, [sp+1368]
    00404d20add x0, sp, 976
    00404d24str x0, [sp+1360]
    00404d28add x0, sp, 824
    00404d2cstr x0, [sp+1352]
    00404d30add x0, sp, 672
    00404d34str x0, [sp+1344]
    00404d38add x0, sp, 520
    00404d3cstr x0, [sp+1336]
    00404d40add x0, sp, 368
    00404d44str x0, [sp+1328]
    00404d48add x0, sp, 216
    00404d4cstr x0, [sp+1320]
    00404d50add x0, sp, 64
    00404d54str x0, [sp+1312]
    00404d58str wzr, [sp+1308]
    00404d5cb 0x404dec
    00404d60
    00404d60loc_404d60:
    00404d60ldrsw x0, [sp+1308]
    00404d64ubfm x0, x0, 61, 60
    00404d68add x1, sp, 1128
    00404d6cstr xzr, [x1+x0]
    00404d70ldrsw x0, [sp+1308]
    00404d74ubfm x0, x0, 61, 60
    00404d78add x1, sp, 976
    00404d7cstr xzr, [x1+x0]
    00404d80ldrsw x0, [sp+1308]
    00404d84ubfm x0, x0, 61, 60
    00404d88add x1, sp, 824
    00404d8cstr xzr, [x1+x0]
    00404d90ldrsw x0, [sp+1308]
    00404d94ubfm x0, x0, 61, 60
    00404d98add x1, sp, 672
    00404d9cstr xzr, [x1+x0]
    00404da0ldrsw x0, [sp+1308]
    00404da4ubfm x0, x0, 61, 60
    00404da8add x1, sp, 520
    00404dacstr xzr, [x1+x0]
    00404db0ldrsw x0, [sp+1308]
    00404db4ubfm x0, x0, 61, 60
    00404db8add x1, sp, 368
    00404dbcstr xzr, [x1+x0]
    00404dc0ldrsw x0, [sp+1308]
    00404dc4ubfm x0, x0, 61, 60
    00404dc8add x1, sp, 216
    00404dccstr xzr, [x1+x0]
    00404dd0ldrsw x0, [sp+1308]
    00404dd4ubfm x0, x0, 61, 60
    00404dd8add x1, sp, 64
    00404ddcstr xzr, [x1+x0]
    00404de0ldr w0, [sp+1308]
    00404de4add w0, w0, 1
    00404de8str w0, [sp+1308]
    00404dec
    00404decloc_404dec:
    00404decldr w0, [sp+1308]
    00404df0subs wzr, w0, 18
    00404df4b.le 0x404d60
    00404df8movz x0, 1
    00404dfcstr x0, [sp+976]
    00404e00movz x0, 1
    00404e04str x0, [sp+824]
    00404e08movz x0, 1
    00404e0cstr x0, [sp+368]
    00404e10movz x0, 1
    00404e14str x0, [sp+64]
    00404e18movz x2, 80
    00404e1cldr x1, [sp+32]
    00404e20ldr x0, [sp+1368]
    00404e24bl memcpy@plt
    00404e28str wzr, [sp+1304]
    00404e2cb 0x404f68
    00404e30
    00404e30loc_404e30:
    00404e30movz w1, 31
    00404e34ldr w0, [sp+1304]
    00404e38sub w0, w1, w0
    00404e3cmov w0, w0
    00404e40ldr x1, [sp+40]
    00404e44add x0, x1, x0
    00404e48ldrb w0, [x0]
    00404e4cstrb w0, [sp+1299]
    00404e50str wzr, [sp+1300]
    00404e54b 0x404f50
    00404e58
    00404e58loc_404e58:
    00404e58ldrb w0, [sp+1299]
    00404e5cubfm w0, w0, 7, 31
    00404e60and w0, w0, 255
    00404e64and x0, x0, 255
    00404e68str x0, [sp+1288]
    00404e6cldr x2, [sp+1288]
    00404e70ldr x1, [sp+1368]
    00404e74ldr x0, [sp+1352]
    00404e78bl swap_conditional
    00404e7cldr x2, [sp+1288]
    00404e80ldr x1, [sp+1360]
    00404e84ldr x0, [sp+1344]
    00404e88bl swap_conditional
    00404e8cldr x0, [sp+32]
    00404e90str x0, [sp]
    00404e94ldr x7, [sp+1360]
    00404e98ldr x6, [sp+1368]
    00404e9cldr x5, [sp+1344]
    00404ea0ldr x4, [sp+1352]
    00404ea4ldr x3, [sp+1328]
    00404ea8ldr x2, [sp+1336]
    00404eacldr x1, [sp+1312]
    00404eb0ldr x0, [sp+1320]
    00404eb4bl fmonty
    00404eb8ldr x2, [sp+1288]
    00404ebcldr x1, [sp+1336]
    00404ec0ldr x0, [sp+1320]
    00404ec4bl swap_conditional
    00404ec8ldr x2, [sp+1288]
    00404eccldr x1, [sp+1328]
    00404ed0ldr x0, [sp+1312]
    00404ed4bl swap_conditional
    00404ed8ldr x0, [sp+1352]
    00404edcstr x0, [sp+1280]
    00404ee0ldr x0, [sp+1320]
    00404ee4str x0, [sp+1352]
    00404ee8ldr x0, [sp+1280]
    00404eecstr x0, [sp+1320]
    00404ef0ldr x0, [sp+1344]
    00404ef4str x0, [sp+1280]
    00404ef8ldr x0, [sp+1312]
    00404efcstr x0, [sp+1344]
    00404f00ldr x0, [sp+1280]
    00404f04str x0, [sp+1312]
    00404f08ldr x0, [sp+1368]
    00404f0cstr x0, [sp+1280]
    00404f10ldr x0, [sp+1336]
    00404f14str x0, [sp+1368]
    00404f18ldr x0, [sp+1280]
    00404f1cstr x0, [sp+1336]
    00404f20ldr x0, [sp+1360]
    00404f24str x0, [sp+1280]
    00404f28ldr x0, [sp+1328]
    00404f2cstr x0, [sp+1360]
    00404f30ldr x0, [sp+1280]
    00404f34str x0, [sp+1328]
    00404f38ldrb w0, [sp+1299]
    00404f3cubfm w0, w0, 31, 6
    00404f40strb w0, [sp+1299]
    00404f44ldr w0, [sp+1300]
    00404f48add w0, w0, 1
    00404f4cstr w0, [sp+1300]
    00404f50
    00404f50loc_404f50:
    00404f50ldr w0, [sp+1300]
    00404f54subs wzr, w0, 7
    00404f58b.ls 0x404e58
    00404f5cldr w0, [sp+1304]
    00404f60add w0, w0, 1
    00404f64str w0, [sp+1304]
    00404f68
    00404f68loc_404f68:
    00404f68ldr w0, [sp+1304]
    00404f6csubs wzr, w0, 31
    00404f70b.ls 0x404e30
    00404f74movz x2, 80
    00404f78ldr x1, [sp+1352]
    00404f7cldr x0, [sp+56]
    00404f80bl memcpy@plt
    00404f84movz x2, 80
    00404f88ldr x1, [sp+1344]
    00404f8cldr x0, [sp+48]
    00404f90bl memcpy@plt
    00404f94hint
    00404f98ldp x29, x30, [sp+16]
    00404f9cadd sp, sp, 1376
    00404fa0ret x30
    00404cfc
    00404fa4
    00404fa4crecip:
    00404fa4sub sp, sp, 848
    00404fa8stp x29, x30, [sp]
    00404facadd x29, sp, 0
    00404fb0str x0, [sp+24]
    00404fb4str x1, [sp+16]
    00404fb8add x0, sp, 760
    00404fbcldr x1, [sp+16]
    00404fc0bl fsquare
    00404fc4add x1, sp, 760
    00404fc8add x0, sp, 40
    00404fccbl fsquare
    00404fd0add x1, sp, 40
    00404fd4add x0, sp, 120
    00404fd8bl fsquare
    00404fdcadd x1, sp, 120
    00404fe0add x0, sp, 680
    00404fe4ldr x2, [sp+16]
    00404fe8bl fmul
    00404fecadd x2, sp, 760
    00404ff0add x1, sp, 680
    00404ff4add x0, sp, 600
    00404ff8bl fmul
    00404ffcadd x1, sp, 600
    00405000add x0, sp, 120
    00405004bl fsquare
    00405008add x2, sp, 680
    0040500cadd x1, sp, 120
    00405010add x0, sp, 520
    00405014bl fmul
    00405018add x1, sp, 520
    0040501cadd x0, sp, 120
    00405020bl fsquare
    00405024add x1, sp, 120
    00405028add x0, sp, 40
    0040502cbl fsquare
    00405030add x1, sp, 40
    00405034add x0, sp, 120
    00405038bl fsquare
    0040503cadd x1, sp, 120
    00405040add x0, sp, 40
    00405044bl fsquare
    00405048add x1, sp, 40
    0040504cadd x0, sp, 120
    00405050bl fsquare
    00405054add x2, sp, 520
    00405058add x1, sp, 120
    0040505cadd x0, sp, 440
    00405060bl fmul
    00405064add x1, sp, 440
    00405068add x0, sp, 120
    0040506cbl fsquare
    00405070add x1, sp, 120
    00405074add x0, sp, 40
    00405078bl fsquare
    0040507cmovz w0, 2
    00405080str w0, [sp+844]
    00405084b 0x4050ac
    00405088
    00405088loc_405088:
    00405088add x1, sp, 40
    0040508cadd x0, sp, 120
    00405090bl fsquare
    00405094add x1, sp, 120
    00405098add x0, sp, 40
    0040509cbl fsquare
    004050a0ldr w0, [sp+844]
    004050a4add w0, w0, 2
    004050a8str w0, [sp+844]
    004050ac
    004050acloc_4050ac:
    004050acldr w0, [sp+844]
    004050b0subs wzr, w0, 9
    004050b4b.le 0x405088
    004050b8add x2, sp, 440
    004050bcadd x1, sp, 40
    004050c0add x0, sp, 360
    004050c4bl fmul
    004050c8add x1, sp, 360
    004050ccadd x0, sp, 120
    004050d0bl fsquare
    004050d4add x1, sp, 120
    004050d8add x0, sp, 40
    004050dcbl fsquare
    004050e0movz w0, 2
    004050e4str w0, [sp+844]
    004050e8b 0x405110
    004050ec
    004050ecloc_4050ec:
    004050ecadd x1, sp, 40
    004050f0add x0, sp, 120
    004050f4bl fsquare
    004050f8add x1, sp, 120
    004050fcadd x0, sp, 40
    00405100bl fsquare
    00405104ldr w0, [sp+844]
    00405108add w0, w0, 2
    0040510cstr w0, [sp+844]
    00405110
    00405110loc_405110:
    00405110ldr w0, [sp+844]
    00405114subs wzr, w0, 19
    00405118b.le 0x4050ec
    0040511cadd x2, sp, 360
    00405120add x1, sp, 40
    00405124add x0, sp, 120
    00405128bl fmul
    0040512cadd x1, sp, 120
    00405130add x0, sp, 40
    00405134bl fsquare
    00405138add x1, sp, 40
    0040513cadd x0, sp, 120
    00405140bl fsquare
    00405144movz w0, 2
    00405148str w0, [sp+844]
    0040514cb 0x405174
    00405150
    00405150loc_405150:
    00405150add x1, sp, 120
    00405154add x0, sp, 40
    00405158bl fsquare
    0040515cadd x1, sp, 40
    00405160add x0, sp, 120
    00405164bl fsquare
    00405168ldr w0, [sp+844]
    0040516cadd w0, w0, 2
    00405170str w0, [sp+844]
    00405174
    00405174loc_405174:
    00405174ldr w0, [sp+844]
    00405178subs wzr, w0, 9
    0040517cb.le 0x405150
    00405180add x2, sp, 440
    00405184add x1, sp, 120
    00405188add x0, sp, 280
    0040518cbl fmul
    00405190add x1, sp, 280
    00405194add x0, sp, 120
    00405198bl fsquare
    0040519cadd x1, sp, 120
    004051a0add x0, sp, 40
    004051a4bl fsquare
    004051a8movz w0, 2
    004051acstr w0, [sp+844]
    004051b0b 0x4051d8
    004051b4
    004051b4loc_4051b4:
    004051b4add x1, sp, 40
    004051b8add x0, sp, 120
    004051bcbl fsquare
    004051c0add x1, sp, 120
    004051c4add x0, sp, 40
    004051c8bl fsquare
    004051ccldr w0, [sp+844]
    004051d0add w0, w0, 2
    004051d4str w0, [sp+844]
    004051d8
    004051d8loc_4051d8:
    004051d8ldr w0, [sp+844]
    004051dcsubs wzr, w0, 49
    004051e0b.le 0x4051b4
    004051e4add x2, sp, 280
    004051e8add x1, sp, 40
    004051ecadd x0, sp, 200
    004051f0bl fmul
    004051f4add x1, sp, 200
    004051f8add x0, sp, 40
    004051fcbl fsquare
    00405200add x1, sp, 40
    00405204add x0, sp, 120
    00405208bl fsquare
    0040520cmovz w0, 2
    00405210str w0, [sp+844]
    00405214b 0x40523c
    00405218
    00405218loc_405218:
    00405218add x1, sp, 120
    0040521cadd x0, sp, 40
    00405220bl fsquare
    00405224add x1, sp, 40
    00405228add x0, sp, 120
    0040522cbl fsquare
    00405230ldr w0, [sp+844]
    00405234add w0, w0, 2
    00405238str w0, [sp+844]
    0040523c
    0040523cloc_40523c:
    0040523cldr w0, [sp+844]
    00405240subs wzr, w0, 99
    00405244b.le 0x405218
    00405248add x2, sp, 200
    0040524cadd x1, sp, 120
    00405250add x0, sp, 40
    00405254bl fmul
    00405258add x1, sp, 40
    0040525cadd x0, sp, 120
    00405260bl fsquare
    00405264add x1, sp, 120
    00405268add x0, sp, 40
    0040526cbl fsquare
    00405270movz w0, 2
    00405274str w0, [sp+844]
    00405278b 0x4052a0
    0040527c
    0040527cloc_40527c:
    0040527cadd x1, sp, 40
    00405280add x0, sp, 120
    00405284bl fsquare
    00405288add x1, sp, 120
    0040528cadd x0, sp, 40
    00405290bl fsquare
    00405294ldr w0, [sp+844]
    00405298add w0, w0, 2
    0040529cstr w0, [sp+844]
    004052a0
    004052a0loc_4052a0:
    004052a0ldr w0, [sp+844]
    004052a4subs wzr, w0, 49
    004052a8b.le 0x40527c
    004052acadd x2, sp, 280
    004052b0add x1, sp, 40
    004052b4add x0, sp, 120
    004052b8bl fmul
    004052bcadd x1, sp, 120
    004052c0add x0, sp, 40
    004052c4bl fsquare
    004052c8add x1, sp, 40
    004052ccadd x0, sp, 120
    004052d0bl fsquare
    004052d4add x1, sp, 120
    004052d8add x0, sp, 40
    004052dcbl fsquare
    004052e0add x1, sp, 40
    004052e4add x0, sp, 120
    004052e8bl fsquare
    004052ecadd x1, sp, 120
    004052f0add x0, sp, 40
    004052f4bl fsquare
    004052f8add x1, sp, 600
    004052fcadd x0, sp, 40
    00405300mov x2, x1
    00405304mov x1, x0
    00405308ldr x0, [sp+24]
    0040530cbl fmul
    00405310hint
    00405314ldp x29, x30, [sp]
    00405318add sp, sp, 848
    0040531cret x30
    00404fa4
    00405320
    00405320curve25519_donna:
    00405320stp x29, x30, [sp-416]!
    00405324add x29, sp, 0
    00405328str x0, [sp+40]
    0040532cstr x1, [sp+32]
    00405330str x2, [sp+24]
    00405334str wzr, [sp+412]
    00405338b 0x405364
    0040533c
    0040533cloc_40533c:
    0040533cldrsw x0, [sp+412]
    00405340ldr x1, [sp+32]
    00405344add x0, x1, x0
    00405348ldrb w2, [x0]
    0040534cldrsw x0, [sp+412]
    00405350add x1, sp, 48
    00405354strb w2, [x1+x0]
    00405358ldr w0, [sp+412]
    0040535cadd w0, w0, 1
    00405360str w0, [sp+412]
    00405364
    00405364loc_405364:
    00405364ldr w0, [sp+412]
    00405368subs wzr, w0, 31
    0040536cb.le 0x40533c
    00405370ldrb w0, [sp+48]
    00405374and w0, w0, 0xfffffff8
    00405378and w0, w0, 255
    0040537cstrb w0, [sp+48]
    00405380ldrb w0, [sp+79]
    00405384and w0, w0, 127
    00405388and w0, w0, 255
    0040538cstrb w0, [sp+79]
    00405390ldrb w0, [sp+79]
    00405394orr w0, w0, 64
    00405398and w0, w0, 255
    0040539cstrb w0, [sp+79]
    004053a0add x0, sp, 328
    004053a4ldr x1, [sp+24]
    004053a8bl fexpand
    004053acadd x3, sp, 328
    004053b0add x2, sp, 48
    004053b4add x1, sp, 160
    004053b8add x0, sp, 248
    004053bcbl cmult
    004053c0add x1, sp, 160
    004053c4add x0, sp, 80
    004053c8bl crecip
    004053ccadd x2, sp, 80
    004053d0add x1, sp, 248
    004053d4add x0, sp, 160
    004053d8bl fmul
    004053dcadd x0, sp, 160
    004053e0mov x1, x0
    004053e4ldr x0, [sp+40]
    004053e8bl fcontract
    004053ecmovz w0, 0
    004053f0ldp x29, x30, [sp], 416
    004053f4ret x30
    00405320
    004053f8
    004053f8_bswapw:
    004053f8sub sp, sp, 16
    004053fcstr x0, [sp+8]
    00405400str w1, [sp+4]
    00405404b 0x405458
    00405408
    00405408loc_405408:
    00405408ldr w0, [sp+4]
    0040540cubfm x0, x0, 62, 61
    00405410ldr x1, [sp+8]
    00405414add x0, x1, x0
    00405418ldr w0, [x0]
    0040541cextr w0, w0, w0, 24
    00405420and w2, w0, 0xff00ff
    00405424ldr w0, [sp+4]
    00405428ubfm x0, x0, 62, 61
    0040542cldr x1, [sp+8]
    00405430add x0, x1, x0
    00405434ldr w0, [x0]
    00405438extr w0, w0, w0, 8
    0040543cand w1, w0, 0xff00ff00
    00405440ldr w0, [sp+4]
    00405444ubfm x0, x0, 62, 61
    00405448ldr x3, [sp+8]
    0040544cadd x0, x3, x0
    00405450orr w1, w2, w1
    00405454str w1, [x0]
    00405458
    00405458loc_405458:
    00405458ldr w0, [sp+4]
    0040545csub w1, w0, 1
    00405460str w1, [sp+4]
    00405464subs wzr, w0, 0
    00405468b.ne 0x405408
    0040546chint
    00405470hint
    00405474add sp, sp, 16
    00405478ret x30
    004053f8
    0040547c
    0040547c_memcp:
    0040547csub sp, sp, 48
    00405480str x0, [sp+24]
    00405484str x1, [sp+16]
    00405488str w2, [sp+12]
    0040548cldr x0, [sp+24]
    00405490str x0, [sp+40]
    00405494b 0x4054c0
    00405498
    00405498loc_405498:
    00405498ldr x0, [sp+16]
    0040549cldrb w1, [x0]
    004054a0ldr x0, [sp+24]
    004054a4strb w1, [x0]
    004054a8ldr x0, [sp+24]
    004054acadd x0, x0, 1
    004054b0str x0, [sp+24]
    004054b4ldr x0, [sp+16]
    004054b8add x0, x0, 1
    004054bcstr x0, [sp+16]
    004054c0
    004054c0loc_4054c0:
    004054c0ldr w0, [sp+12]
    004054c4sub w1, w0, 1
    004054c8str w1, [sp+12]
    004054ccsubs wzr, w0, 0
    004054d0b.ne 0x405498
    004054d4ldr x0, [sp+40]
    004054d8add sp, sp, 48
    004054dcret x30
    0040547c
    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