[universalpackagemanager@universalpackagemanager-pc usr]$ gcc -Wall ./main.c ./*.o ../../ul_exec_libc.so ; ./a.out #*/
size is 126480
size is 168680
passing program and interperater to ul.so:
allocating 8
found 2 tokens.
program_arguments[1] = -l
program_arguments[2] = -h
00400000-00402000 r-xp 00000000 fe:00 1750155                            /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/Converted/usr/a.out
00601000-00602000 r-xp 00001000 fe:00 1750155                            /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/Converted/usr/a.out
00602000-00832000 rwxp 00002000 fe:00 1750155                            /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/Converted/usr/a.out
00832000-00835000 rwxp 00000000 00:00 0 
00ad1000-00af2000 rwxp 00000000 00:00 0                                  [heap]
7f360c9f6000-7f360cb91000 r-xp 00000000 fe:00 2379249                    /usr/lib/libc-2.25.so
7f360cb91000-7f360cd90000 ---p 0019b000 fe:00 2379249                    /usr/lib/libc-2.25.so
7f360cd90000-7f360cd94000 r-xp 0019a000 fe:00 2379249                    /usr/lib/libc-2.25.so
7f360cd94000-7f360cd96000 rwxp 0019e000 fe:00 2379249                    /usr/lib/libc-2.25.so
7f360cd96000-7f360cd9a000 rwxp 00000000 00:00 0 
7f360cd9a000-7f360cda2000 r-xp 00000000 fe:00 1750154                    /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/ul_exec_libc.so
7f360cda2000-7f360cfa1000 ---p 00008000 fe:00 1750154                    /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/ul_exec_libc.so
7f360cfa1000-7f360cfa2000 r-xp 00007000 fe:00 1750154                    /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/ul_exec_libc.so
7f360cfa2000-7f360cfa3000 rwxp 00008000 fe:00 1750154                    /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/ul_exec_libc.so
7f360cfa3000-7f360cfc6000 r-xp 00000000 fe:00 2378684                    /usr/lib/ld-2.25.so
7f360d18a000-7f360d18d000 rwxp 00000000 00:00 0 
7f360d199000-7f360d1c5000 rwxp 00000000 00:00 0 
7f360d1c5000-7f360d1c6000 r-xp 00022000 fe:00 2378684                    /usr/lib/ld-2.25.so
7f360d1c6000-7f360d1c7000 rwxp 00023000 fe:00 2378684                    /usr/lib/ld-2.25.so
7f360d1c7000-7f360d1c8000 rwxp 00000000 00:00 0 
7ffd7fb46000-7ffd7fb67000 rwxp 00000000 00:00 0                          [stack]
7ffd7fb7a000-7ffd7fb7d000 r--p 00000000 00:00 0                          [vvar]
7ffd7fb7d000-7ffd7fb7f000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
aquiring header
aquiring program header
searching for PT_LOAD and PT_INTERP
loading 0x7f360d199010
anywhere = 0
anywhere = 0
LOAD_ELF mapping 0x7f360d199010
anywhere = 1
anywhere = 1
unmapping
argvb = save_argv(3, placeholder);
printing maps before executing
00400000-0041e000 r-xp 00000000 00:00 0 
00601000-00602000 r-xp 00001000 fe:00 1750155                            /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/Converted/usr/a.out
00602000-0061d000 rwxp 00002000 fe:00 1750155                            /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/Converted/usr/a.out
0061d000-00620000 rwxp 00000000 00:00 0 
00620000-00832000 rwxp 00020000 fe:00 1750155                            /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/Converted/usr/a.out
00832000-00835000 rwxp 00000000 00:00 0 
00ad1000-00af2000 rwxp 00000000 00:00 0                                  [heap]
7f360c9f6000-7f360cb91000 r-xp 00000000 fe:00 2379249                    /usr/lib/libc-2.25.so
7f360cb91000-7f360cd90000 ---p 0019b000 fe:00 2379249                    /usr/lib/libc-2.25.so
7f360cd90000-7f360cd94000 r-xp 0019a000 fe:00 2379249                    /usr/lib/libc-2.25.so
7f360cd94000-7f360cd96000 rwxp 0019e000 fe:00 2379249                    /usr/lib/libc-2.25.so
7f360cd96000-7f360cd9a000 rwxp 00000000 00:00 0 
7f360cd9a000-7f360cda2000 r-xp 00000000 fe:00 1750154                    /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/ul_exec_libc.so
7f360cda2000-7f360cfa1000 ---p 00008000 fe:00 1750154                    /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/ul_exec_libc.so
7f360cfa1000-7f360cfa2000 r-xp 00007000 fe:00 1750154                    /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/ul_exec_libc.so
7f360cfa2000-7f360cfa3000 rwxp 00008000 fe:00 1750154                    /home/universalpackagemanager/UPM/asm/elf-parser/not-compiled/ul_exec_libc.so
7f360cfa3000-7f360cfc6000 r-xp 00000000 fe:00 2378684                    /usr/lib/ld-2.25.so
7f360d167000-7f360d18a000 r-xp 00000000 00:00 0 
7f360d18a000-7f360d18d000 rwxp 00000000 00:00 0 
7f360d199000-7f360d1c5000 rwxp 00000000 00:00 0 
7f360d1c5000-7f360d1c6000 r-xp 00022000 fe:00 2378684                    /usr/lib/ld-2.25.so
7f360d1c6000-7f360d1c7000 rwxp 00023000 fe:00 2378684                    /usr/lib/ld-2.25.so
7f360d1c7000-7f360d1c8000 rwxp 00000000 00:00 0 
7f360d389000-7f360d38c000 rwxp 00000000 00:00 0 
7ffd7fb46000-7ffd7fb67000 rwxp 00000000 00:00 0                          [stack]
7ffd7fb7a000-7ffd7fb7d000 r--p 00000000 00:00 0                          [vvar]
7ffd7fb7d000-7ffd7fb7f000 r-xp 00000000 00:00 0                          [vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0                  [vsyscall]
jumping to 0x7f360d167d80
total 4.5M
-rw-r--r-- 1 universalpackagemanager universalpackagemanager 125K Jan 25 06:56 0.o
-rw-r--r-- 1 universalpackagemanager universalpackagemanager 166K Jan 25 06:56 1.o
-rw-r--r-- 1 universalpackagemanager universalpackagemanager  18K Jan 25 06:56 2.o
-rw-r--r-- 1 universalpackagemanager universalpackagemanager 1.9M Jan 25 06:56 3.o
-rwxr-xr-x 1 universalpackagemanager universalpackagemanager 2.2M Jan 25 14:22 a.out
-rw-r--r-- 1 universalpackagemanager universalpackagemanager    0 Jan 25 12:26 a.txt
-rw-r--r-- 1 universalpackagemanager universalpackagemanager  17K Jan 25 14:21 main.c
[universalpackagemanager@universalpackagemanager-pc usr]$ cat ./main.c
/* */
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <limits.h>
#include <assert.h>
#include <string.h>
#include <errno.h>
#include <libgen.h>
#include <sys/stat.h>
#include <sys/types.h>
void
ulexec_array(void * mapped, void * mapped_interpreter, char * args, char **env);



// "look deep into yourself, Clarice"  -- Hanibal Lector
char findyourself_save_pwd[PATH_MAX];
char findyourself_save_argv0[PATH_MAX];
char findyourself_save_path[PATH_MAX];
char findyourself_path_separator='/';
char findyourself_path_separator_as_string[2]="/";
char findyourself_path_list_separator[8]=":";  // could be ":; "
char findyourself_debug=0;

int findyourself_initialized=0;

void findyourself_init(char *argv0)
{

  getcwd(findyourself_save_pwd, sizeof(findyourself_save_pwd));

  strncpy(findyourself_save_argv0, argv0, sizeof(findyourself_save_argv0));
  findyourself_save_argv0[sizeof(findyourself_save_argv0)-1]=0;

  strncpy(findyourself_save_path, getenv("PATH"), sizeof(findyourself_save_path));
  findyourself_save_path[sizeof(findyourself_save_path)-1]=0;
  findyourself_initialized=1;
}


int find_yourself(char *result, size_t size_of_result)
{
  char newpath[PATH_MAX+256];
  char newpath2[PATH_MAX+256];

  assert(findyourself_initialized);
  result[0]=0;

  if(findyourself_save_argv0[0]==findyourself_path_separator) {
    if(findyourself_debug) printf("  absolute path\n");
     realpath(findyourself_save_argv0, newpath);
     if(findyourself_debug) printf("  newpath=\"%s\"\n", newpath);
     if(!access(newpath, F_OK)) {
        strncpy(result, newpath, size_of_result);
        result[size_of_result-1]=0;
        return(0);
     } else {
    perror("access failed 1");
      }
  } else if( strchr(findyourself_save_argv0, findyourself_path_separator )) {
    if(findyourself_debug) printf("  relative path to pwd\n");
    strncpy(newpath2, findyourself_save_pwd, sizeof(newpath2));
    newpath2[sizeof(newpath2)-1]=0;
    strncat(newpath2, findyourself_path_separator_as_string, sizeof(newpath2));
    newpath2[sizeof(newpath2)-1]=0;
    strncat(newpath2, findyourself_save_argv0, sizeof(newpath2));
    newpath2[sizeof(newpath2)-1]=0;
    realpath(newpath2, newpath);
    if(findyourself_debug) printf("  newpath=\"%s\"\n", newpath);
    if(!access(newpath, F_OK)) {
        strncpy(result, newpath, size_of_result);
        result[size_of_result-1]=0;
        return(0);
     } else {
    perror("access failed 2");
      }
  } else {
    if(findyourself_debug) printf("  searching $PATH\n");
    char *saveptr;
    char *pathitem;
    for(pathitem=strtok_r(findyourself_save_path, findyourself_path_list_separator,  &saveptr); pathitem; pathitem=strtok_r(NULL, findyourself_path_list_separator, &saveptr) ) {
       if(findyourself_debug>=2) printf("pathitem=\"%s\"\n", pathitem);
       strncpy(newpath2, pathitem, sizeof(newpath2));
       newpath2[sizeof(newpath2)-1]=0;
       strncat(newpath2, findyourself_path_separator_as_string, sizeof(newpath2));
       newpath2[sizeof(newpath2)-1]=0;
       strncat(newpath2, findyourself_save_argv0, sizeof(newpath2));
       newpath2[sizeof(newpath2)-1]=0;
       realpath(newpath2, newpath);
       if(findyourself_debug) printf("  newpath=\"%s\"\n", newpath);
      if(!access(newpath, F_OK)) {
          strncpy(result, newpath, size_of_result);
          result[size_of_result-1]=0;
          return(0);
      } 
    } // end for
    perror("access failed 3");

  } // end else
  // if we get here, we have tried all three methods on argv[0] and still haven't succeeded.   Include fallback methods here.
  return(1);
}

#include <stddef.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/un.h>

int
make_named_socket (const char *filename)
{
    struct sockaddr_un name;
    int sock;
    size_t size;

    /* Create the socket. */
    sock = socket (PF_LOCAL, SOCK_DGRAM, 0);
    if (sock < 0)
        {
            perror ("socket");
            exit (EXIT_FAILURE);
        }

    /* Bind a name to the socket. */
    name.sun_family = AF_LOCAL;
    strncpy (name.sun_path, filename, sizeof (name.sun_path));
    name.sun_path[sizeof (name.sun_path) - 1] = '\0';

    /* The size of the address is
        the offset of the start of the filename,
        plus its length (not including the terminating null byte).
        Alternatively you can just do:
        size = SUN_LEN (&name);
    */
    size = (offsetof (struct sockaddr_un, sun_path)
            + strlen (name.sun_path));

    if (bind (sock, (struct sockaddr *) &name, size) < 0)
        {
            perror ("bind");
            exit (EXIT_FAILURE);
        }

    return sock;
}

int main(int argc, char **argv, char ** env)
{
  findyourself_init(argv[0]);

  char newpath[PATH_MAX];
  find_yourself(newpath, sizeof(newpath));
//   if(1 || strcmp(argv[0],newpath)) { }
//   char *dummy  = strdup( newpath );
//   char *dname = dirname( dummy );

  // OBJECT START
        extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_start;
        extern size_t _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_size;
        extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_end;
        char * p = &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_start;
        char ch;
        int bytes=1;
        printf("size is %zu\n", (size_t)&_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_size);
  
        char * array = malloc((size_t)&_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_size);
        while ( p != &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_end ) {
           ch = *p++;
            array[bytes-1] = ch;
            bytes++;
        }
        bytes--;

        extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_start;
        extern size_t _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_size;
        extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_end;
        char * pi = &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_start;
        char chi;
        int bytesi=1;
        printf("size is %zu\n", (size_t)&_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_size);
  
        char * arrayi = malloc((size_t)&_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_size);
        while ( pi != &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_end ) {
           chi = *pi++;
            arrayi[bytesi-1] = chi;
            bytesi++;
        }
        bytesi--;

        printf("passing program and interperater to ul.so:\n"); 

       ulexec_array(array, arrayi, "-l -h", env);

       return (0);
  printf("Extracting...\n");

//         // OBJECT START
//         extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_start;
//         extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_size; // we keep this just in case we ever need it
//         extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_end;
//         char * a0p = &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_start;
//         FILE *a0fp;
//         chdir(dname);
//         
//         mkdir("usr", 0777); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         chdir("usr"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         mkdir("bin", 0777); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         chdir("bin"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         
//         a0fp = fopen("./ls", ("w+"));
//         while ( a0p != &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_bin_ls_end ) fputc(*a0p++, a0fp); // credit for fputc(*p++, fp): flawless_snowflake from kik messenger
//         fclose(a0fp);
//         chmod("./ls", 00755);
//         chdir(dname);
//         
//         // OBJECT END
//         
//         // OBJECT START
//         extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_start;
//         extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_size; // we keep this just in case we ever need it
//         extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_end;
//         char * a1p = &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_start;
//         FILE *a1fp;
//         chdir(dname);
//         
//         mkdir("usr", 0777); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         chdir("usr"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         mkdir("lib64", 0777); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         chdir("lib64"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         
//         a1fp = fopen("./ld-linux-x86-64.so.2", ("w+"));
//         while ( a1p != &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib64_ld_linux_x86_64_so_2_end ) fputc(*a1p++, a1fp); // credit for fputc(*p++, fp): flawless_snowflake from kik messenger
//         fclose(a1fp);
//         chmod("./ld-linux-x86-64.so.2", 00755);
//         chdir(dname);
//         
//         // OBJECT END
//         
//         // OBJECT START
//         extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libcap_so_2_start;
//         extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libcap_so_2_size; // we keep this just in case we ever need it
//         extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libcap_so_2_end;
//         char * a2p = &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libcap_so_2_start;
//         FILE *a2fp;
//         chdir(dname);
//         
//         mkdir("usr", 0777); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         chdir("usr"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         mkdir("lib", 0777); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         chdir("lib"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         
//         a2fp = fopen("./libcap.so.2", ("w+"));
//         while ( a2p != &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libcap_so_2_end ) fputc(*a2p++, a2fp); // credit for fputc(*p++, fp): flawless_snowflake from kik messenger
//         fclose(a2fp);
//         chmod("./libcap.so.2", 00644);
//         chdir(dname);
//         
//         // OBJECT END
//         
//         // OBJECT START
//         extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libc_so_6_start;
//         extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libc_so_6_size; // we keep this just in case we ever need it
//         extern char _binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libc_so_6_end;
//         char * a3p = &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libc_so_6_start;
//         FILE *a3fp;
//         chdir(dname);
//         
//         mkdir("usr", 0777); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         chdir("usr"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         mkdir("lib", 0777); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         chdir("lib"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         
//         a3fp = fopen("./libc.so.6", ("w+"));
//         while ( a3p != &_binary__home_universalpackagemanager_UPM_asm_elf_parser_not_compiled_usr_lib_libc_so_6_end ) fputc(*a3p++, a3fp); // credit for fputc(*p++, fp): flawless_snowflake from kik messenger
//         fclose(a3fp);
//         chmod("./libc.so.6", 00755);
//         chdir(dname);
//         
//         // OBJECT END
//         
//         // MKDIRS START
//         chdir(dname);
//         
//         mkdir("usr", 0777);
//          // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         chdir("usr"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         
//         chdir(dname);
//         
//         // MKDIRS END
//         
//         // MKDIRS START
//         chdir(dname);
//         
//         mkdir("usr", 0777);
//          // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         chdir("usr"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         mkdir("bin", 0777);
//          // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         chdir("bin"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         
//         chdir(dname);
//         
//         // MKDIRS END
//         
//         // MKDIRS START
//         chdir(dname);
//         
//         mkdir("usr", 0777);
//          // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         chdir("usr"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         mkdir("lib64", 0777);
//          // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         chdir("lib64"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         
//         chdir(dname);
//         
//         // MKDIRS END
//         
//         // MKDIRS START
//         chdir(dname);
//         
//         mkdir("usr", 0777);
//          // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         chdir("usr"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         mkdir("lib", 0777);
//          // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         chdir("lib"); // Simulates the mkdir -p ( mkdir --help: -p, --parents ) argument of the mkdir binary found in /bin/mkdir or /usr/bin/mkdir
//         
//         chdir(dname);
//         
//         // MKDIRS END
//         
//         // CHMODDIR START
//         chdir(dname);
//         chmod("usr", 00755);
//         chdir(dname);
//         
//         // CHMODDIR END
//         
//         // CHMODDIR START
//         chdir(dname);
//         chmod("usr/bin", 00755);
//         chdir(dname);
//         
//         // CHMODDIR END
//         
//         // CHMODDIR START
//         chdir(dname);
//         chmod("usr/lib64", 00755);
//         chdir(dname);
//         
//         // CHMODDIR END
//         
//         // CHMODDIR START
//         chdir(dname);
//         chmod("usr/lib", 00755);
//         chdir(dname);
//         
//         // CHMODDIR END
//         
//   free( dummy );
//   printf("Extracted\n");
  return 0;
    }

[universalpackagemanager@universalpackagemanager-pc usr]$