Function at 0x4889c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x8ec
mov edi, dword [esp + 0x908]
lea esi, [esp + 0x1d8]
lea ebp, [esp + 0x8e0]
mov edx, edi
lea eax, [esp + 0x98]
call dbg.fe_frombytes_impl
lea edx, [edi + 0x20]
add edi, 0x40
lea eax, [esp + 0x138]
call dbg.fe_frombytes_impl
mov eax, esi
lea ecx, [esp + 0x98]
lea edx, [esp + 0x138]
call dbg.fe_add_impl
lea ebx, [esi + 0x50]
lea eax, [esi + 0x28]
add esi, 0x78
lea ecx, [esp + 0x98]
lea edx, [esp + 0x138]
call dbg.fe_sub_impl
lea ecx, [esp + 0x138]
mov eax, ebx
lea edx, [esp + 0x98]
call dbg.fe_mul_impl
mov ecx, 0x57ade0
mov edx, ebx
mov eax, ebx
call dbg.fe_mul_impl
cmp esi, ebp
jne 0x4889df
mov edi, dword [esp + 0x900]
mov edx, 0x28
test edi, 1
jne 0x488db7
test edi, 2
jne 0x488da6
mov ecx, edx
xor eax, eax
shr ecx, 2
test dl, 2
rep stosd dword es:[edi], eax
je 0x488a92
xor eax, eax
add edi, 2
mov word [edi - 2], ax
and edx, 1
je 0x488a9a
mov byte [edi], 0
mov eax, dword [esp + 0x900]
mov edx, 0x28
lea edi, [eax + 0x28]
test edi, 1
jne 0x488d91
test edi, 2
jne 0x488d80
mov ecx, edx
xor eax, eax
shr ecx, 2
test dl, 2
rep stosd dword es:[edi], eax
je 0x488ad8
xor ebp, ebp
add edi, 2
mov word [edi - 2], bp
and edx, 1
je 0x488ae0
mov byte [edi], 0
mov eax, dword [esp + 0x900]
mov edx, 0x28
lea edi, [eax + 0x50]
test edi, 1
mov dword [eax + 0x28], 1
jne 0x488d6b
test edi, 2
jne 0x488d5a
mov ecx, edx
xor eax, eax
shr ecx, 2
test dl, 2
rep stosd dword es:[edi], eax
je 0x488b25
xor ebx, ebx
add edi, 2
mov word [edi - 2], bx
and edx, 1
je 0x488b2d
mov byte [edi], 0
mov eax, dword [esp + 0x900]
mov edx, 0x28
lea edi, [eax + 0x78]
test edi, 1
mov dword [eax + 0x50], 1
jne 0x488d45
test edi, 2
jne 0x488d34
mov ecx, edx
xor eax, eax
shr ecx, 2
test dl, 2
rep stosd dword es:[edi], eax
je 0x488b72
xor eax, eax
add edi, 2
mov word [edi - 2], ax
and edx, 1
je 0x488b7a
mov byte [edi], 0
mov dword [esp + 0x1c], 0x3f
lea esi, [esp + 0x20]
mov edi, dword [esp + 0x1c]
xor ebp, ebp
xor edx, edx
mov ebx, dword [esp + 0x904]
mov eax, edi
and edi, 7
shr eax, 3
add ebx, eax
movzx eax, byte [ebx + edx*8]
mov ecx, edi
sar eax, cl
mov ecx, edx
and eax, 1
add edx, 1
shl eax, cl
or ebp, eax
cmp edx, 4
jne 0x488b9f
mov eax, ebp
mov edi, esi
mov byte [esp + 0x1b], al
mov ecx, 0xa
xor eax, eax
rep stosd dword es:[edi], eax
lea edi, [esp + 0x48]
mov dword [esp + 0x20], 1
lea ebx, [esp + 0x228]
mov dword [esp + 0x14], 1
mov cl, 0xa
rep stosd dword es:[edi], eax
lea edi, [esp + 0x70]
mov dword [esp + 0x48], 1
mov cl, 0xa
rep stosd dword es:[edi], eax
mov edi, 1
lea esi, [esi]
movzx ecx, byte [esp + 0x1b]
lea ebp, [ebx - 0x50]
xor edx, edx
xor cl, byte [esp + 0x14]
movzx ecx, cl
sub ecx, 1
sar ecx, 0x1f
jmp 0x488c23
mov edi, dword [esi + edx*4]
mov eax, dword [ebp + edx*4]
xor eax, edi
and eax, ecx
xor eax, edi
mov dword [esi + edx*4], eax
add edx, 1
cmp edx, 0xa
jne 0x488c20
xor eax, eax
lea ebp, [ebx - 0x28]
lea esi, [esi]
mov edi, dword [esi + eax*4 + 0x28]
mov edx, dword [ebp + eax*4]
xor edx, edi
and edx, ecx
xor edx, edi
mov dword [esi + eax*4 + 0x28], edx
add eax, 1
cmp eax, 0xa
jne 0x488c40
xor al, al
lea esi, [esi]
mov edi, dword [esi + eax*4 + 0x50]
mov edx, dword [ebx + eax*4]
xor edx, edi
and edx, ecx
xor edx, edi
mov dword [esi + eax*4 + 0x50], edx
add eax, 1
cmp eax, 0xa
jne 0x488c60
add dword [esp + 0x14], 1
add ebx, 0x78
cmp dword [esp + 0x14], 0x10
je 0x488c91
mov edi, dword [esp + 0x20]
jmp 0x488c00
mov eax, dword [esp + 0x900]
mov dword [esp + 4], eax
lea eax, [esp + 0x98]
mov dword [esp], eax
call dbg.x25519_ge_p3_to_cached
lea eax, [esp + 0x98]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x900]
mov dword [esp + 4], eax
lea eax, [esp + 0x138]
mov dword [esp], eax
call dbg.x25519_ge_add
lea eax, [esp + 0x138]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x900]
mov dword [esp], eax
call dbg.x25519_ge_p1p1_to_p3
mov edx, dword [esp + 0x900]
mov ecx, esi
lea eax, [esp + 0x138]
call dbg.ge_madd
lea eax, [esp + 0x138]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x900]
mov dword [esp], eax
call dbg.x25519_ge_p1p1_to_p3
sub dword [esp + 0x1c], 1
cmp dword [esp + 0x1c], 0xffffffff
jne 0x488b86
add esp, 0x8ec
pop ebx
pop esi
pop edi
pop ebp
ret
xor ecx, ecx
add edi, 2
mov word [edi - 2], cx
sub edx, 2
jmp 0x488b5b
mov byte [eax + 0x78], 0
mov eax, dword [esp + 0x900]
mov dl, 0x27
lea edi, [eax + 0x79]
jmp 0x488b4f
xor esi, esi
add edi, 2
mov word [edi - 2], si
sub edx, 2
jmp 0x488b0e
mov byte [eax + 0x50], 0
mov eax, dword [esp + 0x900]
mov dl, 0x27
lea edi, [eax + 0x51]
jmp 0x488b02
xor eax, eax
add edi, 2
mov word [edi - 2], ax
sub edx, 2
jmp 0x488ac1
mov byte [eax + 0x28], 0
mov eax, dword [esp + 0x900]
mov dl, 0x27
lea edi, [eax + 0x29]
jmp 0x488ab5
xor eax, eax
add edi, 2
mov word [edi - 2], ax
sub edx, 2
jmp 0x488a7b
mov byte [edi], 0
mov eax, dword [esp + 0x900]
mov dl, 0x27
lea edi, [eax + 1]
jmp 0x488a6f