Function at 0x445bb0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x7c
mov esi, dword [esp + 0xa8]
mov ebp, dword [esp + 0x94]
mov edi, dword [esp + 0xac]
test esi, esi
je 0x445e50
test edi, edi
mov dword [esp], esi
cmove edi, esi
call sym.adb.exe_EVP_MD_size
lea ecx, [eax + 1]
mov edx, eax
lea eax, [ecx + ecx]
cmp eax, ebp
ja 0x445ca6
lea ebx, [ebp - 1]
sub ebp, eax
cmp ebp, dword [esp + 0x9c]
mov dword [esp + 0x24], ebx
lea ebx, [eax - 2]
mov dword [esp + 0x28], ebx
jb 0x445e13
sub eax, 1
cmp dword [esp + 0x24], eax
jb 0x445c70
mov eax, dword [esp + 0x90]
mov dword [esp + 0x2c], edx
mov byte [eax], 0
add ecx, eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x14], 0
mov ebp, ecx
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], 0
mov dword [esp + 4], eax
mov eax, dword [esp + 0xa0]
mov dword [esp + 8], ecx
mov dword [esp], eax
call sym.adb.exe_EVP_Digest
mov edx, dword [esp + 0x2c]
test eax, eax
jne 0x445cb0
xor eax, eax
add esp, 0x7c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x10], 0x160
mov dword [esp + 0xc], str.external_boringssl_src_crypto_rsa_padding.c
mov dword [esp + 8], 0x7a
mov dword [esp + 4], 0
mov dword [esp], 4
call sym.adb.exe_ERR_put_error
xor eax, eax
add esp, 0x7c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x10], 0x155
jmp 0x445c78
mov eax, dword [esp + 0x90]
lea ecx, [ebp + edx]
mov esi, dword [esp + 0x24]
sub esi, dword [esp + 0x9c]
mov dword [esp], ecx
add eax, 1
mov ebx, eax
lea eax, [esi - 1]
sub eax, dword [esp + 0x28]
mov dword [esp + 4], 0
mov dword [esp + 0x28], edx
mov dword [esp + 8], eax
call sub.msvcrt.dll_memset
mov edx, dword [esp + 0x28]
mov eax, dword [esp + 0x9c]
sub esi, edx
mov byte [ebp + esi - 1], 1
add esi, ebp
mov dword [esp + 8], eax
mov eax, dword [esp + 0x98]
mov dword [esp], esi
mov dword [esp + 4], eax
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x28]
mov dword [esp], ebx
mov dword [esp + 4], edx
call sym.adb.exe_RAND_bytes
mov edx, dword [esp + 0x28]
test eax, eax
je 0x445c63
mov esi, dword [esp + 0x24]
mov dword [esp + 0x24], edx
sub esi, edx
mov dword [esp], esi
call sub.msvcrt.dll_malloc
mov edx, dword [esp + 0x24]
test eax, eax
mov ecx, eax
je 0x445e64
mov dword [esp + 0xc], edx
mov dword [esp], ecx
mov dword [esp + 0x10], edi
mov dword [esp + 8], ebx
mov dword [esp + 4], esi
mov dword [esp + 0x28], edx
mov dword [esp + 0x24], ecx
call fcn.00445a40
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
test eax, eax
js 0x445e60
xor eax, eax
test esi, esi
je 0x445dac
mov ebx, dword [esp + 0x90]
mov dword [esp + 0x24], edx
movzx edx, byte [ecx + eax]
xor byte [ebp + eax], dl
add eax, 1
cmp eax, esi
jne 0x445d92
mov edx, dword [esp + 0x24]
mov dword [esp + 0x90], ebx
mov dword [esp + 0x10], edi
lea edi, [esp + 0x30]
mov dword [esp + 4], edx
mov dword [esp + 0xc], esi
mov dword [esp + 8], ebp
mov dword [esp], edi
mov dword [esp + 0x28], ecx
mov dword [esp + 0x24], edx
call fcn.00445a40
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
test eax, eax
js 0x445e60
test edx, edx
je 0x445dff
mov ebx, dword [esp + 0x90]
xor esi, esi
lea esi, [esi]
movzx eax, byte [edi + esi]
xor byte [ebx + esi + 1], al
add esi, 1
cmp esi, edx
jne 0x445df0
mov ebx, 1
mov dword [esp], ecx
call fcn.004b2a58
mov eax, ebx
jmp 0x445c9e
mov dword [esp + 0x10], 0x15b
mov dword [esp + 0xc], str.external_boringssl_src_crypto_rsa_padding.c
mov dword [esp + 8], 0x6f
mov dword [esp + 4], 0
mov dword [esp], 4
call sym.adb.exe_ERR_put_error
add esp, 0x7c
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
call sym.adb.exe_EVP_sha1
mov esi, eax
jmp 0x445bd4
xor ebx, ebx
jmp 0x445e04
mov dword [esp + 0x10], 0x174
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
xor eax, eax
jmp 0x445c65