Function at 0x10031550
Capabilities:
Resolve function by parsing pe exports

Disassembly:
mov eax, 0x5c
call fcn.10086e00
mov eax, dword [esp + 0x64]
push ebx
push esi
push edi
mov edi, dword [esp + 0x6c]
mov edx, dword [eax]
xor esi, esi
mov ecx, dword [edi]
mov dword [esp + 0x4c], esi
cmp ecx, edx
mov dword [esp + 0x38], esi
mov dword [esp + 0x20], esi
mov dword [esp + 0x30], esi
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], esi
mov dword [esp + 0x54], esi
je 0x10031595
push 0xd7
jmp 0x100316c3
mov ecx, dword [esp + 0x74]
mov ebx, dword [esp + 0x78]
cmp ecx, esi
jne 0x100315b6
cmp ebx, esi
jne 0x100315d8
push eax
push edi
call sym.LIBEAY32.dll_EC_POINT_set_to_infinity
add esp, 8
pop edi
pop esi
pop ebx
add esp, 0x5c
ret
push edi
call sym.LIBEAY32.dll_EC_GROUP_get0_generator
add esp, 4
cmp eax, esi
mov dword [esp + 0x38], eax
jne 0x100315d8
push 0xe5
push str..cryptoecec_mult.c
push 0x71
jmp 0x100316ca
mov edx, dword [esp + 0x7c]
xor eax, eax
cmp ebx, esi
jbe 0x100315f4
mov ecx, dword [edi]
mov esi, dword [edx + eax*4]
cmp ecx, dword [esi]
jne 0x100316be
inc eax
cmp eax, ebx
jb 0x100315e4
mov ecx, dword [esp + 0x74]
mov eax, dword [esp + 0x78]
xor edx, edx
push ebp
test ecx, ecx
setne dl
add edx, eax
push 0xf5
mov esi, edx
push str..cryptoecec_mult.c
mov dword [esp + 0x1c], esi
lea edi, [esi*4]
push edi
mov dword [esp + 0x58], edi
call sym.LIBEAY32.dll_CRYPTO_malloc
push 0xf6
mov ebp, eax
push str..cryptoecec_mult.c
push edi
mov dword [esp + 0x40], ebp
call sym.LIBEAY32.dll_CRYPTO_malloc
mov ebx, eax
push 0xf7
lea eax, [esi*4 + 4]
push str..cryptoecec_mult.c
push eax
mov dword [esp + 0x5c], ebx
call sym.LIBEAY32.dll_CRYPTO_malloc
mov edi, eax
add esp, 0x24
test edi, edi
mov dword [esp + 0x2c], edi
je 0x1003166d
mov dword [edi], 0
test ebp, ebp
je 0x10031dd9
test ebx, ebx
je 0x10031dc4
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x10031dc4
mov ebp, dword [esp + 0x14]
xor ebx, ebx
xor edi, edi
mov dword [esp + 0x30], ebx
test ebp, ebp
jbe 0x1003174b
mov esi, dword [esp + 0x28]
mov eax, dword [esp + 0x84]
sub eax, esi
mov dword [esp + 0x54], eax
cmp edi, dword [esp + 0x7c]
jae 0x100316e2
mov ecx, dword [esp + 0x54]
mov edx, dword [ecx + esi]
push edx
jmp 0x100316e7
push 0xee
push str..cryptoecec_mult.c
push 0x65
push 0x8a
push 0x10
call sym.LIBEAY32.dll_ERR_put_error
add esp, 0x14
xor eax, eax
pop edi
pop esi
pop ebx
add esp, 0x5c
ret
mov eax, dword [esp + 0x78]
push eax
call sym.LIBEAY32.dll_BN_num_bits
add esp, 4
cmp eax, 0x7d0
jb 0x100316fd
mov eax, 6
jmp 0x1003172d
cmp eax, 0x320
jb 0x1003170b
mov eax, 5
jmp 0x1003172d
cmp eax, 0x12c
jb 0x10031719
mov eax, 4
jmp 0x1003172d
cmp eax, 0x46
jb 0x10031725
mov eax, 3
jmp 0x1003172d
cmp eax, 0x14
sbb eax, eax
add eax, 2
lea ecx, [eax - 1]
mov edx, 1
shl edx, cl
mov dword [esi], eax
add esi, 4
add ebx, edx
inc edi
cmp edi, ebp
jb 0x100316ae
mov dword [esp + 0x30], ebx
push 0x10b
lea eax, [ebx*4 + 4]
push str..cryptoecec_mult.c
push eax
call sym.LIBEAY32.dll_CRYPTO_malloc
add esp, 0xc
mov dword [esp + 0x1c], eax
test eax, eax
je 0x10031dc4
mov edx, dword [esp + 0x30]
mov ecx, eax
push 0x10f
push str..cryptoecec_mult.c
lea eax, [ecx + edx*4]
mov dword [esp + 0x5c], eax
mov dword [eax], 0
mov eax, dword [esp + 0x54]
push eax
call sym.LIBEAY32.dll_CRYPTO_malloc
add esp, 0xc
mov dword [esp + 0x20], eax
test eax, eax
je 0x10031dc4
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x1c]
test eax, eax
mov dword [esp + 0x10], 0
jbe 0x10031815
mov edi, dword [esp + 0x28]
mov ebp, dword [esp + 0x20]
sub ebp, edi
mov dword [edi + ebp], esi
mov ecx, dword [edi]
xor ebx, ebx
dec ecx
mov edx, 1
shl edx, cl
test edx, edx
jbe 0x10031801
mov eax, dword [esp + 0x70]
push eax
call sym.LIBEAY32.dll_EC_POINT_new
add esp, 4
mov dword [esi], eax
test eax, eax
je 0x10031dc4
mov ecx, dword [edi]
add esi, 4
inc ebx
dec ecx
mov edx, 1
shl edx, cl
cmp ebx, edx
jb 0x100317d8
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
inc eax
add edi, 4
cmp eax, ecx
mov dword [esp + 0x10], eax
jb 0x100317c5
cmp esi, dword [esp + 0x54]
je 0x1003183b
push 0x120
push str..cryptoecec_mult.c
push 0x44
push 0x8a
push 0x10
call sym.LIBEAY32.dll_ERR_put_error
add esp, 0x14
jmp 0x10031dc4
mov eax, dword [esp + 0x88]
test eax, eax
jne 0x1003185e
call sym.LIBEAY32.dll_BN_CTX_new
test eax, eax
mov dword [esp + 0x50], eax
mov dword [esp + 0x88], eax
je 0x10031dc4
mov eax, dword [esp + 0x70]
push eax
call sym.LIBEAY32.dll_EC_POINT_new
mov ebx, eax
add esp, 4
test ebx, ebx
mov dword [esp + 0x54], ebx
je 0x10031da2
mov eax, dword [esp + 0x14]
mov dword [esp + 0x10], 0
test eax, eax
jbe 0x10031be1
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x84]
mov eax, dword [esp + 0x80]
mov ebp, dword [esp + 0x28]
sub ecx, edi
sub eax, edi
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x2c]
sub ecx, edi
sub ebp, edi
mov dword [esp + 0x48], ecx
mov ecx, dword [esp + 0x38]
sub ecx, edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], ebp
mov dword [esp + 0x4c], ecx
jmp 0x100318df
mov ebx, dword [esp + 0x54]
mov edi, dword [esp + 0x18]
mov eax, dword [esp + 0x5c]
mov ebp, dword [esp + 0x60]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x7c]
cmp ecx, edx
jae 0x100318f0
mov edx, dword [eax + edi]
jmp 0x100318f4
mov edx, dword [esp + 0x3c]
mov eax, dword [edi]
push edx
mov ecx, dword [eax]
push ecx
call sym.LIBEAY32.dll_EC_POINT_copy
add esp, 8
test eax, eax
je 0x10031da2
cmp dword [edi + ebp], 1
jbe 0x10031980
mov eax, dword [edi]
mov edx, dword [esp + 0x88]
push edx
mov edx, dword [esp + 0x74]
mov ecx, dword [eax]
push ecx
push ebx
push edx
call sym.LIBEAY32.dll_EC_POINT_dbl
add esp, 0x10
test eax, eax
je 0x10031da2
mov ecx, dword [edi + ebp]
mov esi, 1
dec ecx
mov eax, esi
shl eax, cl
cmp eax, esi
jbe 0x10031980
mov ecx, dword [edi]
mov edx, dword [esp + 0x88]
push edx
push ebx
mov edx, dword [ecx + esi*4]
lea eax, [ecx + esi*4]
mov ecx, dword [ecx + esi*4 - 4]
mov eax, dword [esp + 0x78]
push ecx
push edx
push eax
call sym.LIBEAY32.dll_EC_POINT_add
add esp, 0x14
test eax, eax
je 0x10031da2
mov ecx, dword [edi + ebp]
inc esi
dec ecx
mov edx, 1
shl edx, cl
cmp esi, edx
jb 0x10031944
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x10]
mov dword [eax + edi + 4], 0
mov eax, dword [esp + 0x7c]
cmp ecx, eax
jae 0x100319a1
mov edx, dword [esp + 0x64]
mov ebx, dword [edx + edi]
jmp 0x100319a5
mov ebx, dword [esp + 0x78]
mov esi, dword [esp + 0x88]
mov edi, dword [edi + ebp]
xor eax, eax
push esi
mov dword [esp + 0x48], eax
mov dword [esp + 0x88], eax
mov dword [esp + 0x44], 1
mov dword [esp + 0x84], eax
call sym.LIBEAY32.dll_BN_CTX_start
push esi
call sym.LIBEAY32.dll_BN_CTX_get
mov esi, eax
add esp, 8
test esi, esi
je 0x10031b54
test edi, edi
jle 0x10031b3c
cmp edi, 7
jg 0x10031b3c
mov ebp, 1
mov ecx, edi
shl ebp, cl
push ebx
push esi
lea eax, [ebp + ebp - 1]
mov dword [esp + 0x70], eax
call sym.LIBEAY32.dll_BN_copy
add esp, 8
test eax, eax
je 0x10031b54
mov eax, dword [esi + 0xc]
xor edi, edi
cmp eax, edi
je 0x10031a2c
mov dword [esp + 0x40], 0xffffffff
mov dword [esi + 0xc], edi
push esi
call sym.LIBEAY32.dll_BN_num_bits
inc eax
push 0x6b
push str..cryptoecec_mult.c
push eax
mov dword [esp + 0x90], eax
call sym.LIBEAY32.dll_CRYPTO_malloc
add esp, 0x10
cmp eax, edi
mov dword [esp + 0x84], eax
je 0x10031b54
mov eax, dword [esi + 4]
cmp eax, edi
je 0x10031b2b
cmp eax, 1
jne 0x10031a74
mov ecx, dword [esi]
cmp dword [ecx], 0
je 0x10031b09
xor ebx, ebx
test eax, eax
jle 0x10031ad1
mov ecx, dword [esi]
mov eax, dword [ecx]
test al, 1
je 0x10031ad1
test ecx, ecx
je 0x10031b20
and eax, dword [esp + 0x68]
mov ebx, eax
test ebp, ebx
je 0x10031aa7
lea eax, [ebp + ebp]
sub ebx, eax
mov edx, ebx
neg edx
push edx
push esi
call sym.LIBEAY32.dll_BN_add_word
jmp 0x10031aae
push ebx
push esi
call sym.LIBEAY32.dll_BN_sub_word
add esp, 8
test eax, eax
je 0x10031b54
mov eax, ebp
neg eax
cmp ebx, eax
jle 0x10031b19
cmp ebx, ebp
jge 0x10031b19
test bl, 1
je 0x10031b19
mov eax, dword [esi + 0xc]
test eax, eax
jne 0x10031b19
mov al, bl
mov ecx, dword [esp + 0x84]
imul byte [esp + 0x40]
mov byte [edi + ecx], al
mov eax, dword [esi + 4]
inc edi
test eax, eax
jle 0x10031af0
mov edx, dword [esi]
test byte [edx], 1
jne 0x10031b24
push esi
push esi
call sym.LIBEAY32.dll_BN_rshift1
add esp, 8
test eax, eax
je 0x10031b54
mov eax, dword [esi + 4]
test eax, eax
jne 0x10031a64
cmp edi, dword [esp + 0x80]
jbe 0x10031b2b
push 0x9a
jmp 0x10031b3e
push 0x89
jmp 0x10031b3e
push 0x77
jmp 0x10031b3e
push 0x92
jmp 0x10031b3e
mov dword [esp + 0x80], edi
mov dword [esp + 0x44], 1
jmp 0x10031b54
push 0x5c
push str..cryptoecec_mult.c
push 0x44
push 0x8f
push 0x10
call sym.LIBEAY32.dll_ERR_put_error
add esp, 0x14
mov eax, dword [esp + 0x88]
push eax
call sym.LIBEAY32.dll_BN_CTX_end
mov eax, dword [esp + 0x48]
add esp, 4
test eax, eax
jne 0x10031b80
mov ecx, dword [esp + 0x84]
push ecx
call sym.LIBEAY32.dll_CRYPTO_free
add esp, 4
xor eax, eax
jmp 0x10031b99
mov eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x80]
mov dword [eax + ecx], edx
mov eax, dword [esp + 0x84]
mov edx, dword [esp + 0x48]
mov ecx, dword [esp + 0x18]
test eax, eax
mov dword [edx + ecx], eax
je 0x10031da2
mov edx, dword [esp + 0x4c]
mov eax, ecx
mov ecx, dword [esp + 0x34]
mov eax, dword [edx + eax]
cmp eax, ecx
jbe 0x10031bc1
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
inc eax
add edx, 4
cmp eax, ecx
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], edx
jb 0x100318cf
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x30]
push ecx
mov ecx, dword [esp + 0x74]
push edx
push eax
push ecx
call sym.LIBEAY32.dll_EC_POINTs_make_affine
add esp, 0x10
test eax, eax
je 0x10031da2
mov edx, dword [esp + 0x34]
mov esi, dword [esp + 0x74]
mov dword [esp + 0x7c], 1
lea eax, [edx - 1]
test eax, eax
mov dword [esp + 0x78], eax
jl 0x10031d68
mov eax, dword [esp + 0x7c]
test eax, eax
jne 0x10031c4e
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x70]
push eax
push esi
push esi
push ecx
call sym.LIBEAY32.dll_EC_POINT_dbl
add esp, 0x10
test eax, eax
je 0x10031da2
mov eax, dword [esp + 0x14]
mov dword [esp + 0x10], 0
test eax, eax
jbe 0x10031d51
mov ebx, dword [esp + 0x38]
mov ebp, dword [esp + 0x2c]
mov edi, dword [esp + 0x20]
sub ebx, ebp
sub ebp, edi
mov edx, dword [esp + 0x78]
lea eax, [edi + ebp]
cmp dword [eax + ebx], edx
jbe 0x10031d35
mov eax, dword [eax]
mov ecx, edx
movsx esi, byte [eax + ecx]
test esi, esi
je 0x10031d35
xor eax, eax
test esi, esi
setl al
test eax, eax
je 0x10031c9f
neg esi
cmp eax, dword [esp + 0x24]
je 0x10031cde
mov eax, dword [esp + 0x7c]
test eax, eax
jne 0x10031ccf
mov edx, dword [esp + 0x88]
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x70]
push edx
push eax
push ecx
call sym.LIBEAY32.dll_EC_POINT_invert
add esp, 0xc
test eax, eax
je 0x10031da2
mov eax, dword [esp + 0x24]
xor edx, edx
test eax, eax
sete dl
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x7c]
sar esi, 1
test eax, eax
je 0x10031d0d
mov eax, dword [edi]
mov edx, dword [esp + 0x74]
mov ecx, dword [eax + esi*4]
push ecx
push edx
call sym.LIBEAY32.dll_EC_POINT_copy
add esp, 8
test eax, eax
je 0x10031da2
mov dword [esp + 0x7c], 0
jmp 0x10031d35
mov ecx, dword [edi]
mov eax, dword [esp + 0x88]
push eax
mov eax, dword [esp + 0x78]
mov edx, dword [ecx + esi*4]
push edx
push eax
push eax
mov eax, dword [esp + 0x80]
push eax
call sym.LIBEAY32.dll_EC_POINT_add
add esp, 0x14
test eax, eax
je 0x10031da2
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
inc eax
add edi, 4
cmp eax, ecx
mov dword [esp + 0x10], eax
jb 0x10031c72
mov esi, dword [esp + 0x74]
mov eax, dword [esp + 0x78]
dec eax
mov dword [esp + 0x78], eax
jns 0x10031c27
mov eax, dword [esp + 0x7c]
test eax, eax
je 0x10031d78
mov ecx, dword [esp + 0x70]
push esi
push ecx
call sym.LIBEAY32.dll_EC_POINT_set_to_infinity
add esp, 8
jmp 0x10031d96
mov eax, dword [esp + 0x24]
test eax, eax
je 0x10031d9a
mov edx, dword [esp + 0x88]
mov eax, dword [esp + 0x70]
push edx
push esi
push eax
call sym.LIBEAY32.dll_EC_POINT_invert
add esp, 0xc
test eax, eax
je 0x10031da2
mov dword [esp + 0x58], 1
mov eax, dword [esp + 0x50]
test eax, eax
je 0x10031db3
push eax
call sym.LIBEAY32.dll_BN_CTX_free
add esp, 4
mov eax, dword [esp + 0x54]
test eax, eax
je 0x10031dc4
push eax
call sym.LIBEAY32.dll_EC_POINT_free
add esp, 4
mov ecx, dword [esp + 0x28]
push ecx
call sym.LIBEAY32.dll_CRYPTO_free
mov edi, dword [esp + 0x30]
mov ebx, dword [esp + 0x3c]
add esp, 4
test ebx, ebx
pop ebp
je 0x10031de7
push ebx
call sym.LIBEAY32.dll_CRYPTO_free
add esp, 4
test edi, edi
je 0x10031e0f
mov eax, dword [edi]
mov esi, edi
test eax, eax
je 0x10031e06
push eax
call sym.LIBEAY32.dll_CRYPTO_free
mov eax, dword [esi + 4]
add esi, 4
add esp, 4
test eax, eax
jne 0x10031df3
push edi
call sym.LIBEAY32.dll_CRYPTO_free
add esp, 4
mov esi, dword [esp + 0x18]
test esi, esi
je 0x10031e3d
mov eax, dword [esi]
test eax, eax
je 0x10031e30
push eax
call sym.LIBEAY32.dll_EC_POINT_clear_free
mov eax, dword [esi + 4]
add esi, 4
add esp, 4
test eax, eax
jne 0x10031e1d
mov edx, dword [esp + 0x18]
push edx
call sym.LIBEAY32.dll_CRYPTO_free
add esp, 4
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x10031e4e
push eax
call sym.LIBEAY32.dll_CRYPTO_free
add esp, 4
mov eax, dword [esp + 0x54]
pop edi
pop esi
pop ebx
add esp, 0x5c
ret