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

```asm
<izracun>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  mov    %edx,%r12d
  push   %rbp
  movslq %ecx,%rbp
  push   %rbx
  mov    %rsi,%rbx
  sub    $0x48,%rsp
  mov    %r8,0x18(%rsp)
  cmp    $0x56,%dil
  je     L95
  cmp    $0x4f,%dil
  je     L141
L37:
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L141:
  test   %ebp,%ebp
  jle    L37
  mov    %r9d,%eax
  xor    %r8d,%r8d
  xor    %r15d,%r15d
  xor    %r14d,%r14d
  shr    $0x1f,%eax
  xor    %r13d,%r13d
  movdqa D151(%rip),%xmm10
  movdqa D131(%rip),%xmm9
  add    %r9d,%eax
  movdqa D64(%rip),%xmm7
  mov    %edx,%r9d
  movdqa D149(%rip),%xmm8
  sar    %eax
  and    $0xfffffff0,%r9d
  mov    %eax,0x10(%rsp)
  mov    0x80(%rsp),%eax
  shr    $0x1f,%eax
  add    0x80(%rsp),%eax
  sar    %eax
  mov    %eax,0x20(%rsp)
  mov    0x88(%rsp),%eax
  shr    $0x1f,%eax
  add    0x88(%rsp),%eax
  sar    %eax
  mov    %eax,0x38(%rsp)
  lea    -0x1(%rdx),%eax
  mov    %eax,0x14(%rsp)
  mov    %edx,%eax
  shr    $0x4,%eax
  lea    -0x1(%rax),%r10d
  cs nopw 0x0(%rax,%rax,1)
L6:
  test   %r12d,%r12d
  jle    L153
  cmpl   $0xe,0x14(%rsp)
  jbe    L214
  lea    0x5(%r10,%r10,4),%rax
  pxor   %xmm4,%xmm4
  lea    (%rbx,%r8,1),%rcx
  lea    (%rax,%rax,4),%r11
  movdqa %xmm4,%xmm2
  movdqa %xmm4,%xmm1
  shl    $0x6,%r11
  pxor   %xmm6,%xmm6
  pxor   %xmm5,%xmm5
  add    %rcx,%r11
  nopl   0x0(%rax)
L256:
  movzbl 0x2bc(%rcx),%edx
  movzbl 0x258(%rcx),%eax
  movdqa %xmm6,%xmm13
  add    $0x640,%rcx
  movzbl -0xc8(%rcx),%esi
  movzbl -0x640(%rcx),%edi
  shl    $0x8,%rdx
  or     %rax,%rdx
  movzbl -0x44c(%rcx),%eax
  shl    $0x8,%rdx
  or     %rax,%rdx
  movzbl -0x4b0(%rcx),%eax
  shl    $0x8,%rdx
  or     %rax,%rdx
  movzbl -0x514(%rcx),%eax
  shl    $0x8,%rdx
  or     %rax,%rdx
  movzbl -0x578(%rcx),%eax
  shl    $0x8,%rdx
  or     %rax,%rdx
  movzbl -0x5dc(%rcx),%eax
  shl    $0x8,%rdx
  or     %rax,%rdx
  movzbl -0x64(%rcx),%eax
  shl    $0x8,%rdx
  shl    $0x8,%rax
  or     %rdi,%rdx
  or     %rsi,%rax
  movzbl -0x12c(%rcx),%esi
  mov    %rdx,(%rsp)
  shl    $0x8,%rax
  or     %rsi,%rax
  movzbl -0x190(%rcx),%esi
  shl    $0x8,%rax
  or     %rsi,%rax
  movzbl -0x1f4(%rcx),%esi
  shl    $0x8,%rax
  or     %rsi,%rax
  movzbl -0x258(%rcx),%esi
  shl    $0x8,%rax
  or     %rsi,%rax
  movzbl -0x2bc(%rcx),%esi
  shl    $0x8,%rax
  or     %rsi,%rax
  movzbl -0x320(%rcx),%esi
  shl    $0x8,%rax
  or     %rsi,%rax
  mov    %rax,0x8(%rsp)
  movdqa (%rsp),%xmm12
  movdqa (%rsp),%xmm0
  movdqa (%rsp),%xmm3
  pcmpeqb %xmm10,%xmm12
  pcmpeqb %xmm9,%xmm0
  pcmpeqb %xmm8,%xmm3
  movdqa %xmm12,%xmm11
  por    %xmm0,%xmm11
  pand   %xmm7,%xmm0
  pandn  %xmm3,%xmm11
  pcmpgtb %xmm11,%xmm13
  movdqa %xmm11,%xmm3
  punpcklbw %xmm13,%xmm3
  punpckhbw %xmm13,%xmm11
  movdqa %xmm5,%xmm13
  pcmpgtw %xmm3,%xmm13
  movdqa %xmm3,%xmm14
  punpcklwd %xmm13,%xmm14
  punpckhwd %xmm13,%xmm3
  movdqa %xmm11,%xmm13
  psubd  %xmm14,%xmm4
  psubd  %xmm3,%xmm4
  movdqa %xmm5,%xmm3
  pcmpgtw %xmm11,%xmm3
  punpcklwd %xmm3,%xmm13
  punpckhwd %xmm3,%xmm11
  movdqa %xmm12,%xmm3
  pand   %xmm7,%xmm3
  psubd  %xmm13,%xmm4
  movdqa %xmm6,%xmm13
  pcmpgtb %xmm3,%xmm13
  movdqa %xmm3,%xmm12
  psubd  %xmm11,%xmm4
  punpcklbw %xmm13,%xmm12
  punpckhbw %xmm13,%xmm3
  movdqa %xmm5,%xmm13
  pcmpgtw %xmm12,%xmm13
  movdqa %xmm3,%xmm11
  movdqa %xmm12,%xmm3
  punpcklwd %xmm13,%xmm3
  punpckhwd %xmm13,%xmm12
  paddd  %xmm3,%xmm1
  movdqa %xmm11,%xmm3
  paddd  %xmm12,%xmm1
  movdqa %xmm5,%xmm12
  pcmpgtw %xmm11,%xmm12
  punpcklwd %xmm12,%xmm3
  paddd  %xmm3,%xmm1
  movdqa %xmm11,%xmm3
  movdqa %xmm0,%xmm11
  punpckhwd %xmm12,%xmm3
  movdqa %xmm5,%xmm12
  paddd  %xmm3,%xmm1
  movdqa %xmm6,%xmm3
  pcmpgtb %xmm0,%xmm3
  punpcklbw %xmm3,%xmm11
  punpckhbw %xmm3,%xmm0
  pcmpgtw %xmm11,%xmm12
  movdqa %xmm11,%xmm3
  punpcklwd %xmm12,%xmm3
  punpckhwd %xmm12,%xmm11
  paddd  %xmm3,%xmm2
  movdqa %xmm5,%xmm3
  pcmpgtw %xmm0,%xmm3
  paddd  %xmm11,%xmm2
  movdqa %xmm0,%xmm11
  punpcklwd %xmm3,%xmm11
  punpckhwd %xmm3,%xmm0
  paddd  %xmm11,%xmm2
  paddd  %xmm0,%xmm2
  cmp    %r11,%rcx
  jne    L256
  movdqa %xmm2,%xmm0
  psrldq $0x8,%xmm0
  paddd  %xmm0,%xmm2
  movdqa %xmm2,%xmm0
  psrldq $0x4,%xmm0
  paddd  %xmm0,%xmm2
  movdqa %xmm1,%xmm0
  psrldq $0x8,%xmm0
  movd   %xmm2,%eax
  paddd  %xmm0,%xmm1
  add    %eax,%r14d
  movdqa %xmm1,%xmm0
  psrldq $0x4,%xmm0
  paddd  %xmm0,%xmm1
  movdqa %xmm4,%xmm0
  psrldq $0x8,%xmm0
  movd   %xmm1,%eax
  paddd  %xmm0,%xmm4
  add    %eax,%r13d
  movdqa %xmm4,%xmm0
  psrldq $0x4,%xmm0
  paddd  %xmm0,%xmm4
  movd   %xmm4,%eax
  add    %eax,%r15d
  cmp    %r9d,%r12d
  je     L153
  mov    %r9d,%edx
L342:
  movslq %edx,%rax
  lea    (%rax,%rax,4),%rax
  lea    (%rax,%rax,4),%rax
  lea    (%r8,%rax,4),%rax
  add    %rbx,%rax
  jmp    L11
  nopl   0x0(%rax)
L211:
  cmp    $0x50,%cl
  jne    L143
  add    $0x1,%r14d
L112:
  add    $0x1,%edx
  add    $0x64,%rax
  cmp    %edx,%r12d
  jle    L153
L11:
  movzbl (%rax),%ecx
  cmp    $0x4d,%cl
  jne    L211
  add    $0x1,%edx
  add    $0x1,%r13d
  add    $0x64,%rax
  cmp    %edx,%r12d
  jg     L11
L153:
  lea    0x1(%r8),%edx
  cmp    %r13d,0x10(%rsp)
  je     L384
L60:
  add    $0x1,%r8
  cmp    %rbp,%r8
  jne    L6
  add    $0x48,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L95:
  test   %edx,%edx
  jle    L37
  mov    %r9d,%eax
  mov    %ebp,%r8d
  movdqa D64(%rip),%xmm7
  xor    %ecx,%ecx
  shr    $0x1f,%eax
  lea    -0x1(%rbp),%r10d
  and    $0xfffffff0,%r8d
  xor    %r15d,%r15d
  add    %eax,%r9d
  xor    %r14d,%r14d
  xor    %r13d,%r13d
  mov    0x80(%rsp),%eax
  movdqa D151(%rip),%xmm10
  sar    %r9d
  movdqa D131(%rip),%xmm9
  movdqa D149(%rip),%xmm8
  shr    $0x1f,%eax
  add    0x80(%rsp),%eax
  sar    %eax
  mov    %eax,(%rsp)
  mov    0x88(%rsp),%eax
  shr    $0x1f,%eax
  add    0x88(%rsp),%eax
  sar    %eax
  mov    %eax,0x10(%rsp)
  mov    %ebp,%eax
  shr    $0x4,%eax
  lea    -0x1(%rax),%r11d
  nopl   0x0(%rax,%rax,1)
L303:
  test   %ebp,%ebp
  jle    L248
  cmp    $0xe,%r10d
  jbe    L116
  lea    0x1(%r11),%rdx
  pxor   %xmm4,%xmm4
  pxor   %xmm6,%xmm6
  mov    %rbx,%rax
  shl    $0x4,%rdx
  movdqa %xmm4,%xmm1
  movdqa %xmm4,%xmm11
  add    %rbx,%rdx
  pxor   %xmm5,%xmm5
  nopl   (%rax)
L167:
  movdqu (%rax),%xmm12
  movdqa %xmm6,%xmm13
  add    $0x10,%rax
  movdqa %xmm12,%xmm2
  movdqa %xmm12,%xmm0
  pcmpeqb %xmm10,%xmm2
  pcmpeqb %xmm9,%xmm0
  pcmpeqb %xmm8,%xmm12
  movdqa %xmm2,%xmm3
  pand   %xmm7,%xmm2
  por    %xmm0,%xmm3
  pand   %xmm7,%xmm0
  pandn  %xmm12,%xmm3
  pcmpgtb %xmm3,%xmm13
  movdqa %xmm3,%xmm12
  punpcklbw %xmm13,%xmm12
  punpckhbw %xmm13,%xmm3
  movdqa %xmm5,%xmm13
  pcmpgtw %xmm12,%xmm13
  movdqa %xmm12,%xmm14
  punpcklwd %xmm13,%xmm14
  punpckhwd %xmm13,%xmm12
  movdqa %xmm3,%xmm13
  psubd  %xmm14,%xmm4
  movdqa %xmm5,%xmm14
  psubd  %xmm12,%xmm4
  movdqa %xmm5,%xmm12
  pcmpgtw %xmm3,%xmm12
  punpcklwd %xmm12,%xmm13
  punpckhwd %xmm12,%xmm3
  psubd  %xmm13,%xmm4
  movdqa %xmm2,%xmm13
  psubd  %xmm3,%xmm4
  movdqa %xmm6,%xmm3
  pcmpgtb %xmm2,%xmm3
  punpcklbw %xmm3,%xmm13
  punpckhbw %xmm3,%xmm2
  pcmpgtw %xmm13,%xmm14
  movdqa %xmm13,%xmm3
  movdqa %xmm2,%xmm12
  movdqa %xmm11,%xmm2
  movdqa %xmm12,%xmm11
  punpcklwd %xmm14,%xmm3
  paddd  %xmm3,%xmm2
  movdqa %xmm13,%xmm3
  punpckhwd %xmm14,%xmm3
  paddd  %xmm3,%xmm2
  movdqa %xmm5,%xmm3
  pcmpgtw %xmm12,%xmm3
  punpcklwd %xmm3,%xmm11
  punpckhwd %xmm3,%xmm12
  movdqa %xmm0,%xmm3
  paddd  %xmm11,%xmm2
  paddd  %xmm12,%xmm2
  movdqa %xmm5,%xmm12
  movdqa %xmm2,%xmm11
  movdqa %xmm6,%xmm2
  pcmpgtb %xmm0,%xmm2
  punpcklbw %xmm2,%xmm3
  punpckhbw %xmm2,%xmm0
  pcmpgtw %xmm3,%xmm12
  movdqa %xmm3,%xmm2
  punpcklwd %xmm12,%xmm2
  punpckhwd %xmm12,%xmm3
  paddd  %xmm2,%xmm1
  movdqa %xmm5,%xmm2
  pcmpgtw %xmm0,%xmm2
  paddd  %xmm3,%xmm1
  movdqa %xmm0,%xmm3
  punpcklwd %xmm2,%xmm3
  punpckhwd %xmm2,%xmm0
  paddd  %xmm3,%xmm1
  paddd  %xmm0,%xmm1
  cmp    %rdx,%rax
  jne    L167
  movdqa %xmm1,%xmm0
  movdqa %xmm11,%xmm2
  psrldq $0x8,%xmm0
  paddd  %xmm0,%xmm1
  movdqa %xmm1,%xmm0
  psrldq $0x4,%xmm0
  paddd  %xmm0,%xmm1
  movdqa %xmm11,%xmm0
  psrldq $0x8,%xmm0
  movd   %xmm1,%eax
  paddd  %xmm0,%xmm2
  add    %eax,%r14d
  movdqa %xmm2,%xmm0
  psrldq $0x4,%xmm0
  paddd  %xmm0,%xmm2
  movdqa %xmm4,%xmm0
  psrldq $0x8,%xmm0
  movd   %xmm2,%eax
  paddd  %xmm0,%xmm4
  add    %eax,%r13d
  movdqa %xmm4,%xmm0
  psrldq $0x4,%xmm0
  paddd  %xmm0,%xmm4
  movd   %xmm4,%eax
  add    %eax,%r15d
  cmp    %r8d,%ebp
  je     L248
  movslq %r8d,%rax
  jmp    L94
  xchg   %ax,%ax
L295:
  cmp    $0x50,%dl
  jne    L276
  add    $0x1,%r14d
L231:
  add    $0x1,%rax
  cmp    %eax,%ebp
  jle    L248
L94:
  movzbl (%rbx,%rax,1),%edx
  cmp    $0x4d,%dl
  jne    L295
  add    $0x1,%rax
  add    $0x1,%r13d
  cmp    %eax,%ebp
  jg     L94
L248:
  lea    0x1(%rcx),%edx
  cmp    %r13d,%r9d
  je     L299
L118:
  add    $0x64,%rbx
  cmp    %edx,%r12d
  je     L37
  mov    %edx,%ecx
  jmp    L303
  nopw   0x0(%rax,%rax,1)
L276:
  cmp    $0x47,%dl
  jne    L231
  add    $0x1,%r15d
  jmp    L231
  nopl   0x0(%rax,%rax,1)
L299:
  cmp    %r14d,(%rsp)
  jne    L118
  cmp    %r15d,0x10(%rsp)
  jne    L118
  mov    0x18(%rsp),%rax
  add    $0x2,%ecx
  mov    %r9d,0x30(%rsp)
  mov    %r8d,0x28(%rsp)
  mov    (%rax),%edi
  mov    %r10d,0x38(%rsp)
  mov    %r11,0x20(%rsp)
  lea    0x1(%rdi),%esi
  lea    D165(%rip),%rdi
  mov    %edx,0x14(%rsp)
  mov    %esi,(%rax)
  call   <printf@plt>
  mov    0x30(%rsp),%r9d
  mov    0x28(%rsp),%r8d
  mov    0x38(%rsp),%r10d
  mov    0x20(%rsp),%r11
  movdqa D64(%rip),%xmm7
  mov    0x14(%rsp),%edx
  movdqa D149(%rip),%xmm8
  movdqa D131(%rip),%xmm9
  movdqa D151(%rip),%xmm10
  jmp    L118
L116:
  xor    %eax,%eax
  jmp    L94
  nop
L143:
  cmp    $0x47,%cl
  jne    L112
  add    $0x1,%r15d
  jmp    L112
  nopw   0x0(%rax,%rax,1)
L384:
  cmp    %r14d,0x20(%rsp)
  jne    L60
  cmp    %r15d,0x38(%rsp)
  jne    L60
  mov    0x18(%rsp),%rdi
  lea    0x2(%r8),%ecx
  mov    %r9d,0x3c(%rsp)
  mov    %r10,0x30(%rsp)
  mov    (%rdi),%esi
  mov    %r8,0x28(%rsp)
  mov    %esi,(%rsp)
  add    $0x1,%esi
  mov    %esi,(%rdi)
  lea    D19(%rip),%rdi
  call   <printf@plt>
  mov    0x3c(%rsp),%r9d
  mov    0x30(%rsp),%r10
  mov    0x28(%rsp),%r8
  movdqa D64(%rip),%xmm7
  movdqa D149(%rip),%xmm8
  movdqa D131(%rip),%xmm9
  movdqa D151(%rip),%xmm10
  jmp    L60
L214:
  xor    %edx,%edx
  jmp    L342
```

