Function at 0x46cc90
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 0x46ccb3
mov ecx, dword [eax + 0x18]
test ecx, ecx
jne 0x46d367
mov eax, dword [esp + 0x368]
mov ebx, dword [eax + 8]
mov edi, dword [eax]
test ebx, ebx
je 0x46d3d1
test edi, edi
je 0x46d3d1
call sym.adb.exe_ECDSA_SIG_new
mov esi, eax
mov dword [esp + 0x24], eax
call sym.adb.exe_BN_CTX_new
test eax, eax
mov dword [esp + 0x20], eax
je 0x46d404
test esi, esi
je 0x46d404
mov eax, dword [esp + 0x364]
lea edx, [esp + 0x19c]
mov ecx, dword [esp + 0x360]
lea esi, [esp + 0x1e0]
mov dword [esp], eax
mov eax, edi
call fcn.0044b000
lea eax, [esp + 0xd0]
mov dword [esp + 8], ebx
mov dword [esp + 4], eax
mov dword [esp], edi
call fcn.004587f0
test eax, eax
lea eax, [esp + 0x8c]
mov dword [esp + 0x30], eax
lea eax, [esp + 0x114]
mov dword [esp + 0x3c], eax
lea eax, [esp + 0x158]
mov dword [esp + 0x28], eax
je 0x46d084
lea esi, [esi]
call sym.adb.exe_BN_new
test eax, eax
mov ebp, eax
je 0x46d161
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 + 0x2c], eax
je 0x46d3a0
mov eax, dword [esp + 0x34]
mov dword [esp], eax
call sym.adb.exe_BN_num_bits
cmp eax, 0x9f
jbe 0x46d130
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x2c]
mov dword [esp + 0x34], esi
mov esi, dword [esp + 0x30]
jmp 0x46ceba
mov dword [esp + 8], eax
lea eax, [esp + 0x224]
mov dword [esp + 4], eax
mov dword [esp], ebx
call fcn.004588a0
test eax, eax
je 0x46d053
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], esi
mov dword [esp + 0x10], eax
lea eax, [esp + 0x224]
mov dword [esp + 8], eax
call fcn.00450370
test eax, eax
je 0x46d053
mov eax, dword [ebx + 0xc]
mov edx, dword [ebx + 0x20]
mov dword [esp + 8], esi
mov dword [esp], esi
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], edx
mov dword [esp + 4], eax
call fcn.00450ad0
test eax, eax
je 0x46d053
mov eax, dword [esp + 0x20]
lea ecx, [esp + 0x224]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0
mov dword [esp + 8], ecx
mov dword [esp + 0x14], eax
mov dword [esp + 4], edi
mov dword [esp], ebx
call fcn.0045bb20
test eax, eax
je 0x46d053
mov eax, dword [esp + 0x20]
mov dword [esp + 0xc], 0
mov dword [esp + 8], ebp
mov dword [esp + 4], edi
mov dword [esp + 0x10], eax
mov dword [esp], ebx
call sym.adb.exe_EC_POINT_get_affine_coordinates_GFp
test eax, eax
je 0x46d053
mov edx, ebp
mov eax, ebx
call fcn.0044c4d0
test eax, eax
je 0x46d053
mov edx, dword [ebp + 4]
test edx, edx
jne 0x46d19a
mov eax, dword [esp + 0x368]
mov eax, dword [eax + 0xc]
test eax, eax
jne 0x46cdc0
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 sym.adb.exe_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 sym.adb.exe_SHA512_Update
lea eax, [esp + 0x268]
mov dword [esp + 4], eax
lea eax, [esp + 0x4c]
mov dword [esp], eax
call sym.adb.exe_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 fcn.00463e70
test eax, eax
jne 0x46cddf
mov esi, dword [esp + 0x34]
lea eax, [esp + 0x224]
mov dword [esp], eax
mov dword [esp + 4], 0x44
call sym.adb.exe_OPENSSL_cleanse
mov dword [esp], ebp
call sym.adb.exe_BN_clear_free
mov eax, dword [esp + 0x2c]
mov edx, 1
call fcn.004594f0
mov eax, dword [esp + 0x24]
mov dword [esp], eax
call sym.adb.exe_ECDSA_SIG_free
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0x20]
mov dword [esp], eax
call sym.adb.exe_BN_CTX_free
mov eax, dword [esp + 0x30]
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 + 0x28]
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 + 0x24]
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 sym.adb.exe_ERR_put_error
jmp 0x46d057
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 sym.adb.exe_ERR_put_error
mov dword [esp + 0x2c], 0
jmp 0x46d057
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0x34]
mov eax, dword [ebx]
mov dword [esp], eax
call sym.adb.exe_BN_clear_free
lea eax, [esp + 0x224]
mov dword [ebx], ebp
mov dword [esp], eax
mov dword [esp + 4], 0x44
call sym.adb.exe_OPENSSL_cleanse
mov dword [esp], 0
call sym.adb.exe_BN_clear_free
mov eax, dword [esp + 0x2c]
mov edx, 1
call fcn.004594f0
mov eax, dword [ebx]
mov ebx, dword [esp + 0x3c]
mov dword [esp], edi
mov dword [esp + 8], eax
mov dword [esp + 4], ebx
call fcn.004588a0
test eax, eax
je 0x46d084
mov eax, dword [edi + 0x20]
mov edx, dword [edi + 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], ebx
mov dword [esp + 4], edx
mov dword [esp + 0x10], eax
mov dword [esp], ebx
call fcn.00450370
test eax, eax
je 0x46d084
mov eax, dword [edi + 0xc]
mov edx, dword [edi + 0x20]
mov dword [esp + 0x10], ebx
lea ebx, [esp + 0xd0]
mov dword [esp + 8], ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], eax
mov dword [esp + 4], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 0x18], edx
mov dword [esp], eax
call fcn.00450370
test eax, eax
je 0x46d084
mov eax, dword [edi + 0xc]
test eax, eax
mov dword [esp + 0x2c], eax
jne 0x46d2e8
mov eax, dword [edi + 0x20]
mov ebx, dword [esp + 0x30]
mov dword [esp + 8], esi
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], eax
mov dword [esp + 0xc], eax
mov dword [esp + 4], eax
mov eax, dword [esp + 0x28]
mov dword [esp], eax
call fcn.00450370
test eax, eax
je 0x46d084
mov eax, dword [edi + 0xc]
mov ebx, dword [esp + 0x24]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
mov dword [esp + 4], eax
mov eax, dword [ebx + 4]
mov dword [esp], eax
call fcn.0044ba70
test eax, eax
je 0x46d084
mov eax, dword [ebx + 4]
mov eax, dword [eax + 4]
test eax, eax
je 0x46cd60
jmp 0x46d098
mov ecx, dword [esp + 0x28]
lea edx, [esp + 0x19c]
mov dword [esp], eax
mov eax, esi
call fcn.00449120
mov ecx, dword [edi + 8]
mov ebx, eax
mov eax, dword [edi + 0xc]
test eax, eax
mov dword [esp + 0x2c], eax
je 0x46d278
mov dword [esp], eax
mov edx, esi
lea eax, [esp + 0x268]
call fcn.00449230
mov ecx, dword [edi + 0xc]
xor edx, edx
mov dword [esp + 0x2c], ecx
sub ebx, eax
test ecx, ecx
mov ebp, ebx
not ebp
jle 0x46d278
lea esi, [esi]
mov ecx, dword [esi + edx*4]
mov eax, dword [esp + edx*4 + 0x268]
and ecx, ebx
and eax, ebp
or eax, ecx
mov dword [esi + edx*4], eax
add edx, 1
cmp edx, dword [edi + 0xc]
jl 0x46d340
mov eax, dword [edi + 0xc]
mov dword [esp + 0x2c], eax
jmp 0x46d278
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 sym.adb.exe_ERR_put_error
add esp, 0x34c
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
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 sym.adb.exe_ERR_put_error
jmp 0x46d057
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 sym.adb.exe_ERR_put_error
xor eax, eax
jmp 0x46d122
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 sym.adb.exe_ERR_put_error
xor eax, eax
jmp 0x46d122