Function at 0x458790
Capabilities:
Check for software breakpoints
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x64
mov ebp, dword [esp + 0x78]
mov ebx, dword [esp + 0x7c]
mov dword [ebp], 0
push 0x448710
push 0x5c4170
call sym.adb.exe_CRYPTO_once
add esp, 8
test ebx, ebx
je 0x4587f4
mov esi, dword [ebx + 0xc]
cmp esi, dword [0x5c4180]
jne 0x4587e7
push 0x5c4174
push ebx
call sym.adb.exe_BN_ucmp
add esp, 8
mov ecx, eax
neg ecx
test esi, esi
cmove ecx, eax
test ecx, ecx
jg 0x4587f4
jmp 0x458add
mov edi, 1
test esi, esi
jne 0x458ae2
mov edi, dword [ebx + 4]
test edi, edi
jle 0x45888a
mov esi, dword [ebx]
mov ebx, dword [esi]
test bl, 1
jne 0x4588b5
xor ebx, 2
cmp edi, 2
jl 0x458899
lea ecx, [edi - 1]
mov eax, 1
cmp ecx, 8
jb 0x45887a
mov edx, ecx
mov dword [esp], esi
movd xmm1, ebx
lea esi, [esi + 0x14]
pxor xmm0, xmm0
and edx, 0xfffffff8
lea eax, [edx + 1]
mov ebx, edx
nop dword [eax]
movdqu xmm2, xmmword [esi - 0x10]
movdqu xmm3, xmmword [esi]
add esi, 0x20
add ebx, 0xfffffff8
por xmm1, xmm2
por xmm0, xmm3
jne 0x458840
por xmm0, xmm1
mov esi, dword [esp]
cmp ecx, edx
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ebx, xmm0
je 0x458899
sub edi, eax
lea eax, [esi + eax*4]
nop
or ebx, dword [eax]
add eax, 4
dec edi
jne 0x458880
jmp 0x458899
test edi, edi
je 0x458ad8
mov eax, dword [ebx]
mov ebx, dword [eax]
xor ebx, 2
xor eax, eax
test ebx, ebx
jne 0x458ada
mov ecx, dword [esp + 0x7c]
xor eax, eax
cmp dword [ecx + 0xc], 0
sete al
jmp 0x458ada
mov ecx, ebx
xor ecx, 3
cmp edi, 2
jl 0x458948
lea edx, [edi - 1]
mov eax, 1
cmp edx, 8
jb 0x45892e
mov ebp, esi
mov esi, edx
movd xmm1, ecx
pxor xmm0, xmm0
and esi, 0xfffffff8
mov dword [esp], ebp
lea ecx, [ebp + 0x14]
lea eax, [esi + 1]
mov ebp, esi
nop word [eax + eax]
movdqu xmm2, xmmword [ecx - 0x10]
movdqu xmm3, xmmword [ecx]
add ecx, 0x20
add ebp, 0xfffffff8
por xmm1, xmm2
por xmm0, xmm3
jne 0x4588f0
por xmm0, xmm1
cmp edx, esi
mov ebp, dword [esp + 0x78]
mov esi, dword [esp]
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ecx, xmm0
je 0x458948
mov edx, edi
sub edx, eax
lea eax, [esi + eax*4]
nop word cs:[eax + eax]
nop
or ecx, dword [eax]
add eax, 4
dec edx
jne 0x458940
test ecx, ecx
jne 0x45895a
mov eax, dword [esp + 0x7c]
cmp dword [eax + 0xc], 0
je 0x458b21
mov eax, dword [esp + 0x88]
test eax, eax
je 0x4589d6
cmp edi, 0x20
mov eax, 0x800
mov ecx, 0x200
mov dword [esp], esi
mov ebp, 1
cmovg ecx, eax
mov dword [esp + 4], ecx
nop word cs:[eax + eax]
nop dword [eax + eax]
movzx esi, word [ebp + ebp + 0x57e994]
push esi
push dword [esp + 0x80]
call sym.adb.exe_bn_mod_u16_consttime
add esp, 8
test ax, ax
je 0x458aec
inc ebp
cmp ebp, dword [esp + 4]
jb 0x458990
mov eax, dword [esp + 0x8c]
test eax, eax
je 0x4589d6
push eax
push 0xffffffffffffffff
push 1
call dword [eax + 4]
add esp, 0xc
test eax, eax
je 0x458ec2
mov ecx, dword [esp + 0x80]
mov ebp, dword [esp + 0x84]
mov ebx, dword [esp + 0x7c]
test ecx, ecx
je 0x458b0d
xor edi, edi
test ebp, ebp
mov esi, 0
mov dword [esp + 0x60], ecx
jne 0x458a61
push 0x2c
call sym.adb.exe_OPENSSL_malloc
add esp, 4
mov esi, eax
test eax, eax
je 0x458e1a
mov ebp, esi
mov dword [esi + 4], 0
mov dword [esi], 0
mov dword [esi + 0xc], 0
mov dword [esi + 8], 0
mov dword [esi + 0x14], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x1c], 0
mov dword [esi + 0x18], 0
mov dword [esi + 0x24], 0
mov dword [esi + 0x20], 0
mov dword [esi + 0x28], 0
push ebp
call sym.adb.exe_BN_CTX_start
add esp, 4
mov dword [esp + 0x1c], ebp
push ebp
call sym.adb.exe_BN_CTX_get
add esp, 4
mov ebp, eax
test eax, eax
je 0x458d89
push 0x448710
push 0x5c4170
call sym.adb.exe_CRYPTO_once
add esp, 8
push 0x5c4174
push ebx
push ebp
call fcn.00448030
add esp, 0xc
test eax, eax
je 0x458d8d
mov ecx, dword [ebx + 4]
mov edi, ebp
mov dword [esp + 0x30], ebp
nop word cs:[eax + eax]
nop dword [eax]
test ecx, ecx
jle 0x458c24
mov eax, dword [ebx]
mov eax, dword [eax + ecx*4 - 4]
dec ecx
test eax, eax
je 0x458ac0
jmp 0x458c33
xor eax, eax
mov dword [ebp], eax
mov edi, 1
mov eax, edi
add esp, 0x64
pop esi
pop edi
pop ebx
pop ebp
ret
xor ebx, esi
cmp edi, 2
jl 0x458b2a
lea ecx, [edi - 1]
mov eax, 1
cmp ecx, 8
jae 0x458e36
mov ecx, dword [esp + 0x78]
jmp 0x458e8b
mov ecx, dword [ebx + 4]
test ecx, ecx
jle 0x458b33
mov eax, dword [ebx]
mov eax, dword [eax + ecx*4 - 4]
dec ecx
test eax, eax
je 0x458b10
jmp 0x458b40
mov dword [ebp], 1
jmp 0x458add
mov ecx, dword [esp + 0x78]
jmp 0x458ea8
je 0x458ed5
mov eax, dword [ebx]
mov eax, dword [eax + ecx*4 - 4]
dec ecx
shl ecx, 5
xor edx, edx
test eax, eax
setne dl
or edx, ecx
mov ecx, eax
shr ecx, 0x10
mov esi, ecx
xor ecx, eax
neg esi
sar esi, 0x1f
and ecx, esi
and esi, 0x10
xor ecx, eax
or esi, edx
mov eax, ecx
shr eax, 8
mov edx, eax
xor eax, ecx
neg edx
sar edx, 0x1f
and eax, edx
and edx, 8
xor eax, ecx
or edx, esi
mov ecx, eax
shr ecx, 4
mov esi, ecx
xor ecx, eax
neg esi
sar esi, 0x1f
and ecx, esi
and esi, 4
xor ecx, eax
or esi, edx
mov eax, ecx
shr eax, 2
mov edx, eax
xor eax, ecx
neg edx
sar edx, 0x1f
and eax, edx
and edx, 2
xor eax, ecx
or edx, esi
mov ecx, 3
shr eax, 1
neg eax
shr eax, 0x1f
add eax, edx
cmp eax, 0xea2
jg 0x4589f0
mov ecx, 4
cmp eax, 0x540
jg 0x4589f0
mov ecx, 5
cmp eax, 0x1db
jg 0x4589f0
mov ecx, 6
cmp eax, 0x18f
jg 0x4589f0
mov ecx, 8
cmp eax, 0x133
jg 0x4589f0
mov ecx, 0xd
cmp eax, 0xcc
jg 0x4589f0
xor ecx, ecx
cmp eax, 0x9b
setl cl
lea ecx, [ecx + ecx*8 + 0x13]
jmp 0x4589f0
test ecx, ecx
je 0x458edf
mov eax, dword [ebx]
mov eax, dword [eax + ecx*4 - 4]
dec ecx
shl ecx, 5
xor edx, edx
test eax, eax
mov edi, esi
setne dl
or edx, ecx
mov ecx, eax
shr ecx, 0x10
mov esi, ecx
xor ecx, eax
neg esi
sar esi, 0x1f
and ecx, esi
and esi, 0x10
xor ecx, eax
or esi, edx
mov eax, ecx
shr eax, 8
mov edx, eax
xor eax, ecx
neg edx
sar edx, 0x1f
and eax, edx
and edx, 8
xor eax, ecx
or edx, esi
mov ecx, eax
shr ecx, 4
mov esi, ecx
xor ecx, eax
neg esi
sar esi, 0x1f
and ecx, esi
and esi, 4
xor ecx, eax
or esi, edx
mov edx, ecx
shr edx, 2
mov eax, edx
xor edx, ecx
neg eax
sar eax, 0x1f
and edx, eax
and eax, 2
xor edx, ecx
or eax, esi
mov esi, edi
mov edi, dword [esp + 0x30]
shr edx, 1
neg edx
shr edx, 0x1f
add edx, eax
mov dword [esp + 0x38], edx
push edi
call sym.adb.exe_BN_count_low_zero_bits
add esp, 4
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x3c], eax
push ebp
call sym.adb.exe_BN_CTX_get
add esp, 4
test eax, eax
je 0x458d8d
push ebp
push dword [esp + 0x40]
push edi
mov dword [esp + 0x64], eax
push eax
call sym.adb.exe_bn_rshift_secret_shift
add esp, 0x10
xor edi, edi
test eax, eax
je 0x458d89
push ebp
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 0x44], eax
push ebp
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 8], eax
push ebp
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 0x28], eax
push ebp
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 0x24], eax
push ebp
push ebx
call sym.adb.exe_BN_MONT_CTX_new_consttime
add esp, 8
cmp dword [esp + 0x44], 0
je 0x458d91
cmp dword [esp + 8], 0
je 0x458d91
mov ecx, dword [esp + 0x28]
test ecx, ecx
je 0x458d91
cmp dword [esp + 0x24], 0
je 0x458d91
test eax, eax
je 0x458d91
mov edx, dword [eax + 0x18]
mov dword [esp + 0xc], eax
test edx, edx
jle 0x458d6b
mov ecx, dword [eax + 0x14]
cmp dword [ecx + edx*4 - 4], 0
mov ecx, dword [esp + 0x28]
js 0x458eec
push dword [esp + 0x1c]
push eax
push eax
push ecx
mov ebp, ecx
call sym.adb.exe_BN_from_montgomery
add esp, 0x10
test eax, eax
jne 0x458f41
jmp 0x459814
xor eax, eax
jmp 0x458d91
xor eax, eax
xor edi, edi
push eax
call sym.adb.exe_BN_MONT_CTX_free
add esp, 4
mov ebp, dword [esp + 0x1c]
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x458dab
dec eax
mov dword [ebp + 0x24], eax
jmp 0x458e0c
mov ecx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x34], esi
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 0x458dfe
mov ecx, dword [ebp + 0xc]
mov ebx, ecx
sub ebx, edx
test edx, edx
mov dword [ebp + 0xc], ebx
je 0x458dfe
dec ecx
mov edx, eax
and ecx, 0xf
sub edx, esi
nop
test ecx, ecx
je 0x458dea
dec ecx
inc edx
jne 0x458de0
jmp 0x458dfe
mov ecx, dword [ebp + 4]
mov ecx, dword [ecx + 0x140]
mov dword [ebp + 4], ecx
mov ecx, 0xf
inc edx
jne 0x458de0
mov esi, dword [esp + 0x34]
mov dword [ebp + 0x20], eax
mov dword [ebp + 0x28], 0
push esi
call sym.adb.exe_BN_CTX_free
add esp, 4
jmp 0x458ae2
push 0x7f
push str.external_boringssl_src_crypto_fipsmodule_bn_ctx.c
push 0x41
push 0
push 3
call sym.adb.exe_ERR_put_error
add esp, 0x14
xor edi, edi
jmp 0x458ae2
movd xmm1, ebx
mov ebx, dword [esp]
mov edx, ecx
pxor xmm0, xmm0
and edx, 0xfffffff8
lea eax, [edx + 1]
mov ebp, edx
lea ebx, [ebx + 0x14]
nop
movdqu xmm2, xmmword [ebx - 0x10]
movdqu xmm3, xmmword [ebx]
add ebx, 0x20
add ebp, 0xfffffff8
por xmm1, xmm2
por xmm0, xmm3
jne 0x458e50
por xmm0, xmm1
cmp ecx, edx
mov ecx, dword [esp + 0x78]
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ebx, xmm0
je 0x458ea8
mov edx, dword [esp]
sub edi, eax
lea eax, [edx + eax*4]
nop word cs:[eax + eax]
nop dword [eax]
or ebx, dword [eax]
add eax, 4
dec edi
jne 0x458ea0
xor eax, eax
test ebx, ebx
jne 0x458ece
test si, si
je 0x458ec9
mov edx, dword [esp + 0x7c]
xor eax, eax
cmp dword [edx + 0xc], 0
sete al
jmp 0x458ece
xor edi, edi
jmp 0x458ae2
mov eax, 1
mov dword [ecx], eax
jmp 0x458add
mov ecx, 0x1c
jmp 0x4589f0
mov dword [esp + 0x38], 0
jmp 0x458cb0
push edx
push ecx
mov ebp, ecx
call fcn.00447880
add esp, 8
test eax, eax
je 0x459814
mov edx, dword [esp + 0xc]
xor ecx, ecx
mov eax, dword [edx + 0x14]
sub ecx, dword [eax]
mov eax, dword [ebp]
mov dword [eax], ecx
mov ecx, dword [edx + 0x18]
cmp ecx, 2
jl 0x458f37
mov eax, 1
mov ecx, dword [edx + 0x14]
mov edx, dword [ebp]
mov ecx, dword [ecx + eax*4]
not ecx
mov dword [edx + eax*4], ecx
mov edx, dword [esp + 0xc]
inc eax
mov ecx, dword [edx + 0x18]
cmp eax, ecx
jl 0x458f1d
mov dword [ebp + 4], ecx
mov dword [ebp + 0xc], 0
push ebp
push ebx
push dword [esp + 0x2c]
call fcn.00448030
add esp, 0xc
test eax, eax
je 0x459814
mov eax, dword [esp + 0x3c]
xor edi, edi
mov dword [esp + 0x34], esi
mov dword [esp + 0x40], 1
xor eax, 0x80000000
mov dword [esp + 0x5c], eax
lea eax, [esp + 0x4c]
push dword [esp + 0x30]
push 2
push eax
mov esi, dword [esp + 0x50]
push esi
call fcn.00459970
add esp, 0x10
test eax, eax
je 0x459801
mov eax, dword [esp + 0xc]
push eax
mov eax, dword [esp + 0x20]
push eax
push ebx
push dword [esp + 0x64]
push esi
mov esi, dword [esp + 0x1c]
push esi
call sym.adb.exe_BN_mod_exp_mont_consttime
add esp, 0x18
test eax, eax
je 0x459801
add edi, dword [esp + 0x4c]
mov dword [esp + 0x50], edi
sub esp, 8
mov dword [esp + 4], 0x448710
mov dword [esp], 0x5c4170
call sym.adb.exe_CRYPTO_once
add esp, 8
mov edi, dword [esi + 4]
mov edx, dword [0x5c4178]
xor ecx, ecx
mov dword [esp + 4], edi
sub edi, edx
jge 0x459069
mov eax, dword [esp + 4]
mov ebx, dword [0x5c4174]
mov ebp, edx
xor ecx, ecx
sub ebp, eax
cmp ebp, 7
jbe 0x45905a
mov esi, dword [esp + 4]
mov ecx, ebx
mov ebx, ebp
pxor xmm0, xmm0
pxor xmm1, xmm1
and ebx, 0xfffffff8
mov dword [esp], ecx
lea eax, [esi + ebx]
lea ecx, [ecx + esi*4 + 0x10]
mov esi, ebx
movdqu xmm2, xmmword [ecx - 0x10]
movdqu xmm3, xmmword [ecx]
add ecx, 0x20
add esi, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x459020
por xmm1, xmm0
cmp ebp, ebx
mov ebx, dword [esp]
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd ecx, xmm1
je 0x459069
mov esi, edx
lea ebx, [ebx + eax*4]
sub esi, eax
or ecx, dword [ebx]
add ebx, 4
dec esi
jne 0x459061
mov eax, dword [esp + 4]
cmp edx, eax
jge 0x4590e3
mov esi, dword [esp + 8]
cmp edi, 7
mov ebp, dword [esi]
ja 0x459080
mov ebx, edx
jmp 0x4590d3
mov esi, edi
movd xmm1, ecx
mov dword [esp], ebp
lea ecx, [ebp + edx*4 + 0x10]
pxor xmm0, xmm0
and esi, 0xfffffff8
lea ebx, [edx + esi]
mov ebp, esi
movdqu xmm2, xmmword [ecx - 0x10]
movdqu xmm3, xmmword [ecx]
add ecx, 0x20
add ebp, 0xfffffff8
por xmm1, xmm2
por xmm0, xmm3
jne 0x459099
por xmm0, xmm1
mov ebp, dword [esp]
cmp edi, esi
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ecx, xmm0
je 0x4590e3
mov esi, eax
lea edi, [ebp + ebx*4]
sub esi, ebx
or ecx, dword [edi]
add edi, 4
dec esi
jne 0x4590db
cmp eax, edx
cmovle edx, eax
test edx, edx
jle 0x45914a
mov esi, dword [esp + 8]
mov edi, dword [0x5c4174]
xor ebx, ebx
cmp edx, 3
mov esi, dword [esi]
jbe 0x45913d
mov ebx, edx
movd xmm0, ecx
xor ecx, ecx
and ebx, 0xfffffffc
movdqu xmm1, xmmword [esi + ecx*4]
movdqu xmm2, xmmword [edi + ecx*4]
add ecx, 4
cmp ebx, ecx
pxor xmm2, xmm1
por xmm0, xmm2
jne 0x45910a
pshufd xmm1, xmm0, 0x4e
cmp edx, ebx
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ecx, xmm0
je 0x45914a
mov ebp, dword [edi + ebx*4]
xor ebp, dword [esi + ebx*4]
inc ebx
or ecx, ebp
cmp ebx, edx
jl 0x45913d
mov edx, dword [esp + 8]
mov esi, dword [0x5c4180]
xor ebp, ebp
mov edx, dword [edx + 0xc]
xor esi, edx
mov dword [esp + 0x14], edx
mov dword [esp], esi
mov esi, dword [esp + 0x30]
mov ebx, dword [esi + 4]
sub eax, ebx
mov dword [esp + 0x20], eax
jge 0x4591fc
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 4]
mov edx, ebx
xor ebp, ebp
mov edi, dword [esi]
sub edx, eax
cmp edx, 7
jbe 0x4591ed
mov ebp, dword [esp + 4]
mov esi, edx
pxor xmm0, xmm0
pxor xmm1, xmm1
mov dword [esp + 0x18], edi
and esi, 0xfffffff8
lea eax, [ebp + esi]
lea ebp, [edi + ebp*4 + 0x10]
mov dword [esp + 0x10], eax
mov eax, esi
movdqu xmm2, xmmword [ebp - 0x10]
movdqu xmm3, xmmword [ebp]
add ebp, 0x20
add esi, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x4591ad
por xmm1, xmm0
cmp edx, eax
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd ebp, xmm1
je 0x4591fc
mov esi, ebx
lea edi, [edi + eax*4]
sub esi, eax
or ebp, dword [edi]
add edi, 4
dec esi
jne 0x4591f4
mov eax, dword [esp + 4]
cmp ebx, eax
jge 0x459283
mov esi, dword [esp + 8]
mov edx, dword [esp + 0x20]
mov edi, dword [esi]
cmp edx, 7
ja 0x459217
mov esi, ebx
jmp 0x459274
and edx, 0xfffffff8
movd xmm1, ebp
mov dword [esp + 0x18], edi
lea edi, [edi + ebx*4 + 0x10]
pxor xmm0, xmm0
lea esi, [ebx + edx]
mov ebp, edx
mov dword [esp + 0x10], esi
movdqu xmm2, xmmword [edi - 0x10]
movdqu xmm3, xmmword [edi]
add edi, 0x20
add ebp, 0xfffffff8
por xmm1, xmm2
por xmm0, xmm3
jne 0x459233
por xmm0, xmm1
cmp dword [esp + 0x20], edx
mov edi, dword [esp + 0x18]
mov esi, dword [esp + 0x10]
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ebp, xmm0
je 0x459283
mov edx, eax
sub edx, esi
lea esi, [edi + esi*4]
or ebp, dword [esi]
add esi, 4
dec edx
jne 0x45927b
mov edi, dword [esp + 0x30]
or dword [esp], ecx
cmp eax, ebx
cmovle ebx, eax
test ebx, ebx
jle 0x4592ed
mov eax, dword [esp + 8]
mov ecx, dword [edi]
xor edx, edx
cmp ebx, 3
mov eax, dword [eax]
jbe 0x4592e0
mov edx, ebx
movd xmm0, ebp
xor esi, esi
and edx, 0xfffffffc
movdqu xmm1, xmmword [eax + esi*4]
movdqu xmm2, xmmword [ecx + esi*4]
add esi, 4
cmp edx, esi
pxor xmm2, xmm1
por xmm0, xmm2
jne 0x4592ad
pshufd xmm1, xmm0, 0x4e
cmp ebx, edx
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ebp, xmm0
je 0x4592ed
mov esi, dword [ecx + edx*4]
xor esi, dword [eax + edx*4]
inc edx
or ebp, esi
cmp edx, ebx
jl 0x4592e0
cmp dword [esp], 0
mov eax, dword [esp + 0x14]
sete bl
xor eax, dword [edi + 0xc]
or eax, ebp
sete bh
push dword [esp + 0x1c]
mov eax, dword [esp + 0x10]
push eax
push eax
mov eax, dword [esp + 0x14]
push eax
push eax
call sym.adb.exe_BN_mod_mul_montgomery
add esp, 0x14
xor edi, edi
test eax, eax
je 0x459810
or bl, bh
movzx eax, bl
neg eax
cmp dword [esp + 0x38], 2
mov dword [esp + 0x48], eax
jl 0x459797
mov edx, eax
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp + 0xc]
mov dword [esp + 0x20], 1
mov dword [esp + 0x14], edx
push ebp
push eax
mov esi, dword [esp + 0x10]
push esi
push esi
push esi
call sym.adb.exe_BN_mod_mul_montgomery
add esp, 0x14
test eax, eax
je 0x459810
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x24]
mov edx, dword [esi + 4]
xor ebp, ebp
xor eax, dword [esp + 0x3c]
mov ecx, dword [ecx + 4]
mov dword [esp + 4], edx
dec eax
and eax, dword [esp + 0x5c]
sub edx, ecx
mov dword [esp + 0x18], edx
mov dword [esp], eax
jge 0x459428
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 4]
mov ebx, ecx
xor ebp, ebp
mov esi, dword [eax]
sub ebx, edx
cmp ebx, 7
jbe 0x45940c
mov eax, dword [esp + 4]
mov ebp, esi
mov esi, ebx
pxor xmm0, xmm0
pxor xmm1, xmm1
and esi, 0xfffffff8
mov dword [esp + 0x10], ebp
lea edx, [eax + esi]
lea ebp, [ebp + eax*4 + 0x10]
mov eax, esi
nop dword [eax + eax]
movdqu xmm2, xmmword [ebp - 0x10]
movdqu xmm3, xmmword [ebp]
add ebp, 0x20
add eax, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x4593d0
por xmm1, xmm0
cmp ebx, esi
mov esi, dword [esp + 0x10]
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd ebp, xmm1
je 0x459428
mov eax, ecx
lea esi, [esi + edx*4]
sub eax, edx
nop word cs:[eax + eax]
nop dword [eax]
or ebp, dword [esi]
add esi, 4
dec eax
jne 0x459420
mov ebx, dword [esp]
sar ebx, 0x1f
cmp ecx, dword [esp + 4]
jge 0x4594c8
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x18]
mov esi, dword [eax]
cmp edx, 7
mov dword [esp + 0x10], esi
ja 0x45944f
mov esi, ecx
jmp 0x4594af
mov eax, edx
mov dword [esp], ebx
movd xmm1, ebp
lea ebp, [esi + ecx*4 + 0x10]
pxor xmm0, xmm0
and eax, 0xfffffff8
lea ebx, [ecx + eax]
mov dword [esp + 0x2c], ebx
mov ebx, eax
nop dword [eax]
movdqu xmm2, xmmword [ebp - 0x10]
movdqu xmm3, xmmword [ebp]
add ebp, 0x20
add ebx, 0xfffffff8
por xmm1, xmm2
por xmm0, xmm3
jne 0x459470
por xmm0, xmm1
mov ebx, dword [esp]
mov esi, dword [esp + 0x2c]
cmp edx, eax
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ebp, xmm0
je 0x4594c8
mov eax, dword [esp + 4]
mov edx, dword [esp + 0x10]
sub eax, esi
lea edx, [edx + esi*4]
nop dword [eax]
or ebp, dword [edx]
add edx, 4
dec eax
jne 0x4594c0
mov eax, dword [esp + 4]
or ebx, dword [esp + 0x14]
cmp eax, ecx
mov dword [esp], ebx
cmovle ecx, eax
test ecx, ecx
jle 0x45954d
mov eax, dword [esp + 8]
mov edx, dword [eax]
mov eax, dword [esp + 0x24]
mov esi, dword [eax]
xor eax, eax
cmp ecx, 3
jbe 0x459540
mov eax, ecx
movd xmm0, ebp
xor ebx, ebx
and eax, 0xfffffffc
nop word [eax + eax]
movdqu xmm1, xmmword [edx + ebx*4]
movdqu xmm2, xmmword [esi + ebx*4]
add ebx, 4
cmp eax, ebx
pxor xmm2, xmm1
por xmm0, xmm2
jne 0x459500
pshufd xmm1, xmm0, 0x4e
cmp ecx, eax
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ebp, xmm0
je 0x45954d
nop word cs:[eax + eax]
nop dword [eax]
mov ebx, dword [esi + eax*4]
xor ebx, dword [edx + eax*4]
inc eax
or ebp, ebx
cmp eax, ecx
jl 0x459540
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x28]
mov ecx, dword [eax + 0xc]
mov eax, dword [esp + 0x24]
mov ebx, dword [esi + 4]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x18], ecx
xor eax, ecx
xor ecx, ecx
or eax, ebp
mov eax, dword [esp]
sete cl
xor edx, edx
not eax
and eax, ecx
mov ecx, dword [esp + 4]
mov dword [esp + 0x14], eax
sub ecx, ebx
mov dword [esp + 0x10], ecx
jge 0x459628
mov eax, dword [esp + 0x28]
mov ebp, ebx
xor edx, edx
mov esi, dword [eax]
mov eax, dword [esp + 4]
sub ebp, eax
cmp ebp, 7
jbe 0x45960f
mov eax, dword [esp + 4]
mov ecx, esi
mov esi, ebp
pxor xmm0, xmm0
pxor xmm1, xmm1
and esi, 0xfffffff8
mov dword [esp + 0x2c], ecx
lea edx, [eax + esi]
mov dword [esp + 0x54], edx
lea edx, [ecx + eax*4 + 0x10]
mov ecx, esi
nop word cs:[eax + eax]
nop
movdqu xmm2, xmmword [edx - 0x10]
movdqu xmm3, xmmword [edx]
add edx, 0x20
add ecx, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x4595d0
por xmm1, xmm0
cmp ebp, esi
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 0x54]
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd edx, xmm1
je 0x459628
mov ecx, ebx
lea esi, [esi + eax*4]
sub ecx, eax
nop word cs:[eax + eax]
or edx, dword [esi]
add esi, 4
dec ecx
jne 0x459620
mov ebp, dword [esp + 0x14]
neg ebp
cmp ebx, dword [esp + 4]
mov dword [esp + 0x14], ebp
jge 0x4596c8
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x10]
mov eax, dword [eax]
cmp ecx, 7
ja 0x45964f
mov esi, ebx
jmp 0x4596b1
and ecx, 0xfffffff8
movd xmm1, edx
lea edx, [eax + ebx*4 + 0x10]
pxor xmm0, xmm0
mov dword [esp + 0x2c], eax
lea esi, [ebx + ecx]
mov ebp, ecx
nop word [eax + eax]
movdqu xmm2, xmmword [edx - 0x10]
movdqu xmm3, xmmword [edx]
add edx, 0x20
add ebp, 0xfffffff8
por xmm1, xmm2
por xmm0, xmm3
jne 0x459670
por xmm0, xmm1
cmp dword [esp + 0x10], ecx
mov ebp, dword [esp + 0x14]
mov eax, dword [esp + 0x2c]
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd edx, xmm0
je 0x4596c8
mov ecx, dword [esp + 4]
sub ecx, esi
lea esi, [eax + esi*4]
nop word [eax + eax]
or edx, dword [esi]
add esi, 4
dec ecx
jne 0x4596c0
mov eax, dword [esp + 4]
or dword [esp], ebp
cmp eax, ebx
cmovle ebx, eax
test ebx, ebx
jle 0x45974d
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 8]
xor ebp, ebp
cmp ebx, 3
mov ecx, dword [eax]
mov esi, dword [esi]
jbe 0x459740
mov ebp, ebx
movd xmm0, edx
xor edx, edx
and ebp, 0xfffffffc
nop word cs:[eax + eax]
movdqu xmm1, xmmword [ecx + edx*4]
movdqu xmm2, xmmword [esi + edx*4]
add edx, 4
cmp ebp, edx
pxor xmm2, xmm1
por xmm0, xmm2
jne 0x459700
pshufd xmm1, xmm0, 0x4e
cmp ebx, ebp
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd edx, xmm0
je 0x45974d
nop word cs:[eax + eax]
nop dword [eax]
mov eax, dword [esi + ebp*4]
xor eax, dword [ecx + ebp*4]
inc ebp
or edx, eax
cmp ebp, ebx
jl 0x459740
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
or dword [esp + 0x48], eax
mov eax, dword [esp + 0x28]
xor ecx, dword [eax + 0xc]
xor eax, eax
or ecx, edx
mov edx, dword [esp]
sete al
mov ecx, edx
not ecx
test eax, ecx
jne 0x459797
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x78]
mov ebx, dword [esp + 0x7c]
mov ebp, dword [esp + 0x1c]
inc eax
mov dword [esp + 0x20], eax
cmp eax, dword [esp + 0x38]
mov eax, dword [esp + 0xc]
jl 0x45934a
jmp 0x45979f
mov esi, dword [esp + 0x78]
mov ebx, dword [esp + 0x7c]
cmp dword [esp + 0x48], 0
je 0x459805
mov eax, dword [esp + 0x8c]
mov ebp, dword [esp + 0x40]
test eax, eax
je 0x4597c3
push eax
push ebp
push 1
call dword [eax + 4]
add esp, 0xc
test eax, eax
je 0x459810
inc ebp
xor eax, eax
mov edi, dword [esp + 0x60]
cmp ebp, 0x11
mov dword [esp + 0x40], ebp
setb al
mov ebp, eax
mov eax, dword [esp + 0x50]
mov edx, eax
mov ecx, eax
sub edx, edi
xor ecx, edi
mov edi, eax
xor edx, eax
or edx, ecx
xor edx, eax
lea eax, [esp + 0x4c]
sar edx, 0x1f
or edx, ebp
jne 0x458f76
mov dword [esi], 1
jmp 0x45980b
xor edi, edi
jmp 0x459810
mov dword [esi], 0
mov edi, 1
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 0xc]
jmp 0x458d91