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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x4c
mov esi, dword [esp + 0x6c]
mov edi, dword [esp + 0x68]
mov eax, dword [edi + 4]
mov ecx, eax
sar ecx, 0x1f
and ecx, eax
nop dword [eax]
test eax, eax
jle 0x4ce815
mov ebx, dword [edi]
lea edx, [eax - 1]
cmp dword [ebx + eax*4 - 4], 0
mov eax, edx
je 0x4ce800
inc edx
mov ecx, edx
mov eax, dword [esi + 4]
mov edx, eax
sar edx, 0x1f
and edx, eax
mov ebx, eax
nop word cs:[eax + eax]
test ebx, ebx
jle 0x4ce845
mov edi, dword [esi]
lea ebp, [ebx - 1]
cmp dword [edi + ebx*4 - 4], 0
mov ebx, ebp
je 0x4ce830
inc ebp
mov edx, ebp
mov edi, dword [esp + 0x68]
test ecx, ecx
jle 0x4ce856
mov edi, dword [edi]
cmp dword [edi + ecx*4 - 4], 0
je 0x4ce8c6
test edx, edx
jle 0x4ce863
mov ecx, dword [esi]
cmp dword [ecx + edx*4 - 4], 0
je 0x4ce8c6
test eax, eax
je 0x4ce94a
mov ecx, dword [esi]
xor edx, edx
mov ebx, 0
cmp eax, 8
jb 0x4ce8e8
mov edx, eax
and edx, 0xfffffff8
pxor xmm0, xmm0
xor ebx, ebx
pxor xmm1, xmm1
nop dword [eax + eax]
movdqu xmm2, xmmword [ecx + ebx*4]
por xmm0, xmm2
movdqu xmm2, xmmword [ecx + ebx*4 + 0x10]
por xmm1, xmm2
add ebx, 8
cmp edx, ebx
jne 0x4ce890
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movd ebx, xmm1
jmp 0x4ce8ec
push 0xd4
push str.external_boringssl_src_crypto_fipsmodule_bn_div.c
push 0x6f
push 0
push 3
call sym.fastboot.exe_ERR_put_error
add esp, 0x14
xor eax, eax
add esp, 0x4c
pop esi
pop edi
pop ebx
pop ebp
ret
or ebx, dword [ecx + edx*4]
inc edx
cmp eax, edx
jne 0x4ce8e8
test ebx, ebx
je 0x4ce94a
mov edx, dword [esp + 0x70]
cmp byte [edx + 0x14], 0
jne 0x4ce96c
mov ecx, dword [edx + 8]
mov ebx, dword [edx + 0x10]
cmp ecx, dword [edx + 0xc]
jne 0x4ce95b
lea eax, [ecx + ecx*2]
shr eax, 1
test ecx, ecx
mov ebp, 0x20
cmovne ebp, eax
cmp ebp, ecx
jbe 0x4ce966
cmp ebp, 0x3fffffff
ja 0x4ce966
lea eax, [ebp*4]
push eax
push dword [edx + 4]
call sym.fastboot.exe_OPENSSL_realloc
mov edx, dword [esp + 0x78]
add esp, 8
test eax, eax
je 0x4ce966
mov dword [edx + 4], eax
mov dword [edx + 0xc], ebp
mov ecx, dword [edx + 8]
jmp 0x4ce95e
push 0xd9
push str.external_boringssl_src_crypto_fipsmodule_bn_div.c
push 0x69
jmp 0x4ce8d2
mov eax, dword [edx + 4]
mov dword [eax + ecx*4], ebx
inc dword [edx + 8]
jmp 0x4ce96c
mov word [edx + 0x14], 0x101
push edx
mov edi, edx
call sym.fastboot.exe_BN_CTX_get
add esp, 4
mov dword [esp + 0x2c], eax
push edi
call sym.fastboot.exe_BN_CTX_get
add esp, 4
mov dword [esp + 0x1c], eax
push edi
call sym.fastboot.exe_BN_CTX_get
add esp, 4
mov edi, eax
mov eax, dword [esp + 0x60]
test eax, eax
jne 0x4ce9a7
push dword [esp + 0x70]
call sym.fastboot.exe_BN_CTX_get
add esp, 4
mov dword [esp + 4], edi
test edi, edi
je 0x4cf0bb
test eax, eax
je 0x4cf0bb
mov dword [esp + 0xc], eax
mov edx, dword [esi + 4]
mov ecx, edx
sar ecx, 0x1f
and ecx, edx
mov eax, edx
nop dword [eax + eax]
test eax, eax
jle 0x4ce9e1
mov edi, dword [esi]
mov ebx, dword [edi + eax*4 - 4]
dec eax
test ebx, ebx
je 0x4ce9d0
jmp 0x4ce9f4
xor ebx, ebx
test edx, edx
jns 0x4cea6b
mov eax, dword [esi]
mov ebx, dword [eax + ecx*4 - 4]
dec ecx
mov eax, ecx
shl eax, 5
xor ecx, ecx
test ebx, ebx
setne cl
mov dword [esp], ecx
mov edx, ebx
shr edx, 0x10
cmp ebx, 0x10000
mov ecx, 0
setae cl
cmovb edx, ebx
shl ecx, 4
mov dword [esp + 0x24], ecx
mov ebp, edx
shr ebp, 8
xor ecx, ecx
cmp edx, 0x100
setae cl
mov edi, ecx
cmovb ebp, edx
mov ecx, ebp
shr ecx, 4
xor edx, edx
cmp ebp, 0x10
cmovb ecx, ebp
setae dl
mov ebp, ecx
shr ebp, 2
xor ebx, ebx
cmp ecx, 4
cmovb ebp, ecx
setae bl
mov ecx, dword [esp]
or ecx, eax
add ecx, dword [esp + 0x24]
lea eax, [ecx + edi*8]
lea eax, [eax + edx*4]
lea ebx, [eax + ebx*2]
cmp ebp, 2
sbb ebx, 0xffffffff
and ebx, 0x1f
mov eax, 0x20
sub eax, ebx
push eax
push esi
push dword [esp + 0xc]
call sym.fastboot.exe_BN_lshift
add esp, 0xc
test eax, eax
je 0x4cf0bb
mov eax, dword [esp + 4]
mov ecx, dword [eax + 4]
mov eax, ecx
sar eax, 0x1f
and eax, ecx
mov ebp, dword [esp + 0x1c]
nop dword [eax]
test ecx, ecx
jle 0x4ceab9
mov edx, dword [esp + 4]
mov edi, dword [edx]
lea edx, [ecx - 1]
cmp dword [edi + ecx*4 - 4], 0
mov ecx, edx
je 0x4ceaa0
inc edx
mov eax, edx
mov ecx, dword [esp + 4]
mov dword [ecx + 4], eax
mov dword [ecx + 0xc], 0
mov eax, 0x40
sub eax, ebx
mov dword [esp + 0x3c], eax
push eax
push dword [esp + 0x6c]
push ebp
call sym.fastboot.exe_BN_lshift
add esp, 0xc
test eax, eax
je 0x4cf0bb
mov ebx, dword [esp + 0x1c]
mov ecx, dword [ebx + 4]
mov eax, ecx
sar eax, 0x1f
and eax, ecx
nop word cs:[eax + eax]
test ecx, ecx
jle 0x4ceb15
mov edi, dword [ebx]
lea edx, [ecx - 1]
cmp dword [edi + ecx*4 - 4], 0
mov ecx, edx
je 0x4ceb00
inc edx
mov eax, edx
mov dword [ebx + 4], eax
mov dword [ebx + 0xc], 0
mov ecx, dword [esp + 4]
mov ecx, dword [ecx + 4]
lea edx, [ecx + 1]
cmp eax, edx
jle 0x4cebfc
inc eax
push eax
push ebx
call fcn.004cb800
add esp, 8
test eax, eax
je 0x4cf0bb
mov edx, dword [esp + 0x1c]
mov eax, dword [edx]
mov ecx, dword [edx + 4]
mov dword [eax + ecx*4], 0
mov ebx, dword [edx + 4]
inc ebx
mov edi, dword [esp + 4]
mov dword [edx + 4], ebx
mov eax, dword [edi]
mov edi, dword [edi + 4]
mov ebp, ebx
sub ebp, edi
mov dword [esp + 0x34], 0
cmp edi, 1
je 0x4ceb7d
mov ecx, dword [eax + edi*4 - 8]
mov dword [esp + 0x34], ecx
mov ecx, dword [edx]
mov dword [esp], ecx
mov eax, dword [eax + edi*4 - 4]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x68]
mov ecx, dword [eax + 0xc]
mov eax, dword [esi + 0xc]
mov dword [esp + 0x38], ecx
xor eax, ecx
mov esi, dword [esp + 0xc]
mov dword [esi + 0xc], eax
lea eax, [ebp + 1]
push eax
push esi
call fcn.004cb800
add esp, 8
test eax, eax
je 0x4cf0bb
mov eax, esi
lea ecx, [ebp - 1]
mov dword [esp + 0x44], ecx
mov dword [esi + 4], ecx
lea esi, [ebp*4 - 4]
add esi, dword [eax]
lea eax, [edi + 1]
mov dword [esp + 0x40], eax
push eax
push dword [esp + 0x30]
call fcn.004cb800
add esp, 8
test eax, eax
mov eax, dword [esp + 0xc]
je 0x4cf0bb
cmp dword [eax + 4], 0
mov dword [esp + 0x20], edi
je 0x4cec3a
mov eax, esi
add eax, 0xfffffffc
jmp 0x4cec43
add ecx, 2
push ecx
push ebx
call fcn.004cb800
add esp, 8
test eax, eax
je 0x4cf0bb
mov edx, dword [esp + 0x1c]
mov eax, dword [edx + 4]
mov edi, dword [esp + 4]
nop dword [eax]
mov ebx, dword [edi + 4]
add ebx, 2
cmp eax, ebx
jge 0x4ceb5c
mov ecx, dword [edx]
mov dword [ecx + eax*4], 0
inc eax
jmp 0x4cec20
mov dword [eax + 0xc], 0
mov eax, esi
cmp ebp, 2
jl 0x4cf006
mov edx, dword [esp]
lea ecx, [edx + ebp*4]
mov dword [esp + 8], ecx
lea ecx, [edx + ebx*4]
add ecx, 0xfffffffc
xor edx, edx
jmp 0x4cec82
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov esi, dword [esp]
add ecx, 0xfffffffc
mov dword [eax], esi
inc edx
add eax, 0xfffffffc
cmp edx, dword [esp + 0x44]
je 0x4cf006
mov dword [esp + 0x14], edx
mov dword [esp + 0x18], eax
mov dword [esp + 0x10], ecx
mov eax, dword [ecx]
mov ebp, 0xffffffff
cmp eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
jne 0x4cecc4
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax]
mov edi, dword [esp + 0x20]
test edi, edi
mov dword [esp], ebp
je 0x4ced06
xor ebx, ebx
mov eax, dword [esp + 4]
mov esi, dword [eax]
cmp edi, 4
jae 0x4ced2e
mov eax, edi
jmp 0x4ceda3
mov ecx, dword [esp + 0x10]
mov esi, dword [ecx - 8]
mov edi, dword [ecx - 4]
push 0
mov ebp, dword [esp + 0x34]
push ebp
push eax
push edi
call fcn.004a5e60
add esp, 0x10
mov ecx, ebp
mov ebp, eax
mul ebx
imul ecx, ebp
sub edi, ecx
nop word [eax + eax]
cmp esi, eax
mov ecx, edi
sbb ecx, edx
jae 0x4cec9f
dec ebp
add edi, dword [esp + 0x30]
jb 0x4cec9f
sub eax, ebx
sbb edx, 0
jmp 0x4cecf0
mov dword [ecx], 0
mov edx, dword [esp + 8]
add edx, 0xfffffffc
mov eax, dword [eax]
xor ebp, ebp
mov ebx, 1
mov dword [esp + 8], edx
test bl, 1
je 0x4cee4c
jmp 0x4ceeaa
xor ebx, ebx
mov eax, edi
nop word cs:[eax + eax]
mov dword [esp + 0x24], eax
mov eax, ebp
mul dword [esi]
mov edi, edx
mov ebp, eax
add eax, ebx
mov dword [ecx], eax
mov eax, dword [esp]
mul dword [esi + 4]
mov dword [esp + 0x28], edx
add ebp, ebx
mov ebp, dword [esp]
adc eax, edi
setb bl
mov dword [ecx + 4], eax
mov eax, ebp
mul dword [esi + 8]
mov edi, edx
add bl, 0xff
adc eax, dword [esp + 0x28]
setb bl
mov dword [ecx + 8], eax
mov eax, ebp
mul dword [esi + 0xc]
add bl, 0xff
adc eax, edi
mov dword [ecx + 0xc], eax
mov eax, dword [esp + 0x24]
mov ebx, edx
adc ebx, 0
add esi, 0x10
add ecx, 0x10
add eax, 0xfffffffc
cmp eax, 4
jae 0x4ced40
test eax, eax
je 0x4cee18
test al, 1
jne 0x4cedb6
mov dword [esp + 0x28], esi
mov esi, ecx
mov edi, eax
cmp eax, 1
jne 0x4cedd9
jmp 0x4cee1a
mov edi, eax
mov eax, ebp
mul dword [esi]
add eax, ebx
adc edx, 0
mov dword [ecx], eax
mov eax, edi
add esi, 4
mov dword [esp + 0x28], esi
add ecx, 4
mov esi, ecx
dec edi
mov ebx, edx
cmp eax, 1
je 0x4cee1a
xor ebp, ebp
mov dword [esp + 0x48], edi
nop
mov eax, dword [esp]
mov ecx, dword [esp + 0x28]
mul dword [ecx + ebp*4]
mov dword [esp + 0x24], edx
mov edi, eax
add eax, ebx
mov dword [esi + ebp*4], eax
mov eax, dword [esp]
mul dword [ecx + ebp*4 + 4]
add edi, ebx
mov edi, dword [esp + 0x48]
adc eax, dword [esp + 0x24]
adc edx, 0
mov dword [esi + ebp*4 + 4], eax
add ebp, 2
mov ebx, edx
cmp edi, ebp
jne 0x4cede0
jmp 0x4cee1a
mov edx, ebx
add dword [esp + 8], 0xfffffffc
mov ecx, dword [esp + 0x2c]
mov eax, dword [ecx]
mov edi, dword [esp + 0x20]
mov dword [eax + edi*4], edx
mov edx, dword [esp + 0x40]
test edx, edx
je 0x4cec60
xor ebp, ebp
mov eax, dword [ecx]
cmp edx, 4
jae 0x4cee58
mov ebx, edx
mov edx, dword [esp + 8]
test bl, 1
jne 0x4ceeaa
mov esi, ebx
cmp ebx, 1
jne 0x4ceecb
jmp 0x4cef03
xor ebp, ebp
mov ebx, edx
mov edx, dword [esp + 8]
mov esi, dword [edx]
sub esi, dword [eax]
mov edi, ebx
setb bl
sub esi, ebp
setb cl
or cl, bl
mov ebx, edi
mov dword [edx], esi
mov esi, dword [eax + 4]
add cl, 0xff
sbb dword [edx + 4], esi
mov ecx, dword [eax + 8]
sbb dword [edx + 8], ecx
mov ecx, dword [eax + 0xc]
sbb dword [edx + 0xc], ecx
setb cl
movzx ebp, cl
add edx, 0x10
add eax, 0x10
add ebx, 0xfffffffc
cmp ebx, 4
jae 0x4cee60
test ebx, ebx
je 0x4ceeff
mov edi, dword [esp + 0x20]
test bl, 1
je 0x4cee4c
mov esi, dword [edx]
sub esi, dword [eax]
setb ch
sub esi, ebp
setb cl
or cl, ch
movzx ebp, cl
mov dword [edx], esi
add edx, 4
add eax, 4
lea esi, [ebx - 1]
cmp ebx, 1
je 0x4cef03
xor edi, edi
nop dword [eax]
mov ebx, dword [edx + edi*4]
sub ebx, dword [eax + edi*4]
setb cl
sub ebx, ebp
setb ch
or ch, cl
mov dword [edx + edi*4], ebx
mov ebx, dword [edx + edi*4 + 4]
add ch, 0xff
sbb ebx, dword [eax + edi*4 + 4]
setb cl
movzx ebp, cl
mov dword [edx + edi*4 + 4], ebx
add edi, 2
cmp esi, edi
jne 0x4ceed0
mov edi, dword [esp + 0x20]
test ebp, ebp
je 0x4cec60
mov esi, dword [esp]
dec esi
test edi, edi
je 0x4cef2b
mov dword [esp], esi
xor ebp, ebp
mov eax, dword [esp + 4]
mov eax, dword [eax]
cmp edi, 4
jae 0x4cef3c
mov ebx, edi
mov ecx, dword [esp + 8]
jmp 0x4cef8d
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
jmp 0x4cec6f
xor ebp, ebp
mov ebx, edi
mov ecx, dword [esp + 8]
nop word cs:[eax + eax]
mov esi, dword [ecx]
add esi, dword [eax]
setb dl
add esi, ebp
setb dh
or dh, dl
mov dword [ecx], esi
mov esi, dword [eax + 4]
add dh, 0xff
adc dword [ecx + 4], esi
mov edx, dword [eax + 8]
adc dword [ecx + 8], edx
mov edx, dword [eax + 0xc]
adc dword [ecx + 0xc], edx
setb dl
movzx ebp, dl
add ecx, 0x10
add eax, 0x10
add ebx, 0xfffffffc
cmp ebx, 4
jae 0x4cef50
test ebx, ebx
je 0x4cefef
test bl, 1
jne 0x4cef96
mov esi, ebx
jmp 0x4cefb2
mov esi, dword [ecx]
add esi, dword [eax]
setb dh
add esi, ebp
setb dl
or dl, dh
movzx ebp, dl
mov dword [ecx], esi
add ecx, 4
add eax, 4
lea esi, [ebx - 1]
cmp ebx, 1
je 0x4cefef
xor edi, edi
nop dword [eax]
mov edx, dword [ecx + edi*4]
add edx, dword [eax + edi*4]
setb bl
add edx, ebp
setb bh
or bh, bl
mov dword [ecx + edi*4], edx
mov edx, dword [ecx + edi*4 + 4]
add bh, 0xff
adc edx, dword [eax + edi*4 + 4]
setb bl
movzx ebp, bl
mov dword [ecx + edi*4 + 4], edx
add edi, 2
cmp esi, edi
jne 0x4cefc0
test ebp, ebp
je 0x4cec60
mov ecx, dword [esp + 0x10]
inc dword [ecx]
mov eax, dword [esp + 0x18]
jmp 0x4cec68
mov ebp, dword [esp + 0x1c]
mov eax, dword [ebp + 4]
mov ecx, eax
sar ecx, 0x1f
and ecx, eax
mov edx, eax
mov ebx, dword [esp + 0x64]
test edx, edx
jle 0x4cf033
mov edi, dword [ebp]
lea esi, [edx - 1]
cmp dword [edi + edx*4 - 4], 0
mov edx, esi
je 0x4cf01a
inc esi
mov dword [ebp + 4], esi
jmp 0x4cf041
mov dword [ebp + 4], ecx
test eax, eax
js 0x4cf041
mov dword [ebp + 0xc], 0
test ebx, ebx
je 0x4cf0f8
push dword [esp + 0x3c]
push ebp
mov edi, ebx
push ebx
call sym.fastboot.exe_BN_rshift
add esp, 0xc
test eax, eax
je 0x4cf0bb
mov eax, dword [edi + 4]
test eax, eax
je 0x4cf0f8
mov ecx, dword [edi]
xor edx, edx
mov esi, 0
cmp eax, 8
jb 0x4cf0e5
mov edx, eax
and edx, 0xfffffff8
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
movdqu xmm2, xmmword [ecx + esi*4]
por xmm0, xmm2
movdqu xmm2, xmmword [ecx + esi*4 + 0x10]
por xmm1, xmm2
add esi, 8
cmp edx, esi
jne 0x4cf085
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movd esi, xmm1
jmp 0x4cf0e9
xor eax, eax
mov edx, dword [esp + 0x70]
cmp byte [edx + 0x14], 0
jne 0x4ce8e0
mov ecx, dword [edx + 4]
mov edi, edx
mov edx, dword [edx + 8]
lea esi, [edx - 1]
mov dword [edi + 8], esi
mov ecx, dword [ecx + edx*4 - 4]
mov dword [edi + 0x10], ecx
jmp 0x4ce8e0
or esi, dword [ecx + edx*4]
inc edx
cmp eax, edx
jne 0x4cf0e5
test esi, esi
je 0x4cf0f8
mov eax, dword [esp + 0x38]
mov dword [edi + 0xc], eax
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 4]
mov ecx, eax
sar ecx, 0x1f
and ecx, eax
mov edx, eax
test edx, edx
jle 0x4cf131
mov esi, dword [esp + 0xc]
mov edi, dword [esi]
lea esi, [edx - 1]
cmp dword [edi + edx*4 - 4], 0
mov edx, esi
je 0x4cf108
inc esi
mov eax, dword [esp + 0xc]
mov dword [eax + 4], esi
mov edx, dword [esp + 0x70]
mov eax, 1
jmp 0x4cf0c1
mov esi, dword [esp + 0xc]
mov dword [esi + 4], ecx
test eax, eax
mov edx, dword [esp + 0x70]
js 0x4cf147
mov dword [esi + 0xc], 0
mov eax, 1
jmp 0x4cf0c1