Function at 0x4745d0
Capabilities:
Hash data using sha256

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x34c
mov eax, dword [esp + 0x368]
mov eax, dword [eax + 0x1c]
test eax, eax
je 0x4745f3
mov ebx, dword [eax + 0x18]
test ebx, ebx
jne 0x474cbe
mov eax, dword [esp + 0x368]
mov ebx, dword [eax + 8]
mov ebp, dword [eax]
test ebx, ebx
je 0x474d33
test ebp, ebp
je 0x474d33
call dbg.ECDSA_SIG_new
mov esi, eax
mov dword [esp + 0x2c], eax
call sym.adb.exe_BN_CTX_new
test eax, eax
mov dword [esp + 0x28], eax
je 0x474d66
test esi, esi
je 0x474d66
mov eax, dword [esp + 0x364]
lea edx, [esp + 0x19c]
mov ecx, dword [esp + 0x360]
lea esi, [esp + 0x1e0]
mov dword [esp], eax
mov eax, ebp
call dbg.digest_to_scalar
lea eax, [esp + 0xd0]
mov dword [esp + 8], ebx
mov dword [esp + 4], eax
mov dword [esp], ebp
call sym._ec_bignum_to_scalar_unchecked
test eax, eax
lea eax, [esp + 0x8c]
mov dword [esp + 0x38], eax
lea eax, [esp + 0x114]
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x158]
mov dword [esp + 0x30], eax
je 0x474a5f
call sym.adb.exe_BN_new
test eax, eax
mov edi, eax
je 0x474c85
mov eax, dword [esp + 0x368]
mov ebx, dword [eax]
lea eax, [ebx + 8]
mov dword [esp], ebx
mov dword [esp + 0x34], eax
call sym.adb.exe_EC_POINT_new
test eax, eax
mov dword [esp + 0x24], eax
je 0x474d02
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call dbg.BN_num_bits
cmp eax, 0x9f
jbe 0x474a06
mov dword [esp + 0x34], ebp
mov ebp, dword [esp + 0x38]
mov eax, dword [esp + 0x368]
mov eax, dword [eax + 0xc]
test eax, eax
je 0x474a78
mov dword [esp + 8], eax
lea eax, [esp + 0x224]
mov dword [esp + 4], eax
mov dword [esp], ebx
call sym._ec_bignum_to_scalar
test eax, eax
je 0x474a32
mov eax, dword [ebx + 0x20]
mov edx, dword [ebx + 0xc]
mov dword [esp + 0x18], eax
mov ecx, dword [eax + 4]
mov dword [esp + 0x14], ecx
mov eax, dword [eax]
mov dword [esp + 0xc], edx
mov dword [esp + 4], edx
mov dword [esp], ebp
mov dword [esp + 0x10], eax
lea eax, [esp + 0x224]
mov dword [esp + 8], eax
call dbg.bn_mod_mul_montgomery_small
test eax, eax
je 0x474a32
mov eax, dword [ebx + 0xc]
mov edx, dword [ebx + 0x20]
mov dword [esp + 8], ebp
mov dword [esp], ebp
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], edx
mov dword [esp + 4], eax
call dbg.bn_mod_inverse_prime_mont_small
test eax, eax
je 0x474a32
lea ecx, [esp + 0x224]
mov eax, dword [esp + 0x28]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x14], eax
mov dword [esp + 4], ecx
mov dword [esp], ebx
call sym._ec_point_mul_scalar
test eax, eax
je 0x474a32
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0xc], 0
mov dword [esp + 8], edi
mov dword [esp + 0x10], eax
mov dword [esp + 4], ecx
mov dword [esp], ebx
call sym.adb.exe_EC_POINT_get_affine_coordinates_GFp
test eax, eax
je 0x474a32
mov edx, edi
mov eax, ebx
call dbg.field_element_to_scalar
test eax, eax
je 0x474a32
mov eax, dword [edi + 4]
cmp eax, 0
jle 0x474c73
mov edx, dword [edi]
jmp 0x47480d
sub eax, 1
je 0x4746eb
mov ecx, dword [edx + eax*4 - 4]
test ecx, ecx
je 0x474804
mov ebx, dword [esp + 0x2c]
mov ebp, dword [esp + 0x34]
mov eax, dword [ebx]
mov dword [esp], eax
call dbg.BN_clear_free
lea eax, [esp + 0x224]
mov dword [ebx], edi
mov dword [esp], eax
mov dword [esp + 4], 0x44
call sym.adb.exe_OPENSSL_cleanse
mov dword [esp], 0
call dbg.BN_clear_free
mov eax, dword [esp + 0x24]
mov edx, 1
call dbg.ec_point_free
mov eax, dword [ebx]
mov edi, dword [esp + 0x3c]
mov dword [esp], ebp
mov dword [esp + 8], eax
mov dword [esp + 4], edi
call sym._ec_bignum_to_scalar
test eax, eax
je 0x474a5f
mov eax, dword [ebp + 0x20]
mov edx, dword [ebp + 0xc]
mov dword [esp + 0x18], eax
mov ecx, dword [eax + 4]
mov dword [esp + 0x14], ecx
mov eax, dword [eax]
mov dword [esp + 0xc], edx
mov dword [esp + 8], edi
mov dword [esp + 4], edx
mov dword [esp + 0x10], eax
mov dword [esp], edi
call dbg.bn_mod_mul_montgomery_small
test eax, eax
je 0x474a5f
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp + 0x20]
mov dword [esp + 0x10], edi
lea edi, [esp + 0xd0]
mov dword [esp + 8], edi
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], eax
mov dword [esp + 4], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x18], edx
mov dword [esp], eax
call dbg.bn_mod_mul_montgomery_small
test eax, eax
je 0x474a5f
mov eax, dword [ebp + 0xc]
test eax, eax
jne 0x474c04
mov edx, dword [ebp + 0x20]
mov edi, dword [esp + 0x38]
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], eax
mov dword [esp + 4], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x18], edx
mov dword [esp + 0x10], edi
mov dword [esp + 8], esi
mov dword [esp], eax
call dbg.bn_mod_mul_montgomery_small
test eax, eax
je 0x474a5f
mov eax, dword [ebp + 0xc]
mov edi, dword [esp + 0x2c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x30]
mov dword [esp + 4], eax
mov eax, dword [edi + 4]
mov dword [esp], eax
call sym._bn_set_words
test eax, eax
je 0x474a5f
mov edx, dword [edi + 4]
mov eax, dword [edx + 4]
cmp eax, 0
jle 0x474cf7
mov edx, dword [edx]
jmp 0x474969
sub eax, 1
je 0x474699
mov ecx, dword [edx + eax*4 - 4]
test ecx, ecx
je 0x474960
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call dbg.BN_CTX_free
mov eax, dword [esp + 0x38]
mov dword [esp + 4], 0x44
mov dword [esp], eax
call sym.adb.exe_OPENSSL_cleanse
lea eax, [esp + 0xd0]
mov dword [esp], eax
mov dword [esp + 4], 0x44
call sym.adb.exe_OPENSSL_cleanse
mov eax, dword [esp + 0x3c]
mov dword [esp + 4], 0x44
mov dword [esp], eax
call sym.adb.exe_OPENSSL_cleanse
mov eax, dword [esp + 0x30]
mov dword [esp + 4], 0x44
mov dword [esp], eax
call sym.adb.exe_OPENSSL_cleanse
mov dword [esp + 4], 0x44
mov dword [esp], esi
call sym.adb.exe_OPENSSL_cleanse
lea eax, [esp + 0x19c]
mov dword [esp], eax
mov dword [esp + 4], 0x44
call sym.adb.exe_OPENSSL_cleanse
mov eax, dword [esp + 0x2c]
add esp, 0x34c
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x10], 0x148
mov dword [esp + 0xc], str.external_boringssl_src_crypto_fipsmodule_ecdsa_ecdsa.c
mov dword [esp + 8], 0x70
mov dword [esp + 4], 0
mov dword [esp], 0x1a
call dbg.ERR_put_error
lea eax, [esp + 0x224]
mov dword [esp], eax
mov dword [esp + 4], 0x44
call sym.adb.exe_OPENSSL_cleanse
mov dword [esp], edi
call dbg.BN_clear_free
mov eax, dword [esp + 0x24]
mov edx, 1
call dbg.ec_point_free
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
call dbg.ECDSA_SIG_free
mov dword [esp + 0x2c], 0
jmp 0x474971
mov dword [esp + 0x268], 0xf3bcc908
mov dword [esp + 0x26c], 0x6a09e667
mov dword [esp + 0x270], 0x84caa73b
mov dword [esp + 0x274], 0xbb67ae85
mov dword [esp + 0x278], 0xfe94f82b
mov dword [esp + 0x27c], 0x3c6ef372
mov dword [esp + 0x280], 0x5f1d36f1
mov dword [esp + 0x284], 0xa54ff53a
mov dword [esp + 0x288], 0xade682d1
mov dword [esp + 0x28c], 0x510e527f
mov dword [esp + 0x290], 0x2b3e6c1f
mov dword [esp + 0x294], 0x9b05688c
mov dword [esp + 0x298], 0xfb41bd6b
mov dword [esp + 0x29c], 0x1f83d9ab
mov dword [esp + 0x2a0], 0x137e2179
mov dword [esp + 0x2a4], 0x5be0cd19
mov dword [esp + 0x2a8], 0
mov dword [esp + 0x2ac], 0
mov dword [esp + 0x2b0], 0
mov dword [esp + 0x2b4], 0
mov dword [esp + 0x338], 0
mov dword [esp + 0x33c], 0x40
mov eax, dword [ebx + 0xc]
shl eax, 2
mov dword [esp + 8], eax
lea eax, [esp + 0xd0]
mov dword [esp + 4], eax
lea eax, [esp + 0x268]
mov dword [esp], eax
call dbg.SHA512_Update
mov eax, dword [esp + 0x364]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x360]
mov dword [esp + 4], eax
lea eax, [esp + 0x268]
mov dword [esp], eax
call dbg.SHA512_Update
lea eax, [esp + 0x268]
mov dword [esp + 4], eax
lea eax, [esp + 0x4c]
mov dword [esp], eax
call dbg.SHA512_Final
lea eax, [esp + 0x4c]
mov dword [esp + 0x10], eax
mov eax, dword [ebx + 0xc]
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 8]
mov dword [esp + 4], 1
mov dword [esp + 8], eax
lea eax, [esp + 0x224]
mov dword [esp], eax
call dbg.bn_rand_range_words
test eax, eax
jne 0x47471c
jmp 0x474a32
mov ecx, dword [esp + 0x30]
lea edx, [esp + 0x19c]
mov dword [esp], eax
mov eax, esi
call sym._bn_add_words.part.39
mov ecx, dword [ebp + 8]
mov ebx, eax
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x4748ef
mov dword [esp], eax
mov edx, esi
lea eax, [esp + 0x268]
call sym._bn_sub_words.part.43
mov edx, eax
mov eax, dword [ebp + 0xc]
sub ebx, edx
xor edx, edx
mov edi, ebx
not edi
test eax, eax
jle 0x4748ef
nop
mov ecx, dword [esi + edx*4]
mov eax, dword [esp + edx*4 + 0x268]
and ecx, ebx
and eax, edi
or eax, ecx
mov dword [esi + edx*4], eax
add edx, 1
cmp edx, dword [ebp + 0xc]
jl 0x474c50
mov eax, dword [ebp + 0xc]
jmp 0x4748ef
je 0x4746eb
lea esi, [esi]
jmp 0x474815
mov dword [esp + 0x10], 0x13a
mov dword [esp + 0xc], str.external_boringssl_src_crypto_fipsmodule_ecdsa_ecdsa.c
mov dword [esp + 8], 0x41
mov dword [esp + 4], 0
mov dword [esp], 0x1a
call dbg.ERR_put_error
mov dword [esp + 0x24], 0
jmp 0x474a32
mov dword [esp + 0x10], 0x187
mov dword [esp + 0xc], str.external_boringssl_src_crypto_fipsmodule_ecdsa_ecdsa.c
mov dword [esp + 8], 0x67
mov dword [esp + 4], 0
mov dword [esp], 0x1a
call dbg.ERR_put_error
add esp, 0x34c
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
je 0x474699
jmp 0x474971
mov dword [esp + 0x10], 0x141
mov dword [esp + 0xc], str.external_boringssl_src_crypto_fipsmodule_ecdsa_ecdsa.c
mov dword [esp + 8], 0xf
mov dword [esp + 4], 0
mov dword [esp], 0x1a
call dbg.ERR_put_error
jmp 0x474a32
mov dword [esp + 0x10], 0x18e
mov dword [esp + 0xc], str.external_boringssl_src_crypto_fipsmodule_ecdsa_ecdsa.c
mov dword [esp + 8], 0x43
mov dword [esp + 4], 0
mov dword [esp], 0x1a
call dbg.ERR_put_error
xor eax, eax
jmp 0x4749fb
mov dword [esp + 0x10], 0x199
mov dword [esp + 0xc], str.external_boringssl_src_crypto_fipsmodule_ecdsa_ecdsa.c
mov dword [esp + 8], 0x41
mov dword [esp + 4], 0
mov dword [esp], 0x1a
call dbg.ERR_put_error
xor eax, eax
jmp 0x4749fb