Function at 0x10086830
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0xc0
call fcn.100c8250
mov eax, dword [0x10158f9c]
xor eax, esp
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0xc4]
push ebx
push ebp
mov ebp, dword [esp + 0xec]
xor ebx, ebx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xe0]
push esi
push edi
mov dword [esp + 0x18], eax
xor edi, edi
mov eax, dword [esp + 0xf0]
mov dword [esp + 0x38], eax
mov dword [esp + 0x40], 0xffffffff
mov dword [esp + 0x2c], 0
test eax, eax
jne 0x100868a0
call fcn.1006b4d0
mov dword [esp + 0x38], eax
test ebp, ebp
push eax
cmove ebp, eax
mov dword [esp + 0x18], ebp
call fcn.1007eed0
add esp, 4
mov ebp, eax
mov dword [esp + 0x30], ebp
cmp dword [esp + 0xd8], ebx
jle 0x10086e80
mov esi, dword [esp + 0xe0]
test esi, esi
jle 0x10086e80
mov ecx, dword [esp + 0x3c]
cmp ecx, esi
jl 0x10086e65
lea eax, [ebp*2 + 2]
cmp ecx, eax
jl 0x10086e65
sub ecx, ebp
push 0x9e
dec ecx
push str..crypto_rsa_rsa_oaep.c
push ecx
mov dword [esp + 0x28], ecx
call fcn.1006b8a0
add esp, 0xc
mov dword [esp + 0x20], eax
test eax, eax
jne 0x10086935
push 0xa0
push str..crypto_rsa_rsa_oaep.c
push 0x41
push 0xa1
push 4
call fcn.1006c980
mov esi, dword [esp + 0x30]
add esp, 0x14
jmp 0x10086e1b
push 0xa4
push str..crypto_rsa_rsa_oaep.c
push dword [esp + 0x44]
call fcn.1006b8a0
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x10086958
push 0xa7
jmp 0x10086916
mov edx, dword [esp + 0xdc]
mov eax, dword [esp + 0x3c]
add edx, esi
add edi, eax
mov dword [esp + 0x28], edi
test eax, eax
jle 0x10086998
mov ebx, eax
mov eax, esi
lea ecx, [esi - 1]
not eax
shr ecx, 0x1f
shr eax, 0x1f
dec edi
and ecx, eax
dec ecx
mov eax, ecx
and eax, 1
sub edx, eax
sub esi, eax
and cl, byte [edx]
mov byte [edi], cl
sub ebx, 1
jne 0x10086971
mov dword [esp + 0x28], edi
push dword [esp + 0x14]
movzx ebx, byte [edi]
inc edi
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x20]
inc eax
add eax, ebp
mov dword [esp + 0x14], edi
push esi
push eax
lea ebx, [ebx - 1]
mov dword [esp + 0x40], eax
lea eax, [esp + 0x58]
shr ebx, 0x1f
push ebp
push eax
neg ebx
call fcn.10086270
add esp, 0x14
test eax, eax
jne 0x10086e17
xor edx, edx
test ebp, ebp
jle 0x10086ab8
cmp ebp, 0x40
jb 0x10086aa2
lea eax, [ebp - 1]
lea esi, [esp + 0x4c]
add eax, edi
cmp esi, eax
lea ecx, [esp + ebp + 0x4b]
mov esi, dword [esp + 0x1c]
ja 0x10086a03
cmp ecx, edi
jae 0x10086aa2
mov eax, ebp
and eax, 0x8000003f
jns 0x10086a11
dec eax
or eax, 0xffffffc0
inc eax
mov ecx, ebp
lea esi, [esp + 0x4c]
sub esi, edi
lea ebp, [esp + 0x5c]
sub ecx, eax
mov dword [esp + 0x44], esi
mov esi, dword [esp + 0x1c]
lea eax, [edi + 0x20]
sub ebp, edi
mov dword [esp + 0x24], ebp
mov ebp, dword [esp + 0x44]
mov edi, dword [esp + 0x24]
nop dword [eax + eax]
movups xmm0, xmmword [esp + edx + 0x4c]
lea eax, [eax + 0x40]
movups xmm1, xmmword [eax - 0x60]
pxor xmm1, xmm0
movups xmmword [esp + edx + 0x4c], xmm1
movups xmm0, xmmword [esp + edx + 0x5c]
movups xmm1, xmmword [eax - 0x50]
pxor xmm1, xmm0
movups xmm0, xmmword [eax - 0x40]
movups xmmword [esp + edx + 0x5c], xmm1
add edx, 0x40
movups xmm1, xmmword [eax + ebp - 0x40]
pxor xmm1, xmm0
movups xmmword [eax + ebp - 0x40], xmm1
movups xmm0, xmmword [edi + eax - 0x40]
movups xmm1, xmmword [eax - 0x30]
pxor xmm1, xmm0
movups xmmword [edi + eax - 0x40], xmm1
cmp edx, ecx
jl 0x10086a40
mov ebp, dword [esp + 0x30]
mov edi, dword [esp + 0x10]
mov dword [esp + 0x24], edx
cmp edx, ebp
jge 0x10086ab8
lea eax, [esp + 0x4c]
sub edi, eax
lea ecx, [esp + 0x4c]
add ecx, edx
inc edx
mov al, byte [ecx + edi]
xor byte [ecx], al
cmp edx, ebp
jl 0x10086aa8
push dword [esp + 0x14]
lea eax, [esp + 0x50]
push ebp
push eax
push esi
push dword [esp + 0x30]
call fcn.10086270
add esp, 0x14
test eax, eax
jne 0x10086e17
xor edi, edi
test esi, esi
jle 0x10086bb2
mov edx, dword [esp + 0x20]
cmp esi, 0x40
jb 0x10086b8a
mov ecx, dword [esp + 0x34]
lea eax, [ecx - 1]
add eax, esi
cmp edx, eax
ja 0x10086b08
lea eax, [edx - 1]
add eax, esi
cmp eax, ecx
jae 0x10086b8a
mov eax, esi
and eax, 0x8000003f
jns 0x10086b16
dec eax
or eax, 0xffffffc0
inc eax
mov ebp, dword [esp + 0x34]
add ecx, 0x30
mov dword [esp + 0x14], esi
sub dword [esp + 0x14], eax
sub ebp, edx
mov dword [esp + 0x10], ebp
lea eax, [edx + 0x10]
mov ebp, dword [esp + 0x30]
mov esi, dword [esp + 0x10]
movups xmm0, xmmword [eax - 0x10]
add edi, 0x40
lea ecx, [ecx + 0x40]
lea eax, [eax + 0x40]
movups xmm1, xmmword [ecx - 0x70]
pxor xmm1, xmm0
movups xmmword [eax - 0x50], xmm1
movups xmm0, xmmword [eax - 0x40]
movups xmm1, xmmword [esi + eax - 0x40]
pxor xmm1, xmm0
movups xmmword [eax - 0x40], xmm1
movups xmm0, xmmword [eax - 0x30]
movups xmm1, xmmword [ecx - 0x50]
pxor xmm1, xmm0
movups xmmword [eax - 0x30], xmm1
movups xmm0, xmmword [eax - 0x20]
movups xmm1, xmmword [ecx - 0x40]
pxor xmm1, xmm0
movups xmmword [eax - 0x20], xmm1
cmp edi, dword [esp + 0x14]
jl 0x10086b36
mov esi, dword [esp + 0x1c]
cmp edi, esi
jge 0x10086bb2
mov ebp, dword [esp + 0x34]
lea ecx, [edi + edx]
sub ebp, edx
mov edx, esi
sub edx, edi
nop dword [eax + eax]
mov al, byte [ecx + ebp]
lea ecx, [ecx + 1]
xor byte [ecx - 1], al
sub edx, 1
jne 0x10086ba0
mov ebp, dword [esp + 0x30]
push 0
push dword [esp + 0x3c]
lea eax, [esp + 0x94]
push 0
push eax
push dword [esp + 0xfc]
push dword [esp + 0x2c]
call fcn.1007ef00
add esp, 0x18
test eax, eax
je 0x10086e17
push ebp
lea eax, [esp + 0x90]
push eax
push dword [esp + 0x28]
call fcn.1006da90
add esp, 0xc
mov edi, ebp
lea ecx, [eax - 1]
not eax
shr ecx, 0x1f
shr eax, 0x1f
and ecx, eax
neg ecx
and ebx, ecx
mov dword [esp + 0x14], ebx
xor ebx, ebx
cmp ebp, esi
jge 0x10086c69
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x20]
movzx esi, byte [edi + eax]
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 dword [esp + 0x18], eax
not eax
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
and ecx, edi
and eax, dword [esp + 0x2c]
inc edi
or eax, ecx
mov dword [esp + 0x2c], eax
lea eax, [esi - 1]
mov esi, dword [esp + 0x1c]
shr eax, 0x1f
neg eax
or eax, ebx
and ebp, eax
cmp edi, esi
jl 0x10086c13
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x30]
mov ecx, dword [esp + 0xd8]
mov eax, esi
sub eax, dword [esp + 0x2c]
mov edx, esi
dec eax
sub edx, ebp
sub ecx, eax
mov dword [esp + 0x40], eax
xor ecx, eax
xor eax, dword [esp + 0xd8]
or ecx, eax
mov eax, dword [esp + 0xd8]
xor ecx, eax
lea edi, [edx - 1]
shr ecx, 0x1f
dec ecx
mov dword [esp + 0x38], edi
and ecx, ebx
mov ebx, dword [esp + 0x14]
and ebx, ecx
mov ecx, edi
sub ecx, eax
mov dword [esp + 0x14], ebx
xor ecx, eax
mov eax, edi
xor eax, dword [esp + 0xd8]
or ecx, eax
xor ecx, edi
shr ecx, 0x1f
neg ecx
mov dword [esp + 0x18], ecx
not ecx
mov dword [esp + 0x10], ecx
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
and eax, edi
and ecx, dword [esp + 0xd8]
mov edi, 1
or ecx, eax
mov dword [esp + 0x2c], ecx
cmp dword [esp + 0x38], edi
jle 0x10086d7e
sub edx, dword [esp + 0x40]
lea eax, [edx - 1]
lea edx, [ebp + 1]
mov dword [esp + 0x34], eax
mov dword [esp + 0x44], edx
and eax, edi
sub esi, edi
lea ecx, [eax - 1]
not eax
shr ecx, 0x1f
shr eax, 0x1f
and ecx, eax
dec ecx
cmp edx, esi
jge 0x10086d62
mov eax, dword [esp + 0x20]
movzx ecx, cl
add eax, edx
mov ebp, ecx
mov dword [esp + 0x24], ecx
not ebp
sub esi, edx
nop
mov dword [esp + 0x18], ecx
lea eax, [eax + 1]
movzx ecx, byte [eax + edi - 1]
mov dword [esp + 0x10], ebp
mov ebx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
and bl, cl
movzx ecx, byte [eax - 1]
and dl, cl
mov ecx, dword [esp + 0x24]
or dl, bl
mov byte [eax - 1], dl
sub esi, 1
jne 0x10086d30
mov edx, dword [esp + 0x44]
mov esi, dword [esp + 0x1c]
add edi, edi
mov eax, dword [esp + 0x34]
cmp edi, dword [esp + 0x38]
jl 0x10086d06
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
xor esi, esi
test ecx, ecx
jle 0x10086ded
mov ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x40]
inc eax
shr ecx, 0x1f
neg edi
mov dword [esp + 0x24], ecx
add ebp, eax
nop dword [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
movzx eax, byte [ebp - 1]
mov dword [esp + 0x18], ecx
not ecx
mov dword [esp + 0x10], ecx
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
and dl, al
mov eax, dword [esp + 0x48]
movzx eax, byte [eax + esi]
and cl, al
mov eax, dword [esp + 0x48]
or cl, dl
mov byte [eax + esi], cl
inc esi
mov ecx, dword [esp + 0x24]
cmp esi, dword [esp + 0x2c]
jl 0x10086da0
push 0x108
push str..crypto_rsa_rsa_oaep.c
push 0x79
push 0xa1
push 4
call fcn.1006c980
mov eax, ebx
and eax, 1
push eax
call fcn.1006caa0
mov esi, dword [esp + 0x34]
add esp, 0x18
mov edi, dword [esp + 0x28]
lea eax, [esp + 0x4c]
push 0x40
push eax
call fcn.1006b7c0
mov ebp, dword [esp + 0x28]
push esi
push ebp
call fcn.1006b7c0
push ebp
call fcn.1006b820
push dword [esp + 0x50]
push edi
call fcn.1006b7c0
push edi
call fcn.1006b820
mov dword [esp + 0x38], ebx
add esp, 0x20
not ebx
mov dword [esp + 0x10], ebx
mov ecx, dword [esp + 0x18]
and ecx, dword [esp + 0x40]
mov eax, dword [esp + 0x10]
or eax, ecx
jmp 0x10086e83
push 0x99
push str..crypto_rsa_rsa_oaep.c
push 0x79
push 0xa1
push 4
call fcn.1006c980
add esp, 0x14
or eax, 0xffffffff
mov ecx, dword [esp + 0xcc]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.100c7413
add esp, 0xc0
ret