user: What would the C source look like for the assembly code provided here?

```asm
<draw_start>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    %esi,-0xc(%rbp)
  mov    %edx,-0x10(%rbp)
  mov    -0x8(%rbp),%rax
  lea    D1159(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1a,%edx
  mov    $0x1,%esi
  lea    D488(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D704(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D822(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D858(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D1397(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x18,%edx
  mov    $0x1,%esi
  lea    D428(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x18,%edx
  mov    $0x1,%esi
  lea    D1349(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x22,%edx
  mov    $0x1,%esi
  lea    D119(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x22,%edx
  mov    $0x1,%esi
  lea    D333(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x18,%edx
  mov    $0x1,%esi
  lea    D1192(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x18,%edx
  mov    $0x1,%esi
  lea    D975(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1a,%edx
  mov    $0x1,%esi
  lea    D213(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1a,%edx
  mov    $0x1,%esi
  lea    D381(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1a,%edx
  mov    $0x1,%esi
  lea    D371(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1a,%edx
  mov    $0x1,%esi
  lea    D442(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1c,%edx
  mov    $0x1,%esi
  lea    D273(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x33,%edx
  mov    $0x1,%esi
  lea    D396(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
  mov    -0x8(%rbp),%rax
  lea    D643(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1f,%edx
  mov    $0x1,%esi
  lea    D1457(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D113(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1e,%edx
  mov    $0x1,%esi
  lea    D61(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D1391(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1a,%edx
  mov    $0x1,%esi
  lea    D650(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x2d,%edx
  mov    $0x1,%esi
  lea    D286(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0xd,%edx
  mov    $0x1,%esi
  lea    D343(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D1072(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1f,%edx
  mov    $0x1,%esi
  lea    D1023(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x19,%edx
  mov    $0x1,%esi
  lea    D645(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D859(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
  mov    -0x8(%rbp),%rax
  lea    D973(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x12,%edx
  mov    $0x1,%esi
  lea    D410(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x12,%edx
  mov    $0x1,%esi
  lea    D173(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0xa,%edx
  mov    $0x1,%esi
  lea    D745(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D1308(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x16,%edx
  mov    $0x1,%esi
  lea    D984(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D1412(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D51(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D1304(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D1458(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D1167(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D1070(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D37(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D857(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D553(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D764(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D467(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D37(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D857(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x9,%edx
  mov    $0x1,%esi
  lea    D667(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D579(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x16,%edx
  mov    $0x1,%esi
  lea    D79(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x12,%edx
  mov    $0x1,%esi
  lea    D896(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x19,%edx
  mov    $0x1,%esi
  lea    D75(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x12,%edx
  mov    $0x1,%esi
  lea    D513(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
  mov    -0x8(%rbp),%rax
  lea    D568(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D413(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D1366(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D1154(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D19(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D277(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0xa,%edx
  mov    $0x1,%esi
  lea    D745(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D37(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D1352(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D834(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D857(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x9,%edx
  mov    $0x1,%esi
  lea    D667(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D921(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0xb,%edx
  mov    $0x1,%esi
  lea    D1002(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D332(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D165(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x14,%edx
  mov    $0x1,%esi
  lea    D850(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D1147(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D940(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
  mov    -0x8(%rbp),%rax
  lea    D1160(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D1412(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D15(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D19(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D1359(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D1166(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0xa,%edx
  mov    $0x1,%esi
  lea    D745(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D37(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D857(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x9,%edx
  mov    $0x1,%esi
  lea    D667(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D921(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0xb,%edx
  mov    $0x1,%esi
  lea    D1002(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D332(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D165(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x14,%edx
  mov    $0x1,%esi
  lea    D850(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D1147(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D940(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
  mov    -0x8(%rbp),%rax
  lea    D1231(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D553(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D15(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D19(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D1359(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D53(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0xa,%edx
  mov    $0x1,%esi
  lea    D745(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D37(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D857(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x9,%edx
  mov    $0x1,%esi
  lea    D667(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D921(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0xb,%edx
  mov    $0x1,%esi
  lea    D1002(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D332(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  lea    D165(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x14,%edx
  mov    $0x1,%esi
  lea    D850(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D1147(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D940(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
  mov    -0x8(%rbp),%rax
  lea    D48(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x22,%edx
  mov    $0x1,%esi
  lea    D271(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x17,%edx
  mov    $0x1,%esi
  lea    D1472(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x25,%edx
  mov    $0x1,%esi
  lea    D1255(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1f,%edx
  mov    $0x1,%esi
  lea    D300(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
  mov    -0x8(%rbp),%rax
  lea    D1199(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x22,%edx
  mov    $0x1,%esi
  lea    D271(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x17,%edx
  mov    $0x1,%esi
  lea    D1472(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x25,%edx
  mov    $0x1,%esi
  lea    D1255(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1f,%edx
  mov    $0x1,%esi
  lea    D300(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
  mov    -0x8(%rbp),%rax
  lea    D782(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1c,%edx
  mov    $0x1,%esi
  lea    D612(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x17,%edx
  mov    $0x1,%esi
  lea    D1472(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x25,%edx
  mov    $0x1,%esi
  lea    D1255(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x1f,%edx
  mov    $0x1,%esi
  lea    D300(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
  mov    -0x8(%rbp),%rax
  lea    D948(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x12,%edx
  mov    $0x1,%esi
  lea    D823(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x12,%edx
  mov    $0x1,%esi
  lea    D801(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x29,%edx
  mov    $0x1,%esi
  lea    D997(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D147(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x19,%edx
  mov    $0x1,%esi
  lea    D1013(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D941(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D569(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
  mov    -0x8(%rbp),%rax
  lea    D878(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x12,%edx
  mov    $0x1,%esi
  lea    D823(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x12,%edx
  mov    $0x1,%esi
  lea    D801(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x29,%edx
  mov    $0x1,%esi
  lea    D997(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D994(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x19,%edx
  mov    $0x1,%esi
  lea    D1013(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  lea    D941(%rip),%rdx
  mov    %rdx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x13,%edx
  mov    $0x1,%esi
  lea    D569(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rcx
  mov    $0x6,%edx
  mov    $0x1,%esi
  lea    D7(%rip),%rax
  mov    %rax,%rdi
  call   <fwrite@plt>
  mov    -0x8(%rbp),%rax
  mov    %rax,%rsi
  mov    $0xa,%edi
  call   <fputc@plt>
  mov    -0x10(%rbp),%ecx
  mov    -0xc(%rbp),%edx
  mov    -0x8(%rbp),%rax
  lea    D1227(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  nop
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D1159
datatype: string
name: extract_symbolic_data
arguments: data_label: D488
datatype: string
name: extract_symbolic_data
arguments: data_label: D704
datatype: string
name: extract_symbolic_data
arguments: data_label: D822
datatype: string
name: extract_symbolic_data
arguments: data_label: D858
datatype: string
name: extract_symbolic_data
arguments: data_label: D1397
datatype: string
name: extract_symbolic_data
arguments: data_label: D428
datatype: string
name: extract_symbolic_data
arguments: data_label: D1349
datatype: string
name: extract_symbolic_data
arguments: data_label: D119
datatype: string
name: extract_symbolic_data
arguments: data_label: D333
datatype: string
name: extract_symbolic_data
arguments: data_label: D1192
datatype: string
name: extract_symbolic_data
arguments: data_label: D975
datatype: string
name: extract_symbolic_data
arguments: data_label: D213
datatype: string
name: extract_symbolic_data
arguments: data_label: D381
datatype: string
name: extract_symbolic_data
arguments: data_label: D371
datatype: string
name: extract_symbolic_data
arguments: data_label: D442
datatype: string
name: extract_symbolic_data
arguments: data_label: D273
datatype: string
name: extract_symbolic_data
arguments: data_label: D396
datatype: string
name: extract_symbolic_data
arguments: data_label: D643
datatype: string
name: extract_symbolic_data
arguments: data_label: D1457
datatype: string
name: extract_symbolic_data
arguments: data_label: D113
datatype: string
name: extract_symbolic_data
arguments: data_label: D61
datatype: string
name: extract_symbolic_data
arguments: data_label: D1391
datatype: string
name: extract_symbolic_data
arguments: data_label: D650
datatype: string
name: extract_symbolic_data
arguments: data_label: D286
datatype: string
name: extract_symbolic_data
arguments: data_label: D343
datatype: string
name: extract_symbolic_data
arguments: data_label: D1072
datatype: string
name: extract_symbolic_data
arguments: data_label: D1023
datatype: string
name: extract_symbolic_data
arguments: data_label: D645
datatype: string
name: extract_symbolic_data
arguments: data_label: D859
datatype: string
name: extract_symbolic_data
arguments: data_label: D7
datatype: string
name: extract_symbolic_data
arguments: data_label: D973
datatype: string
name: extract_symbolic_data
arguments: data_label: D410
datatype: string
name: extract_symbolic_data
arguments: data_label: D173
datatype: string
name: extract_symbolic_data
arguments: data_label: D745
datatype: string
name: extract_symbolic_data
arguments: data_label: D1308
datatype: string
name: extract_symbolic_data
arguments: data_label: D984
datatype: string
name: extract_symbolic_data
arguments: data_label: D1412
datatype: string
name: extract_symbolic_data
arguments: data_label: D51
datatype: string
name: extract_symbolic_data
arguments: data_label: D1304
datatype: string
name: extract_symbolic_data
arguments: data_label: D1458
datatype: string
name: extract_symbolic_data
arguments: data_label: D1167
datatype: string
name: extract_symbolic_data
arguments: data_label: D1070
datatype: string
name: extract_symbolic_data
arguments: data_label: D37
datatype: string
name: extract_symbolic_data
arguments: data_label: D857
datatype: string
name: extract_symbolic_data
arguments: data_label: D553
datatype: string
name: extract_symbolic_data
arguments: data_label: D764
datatype: string
name: extract_symbolic_data
arguments: data_label: D467
datatype: string
name: extract_symbolic_data
arguments: data_label: D667
datatype: string
name: extract_symbolic_data
arguments: data_label: D579
datatype: string
name: extract_symbolic_data
arguments: data_label: D79
datatype: string
name: extract_symbolic_data
arguments: data_label: D896
datatype: string
name: extract_symbolic_data
arguments: data_label: D75
datatype: string
name: extract_symbolic_data
arguments: data_label: D513
datatype: string
name: extract_symbolic_data
arguments: data_label: D568
datatype: string
name: extract_symbolic_data
arguments: data_label: D413
datatype: string
name: extract_symbolic_data
arguments: data_label: D1366
datatype: string
name: extract_symbolic_data
arguments: data_label: D1154
datatype: string
name: extract_symbolic_data
arguments: data_label: D19
datatype: string
name: extract_symbolic_data
arguments: data_label: D277
datatype: string
name: extract_symbolic_data
arguments: data_label: D1352
datatype: string
name: extract_symbolic_data
arguments: data_label: D834
datatype: string
name: extract_symbolic_data
arguments: data_label: D921
datatype: string
name: extract_symbolic_data
arguments: data_label: D1002
datatype: string
name: extract_symbolic_data
arguments: data_label: D332
datatype: string
name: extract_symbolic_data
arguments: data_label: D165
datatype: string
name: extract_symbolic_data
arguments: data_label: D850
datatype: string
name: extract_symbolic_data
arguments: data_label: D1147
datatype: string
name: extract_symbolic_data
arguments: data_label: D940
datatype: string
name: extract_symbolic_data
arguments: data_label: D1160
datatype: string
name: extract_symbolic_data
arguments: data_label: D15
datatype: string
name: extract_symbolic_data
arguments: data_label: D1359
datatype: string
name: extract_symbolic_data
arguments: data_label: D1166
datatype: string
name: extract_symbolic_data
arguments: data_label: D1231
datatype: string
name: extract_symbolic_data
arguments: data_label: D53
datatype: string
name: extract_symbolic_data
arguments: data_label: D48
datatype: string
name: extract_symbolic_data
arguments: data_label: D271
datatype: string
name: extract_symbolic_data
arguments: data_label: D1472
datatype: string
name: extract_symbolic_data
arguments: data_label: D1255
datatype: string
name: extract_symbolic_data
arguments: data_label: D300
datatype: string
name: extract_symbolic_data
arguments: data_label: D1199
datatype: string
name: extract_symbolic_data
arguments: data_label: D782
datatype: string
name: extract_symbolic_data
arguments: data_label: D612
datatype: string
name: extract_symbolic_data
arguments: data_label: D948
datatype: string
name: extract_symbolic_data
arguments: data_label: D823
datatype: string
name: extract_symbolic_data
arguments: data_label: D801
datatype: string
name: extract_symbolic_data
arguments: data_label: D997
datatype: string
name: extract_symbolic_data
arguments: data_label: D147
datatype: string
name: extract_symbolic_data
arguments: data_label: D1013
datatype: string
name: extract_symbolic_data
arguments: data_label: D941
datatype: string
name: extract_symbolic_data
arguments: data_label: D569
datatype: string
name: extract_symbolic_data
arguments: data_label: D878
datatype: string
name: extract_symbolic_data
arguments: data_label: D994
datatype: string
name: extract_symbolic_data
arguments: data_label: D1227
datatype: string

tool: D1159: %%!


tool: D488: /mm {72 mul 25.4 div} def


tool: D704: /PageWidth  210 mm def %% const


tool: D822: /PageHeight 297 mm def %% const


tool: D858: /BorderWidth  7 mm def %% const


tool: D1397: /FontHeight     10 def %% const


tool: D428: /setR {/R exch def} def


tool: D1349: /setr {/r exch def} def


tool: D119: /setscaleX {/scaleX exch def} def


tool: D333: /setscaleY {/scaleY exch def} def


tool: D1192: /setx {/x exch def} def


tool: D975: /sety {/y exch def} def


tool: D213: /setfx {/fx exch def} def


tool: D381: /setfy {/fy exch def} def


tool: D371: /settx {/tx exch def} def


tool: D442: /setty {/ty exch def} def


tool: D273: /settmp {/tmp exch def} def


tool: D396: /Times-Roman findfont FontHeight scalefont setfont


tool: D643: /rescale {                     %% stack: max_pos, max_level


tool: D1457:   PageHeight 2 BorderWidth mul


tool: D113:   sub exch 1 add div setscaleY %% scaleY = (PH-2BW)/(max_level+1)


tool: D61:   PageWidth 2 BorderWidth mul


tool: D1391:   sub exch div setscaleX       %% scaleX = (PH-2BW)/(max_pos)


tool: D650:   scaleX .33 mul dup setR


tool: D286:   0.25 scaleY mul gt {.2 scaleY mul setR} if


tool: D343:   .6 mm setr


tool: D1072:   0 PageHeight translate       %% go to top of page


tool: D1023:   BorderWidth scaleX 2 div add


tool: D645:   BorderWidth scaleY add


tool: D859:   neg translate                %% go to left top of drawing


tool: D7: } def


tool: D973: /node {                        %% stack: (id), x, y


tool: D410:   scaleY mul sety


tool: D173:   scaleX mul setx


tool: D745:   newpath


tool: D1308:   %% draw node


tool: D984:   x y neg R 0 360 arc


tool: D1412:   %% draw then edge


tool: D51:   .5 sqrt R mul settmp         %% tmp = sqrt(2) * R


tool: D1304:   x tmp sub setfx              %% fx = X(x) - tmp


tool: D1458:   y tmp add setfy              %% fy = Y(y) - sqrt 2 * R


tool: D1167:   x R sub settx                %% tx = X(x) - R


tool: D1070:   y R add setty                %% ty = Y(y) + R


tool: D37:   fx fy neg moveto


tool: D857:   tx ty neg lineto


tool: D553:   %% draw else edge


tool: D764:   x tmp add setfx              %% fx = X(x) + tmp


tool: D467:   x R add settx                %% tx = X(x) + R


tool: D667:   stroke


tool: D579:   %% draw string


tool: D79:   dup stringwidth pop


tool: D896:   2 div neg x add


tool: D75:   y FontHeight 3 div add


tool: D513:   neg moveto show


tool: D568: /edge {                        %% stack: (polarity), fx, tx, ty


tool: D413:   %% draw initial edge


tool: D1366:   scaleY mul R sub setty       %% ty = Y(y) - R


tool: D1154:   0 setfy                      %% fy = Y(0)


tool: D19:   scaleX mul settx             %% tx = X(tx)


tool: D277:   scaleX mul setfx             %% fx = X(fx)


tool: D1352:   0.5 scaleY mul setfy         %% fy = Y(0.5)


tool: D834:   fx fy neg lineto


tool: D921:   %% draw negation if necessary


tool: D1002:   (n) eq {


tool: D332:     fx tx add 2 div            %% fx = (fx+tx)/2


tool: D165:     fy ty add 2 div            %% fy = (fy+ty)/2


tool: D850:     neg r 0 360 arc


tool: D1147:     0 setgray fill


tool: D940:   }if


tool: D1160: /then { %%stack: (polarity), fx, fy, tx, ty


tool: D15:   scaleY mul R sub setty       %% ty = Y(ty) - R


tool: D1359:   scaleY mul R add setfy       %% fy = Y(fy) + R


tool: D1166:   scaleX mul R sub setfx       %% fx = X(fx) - R


tool: D1231: /else { %%stack: (polarity), fx, fy, tx, ty


tool: D53:   scaleX mul R add setfx       %% fx = X(fx) + R


tool: D48: /const {                       %% stack: (const), x, y


tool: D271:   scaleY mul FontHeight 2 div add


tool: D1472:   exch scaleX mul exch


tool: D1255:   newpath neg moveto dup stringwidth


tool: D300:   pop 2 div neg 0 rmoveto show


tool: D1199: /void {                       %% stack: (void), x, y


tool: D782: /name {                       %% stack: (name), x, y


tool: D612:   scaleY mul FontHeight sub


tool: D948: /then_const {                  %% stack: (const), x, y


tool: D823:   scaleY mul exch


tool: D801:   scaleX mul exch


tool: D997:   newpath neg moveto dup stringwidth pop


tool: D147:   2 div R add neg              %% x = X(x) - R - fw/2


tool: D1013:   R 0.025 scaleY mul add


tool: D941:   FontHeight add               %% y = Y(y) + R + 0.025*scaleY + FH


tool: D569:   neg rmoveto show


tool: D878: /else_const {                  %% stack: (const), x, y


tool: D994:   2 div neg R add              %% x = X(x) + R - fw/2


tool: D1227: %d %d rescale


assistant: ```c
void draw_start(FILE *fp, int max_x, int max_y) {
  fprintf(fp, "%%!\n");
  fprintf(fp, "/mm {72 mul 25.4 div} def\n");
  fprintf(fp, "/PageWidth  210 mm def %% const\n");
  fprintf(fp, "/PageHeight 297 mm def %% const\n");
  fprintf(fp, "/BorderWidth  7 mm def %% const\n");
  fprintf(fp, "/FontHeight     10 def %% const\n");
  fprintf(fp, "/setR {/R exch def} def\n");
  fprintf(fp, "/setr {/r exch def} def\n");
  fprintf(fp, "/setscaleX {/scaleX exch def} def\n");
  fprintf(fp, "/setscaleY {/scaleY exch def} def\n");
  fprintf(fp, "/setx {/x exch def} def\n");
  fprintf(fp, "/sety {/y exch def} def\n");
  fprintf(fp, "/setfx {/fx exch def} def\n");
  fprintf(fp, "/setfy {/fy exch def} def\n");
  fprintf(fp, "/settx {/tx exch def} def\n");
  fprintf(fp, "/setty {/ty exch def} def\n");
  fprintf(fp, "/settmp {/tmp exch def} def\n");
  fprintf(fp, "/Times-Roman findfont FontHeight scalefont setfont\n");
  fprintf(fp, "\n");
  fprintf(fp, "/rescale {                     %% stack: max_pos, max_level\n");
  fprintf(fp, "  PageHeight 2 BorderWidth mul\n");
  fprintf(fp, "  sub exch 1 add div setscaleY %% scaleY = (PH-2BW)/(max_level+1)\n");
  fprintf(fp, "  PageWidth 2 BorderWidth mul\n");
  fprintf(fp, "  sub exch div setscaleX       %% scaleX = (PH-2BW)/(max_pos)\n");
  fprintf(fp, "  scaleX .33 mul dup setR\n");
  fprintf(fp, "  0.25 scaleY mul gt {.2 scaleY mul setR} if\n");
  fprintf(fp, "  .6 mm setr\n");
  fprintf(fp, "  0 PageHeight translate       %% go to top of page\n");
  fprintf(fp, "  BorderWidth scaleX 2 div add\n");
  fprintf(fp, "  BorderWidth scaleY add\n");
  fprintf(fp, "  neg translate                %% go to left top of drawing\n");
  fprintf(fp, "} def\n");
  fprintf(fp, "\n");
  fprintf(fp, "/node {                        %% stack: (id), x, y\n");
  fprintf(fp, "  scaleY mul sety\n");
  fprintf(fp, "  scaleX mul setx\n");
  fprintf(fp, "  newpath\n");
  fprintf(fp, "  %% draw node\n");
  fprintf(fp, "  x y neg R 0 360 arc\n");
  fprintf(fp, "  %% draw then edge\n");
  fprintf(fp, "  .5 sqrt R mul settmp         %% tmp = sqrt(2) * R\n");
  fprintf(fp, "  x tmp sub setfx              %% fx = X(x) - tmp\n");
  fprintf(fp, "  y tmp add setfy              %% fy = Y(y) - sqrt 2 * R\n");
  fprintf(fp, "  x R sub settx                %% tx = X(x) - R\n");
  fprintf(fp, "  y R add setty                %% ty = Y(y) + R\n");
  fprintf(fp, "  fx fy neg moveto\n");
  fprintf(fp, "  tx ty neg lineto\n");
  fprintf(fp, "  %% draw else edge\n");
  fprintf(fp, "  x tmp add setfx              %% fx = X(x) + tmp\n");
  fprintf(fp, "  x R add settx                %% tx = X(x) + R\n");
  fprintf(fp, "  fx fy neg moveto\n");
  fprintf(fp, "  tx ty neg lineto\n");
  fprintf(fp, "  stroke\n");
  fprintf(fp, "  %% draw string\n");
  fprintf(fp, "  dup stringwidth pop\n");
  fprintf(fp, "  2 div neg x add\n");
  fprintf(fp, "  y FontHeight 3 div add\n");
  fprintf(fp, "  neg moveto show\n");
  fprintf(fp, "} def\n");
  fprintf(fp, "\n");
  fprintf(fp, "/edge {                        %% stack: (polarity), fx, tx, ty\n");
  fprintf(fp, "  %% draw initial edge\n");
  fprintf(fp, "  scaleY mul R sub setty       %% ty = Y(y) - R\n");
  fprintf(fp, "  0 setfy                      %% fy = Y(0)\n");
  fprintf(fp, "  scaleX mul settx             %% tx = X(tx)\n");
  fprintf(fp, "  scaleX mul setfx             %% fx = X(fx)\n");
  fprintf(fp, "  newpath\n");
  fprintf(fp, "  fx fy neg moveto\n");
  fprintf(fp, "  0.5 scaleY mul setfy         %% fy = Y(0.5)\n");
  fprintf(fp, "  fx fy neg lineto\n");
  fprintf(fp, "  tx ty neg lineto\n");
  fprintf(fp, "  stroke\n");
  fprintf(fp, "  %% draw negation if necessary\n");
  fprintf(fp, "  (n) eq {\n");
  fprintf(fp, "    fx tx add 2 div            %% fx = (fx+tx)/2\n");
  fprintf(fp, "    fy ty add 2 div            %% fy = (fy+ty)/2\n");
  fprintf(fp, "    neg r 0 360 arc\n");
  fprintf(fp, "    0 setgray fill\n");
  fprintf(fp, "  }if\n");
  fprintf(fp, "} def\n");
  fprintf(fp, "\n");
  fprintf(fp, "/then { %%stack: (polarity), fx, fy, tx, ty\n");
  fprintf(fp, "  %% draw then edge\n");
  fprintf(fp, "  scaleY mul R sub setty       %% ty = Y(ty) - R\n");
  fprintf(fp, "  scaleX mul settx             %% tx = X(tx)\n");
  fprintf(fp, "  scaleY mul R add setfy       %% fy = Y(fy) + R\n");
  fprintf(fp, "  scaleX mul R sub setfx       %% fx = X(fx) - R\n");
  fprintf(fp, "  newpath\n");
  fprintf(fp, "  fx fy neg moveto\n");
  fprintf(fp, "  tx ty neg lineto\n");
  fprintf(fp, "  stroke\n");
  fprintf(fp, "  %% draw negation if necessary\n");
  fprintf(fp, "  (n) eq {\n");
  fprintf(fp, "    fx tx add 2 div            %% fx = (fx+tx)/2\n");
  fprintf(fp, "    fy ty add 2 div            %% fy = (fy+ty)/2\n");
  fprintf(fp, "    neg r 0 360 arc\n");
  fprintf(fp, "    0 setgray fill\n");
  fprintf(fp, "  }if\n");
  fprintf(fp, "} def\n");
  fprintf(fp, "\n");
  fprintf(fp, "/else { %%stack: (polarity), fx, fy, tx, ty\n");
  fprintf(fp, "  %% draw else edge\n");
  fprintf(fp, "  scaleY mul R sub setty       %% ty = Y(ty) - R\n");
  fprintf(fp, "  scaleX mul settx             %% tx = X(tx)\n");
  fprintf(fp, "  scaleY mul R add setfy       %% fy = Y(fy) + R\n");
  fprintf(fp, "  scaleX mul R add setfx       %% fx = X(fx) + R\n");
  fprintf(fp, "  newpath\n");
  fprintf(fp, "  fx fy neg moveto\n");
  fprintf(fp, "  tx ty neg lineto\n");
  fprintf(fp, "  stroke\n");
  fprintf(fp, "  %% draw negation if necessary\n");
  fprintf(fp, "  (n) eq {\n");
  fprintf(fp, "    fx tx add 2 div            %% fx = (fx+tx)/2\n");
  fprintf(fp, "    fy ty add 2 div            %% fy = (fy+ty)/2\n");
  fprintf(fp, "    neg r 0 360 arc\n");
  fprintf(fp, "    0 setgray fill\n");
  fprintf(fp, "  }if\n");
  fprintf(fp, "} def\n");
  fprintf(fp, "\n");
  fprintf(fp, "/const {                       %% stack: (const), x, y\n");
  fprintf(fp, "  scaleY mul FontHeight 2 div add\n");
  fprintf(fp, "  exch scaleX mul exch\n");
  fprintf(fp, "  newpath neg moveto dup stringwidth\n");
  fprintf(fp, "  pop 2 div neg 0 rmoveto show\n");
  fprintf(fp, "} def\n");
  fprintf(fp, "\n");
  fprintf(fp, "/void {                       %% stack: (void), x, y\n");
  fprintf(fp, "  scaleY mul FontHeight 2 div add\n");
  fprintf(fp, "  exch scaleX mul exch\n");
  fprintf(fp, "  newpath neg moveto dup stringwidth\n");
  fprintf(fp, "  pop 2 div neg 0 rmoveto show\n");
  fprintf(fp, "} def\n");
  fprintf(fp, "\n");
  fprintf(fp, "/name {                       %% stack: (name), x, y\n");
  fprintf(fp, "  scaleY mul FontHeight sub\n");
  fprintf(fp, "  exch scaleX mul exch\n");
  fprintf(fp, "  newpath neg moveto dup stringwidth\n");
  fprintf(fp, "  pop 2 div neg 0 rmoveto show\n");
  fprintf(fp, "} def\n");
  fprintf(fp, "\n");
  fprintf(fp, "/then_const {                  %% stack: (const), x, y\n");
  fprintf(fp, "  scaleY mul exch\n");
  fprintf(fp, "  scaleX mul exch\n");
  fprintf(fp, "  newpath neg moveto dup stringwidth pop\n");
  fprintf(fp, "  2 div R add neg              %% x = X(x) - R - fw/2\n");
  fprintf(fp, "  R 0.025 scaleY mul add\n");
  fprintf(fp, "  FontHeight add               %% y = Y(y) + R + 0.025*scaleY + FH\n");
  fprintf(fp, "  neg rmoveto show\n");
  fprintf(fp, "} def\n");
  fprintf(fp, "\n");
  fprintf(fp, "/else_const {                  %% stack: (const), x, y\n");
  fprintf(fp, "  scaleY mul exch\n");
  fprintf(fp, "  scaleX mul exch\n");
  fprintf(fp, "  newpath neg moveto dup stringwidth pop\n");
  fprintf(fp, "  2 div neg R add              %% x = X(x) + R - fw/2\n");
  fprintf(fp, "  R 0.025 scaleY mul add\n");
  fprintf(fp, "  FontHeight add               %% y = Y(y) + R + 0.025*scaleY + FH\n");
  fprintf(fp, "  neg rmoveto show\n");
  fprintf(fp, "} def\n");
  fprintf(fp, "\n");
  fprintf(fp, "%d %d rescale\n", max_x, max_y);
}
```