Function at 0x2a9577b0
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x10
call fcn.2a8cb5a0
cmp dword [esp + 0x18], 0
push esi
mov dword [esp + 4], 0
jle 0x2a957a5f
mov esi, dword [esp + 0x24]
test esi, esi
jle 0x2a957a5f
push edi
mov edi, dword [esp + 0x2c]
cmp esi, edi
jg 0x2a957a3b
cmp edi, 0xb
jl 0x2a957a3b
push ebp
push 0xb2
push str.crypto_rsa_rsa_pk1.c
push edi
call fcn.2a8ccee0
mov ebp, eax
add esp, 0xc
test ebp, ebp
jne 0x2a95782c
push 0xb4
push str.crypto_rsa_rsa_pk1.c
push 0x41
push 0x71
push 4
call fcn.2a8d0840
add esp, 0x14
or eax, 0xffffffff
pop ebp
pop edi
pop esi
add esp, 0x10
ret
mov edx, dword [esp + 0x28]
add ebp, edi
add edx, esi
push ebx
test edi, edi
jle 0x2a957866
mov ebx, edi
nop dword [eax + eax]
mov eax, esi
lea ecx, [esi - 1]
not eax
shr ecx, 0x1f
shr eax, 0x1f
dec ebp
and ecx, eax
dec ecx
mov eax, ecx
and eax, 1
sub edx, eax
sub esi, eax
mov al, byte [edx]
and al, cl
mov byte [ebp], al
sub ebx, 1
jne 0x2a957840
movzx eax, byte [ebp + 1]
mov esi, 2
xor eax, 2
lea ebx, [eax - 1]
not eax
shr eax, 0x1f
shr ebx, 0x1f
and ebx, eax
movzx eax, byte [ebp]
dec eax
neg ebx
shr eax, 0x1f
neg eax
and ebx, eax
mov dword [esp + 0x14], ebx
cmp edi, esi
jle 0x2a9578c4
xor ebx, ebx
movzx edx, byte [esi + ebp]
mov ecx, ebx
dec edx
not ecx
shr edx, 0x1f
neg edx
and ecx, edx
or ebx, edx
mov eax, ecx
and ecx, esi
not eax
inc esi
and eax, dword [esp + 0x10]
or eax, ecx
mov dword [esp + 0x10], eax
cmp esi, edi
jl 0x2a957897
mov ebx, dword [esp + 0x14]
jmp 0x2a9578c6
xor eax, eax
mov esi, dword [esp + 0x28]
mov edx, edi
sub edx, eax
mov ecx, esi
dec edx
sub ecx, edx
mov dword [esp + 0x18], edx
xor ecx, edx
mov eax, edx
mov edx, dword [esp + 0x10]
xor eax, esi
or ecx, eax
xor ecx, esi
shr ecx, 0x1f
lea eax, [edx - 0xa]
dec ecx
or eax, edx
xor eax, edx
shr eax, 0x1f
dec eax
and ecx, eax
and ebx, ecx
lea ecx, [edi - 0xb]
mov edx, ecx
mov dword [esp + 0x14], ebx
sub edx, esi
mov eax, ecx
xor edx, esi
xor eax, esi
or edx, eax
xor edx, ecx
lea ecx, [edi - 0xb]
shr edx, 0x1f
neg edx
mov dword [esp + 0x10], ecx
mov eax, edx
not eax
and eax, esi
mov esi, 1
mov dword [esp + 0x28], eax
mov eax, ecx
and eax, edx
mov edx, dword [esp + 0x28]
or edx, eax
mov dword [esp + 0x28], edx
cmp ecx, esi
jle 0x2a9579a1
mov eax, edi
sub eax, dword [esp + 0x18]
add eax, 0xfffffff5
mov dword [esp + 0x1c], eax
and eax, esi
mov edx, edi
sub edx, esi
lea ebx, [eax - 1]
not eax
shr ebx, 0x1f
shr eax, 0x1f
and ebx, eax
dec ebx
cmp edx, 0xb
jle 0x2a95798f
mov ch, bl
lea eax, [ebp + 0xb]
not ch
lea edi, [edx - 0xb]
nop word [eax + eax]
mov dl, byte [esi + eax]
lea eax, [eax + 1]
mov cl, byte [eax - 1]
and dl, bl
and cl, ch
or dl, cl
mov byte [eax - 1], dl
sub edi, 1
jne 0x2a957970
mov edi, dword [esp + 0x34]
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
add esi, esi
cmp esi, ecx
jl 0x2a957947
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x28]
xor esi, esi
test edx, edx
jle 0x2a9579f2
mov eax, dword [esp + 0x18]
mov edi, dword [esp + 0x18]
shr eax, 0x1f
neg edi
mov dword [esp + 0x1c], eax
mov edx, edi
mov ecx, esi
shr edx, 0x1f
inc edi
xor dl, al
shr ecx, 0x1f
xor al, cl
or dl, al
mov al, byte [esi + ebp + 0xb]
xor dl, cl
mov ecx, dword [esp + 0x24]
neg dl
and dl, bl
and al, dl
not dl
and dl, byte [esi + ecx]
or al, dl
mov byte [esi + ecx], al
inc esi
mov eax, dword [esp + 0x1c]
cmp esi, dword [esp + 0x28]
jl 0x2a9579b8
mov edi, dword [esp + 0x34]
push 0xfa
push str.crypto_rsa_rsa_pk1.c
push edi
push ebp
call fcn.2a8ccfd0
push 0xfb
push str.crypto_rsa_rsa_pk1.c
push 0x9f
push 0x71
push 4
call fcn.2a8d0840
mov eax, ebx
and eax, 1
push eax
call fcn.2a8d0a20
add esp, 0x28
mov eax, ebx
and eax, dword [esp + 0x18]
not ebx
or eax, ebx
pop ebx
pop ebp
pop edi
pop esi
add esp, 0x10
ret
push 0xae
push str.crypto_rsa_rsa_pk1.c
push 0x9f
push 0x71
push 4
call fcn.2a8d0840
add esp, 0x14
or eax, 0xffffffff
pop edi
pop esi
add esp, 0x10
ret
or eax, 0xffffffff
pop esi
add esp, 0x10
ret