// File: /workspace/github_c_makefile_star2_O0/AlxHnr[P]nano-backup/src/restore.c
// Function: restorePath
static void restorePath(const PathNode *node, const PathState *state,
                        StringView repo_path)
{
  if(state->type == PST_regular_file)
  {
    restoreFile(node->path, &state->metadata.file_info, repo_path);
    sChown(node->path, state->uid, state->gid);
    sChmod(node->path, state->metadata.file_info.permission_bits);
    sUtime(node->path, state->metadata.file_info.modification_time);
  }
  else if(state->type == PST_symlink)
  {
    sSymlink(state->metadata.symlink_target, node->path);
    sLChown(node->path, state->uid, state->gid);
  }
  else if(state->type == PST_directory)
  {
    sMkdir(node->path);
    sChown(node->path, state->uid, state->gid);
    sChmod(node->path, state->metadata.directory_info.permission_bits);
    sUtime(node->path, state->metadata.directory_info.modification_time);
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
leaq 0x10(%rbp), %rax
movq %rax, -0x18(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x1, (%rax)
jne 0xb7a5
movq -0x18(%rbp), %rax
movq -0x8(%rbp), %rcx
movq -0x10(%rbp), %rdi
addq $0x10, %rdi
movq (%rcx), %rdx
movq %rdx, (%rsp)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rsp)
movq (%rax), %rcx
movq %rcx, 0x18(%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x28(%rsp)
callq 0xabc0
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movl 0x4(%rcx), %edi
movq -0x10(%rbp), %rcx
movl 0x8(%rcx), %esi
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xcad0
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movl 0x10(%rcx), %edi
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xca60
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x18(%rcx), %rdi
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xcbb0
jmp 0xb8dd
movq -0x10(%rbp), %rax
cmpl $0x2, (%rax)
jne 0xb827
movq -0x10(%rbp), %rcx
addq $0x10, %rcx
movq -0x8(%rbp), %rax
movq (%rcx), %rdx
movq %rdx, (%rsp)
movq 0x8(%rcx), %rdx
movq %rdx, 0x8(%rsp)
movq 0x10(%rcx), %rcx
movq %rcx, 0x10(%rsp)
movq (%rax), %rcx
movq %rcx, 0x18(%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x20(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x28(%rsp)
callq 0xc730
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movl 0x4(%rcx), %edi
movq -0x10(%rbp), %rcx
movl 0x8(%rcx), %esi
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xcb40
jmp 0xb8db
movq -0x10(%rbp), %rax
cmpl $0x3, (%rax)
jne 0xb8d9
movq -0x8(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xc6c0
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movl 0x4(%rcx), %edi
movq -0x10(%rbp), %rcx
movl 0x8(%rcx), %esi
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xcad0
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movl 0x10(%rcx), %edi
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xca60
movq -0x8(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x18(%rcx), %rdi
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0xcbb0
jmp 0xb8db
jmp 0xb8dd
addq $0x50, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
nopl (%rax)