// File: /workspace/github_c_makefile_star2_O0/olcaytaner[P]Isell/eps.c
// Function: plot_decision_node
void plot_decision_node(FILE* outfile, Decisionnodeptr rootnode, int maxdepth, int maxwidth)
{
 int i, dx, dy, radius = img.width / (5 * maxwidth), node_width = img.width / maxwidth, node_height = img.height / maxdepth;
 double l;
 Point p1, p2, parent;
 if (rootnode)
  {
   p1.x = (rootnode->x + 0.5) * node_width;
   p1.y = img.height - (rootnode->y + 0.5) * node_height;
   write_circle(outfile, p1.x, p1.y, radius);
   if (rootnode->parent)
    {
     parent.x = (rootnode->parent->x + 0.5) * node_width;
     parent.y = img.height - (rootnode->parent->y + 0.5) * node_height;
     l = point_to_point_distance(p1, parent);
     dx = fabs(parent.x - p1.x) * radius / l;
     dy = fabs(parent.y - p1.y) * radius / l;
     if (rootnode == rootnode->parent->left)
      {  
       p1.x = p1.x + dx;
       p2.x = parent.x - dx;
      }
     else
      {
       p1.x = p1.x - dx;
       p2.x = parent.x + dx;      
      }
     p1.y = p1.y + dy;
     p2.y = parent.y - dy;
     write_line(outfile, p1.x, p1.y, p2.x, p2.y);
    }
   if (rootnode->featureno >= 0 && current_dataset->features[rootnode->featureno].type == STRING)
     for (i = 0; i < current_dataset->features[rootnode->featureno].valuecount; i++)
       plot_decision_node(outfile, &(rootnode->string[i]), maxdepth, maxwidth);
   else
    {
     plot_decision_node(outfile, rootnode->left, maxdepth, maxwidth);
     plot_decision_node(outfile, rootnode->right, maxdepth, maxwidth);    
    }
  } 
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movl %ecx, -0x18(%rbp)
leaq 0x3af16b(%rip), %rax    # 0x3e2088
movl 0x4(%rax), %eax
imull $0x5, -0x18(%rbp), %ecx
cltd
idivl %ecx
movl %eax, -0x28(%rbp)
leaq 0x3af157(%rip), %rax    # 0x3e2088
movl 0x4(%rax), %eax
cltd
idivl -0x18(%rbp)
movl %eax, -0x2c(%rbp)
leaq 0x3af146(%rip), %rax    # 0x3e2088
movl (%rax), %eax
cltd
idivl -0x14(%rbp)
movl %eax, -0x30(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x33244
movq -0x10(%rbp), %rax
cvtsi2sdl 0x134(%rax), %xmm0
movsd 0xafa4e(%rip), %xmm1    # 0xe29b8
addsd %xmm1, %xmm0
cvtsi2sdl -0x2c(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
leaq 0x3af105(%rip), %rax    # 0x3e2088
cvtsi2sdl (%rax), %xmm1
movq -0x10(%rbp), %rax
cvtsi2sdl 0x138(%rax), %xmm0
movsd 0xafa1d(%rip), %xmm2    # 0xe29b8
addsd %xmm2, %xmm0
cvtsi2sdl -0x30(%rbp), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x40(%rbp)
movq -0x8(%rbp), %rdi
cvttsd2si -0x48(%rbp), %esi
cvttsd2si -0x40(%rbp), %edx
movl -0x28(%rbp), %ecx
callq 0x32b00
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x3317c
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
cvtsi2sdl 0x134(%rax), %xmm0
movsd 0xaf9b3(%rip), %xmm1    # 0xe29b8
addsd %xmm1, %xmm0
cvtsi2sdl -0x2c(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x68(%rbp)
leaq 0x3af06a(%rip), %rax    # 0x3e2088
cvtsi2sdl (%rax), %xmm1
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
cvtsi2sdl 0x138(%rax), %xmm0
movsd 0xaf97e(%rip), %xmm2    # 0xe29b8
addsd %xmm2, %xmm0
cvtsi2sdl -0x30(%rbp), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x60(%rbp)
movsd -0x48(%rbp), %xmm0
movsd -0x40(%rbp), %xmm1
movsd -0x68(%rbp), %xmm2
movsd -0x60(%rbp), %xmm3
callq 0x42070
movsd %xmm0, -0x38(%rbp)
movsd -0x68(%rbp), %xmm0
subsd -0x48(%rbp), %xmm0
movaps 0xafdca(%rip), %xmm1    # 0xe2e60
pand %xmm1, %xmm0
cvtsi2sdl -0x28(%rbp), %xmm1
mulsd %xmm1, %xmm0
divsd -0x38(%rbp), %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x20(%rbp)
movsd -0x60(%rbp), %xmm0
subsd -0x40(%rbp), %xmm0
movaps 0xafda0(%rip), %xmm1    # 0xe2e60
pand %xmm1, %xmm0
cvtsi2sdl -0x28(%rbp), %xmm1
mulsd %xmm1, %xmm0
divsd -0x38(%rbp), %xmm0
cvttsd2si %xmm0, %eax
movl %eax, -0x24(%rbp)
movq -0x10(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x18(%rcx), %rcx
cmpq (%rcx), %rax
jne 0x33112
movsd -0x48(%rbp), %xmm0
cvtsi2sdl -0x20(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x68(%rbp), %xmm0
cvtsi2sdl -0x20(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
jmp 0x33138
movsd -0x48(%rbp), %xmm0
cvtsi2sdl -0x20(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x48(%rbp)
movsd -0x68(%rbp), %xmm0
cvtsi2sdl -0x20(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x40(%rbp), %xmm0
cvtsi2sdl -0x24(%rbp), %xmm1
addsd %xmm1, %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x60(%rbp), %xmm0
cvtsi2sdl -0x24(%rbp), %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0x50(%rbp)
movq -0x8(%rbp), %rdi
cvttsd2si -0x48(%rbp), %esi
cvttsd2si -0x40(%rbp), %edx
cvttsd2si -0x58(%rbp), %ecx
cvttsd2si -0x50(%rbp), %r8d
callq 0x32a70
movq -0x10(%rbp), %rax
cmpl $0x0, 0x30(%rax)
jl 0x33215
leaq 0xd26af(%rip), %rax     # 0x105840
movq (%rax), %rax
addq $0x30f08, %rax          # imm = 0x30F08
movq -0x10(%rbp), %rcx
movslq 0x30(%rcx), %rcx
imulq $0x340, %rcx, %rcx      # imm = 0x340
addq %rcx, %rax
cmpl $0x1, (%rax)
jne 0x33215
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
leaq 0xd267e(%rip), %rcx     # 0x105840
movq (%rcx), %rcx
addq $0x30f08, %rcx          # imm = 0x30F08
movq -0x10(%rbp), %rdx
movslq 0x30(%rdx), %rdx
imulq $0x340, %rdx, %rdx      # imm = 0x340
addq %rdx, %rcx
cmpl 0x18(%rcx), %eax
jge 0x33213
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rsi
movslq -0x1c(%rbp), %rax
imulq $0x160, %rax, %rax      # imm = 0x160
addq %rax, %rsi
movl -0x14(%rbp), %edx
movl -0x18(%rbp), %ecx
callq 0x32f00
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x331b8
jmp 0x33242
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq (%rax), %rsi
movl -0x14(%rbp), %edx
movl -0x18(%rbp), %ecx
callq 0x32f00
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
movl -0x14(%rbp), %edx
movl -0x18(%rbp), %ecx
callq 0x32f00
jmp 0x33244
addq $0x70, %rsp
popq %rbp
retq
nopw (%rax,%rax)