File inc_ransom_e16ac4475e24bbe97e50d7940df71079ea2f1dfd1f2bff6a649c09f7503d087c.elf
Function:
Loading..
00409086
00409086freduce_degree:
00409086push rbp
00409087mov rbp, rsp
0040908amov [rbp-8], rdi
0040908emov rax, [rbp-8]
00409092add rax, 64
00409096mov rdx, [rbp-8]
0040909aadd rdx, 64
0040909emov rdx, [rdx]
004090a1mov rcx, [rbp-8]
004090a5add rcx, 144
004090acmov rcx, [rcx]
004090afshl rcx, 4
004090b3add rdx, rcx
004090b6mov [rax], rdx
004090b9mov rax, [rbp-8]
004090bdadd rax, 64
004090c1mov rdx, [rbp-8]
004090c5add rdx, 64
004090c9mov rdx, [rdx]
004090ccmov rcx, [rbp-8]
004090d0add rcx, 144
004090d7mov rcx, [rcx]
004090daadd rcx, rcx
004090ddadd rdx, rcx
004090e0mov [rax], rdx
004090e3mov rax, [rbp-8]
004090e7add rax, 64
004090ebmov rdx, [rbp-8]
004090efadd rdx, 64
004090f3mov rcx, [rdx]
004090f6mov rdx, [rbp-8]
004090faadd rdx, 144
00409101mov rdx, [rdx]
00409104add rdx, rcx
00409107mov [rax], rdx
0040910amov rax, [rbp-8]
0040910eadd rax, 56
00409112mov rdx, [rbp-8]
00409116add rdx, 56
0040911amov rdx, [rdx]
0040911dmov rcx, [rbp-8]
00409121add rcx, 136
00409128mov rcx, [rcx]
0040912bshl rcx, 4
0040912fadd rdx, rcx
00409132mov [rax], rdx
00409135mov rax, [rbp-8]
00409139add rax, 56
0040913dmov rdx, [rbp-8]
00409141add rdx, 56
00409145mov rdx, [rdx]
00409148mov rcx, [rbp-8]
0040914cadd rcx, 136
00409153mov rcx, [rcx]
00409156add rcx, rcx
00409159add rdx, rcx
0040915cmov [rax], rdx
0040915fmov rax, [rbp-8]
00409163add rax, 56
00409167mov rdx, [rbp-8]
0040916badd rdx, 56
0040916fmov rcx, [rdx]
00409172mov rdx, [rbp-8]
00409176add rdx, 136
0040917dmov rdx, [rdx]
00409180add rdx, rcx
00409183mov [rax], rdx
00409186mov rax, [rbp-8]
0040918aadd rax, 48
0040918emov rdx, [rbp-8]
00409192add rdx, 48
00409196mov rdx, [rdx]
00409199mov rcx, [rbp-8]
0040919dsub rcx, -128
004091a1mov rcx, [rcx]
004091a4shl rcx, 4
004091a8add rdx, rcx
004091abmov [rax], rdx
004091aemov rax, [rbp-8]
004091b2add rax, 48
004091b6mov rdx, [rbp-8]
004091baadd rdx, 48
004091bemov rdx, [rdx]
004091c1mov rcx, [rbp-8]
004091c5sub rcx, -128
004091c9mov rcx, [rcx]
004091ccadd rcx, rcx
004091cfadd rdx, rcx
004091d2mov [rax], rdx
004091d5mov rax, [rbp-8]
004091d9add rax, 48
004091ddmov rdx, [rbp-8]
004091e1add rdx, 48
004091e5mov rcx, [rdx]
004091e8mov rdx, [rbp-8]
004091ecsub rdx, -128
004091f0mov rdx, [rdx]
004091f3add rdx, rcx
004091f6mov [rax], rdx
004091f9mov rax, [rbp-8]
004091fdadd rax, 40
00409201mov rdx, [rbp-8]
00409205add rdx, 40
00409209mov rdx, [rdx]
0040920cmov rcx, [rbp-8]
00409210add rcx, 120
00409214mov rcx, [rcx]
00409217shl rcx, 4
0040921badd rdx, rcx
0040921emov [rax], rdx
00409221mov rax, [rbp-8]
00409225add rax, 40
00409229mov rdx, [rbp-8]
0040922dadd rdx, 40
00409231mov rdx, [rdx]
00409234mov rcx, [rbp-8]
00409238add rcx, 120
0040923cmov rcx, [rcx]
0040923fadd rcx, rcx
00409242add rdx, rcx
00409245mov [rax], rdx
00409248mov rax, [rbp-8]
0040924cadd rax, 40
00409250mov rdx, [rbp-8]
00409254add rdx, 40
00409258mov rcx, [rdx]
0040925bmov rdx, [rbp-8]
0040925fadd rdx, 120
00409263mov rdx, [rdx]
00409266add rdx, rcx
00409269mov [rax], rdx
0040926cmov rax, [rbp-8]
00409270add rax, 32
00409274mov rdx, [rbp-8]
00409278add rdx, 32
0040927cmov rdx, [rdx]
0040927fmov rcx, [rbp-8]
00409283add rcx, 112
00409287mov rcx, [rcx]
0040928ashl rcx, 4
0040928eadd rdx, rcx
00409291mov [rax], rdx
00409294mov rax, [rbp-8]
00409298add rax, 32
0040929cmov rdx, [rbp-8]
004092a0add rdx, 32
004092a4mov rdx, [rdx]
004092a7mov rcx, [rbp-8]
004092abadd rcx, 112
004092afmov rcx, [rcx]
004092b2add rcx, rcx
004092b5add rdx, rcx
004092b8mov [rax], rdx
004092bbmov rax, [rbp-8]
004092bfadd rax, 32
004092c3mov rdx, [rbp-8]
004092c7add rdx, 32
004092cbmov rcx, [rdx]
004092cemov rdx, [rbp-8]
004092d2add rdx, 112
004092d6mov rdx, [rdx]
004092d9add rdx, rcx
004092dcmov [rax], rdx
004092dfmov rax, [rbp-8]
004092e3add rax, 24
004092e7mov rdx, [rbp-8]
004092ebadd rdx, 24
004092efmov rdx, [rdx]
004092f2mov rcx, [rbp-8]
004092f6add rcx, 104
004092famov rcx, [rcx]
004092fdshl rcx, 4
00409301add rdx, rcx
00409304mov [rax], rdx
00409307mov rax, [rbp-8]
0040930badd rax, 24
0040930fmov rdx, [rbp-8]
00409313add rdx, 24
00409317mov rdx, [rdx]
0040931amov rcx, [rbp-8]
0040931eadd rcx, 104
00409322mov rcx, [rcx]
00409325add rcx, rcx
00409328add rdx, rcx
0040932bmov [rax], rdx
0040932emov rax, [rbp-8]
00409332add rax, 24
00409336mov rdx, [rbp-8]
0040933aadd rdx, 24
0040933emov rcx, [rdx]
00409341mov rdx, [rbp-8]
00409345add rdx, 104
00409349mov rdx, [rdx]
0040934cadd rdx, rcx
0040934fmov [rax], rdx
00409352mov rax, [rbp-8]
00409356add rax, 16
0040935amov rdx, [rbp-8]
0040935eadd rdx, 16
00409362mov rdx, [rdx]
00409365mov rcx, [rbp-8]
00409369add rcx, 96
0040936dmov rcx, [rcx]
00409370shl rcx, 4
00409374add rdx, rcx
00409377mov [rax], rdx
0040937amov rax, [rbp-8]
0040937eadd rax, 16
00409382mov rdx, [rbp-8]
00409386add rdx, 16
0040938amov rdx, [rdx]
0040938dmov rcx, [rbp-8]
00409391add rcx, 96
00409395mov rcx, [rcx]
00409398add rcx, rcx
0040939badd rdx, rcx
0040939emov [rax], rdx
004093a1mov rax, [rbp-8]
004093a5add rax, 16
004093a9mov rdx, [rbp-8]
004093adadd rdx, 16
004093b1mov rcx, [rdx]
004093b4mov rdx, [rbp-8]
004093b8add rdx, 96
004093bcmov rdx, [rdx]
004093bfadd rdx, rcx
004093c2mov [rax], rdx
004093c5mov rax, [rbp-8]
004093c9add rax, 8
004093cdmov rdx, [rbp-8]
004093d1add rdx, 8
004093d5mov rdx, [rdx]
004093d8mov rcx, [rbp-8]
004093dcadd rcx, 88
004093e0mov rcx, [rcx]
004093e3shl rcx, 4
004093e7add rdx, rcx
004093eamov [rax], rdx
004093edmov rax, [rbp-8]
004093f1add rax, 8
004093f5mov rdx, [rbp-8]
004093f9add rdx, 8
004093fdmov rdx, [rdx]
00409400mov rcx, [rbp-8]
00409404add rcx, 88
00409408mov rcx, [rcx]
0040940badd rcx, rcx
0040940eadd rdx, rcx
00409411mov [rax], rdx
00409414mov rax, [rbp-8]
00409418add rax, 8
0040941cmov rdx, [rbp-8]
00409420add rdx, 8
00409424mov rcx, [rdx]
00409427mov rdx, [rbp-8]
0040942badd rdx, 88
0040942fmov rdx, [rdx]
00409432add rdx, rcx
00409435mov [rax], rdx
00409438mov rax, [rbp-8]
0040943cmov rax, [rax]
0040943fmov rdx, [rbp-8]
00409443add rdx, 80
00409447mov rdx, [rdx]
0040944ashl rdx, 4
0040944eadd rdx, rax
00409451mov rax, [rbp-8]
00409455mov [rax], rdx
00409458mov rax, [rbp-8]
0040945cmov rax, [rax]
0040945fmov rdx, [rbp-8]
00409463add rdx, 80
00409467mov rdx, [rdx]
0040946aadd rdx, rdx
0040946dadd rdx, rax
00409470mov rax, [rbp-8]
00409474mov [rax], rdx
00409477mov rax, [rbp-8]
0040947bmov rdx, [rax]
0040947emov rax, [rbp-8]
00409482add rax, 80
00409486mov rax, [rax]
00409489add rdx, rax
0040948cmov rax, [rbp-8]
00409490mov [rax], rdx
00409493pop rbp
00409494ret
00409086
00409086freduce_degree:
00409086push rbp
00409087mov rbp, rsp
0040908amov [rbp-8], rdi
0040908emov rax, [rbp-8]
00409092add rax, 64
00409096mov rdx, [rbp-8]
0040909aadd rdx, 64
0040909emov rdx, [rdx]
004090a1mov rcx, [rbp-8]
004090a5add rcx, 144
004090acmov rcx, [rcx]
004090afshl rcx, 4
004090b3add rdx, rcx
004090b6mov [rax], rdx
004090b9mov rax, [rbp-8]
004090bdadd rax, 64
004090c1mov rdx, [rbp-8]
004090c5add rdx, 64
004090c9mov rdx, [rdx]
004090ccmov rcx, [rbp-8]
004090d0add rcx, 144
004090d7mov rcx, [rcx]
004090daadd rcx, rcx
004090ddadd rdx, rcx
004090e0mov [rax], rdx
004090e3mov rax, [rbp-8]
004090e7add rax, 64
004090ebmov rdx, [rbp-8]
004090efadd rdx, 64
004090f3mov rcx, [rdx]
004090f6mov rdx, [rbp-8]
004090faadd rdx, 144
00409101mov rdx, [rdx]
00409104add rdx, rcx
00409107mov [rax], rdx
0040910amov rax, [rbp-8]
0040910eadd rax, 56
00409112mov rdx, [rbp-8]
00409116add rdx, 56
0040911amov rdx, [rdx]
0040911dmov rcx, [rbp-8]
00409121add rcx, 136
00409128mov rcx, [rcx]
0040912bshl rcx, 4
0040912fadd rdx, rcx
00409132mov [rax], rdx
00409135mov rax, [rbp-8]
00409139add rax, 56
0040913dmov rdx, [rbp-8]
00409141add rdx, 56
00409145mov rdx, [rdx]
00409148mov rcx, [rbp-8]
0040914cadd rcx, 136
00409153mov rcx, [rcx]
00409156add rcx, rcx
00409159add rdx, rcx
0040915cmov [rax], rdx
0040915fmov rax, [rbp-8]
00409163add rax, 56
00409167mov rdx, [rbp-8]
0040916badd rdx, 56
0040916fmov rcx, [rdx]
00409172mov rdx, [rbp-8]
00409176add rdx, 136
0040917dmov rdx, [rdx]
00409180add rdx, rcx
00409183mov [rax], rdx
00409186mov rax, [rbp-8]
0040918aadd rax, 48
0040918emov rdx, [rbp-8]
00409192add rdx, 48
00409196mov rdx, [rdx]
00409199mov rcx, [rbp-8]
0040919dsub rcx, -128
004091a1mov rcx, [rcx]
004091a4shl rcx, 4
004091a8add rdx, rcx
004091abmov [rax], rdx
004091aemov rax, [rbp-8]
004091b2add rax, 48
004091b6mov rdx, [rbp-8]
004091baadd rdx, 48
004091bemov rdx, [rdx]
004091c1mov rcx, [rbp-8]
004091c5sub rcx, -128
004091c9mov rcx, [rcx]
004091ccadd rcx, rcx
004091cfadd rdx, rcx
004091d2mov [rax], rdx
004091d5mov rax, [rbp-8]
004091d9add rax, 48
004091ddmov rdx, [rbp-8]
004091e1add rdx, 48
004091e5mov rcx, [rdx]
004091e8mov rdx, [rbp-8]
004091ecsub rdx, -128
004091f0mov rdx, [rdx]
004091f3add rdx, rcx
004091f6mov [rax], rdx
004091f9mov rax, [rbp-8]
004091fdadd rax, 40
00409201mov rdx, [rbp-8]
00409205add rdx, 40
00409209mov rdx, [rdx]
0040920cmov rcx, [rbp-8]
00409210add rcx, 120
00409214mov rcx, [rcx]
00409217shl rcx, 4
0040921badd rdx, rcx
0040921emov [rax], rdx
00409221mov rax, [rbp-8]
00409225add rax, 40
00409229mov rdx, [rbp-8]
0040922dadd rdx, 40
00409231mov rdx, [rdx]
00409234mov rcx, [rbp-8]
00409238add rcx, 120
0040923cmov rcx, [rcx]
0040923fadd rcx, rcx
00409242add rdx, rcx
00409245mov [rax], rdx
00409248mov rax, [rbp-8]
0040924cadd rax, 40
00409250mov rdx, [rbp-8]
00409254add rdx, 40
00409258mov rcx, [rdx]
0040925bmov rdx, [rbp-8]
0040925fadd rdx, 120
00409263mov rdx, [rdx]
00409266add rdx, rcx
00409269mov [rax], rdx
0040926cmov rax, [rbp-8]
00409270add rax, 32
00409274mov rdx, [rbp-8]
00409278add rdx, 32
0040927cmov rdx, [rdx]
0040927fmov rcx, [rbp-8]
00409283add rcx, 112
00409287mov rcx, [rcx]
0040928ashl rcx, 4
0040928eadd rdx, rcx
00409291mov [rax], rdx
00409294mov rax, [rbp-8]
00409298add rax, 32
0040929cmov rdx, [rbp-8]
004092a0add rdx, 32
004092a4mov rdx, [rdx]
004092a7mov rcx, [rbp-8]
004092abadd rcx, 112
004092afmov rcx, [rcx]
004092b2add rcx, rcx
004092b5add rdx, rcx
004092b8mov [rax], rdx
004092bbmov rax, [rbp-8]
004092bfadd rax, 32
004092c3mov rdx, [rbp-8]
004092c7add rdx, 32
004092cbmov rcx, [rdx]
004092cemov rdx, [rbp-8]
004092d2add rdx, 112
004092d6mov rdx, [rdx]
004092d9add rdx, rcx
004092dcmov [rax], rdx
004092dfmov rax, [rbp-8]
004092e3add rax, 24
004092e7mov rdx, [rbp-8]
004092ebadd rdx, 24
004092efmov rdx, [rdx]
004092f2mov rcx, [rbp-8]
004092f6add rcx, 104
004092famov rcx, [rcx]
004092fdshl rcx, 4
00409301add rdx, rcx
00409304mov [rax], rdx
00409307mov rax, [rbp-8]
0040930badd rax, 24
0040930fmov rdx, [rbp-8]
00409313add rdx, 24
00409317mov rdx, [rdx]
0040931amov rcx, [rbp-8]
0040931eadd rcx, 104
00409322mov rcx, [rcx]
00409325add rcx, rcx
00409328add rdx, rcx
0040932bmov [rax], rdx
0040932emov rax, [rbp-8]
00409332add rax, 24
00409336mov rdx, [rbp-8]
0040933aadd rdx, 24
0040933emov rcx, [rdx]
00409341mov rdx, [rbp-8]
00409345add rdx, 104
00409349mov rdx, [rdx]
0040934cadd rdx, rcx
0040934fmov [rax], rdx
00409352mov rax, [rbp-8]
00409356add rax, 16
0040935amov rdx, [rbp-8]
0040935eadd rdx, 16
00409362mov rdx, [rdx]
00409365mov rcx, [rbp-8]
00409369add rcx, 96
0040936dmov rcx, [rcx]
00409370shl rcx, 4
00409374add rdx, rcx
00409377mov [rax], rdx
0040937amov rax, [rbp-8]
0040937eadd rax, 16
00409382mov rdx, [rbp-8]
00409386add rdx, 16
0040938amov rdx, [rdx]
0040938dmov rcx, [rbp-8]
00409391add rcx, 96
00409395mov rcx, [rcx]
00409398add rcx, rcx
0040939badd rdx, rcx
0040939emov [rax], rdx
004093a1mov rax, [rbp-8]
004093a5add rax, 16
004093a9mov rdx, [rbp-8]
004093adadd rdx, 16
004093b1mov rcx, [rdx]
004093b4mov rdx, [rbp-8]
004093b8add rdx, 96
004093bcmov rdx, [rdx]
004093bfadd rdx, rcx
004093c2mov [rax], rdx
004093c5mov rax, [rbp-8]
004093c9add rax, 8
004093cdmov rdx, [rbp-8]
004093d1add rdx, 8
004093d5mov rdx, [rdx]
004093d8mov rcx, [rbp-8]
004093dcadd rcx, 88
004093e0mov rcx, [rcx]
004093e3shl rcx, 4
004093e7add rdx, rcx
004093eamov [rax], rdx
004093edmov rax, [rbp-8]
004093f1add rax, 8
004093f5mov rdx, [rbp-8]
004093f9add rdx, 8
004093fdmov rdx, [rdx]
00409400mov rcx, [rbp-8]
00409404add rcx, 88
00409408mov rcx, [rcx]
0040940badd rcx, rcx
0040940eadd rdx, rcx
00409411mov [rax], rdx
00409414mov rax, [rbp-8]
00409418add rax, 8
0040941cmov rdx, [rbp-8]
00409420add rdx, 8
00409424mov rcx, [rdx]
00409427mov rdx, [rbp-8]
0040942badd rdx, 88
0040942fmov rdx, [rdx]
00409432add rdx, rcx
00409435mov [rax], rdx
00409438mov rax, [rbp-8]
0040943cmov rax, [rax]
0040943fmov rdx, [rbp-8]
00409443add rdx, 80
00409447mov rdx, [rdx]
0040944ashl rdx, 4
0040944eadd rdx, rax
00409451mov rax, [rbp-8]
00409455mov [rax], rdx
00409458mov rax, [rbp-8]
0040945cmov rax, [rax]
0040945fmov rdx, [rbp-8]
00409463add rdx, 80
00409467mov rdx, [rdx]
0040946aadd rdx, rdx
0040946dadd rdx, rax
00409470mov rax, [rbp-8]
00409474mov [rax], rdx
00409477mov rax, [rbp-8]
0040947bmov rdx, [rax]
0040947emov rax, [rbp-8]
00409482add rax, 80
00409486mov rax, [rax]
00409489add rdx, rax
0040948cmov rax, [rbp-8]
00409490mov [rax], rdx
00409493pop rbp
00409494ret
00409086
00409495
00409495div_by_2_26:
00409495push rbp
00409496mov rbp, rsp
00409499mov [rbp-24], rdi
0040949dmov rax, [rbp-24]
004094a1shr rax, 32
004094a5mov [rbp-4], eax
004094a8mov eax, [rbp-4]
004094absar eax, 31
004094aemov [rbp-8], eax
004094b1mov eax, [rbp-8]
004094b4shr eax, 6
004094b7mov [rbp-12], eax
004094bamov eax, [rbp-12]
004094bdcdqe
004094bfadd rax, [rbp-24]
004094c3sar rax, 26
004094c7pop rbp
004094c8ret
00409495
00409495div_by_2_26:
00409495push rbp
00409496mov rbp, rsp
00409499mov [rbp-24], rdi
0040949dmov rax, [rbp-24]
004094a1shr rax, 32
004094a5mov [rbp-4], eax
004094a8mov eax, [rbp-4]
004094absar eax, 31
004094aemov [rbp-8], eax
004094b1mov eax, [rbp-8]
004094b4shr eax, 6
004094b7mov [rbp-12], eax
004094bamov eax, [rbp-12]
004094bdcdqe
004094bfadd rax, [rbp-24]
004094c3sar rax, 26
004094c7pop rbp
004094c8ret
00409495
004094c9
004094c9div_by_2_25:
004094c9push rbp
004094camov rbp, rsp
004094cdmov [rbp-24], rdi
004094d1mov rax, [rbp-24]
004094d5shr rax, 32
004094d9mov [rbp-4], eax
004094dcmov eax, [rbp-4]
004094dfsar eax, 31
004094e2mov [rbp-8], eax
004094e5mov eax, [rbp-8]
004094e8shr eax, 7
004094ebmov [rbp-12], eax
004094eemov eax, [rbp-12]
004094f1cdqe
004094f3add rax, [rbp-24]
004094f7sar rax, 25
004094fbpop rbp
004094fcret
004094c9
004094c9div_by_2_25:
004094c9push rbp
004094camov rbp, rsp
004094cdmov [rbp-24], rdi
004094d1mov rax, [rbp-24]
004094d5shr rax, 32
004094d9mov [rbp-4], eax
004094dcmov eax, [rbp-4]
004094dfsar eax, 31
004094e2mov [rbp-8], eax
004094e5mov eax, [rbp-8]
004094e8shr eax, 7
004094ebmov [rbp-12], eax
004094eemov eax, [rbp-12]
004094f1cdqe
004094f3add rax, [rbp-24]
004094f7sar rax, 25
004094fbpop rbp
004094fcret
004094c9
004094fd
004094fdfreduce_coefficients:
004094fdpush rbp
004094femov rbp, rsp
00409501sub rsp, 40
00409505mov [rbp-40], rdi
00409509mov rax, [rbp-40]
0040950dadd rax, 80
00409511mov [rax], 0
00409518mov [rbp-4], 0
0040951fjmp 0x40960d
00409524
00409524loc_409524:
00409524mov eax, [rbp-4]
00409527shl rax, 3
0040952badd rax, [rbp-40]
0040952fmov rax, [rax]
00409532mov rdi, rax
00409535call div_by_2_26
0040953amov [rbp-16], rax
0040953emov eax, [rbp-4]
00409541shl rax, 3
00409545add rax, [rbp-40]
00409549mov edx, [rbp-4]
0040954cshl rdx, 3
00409550add rdx, [rbp-40]
00409554mov rdx, [rdx]
00409557mov rcx, [rbp-16]
0040955bshl rcx, 26
0040955fsub rdx, rcx
00409562mov [rax], rdx
00409565mov eax, [rbp-4]
00409568add eax, 1
0040956bmov eax, eax
0040956dshl rax, 3
00409571add rax, [rbp-40]
00409575mov edx, [rbp-4]
00409578add edx, 1
0040957bmov edx, edx
0040957dshl rdx, 3
00409581add rdx, [rbp-40]
00409585mov rdx, [rdx]
00409588add rdx, [rbp-16]
0040958cmov [rax], rdx
0040958fmov eax, [rbp-4]
00409592add eax, 1
00409595mov eax, eax
00409597shl rax, 3
0040959badd rax, [rbp-40]
0040959fmov rax, [rax]
004095a2mov rdi, rax
004095a5call div_by_2_25
004095aamov [rbp-16], rax
004095aemov eax, [rbp-4]
004095b1add eax, 1
004095b4mov eax, eax
004095b6shl rax, 3
004095baadd rax, [rbp-40]
004095bemov edx, [rbp-4]
004095c1add edx, 1
004095c4mov edx, edx
004095c6shl rdx, 3
004095caadd rdx, [rbp-40]
004095cemov rdx, [rdx]
004095d1mov rcx, [rbp-16]
004095d5shl rcx, 25
004095d9sub rdx, rcx
004095dcmov [rax], rdx
004095dfmov eax, [rbp-4]
004095e2add eax, 2
004095e5mov eax, eax
004095e7shl rax, 3
004095ebadd rax, [rbp-40]
004095efmov edx, [rbp-4]
004095f2add edx, 2
004095f5mov edx, edx
004095f7shl rdx, 3
004095fbadd rdx, [rbp-40]
004095ffmov rdx, [rdx]
00409602add rdx, [rbp-16]
00409606mov [rax], rdx
00409609add [rbp-4], 2
0040960d
0040960dloc_40960d:
0040960dcmp [rbp-4], 9
00409611jbe 0x409524
00409617mov rax, [rbp-40]
0040961bmov rax, [rax]
0040961emov rdx, [rbp-40]
00409622add rdx, 80
00409626mov rdx, [rdx]
00409629shl rdx, 4
0040962dadd rdx, rax
00409630mov rax, [rbp-40]
00409634mov [rax], rdx
00409637mov rax, [rbp-40]
0040963bmov rax, [rax]
0040963emov rdx, [rbp-40]
00409642add rdx, 80
00409646mov rdx, [rdx]
00409649add rdx, rdx
0040964cadd rdx, rax
0040964fmov rax, [rbp-40]
00409653mov [rax], rdx
00409656mov rax, [rbp-40]
0040965amov rdx, [rax]
0040965dmov rax, [rbp-40]
00409661add rax, 80
00409665mov rax, [rax]
00409668add rdx, rax
0040966bmov rax, [rbp-40]
0040966fmov [rax], rdx
00409672mov rax, [rbp-40]
00409676add rax, 80
0040967amov [rax], 0
00409681mov rax, [rbp-40]
00409685mov rax, [rax]
00409688mov rdi, rax
0040968bcall div_by_2_26
00409690mov [rbp-24], rax
00409694mov rax, [rbp-40]
00409698mov rax, [rax]
0040969bmov rdx, [rbp-24]
0040969fshl rdx, 26
004096a3mov rcx, rax
004096a6sub rcx, rdx
004096a9mov rdx, rcx
004096acmov rax, [rbp-40]
004096b0mov [rax], rdx
004096b3mov rax, [rbp-40]
004096b7lea rdx, [rax+8]
004096bbmov rax, [rbp-40]
004096bfadd rax, 8
004096c3mov rax, [rax]
004096c6add rax, [rbp-24]
004096camov [rdx], rax
004096cdleave
004096ceret
004094fd
004094fdfreduce_coefficients:
004094fdpush rbp
004094femov rbp, rsp
00409501sub rsp, 40
00409505mov [rbp-40], rdi
00409509mov rax, [rbp-40]
0040950dadd rax, 80
00409511mov [rax], 0
00409518mov [rbp-4], 0
0040951fjmp 0x40960d
00409524
00409524loc_409524:
00409524mov eax, [rbp-4]
00409527shl rax, 3
0040952badd rax, [rbp-40]
0040952fmov rax, [rax]
00409532mov rdi, rax
00409535call div_by_2_26
0040953amov [rbp-16], rax
0040953emov eax, [rbp-4]
00409541shl rax, 3
00409545add rax, [rbp-40]
00409549mov edx, [rbp-4]
0040954cshl rdx, 3
00409550add rdx, [rbp-40]
00409554mov rdx, [rdx]
00409557mov rcx, [rbp-16]
0040955bshl rcx, 26
0040955fsub rdx, rcx
00409562mov [rax], rdx
00409565mov eax, [rbp-4]
00409568add eax, 1
0040956bmov eax, eax
0040956dshl rax, 3
00409571add rax, [rbp-40]
00409575mov edx, [rbp-4]
00409578add edx, 1
0040957bmov edx, edx
0040957dshl rdx, 3
00409581add rdx, [rbp-40]
00409585mov rdx, [rdx]
00409588add rdx, [rbp-16]
0040958cmov [rax], rdx
0040958fmov eax, [rbp-4]
00409592add eax, 1
00409595mov eax, eax
00409597shl rax, 3
0040959badd rax, [rbp-40]
0040959fmov rax, [rax]
004095a2mov rdi, rax
004095a5call div_by_2_25
004095aamov [rbp-16], rax
004095aemov eax, [rbp-4]
004095b1add eax, 1
004095b4mov eax, eax
004095b6shl rax, 3
004095baadd rax, [rbp-40]
004095bemov edx, [rbp-4]
004095c1add edx, 1
004095c4mov edx, edx
004095c6shl rdx, 3
004095caadd rdx, [rbp-40]
004095cemov rdx, [rdx]
004095d1mov rcx, [rbp-16]
004095d5shl rcx, 25
004095d9sub rdx, rcx
004095dcmov [rax], rdx
004095dfmov eax, [rbp-4]
004095e2add eax, 2
004095e5mov eax, eax
004095e7shl rax, 3
004095ebadd rax, [rbp-40]
004095efmov edx, [rbp-4]
004095f2add edx, 2
004095f5mov edx, edx
004095f7shl rdx, 3
004095fbadd rdx, [rbp-40]
004095ffmov rdx, [rdx]
00409602add rdx, [rbp-16]
00409606mov [rax], rdx
00409609add [rbp-4], 2
0040960d
0040960dloc_40960d:
0040960dcmp [rbp-4], 9
00409611jbe 0x409524
00409617mov rax, [rbp-40]
0040961bmov rax, [rax]
0040961emov rdx, [rbp-40]
00409622add rdx, 80
00409626mov rdx, [rdx]
00409629shl rdx, 4
0040962dadd rdx, rax
00409630mov rax, [rbp-40]
00409634mov [rax], rdx
00409637mov rax, [rbp-40]
0040963bmov rax, [rax]
0040963emov rdx, [rbp-40]
00409642add rdx, 80
00409646mov rdx, [rdx]
00409649add rdx, rdx
0040964cadd rdx, rax
0040964fmov rax, [rbp-40]
00409653mov [rax], rdx
00409656mov rax, [rbp-40]
0040965amov rdx, [rax]
0040965dmov rax, [rbp-40]
00409661add rax, 80
00409665mov rax, [rax]
00409668add rdx, rax
0040966bmov rax, [rbp-40]
0040966fmov [rax], rdx
00409672mov rax, [rbp-40]
00409676add rax, 80
0040967amov [rax], 0
00409681mov rax, [rbp-40]
00409685mov rax, [rax]
00409688mov rdi, rax
0040968bcall div_by_2_26
00409690mov [rbp-24], rax
00409694mov rax, [rbp-40]
00409698mov rax, [rax]
0040969bmov rdx, [rbp-24]
0040969fshl rdx, 26
004096a3mov rcx, rax
004096a6sub rcx, rdx
004096a9mov rdx, rcx
004096acmov rax, [rbp-40]
004096b0mov [rax], rdx
004096b3mov rax, [rbp-40]
004096b7lea rdx, [rax+8]
004096bbmov rax, [rbp-40]
004096bfadd rax, 8
004096c3mov rax, [rax]
004096c6add rax, [rbp-24]
004096camov [rdx], rax
004096cdleave
004096ceret
004094fd
004096cf
004096cffmul:
004096cfpush rbp
004096d0mov rbp, rsp
004096d3sub rsp, 184
004096damov [rbp-168], rdi
004096e1mov [rbp-176], rsi
004096e8mov [rbp-184], rdx
004096efmov rdx, [rbp-184]
004096f6mov rcx, [rbp-176]
004096fdlea rax, [rbp-160]
00409704mov rsi, rcx
00409707mov rdi, rax
0040970acall fproduct
0040970flea rax, [rbp-160]
00409716mov rdi, rax
00409719call freduce_degree
0040971elea rax, [rbp-160]
00409725mov rdi, rax
00409728call freduce_coefficients
0040972dlea rdx, [rbp-160]
00409734mov rax, [rbp-168]
0040973bmov rcx, [rdx]
0040973emov [rax], rcx
00409741mov rcx, [rdx+8]
00409745mov [rax+8], rcx
00409749mov rcx, [rdx+16]
0040974dmov [rax+16], rcx
00409751mov rcx, [rdx+24]
00409755mov [rax+24], rcx
00409759mov rcx, [rdx+32]
0040975dmov [rax+32], rcx
00409761mov rcx, [rdx+40]
00409765mov [rax+40], rcx
00409769mov rcx, [rdx+48]
0040976dmov [rax+48], rcx
00409771mov rcx, [rdx+56]
00409775mov [rax+56], rcx
00409779mov rcx, [rdx+64]
0040977dmov [rax+64], rcx
00409781mov rdx, [rdx+72]
00409785mov [rax+72], rdx
00409789leave
0040978aret
004096cf
004096cffmul:
004096cfpush rbp
004096d0mov rbp, rsp
004096d3sub rsp, 184
004096damov [rbp-168], rdi
004096e1mov [rbp-176], rsi
004096e8mov [rbp-184], rdx
004096efmov rdx, [rbp-184]
004096f6mov rcx, [rbp-176]
004096fdlea rax, [rbp-160]
00409704mov rsi, rcx
00409707mov rdi, rax
0040970acall fproduct
0040970flea rax, [rbp-160]
00409716mov rdi, rax
00409719call freduce_degree
0040971elea rax, [rbp-160]
00409725mov rdi, rax
00409728call freduce_coefficients
0040972dlea rdx, [rbp-160]
00409734mov rax, [rbp-168]
0040973bmov rcx, [rdx]
0040973emov [rax], rcx
00409741mov rcx, [rdx+8]
00409745mov [rax+8], rcx
00409749mov rcx, [rdx+16]
0040974dmov [rax+16], rcx
00409751mov rcx, [rdx+24]
00409755mov [rax+24], rcx
00409759mov rcx, [rdx+32]
0040975dmov [rax+32], rcx
00409761mov rcx, [rdx+40]
00409765mov [rax+40], rcx
00409769mov rcx, [rdx+48]
0040976dmov [rax+48], rcx
00409771mov rcx, [rdx+56]
00409775mov [rax+56], rcx
00409779mov rcx, [rdx+64]
0040977dmov [rax+64], rcx
00409781mov rdx, [rdx+72]
00409785mov [rax+72], rdx
00409789leave
0040978aret
004096cf
0040978b
0040978bfsquare_inner:
0040978bpush rbp
0040978cmov rbp, rsp
0040978fmov [rbp-8], rdi
00409793mov [rbp-16], rsi
00409797mov rax, [rbp-16]
0040979bmov rax, [rax]
0040979emovsxd rdx, eax
004097a1mov rax, [rbp-16]
004097a5mov rax, [rax]
004097a8cdqe
004097aaimul rdx, rax
004097aemov rax, [rbp-8]
004097b2mov [rax], rdx
004097b5mov rax, [rbp-8]
004097b9lea rdx, [rax+8]
004097bdmov rax, [rbp-16]
004097c1mov rax, [rax]
004097c4cdqe
004097c6lea rcx, [rax+rax]
004097camov rax, [rbp-16]
004097ceadd rax, 8
004097d2mov rax, [rax]
004097d5cdqe
004097d7imul rax, rcx
004097dbmov [rdx], rax
004097demov rax, [rbp-8]
004097e2lea rdx, [rax+16]
004097e6mov rax, [rbp-16]
004097eaadd rax, 8
004097eemov rax, [rax]
004097f1movsxd rcx, eax
004097f4mov rax, [rbp-16]
004097f8add rax, 8
004097fcmov rax, [rax]
004097ffcdqe
00409801imul rcx, rax
00409805mov rax, [rbp-16]
00409809mov rax, [rax]
0040980cmovsxd rsi, eax
0040980fmov rax, [rbp-16]
00409813add rax, 16
00409817mov rax, [rax]
0040981acdqe
0040981cimul rax, rsi
00409820add rax, rcx
00409823add rax, rax
00409826mov [rdx], rax
00409829mov rax, [rbp-8]
0040982dlea rdx, [rax+24]
00409831mov rax, [rbp-16]
00409835add rax, 8
00409839mov rax, [rax]
0040983cmovsxd rcx, eax
0040983fmov rax, [rbp-16]
00409843add rax, 16
00409847mov rax, [rax]
0040984acdqe
0040984cimul rcx, rax
00409850mov rax, [rbp-16]
00409854mov rax, [rax]
00409857movsxd rsi, eax
0040985amov rax, [rbp-16]
0040985eadd rax, 24
00409862mov rax, [rax]
00409865cdqe
00409867imul rax, rsi
0040986badd rax, rcx
0040986eadd rax, rax
00409871mov [rdx], rax
00409874mov rax, [rbp-8]
00409878lea rdx, [rax+32]
0040987cmov rax, [rbp-16]
00409880add rax, 16
00409884mov rax, [rax]
00409887movsxd rcx, eax
0040988amov rax, [rbp-16]
0040988eadd rax, 16
00409892mov rax, [rax]
00409895cdqe
00409897imul rcx, rax
0040989bmov rax, [rbp-16]
0040989fadd rax, 8
004098a3mov rax, [rax]
004098a6cdqe
004098a8lea rsi, [4*rax]
004098b0mov rax, [rbp-16]
004098b4add rax, 24
004098b8mov rax, [rax]
004098bbcdqe
004098bdimul rax, rsi
004098c1add rcx, rax
004098c4mov rax, [rbp-16]
004098c8mov rax, [rax]
004098cbcdqe
004098cdlea rsi, [rax+rax]
004098d1mov rax, [rbp-16]
004098d5add rax, 32
004098d9mov rax, [rax]
004098dccdqe
004098deimul rax, rsi
004098e2add rax, rcx
004098e5mov [rdx], rax
004098e8mov rax, [rbp-8]
004098eclea rdx, [rax+40]
004098f0mov rax, [rbp-16]
004098f4add rax, 16
004098f8mov rax, [rax]
004098fbmovsxd rcx, eax
004098femov rax, [rbp-16]
00409902add rax, 24
00409906mov rax, [rax]
00409909cdqe
0040990bimul rcx, rax
0040990fmov rax, [rbp-16]
00409913add rax, 8
00409917mov rax, [rax]
0040991amovsxd rsi, eax
0040991dmov rax, [rbp-16]
00409921add rax, 32
00409925mov rax, [rax]
00409928cdqe
0040992aimul rax, rsi
0040992elea rsi, [rcx+rax]
00409932mov rax, [rbp-16]
00409936mov rax, [rax]
00409939movsxd rcx, eax
0040993cmov rax, [rbp-16]
00409940add rax, 40
00409944mov rax, [rax]
00409947cdqe
00409949imul rax, rcx
0040994dadd rax, rsi
00409950add rax, rax
00409953mov [rdx], rax
00409956mov rax, [rbp-8]
0040995alea rdx, [rax+48]
0040995emov rax, [rbp-16]
00409962add rax, 24
00409966mov rax, [rax]
00409969movsxd rcx, eax
0040996cmov rax, [rbp-16]
00409970add rax, 24
00409974mov rax, [rax]
00409977cdqe
00409979imul rcx, rax
0040997dmov rax, [rbp-16]
00409981add rax, 16
00409985mov rax, [rax]
00409988movsxd rsi, eax
0040998bmov rax, [rbp-16]
0040998fadd rax, 32
00409993mov rax, [rax]
00409996cdqe
00409998imul rax, rsi
0040999clea rdi, [rcx+rax]
004099a0mov rax, [rbp-16]
004099a4add rax, 8
004099a8mov rax, [rax]
004099abcdqe
004099adlea rcx, [rax+rax]
004099b1mov rax, [rbp-16]
004099b5add rax, 40
004099b9mov rax, [rax]
004099bccdqe
004099beimul rcx, rax
004099c2mov rax, [rbp-16]
004099c6mov rax, [rax]
004099c9movsxd rsi, eax
004099ccmov rax, [rbp-16]
004099d0add rax, 48
004099d4mov rax, [rax]
004099d7cdqe
004099d9imul rax, rsi
004099ddadd rax, rcx
004099e0add rax, rdi
004099e3add rax, rax
004099e6mov [rdx], rax
004099e9mov rax, [rbp-8]
004099edlea rdx, [rax+56]
004099f1mov rax, [rbp-16]
004099f5add rax, 24
004099f9mov rax, [rax]
004099fcmovsxd rcx, eax
004099ffmov rax, [rbp-16]
00409a03add rax, 32
00409a07mov rax, [rax]
00409a0acdqe
00409a0cimul rcx, rax
00409a10mov rax, [rbp-16]
00409a14add rax, 16
00409a18mov rax, [rax]
00409a1bmovsxd rsi, eax
00409a1emov rax, [rbp-16]
00409a22add rax, 40
00409a26mov rax, [rax]
00409a29cdqe
00409a2bimul rax, rsi
00409a2flea rdi, [rcx+rax]
00409a33mov rax, [rbp-16]
00409a37mov rax, [rax]
00409a3amovsxd rcx, eax
00409a3dmov rax, [rbp-16]
00409a41add rax, 56
00409a45mov rax, [rax]
00409a48cdqe
00409a4aimul rcx, rax
00409a4emov rax, [rbp-16]
00409a52add rax, 8
00409a56mov rax, [rax]
00409a59movsxd rsi, eax
00409a5cmov rax, [rbp-16]
00409a60add rax, 48
00409a64mov rax, [rax]
00409a67cdqe
00409a69imul rax, rsi
00409a6dadd rax, rcx
00409a70add rax, rdi
00409a73add rax, rax
00409a76mov [rdx], rax
00409a79mov rax, [rbp-8]
00409a7dlea rdx, [rax+64]
00409a81mov rax, [rbp-16]
00409a85add rax, 32
00409a89mov rax, [rax]
00409a8cmovsxd rcx, eax
00409a8fmov rax, [rbp-16]
00409a93add rax, 32
00409a97mov rax, [rax]
00409a9acdqe
00409a9cimul rcx, rax
00409aa0mov rax, [rbp-16]
00409aa4add rax, 16
00409aa8mov rax, [rax]
00409aabmovsxd rsi, eax
00409aaemov rax, [rbp-16]
00409ab2add rax, 48
00409ab6mov rax, [rax]
00409ab9cdqe
00409abbimul rsi, rax
00409abfmov rax, [rbp-16]
00409ac3mov rax, [rax]
00409ac6movsxd rdi, eax
00409ac9mov rax, [rbp-16]
00409acdadd rax, 64
00409ad1mov rax, [rax]
00409ad4cdqe
00409ad6imul rax, rdi
00409adalea r8, [rsi+rax]
00409ademov rax, [rbp-16]
00409ae2add rax, 8
00409ae6mov rax, [rax]
00409ae9movsxd rsi, eax
00409aecmov rax, [rbp-16]
00409af0add rax, 56
00409af4mov rax, [rax]
00409af7cdqe
00409af9imul rsi, rax
00409afdmov rax, [rbp-16]
00409b01add rax, 24
00409b05mov rax, [rax]
00409b08movsxd rdi, eax
00409b0bmov rax, [rbp-16]
00409b0fadd rax, 40
00409b13mov rax, [rax]
00409b16cdqe
00409b18imul rax, rdi
00409b1cadd rax, rsi
00409b1fadd rax, rax
00409b22add rax, r8
00409b25add rax, rax
00409b28add rax, rcx
00409b2bmov [rdx], rax
00409b2emov rax, [rbp-8]
00409b32lea rdx, [rax+72]
00409b36mov rax, [rbp-16]
00409b3aadd rax, 32
00409b3emov rax, [rax]
00409b41movsxd rcx, eax
00409b44mov rax, [rbp-16]
00409b48add rax, 40
00409b4cmov rax, [rax]
00409b4fcdqe
00409b51imul rcx, rax
00409b55mov rax, [rbp-16]
00409b59add rax, 24
00409b5dmov rax, [rax]
00409b60movsxd rsi, eax
00409b63mov rax, [rbp-16]
00409b67add rax, 48
00409b6bmov rax, [rax]
00409b6ecdqe
00409b70imul rax, rsi
00409b74lea rdi, [rcx+rax]
00409b78mov rax, [rbp-16]
00409b7cadd rax, 8
00409b80mov rax, [rax]
00409b83movsxd rcx, eax
00409b86mov rax, [rbp-16]
00409b8aadd rax, 64
00409b8emov rax, [rax]
00409b91cdqe
00409b93imul rcx, rax
00409b97mov rax, [rbp-16]
00409b9badd rax, 16
00409b9fmov rax, [rax]
00409ba2movsxd rsi, eax
00409ba5mov rax, [rbp-16]
00409ba9add rax, 56
00409badmov rax, [rax]
00409bb0cdqe
00409bb2imul rax, rsi
00409bb6add rax, rcx
00409bb9lea rsi, [rdi+rax]
00409bbdmov rax, [rbp-16]
00409bc1mov rax, [rax]
00409bc4movsxd rcx, eax
00409bc7mov rax, [rbp-16]
00409bcbadd rax, 72
00409bcfmov rax, [rax]
00409bd2cdqe
00409bd4imul rax, rcx
00409bd8add rax, rsi
00409bdbadd rax, rax
00409bdemov [rdx], rax
00409be1mov rax, [rbp-8]
00409be5add rax, 80
00409be9mov rdx, [rbp-16]
00409bedadd rdx, 40
00409bf1mov rdx, [rdx]
00409bf4movsxd rcx, edx
00409bf7mov rdx, [rbp-16]
00409bfbadd rdx, 40
00409bffmov rdx, [rdx]
00409c02movsxd rdx, edx
00409c05imul rcx, rdx
00409c09mov rdx, [rbp-16]
00409c0dadd rdx, 32
00409c11mov rdx, [rdx]
00409c14movsxd rsi, edx
00409c17mov rdx, [rbp-16]
00409c1badd rdx, 48
00409c1fmov rdx, [rdx]
00409c22movsxd rdx, edx
00409c25imul rdx, rsi
00409c29lea rdi, [rcx+rdx]
00409c2dmov rdx, [rbp-16]
00409c31add rdx, 24
00409c35mov rdx, [rdx]
00409c38movsxd rcx, edx
00409c3bmov rdx, [rbp-16]
00409c3fadd rdx, 56
00409c43mov rdx, [rdx]
00409c46movsxd rdx, edx
00409c49imul rcx, rdx
00409c4dmov rdx, [rbp-16]
00409c51add rdx, 8
00409c55mov rdx, [rdx]
00409c58movsxd rsi, edx
00409c5bmov rdx, [rbp-16]
00409c5fadd rdx, 72
00409c63mov rdx, [rdx]
00409c66movsxd rdx, edx
00409c69imul rdx, rsi
00409c6dadd rdx, rcx
00409c70lea rsi, [rdx+rdx]
00409c74mov rdx, [rbp-16]
00409c78add rdx, 16
00409c7cmov rdx, [rdx]
00409c7fmovsxd rcx, edx
00409c82mov rdx, [rbp-16]
00409c86add rdx, 64
00409c8amov rdx, [rdx]
00409c8dmovsxd rdx, edx
00409c90imul rdx, rcx
00409c94add rdx, rsi
00409c97add rdx, rdi
00409c9aadd rdx, rdx
00409c9dmov [rax], rdx
00409ca0mov rax, [rbp-8]
00409ca4add rax, 88
00409ca8mov rdx, [rbp-16]
00409cacadd rdx, 40
00409cb0mov rdx, [rdx]
00409cb3movsxd rcx, edx
00409cb6mov rdx, [rbp-16]
00409cbaadd rdx, 48
00409cbemov rdx, [rdx]
00409cc1movsxd rdx, edx
00409cc4imul rcx, rdx
00409cc8mov rdx, [rbp-16]
00409cccadd rdx, 32
00409cd0mov rdx, [rdx]
00409cd3movsxd rsi, edx
00409cd6mov rdx, [rbp-16]
00409cdaadd rdx, 56
00409cdemov rdx, [rdx]
00409ce1movsxd rdx, edx
00409ce4imul rdx, rsi
00409ce8lea rdi, [rcx+rdx]
00409cecmov rdx, [rbp-16]
00409cf0add rdx, 16
00409cf4mov rdx, [rdx]
00409cf7movsxd rcx, edx
00409cfamov rdx, [rbp-16]
00409cfeadd rdx, 72
00409d02mov rdx, [rdx]
00409d05movsxd rdx, edx
00409d08imul rcx, rdx
00409d0cmov rdx, [rbp-16]
00409d10add rdx, 24
00409d14mov rdx, [rdx]
00409d17movsxd rsi, edx
00409d1amov rdx, [rbp-16]
00409d1eadd rdx, 64
00409d22mov rdx, [rdx]
00409d25movsxd rdx, edx
00409d28imul rdx, rsi
00409d2cadd rdx, rcx
00409d2fadd rdx, rdi
00409d32add rdx, rdx
00409d35mov [rax], rdx
00409d38mov rax, [rbp-8]
00409d3cadd rax, 96
00409d40mov rdx, [rbp-16]
00409d44add rdx, 48
00409d48mov rdx, [rdx]
00409d4bmovsxd rcx, edx
00409d4emov rdx, [rbp-16]
00409d52add rdx, 48
00409d56mov rdx, [rdx]
00409d59movsxd rdx, edx
00409d5cimul rdx, rcx
00409d60mov rcx, [rbp-16]
00409d64add rcx, 32
00409d68mov rcx, [rcx]
00409d6bmovsxd rsi, ecx
00409d6emov rcx, [rbp-16]
00409d72add rcx, 64
00409d76mov rcx, [rcx]
00409d79movsxd rcx, ecx
00409d7cimul rcx, rsi
00409d80mov rsi, [rbp-16]
00409d84add rsi, 40
00409d88mov rsi, [rsi]
00409d8bmovsxd rdi, esi
00409d8emov rsi, [rbp-16]
00409d92add rsi, 56
00409d96mov rsi, [rsi]
00409d99movsxd rsi, esi
00409d9cimul rdi, rsi
00409da0mov rsi, [rbp-16]
00409da4add rsi, 24
00409da8mov rsi, [rsi]
00409dabmovsxd r8, esi
00409daemov rsi, [rbp-16]
00409db2add rsi, 72
00409db6mov rsi, [rsi]
00409db9movsxd rsi, esi
00409dbcimul rsi, r8
00409dc0add rsi, rdi
00409dc3add rsi, rsi
00409dc6add rcx, rsi
00409dc9add rcx, rcx
00409dccadd rdx, rcx
00409dcfmov [rax], rdx
00409dd2mov rax, [rbp-8]
00409dd6add rax, 104
00409ddamov rdx, [rbp-16]
00409ddeadd rdx, 48
00409de2mov rdx, [rdx]
00409de5movsxd rcx, edx
00409de8mov rdx, [rbp-16]
00409decadd rdx, 56
00409df0mov rdx, [rdx]
00409df3movsxd rdx, edx
00409df6imul rcx, rdx
00409dfamov rdx, [rbp-16]
00409dfeadd rdx, 40
00409e02mov rdx, [rdx]
00409e05movsxd rsi, edx
00409e08mov rdx, [rbp-16]
00409e0cadd rdx, 64
00409e10mov rdx, [rdx]
00409e13movsxd rdx, edx
00409e16imul rdx, rsi
00409e1alea rsi, [rcx+rdx]
00409e1emov rdx, [rbp-16]
00409e22add rdx, 32
00409e26mov rdx, [rdx]
00409e29movsxd rcx, edx
00409e2cmov rdx, [rbp-16]
00409e30add rdx, 72
00409e34mov rdx, [rdx]
00409e37movsxd rdx, edx
00409e3aimul rdx, rcx
00409e3eadd rdx, rsi
00409e41add rdx, rdx
00409e44mov [rax], rdx
00409e47mov rax, [rbp-8]
00409e4badd rax, 112
00409e4fmov rdx, [rbp-16]
00409e53add rdx, 56
00409e57mov rdx, [rdx]
00409e5amovsxd rcx, edx
00409e5dmov rdx, [rbp-16]
00409e61add rdx, 56
00409e65mov rdx, [rdx]
00409e68movsxd rdx, edx
00409e6bimul rcx, rdx
00409e6fmov rdx, [rbp-16]
00409e73add rdx, 48
00409e77mov rdx, [rdx]
00409e7amovsxd rsi, edx
00409e7dmov rdx, [rbp-16]
00409e81add rdx, 64
00409e85mov rdx, [rdx]
00409e88movsxd rdx, edx
00409e8bimul rdx, rsi
00409e8fadd rcx, rdx
00409e92mov rdx, [rbp-16]
00409e96add rdx, 40
00409e9amov rdx, [rdx]
00409e9dmovsxd rdx, edx
00409ea0lea rsi, [rdx+rdx]
00409ea4mov rdx, [rbp-16]
00409ea8add rdx, 72
00409eacmov rdx, [rdx]
00409eafmovsxd rdx, edx
00409eb2imul rdx, rsi
00409eb6add rdx, rcx
00409eb9add rdx, rdx
00409ebcmov [rax], rdx
00409ebfmov rax, [rbp-8]
00409ec3add rax, 120
00409ec7mov rdx, [rbp-16]
00409ecbadd rdx, 56
00409ecfmov rdx, [rdx]
00409ed2movsxd rcx, edx
00409ed5mov rdx, [rbp-16]
00409ed9add rdx, 64
00409eddmov rdx, [rdx]
00409ee0movsxd rdx, edx
00409ee3imul rcx, rdx
00409ee7mov rdx, [rbp-16]
00409eebadd rdx, 48
00409eefmov rdx, [rdx]
00409ef2movsxd rsi, edx
00409ef5mov rdx, [rbp-16]
00409ef9add rdx, 72
00409efdmov rdx, [rdx]
00409f00movsxd rdx, edx
00409f03imul rdx, rsi
00409f07add rdx, rcx
00409f0aadd rdx, rdx
00409f0dmov [rax], rdx
00409f10mov rax, [rbp-8]
00409f14sub rax, -128
00409f18mov rdx, [rbp-16]
00409f1cadd rdx, 64
00409f20mov rdx, [rdx]
00409f23movsxd rcx, edx
00409f26mov rdx, [rbp-16]
00409f2aadd rdx, 64
00409f2emov rdx, [rdx]
00409f31movsxd rdx, edx
00409f34imul rcx, rdx
00409f38mov rdx, [rbp-16]
00409f3cadd rdx, 56
00409f40mov rdx, [rdx]
00409f43movsxd rdx, edx
00409f46lea rsi, [4*rdx]
00409f4emov rdx, [rbp-16]
00409f52add rdx, 72
00409f56mov rdx, [rdx]
00409f59movsxd rdx, edx
00409f5cimul rdx, rsi
00409f60add rdx, rcx
00409f63mov [rax], rdx
00409f66mov rax, [rbp-8]
00409f6alea rdx, [rax+136]
00409f71mov rax, [rbp-16]
00409f75add rax, 64
00409f79mov rax, [rax]
00409f7ccdqe
00409f7elea rcx, [rax+rax]
00409f82mov rax, [rbp-16]
00409f86add rax, 72
00409f8amov rax, [rax]
00409f8dcdqe
00409f8fimul rax, rcx
00409f93mov [rdx], rax
00409f96mov rax, [rbp-8]
00409f9aadd rax, 144
00409fa0mov rdx, [rbp-16]
00409fa4add rdx, 72
00409fa8mov rdx, [rdx]
00409fabmovsxd rcx, edx
00409faemov rdx, [rbp-16]
00409fb2add rdx, 72
00409fb6mov rdx, [rdx]
00409fb9movsxd rdx, edx
00409fbcimul rdx, rcx
00409fc0add rdx, rdx
00409fc3mov [rax], rdx
00409fc6pop rbp
00409fc7ret
0040978b
0040978bfsquare_inner:
0040978bpush rbp
0040978cmov rbp, rsp
0040978fmov [rbp-8], rdi
00409793mov [rbp-16], rsi
00409797mov rax, [rbp-16]
0040979bmov rax, [rax]
0040979emovsxd rdx, eax
004097a1mov rax, [rbp-16]
004097a5mov rax, [rax]
004097a8cdqe
004097aaimul rdx, rax
004097aemov rax, [rbp-8]
004097b2mov [rax], rdx
004097b5mov rax, [rbp-8]
004097b9lea rdx, [rax+8]
004097bdmov rax, [rbp-16]
004097c1mov rax, [rax]
004097c4cdqe
004097c6lea rcx, [rax+rax]
004097camov rax, [rbp-16]
004097ceadd rax, 8
004097d2mov rax, [rax]
004097d5cdqe
004097d7imul rax, rcx
004097dbmov [rdx], rax
004097demov rax, [rbp-8]
004097e2lea rdx, [rax+16]
004097e6mov rax, [rbp-16]
004097eaadd rax, 8
004097eemov rax, [rax]
004097f1movsxd rcx, eax
004097f4mov rax, [rbp-16]
004097f8add rax, 8
004097fcmov rax, [rax]
004097ffcdqe
00409801imul rcx, rax
00409805mov rax, [rbp-16]
00409809mov rax, [rax]
0040980cmovsxd rsi, eax
0040980fmov rax, [rbp-16]
00409813add rax, 16
00409817mov rax, [rax]
0040981acdqe
0040981cimul rax, rsi
00409820add rax, rcx
00409823add rax, rax
00409826mov [rdx], rax
00409829mov rax, [rbp-8]
0040982dlea rdx, [rax+24]
00409831mov rax, [rbp-16]
00409835add rax, 8
00409839mov rax, [rax]
0040983cmovsxd rcx, eax
0040983fmov rax, [rbp-16]
00409843add rax, 16
00409847mov rax, [rax]
0040984acdqe
0040984cimul rcx, rax
00409850mov rax, [rbp-16]
00409854mov rax, [rax]
00409857movsxd rsi, eax
0040985amov rax, [rbp-16]
0040985eadd rax, 24
00409862mov rax, [rax]
00409865cdqe
00409867imul rax, rsi
0040986badd rax, rcx
0040986eadd rax, rax
00409871mov [rdx], rax
00409874mov rax, [rbp-8]
00409878lea rdx, [rax+32]
0040987cmov rax, [rbp-16]
00409880add rax, 16
00409884mov rax, [rax]
00409887movsxd rcx, eax
0040988amov rax, [rbp-16]
0040988eadd rax, 16
00409892mov rax, [rax]
00409895cdqe
00409897imul rcx, rax
0040989bmov rax, [rbp-16]
0040989fadd rax, 8
004098a3mov rax, [rax]
004098a6cdqe
004098a8lea rsi, [4*rax]
004098b0mov rax, [rbp-16]
004098b4add rax, 24
004098b8mov rax, [rax]
004098bbcdqe
004098bdimul rax, rsi
004098c1add rcx, rax
004098c4mov rax, [rbp-16]
004098c8mov rax, [rax]
004098cbcdqe
004098cdlea rsi, [rax+rax]
004098d1mov rax, [rbp-16]
004098d5add rax, 32
004098d9mov rax, [rax]
004098dccdqe
004098deimul rax, rsi
004098e2add rax, rcx
004098e5mov [rdx], rax
004098e8mov rax, [rbp-8]
004098eclea rdx, [rax+40]
004098f0mov rax, [rbp-16]
004098f4add rax, 16
004098f8mov rax, [rax]
004098fbmovsxd rcx, eax
004098femov rax, [rbp-16]
00409902add rax, 24
00409906mov rax, [rax]
00409909cdqe
0040990bimul rcx, rax
0040990fmov rax, [rbp-16]
00409913add rax, 8
00409917mov rax, [rax]
0040991amovsxd rsi, eax
0040991dmov rax, [rbp-16]
00409921add rax, 32
00409925mov rax, [rax]
00409928cdqe
0040992aimul rax, rsi
0040992elea rsi, [rcx+rax]
00409932mov rax, [rbp-16]
00409936mov rax, [rax]
00409939movsxd rcx, eax
0040993cmov rax, [rbp-16]
00409940add rax, 40
00409944mov rax, [rax]
00409947cdqe
00409949imul rax, rcx
0040994dadd rax, rsi
00409950add rax, rax
00409953mov [rdx], rax
00409956mov rax, [rbp-8]
0040995alea rdx, [rax+48]
0040995emov rax, [rbp-16]
00409962add rax, 24
00409966mov rax, [rax]
00409969movsxd rcx, eax
0040996cmov rax, [rbp-16]
00409970add rax, 24
00409974mov rax, [rax]
00409977cdqe
00409979imul rcx, rax
0040997dmov rax, [rbp-16]
00409981add rax, 16
00409985mov rax, [rax]
00409988movsxd rsi, eax
0040998bmov rax, [rbp-16]
0040998fadd rax, 32
00409993mov rax, [rax]
00409996cdqe
00409998imul rax, rsi
0040999clea rdi, [rcx+rax]
004099a0mov rax, [rbp-16]
004099a4add rax, 8
004099a8mov rax, [rax]
004099abcdqe
004099adlea rcx, [rax+rax]
004099b1mov rax, [rbp-16]
004099b5add rax, 40
004099b9mov rax, [rax]
004099bccdqe
004099beimul rcx, rax
004099c2mov rax, [rbp-16]
004099c6mov rax, [rax]
004099c9movsxd rsi, eax
004099ccmov rax, [rbp-16]
004099d0add rax, 48
004099d4mov rax, [rax]
004099d7cdqe
004099d9imul rax, rsi
004099ddadd rax, rcx
004099e0add rax, rdi
004099e3add rax, rax
004099e6mov [rdx], rax
004099e9mov rax, [rbp-8]
004099edlea rdx, [rax+56]
004099f1mov rax, [rbp-16]
004099f5add rax, 24
004099f9mov rax, [rax]
004099fcmovsxd rcx, eax
004099ffmov rax, [rbp-16]
00409a03add rax, 32
00409a07mov rax, [rax]
00409a0acdqe
00409a0cimul rcx, rax
00409a10mov rax, [rbp-16]
00409a14add rax, 16
00409a18mov rax, [rax]
00409a1bmovsxd rsi, eax
00409a1emov rax, [rbp-16]
00409a22add rax, 40
00409a26mov rax, [rax]
00409a29cdqe
00409a2bimul rax, rsi
00409a2flea rdi, [rcx+rax]
00409a33mov rax, [rbp-16]
00409a37mov rax, [rax]
00409a3amovsxd rcx, eax
00409a3dmov rax, [rbp-16]
00409a41add rax, 56
00409a45mov rax, [rax]
00409a48cdqe
00409a4aimul rcx, rax
00409a4emov rax, [rbp-16]
00409a52add rax, 8
00409a56mov rax, [rax]
00409a59movsxd rsi, eax
00409a5cmov rax, [rbp-16]
00409a60add rax, 48
00409a64mov rax, [rax]
00409a67cdqe
00409a69imul rax, rsi
00409a6dadd rax, rcx
00409a70add rax, rdi
00409a73add rax, rax
00409a76mov [rdx], rax
00409a79mov rax, [rbp-8]
00409a7dlea rdx, [rax+64]
00409a81mov rax, [rbp-16]
00409a85add rax, 32
00409a89mov rax, [rax]
00409a8cmovsxd rcx, eax
00409a8fmov rax, [rbp-16]
00409a93add rax, 32
00409a97mov rax, [rax]
00409a9acdqe
00409a9cimul rcx, rax
00409aa0mov rax, [rbp-16]
00409aa4add rax, 16
00409aa8mov rax, [rax]
00409aabmovsxd rsi, eax
00409aaemov rax, [rbp-16]
00409ab2add rax, 48
00409ab6mov rax, [rax]
00409ab9cdqe
00409abbimul rsi, rax
00409abfmov rax, [rbp-16]
00409ac3mov rax, [rax]
00409ac6movsxd rdi, eax
00409ac9mov rax, [rbp-16]
00409acdadd rax, 64
00409ad1mov rax, [rax]
00409ad4cdqe
00409ad6imul rax, rdi
00409adalea r8, [rsi+rax]
00409ademov rax, [rbp-16]
00409ae2add rax, 8
00409ae6mov rax, [rax]
00409ae9movsxd rsi, eax
00409aecmov rax, [rbp-16]
00409af0add rax, 56
00409af4mov rax, [rax]
00409af7cdqe
00409af9imul rsi, rax
00409afdmov rax, [rbp-16]
00409b01add rax, 24
00409b05mov rax, [rax]
00409b08movsxd rdi, eax
00409b0bmov rax, [rbp-16]
00409b0fadd rax, 40
00409b13mov rax, [rax]
00409b16cdqe
00409b18imul rax, rdi
00409b1cadd rax, rsi
00409b1fadd rax, rax
00409b22add rax, r8
00409b25add rax, rax
00409b28add rax, rcx
00409b2bmov [rdx], rax
00409b2emov rax, [rbp-8]
00409b32lea rdx, [rax+72]
00409b36mov rax, [rbp-16]
00409b3aadd rax, 32
00409b3emov rax, [rax]
00409b41movsxd rcx, eax
00409b44mov rax, [rbp-16]
00409b48add rax, 40
00409b4cmov rax, [rax]
00409b4fcdqe
00409b51imul rcx, rax
00409b55mov rax, [rbp-16]
00409b59add rax, 24
00409b5dmov rax, [rax]
00409b60movsxd rsi, eax
00409b63mov rax, [rbp-16]
00409b67add rax, 48
00409b6bmov rax, [rax]
00409b6ecdqe
00409b70imul rax, rsi
00409b74lea rdi, [rcx+rax]
00409b78mov rax, [rbp-16]
00409b7cadd rax, 8
00409b80mov rax, [rax]
00409b83movsxd rcx, eax
00409b86mov rax, [rbp-16]
00409b8aadd rax, 64
00409b8emov rax, [rax]
00409b91cdqe
00409b93imul rcx, rax
00409b97mov rax, [rbp-16]
00409b9badd rax, 16
00409b9fmov rax, [rax]
00409ba2movsxd rsi, eax
00409ba5mov rax, [rbp-16]
00409ba9add rax, 56
00409badmov rax, [rax]
00409bb0cdqe
00409bb2imul rax, rsi
00409bb6add rax, rcx
00409bb9lea rsi, [rdi+rax]
00409bbdmov rax, [rbp-16]
00409bc1mov rax, [rax]
00409bc4movsxd rcx, eax
00409bc7mov rax, [rbp-16]
00409bcbadd rax, 72
00409bcfmov rax, [rax]
00409bd2cdqe
00409bd4imul rax, rcx
00409bd8add rax, rsi
00409bdbadd rax, rax
00409bdemov [rdx], rax
00409be1mov rax, [rbp-8]
00409be5add rax, 80
00409be9mov rdx, [rbp-16]
00409bedadd rdx, 40
00409bf1mov rdx, [rdx]
00409bf4movsxd rcx, edx
00409bf7mov rdx, [rbp-16]
00409bfbadd rdx, 40
00409bffmov rdx, [rdx]
00409c02movsxd rdx, edx
00409c05imul rcx, rdx
00409c09mov rdx, [rbp-16]
00409c0dadd rdx, 32
00409c11mov rdx, [rdx]
00409c14movsxd rsi, edx
00409c17mov rdx, [rbp-16]
00409c1badd rdx, 48
00409c1fmov rdx, [rdx]
00409c22movsxd rdx, edx
00409c25imul rdx, rsi
00409c29lea rdi, [rcx+rdx]
00409c2dmov rdx, [rbp-16]
00409c31add rdx, 24
00409c35mov rdx, [rdx]
00409c38movsxd rcx, edx
00409c3bmov rdx, [rbp-16]
00409c3fadd rdx, 56
00409c43mov rdx, [rdx]
00409c46movsxd rdx, edx
00409c49imul rcx, rdx
00409c4dmov rdx, [rbp-16]
00409c51add rdx, 8
00409c55mov rdx, [rdx]
00409c58movsxd rsi, edx
00409c5bmov rdx, [rbp-16]
00409c5fadd rdx, 72
00409c63mov rdx, [rdx]
00409c66movsxd rdx, edx
00409c69imul rdx, rsi
00409c6dadd rdx, rcx
00409c70lea rsi, [rdx+rdx]
00409c74mov rdx, [rbp-16]
00409c78add rdx, 16
00409c7cmov rdx, [rdx]
00409c7fmovsxd rcx, edx
00409c82mov rdx, [rbp-16]
00409c86add rdx, 64
00409c8amov rdx, [rdx]
00409c8dmovsxd rdx, edx
00409c90imul rdx, rcx
00409c94add rdx, rsi
00409c97add rdx, rdi
00409c9aadd rdx, rdx
00409c9dmov [rax], rdx
00409ca0mov rax, [rbp-8]
00409ca4add rax, 88
00409ca8mov rdx, [rbp-16]
00409cacadd rdx, 40
00409cb0mov rdx, [rdx]
00409cb3movsxd rcx, edx
00409cb6mov rdx, [rbp-16]
00409cbaadd rdx, 48
00409cbemov rdx, [rdx]
00409cc1movsxd rdx, edx
00409cc4imul rcx, rdx
00409cc8mov rdx, [rbp-16]
00409cccadd rdx, 32
00409cd0mov rdx, [rdx]
00409cd3movsxd rsi, edx
00409cd6mov rdx, [rbp-16]
00409cdaadd rdx, 56
00409cdemov rdx, [rdx]
00409ce1movsxd rdx, edx
00409ce4imul rdx, rsi
00409ce8lea rdi, [rcx+rdx]
00409cecmov rdx, [rbp-16]
00409cf0add rdx, 16
00409cf4mov rdx, [rdx]
00409cf7movsxd rcx, edx
00409cfamov rdx, [rbp-16]
00409cfeadd rdx, 72
00409d02mov rdx, [rdx]
00409d05movsxd rdx, edx
00409d08imul rcx, rdx
00409d0cmov rdx, [rbp-16]
00409d10add rdx, 24
00409d14mov rdx, [rdx]
00409d17movsxd rsi, edx
00409d1amov rdx, [rbp-16]
00409d1eadd rdx, 64
00409d22mov rdx, [rdx]
00409d25movsxd rdx, edx
00409d28imul rdx, rsi
00409d2cadd rdx, rcx
00409d2fadd rdx, rdi
00409d32add rdx, rdx
00409d35mov [rax], rdx
00409d38mov rax, [rbp-8]
00409d3cadd rax, 96
00409d40mov rdx, [rbp-16]
00409d44add rdx, 48
00409d48mov rdx, [rdx]
00409d4bmovsxd rcx, edx
00409d4emov rdx, [rbp-16]
00409d52add rdx, 48
00409d56mov rdx, [rdx]
00409d59movsxd rdx, edx
00409d5cimul rdx, rcx
00409d60mov rcx, [rbp-16]
00409d64add rcx, 32
00409d68mov rcx, [rcx]
00409d6bmovsxd rsi, ecx
00409d6emov rcx, [rbp-16]
00409d72add rcx, 64
00409d76mov rcx, [rcx]
00409d79movsxd rcx, ecx
00409d7cimul rcx, rsi
00409d80mov rsi, [rbp-16]
00409d84add rsi, 40
00409d88mov rsi, [rsi]
00409d8bmovsxd rdi, esi
00409d8emov rsi, [rbp-16]
00409d92add rsi, 56
00409d96mov rsi, [rsi]
00409d99movsxd rsi, esi
00409d9cimul rdi, rsi
00409da0mov rsi, [rbp-16]
00409da4add rsi, 24
00409da8mov rsi, [rsi]
00409dabmovsxd r8, esi
00409daemov rsi, [rbp-16]
00409db2add rsi, 72
00409db6mov rsi, [rsi]
00409db9movsxd rsi, esi
00409dbcimul rsi, r8
00409dc0add rsi, rdi
00409dc3add rsi, rsi
00409dc6add rcx, rsi
00409dc9add rcx, rcx
00409dccadd rdx, rcx
00409dcfmov [rax], rdx
00409dd2mov rax, [rbp-8]
00409dd6add rax, 104
00409ddamov rdx, [rbp-16]
00409ddeadd rdx, 48
00409de2mov rdx, [rdx]
00409de5movsxd rcx, edx
00409de8mov rdx, [rbp-16]
00409decadd rdx, 56
00409df0mov rdx, [rdx]
00409df3movsxd rdx, edx
00409df6imul rcx, rdx
00409dfamov rdx, [rbp-16]
00409dfeadd rdx, 40
00409e02mov rdx, [rdx]
00409e05movsxd rsi, edx
00409e08mov rdx, [rbp-16]
00409e0cadd rdx, 64
00409e10mov rdx, [rdx]
00409e13movsxd rdx, edx
00409e16imul rdx, rsi
00409e1alea rsi, [rcx+rdx]
00409e1emov rdx, [rbp-16]
00409e22add rdx, 32
00409e26mov rdx, [rdx]
00409e29movsxd rcx, edx
00409e2cmov rdx, [rbp-16]
00409e30add rdx, 72
00409e34mov rdx, [rdx]
00409e37movsxd rdx, edx
00409e3aimul rdx, rcx
00409e3eadd rdx, rsi
00409e41add rdx, rdx
00409e44mov [rax], rdx
00409e47mov rax, [rbp-8]
00409e4badd rax, 112
00409e4fmov rdx, [rbp-16]
00409e53add rdx, 56
00409e57mov rdx, [rdx]
00409e5amovsxd rcx, edx
00409e5dmov rdx, [rbp-16]
00409e61add rdx, 56
00409e65mov rdx, [rdx]
00409e68movsxd rdx, edx
00409e6bimul rcx, rdx
00409e6fmov rdx, [rbp-16]
00409e73add rdx, 48
00409e77mov rdx, [rdx]
00409e7amovsxd rsi, edx
00409e7dmov rdx, [rbp-16]
00409e81add rdx, 64
00409e85mov rdx, [rdx]
00409e88movsxd rdx, edx
00409e8bimul rdx, rsi
00409e8fadd rcx, rdx
00409e92mov rdx, [rbp-16]
00409e96add rdx, 40
00409e9amov rdx, [rdx]
00409e9dmovsxd rdx, edx
00409ea0lea rsi, [rdx+rdx]
00409ea4mov rdx, [rbp-16]
00409ea8add rdx, 72
00409eacmov rdx, [rdx]
00409eafmovsxd rdx, edx
00409eb2imul rdx, rsi
00409eb6add rdx, rcx
00409eb9add rdx, rdx
00409ebcmov [rax], rdx
00409ebfmov rax, [rbp-8]
00409ec3add rax, 120
00409ec7mov rdx, [rbp-16]
00409ecbadd rdx, 56
00409ecfmov rdx, [rdx]
00409ed2movsxd rcx, edx
00409ed5mov rdx, [rbp-16]
00409ed9add rdx, 64
00409eddmov rdx, [rdx]
00409ee0movsxd rdx, edx
00409ee3imul rcx, rdx
00409ee7mov rdx, [rbp-16]
00409eebadd rdx, 48
00409eefmov rdx, [rdx]
00409ef2movsxd rsi, edx
00409ef5mov rdx, [rbp-16]
00409ef9add rdx, 72
00409efdmov rdx, [rdx]
00409f00movsxd rdx, edx
00409f03imul rdx, rsi
00409f07add rdx, rcx
00409f0aadd rdx, rdx
00409f0dmov [rax], rdx
00409f10mov rax, [rbp-8]
00409f14sub rax, -128
00409f18mov rdx, [rbp-16]
00409f1cadd rdx, 64
00409f20mov rdx, [rdx]
00409f23movsxd rcx, edx
00409f26mov rdx, [rbp-16]
00409f2aadd rdx, 64
00409f2emov rdx, [rdx]
00409f31movsxd rdx, edx
00409f34imul rcx, rdx
00409f38mov rdx, [rbp-16]
00409f3cadd rdx, 56
00409f40mov rdx, [rdx]
00409f43movsxd rdx, edx
00409f46lea rsi, [4*rdx]
00409f4emov rdx, [rbp-16]
00409f52add rdx, 72
00409f56mov rdx, [rdx]
00409f59movsxd rdx, edx
00409f5cimul rdx, rsi
00409f60add rdx, rcx
00409f63mov [rax], rdx
00409f66mov rax, [rbp-8]
00409f6alea rdx, [rax+136]
00409f71mov rax, [rbp-16]
00409f75add rax, 64
00409f79mov rax, [rax]
00409f7ccdqe
00409f7elea rcx, [rax+rax]
00409f82mov rax, [rbp-16]
00409f86add rax, 72
00409f8amov rax, [rax]
00409f8dcdqe
00409f8fimul rax, rcx
00409f93mov [rdx], rax
00409f96mov rax, [rbp-8]
00409f9aadd rax, 144
00409fa0mov rdx, [rbp-16]
00409fa4add rdx, 72
00409fa8mov rdx, [rdx]
00409fabmovsxd rcx, edx
00409faemov rdx, [rbp-16]
00409fb2add rdx, 72
00409fb6mov rdx, [rdx]
00409fb9movsxd rdx, edx
00409fbcimul rdx, rcx
00409fc0add rdx, rdx
00409fc3mov [rax], rdx
00409fc6pop rbp
00409fc7ret
0040978b
00409fc8
00409fc8fsquare:
00409fc8push rbp
00409fc9mov rbp, rsp
00409fccsub rsp, 176
00409fd3mov [rbp-168], rdi
00409fdamov [rbp-176], rsi
00409fe1mov rdx, [rbp-176]
00409fe8lea rax, [rbp-160]
00409fefmov rsi, rdx
00409ff2mov rdi, rax
00409ff5call fsquare_inner
00409ffalea rax, [rbp-160]
0040a001mov rdi, rax
0040a004call freduce_degree
0040a009lea rax, [rbp-160]
0040a010mov rdi, rax
0040a013call freduce_coefficients
0040a018lea rdx, [rbp-160]
0040a01fmov rax, [rbp-168]
0040a026mov rcx, [rdx]
0040a029mov [rax], rcx
0040a02cmov rcx, [rdx+8]
0040a030mov [rax+8], rcx
0040a034mov rcx, [rdx+16]
0040a038mov [rax+16], rcx
0040a03cmov rcx, [rdx+24]
0040a040mov [rax+24], rcx
0040a044mov rcx, [rdx+32]
0040a048mov [rax+32], rcx
0040a04cmov rcx, [rdx+40]
0040a050mov [rax+40], rcx
0040a054mov rcx, [rdx+48]
0040a058mov [rax+48], rcx
0040a05cmov rcx, [rdx+56]
0040a060mov [rax+56], rcx
0040a064mov rcx, [rdx+64]
0040a068mov [rax+64], rcx
0040a06cmov rdx, [rdx+72]
0040a070mov [rax+72], rdx
0040a074leave
0040a075ret
00409fc8
00409fc8fsquare:
00409fc8push rbp
00409fc9mov rbp, rsp
00409fccsub rsp, 176
00409fd3mov [rbp-168], rdi
00409fdamov [rbp-176], rsi
00409fe1mov rdx, [rbp-176]
00409fe8lea rax, [rbp-160]
00409fefmov rsi, rdx
00409ff2mov rdi, rax
00409ff5call fsquare_inner
00409ffalea rax, [rbp-160]
0040a001mov rdi, rax
0040a004call freduce_degree
0040a009lea rax, [rbp-160]
0040a010mov rdi, rax
0040a013call freduce_coefficients
0040a018lea rdx, [rbp-160]
0040a01fmov rax, [rbp-168]
0040a026mov rcx, [rdx]
0040a029mov [rax], rcx
0040a02cmov rcx, [rdx+8]
0040a030mov [rax+8], rcx
0040a034mov rcx, [rdx+16]
0040a038mov [rax+16], rcx
0040a03cmov rcx, [rdx+24]
0040a040mov [rax+24], rcx
0040a044mov rcx, [rdx+32]
0040a048mov [rax+32], rcx
0040a04cmov rcx, [rdx+40]
0040a050mov [rax+40], rcx
0040a054mov rcx, [rdx+48]
0040a058mov [rax+48], rcx
0040a05cmov rcx, [rdx+56]
0040a060mov [rax+56], rcx
0040a064mov rcx, [rdx+64]
0040a068mov [rax+64], rcx
0040a06cmov rdx, [rdx+72]
0040a070mov [rax+72], rdx
0040a074leave
0040a075ret
00409fc8
0040a076
0040a076fexpand:
0040a076push rbp
0040a077mov rbp, rsp
0040a07amov [rbp-8], rdi
0040a07emov [rbp-16], rsi
0040a082mov rax, [rbp-16]
0040a086movzx eax, [rax]
0040a089movzx eax, al
0040a08cmov rdx, [rbp-16]
0040a090add rdx, 1
0040a094movzx edx, [rdx]
0040a097movzx edx, dl
0040a09ashl rdx, 8
0040a09eor rdx, rax
0040a0a1mov rax, [rbp-16]
0040a0a5add rax, 2
0040a0a9movzx eax, [rax]
0040a0acmovzx eax, al
0040a0afshl rax, 16
0040a0b3or rdx, rax
0040a0b6mov rax, [rbp-16]
0040a0baadd rax, 3
0040a0bemovzx eax, [rax]
0040a0c1movzx eax, al
0040a0c4shl rax, 24
0040a0c8or rax, rdx
0040a0cbmov rdx, rax
0040a0ceand edx, 0x3ffffff
0040a0d4mov rax, [rbp-8]
0040a0d8mov [rax], rdx
0040a0dbmov rax, [rbp-8]
0040a0dfadd rax, 8
0040a0e3mov rdx, [rbp-16]
0040a0e7add rdx, 3
0040a0ebmovzx edx, [rdx]
0040a0eemovzx edx, dl
0040a0f1mov rcx, [rbp-16]
0040a0f5add rcx, 4
0040a0f9movzx ecx, [rcx]
0040a0fcmovzx ecx, cl
0040a0ffshl rcx, 8
0040a103or rcx, rdx
0040a106mov rdx, [rbp-16]
0040a10aadd rdx, 5
0040a10emovzx edx, [rdx]
0040a111movzx edx, dl
0040a114shl rdx, 16
0040a118or rcx, rdx
0040a11bmov rdx, [rbp-16]
0040a11fadd rdx, 6
0040a123movzx edx, [rdx]
0040a126movzx edx, dl
0040a129shl rdx, 24
0040a12dor rdx, rcx
0040a130sar rdx, 2
0040a134and edx, 0x1ffffff
0040a13amov [rax], rdx
0040a13dmov rax, [rbp-8]
0040a141add rax, 16
0040a145mov rdx, [rbp-16]
0040a149add rdx, 6
0040a14dmovzx edx, [rdx]
0040a150movzx edx, dl
0040a153mov rcx, [rbp-16]
0040a157add rcx, 7
0040a15bmovzx ecx, [rcx]
0040a15emovzx ecx, cl
0040a161shl rcx, 8
0040a165or rcx, rdx
0040a168mov rdx, [rbp-16]
0040a16cadd rdx, 8
0040a170movzx edx, [rdx]
0040a173movzx edx, dl
0040a176shl rdx, 16
0040a17aor rcx, rdx
0040a17dmov rdx, [rbp-16]
0040a181add rdx, 9
0040a185movzx edx, [rdx]
0040a188movzx edx, dl
0040a18bshl rdx, 24
0040a18for rdx, rcx
0040a192sar rdx, 3
0040a196and edx, 0x3ffffff
0040a19cmov [rax], rdx
0040a19fmov rax, [rbp-8]
0040a1a3add rax, 24
0040a1a7mov rdx, [rbp-16]
0040a1abadd rdx, 9
0040a1afmovzx edx, [rdx]
0040a1b2movzx edx, dl
0040a1b5mov rcx, [rbp-16]
0040a1b9add rcx, 10
0040a1bdmovzx ecx, [rcx]
0040a1c0movzx ecx, cl
0040a1c3shl rcx, 8
0040a1c7or rcx, rdx
0040a1camov rdx, [rbp-16]
0040a1ceadd rdx, 11
0040a1d2movzx edx, [rdx]
0040a1d5movzx edx, dl
0040a1d8shl rdx, 16
0040a1dcor rcx, rdx
0040a1dfmov rdx, [rbp-16]
0040a1e3add rdx, 12
0040a1e7movzx edx, [rdx]
0040a1eamovzx edx, dl
0040a1edshl rdx, 24
0040a1f1or rdx, rcx
0040a1f4sar rdx, 5
0040a1f8and edx, 0x1ffffff
0040a1femov [rax], rdx
0040a201mov rax, [rbp-8]
0040a205add rax, 32
0040a209mov rdx, [rbp-16]
0040a20dadd rdx, 12
0040a211movzx edx, [rdx]
0040a214movzx edx, dl
0040a217mov rcx, [rbp-16]
0040a21badd rcx, 13
0040a21fmovzx ecx, [rcx]
0040a222movzx ecx, cl
0040a225shl rcx, 8
0040a229or rcx, rdx
0040a22cmov rdx, [rbp-16]
0040a230add rdx, 14
0040a234movzx edx, [rdx]
0040a237movzx edx, dl
0040a23ashl rdx, 16
0040a23eor rcx, rdx
0040a241mov rdx, [rbp-16]
0040a245add rdx, 15
0040a249movzx edx, [rdx]
0040a24cmovzx edx, dl
0040a24fshl rdx, 24
0040a253or rdx, rcx
0040a256sar rdx, 6
0040a25aand edx, 0x3ffffff
0040a260mov [rax], rdx
0040a263mov rax, [rbp-8]
0040a267add rax, 40
0040a26bmov rdx, [rbp-16]
0040a26fadd rdx, 16
0040a273movzx edx, [rdx]
0040a276movzx edx, dl
0040a279mov rcx, [rbp-16]
0040a27dadd rcx, 17
0040a281movzx ecx, [rcx]
0040a284movzx ecx, cl
0040a287shl rcx, 8
0040a28bor rcx, rdx
0040a28emov rdx, [rbp-16]
0040a292add rdx, 18
0040a296movzx edx, [rdx]
0040a299movzx edx, dl
0040a29cshl rdx, 16
0040a2a0or rcx, rdx
0040a2a3mov rdx, [rbp-16]
0040a2a7add rdx, 19
0040a2abmovzx edx, [rdx]
0040a2aemovzx edx, dl
0040a2b1shl rdx, 24
0040a2b5or rdx, rcx
0040a2b8and edx, 0x1ffffff
0040a2bemov [rax], rdx
0040a2c1mov rax, [rbp-8]
0040a2c5add rax, 48
0040a2c9mov rdx, [rbp-16]
0040a2cdadd rdx, 19
0040a2d1movzx edx, [rdx]
0040a2d4movzx edx, dl
0040a2d7mov rcx, [rbp-16]
0040a2dbadd rcx, 20
0040a2dfmovzx ecx, [rcx]
0040a2e2movzx ecx, cl
0040a2e5shl rcx, 8
0040a2e9or rcx, rdx
0040a2ecmov rdx, [rbp-16]
0040a2f0add rdx, 21
0040a2f4movzx edx, [rdx]
0040a2f7movzx edx, dl
0040a2fashl rdx, 16
0040a2feor rcx, rdx
0040a301mov rdx, [rbp-16]
0040a305add rdx, 22
0040a309movzx edx, [rdx]
0040a30cmovzx edx, dl
0040a30fshl rdx, 24
0040a313or rdx, rcx
0040a316sar rdx, 1
0040a319and edx, 0x3ffffff
0040a31fmov [rax], rdx
0040a322mov rax, [rbp-8]
0040a326add rax, 56
0040a32amov rdx, [rbp-16]
0040a32eadd rdx, 22
0040a332movzx edx, [rdx]
0040a335movzx edx, dl
0040a338mov rcx, [rbp-16]
0040a33cadd rcx, 23
0040a340movzx ecx, [rcx]
0040a343movzx ecx, cl
0040a346shl rcx, 8
0040a34aor rcx, rdx
0040a34dmov rdx, [rbp-16]
0040a351add rdx, 24
0040a355movzx edx, [rdx]
0040a358movzx edx, dl
0040a35bshl rdx, 16
0040a35for rcx, rdx
0040a362mov rdx, [rbp-16]
0040a366add rdx, 25
0040a36amovzx edx, [rdx]
0040a36dmovzx edx, dl
0040a370shl rdx, 24
0040a374or rdx, rcx
0040a377sar rdx, 3
0040a37band edx, 0x1ffffff
0040a381mov [rax], rdx
0040a384mov rax, [rbp-8]
0040a388add rax, 64
0040a38cmov rdx, [rbp-16]
0040a390add rdx, 25
0040a394movzx edx, [rdx]
0040a397movzx edx, dl
0040a39amov rcx, [rbp-16]
0040a39eadd rcx, 26
0040a3a2movzx ecx, [rcx]
0040a3a5movzx ecx, cl
0040a3a8shl rcx, 8
0040a3acor rcx, rdx
0040a3afmov rdx, [rbp-16]
0040a3b3add rdx, 27
0040a3b7movzx edx, [rdx]
0040a3bamovzx edx, dl
0040a3bdshl rdx, 16
0040a3c1or rcx, rdx
0040a3c4mov rdx, [rbp-16]
0040a3c8add rdx, 28
0040a3ccmovzx edx, [rdx]
0040a3cfmovzx edx, dl
0040a3d2shl rdx, 24
0040a3d6or rdx, rcx
0040a3d9sar rdx, 4
0040a3ddand edx, 0x3ffffff
0040a3e3mov [rax], rdx
0040a3e6mov rax, [rbp-8]
0040a3eaadd rax, 72
0040a3eemov rdx, [rbp-16]
0040a3f2add rdx, 28
0040a3f6movzx edx, [rdx]
0040a3f9movzx edx, dl
0040a3fcmov rcx, [rbp-16]
0040a400add rcx, 29
0040a404movzx ecx, [rcx]
0040a407movzx ecx, cl
0040a40ashl rcx, 8
0040a40eor rcx, rdx
0040a411mov rdx, [rbp-16]
0040a415add rdx, 30
0040a419movzx edx, [rdx]
0040a41cmovzx edx, dl
0040a41fshl rdx, 16
0040a423or rcx, rdx
0040a426mov rdx, [rbp-16]
0040a42aadd rdx, 31
0040a42emovzx edx, [rdx]
0040a431movzx edx, dl
0040a434shl rdx, 24
0040a438or rdx, rcx
0040a43bsar rdx, 6
0040a43fand edx, 0x1ffffff
0040a445mov [rax], rdx
0040a448pop rbp
0040a449ret
0040a076
0040a076fexpand:
0040a076push rbp
0040a077mov rbp, rsp
0040a07amov [rbp-8], rdi
0040a07emov [rbp-16], rsi
0040a082mov rax, [rbp-16]
0040a086movzx eax, [rax]
0040a089movzx eax, al
0040a08cmov rdx, [rbp-16]
0040a090add rdx, 1
0040a094movzx edx, [rdx]
0040a097movzx edx, dl
0040a09ashl rdx, 8
0040a09eor rdx, rax
0040a0a1mov rax, [rbp-16]
0040a0a5add rax, 2
0040a0a9movzx eax, [rax]
0040a0acmovzx eax, al
0040a0afshl rax, 16
0040a0b3or rdx, rax
0040a0b6mov rax, [rbp-16]
0040a0baadd rax, 3
0040a0bemovzx eax, [rax]
0040a0c1movzx eax, al
0040a0c4shl rax, 24
0040a0c8or rax, rdx
0040a0cbmov rdx, rax
0040a0ceand edx, 0x3ffffff
0040a0d4mov rax, [rbp-8]
0040a0d8mov [rax], rdx
0040a0dbmov rax, [rbp-8]
0040a0dfadd rax, 8
0040a0e3mov rdx, [rbp-16]
0040a0e7add rdx, 3
0040a0ebmovzx edx, [rdx]
0040a0eemovzx edx, dl
0040a0f1mov rcx, [rbp-16]
0040a0f5add rcx, 4
0040a0f9movzx ecx, [rcx]
0040a0fcmovzx ecx, cl
0040a0ffshl rcx, 8
0040a103or rcx, rdx
0040a106mov rdx, [rbp-16]
0040a10aadd rdx, 5
0040a10emovzx edx, [rdx]
0040a111movzx edx, dl
0040a114shl rdx, 16
0040a118or rcx, rdx
0040a11bmov rdx, [rbp-16]
0040a11fadd rdx, 6
0040a123movzx edx, [rdx]
0040a126movzx edx, dl
0040a129shl rdx, 24
0040a12dor rdx, rcx
0040a130sar rdx, 2
0040a134and edx, 0x1ffffff
0040a13amov [rax], rdx
0040a13dmov rax, [rbp-8]
0040a141add rax, 16
0040a145mov rdx, [rbp-16]
0040a149add rdx, 6
0040a14dmovzx edx, [rdx]
0040a150movzx edx, dl
0040a153mov rcx, [rbp-16]
0040a157add rcx, 7
0040a15bmovzx ecx, [rcx]
0040a15emovzx ecx, cl
0040a161shl rcx, 8
0040a165or rcx, rdx
0040a168mov rdx, [rbp-16]
0040a16cadd rdx, 8
0040a170movzx edx, [rdx]
0040a173movzx edx, dl
0040a176shl rdx, 16
0040a17aor rcx, rdx
0040a17dmov rdx, [rbp-16]
0040a181add rdx, 9
0040a185movzx edx, [rdx]
0040a188movzx edx, dl
0040a18bshl rdx, 24
0040a18for rdx, rcx
0040a192sar rdx, 3
0040a196and edx, 0x3ffffff
0040a19cmov [rax], rdx
0040a19fmov rax, [rbp-8]
0040a1a3add rax, 24
0040a1a7mov rdx, [rbp-16]
0040a1abadd rdx, 9
0040a1afmovzx edx, [rdx]
0040a1b2movzx edx, dl
0040a1b5mov rcx, [rbp-16]
0040a1b9add rcx, 10
0040a1bdmovzx ecx, [rcx]
0040a1c0movzx ecx, cl
0040a1c3shl rcx, 8
0040a1c7or rcx, rdx
0040a1camov rdx, [rbp-16]
0040a1ceadd rdx, 11
0040a1d2movzx edx, [rdx]
0040a1d5movzx edx, dl
0040a1d8shl rdx, 16
0040a1dcor rcx, rdx
0040a1dfmov rdx, [rbp-16]
0040a1e3add rdx, 12
0040a1e7movzx edx, [rdx]
0040a1eamovzx edx, dl
0040a1edshl rdx, 24
0040a1f1or rdx, rcx
0040a1f4sar rdx, 5
0040a1f8and edx, 0x1ffffff
0040a1femov [rax], rdx
0040a201mov rax, [rbp-8]
0040a205add rax, 32
0040a209mov rdx, [rbp-16]
0040a20dadd rdx, 12
0040a211movzx edx, [rdx]
0040a214movzx edx, dl
0040a217mov rcx, [rbp-16]
0040a21badd rcx, 13
0040a21fmovzx ecx, [rcx]
0040a222movzx ecx, cl
0040a225shl rcx, 8
0040a229or rcx, rdx
0040a22cmov rdx, [rbp-16]
0040a230add rdx, 14
0040a234movzx edx, [rdx]
0040a237movzx edx, dl
0040a23ashl rdx, 16
0040a23eor rcx, rdx
0040a241mov rdx, [rbp-16]
0040a245add rdx, 15
0040a249movzx edx, [rdx]
0040a24cmovzx edx, dl
0040a24fshl rdx, 24
0040a253or rdx, rcx
0040a256sar rdx, 6
0040a25aand edx, 0x3ffffff
0040a260mov [rax], rdx
0040a263mov rax, [rbp-8]
0040a267add rax, 40
0040a26bmov rdx, [rbp-16]
0040a26fadd rdx, 16
0040a273movzx edx, [rdx]
0040a276movzx edx, dl
0040a279mov rcx, [rbp-16]
0040a27dadd rcx, 17
0040a281movzx ecx, [rcx]
0040a284movzx ecx, cl
0040a287shl rcx, 8
0040a28bor rcx, rdx
0040a28emov rdx, [rbp-16]
0040a292add rdx, 18
0040a296movzx edx, [rdx]
0040a299movzx edx, dl
0040a29cshl rdx, 16
0040a2a0or rcx, rdx
0040a2a3mov rdx, [rbp-16]
0040a2a7add rdx, 19
0040a2abmovzx edx, [rdx]
0040a2aemovzx edx, dl
0040a2b1shl rdx, 24
0040a2b5or rdx, rcx
0040a2b8and edx, 0x1ffffff
0040a2bemov [rax], rdx
0040a2c1mov rax, [rbp-8]
0040a2c5add rax, 48
0040a2c9mov rdx, [rbp-16]
0040a2cdadd rdx, 19
0040a2d1movzx edx, [rdx]
0040a2d4movzx edx, dl
0040a2d7mov rcx, [rbp-16]
0040a2dbadd rcx, 20
0040a2dfmovzx ecx, [rcx]
0040a2e2movzx ecx, cl
0040a2e5shl rcx, 8
0040a2e9or rcx, rdx
0040a2ecmov rdx, [rbp-16]
0040a2f0add rdx, 21
0040a2f4movzx edx, [rdx]
0040a2f7movzx edx, dl
0040a2fashl rdx, 16
0040a2feor rcx, rdx
0040a301mov rdx, [rbp-16]
0040a305add rdx, 22
0040a309movzx edx, [rdx]
0040a30cmovzx edx, dl
0040a30fshl rdx, 24
0040a313or rdx, rcx
0040a316sar rdx, 1
0040a319and edx, 0x3ffffff
0040a31fmov [rax], rdx
0040a322mov rax, [rbp-8]
0040a326add rax, 56
0040a32amov rdx, [rbp-16]
0040a32eadd rdx, 22
0040a332movzx edx, [rdx]
0040a335movzx edx, dl
0040a338mov rcx, [rbp-16]
0040a33cadd rcx, 23
0040a340movzx ecx, [rcx]
0040a343movzx ecx, cl
0040a346shl rcx, 8
0040a34aor rcx, rdx
0040a34dmov rdx, [rbp-16]
0040a351add rdx, 24
0040a355movzx edx, [rdx]
0040a358movzx edx, dl
0040a35bshl rdx, 16
0040a35for rcx, rdx
0040a362mov rdx, [rbp-16]
0040a366add rdx, 25
0040a36amovzx edx, [rdx]
0040a36dmovzx edx, dl
0040a370shl rdx, 24
0040a374or rdx, rcx
0040a377sar rdx, 3
0040a37band edx, 0x1ffffff
0040a381mov [rax], rdx
0040a384mov rax, [rbp-8]
0040a388add rax, 64
0040a38cmov rdx, [rbp-16]
0040a390add rdx, 25
0040a394movzx edx, [rdx]
0040a397movzx edx, dl
0040a39amov rcx, [rbp-16]
0040a39eadd rcx, 26
0040a3a2movzx ecx, [rcx]
0040a3a5movzx ecx, cl
0040a3a8shl rcx, 8
0040a3acor rcx, rdx
0040a3afmov rdx, [rbp-16]
0040a3b3add rdx, 27
0040a3b7movzx edx, [rdx]
0040a3bamovzx edx, dl
0040a3bdshl rdx, 16
0040a3c1or rcx, rdx
0040a3c4mov rdx, [rbp-16]
0040a3c8add rdx, 28
0040a3ccmovzx edx, [rdx]
0040a3cfmovzx edx, dl
0040a3d2shl rdx, 24
0040a3d6or rdx, rcx
0040a3d9sar rdx, 4
0040a3ddand edx, 0x3ffffff
0040a3e3mov [rax], rdx
0040a3e6mov rax, [rbp-8]
0040a3eaadd rax, 72
0040a3eemov rdx, [rbp-16]
0040a3f2add rdx, 28
0040a3f6movzx edx, [rdx]
0040a3f9movzx edx, dl
0040a3fcmov rcx, [rbp-16]
0040a400add rcx, 29
0040a404movzx ecx, [rcx]
0040a407movzx ecx, cl
0040a40ashl rcx, 8
0040a40eor rcx, rdx
0040a411mov rdx, [rbp-16]
0040a415add rdx, 30
0040a419movzx edx, [rdx]
0040a41cmovzx edx, dl
0040a41fshl rdx, 16
0040a423or rcx, rdx
0040a426mov rdx, [rbp-16]
0040a42aadd rdx, 31
0040a42emovzx edx, [rdx]
0040a431movzx edx, dl
0040a434shl rdx, 24
0040a438or rdx, rcx
0040a43bsar rdx, 6
0040a43fand edx, 0x1ffffff
0040a445mov [rax], rdx
0040a448pop rbp
0040a449ret
0040a076
0040a44a
0040a44as32_eq:
0040a44apush rbp
0040a44bmov rbp, rsp
0040a44emov [rbp-4], edi
0040a451mov [rbp-8], esi
0040a454mov eax, [rbp-8]
0040a457mov edx, [rbp-4]
0040a45axor eax, edx
0040a45cnot eax
0040a45emov [rbp-4], eax
0040a461mov eax, [rbp-4]
0040a464shl eax, 16
0040a467and [rbp-4], eax
0040a46amov eax, [rbp-4]
0040a46dshl eax, 8
0040a470and [rbp-4], eax
0040a473mov eax, [rbp-4]
0040a476shl eax, 4
0040a479and [rbp-4], eax
0040a47cmov eax, [rbp-4]
0040a47fshl eax, 2
0040a482and [rbp-4], eax
0040a485mov eax, [rbp-4]
0040a488add eax, eax
0040a48aand [rbp-4], eax
0040a48dmov eax, [rbp-4]
0040a490sar eax, 31
0040a493pop rbp
0040a494ret
0040a44a
0040a44as32_eq:
0040a44apush rbp
0040a44bmov rbp, rsp
0040a44emov [rbp-4], edi
0040a451mov [rbp-8], esi
0040a454mov eax, [rbp-8]
0040a457mov edx, [rbp-4]
0040a45axor eax, edx
0040a45cnot eax
0040a45emov [rbp-4], eax
0040a461mov eax, [rbp-4]
0040a464shl eax, 16
0040a467and [rbp-4], eax
0040a46amov eax, [rbp-4]
0040a46dshl eax, 8
0040a470and [rbp-4], eax
0040a473mov eax, [rbp-4]
0040a476shl eax, 4
0040a479and [rbp-4], eax
0040a47cmov eax, [rbp-4]
0040a47fshl eax, 2
0040a482and [rbp-4], eax
0040a485mov eax, [rbp-4]
0040a488add eax, eax
0040a48aand [rbp-4], eax
0040a48dmov eax, [rbp-4]
0040a490sar eax, 31
0040a493pop rbp
0040a494ret
0040a44a
0040a495
0040a495s32_gte:
0040a495push rbp
0040a496mov rbp, rsp
0040a499mov [rbp-4], edi
0040a49cmov [rbp-8], esi
0040a49fmov eax, [rbp-8]
0040a4a2sub [rbp-4], eax
0040a4a5mov eax, [rbp-4]
0040a4a8sar eax, 31
0040a4abnot eax
0040a4adpop rbp
0040a4aeret
0040a495
0040a495s32_gte:
0040a495push rbp
0040a496mov rbp, rsp
0040a499mov [rbp-4], edi
0040a49cmov [rbp-8], esi
0040a49fmov eax, [rbp-8]
0040a4a2sub [rbp-4], eax
0040a4a5mov eax, [rbp-4]
0040a4a8sar eax, 31
0040a4abnot eax
0040a4adpop rbp
0040a4aeret
0040a495
0040a4af
0040a4affcontract:
0040a4afpush rbp
0040a4b0mov rbp, rsp
0040a4b3sub rsp, 112
0040a4b7mov [rbp-104], rdi
0040a4bbmov [rbp-112], rsi
0040a4bfmov [rbp-4], 0
0040a4c6jmp 0x40a4e7
0040a4c8
0040a4c8loc_40a4c8:
0040a4c8mov eax, [rbp-4]
0040a4cbcdqe
0040a4cdshl rax, 3
0040a4d1add rax, [rbp-112]
0040a4d5mov rax, [rax]
0040a4d8mov edx, eax
0040a4damov eax, [rbp-4]
0040a4ddcdqe
0040a4dfmov [rbp+4*rax-96], edx
0040a4e3add [rbp-4], 1
0040a4e7
0040a4e7loc_40a4e7:
0040a4e7cmp [rbp-4], 9
0040a4ebjle 0x40a4c8
0040a4edmov [rbp-8], 0
0040a4f4jmp 0x40a60c
0040a4f9
0040a4f9loc_40a4f9:
0040a4f9mov [rbp-4], 0
0040a500jmp 0x40a5cb
0040a505
0040a505loc_40a505:
0040a505mov eax, [rbp-4]
0040a508and eax, 1
0040a50btest al, al
0040a50dje 0x40a56c
0040a50fmov eax, [rbp-4]
0040a512cdqe
0040a514mov eax, [rbp+4*rax-96]
0040a518sar eax, 31
0040a51bmov [rbp-16], eax
0040a51emov eax, [rbp-4]
0040a521cdqe
0040a523mov eax, [rbp+4*rax-96]
0040a527and eax, [rbp-16]
0040a52asar eax, 25
0040a52dneg eax
0040a52fmov [rbp-20], eax
0040a532mov eax, [rbp-4]
0040a535cdqe
0040a537mov eax, [rbp+4*rax-96]
0040a53bmov edx, [rbp-20]
0040a53eshl edx, 25
0040a541add edx, eax
0040a543mov eax, [rbp-4]
0040a546cdqe
0040a548mov [rbp+4*rax-96], edx
0040a54cmov eax, [rbp-4]
0040a54flea ecx, [rax+1]
0040a552mov eax, [rbp-4]
0040a555add eax, 1
0040a558cdqe
0040a55amov eax, [rbp+4*rax-96]
0040a55emov edx, eax
0040a560sub edx, [rbp-20]
0040a563movsxd rax, ecx
0040a566mov [rbp+4*rax-96], edx
0040a56ajmp 0x40a5c7
0040a56c
0040a56cloc_40a56c:
0040a56cmov eax, [rbp-4]
0040a56fcdqe
0040a571mov eax, [rbp+4*rax-96]
0040a575sar eax, 31
0040a578mov [rbp-24], eax
0040a57bmov eax, [rbp-4]
0040a57ecdqe
0040a580mov eax, [rbp+4*rax-96]
0040a584and eax, [rbp-24]
0040a587sar eax, 26
0040a58aneg eax
0040a58cmov [rbp-28], eax
0040a58fmov eax, [rbp-4]
0040a592cdqe
0040a594mov eax, [rbp+4*rax-96]
0040a598mov edx, [rbp-28]
0040a59bshl edx, 26
0040a59eadd edx, eax
0040a5a0mov eax, [rbp-4]
0040a5a3cdqe
0040a5a5mov [rbp+4*rax-96], edx
0040a5a9mov eax, [rbp-4]
0040a5aclea ecx, [rax+1]
0040a5afmov eax, [rbp-4]
0040a5b2add eax, 1
0040a5b5cdqe
0040a5b7mov eax, [rbp+4*rax-96]
0040a5bbmov edx, eax
0040a5bdsub edx, [rbp-28]
0040a5c0movsxd rax, ecx
0040a5c3mov [rbp+4*rax-96], edx
0040a5c7
0040a5c7loc_40a5c7:
0040a5c7add [rbp-4], 1
0040a5cb
0040a5cbloc_40a5cb:
0040a5cbcmp [rbp-4], 8
0040a5cfjle 0x40a505
0040a5d5mov eax, [rbp-60]
0040a5d8sar eax, 31
0040a5dbmov [rbp-32], eax
0040a5demov eax, [rbp-60]
0040a5e1and eax, [rbp-32]
0040a5e4sar eax, 25
0040a5e7neg eax
0040a5e9mov [rbp-36], eax
0040a5ecmov eax, [rbp-60]
0040a5efmov edx, [rbp-36]
0040a5f2shl edx, 25
0040a5f5add eax, edx
0040a5f7mov [rbp-60], eax
0040a5famov edx, [rbp-96]
0040a5fdmov eax, [rbp-36]
0040a600imul eax, eax, -19
0040a603add eax, edx
0040a605mov [rbp-96], eax
0040a608add [rbp-8], 1
0040a60c
0040a60cloc_40a60c:
0040a60ccmp [rbp-8], 1
0040a610jle 0x40a4f9
0040a616mov eax, [rbp-96]
0040a619sar eax, 31
0040a61cmov [rbp-40], eax
0040a61fmov eax, [rbp-96]
0040a622and eax, [rbp-40]
0040a625sar eax, 26
0040a628neg eax
0040a62amov [rbp-44], eax
0040a62dmov eax, [rbp-96]
0040a630mov edx, [rbp-44]
0040a633shl edx, 26
0040a636add eax, edx
0040a638mov [rbp-96], eax
0040a63bmov eax, [rbp-92]
0040a63esub eax, [rbp-44]
0040a641mov [rbp-92], eax
0040a644mov [rbp-8], 0
0040a64bjmp 0x40a732
0040a650
0040a650loc_40a650:
0040a650mov [rbp-4], 0
0040a657jmp 0x40a6fa
0040a65c
0040a65cloc_40a65c:
0040a65cmov eax, [rbp-4]
0040a65fand eax, 1
0040a662test al, al
0040a664je 0x40a6af
0040a666mov eax, [rbp-4]
0040a669cdqe
0040a66bmov eax, [rbp+4*rax-96]
0040a66fsar eax, 25
0040a672mov [rbp-48], eax
0040a675mov eax, [rbp-4]
0040a678cdqe
0040a67amov eax, [rbp+4*rax-96]
0040a67emov edx, eax
0040a680and edx, 0x1ffffff
0040a686mov eax, [rbp-4]
0040a689cdqe
0040a68bmov [rbp+4*rax-96], edx
0040a68fmov eax, [rbp-4]
0040a692lea ecx, [rax+1]
0040a695mov eax, [rbp-4]
0040a698add eax, 1
0040a69bcdqe
0040a69dmov eax, [rbp+4*rax-96]
0040a6a1mov edx, eax
0040a6a3add edx, [rbp-48]
0040a6a6movsxd rax, ecx
0040a6a9mov [rbp+4*rax-96], edx
0040a6adjmp 0x40a6f6
0040a6af
0040a6afloc_40a6af:
0040a6afmov eax, [rbp-4]
0040a6b2cdqe
0040a6b4mov eax, [rbp+4*rax-96]
0040a6b8sar eax, 26
0040a6bbmov [rbp-52], eax
0040a6bemov eax, [rbp-4]
0040a6c1cdqe
0040a6c3mov eax, [rbp+4*rax-96]
0040a6c7mov edx, eax
0040a6c9and edx, 0x3ffffff
0040a6cfmov eax, [rbp-4]
0040a6d2cdqe
0040a6d4mov [rbp+4*rax-96], edx
0040a6d8mov eax, [rbp-4]
0040a6dblea ecx, [rax+1]
0040a6demov eax, [rbp-4]
0040a6e1add eax, 1
0040a6e4cdqe
0040a6e6mov eax, [rbp+4*rax-96]
0040a6eamov edx, eax
0040a6ecadd edx, [rbp-52]
0040a6efmovsxd rax, ecx
0040a6f2mov [rbp+4*rax-96], edx
0040a6f6
0040a6f6loc_40a6f6:
0040a6f6add [rbp-4], 1
0040a6fa
0040a6faloc_40a6fa:
0040a6facmp [rbp-4], 8
0040a6fejle 0x40a65c
0040a704mov eax, [rbp-60]
0040a707sar eax, 25
0040a70amov [rbp-56], eax
0040a70dmov eax, [rbp-60]
0040a710and eax, 0x1ffffff
0040a715mov [rbp-60], eax
0040a718mov ecx, [rbp-96]
0040a71bmov edx, [rbp-56]
0040a71emov eax, edx
0040a720shl eax, 3
0040a723add eax, edx
0040a725add eax, eax
0040a727add eax, edx
0040a729add eax, ecx
0040a72bmov [rbp-96], eax
0040a72eadd [rbp-8], 1
0040a732
0040a732loc_40a732:
0040a732cmp [rbp-8], 1
0040a736jle 0x40a650
0040a73cmov eax, [rbp-96]
0040a73fmov esi, 0x3ffffed
0040a744mov edi, eax
0040a746call s32_gte
0040a74bmov [rbp-12], eax
0040a74emov [rbp-4], 1
0040a755jmp 0x40a797
0040a757
0040a757loc_40a757:
0040a757mov eax, [rbp-4]
0040a75aand eax, 1
0040a75dtest al, al
0040a75fje 0x40a77b
0040a761mov eax, [rbp-4]
0040a764cdqe
0040a766mov eax, [rbp+4*rax-96]
0040a76amov esi, 0x1ffffff
0040a76fmov edi, eax
0040a771call s32_eq
0040a776and [rbp-12], eax
0040a779jmp 0x40a793
0040a77b
0040a77bloc_40a77b:
0040a77bmov eax, [rbp-4]
0040a77ecdqe
0040a780mov eax, [rbp+4*rax-96]
0040a784mov esi, 0x3ffffff
0040a789mov edi, eax
0040a78bcall s32_eq
0040a790and [rbp-12], eax
0040a793
0040a793loc_40a793:
0040a793add [rbp-4], 1
0040a797
0040a797loc_40a797:
0040a797cmp [rbp-4], 9
0040a79bjle 0x40a757
0040a79dmov eax, [rbp-96]
0040a7a0mov edx, [rbp-12]
0040a7a3and edx, 0x3ffffed
0040a7a9sub eax, edx
0040a7abmov [rbp-96], eax
0040a7aemov [rbp-4], 1
0040a7b5jmp 0x40a809
0040a7b7
0040a7b7loc_40a7b7:
0040a7b7mov eax, [rbp-4]
0040a7baand eax, 1
0040a7bdtest al, al
0040a7bfje 0x40a7e4
0040a7c1mov eax, [rbp-4]
0040a7c4cdqe
0040a7c6mov eax, [rbp+4*rax-96]
0040a7camov edx, [rbp-12]
0040a7cdand edx, 0x1ffffff
0040a7d3mov ecx, eax
0040a7d5sub ecx, edx
0040a7d7mov edx, ecx
0040a7d9mov eax, [rbp-4]
0040a7dccdqe
0040a7demov [rbp+4*rax-96], edx
0040a7e2jmp 0x40a805
0040a7e4
0040a7e4loc_40a7e4:
0040a7e4mov eax, [rbp-4]
0040a7e7cdqe
0040a7e9mov eax, [rbp+4*rax-96]
0040a7edmov edx, [rbp-12]
0040a7f0and edx, 0x3ffffff
0040a7f6mov ecx, eax
0040a7f8sub ecx, edx
0040a7famov edx, ecx
0040a7fcmov eax, [rbp-4]
0040a7ffcdqe
0040a801mov [rbp+4*rax-96], edx
0040a805
0040a805loc_40a805:
0040a805add [rbp-4], 1
0040a809
0040a809loc_40a809:
0040a809cmp [rbp-4], 9
0040a80djle 0x40a7b7
0040a80fmov eax, [rbp-92]
0040a812shl eax, 2
0040a815mov [rbp-92], eax
0040a818mov eax, [rbp-88]
0040a81bshl eax, 3
0040a81emov [rbp-88], eax
0040a821mov eax, [rbp-84]
0040a824shl eax, 5
0040a827mov [rbp-84], eax
0040a82amov eax, [rbp-80]
0040a82dshl eax, 6
0040a830mov [rbp-80], eax
0040a833mov eax, [rbp-72]
0040a836add eax, eax
0040a838mov [rbp-72], eax
0040a83bmov eax, [rbp-68]
0040a83eshl eax, 3
0040a841mov [rbp-68], eax
0040a844mov eax, [rbp-64]
0040a847shl eax, 4
0040a84amov [rbp-64], eax
0040a84dmov eax, [rbp-60]
0040a850shl eax, 6
0040a853mov [rbp-60], eax
0040a856mov rax, [rbp-104]
0040a85amov [rax], 0
0040a85dmov rax, [rbp-104]
0040a861add rax, 16
0040a865mov [rax], 0
0040a868mov rax, [rbp-104]
0040a86cmovzx eax, [rax]
0040a86fmov edx, eax
0040a871mov eax, [rbp-96]
0040a874or eax, edx
0040a876mov edx, eax
0040a878mov rax, [rbp-104]
0040a87cmov [rax], dl
0040a87emov rax, [rbp-104]
0040a882lea rdx, [rax+1]
0040a886mov eax, [rbp-96]
0040a889sar eax, 8
0040a88cmov [rdx], al
0040a88emov rax, [rbp-104]
0040a892lea rdx, [rax+2]
0040a896mov eax, [rbp-96]
0040a899sar eax, 16
0040a89cmov [rdx], al
0040a89emov rax, [rbp-104]
0040a8a2lea rdx, [rax+3]
0040a8a6mov eax, [rbp-96]
0040a8a9shr eax, 24
0040a8acmov [rdx], al
0040a8aemov rax, [rbp-104]
0040a8b2lea rdx, [rax+3]
0040a8b6mov rax, [rbp-104]
0040a8baadd rax, 3
0040a8bemovzx eax, [rax]
0040a8c1mov ecx, eax
0040a8c3mov eax, [rbp-92]
0040a8c6or eax, ecx
0040a8c8mov [rdx], al
0040a8camov rax, [rbp-104]
0040a8celea rdx, [rax+4]
0040a8d2mov eax, [rbp-92]
0040a8d5sar eax, 8
0040a8d8mov [rdx], al
0040a8damov rax, [rbp-104]
0040a8delea rdx, [rax+5]
0040a8e2mov eax, [rbp-92]
0040a8e5sar eax, 16
0040a8e8mov [rdx], al
0040a8eamov rax, [rbp-104]
0040a8eelea rdx, [rax+6]
0040a8f2mov eax, [rbp-92]
0040a8f5shr eax, 24
0040a8f8mov [rdx], al
0040a8famov rax, [rbp-104]
0040a8felea rdx, [rax+6]
0040a902mov rax, [rbp-104]
0040a906add rax, 6
0040a90amovzx eax, [rax]
0040a90dmov ecx, eax
0040a90fmov eax, [rbp-88]
0040a912or eax, ecx
0040a914mov [rdx], al
0040a916mov rax, [rbp-104]
0040a91alea rdx, [rax+7]
0040a91emov eax, [rbp-88]
0040a921sar eax, 8
0040a924mov [rdx], al
0040a926mov rax, [rbp-104]
0040a92alea rdx, [rax+8]
0040a92emov eax, [rbp-88]
0040a931sar eax, 16
0040a934mov [rdx], al
0040a936mov rax, [rbp-104]
0040a93alea rdx, [rax+9]
0040a93emov eax, [rbp-88]
0040a941shr eax, 24
0040a944mov [rdx], al
0040a946mov rax, [rbp-104]
0040a94alea rdx, [rax+9]
0040a94emov rax, [rbp-104]
0040a952add rax, 9
0040a956movzx eax, [rax]
0040a959mov ecx, eax
0040a95bmov eax, [rbp-84]
0040a95eor eax, ecx
0040a960mov [rdx], al
0040a962mov rax, [rbp-104]
0040a966lea rdx, [rax+10]
0040a96amov eax, [rbp-84]
0040a96dsar eax, 8
0040a970mov [rdx], al
0040a972mov rax, [rbp-104]
0040a976lea rdx, [rax+11]
0040a97amov eax, [rbp-84]
0040a97dsar eax, 16
0040a980mov [rdx], al
0040a982mov rax, [rbp-104]
0040a986lea rdx, [rax+12]
0040a98amov eax, [rbp-84]
0040a98dshr eax, 24
0040a990mov [rdx], al
0040a992mov rax, [rbp-104]
0040a996lea rdx, [rax+12]
0040a99amov rax, [rbp-104]
0040a99eadd rax, 12
0040a9a2movzx eax, [rax]
0040a9a5mov ecx, eax
0040a9a7mov eax, [rbp-80]
0040a9aaor eax, ecx
0040a9acmov [rdx], al
0040a9aemov rax, [rbp-104]
0040a9b2lea rdx, [rax+13]
0040a9b6mov eax, [rbp-80]
0040a9b9sar eax, 8
0040a9bcmov [rdx], al
0040a9bemov rax, [rbp-104]
0040a9c2lea rdx, [rax+14]
0040a9c6mov eax, [rbp-80]
0040a9c9sar eax, 16
0040a9ccmov [rdx], al
0040a9cemov rax, [rbp-104]
0040a9d2lea rdx, [rax+15]
0040a9d6mov eax, [rbp-80]
0040a9d9shr eax, 24
0040a9dcmov [rdx], al
0040a9demov rax, [rbp-104]
0040a9e2lea rdx, [rax+16]
0040a9e6mov rax, [rbp-104]
0040a9eaadd rax, 16
0040a9eemovzx eax, [rax]
0040a9f1mov ecx, eax
0040a9f3mov eax, [rbp-76]
0040a9f6or eax, ecx
0040a9f8mov [rdx], al
0040a9famov rax, [rbp-104]
0040a9felea rdx, [rax+17]
0040aa02mov eax, [rbp-76]
0040aa05sar eax, 8
0040aa08mov [rdx], al
0040aa0amov rax, [rbp-104]
0040aa0elea rdx, [rax+18]
0040aa12mov eax, [rbp-76]
0040aa15sar eax, 16
0040aa18mov [rdx], al
0040aa1amov rax, [rbp-104]
0040aa1elea rdx, [rax+19]
0040aa22mov eax, [rbp-76]
0040aa25shr eax, 24
0040aa28mov [rdx], al
0040aa2amov rax, [rbp-104]
0040aa2elea rdx, [rax+19]
0040aa32mov rax, [rbp-104]
0040aa36add rax, 19
0040aa3amovzx eax, [rax]
0040aa3dmov ecx, eax
0040aa3fmov eax, [rbp-72]
0040aa42or eax, ecx
0040aa44mov [rdx], al
0040aa46mov rax, [rbp-104]
0040aa4alea rdx, [rax+20]
0040aa4emov eax, [rbp-72]
0040aa51sar eax, 8
0040aa54mov [rdx], al
0040aa56mov rax, [rbp-104]
0040aa5alea rdx, [rax+21]
0040aa5emov eax, [rbp-72]
0040aa61sar eax, 16
0040aa64mov [rdx], al
0040aa66mov rax, [rbp-104]
0040aa6alea rdx, [rax+22]
0040aa6emov eax, [rbp-72]
0040aa71shr eax, 24
0040aa74mov [rdx], al
0040aa76mov rax, [rbp-104]
0040aa7alea rdx, [rax+22]
0040aa7emov rax, [rbp-104]
0040aa82add rax, 22
0040aa86movzx eax, [rax]
0040aa89mov ecx, eax
0040aa8bmov eax, [rbp-68]
0040aa8eor eax, ecx
0040aa90mov [rdx], al
0040aa92mov rax, [rbp-104]
0040aa96lea rdx, [rax+23]
0040aa9amov eax, [rbp-68]
0040aa9dsar eax, 8
0040aaa0mov [rdx], al
0040aaa2mov rax, [rbp-104]
0040aaa6lea rdx, [rax+24]
0040aaaamov eax, [rbp-68]
0040aaadsar eax, 16
0040aab0mov [rdx], al
0040aab2mov rax, [rbp-104]
0040aab6lea rdx, [rax+25]
0040aabamov eax, [rbp-68]
0040aabdshr eax, 24
0040aac0mov [rdx], al
0040aac2mov rax, [rbp-104]
0040aac6lea rdx, [rax+25]
0040aacamov rax, [rbp-104]
0040aaceadd rax, 25
0040aad2movzx eax, [rax]
0040aad5mov ecx, eax
0040aad7mov eax, [rbp-64]
0040aadaor eax, ecx
0040aadcmov [rdx], al
0040aademov rax, [rbp-104]
0040aae2lea rdx, [rax+26]
0040aae6mov eax, [rbp-64]
0040aae9sar eax, 8
0040aaecmov [rdx], al
0040aaeemov rax, [rbp-104]
0040aaf2lea rdx, [rax+27]
0040aaf6mov eax, [rbp-64]
0040aaf9sar eax, 16
0040aafcmov [rdx], al
0040aafemov rax, [rbp-104]
0040ab02lea rdx, [rax+28]
0040ab06mov eax, [rbp-64]
0040ab09shr eax, 24
0040ab0cmov [rdx], al
0040ab0emov rax, [rbp-104]
0040ab12lea rdx, [rax+28]
0040ab16mov rax, [rbp-104]
0040ab1aadd rax, 28
0040ab1emovzx eax, [rax]
0040ab21mov ecx, eax
0040ab23mov eax, [rbp-60]
0040ab26or eax, ecx
0040ab28mov [rdx], al
0040ab2amov rax, [rbp-104]
0040ab2elea rdx, [rax+29]
0040ab32mov eax, [rbp-60]
0040ab35sar eax, 8
0040ab38mov [rdx], al
0040ab3amov rax, [rbp-104]
0040ab3elea rdx, [rax+30]
0040ab42mov eax, [rbp-60]
0040ab45sar eax, 16
0040ab48mov [rdx], al
0040ab4amov rax, [rbp-104]
0040ab4elea rdx, [rax+31]
0040ab52mov eax, [rbp-60]
0040ab55shr eax, 24
0040ab58mov [rdx], al
0040ab5aleave
0040ab5bret
0040a4af
0040a4affcontract:
0040a4afpush rbp
0040a4b0mov rbp, rsp
0040a4b3sub rsp, 112
0040a4b7mov [rbp-104], rdi
0040a4bbmov [rbp-112], rsi
0040a4bfmov [rbp-4], 0
0040a4c6jmp 0x40a4e7
0040a4c8
0040a4c8loc_40a4c8:
0040a4c8mov eax, [rbp-4]
0040a4cbcdqe
0040a4cdshl rax, 3
0040a4d1add rax, [rbp-112]
0040a4d5mov rax, [rax]
0040a4d8mov edx, eax
0040a4damov eax, [rbp-4]
0040a4ddcdqe
0040a4dfmov [rbp+4*rax-96], edx
0040a4e3add [rbp-4], 1
0040a4e7
0040a4e7loc_40a4e7:
0040a4e7cmp [rbp-4], 9
0040a4ebjle 0x40a4c8
0040a4edmov [rbp-8], 0
0040a4f4jmp 0x40a60c
0040a4f9
0040a4f9loc_40a4f9:
0040a4f9mov [rbp-4], 0
0040a500jmp 0x40a5cb
0040a505
0040a505loc_40a505:
0040a505mov eax, [rbp-4]
0040a508and eax, 1
0040a50btest al, al
0040a50dje 0x40a56c
0040a50fmov eax, [rbp-4]
0040a512cdqe
0040a514mov eax, [rbp+4*rax-96]
0040a518sar eax, 31
0040a51bmov [rbp-16], eax
0040a51emov eax, [rbp-4]
0040a521cdqe
0040a523mov eax, [rbp+4*rax-96]
0040a527and eax, [rbp-16]
0040a52asar eax, 25
0040a52dneg eax
0040a52fmov [rbp-20], eax
0040a532mov eax, [rbp-4]
0040a535cdqe
0040a537mov eax, [rbp+4*rax-96]
0040a53bmov edx, [rbp-20]
0040a53eshl edx, 25
0040a541add edx, eax
0040a543mov eax, [rbp-4]
0040a546cdqe
0040a548mov [rbp+4*rax-96], edx
0040a54cmov eax, [rbp-4]
0040a54flea ecx, [rax+1]
0040a552mov eax, [rbp-4]
0040a555add eax, 1
0040a558cdqe
0040a55amov eax, [rbp+4*rax-96]
0040a55emov edx, eax
0040a560sub edx, [rbp-20]
0040a563movsxd rax, ecx
0040a566mov [rbp+4*rax-96], edx
0040a56ajmp 0x40a5c7
0040a56c
0040a56cloc_40a56c:
0040a56cmov eax, [rbp-4]
0040a56fcdqe
0040a571mov eax, [rbp+4*rax-96]
0040a575sar eax, 31
0040a578mov [rbp-24], eax
0040a57bmov eax, [rbp-4]
0040a57ecdqe
0040a580mov eax, [rbp+4*rax-96]
0040a584and eax, [rbp-24]
0040a587sar eax, 26
0040a58aneg eax
0040a58cmov [rbp-28], eax
0040a58fmov eax, [rbp-4]
0040a592cdqe
0040a594mov eax, [rbp+4*rax-96]
0040a598mov edx, [rbp-28]
0040a59bshl edx, 26
0040a59eadd edx, eax
0040a5a0mov eax, [rbp-4]
0040a5a3cdqe
0040a5a5mov [rbp+4*rax-96], edx
0040a5a9mov eax, [rbp-4]
0040a5aclea ecx, [rax+1]
0040a5afmov eax, [rbp-4]
0040a5b2add eax, 1
0040a5b5cdqe
0040a5b7mov eax, [rbp+4*rax-96]
0040a5bbmov edx, eax
0040a5bdsub edx, [rbp-28]
0040a5c0movsxd rax, ecx
0040a5c3mov [rbp+4*rax-96], edx
0040a5c7
0040a5c7loc_40a5c7:
0040a5c7add [rbp-4], 1
0040a5cb
0040a5cbloc_40a5cb:
0040a5cbcmp [rbp-4], 8
0040a5cfjle 0x40a505
0040a5d5mov eax, [rbp-60]
0040a5d8sar eax, 31
0040a5dbmov [rbp-32], eax
0040a5demov eax, [rbp-60]
0040a5e1and eax, [rbp-32]
0040a5e4sar eax, 25
0040a5e7neg eax
0040a5e9mov [rbp-36], eax
0040a5ecmov eax, [rbp-60]
0040a5efmov edx, [rbp-36]
0040a5f2shl edx, 25
0040a5f5add eax, edx
0040a5f7mov [rbp-60], eax
0040a5famov edx, [rbp-96]
0040a5fdmov eax, [rbp-36]
0040a600imul eax, eax, -19
0040a603add eax, edx
0040a605mov [rbp-96], eax
0040a608add [rbp-8], 1
0040a60c
0040a60cloc_40a60c:
0040a60ccmp [rbp-8], 1
0040a610jle 0x40a4f9
0040a616mov eax, [rbp-96]
0040a619sar eax, 31
0040a61cmov [rbp-40], eax
0040a61fmov eax, [rbp-96]
0040a622and eax, [rbp-40]
0040a625sar eax, 26
0040a628neg eax
0040a62amov [rbp-44], eax
0040a62dmov eax, [rbp-96]
0040a630mov edx, [rbp-44]
0040a633shl edx, 26
0040a636add eax, edx
0040a638mov [rbp-96], eax
0040a63bmov eax, [rbp-92]
0040a63esub eax, [rbp-44]
0040a641mov [rbp-92], eax
0040a644mov [rbp-8], 0
0040a64bjmp 0x40a732
0040a650
0040a650loc_40a650:
0040a650mov [rbp-4], 0
0040a657jmp 0x40a6fa
0040a65c
0040a65cloc_40a65c:
0040a65cmov eax, [rbp-4]
0040a65fand eax, 1
0040a662test al, al
0040a664je 0x40a6af
0040a666mov eax, [rbp-4]
0040a669cdqe
0040a66bmov eax, [rbp+4*rax-96]
0040a66fsar eax, 25
0040a672mov [rbp-48], eax
0040a675mov eax, [rbp-4]
0040a678cdqe
0040a67amov eax, [rbp+4*rax-96]
0040a67emov edx, eax
0040a680and edx, 0x1ffffff
0040a686mov eax, [rbp-4]
0040a689cdqe
0040a68bmov [rbp+4*rax-96], edx
0040a68fmov eax, [rbp-4]
0040a692lea ecx, [rax+1]
0040a695mov eax, [rbp-4]
0040a698add eax, 1
0040a69bcdqe
0040a69dmov eax, [rbp+4*rax-96]
0040a6a1mov edx, eax
0040a6a3add edx, [rbp-48]
0040a6a6movsxd rax, ecx
0040a6a9mov [rbp+4*rax-96], edx
0040a6adjmp 0x40a6f6
0040a6af
0040a6afloc_40a6af:
0040a6afmov eax, [rbp-4]
0040a6b2cdqe
0040a6b4mov eax, [rbp+4*rax-96]
0040a6b8sar eax, 26
0040a6bbmov [rbp-52], eax
0040a6bemov eax, [rbp-4]
0040a6c1cdqe
0040a6c3mov eax, [rbp+4*rax-96]
0040a6c7mov edx, eax
0040a6c9and edx, 0x3ffffff
0040a6cfmov eax, [rbp-4]
0040a6d2cdqe
0040a6d4mov [rbp+4*rax-96], edx
0040a6d8mov eax, [rbp-4]
0040a6dblea ecx, [rax+1]
0040a6demov eax, [rbp-4]
0040a6e1add eax, 1
0040a6e4cdqe
0040a6e6mov eax, [rbp+4*rax-96]
0040a6eamov edx, eax
0040a6ecadd edx, [rbp-52]
0040a6efmovsxd rax, ecx
0040a6f2mov [rbp+4*rax-96], edx
0040a6f6
0040a6f6loc_40a6f6:
0040a6f6add [rbp-4], 1
0040a6fa
0040a6faloc_40a6fa:
0040a6facmp [rbp-4], 8
0040a6fejle 0x40a65c
0040a704mov eax, [rbp-60]
0040a707sar eax, 25
0040a70amov [rbp-56], eax
0040a70dmov eax, [rbp-60]
0040a710and eax, 0x1ffffff
0040a715mov [rbp-60], eax
0040a718mov ecx, [rbp-96]
0040a71bmov edx, [rbp-56]
0040a71emov eax, edx
0040a720shl eax, 3
0040a723add eax, edx
0040a725add eax, eax
0040a727add eax, edx
0040a729add eax, ecx
0040a72bmov [rbp-96], eax
0040a72eadd [rbp-8], 1
0040a732
0040a732loc_40a732:
0040a732cmp [rbp-8], 1
0040a736jle 0x40a650
0040a73cmov eax, [rbp-96]
0040a73fmov esi, 0x3ffffed
0040a744mov edi, eax
0040a746call s32_gte
0040a74bmov [rbp-12], eax
0040a74emov [rbp-4], 1
0040a755jmp 0x40a797
0040a757
0040a757loc_40a757:
0040a757mov eax, [rbp-4]
0040a75aand eax, 1
0040a75dtest al, al
0040a75fje 0x40a77b
0040a761mov eax, [rbp-4]
0040a764cdqe
0040a766mov eax, [rbp+4*rax-96]
0040a76amov esi, 0x1ffffff
0040a76fmov edi, eax
0040a771call s32_eq
0040a776and [rbp-12], eax
0040a779jmp 0x40a793
0040a77b
0040a77bloc_40a77b:
0040a77bmov eax, [rbp-4]
0040a77ecdqe
0040a780mov eax, [rbp+4*rax-96]
0040a784mov esi, 0x3ffffff
0040a789mov edi, eax
0040a78bcall s32_eq
0040a790and [rbp-12], eax
0040a793
0040a793loc_40a793:
0040a793add [rbp-4], 1
0040a797
0040a797loc_40a797:
0040a797cmp [rbp-4], 9
0040a79bjle 0x40a757
0040a79dmov eax, [rbp-96]
0040a7a0mov edx, [rbp-12]
0040a7a3and edx, 0x3ffffed
0040a7a9sub eax, edx
0040a7abmov [rbp-96], eax
0040a7aemov [rbp-4], 1
0040a7b5jmp 0x40a809
0040a7b7
0040a7b7loc_40a7b7:
0040a7b7mov eax, [rbp-4]
0040a7baand eax, 1
0040a7bdtest al, al
0040a7bfje 0x40a7e4
0040a7c1mov eax, [rbp-4]
0040a7c4cdqe
0040a7c6mov eax, [rbp+4*rax-96]
0040a7camov edx, [rbp-12]
0040a7cdand edx, 0x1ffffff
0040a7d3mov ecx, eax
0040a7d5sub ecx, edx
0040a7d7mov edx, ecx
0040a7d9mov eax, [rbp-4]
0040a7dccdqe
0040a7demov [rbp+4*rax-96], edx
0040a7e2jmp 0x40a805
0040a7e4
0040a7e4loc_40a7e4:
0040a7e4mov eax, [rbp-4]
0040a7e7cdqe
0040a7e9mov eax, [rbp+4*rax-96]
0040a7edmov edx, [rbp-12]
0040a7f0and edx, 0x3ffffff
0040a7f6mov ecx, eax
0040a7f8sub ecx, edx
0040a7famov edx, ecx
0040a7fcmov eax, [rbp-4]
0040a7ffcdqe
0040a801mov [rbp+4*rax-96], edx
0040a805
0040a805loc_40a805:
0040a805add [rbp-4], 1
0040a809
0040a809loc_40a809:
0040a809cmp [rbp-4], 9
0040a80djle 0x40a7b7
0040a80fmov eax, [rbp-92]
0040a812shl eax, 2
0040a815mov [rbp-92], eax
0040a818mov eax, [rbp-88]
0040a81bshl eax, 3
0040a81emov [rbp-88], eax
0040a821mov eax, [rbp-84]
0040a824shl eax, 5
0040a827mov [rbp-84], eax
0040a82amov eax, [rbp-80]
0040a82dshl eax, 6
0040a830mov [rbp-80], eax
0040a833mov eax, [rbp-72]
0040a836add eax, eax
0040a838mov [rbp-72], eax
0040a83bmov eax, [rbp-68]
0040a83eshl eax, 3
0040a841mov [rbp-68], eax
0040a844mov eax, [rbp-64]
0040a847shl eax, 4
0040a84amov [rbp-64], eax
0040a84dmov eax, [rbp-60]
0040a850shl eax, 6
0040a853mov [rbp-60], eax
0040a856mov rax, [rbp-104]
0040a85amov [rax], 0
0040a85dmov rax, [rbp-104]
0040a861add rax, 16
0040a865mov [rax], 0
0040a868mov rax, [rbp-104]
0040a86cmovzx eax, [rax]
0040a86fmov edx, eax
0040a871mov eax, [rbp-96]
0040a874or eax, edx
0040a876mov edx, eax
0040a878mov rax, [rbp-104]
0040a87cmov [rax], dl
0040a87emov rax, [rbp-104]
0040a882lea rdx, [rax+1]
0040a886mov eax, [rbp-96]
0040a889sar eax, 8
0040a88cmov [rdx], al
0040a88emov rax, [rbp-104]
0040a892lea rdx, [rax+2]
0040a896mov eax, [rbp-96]
0040a899sar eax, 16
0040a89cmov [rdx], al
0040a89emov rax, [rbp-104]
0040a8a2lea rdx, [rax+3]
0040a8a6mov eax, [rbp-96]
0040a8a9shr eax, 24
0040a8acmov [rdx], al
0040a8aemov rax, [rbp-104]
0040a8b2lea rdx, [rax+3]
0040a8b6mov rax, [rbp-104]
0040a8baadd rax, 3
0040a8bemovzx eax, [rax]
0040a8c1mov ecx, eax
0040a8c3mov eax, [rbp-92]
0040a8c6or eax, ecx
0040a8c8mov [rdx], al
0040a8camov rax, [rbp-104]
0040a8celea rdx, [rax+4]
0040a8d2mov eax, [rbp-92]
0040a8d5sar eax, 8
0040a8d8mov [rdx], al
0040a8damov rax, [rbp-104]
0040a8delea rdx, [rax+5]
0040a8e2mov eax, [rbp-92]
0040a8e5sar eax, 16
0040a8e8mov [rdx], al
0040a8eamov rax, [rbp-104]
0040a8eelea rdx, [rax+6]
0040a8f2mov eax, [rbp-92]
0040a8f5shr eax, 24
0040a8f8mov [rdx], al
0040a8famov rax, [rbp-104]
0040a8felea rdx, [rax+6]
0040a902mov rax, [rbp-104]
0040a906add rax, 6
0040a90amovzx eax, [rax]
0040a90dmov ecx, eax
0040a90fmov eax, [rbp-88]
0040a912or eax, ecx
0040a914mov [rdx], al
0040a916mov rax, [rbp-104]
0040a91alea rdx, [rax+7]
0040a91emov eax, [rbp-88]
0040a921sar eax, 8
0040a924mov [rdx], al
0040a926mov rax, [rbp-104]
0040a92alea rdx, [rax+8]
0040a92emov eax, [rbp-88]
0040a931sar eax, 16
0040a934mov [rdx], al
0040a936mov rax, [rbp-104]
0040a93alea rdx, [rax+9]
0040a93emov eax, [rbp-88]
0040a941shr eax, 24
0040a944mov [rdx], al
0040a946mov rax, [rbp-104]
0040a94alea rdx, [rax+9]
0040a94emov rax, [rbp-104]
0040a952add rax, 9
0040a956movzx eax, [rax]
0040a959mov ecx, eax
0040a95bmov eax, [rbp-84]
0040a95eor eax, ecx
0040a960mov [rdx], al
0040a962mov rax, [rbp-104]
0040a966lea rdx, [rax+10]
0040a96amov eax, [rbp-84]
0040a96dsar eax, 8
0040a970mov [rdx], al
0040a972mov rax, [rbp-104]
0040a976lea rdx, [rax+11]
0040a97amov eax, [rbp-84]
0040a97dsar eax, 16
0040a980mov [rdx], al
0040a982mov rax, [rbp-104]
0040a986lea rdx, [rax+12]
0040a98amov eax, [rbp-84]
0040a98dshr eax, 24
0040a990mov [rdx], al
0040a992mov rax, [rbp-104]
0040a996lea rdx, [rax+12]
0040a99amov rax, [rbp-104]
0040a99eadd rax, 12
0040a9a2movzx eax, [rax]
0040a9a5mov ecx, eax
0040a9a7mov eax, [rbp-80]
0040a9aaor eax, ecx
0040a9acmov [rdx], al
0040a9aemov rax, [rbp-104]
0040a9b2lea rdx, [rax+13]
0040a9b6mov eax, [rbp-80]
0040a9b9sar eax, 8
0040a9bcmov [rdx], al
0040a9bemov rax, [rbp-104]
0040a9c2lea rdx, [rax+14]
0040a9c6mov eax, [rbp-80]
0040a9c9sar eax, 16
0040a9ccmov [rdx], al
0040a9cemov rax, [rbp-104]
0040a9d2lea rdx, [rax+15]
0040a9d6mov eax, [rbp-80]
0040a9d9shr eax, 24
0040a9dcmov [rdx], al
0040a9demov rax, [rbp-104]
0040a9e2lea rdx, [rax+16]
0040a9e6mov rax, [rbp-104]
0040a9eaadd rax, 16
0040a9eemovzx eax, [rax]
0040a9f1mov ecx, eax
0040a9f3mov eax, [rbp-76]
0040a9f6or eax, ecx
0040a9f8mov [rdx], al
0040a9famov rax, [rbp-104]
0040a9felea rdx, [rax+17]
0040aa02mov eax, [rbp-76]
0040aa05sar eax, 8
0040aa08mov [rdx], al
0040aa0amov rax, [rbp-104]
0040aa0elea rdx, [rax+18]
0040aa12mov eax, [rbp-76]
0040aa15sar eax, 16
0040aa18mov [rdx], al
0040aa1amov rax, [rbp-104]
0040aa1elea rdx, [rax+19]
0040aa22mov eax, [rbp-76]
0040aa25shr eax, 24
0040aa28mov [rdx], al
0040aa2amov rax, [rbp-104]
0040aa2elea rdx, [rax+19]
0040aa32mov rax, [rbp-104]
0040aa36add rax, 19
0040aa3amovzx eax, [rax]
0040aa3dmov ecx, eax
0040aa3fmov eax, [rbp-72]
0040aa42or eax, ecx
0040aa44mov [rdx], al
0040aa46mov rax, [rbp-104]
0040aa4alea rdx, [rax+20]
0040aa4emov eax, [rbp-72]
0040aa51sar eax, 8
0040aa54mov [rdx], al
0040aa56mov rax, [rbp-104]
0040aa5alea rdx, [rax+21]
0040aa5emov eax, [rbp-72]
0040aa61sar eax, 16
0040aa64mov [rdx], al
0040aa66mov rax, [rbp-104]
0040aa6alea rdx, [rax+22]
0040aa6emov eax, [rbp-72]
0040aa71shr eax, 24
0040aa74mov [rdx], al
0040aa76mov rax, [rbp-104]
0040aa7alea rdx, [rax+22]
0040aa7emov rax, [rbp-104]
0040aa82add rax, 22
0040aa86movzx eax, [rax]
0040aa89mov ecx, eax
0040aa8bmov eax, [rbp-68]
0040aa8eor eax, ecx
0040aa90mov [rdx], al
0040aa92mov rax, [rbp-104]
0040aa96lea rdx, [rax+23]
0040aa9amov eax, [rbp-68]
0040aa9dsar eax, 8
0040aaa0mov [rdx], al
0040aaa2mov rax, [rbp-104]
0040aaa6lea rdx, [rax+24]
0040aaaamov eax, [rbp-68]
0040aaadsar eax, 16
0040aab0mov [rdx], al
0040aab2mov rax, [rbp-104]
0040aab6lea rdx, [rax+25]
0040aabamov eax, [rbp-68]
0040aabdshr eax, 24
0040aac0mov [rdx], al
0040aac2mov rax, [rbp-104]
0040aac6lea rdx, [rax+25]
0040aacamov rax, [rbp-104]
0040aaceadd rax, 25
0040aad2movzx eax, [rax]
0040aad5mov ecx, eax
0040aad7mov eax, [rbp-64]
0040aadaor eax, ecx
0040aadcmov [rdx], al
0040aademov rax, [rbp-104]
0040aae2lea rdx, [rax+26]
0040aae6mov eax, [rbp-64]
0040aae9sar eax, 8
0040aaecmov [rdx], al
0040aaeemov rax, [rbp-104]
0040aaf2lea rdx, [rax+27]
0040aaf6mov eax, [rbp-64]
0040aaf9sar eax, 16
0040aafcmov [rdx], al
0040aafemov rax, [rbp-104]
0040ab02lea rdx, [rax+28]
0040ab06mov eax, [rbp-64]
0040ab09shr eax, 24
0040ab0cmov [rdx], al
0040ab0emov rax, [rbp-104]
0040ab12lea rdx, [rax+28]
0040ab16mov rax, [rbp-104]
0040ab1aadd rax, 28
0040ab1emovzx eax, [rax]
0040ab21mov ecx, eax
0040ab23mov eax, [rbp-60]
0040ab26or eax, ecx
0040ab28mov [rdx], al
0040ab2amov rax, [rbp-104]
0040ab2elea rdx, [rax+29]
0040ab32mov eax, [rbp-60]
0040ab35sar eax, 8
0040ab38mov [rdx], al
0040ab3amov rax, [rbp-104]
0040ab3elea rdx, [rax+30]
0040ab42mov eax, [rbp-60]
0040ab45sar eax, 16
0040ab48mov [rdx], al
0040ab4amov rax, [rbp-104]
0040ab4elea rdx, [rax+31]
0040ab52mov eax, [rbp-60]
0040ab55shr eax, 24
0040ab58mov [rdx], al
0040ab5aleave
0040ab5bret
0040a4af
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
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
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
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
Loading..