Function at 0x459c00
Capabilities:
Check for software breakpoints
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x54
mov esi, dword [esp + 0x6c]
mov edi, dword [esi + 4]
test edi, edi
jle 0x459c3d
mov ebx, dword [esi]
test byte [ebx], 1
je 0x459c3d
movdqa xmm0, xmmword [0x57a860]
lea eax, [esp + 0x24]
mov dword [esp + 0x24], 3
mov dword [esp + 0x3c], eax
movdqu xmmword [esp + 0x40], xmm0
cmp dword [esi + 0xc], 0
je 0x459c61
push 0x302
push str.external_boringssl_src_crypto_fipsmodule_bn_prime.c
push 0x77
push 0
push 3
call sym.adb.exe_ERR_put_error
add esp, 0x14
xor edi, edi
mov eax, edi
add esp, 0x54
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [esp + 0x3c]
push eax
push esi
call sym.adb.exe_BN_ucmp
add esp, 8
test eax, eax
jle 0x459c3d
mov ecx, dword [esp + 0x70]
mov ebp, dword [esp + 0x74]
test ecx, ecx
je 0x459cf0
mov dword [esp + 0x20], ecx
push ebp
call sym.adb.exe_BN_CTX_start
add esp, 4
push ebp
call sym.adb.exe_BN_CTX_get
add esp, 4
mov ebp, eax
test eax, eax
je 0x45a24a
cmp ebp, esi
je 0x459d06
push dword [esi + 4]
push ebp
call fcn.00447880
add esp, 8
test eax, eax
je 0x45a24a
mov eax, dword [esi + 4]
lea ecx, [eax*4]
test ecx, ecx
je 0x459cd6
push ecx
push dword [esi]
push dword [ebp]
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [esi + 4]
mov dword [ebp + 4], eax
mov eax, dword [esi + 0xc]
mov dword [ebp + 0xc], eax
jmp 0x459d0e
test edi, edi
jle 0x45a2cd
mov eax, dword [ebx + edi*4 - 4]
dec edi
test eax, eax
je 0x459cf0
jmp 0x45a2d8
test esi, esi
je 0x45a24a
push 1
push ebp
call sym.adb.exe_BN_sub_word
add esp, 8
test eax, eax
je 0x45a24a
mov eax, dword [ebp]
mov ecx, dword [ebp + 4]
xor ebx, ebx
jmp 0x459d31
inc ebx
mov edx, ebx
shr edx, 5
cmp edx, ecx
jae 0x459d30
mov edx, dword [eax + edx*4]
bt edx, ebx
jae 0x459d30
push dword [esp + 0x74]
call sym.adb.exe_BN_CTX_get
add esp, 4
mov edi, eax
test eax, eax
je 0x45a24a
push ebx
push ebp
push edi
call sym.adb.exe_BN_rshift
add esp, 0xc
test eax, eax
je 0x45a24a
mov eax, dword [esp + 0x74]
mov dword [esp + 0x50], edi
mov edi, eax
push eax
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 0x10], eax
push edi
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 0x18], eax
push edi
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 8], eax
push edi
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 4], eax
push edi
call sym.adb.exe_BN_CTX_get
add esp, 4
xor ecx, ecx
cmp dword [esp + 0x10], 0
je 0x45a24c
mov edx, dword [esp + 0x18]
test edx, edx
je 0x45a24c
cmp dword [esp + 8], 0
je 0x45a24c
cmp dword [esp + 4], 0
je 0x45a24c
test eax, eax
mov edi, 0
je 0x45a24e
mov dword [esp + 0x34], eax
push 0x30
call sym.adb.exe_OPENSSL_malloc
add esp, 4
xor edi, edi
test eax, eax
mov ecx, 0
je 0x45a3c9
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [eax + 0xc], 0
mov dword [eax + 8], 0
mov dword [eax + 0x14], 0
mov dword [eax + 0x10], 0
mov dword [eax + 0x1c], 0
mov dword [eax + 0x18], 0
mov dword [eax + 0x24], 0
mov dword [eax + 0x20], 0
mov dword [eax + 0x2c], 0
mov dword [eax + 0x28], 0
push dword [esp + 0x74]
push esi
push eax
mov dword [esp + 0xc], eax
call sym.adb.exe_BN_MONT_CTX_set
add esp, 0xc
test eax, eax
je 0x45a3c6
cmp dword [esp + 0x20], 0
jle 0x45a236
mov dword [esp + 0x30], 1
mov dword [esp + 0x38], ebp
push dword [ebp + 4]
push dword [esp + 0x14]
call fcn.00447880
add esp, 8
xor edi, edi
test eax, eax
je 0x45a245
push 0x57b461
push dword [ebp + 4]
push dword [ebp]
push 2
mov eax, dword [esp + 0x20]
push dword [eax]
call fcn.0045a960
add esp, 0x14
test eax, eax
je 0x45a245
mov ecx, dword [esp + 0x10]
lea edx, [esp + 0x3c]
mov dword [ecx + 0xc], 0
mov eax, dword [ebp + 4]
mov dword [ecx + 4], eax
mov eax, ecx
mov ecx, dword [esp + 0x18]
mov ebp, ecx
push dword [esp + 0x74]
push esi
push eax
call fcn.00452bb0
add esp, 0xc
test eax, eax
je 0x45a245
push dword [esp + 0x3c]
push ebp
push ebp
call sym.adb.exe_BN_lshift
add esp, 0xc
test eax, eax
je 0x45a245
movdqa xmm0, xmmword [0x57a860]
lea eax, [esp + 0x24]
mov dword [esp + 0x24], 1
mov ecx, dword [esp]
mov dword [esp + 0x3c], eax
movdqu xmmword [esp + 0x40], xmm0
cmp dword [ebp + 0xc], 0
jne 0x459f55
lea eax, [esp + 0x3c]
push eax
push ebp
call sym.adb.exe_BN_ucmp
mov ecx, dword [esp + 8]
add esp, 8
test eax, eax
jg 0x45a613
push ecx
push dword [esp + 0x78]
push esi
push dword [esp + 0x5c]
push dword [esp + 0x20]
mov ebp, dword [esp + 0x1c]
push ebp
call sym.adb.exe_BN_mod_exp_mont
add esp, 0x18
test eax, eax
je 0x45a245
mov ecx, dword [ebp + 0xc]
mov edx, ebp
mov ebp, dword [esp + 0x38]
test ecx, ecx
je 0x45a137
cmp ecx, dword [ebp + 0xc]
jne 0x459fb4
push ebp
push edx
mov dword [esp + 0x14], ecx
call sym.adb.exe_BN_ucmp
mov edx, dword [esp + 0x10]
add esp, 8
mov ecx, eax
neg ecx
cmp dword [esp + 0xc], 0
cmove ecx, eax
test ecx, ecx
je 0x45a205
cmp ebx, 2
jb 0x45a3d9
mov eax, 1
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 4]
cmp edx, eax
je 0x45a018
push dword [edx + 4]
push eax
mov ebp, edx
call fcn.00447880
add esp, 8
test eax, eax
je 0x45a245
mov eax, dword [ebp + 4]
mov edx, ebp
mov ebp, dword [esp + 4]
lea ecx, [eax*4]
test ecx, ecx
je 0x45a00d
push ecx
push dword [edx]
push dword [ebp]
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x14]
add esp, 0xc
mov eax, dword [edx + 4]
mov dword [ebp + 4], eax
mov eax, dword [edx + 0xc]
mov dword [ebp + 0xc], eax
mov eax, ebp
push dword [esp + 0x74]
push esi
push eax
push eax
push edx
mov ebp, edx
call sym.adb.exe_BN_mod_mul
add esp, 0x14
test eax, eax
je 0x45a245
mov ecx, dword [ebp + 0xc]
mov eax, dword [esp + 0x38]
mov edx, ebp
cmp ecx, dword [eax + 0xc]
mov dword [esp + 0xc], ecx
jne 0x45a068
mov ebp, eax
push eax
push edx
call sym.adb.exe_BN_ucmp
mov edx, dword [esp + 0x10]
add esp, 8
mov ecx, eax
neg ecx
cmp dword [esp + 0xc], 0
cmove ecx, eax
test ecx, ecx
je 0x45a205
cmp dword [esp + 0xc], 0
jne 0x45a125
mov eax, dword [edx + 4]
test eax, eax
je 0x45a125
mov ecx, dword [edx]
mov edx, dword [ecx]
xor edx, 1
cmp eax, 2
jl 0x45a119
lea ebp, [eax - 1]
mov dword [esp + 0xc], ecx
mov ecx, 1
cmp ebp, 8
jae 0x45a0a5
mov ebp, dword [esp + 0xc]
jmp 0x45a10b
movd xmm1, edx
mov edx, dword [esp + 0xc]
mov dword [esp + 0x14], ebp
and ebp, 0xfffffff8
pxor xmm0, xmm0
lea ecx, [ebp + 1]
mov dword [esp + 0x28], ebp
mov dword [esp + 0x1c], ecx
lea edx, [edx + 0x14]
movdqu xmm2, xmmword [edx - 0x10]
movdqu xmm3, xmmword [edx]
add edx, 0x20
add ebp, 0xfffffff8
por xmm1, xmm2
por xmm0, xmm3
jne 0x45a0c6
mov ecx, dword [esp + 0x28]
por xmm0, xmm1
mov ebp, dword [esp + 0xc]
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
cmp dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x1c]
por xmm0, xmm1
movd edx, xmm0
je 0x45a119
sub eax, ecx
lea ecx, [ebp + ecx*4]
or edx, dword [ecx]
add ecx, 4
dec eax
jne 0x45a111
test edx, edx
mov edx, dword [esp + 8]
je 0x45a53e
mov eax, dword [esp + 0x2c]
inc eax
cmp eax, ebx
jb 0x459fc2
jmp 0x45a3d9
mov eax, dword [edx + 4]
test eax, eax
je 0x459f89
mov dword [esp + 0xc], ecx
mov ecx, dword [edx]
mov edx, dword [ecx]
mov dword [esp + 0x2c], ecx
xor edx, 1
cmp eax, 2
jl 0x45a1f5
lea ecx, [eax - 1]
mov dword [esp + 0x1c], 1
mov dword [esp + 0x14], ecx
cmp dword [esp + 0x14], 8
jb 0x45a1d6
mov ebp, dword [esp + 0x14]
mov ecx, dword [esp + 0x2c]
movd xmm1, edx
pxor xmm0, xmm0
and ebp, 0xfffffff8
lea edx, [ecx + 0x14]
mov dword [esp + 0x28], ebp
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 0x28]
inc ebp
mov dword [esp + 0x1c], ebp
mov ebp, ecx
movdqu xmm2, xmmword [edx - 0x10]
movdqu xmm3, xmmword [edx]
add edx, 0x20
add ecx, 0xfffffff8
por xmm1, xmm2
por xmm0, xmm3
jne 0x45a199
por xmm0, xmm1
cmp dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x38]
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd edx, xmm0
je 0x45a1f5
sub eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x1c]
lea ecx, [ecx + eax*4]
mov eax, dword [esp + 0x14]
or edx, dword [ecx]
add ecx, 4
dec eax
jne 0x45a1ed
test edx, edx
mov edx, dword [esp + 8]
mov ecx, dword [esp + 0xc]
jne 0x459f89
cmp dword [esp + 0x78], 0
je 0x45a221
mov eax, dword [esp + 0x78]
push eax
push dword [esp + 0x34]
push 1
call dword [eax + 4]
add esp, 0xc
test eax, eax
je 0x45a245
mov eax, dword [esp + 0x30]
cmp eax, dword [esp + 0x20]
lea eax, [eax + 1]
mov dword [esp + 0x30], eax
jl 0x459e8f
mov eax, dword [esp + 0x68]
mov dword [eax], 0
mov edi, 1
mov ecx, dword [esp]
jmp 0x45a24e
xor ecx, ecx
xor edi, edi
push ecx
call sym.adb.exe_BN_MONT_CTX_free
add esp, 4
mov ebp, dword [esp + 0x74]
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x45a26b
dec eax
mov dword [ebp + 0x24], eax
jmp 0x459c57
mov ecx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x14]
lea edx, [ecx - 1]
mov dword [ebp + 0x18], edx
mov esi, dword [ebp + 0x20]
mov eax, dword [eax + ecx*4 - 4]
mov edx, esi
sub edx, eax
jbe 0x45a2be
mov ecx, dword [ebp + 0xc]
mov ebx, ecx
sub ebx, edx
test edx, edx
mov dword [ebp + 0xc], ebx
je 0x45a2be
dec ecx
mov edx, eax
and ecx, 0xf
sub edx, esi
nop word [eax + eax]
test ecx, ecx
je 0x45a2aa
dec ecx
inc edx
jne 0x45a2a0
jmp 0x45a2be
mov ecx, dword [ebp + 4]
mov ecx, dword [ecx + 0x140]
mov dword [ebp + 4], ecx
mov ecx, 0xf
inc edx
jne 0x45a2a0
mov dword [ebp + 0x20], eax
mov dword [ebp + 0x28], 0
jmp 0x459c57
je 0x45a3bc
mov eax, dword [ebx + edi*4 - 4]
dec edi
shl edi, 5
xor ecx, ecx
test eax, eax
mov edx, eax
setne cl
shr edx, 0x10
or ecx, edi
mov edi, edx
xor edx, eax
neg edi
sar edi, 0x1f
and edx, edi
and edi, 0x10
xor edx, eax
or edi, ecx
mov eax, edx
shr eax, 8
mov ecx, eax
xor eax, edx
neg ecx
sar ecx, 0x1f
and eax, ecx
and ecx, 8
xor eax, edx
or ecx, edi
mov edx, eax
shr edx, 4
mov edi, edx
xor edx, eax
neg edi
sar edi, 0x1f
and edx, edi
and edi, 4
xor edx, eax
or edi, ecx
mov eax, edx
shr eax, 2
mov ecx, eax
xor eax, edx
neg ecx
sar ecx, 0x1f
and eax, ecx
and ecx, 2
xor eax, edx
or ecx, edi
shr eax, 1
neg eax
shr eax, 0x1f
add eax, ecx
mov ecx, 3
cmp eax, 0xea2
jg 0x459c7f
mov ecx, 4
cmp eax, 0x540
jg 0x459c7f
mov ecx, 5
cmp eax, 0x1db
jg 0x459c7f
mov ecx, 6
cmp eax, 0x18f
jg 0x459c7f
mov ecx, 8
cmp eax, 0x133
jg 0x459c7f
mov ecx, 0xd
cmp eax, 0xcc
jg 0x459c7f
xor ecx, ecx
cmp eax, 0x9b
setl cl
lea ecx, [ecx + ecx*8 + 0x13]
jmp 0x459c7f
mov ecx, 0x1c
jmp 0x459c7f
mov ecx, dword [esp]
push ecx
call sym.adb.exe_BN_MONT_CTX_free
add esp, 4
xor ecx, ecx
jmp 0x45a24e
mov ecx, dword [esp + 4]
cmp edx, ecx
je 0x45a42c
push dword [edx + 4]
push ecx
mov ebx, edx
call fcn.00447880
add esp, 8
test eax, eax
je 0x45a245
mov eax, dword [ebx + 4]
mov edx, ebx
lea ecx, [eax*4]
test ecx, ecx
je 0x45a41f
push ecx
push dword [edx]
mov eax, dword [esp + 0xc]
push dword [eax]
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x14]
add esp, 0xc
mov eax, dword [edx + 4]
mov ecx, dword [esp + 4]
mov dword [ecx + 4], eax
mov eax, dword [edx + 0xc]
mov dword [ecx + 0xc], eax
push dword [esp + 0x74]
push esi
push ecx
push ecx
push edx
mov ebx, edx
call sym.adb.exe_BN_mod_mul
add esp, 0x14
test eax, eax
je 0x45a245
cmp dword [ebx + 0xc], 0
mov ecx, ebx
jne 0x45a4ea
mov eax, dword [ecx + 4]
test eax, eax
je 0x45a4ea
mov ecx, dword [ecx]
mov ebx, dword [ecx]
xor ebx, 1
cmp eax, 2
jl 0x45a4e2
lea edx, [eax - 1]
mov dword [esp + 0x20], 1
cmp edx, 8
mov dword [esp + 0x10], edx
jb 0x45a4d1
mov edx, dword [esp + 0x10]
movd xmm1, ebx
lea ebx, [ecx + 0x14]
pxor xmm0, xmm0
and edx, 0xfffffff8
lea ebp, [edx + 1]
mov dword [esp + 0x20], ebp
mov ebp, edx
movdqu xmm2, xmmword [ebx - 0x10]
movdqu xmm3, xmmword [ebx]
add ebx, 0x20
add ebp, 0xfffffff8
por xmm1, xmm2
por xmm0, xmm3
jne 0x45a498
por xmm0, xmm1
cmp dword [esp + 0x10], edx
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ebx, xmm0
je 0x45a4e2
mov edx, dword [esp + 0x20]
sub eax, edx
lea ecx, [ecx + edx*4]
or ebx, dword [ecx]
add ecx, 4
dec eax
jne 0x45a4da
mov ecx, dword [esp + 8]
test ebx, ebx
je 0x45a53e
cmp ecx, dword [esp + 4]
je 0x45a53e
push dword [ecx + 4]
push dword [esp + 8]
call fcn.00447880
add esp, 8
test eax, eax
je 0x45a245
mov edx, dword [esp + 8]
mov eax, dword [edx + 4]
lea ecx, [eax*4]
test ecx, ecx
je 0x45a531
push ecx
push dword [edx]
mov eax, dword [esp + 0xc]
push dword [eax]
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x14]
add esp, 0xc
mov eax, dword [edx + 4]
mov ecx, dword [esp + 4]
mov dword [ecx + 4], eax
mov eax, dword [edx + 0xc]
mov dword [ecx + 0xc], eax
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 4]
cmp eax, ecx
je 0x45a595
push dword [eax + 4]
push ecx
mov ebx, eax
call fcn.00447880
add esp, 8
test eax, eax
je 0x45a245
mov eax, dword [ebx + 4]
mov edx, ebx
lea ecx, [eax*4]
test ecx, ecx
je 0x45a588
push ecx
push dword [edx]
mov eax, dword [esp + 0x3c]
push dword [eax]
call sub.msvcrt.dll_memcpy
mov edx, dword [esp + 0x10]
add esp, 0xc
mov eax, dword [edx + 4]
mov ecx, dword [esp + 0x34]
mov dword [ecx + 4], eax
mov eax, dword [edx + 0xc]
mov dword [ecx + 0xc], eax
push 1
push ecx
mov ebx, ecx
call sym.adb.exe_BN_sub_word
add esp, 8
test eax, eax
je 0x45a245
mov ecx, dword [esp + 0x18]
lea ebp, [esp + 0x3c]
mov edx, ebp
push dword [esp + 0x74]
push esi
push ebx
call fcn.00452bb0
add esp, 0xc
test eax, eax
je 0x45a245
push dword [esp + 0x3c]
mov eax, dword [esp + 0x1c]
push eax
push eax
call sym.adb.exe_BN_lshift
add esp, 0xc
test eax, eax
je 0x45a245
movdqa xmm0, xmmword [0x57a860]
mov ecx, dword [esp + 0x18]
lea eax, [esp + 0x24]
mov dword [esp + 0x24], 1
mov dword [esp + 0x3c], eax
movdqu xmmword [esp + 0x40], xmm0
cmp dword [ecx + 0xc], 0
je 0x45a627
mov eax, 2
jmp 0x45a642
mov eax, dword [esp + 0x68]
mov edi, 1
mov dword [eax], 1
jmp 0x45a24e
push ebp
push dword [esp + 0x1c]
call sym.adb.exe_BN_ucmp
add esp, 8
xor ecx, ecx
test eax, eax
mov eax, 2
setg cl
sub eax, ecx
mov ecx, dword [esp + 0x68]
mov dword [ecx], eax
jmp 0x45a240