Function at 0x596144
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
and dword [ebp - 4], 0
cmp dword [ebp + 0xc], 0
push ebx
push esi
push edi
jle 0x596498
mov ebx, dword [ebp + 0x14]
test ebx, ebx
jle 0x596498
mov esi, dword [ebp + 0x18]
cmp ebx, esi
jg 0x596483
cmp esi, 0xb
jl 0x596483
push 0x4e
push str.d:package_cacheopenssl1.1.1g.2crypto_rsa_rsa_ssl.c
push esi
call fcn.005406a5
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x59619e
push 0x50
push str.d:package_cacheopenssl1.1.1g.2crypto_rsa_rsa_ssl.c
push 0x41
jmp 0x59648c
mov edx, dword [ebp + 0x10]
add edi, esi
add edx, ebx
mov dword [ebp - 0x1c], edi
test esi, esi
jle 0x5961d7
mov eax, ebx
lea ecx, [ebx - 1]
not eax
shr ecx, 0x1f
shr eax, 0x1f
and ecx, eax
dec ecx
mov eax, ecx
and eax, 1
sub edx, eax
sub ebx, eax
dec edi
mov al, byte [edx]
and al, cl
mov byte [edi], al
sub esi, 1
jne 0x5961ac
mov esi, dword [ebp + 0x18]
mov dword [ebp - 0x1c], edi
movzx eax, byte [edi + 1]
movzx ecx, byte [edi]
push 2
pop edx
xor eax, edx
mov dword [ebp - 0xc], edx
lea ebx, [eax - 1]
not eax
shr eax, 0x1f
shr ebx, 0x1f
and ebx, eax
lea eax, [ecx - 1]
shr eax, 0x1f
neg ebx
neg eax
and ebx, eax
mov dword [ebp - 0x10], ebx
mov eax, ebx
not eax
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x10]
mov eax, dword [ebp - 0x18]
and eax, 0x6b
mov dword [ebp - 0x28], eax
xor eax, eax
mov dword [ebp - 8], eax
mov dword [ebp - 0x10], eax
cmp esi, edx
jle 0x59628c
or ebx, 0xffffffff
movzx edx, byte [edx + edi]
dec edx
shr edx, 0x1f
neg edx
and ebx, edx
mov dword [ebp - 0x20], ebx
not ebx
mov dword [ebp - 0x24], ebx
mov ecx, dword [ebp - 0x20]
and ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 0x24]
and eax, dword [ebp - 4]
or eax, ecx
mov ecx, dword [ebp - 8]
or ecx, edx
mov dword [ebp - 4], eax
mov edx, dword [ebp - 0xc]
mov ebx, ecx
mov dword [ebp - 8], ecx
not ebx
movzx eax, byte [edx + edi]
xor eax, 3
lea ecx, [eax - 1]
not eax
shr ecx, 0x1f
shr eax, 0x1f
and ecx, eax
mov eax, ebx
neg ecx
and eax, 1
add eax, dword [ebp - 0x10]
or ecx, dword [ebp - 8]
and ecx, eax
inc edx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0xc], edx
cmp edx, esi
jl 0x596227
mov ebx, dword [ebp - 0x14]
mov ecx, dword [ebp - 4]
mov esi, dword [ebp - 0x10]
lea eax, [ecx - 0xa]
or eax, ecx
xor eax, ecx
shr eax, 0x1f
dec eax
and ebx, eax
mov eax, ebx
mov ecx, ebx
or eax, dword [ebp - 0x18]
not ecx
mov dword [ebp - 0x24], eax
not eax
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x24]
and eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x20]
and edx, 0x71
or edx, eax
lea eax, [esi - 8]
or eax, esi
xor eax, esi
shr eax, 0x1f
dec eax
and ebx, eax
mov eax, ebx
or eax, ecx
mov ecx, dword [ebp + 0xc]
mov dword [ebp - 0x28], eax
not eax
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x28]
mov esi, dword [ebp - 0x24]
and eax, edx
and esi, 0x73
mov edx, ebx
or esi, eax
not edx
mov eax, dword [ebp + 0x18]
sub eax, dword [ebp - 4]
dec eax
sub ecx, eax
mov dword [ebp - 0x10], eax
xor ecx, eax
xor eax, dword [ebp + 0xc]
or ecx, eax
xor ecx, dword [ebp + 0xc]
shr ecx, 0x1f
dec ecx
and ebx, ecx
mov eax, ebx
mov dword [ebp - 0x14], ebx
or eax, edx
mov dword [ebp - 0x28], eax
not eax
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x24]
and eax, esi
mov esi, dword [ebp + 0x18]
and ecx, 0x6d
or ecx, eax
mov dword [ebp - 0xc], ecx
lea ecx, [esi - 0xb]
mov edx, ecx
mov eax, ecx
sub edx, dword [ebp + 0xc]
xor edx, dword [ebp + 0xc]
xor eax, dword [ebp + 0xc]
or edx, eax
xor edx, ecx
lea ecx, [esi - 0xb]
shr edx, 0x1f
neg edx
mov dword [ebp - 0x28], edx
not edx
mov dword [ebp - 0x24], edx
mov eax, dword [ebp - 0x28]
and eax, ecx
mov ecx, dword [ebp - 0x24]
and ecx, dword [ebp + 0xc]
xor edx, edx
or ecx, eax
inc edx
lea eax, [esi - 0xb]
mov dword [ebp - 0x18], ecx
cmp eax, edx
jle 0x5963d3
mov eax, esi
sub eax, dword [ebp - 0x10]
add eax, 0xfffffff5
mov dword [ebp - 0x20], eax
and eax, edx
lea ecx, [eax - 1]
not eax
shr eax, 0x1f
shr ecx, 0x1f
and ecx, eax
mov eax, esi
sub eax, edx
dec ecx
cmp eax, 0xb
jle 0x5963c1
movzx ecx, cl
lea esi, [edi + 0xb]
mov ebx, ecx
mov dword [ebp - 0x24], ecx
not ebx
lea edi, [eax - 0xb]
mov dword [ebp + 0xc], ecx
mov dword [ebp - 0x28], ebx
mov eax, dword [ebp + 0xc]
mov cl, byte [esi + edx]
and cl, al
mov eax, dword [ebp - 0x28]
and al, byte [esi]
or al, cl
mov ecx, dword [ebp - 0x24]
mov byte [esi], al
inc esi
sub edi, 1
jne 0x59639b
mov edi, dword [ebp - 0x1c]
mov esi, dword [ebp + 0x18]
lea eax, [esi - 0xb]
add edx, edx
cmp edx, eax
mov eax, dword [ebp - 0x20]
jl 0x596372
mov ebx, dword [ebp - 0x14]
mov ecx, dword [ebp - 0x18]
test ecx, ecx
jle 0x596439
mov eax, dword [ebp - 0x10]
shr eax, 0x1f
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 0x10]
neg eax
xor esi, esi
mov dword [ebp - 0x1c], eax
mov edx, eax
mov ecx, esi
shr ecx, 0x1f
shr edx, 0x1f
mov al, cl
xor al, byte [ebp + 0xc]
xor dl, byte [ebp + 0xc]
or dl, al
movzx eax, bl
xor dl, cl
neg dl
movzx ecx, dl
mov edx, dword [ebp + 8]
and ecx, eax
mov dword [ebp - 0x28], ecx
not ecx
mov dword [ebp - 0x24], ecx
mov eax, dword [ebp - 0x28]
mov cl, byte [edi + esi + 0xb]
and cl, al
mov eax, dword [ebp - 0x24]
and al, byte [esi + edx]
or al, cl
mov byte [esi + edx], al
inc esi
mov eax, dword [ebp - 0x1c]
inc eax
mov dword [ebp - 0x1c], eax
cmp esi, dword [ebp - 0x18]
jl 0x5963ea
mov esi, dword [ebp + 0x18]
push 0xa5
push str.d:package_cacheopenssl1.1.1g.2crypto_rsa_rsa_ssl.c
push esi
push edi
call fcn.0054074e
push 0xa6
push str.d:package_cacheopenssl1.1.1g.2crypto_rsa_rsa_ssl.c
push dword [ebp - 0xc]
push 0x72
push 4
call fcn.0053f640
mov eax, ebx
and eax, 1
push eax
call fcn.0053f999
mov dword [ebp + 0xc], ebx
add esp, 0x28
not ebx
mov dword [ebp - 0x28], ebx
mov ecx, dword [ebp + 0xc]
and ecx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x28]
or eax, ecx
jmp 0x59649b
push 0x4a
push str.d:package_cacheopenssl1.1.1g.2crypto_rsa_rsa_ssl.c
push 0x6f
push 0x72
push 4
call fcn.0053f640
add esp, 0x14
or eax, 0xffffffff
pop edi
pop esi
pop ebx
leave
ret