Function at 0x4568d0
Capabilities:
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 0x4456d0
push 0x5d9190
call sym.adb.exe_CRYPTO_once
add esp, 8
test ebx, ebx
je 0x456934
mov esi, dword [ebx + 0xc]
cmp esi, dword [0x5d91a0]
jne 0x456927
push 0x5d9194
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 0x456934
jmp 0x456c1d
mov edi, 1
test esi, esi
jne 0x456c22
mov edi, dword [ebx + 4]
test edi, edi
jle 0x4569ca
mov esi, dword [ebx]
mov ebx, dword [esi]
test bl, 1
jne 0x4569f5
xor ebx, 2
cmp edi, 2
jl 0x4569d9
lea ecx, [edi - 1]
mov eax, 1
cmp ecx, 8
jb 0x4569ba
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 0x456980
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 0x4569d9
sub edi, eax
lea eax, [esi + eax*4]
nop
or ebx, dword [eax]
add eax, 4
dec edi
jne 0x4569c0
jmp 0x4569d9
test edi, edi
je 0x456c18
mov eax, dword [ebx]
mov ebx, dword [eax]
xor ebx, 2
xor eax, eax
test ebx, ebx
jne 0x456c1a
mov ecx, dword [esp + 0x7c]
xor eax, eax
cmp dword [ecx + 0xc], 0
sete al
jmp 0x456c1a
mov ecx, ebx
xor ecx, 3
cmp edi, 2
jl 0x456a88
lea edx, [edi - 1]
mov eax, 1
cmp edx, 8
jb 0x456a6e
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 0x456a30
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 0x456a88
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 0x456a80
test ecx, ecx
jne 0x456a9a
mov eax, dword [esp + 0x7c]
cmp dword [eax + 0xc], 0
je 0x456c68
mov eax, dword [esp + 0x88]
test eax, eax
je 0x456b16
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 + 0x590c2c]
push esi
push dword [esp + 0x80]
call sym.adb.exe_bn_mod_u16_consttime
add esp, 8
test ax, ax
je 0x456c2c
inc ebp
cmp ebp, dword [esp + 4]
jb 0x456ad0
mov eax, dword [esp + 0x8c]
test eax, eax
je 0x456b16
push eax
push 0xffffffffffffffff
push 1
call dword [eax + 4]
add esp, 0xc
test eax, eax
je 0x45703a
mov ecx, dword [esp + 0x80]
mov ebp, dword [esp + 0x84]
mov ebx, dword [esp + 0x7c]
test ecx, ecx
je 0x456c4d
xor edi, edi
test ebp, ebp
mov esi, 0
mov dword [esp + 0x60], ecx
jne 0x456ba1
push 0x2c
call sym.adb.exe_OPENSSL_malloc
add esp, 4
test eax, eax
je 0x456ee4
mov esi, eax
mov ebp, eax
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 + 0x28], 0
push ebp
call sym.adb.exe_BN_CTX_start
add esp, 4
mov dword [esp + 0x20], ebp
push ebp
call sym.adb.exe_BN_CTX_get
add esp, 4
test eax, eax
je 0x456c61
mov ebp, eax
push 0x4456d0
push 0x5d9190
call sym.adb.exe_CRYPTO_once
add esp, 8
push 0x5d9194
push ebx
push ebp
call fcn.00444f40
add esp, 0xc
test eax, eax
je 0x456fa1
mov ecx, dword [ebx + 4]
mov dword [esp + 0x34], ebp
mov dword [esp + 0x14], esi
nop word cs:[eax + eax]
nop
test ecx, ecx
jle 0x456d6d
mov eax, dword [ebx]
mov eax, dword [eax + ecx*4 - 4]
dec ecx
test eax, eax
je 0x456c00
jmp 0x456d7c
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 0x456c71
lea ecx, [edi - 1]
mov eax, 1
cmp ecx, 8
jae 0x456f00
mov ecx, dword [esp + 0x78]
jmp 0x456f5b
mov ecx, dword [ebx + 4]
test ecx, ecx
jle 0x456c7a
mov eax, dword [ebx]
mov eax, dword [eax + ecx*4 - 4]
dec ecx
test eax, eax
je 0x456c50
jmp 0x456c87
xor eax, eax
jmp 0x456fa5
mov dword [ebp], 1
jmp 0x456c1d
mov ecx, dword [esp + 0x78]
jmp 0x456f78
je 0x457058
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 0x456b30
mov ecx, 4
cmp eax, 0x540
jg 0x456b30
mov ecx, 5
cmp eax, 0x1db
jg 0x456b30
mov ecx, 6
cmp eax, 0x18f
jg 0x456b30
mov ecx, 7
cmp eax, 0x15a
jg 0x456b30
mov ecx, 8
cmp eax, 0x133
jg 0x456b30
cmp eax, 0x36
mov eax, 0x1b
mov ecx, 0x22
cmovg ecx, eax
jmp 0x456b30
test ecx, ecx
je 0x457062
mov eax, dword [ebx]
mov eax, dword [eax + ecx*4 - 4]
dec ecx
shl ecx, 5
xor edx, edx
test eax, eax
mov ebp, dword [esp + 0x34]
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
shr edx, 1
neg edx
shr edx, 0x1f
add edx, eax
mov dword [esp + 0x38], edx
push ebp
call sym.adb.exe_BN_count_low_zero_bits
add esp, 4
mov esi, dword [esp + 0x20]
mov edi, eax
push esi
call sym.adb.exe_BN_CTX_get
add esp, 4
test eax, eax
je 0x456f9d
push esi
mov dword [esp + 0x48], edi
push edi
push ebp
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 0x457041
push esi
call sym.adb.exe_BN_CTX_get
add esp, 4
mov ebp, eax
push esi
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 8], eax
push esi
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 0x2c], eax
push esi
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 0x28], eax
push esi
push ebx
call sym.adb.exe_BN_MONT_CTX_new_consttime
add esp, 8
test ebp, ebp
mov dword [esp + 0x50], ebp
je 0x457985
cmp dword [esp + 8], 0
mov esi, dword [esp + 0x14]
je 0x456fa5
mov ecx, dword [esp + 0x2c]
test ecx, ecx
je 0x456fa5
cmp dword [esp + 0x28], 0
je 0x456fa5
test eax, eax
je 0x456fa5
mov edx, dword [eax + 0x18]
mov dword [esp + 0xc], eax
test edx, edx
jle 0x456ec6
mov ecx, dword [eax + 0x14]
cmp dword [ecx + edx*4 - 4], 0
mov ecx, dword [esp + 0x2c]
js 0x45706f
push dword [esp + 0x20]
push eax
push eax
push ecx
mov ebp, ecx
call sym.adb.exe_BN_from_montgomery
add esp, 0x10
test eax, eax
jne 0x4570c4
jmp 0x45799d
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 0x456c22
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 dword [eax + eax]
movdqu xmm2, xmmword [ebx - 0x10]
movdqu xmm3, xmmword [ebx]
add ebx, 0x20
add ebp, 0xfffffff8
por xmm1, xmm2
por xmm0, xmm3
jne 0x456f20
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 0x456f78
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 0x456f70
xor eax, eax
test ebx, ebx
jne 0x457051
test si, si
je 0x45704c
mov edx, dword [esp + 0x7c]
xor eax, eax
cmp dword [edx + 0xc], 0
sete al
jmp 0x457051
mov esi, dword [esp + 0x14]
xor eax, eax
xor edi, edi
push eax
call sym.adb.exe_BN_MONT_CTX_free
add esp, 4
mov ebp, dword [esp + 0x20]
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x456fbf
dec eax
mov dword [ebp + 0x24], eax
jmp 0x45702c
mov ecx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x14], 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 0x45701e
mov ecx, dword [ebp + 0xc]
mov ebx, ecx
sub ebx, edx
test edx, edx
mov dword [ebp + 0xc], ebx
je 0x45701e
dec ecx
mov edx, eax
and ecx, 0xf
sub edx, esi
nop word cs:[eax + eax]
nop dword [eax]
test ecx, ecx
je 0x45700a
dec ecx
inc edx
jne 0x457000
jmp 0x45701e
mov ecx, dword [ebp + 4]
mov ecx, dword [ecx + 0x140]
mov dword [ebp + 4], ecx
mov ecx, 0xf
inc edx
jne 0x457000
mov esi, dword [esp + 0x14]
mov dword [ebp + 0x20], eax
mov dword [ebp + 0x28], 0
push esi
call sym.adb.exe_BN_CTX_free
add esp, 4
jmp 0x456c22
xor edi, edi
jmp 0x456c22
mov esi, dword [esp + 0x14]
xor eax, eax
jmp 0x456fa5
mov eax, 1
mov dword [ecx], eax
jmp 0x456c1d
mov ecx, 0x22
jmp 0x456b30
mov dword [esp + 0x38], 0
jmp 0x456df5
push edx
push ecx
mov ebp, ecx
call fcn.00444800
add esp, 8
test eax, eax
je 0x45799d
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 0x4570ba
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 0x4570a0
mov dword [ebp + 4], ecx
mov dword [ebp + 0xc], 0
push ebp
push ebx
push dword [esp + 0x30]
call fcn.00444f40
add esp, 0xc
test eax, eax
je 0x45799d
mov eax, dword [esp + 0x44]
xor edi, edi
mov dword [esp + 0x3c], 1
xor eax, 0x80000000
mov dword [esp + 0x5c], eax
lea eax, [esp + 0x48]
push dword [esp + 0x34]
push 2
push eax
mov esi, dword [esp + 0x5c]
push esi
call fcn.00457ad0
add esp, 0x10
test eax, eax
je 0x457981
mov eax, dword [esp + 0xc]
push eax
mov eax, dword [esp + 0x24]
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 0x457981
add edi, dword [esp + 0x48]
mov dword [esp + 0x4c], edi
sub esp, 8
mov dword [esp + 4], 0x4456d0
mov dword [esp], 0x5d9190
call sym.adb.exe_CRYPTO_once
add esp, 8
mov edi, dword [esi + 4]
mov edx, dword [0x5d9198]
xor ecx, ecx
mov dword [esp + 4], edi
sub edi, edx
jge 0x4571e8
mov eax, dword [esp + 4]
mov ebx, dword [0x5d9194]
mov ebp, edx
xor ecx, ecx
sub ebp, eax
cmp ebp, 7
jbe 0x4571d9
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 0x45719f
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 0x4571e8
mov esi, edx
lea ebx, [ebx + eax*4]
sub esi, eax
or ecx, dword [ebx]
add ebx, 4
dec esi
jne 0x4571e0
mov eax, dword [esp + 4]
cmp edx, eax
jge 0x457262
mov esi, dword [esp + 8]
cmp edi, 7
mov ebp, dword [esi]
ja 0x4571ff
mov ebx, edx
jmp 0x457252
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 0x457218
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 0x457262
mov esi, eax
lea edi, [ebp + ebx*4]
sub esi, ebx
or ecx, dword [edi]
add edi, 4
dec esi
jne 0x45725a
cmp eax, edx
cmovle edx, eax
test edx, edx
jle 0x4572c9
mov esi, dword [esp + 8]
mov edi, dword [0x5d9194]
xor ebx, ebx
cmp edx, 3
mov esi, dword [esi]
jbe 0x4572bc
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 0x457289
pshufd xmm1, xmm0, 0x4e
cmp edx, ebx
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ecx, xmm0
je 0x4572c9
mov ebp, dword [edi + ebx*4]
xor ebp, dword [esi + ebx*4]
inc ebx
or ecx, ebp
cmp ebx, edx
jl 0x4572bc
mov edx, dword [esp + 8]
mov esi, dword [0x5d91a0]
xor ebp, ebp
mov edx, dword [edx + 0xc]
xor esi, edx
mov dword [esp + 0x18], edx
mov dword [esp], esi
mov esi, dword [esp + 0x34]
mov ebx, dword [esi + 4]
sub eax, ebx
mov dword [esp + 0x24], eax
jge 0x45737b
mov esi, dword [esp + 0x34]
mov eax, dword [esp + 4]
mov edx, ebx
xor ebp, ebp
mov edi, dword [esi]
sub edx, eax
cmp edx, 7
jbe 0x45736c
mov ebp, dword [esp + 4]
mov esi, edx
pxor xmm0, xmm0
pxor xmm1, xmm1
mov dword [esp + 0x1c], 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 0x45732c
por xmm1, xmm0
cmp edx, eax
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x10]
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd ebp, xmm1
je 0x45737b
mov esi, ebx
lea edi, [edi + eax*4]
sub esi, eax
or ebp, dword [edi]
add edi, 4
dec esi
jne 0x457373
mov eax, dword [esp + 4]
cmp ebx, eax
jge 0x457402
mov esi, dword [esp + 8]
mov edx, dword [esp + 0x24]
mov edi, dword [esi]
cmp edx, 7
ja 0x457396
mov esi, ebx
jmp 0x4573f3
and edx, 0xfffffff8
movd xmm1, ebp
mov dword [esp + 0x1c], 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 0x4573b2
por xmm0, xmm1
cmp dword [esp + 0x24], edx
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x10]
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ebp, xmm0
je 0x457402
mov edx, eax
sub edx, esi
lea esi, [edi + esi*4]
or ebp, dword [esi]
add esi, 4
dec edx
jne 0x4573fa
mov edi, dword [esp + 0x34]
or dword [esp], ecx
cmp eax, ebx
cmovle ebx, eax
test ebx, ebx
jle 0x45746c
mov eax, dword [esp + 8]
mov ecx, dword [edi]
xor edx, edx
cmp ebx, 3
mov eax, dword [eax]
jbe 0x45745f
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 0x45742c
pshufd xmm1, xmm0, 0x4e
cmp ebx, edx
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ebp, xmm0
je 0x45746c
mov esi, dword [ecx + edx*4]
xor esi, dword [eax + edx*4]
inc edx
or ebp, esi
cmp edx, ebx
jl 0x45745f
cmp dword [esp], 0
mov eax, dword [esp + 0x18]
sete bl
xor eax, dword [edi + 0xc]
or eax, ebp
sete bh
push dword [esp + 0x20]
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 0x457999
or bl, bh
movzx eax, bl
neg eax
cmp dword [esp + 0x38], 2
mov dword [esp + 0x40], eax
jl 0x457917
mov edx, eax
mov ebp, dword [esp + 0x20]
mov eax, dword [esp + 0xc]
mov dword [esp + 0x24], 1
mov dword [esp + 0x18], 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 0x457999
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov edx, dword [esi + 4]
xor ebp, ebp
xor eax, dword [esp + 0x44]
mov ecx, dword [ecx + 4]
mov dword [esp + 4], edx
dec eax
and eax, dword [esp + 0x5c]
sub edx, ecx
mov dword [esp + 0x1c], edx
mov dword [esp], eax
jge 0x4575a8
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 4]
mov ebx, ecx
xor ebp, ebp
mov esi, dword [eax]
sub ebx, edx
cmp ebx, 7
jbe 0x45758c
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 word [eax + eax]
movdqu xmm2, xmmword [ebp - 0x10]
movdqu xmm3, xmmword [ebp]
add ebp, 0x20
add eax, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x457550
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 0x4575a8
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 0x4575a0
mov ebx, dword [esp]
sar ebx, 0x1f
cmp ecx, dword [esp + 4]
jge 0x457648
mov eax, dword [esp + 8]
mov edx, dword [esp + 0x1c]
mov esi, dword [eax]
cmp edx, 7
mov dword [esp + 0x10], esi
ja 0x4575cf
mov esi, ecx
jmp 0x45762f
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 + 0x30], 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 0x4575f0
por xmm0, xmm1
mov ebx, dword [esp]
mov esi, dword [esp + 0x30]
cmp edx, eax
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ebp, xmm0
je 0x457648
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 0x457640
mov eax, dword [esp + 4]
or ebx, dword [esp + 0x18]
cmp eax, ecx
mov dword [esp], ebx
cmovle ecx, eax
test ecx, ecx
jle 0x4576cd
mov eax, dword [esp + 8]
mov edx, dword [eax]
mov eax, dword [esp + 0x28]
mov esi, dword [eax]
xor eax, eax
cmp ecx, 3
jbe 0x4576c0
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 0x457680
pshufd xmm1, xmm0, 0x4e
cmp ecx, eax
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd ebp, xmm0
je 0x4576cd
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 0x4576c0
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x2c]
mov ecx, dword [eax + 0xc]
mov eax, dword [esp + 0x28]
mov ebx, dword [esi + 4]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x1c], 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 + 0x18], eax
sub ecx, ebx
mov dword [esp + 0x10], ecx
jge 0x4577a8
mov eax, dword [esp + 0x2c]
mov ebp, ebx
xor edx, edx
mov esi, dword [eax]
mov eax, dword [esp + 4]
sub ebp, eax
cmp ebp, 7
jbe 0x45778f
mov eax, dword [esp + 4]
mov ecx, esi
mov esi, ebp
pxor xmm0, xmm0
pxor xmm1, xmm1
and esi, 0xfffffff8
mov dword [esp + 0x30], 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 0x457750
por xmm1, xmm0
cmp ebp, esi
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0x54]
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd edx, xmm1
je 0x4577a8
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 0x4577a0
mov ebp, dword [esp + 0x18]
neg ebp
cmp ebx, dword [esp + 4]
mov dword [esp + 0x18], ebp
jge 0x457848
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x10]
mov eax, dword [eax]
cmp ecx, 7
ja 0x4577cf
mov esi, ebx
jmp 0x457831
and ecx, 0xfffffff8
movd xmm1, edx
lea edx, [eax + ebx*4 + 0x10]
pxor xmm0, xmm0
mov dword [esp + 0x30], 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 0x4577f0
por xmm0, xmm1
cmp dword [esp + 0x10], ecx
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x30]
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd edx, xmm0
je 0x457848
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 0x457840
mov eax, dword [esp + 4]
or dword [esp], ebp
cmp eax, ebx
cmovle ebx, eax
test ebx, ebx
jle 0x4578cd
mov esi, dword [esp + 0x2c]
mov eax, dword [esp + 8]
xor ebp, ebp
cmp ebx, 3
mov ecx, dword [eax]
mov esi, dword [esi]
jbe 0x4578c0
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 0x457880
pshufd xmm1, xmm0, 0x4e
cmp ebx, ebp
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd edx, xmm0
je 0x4578cd
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 0x4578c0
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x1c]
or dword [esp + 0x40], eax
mov eax, dword [esp + 0x2c]
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 0x457917
mov eax, dword [esp + 0x24]
mov esi, dword [esp + 0x78]
mov ebx, dword [esp + 0x7c]
mov ebp, dword [esp + 0x20]
inc eax
mov dword [esp + 0x24], eax
cmp eax, dword [esp + 0x38]
mov eax, dword [esp + 0xc]
jl 0x4574c9
jmp 0x45791f
mov esi, dword [esp + 0x78]
mov ebx, dword [esp + 0x7c]
cmp dword [esp + 0x40], 0
je 0x45798e
mov eax, dword [esp + 0x8c]
mov ebp, dword [esp + 0x3c]
test eax, eax
je 0x457943
push eax
push ebp
push 1
call dword [eax + 4]
add esp, 0xc
test eax, eax
je 0x457999
mov ecx, dword [esp + 0x4c]
mov edi, dword [esp + 0x60]
inc ebp
xor eax, eax
cmp ebp, 0x11
mov dword [esp + 0x3c], ebp
setb al
mov ebp, eax
mov edx, ecx
mov eax, ecx
sub edx, edi
xor eax, edi
mov edi, ecx
xor edx, ecx
or edx, eax
lea eax, [esp + 0x48]
xor edx, ecx
sar edx, 0x1f
or edx, ebp
jne 0x4570f5
mov dword [esi], 1
jmp 0x457994
xor edi, edi
jmp 0x457999
mov esi, dword [esp + 0x14]
jmp 0x456fa5
mov dword [esi], 0
mov edi, 1
mov esi, dword [esp + 0x14]
mov eax, dword [esp + 0xc]
jmp 0x456fa5