// File: /workspace/github_c_makefile_star2_O0/mishun[P]plantri/fullgen.c
// Function: bilde_f_und_g_rek
BOOL bilde_f_und_g_rek(KNOTENTYP *f, KNOTENTYP *g, KANTE *k1, KANTE *k2) {
  KNOTENTYP u,v;
  k1 = k1->invers->prev;
  k2 = k2->invers->prev;   /* k1 und k2 im Gleichschritt nach rechts und links */
  u = k1->name;            /* von u wird der Funktionswert f[u] berechnet */
  v = k2->name;
  if (!(f[u])) {          /* Funktionswert noch nicht bekannt */
    f[u] = v;
    if (g[v]) {return(0);}    /* Widerspruch gefunden */
    g[v] = u;
    if (!bilde_f_und_g_rek(f,g,k1,k2))  {return(0);}  /* weitere Funktionswerte: Widerspruch? */
  }
  else { 
    if (!(g[v])) {return(0);}     /* Widerspruch gefunden. Diese Abfrage koennte aber auch
                                      entfallen, denn wenn ein Wert von g noch nicht festgelegt
        ist, obwohl der zugehoerige Wert von f bereits feststeht, so wird an anderer Stelle ein
        Wert von g zuviel festgelegt sein, obwohl der zugehoerige Wert von f noch nicht feststeht */
  }
  k1 = k1->prev;           /* k1 und k2 spiegelverkehrt nach links und rechts */
  k2 = k2->prev;           /* denn: (k->invers->prev)->prev = k->invers->next */
  u = k1->name;
  v = k2->name;
  if (!(f[u])) {
    f[u] = v;
    if (g[v]) {return(0);}
    g[v] = u;
    if (!bilde_f_und_g_rek(f,g,k1,k2))  {return(0);}
  }
  else {
    if (!(g[v])) {return(0);}
  }
  return(1);       /* keinen Widerspruch festgestellt */
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movq -0x20(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x28(%rbp), %rax
movq 0x28(%rax), %rax
movq 0x18(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movw 0x2(%rax), %ax
movw %ax, -0x2a(%rbp)
movq -0x28(%rbp), %rax
movw 0x2(%rax), %ax
movw %ax, -0x2c(%rbp)
movq -0x10(%rbp), %rax
movzwl -0x2a(%rbp), %ecx
cmpw $0x0, (%rax,%rcx,2)
jne 0xc42b
movw -0x2c(%rbp), %dx
movq -0x10(%rbp), %rax
movzwl -0x2a(%rbp), %ecx
movw %dx, (%rax,%rcx,2)
movq -0x18(%rbp), %rax
movzwl -0x2c(%rbp), %ecx
cmpw $0x0, (%rax,%rcx,2)
je 0xc3f7
movb $0x0, -0x1(%rbp)
jmp 0xc4f5
movw -0x2a(%rbp), %dx
movq -0x18(%rbp), %rax
movzwl -0x2c(%rbp), %ecx
movw %dx, (%rax,%rcx,2)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0xc370
cmpb $0x0, %al
jne 0xc429
movb $0x0, -0x1(%rbp)
jmp 0xc4f5
jmp 0xc445
movq -0x18(%rbp), %rax
movzwl -0x2c(%rbp), %ecx
cmpw $0x0, (%rax,%rcx,2)
jne 0xc443
movb $0x0, -0x1(%rbp)
jmp 0xc4f5
jmp 0xc445
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x28(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x28(%rbp)
movq -0x20(%rbp), %rax
movw 0x2(%rax), %ax
movw %ax, -0x2a(%rbp)
movq -0x28(%rbp), %rax
movw 0x2(%rax), %ax
movw %ax, -0x2c(%rbp)
movq -0x10(%rbp), %rax
movzwl -0x2a(%rbp), %ecx
cmpw $0x0, (%rax,%rcx,2)
jne 0xc4da
movw -0x2c(%rbp), %dx
movq -0x10(%rbp), %rax
movzwl -0x2a(%rbp), %ecx
movw %dx, (%rax,%rcx,2)
movq -0x18(%rbp), %rax
movzwl -0x2c(%rbp), %ecx
cmpw $0x0, (%rax,%rcx,2)
je 0xc4a9
movb $0x0, -0x1(%rbp)
jmp 0xc4f5
movw -0x2a(%rbp), %dx
movq -0x18(%rbp), %rax
movzwl -0x2c(%rbp), %ecx
movw %dx, (%rax,%rcx,2)
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
callq 0xc370
cmpb $0x0, %al
jne 0xc4d8
movb $0x0, -0x1(%rbp)
jmp 0xc4f5
jmp 0xc4f1
movq -0x18(%rbp), %rax
movzwl -0x2c(%rbp), %ecx
cmpw $0x0, (%rax,%rcx,2)
jne 0xc4ef
movb $0x0, -0x1(%rbp)
jmp 0xc4f5
jmp 0xc4f1
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
addq $0x30, %rsp
popq %rbp
retq
nop