Function at 0x46fec0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x90
mov edx, dword [esp + 0xc0]
mov edi, dword [esp + 0xc4]
mov ecx, dword [esp + 0xb4]
test edx, edx
jne 0x46fefe
push 0x460430
push 0x5d96f4
mov esi, ecx
call sym.adb.exe_CRYPTO_once
mov ecx, esi
add esp, 8
mov edx, 0x5d96f8
mov ebx, dword [edx + 4]
test edi, edi
cmove edi, edx
xor esi, esi
lea eax, [ebx + ebx + 2]
cmp eax, ecx
jbe 0x46ff30
push 0x1db
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x85
push 0
push 4
call sym.adb.exe_ERR_put_error
add esp, 0x14
jmp 0x47017a
mov ebp, ebx
mov dword [esp + 8], edx
not ebp
add ebp, ecx
push ebp
call sym.adb.exe_OPENSSL_malloc
add esp, 4
test eax, eax
je 0x470160
mov esi, eax
mov eax, dword [esp + 0xb0]
lea ecx, [esp + 0x10]
mov edx, ebx
lea eax, [eax + ebx + 1]
push edi
push ebp
mov dword [esp + 8], eax
push eax
call fcn.0046fd30
add esp, 0xc
test eax, eax
je 0x47017a
test ebx, ebx
je 0x46ffdd
xor eax, eax
cmp ebx, 0x1f
jbe 0x46ffc1
mov eax, ebx
mov edx, ebx
mov ebx, dword [esp + 0xb0]
xor ecx, ecx
and eax, 0xffffffe0
movups xmm0, xmmword [ebx + ecx + 1]
movups xmm2, xmmword [esp + ecx + 0x10]
movups xmm1, xmmword [ebx + ecx + 0x11]
movups xmm3, xmmword [esp + ecx + 0x20]
xorps xmm2, xmm0
xorps xmm3, xmm1
movups xmmword [esp + ecx + 0x10], xmm2
movups xmmword [esp + ecx + 0x20], xmm3
add ecx, 0x20
cmp eax, ecx
jne 0x46ff90
mov ebx, edx
cmp edx, eax
je 0x46ffdd
mov ecx, dword [esp + 0xb0]
inc ecx
nop dword [eax]
movzx edx, byte [ecx + eax]
xor byte [esp + eax + 0x10], dl
inc eax
cmp ebx, eax
jne 0x46ffd0
mov ecx, esi
mov edx, ebp
push edi
push ebx
lea eax, [esp + 0x18]
push eax
call fcn.0046fd30
add esp, 0xc
test eax, eax
je 0x47017a
mov ecx, dword [esp + 0xbc]
mov edi, dword [esp]
test ebp, ebp
je 0x47009c
xor edx, edx
cmp ebp, 0x1f
jbe 0x470090
mov eax, dword [esp + 0xb4]
mov edi, dword [esp + 0xb0]
lea eax, [edi + eax]
mov edi, dword [esp]
cmp esi, eax
jae 0x470030
lea eax, [esi + ebp]
cmp edi, eax
jb 0x470090
mov eax, dword [esp + 0xb0]
mov edx, ebp
mov dword [esp + 4], ebx
and edx, 0xffffffe0
lea edi, [eax + ebx + 0x11]
xor eax, eax
nop word cs:[eax + eax]
movups xmm0, xmmword [edi + eax - 0x10]
movups xmm2, xmmword [esi + eax]
movups xmm1, xmmword [edi + eax]
movups xmm3, xmmword [esi + eax + 0x10]
xorps xmm2, xmm0
xorps xmm3, xmm1
movups xmmword [esi + eax], xmm2
movups xmmword [esi + eax + 0x10], xmm3
add eax, 0x20
cmp edx, eax
jne 0x470050
mov ebx, dword [esp + 4]
mov edi, dword [esp]
cmp ebp, edx
je 0x47009c
nop word cs:[eax + eax]
nop dword [eax]
movzx eax, byte [edi + edx]
xor byte [esi + edx], al
inc edx
cmp ebp, edx
jne 0x470090
sub esp, 4
lea edi, [esp + 0x54]
push dword [esp + 0xc]
push 0
push edi
push ecx
push dword [esp + 0xcc]
call sym.adb.exe_EVP_Digest
add esp, 0x18
test eax, eax
je 0x47017a
push ebx
push edi
push esi
call sym.adb.exe_CRYPTO_memcmp
add esp, 0xc
mov ecx, dword [esp + 0xb0]
mov edx, eax
dec eax
not edx
movzx ecx, byte [ecx]
dec ecx
and ecx, edx
and ecx, eax
sar ecx, 0x1f
cmp ebx, ebp
not ecx
jae 0x470190
mov edi, dword [esp + 0xb4]
lea eax, [ebx + ebx]
mov dword [esp], ecx
mov ecx, ebx
mov edx, 0xffffffff
mov dword [esp + 4], ebp
mov dword [esp + 0xc], esi
dec edi
sub edi, eax
xor eax, eax
nop
mov ebx, edx
mov dword [esp + 8], edx
mov edx, dword [esp + 0xc]
movzx esi, byte [edx + ecx]
mov edx, esi
dec esi
xor edx, 1
sar esi, 0x1f
dec edx
not esi
sar edx, 0x1f
mov ebp, edx
not edx
and edx, dword [esp + 8]
and ebp, ebx
mov ebx, ebp
not ebp
and ebx, ecx
and eax, ebp
inc ecx
or eax, ebx
and esi, edx
or dword [esp], esi
mov esi, dword [esp + 0xc]
dec edi
jne 0x470110
mov ebp, dword [esp + 4]
mov ecx, dword [esp]
inc eax
or ecx, edx
jne 0x46ff10
jmp 0x4701a2
push 0x19c
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x41
push 0
push 4
call sym.adb.exe_ERR_put_error
add esp, 0x14
xor esi, esi
push esi
call sym.adb.exe_OPENSSL_free
add esp, 4
xor eax, eax
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, 1
mov edx, 0xffffffff
or ecx, edx
jne 0x46ff10
sub ebp, eax
cmp ebp, dword [esp + 0xac]
jbe 0x4701be
push 0x1cf
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x71
jmp 0x46ff1f
mov edi, dword [esp + 0xa8]
test ebp, ebp
je 0x4701de
mov ecx, esi
add ecx, eax
push ebp
push ecx
push dword [esp + 0xac]
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov dword [edi], ebp
push esi
call sym.adb.exe_OPENSSL_free
add esp, 4
mov eax, 1
jmp 0x470185