
NODE * do_compl(wchar_t nargs)

{
  STACK_ITEM *pSVar1;
  double d;
  uint uVar2;
  wchar_t wVar3;
  _func_void_char_ptr_varargs *p_Var4;
  NODE *pNVar5;
  long lVar6;
  NODE *pNVar7;
  char *mesg;
  NODE *pNVar8;
  char *pcVar9;
  ulong uVar10;
  double dVar11;
  
  pSVar1 = stack_ptr + -1;
  pNVar7 = stack_ptr->rptr;
  stack_ptr = pSVar1;
  if (pNVar7->type == Node_var_array) {
    set_loc("awk.h",L'ܫ');
    pcVar9 = array_vname(pNVar7);
    mesg = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
    r_fatal(mesg,pcVar9);
  }
  pNVar5 = pNVar7;
  if (((byte)do_flags & 5) != 0) {
    uVar2 = pNVar7->flags;
    if ((uVar2 & 0x28) == 0x20) {
      if ((uVar2 & 8) == 0) {
        pNVar8 = (*str2number)(pNVar7);
        goto LAB_001212f8;
      }
      if ((uVar2 & 0x10) != 0) goto LAB_00121200;
    }
    else {
      pNVar8 = pNVar7;
      if (((uVar2 & 0x100) != 0) &&
         (((uVar2 & 4) == 0 ||
          ((wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3)))))) {
        pNVar8 = (*format_val)(CONVFMT,CONVFMTidx,pNVar7);
      }
LAB_001212f8:
      if ((pNVar8->flags & 0x10) != 0) goto LAB_001211ed;
    }
    set_loc("builtin.c",L'ถ');
    p_Var4 = lintfunc;
    pcVar9 = (char *)dcgettext(0,"%s: received non-numeric argument",5);
    (*p_Var4)(pcVar9,"compl");
  }
LAB_001211ed:
  if ((pNVar7->flags & 8) == 0) {
    pNVar5 = (*str2number)(pNVar7);
  }
LAB_00121200:
  d = (pNVar5->sub).val.fltnum;
  lVar6 = (pNVar7->sub).val.sref + -1;
  (pNVar7->sub).val.sref = lVar6;
  if (lVar6 == 0) {
    r_unref(pNVar7);
  }
  if (d < 0.0) {
    set_loc("builtin.c",L'ป');
    pcVar9 = (char *)dcgettext(0,"compl(%f): negative value is not allowed",5);
    r_fatal(pcVar9,d);
  }
  if ((((byte)do_flags & 5) != 0) && (dVar11 = double_to_int(d), dVar11 != d)) {
    set_loc("builtin.c",L'พ');
    p_Var4 = lintfunc;
    pcVar9 = (char *)dcgettext(0,"compl(%f): fractional value will be truncated",5);
    (*p_Var4)(pcVar9,d);
  }
  if (DAT_0017c370 <= d) {
    uVar10 = (long)(d - DAT_0017c370) ^ 0x8000000000000000;
  }
  else {
    uVar10 = (ulong)d;
  }
  pNVar7 = make_integer(~uVar10);
  return pNVar7;
}



void FUN_001211bb(void)