tool_calls: name: parse_data
arguments: label: D151
data_type: byte[16]
name: parse_data
arguments: label: D131
data_type: byte[16]
name: parse_data
arguments: label: D64
data_type: byte[16]
name: parse_data
arguments: label: D149
data_type: byte[16]
name: parse_data
arguments: label: D165
data_type: string
name: parse_data
arguments: label: D19
data_type: string

tool: {"D151": [0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d,0x4d]}

tool: {"D131": [0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50,0x50]}

tool: {"D64": [0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01]}

tool: {"D149": [0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47,0x47]}

tool: D165: %d. Vodoravno, izmedju retka br. %d i br. %d


tool: D19: %d. Okomito, izmedju stupca br. %d i br. %d


assistant: ```c
void izracun(char orijentacija, char imanje[][100], int visina, int sirina, int *br_podjela, int M, int P, int G) {
  int i, j, tmpM = 0, tmpP = 0, tmpG = 0, granica = 0;
  if (orijentacija == 'V') {
    for (i = 0; i < visina; i++) {
      for (j = 0; j < sirina; j++) {
        if (imanje[i][j] == 'M')
          tmpM++;
        if (imanje[i][j] == 'P')
          tmpP++;
        if (imanje[i][j] == 'G')
          tmpG++;
      }
      granica++;
      if (tmpM == M / 2 && tmpP == P / 2 && tmpG == G / 2) {
        (*br_podjela)++;
        printf("%d. Vodoravno, izmedju retka br. %d i br. %d\n", *br_podjela, granica, granica + 1);
      }
    }
  } else if (orijentacija == 'O') {
    for (i = 0; i < sirina; i++) {
      for (j = 0; j < visina; j++) {
        if (imanje[j][i] == 'M')
          tmpM++;
        if (imanje[j][i] == 'P')
          tmpP++;
        if (imanje[j][i] == 'G')
          tmpG++;
      }
      granica++;
      if (tmpM == M / 2 && tmpP == P / 2 && tmpG == G / 2) {
        (*br_podjela)++;
        printf("%d. Okomito, izmedju stupca br. %d i br. %d\n", *br_podjela, granica, granica + 1);
      }
    }
  }
}
```