Function at 0x553560
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xc4
call fcn.0059eec0
mov eax, dword [0x647f80]
xor eax, esp
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xc8]
push ebx
mov ebx, dword [esp + 0xec]
push ebp
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xe4]
push esi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xf0]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x38], 0xffffffff
mov dword [esp + 0x40], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x20], 0
push edi
mov edi, dword [esp + 0xe8]
mov dword [esp + 0x48], edi
test eax, eax
jne 0x5535dc
call fcn.004ac5d0
mov dword [esp + 0x30], eax
test ebx, ebx
push eax
cmove ebx, eax
mov dword [esp + 0x30], ebx
call fcn.0049cd80
add esp, 4
mov ebp, eax
cmp dword [esp + 0xdc], 0
mov dword [esp + 0x28], ebp
jle 0x553c7a
mov esi, dword [esp + 0xe4]
test esi, esi
jle 0x553c7a
cmp edi, esi
jl 0x553c53
lea eax, [ebp*2 + 2]
cmp edi, eax
jl 0x553c53
mov ebx, edi
push 0xcc
sub ebx, ebp
dec ebx
push str.crypto_rsa_rsa_oaep.c
push ebx
mov dword [esp + 0x24], ebx
call fcn.004964c0
mov edi, eax
add esp, 0xc
mov dword [esp + 0x1c], edi
test edi, edi
jne 0x55367a
call fcn.00499720
push str.RSA_padding_check_PKCS1_OAEP_mgf1
push 0xce
push str.crypto_rsa_rsa_oaep.c
call fcn.004997d0
push 0
push 0x41
push 4
call fcn.00499810
add esp, 0x18
jmp 0x553bfb
push 0xd2
push str.crypto_rsa_rsa_oaep.c
push dword [esp + 0x50]
call fcn.004964c0
mov ecx, eax
add esp, 0xc
mov dword [esp + 0x24], ecx
test ecx, ecx
jne 0x5536ab
call fcn.00499720
push str.RSA_padding_check_PKCS1_OAEP_mgf1
push 0xd5
jmp 0x55365d
mov edx, dword [esp + 0xe0]
mov eax, dword [esp + 0x48]
add edx, esi
add ecx, eax
mov dword [esp + 0x24], ecx
test eax, eax
jle 0x5536f9
mov edi, eax
mov ebx, ecx
mov eax, esi
lea ecx, [esi - 1]
not eax
shr ecx, 0x1f
shr eax, 0x1f
dec ebx
and ecx, eax
dec ecx
mov eax, ecx
and eax, 1
sub edx, eax
sub esi, eax
and cl, byte [edx]
mov byte [ebx], cl
sub edi, 1
jne 0x5536c6
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
movzx eax, byte [ecx]
lea esi, [ecx + 1]
push dword [esp + 0x2c]
dec eax
mov dword [esp + 0x24], esi
shr eax, 0x1f
neg eax
mov dword [esp + 0x18], eax
lea eax, [ecx + 1]
add eax, ebp
push ebx
push eax
mov dword [esp + 0x4c], eax
lea eax, [esp + 0x5c]
push ebp
push eax
call fcn.005533a0
add esp, 0x14
test eax, eax
jne 0x553bfb
xor edx, edx
test ebp, ebp
jle 0x553855
cmp ebp, 8
jb 0x55383f
lea eax, [ebp - 1]
lea edi, [esp + 0x50]
add eax, esi
cmp edi, eax
lea ecx, [esp + ebp + 0x4f]
mov edi, dword [esp + 0x1c]
ja 0x553762
cmp ecx, esi
jae 0x55383f
cmp ebp, 0x40
jb 0x553804
mov eax, ebp
and eax, 0x8000003f
jns 0x553779
dec eax
or eax, 0xffffffc0
inc eax
mov ecx, ebp
lea edi, [esp + 0x50]
sub edi, esi
lea ebx, [esp + 0x60]
sub ecx, eax
mov dword [esp + 0x4c], edi
mov edi, dword [esp + 0x1c]
lea eax, [esi + 0x20]
sub ebx, esi
lea esi, [esp + 0x50]
mov dword [esp + 0x34], ebx
mov ebx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x34]
movups xmm0, xmmword [esi + edx]
lea eax, [eax + 0x40]
movups xmm1, xmmword [eax - 0x60]
xorps xmm1, xmm0
movups xmmword [esi + edx], xmm1
movups xmm0, xmmword [esp + edx + 0x60]
movups xmm1, xmmword [eax - 0x50]
xorps xmm1, xmm0
movups xmmword [esp + edx + 0x60], xmm1
add edx, 0x40
movups xmm0, xmmword [ebx + eax - 0x40]
movups xmm1, xmmword [eax - 0x40]
xorps xmm1, xmm0
movups xmmword [ebx + eax - 0x40], xmm1
movups xmm1, xmmword [eax - 0x30]
movups xmm0, xmmword [eax + ebp - 0x40]
xorps xmm1, xmm0
movups xmmword [eax + ebp - 0x40], xmm1
cmp edx, ecx
jl 0x5537a4
mov ebp, dword [esp + 0x28]
mov eax, ebp
mov ebx, dword [esp + 0x18]
and al, 0x3f
mov esi, dword [esp + 0x20]
cmp al, 8
jb 0x55383b
mov eax, ebp
and eax, reloc.WS2_32.dll_getsockopt
jns 0x553812
dec eax
or eax, 0xfffffff8
inc eax
mov ecx, ebp
sub ecx, eax
nop word [eax + eax]
movq xmm1, qword [edx + esi]
movq xmm0, qword [esp + edx + 0x50]
xorps xmm1, xmm0
movq qword [esp + edx + 0x50], xmm1
add edx, 8
cmp edx, ecx
jl 0x553820
cmp edx, ebp
jge 0x553855
lea eax, [esp + 0x50]
sub esi, eax
lea ecx, [esp + 0x50]
add ecx, edx
inc edx
mov al, byte [esi + ecx]
xor byte [ecx], al
cmp edx, ebp
jl 0x553845
push dword [esp + 0x2c]
lea eax, [esp + 0x54]
push ebp
push eax
push ebx
push edi
call fcn.005533a0
add esp, 0x14
test eax, eax
jne 0x553bfb
xor edx, edx
test ebx, ebx
jle 0x553982
cmp ebx, 8
jb 0x55395e
mov esi, dword [esp + 0x40]
lea ecx, [edi - 1]
add ecx, ebx
lea eax, [esi - 1]
add eax, ebx
cmp edi, eax
ja 0x55389e
cmp ecx, esi
jae 0x55395e
cmp ebx, 0x40
jb 0x55392b
mov eax, ebx
and eax, 0x8000003f
jns 0x5538b5
dec eax
or eax, 0xffffffc0
inc eax
mov ecx, ebx
mov ebp, esi
sub ecx, eax
sub ebp, edi
mov dword [esp + 0x20], ebp
lea eax, [edi + 0x10]
mov ebp, dword [esp + 0x28]
mov dword [esp + 0x34], ecx
lea ecx, [esi + 0x30]
mov esi, dword [esp + 0x20]
movups xmm0, xmmword [eax - 0x10]
add edx, 0x40
lea ecx, [ecx + 0x40]
lea eax, [eax + 0x40]
movups xmm1, xmmword [ecx - 0x70]
xorps xmm1, xmm0
movups xmmword [eax - 0x50], xmm1
movups xmm0, xmmword [eax - 0x40]
movups xmm1, xmmword [esi + eax - 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x40], xmm1
movups xmm0, xmmword [eax - 0x30]
movups xmm1, xmmword [ecx - 0x50]
xorps xmm1, xmm0
movups xmmword [eax - 0x30], xmm1
movups xmm1, xmmword [eax - 0x20]
movups xmm0, xmmword [ecx - 0x40]
xorps xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
cmp edx, dword [esp + 0x34]
jl 0x5538d3
mov esi, dword [esp + 0x40]
mov eax, ebx
and al, 0x3f
cmp al, 8
jb 0x55395e
mov eax, ebx
and eax, reloc.WS2_32.dll_getsockopt
jns 0x553939
dec eax
or eax, 0xfffffff8
inc eax
mov ecx, ebx
sub ecx, eax
lea eax, [edx + edi]
sub esi, edi
movq xmm1, qword [esi + eax]
lea eax, [eax + 8]
movq xmm0, qword [eax - 8]
add edx, 8
xorps xmm1, xmm0
movq qword [eax - 8], xmm1
cmp edx, ecx
jl 0x553942
cmp edx, ebx
jge 0x553982
mov ebp, dword [esp + 0x40]
lea ecx, [edx + edi]
mov esi, ebx
sub ebp, edi
sub esi, edx
nop
mov al, byte [ecx + ebp]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub esi, 1
jne 0x553970
mov ebp, dword [esp + 0x28]
push 0
push dword [esp + 0x34]
lea eax, [esp + 0x98]
push 0
push eax
push dword [esp + 0x100]
push dword [esp + 0x24]
call fcn.0049f750
add esp, 0x18
test eax, eax
je 0x553bfb
push ebp
lea eax, [esp + 0x94]
push eax
push edi
call fcn.00401390
mov edx, dword [esp + 0x20]
add esp, 0xc
xor ebx, ebx
mov edi, ebp
lea ecx, [eax - 1]
not eax
shr ecx, 0x1f
shr eax, 0x1f
and ecx, eax
mov eax, dword [esp + 0x18]
neg ecx
and edx, ecx
mov dword [esp + 0x14], edx
cmp ebp, eax
jge 0x553a40
mov ebp, eax
mov eax, dword [esp + 0x1c]
movzx esi, byte [eax + edi]
mov eax, ebx
mov edx, esi
not eax
xor edx, 1
dec edx
shr edx, 0x1f
neg edx
and eax, edx
or ebx, edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x10], eax
not eax
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x10], eax
and ecx, edi
mov eax, dword [esp + 0x10]
inc edi
and eax, dword [esp + 0x44]
or ecx, eax
lea eax, [esi - 1]
shr eax, 0x1f
neg eax
mov dword [esp + 0x44], ecx
or eax, ebx
and edx, eax
mov dword [esp + 0x14], edx
cmp edi, ebp
jl 0x5539e6
mov ebp, dword [esp + 0x28]
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x44]
mov ecx, dword [esp + 0xdc]
dec eax
sub ecx, eax
mov dword [esp + 0x3c], eax
xor ecx, eax
xor eax, dword [esp + 0xdc]
or ecx, eax
mov eax, dword [esp + 0xdc]
xor ecx, eax
shr ecx, 0x1f
dec ecx
and ecx, ebx
mov ebx, dword [esp + 0x18]
and edx, ecx
mov esi, ebx
mov dword [esp + 0x14], edx
sub esi, ebp
lea edi, [esi - 1]
mov edx, edi
mov dword [esp + 0x30], edi
sub edx, eax
xor edx, eax
mov eax, edi
xor eax, dword [esp + 0xdc]
or edx, eax
xor edx, edi
shr edx, 0x1f
neg edx
mov dword [esp + 0x10], edx
not edx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x10], edx
mov edx, edi
mov eax, dword [esp + 0x10]
and edx, ecx
and eax, dword [esp + 0xdc]
mov edi, 1
or edx, eax
mov dword [esp + 0x2c], edx
cmp dword [esp + 0x30], edi
jle 0x553b58
sub esi, dword [esp + 0x3c]
lea edx, [ebp + 1]
mov dword [esp + 0x34], edx
lea eax, [esi - 1]
mov dword [esp + 0x4c], eax
nop dword [eax]
and eax, edi
mov esi, ebx
sub esi, edi
lea ecx, [eax - 1]
not eax
shr ecx, 0x1f
shr eax, 0x1f
and ecx, eax
dec ecx
cmp edx, esi
jge 0x553b44
mov eax, dword [esp + 0x1c]
movzx ecx, cl
add eax, edx
mov ebp, ecx
mov dword [esp + 0x20], ecx
not ebp
sub esi, edx
nop dword [eax + eax]
mov dword [esp + 0x10], ecx
lea eax, [eax + 1]
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x10], ebp
mov edx, dword [esp + 0x10]
mov bl, byte [edi + eax - 1]
and bl, cl
mov cl, byte [eax - 1]
and cl, dl
or bl, cl
mov ecx, dword [esp + 0x20]
mov byte [eax - 1], bl
sub esi, 1
jne 0x553b10
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x4c]
add edi, edi
cmp edi, dword [esp + 0x30]
jl 0x553ae0
mov ebp, dword [esp + 0x28]
mov edx, dword [esp + 0x2c]
xor esi, esi
test edx, edx
jle 0x553bc7
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x3c]
inc eax
mov ebx, dword [esp + 0x14]
neg edi
shr ecx, 0x1f
add ebp, eax
mov dword [esp + 0x20], ecx
nop word [eax + eax]
mov eax, edi
lea ebp, [ebp + 1]
shr eax, 0x1f
inc edi
xor al, cl
or al, cl
neg al
movzx ecx, al
movzx eax, bl
and ecx, eax
mov dword [esp + 0x10], ecx
not ecx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x10]
and dl, byte [ebp - 1]
and al, byte [ecx + esi]
or dl, al
mov byte [ecx + esi], dl
inc esi
mov ecx, dword [esp + 0x20]
cmp esi, dword [esp + 0x2c]
jl 0x553b80
mov ebx, dword [esp + 0x18]
call fcn.00499720
push str.RSA_padding_check_PKCS1_OAEP_mgf1
push 0x13b
push str.crypto_rsa_rsa_oaep.c
call fcn.004997d0
push 0
push 0x79
push 4
call fcn.00499810
mov eax, dword [esp + 0x2c]
and eax, 1
push eax
call fcn.0049a530
add esp, 0x1c
lea eax, [esp + 0x50]
push 0x40
push eax
call fcn.00401320
push 0x140
push str.crypto_rsa_rsa_oaep.c
push ebx
push dword [esp + 0x30]
call fcn.004965c0
push 0x141
push str.crypto_rsa_rsa_oaep.c
push dword [esp + 0x68]
push dword [esp + 0x48]
call fcn.004965c0
mov ecx, dword [esp + 0x3c]
add esp, 0x28
mov dword [esp + 0x38], ecx
not ecx
mov eax, dword [esp + 0x38]
and eax, dword [esp + 0x3c]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x38]
or eax, ecx
jmp 0x553c7d
call fcn.00499720
push str.RSA_padding_check_PKCS1_OAEP_mgf1
push 0xc7
push str.crypto_rsa_rsa_oaep.c
call fcn.004997d0
push 0
push 0x79
push 4
call fcn.00499810
add esp, 0x18
or eax, 0xffffffff
mov ecx, dword [esp + 0xd0]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0059e4d3
add esp, 0xc4
ret