Function at 0x446600
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x4c
mov eax, dword [esp + 0x6c]
mov esi, dword [esp + 0x70]
mov ebx, dword [esp + 0x74]
mov ebp, dword [esp + 0x60]
mov dword [esp], eax
test esi, esi
cmove esi, dword [esp + 0x6c]
call sym.adb.exe_EVP_MD_size
cmp ebx, 0xffffffff
mov dword [esp + 0x1c], eax
je 0x446748
cmp ebx, 0xfffffffe
je 0x44663e
jl 0x4468c0
mov eax, dword [ebp + 4]
mov dword [esp], eax
call sym.adb.exe_BN_is_zero
test eax, eax
jne 0x446716
mov eax, dword [ebp + 4]
mov dword [esp], eax
call sym.adb.exe_BN_num_bits
mov dword [esp], ebp
sub eax, 1
mov dword [esp + 0x20], eax
and dword [esp + 0x20], 7
call sym.adb.exe_RSA_size
mov edx, dword [esp + 0x20]
test edx, edx
mov dword [esp + 0x24], eax
jne 0x44668f
mov eax, dword [esp + 0x64]
sub dword [esp + 0x24], 1
mov byte [eax], 0
add eax, 1
mov dword [esp + 0x64], eax
cmp ebx, 0xfffffffe
je 0x446750
mov eax, dword [esp + 0x1c]
lea eax, [eax + ebx + 2]
cmp dword [esp + 0x24], eax
jb 0x4468e7
test ebx, ebx
jle 0x4468e0
mov dword [esp], ebx
call sub.msvcrt.dll_malloc
test eax, eax
mov edi, eax
je 0x446904
mov dword [esp + 4], ebx
xor ebp, ebp
mov dword [esp], eax
call sym.adb.exe_RAND_bytes
test eax, eax
je 0x446704
lea eax, [esp + 0x30]
xor ebp, ebp
mov dword [esp], eax
call sym.adb.exe_EVP_MD_CTX_init
mov eax, dword [esp + 0x6c]
mov dword [esp + 8], 0
mov dword [esp + 4], eax
lea eax, [esp + 0x30]
mov dword [esp], eax
call sym.adb.exe_EVP_DigestInit_ex
test eax, eax
jne 0x446783
mov dword [esp], edi
call fcn.004b2a58
add esp, 0x4c
mov eax, ebp
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x10], 0x275
mov dword [esp + 0xc], str.external_boringssl_src_crypto_rsa_padding.c
mov dword [esp + 8], 0x75
mov dword [esp + 4], 0
xor edi, edi
xor ebp, ebp
mov dword [esp], 4
call sym.adb.exe_ERR_put_error
jmp 0x446704
mov ebx, eax
jmp 0x44663e
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x24]
mov eax, ecx
sub ebx, ecx
add eax, 2
add ebx, edx
cmp edx, eax
jae 0x4466aa
mov dword [esp + 0x10], 0x282
mov dword [esp + 0xc], str.external_boringssl_src_crypto_rsa_padding.c
mov dword [esp + 8], 0x6f
jmp 0x44672e
lea eax, [esp + 0x30]
mov dword [esp + 8], 8
mov dword [esp + 4], 0x539e84
mov dword [esp], eax
call sym.adb.exe_EVP_DigestUpdate
test eax, eax
je 0x446704
mov eax, dword [esp + 0x1c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 4], eax
lea eax, [esp + 0x30]
mov dword [esp], eax
call sym.adb.exe_EVP_DigestUpdate
test eax, eax
je 0x446704
test ebx, ebx
je 0x4467eb
lea eax, [esp + 0x30]
mov dword [esp + 8], ebx
mov dword [esp + 4], edi
mov dword [esp], eax
call sym.adb.exe_EVP_DigestUpdate
test eax, eax
je 0x446704
mov eax, dword [esp + 0x1c]
xor ebp, ebp
mov dword [esp + 8], 0
not eax
add eax, dword [esp + 0x24]
mov dword [esp + 0x28], eax
add eax, dword [esp + 0x64]
mov dword [esp + 0x2c], eax
mov dword [esp + 4], eax
lea eax, [esp + 0x30]
mov dword [esp], eax
call sym.adb.exe_EVP_DigestFinal_ex
test eax, eax
je 0x446704
lea eax, [esp + 0x30]
mov dword [esp], eax
call sym.adb.exe_EVP_MD_CTX_cleanup
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x10], esi
mov esi, dword [esp + 0x1c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0xc], esi
mov dword [esp + 4], eax
mov eax, dword [esp + 0x64]
mov dword [esp], eax
call fcn.00445a40
test eax, eax
jne 0x446704
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x64]
sub eax, esi
sub ecx, ebx
lea esi, [ecx + eax - 2]
xor eax, eax
xor byte [esi], 1
test ebx, ebx
jle 0x446887
movzx edx, byte [edi + eax]
xor byte [esi + eax + 1], dl
add eax, 1
cmp eax, ebx
jne 0x446878
mov eax, dword [esp + 0x20]
test eax, eax
je 0x4468a5
mov ecx, 8
mov eax, 0xff
sub ecx, dword [esp + 0x20]
sar eax, cl
mov ecx, dword [esp + 0x64]
and byte [ecx], al
mov eax, dword [esp + 0x64]
mov ebp, 1
mov ecx, dword [esp + 0x24]
mov byte [eax + ecx - 1], 0xbc
jmp 0x446704
mov dword [esp + 0x10], 0x270
mov dword [esp + 0xc], str.external_boringssl_src_crypto_rsa_padding.c
mov dword [esp + 8], 0x85
jmp 0x44672e
xor edi, edi
jmp 0x4466d6
mov dword [esp + 0x10], 0x287
mov dword [esp + 0xc], str.external_boringssl_src_crypto_rsa_padding.c
mov dword [esp + 8], 0x6f
jmp 0x44672e
mov dword [esp + 0x10], 0x28d
xor ebp, ebp
mov dword [esp + 0xc], str.external_boringssl_src_crypto_rsa_padding.c
mov dword [esp + 8], 0x41
mov dword [esp + 4], 0
mov dword [esp], 4
call sym.adb.exe_ERR_put_error
jmp 0x446704