Function at 0x5aab30
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov ebp, dword [esp + 0x30]
xor edi, edi
test ebp, ebp
jne 0x5aab66
push 0x14
call sym.adb.exe_OPENSSL_malloc
add esp, 4
test eax, eax
je 0x5aabe2
mov ebp, eax
pxor xmm0, xmm0
movdqu xmmword [eax], xmm0
mov dword [eax + 0x10], 1
mov edi, eax
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
cmp dword [esi + 0xc], 0
jne 0x5aaed4
mov ecx, dword [esi]
mov edx, dword [esi + 4]
mov eax, dword [ebx]
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 4]
cmp edx, eax
mov esi, eax
mov dword [esp + 0x10], edx
cmovb esi, edx
test esi, esi
mov dword [esp + 4], ebp
mov dword [esp + 8], edi
mov dword [esp + 0x14], eax
je 0x5aac16
xor eax, eax
xor edi, edi
nop word cs:[eax + eax]
mov edx, dword [ecx + edi*4]
mov ebx, dword [esp + 0xc]
mov ebx, dword [ebx + edi*4]
mov ebp, edx
sub ebp, ebx
xor ebx, edx
xor ebp, edx
or ebp, ebx
xor ebp, edx
mov edx, ebp
sar edx, 0x1f
not ebp
shr ebp, 0x1f
or ebp, edx
test ebx, ebx
mov ebx, dword [esp + 0xc]
cmovne eax, ebp
inc edi
cmp esi, edi
jne 0x5aabb0
jmp 0x5aac1c
push 0x49
push str.external_boringssl_src_crypto_fipsmodule_bn_bn.c
push 0x41
push 0
push 3
call sym.adb.exe_ERR_put_error
add esp, 0x14
push 0x121
push str.external_boringssl_src_crypto_fipsmodule_bn_gcd.c
push 0x41
push 0
push 3
call sym.adb.exe_ERR_put_error
add esp, 0x14
xor ebp, ebp
jmp 0x5aafd3
xor eax, eax
mov ebx, dword [esp + 0xc]
mov dword [esp], ecx
mov ecx, dword [esp + 0x10]
mov ebp, ecx
mov edx, dword [esp + 0x14]
sub ebp, edx
jae 0x5aac63
mov edi, edx
sub edi, ecx
xor esi, esi
cmp edi, 8
jb 0x5aad8f
lea esi, [edi - 8]
mov edx, esi
shr edx, 3
inc edx
mov ebp, edx
and ebp, 3
cmp esi, 0x18
mov dword [esp], edi
jae 0x5aac86
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
mov ebx, ebp
jmp 0x5aacf7
jbe 0x5aac79
xor esi, esi
cmp ebp, 8
jae 0x5aad67
mov ebp, dword [esp + 4]
jmp 0x5aaea4
mov ebp, dword [esp + 4]
mov edi, dword [esp + 8]
jmp 0x5aaec8
and edx, 0xfffffffc
lea edi, [ebx + ecx*4]
add edi, 0x70
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
mov ebx, ebp
nop dword [eax + eax]
movdqu xmm2, xmmword [edi + esi*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [edi + esi*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [edi + esi*4 - 0x50]
movdqu xmm3, xmmword [edi + esi*4 - 0x40]
movdqu xmm4, xmmword [edi + esi*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [edi + esi*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [edi + esi*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [edi + esi*4]
por xmm1, xmm2
add esi, 0x20
add edx, 0xfffffffc
jne 0x5aaca0
mov ebp, dword [esp]
and ebp, 0xfffffff8
test ebx, ebx
je 0x5aad3a
add esi, ecx
mov edi, dword [esp + 0xc]
lea esi, [edi + esi*4]
add esi, 0x10
shl ebx, 5
xor edi, edi
nop word cs:[eax + eax]
movdqu xmm2, xmmword [esi + edi - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [esi + edi]
por xmm1, xmm2
add edi, 0x20
cmp ebx, edi
jne 0x5aad20
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd esi, xmm0
cmp dword [esp], ebp
mov edx, dword [esp + 0x14]
jne 0x5aad8d
mov ebp, dword [esp + 4]
mov edi, dword [esp + 8]
jmp 0x5aada8
mov esi, edx
lea edx, [ebp - 8]
mov edi, edx
shr edi, 3
inc edi
mov ecx, edi
and ecx, 3
cmp edx, 0x18
mov edx, esi
jae 0x5aadbb
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
jmp 0x5aae37
add ecx, ebp
mov ebp, dword [esp + 4]
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0xc]
nop dword [eax + eax]
or esi, dword [ebx + ecx*4]
inc ecx
cmp edx, ecx
jne 0x5aada0
mov ecx, esi
not ecx
dec esi
and esi, ecx
sar esi, 0x1f
not esi
or eax, esi
jmp 0x5aaec8
and edi, 0xfffffffc
mov esi, ecx
mov ecx, dword [esp]
lea ebx, [ecx + edx*4]
add ebx, 0x70
mov ecx, esi
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
nop word cs:[eax + eax]
movdqu xmm2, xmmword [ebx + esi*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [ebx + esi*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [ebx + esi*4 - 0x50]
movdqu xmm3, xmmword [ebx + esi*4 - 0x40]
movdqu xmm4, xmmword [ebx + esi*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [ebx + esi*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [ebx + esi*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [ebx + esi*4]
por xmm1, xmm2
add esi, 0x20
add edi, 0xfffffffc
jne 0x5aade0
mov edi, ebp
and edi, 0xfffffff8
test ecx, ecx
je 0x5aae7a
add esi, edx
mov ebx, ecx
mov ecx, dword [esp]
lea esi, [ecx + esi*4]
add esi, 0x10
mov ecx, ebx
shl ecx, 5
xor ebx, ebx
nop word cs:[eax + eax]
movdqu xmm2, xmmword [esi + ebx - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [esi + ebx]
por xmm1, xmm2
add ebx, 0x20
cmp ecx, ebx
jne 0x5aae60
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd esi, xmm0
cmp ebp, edi
mov ebp, dword [esp + 4]
jne 0x5aaea2
mov edi, dword [esp + 8]
jmp 0x5aaeb8
add edx, edi
mov edi, dword [esp + 8]
mov ecx, dword [esp]
mov ebx, dword [esp + 0x10]
nop
or esi, dword [ecx + edx*4]
inc edx
cmp ebx, edx
jne 0x5aaeb0
xor edx, edx
xor ecx, ecx
test esi, esi
cmove edx, eax
setne cl
or ecx, edx
mov eax, ecx
mov esi, dword [esp + 0x34]
mov ebx, dword [esp + 0x38]
test eax, eax
js 0x5aaf29
push esi
call sym.adb.exe_BN_dup
add esp, 4
test eax, eax
je 0x5aaf21
mov esi, eax
push dword [esp + 0x3c]
push ebx
push eax
push eax
push 0
call sym.adb.exe_BN_div
add esp, 0x14
test eax, eax
je 0x5aaf25
cmp dword [esi + 0xc], 0
je 0x5aaf2f
cmp dword [ebx + 0xc], 0
mov eax, sym.adb.exe_BN_add
mov ecx, sym.adb.exe_BN_sub
cmove ecx, eax
push ebx
push esi
push esi
call ecx
add esp, 0xc
mov ecx, ebx
mov ebx, esi
test eax, eax
jne 0x5aaf33
jmp 0x5aaf73
xor ebx, ebx
jmp 0x5aaf73
mov ebx, esi
jmp 0x5aaf73
mov ecx, ebx
xor ebx, ebx
jmp 0x5aaf33
mov ecx, ebx
mov ebx, esi
mov dword [esp + 0x18], 0
cmp dword [ecx + 4], 0
jle 0x5aaf48
mov eax, dword [ecx]
test byte [eax], 1
jne 0x5aaf5b
lea eax, [esp + 0x18]
push dword [esp + 0x3c]
push ecx
push esi
push eax
push ebp
call sym.adb.exe_bn_mod_inverse_consttime
jmp 0x5aaf6c
lea eax, [esp + 0x18]
push dword [esp + 0x3c]
push ecx
push esi
push eax
push ebp
call fcn.005aa1f0
add esp, 0x14
test eax, eax
jne 0x5aaf97
xor ebp, ebp
test edi, edi
je 0x5aaf97
mov eax, dword [edi + 0x10]
test al, 2
jne 0x5aaf8d
push dword [edi]
call sym.adb.exe_OPENSSL_free
add esp, 4
mov eax, dword [edi + 0x10]
test al, 1
jne 0x5aafc6
mov dword [edi], 0
test ebx, ebx
je 0x5aafd3
mov eax, dword [ebx + 0x10]
test al, 2
jne 0x5aafaf
push dword [ebx]
call sym.adb.exe_OPENSSL_free
add esp, 4
mov eax, dword [ebx + 0x10]
test al, 1
jne 0x5aafbb
mov dword [ebx], 0
jmp 0x5aafd3
push ebx
call sym.adb.exe_OPENSSL_free
add esp, 4
jmp 0x5aafd3
push edi
call sym.adb.exe_OPENSSL_free
add esp, 4
test ebx, ebx
jne 0x5aaf9b
mov eax, ebp
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret