user: Converte this assembly snippet into its equivalent C code:

```asm
<FastAtan2>:
  endbr64
  pxor   %xmm3,%xmm3
  movaps %xmm0,%xmm4
  ucomiss %xmm3,%xmm1
  jp     L95
  jne    L95
  ucomiss %xmm3,%xmm0
  jp     L51
  movaps %xmm3,%xmm0
  je     L133
L51:
  comiss %xmm3,%xmm4
  movss  D2(%rip),%xmm0
  ja     L133
  comiss %xmm4,%xmm3
  ja     L142
L95:
  movaps %xmm4,%xmm2
  movaps %xmm4,%xmm0
  xorps  D43(%rip),%xmm0
  xor    %eax,%eax
  cmpltss %xmm3,%xmm2
  movaps %xmm1,%xmm5
  cmpltss %xmm3,%xmm5
  andps  %xmm2,%xmm0
  andnps %xmm4,%xmm2
  orps   %xmm2,%xmm0
  movaps %xmm1,%xmm2
  xorps  D43(%rip),%xmm2
  andps  %xmm5,%xmm2
  andnps %xmm1,%xmm5
  orps   %xmm5,%xmm2
  comiss %xmm2,%xmm0
  jbe    L129
  movaps %xmm0,%xmm5
  mov    $0x2,%eax
  movaps %xmm2,%xmm0
  movaps %xmm5,%xmm2
L129:
  divss  %xmm2,%xmm0
  comiss D145(%rip),%xmm0
  jbe    L34
  movss  D64(%rip),%xmm2
  movss  D63(%rip),%xmm5
  add    $0x1,%eax
  mulss  %xmm0,%xmm2
  addss  %xmm0,%xmm5
  subss  D28(%rip),%xmm2
  addss  %xmm0,%xmm2
  movaps %xmm2,%xmm0
  divss  %xmm5,%xmm0
L34:
  movaps %xmm0,%xmm5
  movaps %xmm0,%xmm2
  xorps  D43(%rip),%xmm2
  cmpltss %xmm3,%xmm5
  andps  %xmm5,%xmm2
  andnps %xmm0,%xmm5
  orps   %xmm5,%xmm2
  movss  D66(%rip),%xmm5
  comiss %xmm2,%xmm5
  jbe    L159
  cmp    $0x1,%eax
  jle    L103
L35:
  xorps  D43(%rip),%xmm0
L103:
  comiss %xmm1,%xmm3
  cltq
  lea    D24(%rip),%rdx
  addss  (%rdx,%rax,4),%xmm0
  ja     L86
  comiss %xmm4,%xmm3
  ja     L20
L133:
  ret
  nopl   (%rax)
L159:
  movaps %xmm0,%xmm6
  movss  D132(%rip),%xmm2
  movss  D127(%rip),%xmm5
  mulss  %xmm0,%xmm6
  mulss  %xmm6,%xmm2
  addss  %xmm6,%xmm5
  subss  D105(%rip),%xmm2
  mulss  %xmm6,%xmm5
  mulss  %xmm6,%xmm2
  addss  D78(%rip),%xmm5
  divss  %xmm5,%xmm2
  mulss  %xmm0,%xmm2
  addss  %xmm2,%xmm0
  cmp    $0x1,%eax
  jg     L35
  jmp    L103
  nopw   0x0(%rax,%rax,1)
L20:
  xorps  D43(%rip),%xmm0
  ret
  nopl   0x0(%rax,%rax,1)
L86:
  movss  D68(%rip),%xmm1
  comiss %xmm4,%xmm3
  subss  %xmm0,%xmm1
  movaps %xmm1,%xmm0
  jbe    L133
  jmp    L20
  cs nopw 0x0(%rax,%rax,1)
L142:
  movss  D103(%rip),%xmm0
  ret
```

tool_calls: name: unpack_data
arguments: data_label: D2
type_guessed: byte[4]
name: unpack_data
arguments: data_label: D43
type_guessed: byte[16]
name: unpack_data
arguments: data_label: D145
type_guessed: byte[4]
name: unpack_data
arguments: data_label: D64
type_guessed: byte[4]
name: unpack_data
arguments: data_label: D63
type_guessed: byte[4]
name: unpack_data
arguments: data_label: D28
type_guessed: byte[4]
name: unpack_data
arguments: data_label: D66
type_guessed: byte[4]
name: unpack_data
arguments: data_label: D24
type_guessed: f32
name: unpack_data
arguments: data_label: D132
type_guessed: byte[4]
name: unpack_data
arguments: data_label: D127
type_guessed: byte[4]
name: unpack_data
arguments: data_label: D105
type_guessed: byte[4]
name: unpack_data
arguments: data_label: D78
type_guessed: byte[4]
name: unpack_data
arguments: data_label: D68
type_guessed: byte[4]
name: unpack_data
arguments: data_label: D103
type_guessed: byte[4]

tool: {"D2": [0xdb,0x0f,0xc9,0x3f]}

tool: {"D43": [0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]}

tool: {"D145": [0xa3,0x30,0x89,0x3e]}

tool: {"D64": [0xaf,0x67,0x3b,0x3f]}

tool: {"D63": [0xd7,0xb3,0xdd,0x3f]}

tool: {"D28": [0x00,0x00,0x80,0x3f]}

tool: {"D66": [0xf3,0x04,0xb5,0x39]}

tool: D24: 0

tool: {"D132": [0xae,0x53,0x38,0xbf]}

tool: {"D127": [0x3c,0x12,0x98,0x40]}

tool: {"D105": [0xa8,0x54,0xb8,0x3f]}

tool: {"D78": [0x7e,0x3f,0x8a,0x40]}

tool: {"D68": [0xdb,0x0f,0x49,0x40]}

tool: {"D103": [0xdb,0x0f,0xc9,0xbf]}

assistant: ```c
float FastAtan2(float y, float x) {
  float f, g;
  float num, den;
  float result;
  int n;
  static const float a[4] = {0, (float)(0.52359877559829887307710723054658f), (float)(1.5707963267948966192313216916398f), (float)(1.0471975511965977461542144610932f)};
  if (x == (float)0.0) {
    if (y == (float)0.0) {
      result = 0.0;
      return result;
    }
    result = (float)(1.5707963267948966192313216916398f);
    if (y > (float)0.0) {
      return result;
    }
    if (y < (float)0.0) {
      result = -result;
      return result;
    }
  }
  n = 0;
  num = y;
  den = x;
  if (num < (float)0.0) {
    num = -num;
  }
  if (den < (float)0.0) {
    den = -den;
  }
  if (num > den) {
    f = den;
    den = num;
    num = f;
    n = 2;
  }
  f = num / den;
  if (f > (float)(0.26794919243112270647255365849413f)) {
    num = f * (float)(0.73205080756887729352744634150587f) - 1.0f + f;
    den = (float)(1.7320508075688772935274463415059f) + f;
    f = num / den;
    n = n + 1;
  }
  g = f;
  if (g < (float)0.0) {
    g = -g;
  }
  if (g < (float)(+3.452669830012e-4f)) {
    result = f;
  } else {
    g = f * f;
    num = ((-7.20026848898e-1f) * g + (-1.44008344874f)) * g;
    den = (g + (+4.75222584599f)) * g + (+4.32025038919f);
    result = num / den;
    result = result * f + f;
  }
  if (n > 1) {
    result = -result;
  }
  result = result + a[n];
  if (x < (float)0.0) {
    result = (3.1415926535897932384626433832795f) - result;
  }
  if (y < (float)0.0) {
    result = -result;
  }
  return result;
}
```