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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x68
mov edi, ecx
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
mov dword [esp + 8], eax
mov dword [esp + 0xc], ecx
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0x18], 0
mov eax, dword [edi + 4]
cmp eax, dword [edi + 8]
jae 0x77fd82
lea ecx, [esp + 0x10]
mov edx, dword [esp + 8]
mov esi, dword [esp + 0xc]
mov dword [eax + 4], esi
mov dword [eax], edx
movsd xmm0, qword [ecx]
movsd qword [eax + 8], xmm0
mov ecx, dword [ecx + 8]
mov dword [eax + 0x10], ecx
add dword [edi + 4], 0x14
jmp 0x77fda1
lea eax, [esp + 8]
mov ecx, edi
push eax
call fcn.00781e10
test byte [esp + 0x10], 1
je 0x77fda1
push dword [esp + 0x18]
call fcn.0051c570
add esp, 4
mov eax, dword [ebp + 8]
mov esi, dword [eax + 0x7c]
and esi, 0xfffffffc
movzx ebx, byte [esi]
test bl, 1
je 0x77fdba
mov ebx, dword [esi + 4]
mov esi, dword [esi + 8]
jmp 0x77fdbf
or esi, 1
shr ebx, 1
test ebx, ebx
mov dword [esp + 4], edi
je 0x77fe69
xor eax, eax
jmp 0x77fdd5
inc eax
cmp ebx, eax
je 0x77fe2d
movzx ecx, byte [esi + eax]
cmp ecx, 0x2e
je 0x77fdd0
cmp ecx, 0x5f
je 0x77fdd0
mov edx, ecx
add dl, 0xc6
cmp dl, 0xf5
ja 0x77fdd0
mov edx, ecx
add dl, 0xa5
cmp dl, 0xe5
ja 0x77fdd0
add cl, 0x85
cmp cl, 0xe6
jae 0x77fdd0
lea esi, [esp + 8]
mov ecx, esi
push 0x278
push str.external_protobuf_src_google_protobuf_descriptor_database.cc
push 2
call fcn.00630740
mov ecx, esi
push str.Invalid_package_name:
call fcn.0062ff70
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x7c]
jmp 0x78008c
test esi, esi
je 0x77fe93
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 0x10], 0
cmp ebx, 0xfffffff0
jae 0x78035a
cmp ebx, 0xb
jae 0x77fead
mov eax, ebx
add al, bl
mov byte [esp + 8], al
lea eax, [esp + 9]
test ebx, ebx
jne 0x77fed1
jmp 0x77fee0
test esi, esi
je 0x77fe93
mov dword [esp + 8], 0
mov dword [esp + 0xc], 0
mov dword [esp + 0x10], 0
mov eax, ebx
add al, bl
mov byte [esp + 8], al
lea eax, [esp + 9]
jmp 0x77fee0
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 0x10], 0
jmp 0x77fee4
mov edi, ebx
or edi, 0xf
lea eax, [edi + 1]
push eax
call fcn.0051c3d0
add esp, 4
mov dword [esp + 0x10], eax
add edi, 2
mov dword [esp + 8], edi
mov edi, dword [esp + 4]
mov dword [esp + 0xc], ebx
push ebx
push esi
push eax
mov esi, eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov eax, esi
add esp, 0xc
mov byte [eax + ebx], 0
mov edi, dword [edi + 4]
lea esi, [edi - 0xc]
test byte [edi - 0xc], 1
jne 0x77fef8
mov word [edi - 0xc], 0
jmp 0x77ff1d
mov eax, dword [edi - 4]
mov byte [eax], 0
mov dword [edi - 8], 0
test byte [edi - 0xc], 1
je 0x77ff1d
push dword [edi - 4]
call fcn.0051c570
add esp, 4
mov dword [edi - 0xc], 0
mov eax, dword [esp + 0x10]
mov dword [esi + 8], eax
movsd xmm0, qword [esp + 8]
movsd qword [esi], xmm0
mov edi, dword [esp + 4]
mov eax, dword [edi + 4]
sub eax, dword [edi]
mov ecx, dword [ebp + 8]
mov esi, dword [ecx + 0x78]
sar eax, 2
imul eax, eax, 0xcccccccd
dec eax
mov dword [esp + 8], eax
and esi, 0xfffffffc
movzx ebx, byte [esi]
test bl, 1
je 0x77ff5e
mov ebx, dword [esi + 4]
mov esi, dword [esi + 8]
jmp 0x77ff63
or esi, 1
shr ebx, 1
lea ecx, [esp + 0xc]
test esi, esi
je 0x77ff9f
mov dword [ecx + 4], 0
mov dword [ecx], 0
mov dword [ecx + 8], 0
cmp ebx, 0xfffffff0
jae 0x78035e
cmp ebx, 0xb
jae 0x77ffb5
mov eax, ebx
add al, bl
mov byte [esp + 0xc], al
lea eax, [esp + 0xd]
test ebx, ebx
jne 0x77ffd9
jmp 0x77ffe8
mov dword [ecx + 4], 0
mov dword [ecx], 0
mov dword [ecx + 8], 0
jmp 0x77ffec
mov edi, ebx
or edi, 0xf
lea eax, [edi + 1]
push eax
call fcn.0051c3d0
add esp, 4
mov dword [esp + 0x14], eax
add edi, 2
mov dword [esp + 0xc], edi
mov edi, dword [esp + 4]
mov dword [esp + 0x10], ebx
push ebx
push esi
push eax
mov esi, eax
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov eax, esi
add esp, 0xc
mov byte [eax + ebx], 0
lea ecx, [edi + 0xc]
lea eax, [esp + 8]
push eax
push eax
call fcn.00781f80
test dl, 1
jne 0x780014
test byte [esp + 0xc], 1
je 0x780063
push dword [esp + 0x14]
call fcn.0051c570
add esp, 4
jmp 0x780063
mov eax, dword [edi + 0x18]
mov ecx, dword [edi + 0x1c]
mov edx, dword [edi + 0x20]
mov esi, dword [ebp + 8]
mov esi, dword [esi + 0x78]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x28], ecx
mov dword [esp + 0x40], edx
and esi, 0xfffffffc
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x28]
lea edx, [esp + 0x3c]
push edx
push esi
push eax
push ecx
call fcn.007820e0
add esp, 0x10
mov ebx, eax
test byte [esp + 0xc], 1
je 0x78005f
push dword [esp + 0x14]
call fcn.0051c570
add esp, 4
test bl, bl
je 0x7800b4
lea esi, [esp + 8]
mov ecx, esi
push 0x282
push str.external_protobuf_src_google_protobuf_descriptor_database.cc
push 2
call fcn.00630740
mov ecx, esi
push str.File_already_exists_in_database:
call fcn.0062ff70
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x78]
and edx, 0xfffffffc
mov ecx, eax
push edx
call fcn.0062ff90
lea ecx, [esp + 0x28]
push eax
call fcn.006300f0
mov ecx, esi
call fcn.00630770
xor eax, eax
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0xc
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x24]
mov eax, dword [eax + 0x2c]
lea edi, [eax + 4]
test eax, eax
cmove edi, eax
mov dword [esp + 0x24], ecx
test ecx, ecx
je 0x780196
shl dword [esp + 0x24], 2
xor ebx, ebx
nop dword [eax + eax]
mov esi, dword [edi + ebx]
mov eax, dword [esi + 0x90]
and eax, 0xfffffffc
movzx ecx, byte [eax]
mov edx, ecx
shr edx, 1
test cl, 1
lea ecx, [eax + 1]
cmovne ecx, dword [eax + 8]
mov dword [esp + 0x5c], ecx
cmovne edx, dword [eax + 4]
mov dword [esp + 0x60], edx
sub esp, 8
movsd xmm0, qword [esp + 0x64]
movsd qword [esp], xmm0
mov ecx, dword [esp + 0xc]
call fcn.0077d380
test al, al
je 0x7800a8
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x78]
and eax, 0xfffffffc
test byte [eax], 1
je 0x780140
mov ecx, dword [eax + 8]
jmp 0x780143
lea ecx, [eax + 1]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], 0
movzx ecx, byte [eax]
test cl, 1
je 0x780160
mov ecx, dword [eax + 4]
jmp 0x780162
shr ecx, 1
mov dword [esp + 0x38], ecx
sub esp, 0xc
movsd xmm0, qword [esp + 0x40]
movsd qword [esp], xmm0
mov dword [esp + 8], esi
mov ecx, dword [esp + 0x10]
call fcn.007819b0
test al, al
je 0x7800a8
add ebx, 4
cmp dword [esp + 0x24], ebx
jne 0x7800e0
mov eax, dword [ebp + 8]
mov esi, dword [eax + 0x34]
mov eax, dword [eax + 0x3c]
lea edi, [eax + 4]
test eax, eax
cmove edi, eax
test esi, esi
je 0x7801fc
shl esi, 2
xor ebx, ebx
mov eax, dword [edi + ebx]
mov eax, dword [eax + 0x40]
and eax, 0xfffffffc
movzx ecx, byte [eax]
mov edx, ecx
shr edx, 1
test cl, 1
lea ecx, [eax + 1]
cmovne ecx, dword [eax + 8]
mov dword [esp + 0x54], ecx
cmovne edx, dword [eax + 4]
mov dword [esp + 0x58], edx
sub esp, 8
movsd xmm0, qword [esp + 0x5c]
movsd qword [esp], xmm0
mov ecx, dword [esp + 0xc]
call fcn.0077d380
test al, al
je 0x7800a8
add ebx, 4
cmp esi, ebx
jne 0x7801b0
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x54]
mov eax, dword [eax + 0x5c]
lea edi, [eax + 4]
test eax, eax
cmove edi, eax
mov dword [esp + 0x24], ecx
test ecx, ecx
je 0x7802d6
shl dword [esp + 0x24], 2
xor ebx, ebx
mov esi, dword [edi + ebx]
mov eax, dword [esi + 0x10]
and eax, 0xfffffffc
movzx ecx, byte [eax]
mov edx, ecx
shr edx, 1
test cl, 1
lea ecx, [eax + 1]
cmovne ecx, dword [eax + 8]
mov dword [esp + 0x4c], ecx
cmovne edx, dword [eax + 4]
mov dword [esp + 0x50], edx
sub esp, 8
movsd xmm0, qword [esp + 0x54]
movsd qword [esp], xmm0
mov ecx, dword [esp + 0xc]
call fcn.0077d380
test al, al
je 0x7800a8
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x78]
and eax, 0xfffffffc
test byte [eax], 1
je 0x780280
mov ecx, dword [eax + 8]
jmp 0x780283
lea ecx, [eax + 1]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], 0
movzx ecx, byte [eax]
test cl, 1
je 0x7802a0
mov ecx, dword [eax + 4]
jmp 0x7802a2
shr ecx, 1
mov dword [esp + 0x30], ecx
sub esp, 0xc
movsd xmm0, qword [esp + 0x38]
movsd qword [esp], xmm0
mov dword [esp + 8], esi
mov ecx, dword [esp + 0x10]
call fcn.00781ab0
test al, al
je 0x7800a8
add ebx, 4
cmp dword [esp + 0x24], ebx
jne 0x780220
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0x44]
mov ecx, dword [ecx + 0x4c]
lea esi, [ecx + 4]
test ecx, ecx
cmove esi, ecx
test eax, eax
je 0x780353
lea edi, [eax*4 - 4]
xor ebx, ebx
nop word cs:[eax + eax]
mov eax, dword [esi + ebx]
mov eax, dword [eax + 0x20]
and eax, 0xfffffffc
movzx ecx, byte [eax]
mov edx, ecx
shr edx, 1
test cl, 1
lea ecx, [eax + 1]
cmovne ecx, dword [eax + 8]
mov dword [esp + 0x44], ecx
cmovne edx, dword [eax + 4]
mov dword [esp + 0x48], edx
sub esp, 8
movsd xmm0, qword [esp + 0x4c]
movsd qword [esp], xmm0
mov ecx, dword [esp + 0xc]
call fcn.0077d380
test al, al
je 0x7800aa
lea ecx, [ebx + 4]
cmp edi, ebx
mov ebx, ecx
jne 0x780300
jmp 0x7800aa
mov al, 1
jmp 0x7800aa
lea ecx, [esp + 8]
call fcn.0051f6b0
int3