{
  undefined8 *puVar1;
  double dVar2;
  uint uVar3;
  double *pdVar4;
  undefined *puVar5;
  double *pdVar6;
  undefined8 uVar7;
  double *pdVar8;
  undefined8 uVar9;
  ulong uVar10;
  double dVar11;
  
  puVar1 = DAT_00399c70 + -1;
  pdVar4 = (double *)*DAT_00399c70;
  DAT_00399c70 = puVar1;
  if (*(int *)(pdVar4 + 9) == 5) {
    FUN_00157301("awk.h",0x72b);
    uVar9 = FUN_0010a1ed(pdVar4);
    uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
    FUN_00157844(uVar7,uVar9);
  }
  pdVar6 = pdVar4;
  if (((byte)DAT_0039c260 & 5) != 0) {
    uVar3 = *(uint *)((long)pdVar4 + 0x4c);
    if ((uVar3 & 0x28) == 0x20) {
      if ((uVar3 & 8) == 0) {
        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);
        goto LAB_001212f8;
      }
      if ((uVar3 & 0x10) != 0) goto LAB_00121200;
    }
    else {
      pdVar8 = pdVar4;
      if (((uVar3 & 0x100) != 0) &&
         (((uVar3 & 4) == 0 ||
          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {
        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);
      }
LAB_001212f8:
      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;
    }
    FUN_00157301("builtin.c",0xe16);
    puVar5 = PTR_FUN_00396d98;
    uVar9 = dcgettext(0,"%s: received non-numeric argument",5);
    (*(code *)puVar5)(uVar9,"compl");
  }
LAB_001211ed:
  if ((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0) {
    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);
  }
LAB_00121200:
  dVar2 = *pdVar6;
  dVar11 = pdVar4[3];
  pdVar4[3] = (double)((long)dVar11 + -1);
  if ((double)((long)dVar11 + -1) == 0.0) {
    FUN_001582a6(pdVar4);
  }
  if (dVar2 < 0.0) {
    FUN_00157301("builtin.c",0xe1b);
    uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);
    FUN_00157844(dVar2,uVar9);
  }
  if ((((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)) {
    FUN_00157301("builtin.c",0xe1e);
    puVar5 = PTR_FUN_00396d98;
    uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);
    (*(code *)puVar5)(dVar2,uVar9);
  }
  if (DAT_0017c370 <= dVar2) {
    uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;
  }
  else {
    uVar10 = (ulong)dVar2;
  }
  FUN_0011993b(~uVar10);
  return;
}


PUSH RBP
PUSH RBX
SUB RSP,0x18
MOV RAX,qword ptr [0x00399c70]
LEA RDX,[RAX + -0x8]
MOV qword ptr [0x00399c70],RDX
MOV RBX,qword ptr [RAX]
CMP dword ptr [RBX + 0x48],0x5
JZ 0x00121281
TEST byte ptr [0x0039c260],0x5
JNZ 0x001212c8
TEST byte ptr [RBX + 0x4c],0x8
JNZ 0x0012136b
MOV RDI,RBX
CALL qword ptr [0x00396e50]
MOVSD XMM3,qword ptr [RAX]
MOVSD qword ptr [RSP + 0x8],XMM3
MOV RAX,qword ptr [RBX + 0x18]
SUB RAX,0x1
MOV qword ptr [RBX + 0x18],RAX
TEST RAX,RAX
JZ 0x00121373
PXOR XMM0,XMM0
UCOMISD XMM0,qword ptr [RSP + 0x8]
JA 0x00121380
TEST byte ptr [0x0039c260],0x5
JZ 0x00121259
MOVSD XMM0,qword ptr [RSP + 0x8]
CALL 0x0011a758
MOVSD XMM2,qword ptr [RSP + 0x8]
UCOMISD XMM0,XMM2
JP 0x001213bf
JNZ 0x001213bf
MOVSD XMM1,qword ptr [RSP + 0x8]
UCOMISD XMM1,qword ptr [0x0017c370]
JNC 0x00121402
CVTTSD2SI RDI,XMM1
NOT RDI
CALL 0x0011993b
ADD RSP,0x18
POP RBX
POP RBP
RET
MOV ESI,0x72b
LEA RDI,[0x177186]
CALL 0x00157301
MOV RDI,RBX
CALL 0x0010a1ed
MOV RBP,RAX
MOV EDX,0x5
LEA RSI,[0x177370]
MOV EDI,0x0
CALL 0x00108bf0
MOV RSI,RBP
MOV RDI,RAX
MOV EAX,0x0
CALL 0x00157844
JMP 0x001211e0
MOV EDX,dword ptr [RBX + 0x4c]
MOV EAX,EDX
AND EAX,0x28
CMP EAX,0x20
JZ 0x00121346
MOV RAX,RBX
TEST DH,0x1
JZ 0x001212f8
MOV ESI,dword ptr [0x0039ddd4]
MOV RDI,qword ptr [0x00396da8]
TEST DL,0x4
JNZ 0x0012135a
MOV RDX,RBX
CALL qword ptr [0x00396e48]
TEST byte ptr [RAX + 0x4c],0x10
JNZ 0x001211ed
MOV ESI,0xe16
LEA RDI,[0x17aef0]
CALL 0x00157301
MOV RBP,qword ptr [0x00396d98]
MOV EDX,0x5
LEA RSI,[0x17b130]
MOV EDI,0x0
CALL 0x00108bf0
LEA RSI,[0x177a5a]
MOV RDI,RAX
MOV EAX,0x0
CALL RBP
JMP 0x001211ed
TEST DL,0x8
JNZ 0x00121427
MOV RDI,RBX
CALL qword ptr [0x00396e50]
JMP 0x001212f8
MOV EAX,dword ptr [RBX + 0x20]
CMP EAX,-0x1
JZ 0x00121366
CMP ESI,EAX
JNZ 0x001212ef
MOV RAX,RBX
JMP 0x001212f8
MOV RAX,RBX
JMP 0x00121200
MOV RDI,RBX
CALL 0x001582a6
JMP 0x0012121f
MOV ESI,0xe1b
LEA RDI,[0x17aef0]
CALL 0x00157301
MOV EDX,0x5
LEA RSI,[0x17b990]
MOV EDI,0x0
CALL 0x00108bf0
MOVSD XMM0,qword ptr [RSP + 0x8]
MOV RDI,RAX
MOV EAX,0x1
CALL 0x00157844
JMP 0x0012122f
MOV ESI,0xe1e
LEA RDI,[0x17aef0]
CALL 0x00157301
MOV RBX,qword ptr [0x00396d98]
MOV EDX,0x5
LEA RSI,[0x17b9c0]
MOV EDI,0x0
CALL 0x00108bf0
MOVSD XMM0,qword ptr [RSP + 0x8]
MOV RDI,RAX
MOV EAX,0x1
CALL RBX
JMP 0x00121259
MOVSD XMM0,qword ptr [RSP + 0x8]
SUBSD XMM0,qword ptr [0x0017c370]
CVTTSD2SI RDI,XMM0
MOV RAX,-0x8000000000000000
XOR RDI,RAX
JMP 0x00121272
MOV RAX,RBX
TEST DL,0x10
JNZ 0x00121200
JMP 0x00121302
(translation_unit "void FUN_001211bb(void)\n\n{\n  undefined8 *puVar1;\n  double dVar2;\n  uint uVar3;\n  double *pdVar4;\n  undefined *puVar5;\n  double *pdVar6;\n  undefined8 uVar7;\n  double *pdVar8;\n  undefined8 uVar9;\n  ulong uVar10;\n  double dVar11;\n  \n  puVar1 = DAT_00399c70 + -1;\n  pdVar4 = (double *)*DAT_00399c70;\n  DAT_00399c70 = puVar1;\n  if (*(int *)(pdVar4 + 9) == 5) {\n    FUN_00157301("awk.h",0x72b);\n    uVar9 = FUN_0010a1ed(pdVar4);\n    uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00157844(uVar7,uVar9);\n  }\n  pdVar6 = pdVar4;\n  if (((byte)DAT_0039c260 & 5) != 0) {\n    uVar3 = *(uint *)((long)pdVar4 + 0x4c);\n    if ((uVar3 & 0x28) == 0x20) {\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }\n    FUN_00157301("builtin.c",0xe16);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"%s: received non-numeric argument",5);\n    (*(code *)puVar5)(uVar9,"compl");\n  }\nLAB_001211ed:\n  if ((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0) {\n    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n  }\nLAB_00121200:\n  dVar2 = *pdVar6;\n  dVar11 = pdVar4[3];\n  pdVar4[3] = (double)((long)dVar11 + -1);\n  if ((double)((long)dVar11 + -1) == 0.0) {\n    FUN_001582a6(pdVar4);\n  }\n  if (dVar2 < 0.0) {\n    FUN_00157301("builtin.c",0xe1b);\n    uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);\n    FUN_00157844(dVar2,uVar9);\n  }\n  if ((((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)) {\n    FUN_00157301("builtin.c",0xe1e);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*(code *)puVar5)(dVar2,uVar9);\n  }\n  if (DAT_0017c370 <= dVar2) {\n    uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;\n  }\n  else {\n    uVar10 = (ulong)dVar2;\n  }\n  FUN_0011993b(~uVar10);\n  return;\n}\n\n" (function_definition "void FUN_001211bb(void)\n\n{\n  undefined8 *puVar1;\n  double dVar2;\n  uint uVar3;\n  double *pdVar4;\n  undefined *puVar5;\n  double *pdVar6;\n  undefined8 uVar7;\n  double *pdVar8;\n  undefined8 uVar9;\n  ulong uVar10;\n  double dVar11;\n  \n  puVar1 = DAT_00399c70 + -1;\n  pdVar4 = (double *)*DAT_00399c70;\n  DAT_00399c70 = puVar1;\n  if (*(int *)(pdVar4 + 9) == 5) {\n    FUN_00157301("awk.h",0x72b);\n    uVar9 = FUN_0010a1ed(pdVar4);\n    uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00157844(uVar7,uVar9);\n  }\n  pdVar6 = pdVar4;\n  if (((byte)DAT_0039c260 & 5) != 0) {\n    uVar3 = *(uint *)((long)pdVar4 + 0x4c);\n    if ((uVar3 & 0x28) == 0x20) {\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }\n    FUN_00157301("builtin.c",0xe16);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"%s: received non-numeric argument",5);\n    (*(code *)puVar5)(uVar9,"compl");\n  }\nLAB_001211ed:\n  if ((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0) {\n    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n  }\nLAB_00121200:\n  dVar2 = *pdVar6;\n  dVar11 = pdVar4[3];\n  pdVar4[3] = (double)((long)dVar11 + -1);\n  if ((double)((long)dVar11 + -1) == 0.0) {\n    FUN_001582a6(pdVar4);\n  }\n  if (dVar2 < 0.0) {\n    FUN_00157301("builtin.c",0xe1b);\n    uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);\n    FUN_00157844(dVar2,uVar9);\n  }\n  if ((((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)) {\n    FUN_00157301("builtin.c",0xe1e);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*(code *)puVar5)(dVar2,uVar9);\n  }\n  if (DAT_0017c370 <= dVar2) {\n    uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;\n  }\n  else {\n    uVar10 = (ulong)dVar2;\n  }\n  FUN_0011993b(~uVar10);\n  return;\n}" primitive_type (function_declarator "FUN_001211bb(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined8 *puVar1;\n  double dVar2;\n  uint uVar3;\n  double *pdVar4;\n  undefined *puVar5;\n  double *pdVar6;\n  undefined8 uVar7;\n  double *pdVar8;\n  undefined8 uVar9;\n  ulong uVar10;\n  double dVar11;\n  \n  puVar1 = DAT_00399c70 + -1;\n  pdVar4 = (double *)*DAT_00399c70;\n  DAT_00399c70 = puVar1;\n  if (*(int *)(pdVar4 + 9) == 5) {\n    FUN_00157301("awk.h",0x72b);\n    uVar9 = FUN_0010a1ed(pdVar4);\n    uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00157844(uVar7,uVar9);\n  }\n  pdVar6 = pdVar4;\n  if (((byte)DAT_0039c260 & 5) != 0) {\n    uVar3 = *(uint *)((long)pdVar4 + 0x4c);\n    if ((uVar3 & 0x28) == 0x20) {\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }\n    FUN_00157301("builtin.c",0xe16);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"%s: received non-numeric argument",5);\n    (*(code *)puVar5)(uVar9,"compl");\n  }\nLAB_001211ed:\n  if ((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0) {\n    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n  }\nLAB_00121200:\n  dVar2 = *pdVar6;\n  dVar11 = pdVar4[3];\n  pdVar4[3] = (double)((long)dVar11 + -1);\n  if ((double)((long)dVar11 + -1) == 0.0) {\n    FUN_001582a6(pdVar4);\n  }\n  if (dVar2 < 0.0) {\n    FUN_00157301("builtin.c",0xe1b);\n    uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);\n    FUN_00157844(dVar2,uVar9);\n  }\n  if ((((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)) {\n    FUN_00157301("builtin.c",0xe1e);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*(code *)puVar5)(dVar2,uVar9);\n  }\n  if (DAT_0017c370 <= dVar2) {\n    uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;\n  }\n  else {\n    uVar10 = (ulong)dVar2;\n  }\n  FUN_0011993b(~uVar10);\n  return;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "double *pdVar4;" primitive_type (pointer_declarator "*pdVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "double *pdVar6;" primitive_type (pointer_declarator "*pdVar6" * identifier) ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "double *pdVar8;" primitive_type (pointer_declarator "*pdVar8" * identifier) ;) (declaration "undefined8 uVar9;" type_identifier identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "double dVar11;" primitive_type identifier ;) (expression_statement "puVar1 = DAT_00399c70 + -1;" (assignment_expression "puVar1 = DAT_00399c70 + -1" identifier = (binary_expression "DAT_00399c70 + -1" identifier + number_literal)) ;) (expression_statement "pdVar4 = (double *)*DAT_00399c70;" (assignment_expression "pdVar4 = (double *)*DAT_00399c70" identifier = (cast_expression "(double *)*DAT_00399c70" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*DAT_00399c70" * identifier))) ;) (expression_statement "DAT_00399c70 = puVar1;" (assignment_expression "DAT_00399c70 = puVar1" identifier = identifier) ;) (if_statement "if (*(int *)(pdVar4 + 9) == 5) {\n    FUN_00157301("awk.h",0x72b);\n    uVar9 = FUN_0010a1ed(pdVar4);\n    uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00157844(uVar7,uVar9);\n  }" if (parenthesized_expression "(*(int *)(pdVar4 + 9) == 5)" ( (binary_expression "*(int *)(pdVar4 + 9) == 5" (pointer_expression "*(int *)(pdVar4 + 9)" * (cast_expression "(int *)(pdVar4 + 9)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar4 + 9)" ( (binary_expression "pdVar4 + 9" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    FUN_00157301("awk.h",0x72b);\n    uVar9 = FUN_0010a1ed(pdVar4);\n    uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00157844(uVar7,uVar9);\n  }" { (expression_statement "FUN_00157301("awk.h",0x72b);" (call_expression "FUN_00157301("awk.h",0x72b)" identifier (argument_list "("awk.h",0x72b)" ( (string_literal ""awk.h"" " string_content ") , number_literal ))) ;) (expression_statement "uVar9 = FUN_0010a1ed(pdVar4);" (assignment_expression "uVar9 = FUN_0010a1ed(pdVar4)" identifier = (call_expression "FUN_0010a1ed(pdVar4)" identifier (argument_list "(pdVar4)" ( identifier )))) ;) (expression_statement "uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_00157844(uVar7,uVar9);" (call_expression "FUN_00157844(uVar7,uVar9)" identifier (argument_list "(uVar7,uVar9)" ( identifier , identifier ))) ;) })) (expression_statement "pdVar6 = pdVar4;" (assignment_expression "pdVar6 = pdVar4" identifier = identifier) ;) (if_statement "if (((byte)DAT_0039c260 & 5) != 0) {\n    uVar3 = *(uint *)((long)pdVar4 + 0x4c);\n    if ((uVar3 & 0x28) == 0x20) {\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }\n    FUN_00157301("builtin.c",0xe16);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"%s: received non-numeric argument",5);\n    (*(code *)puVar5)(uVar9,"compl");\n  }" if (parenthesized_expression "(((byte)DAT_0039c260 & 5) != 0)" ( (binary_expression "((byte)DAT_0039c260 & 5) != 0" (parenthesized_expression "((byte)DAT_0039c260 & 5)" ( (binary_expression "(byte)DAT_0039c260 & 5" (cast_expression "(byte)DAT_0039c260" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar3 = *(uint *)((long)pdVar4 + 0x4c);\n    if ((uVar3 & 0x28) == 0x20) {\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }\n    FUN_00157301("builtin.c",0xe16);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"%s: received non-numeric argument",5);\n    (*(code *)puVar5)(uVar9,"compl");\n  }" { (expression_statement "uVar3 = *(uint *)((long)pdVar4 + 0x4c);" (assignment_expression "uVar3 = *(uint *)((long)pdVar4 + 0x4c)" identifier = (pointer_expression "*(uint *)((long)pdVar4 + 0x4c)" * (cast_expression "(uint *)((long)pdVar4 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pdVar4 + 0x4c)" ( (binary_expression "(long)pdVar4 + 0x4c" (cast_expression "(long)pdVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if ((uVar3 & 0x28) == 0x20) {\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }" if (parenthesized_expression "((uVar3 & 0x28) == 0x20)" ( (binary_expression "(uVar3 & 0x28) == 0x20" (parenthesized_expression "(uVar3 & 0x28)" ( (binary_expression "uVar3 & 0x28" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }" { (if_statement "if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }" if (parenthesized_expression "((uVar3 & 8) == 0)" ( (binary_expression "(uVar3 & 8) == 0" (parenthesized_expression "(uVar3 & 8)" ( (binary_expression "uVar3 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }" { (expression_statement "pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);" (assignment_expression "pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4)" identifier = (cast_expression "(double *)(*(code *)PTR_FUN_00396e50)(pdVar4)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_FUN_00396e50)(pdVar4)" (parenthesized_expression "(*(code *)PTR_FUN_00396e50)" ( (pointer_expression "*(code *)PTR_FUN_00396e50" * (cast_expression "(code *)PTR_FUN_00396e50" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pdVar4)" ( identifier ))))) ;) (goto_statement "goto LAB_001212f8;" goto statement_identifier ;) })) (if_statement "if ((uVar3 & 0x10) != 0) goto LAB_00121200;" if (parenthesized_expression "((uVar3 & 0x10) != 0)" ( (binary_expression "(uVar3 & 0x10) != 0" (parenthesized_expression "(uVar3 & 0x10)" ( (binary_expression "uVar3 & 0x10" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00121200;" goto statement_identifier ;)) }) (else_clause "else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }" else (compound_statement "{\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }" { (expression_statement "pdVar8 = pdVar4;" (assignment_expression "pdVar8 = pdVar4" identifier = identifier) ;) (if_statement "if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }" if (parenthesized_expression "(((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4)))))))" ( (binary_expression "((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))" (parenthesized_expression "((uVar3 & 0x100) != 0)" ( (binary_expression "(uVar3 & 0x100) != 0" (parenthesized_expression "(uVar3 & 0x100)" ( (binary_expression "uVar3 & 0x100" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))" ( (parenthesized_expression "((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4)))))" ( (binary_expression "(uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))" (binary_expression "(uVar3 & 4) == 0" (parenthesized_expression "(uVar3 & 4)" ( (binary_expression "uVar3 & 4" identifier & number_literal) )) == number_literal) || (parenthesized_expression "((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))" ( (parenthesized_expression "(*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4)))" ( (binary_expression "*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))" (binary_expression "*(int *)(pdVar4 + 4) != -1" (pointer_expression "*(int *)(pdVar4 + 4)" * (cast_expression "(int *)(pdVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar4 + 4)" ( (binary_expression "pdVar4 + 4" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(DAT_0039ddd4 != *(int *)(pdVar4 + 4))" ( (binary_expression "DAT_0039ddd4 != *(int *)(pdVar4 + 4)" identifier != (pointer_expression "*(int *)(pdVar4 + 4)" * (cast_expression "(int *)(pdVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar4 + 4)" ( (binary_expression "pdVar4 + 4" identifier + number_literal) ))))) ))) )) ))) )) ))) )) (compound_statement "{\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }" { (expression_statement "pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);" (assignment_expression "pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4)" identifier = (cast_expression "(double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4)" (parenthesized_expression "(*(code *)PTR_FUN_00396e48)" ( (pointer_expression "*(code *)PTR_FUN_00396e48" * (cast_expression "(code *)PTR_FUN_00396e48" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4)" ( identifier , identifier , identifier ))))) ;) })) (labeled_statement "LAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;" statement_identifier : (if_statement "if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;" if (parenthesized_expression "((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0)" ( (binary_expression "(*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0" (parenthesized_expression "(*(byte *)((long)pdVar8 + 0x4c) & 0x10)" ( (binary_expression "*(byte *)((long)pdVar8 + 0x4c) & 0x10" (pointer_expression "*(byte *)((long)pdVar8 + 0x4c)" * (cast_expression "(byte *)((long)pdVar8 + 0x4c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pdVar8 + 0x4c)" ( (binary_expression "(long)pdVar8 + 0x4c" (cast_expression "(long)pdVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001211ed;" goto statement_identifier ;))) }))) (expression_statement "FUN_00157301("builtin.c",0xe16);" (call_expression "FUN_00157301("builtin.c",0xe16)" identifier (argument_list "("builtin.c",0xe16)" ( (string_literal ""builtin.c"" " string_content ") , number_literal ))) ;) (expression_statement "puVar5 = PTR_FUN_00396d98;" (assignment_expression "puVar5 = PTR_FUN_00396d98" identifier = identifier) ;) (expression_statement "uVar9 = dcgettext(0,"%s: received non-numeric argument",5);" (assignment_expression "uVar9 = dcgettext(0,"%s: received non-numeric argument",5)" identifier = (call_expression "dcgettext(0,"%s: received non-numeric argument",5)" identifier (argument_list "(0,"%s: received non-numeric argument",5)" ( number_literal , (string_literal ""%s: received non-numeric argument"" " string_content ") , number_literal )))) ;) (expression_statement "(*(code *)puVar5)(uVar9,"compl");" (call_expression "(*(code *)puVar5)(uVar9,"compl")" (parenthesized_expression "(*(code *)puVar5)" ( (pointer_expression "*(code *)puVar5" * (cast_expression "(code *)puVar5" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar9,"compl")" ( identifier , (string_literal ""compl"" " string_content ") ))) ;) })) (labeled_statement "LAB_001211ed:\n  if ((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0) {\n    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n  }" statement_identifier : (if_statement "if ((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0) {\n    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n  }" if (parenthesized_expression "((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0)" ( (binary_expression "(*(byte *)((long)pdVar4 + 0x4c) & 8) == 0" (parenthesized_expression "(*(byte *)((long)pdVar4 + 0x4c) & 8)" ( (binary_expression "*(byte *)((long)pdVar4 + 0x4c) & 8" (pointer_expression "*(byte *)((long)pdVar4 + 0x4c)" * (cast_expression "(byte *)((long)pdVar4 + 0x4c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pdVar4 + 0x4c)" ( (binary_expression "(long)pdVar4 + 0x4c" (cast_expression "(long)pdVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n  }" { (expression_statement "pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);" (assignment_expression "pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4)" identifier = (cast_expression "(double *)(*(code *)PTR_FUN_00396e50)(pdVar4)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_FUN_00396e50)(pdVar4)" (parenthesized_expression "(*(code *)PTR_FUN_00396e50)" ( (pointer_expression "*(code *)PTR_FUN_00396e50" * (cast_expression "(code *)PTR_FUN_00396e50" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pdVar4)" ( identifier ))))) ;) }))) (labeled_statement "LAB_00121200:\n  dVar2 = *pdVar6;" statement_identifier : (expression_statement "dVar2 = *pdVar6;" (assignment_expression "dVar2 = *pdVar6" identifier = (pointer_expression "*pdVar6" * identifier)) ;)) (expression_statement "dVar11 = pdVar4[3];" (assignment_expression "dVar11 = pdVar4[3]" identifier = (subscript_expression "pdVar4[3]" identifier [ number_literal ])) ;) (expression_statement "pdVar4[3] = (double)((long)dVar11 + -1);" (assignment_expression "pdVar4[3] = (double)((long)dVar11 + -1)" (subscript_expression "pdVar4[3]" identifier [ number_literal ]) = (cast_expression "(double)((long)dVar11 + -1)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((long)dVar11 + -1)" ( (binary_expression "(long)dVar11 + -1" (cast_expression "(long)dVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (if_statement "if ((double)((long)dVar11 + -1) == 0.0) {\n    FUN_001582a6(pdVar4);\n  }" if (parenthesized_expression "((double)((long)dVar11 + -1) == 0.0)" ( (binary_expression "(double)((long)dVar11 + -1) == 0.0" (cast_expression "(double)((long)dVar11 + -1)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((long)dVar11 + -1)" ( (binary_expression "(long)dVar11 + -1" (cast_expression "(long)dVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))) == number_literal) )) (compound_statement "{\n    FUN_001582a6(pdVar4);\n  }" { (expression_statement "FUN_001582a6(pdVar4);" (call_expression "FUN_001582a6(pdVar4)" identifier (argument_list "(pdVar4)" ( identifier ))) ;) })) (if_statement "if (dVar2 < 0.0) {\n    FUN_00157301("builtin.c",0xe1b);\n    uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);\n    FUN_00157844(dVar2,uVar9);\n  }" if (parenthesized_expression "(dVar2 < 0.0)" ( (binary_expression "dVar2 < 0.0" identifier < number_literal) )) (compound_statement "{\n    FUN_00157301("builtin.c",0xe1b);\n    uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);\n    FUN_00157844(dVar2,uVar9);\n  }" { (expression_statement "FUN_00157301("builtin.c",0xe1b);" (call_expression "FUN_00157301("builtin.c",0xe1b)" identifier (argument_list "("builtin.c",0xe1b)" ( (string_literal ""builtin.c"" " string_content ") , number_literal ))) ;) (expression_statement "uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);" (assignment_expression "uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5)" identifier = (call_expression "dcgettext(0,"compl(%f): negative value is not allowed",5)" identifier (argument_list "(0,"compl(%f): negative value is not allowed",5)" ( number_literal , (string_literal ""compl(%f): negative value is not allowed"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_00157844(dVar2,uVar9);" (call_expression "FUN_00157844(dVar2,uVar9)" identifier (argument_list "(dVar2,uVar9)" ( identifier , identifier ))) ;) })) (if_statement "if ((((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)) {\n    FUN_00157301("builtin.c",0xe1e);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*(code *)puVar5)(dVar2,uVar9);\n  }" if (parenthesized_expression "((((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2))" ( (binary_expression "(((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)" (parenthesized_expression "(((byte)DAT_0039c260 & 5) != 0)" ( (binary_expression "((byte)DAT_0039c260 & 5) != 0" (parenthesized_expression "((byte)DAT_0039c260 & 5)" ( (binary_expression "(byte)DAT_0039c260 & 5" (cast_expression "(byte)DAT_0039c260" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)" ( (comma_expression "dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2" (assignment_expression "dVar11 = (double)FUN_0011a758(dVar2)" identifier = (cast_expression "(double)FUN_0011a758(dVar2)" ( (type_descriptor "double" primitive_type) ) (call_expression "FUN_0011a758(dVar2)" identifier (argument_list "(dVar2)" ( identifier ))))) , (binary_expression "dVar11 != dVar2" identifier != identifier)) ))) )) (compound_statement "{\n    FUN_00157301("builtin.c",0xe1e);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*(code *)puVar5)(dVar2,uVar9);\n  }" { (expression_statement "FUN_00157301("builtin.c",0xe1e);" (call_expression "FUN_00157301("builtin.c",0xe1e)" identifier (argument_list "("builtin.c",0xe1e)" ( (string_literal ""builtin.c"" " string_content ") , number_literal ))) ;) (expression_statement "puVar5 = PTR_FUN_00396d98;" (assignment_expression "puVar5 = PTR_FUN_00396d98" identifier = identifier) ;) (expression_statement "uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);" (assignment_expression "uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5)" identifier = (call_expression "dcgettext(0,"compl(%f): fractional value will be truncated",5)" identifier (argument_list "(0,"compl(%f): fractional value will be truncated",5)" ( number_literal , (string_literal ""compl(%f): fractional value will be truncated"" " string_content ") , number_literal )))) ;) (expression_statement "(*(code *)puVar5)(dVar2,uVar9);" (call_expression "(*(code *)puVar5)(dVar2,uVar9)" (parenthesized_expression "(*(code *)puVar5)" ( (pointer_expression "*(code *)puVar5" * (cast_expression "(code *)puVar5" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dVar2,uVar9)" ( identifier , identifier ))) ;) })) (if_statement "if (DAT_0017c370 <= dVar2) {\n    uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;\n  }\n  else {\n    uVar10 = (ulong)dVar2;\n  }" if (parenthesized_expression "(DAT_0017c370 <= dVar2)" ( (binary_expression "DAT_0017c370 <= dVar2" identifier <= identifier) )) (compound_statement "{\n    uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;\n  }" { (expression_statement "uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;" (assignment_expression "uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000" identifier = (binary_expression "(long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000" (cast_expression "(long)(dVar2 - DAT_0017c370)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(dVar2 - DAT_0017c370)" ( (binary_expression "dVar2 - DAT_0017c370" identifier - identifier) ))) ^ number_literal)) ;) }) (else_clause "else {\n    uVar10 = (ulong)dVar2;\n  }" else (compound_statement "{\n    uVar10 = (ulong)dVar2;\n  }" { (expression_statement "uVar10 = (ulong)dVar2;" (assignment_expression "uVar10 = (ulong)dVar2" identifier = (cast_expression "(ulong)dVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }))) (expression_statement "FUN_0011993b(~uVar10);" (call_expression "FUN_0011993b(~uVar10)" identifier (argument_list "(~uVar10)" ( (unary_expression "~uVar10" ~ identifier) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "NODE * do_compl(wchar_t nargs)\n\n{\n  STACK_ITEM *pSVar1;\n  double d;\n  uint uVar2;\n  wchar_t wVar3;\n  _func_void_char_ptr_varargs *p_Var4;\n  NODE *pNVar5;\n  long lVar6;\n  NODE *pNVar7;\n  char *mesg;\n  NODE *pNVar8;\n  char *pcVar9;\n  ulong uVar10;\n  double dVar11;\n  \n  pSVar1 = stack_ptr + -1;\n  pNVar7 = stack_ptr->rptr;\n  stack_ptr = pSVar1;\n  if (pNVar7->type == Node_var_array) {\n    set_loc("awk.h",L'ܫ');\n    pcVar9 = array_vname(pNVar7);\n    mesg = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    r_fatal(mesg,pcVar9);\n  }\n  pNVar5 = pNVar7;\n  if (((byte)do_flags & 5) != 0) {\n    uVar2 = pNVar7->flags;\n    if ((uVar2 & 0x28) == 0x20) {\n      if ((uVar2 & 8) == 0) {\n        pNVar8 = (*str2number)(pNVar7);\n        goto LAB_001212f8;\n      }\n      if ((uVar2 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pNVar8 = pNVar7;\n      if (((uVar2 & 0x100) != 0) &&\n         (((uVar2 & 4) == 0 ||\n          ((wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3)))))) {\n        pNVar8 = (*format_val)(CONVFMT,CONVFMTidx,pNVar7);\n      }\nLAB_001212f8:\n      if ((pNVar8->flags & 0x10) != 0) goto LAB_001211ed;\n    }\n    set_loc("builtin.c",L'ถ');\n    p_Var4 = lintfunc;\n    pcVar9 = (char *)dcgettext(0,"%s: received non-numeric argument",5);\n    (*p_Var4)(pcVar9,"compl");\n  }\nLAB_001211ed:\n  if ((pNVar7->flags & 8) == 0) {\n    pNVar5 = (*str2number)(pNVar7);\n  }\nLAB_00121200:\n  d = (pNVar5->sub).val.fltnum;\n  lVar6 = (pNVar7->sub).val.sref + -1;\n  (pNVar7->sub).val.sref = lVar6;\n  if (lVar6 == 0) {\n    r_unref(pNVar7);\n  }\n  if (d < 0.0) {\n    set_loc("builtin.c",L'ป');\n    pcVar9 = (char *)dcgettext(0,"compl(%f): negative value is not allowed",5);\n    r_fatal(pcVar9,d);\n  }\n  if ((((byte)do_flags & 5) != 0) && (dVar11 = double_to_int(d), dVar11 != d)) {\n    set_loc("builtin.c",L'พ');\n    p_Var4 = lintfunc;\n    pcVar9 = (char *)dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*p_Var4)(pcVar9,d);\n  }\n  if (DAT_0017c370 <= d) {\n    uVar10 = (long)(d - DAT_0017c370) ^ 0x8000000000000000;\n  }\n  else {\n    uVar10 = (ulong)d;\n  }\n  pNVar7 = make_integer(~uVar10);\n  return pNVar7;\n}\n\n" (function_definition "NODE * do_compl(wchar_t nargs)\n\n{\n  STACK_ITEM *pSVar1;\n  double d;\n  uint uVar2;\n  wchar_t wVar3;\n  _func_void_char_ptr_varargs *p_Var4;\n  NODE *pNVar5;\n  long lVar6;\n  NODE *pNVar7;\n  char *mesg;\n  NODE *pNVar8;\n  char *pcVar9;\n  ulong uVar10;\n  double dVar11;\n  \n  pSVar1 = stack_ptr + -1;\n  pNVar7 = stack_ptr->rptr;\n  stack_ptr = pSVar1;\n  if (pNVar7->type == Node_var_array) {\n    set_loc("awk.h",L'ܫ');\n    pcVar9 = array_vname(pNVar7);\n    mesg = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    r_fatal(mesg,pcVar9);\n  }\n  pNVar5 = pNVar7;\n  if (((byte)do_flags & 5) != 0) {\n    uVar2 = pNVar7->flags;\n    if ((uVar2 & 0x28) == 0x20) {\n      if ((uVar2 & 8) == 0) {\n        pNVar8 = (*str2number)(pNVar7);\n        goto LAB_001212f8;\n      }\n      if ((uVar2 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pNVar8 = pNVar7;\n      if (((uVar2 & 0x100) != 0) &&\n         (((uVar2 & 4) == 0 ||\n          ((wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3)))))) {\n        pNVar8 = (*format_val)(CONVFMT,CONVFMTidx,pNVar7);\n      }\nLAB_001212f8:\n      if ((pNVar8->flags & 0x10) != 0) goto LAB_001211ed;\n    }\n    set_loc("builtin.c",L'ถ');\n    p_Var4 = lintfunc;\n    pcVar9 = (char *)dcgettext(0,"%s: received non-numeric argument",5);\n    (*p_Var4)(pcVar9,"compl");\n  }\nLAB_001211ed:\n  if ((pNVar7->flags & 8) == 0) {\n    pNVar5 = (*str2number)(pNVar7);\n  }\nLAB_00121200:\n  d = (pNVar5->sub).val.fltnum;\n  lVar6 = (pNVar7->sub).val.sref + -1;\n  (pNVar7->sub).val.sref = lVar6;\n  if (lVar6 == 0) {\n    r_unref(pNVar7);\n  }\n  if (d < 0.0) {\n    set_loc("builtin.c",L'ป');\n    pcVar9 = (char *)dcgettext(0,"compl(%f): negative value is not allowed",5);\n    r_fatal(pcVar9,d);\n  }\n  if ((((byte)do_flags & 5) != 0) && (dVar11 = double_to_int(d), dVar11 != d)) {\n    set_loc("builtin.c",L'พ');\n    p_Var4 = lintfunc;\n    pcVar9 = (char *)dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*p_Var4)(pcVar9,d);\n  }\n  if (DAT_0017c370 <= d) {\n    uVar10 = (long)(d - DAT_0017c370) ^ 0x8000000000000000;\n  }\n  else {\n    uVar10 = (ulong)d;\n  }\n  pNVar7 = make_integer(~uVar10);\n  return pNVar7;\n}" type_identifier (pointer_declarator "* do_compl(wchar_t nargs)" * (function_declarator "do_compl(wchar_t nargs)" identifier (parameter_list "(wchar_t nargs)" ( (parameter_declaration "wchar_t nargs" type_identifier identifier) )))) (compound_statement "{\n  STACK_ITEM *pSVar1;\n  double d;\n  uint uVar2;\n  wchar_t wVar3;\n  _func_void_char_ptr_varargs *p_Var4;\n  NODE *pNVar5;\n  long lVar6;\n  NODE *pNVar7;\n  char *mesg;\n  NODE *pNVar8;\n  char *pcVar9;\n  ulong uVar10;\n  double dVar11;\n  \n  pSVar1 = stack_ptr + -1;\n  pNVar7 = stack_ptr->rptr;\n  stack_ptr = pSVar1;\n  if (pNVar7->type == Node_var_array) {\n    set_loc("awk.h",L'ܫ');\n    pcVar9 = array_vname(pNVar7);\n    mesg = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    r_fatal(mesg,pcVar9);\n  }\n  pNVar5 = pNVar7;\n  if (((byte)do_flags & 5) != 0) {\n    uVar2 = pNVar7->flags;\n    if ((uVar2 & 0x28) == 0x20) {\n      if ((uVar2 & 8) == 0) {\n        pNVar8 = (*str2number)(pNVar7);\n        goto LAB_001212f8;\n      }\n      if ((uVar2 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pNVar8 = pNVar7;\n      if (((uVar2 & 0x100) != 0) &&\n         (((uVar2 & 4) == 0 ||\n          ((wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3)))))) {\n        pNVar8 = (*format_val)(CONVFMT,CONVFMTidx,pNVar7);\n      }\nLAB_001212f8:\n      if ((pNVar8->flags & 0x10) != 0) goto LAB_001211ed;\n    }\n    set_loc("builtin.c",L'ถ');\n    p_Var4 = lintfunc;\n    pcVar9 = (char *)dcgettext(0,"%s: received non-numeric argument",5);\n    (*p_Var4)(pcVar9,"compl");\n  }\nLAB_001211ed:\n  if ((pNVar7->flags & 8) == 0) {\n    pNVar5 = (*str2number)(pNVar7);\n  }\nLAB_00121200:\n  d = (pNVar5->sub).val.fltnum;\n  lVar6 = (pNVar7->sub).val.sref + -1;\n  (pNVar7->sub).val.sref = lVar6;\n  if (lVar6 == 0) {\n    r_unref(pNVar7);\n  }\n  if (d < 0.0) {\n    set_loc("builtin.c",L'ป');\n    pcVar9 = (char *)dcgettext(0,"compl(%f): negative value is not allowed",5);\n    r_fatal(pcVar9,d);\n  }\n  if ((((byte)do_flags & 5) != 0) && (dVar11 = double_to_int(d), dVar11 != d)) {\n    set_loc("builtin.c",L'พ');\n    p_Var4 = lintfunc;\n    pcVar9 = (char *)dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*p_Var4)(pcVar9,d);\n  }\n  if (DAT_0017c370 <= d) {\n    uVar10 = (long)(d - DAT_0017c370) ^ 0x8000000000000000;\n  }\n  else {\n    uVar10 = (ulong)d;\n  }\n  pNVar7 = make_integer(~uVar10);\n  return pNVar7;\n}" { (declaration "STACK_ITEM *pSVar1;" type_identifier (pointer_declarator "*pSVar1" * identifier) ;) (declaration "double d;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "wchar_t wVar3;" type_identifier identifier ;) (declaration "_func_void_char_ptr_varargs *p_Var4;" type_identifier (pointer_declarator "*p_Var4" * identifier) ;) (declaration "NODE *pNVar5;" type_identifier (pointer_declarator "*pNVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "NODE *pNVar7;" type_identifier (pointer_declarator "*pNVar7" * identifier) ;) (declaration "char *mesg;" primitive_type (pointer_declarator "*mesg" * identifier) ;) (declaration "NODE *pNVar8;" type_identifier (pointer_declarator "*pNVar8" * identifier) ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "double dVar11;" primitive_type identifier ;) (expression_statement "pSVar1 = stack_ptr + -1;" (assignment_expression "pSVar1 = stack_ptr + -1" identifier = (binary_expression "stack_ptr + -1" identifier + number_literal)) ;) (expression_statement "pNVar7 = stack_ptr->rptr;" (assignment_expression "pNVar7 = stack_ptr->rptr" identifier = (field_expression "stack_ptr->rptr" identifier -> field_identifier)) ;) (expression_statement "stack_ptr = pSVar1;" (assignment_expression "stack_ptr = pSVar1" identifier = identifier) ;) (if_statement "if (pNVar7->type == Node_var_array) {\n    set_loc("awk.h",L'ܫ');\n    pcVar9 = array_vname(pNVar7);\n    mesg = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    r_fatal(mesg,pcVar9);\n  }" if (parenthesized_expression "(pNVar7->type == Node_var_array)" ( (binary_expression "pNVar7->type == Node_var_array" (field_expression "pNVar7->type" identifier -> field_identifier) == identifier) )) (compound_statement "{\n    set_loc("awk.h",L'ܫ');\n    pcVar9 = array_vname(pNVar7);\n    mesg = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    r_fatal(mesg,pcVar9);\n  }" { (expression_statement "set_loc("awk.h",L'ܫ');" (call_expression "set_loc("awk.h",L'ܫ')" identifier (argument_list "("awk.h",L'ܫ')" ( (string_literal ""awk.h"" " string_content ") , (char_literal "L'ܫ'" L' character ') ))) ;) (expression_statement "pcVar9 = array_vname(pNVar7);" (assignment_expression "pcVar9 = array_vname(pNVar7)" identifier = (call_expression "array_vname(pNVar7)" identifier (argument_list "(pNVar7)" ( identifier )))) ;) (expression_statement "mesg = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "mesg = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (cast_expression "(char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal ))))) ;) (expression_statement "r_fatal(mesg,pcVar9);" (call_expression "r_fatal(mesg,pcVar9)" identifier (argument_list "(mesg,pcVar9)" ( identifier , identifier ))) ;) })) (expression_statement "pNVar5 = pNVar7;" (assignment_expression "pNVar5 = pNVar7" identifier = identifier) ;) (if_statement "if (((byte)do_flags & 5) != 0) {\n    uVar2 = pNVar7->flags;\n    if ((uVar2 & 0x28) == 0x20) {\n      if ((uVar2 & 8) == 0) {\n        pNVar8 = (*str2number)(pNVar7);\n        goto LAB_001212f8;\n      }\n      if ((uVar2 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pNVar8 = pNVar7;\n      if (((uVar2 & 0x100) != 0) &&\n         (((uVar2 & 4) == 0 ||\n          ((wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3)))))) {\n        pNVar8 = (*format_val)(CONVFMT,CONVFMTidx,pNVar7);\n      }\nLAB_001212f8:\n      if ((pNVar8->flags & 0x10) != 0) goto LAB_001211ed;\n    }\n    set_loc("builtin.c",L'ถ');\n    p_Var4 = lintfunc;\n    pcVar9 = (char *)dcgettext(0,"%s: received non-numeric argument",5);\n    (*p_Var4)(pcVar9,"compl");\n  }" if (parenthesized_expression "(((byte)do_flags & 5) != 0)" ( (binary_expression "((byte)do_flags & 5) != 0" (parenthesized_expression "((byte)do_flags & 5)" ( (binary_expression "(byte)do_flags & 5" (cast_expression "(byte)do_flags" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar2 = pNVar7->flags;\n    if ((uVar2 & 0x28) == 0x20) {\n      if ((uVar2 & 8) == 0) {\n        pNVar8 = (*str2number)(pNVar7);\n        goto LAB_001212f8;\n      }\n      if ((uVar2 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pNVar8 = pNVar7;\n      if (((uVar2 & 0x100) != 0) &&\n         (((uVar2 & 4) == 0 ||\n          ((wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3)))))) {\n        pNVar8 = (*format_val)(CONVFMT,CONVFMTidx,pNVar7);\n      }\nLAB_001212f8:\n      if ((pNVar8->flags & 0x10) != 0) goto LAB_001211ed;\n    }\n    set_loc("builtin.c",L'ถ');\n    p_Var4 = lintfunc;\n    pcVar9 = (char *)dcgettext(0,"%s: received non-numeric argument",5);\n    (*p_Var4)(pcVar9,"compl");\n  }" { (expression_statement "uVar2 = pNVar7->flags;" (assignment_expression "uVar2 = pNVar7->flags" identifier = (field_expression "pNVar7->flags" identifier -> field_identifier)) ;) (if_statement "if ((uVar2 & 0x28) == 0x20) {\n      if ((uVar2 & 8) == 0) {\n        pNVar8 = (*str2number)(pNVar7);\n        goto LAB_001212f8;\n      }\n      if ((uVar2 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pNVar8 = pNVar7;\n      if (((uVar2 & 0x100) != 0) &&\n         (((uVar2 & 4) == 0 ||\n          ((wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3)))))) {\n        pNVar8 = (*format_val)(CONVFMT,CONVFMTidx,pNVar7);\n      }\nLAB_001212f8:\n      if ((pNVar8->flags & 0x10) != 0) goto LAB_001211ed;\n    }" if (parenthesized_expression "((uVar2 & 0x28) == 0x20)" ( (binary_expression "(uVar2 & 0x28) == 0x20" (parenthesized_expression "(uVar2 & 0x28)" ( (binary_expression "uVar2 & 0x28" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((uVar2 & 8) == 0) {\n        pNVar8 = (*str2number)(pNVar7);\n        goto LAB_001212f8;\n      }\n      if ((uVar2 & 0x10) != 0) goto LAB_00121200;\n    }" { (if_statement "if ((uVar2 & 8) == 0) {\n        pNVar8 = (*str2number)(pNVar7);\n        goto LAB_001212f8;\n      }" if (parenthesized_expression "((uVar2 & 8) == 0)" ( (binary_expression "(uVar2 & 8) == 0" (parenthesized_expression "(uVar2 & 8)" ( (binary_expression "uVar2 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        pNVar8 = (*str2number)(pNVar7);\n        goto LAB_001212f8;\n      }" { (expression_statement "pNVar8 = (*str2number)(pNVar7);" (assignment_expression "pNVar8 = (*str2number)(pNVar7)" identifier = (call_expression "(*str2number)(pNVar7)" (parenthesized_expression "(*str2number)" ( (pointer_expression "*str2number" * identifier) )) (argument_list "(pNVar7)" ( identifier )))) ;) (goto_statement "goto LAB_001212f8;" goto statement_identifier ;) })) (if_statement "if ((uVar2 & 0x10) != 0) goto LAB_00121200;" if (parenthesized_expression "((uVar2 & 0x10) != 0)" ( (binary_expression "(uVar2 & 0x10) != 0" (parenthesized_expression "(uVar2 & 0x10)" ( (binary_expression "uVar2 & 0x10" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00121200;" goto statement_identifier ;)) }) (else_clause "else {\n      pNVar8 = pNVar7;\n      if (((uVar2 & 0x100) != 0) &&\n         (((uVar2 & 4) == 0 ||\n          ((wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3)))))) {\n        pNVar8 = (*format_val)(CONVFMT,CONVFMTidx,pNVar7);\n      }\nLAB_001212f8:\n      if ((pNVar8->flags & 0x10) != 0) goto LAB_001211ed;\n    }" else (compound_statement "{\n      pNVar8 = pNVar7;\n      if (((uVar2 & 0x100) != 0) &&\n         (((uVar2 & 4) == 0 ||\n          ((wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3)))))) {\n        pNVar8 = (*format_val)(CONVFMT,CONVFMTidx,pNVar7);\n      }\nLAB_001212f8:\n      if ((pNVar8->flags & 0x10) != 0) goto LAB_001211ed;\n    }" { (expression_statement "pNVar8 = pNVar7;" (assignment_expression "pNVar8 = pNVar7" identifier = identifier) ;) (if_statement "if (((uVar2 & 0x100) != 0) &&\n         (((uVar2 & 4) == 0 ||\n          ((wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3)))))) {\n        pNVar8 = (*format_val)(CONVFMT,CONVFMTidx,pNVar7);\n      }" if (parenthesized_expression "(((uVar2 & 0x100) != 0) &&\n         (((uVar2 & 4) == 0 ||\n          ((wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3))))))" ( (binary_expression "((uVar2 & 0x100) != 0) &&\n         (((uVar2 & 4) == 0 ||\n          ((wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3)))))" (parenthesized_expression "((uVar2 & 0x100) != 0)" ( (binary_expression "(uVar2 & 0x100) != 0" (parenthesized_expression "(uVar2 & 0x100)" ( (binary_expression "uVar2 & 0x100" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(((uVar2 & 4) == 0 ||\n          ((wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3)))))" ( (parenthesized_expression "((uVar2 & 4) == 0 ||\n          ((wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3))))" ( (binary_expression "(uVar2 & 4) == 0 ||\n          ((wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3)))" (binary_expression "(uVar2 & 4) == 0" (parenthesized_expression "(uVar2 & 4)" ( (binary_expression "uVar2 & 4" identifier & number_literal) )) == number_literal) || (parenthesized_expression "((wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3)))" ( (parenthesized_expression "(wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3))" ( (comma_expression "wVar3 = (pNVar7->sub).val.idx, wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3)" (assignment_expression "wVar3 = (pNVar7->sub).val.idx" identifier = (field_expression "(pNVar7->sub).val.idx" (field_expression "(pNVar7->sub).val" (parenthesized_expression "(pNVar7->sub)" ( (field_expression "pNVar7->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) , (binary_expression "wVar3 != L'\xffffffff' && (CONVFMTidx != wVar3)" (binary_expression "wVar3 != L'\xffffffff'" identifier != (char_literal "L'\xffffffff'" L' escape_sequence character character character character ')) && (parenthesized_expression "(CONVFMTidx != wVar3)" ( (binary_expression "CONVFMTidx != wVar3" identifier != identifier) )))) )) ))) )) ))) )) (compound_statement "{\n        pNVar8 = (*format_val)(CONVFMT,CONVFMTidx,pNVar7);\n      }" { (expression_statement "pNVar8 = (*format_val)(CONVFMT,CONVFMTidx,pNVar7);" (assignment_expression "pNVar8 = (*format_val)(CONVFMT,CONVFMTidx,pNVar7)" identifier = (call_expression "(*format_val)(CONVFMT,CONVFMTidx,pNVar7)" (parenthesized_expression "(*format_val)" ( (pointer_expression "*format_val" * identifier) )) (argument_list "(CONVFMT,CONVFMTidx,pNVar7)" ( identifier , identifier , identifier )))) ;) })) (labeled_statement "LAB_001212f8:\n      if ((pNVar8->flags & 0x10) != 0) goto LAB_001211ed;" statement_identifier : (if_statement "if ((pNVar8->flags & 0x10) != 0) goto LAB_001211ed;" if (parenthesized_expression "((pNVar8->flags & 0x10) != 0)" ( (binary_expression "(pNVar8->flags & 0x10) != 0" (parenthesized_expression "(pNVar8->flags & 0x10)" ( (binary_expression "pNVar8->flags & 0x10" (field_expression "pNVar8->flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001211ed;" goto statement_identifier ;))) }))) (expression_statement "set_loc("builtin.c",L'ถ');" (call_expression "set_loc("builtin.c",L'ถ')" identifier (argument_list "("builtin.c",L'ถ')" ( (string_literal ""builtin.c"" " string_content ") , (char_literal "L'ถ'" L' character ') ))) ;) (expression_statement "p_Var4 = lintfunc;" (assignment_expression "p_Var4 = lintfunc" identifier = identifier) ;) (expression_statement "pcVar9 = (char *)dcgettext(0,"%s: received non-numeric argument",5);" (assignment_expression "pcVar9 = (char *)dcgettext(0,"%s: received non-numeric argument",5)" identifier = (cast_expression "(char *)dcgettext(0,"%s: received non-numeric argument",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%s: received non-numeric argument",5)" identifier (argument_list "(0,"%s: received non-numeric argument",5)" ( number_literal , (string_literal ""%s: received non-numeric argument"" " string_content ") , number_literal ))))) ;) (expression_statement "(*p_Var4)(pcVar9,"compl");" (call_expression "(*p_Var4)(pcVar9,"compl")" (parenthesized_expression "(*p_Var4)" ( (pointer_expression "*p_Var4" * identifier) )) (argument_list "(pcVar9,"compl")" ( identifier , (string_literal ""compl"" " string_content ") ))) ;) })) (labeled_statement "LAB_001211ed:\n  if ((pNVar7->flags & 8) == 0) {\n    pNVar5 = (*str2number)(pNVar7);\n  }" statement_identifier : (if_statement "if ((pNVar7->flags & 8) == 0) {\n    pNVar5 = (*str2number)(pNVar7);\n  }" if (parenthesized_expression "((pNVar7->flags & 8) == 0)" ( (binary_expression "(pNVar7->flags & 8) == 0" (parenthesized_expression "(pNVar7->flags & 8)" ( (binary_expression "pNVar7->flags & 8" (field_expression "pNVar7->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    pNVar5 = (*str2number)(pNVar7);\n  }" { (expression_statement "pNVar5 = (*str2number)(pNVar7);" (assignment_expression "pNVar5 = (*str2number)(pNVar7)" identifier = (call_expression "(*str2number)(pNVar7)" (parenthesized_expression "(*str2number)" ( (pointer_expression "*str2number" * identifier) )) (argument_list "(pNVar7)" ( identifier )))) ;) }))) (labeled_statement "LAB_00121200:\n  d = (pNVar5->sub).val.fltnum;" statement_identifier : (expression_statement "d = (pNVar5->sub).val.fltnum;" (assignment_expression "d = (pNVar5->sub).val.fltnum" identifier = (field_expression "(pNVar5->sub).val.fltnum" (field_expression "(pNVar5->sub).val" (parenthesized_expression "(pNVar5->sub)" ( (field_expression "pNVar5->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;)) (expression_statement "lVar6 = (pNVar7->sub).val.sref + -1;" (assignment_expression "lVar6 = (pNVar7->sub).val.sref + -1" identifier = (binary_expression "(pNVar7->sub).val.sref + -1" (field_expression "(pNVar7->sub).val.sref" (field_expression "(pNVar7->sub).val" (parenthesized_expression "(pNVar7->sub)" ( (field_expression "pNVar7->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) + number_literal)) ;) (expression_statement "(pNVar7->sub).val.sref = lVar6;" (assignment_expression "(pNVar7->sub).val.sref = lVar6" (field_expression "(pNVar7->sub).val.sref" (field_expression "(pNVar7->sub).val" (parenthesized_expression "(pNVar7->sub)" ( (field_expression "pNVar7->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (if_statement "if (lVar6 == 0) {\n    r_unref(pNVar7);\n  }" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (compound_statement "{\n    r_unref(pNVar7);\n  }" { (expression_statement "r_unref(pNVar7);" (call_expression "r_unref(pNVar7)" identifier (argument_list "(pNVar7)" ( identifier ))) ;) })) (if_statement "if (d < 0.0) {\n    set_loc("builtin.c",L'ป');\n    pcVar9 = (char *)dcgettext(0,"compl(%f): negative value is not allowed",5);\n    r_fatal(pcVar9,d);\n  }" if (parenthesized_expression "(d < 0.0)" ( (binary_expression "d < 0.0" identifier < number_literal) )) (compound_statement "{\n    set_loc("builtin.c",L'ป');\n    pcVar9 = (char *)dcgettext(0,"compl(%f): negative value is not allowed",5);\n    r_fatal(pcVar9,d);\n  }" { (expression_statement "set_loc("builtin.c",L'ป');" (call_expression "set_loc("builtin.c",L'ป')" identifier (argument_list "("builtin.c",L'ป')" ( (string_literal ""builtin.c"" " string_content ") , (char_literal "L'ป'" L' character ') ))) ;) (expression_statement "pcVar9 = (char *)dcgettext(0,"compl(%f): negative value is not allowed",5);" (assignment_expression "pcVar9 = (char *)dcgettext(0,"compl(%f): negative value is not allowed",5)" identifier = (cast_expression "(char *)dcgettext(0,"compl(%f): negative value is not allowed",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"compl(%f): negative value is not allowed",5)" identifier (argument_list "(0,"compl(%f): negative value is not allowed",5)" ( number_literal , (string_literal ""compl(%f): negative value is not allowed"" " string_content ") , number_literal ))))) ;) (expression_statement "r_fatal(pcVar9,d);" (call_expression "r_fatal(pcVar9,d)" identifier (argument_list "(pcVar9,d)" ( identifier , identifier ))) ;) })) (if_statement "if ((((byte)do_flags & 5) != 0) && (dVar11 = double_to_int(d), dVar11 != d)) {\n    set_loc("builtin.c",L'พ');\n    p_Var4 = lintfunc;\n    pcVar9 = (char *)dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*p_Var4)(pcVar9,d);\n  }" if (parenthesized_expression "((((byte)do_flags & 5) != 0) && (dVar11 = double_to_int(d), dVar11 != d))" ( (binary_expression "(((byte)do_flags & 5) != 0) && (dVar11 = double_to_int(d), dVar11 != d)" (parenthesized_expression "(((byte)do_flags & 5) != 0)" ( (binary_expression "((byte)do_flags & 5) != 0" (parenthesized_expression "((byte)do_flags & 5)" ( (binary_expression "(byte)do_flags & 5" (cast_expression "(byte)do_flags" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(dVar11 = double_to_int(d), dVar11 != d)" ( (comma_expression "dVar11 = double_to_int(d), dVar11 != d" (assignment_expression "dVar11 = double_to_int(d)" identifier = (call_expression "double_to_int(d)" identifier (argument_list "(d)" ( identifier )))) , (binary_expression "dVar11 != d" identifier != identifier)) ))) )) (compound_statement "{\n    set_loc("builtin.c",L'พ');\n    p_Var4 = lintfunc;\n    pcVar9 = (char *)dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*p_Var4)(pcVar9,d);\n  }" { (expression_statement "set_loc("builtin.c",L'พ');" (call_expression "set_loc("builtin.c",L'พ')" identifier (argument_list "("builtin.c",L'พ')" ( (string_literal ""builtin.c"" " string_content ") , (char_literal "L'พ'" L' character ') ))) ;) (expression_statement "p_Var4 = lintfunc;" (assignment_expression "p_Var4 = lintfunc" identifier = identifier) ;) (expression_statement "pcVar9 = (char *)dcgettext(0,"compl(%f): fractional value will be truncated",5);" (assignment_expression "pcVar9 = (char *)dcgettext(0,"compl(%f): fractional value will be truncated",5)" identifier = (cast_expression "(char *)dcgettext(0,"compl(%f): fractional value will be truncated",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"compl(%f): fractional value will be truncated",5)" identifier (argument_list "(0,"compl(%f): fractional value will be truncated",5)" ( number_literal , (string_literal ""compl(%f): fractional value will be truncated"" " string_content ") , number_literal ))))) ;) (expression_statement "(*p_Var4)(pcVar9,d);" (call_expression "(*p_Var4)(pcVar9,d)" (parenthesized_expression "(*p_Var4)" ( (pointer_expression "*p_Var4" * identifier) )) (argument_list "(pcVar9,d)" ( identifier , identifier ))) ;) })) (if_statement "if (DAT_0017c370 <= d) {\n    uVar10 = (long)(d - DAT_0017c370) ^ 0x8000000000000000;\n  }\n  else {\n    uVar10 = (ulong)d;\n  }" if (parenthesized_expression "(DAT_0017c370 <= d)" ( (binary_expression "DAT_0017c370 <= d" identifier <= identifier) )) (compound_statement "{\n    uVar10 = (long)(d - DAT_0017c370) ^ 0x8000000000000000;\n  }" { (expression_statement "uVar10 = (long)(d - DAT_0017c370) ^ 0x8000000000000000;" (assignment_expression "uVar10 = (long)(d - DAT_0017c370) ^ 0x8000000000000000" identifier = (binary_expression "(long)(d - DAT_0017c370) ^ 0x8000000000000000" (cast_expression "(long)(d - DAT_0017c370)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(d - DAT_0017c370)" ( (binary_expression "d - DAT_0017c370" identifier - identifier) ))) ^ number_literal)) ;) }) (else_clause "else {\n    uVar10 = (ulong)d;\n  }" else (compound_statement "{\n    uVar10 = (ulong)d;\n  }" { (expression_statement "uVar10 = (ulong)d;" (assignment_expression "uVar10 = (ulong)d" identifier = (cast_expression "(ulong)d" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }))) (expression_statement "pNVar7 = make_integer(~uVar10);" (assignment_expression "pNVar7 = make_integer(~uVar10)" identifier = (call_expression "make_integer(~uVar10)" identifier (argument_list "(~uVar10)" ( (unary_expression "~uVar10" ~ identifier) )))) ;) (return_statement "return pNVar7;" return identifier ;) })))
(translation_unit "void FUN_001211bb(void)\n\n{\n  undefined8 *puVar1;\n  double dVar2;\n  uint uVar3;\n  double *pdVar4;\n  undefined *puVar5;\n  double *pdVar6;\n  undefined8 uVar7;\n  double *pdVar8;\n  undefined8 uVar9;\n  ulong uVar10;\n  double dVar11;\n  \n  puVar1 = DAT_00399c70 + -1;\n  pdVar4 = (double *)*DAT_00399c70;\n  DAT_00399c70 = puVar1;\n  if (*(int *)(pdVar4 + 9) == 5) {\n    FUN_00157301("awk.h",0x72b);\n    uVar9 = FUN_0010a1ed(pdVar4);\n    uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00157844(uVar7,uVar9);\n  }\n  pdVar6 = pdVar4;\n  if (((byte)DAT_0039c260 & 5) != 0) {\n    uVar3 = *(uint *)((long)pdVar4 + 0x4c);\n    if ((uVar3 & 0x28) == 0x20) {\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }\n    FUN_00157301("builtin.c",0xe16);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"%s: received non-numeric argument",5);\n    (*(code *)puVar5)(uVar9,"compl");\n  }\nLAB_001211ed:\n  if ((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0) {\n    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n  }\nLAB_00121200:\n  dVar2 = *pdVar6;\n  dVar11 = pdVar4[3];\n  pdVar4[3] = (double)((long)dVar11 + -1);\n  if ((double)((long)dVar11 + -1) == 0.0) {\n    FUN_001582a6(pdVar4);\n  }\n  if (dVar2 < 0.0) {\n    FUN_00157301("builtin.c",0xe1b);\n    uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);\n    FUN_00157844(dVar2,uVar9);\n  }\n  if ((((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)) {\n    FUN_00157301("builtin.c",0xe1e);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*(code *)puVar5)(dVar2,uVar9);\n  }\n  if (DAT_0017c370 <= dVar2) {\n    uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;\n  }\n  else {\n    uVar10 = (ulong)dVar2;\n  }\n  FUN_0011993b(~uVar10);\n  return;\n}\n\n" (function_definition "void FUN_001211bb(void)\n\n{\n  undefined8 *puVar1;\n  double dVar2;\n  uint uVar3;\n  double *pdVar4;\n  undefined *puVar5;\n  double *pdVar6;\n  undefined8 uVar7;\n  double *pdVar8;\n  undefined8 uVar9;\n  ulong uVar10;\n  double dVar11;\n  \n  puVar1 = DAT_00399c70 + -1;\n  pdVar4 = (double *)*DAT_00399c70;\n  DAT_00399c70 = puVar1;\n  if (*(int *)(pdVar4 + 9) == 5) {\n    FUN_00157301("awk.h",0x72b);\n    uVar9 = FUN_0010a1ed(pdVar4);\n    uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00157844(uVar7,uVar9);\n  }\n  pdVar6 = pdVar4;\n  if (((byte)DAT_0039c260 & 5) != 0) {\n    uVar3 = *(uint *)((long)pdVar4 + 0x4c);\n    if ((uVar3 & 0x28) == 0x20) {\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }\n    FUN_00157301("builtin.c",0xe16);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"%s: received non-numeric argument",5);\n    (*(code *)puVar5)(uVar9,"compl");\n  }\nLAB_001211ed:\n  if ((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0) {\n    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n  }\nLAB_00121200:\n  dVar2 = *pdVar6;\n  dVar11 = pdVar4[3];\n  pdVar4[3] = (double)((long)dVar11 + -1);\n  if ((double)((long)dVar11 + -1) == 0.0) {\n    FUN_001582a6(pdVar4);\n  }\n  if (dVar2 < 0.0) {\n    FUN_00157301("builtin.c",0xe1b);\n    uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);\n    FUN_00157844(dVar2,uVar9);\n  }\n  if ((((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)) {\n    FUN_00157301("builtin.c",0xe1e);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*(code *)puVar5)(dVar2,uVar9);\n  }\n  if (DAT_0017c370 <= dVar2) {\n    uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;\n  }\n  else {\n    uVar10 = (ulong)dVar2;\n  }\n  FUN_0011993b(~uVar10);\n  return;\n}" primitive_type (function_declarator "FUN_001211bb(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined8 *puVar1;\n  double dVar2;\n  uint uVar3;\n  double *pdVar4;\n  undefined *puVar5;\n  double *pdVar6;\n  undefined8 uVar7;\n  double *pdVar8;\n  undefined8 uVar9;\n  ulong uVar10;\n  double dVar11;\n  \n  puVar1 = DAT_00399c70 + -1;\n  pdVar4 = (double *)*DAT_00399c70;\n  DAT_00399c70 = puVar1;\n  if (*(int *)(pdVar4 + 9) == 5) {\n    FUN_00157301("awk.h",0x72b);\n    uVar9 = FUN_0010a1ed(pdVar4);\n    uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00157844(uVar7,uVar9);\n  }\n  pdVar6 = pdVar4;\n  if (((byte)DAT_0039c260 & 5) != 0) {\n    uVar3 = *(uint *)((long)pdVar4 + 0x4c);\n    if ((uVar3 & 0x28) == 0x20) {\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }\n    FUN_00157301("builtin.c",0xe16);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"%s: received non-numeric argument",5);\n    (*(code *)puVar5)(uVar9,"compl");\n  }\nLAB_001211ed:\n  if ((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0) {\n    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n  }\nLAB_00121200:\n  dVar2 = *pdVar6;\n  dVar11 = pdVar4[3];\n  pdVar4[3] = (double)((long)dVar11 + -1);\n  if ((double)((long)dVar11 + -1) == 0.0) {\n    FUN_001582a6(pdVar4);\n  }\n  if (dVar2 < 0.0) {\n    FUN_00157301("builtin.c",0xe1b);\n    uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);\n    FUN_00157844(dVar2,uVar9);\n  }\n  if ((((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)) {\n    FUN_00157301("builtin.c",0xe1e);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*(code *)puVar5)(dVar2,uVar9);\n  }\n  if (DAT_0017c370 <= dVar2) {\n    uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;\n  }\n  else {\n    uVar10 = (ulong)dVar2;\n  }\n  FUN_0011993b(~uVar10);\n  return;\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "double dVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "double *pdVar4;" primitive_type (pointer_declarator "*pdVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "double *pdVar6;" primitive_type (pointer_declarator "*pdVar6" * identifier) ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "double *pdVar8;" primitive_type (pointer_declarator "*pdVar8" * identifier) ;) (declaration "undefined8 uVar9;" type_identifier identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "double dVar11;" primitive_type identifier ;) (expression_statement "puVar1 = DAT_00399c70 + -1;" (assignment_expression "puVar1 = DAT_00399c70 + -1" identifier = (binary_expression "DAT_00399c70 + -1" identifier + number_literal)) ;) (expression_statement "pdVar4 = (double *)*DAT_00399c70;" (assignment_expression "pdVar4 = (double *)*DAT_00399c70" identifier = (cast_expression "(double *)*DAT_00399c70" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*DAT_00399c70" * identifier))) ;) (expression_statement "DAT_00399c70 = puVar1;" (assignment_expression "DAT_00399c70 = puVar1" identifier = identifier) ;) (if_statement "if (*(int *)(pdVar4 + 9) == 5) {\n    FUN_00157301("awk.h",0x72b);\n    uVar9 = FUN_0010a1ed(pdVar4);\n    uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00157844(uVar7,uVar9);\n  }" if (parenthesized_expression "(*(int *)(pdVar4 + 9) == 5)" ( (binary_expression "*(int *)(pdVar4 + 9) == 5" (pointer_expression "*(int *)(pdVar4 + 9)" * (cast_expression "(int *)(pdVar4 + 9)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar4 + 9)" ( (binary_expression "pdVar4 + 9" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    FUN_00157301("awk.h",0x72b);\n    uVar9 = FUN_0010a1ed(pdVar4);\n    uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00157844(uVar7,uVar9);\n  }" { (expression_statement "FUN_00157301("awk.h",0x72b);" (call_expression "FUN_00157301("awk.h",0x72b)" identifier (argument_list "("awk.h",0x72b)" ( (string_literal ""awk.h"" " string_content ") , number_literal ))) ;) (expression_statement "uVar9 = FUN_0010a1ed(pdVar4);" (assignment_expression "uVar9 = FUN_0010a1ed(pdVar4)" identifier = (call_expression "FUN_0010a1ed(pdVar4)" identifier (argument_list "(pdVar4)" ( identifier )))) ;) (expression_statement "uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_00157844(uVar7,uVar9);" (call_expression "FUN_00157844(uVar7,uVar9)" identifier (argument_list "(uVar7,uVar9)" ( identifier , identifier ))) ;) })) (expression_statement "pdVar6 = pdVar4;" (assignment_expression "pdVar6 = pdVar4" identifier = identifier) ;) (if_statement "if (((byte)DAT_0039c260 & 5) != 0) {\n    uVar3 = *(uint *)((long)pdVar4 + 0x4c);\n    if ((uVar3 & 0x28) == 0x20) {\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }\n    FUN_00157301("builtin.c",0xe16);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"%s: received non-numeric argument",5);\n    (*(code *)puVar5)(uVar9,"compl");\n  }" if (parenthesized_expression "(((byte)DAT_0039c260 & 5) != 0)" ( (binary_expression "((byte)DAT_0039c260 & 5) != 0" (parenthesized_expression "((byte)DAT_0039c260 & 5)" ( (binary_expression "(byte)DAT_0039c260 & 5" (cast_expression "(byte)DAT_0039c260" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar3 = *(uint *)((long)pdVar4 + 0x4c);\n    if ((uVar3 & 0x28) == 0x20) {\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }\n    FUN_00157301("builtin.c",0xe16);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"%s: received non-numeric argument",5);\n    (*(code *)puVar5)(uVar9,"compl");\n  }" { (expression_statement "uVar3 = *(uint *)((long)pdVar4 + 0x4c);" (assignment_expression "uVar3 = *(uint *)((long)pdVar4 + 0x4c)" identifier = (pointer_expression "*(uint *)((long)pdVar4 + 0x4c)" * (cast_expression "(uint *)((long)pdVar4 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pdVar4 + 0x4c)" ( (binary_expression "(long)pdVar4 + 0x4c" (cast_expression "(long)pdVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (if_statement "if ((uVar3 & 0x28) == 0x20) {\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }" if (parenthesized_expression "((uVar3 & 0x28) == 0x20)" ( (binary_expression "(uVar3 & 0x28) == 0x20" (parenthesized_expression "(uVar3 & 0x28)" ( (binary_expression "uVar3 & 0x28" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }" { (if_statement "if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }" if (parenthesized_expression "((uVar3 & 8) == 0)" ( (binary_expression "(uVar3 & 8) == 0" (parenthesized_expression "(uVar3 & 8)" ( (binary_expression "uVar3 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }" { (expression_statement "pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);" (assignment_expression "pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4)" identifier = (cast_expression "(double *)(*(code *)PTR_FUN_00396e50)(pdVar4)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_FUN_00396e50)(pdVar4)" (parenthesized_expression "(*(code *)PTR_FUN_00396e50)" ( (pointer_expression "*(code *)PTR_FUN_00396e50" * (cast_expression "(code *)PTR_FUN_00396e50" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pdVar4)" ( identifier ))))) ;) (goto_statement "goto LAB_001212f8;" goto statement_identifier ;) })) (if_statement "if ((uVar3 & 0x10) != 0) goto LAB_00121200;" if (parenthesized_expression "((uVar3 & 0x10) != 0)" ( (binary_expression "(uVar3 & 0x10) != 0" (parenthesized_expression "(uVar3 & 0x10)" ( (binary_expression "uVar3 & 0x10" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00121200;" goto statement_identifier ;)) }) (else_clause "else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }" else (compound_statement "{\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }" { (expression_statement "pdVar8 = pdVar4;" (assignment_expression "pdVar8 = pdVar4" identifier = identifier) ;) (if_statement "if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }" if (parenthesized_expression "(((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4)))))))" ( (binary_expression "((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))" (parenthesized_expression "((uVar3 & 0x100) != 0)" ( (binary_expression "(uVar3 & 0x100) != 0" (parenthesized_expression "(uVar3 & 0x100)" ( (binary_expression "uVar3 & 0x100" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))" ( (parenthesized_expression "((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4)))))" ( (binary_expression "(uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))" (binary_expression "(uVar3 & 4) == 0" (parenthesized_expression "(uVar3 & 4)" ( (binary_expression "uVar3 & 4" identifier & number_literal) )) == number_literal) || (parenthesized_expression "((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))" ( (parenthesized_expression "(*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4)))" ( (binary_expression "*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))" (binary_expression "*(int *)(pdVar4 + 4) != -1" (pointer_expression "*(int *)(pdVar4 + 4)" * (cast_expression "(int *)(pdVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar4 + 4)" ( (binary_expression "pdVar4 + 4" identifier + number_literal) )))) != number_literal) && (parenthesized_expression "(DAT_0039ddd4 != *(int *)(pdVar4 + 4))" ( (binary_expression "DAT_0039ddd4 != *(int *)(pdVar4 + 4)" identifier != (pointer_expression "*(int *)(pdVar4 + 4)" * (cast_expression "(int *)(pdVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pdVar4 + 4)" ( (binary_expression "pdVar4 + 4" identifier + number_literal) ))))) ))) )) ))) )) ))) )) (compound_statement "{\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }" { (expression_statement "pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);" (assignment_expression "pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4)" identifier = (cast_expression "(double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4)" (parenthesized_expression "(*(code *)PTR_FUN_00396e48)" ( (pointer_expression "*(code *)PTR_FUN_00396e48" * (cast_expression "(code *)PTR_FUN_00396e48" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4)" ( identifier , identifier , identifier ))))) ;) })) (labeled_statement "LAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;" statement_identifier : (if_statement "if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;" if (parenthesized_expression "((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0)" ( (binary_expression "(*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0" (parenthesized_expression "(*(byte *)((long)pdVar8 + 0x4c) & 0x10)" ( (binary_expression "*(byte *)((long)pdVar8 + 0x4c) & 0x10" (pointer_expression "*(byte *)((long)pdVar8 + 0x4c)" * (cast_expression "(byte *)((long)pdVar8 + 0x4c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pdVar8 + 0x4c)" ( (binary_expression "(long)pdVar8 + 0x4c" (cast_expression "(long)pdVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001211ed;" goto statement_identifier ;))) }))) (expression_statement "FUN_00157301("builtin.c",0xe16);" (call_expression "FUN_00157301("builtin.c",0xe16)" identifier (argument_list "("builtin.c",0xe16)" ( (string_literal ""builtin.c"" " string_content ") , number_literal ))) ;) (expression_statement "puVar5 = PTR_FUN_00396d98;" (assignment_expression "puVar5 = PTR_FUN_00396d98" identifier = identifier) ;) (expression_statement "uVar9 = dcgettext(0,"%s: received non-numeric argument",5);" (assignment_expression "uVar9 = dcgettext(0,"%s: received non-numeric argument",5)" identifier = (call_expression "dcgettext(0,"%s: received non-numeric argument",5)" identifier (argument_list "(0,"%s: received non-numeric argument",5)" ( number_literal , (string_literal ""%s: received non-numeric argument"" " string_content ") , number_literal )))) ;) (expression_statement "(*(code *)puVar5)(uVar9,"compl");" (call_expression "(*(code *)puVar5)(uVar9,"compl")" (parenthesized_expression "(*(code *)puVar5)" ( (pointer_expression "*(code *)puVar5" * (cast_expression "(code *)puVar5" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar9,"compl")" ( identifier , (string_literal ""compl"" " string_content ") ))) ;) })) (labeled_statement "LAB_001211ed:\n  if ((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0) {\n    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n  }" statement_identifier : (if_statement "if ((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0) {\n    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n  }" if (parenthesized_expression "((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0)" ( (binary_expression "(*(byte *)((long)pdVar4 + 0x4c) & 8) == 0" (parenthesized_expression "(*(byte *)((long)pdVar4 + 0x4c) & 8)" ( (binary_expression "*(byte *)((long)pdVar4 + 0x4c) & 8" (pointer_expression "*(byte *)((long)pdVar4 + 0x4c)" * (cast_expression "(byte *)((long)pdVar4 + 0x4c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pdVar4 + 0x4c)" ( (binary_expression "(long)pdVar4 + 0x4c" (cast_expression "(long)pdVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n  }" { (expression_statement "pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);" (assignment_expression "pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4)" identifier = (cast_expression "(double *)(*(code *)PTR_FUN_00396e50)(pdVar4)" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_FUN_00396e50)(pdVar4)" (parenthesized_expression "(*(code *)PTR_FUN_00396e50)" ( (pointer_expression "*(code *)PTR_FUN_00396e50" * (cast_expression "(code *)PTR_FUN_00396e50" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pdVar4)" ( identifier ))))) ;) }))) (labeled_statement "LAB_00121200:\n  dVar2 = *pdVar6;" statement_identifier : (expression_statement "dVar2 = *pdVar6;" (assignment_expression "dVar2 = *pdVar6" identifier = (pointer_expression "*pdVar6" * identifier)) ;)) (expression_statement "dVar11 = pdVar4[3];" (assignment_expression "dVar11 = pdVar4[3]" identifier = (subscript_expression "pdVar4[3]" identifier [ number_literal ])) ;) (expression_statement "pdVar4[3] = (double)((long)dVar11 + -1);" (assignment_expression "pdVar4[3] = (double)((long)dVar11 + -1)" (subscript_expression "pdVar4[3]" identifier [ number_literal ]) = (cast_expression "(double)((long)dVar11 + -1)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((long)dVar11 + -1)" ( (binary_expression "(long)dVar11 + -1" (cast_expression "(long)dVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (if_statement "if ((double)((long)dVar11 + -1) == 0.0) {\n    FUN_001582a6(pdVar4);\n  }" if (parenthesized_expression "((double)((long)dVar11 + -1) == 0.0)" ( (binary_expression "(double)((long)dVar11 + -1) == 0.0" (cast_expression "(double)((long)dVar11 + -1)" ( (type_descriptor "double" primitive_type) ) (parenthesized_expression "((long)dVar11 + -1)" ( (binary_expression "(long)dVar11 + -1" (cast_expression "(long)dVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))) == number_literal) )) (compound_statement "{\n    FUN_001582a6(pdVar4);\n  }" { (expression_statement "FUN_001582a6(pdVar4);" (call_expression "FUN_001582a6(pdVar4)" identifier (argument_list "(pdVar4)" ( identifier ))) ;) })) (if_statement "if (dVar2 < 0.0) {\n    FUN_00157301("builtin.c",0xe1b);\n    uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);\n    FUN_00157844(dVar2,uVar9);\n  }" if (parenthesized_expression "(dVar2 < 0.0)" ( (binary_expression "dVar2 < 0.0" identifier < number_literal) )) (compound_statement "{\n    FUN_00157301("builtin.c",0xe1b);\n    uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);\n    FUN_00157844(dVar2,uVar9);\n  }" { (expression_statement "FUN_00157301("builtin.c",0xe1b);" (call_expression "FUN_00157301("builtin.c",0xe1b)" identifier (argument_list "("builtin.c",0xe1b)" ( (string_literal ""builtin.c"" " string_content ") , number_literal ))) ;) (expression_statement "uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);" (assignment_expression "uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5)" identifier = (call_expression "dcgettext(0,"compl(%f): negative value is not allowed",5)" identifier (argument_list "(0,"compl(%f): negative value is not allowed",5)" ( number_literal , (string_literal ""compl(%f): negative value is not allowed"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_00157844(dVar2,uVar9);" (call_expression "FUN_00157844(dVar2,uVar9)" identifier (argument_list "(dVar2,uVar9)" ( identifier , identifier ))) ;) })) (if_statement "if ((((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)) {\n    FUN_00157301("builtin.c",0xe1e);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*(code *)puVar5)(dVar2,uVar9);\n  }" if (parenthesized_expression "((((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2))" ( (binary_expression "(((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)" (parenthesized_expression "(((byte)DAT_0039c260 & 5) != 0)" ( (binary_expression "((byte)DAT_0039c260 & 5) != 0" (parenthesized_expression "((byte)DAT_0039c260 & 5)" ( (binary_expression "(byte)DAT_0039c260 & 5" (cast_expression "(byte)DAT_0039c260" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) != number_literal) )) && (parenthesized_expression "(dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)" ( (comma_expression "dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2" (assignment_expression "dVar11 = (double)FUN_0011a758(dVar2)" identifier = (cast_expression "(double)FUN_0011a758(dVar2)" ( (type_descriptor "double" primitive_type) ) (call_expression "FUN_0011a758(dVar2)" identifier (argument_list "(dVar2)" ( identifier ))))) , (binary_expression "dVar11 != dVar2" identifier != identifier)) ))) )) (compound_statement "{\n    FUN_00157301("builtin.c",0xe1e);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*(code *)puVar5)(dVar2,uVar9);\n  }" { (expression_statement "FUN_00157301("builtin.c",0xe1e);" (call_expression "FUN_00157301("builtin.c",0xe1e)" identifier (argument_list "("builtin.c",0xe1e)" ( (string_literal ""builtin.c"" " string_content ") , number_literal ))) ;) (expression_statement "puVar5 = PTR_FUN_00396d98;" (assignment_expression "puVar5 = PTR_FUN_00396d98" identifier = identifier) ;) (expression_statement "uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);" (assignment_expression "uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5)" identifier = (call_expression "dcgettext(0,"compl(%f): fractional value will be truncated",5)" identifier (argument_list "(0,"compl(%f): fractional value will be truncated",5)" ( number_literal , (string_literal ""compl(%f): fractional value will be truncated"" " string_content ") , number_literal )))) ;) (expression_statement "(*(code *)puVar5)(dVar2,uVar9);" (call_expression "(*(code *)puVar5)(dVar2,uVar9)" (parenthesized_expression "(*(code *)puVar5)" ( (pointer_expression "*(code *)puVar5" * (cast_expression "(code *)puVar5" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dVar2,uVar9)" ( identifier , identifier ))) ;) })) (if_statement "if (DAT_0017c370 <= dVar2) {\n    uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;\n  }\n  else {\n    uVar10 = (ulong)dVar2;\n  }" if (parenthesized_expression "(DAT_0017c370 <= dVar2)" ( (binary_expression "DAT_0017c370 <= dVar2" identifier <= identifier) )) (compound_statement "{\n    uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;\n  }" { (expression_statement "uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;" (assignment_expression "uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000" identifier = (binary_expression "(long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000" (cast_expression "(long)(dVar2 - DAT_0017c370)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(dVar2 - DAT_0017c370)" ( (binary_expression "dVar2 - DAT_0017c370" identifier - identifier) ))) ^ number_literal)) ;) }) (else_clause "else {\n    uVar10 = (ulong)dVar2;\n  }" else (compound_statement "{\n    uVar10 = (ulong)dVar2;\n  }" { (expression_statement "uVar10 = (ulong)dVar2;" (assignment_expression "uVar10 = (ulong)dVar2" identifier = (cast_expression "(ulong)dVar2" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }))) (expression_statement "FUN_0011993b(~uVar10);" (call_expression "FUN_0011993b(~uVar10)" identifier (argument_list "(~uVar10)" ( (unary_expression "~uVar10" ~ identifier) ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) && (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))))) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;))) }))) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (string_literal " string_content ") ))) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))))) ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT ))))) , (binary_expression IDENT != IDENT)) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) ^ LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (call_expression IDENT (argument_list ( (unary_expression ~ IDENT) ))) ;) (return_statement return ;) })))
(function_definition "void FUN_001211bb(void)\n\n{\n  undefined8 *puVar1;\n  double dVar2;\n  uint uVar3;\n  double *pdVar4;\n  undefined *puVar5;\n  double *pdVar6;\n  undefined8 uVar7;\n  double *pdVar8;\n  undefined8 uVar9;\n  ulong uVar10;\n  double dVar11;\n  \n  puVar1 = DAT_00399c70 + -1;\n  pdVar4 = (double *)*DAT_00399c70;\n  DAT_00399c70 = puVar1;\n  if (*(int *)(pdVar4 + 9) == 5) {\n    FUN_00157301("awk.h",0x72b);\n    uVar9 = FUN_0010a1ed(pdVar4);\n    uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00157844(uVar7,uVar9);\n  }\n  pdVar6 = pdVar4;\n  if (((byte)DAT_0039c260 & 5) != 0) {\n    uVar3 = *(uint *)((long)pdVar4 + 0x4c);\n    if ((uVar3 & 0x28) == 0x20) {\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }\n    FUN_00157301("builtin.c",0xe16);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"%s: received non-numeric argument",5);\n    (*(code *)puVar5)(uVar9,"compl");\n  }\nLAB_001211ed:\n  if ((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0) {\n    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n  }\nLAB_00121200:\n  dVar2 = *pdVar6;\n  dVar11 = pdVar4[3];\n  pdVar4[3] = (double)((long)dVar11 + -1);\n  if ((double)((long)dVar11 + -1) == 0.0) {\n    FUN_001582a6(pdVar4);\n  }\n  if (dVar2 < 0.0) {\n    FUN_00157301("builtin.c",0xe1b);\n    uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);\n    FUN_00157844(dVar2,uVar9);\n  }\n  if ((((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)) {\n    FUN_00157301("builtin.c",0xe1e);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*(code *)puVar5)(dVar2,uVar9);\n  }\n  if (DAT_0017c370 <= dVar2) {\n    uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;\n  }\n  else {\n    uVar10 = (ulong)dVar2;\n  }\n  FUN_0011993b(~uVar10);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001211bb(void)" (identifier "FUN_001211bb") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  undefined8 *puVar1;\n  double dVar2;\n  uint uVar3;\n  double *pdVar4;\n  undefined *puVar5;\n  double *pdVar6;\n  undefined8 uVar7;\n  double *pdVar8;\n  undefined8 uVar9;\n  ulong uVar10;\n  double dVar11;\n  \n  puVar1 = DAT_00399c70 + -1;\n  pdVar4 = (double *)*DAT_00399c70;\n  DAT_00399c70 = puVar1;\n  if (*(int *)(pdVar4 + 9) == 5) {\n    FUN_00157301("awk.h",0x72b);\n    uVar9 = FUN_0010a1ed(pdVar4);\n    uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00157844(uVar7,uVar9);\n  }\n  pdVar6 = pdVar4;\n  if (((byte)DAT_0039c260 & 5) != 0) {\n    uVar3 = *(uint *)((long)pdVar4 + 0x4c);\n    if ((uVar3 & 0x28) == 0x20) {\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }\n    FUN_00157301("builtin.c",0xe16);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"%s: received non-numeric argument",5);\n    (*(code *)puVar5)(uVar9,"compl");\n  }\nLAB_001211ed:\n  if ((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0) {\n    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n  }\nLAB_00121200:\n  dVar2 = *pdVar6;\n  dVar11 = pdVar4[3];\n  pdVar4[3] = (double)((long)dVar11 + -1);\n  if ((double)((long)dVar11 + -1) == 0.0) {\n    FUN_001582a6(pdVar4);\n  }\n  if (dVar2 < 0.0) {\n    FUN_00157301("builtin.c",0xe1b);\n    uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);\n    FUN_00157844(dVar2,uVar9);\n  }\n  if ((((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)) {\n    FUN_00157301("builtin.c",0xe1e);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*(code *)puVar5)(dVar2,uVar9);\n  }\n  if (DAT_0017c370 <= dVar2) {\n    uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;\n  }\n  else {\n    uVar10 = (ulong)dVar2;\n  }\n  FUN_0011993b(~uVar10);\n  return;\n}" ({ "{") (declaration "undefined8 *puVar1;" (type_identifier "undefined8") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "double dVar2;" (primitive_type "double") (identifier "dVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "double *pdVar4;" (primitive_type "double") (pointer_declarator "*pdVar4" (* "*") (identifier "pdVar4")) (; ";")) (declaration "undefined *puVar5;" (type_identifier "undefined") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "double *pdVar6;" (primitive_type "double") (pointer_declarator "*pdVar6" (* "*") (identifier "pdVar6")) (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "double *pdVar8;" (primitive_type "double") (pointer_declarator "*pdVar8" (* "*") (identifier "pdVar8")) (; ";")) (declaration "undefined8 uVar9;" (type_identifier "undefined8") (identifier "uVar9") (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "double dVar11;" (primitive_type "double") (identifier "dVar11") (; ";")) (expression_statement "puVar1 = DAT_00399c70 + -1;" (assignment_expression "puVar1 = DAT_00399c70 + -1" (identifier "puVar1") (= "=") (binary_expression "DAT_00399c70 + -1" (identifier "DAT_00399c70") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "pdVar4 = (double *)*DAT_00399c70;" (assignment_expression "pdVar4 = (double *)*DAT_00399c70" (identifier "pdVar4") (= "=") (cast_expression "(double *)*DAT_00399c70" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*DAT_00399c70" (* "*") (identifier "DAT_00399c70")))) (; ";")) (expression_statement "DAT_00399c70 = puVar1;" (assignment_expression "DAT_00399c70 = puVar1" (identifier "DAT_00399c70") (= "=") (identifier "puVar1")) (; ";")) (if_statement "if (*(int *)(pdVar4 + 9) == 5) {\n    FUN_00157301("awk.h",0x72b);\n    uVar9 = FUN_0010a1ed(pdVar4);\n    uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00157844(uVar7,uVar9);\n  }" (if "if") (parenthesized_expression "(*(int *)(pdVar4 + 9) == 5)" (( "(") (binary_expression "*(int *)(pdVar4 + 9) == 5" (pointer_expression "*(int *)(pdVar4 + 9)" (* "*") (cast_expression "(int *)(pdVar4 + 9)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pdVar4 + 9)" (( "(") (binary_expression "pdVar4 + 9" (identifier "pdVar4") (+ "+") (number_literal "9")) () ")")))) (== "==") (number_literal "5")) () ")")) (compound_statement "{\n    FUN_00157301("awk.h",0x72b);\n    uVar9 = FUN_0010a1ed(pdVar4);\n    uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n    FUN_00157844(uVar7,uVar9);\n  }" ({ "{") (expression_statement "FUN_00157301("awk.h",0x72b);" (call_expression "FUN_00157301("awk.h",0x72b)" (identifier "FUN_00157301") (argument_list "("awk.h",0x72b)" (( "(") (string_literal ""awk.h"" (" """) (string_content "awk.h") (" """)) (, ",") (number_literal "0x72b") () ")"))) (; ";")) (expression_statement "uVar9 = FUN_0010a1ed(pdVar4);" (assignment_expression "uVar9 = FUN_0010a1ed(pdVar4)" (identifier "uVar9") (= "=") (call_expression "FUN_0010a1ed(pdVar4)" (identifier "FUN_0010a1ed") (argument_list "(pdVar4)" (( "(") (identifier "pdVar4") () ")")))) (; ";")) (expression_statement "uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" (identifier "uVar7") (= "=") (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" (identifier "dcgettext") (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" (( "(") (number_literal "0") (, ",") (string_literal ""attempt to use array `%s\' in a scalar context"" (" """) (string_content "attempt to use array `%s") (escape_sequence "\'") (string_content " in a scalar context") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00157844(uVar7,uVar9);" (call_expression "FUN_00157844(uVar7,uVar9)" (identifier "FUN_00157844") (argument_list "(uVar7,uVar9)" (( "(") (identifier "uVar7") (, ",") (identifier "uVar9") () ")"))) (; ";")) (} "}"))) (expression_statement "pdVar6 = pdVar4;" (assignment_expression "pdVar6 = pdVar4" (identifier "pdVar6") (= "=") (identifier "pdVar4")) (; ";")) (if_statement "if (((byte)DAT_0039c260 & 5) != 0) {\n    uVar3 = *(uint *)((long)pdVar4 + 0x4c);\n    if ((uVar3 & 0x28) == 0x20) {\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }\n    FUN_00157301("builtin.c",0xe16);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"%s: received non-numeric argument",5);\n    (*(code *)puVar5)(uVar9,"compl");\n  }" (if "if") (parenthesized_expression "(((byte)DAT_0039c260 & 5) != 0)" (( "(") (binary_expression "((byte)DAT_0039c260 & 5) != 0" (parenthesized_expression "((byte)DAT_0039c260 & 5)" (( "(") (binary_expression "(byte)DAT_0039c260 & 5" (cast_expression "(byte)DAT_0039c260" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "DAT_0039c260")) (& "&") (number_literal "5")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar3 = *(uint *)((long)pdVar4 + 0x4c);\n    if ((uVar3 & 0x28) == 0x20) {\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }\n    FUN_00157301("builtin.c",0xe16);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"%s: received non-numeric argument",5);\n    (*(code *)puVar5)(uVar9,"compl");\n  }" ({ "{") (expression_statement "uVar3 = *(uint *)((long)pdVar4 + 0x4c);" (assignment_expression "uVar3 = *(uint *)((long)pdVar4 + 0x4c)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)((long)pdVar4 + 0x4c)" (* "*") (cast_expression "(uint *)((long)pdVar4 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pdVar4 + 0x4c)" (( "(") (binary_expression "(long)pdVar4 + 0x4c" (cast_expression "(long)pdVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pdVar4")) (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (if_statement "if ((uVar3 & 0x28) == 0x20) {\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }\n    else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }" (if "if") (parenthesized_expression "((uVar3 & 0x28) == 0x20)" (( "(") (binary_expression "(uVar3 & 0x28) == 0x20" (parenthesized_expression "(uVar3 & 0x28)" (( "(") (binary_expression "uVar3 & 0x28" (identifier "uVar3") (& "&") (number_literal "0x28")) () ")")) (== "==") (number_literal "0x20")) () ")")) (compound_statement "{\n      if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }\n      if ((uVar3 & 0x10) != 0) goto LAB_00121200;\n    }" ({ "{") (if_statement "if ((uVar3 & 8) == 0) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }" (if "if") (parenthesized_expression "((uVar3 & 8) == 0)" (( "(") (binary_expression "(uVar3 & 8) == 0" (parenthesized_expression "(uVar3 & 8)" (( "(") (binary_expression "uVar3 & 8" (identifier "uVar3") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n        goto LAB_001212f8;\n      }" ({ "{") (expression_statement "pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);" (assignment_expression "pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4)" (identifier "pdVar8") (= "=") (cast_expression "(double *)(*(code *)PTR_FUN_00396e50)(pdVar4)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_FUN_00396e50)(pdVar4)" (parenthesized_expression "(*(code *)PTR_FUN_00396e50)" (( "(") (pointer_expression "*(code *)PTR_FUN_00396e50" (* "*") (cast_expression "(code *)PTR_FUN_00396e50" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_00396e50"))) () ")")) (argument_list "(pdVar4)" (( "(") (identifier "pdVar4") () ")"))))) (; ";")) (goto_statement "goto LAB_001212f8;" (goto "goto") (statement_identifier "LAB_001212f8") (; ";")) (} "}"))) (if_statement "if ((uVar3 & 0x10) != 0) goto LAB_00121200;" (if "if") (parenthesized_expression "((uVar3 & 0x10) != 0)" (( "(") (binary_expression "(uVar3 & 0x10) != 0" (parenthesized_expression "(uVar3 & 0x10)" (( "(") (binary_expression "uVar3 & 0x10" (identifier "uVar3") (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00121200;" (goto "goto") (statement_identifier "LAB_00121200") (; ";"))) (} "}")) (else_clause "else {\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }" (else "else") (compound_statement "{\n      pdVar8 = pdVar4;\n      if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }\nLAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;\n    }" ({ "{") (expression_statement "pdVar8 = pdVar4;" (assignment_expression "pdVar8 = pdVar4" (identifier "pdVar8") (= "=") (identifier "pdVar4")) (; ";")) (if_statement "if (((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }" (if "if") (parenthesized_expression "(((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4)))))))" (( "(") (binary_expression "((uVar3 & 0x100) != 0) &&\n         (((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))" (parenthesized_expression "((uVar3 & 0x100) != 0)" (( "(") (binary_expression "(uVar3 & 0x100) != 0" (parenthesized_expression "(uVar3 & 0x100)" (( "(") (binary_expression "uVar3 & 0x100" (identifier "uVar3") (& "&") (number_literal "0x100")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))" (( "(") (parenthesized_expression "((uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4)))))" (( "(") (binary_expression "(uVar3 & 4) == 0 ||\n          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))" (binary_expression "(uVar3 & 4) == 0" (parenthesized_expression "(uVar3 & 4)" (( "(") (binary_expression "uVar3 & 4" (identifier "uVar3") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))" (( "(") (parenthesized_expression "(*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4)))" (( "(") (binary_expression "*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))" (binary_expression "*(int *)(pdVar4 + 4) != -1" (pointer_expression "*(int *)(pdVar4 + 4)" (* "*") (cast_expression "(int *)(pdVar4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pdVar4 + 4)" (( "(") (binary_expression "pdVar4 + 4" (identifier "pdVar4") (+ "+") (number_literal "4")) () ")")))) (!= "!=") (number_literal "-1")) (&& "&&") (parenthesized_expression "(DAT_0039ddd4 != *(int *)(pdVar4 + 4))" (( "(") (binary_expression "DAT_0039ddd4 != *(int *)(pdVar4 + 4)" (identifier "DAT_0039ddd4") (!= "!=") (pointer_expression "*(int *)(pdVar4 + 4)" (* "*") (cast_expression "(int *)(pdVar4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pdVar4 + 4)" (( "(") (binary_expression "pdVar4 + 4" (identifier "pdVar4") (+ "+") (number_literal "4")) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);\n      }" ({ "{") (expression_statement "pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);" (assignment_expression "pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4)" (identifier "pdVar8") (= "=") (cast_expression "(double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4)" (parenthesized_expression "(*(code *)PTR_FUN_00396e48)" (( "(") (pointer_expression "*(code *)PTR_FUN_00396e48" (* "*") (cast_expression "(code *)PTR_FUN_00396e48" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_00396e48"))) () ")")) (argument_list "(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4)" (( "(") (identifier "PTR_DAT_00396da8") (, ",") (identifier "DAT_0039ddd4") (, ",") (identifier "pdVar4") () ")"))))) (; ";")) (} "}"))) (labeled_statement "LAB_001212f8:\n      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;" (statement_identifier "LAB_001212f8") (: ":") (if_statement "if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;" (if "if") (parenthesized_expression "((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0)" (( "(") (binary_expression "(*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0" (parenthesized_expression "(*(byte *)((long)pdVar8 + 0x4c) & 0x10)" (( "(") (binary_expression "*(byte *)((long)pdVar8 + 0x4c) & 0x10" (pointer_expression "*(byte *)((long)pdVar8 + 0x4c)" (* "*") (cast_expression "(byte *)((long)pdVar8 + 0x4c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pdVar8 + 0x4c)" (( "(") (binary_expression "(long)pdVar8 + 0x4c" (cast_expression "(long)pdVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pdVar8")) (+ "+") (number_literal "0x4c")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001211ed;" (goto "goto") (statement_identifier "LAB_001211ed") (; ";")))) (} "}")))) (expression_statement "FUN_00157301("builtin.c",0xe16);" (call_expression "FUN_00157301("builtin.c",0xe16)" (identifier "FUN_00157301") (argument_list "("builtin.c",0xe16)" (( "(") (string_literal ""builtin.c"" (" """) (string_content "builtin.c") (" """)) (, ",") (number_literal "0xe16") () ")"))) (; ";")) (expression_statement "puVar5 = PTR_FUN_00396d98;" (assignment_expression "puVar5 = PTR_FUN_00396d98" (identifier "puVar5") (= "=") (identifier "PTR_FUN_00396d98")) (; ";")) (expression_statement "uVar9 = dcgettext(0,"%s: received non-numeric argument",5);" (assignment_expression "uVar9 = dcgettext(0,"%s: received non-numeric argument",5)" (identifier "uVar9") (= "=") (call_expression "dcgettext(0,"%s: received non-numeric argument",5)" (identifier "dcgettext") (argument_list "(0,"%s: received non-numeric argument",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%s: received non-numeric argument"" (" """) (string_content "%s: received non-numeric argument") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "(*(code *)puVar5)(uVar9,"compl");" (call_expression "(*(code *)puVar5)(uVar9,"compl")" (parenthesized_expression "(*(code *)puVar5)" (( "(") (pointer_expression "*(code *)puVar5" (* "*") (cast_expression "(code *)puVar5" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar5"))) () ")")) (argument_list "(uVar9,"compl")" (( "(") (identifier "uVar9") (, ",") (string_literal ""compl"" (" """) (string_content "compl") (" """)) () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_001211ed:\n  if ((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0) {\n    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n  }" (statement_identifier "LAB_001211ed") (: ":") (if_statement "if ((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0) {\n    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n  }" (if "if") (parenthesized_expression "((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0)" (( "(") (binary_expression "(*(byte *)((long)pdVar4 + 0x4c) & 8) == 0" (parenthesized_expression "(*(byte *)((long)pdVar4 + 0x4c) & 8)" (( "(") (binary_expression "*(byte *)((long)pdVar4 + 0x4c) & 8" (pointer_expression "*(byte *)((long)pdVar4 + 0x4c)" (* "*") (cast_expression "(byte *)((long)pdVar4 + 0x4c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pdVar4 + 0x4c)" (( "(") (binary_expression "(long)pdVar4 + 0x4c" (cast_expression "(long)pdVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pdVar4")) (+ "+") (number_literal "0x4c")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);\n  }" ({ "{") (expression_statement "pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);" (assignment_expression "pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4)" (identifier "pdVar6") (= "=") (cast_expression "(double *)(*(code *)PTR_FUN_00396e50)(pdVar4)" (( "(") (type_descriptor "double *" (primitive_type "double") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_FUN_00396e50)(pdVar4)" (parenthesized_expression "(*(code *)PTR_FUN_00396e50)" (( "(") (pointer_expression "*(code *)PTR_FUN_00396e50" (* "*") (cast_expression "(code *)PTR_FUN_00396e50" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_00396e50"))) () ")")) (argument_list "(pdVar4)" (( "(") (identifier "pdVar4") () ")"))))) (; ";")) (} "}")))) (labeled_statement "LAB_00121200:\n  dVar2 = *pdVar6;" (statement_identifier "LAB_00121200") (: ":") (expression_statement "dVar2 = *pdVar6;" (assignment_expression "dVar2 = *pdVar6" (identifier "dVar2") (= "=") (pointer_expression "*pdVar6" (* "*") (identifier "pdVar6"))) (; ";"))) (expression_statement "dVar11 = pdVar4[3];" (assignment_expression "dVar11 = pdVar4[3]" (identifier "dVar11") (= "=") (subscript_expression "pdVar4[3]" (identifier "pdVar4") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "pdVar4[3] = (double)((long)dVar11 + -1);" (assignment_expression "pdVar4[3] = (double)((long)dVar11 + -1)" (subscript_expression "pdVar4[3]" (identifier "pdVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(double)((long)dVar11 + -1)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((long)dVar11 + -1)" (( "(") (binary_expression "(long)dVar11 + -1" (cast_expression "(long)dVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "dVar11")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (if_statement "if ((double)((long)dVar11 + -1) == 0.0) {\n    FUN_001582a6(pdVar4);\n  }" (if "if") (parenthesized_expression "((double)((long)dVar11 + -1) == 0.0)" (( "(") (binary_expression "(double)((long)dVar11 + -1) == 0.0" (cast_expression "(double)((long)dVar11 + -1)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (parenthesized_expression "((long)dVar11 + -1)" (( "(") (binary_expression "(long)dVar11 + -1" (cast_expression "(long)dVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "dVar11")) (+ "+") (number_literal "-1")) () ")"))) (== "==") (number_literal "0.0")) () ")")) (compound_statement "{\n    FUN_001582a6(pdVar4);\n  }" ({ "{") (expression_statement "FUN_001582a6(pdVar4);" (call_expression "FUN_001582a6(pdVar4)" (identifier "FUN_001582a6") (argument_list "(pdVar4)" (( "(") (identifier "pdVar4") () ")"))) (; ";")) (} "}"))) (if_statement "if (dVar2 < 0.0) {\n    FUN_00157301("builtin.c",0xe1b);\n    uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);\n    FUN_00157844(dVar2,uVar9);\n  }" (if "if") (parenthesized_expression "(dVar2 < 0.0)" (( "(") (binary_expression "dVar2 < 0.0" (identifier "dVar2") (< "<") (number_literal "0.0")) () ")")) (compound_statement "{\n    FUN_00157301("builtin.c",0xe1b);\n    uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);\n    FUN_00157844(dVar2,uVar9);\n  }" ({ "{") (expression_statement "FUN_00157301("builtin.c",0xe1b);" (call_expression "FUN_00157301("builtin.c",0xe1b)" (identifier "FUN_00157301") (argument_list "("builtin.c",0xe1b)" (( "(") (string_literal ""builtin.c"" (" """) (string_content "builtin.c") (" """)) (, ",") (number_literal "0xe1b") () ")"))) (; ";")) (expression_statement "uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);" (assignment_expression "uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5)" (identifier "uVar9") (= "=") (call_expression "dcgettext(0,"compl(%f): negative value is not allowed",5)" (identifier "dcgettext") (argument_list "(0,"compl(%f): negative value is not allowed",5)" (( "(") (number_literal "0") (, ",") (string_literal ""compl(%f): negative value is not allowed"" (" """) (string_content "compl(%f): negative value is not allowed") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00157844(dVar2,uVar9);" (call_expression "FUN_00157844(dVar2,uVar9)" (identifier "FUN_00157844") (argument_list "(dVar2,uVar9)" (( "(") (identifier "dVar2") (, ",") (identifier "uVar9") () ")"))) (; ";")) (} "}"))) (if_statement "if ((((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)) {\n    FUN_00157301("builtin.c",0xe1e);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*(code *)puVar5)(dVar2,uVar9);\n  }" (if "if") (parenthesized_expression "((((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2))" (( "(") (binary_expression "(((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)" (parenthesized_expression "(((byte)DAT_0039c260 & 5) != 0)" (( "(") (binary_expression "((byte)DAT_0039c260 & 5) != 0" (parenthesized_expression "((byte)DAT_0039c260 & 5)" (( "(") (binary_expression "(byte)DAT_0039c260 & 5" (cast_expression "(byte)DAT_0039c260" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "DAT_0039c260")) (& "&") (number_literal "5")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)" (( "(") (comma_expression "dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2" (assignment_expression "dVar11 = (double)FUN_0011a758(dVar2)" (identifier "dVar11") (= "=") (cast_expression "(double)FUN_0011a758(dVar2)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "FUN_0011a758(dVar2)" (identifier "FUN_0011a758") (argument_list "(dVar2)" (( "(") (identifier "dVar2") () ")"))))) (, ",") (binary_expression "dVar11 != dVar2" (identifier "dVar11") (!= "!=") (identifier "dVar2"))) () ")"))) () ")")) (compound_statement "{\n    FUN_00157301("builtin.c",0xe1e);\n    puVar5 = PTR_FUN_00396d98;\n    uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);\n    (*(code *)puVar5)(dVar2,uVar9);\n  }" ({ "{") (expression_statement "FUN_00157301("builtin.c",0xe1e);" (call_expression "FUN_00157301("builtin.c",0xe1e)" (identifier "FUN_00157301") (argument_list "("builtin.c",0xe1e)" (( "(") (string_literal ""builtin.c"" (" """) (string_content "builtin.c") (" """)) (, ",") (number_literal "0xe1e") () ")"))) (; ";")) (expression_statement "puVar5 = PTR_FUN_00396d98;" (assignment_expression "puVar5 = PTR_FUN_00396d98" (identifier "puVar5") (= "=") (identifier "PTR_FUN_00396d98")) (; ";")) (expression_statement "uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);" (assignment_expression "uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5)" (identifier "uVar9") (= "=") (call_expression "dcgettext(0,"compl(%f): fractional value will be truncated",5)" (identifier "dcgettext") (argument_list "(0,"compl(%f): fractional value will be truncated",5)" (( "(") (number_literal "0") (, ",") (string_literal ""compl(%f): fractional value will be truncated"" (" """) (string_content "compl(%f): fractional value will be truncated") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "(*(code *)puVar5)(dVar2,uVar9);" (call_expression "(*(code *)puVar5)(dVar2,uVar9)" (parenthesized_expression "(*(code *)puVar5)" (( "(") (pointer_expression "*(code *)puVar5" (* "*") (cast_expression "(code *)puVar5" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar5"))) () ")")) (argument_list "(dVar2,uVar9)" (( "(") (identifier "dVar2") (, ",") (identifier "uVar9") () ")"))) (; ";")) (} "}"))) (if_statement "if (DAT_0017c370 <= dVar2) {\n    uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;\n  }\n  else {\n    uVar10 = (ulong)dVar2;\n  }" (if "if") (parenthesized_expression "(DAT_0017c370 <= dVar2)" (( "(") (binary_expression "DAT_0017c370 <= dVar2" (identifier "DAT_0017c370") (<= "<=") (identifier "dVar2")) () ")")) (compound_statement "{\n    uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;\n  }" ({ "{") (expression_statement "uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;" (assignment_expression "uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000" (identifier "uVar10") (= "=") (binary_expression "(long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000" (cast_expression "(long)(dVar2 - DAT_0017c370)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(dVar2 - DAT_0017c370)" (( "(") (binary_expression "dVar2 - DAT_0017c370" (identifier "dVar2") (- "-") (identifier "DAT_0017c370")) () ")"))) (^ "^") (number_literal "0x8000000000000000"))) (; ";")) (} "}")) (else_clause "else {\n    uVar10 = (ulong)dVar2;\n  }" (else "else") (compound_statement "{\n    uVar10 = (ulong)dVar2;\n  }" ({ "{") (expression_statement "uVar10 = (ulong)dVar2;" (assignment_expression "uVar10 = (ulong)dVar2" (identifier "uVar10") (= "=") (cast_expression "(ulong)dVar2" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "dVar2"))) (; ";")) (} "}")))) (expression_statement "FUN_0011993b(~uVar10);" (call_expression "FUN_0011993b(~uVar10)" (identifier "FUN_0011993b") (argument_list "(~uVar10)" (( "(") (unary_expression "~uVar10" (~ "~") (identifier "uVar10")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

type_1 * function_1(type_2 nargs)

{
  type_3 *pSVar1;
  double var_12;
  type_4 var_7;
  type_2 var_8;
  type_5 *p_Var4;
  type_1 *pNVar5;
  long var_10;
  type_1 *pNVar7;
  char *mesg;
  type_1 *pNVar8;
  char *pcVar9;
  type_6 uVar10;
  double var_14;
  
  pSVar1 = var_1 + -1;
  pNVar7 = var_1->rptr;
  var_1 = pSVar1;
  if (pNVar7->type == var_2) {
    var_3("awk.h",L'ܫ');
    pcVar9 = var_4(pNVar7);
    mesg = (char *)var_5(0,"attempt to use array `%s\' in a scalar context",5);
    var_6(mesg,pcVar9);
  }
  pNVar5 = pNVar7;
  if (((type_7)do_flags & 5) != 0) {
    var_7 = pNVar7->flags;
    if ((var_7 & 0x28) == 0x20) {
      if ((var_7 & 8) == 0) {
        pNVar8 = (*str2number)(pNVar7);
        goto LAB_001212f8;
      }
      if ((var_7 & 0x10) != 0) goto LAB_00121200;
    }
    else {
      pNVar8 = pNVar7;
      if (((var_7 & 0x100) != 0) &&
         (((var_7 & 4) == 0 ||
          ((var_8 = (pNVar7->sub).val.idx, var_8 != L'\xffffffff' && (var_9 != var_8)))))) {
        pNVar8 = (*format_val)(CONVFMT,var_9,pNVar7);
      }
LAB_001212f8:
      if ((pNVar8->flags & 0x10) != 0) goto LAB_001211ed;
    }
    var_3("builtin.c",L'ถ');
    p_Var4 = lintfunc;
    pcVar9 = (char *)var_5(0,"%s: received non-numeric argument",5);
    (*p_Var4)(pcVar9,"compl");
  }
LAB_001211ed:
  if ((pNVar7->flags & 8) == 0) {
    pNVar5 = (*str2number)(pNVar7);
  }
LAB_00121200:
  var_12 = (pNVar5->sub).val.fltnum;
  var_10 = (pNVar7->sub).val.sref + -1;
  (pNVar7->sub).val.sref = var_10;
  if (var_10 == 0) {
    var_11(pNVar7);
  }
  if (var_12 < 0.0) {
    var_3("builtin.c",L'ป');
    pcVar9 = (char *)var_5(0,"compl(%f): negative value is not allowed",5);
    var_6(pcVar9,var_12);
  }
  if ((((type_7)do_flags & 5) != 0) && (var_14 = var_13(var_12), var_14 != var_12)) {
    var_3("builtin.c",L'พ');
    p_Var4 = lintfunc;
    pcVar9 = (char *)var_5(0,"compl(%f): fractional value will be truncated",5);
    (*p_Var4)(pcVar9,var_12);
  }
  if (var_15 <= var_12) {
    uVar10 = (long)(var_12 - var_15) ^ 0x8000000000000000;
  }
  else {
    uVar10 = (type_6)var_12;
  }
  pNVar7 = var_16(~uVar10);
  return pNVar7;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier)))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (number_literal))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (string_literal (string_content))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (identifier) arguments: (argument_list (identifier))))) right: (binary_expression left: (identifier) right: (identifier)))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (number_literal))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (unary_expression argument: (identifier))))) (return_statement))))

void MASKED(void)

{
  undefined8 *puVar1;
  double dVar2;
  uint uVar3;
  double *pdVar4;
  undefined *puVar5;
  double *pdVar6;
  undefined8 uVar7;
  double *pdVar8;
  undefined8 uVar9;
  ulong uVar10;
  double dVar11;
  
  puVar1 = DAT_00399c70 + -1;
  pdVar4 = (double *)*DAT_00399c70;
  DAT_00399c70 = puVar1;
  if (*(int *)(pdVar4 + 9) == 5) {
    FUN_00157301("awk.h",0x72b);
    uVar9 = FUN_0010a1ed(pdVar4);
    uVar7 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
    FUN_00157844(uVar7,uVar9);
  }
  pdVar6 = pdVar4;
  if (((byte)DAT_0039c260 & 5) != 0) {
    uVar3 = *(uint *)((long)pdVar4 + 0x4c);
    if ((uVar3 & 0x28) == 0x20) {
      if ((uVar3 & 8) == 0) {
        pdVar8 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);
        goto LAB_001212f8;
      }
      if ((uVar3 & 0x10) != 0) goto LAB_00121200;
    }
    else {
      pdVar8 = pdVar4;
      if (((uVar3 & 0x100) != 0) &&
         (((uVar3 & 4) == 0 ||
          ((*(int *)(pdVar4 + 4) != -1 && (DAT_0039ddd4 != *(int *)(pdVar4 + 4))))))) {
        pdVar8 = (double *)(*(code *)PTR_FUN_00396e48)(PTR_DAT_00396da8,DAT_0039ddd4,pdVar4);
      }
LAB_001212f8:
      if ((*(byte *)((long)pdVar8 + 0x4c) & 0x10) != 0) goto LAB_001211ed;
    }
    FUN_00157301("builtin.c",0xe16);
    puVar5 = PTR_FUN_00396d98;
    uVar9 = dcgettext(0,"%s: received non-numeric argument",5);
    (*(code *)puVar5)(uVar9,"compl");
  }
LAB_001211ed:
  if ((*(byte *)((long)pdVar4 + 0x4c) & 8) == 0) {
    pdVar6 = (double *)(*(code *)PTR_FUN_00396e50)(pdVar4);
  }
LAB_00121200:
  dVar2 = *pdVar6;
  dVar11 = pdVar4[3];
  pdVar4[3] = (double)((long)dVar11 + -1);
  if ((double)((long)dVar11 + -1) == 0.0) {
    FUN_001582a6(pdVar4);
  }
  if (dVar2 < 0.0) {
    FUN_00157301("builtin.c",0xe1b);
    uVar9 = dcgettext(0,"compl(%f): negative value is not allowed",5);
    FUN_00157844(dVar2,uVar9);
  }
  if ((((byte)DAT_0039c260 & 5) != 0) && (dVar11 = (double)FUN_0011a758(dVar2), dVar11 != dVar2)) {
    FUN_00157301("builtin.c",0xe1e);
    puVar5 = PTR_FUN_00396d98;
    uVar9 = dcgettext(0,"compl(%f): fractional value will be truncated",5);
    (*(code *)puVar5)(dVar2,uVar9);
  }
  if (DAT_0017c370 <= dVar2) {
    uVar10 = (long)(dVar2 - DAT_0017c370) ^ 0x8000000000000000;
  }
  else {
    uVar10 = (ulong)dVar2;
  }
  FUN_0011993b(~uVar10);
  return;
}

