File inc_ransom_e16ac4475e24bbe97e50d7940df71079ea2f1dfd1f2bff6a649c09f7503d087c.elf
Function:
    0040ab5c
    0040ab5cfmonty:
    0040ab5cpush rbp
    0040ab5dmov rbp, rsp
    0040ab60sub rsp, 1328
    0040ab67mov [rbp-1288], rdi
    0040ab6emov [rbp-1296], rsi
    0040ab75mov [rbp-1304], rdx
    0040ab7cmov [rbp-1312], rcx
    0040ab83mov [rbp-1320], r8
    0040ab8amov [rbp-1328], r9
    0040ab91mov rdx, [rbp-1320]
    0040ab98lea rax, [rbp-80]
    0040ab9cmov rcx, [rdx]
    0040ab9fmov [rax], rcx
    0040aba2mov rcx, [rdx+8]
    0040aba6mov [rax+8], rcx
    0040abaamov rcx, [rdx+16]
    0040abaemov [rax+16], rcx
    0040abb2mov rcx, [rdx+24]
    0040abb6mov [rax+24], rcx
    0040abbamov rcx, [rdx+32]
    0040abbemov [rax+32], rcx
    0040abc2mov rcx, [rdx+40]
    0040abc6mov [rax+40], rcx
    0040abcamov rcx, [rdx+48]
    0040abcemov [rax+48], rcx
    0040abd2mov rcx, [rdx+56]
    0040abd6mov [rax+56], rcx
    0040abdamov rcx, [rdx+64]
    0040abdemov [rax+64], rcx
    0040abe2mov rdx, [rdx+72]
    0040abe6mov [rax+72], rdx
    0040abeamov rdx, [rbp-1328]
    0040abf1mov rax, [rbp-1320]
    0040abf8mov rsi, rdx
    0040abfbmov rdi, rax
    0040abfecall fsum
    0040ac03lea rdx, [rbp-80]
    0040ac07mov rax, [rbp-1328]
    0040ac0emov rsi, rdx
    0040ac11mov rdi, rax
    0040ac14call fdifference
    0040ac19mov rdx, [rbp+16]
    0040ac1dlea rax, [rbp-160]
    0040ac24mov rcx, [rdx]
    0040ac27mov [rax], rcx
    0040ac2amov rcx, [rdx+8]
    0040ac2emov [rax+8], rcx
    0040ac32mov rcx, [rdx+16]
    0040ac36mov [rax+16], rcx
    0040ac3amov rcx, [rdx+24]
    0040ac3emov [rax+24], rcx
    0040ac42mov rcx, [rdx+32]
    0040ac46mov [rax+32], rcx
    0040ac4amov rcx, [rdx+40]
    0040ac4emov [rax+40], rcx
    0040ac52mov rcx, [rdx+48]
    0040ac56mov [rax+48], rcx
    0040ac5amov rcx, [rdx+56]
    0040ac5emov [rax+56], rcx
    0040ac62mov rcx, [rdx+64]
    0040ac66mov [rax+64], rcx
    0040ac6amov rdx, [rdx+72]
    0040ac6emov [rax+72], rdx
    0040ac72mov rax, [rbp+24]
    0040ac76mov rsi, rax
    0040ac79mov rdi, [rbp+16]
    0040ac7dcall fsum
    0040ac82lea rdx, [rbp-160]
    0040ac89mov rax, [rbp+24]
    0040ac8dmov rsi, rdx
    0040ac90mov rdi, rax
    0040ac93call fdifference
    0040ac98mov rdx, [rbp-1328]
    0040ac9flea rax, [rbp-800]
    0040aca6mov rsi, [rbp+16]
    0040acaamov rdi, rax
    0040acadcall fproduct
    0040acb2mov rdx, [rbp+24]
    0040acb6mov rcx, [rbp-1320]
    0040acbdlea rax, [rbp-960]
    0040acc4mov rsi, rcx
    0040acc7mov rdi, rax
    0040accacall fproduct
    0040accflea rax, [rbp-800]
    0040acd6mov rdi, rax
    0040acd9call freduce_degree
    0040acdelea rax, [rbp-800]
    0040ace5mov rdi, rax
    0040ace8call freduce_coefficients
    0040acedlea rax, [rbp-960]
    0040acf4mov rdi, rax
    0040acf7call freduce_degree
    0040acfclea rax, [rbp-960]
    0040ad03mov rdi, rax
    0040ad06call freduce_coefficients
    0040ad0blea rax, [rbp-800]
    0040ad12mov rdx, [rax]
    0040ad15mov [rbp-160], rdx
    0040ad1cmov rdx, [rax+8]
    0040ad20mov [rbp-152], rdx
    0040ad27mov rdx, [rax+16]
    0040ad2bmov [rbp-144], rdx
    0040ad32mov rdx, [rax+24]
    0040ad36mov [rbp-136], rdx
    0040ad3dmov rdx, [rax+32]
    0040ad41mov [rbp-128], rdx
    0040ad45mov rdx, [rax+40]
    0040ad49mov [rbp-120], rdx
    0040ad4dmov rdx, [rax+48]
    0040ad51mov [rbp-112], rdx
    0040ad55mov rdx, [rax+56]
    0040ad59mov [rbp-104], rdx
    0040ad5dmov rdx, [rax+64]
    0040ad61mov [rbp-96], rdx
    0040ad65mov rax, [rax+72]
    0040ad69mov [rbp-88], rax
    0040ad6dlea rdx, [rbp-960]
    0040ad74lea rax, [rbp-800]
    0040ad7bmov rsi, rdx
    0040ad7emov rdi, rax
    0040ad81call fsum
    0040ad86lea rdx, [rbp-160]
    0040ad8dlea rax, [rbp-960]
    0040ad94mov rsi, rdx
    0040ad97mov rdi, rax
    0040ad9acall fdifference
    0040ad9flea rdx, [rbp-800]
    0040ada6lea rax, [rbp-1280]
    0040adadmov rsi, rdx
    0040adb0mov rdi, rax
    0040adb3call fsquare
    0040adb8lea rdx, [rbp-960]
    0040adbflea rax, [rbp-1120]
    0040adc6mov rsi, rdx
    0040adc9mov rdi, rax
    0040adcccall fsquare
    0040add1mov rdx, [rbp+32]
    0040add5lea rcx, [rbp-1120]
    0040addclea rax, [rbp-960]
    0040ade3mov rsi, rcx
    0040ade6mov rdi, rax
    0040ade9call fproduct
    0040adeelea rax, [rbp-960]
    0040adf5mov rdi, rax
    0040adf8call freduce_degree
    0040adfdlea rax, [rbp-960]
    0040ae04mov rdi, rax
    0040ae07call freduce_coefficients
    0040ae0clea rdx, [rbp-1280]
    0040ae13mov rax, [rbp-1304]
    0040ae1amov rcx, [rdx]
    0040ae1dmov [rax], rcx
    0040ae20mov rcx, [rdx+8]
    0040ae24mov [rax+8], rcx
    0040ae28mov rcx, [rdx+16]
    0040ae2cmov [rax+16], rcx
    0040ae30mov rcx, [rdx+24]
    0040ae34mov [rax+24], rcx
    0040ae38mov rcx, [rdx+32]
    0040ae3cmov [rax+32], rcx
    0040ae40mov rcx, [rdx+40]
    0040ae44mov [rax+40], rcx
    0040ae48mov rcx, [rdx+48]
    0040ae4cmov [rax+48], rcx
    0040ae50mov rcx, [rdx+56]
    0040ae54mov [rax+56], rcx
    0040ae58mov rcx, [rdx+64]
    0040ae5cmov [rax+64], rcx
    0040ae60mov rdx, [rdx+72]
    0040ae64mov [rax+72], rdx
    0040ae68lea rdx, [rbp-960]
    0040ae6fmov rax, [rbp-1312]
    0040ae76mov rcx, [rdx]
    0040ae79mov [rax], rcx
    0040ae7cmov rcx, [rdx+8]
    0040ae80mov [rax+8], rcx
    0040ae84mov rcx, [rdx+16]
    0040ae88mov [rax+16], rcx
    0040ae8cmov rcx, [rdx+24]
    0040ae90mov [rax+24], rcx
    0040ae94mov rcx, [rdx+32]
    0040ae98mov [rax+32], rcx
    0040ae9cmov rcx, [rdx+40]
    0040aea0mov [rax+40], rcx
    0040aea4mov rcx, [rdx+48]
    0040aea8mov [rax+48], rcx
    0040aeacmov rcx, [rdx+56]
    0040aeb0mov [rax+56], rcx
    0040aeb4mov rcx, [rdx+64]
    0040aeb8mov [rax+64], rcx
    0040aebcmov rdx, [rdx+72]
    0040aec0mov [rax+72], rdx
    0040aec4mov rdx, [rbp-1320]
    0040aecblea rax, [rbp-480]
    0040aed2mov rsi, rdx
    0040aed5mov rdi, rax
    0040aed8call fsquare
    0040aeddmov rdx, [rbp-1328]
    0040aee4lea rax, [rbp-640]
    0040aeebmov rsi, rdx
    0040aeeemov rdi, rax
    0040aef1call fsquare
    0040aef6lea rdx, [rbp-640]
    0040aefdlea rcx, [rbp-480]
    0040af04mov rax, [rbp-1288]
    0040af0bmov rsi, rcx
    0040af0emov rdi, rax
    0040af11call fproduct
    0040af16mov rax, [rbp-1288]
    0040af1dmov rdi, rax
    0040af20call freduce_degree
    0040af25mov rax, [rbp-1288]
    0040af2cmov rdi, rax
    0040af2fcall freduce_coefficients
    0040af34lea rdx, [rbp-480]
    0040af3blea rax, [rbp-640]
    0040af42mov rsi, rdx
    0040af45mov rdi, rax
    0040af48call fdifference
    0040af4dlea rax, [rbp-320]
    0040af54add rax, 80
    0040af58mov rsi, rax
    0040af5bmov eax, 0
    0040af60mov edx, 9
    0040af65mov rdi, rsi
    0040af68mov rcx, rdx
    0040af6brep stosq [rdi], rax
    0040af6elea rcx, [rbp-640]
    0040af75lea rax, [rbp-320]
    0040af7cmov edx, 0x1db41
    0040af81mov rsi, rcx
    0040af84mov rdi, rax
    0040af87call fscalar_product
    0040af8clea rax, [rbp-320]
    0040af93mov rdi, rax
    0040af96call freduce_coefficients
    0040af9blea rdx, [rbp-480]
    0040afa2lea rax, [rbp-320]
    0040afa9mov rsi, rdx
    0040afacmov rdi, rax
    0040afafcall fsum
    0040afb4lea rdx, [rbp-320]
    0040afbblea rcx, [rbp-640]
    0040afc2mov rax, [rbp-1296]
    0040afc9mov rsi, rcx
    0040afccmov rdi, rax
    0040afcfcall fproduct
    0040afd4mov rax, [rbp-1296]
    0040afdbmov rdi, rax
    0040afdecall freduce_degree
    0040afe3mov rax, [rbp-1296]
    0040afeamov rdi, rax
    0040afedcall freduce_coefficients
    0040aff2leave
    0040aff3ret
    0040ab5c
    0040aff4
    0040aff4swap_conditional:
    0040aff4push rbp
    0040aff5mov rbp, rsp
    0040aff8mov [rbp-24], rdi
    0040affcmov [rbp-32], rsi
    0040b000mov [rbp-40], rdx
    0040b004mov rax, [rbp-40]
    0040b008neg eax
    0040b00amov [rbp-8], eax
    0040b00dmov [rbp-4], 0
    0040b014jmp 0x40b084
    0040b016
    0040b016loc_40b016:
    0040b016mov eax, [rbp-4]
    0040b019shl rax, 3
    0040b01dadd rax, [rbp-24]
    0040b021mov rax, [rax]
    0040b024mov edx, eax
    0040b026mov eax, [rbp-4]
    0040b029shl rax, 3
    0040b02dadd rax, [rbp-32]
    0040b031mov rax, [rax]
    0040b034xor eax, edx
    0040b036and eax, [rbp-8]
    0040b039mov [rbp-12], eax
    0040b03cmov eax, [rbp-4]
    0040b03fshl rax, 3
    0040b043add rax, [rbp-24]
    0040b047mov edx, [rbp-4]
    0040b04ashl rdx, 3
    0040b04eadd rdx, [rbp-24]
    0040b052mov rdx, [rdx]
    0040b055xor edx, [rbp-12]
    0040b058movsxd rdx, edx
    0040b05bmov [rax], rdx
    0040b05emov eax, [rbp-4]
    0040b061shl rax, 3
    0040b065add rax, [rbp-32]
    0040b069mov edx, [rbp-4]
    0040b06cshl rdx, 3
    0040b070add rdx, [rbp-32]
    0040b074mov rdx, [rdx]
    0040b077xor edx, [rbp-12]
    0040b07amovsxd rdx, edx
    0040b07dmov [rax], rdx
    0040b080add [rbp-4], 1
    0040b084
    0040b084loc_40b084:
    0040b084cmp [rbp-4], 9
    0040b088jbe 0x40b016
    0040b08apop rbp
    0040b08bret
    0040aff4
    0040b08c
    0040b08ccmult:
    0040b08cpush rbp
    0040b08dmov rbp, rsp
    0040b090sub rsp, 1432
    0040b097mov [rbp-1384], rdi
    0040b09emov [rbp-1392], rsi
    0040b0a5mov [rbp-1400], rdx
    0040b0acmov [rbp-1408], rcx
    0040b0b3lea rsi, [rbp-256]
    0040b0bamov eax, 0
    0040b0bfmov edx, 19
    0040b0c4mov rdi, rsi
    0040b0c7mov rcx, rdx
    0040b0carep stosq [rdi], rax
    0040b0cdlea rsi, [rbp-416]
    0040b0d4mov eax, 0
    0040b0d9mov edx, 19
    0040b0demov rdi, rsi
    0040b0e1mov rcx, rdx
    0040b0e4rep stosq [rdi], rax
    0040b0e7mov [rbp-416], 1
    0040b0f2lea rsi, [rbp-576]
    0040b0f9mov eax, 0
    0040b0femov edx, 19
    0040b103mov rdi, rsi
    0040b106mov rcx, rdx
    0040b109rep stosq [rdi], rax
    0040b10cmov [rbp-576], 1
    0040b117lea rsi, [rbp-736]
    0040b11emov eax, 0
    0040b123mov edx, 19
    0040b128mov rdi, rsi
    0040b12bmov rcx, rdx
    0040b12erep stosq [rdi], rax
    0040b131lea rax, [rbp-256]
    0040b138mov [rbp-8], rax
    0040b13clea rax, [rbp-416]
    0040b143mov [rbp-16], rax
    0040b147lea rax, [rbp-576]
    0040b14emov [rbp-24], rax
    0040b152lea rax, [rbp-736]
    0040b159mov [rbp-32], rax
    0040b15dlea rsi, [rbp-896]
    0040b164mov eax, 0
    0040b169mov edx, 19
    0040b16emov rdi, rsi
    0040b171mov rcx, rdx
    0040b174rep stosq [rdi], rax
    0040b177lea rsi, [rbp-1056]
    0040b17emov eax, 0
    0040b183mov edx, 19
    0040b188mov rdi, rsi
    0040b18bmov rcx, rdx
    0040b18erep stosq [rdi], rax
    0040b191mov [rbp-1056], 1
    0040b19clea rsi, [rbp-1216]
    0040b1a3mov eax, 0
    0040b1a8mov edx, 19
    0040b1admov rdi, rsi
    0040b1b0mov rcx, rdx
    0040b1b3rep stosq [rdi], rax
    0040b1b6lea rsi, [rbp-1376]
    0040b1bdmov eax, 0
    0040b1c2mov edx, 19
    0040b1c7mov rdi, rsi
    0040b1camov rcx, rdx
    0040b1cdrep stosq [rdi], rax
    0040b1d0mov [rbp-1376], 1
    0040b1dblea rax, [rbp-896]
    0040b1e2mov [rbp-40], rax
    0040b1e6lea rax, [rbp-1056]
    0040b1edmov [rbp-48], rax
    0040b1f1lea rax, [rbp-1216]
    0040b1f8mov [rbp-56], rax
    0040b1fclea rax, [rbp-1376]
    0040b203mov [rbp-64], rax
    0040b207mov rdx, [rbp-1408]
    0040b20emov rax, [rbp-8]
    0040b212mov rcx, [rdx]
    0040b215mov [rax], rcx
    0040b218mov rcx, [rdx+8]
    0040b21cmov [rax+8], rcx
    0040b220mov rcx, [rdx+16]
    0040b224mov [rax+16], rcx
    0040b228mov rcx, [rdx+24]
    0040b22cmov [rax+24], rcx
    0040b230mov rcx, [rdx+32]
    0040b234mov [rax+32], rcx
    0040b238mov rcx, [rdx+40]
    0040b23cmov [rax+40], rcx
    0040b240mov rcx, [rdx+48]
    0040b244mov [rax+48], rcx
    0040b248mov rcx, [rdx+56]
    0040b24cmov [rax+56], rcx
    0040b250mov rcx, [rdx+64]
    0040b254mov [rax+64], rcx
    0040b258mov rdx, [rdx+72]
    0040b25cmov [rax+72], rdx
    0040b260mov [rbp-68], 0
    0040b267jmp 0x40b3ab
    0040b26c
    0040b26cloc_40b26c:
    0040b26cmov eax, 31
    0040b271sub eax, [rbp-68]
    0040b274mov eax, eax
    0040b276add rax, [rbp-1400]
    0040b27dmovzx eax, [rax]
    0040b280mov [rbp-73], al
    0040b283mov [rbp-72], 0
    0040b28ajmp 0x40b39d
    0040b28f
    0040b28floc_40b28f:
    0040b28fmovzx eax, [rbp-73]
    0040b293shr al, 7
    0040b296movzx eax, al
    0040b299mov [rbp-88], rax
    0040b29dmov rdx, [rbp-88]
    0040b2a1mov rcx, [rbp-8]
    0040b2a5mov rax, [rbp-24]
    0040b2a9mov rsi, rcx
    0040b2acmov rdi, rax
    0040b2afcall swap_conditional
    0040b2b4mov rdx, [rbp-88]
    0040b2b8mov rcx, [rbp-16]
    0040b2bcmov rax, [rbp-32]
    0040b2c0mov rsi, rcx
    0040b2c3mov rdi, rax
    0040b2c6call swap_conditional
    0040b2cbmov r9, [rbp-32]
    0040b2cfmov r8, [rbp-24]
    0040b2d3mov rcx, [rbp-48]
    0040b2d7mov rdx, [rbp-40]
    0040b2dbmov rsi, [rbp-64]
    0040b2dfmov rax, [rbp-56]
    0040b2e3mov rdi, [rbp-1408]
    0040b2eamov [rsp+16], rdi
    0040b2efmov rdi, [rbp-16]
    0040b2f3mov [rsp+8], rdi
    0040b2f8mov rdi, [rbp-8]
    0040b2fcmov [rsp], rdi
    0040b300mov rdi, rax
    0040b303call fmonty
    0040b308mov rdx, [rbp-88]
    0040b30cmov rcx, [rbp-40]
    0040b310mov rax, [rbp-56]
    0040b314mov rsi, rcx
    0040b317mov rdi, rax
    0040b31acall swap_conditional
    0040b31fmov rdx, [rbp-88]
    0040b323mov rcx, [rbp-48]
    0040b327mov rax, [rbp-64]
    0040b32bmov rsi, rcx
    0040b32emov rdi, rax
    0040b331call swap_conditional
    0040b336mov rax, [rbp-24]
    0040b33amov [rbp-96], rax
    0040b33emov rax, [rbp-56]
    0040b342mov [rbp-24], rax
    0040b346mov rax, [rbp-96]
    0040b34amov [rbp-56], rax
    0040b34emov rax, [rbp-32]
    0040b352mov [rbp-96], rax
    0040b356mov rax, [rbp-64]
    0040b35amov [rbp-32], rax
    0040b35emov rax, [rbp-96]
    0040b362mov [rbp-64], rax
    0040b366mov rax, [rbp-8]
    0040b36amov [rbp-96], rax
    0040b36emov rax, [rbp-40]
    0040b372mov [rbp-8], rax
    0040b376mov rax, [rbp-96]
    0040b37amov [rbp-40], rax
    0040b37emov rax, [rbp-16]
    0040b382mov [rbp-96], rax
    0040b386mov rax, [rbp-48]
    0040b38amov [rbp-16], rax
    0040b38emov rax, [rbp-96]
    0040b392mov [rbp-48], rax
    0040b396shl [rbp-73], 1
    0040b399add [rbp-72], 1
    0040b39d
    0040b39dloc_40b39d:
    0040b39dcmp [rbp-72], 7
    0040b3a1jbe 0x40b28f
    0040b3a7add [rbp-68], 1
    0040b3ab
    0040b3abloc_40b3ab:
    0040b3abcmp [rbp-68], 31
    0040b3afjbe 0x40b26c
    0040b3b5mov rdx, [rbp-24]
    0040b3b9mov rax, [rbp-1384]
    0040b3c0mov rcx, [rdx]
    0040b3c3mov [rax], rcx
    0040b3c6mov rcx, [rdx+8]
    0040b3camov [rax+8], rcx
    0040b3cemov rcx, [rdx+16]
    0040b3d2mov [rax+16], rcx
    0040b3d6mov rcx, [rdx+24]
    0040b3damov [rax+24], rcx
    0040b3demov rcx, [rdx+32]
    0040b3e2mov [rax+32], rcx
    0040b3e6mov rcx, [rdx+40]
    0040b3eamov [rax+40], rcx
    0040b3eemov rcx, [rdx+48]
    0040b3f2mov [rax+48], rcx
    0040b3f6mov rcx, [rdx+56]
    0040b3famov [rax+56], rcx
    0040b3femov rcx, [rdx+64]
    0040b402mov [rax+64], rcx
    0040b406mov rdx, [rdx+72]
    0040b40amov [rax+72], rdx
    0040b40emov rdx, [rbp-32]
    0040b412mov rax, [rbp-1392]
    0040b419mov rcx, [rdx]
    0040b41cmov [rax], rcx
    0040b41fmov rcx, [rdx+8]
    0040b423mov [rax+8], rcx
    0040b427mov rcx, [rdx+16]
    0040b42bmov [rax+16], rcx
    0040b42fmov rcx, [rdx+24]
    0040b433mov [rax+24], rcx
    0040b437mov rcx, [rdx+32]
    0040b43bmov [rax+32], rcx
    0040b43fmov rcx, [rdx+40]
    0040b443mov [rax+40], rcx
    0040b447mov rcx, [rdx+48]
    0040b44bmov [rax+48], rcx
    0040b44fmov rcx, [rdx+56]
    0040b453mov [rax+56], rcx
    0040b457mov rcx, [rdx+64]
    0040b45bmov [rax+64], rcx
    0040b45fmov rdx, [rdx+72]
    0040b463mov [rax+72], rdx
    0040b467leave
    0040b468ret
    0040b08c
    0040b469
    0040b469crecip:
    0040b469push rbp
    0040b46amov rbp, rsp
    0040b46dsub rsp, 832
    0040b474mov [rbp-824], rdi
    0040b47bmov [rbp-832], rsi
    0040b482mov rdx, [rbp-832]
    0040b489lea rax, [rbp-96]
    0040b48dmov rsi, rdx
    0040b490mov rdi, rax
    0040b493call fsquare
    0040b498lea rdx, [rbp-96]
    0040b49clea rax, [rbp-816]
    0040b4a3mov rsi, rdx
    0040b4a6mov rdi, rax
    0040b4a9call fsquare
    0040b4aelea rdx, [rbp-816]
    0040b4b5lea rax, [rbp-736]
    0040b4bcmov rsi, rdx
    0040b4bfmov rdi, rax
    0040b4c2call fsquare
    0040b4c7mov rdx, [rbp-832]
    0040b4celea rcx, [rbp-736]
    0040b4d5lea rax, [rbp-176]
    0040b4dcmov rsi, rcx
    0040b4dfmov rdi, rax
    0040b4e2call fmul
    0040b4e7lea rdx, [rbp-96]
    0040b4eblea rcx, [rbp-176]
    0040b4f2lea rax, [rbp-256]
    0040b4f9mov rsi, rcx
    0040b4fcmov rdi, rax
    0040b4ffcall fmul
    0040b504lea rdx, [rbp-256]
    0040b50blea rax, [rbp-736]
    0040b512mov rsi, rdx
    0040b515mov rdi, rax
    0040b518call fsquare
    0040b51dlea rdx, [rbp-176]
    0040b524lea rcx, [rbp-736]
    0040b52blea rax, [rbp-336]
    0040b532mov rsi, rcx
    0040b535mov rdi, rax
    0040b538call fmul
    0040b53dlea rdx, [rbp-336]
    0040b544lea rax, [rbp-736]
    0040b54bmov rsi, rdx
    0040b54emov rdi, rax
    0040b551call fsquare
    0040b556lea rdx, [rbp-736]
    0040b55dlea rax, [rbp-816]
    0040b564mov rsi, rdx
    0040b567mov rdi, rax
    0040b56acall fsquare
    0040b56flea rdx, [rbp-816]
    0040b576lea rax, [rbp-736]
    0040b57dmov rsi, rdx
    0040b580mov rdi, rax
    0040b583call fsquare
    0040b588lea rdx, [rbp-736]
    0040b58flea rax, [rbp-816]
    0040b596mov rsi, rdx
    0040b599mov rdi, rax
    0040b59ccall fsquare
    0040b5a1lea rdx, [rbp-816]
    0040b5a8lea rax, [rbp-736]
    0040b5afmov rsi, rdx
    0040b5b2mov rdi, rax
    0040b5b5call fsquare
    0040b5balea rdx, [rbp-336]
    0040b5c1lea rcx, [rbp-736]
    0040b5c8lea rax, [rbp-416]
    0040b5cfmov rsi, rcx
    0040b5d2mov rdi, rax
    0040b5d5call fmul
    0040b5dalea rdx, [rbp-416]
    0040b5e1lea rax, [rbp-736]
    0040b5e8mov rsi, rdx
    0040b5ebmov rdi, rax
    0040b5eecall fsquare
    0040b5f3lea rdx, [rbp-736]
    0040b5falea rax, [rbp-816]
    0040b601mov rsi, rdx
    0040b604mov rdi, rax
    0040b607call fsquare
    0040b60cmov [rbp-4], 2
    0040b613jmp 0x40b64b
    0040b615
    0040b615loc_40b615:
    0040b615lea rdx, [rbp-816]
    0040b61clea rax, [rbp-736]
    0040b623mov rsi, rdx
    0040b626mov rdi, rax
    0040b629call fsquare
    0040b62elea rdx, [rbp-736]
    0040b635lea rax, [rbp-816]
    0040b63cmov rsi, rdx
    0040b63fmov rdi, rax
    0040b642call fsquare
    0040b647add [rbp-4], 2
    0040b64b
    0040b64bloc_40b64b:
    0040b64bcmp [rbp-4], 9
    0040b64fjle 0x40b615
    0040b651lea rdx, [rbp-416]
    0040b658lea rcx, [rbp-816]
    0040b65flea rax, [rbp-496]
    0040b666mov rsi, rcx
    0040b669mov rdi, rax
    0040b66ccall fmul
    0040b671lea rdx, [rbp-496]
    0040b678lea rax, [rbp-736]
    0040b67fmov rsi, rdx
    0040b682mov rdi, rax
    0040b685call fsquare
    0040b68alea rdx, [rbp-736]
    0040b691lea rax, [rbp-816]
    0040b698mov rsi, rdx
    0040b69bmov rdi, rax
    0040b69ecall fsquare
    0040b6a3mov [rbp-4], 2
    0040b6aajmp 0x40b6e2
    0040b6ac
    0040b6acloc_40b6ac:
    0040b6aclea rdx, [rbp-816]
    0040b6b3lea rax, [rbp-736]
    0040b6bamov rsi, rdx
    0040b6bdmov rdi, rax
    0040b6c0call fsquare
    0040b6c5lea rdx, [rbp-736]
    0040b6cclea rax, [rbp-816]
    0040b6d3mov rsi, rdx
    0040b6d6mov rdi, rax
    0040b6d9call fsquare
    0040b6deadd [rbp-4], 2
    0040b6e2
    0040b6e2loc_40b6e2:
    0040b6e2cmp [rbp-4], 19
    0040b6e6jle 0x40b6ac
    0040b6e8lea rdx, [rbp-496]
    0040b6eflea rcx, [rbp-816]
    0040b6f6lea rax, [rbp-736]
    0040b6fdmov rsi, rcx
    0040b700mov rdi, rax
    0040b703call fmul
    0040b708lea rdx, [rbp-736]
    0040b70flea rax, [rbp-816]
    0040b716mov rsi, rdx
    0040b719mov rdi, rax
    0040b71ccall fsquare
    0040b721lea rdx, [rbp-816]
    0040b728lea rax, [rbp-736]
    0040b72fmov rsi, rdx
    0040b732mov rdi, rax
    0040b735call fsquare
    0040b73amov [rbp-4], 2
    0040b741jmp 0x40b779
    0040b743
    0040b743loc_40b743:
    0040b743lea rdx, [rbp-736]
    0040b74alea rax, [rbp-816]
    0040b751mov rsi, rdx
    0040b754mov rdi, rax
    0040b757call fsquare
    0040b75clea rdx, [rbp-816]
    0040b763lea rax, [rbp-736]
    0040b76amov rsi, rdx
    0040b76dmov rdi, rax
    0040b770call fsquare
    0040b775add [rbp-4], 2
    0040b779
    0040b779loc_40b779:
    0040b779cmp [rbp-4], 9
    0040b77djle 0x40b743
    0040b77flea rdx, [rbp-416]
    0040b786lea rcx, [rbp-736]
    0040b78dlea rax, [rbp-576]
    0040b794mov rsi, rcx
    0040b797mov rdi, rax
    0040b79acall fmul
    0040b79flea rdx, [rbp-576]
    0040b7a6lea rax, [rbp-736]
    0040b7admov rsi, rdx
    0040b7b0mov rdi, rax
    0040b7b3call fsquare
    0040b7b8lea rdx, [rbp-736]
    0040b7bflea rax, [rbp-816]
    0040b7c6mov rsi, rdx
    0040b7c9mov rdi, rax
    0040b7cccall fsquare
    0040b7d1mov [rbp-4], 2
    0040b7d8jmp 0x40b810
    0040b7da
    0040b7daloc_40b7da:
    0040b7dalea rdx, [rbp-816]
    0040b7e1lea rax, [rbp-736]
    0040b7e8mov rsi, rdx
    0040b7ebmov rdi, rax
    0040b7eecall fsquare
    0040b7f3lea rdx, [rbp-736]
    0040b7falea rax, [rbp-816]
    0040b801mov rsi, rdx
    0040b804mov rdi, rax
    0040b807call fsquare
    0040b80cadd [rbp-4], 2
    0040b810
    0040b810loc_40b810:
    0040b810cmp [rbp-4], 49
    0040b814jle 0x40b7da
    0040b816lea rdx, [rbp-576]
    0040b81dlea rcx, [rbp-816]
    0040b824lea rax, [rbp-656]
    0040b82bmov rsi, rcx
    0040b82emov rdi, rax
    0040b831call fmul
    0040b836lea rdx, [rbp-656]
    0040b83dlea rax, [rbp-816]
    0040b844mov rsi, rdx
    0040b847mov rdi, rax
    0040b84acall fsquare
    0040b84flea rdx, [rbp-816]
    0040b856lea rax, [rbp-736]
    0040b85dmov rsi, rdx
    0040b860mov rdi, rax
    0040b863call fsquare
    0040b868mov [rbp-4], 2
    0040b86fjmp 0x40b8a7
    0040b871
    0040b871loc_40b871:
    0040b871lea rdx, [rbp-736]
    0040b878lea rax, [rbp-816]
    0040b87fmov rsi, rdx
    0040b882mov rdi, rax
    0040b885call fsquare
    0040b88alea rdx, [rbp-816]
    0040b891lea rax, [rbp-736]
    0040b898mov rsi, rdx
    0040b89bmov rdi, rax
    0040b89ecall fsquare
    0040b8a3add [rbp-4], 2
    0040b8a7
    0040b8a7loc_40b8a7:
    0040b8a7cmp [rbp-4], 99
    0040b8abjle 0x40b871
    0040b8adlea rdx, [rbp-656]
    0040b8b4lea rcx, [rbp-736]
    0040b8bblea rax, [rbp-816]
    0040b8c2mov rsi, rcx
    0040b8c5mov rdi, rax
    0040b8c8call fmul
    0040b8cdlea rdx, [rbp-816]
    0040b8d4lea rax, [rbp-736]
    0040b8dbmov rsi, rdx
    0040b8demov rdi, rax
    0040b8e1call fsquare
    0040b8e6lea rdx, [rbp-736]
    0040b8edlea rax, [rbp-816]
    0040b8f4mov rsi, rdx
    0040b8f7mov rdi, rax
    0040b8facall fsquare
    0040b8ffmov [rbp-4], 2
    0040b906jmp 0x40b93e
    0040b908
    0040b908loc_40b908:
    0040b908lea rdx, [rbp-816]
    0040b90flea rax, [rbp-736]
    0040b916mov rsi, rdx
    0040b919mov rdi, rax
    0040b91ccall fsquare
    0040b921lea rdx, [rbp-736]
    0040b928lea rax, [rbp-816]
    0040b92fmov rsi, rdx
    0040b932mov rdi, rax
    0040b935call fsquare
    0040b93aadd [rbp-4], 2
    0040b93e
    0040b93eloc_40b93e:
    0040b93ecmp [rbp-4], 49
    0040b942jle 0x40b908
    0040b944lea rdx, [rbp-576]
    0040b94blea rcx, [rbp-816]
    0040b952lea rax, [rbp-736]
    0040b959mov rsi, rcx
    0040b95cmov rdi, rax
    0040b95fcall fmul
    0040b964lea rdx, [rbp-736]
    0040b96blea rax, [rbp-816]
    0040b972mov rsi, rdx
    0040b975mov rdi, rax
    0040b978call fsquare
    0040b97dlea rdx, [rbp-816]
    0040b984lea rax, [rbp-736]
    0040b98bmov rsi, rdx
    0040b98emov rdi, rax
    0040b991call fsquare
    0040b996lea rdx, [rbp-736]
    0040b99dlea rax, [rbp-816]
    0040b9a4mov rsi, rdx
    0040b9a7mov rdi, rax
    0040b9aacall fsquare
    0040b9aflea rdx, [rbp-816]
    0040b9b6lea rax, [rbp-736]
    0040b9bdmov rsi, rdx
    0040b9c0mov rdi, rax
    0040b9c3call fsquare
    0040b9c8lea rdx, [rbp-736]
    0040b9cflea rax, [rbp-816]
    0040b9d6mov rsi, rdx
    0040b9d9mov rdi, rax
    0040b9dccall fsquare
    0040b9e1lea rdx, [rbp-256]
    0040b9e8lea rcx, [rbp-816]
    0040b9efmov rax, [rbp-824]
    0040b9f6mov rsi, rcx
    0040b9f9mov rdi, rax
    0040b9fccall fmul
    0040ba01leave
    0040ba02ret
    0040b469
    0040ba03
    0040ba03curve25519_donna:
    0040ba03push rbp
    0040ba04mov rbp, rsp
    0040ba07sub rsp, 408
    0040ba0emov [rbp-392], rdi
    0040ba15mov [rbp-400], rsi
    0040ba1cmov [rbp-408], rdx
    0040ba23mov [rbp-4], 0
    0040ba2ajmp 0x40ba4b
    0040ba2c
    0040ba2cloc_40ba2c:
    0040ba2cmov eax, [rbp-4]
    0040ba2fcdqe
    0040ba31add rax, [rbp-400]
    0040ba38movzx edx, [rax]
    0040ba3bmov eax, [rbp-4]
    0040ba3ecdqe
    0040ba40mov [rbp+rax-384], dl
    0040ba47add [rbp-4], 1
    0040ba4b
    0040ba4bloc_40ba4b:
    0040ba4bcmp [rbp-4], 31
    0040ba4fjle 0x40ba2c
    0040ba51movzx eax, [rbp-384]
    0040ba58and eax, -8
    0040ba5bmov [rbp-384], al
    0040ba61movzx eax, [rbp-353]
    0040ba68and eax, 127
    0040ba6bmov [rbp-353], al
    0040ba71movzx eax, [rbp-353]
    0040ba78or eax, 64
    0040ba7bmov [rbp-353], al
    0040ba81mov rdx, [rbp-408]
    0040ba88lea rax, [rbp-96]
    0040ba8cmov rsi, rdx
    0040ba8fmov rdi, rax
    0040ba92call fexpand
    0040ba97lea rcx, [rbp-96]
    0040ba9blea rdx, [rbp-384]
    0040baa2lea rsi, [rbp-272]
    0040baa9lea rax, [rbp-176]
    0040bab0mov rdi, rax
    0040bab3call cmult
    0040bab8lea rdx, [rbp-272]
    0040babflea rax, [rbp-352]
    0040bac6mov rsi, rdx
    0040bac9mov rdi, rax
    0040bacccall crecip
    0040bad1lea rdx, [rbp-352]
    0040bad8lea rcx, [rbp-176]
    0040badflea rax, [rbp-272]
    0040bae6mov rsi, rcx
    0040bae9mov rdi, rax
    0040baeccall fmul
    0040baf1lea rdx, [rbp-272]
    0040baf8mov rax, [rbp-392]
    0040baffmov rsi, rdx
    0040bb02mov rdi, rax
    0040bb05call fcontract
    0040bb0amov eax, 0
    0040bb0fleave
    0040bb10ret
    0040ba03
    0040bb11
    0040bb11 90 90 90 ...
    0040bb14
    0040bb14base64_encode:
    0040bb14push rbp
    0040bb15mov rbp, rsp
    0040bb18mov [rbp-24], rdi
    0040bb1cmov [rbp-28], esi
    0040bb1fmov [rbp-40], rdx
    0040bb23mov [rbp-4], 0
    0040bb2amov [rbp-13], 0
    0040bb2emov [rbp-12], 0
    0040bb35mov eax, [rbp-12]
    0040bb38mov [rbp-8], eax
    0040bb3bjmp 0x40bc32
    0040bb40
    0040bb40loc_40bb40:
    0040bb40mov eax, [rbp-8]
    0040bb43add rax, [rbp-24]
    0040bb47movzx eax, [rax]
    0040bb4amov [rbp-14], al
    0040bb4dmov eax, [rbp-4]
    0040bb50cmp eax, 1
    0040bb53je 0x40bb92
    0040bb55cmp eax, 2
    0040bb58je 0x40bbcd
    0040bb5atest eax, eax
    0040bb5cjne 0x40bc27
    0040bb62mov [rbp-4], 1
    0040bb69mov eax, [rbp-12]
    0040bb6cadd rax, [rbp-40]
    0040bb70movzx edx, [rbp-14]
    0040bb74shr dl, 2
    0040bb77movzx edx, dl
    0040bb7aand edx, 63
    0040bb7dmovsxd rdx, edx
    0040bb80movzx edx, [rdx+0x40ef80]
    0040bb87mov [rax], dl
    0040bb89add [rbp-12], 1
    0040bb8djmp 0x40bc27
    0040bb92
    0040bb92loc_40bb92:
    0040bb92mov [rbp-4], 2
    0040bb99mov eax, [rbp-12]
    0040bb9cadd rax, [rbp-40]
    0040bba0movzx edx, [rbp-13]
    0040bba4and edx, 3
    0040bba7mov ecx, edx
    0040bba9shl ecx, 4
    0040bbacmovzx edx, [rbp-14]
    0040bbb0shr dl, 4
    0040bbb3movzx edx, dl
    0040bbb6and edx, 15
    0040bbb9or edx, ecx
    0040bbbbmovsxd rdx, edx
    0040bbbemovzx edx, [rdx+0x40ef80]
    0040bbc5mov [rax], dl
    0040bbc7add [rbp-12], 1
    0040bbcbjmp 0x40bc27
    0040bbcd
    0040bbcdloc_40bbcd:
    0040bbcdmov [rbp-4], 0
    0040bbd4mov eax, [rbp-12]
    0040bbd7add rax, [rbp-40]
    0040bbdbmovzx edx, [rbp-13]
    0040bbdfand edx, 15
    0040bbe2lea ecx, [4*rdx]
    0040bbe9movzx edx, [rbp-14]
    0040bbedshr dl, 6
    0040bbf0movzx edx, dl
    0040bbf3and edx, 3
    0040bbf6or edx, ecx
    0040bbf8movsxd rdx, edx
    0040bbfbmovzx edx, [rdx+0x40ef80]
    0040bc02mov [rax], dl
    0040bc04add [rbp-12], 1
    0040bc08mov eax, [rbp-12]
    0040bc0badd rax, [rbp-40]
    0040bc0fmovzx edx, [rbp-14]
    0040bc13and edx, 63
    0040bc16movsxd rdx, edx
    0040bc19movzx edx, [rdx+0x40ef80]
    0040bc20mov [rax], dl
    0040bc22add [rbp-12], 1
    0040bc26nop
    0040bc27
    0040bc27loc_40bc27:
    0040bc27movzx eax, [rbp-14]
    0040bc2bmov [rbp-13], al
    0040bc2eadd [rbp-8], 1
    0040bc32
    0040bc32loc_40bc32:
    0040bc32mov eax, [rbp-8]
    0040bc35cmp eax, [rbp-28]
    0040bc38jb 0x40bb40
    0040bc3emov eax, [rbp-4]
    0040bc41cmp eax, 1
    0040bc44je 0x40bc4d
    0040bc46cmp eax, 2
    0040bc49je 0x40bc8c
    0040bc4bjmp 0x40bcbc
    0040bc4d
    0040bc4dloc_40bc4d:
    0040bc4dmov eax, [rbp-12]
    0040bc50add rax, [rbp-40]
    0040bc54movzx edx, [rbp-13]
    0040bc58and edx, 3
    0040bc5bshl edx, 4
    0040bc5emovsxd rdx, edx
    0040bc61movzx edx, [rdx+0x40ef80]
    0040bc68mov [rax], dl
    0040bc6aadd [rbp-12], 1
    0040bc6emov eax, [rbp-12]
    0040bc71add rax, [rbp-40]
    0040bc75mov [rax], 61
    0040bc78add [rbp-12], 1
    0040bc7cmov eax, [rbp-12]
    0040bc7fadd rax, [rbp-40]
    0040bc83mov [rax], 61
    0040bc86add [rbp-12], 1
    0040bc8ajmp 0x40bcbc
    0040bc8c
    0040bc8cloc_40bc8c:
    0040bc8cmov eax, [rbp-12]
    0040bc8fadd rax, [rbp-40]
    0040bc93movzx edx, [rbp-13]
    0040bc97and edx, 15
    0040bc9ashl edx, 2
    0040bc9dmovsxd rdx, edx
    0040bca0movzx edx, [rdx+0x40ef80]
    0040bca7mov [rax], dl
    0040bca9add [rbp-12], 1
    0040bcadmov eax, [rbp-12]
    0040bcb0add rax, [rbp-40]
    0040bcb4mov [rax], 61
    0040bcb7add [rbp-12], 1
    0040bcbbnop
    0040bcbc
    0040bcbcloc_40bcbc:
    0040bcbcmov eax, [rbp-12]
    0040bcbfadd rax, [rbp-40]
    0040bcc3mov [rax], 0
    0040bcc6mov eax, [rbp-12]
    0040bcc9pop rbp
    0040bccaret
    0040bb14
    0040bccb
    0040bccbbase64_decode:
    0040bccbpush rbp
    0040bcccmov rbp, rsp
    0040bccfmov [rbp-24], rdi
    0040bcd3mov [rbp-28], esi
    0040bcd6mov [rbp-40], rdx
    0040bcdamov eax, [rbp-28]
    0040bcddand eax, 3
    0040bce0test eax, eax
    0040bce2je 0x40bcee
    0040bce4mov eax, 0
    0040bce9jmp 0x40be37
    0040bcee
    0040bceeloc_40bcee:
    0040bceemov [rbp-8], 0
    0040bcf5mov eax, [rbp-8]
    0040bcf8mov [rbp-4], eax
    0040bcfbjmp 0x40be25
    0040bd00
    0040bd00loc_40bd00:
    0040bd00mov eax, [rbp-4]
    0040bd03add rax, [rbp-24]
    0040bd07movzx eax, [rax]
    0040bd0acmp al, 61
    0040bd0cje 0x40be33
    0040bd12mov eax, [rbp-4]
    0040bd15add rax, [rbp-24]
    0040bd19movzx eax, [rax]
    0040bd1ccmp al, 42
    0040bd1ejle 0x40bd2e
    0040bd20mov eax, [rbp-4]
    0040bd23add rax, [rbp-24]
    0040bd27movzx eax, [rax]
    0040bd2acmp al, 122
    0040bd2cjle 0x40bd38
    0040bd2e
    0040bd2eloc_40bd2e:
    0040bd2emov eax, 0
    0040bd33jmp 0x40be37
    0040bd38
    0040bd38loc_40bd38:
    0040bd38mov eax, [rbp-4]
    0040bd3badd rax, [rbp-24]
    0040bd3fmovzx eax, [rax]
    0040bd42movzx eax, al
    0040bd45cdqe
    0040bd47movzx eax, [rax+0x40efc0]
    0040bd4emov [rbp-9], al
    0040bd51cmp [rbp-9], -1
    0040bd55jne 0x40bd61
    0040bd57mov eax, 0
    0040bd5cjmp 0x40be37
    0040bd61
    0040bd61loc_40bd61:
    0040bd61mov eax, [rbp-4]
    0040bd64and eax, 3
    0040bd67cmp eax, 1
    0040bd6aje 0x40bd99
    0040bd6ccmp eax, 1
    0040bd6fjb 0x40bd84
    0040bd71cmp eax, 2
    0040bd74je 0x40bdcf
    0040bd76cmp eax, 3
    0040bd79je 0x40be05
    0040bd7fjmp 0x40be21
    0040bd84
    0040bd84loc_40bd84:
    0040bd84mov eax, [rbp-8]
    0040bd87add rax, [rbp-40]
    0040bd8bmovzx edx, [rbp-9]
    0040bd8fshl edx, 2
    0040bd92mov [rax], dl
    0040bd94jmp 0x40be21
    0040bd99
    0040bd99loc_40bd99:
    0040bd99mov eax, [rbp-8]
    0040bd9cmov edx, eax
    0040bd9eadd rdx, [rbp-40]
    0040bda2mov eax, eax
    0040bda4add rax, [rbp-40]
    0040bda8movzx eax, [rax]
    0040bdabmovzx ecx, [rbp-9]
    0040bdafshr cl, 4
    0040bdb2and ecx, 3
    0040bdb5or eax, ecx
    0040bdb7mov [rdx], al
    0040bdb9add [rbp-8], 1
    0040bdbdmov eax, [rbp-8]
    0040bdc0add rax, [rbp-40]
    0040bdc4movzx edx, [rbp-9]
    0040bdc8shl edx, 4
    0040bdcbmov [rax], dl
    0040bdcdjmp 0x40be21
    0040bdcf
    0040bdcfloc_40bdcf:
    0040bdcfmov eax, [rbp-8]
    0040bdd2mov edx, eax
    0040bdd4add rdx, [rbp-40]
    0040bdd8mov eax, eax
    0040bddaadd rax, [rbp-40]
    0040bddemovzx eax, [rax]
    0040bde1movzx ecx, [rbp-9]
    0040bde5shr cl, 2
    0040bde8and ecx, 15
    0040bdebor eax, ecx
    0040bdedmov [rdx], al
    0040bdefadd [rbp-8], 1
    0040bdf3mov eax, [rbp-8]
    0040bdf6add rax, [rbp-40]
    0040bdfamovzx edx, [rbp-9]
    0040bdfeshl edx, 6
    0040be01mov [rax], dl
    0040be03jmp 0x40be21
    0040be05
    0040be05loc_40be05:
    0040be05mov eax, [rbp-8]
    0040be08mov edx, eax
    0040be0aadd rdx, [rbp-40]
    0040be0emov eax, eax
    0040be10add rax, [rbp-40]
    0040be14movzx eax, [rax]
    0040be17or al, [rbp-9]
    0040be1amov [rdx], al
    0040be1cadd [rbp-8], 1
    0040be20nop
    0040be21
    0040be21loc_40be21:
    0040be21add [rbp-4], 1
    0040be25
    0040be25loc_40be25:
    0040be25mov eax, [rbp-4]
    0040be28cmp eax, [rbp-28]
    0040be2bjb 0x40bd00
    0040be31jmp 0x40be34
    0040be33
    0040be33loc_40be33:
    0040be33nop
    0040be34
    0040be34loc_40be34:
    0040be34mov eax, [rbp-8]
    0040be37
    0040be37loc_40be37:
    0040be37pop rbp
    0040be38ret
    0040bccb
    0040be39
    0040be39 90 90 90 ...
    0040be3c
    0040be3cargz_option:
    0040be3cpush rbp
    0040be3dmov rbp, rsp
    0040be40sub rsp, 48
    0040be44mov [rbp-20], edi
    0040be47mov [rbp-32], rsi
    0040be4bmov [rbp-40], rdx
    0040be4fcmp [rbp-20], 1
    0040be53jg 0x40be5c
    0040be55mov eax, 0
    0040be5ajmp 0x40bea0
    0040be5c
    0040be5cloc_40be5c:
    0040be5cmov [rbp-4], 1
    0040be63jmp 0x40be93
    0040be65
    0040be65loc_40be65:
    0040be65mov eax, [rbp-4]
    0040be68cdqe
    0040be6ashl rax, 3
    0040be6eadd rax, [rbp-32]
    0040be72mov rax, [rax]
    0040be75mov rdx, [rbp-40]
    0040be79mov rsi, rdx
    0040be7cmov rdi, rax
    0040be7fcall strcmp@plt
    0040be84test eax, eax
    0040be86jne 0x40be8f
    0040be88mov eax, 1
    0040be8djmp 0x40bea0
    0040be8f
    0040be8floc_40be8f:
    0040be8fadd [rbp-4], 1
    0040be93
    0040be93loc_40be93:
    0040be93mov eax, [rbp-4]
    0040be96cmp eax, [rbp-20]
    0040be99jl 0x40be65
    0040be9bmov eax, 0
    0040bea0
    0040bea0loc_40bea0:
    0040bea0leave
    0040bea1ret
    0040be3c
    0040bea2
    0040bea2argz_value:
    0040bea2push rbp
    0040bea3mov rbp, rsp
    0040bea6sub rsp, 48
    0040beaamov [rbp-20], edi
    0040beadmov [rbp-32], rsi
    0040beb1mov [rbp-40], rdx
    0040beb5cmp [rbp-20], 1
    0040beb9jg 0x40bec2
    0040bebbmov eax, 0
    0040bec0jmp 0x40bf20
    0040bec2
    0040bec2loc_40bec2:
    0040bec2mov [rbp-4], 1
    0040bec9jmp 0x40bf13
    0040becb
    0040becbloc_40becb:
    0040becbmov eax, [rbp-4]
    0040bececdqe
    0040bed0shl rax, 3
    0040bed4add rax, [rbp-32]
    0040bed8mov rax, [rax]
    0040bedbmov rdx, [rbp-40]
    0040bedfmov rsi, rdx
    0040bee2mov rdi, rax
    0040bee5call strcmp@plt
    0040beeatest eax, eax
    0040beecjne 0x40bf0f
    0040beeemov eax, [rbp-4]
    0040bef1add eax, 1
    0040bef4cmp eax, [rbp-20]
    0040bef7jge 0x40bf0f
    0040bef9mov eax, [rbp-4]
    0040befccdqe
    0040befeadd rax, 1
    0040bf02shl rax, 3
    0040bf06add rax, [rbp-32]
    0040bf0amov rax, [rax]
    0040bf0djmp 0x40bf20
    0040bf0f
    0040bf0floc_40bf0f:
    0040bf0fadd [rbp-4], 1
    0040bf13
    0040bf13loc_40bf13:
    0040bf13mov eax, [rbp-4]
    0040bf16cmp eax, [rbp-20]
    0040bf19jl 0x40becb
    0040bf1bmov eax, 0
    0040bf20
    0040bf20loc_40bf20:
    0040bf20leave
    0040bf21ret
    0040bea2
    0040bf22
    0040bf22ParseArgs:
    0040bf22push rbp
    0040bf23mov rbp, rsp
    0040bf26sub rsp, 48
    0040bf2amov [rbp-36], edi
    0040bf2dmov [rbp-48], rsi
    0040bf31mov rcx, [rbp-48]
    0040bf35mov eax, [rbp-36]
    0040bf38mov edx, 0x40f040
    0040bf3dmov rsi, rcx
    0040bf40mov edi, eax
    0040bf42call argz_value
    0040bf47mov [rbp-8], rax
    0040bf4bmov rcx, [rbp-48]
    0040bf4fmov eax, [rbp-36]
    0040bf52mov edx, 0x40f047
    0040bf57mov rsi, rcx
    0040bf5amov edi, eax
    0040bf5ccall argz_value
    0040bf61mov [rbp-16], rax
    0040bf65mov rcx, [rbp-48]
    0040bf69mov eax, [rbp-36]
    0040bf6cmov edx, 0x40f04d
    0040bf71mov rsi, rcx
    0040bf74mov edi, eax
    0040bf76call argz_value
    0040bf7bmov [rbp-24], rax
    0040bf7fcmp [rbp-24], 0
    0040bf84je 0x40bfe8
    0040bf86mov rax, [rbp-24]
    0040bf8amovzx eax, [rax]
    0040bf8dmovsx eax, al
    0040bf90cmp eax, 102
    0040bf93je 0x40bfad
    0040bf95cmp eax, 102
    0040bf98jg 0x40bfa1
    0040bf9acmp eax, 101
    0040bf9dje 0x40bfd1
    0040bf9fjmp 0x40bfdd
    0040bfa1
    0040bfa1loc_40bfa1:
    0040bfa1cmp eax, 109
    0040bfa4je 0x40bfb9
    0040bfa6cmp eax, 115
    0040bfa9je 0x40bfc5
    0040bfabjmp 0x40bfdd
    0040bfad
    0040bfadloc_40bfad:
    0040bfadmov [rip+0x204a01], 19
    0040bfb7jmp 0x40bfe8
    0040bfb9
    0040bfb9loc_40bfb9:
    0040bfb9mov [rip+0x2049f5], 5
    0040bfc3jmp 0x40bfe8
    0040bfc5
    0040bfc5loc_40bfc5:
    0040bfc5mov [rip+0x2049e9], 3
    0040bfcfjmp 0x40bfe8
    0040bfd1
    0040bfd1loc_40bfd1:
    0040bfd1mov [rip+0x2049dd], 0
    0040bfdbjmp 0x40bfe8
    0040bfdd
    0040bfddloc_40bfdd:
    0040bfddmov [rip+0x2049d1], 5
    0040bfe7nop
    0040bfe8
    0040bfe8loc_40bfe8:
    0040bfe8cmp [rbp-8], 0
    0040bfedje 0x40c007
    0040bfefmov rax, [rbp-8]
    0040bff3mov edx, 0x6109e0
    0040bff8mov esi, 44
    0040bffdmov rdi, rax
    0040c000call SplitString
    0040c005jmp 0x40c00c
    0040c007
    0040c007loc_40c007:
    0040c007mov eax, 0
    0040c00c
    0040c00cloc_40c00c:
    0040c00cmov [rip+0x2049c5], rax
    0040c013cmp [rbp-16], 0
    0040c018je 0x40c032
    0040c01amov rax, [rbp-16]
    0040c01emov edx, 0x6109f0
    0040c023mov esi, 44
    0040c028mov rdi, rax
    0040c02bcall SplitString
    0040c030jmp 0x40c037
    0040c032
    0040c032loc_40c032:
    0040c032mov eax, 0
    0040c037
    0040c037loc_40c037:
    0040c037mov [rip+0x2049aa], rax
    0040c03emov rcx, [rbp-48]
    0040c042mov eax, [rbp-36]
    0040c045mov edx, 0x40f054
    0040c04amov rsi, rcx
    0040c04dmov edi, eax
    0040c04fcall argz_option
    0040c054mov [rip+0x20499a], eax
    0040c05amov rcx, [rbp-48]
    0040c05emov eax, [rbp-36]
    0040c061mov edx, 0x40f05b
    0040c066mov rsi, rcx
    0040c069mov edi, eax
    0040c06bcall argz_option
    0040c070mov [rip+0x20495a], eax
    0040c076mov rcx, [rbp-48]
    0040c07amov eax, [rbp-36]
    0040c07dmov edx, 0x40f065
    0040c082mov rsi, rcx
    0040c085mov edi, eax
    0040c087call argz_option
    0040c08cmov [rip+0x204966], eax
    0040c092mov rcx, [rbp-48]
    0040c096mov eax, [rbp-36]
    0040c099mov edx, 0x40f06c
    0040c09emov rsi, rcx
    0040c0a1mov edi, eax
    0040c0a3call argz_value
    0040c0a8mov [rbp-32], rax
    0040c0accmp [rbp-32], 0
    0040c0b1je 0x40c0c5
    0040c0b3mov rax, [rbp-32]
    0040c0b7mov rdi, rax
    0040c0bacall atoi@plt
    0040c0bfmov [rip+0x204937], eax
    0040c0c5
    0040c0c5loc_40c0c5:
    0040c0c5mov rcx, [rbp-48]
    0040c0c9mov eax, [rbp-36]
    0040c0ccmov edx, 0x40f074
    0040c0d1mov rsi, rcx
    0040c0d4mov edi, eax
    0040c0d6call argz_option
    0040c0dbmov [rip+0x20491f], eax
    0040c0e1mov rcx, [rbp-48]
    0040c0e5mov eax, [rbp-36]
    0040c0e8mov edx, 0x40f07b
    0040c0edmov rsi, rcx
    0040c0f0mov edi, eax
    0040c0f2call argz_option
    0040c0f7mov [rip+0x204907], eax
    0040c0fdleave
    0040c0feret
    0040bf22
    0040c0ff
    0040c0ffPrintHelp:
    0040c0ffpush rbp
    0040c100mov rbp, rsp
    0040c103sub rsp, 16
    0040c107mov [rbp-4], edi
    0040c10amov [rbp-16], rsi
    0040c10emov rax, [rbp-16]
    0040c112mov rdx, [rax]
    0040c115mov eax, 0x40f082
    0040c11amov rsi, rdx
    0040c11dmov rdi, rax
    0040c120mov eax, 0
    0040c125call printf@plt
    0040c12amov edi, 0x40f099
    0040c12fcall puts@plt
    0040c134mov edi, 0x40f0a8
    0040c139call puts@plt
    0040c13emov edi, 0x40f0de
    0040c143call puts@plt
    0040c148mov edi, 0x40f0f8
    0040c14dcall puts@plt
    0040c152mov edi, 0x40f120
    0040c157call puts@plt
    0040c15cmov edi, 0x40f15b
    0040c161call puts@plt
    0040c166mov edi, 0x40f16a
    0040c16bcall puts@plt
    0040c170mov edi, 0x40f188
    0040c175call puts@plt
    0040c17amov eax, 0x40f1b0
    0040c17fmov rdi, rax
    0040c182mov eax, 0
    0040c187call printf@plt
    0040c18cmov eax, 0x40f1e0
    0040c191mov rdi, rax
    0040c194mov eax, 0
    0040c199call printf@plt
    0040c19emov eax, 0x40f220
    0040c1a3mov rdi, rax
    0040c1a6mov eax, 0
    0040c1abcall printf@plt
    0040c1b0mov eax, 0x40f258
    0040c1b5mov rdi, rax
    0040c1b8mov eax, 0
    0040c1bdcall printf@plt
    0040c1c2mov edi, 0x40f290
    0040c1c7call puts@plt
    0040c1ccmov edi, 0x40f2b8
    0040c1d1call puts@plt
    0040c1d6mov edi, 0x40f2e0
    0040c1dbcall puts@plt
    0040c1e0mov edi, 0x40f308
    0040c1e5call puts@plt
    0040c1eamov edi, 0x40f33b
    0040c1efcall puts@plt
    0040c1f4mov edi, 0x40f358
    0040c1f9call puts@plt
    0040c1feleave
    0040c1ffret
    0040c0ff
    0040c200
    0040c200PrintArgs:
    0040c200push rbp
    0040c201mov rbp, rsp
    0040c204mov edi, 0x40f382
    0040c209call puts@plt
    0040c20emov eax, [rip+0x2047bc]
    0040c214test eax, eax
    0040c216je 0x40c21f
    0040c218mov eax, 0x40f38c
    0040c21djmp 0x40c224
    0040c21f
    0040c21floc_40c21f:
    0040c21fmov eax, 0x40f38e
    0040c224
    0040c224loc_40c224:
    0040c224mov edx, 0x40f390
    0040c229mov rsi, rax
    0040c22cmov rdi, rdx
    0040c22fmov eax, 0
    0040c234call printf@plt
    0040c239mov eax, [rip+0x2047b9]
    0040c23ftest eax, eax
    0040c241je 0x40c24a
    0040c243mov eax, 0x40f38c
    0040c248jmp 0x40c24f
    0040c24a
    0040c24aloc_40c24a:
    0040c24amov eax, 0x40f38e
    0040c24f
    0040c24floc_40c24f:
    0040c24fmov edx, 0x40f3a8
    0040c254mov rsi, rax
    0040c257mov rdi, rdx
    0040c25amov eax, 0
    0040c25fcall printf@plt
    0040c264mov edx, [rip+0x204792]
    0040c26amov eax, [rip+0x20478c]
    0040c270test eax, eax
    0040c272je 0x40c27b
    0040c274mov eax, 0x40f38c
    0040c279jmp 0x40c280
    0040c27b
    0040c27bloc_40c27b:
    0040c27bmov eax, 0x40f38e
    0040c280
    0040c280loc_40c280:
    0040c280mov ecx, 0x40f3c8
    0040c285mov rsi, rax
    0040c288mov rdi, rcx
    0040c28bmov eax, 0
    0040c290call printf@plt
    0040c295mov eax, [rip+0x204765]
    0040c29btest eax, eax
    0040c29dje 0x40c2a6
    0040c29fmov eax, 0x40f38c
    0040c2a4jmp 0x40c2ab
    0040c2a6
    0040c2a6loc_40c2a6:
    0040c2a6mov eax, 0x40f38e
    0040c2ab
    0040c2abloc_40c2ab:
    0040c2abmov edx, 0x40f3ef
    0040c2b0mov rsi, rax
    0040c2b3mov rdi, rdx
    0040c2b6mov eax, 0
    0040c2bbcall printf@plt
    0040c2c0mov eax, [rip+0x20473e]
    0040c2c6test eax, eax
    0040c2c8je 0x40c2d1
    0040c2camov eax, 0x40f38c
    0040c2cfjmp 0x40c2d6
    0040c2d1
    0040c2d1loc_40c2d1:
    0040c2d1mov eax, 0x40f38e
    0040c2d6
    0040c2d6loc_40c2d6:
    0040c2d6mov edx, 0x40f408
    0040c2dbmov rsi, rax
    0040c2demov rdi, rdx
    0040c2e1mov eax, 0
    0040c2e6call printf@plt
    0040c2ebpop rbp
    0040c2ecret
    0040c200
    0040c2ed
    0040c2ed // align 0x10
    0040c2f0
    0040c2f0ThreadWorker:
    0040c2f0push rbp
    0040c2f1mov rbp, rsp
    0040c2f4sub rsp, 32
    0040c2f8mov [rbp-24], rdi
    0040c2fcjmp 0x40c2ff
    0040c2fe
    0040c2feloc_40c2fe:
    0040c2fenop
    0040c2ff
    0040c2ffloc_40c2ff:
    0040c2ffmov rax, [rip+0x204702]
    0040c306lea rdx, [rbp-16]
    0040c30amov rsi, rdx
    0040c30dmov rdi, rax
    0040c310call queue_get
    0040c315movsx eax, al
    0040c318mov [rbp-4], eax
    0040c31bcmp [rbp-4], 0
    0040c31fjs 0x40c2fe
    0040c321mov rax, [rbp-16]
    0040c325test rax, rax
    0040c328je 0x40c37b
    0040c32amov edi, 0x610a20
    0040c32fcall pthread_mutex_lock@plt
    0040c334mov eax, [rip+0x204696]
    0040c33atest eax, eax
    0040c33cje 0x40c357
    0040c33emov rdx, [rbp-16]
    0040c342mov eax, 0x40f42b
    0040c347mov rsi, rdx
    0040c34amov rdi, rax
    0040c34dmov eax, 0
    0040c352call printf@plt
    0040c357
    0040c357loc_40c357:
    0040c357mov edi, 0x610a20
    0040c35ccall pthread_mutex_unlock@plt
    0040c361mov rax, [rbp-16]
    0040c365mov rdi, rax
    0040c368call ProcessFile
    0040c36dmov rax, [rbp-16]
    0040c371mov rdi, rax
    0040c374call free@plt
    0040c379jmp 0x40c2fe
    0040c37b
    0040c37bloc_40c37b:
    0040c37bnop
    0040c37cmov edi, 0
    0040c381call pthread_exit@plt
    0040c2f0
    0040c386
    0040c386SaveNote:
    0040c386push rbp
    0040c387mov rbp, rsp
    0040c38asub rsp, 288
    0040c391mov [rbp-280], rdi
    0040c398mov rax, [rbp-280]
    0040c39fmov [rbp-288], -1
    0040c3aamov rdx, rax
    0040c3admov eax, 0
    0040c3b2mov rcx, [rbp-288]
    0040c3b9mov rdi, rdx
    0040c3bcrepne scasb [rdi], al
    0040c3bemov rax, rcx
    0040c3c1not rax
    0040c3c4sub rax, 1
    0040c3c8sub rax, 1
    0040c3ccadd rax, [rbp-280]
    0040c3d3movzx eax, [rax]
    0040c3d6cmp al, 47
    0040c3d8jne 0x40c401
    0040c3damov edx, 0x40f43f
    0040c3dfmov rcx, [rbp-280]
    0040c3e6lea rax, [rbp-272]
    0040c3edmov esi, 260
    0040c3f2mov rdi, rax
    0040c3f5mov eax, 0
    0040c3facall snprintf@plt
    0040c3ffjmp 0x40c426
    0040c401
    0040c401loc_40c401:
    0040c401mov edx, 0x40f44c
    0040c406mov rcx, [rbp-280]
    0040c40dlea rax, [rbp-272]
    0040c414mov esi, 260
    0040c419mov rdi, rax
    0040c41cmov eax, 0
    0040c421call snprintf@plt
    0040c426
    0040c426loc_40c426:
    0040c426mov edx, 0x40f45a
    0040c42blea rax, [rbp-272]
    0040c432mov rsi, rdx
    0040c435mov rdi, rax
    0040c438call fopen@plt
    0040c43dmov [rbp-8], rax
    0040c441cmp [rbp-8], 0
    0040c446je 0x40c4a2
    0040c448mov rax, [rip+0x2045c9]
    0040c44fmov [rbp-288], -1
    0040c45amov rdx, rax
    0040c45dmov eax, 0
    0040c462mov rcx, [rbp-288]
    0040c469mov rdi, rdx
    0040c46crepne scasb [rdi], al
    0040c46emov rax, rcx
    0040c471not rax
    0040c474lea rsi, [rax-1]
    0040c478mov rax, [rip+0x204599]
    0040c47fmov rdx, [rbp-8]
    0040c483mov rcx, rdx
    0040c486mov rdx, rsi
    0040c489mov esi, 1
    0040c48emov rdi, rax
    0040c491call fwrite@plt
    0040c496mov rax, [rbp-8]
    0040c49amov rdi, rax
    0040c49dcall fclose@plt
    0040c4a2
    0040c4a2loc_40c4a2:
    0040c4a2leave
    0040c4a3ret
    0040c386
    0040c4a4
    0040c4a4RecursiveSearch:
    0040c4a4push rbp
    0040c4a5mov rbp, rsp
    0040c4a8sub rsp, 48
    0040c4acmov [rbp-40], rdi
    0040c4b0mov rax, [rbp-40]
    0040c4b4mov rdi, rax
    0040c4b7call SaveNote
    0040c4bcmov rax, [rbp-40]
    0040c4c0mov rdi, rax
    0040c4c3call opendir@plt
    0040c4c8mov [rbp-8], rax
    0040c4cccmp [rbp-8], 0
    0040c4d1jne 0x40c6fa
    0040c4d7jmp 0x40c721
    0040c4dc
    0040c4dcloc_40c4dc:
    0040c4dcmov rax, [rbp-16]
    0040c4e0movzx eax, [rax+18]
    0040c4e4cmp al, 4
    0040c4e6jne 0x40c60b
    0040c4ecmov edi, 1024
    0040c4f1call malloc@plt
    0040c4f6mov [rbp-24], rax
    0040c4famov rax, [rbp-16]
    0040c4feadd rax, 19
    0040c502mov rdx, rax
    0040c505mov eax, 0x40f45c
    0040c50amov ecx, 2
    0040c50fmov rsi, rdx
    0040c512mov rdi, rax
    0040c515repe cmpsb [rdi], [rsi]
    0040c517seta dl
    0040c51asetb al
    0040c51dmov ecx, edx
    0040c51fsub cl, al
    0040c521mov eax, ecx
    0040c523movsx eax, al
    0040c526test eax, eax
    0040c528je 0x40c6f6
    0040c52emov rax, [rbp-16]
    0040c532add rax, 19
    0040c536mov rdx, rax
    0040c539mov eax, 0x40f45e
    0040c53emov ecx, 3
    0040c543mov rsi, rdx
    0040c546mov rdi, rax
    0040c549repe cmpsb [rdi], [rsi]
    0040c54bseta dl
    0040c54esetb al
    0040c551mov ecx, edx
    0040c553sub cl, al
    0040c555mov eax, ecx
    0040c557movsx eax, al
    0040c55atest eax, eax
    0040c55cje 0x40c6f6
    0040c562mov rax, [rbp-40]
    0040c566mov [rbp-48], -1
    0040c56emov rdx, rax
    0040c571mov eax, 0
    0040c576mov rcx, [rbp-48]
    0040c57amov rdi, rdx
    0040c57drepne scasb [rdi], al
    0040c57fmov rax, rcx
    0040c582not rax
    0040c585sub rax, 1
    0040c589sub rax, 1
    0040c58dadd rax, [rbp-40]
    0040c591movzx eax, [rax]
    0040c594cmp al, 47
    0040c596jne 0x40c5c4
    0040c598mov rax, [rbp-16]
    0040c59clea rsi, [rax+19]
    0040c5a0mov edx, 0x40f461
    0040c5a5mov rcx, [rbp-40]
    0040c5a9mov rax, [rbp-24]
    0040c5admov r8, rsi
    0040c5b0mov esi, 1024
    0040c5b5mov rdi, rax
    0040c5b8mov eax, 0
    0040c5bdcall snprintf@plt
    0040c5c2jmp 0x40c5ee
    0040c5c4
    0040c5c4loc_40c5c4:
    0040c5c4mov rax, [rbp-16]
    0040c5c8lea rsi, [rax+19]
    0040c5ccmov edx, 0x40f466
    0040c5d1mov rcx, [rbp-40]
    0040c5d5mov rax, [rbp-24]
    0040c5d9mov r8, rsi
    0040c5dcmov esi, 1024
    0040c5e1mov rdi, rax
    0040c5e4mov eax, 0
    0040c5e9call snprintf@plt
    0040c5ee
    0040c5eeloc_40c5ee:
    0040c5eemov rax, [rbp-24]
    0040c5f2mov rdi, rax
    0040c5f5call RecursiveSearch
    0040c5famov rax, [rbp-24]
    0040c5femov rdi, rax
    0040c601call free@plt
    0040c606jmp 0x40c6fa
    0040c60b
    0040c60bloc_40c60b:
    0040c60bmov edi, 1024
    0040c610call malloc@plt
    0040c615mov [rbp-32], rax
    0040c619mov rax, [rbp-40]
    0040c61dmov [rbp-48], -1
    0040c625mov rdx, rax
    0040c628mov eax, 0
    0040c62dmov rcx, [rbp-48]
    0040c631mov rdi, rdx
    0040c634repne scasb [rdi], al
    0040c636mov rax, rcx
    0040c639not rax
    0040c63csub rax, 1
    0040c640sub rax, 1
    0040c644add rax, [rbp-40]
    0040c648movzx eax, [rax]
    0040c64bcmp al, 47
    0040c64djne 0x40c67b
    0040c64fmov rax, [rbp-16]
    0040c653lea rsi, [rax+19]
    0040c657mov edx, 0x40f461
    0040c65cmov rcx, [rbp-40]
    0040c660mov rax, [rbp-32]
    0040c664mov r8, rsi
    0040c667mov esi, 1024
    0040c66cmov rdi, rax
    0040c66fmov eax, 0
    0040c674call snprintf@plt
    0040c679jmp 0x40c6a5
    0040c67b
    0040c67bloc_40c67b:
    0040c67bmov rax, [rbp-16]
    0040c67flea rsi, [rax+19]
    0040c683mov edx, 0x40f466
    0040c688mov rcx, [rbp-40]
    0040c68cmov rax, [rbp-32]
    0040c690mov r8, rsi
    0040c693mov esi, 1024
    0040c698mov rdi, rax
    0040c69bmov eax, 0
    0040c6a0call snprintf@plt
    0040c6a5
    0040c6a5loc_40c6a5:
    0040c6a5mov rax, [rip+0x2042fc]
    0040c6acmov rdx, [rbp-16]
    0040c6b0add rdx, 19
    0040c6b4mov rsi, rax
    0040c6b7mov rdi, rdx
    0040c6bacall strstr@plt
    0040c6bftest rax, rax
    0040c6c2jne 0x40c6f9
    0040c6c4mov rax, [rbp-16]
    0040c6c8add rax, 19
    0040c6ccmov esi, 0x40f46c
    0040c6d1mov rdi, rax
    0040c6d4call strstr@plt
    0040c6d9test rax, rax
    0040c6dcjne 0x40c6f9
    0040c6demov rax, [rip+0x204323]
    0040c6e5mov rdx, [rbp-32]
    0040c6e9mov rsi, rdx
    0040c6ecmov rdi, rax
    0040c6efcall queue_put_wait
    0040c6f4jmp 0x40c6fa
    0040c6f6
    0040c6f6loc_40c6f6:
    0040c6f6nop
    0040c6f7jmp 0x40c6fa
    0040c6f9
    0040c6f9loc_40c6f9:
    0040c6f9nop
    0040c6fa
    0040c6faloc_40c6fa:
    0040c6famov rax, [rbp-8]
    0040c6femov rdi, rax
    0040c701call readdir@plt
    0040c706mov [rbp-16], rax
    0040c70acmp [rbp-16], 0
    0040c70fjne 0x40c4dc
    0040c715mov rax, [rbp-8]
    0040c719mov rdi, rax
    0040c71ccall closedir@plt
    0040c721
    0040c721loc_40c721:
    0040c721leave
    0040c722ret
    0040c4a4
    0040c723
    0040c723 90 .
    0040c724
    0040c724GenerateRandom:
    0040c724push rbp
    0040c725mov rbp, rsp
    0040c728sub rsp, 32
    0040c72cmov [rbp-20], edi
    0040c72fmov edx, 0x40f477
    0040c734mov eax, 0x40f479
    0040c739mov rsi, rdx
    0040c73cmov rdi, rax
    0040c73fcall fopen@plt
    0040c744mov [rbp-8], rax
    0040c748cmp [rbp-8], 0
    0040c74djne 0x40c756
    0040c74fmov eax, 0
    0040c754jmp 0x40c792
    0040c756
    0040c756loc_40c756:
    0040c756mov eax, [rbp-20]
    0040c759cdqe
    0040c75bmov rdi, rax
    0040c75ecall malloc@plt
    0040c763mov [rbp-16], rax
    0040c767mov eax, [rbp-20]
    0040c76amovsxd rdx, eax
    0040c76dmov rax, [rbp-16]
    0040c771mov rcx, [rbp-8]
    0040c775mov esi, 1
    0040c77amov rdi, rax
    0040c77dcall fread@plt
    0040c782mov rax, [rbp-8]
    0040c786mov rdi, rax
    0040c789call fclose@plt
    0040c78emov rax, [rbp-16]
    0040c792
    0040c792loc_40c792:
    0040c792leave
    0040c793ret
    0040c724
    0040c794
    0040c794ProcessFile:
    0040c794push rbp
    0040c795mov rbp, rsp
    0040c798sub rsp, 608
    0040c79fmov [rbp-600], rdi
    0040c7a6mov rax, [rip+0x2041fb]
    0040c7admov [rbp-608], -1
    0040c7b8mov rdx, rax
    0040c7bbmov eax, 0
    0040c7c0mov rcx, [rbp-608]
    0040c7c7mov rdi, rdx
    0040c7carepne scasb [rdi], al
    0040c7ccmov rax, rcx
    0040c7cfnot rax
    0040c7d2sub rax, 1
    0040c7d6mov [rbp-20], eax
    0040c7d9mov rax, [rbp-600]
    0040c7e0mov [rbp-608], -1
    0040c7ebmov rdx, rax
    0040c7eemov eax, 0
    0040c7f3mov rcx, [rbp-608]
    0040c7famov rdi, rdx
    0040c7fdrepne scasb [rdi], al
    0040c7ffmov rax, rcx
    0040c802not rax
    0040c805sub rax, 1
    0040c809mov [rbp-24], eax
    0040c80cmov rax, [rbp-600]
    0040c813lea rdx, [rbp-240]
    0040c81amov rsi, rdx
    0040c81dmov rdi, rax
    0040c820call __lstat
    0040c825mov rax, [rbp-192]
    0040c82cmov [rbp-32], rax
    0040c830mov [rbp-8], 0
    0040c838mov edx, 0x40f486
    0040c83dmov rax, [rbp-600]
    0040c844mov rsi, rdx
    0040c847mov rdi, rax
    0040c84acall fopen@plt
    0040c84fmov [rbp-40], rax
    0040c853cmp [rbp-40], 0
    0040c858je 0x40cd24
    0040c85emov edi, 32
    0040c863call GenerateRandom
    0040c868mov [rbp-48], rax
    0040c86cmov edi, 32
    0040c871call malloc@plt
    0040c876mov [rbp-56], rax
    0040c87amov edi, 64
    0040c87fcall malloc@plt
    0040c884mov [rbp-64], rax
    0040c888mov edi, 0xf4240
    0040c88dcall malloc@plt
    0040c892mov [rbp-72], rax
    0040c896mov edi, 16
    0040c89bcall malloc@plt
    0040c8a0mov [rbp-80], rax
    0040c8a4mov edi, 16
    0040c8a9call malloc@plt
    0040c8aemov [rbp-88], rax
    0040c8b2mov [rbp-272], 0
    0040c8bdmov [rbp-264], 0
    0040c8c8mov [rbp-256], 0
    0040c8d3mov [rbp-248], 0
    0040c8demov [rbp-272], 9
    0040c8e5lea rax, [rbp-400]
    0040c8ecmov rdx, rax
    0040c8efmov eax, 0
    0040c8f4mov ecx, 14
    0040c8f9mov rdi, rdx
    0040c8fcrep stosq [rdi], rax
    0040c8ffmov rdx, rdi
    0040c902mov [rdx], eax
    0040c904add rdx, 4
    0040c908mov [rbp-296], 0xf4240
    0040c912mov eax, [rip+0x2040a0]
    0040c918mov [rbp-292], eax
    0040c91emov [rbp-288], 0
    0040c928mov rax, [rip+0x204079]
    0040c92flea rdx, [rbp-400]
    0040c936add rdx, 96
    0040c93amov rsi, rax
    0040c93dmov rdi, rdx
    0040c940call strcpy@plt
    0040c945mov rax, [rbp-48]
    0040c949movzx eax, [rax]
    0040c94cmov edx, eax
    0040c94eand edx, -8
    0040c951mov rax, [rbp-48]
    0040c955mov [rax], dl
    0040c957mov rax, [rbp-48]
    0040c95badd rax, 31
    0040c95fmov rdx, [rbp-48]
    0040c963add rdx, 31
    0040c967movzx edx, [rdx]
    0040c96aand edx, 127
    0040c96dmov [rax], dl
    0040c96fmov rax, [rbp-48]
    0040c973lea rdx, [rax+31]
    0040c977mov rax, [rbp-48]
    0040c97badd rax, 31
    0040c97fmovzx eax, [rax]
    0040c982or eax, 64
    0040c985mov [rdx], al
    0040c987lea rdx, [rbp-272]
    0040c98emov rcx, [rbp-48]
    0040c992lea rax, [rbp-400]
    0040c999mov rsi, rcx
    0040c99cmov rdi, rax
    0040c99fcall curve25519_donna
    0040c9a4mov rdx, [rip+0x204065]
    0040c9abmov rcx, [rbp-48]
    0040c9afmov rax, [rbp-56]
    0040c9b3mov rsi, rcx
    0040c9b6mov rdi, rax
    0040c9b9call curve25519_donna
    0040c9bemov rdx, [rbp-64]
    0040c9c2mov rax, [rbp-56]
    0040c9c6mov esi, 32
    0040c9cbmov rdi, rax
    0040c9cecall SHA512_Simple
    0040c9d3lea rax, [rbp-400]
    0040c9dalea rdx, [rax+32]
    0040c9delea rax, [rbp-400]
    0040c9e5mov esi, 32
    0040c9eamov rdi, rax
    0040c9edcall SHA512_Simple
    0040c9f2mov rdx, [rbp-64]
    0040c9f6mov rax, [rbp-80]
    0040c9famov rcx, [rdx]
    0040c9fdmov [rax], rcx
    0040ca00mov rdx, [rdx+8]
    0040ca04mov [rax+8], rdx
    0040ca08mov rax, [rbp-64]
    0040ca0clea rdx, [rax+16]
    0040ca10mov rax, [rbp-88]
    0040ca14mov rcx, [rdx]
    0040ca17mov [rax], rcx
    0040ca1amov rdx, [rdx+8]
    0040ca1emov [rax+8], rdx
    0040ca22mov rdx, [rbp-88]
    0040ca26mov rcx, [rbp-80]
    0040ca2alea rax, [rbp-592]
    0040ca31mov rsi, rcx
    0040ca34mov rdi, rax
    0040ca37call AES_init_ctx_iv
    0040ca3cmov rcx, [rbp-32]
    0040ca40mov rax, [rbp-40]
    0040ca44mov edx, 0
    0040ca49mov rsi, rcx
    0040ca4cmov rdi, rax
    0040ca4fcall fseeko@plt
    0040ca54lea rax, [rbp-400]
    0040ca5bmov rdx, [rbp-40]
    0040ca5fmov rcx, rdx
    0040ca62mov edx, 116
    0040ca67mov esi, 1
    0040ca6cmov rdi, rax
    0040ca6fcall fwrite@plt
    0040ca74
    0040ca74loc_40ca74:
    0040ca74mov rcx, [rbp-8]
    0040ca78mov rax, [rbp-40]
    0040ca7cmov edx, 0
    0040ca81mov rsi, rcx
    0040ca84mov rdi, rax
    0040ca87call fseeko@plt
    0040ca8cmov eax, [rbp-296]
    0040ca92movsxd rdx, eax
    0040ca95mov rax, [rbp-72]
    0040ca99mov rcx, [rbp-40]
    0040ca9dmov esi, 1
    0040caa2mov rdi, rax
    0040caa5call fread@plt
    0040caaamov [rbp-16], rax
    0040caaemov rax, [rbp-16]
    0040cab2mov rdx, [rbp-8]
    0040cab6add rax, rdx
    0040cab9sub rax, [rbp-32]
    0040cabdcmp rax, 116
    0040cac1jne 0x40cacf
    0040cac3mov rax, [rbp-16]
    0040cac7sub rax, 116
    0040cacbmov [rbp-16], rax
    0040cacf
    0040cacfloc_40cacf:
    0040cacfmov rdx, [rbp-16]
    0040cad3mov rcx, [rbp-72]
    0040cad7lea rax, [rbp-592]
    0040cademov rsi, rcx
    0040cae1mov rdi, rax
    0040cae4call AES_CTR_xcrypt_buffer
    0040cae9mov rcx, [rbp-8]
    0040caedmov rax, [rbp-40]
    0040caf1mov edx, 0
    0040caf6mov rsi, rcx
    0040caf9mov rdi, rax
    0040cafccall fseeko@plt
    0040cb01mov rdx, [rbp-16]
    0040cb05mov rax, [rbp-72]
    0040cb09mov rcx, [rbp-40]
    0040cb0dmov esi, 1
    0040cb12mov rdi, rax
    0040cb15call fwrite@plt
    0040cb1amov eax, [rbp-288]
    0040cb20add eax, 1
    0040cb23mov [rbp-288], eax
    0040cb29mov rcx, [rbp-32]
    0040cb2dmov rax, [rbp-40]
    0040cb31mov edx, 0
    0040cb36mov rsi, rcx
    0040cb39mov rdi, rax
    0040cb3ccall fseeko@plt
    0040cb41lea rax, [rbp-400]
    0040cb48mov rdx, [rbp-40]
    0040cb4cmov rcx, rdx
    0040cb4fmov edx, 116
    0040cb54mov esi, 1
    0040cb59mov rdi, rax
    0040cb5ccall fwrite@plt
    0040cb61mov eax, [rbp-296]
    0040cb67cdqe
    0040cb69mov rdx, rax
    0040cb6cadd rdx, [rbp-8]
    0040cb70mov ecx, [rbp-296]
    0040cb76mov eax, [rip+0x203e3c]
    0040cb7cimul eax, ecx
    0040cb7fcdqe
    0040cb81add rax, rdx
    0040cb84cmp rax, [rbp-32]
    0040cb88jg 0x40cba7
    0040cb8amov eax, [rip+0x203e28]
    0040cb90lea edx, [rax+1]
    0040cb93mov eax, [rbp-296]
    0040cb99imul eax, edx
    0040cb9ccdqe
    0040cb9eadd [rbp-8], rax
    0040cba2jmp 0x40ca74
    0040cba7
    0040cba7loc_40cba7:
    0040cba7nop
    0040cba8mov rcx, [rbp-32]
    0040cbacmov rax, [rbp-40]
    0040cbb0mov edx, 0
    0040cbb5mov rsi, rcx
    0040cbb8mov rdi, rax
    0040cbbbcall fseeko@plt
    0040cbc0lea rax, [rbp-400]
    0040cbc7mov rdx, [rbp-40]
    0040cbcbmov rcx, rdx
    0040cbcemov edx, 116
    0040cbd3mov esi, 1
    0040cbd8mov rdi, rax
    0040cbdbcall fwrite@plt
    0040cbe0mov rax, [rbp-40]
    0040cbe4mov rdi, rax
    0040cbe7call fclose@plt
    0040cbecmov rax, [rbp-600]
    0040cbf3mov [rbp-608], -1
    0040cbfemov rdx, rax
    0040cc01mov eax, 0
    0040cc06mov rcx, [rbp-608]
    0040cc0dmov rdi, rdx
    0040cc10repne scasb [rdi], al
    0040cc12mov rax, rcx
    0040cc15not rax
    0040cc18lea rdx, [rax-1]
    0040cc1cmov eax, [rbp-20]
    0040cc1fcdqe
    0040cc21add rax, rdx
    0040cc24add rax, 2
    0040cc28mov esi, 1
    0040cc2dmov rdi, rax
    0040cc30call calloc@plt
    0040cc35mov [rbp-96], rax
    0040cc39mov rdx, [rbp-600]
    0040cc40mov rax, [rbp-96]
    0040cc44mov rsi, rdx
    0040cc47mov rdi, rax
    0040cc4acall strcpy@plt
    0040cc4fmov esi, 0x40f48a
    0040cc54mov rax, [rbp-96]
    0040cc58mov [rbp-608], -1
    0040cc63mov rdx, rax
    0040cc66mov eax, 0
    0040cc6bmov rcx, [rbp-608]
    0040cc72mov rdi, rdx
    0040cc75repne scasb [rdi], al
    0040cc77mov rax, rcx
    0040cc7anot rax
    0040cc7dsub rax, 1
    0040cc81add rax, [rbp-96]
    0040cc85movzx edx, [rsi]
    0040cc88mov [rax], dx
    0040cc8blea rax, [rbp-400]
    0040cc92lea rdx, [rax+96]
    0040cc96mov rax, [rbp-96]
    0040cc9amov rsi, rdx
    0040cc9dmov rdi, rax
    0040cca0call strcat@plt
    0040cca5mov rdx, [rbp-96]
    0040cca9mov rax, [rbp-600]
    0040ccb0mov rsi, rdx
    0040ccb3mov rdi, rax
    0040ccb6call rename@plt
    0040ccbbcmp eax, -1
    0040ccbejne 0x40ccce
    0040ccc0mov rax, [rbp-96]
    0040ccc4mov rdi, rax
    0040ccc7call free@plt
    0040ccccjmp 0x40cd25
    0040ccce
    0040ccceloc_40ccce:
    0040cccemov rax, [rbp-48]
    0040ccd2mov rdi, rax
    0040ccd5call free@plt
    0040ccdamov rax, [rbp-56]
    0040ccdemov rdi, rax
    0040cce1call free@plt
    0040cce6mov rax, [rbp-64]
    0040cceamov rdi, rax
    0040ccedcall free@plt
    0040ccf2mov rax, [rbp-72]
    0040ccf6mov rdi, rax
    0040ccf9call free@plt
    0040ccfemov rax, [rbp-80]
    0040cd02mov rdi, rax
    0040cd05call free@plt
    0040cd0amov rax, [rbp-88]
    0040cd0emov rdi, rax
    0040cd11call free@plt
    0040cd16mov rax, [rbp-96]
    0040cd1amov rdi, rax
    0040cd1dcall free@plt
    0040cd22jmp 0x40cd25
    0040cd24
    0040cd24loc_40cd24:
    0040cd24nop
    0040cd25
    0040cd25loc_40cd25:
    0040cd25leave
    0040cd26ret
    0040c794
    0040cd27
    0040cd27 90 .
    0040cd28
    0040cd28SafeStrCpyA:
    0040cd28push rbp
    0040cd29mov rbp, rsp
    0040cd2cmov [rbp-24], rdi
    0040cd30mov [rbp-32], rsi
    0040cd34mov [rbp-36], edx
    0040cd37cmp [rbp-36], 0
    0040cd3bje 0x40cd98
    0040cd3dmov rax, [rbp-24]
    0040cd41mov [rbp-8], rax
    0040cd45mov rax, [rbp-32]
    0040cd49mov [rbp-16], rax
    0040cd4d
    0040cd4dloc_40cd4d:
    0040cd4dmov rax, [rbp-16]
    0040cd51movzx edx, [rax]
    0040cd54mov rax, [rbp-8]
    0040cd58mov [rax], dl
    0040cd5amov rax, [rbp-8]
    0040cd5emovzx eax, [rax]
    0040cd61test al, al
    0040cd63sete al
    0040cd66add [rbp-8], 1
    0040cd6badd [rbp-16], 1
    0040cd70test al, al
    0040cd72je 0x40cd8e
    0040cd74jmp 0x40cd82
    0040cd76
    0040cd76loc_40cd76:
    0040cd76mov rax, [rbp-8]
    0040cd7amov [rax], 0
    0040cd7dadd [rbp-8], 1
    0040cd82
    0040cd82loc_40cd82:
    0040cd82sub [rbp-36], 1
    0040cd86cmp [rbp-36], 0
    0040cd8ajne 0x40cd76
    0040cd8cjmp 0x40cd98
    0040cd8e
    0040cd8eloc_40cd8e:
    0040cd8esub [rbp-36], 1
    0040cd92cmp [rbp-36], 0
    0040cd96jne 0x40cd4d
    0040cd98
    0040cd98loc_40cd98:
    0040cd98mov rax, [rbp-24]
    0040cd9cpop rbp
    0040cd9dret
    0040cd28
    0040cd9e
    0040cd9eCountWords:
    0040cd9epush rbp
    0040cd9fmov rbp, rsp
    0040cda2mov [rbp-24], rdi
    0040cda6mov eax, esi
    0040cda8mov [rbp-28], al
    0040cdabmov [rbp-4], 0
    0040cdb2mov rax, [rbp-24]
    0040cdb6mov [rbp-16], rax
    0040cdbajmp 0x40cdd1
    0040cdbc
    0040cdbcloc_40cdbc:
    0040cdbcmov rax, [rbp-16]
    0040cdc0movzx eax, [rax]
    0040cdc3cmp al, [rbp-28]
    0040cdc6jne 0x40cdcc
    0040cdc8add [rbp-4], 1
    0040cdcc
    0040cdccloc_40cdcc:
    0040cdccadd [rbp-16], 1
    0040cdd1
    0040cdd1loc_40cdd1:
    0040cdd1mov rax, [rbp-16]
    0040cdd5movzx eax, [rax]
    0040cdd8test al, al
    0040cddajne 0x40cdbc
    0040cddcmov eax, [rbp-4]
    0040cddfadd eax, 1
    0040cde2pop rbp
    0040cde3ret
    0040cd9e
    0040cde4
    0040cde4SplitString:
    0040cde4push rbp
    0040cde5mov rbp, rsp
    0040cde8push rbx
    0040cde9sub rsp, 72
    0040cdedmov [rbp-56], rdi
    0040cdf1mov eax, esi
    0040cdf3mov [rbp-72], rdx
    0040cdf7mov [rbp-60], al
    0040cdfamovzx eax, [rbp-60]
    0040cdfemovsx edx, al
    0040ce01mov rax, [rbp-56]
    0040ce05mov esi, edx
    0040ce07mov rdi, rax
    0040ce0acall CountWords
    0040ce0fmov rdx, [rbp-72]
    0040ce13mov [rdx], eax
    0040ce15mov rax, [rbp-72]
    0040ce19mov eax, [rax]
    0040ce1bmov eax, eax
    0040ce1dshl rax, 3
    0040ce21mov rdi, rax
    0040ce24call malloc@plt
    0040ce29mov [rbp-48], rax
    0040ce2dcmp [rbp-48], 0
    0040ce32jne 0x40ce3e
    0040ce34mov eax, 0
    0040ce39jmp 0x40cf45
    0040ce3e
    0040ce3eloc_40ce3e:
    0040ce3emov [rbp-24], 0
    0040ce46lea rdx, [rbp-60]
    0040ce4amov rax, [rbp-56]
    0040ce4emov rsi, rdx
    0040ce51mov rdi, rax
    0040ce54call strtok@plt
    0040ce59mov [rbp-32], rax
    0040ce5djmp 0x40cf36
    0040ce62
    0040ce62loc_40ce62:
    0040ce62mov rax, [rbp-24]
    0040ce66shl rax, 3
    0040ce6amov rbx, rax
    0040ce6dadd rbx, [rbp-48]
    0040ce71mov rax, [rbp-32]
    0040ce75mov [rbp-80], -1
    0040ce7dmov rdx, rax
    0040ce80mov eax, 0
    0040ce85mov rcx, [rbp-80]
    0040ce89mov rdi, rdx
    0040ce8crepne scasb [rdi], al
    0040ce8emov rax, rcx
    0040ce91not rax
    0040ce94sub rax, 1
    0040ce98add rax, 1
    0040ce9cmov rdi, rax
    0040ce9fcall malloc@plt
    0040cea4mov [rbx], rax
    0040cea7mov rax, [rbp-24]
    0040ceabshl rax, 3
    0040ceafadd rax, [rbp-48]
    0040ceb3mov rax, [rax]
    0040ceb6test rax, rax
    0040ceb9jne 0x40cefe
    0040cebbmov [rbp-40], 0
    0040cec3jmp 0x40cee1
    0040cec5
    0040cec5loc_40cec5:
    0040cec5mov rax, [rbp-40]
    0040cec9shl rax, 3
    0040cecdadd rax, [rbp-48]
    0040ced1mov rax, [rax]
    0040ced4mov rdi, rax
    0040ced7call free@plt
    0040cedcadd [rbp-40], 1
    0040cee1
    0040cee1loc_40cee1:
    0040cee1mov rax, [rbp-40]
    0040cee5cmp rax, [rbp-24]
    0040cee9jb 0x40cec5
    0040ceebmov rax, [rbp-48]
    0040ceefmov rdi, rax
    0040cef2call free@plt
    0040cef7mov eax, 0
    0040cefcjmp 0x40cf45
    0040cefe
    0040cefeloc_40cefe:
    0040cefemov rdx, [rbp-32]
    0040cf02mov rax, [rbp-24]
    0040cf06shl rax, 3
    0040cf0aadd rax, [rbp-48]
    0040cf0emov rax, [rax]
    0040cf11mov rsi, rdx
    0040cf14mov rdi, rax
    0040cf17call strcpy@plt
    0040cf1cadd [rbp-24], 1
    0040cf21lea rax, [rbp-60]
    0040cf25mov rsi, rax
    0040cf28mov edi, 0
    0040cf2dcall strtok@plt
    0040cf32mov [rbp-32], rax
    0040cf36
    0040cf36loc_40cf36:
    0040cf36cmp [rbp-32], 0
    0040cf3bjne 0x40ce62
    0040cf41mov rax, [rbp-48]
    0040cf45
    0040cf45loc_40cf45:
    0040cf45add rsp, 72
    0040cf49pop rbx
    0040cf4apop rbp
    0040cf4bret
    0040cde4