
int __regparm3 sqlite3VdbeMemCast(Mem *pMem,u8 aff,u8 encoding)

{
  double dVar1;
  longlong lVar2;
  int iVar3;
  byte enc;
  ushort uVar4;
  int iVar5;
  char *z;
  uint uVar6;
  int in_GS_OFFSET;
  i64 iVar7;
  MemValue MVar8;
  int in_stack_ffffffa8;
  u8 in_stack_ffffffac;
  int iStack_40;
  sqlite3_int64 ix;
  int local_24;
  int iStack_20;
  double r2;
  
  iVar3 = *(int *)(in_GS_OFFSET + 0x14);
  uVar4 = pMem->flags;
  if ((uVar4 & 1) != 0) goto LAB_00044d60;
  if (aff != 'C') {
    if (aff < 0x44) {
      if (aff != 'A') goto LAB_00044e58;
      if ((uVar4 & 0x10) != 0) {
        pMem->flags = uVar4 & 0x3e50;
        iVar5 = 0;
        goto LAB_00044d62;
      }
      applyAffinity(pMem,'B',encoding);
      if ((pMem->flags & 2) != 0) {
        pMem->flags = pMem->flags & 0x3e40 | 0x10;
        iVar5 = 0;
        goto LAB_00044d62;
      }
    }
    else if (aff == 'D') {
      iVar7 = sqlite3VdbeIntValue(pMem);
      (pMem->u).i = iVar7;
      pMem->flags = pMem->flags & 0x3e40 | 4;
    }
    else {
      if (aff == 'E') {
        if ((uVar4 & 8) == 0) {
          if ((uVar4 & 0x24) == 0) {
            if ((uVar4 & 0x12) == 0) {
              MVar8.r = 0.0;
            }
            else {
              MVar8.r = memRealValue(pMem);
              uVar4 = pMem->flags;
            }
          }
          else {
            MVar8.r = (double)(pMem->u).i;
          }
        }
        else {
          MVar8 = pMem->u;
        }
        (pMem->u).r = (double)MVar8;
        pMem->flags = uVar4 & 0x3e40 | 8;
        iVar5 = 0;
        goto LAB_00044d62;
      }
LAB_00044e58:
      pMem->flags = uVar4 | uVar4 >> 3 & 2;
      applyAffinity(pMem,'B',encoding);
      uVar4 = pMem->flags;
      pMem->flags = uVar4 & 0xbfc3;
      if (((uVar4 & 2) != 0) && (encoding != pMem->enc)) {
        iVar5 = sqlite3VdbeMemTranslate(pMem,encoding);
        goto LAB_00044d62;
      }
    }
LAB_00044d60:
    iVar5 = 0;
    goto LAB_00044d62;
  }
  if ((uVar4 & 0x2d) == 0) {
    enc = pMem->enc;
    z = pMem->z;
    (pMem->u).r = 0.0;
    if (pMem->n == 0) {
LAB_00044d9e:
      iVar5 = sqlite3Atoi64(z,(i64 *)(uint)enc,in_stack_ffffffa8,in_stack_ffffffac);
      if (1 < iVar5) goto LAB_00044db7;
      lVar2 = CONCAT44(ix._4_4_,(undefined4)ix);
    }
    else {
      uVar6 = sqlite3AtoF(z,(double *)pMem,pMem->n,enc);
      if (uVar6 < 2) {
        enc = pMem->enc;
        z = pMem->z;
        goto LAB_00044d9e;
      }
LAB_00044db7:
      dVar1 = (pMem->u).r;
      lVar2 = (longlong)ROUND(dVar1);
      iStack_40 = (int)((ulonglong)lVar2 >> 0x20);
      if (dVar1 != 0.0) {
        r2._0_4_ = SUB84((double)lVar2,0);
        local_24 = SUB84(dVar1,0);
        if (local_24 == r2._0_4_) {
          r2._4_4_ = (int)((ulonglong)(double)lVar2 >> 0x20);
          iStack_20 = (int)((ulonglong)dVar1 >> 0x20);
          if ((iStack_20 == r2._4_4_) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;
        }
        uVar4 = pMem->flags & 0x3e40 | 8;
        goto LAB_00044e23;
      }
    }
LAB_00044f38:
    (pMem->u).i = lVar2;
    uVar4 = pMem->flags & 0x3e40 | 4;
  }
LAB_00044e23:
  pMem->flags = uVar4 & 0xbfed;
  iVar5 = 0;
LAB_00044d62:
  if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {
    return iVar5;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



undefined4 __regparm3 FUN_00044cd0(double *param_1,byte param_2,char param_3)

{
  double dVar1;
  int iVar2;
  ushort uVar3;
  undefined4 uVar4;
  int iVar5;
  uint uVar6;
  undefined1 uVar7;
  int in_GS_OFFSET;
  longdouble lVar8;
  double dVar9;
  int iStack_40;
  undefined4 local_2c;
  undefined4 local_28;
  int local_24;
  int iStack_20;
  int local_1c;
  int iStack_18;
  
  iVar2 = *(int *)(in_GS_OFFSET + 0x14);
  uVar3 = *(ushort *)(param_1 + 1);
  if ((uVar3 & 1) != 0) goto LAB_00044d60;
  if (param_2 != 0x43) {
    if (param_2 < 0x44) {
      if (param_2 != 0x41) goto LAB_00044e58;
      if ((uVar3 & 0x10) != 0) {
        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;
        uVar4 = 0;
        goto LAB_00044d62;
      }
      FUN_00036fb0();
      if ((*(ushort *)(param_1 + 1) & 2) != 0) {
        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;
        uVar4 = 0;
        goto LAB_00044d62;
      }
    }
    else if (param_2 == 0x44) {
      dVar9 = (double)FUN_00024fb0();
      *param_1 = dVar9;
      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;
    }
    else {
      if (param_2 == 0x45) {
        if ((uVar3 & 8) == 0) {
          if ((uVar3 & 0x24) == 0) {
            if ((uVar3 & 0x12) == 0) {
              lVar8 = (longdouble)0;
            }
            else {
              lVar8 = (longdouble)FUN_00024540();
              uVar3 = *(ushort *)(param_1 + 1);
            }
          }
          else {
            lVar8 = (longdouble)(longlong)*param_1;
          }
        }
        else {
          lVar8 = (longdouble)*param_1;
        }
        *param_1 = (double)lVar8;
        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;
        uVar4 = 0;
        goto LAB_00044d62;
      }
LAB_00044e58:
      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;
      FUN_00036fb0();
      uVar3 = *(ushort *)(param_1 + 1);
      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;
      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {
        uVar4 = FUN_000323c0();
        goto LAB_00044d62;
      }
    }
LAB_00044d60:
    uVar4 = 0;
    goto LAB_00044d62;
  }
  if ((uVar3 & 0x2d) == 0) {
    uVar7 = *(undefined1 *)((int)param_1 + 10);
    *param_1 = 0.0;
    if (*(int *)((int)param_1 + 0xc) == 0) {
LAB_00044d9e:
      iVar5 = FUN_0001e220(uVar7);
      if (1 < iVar5) goto LAB_00044db7;
      dVar1 = (double)CONCAT44(local_28,local_2c);
    }
    else {
      uVar6 = FUN_00023dc0(uVar7);
      if (uVar6 < 2) {
        uVar7 = *(undefined1 *)((int)param_1 + 10);
        goto LAB_00044d9e;
      }
LAB_00044db7:
      dVar9 = *param_1;
      dVar1 = (double)(longlong)ROUND(dVar9);
      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);
      if (dVar9 != 0.0) {
        local_1c = SUB84((double)(longlong)dVar1,0);
        local_24 = SUB84(dVar9,0);
        if (local_24 == local_1c) {
          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);
          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);
          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;
        }
        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;
        goto LAB_00044e23;
      }
    }
LAB_00044f38:
    *param_1 = dVar1;
    uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;
  }
LAB_00044e23:
  *(ushort *)(param_1 + 1) = uVar3 & 0xbfed;
  uVar4 = 0;
LAB_00044d62:
  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {
    return uVar4;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000d1450();
}


PUSH EDI
PUSH ESI
PUSH EBX
MOV EBX,EAX
SUB ESP,0x40
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x3c],EAX
XOR EAX,EAX
MOVZX EAX,word ptr [EBX + 0x8]
TEST AL,0x1
JNZ 0x00044d60
CMP DL,0x43
JZ 0x00044d80
JBE 0x00044e38
CMP DL,0x44
JZ 0x00044d40
CMP DL,0x45
JNZ 0x00044e58
TEST AL,0x8
JNZ 0x00044ef0
TEST AL,0x24
JNZ 0x00044eb0
TEST AL,0x12
JNZ 0x00044f50
FLDZ
NOP
LEA ESI,[ESI]
AND AX,0x3e40
FSTP qword ptr [EBX]
OR EAX,0x8
MOV word ptr [EBX + 0x8],AX
XOR EAX,EAX
JMP 0x00044d62
MOV EAX,EBX
CALL 0x00024fb0
MOV dword ptr [EBX],EAX
MOVZX EAX,word ptr [EBX + 0x8]
MOV dword ptr [EBX + 0x4],EDX
AND AX,0x3e40
OR EAX,0x4
MOV word ptr [EBX + 0x8],AX
NOP
LEA ESI,[ESI]
XOR EAX,EAX
MOV EDI,dword ptr [ESP + 0x3c]
XOR EDI,dword ptr GS:[0x14]
JNZ 0x00044f84
ADD ESP,0x40
POP EBX
POP ESI
POP EDI
RET
TEST AL,0x2d
JNZ 0x00044e23
MOV ECX,dword ptr [EBX + 0xc]
FLDZ
MOVZX EDI,byte ptr [EBX + 0xa]
MOV EAX,dword ptr [EBX + 0x10]
FSTP qword ptr [EBX]
TEST ECX,ECX
JNZ 0x00044ec0
LEA EDX,[ESP + 0x20]
SUB ESP,0xc
PUSH EDI
CALL 0x0001e220
ADD ESP,0x10
CMP EAX,0x1
JLE 0x00044f2d
FNSTCW word ptr [ESP + 0x16]
MOVZX EAX,word ptr [ESP + 0x16]
FLD qword ptr [EBX]
OR AH,0xc
MOV word ptr [ESP + 0x14],AX
FLD ST0
FLDCW word ptr [ESP + 0x14]
FISTP qword ptr [ESP + 0x8]
FLDCW word ptr [ESP + 0x16]
MOV EAX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
FST qword ptr [ESP + 0x28]
MOV dword ptr [ESP],EAX
MOV dword ptr [ESP + 0x4],EDX
MOV dword ptr [ESP + 0x20],EAX
MOV dword ptr [ESP + 0x24],EDX
FILD qword ptr [ESP]
FSTP qword ptr [ESP + 0x30]
FLDZ
FXCH
FUCOMIP ST0,ST1
FSTP ST0
JP 0x00044e0a
JZ 0x00044f38
MOV EDI,dword ptr [ESP + 0x30]
CMP dword ptr [ESP + 0x28],EDI
JZ 0x00044f60
MOVZX EAX,word ptr [EBX + 0x8]
AND AX,0x3e40
OR EAX,0x8
AND AX,0xbfed
MOV word ptr [EBX + 0x8],AX
XOR EAX,EAX
JMP 0x00044d62
CMP DL,0x41
JNZ 0x00044e58
TEST AL,0x10
JZ 0x00044f00
AND AX,0x3e50
MOV word ptr [EBX + 0x8],AX
XOR EAX,EAX
JMP 0x00044d62
MOV EDX,EAX
MOVZX ESI,CL
SHR DX,0x3
MOV ECX,ESI
AND EDX,0x2
OR EAX,EDX
MOV EDX,0x42
MOV word ptr [EBX + 0x8],AX
MOV EAX,EBX
CALL 0x00036fb0
MOVZX EAX,word ptr [EBX + 0x8]
MOV EDX,EAX
AND DX,0xbfc3
TEST AL,0x2
MOV word ptr [EBX + 0x8],DX
JZ 0x00044d60
MOVZX EAX,byte ptr [EBX + 0xa]
CMP ESI,EAX
JZ 0x00044d60
MOV EDX,ESI
MOV EAX,EBX
CALL 0x000323c0
JMP 0x00044d62
FILD qword ptr [EBX]
FSTP qword ptr [ESP + 0x18]
FLD qword ptr [ESP + 0x18]
JMP 0x00044d28
SUB ESP,0xc
MOV EDX,EBX
PUSH EDI
CALL 0x00023dc0
ADD ESP,0x10
CMP EAX,0x1
JA 0x00044db7
MOVZX EDI,byte ptr [EBX + 0xa]
MOV ECX,dword ptr [EBX + 0xc]
MOV EAX,dword ptr [EBX + 0x10]
JMP 0x00044d9e
FLD qword ptr [EBX]
JMP 0x00044d28
MOV EAX,EBX
MOVZX ECX,CL
MOV EDX,0x42
CALL 0x00036fb0
MOVZX EAX,word ptr [EBX + 0x8]
TEST AL,0x2
JZ 0x00044d60
AND AX,0x3e40
OR EAX,0x10
MOV word ptr [EBX + 0x8],AX
XOR EAX,EAX
JMP 0x00044d62
MOV EAX,dword ptr [ESP + 0x20]
MOV EDX,dword ptr [ESP + 0x24]
LEA ESI,[ESI]
MOV dword ptr [EBX],EAX
MOVZX EAX,word ptr [EBX + 0x8]
MOV dword ptr [EBX + 0x4],EDX
AND AX,0x3e40
OR EAX,0x4
JMP 0x00044e23
MOV EAX,EBX
CALL 0x00024540
MOVZX EAX,word ptr [EBX + 0x8]
JMP 0x00044d28
MOV EDI,dword ptr [ESP + 0x34]
CMP dword ptr [ESP + 0x2c],EDI
JNZ 0x00044e18
MOV EDI,EDX
ADD EDI,0x80000
CMP EDI,0xfffff
JA 0x00044e18
JMP 0x00044f38
CALL 0x000d1450
(translation_unit "undefined4 __regparm3 FUN_00044cd0(double *param_1,byte param_2,char param_3)\n\n{\n  double dVar1;\n  int iVar2;\n  ushort uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  undefined1 uVar7;\n  int in_GS_OFFSET;\n  longdouble lVar8;\n  double dVar9;\n  int iStack_40;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  int iStack_20;\n  int local_1c;\n  int iStack_18;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar3 = *(ushort *)(param_1 + 1);\n  if ((uVar3 & 1) != 0) goto LAB_00044d60;\n  if (param_2 != 0x43) {\n    if (param_2 < 0x44) {\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    uVar4 = 0;\n    goto LAB_00044d62;\n  }\n  if ((uVar3 & 0x2d) == 0) {\n    uVar7 = *(undefined1 *)((int)param_1 + 10);\n    *param_1 = 0.0;\n    if (*(int *)((int)param_1 + 0xc) == 0) {\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }\n    else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    *param_1 = dVar1;\n    uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n  }\nLAB_00044e23:\n  *(ushort *)(param_1 + 1) = uVar3 & 0xbfed;\n  uVar4 = 0;\nLAB_00044d62:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000d1450();\n}\n\n" (function_definition "undefined4 __regparm3 FUN_00044cd0(double *param_1,byte param_2,char param_3)\n\n{\n  double dVar1;\n  int iVar2;\n  ushort uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  undefined1 uVar7;\n  int in_GS_OFFSET;\n  longdouble lVar8;\n  double dVar9;\n  int iStack_40;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  int iStack_20;\n  int local_1c;\n  int iStack_18;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar3 = *(ushort *)(param_1 + 1);\n  if ((uVar3 & 1) != 0) goto LAB_00044d60;\n  if (param_2 != 0x43) {\n    if (param_2 < 0x44) {\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    uVar4 = 0;\n    goto LAB_00044d62;\n  }\n  if ((uVar3 & 0x2d) == 0) {\n    uVar7 = *(undefined1 *)((int)param_1 + 10);\n    *param_1 = 0.0;\n    if (*(int *)((int)param_1 + 0xc) == 0) {\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }\n    else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    *param_1 = dVar1;\n    uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n  }\nLAB_00044e23:\n  *(ushort *)(param_1 + 1) = uVar3 & 0xbfed;\n  uVar4 = 0;\nLAB_00044d62:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000d1450();\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00044cd0(double *param_1,byte param_2,char param_3)" identifier (parameter_list "(double *param_1,byte param_2,char param_3)" ( (parameter_declaration "double *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte param_2" type_identifier identifier) , (parameter_declaration "char param_3" primitive_type identifier) ))) (compound_statement "{\n  double dVar1;\n  int iVar2;\n  ushort uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  undefined1 uVar7;\n  int in_GS_OFFSET;\n  longdouble lVar8;\n  double dVar9;\n  int iStack_40;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  int iStack_20;\n  int local_1c;\n  int iStack_18;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar3 = *(ushort *)(param_1 + 1);\n  if ((uVar3 & 1) != 0) goto LAB_00044d60;\n  if (param_2 != 0x43) {\n    if (param_2 < 0x44) {\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    uVar4 = 0;\n    goto LAB_00044d62;\n  }\n  if ((uVar3 & 0x2d) == 0) {\n    uVar7 = *(undefined1 *)((int)param_1 + 10);\n    *param_1 = 0.0;\n    if (*(int *)((int)param_1 + 0xc) == 0) {\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }\n    else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    *param_1 = dVar1;\n    uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n  }\nLAB_00044e23:\n  *(ushort *)(param_1 + 1) = uVar3 & 0xbfed;\n  uVar4 = 0;\nLAB_00044d62:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_000d1450();\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined1 uVar7;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "longdouble lVar8;" type_identifier identifier ;) (declaration "double dVar9;" primitive_type identifier ;) (declaration "int iStack_40;" primitive_type identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int iStack_20;" primitive_type identifier ;) (declaration "int local_1c;" primitive_type identifier ;) (declaration "int iStack_18;" primitive_type identifier ;) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(ushort *)(param_1 + 1);" (assignment_expression "uVar3 = *(ushort *)(param_1 + 1)" identifier = (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))))) ;) (if_statement "if ((uVar3 & 1) != 0) goto LAB_00044d60;" if (parenthesized_expression "((uVar3 & 1) != 0)" ( (binary_expression "(uVar3 & 1) != 0" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00044d60;" goto statement_identifier ;)) (if_statement "if (param_2 != 0x43) {\n    if (param_2 < 0x44) {\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    uVar4 = 0;\n    goto LAB_00044d62;\n  }" if (parenthesized_expression "(param_2 != 0x43)" ( (binary_expression "param_2 != 0x43" identifier != number_literal) )) (compound_statement "{\n    if (param_2 < 0x44) {\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    uVar4 = 0;\n    goto LAB_00044d62;\n  }" { (if_statement "if (param_2 < 0x44) {\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }" if (parenthesized_expression "(param_2 < 0x44)" ( (binary_expression "param_2 < 0x44" identifier < number_literal) )) (compound_statement "{\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }" { (if_statement "if (param_2 != 0x41) goto LAB_00044e58;" if (parenthesized_expression "(param_2 != 0x41)" ( (binary_expression "param_2 != 0x41" identifier != number_literal) )) (goto_statement "goto LAB_00044e58;" goto statement_identifier ;)) (if_statement "if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" if (parenthesized_expression "((uVar3 & 0x10) != 0)" ( (binary_expression "(uVar3 & 0x10) != 0" (parenthesized_expression "(uVar3 & 0x10)" ( (binary_expression "uVar3 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" { (expression_statement "*(ushort *)(param_1 + 1) = uVar3 & 0x3e50;" (assignment_expression "*(ushort *)(param_1 + 1) = uVar3 & 0x3e50" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (binary_expression "uVar3 & 0x3e50" identifier & number_literal)) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00044d62;" goto statement_identifier ;) })) (expression_statement "FUN_00036fb0();" (call_expression "FUN_00036fb0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" if (parenthesized_expression "((*(ushort *)(param_1 + 1) & 2) != 0)" ( (binary_expression "(*(ushort *)(param_1 + 1) & 2) != 0" (parenthesized_expression "(*(ushort *)(param_1 + 1) & 2)" ( (binary_expression "*(ushort *)(param_1 + 1) & 2" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" { (expression_statement "*(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;" (assignment_expression "*(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40 | 0x10" (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00044d62;" goto statement_identifier ;) })) }) (else_clause "else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }" else (if_statement "if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }" if (parenthesized_expression "(param_2 == 0x44)" ( (binary_expression "param_2 == 0x44" identifier == number_literal) )) (compound_statement "{\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }" { (expression_statement "dVar9 = (double)FUN_00024fb0();" (assignment_expression "dVar9 = (double)FUN_00024fb0()" identifier = (cast_expression "(double)FUN_00024fb0()" ( (type_descriptor "double" primitive_type) ) (call_expression "FUN_00024fb0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*param_1 = dVar9;" (assignment_expression "*param_1 = dVar9" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "*(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;" (assignment_expression "*(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40 | 4" (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) & number_literal) | number_literal)) ;) }) (else_clause "else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }" else (compound_statement "{\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }" { (if_statement "if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" if (parenthesized_expression "(param_2 == 0x45)" ( (binary_expression "param_2 == 0x45" identifier == number_literal) )) (compound_statement "{\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" { (if_statement "if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\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          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }" { (if_statement "if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }" if (parenthesized_expression "((uVar3 & 0x24) == 0)" ( (binary_expression "(uVar3 & 0x24) == 0" (parenthesized_expression "(uVar3 & 0x24)" ( (binary_expression "uVar3 & 0x24" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }" { (if_statement "if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }" if (parenthesized_expression "((uVar3 & 0x12) == 0)" ( (binary_expression "(uVar3 & 0x12) == 0" (parenthesized_expression "(uVar3 & 0x12)" ( (binary_expression "uVar3 & 0x12" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              lVar8 = (longdouble)0;\n            }" { (expression_statement "lVar8 = (longdouble)0;" (assignment_expression "lVar8 = (longdouble)0" identifier = (cast_expression "(longdouble)0" ( (type_descriptor "longdouble" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }" else (compound_statement "{\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }" { (expression_statement "lVar8 = (longdouble)FUN_00024540();" (assignment_expression "lVar8 = (longdouble)FUN_00024540()" identifier = (cast_expression "(longdouble)FUN_00024540()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00024540()" identifier (argument_list "()" ( ))))) ;) (expression_statement "uVar3 = *(ushort *)(param_1 + 1);" (assignment_expression "uVar3 = *(ushort *)(param_1 + 1)" identifier = (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))))) ;) }))) }) (else_clause "else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }" else (compound_statement "{\n            lVar8 = (longdouble)(longlong)*param_1;\n          }" { (expression_statement "lVar8 = (longdouble)(longlong)*param_1;" (assignment_expression "lVar8 = (longdouble)(longlong)*param_1" identifier = (binary_expression "(longdouble)(longlong)*param_1" (call_expression "(longdouble)(longlong)" (parenthesized_expression "(longdouble)" ( identifier )) (argument_list "(longlong)" ( identifier ))) * identifier)) ;) }))) }) (else_clause "else {\n          lVar8 = (longdouble)*param_1;\n        }" else (compound_statement "{\n          lVar8 = (longdouble)*param_1;\n        }" { (expression_statement "lVar8 = (longdouble)*param_1;" (assignment_expression "lVar8 = (longdouble)*param_1" identifier = (binary_expression "(longdouble)*param_1" (parenthesized_expression "(longdouble)" ( identifier )) * identifier)) ;) }))) (expression_statement "*param_1 = (double)lVar8;" (assignment_expression "*param_1 = (double)lVar8" (pointer_expression "*param_1" * identifier) = (cast_expression "(double)lVar8" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "*(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;" (assignment_expression "*(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (binary_expression "uVar3 & 0x3e40 | 8" (binary_expression "uVar3 & 0x3e40" identifier & number_literal) | number_literal)) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00044d62;" goto statement_identifier ;) })) (labeled_statement "LAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;" statement_identifier : (expression_statement "*(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;" (assignment_expression "*(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (binary_expression "uVar3 | uVar3 >> 3 & 2" identifier | (binary_expression "uVar3 >> 3 & 2" (binary_expression "uVar3 >> 3" identifier >> number_literal) & number_literal))) ;)) (expression_statement "FUN_00036fb0();" (call_expression "FUN_00036fb0()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar3 = *(ushort *)(param_1 + 1);" (assignment_expression "uVar3 = *(ushort *)(param_1 + 1)" identifier = (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))))) ;) (expression_statement "*(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;" (assignment_expression "*(ushort *)(param_1 + 1) = uVar3 & 0xbfc3" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (binary_expression "uVar3 & 0xbfc3" identifier & number_literal)) ;) (if_statement "if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }" if (parenthesized_expression "(((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10)))" ( (binary_expression "((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))" (parenthesized_expression "((uVar3 & 2) != 0)" ( (binary_expression "(uVar3 & 2) != 0" (parenthesized_expression "(uVar3 & 2)" ( (binary_expression "uVar3 & 2" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(param_3 != *(char *)((int)param_1 + 10))" ( (binary_expression "param_3 != *(char *)((int)param_1 + 10)" identifier != (pointer_expression "*(char *)((int)param_1 + 10)" * (cast_expression "(char *)((int)param_1 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 10)" ( (binary_expression "(int)param_1 + 10" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ))) )) (compound_statement "{\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }" { (expression_statement "uVar4 = FUN_000323c0();" (assignment_expression "uVar4 = FUN_000323c0()" identifier = (call_expression "FUN_000323c0()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_00044d62;" goto statement_identifier ;) })) }))))) (labeled_statement "LAB_00044d60:\n    uVar4 = 0;" statement_identifier : (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_00044d62;" goto statement_identifier ;) })) (if_statement "if ((uVar3 & 0x2d) == 0) {\n    uVar7 = *(undefined1 *)((int)param_1 + 10);\n    *param_1 = 0.0;\n    if (*(int *)((int)param_1 + 0xc) == 0) {\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }\n    else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    *param_1 = dVar1;\n    uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n  }" if (parenthesized_expression "((uVar3 & 0x2d) == 0)" ( (binary_expression "(uVar3 & 0x2d) == 0" (parenthesized_expression "(uVar3 & 0x2d)" ( (binary_expression "uVar3 & 0x2d" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar7 = *(undefined1 *)((int)param_1 + 10);\n    *param_1 = 0.0;\n    if (*(int *)((int)param_1 + 0xc) == 0) {\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }\n    else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    *param_1 = dVar1;\n    uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n  }" { (expression_statement "uVar7 = *(undefined1 *)((int)param_1 + 10);" (assignment_expression "uVar7 = *(undefined1 *)((int)param_1 + 10)" identifier = (pointer_expression "*(undefined1 *)((int)param_1 + 10)" * (cast_expression "(undefined1 *)((int)param_1 + 10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 10)" ( (binary_expression "(int)param_1 + 10" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*param_1 = 0.0;" (assignment_expression "*param_1 = 0.0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (if_statement "if (*(int *)((int)param_1 + 0xc) == 0) {\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }\n    else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }" if (parenthesized_expression "(*(int *)((int)param_1 + 0xc) == 0)" ( (binary_expression "*(int *)((int)param_1 + 0xc) == 0" (pointer_expression "*(int *)((int)param_1 + 0xc)" * (cast_expression "(int *)((int)param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0xc)" ( (binary_expression "(int)param_1 + 0xc" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }" { (labeled_statement "LAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);" statement_identifier : (expression_statement "iVar5 = FUN_0001e220(uVar7);" (assignment_expression "iVar5 = FUN_0001e220(uVar7)" identifier = (call_expression "FUN_0001e220(uVar7)" identifier (argument_list "(uVar7)" ( identifier )))) ;)) (if_statement "if (1 < iVar5) goto LAB_00044db7;" if (parenthesized_expression "(1 < iVar5)" ( (binary_expression "1 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_00044db7;" goto statement_identifier ;)) (expression_statement "dVar1 = (double)CONCAT44(local_28,local_2c);" (assignment_expression "dVar1 = (double)CONCAT44(local_28,local_2c)" identifier = (cast_expression "(double)CONCAT44(local_28,local_2c)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(local_28,local_2c)" identifier (argument_list "(local_28,local_2c)" ( identifier , identifier ))))) ;) }) (else_clause "else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }" else (compound_statement "{\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }" { (expression_statement "uVar6 = FUN_00023dc0(uVar7);" (assignment_expression "uVar6 = FUN_00023dc0(uVar7)" identifier = (call_expression "FUN_00023dc0(uVar7)" identifier (argument_list "(uVar7)" ( identifier )))) ;) (if_statement "if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }" if (parenthesized_expression "(uVar6 < 2)" ( (binary_expression "uVar6 < 2" identifier < number_literal) )) (compound_statement "{\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }" { (expression_statement "uVar7 = *(undefined1 *)((int)param_1 + 10);" (assignment_expression "uVar7 = *(undefined1 *)((int)param_1 + 10)" identifier = (pointer_expression "*(undefined1 *)((int)param_1 + 10)" * (cast_expression "(undefined1 *)((int)param_1 + 10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 10)" ( (binary_expression "(int)param_1 + 10" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (goto_statement "goto LAB_00044d9e;" goto statement_identifier ;) })) (labeled_statement "LAB_00044db7:\n      dVar9 = *param_1;" statement_identifier : (expression_statement "dVar9 = *param_1;" (assignment_expression "dVar9 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;)) (expression_statement "dVar1 = (double)(longlong)ROUND(dVar9);" (assignment_expression "dVar1 = (double)(longlong)ROUND(dVar9)" identifier = (cast_expression "(double)(longlong)ROUND(dVar9)" ( (type_descriptor "double" primitive_type) ) (cast_expression "(longlong)ROUND(dVar9)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar9)" identifier (argument_list "(dVar9)" ( identifier )))))) ;) (expression_statement "iStack_40 = (int)((ulonglong)dVar1 >> 0x20);" (assignment_expression "iStack_40 = (int)((ulonglong)dVar1 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)dVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)dVar1 >> 0x20)" ( (binary_expression "(ulonglong)dVar1 >> 0x20" (cast_expression "(ulonglong)dVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }" if (parenthesized_expression "(dVar9 != 0.0)" ( (binary_expression "dVar9 != 0.0" identifier != number_literal) )) (compound_statement "{\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }" { (expression_statement "local_1c = SUB84((double)(longlong)dVar1,0);" (assignment_expression "local_1c = SUB84((double)(longlong)dVar1,0)" identifier = (call_expression "SUB84((double)(longlong)dVar1,0)" identifier (argument_list "((double)(longlong)dVar1,0)" ( (cast_expression "(double)(longlong)dVar1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(longlong)dVar1" ( (type_descriptor "longlong" type_identifier) ) identifier)) , number_literal )))) ;) (expression_statement "local_24 = SUB84(dVar9,0);" (assignment_expression "local_24 = SUB84(dVar9,0)" identifier = (call_expression "SUB84(dVar9,0)" identifier (argument_list "(dVar9,0)" ( identifier , number_literal )))) ;) (if_statement "if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }" if (parenthesized_expression "(local_24 == local_1c)" ( (binary_expression "local_24 == local_1c" identifier == identifier) )) (compound_statement "{\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }" { (expression_statement "iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);" (assignment_expression "iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)(double)(longlong)dVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)(double)(longlong)dVar1 >> 0x20)" ( (binary_expression "(ulonglong)(double)(longlong)dVar1 >> 0x20" (cast_expression "(ulonglong)(double)(longlong)dVar1" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(double)(longlong)dVar1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(longlong)dVar1" ( (type_descriptor "longlong" type_identifier) ) identifier))) >> number_literal) )))) ;) (expression_statement "iStack_20 = (int)((ulonglong)dVar9 >> 0x20);" (assignment_expression "iStack_20 = (int)((ulonglong)dVar9 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)dVar9 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)dVar9 >> 0x20)" ( (binary_expression "(ulonglong)dVar9 >> 0x20" (cast_expression "(ulonglong)dVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;" if (parenthesized_expression "((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000))" ( (binary_expression "(iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)" (parenthesized_expression "(iStack_20 == iStack_18)" ( (binary_expression "iStack_20 == iStack_18" identifier == identifier) )) && (parenthesized_expression "(iStack_40 + 0x80000U < 0x100000)" ( (binary_expression "iStack_40 + 0x80000U < 0x100000" (binary_expression "iStack_40 + 0x80000U" identifier + number_literal) < number_literal) ))) )) (goto_statement "goto LAB_00044f38;" goto statement_identifier ;)) })) (expression_statement "uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;" (assignment_expression "uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8" identifier = (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40 | 8" (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (goto_statement "goto LAB_00044e23;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00044f38:\n    *param_1 = dVar1;" statement_identifier : (expression_statement "*param_1 = dVar1;" (assignment_expression "*param_1 = dVar1" (pointer_expression "*param_1" * identifier) = identifier) ;)) (expression_statement "uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;" (assignment_expression "uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4" identifier = (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40 | 4" (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) & number_literal) | number_literal)) ;) })) (labeled_statement "LAB_00044e23:\n  *(ushort *)(param_1 + 1) = uVar3 & 0xbfed;" statement_identifier : (expression_statement "*(ushort *)(param_1 + 1) = uVar3 & 0xbfed;" (assignment_expression "*(ushort *)(param_1 + 1) = uVar3 & 0xbfed" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (binary_expression "uVar3 & 0xbfed" identifier & number_literal)) ;)) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00044d62:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }" statement_identifier : (if_statement "if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }" if (parenthesized_expression "(iVar2 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar2 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar4;\n  }" { (return_statement "return uVar4;" return identifier ;) }))) comment (expression_statement "FUN_000d1450();" (call_expression "FUN_000d1450()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "int __regparm3 sqlite3VdbeMemCast(Mem *pMem,u8 aff,u8 encoding)\n\n{\n  double dVar1;\n  longlong lVar2;\n  int iVar3;\n  byte enc;\n  ushort uVar4;\n  int iVar5;\n  char *z;\n  uint uVar6;\n  int in_GS_OFFSET;\n  i64 iVar7;\n  MemValue MVar8;\n  int in_stack_ffffffa8;\n  u8 in_stack_ffffffac;\n  int iStack_40;\n  sqlite3_int64 ix;\n  int local_24;\n  int iStack_20;\n  double r2;\n  \n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar4 = pMem->flags;\n  if ((uVar4 & 1) != 0) goto LAB_00044d60;\n  if (aff != 'C') {\n    if (aff < 0x44) {\n      if (aff != 'A') goto LAB_00044e58;\n      if ((uVar4 & 0x10) != 0) {\n        pMem->flags = uVar4 & 0x3e50;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\n      applyAffinity(pMem,'B',encoding);\n      if ((pMem->flags & 2) != 0) {\n        pMem->flags = pMem->flags & 0x3e40 | 0x10;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (aff == 'D') {\n      iVar7 = sqlite3VdbeIntValue(pMem);\n      (pMem->u).i = iVar7;\n      pMem->flags = pMem->flags & 0x3e40 | 4;\n    }\n    else {\n      if (aff == 'E') {\n        if ((uVar4 & 8) == 0) {\n          if ((uVar4 & 0x24) == 0) {\n            if ((uVar4 & 0x12) == 0) {\n              MVar8.r = 0.0;\n            }\n            else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }\n          }\n          else {\n            MVar8.r = (double)(pMem->u).i;\n          }\n        }\n        else {\n          MVar8 = pMem->u;\n        }\n        (pMem->u).r = (double)MVar8;\n        pMem->flags = uVar4 & 0x3e40 | 8;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      pMem->flags = uVar4 | uVar4 >> 3 & 2;\n      applyAffinity(pMem,'B',encoding);\n      uVar4 = pMem->flags;\n      pMem->flags = uVar4 & 0xbfc3;\n      if (((uVar4 & 2) != 0) && (encoding != pMem->enc)) {\n        iVar5 = sqlite3VdbeMemTranslate(pMem,encoding);\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    iVar5 = 0;\n    goto LAB_00044d62;\n  }\n  if ((uVar4 & 0x2d) == 0) {\n    enc = pMem->enc;\n    z = pMem->z;\n    (pMem->u).r = 0.0;\n    if (pMem->n == 0) {\nLAB_00044d9e:\n      iVar5 = sqlite3Atoi64(z,(i64 *)(uint)enc,in_stack_ffffffa8,in_stack_ffffffac);\n      if (1 < iVar5) goto LAB_00044db7;\n      lVar2 = CONCAT44(ix._4_4_,(undefined4)ix);\n    }\n    else {\n      uVar6 = sqlite3AtoF(z,(double *)pMem,pMem->n,enc);\n      if (uVar6 < 2) {\n        enc = pMem->enc;\n        z = pMem->z;\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar1 = (pMem->u).r;\n      lVar2 = (longlong)ROUND(dVar1);\n      iStack_40 = (int)((ulonglong)lVar2 >> 0x20);\n      if (dVar1 != 0.0) {\n        r2._0_4_ = SUB84((double)lVar2,0);\n        local_24 = SUB84(dVar1,0);\n        if (local_24 == r2._0_4_) {\n          r2._4_4_ = (int)((ulonglong)(double)lVar2 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar1 >> 0x20);\n          if ((iStack_20 == r2._4_4_) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar4 = pMem->flags & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    (pMem->u).i = lVar2;\n    uVar4 = pMem->flags & 0x3e40 | 4;\n  }\nLAB_00044e23:\n  pMem->flags = uVar4 & 0xbfed;\n  iVar5 = 0;\nLAB_00044d62:\n  if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" (function_definition "int __regparm3 sqlite3VdbeMemCast(Mem *pMem,u8 aff,u8 encoding)\n\n{\n  double dVar1;\n  longlong lVar2;\n  int iVar3;\n  byte enc;\n  ushort uVar4;\n  int iVar5;\n  char *z;\n  uint uVar6;\n  int in_GS_OFFSET;\n  i64 iVar7;\n  MemValue MVar8;\n  int in_stack_ffffffa8;\n  u8 in_stack_ffffffac;\n  int iStack_40;\n  sqlite3_int64 ix;\n  int local_24;\n  int iStack_20;\n  double r2;\n  \n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar4 = pMem->flags;\n  if ((uVar4 & 1) != 0) goto LAB_00044d60;\n  if (aff != 'C') {\n    if (aff < 0x44) {\n      if (aff != 'A') goto LAB_00044e58;\n      if ((uVar4 & 0x10) != 0) {\n        pMem->flags = uVar4 & 0x3e50;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\n      applyAffinity(pMem,'B',encoding);\n      if ((pMem->flags & 2) != 0) {\n        pMem->flags = pMem->flags & 0x3e40 | 0x10;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (aff == 'D') {\n      iVar7 = sqlite3VdbeIntValue(pMem);\n      (pMem->u).i = iVar7;\n      pMem->flags = pMem->flags & 0x3e40 | 4;\n    }\n    else {\n      if (aff == 'E') {\n        if ((uVar4 & 8) == 0) {\n          if ((uVar4 & 0x24) == 0) {\n            if ((uVar4 & 0x12) == 0) {\n              MVar8.r = 0.0;\n            }\n            else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }\n          }\n          else {\n            MVar8.r = (double)(pMem->u).i;\n          }\n        }\n        else {\n          MVar8 = pMem->u;\n        }\n        (pMem->u).r = (double)MVar8;\n        pMem->flags = uVar4 & 0x3e40 | 8;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      pMem->flags = uVar4 | uVar4 >> 3 & 2;\n      applyAffinity(pMem,'B',encoding);\n      uVar4 = pMem->flags;\n      pMem->flags = uVar4 & 0xbfc3;\n      if (((uVar4 & 2) != 0) && (encoding != pMem->enc)) {\n        iVar5 = sqlite3VdbeMemTranslate(pMem,encoding);\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    iVar5 = 0;\n    goto LAB_00044d62;\n  }\n  if ((uVar4 & 0x2d) == 0) {\n    enc = pMem->enc;\n    z = pMem->z;\n    (pMem->u).r = 0.0;\n    if (pMem->n == 0) {\nLAB_00044d9e:\n      iVar5 = sqlite3Atoi64(z,(i64 *)(uint)enc,in_stack_ffffffa8,in_stack_ffffffac);\n      if (1 < iVar5) goto LAB_00044db7;\n      lVar2 = CONCAT44(ix._4_4_,(undefined4)ix);\n    }\n    else {\n      uVar6 = sqlite3AtoF(z,(double *)pMem,pMem->n,enc);\n      if (uVar6 < 2) {\n        enc = pMem->enc;\n        z = pMem->z;\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar1 = (pMem->u).r;\n      lVar2 = (longlong)ROUND(dVar1);\n      iStack_40 = (int)((ulonglong)lVar2 >> 0x20);\n      if (dVar1 != 0.0) {\n        r2._0_4_ = SUB84((double)lVar2,0);\n        local_24 = SUB84(dVar1,0);\n        if (local_24 == r2._0_4_) {\n          r2._4_4_ = (int)((ulonglong)(double)lVar2 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar1 >> 0x20);\n          if ((iStack_20 == r2._4_4_) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar4 = pMem->flags & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    (pMem->u).i = lVar2;\n    uVar4 = pMem->flags & 0x3e40 | 4;\n  }\nLAB_00044e23:\n  pMem->flags = uVar4 & 0xbfed;\n  iVar5 = 0;\nLAB_00044d62:\n  if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "sqlite3VdbeMemCast(Mem *pMem,u8 aff,u8 encoding)" identifier (parameter_list "(Mem *pMem,u8 aff,u8 encoding)" ( (parameter_declaration "Mem *pMem" type_identifier (pointer_declarator "*pMem" * identifier)) , (parameter_declaration "u8 aff" type_identifier identifier) , (parameter_declaration "u8 encoding" type_identifier identifier) ))) (compound_statement "{\n  double dVar1;\n  longlong lVar2;\n  int iVar3;\n  byte enc;\n  ushort uVar4;\n  int iVar5;\n  char *z;\n  uint uVar6;\n  int in_GS_OFFSET;\n  i64 iVar7;\n  MemValue MVar8;\n  int in_stack_ffffffa8;\n  u8 in_stack_ffffffac;\n  int iStack_40;\n  sqlite3_int64 ix;\n  int local_24;\n  int iStack_20;\n  double r2;\n  \n  iVar3 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar4 = pMem->flags;\n  if ((uVar4 & 1) != 0) goto LAB_00044d60;\n  if (aff != 'C') {\n    if (aff < 0x44) {\n      if (aff != 'A') goto LAB_00044e58;\n      if ((uVar4 & 0x10) != 0) {\n        pMem->flags = uVar4 & 0x3e50;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\n      applyAffinity(pMem,'B',encoding);\n      if ((pMem->flags & 2) != 0) {\n        pMem->flags = pMem->flags & 0x3e40 | 0x10;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (aff == 'D') {\n      iVar7 = sqlite3VdbeIntValue(pMem);\n      (pMem->u).i = iVar7;\n      pMem->flags = pMem->flags & 0x3e40 | 4;\n    }\n    else {\n      if (aff == 'E') {\n        if ((uVar4 & 8) == 0) {\n          if ((uVar4 & 0x24) == 0) {\n            if ((uVar4 & 0x12) == 0) {\n              MVar8.r = 0.0;\n            }\n            else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }\n          }\n          else {\n            MVar8.r = (double)(pMem->u).i;\n          }\n        }\n        else {\n          MVar8 = pMem->u;\n        }\n        (pMem->u).r = (double)MVar8;\n        pMem->flags = uVar4 & 0x3e40 | 8;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      pMem->flags = uVar4 | uVar4 >> 3 & 2;\n      applyAffinity(pMem,'B',encoding);\n      uVar4 = pMem->flags;\n      pMem->flags = uVar4 & 0xbfc3;\n      if (((uVar4 & 2) != 0) && (encoding != pMem->enc)) {\n        iVar5 = sqlite3VdbeMemTranslate(pMem,encoding);\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    iVar5 = 0;\n    goto LAB_00044d62;\n  }\n  if ((uVar4 & 0x2d) == 0) {\n    enc = pMem->enc;\n    z = pMem->z;\n    (pMem->u).r = 0.0;\n    if (pMem->n == 0) {\nLAB_00044d9e:\n      iVar5 = sqlite3Atoi64(z,(i64 *)(uint)enc,in_stack_ffffffa8,in_stack_ffffffac);\n      if (1 < iVar5) goto LAB_00044db7;\n      lVar2 = CONCAT44(ix._4_4_,(undefined4)ix);\n    }\n    else {\n      uVar6 = sqlite3AtoF(z,(double *)pMem,pMem->n,enc);\n      if (uVar6 < 2) {\n        enc = pMem->enc;\n        z = pMem->z;\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar1 = (pMem->u).r;\n      lVar2 = (longlong)ROUND(dVar1);\n      iStack_40 = (int)((ulonglong)lVar2 >> 0x20);\n      if (dVar1 != 0.0) {\n        r2._0_4_ = SUB84((double)lVar2,0);\n        local_24 = SUB84(dVar1,0);\n        if (local_24 == r2._0_4_) {\n          r2._4_4_ = (int)((ulonglong)(double)lVar2 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar1 >> 0x20);\n          if ((iStack_20 == r2._4_4_) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar4 = pMem->flags & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    (pMem->u).i = lVar2;\n    uVar4 = pMem->flags & 0x3e40 | 4;\n  }\nLAB_00044e23:\n  pMem->flags = uVar4 & 0xbfed;\n  iVar5 = 0;\nLAB_00044d62:\n  if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "longlong lVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "byte enc;" type_identifier identifier ;) (declaration "ushort uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "char *z;" primitive_type (pointer_declarator "*z" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "i64 iVar7;" type_identifier identifier ;) (declaration "MemValue MVar8;" type_identifier identifier ;) (declaration "int in_stack_ffffffa8;" primitive_type identifier ;) (declaration "u8 in_stack_ffffffac;" type_identifier identifier ;) (declaration "int iStack_40;" primitive_type identifier ;) (declaration "sqlite3_int64 ix;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int iStack_20;" primitive_type identifier ;) (declaration "double r2;" primitive_type identifier ;) (expression_statement "iVar3 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar3 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = pMem->flags;" (assignment_expression "uVar4 = pMem->flags" identifier = (field_expression "pMem->flags" identifier -> field_identifier)) ;) (if_statement "if ((uVar4 & 1) != 0) goto LAB_00044d60;" if (parenthesized_expression "((uVar4 & 1) != 0)" ( (binary_expression "(uVar4 & 1) != 0" (parenthesized_expression "(uVar4 & 1)" ( (binary_expression "uVar4 & 1" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00044d60;" goto statement_identifier ;)) (if_statement "if (aff != 'C') {\n    if (aff < 0x44) {\n      if (aff != 'A') goto LAB_00044e58;\n      if ((uVar4 & 0x10) != 0) {\n        pMem->flags = uVar4 & 0x3e50;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\n      applyAffinity(pMem,'B',encoding);\n      if ((pMem->flags & 2) != 0) {\n        pMem->flags = pMem->flags & 0x3e40 | 0x10;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (aff == 'D') {\n      iVar7 = sqlite3VdbeIntValue(pMem);\n      (pMem->u).i = iVar7;\n      pMem->flags = pMem->flags & 0x3e40 | 4;\n    }\n    else {\n      if (aff == 'E') {\n        if ((uVar4 & 8) == 0) {\n          if ((uVar4 & 0x24) == 0) {\n            if ((uVar4 & 0x12) == 0) {\n              MVar8.r = 0.0;\n            }\n            else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }\n          }\n          else {\n            MVar8.r = (double)(pMem->u).i;\n          }\n        }\n        else {\n          MVar8 = pMem->u;\n        }\n        (pMem->u).r = (double)MVar8;\n        pMem->flags = uVar4 & 0x3e40 | 8;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      pMem->flags = uVar4 | uVar4 >> 3 & 2;\n      applyAffinity(pMem,'B',encoding);\n      uVar4 = pMem->flags;\n      pMem->flags = uVar4 & 0xbfc3;\n      if (((uVar4 & 2) != 0) && (encoding != pMem->enc)) {\n        iVar5 = sqlite3VdbeMemTranslate(pMem,encoding);\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    iVar5 = 0;\n    goto LAB_00044d62;\n  }" if (parenthesized_expression "(aff != 'C')" ( (binary_expression "aff != 'C'" identifier != (char_literal "'C'" ' character ')) )) (compound_statement "{\n    if (aff < 0x44) {\n      if (aff != 'A') goto LAB_00044e58;\n      if ((uVar4 & 0x10) != 0) {\n        pMem->flags = uVar4 & 0x3e50;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\n      applyAffinity(pMem,'B',encoding);\n      if ((pMem->flags & 2) != 0) {\n        pMem->flags = pMem->flags & 0x3e40 | 0x10;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (aff == 'D') {\n      iVar7 = sqlite3VdbeIntValue(pMem);\n      (pMem->u).i = iVar7;\n      pMem->flags = pMem->flags & 0x3e40 | 4;\n    }\n    else {\n      if (aff == 'E') {\n        if ((uVar4 & 8) == 0) {\n          if ((uVar4 & 0x24) == 0) {\n            if ((uVar4 & 0x12) == 0) {\n              MVar8.r = 0.0;\n            }\n            else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }\n          }\n          else {\n            MVar8.r = (double)(pMem->u).i;\n          }\n        }\n        else {\n          MVar8 = pMem->u;\n        }\n        (pMem->u).r = (double)MVar8;\n        pMem->flags = uVar4 & 0x3e40 | 8;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      pMem->flags = uVar4 | uVar4 >> 3 & 2;\n      applyAffinity(pMem,'B',encoding);\n      uVar4 = pMem->flags;\n      pMem->flags = uVar4 & 0xbfc3;\n      if (((uVar4 & 2) != 0) && (encoding != pMem->enc)) {\n        iVar5 = sqlite3VdbeMemTranslate(pMem,encoding);\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    iVar5 = 0;\n    goto LAB_00044d62;\n  }" { (if_statement "if (aff < 0x44) {\n      if (aff != 'A') goto LAB_00044e58;\n      if ((uVar4 & 0x10) != 0) {\n        pMem->flags = uVar4 & 0x3e50;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\n      applyAffinity(pMem,'B',encoding);\n      if ((pMem->flags & 2) != 0) {\n        pMem->flags = pMem->flags & 0x3e40 | 0x10;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (aff == 'D') {\n      iVar7 = sqlite3VdbeIntValue(pMem);\n      (pMem->u).i = iVar7;\n      pMem->flags = pMem->flags & 0x3e40 | 4;\n    }\n    else {\n      if (aff == 'E') {\n        if ((uVar4 & 8) == 0) {\n          if ((uVar4 & 0x24) == 0) {\n            if ((uVar4 & 0x12) == 0) {\n              MVar8.r = 0.0;\n            }\n            else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }\n          }\n          else {\n            MVar8.r = (double)(pMem->u).i;\n          }\n        }\n        else {\n          MVar8 = pMem->u;\n        }\n        (pMem->u).r = (double)MVar8;\n        pMem->flags = uVar4 & 0x3e40 | 8;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      pMem->flags = uVar4 | uVar4 >> 3 & 2;\n      applyAffinity(pMem,'B',encoding);\n      uVar4 = pMem->flags;\n      pMem->flags = uVar4 & 0xbfc3;\n      if (((uVar4 & 2) != 0) && (encoding != pMem->enc)) {\n        iVar5 = sqlite3VdbeMemTranslate(pMem,encoding);\n        goto LAB_00044d62;\n      }\n    }" if (parenthesized_expression "(aff < 0x44)" ( (binary_expression "aff < 0x44" identifier < number_literal) )) (compound_statement "{\n      if (aff != 'A') goto LAB_00044e58;\n      if ((uVar4 & 0x10) != 0) {\n        pMem->flags = uVar4 & 0x3e50;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\n      applyAffinity(pMem,'B',encoding);\n      if ((pMem->flags & 2) != 0) {\n        pMem->flags = pMem->flags & 0x3e40 | 0x10;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\n    }" { (if_statement "if (aff != 'A') goto LAB_00044e58;" if (parenthesized_expression "(aff != 'A')" ( (binary_expression "aff != 'A'" identifier != (char_literal "'A'" ' character ')) )) (goto_statement "goto LAB_00044e58;" goto statement_identifier ;)) (if_statement "if ((uVar4 & 0x10) != 0) {\n        pMem->flags = uVar4 & 0x3e50;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }" if (parenthesized_expression "((uVar4 & 0x10) != 0)" ( (binary_expression "(uVar4 & 0x10) != 0" (parenthesized_expression "(uVar4 & 0x10)" ( (binary_expression "uVar4 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        pMem->flags = uVar4 & 0x3e50;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }" { (expression_statement "pMem->flags = uVar4 & 0x3e50;" (assignment_expression "pMem->flags = uVar4 & 0x3e50" (field_expression "pMem->flags" identifier -> field_identifier) = (binary_expression "uVar4 & 0x3e50" identifier & number_literal)) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00044d62;" goto statement_identifier ;) })) (expression_statement "applyAffinity(pMem,'B',encoding);" (call_expression "applyAffinity(pMem,'B',encoding)" identifier (argument_list "(pMem,'B',encoding)" ( identifier , (char_literal "'B'" ' character ') , identifier ))) ;) (if_statement "if ((pMem->flags & 2) != 0) {\n        pMem->flags = pMem->flags & 0x3e40 | 0x10;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }" if (parenthesized_expression "((pMem->flags & 2) != 0)" ( (binary_expression "(pMem->flags & 2) != 0" (parenthesized_expression "(pMem->flags & 2)" ( (binary_expression "pMem->flags & 2" (field_expression "pMem->flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n        pMem->flags = pMem->flags & 0x3e40 | 0x10;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }" { (expression_statement "pMem->flags = pMem->flags & 0x3e40 | 0x10;" (assignment_expression "pMem->flags = pMem->flags & 0x3e40 | 0x10" (field_expression "pMem->flags" identifier -> field_identifier) = (binary_expression "pMem->flags & 0x3e40 | 0x10" (binary_expression "pMem->flags & 0x3e40" (field_expression "pMem->flags" identifier -> field_identifier) & number_literal) | number_literal)) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00044d62;" goto statement_identifier ;) })) }) (else_clause "else if (aff == 'D') {\n      iVar7 = sqlite3VdbeIntValue(pMem);\n      (pMem->u).i = iVar7;\n      pMem->flags = pMem->flags & 0x3e40 | 4;\n    }\n    else {\n      if (aff == 'E') {\n        if ((uVar4 & 8) == 0) {\n          if ((uVar4 & 0x24) == 0) {\n            if ((uVar4 & 0x12) == 0) {\n              MVar8.r = 0.0;\n            }\n            else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }\n          }\n          else {\n            MVar8.r = (double)(pMem->u).i;\n          }\n        }\n        else {\n          MVar8 = pMem->u;\n        }\n        (pMem->u).r = (double)MVar8;\n        pMem->flags = uVar4 & 0x3e40 | 8;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      pMem->flags = uVar4 | uVar4 >> 3 & 2;\n      applyAffinity(pMem,'B',encoding);\n      uVar4 = pMem->flags;\n      pMem->flags = uVar4 & 0xbfc3;\n      if (((uVar4 & 2) != 0) && (encoding != pMem->enc)) {\n        iVar5 = sqlite3VdbeMemTranslate(pMem,encoding);\n        goto LAB_00044d62;\n      }\n    }" else (if_statement "if (aff == 'D') {\n      iVar7 = sqlite3VdbeIntValue(pMem);\n      (pMem->u).i = iVar7;\n      pMem->flags = pMem->flags & 0x3e40 | 4;\n    }\n    else {\n      if (aff == 'E') {\n        if ((uVar4 & 8) == 0) {\n          if ((uVar4 & 0x24) == 0) {\n            if ((uVar4 & 0x12) == 0) {\n              MVar8.r = 0.0;\n            }\n            else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }\n          }\n          else {\n            MVar8.r = (double)(pMem->u).i;\n          }\n        }\n        else {\n          MVar8 = pMem->u;\n        }\n        (pMem->u).r = (double)MVar8;\n        pMem->flags = uVar4 & 0x3e40 | 8;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      pMem->flags = uVar4 | uVar4 >> 3 & 2;\n      applyAffinity(pMem,'B',encoding);\n      uVar4 = pMem->flags;\n      pMem->flags = uVar4 & 0xbfc3;\n      if (((uVar4 & 2) != 0) && (encoding != pMem->enc)) {\n        iVar5 = sqlite3VdbeMemTranslate(pMem,encoding);\n        goto LAB_00044d62;\n      }\n    }" if (parenthesized_expression "(aff == 'D')" ( (binary_expression "aff == 'D'" identifier == (char_literal "'D'" ' character ')) )) (compound_statement "{\n      iVar7 = sqlite3VdbeIntValue(pMem);\n      (pMem->u).i = iVar7;\n      pMem->flags = pMem->flags & 0x3e40 | 4;\n    }" { (expression_statement "iVar7 = sqlite3VdbeIntValue(pMem);" (assignment_expression "iVar7 = sqlite3VdbeIntValue(pMem)" identifier = (call_expression "sqlite3VdbeIntValue(pMem)" identifier (argument_list "(pMem)" ( identifier )))) ;) (expression_statement "(pMem->u).i = iVar7;" (assignment_expression "(pMem->u).i = iVar7" (field_expression "(pMem->u).i" (parenthesized_expression "(pMem->u)" ( (field_expression "pMem->u" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "pMem->flags = pMem->flags & 0x3e40 | 4;" (assignment_expression "pMem->flags = pMem->flags & 0x3e40 | 4" (field_expression "pMem->flags" identifier -> field_identifier) = (binary_expression "pMem->flags & 0x3e40 | 4" (binary_expression "pMem->flags & 0x3e40" (field_expression "pMem->flags" identifier -> field_identifier) & number_literal) | number_literal)) ;) }) (else_clause "else {\n      if (aff == 'E') {\n        if ((uVar4 & 8) == 0) {\n          if ((uVar4 & 0x24) == 0) {\n            if ((uVar4 & 0x12) == 0) {\n              MVar8.r = 0.0;\n            }\n            else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }\n          }\n          else {\n            MVar8.r = (double)(pMem->u).i;\n          }\n        }\n        else {\n          MVar8 = pMem->u;\n        }\n        (pMem->u).r = (double)MVar8;\n        pMem->flags = uVar4 & 0x3e40 | 8;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      pMem->flags = uVar4 | uVar4 >> 3 & 2;\n      applyAffinity(pMem,'B',encoding);\n      uVar4 = pMem->flags;\n      pMem->flags = uVar4 & 0xbfc3;\n      if (((uVar4 & 2) != 0) && (encoding != pMem->enc)) {\n        iVar5 = sqlite3VdbeMemTranslate(pMem,encoding);\n        goto LAB_00044d62;\n      }\n    }" else (compound_statement "{\n      if (aff == 'E') {\n        if ((uVar4 & 8) == 0) {\n          if ((uVar4 & 0x24) == 0) {\n            if ((uVar4 & 0x12) == 0) {\n              MVar8.r = 0.0;\n            }\n            else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }\n          }\n          else {\n            MVar8.r = (double)(pMem->u).i;\n          }\n        }\n        else {\n          MVar8 = pMem->u;\n        }\n        (pMem->u).r = (double)MVar8;\n        pMem->flags = uVar4 & 0x3e40 | 8;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      pMem->flags = uVar4 | uVar4 >> 3 & 2;\n      applyAffinity(pMem,'B',encoding);\n      uVar4 = pMem->flags;\n      pMem->flags = uVar4 & 0xbfc3;\n      if (((uVar4 & 2) != 0) && (encoding != pMem->enc)) {\n        iVar5 = sqlite3VdbeMemTranslate(pMem,encoding);\n        goto LAB_00044d62;\n      }\n    }" { (if_statement "if (aff == 'E') {\n        if ((uVar4 & 8) == 0) {\n          if ((uVar4 & 0x24) == 0) {\n            if ((uVar4 & 0x12) == 0) {\n              MVar8.r = 0.0;\n            }\n            else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }\n          }\n          else {\n            MVar8.r = (double)(pMem->u).i;\n          }\n        }\n        else {\n          MVar8 = pMem->u;\n        }\n        (pMem->u).r = (double)MVar8;\n        pMem->flags = uVar4 & 0x3e40 | 8;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }" if (parenthesized_expression "(aff == 'E')" ( (binary_expression "aff == 'E'" identifier == (char_literal "'E'" ' character ')) )) (compound_statement "{\n        if ((uVar4 & 8) == 0) {\n          if ((uVar4 & 0x24) == 0) {\n            if ((uVar4 & 0x12) == 0) {\n              MVar8.r = 0.0;\n            }\n            else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }\n          }\n          else {\n            MVar8.r = (double)(pMem->u).i;\n          }\n        }\n        else {\n          MVar8 = pMem->u;\n        }\n        (pMem->u).r = (double)MVar8;\n        pMem->flags = uVar4 & 0x3e40 | 8;\n        iVar5 = 0;\n        goto LAB_00044d62;\n      }" { (if_statement "if ((uVar4 & 8) == 0) {\n          if ((uVar4 & 0x24) == 0) {\n            if ((uVar4 & 0x12) == 0) {\n              MVar8.r = 0.0;\n            }\n            else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }\n          }\n          else {\n            MVar8.r = (double)(pMem->u).i;\n          }\n        }\n        else {\n          MVar8 = pMem->u;\n        }" if (parenthesized_expression "((uVar4 & 8) == 0)" ( (binary_expression "(uVar4 & 8) == 0" (parenthesized_expression "(uVar4 & 8)" ( (binary_expression "uVar4 & 8" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if ((uVar4 & 0x24) == 0) {\n            if ((uVar4 & 0x12) == 0) {\n              MVar8.r = 0.0;\n            }\n            else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }\n          }\n          else {\n            MVar8.r = (double)(pMem->u).i;\n          }\n        }" { (if_statement "if ((uVar4 & 0x24) == 0) {\n            if ((uVar4 & 0x12) == 0) {\n              MVar8.r = 0.0;\n            }\n            else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }\n          }\n          else {\n            MVar8.r = (double)(pMem->u).i;\n          }" if (parenthesized_expression "((uVar4 & 0x24) == 0)" ( (binary_expression "(uVar4 & 0x24) == 0" (parenthesized_expression "(uVar4 & 0x24)" ( (binary_expression "uVar4 & 0x24" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            if ((uVar4 & 0x12) == 0) {\n              MVar8.r = 0.0;\n            }\n            else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }\n          }" { (if_statement "if ((uVar4 & 0x12) == 0) {\n              MVar8.r = 0.0;\n            }\n            else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }" if (parenthesized_expression "((uVar4 & 0x12) == 0)" ( (binary_expression "(uVar4 & 0x12) == 0" (parenthesized_expression "(uVar4 & 0x12)" ( (binary_expression "uVar4 & 0x12" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              MVar8.r = 0.0;\n            }" { (expression_statement "MVar8.r = 0.0;" (assignment_expression "MVar8.r = 0.0" (field_expression "MVar8.r" identifier . field_identifier) = number_literal) ;) }) (else_clause "else {\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }" else (compound_statement "{\n              MVar8.r = memRealValue(pMem);\n              uVar4 = pMem->flags;\n            }" { (expression_statement "MVar8.r = memRealValue(pMem);" (assignment_expression "MVar8.r = memRealValue(pMem)" (field_expression "MVar8.r" identifier . field_identifier) = (call_expression "memRealValue(pMem)" identifier (argument_list "(pMem)" ( identifier )))) ;) (expression_statement "uVar4 = pMem->flags;" (assignment_expression "uVar4 = pMem->flags" identifier = (field_expression "pMem->flags" identifier -> field_identifier)) ;) }))) }) (else_clause "else {\n            MVar8.r = (double)(pMem->u).i;\n          }" else (compound_statement "{\n            MVar8.r = (double)(pMem->u).i;\n          }" { (expression_statement "MVar8.r = (double)(pMem->u).i;" (assignment_expression "MVar8.r = (double)(pMem->u).i" (field_expression "MVar8.r" identifier . field_identifier) = (cast_expression "(double)(pMem->u).i" ( (type_descriptor "double" primitive_type) ) (field_expression "(pMem->u).i" (parenthesized_expression "(pMem->u)" ( (field_expression "pMem->u" identifier -> field_identifier) )) . field_identifier))) ;) }))) }) (else_clause "else {\n          MVar8 = pMem->u;\n        }" else (compound_statement "{\n          MVar8 = pMem->u;\n        }" { (expression_statement "MVar8 = pMem->u;" (assignment_expression "MVar8 = pMem->u" identifier = (field_expression "pMem->u" identifier -> field_identifier)) ;) }))) (expression_statement "(pMem->u).r = (double)MVar8;" (assignment_expression "(pMem->u).r = (double)MVar8" (field_expression "(pMem->u).r" (parenthesized_expression "(pMem->u)" ( (field_expression "pMem->u" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(double)MVar8" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "pMem->flags = uVar4 & 0x3e40 | 8;" (assignment_expression "pMem->flags = uVar4 & 0x3e40 | 8" (field_expression "pMem->flags" identifier -> field_identifier) = (binary_expression "uVar4 & 0x3e40 | 8" (binary_expression "uVar4 & 0x3e40" identifier & number_literal) | number_literal)) ;) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00044d62;" goto statement_identifier ;) })) (labeled_statement "LAB_00044e58:\n      pMem->flags = uVar4 | uVar4 >> 3 & 2;" statement_identifier : (expression_statement "pMem->flags = uVar4 | uVar4 >> 3 & 2;" (assignment_expression "pMem->flags = uVar4 | uVar4 >> 3 & 2" (field_expression "pMem->flags" identifier -> field_identifier) = (binary_expression "uVar4 | uVar4 >> 3 & 2" identifier | (binary_expression "uVar4 >> 3 & 2" (binary_expression "uVar4 >> 3" identifier >> number_literal) & number_literal))) ;)) (expression_statement "applyAffinity(pMem,'B',encoding);" (call_expression "applyAffinity(pMem,'B',encoding)" identifier (argument_list "(pMem,'B',encoding)" ( identifier , (char_literal "'B'" ' character ') , identifier ))) ;) (expression_statement "uVar4 = pMem->flags;" (assignment_expression "uVar4 = pMem->flags" identifier = (field_expression "pMem->flags" identifier -> field_identifier)) ;) (expression_statement "pMem->flags = uVar4 & 0xbfc3;" (assignment_expression "pMem->flags = uVar4 & 0xbfc3" (field_expression "pMem->flags" identifier -> field_identifier) = (binary_expression "uVar4 & 0xbfc3" identifier & number_literal)) ;) (if_statement "if (((uVar4 & 2) != 0) && (encoding != pMem->enc)) {\n        iVar5 = sqlite3VdbeMemTranslate(pMem,encoding);\n        goto LAB_00044d62;\n      }" if (parenthesized_expression "(((uVar4 & 2) != 0) && (encoding != pMem->enc))" ( (binary_expression "((uVar4 & 2) != 0) && (encoding != pMem->enc)" (parenthesized_expression "((uVar4 & 2) != 0)" ( (binary_expression "(uVar4 & 2) != 0" (parenthesized_expression "(uVar4 & 2)" ( (binary_expression "uVar4 & 2" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(encoding != pMem->enc)" ( (binary_expression "encoding != pMem->enc" identifier != (field_expression "pMem->enc" identifier -> field_identifier)) ))) )) (compound_statement "{\n        iVar5 = sqlite3VdbeMemTranslate(pMem,encoding);\n        goto LAB_00044d62;\n      }" { (expression_statement "iVar5 = sqlite3VdbeMemTranslate(pMem,encoding);" (assignment_expression "iVar5 = sqlite3VdbeMemTranslate(pMem,encoding)" identifier = (call_expression "sqlite3VdbeMemTranslate(pMem,encoding)" identifier (argument_list "(pMem,encoding)" ( identifier , identifier )))) ;) (goto_statement "goto LAB_00044d62;" goto statement_identifier ;) })) }))))) (labeled_statement "LAB_00044d60:\n    iVar5 = 0;" statement_identifier : (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_00044d62;" goto statement_identifier ;) })) (if_statement "if ((uVar4 & 0x2d) == 0) {\n    enc = pMem->enc;\n    z = pMem->z;\n    (pMem->u).r = 0.0;\n    if (pMem->n == 0) {\nLAB_00044d9e:\n      iVar5 = sqlite3Atoi64(z,(i64 *)(uint)enc,in_stack_ffffffa8,in_stack_ffffffac);\n      if (1 < iVar5) goto LAB_00044db7;\n      lVar2 = CONCAT44(ix._4_4_,(undefined4)ix);\n    }\n    else {\n      uVar6 = sqlite3AtoF(z,(double *)pMem,pMem->n,enc);\n      if (uVar6 < 2) {\n        enc = pMem->enc;\n        z = pMem->z;\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar1 = (pMem->u).r;\n      lVar2 = (longlong)ROUND(dVar1);\n      iStack_40 = (int)((ulonglong)lVar2 >> 0x20);\n      if (dVar1 != 0.0) {\n        r2._0_4_ = SUB84((double)lVar2,0);\n        local_24 = SUB84(dVar1,0);\n        if (local_24 == r2._0_4_) {\n          r2._4_4_ = (int)((ulonglong)(double)lVar2 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar1 >> 0x20);\n          if ((iStack_20 == r2._4_4_) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar4 = pMem->flags & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    (pMem->u).i = lVar2;\n    uVar4 = pMem->flags & 0x3e40 | 4;\n  }" if (parenthesized_expression "((uVar4 & 0x2d) == 0)" ( (binary_expression "(uVar4 & 0x2d) == 0" (parenthesized_expression "(uVar4 & 0x2d)" ( (binary_expression "uVar4 & 0x2d" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    enc = pMem->enc;\n    z = pMem->z;\n    (pMem->u).r = 0.0;\n    if (pMem->n == 0) {\nLAB_00044d9e:\n      iVar5 = sqlite3Atoi64(z,(i64 *)(uint)enc,in_stack_ffffffa8,in_stack_ffffffac);\n      if (1 < iVar5) goto LAB_00044db7;\n      lVar2 = CONCAT44(ix._4_4_,(undefined4)ix);\n    }\n    else {\n      uVar6 = sqlite3AtoF(z,(double *)pMem,pMem->n,enc);\n      if (uVar6 < 2) {\n        enc = pMem->enc;\n        z = pMem->z;\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar1 = (pMem->u).r;\n      lVar2 = (longlong)ROUND(dVar1);\n      iStack_40 = (int)((ulonglong)lVar2 >> 0x20);\n      if (dVar1 != 0.0) {\n        r2._0_4_ = SUB84((double)lVar2,0);\n        local_24 = SUB84(dVar1,0);\n        if (local_24 == r2._0_4_) {\n          r2._4_4_ = (int)((ulonglong)(double)lVar2 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar1 >> 0x20);\n          if ((iStack_20 == r2._4_4_) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar4 = pMem->flags & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    (pMem->u).i = lVar2;\n    uVar4 = pMem->flags & 0x3e40 | 4;\n  }" { (expression_statement "enc = pMem->enc;" (assignment_expression "enc = pMem->enc" identifier = (field_expression "pMem->enc" identifier -> field_identifier)) ;) (expression_statement "z = pMem->z;" (assignment_expression "z = pMem->z" identifier = (field_expression "pMem->z" identifier -> field_identifier)) ;) (expression_statement "(pMem->u).r = 0.0;" (assignment_expression "(pMem->u).r = 0.0" (field_expression "(pMem->u).r" (parenthesized_expression "(pMem->u)" ( (field_expression "pMem->u" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (if_statement "if (pMem->n == 0) {\nLAB_00044d9e:\n      iVar5 = sqlite3Atoi64(z,(i64 *)(uint)enc,in_stack_ffffffa8,in_stack_ffffffac);\n      if (1 < iVar5) goto LAB_00044db7;\n      lVar2 = CONCAT44(ix._4_4_,(undefined4)ix);\n    }\n    else {\n      uVar6 = sqlite3AtoF(z,(double *)pMem,pMem->n,enc);\n      if (uVar6 < 2) {\n        enc = pMem->enc;\n        z = pMem->z;\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar1 = (pMem->u).r;\n      lVar2 = (longlong)ROUND(dVar1);\n      iStack_40 = (int)((ulonglong)lVar2 >> 0x20);\n      if (dVar1 != 0.0) {\n        r2._0_4_ = SUB84((double)lVar2,0);\n        local_24 = SUB84(dVar1,0);\n        if (local_24 == r2._0_4_) {\n          r2._4_4_ = (int)((ulonglong)(double)lVar2 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar1 >> 0x20);\n          if ((iStack_20 == r2._4_4_) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar4 = pMem->flags & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }" if (parenthesized_expression "(pMem->n == 0)" ( (binary_expression "pMem->n == 0" (field_expression "pMem->n" identifier -> field_identifier) == number_literal) )) (compound_statement "{\nLAB_00044d9e:\n      iVar5 = sqlite3Atoi64(z,(i64 *)(uint)enc,in_stack_ffffffa8,in_stack_ffffffac);\n      if (1 < iVar5) goto LAB_00044db7;\n      lVar2 = CONCAT44(ix._4_4_,(undefined4)ix);\n    }" { (labeled_statement "LAB_00044d9e:\n      iVar5 = sqlite3Atoi64(z,(i64 *)(uint)enc,in_stack_ffffffa8,in_stack_ffffffac);" statement_identifier : (expression_statement "iVar5 = sqlite3Atoi64(z,(i64 *)(uint)enc,in_stack_ffffffa8,in_stack_ffffffac);" (assignment_expression "iVar5 = sqlite3Atoi64(z,(i64 *)(uint)enc,in_stack_ffffffa8,in_stack_ffffffac)" identifier = (call_expression "sqlite3Atoi64(z,(i64 *)(uint)enc,in_stack_ffffffa8,in_stack_ffffffac)" identifier (argument_list "(z,(i64 *)(uint)enc,in_stack_ffffffa8,in_stack_ffffffac)" ( identifier , (cast_expression "(i64 *)(uint)enc" ( (type_descriptor "i64 *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)enc" ( (type_descriptor "uint" type_identifier) ) identifier)) , identifier , identifier )))) ;)) (if_statement "if (1 < iVar5) goto LAB_00044db7;" if (parenthesized_expression "(1 < iVar5)" ( (binary_expression "1 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_00044db7;" goto statement_identifier ;)) (expression_statement "lVar2 = CONCAT44(ix._4_4_,(undefined4)ix);" (assignment_expression "lVar2 = CONCAT44(ix._4_4_,(undefined4)ix)" identifier = (call_expression "CONCAT44(ix._4_4_,(undefined4)ix)" identifier (argument_list "(ix._4_4_,(undefined4)ix)" ( (field_expression "ix._4_4_" identifier . field_identifier) , (cast_expression "(undefined4)ix" ( (type_descriptor "undefined4" type_identifier) ) identifier) )))) ;) }) (else_clause "else {\n      uVar6 = sqlite3AtoF(z,(double *)pMem,pMem->n,enc);\n      if (uVar6 < 2) {\n        enc = pMem->enc;\n        z = pMem->z;\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar1 = (pMem->u).r;\n      lVar2 = (longlong)ROUND(dVar1);\n      iStack_40 = (int)((ulonglong)lVar2 >> 0x20);\n      if (dVar1 != 0.0) {\n        r2._0_4_ = SUB84((double)lVar2,0);\n        local_24 = SUB84(dVar1,0);\n        if (local_24 == r2._0_4_) {\n          r2._4_4_ = (int)((ulonglong)(double)lVar2 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar1 >> 0x20);\n          if ((iStack_20 == r2._4_4_) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar4 = pMem->flags & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }" else (compound_statement "{\n      uVar6 = sqlite3AtoF(z,(double *)pMem,pMem->n,enc);\n      if (uVar6 < 2) {\n        enc = pMem->enc;\n        z = pMem->z;\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar1 = (pMem->u).r;\n      lVar2 = (longlong)ROUND(dVar1);\n      iStack_40 = (int)((ulonglong)lVar2 >> 0x20);\n      if (dVar1 != 0.0) {\n        r2._0_4_ = SUB84((double)lVar2,0);\n        local_24 = SUB84(dVar1,0);\n        if (local_24 == r2._0_4_) {\n          r2._4_4_ = (int)((ulonglong)(double)lVar2 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar1 >> 0x20);\n          if ((iStack_20 == r2._4_4_) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar4 = pMem->flags & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }" { (expression_statement "uVar6 = sqlite3AtoF(z,(double *)pMem,pMem->n,enc);" (assignment_expression "uVar6 = sqlite3AtoF(z,(double *)pMem,pMem->n,enc)" identifier = (call_expression "sqlite3AtoF(z,(double *)pMem,pMem->n,enc)" identifier (argument_list "(z,(double *)pMem,pMem->n,enc)" ( identifier , (cast_expression "(double *)pMem" ( (type_descriptor "double *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (field_expression "pMem->n" identifier -> field_identifier) , identifier )))) ;) (if_statement "if (uVar6 < 2) {\n        enc = pMem->enc;\n        z = pMem->z;\n        goto LAB_00044d9e;\n      }" if (parenthesized_expression "(uVar6 < 2)" ( (binary_expression "uVar6 < 2" identifier < number_literal) )) (compound_statement "{\n        enc = pMem->enc;\n        z = pMem->z;\n        goto LAB_00044d9e;\n      }" { (expression_statement "enc = pMem->enc;" (assignment_expression "enc = pMem->enc" identifier = (field_expression "pMem->enc" identifier -> field_identifier)) ;) (expression_statement "z = pMem->z;" (assignment_expression "z = pMem->z" identifier = (field_expression "pMem->z" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00044d9e;" goto statement_identifier ;) })) (labeled_statement "LAB_00044db7:\n      dVar1 = (pMem->u).r;" statement_identifier : (expression_statement "dVar1 = (pMem->u).r;" (assignment_expression "dVar1 = (pMem->u).r" identifier = (field_expression "(pMem->u).r" (parenthesized_expression "(pMem->u)" ( (field_expression "pMem->u" identifier -> field_identifier) )) . field_identifier)) ;)) (expression_statement "lVar2 = (longlong)ROUND(dVar1);" (assignment_expression "lVar2 = (longlong)ROUND(dVar1)" identifier = (cast_expression "(longlong)ROUND(dVar1)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar1)" identifier (argument_list "(dVar1)" ( identifier ))))) ;) (expression_statement "iStack_40 = (int)((ulonglong)lVar2 >> 0x20);" (assignment_expression "iStack_40 = (int)((ulonglong)lVar2 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)lVar2 >> 0x20" (cast_expression "(ulonglong)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (dVar1 != 0.0) {\n        r2._0_4_ = SUB84((double)lVar2,0);\n        local_24 = SUB84(dVar1,0);\n        if (local_24 == r2._0_4_) {\n          r2._4_4_ = (int)((ulonglong)(double)lVar2 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar1 >> 0x20);\n          if ((iStack_20 == r2._4_4_) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar4 = pMem->flags & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }" if (parenthesized_expression "(dVar1 != 0.0)" ( (binary_expression "dVar1 != 0.0" identifier != number_literal) )) (compound_statement "{\n        r2._0_4_ = SUB84((double)lVar2,0);\n        local_24 = SUB84(dVar1,0);\n        if (local_24 == r2._0_4_) {\n          r2._4_4_ = (int)((ulonglong)(double)lVar2 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar1 >> 0x20);\n          if ((iStack_20 == r2._4_4_) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar4 = pMem->flags & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }" { (expression_statement "r2._0_4_ = SUB84((double)lVar2,0);" (assignment_expression "r2._0_4_ = SUB84((double)lVar2,0)" (field_expression "r2._0_4_" identifier . field_identifier) = (call_expression "SUB84((double)lVar2,0)" identifier (argument_list "((double)lVar2,0)" ( (cast_expression "(double)lVar2" ( (type_descriptor "double" primitive_type) ) identifier) , number_literal )))) ;) (expression_statement "local_24 = SUB84(dVar1,0);" (assignment_expression "local_24 = SUB84(dVar1,0)" identifier = (call_expression "SUB84(dVar1,0)" identifier (argument_list "(dVar1,0)" ( identifier , number_literal )))) ;) (if_statement "if (local_24 == r2._0_4_) {\n          r2._4_4_ = (int)((ulonglong)(double)lVar2 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar1 >> 0x20);\n          if ((iStack_20 == r2._4_4_) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }" if (parenthesized_expression "(local_24 == r2._0_4_)" ( (binary_expression "local_24 == r2._0_4_" identifier == (field_expression "r2._0_4_" identifier . field_identifier)) )) (compound_statement "{\n          r2._4_4_ = (int)((ulonglong)(double)lVar2 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar1 >> 0x20);\n          if ((iStack_20 == r2._4_4_) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }" { (expression_statement "r2._4_4_ = (int)((ulonglong)(double)lVar2 >> 0x20);" (assignment_expression "r2._4_4_ = (int)((ulonglong)(double)lVar2 >> 0x20)" (field_expression "r2._4_4_" identifier . field_identifier) = (cast_expression "(int)((ulonglong)(double)lVar2 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)(double)lVar2 >> 0x20)" ( (binary_expression "(ulonglong)(double)lVar2 >> 0x20" (cast_expression "(ulonglong)(double)lVar2" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(double)lVar2" ( (type_descriptor "double" primitive_type) ) identifier)) >> number_literal) )))) ;) (expression_statement "iStack_20 = (int)((ulonglong)dVar1 >> 0x20);" (assignment_expression "iStack_20 = (int)((ulonglong)dVar1 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)dVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)dVar1 >> 0x20)" ( (binary_expression "(ulonglong)dVar1 >> 0x20" (cast_expression "(ulonglong)dVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((iStack_20 == r2._4_4_) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;" if (parenthesized_expression "((iStack_20 == r2._4_4_) && (iStack_40 + 0x80000U < 0x100000))" ( (binary_expression "(iStack_20 == r2._4_4_) && (iStack_40 + 0x80000U < 0x100000)" (parenthesized_expression "(iStack_20 == r2._4_4_)" ( (binary_expression "iStack_20 == r2._4_4_" identifier == (field_expression "r2._4_4_" identifier . field_identifier)) )) && (parenthesized_expression "(iStack_40 + 0x80000U < 0x100000)" ( (binary_expression "iStack_40 + 0x80000U < 0x100000" (binary_expression "iStack_40 + 0x80000U" identifier + number_literal) < number_literal) ))) )) (goto_statement "goto LAB_00044f38;" goto statement_identifier ;)) })) (expression_statement "uVar4 = pMem->flags & 0x3e40 | 8;" (assignment_expression "uVar4 = pMem->flags & 0x3e40 | 8" identifier = (binary_expression "pMem->flags & 0x3e40 | 8" (binary_expression "pMem->flags & 0x3e40" (field_expression "pMem->flags" identifier -> field_identifier) & number_literal) | number_literal)) ;) (goto_statement "goto LAB_00044e23;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00044f38:\n    (pMem->u).i = lVar2;" statement_identifier : (expression_statement "(pMem->u).i = lVar2;" (assignment_expression "(pMem->u).i = lVar2" (field_expression "(pMem->u).i" (parenthesized_expression "(pMem->u)" ( (field_expression "pMem->u" identifier -> field_identifier) )) . field_identifier) = identifier) ;)) (expression_statement "uVar4 = pMem->flags & 0x3e40 | 4;" (assignment_expression "uVar4 = pMem->flags & 0x3e40 | 4" identifier = (binary_expression "pMem->flags & 0x3e40 | 4" (binary_expression "pMem->flags & 0x3e40" (field_expression "pMem->flags" identifier -> field_identifier) & number_literal) | number_literal)) ;) })) (labeled_statement "LAB_00044e23:\n  pMem->flags = uVar4 & 0xbfed;" statement_identifier : (expression_statement "pMem->flags = uVar4 & 0xbfed;" (assignment_expression "pMem->flags = uVar4 & 0xbfed" (field_expression "pMem->flags" identifier -> field_identifier) = (binary_expression "uVar4 & 0xbfed" identifier & number_literal)) ;)) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00044d62:\n  if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }" statement_identifier : (if_statement "if (iVar3 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return iVar5;\n  }" if (parenthesized_expression "(iVar3 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar3 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return iVar5;\n  }" { (return_statement "return iVar5;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "undefined4 __regparm3 FUN_00044cd0(double *param_1,byte param_2,char param_3)\n\n{\n  double dVar1;\n  int iVar2;\n  ushort uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  undefined1 uVar7;\n  int in_GS_OFFSET;\n  longdouble lVar8;\n  double dVar9;\n  int iStack_40;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  int iStack_20;\n  int local_1c;\n  int iStack_18;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar3 = *(ushort *)(param_1 + 1);\n  if ((uVar3 & 1) != 0) goto LAB_00044d60;\n  if (param_2 != 0x43) {\n    if (param_2 < 0x44) {\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    uVar4 = 0;\n    goto LAB_00044d62;\n  }\n  if ((uVar3 & 0x2d) == 0) {\n    uVar7 = *(undefined1 *)((int)param_1 + 10);\n    *param_1 = 0.0;\n    if (*(int *)((int)param_1 + 0xc) == 0) {\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }\n    else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    *param_1 = dVar1;\n    uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n  }\nLAB_00044e23:\n  *(ushort *)(param_1 + 1) = uVar3 & 0xbfed;\n  uVar4 = 0;\nLAB_00044d62:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }\n                    \n  FUN_000d1450();\n}\n\n" (function_definition "undefined4 __regparm3 FUN_00044cd0(double *param_1,byte param_2,char param_3)\n\n{\n  double dVar1;\n  int iVar2;\n  ushort uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  undefined1 uVar7;\n  int in_GS_OFFSET;\n  longdouble lVar8;\n  double dVar9;\n  int iStack_40;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  int iStack_20;\n  int local_1c;\n  int iStack_18;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar3 = *(ushort *)(param_1 + 1);\n  if ((uVar3 & 1) != 0) goto LAB_00044d60;\n  if (param_2 != 0x43) {\n    if (param_2 < 0x44) {\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    uVar4 = 0;\n    goto LAB_00044d62;\n  }\n  if ((uVar3 & 0x2d) == 0) {\n    uVar7 = *(undefined1 *)((int)param_1 + 10);\n    *param_1 = 0.0;\n    if (*(int *)((int)param_1 + 0xc) == 0) {\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }\n    else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    *param_1 = dVar1;\n    uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n  }\nLAB_00044e23:\n  *(ushort *)(param_1 + 1) = uVar3 & 0xbfed;\n  uVar4 = 0;\nLAB_00044d62:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }\n                    \n  FUN_000d1450();\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00044cd0(double *param_1,byte param_2,char param_3)" identifier (parameter_list "(double *param_1,byte param_2,char param_3)" ( (parameter_declaration "double *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte param_2" type_identifier identifier) , (parameter_declaration "char param_3" primitive_type identifier) ))) (compound_statement "{\n  double dVar1;\n  int iVar2;\n  ushort uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  undefined1 uVar7;\n  int in_GS_OFFSET;\n  longdouble lVar8;\n  double dVar9;\n  int iStack_40;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  int iStack_20;\n  int local_1c;\n  int iStack_18;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar3 = *(ushort *)(param_1 + 1);\n  if ((uVar3 & 1) != 0) goto LAB_00044d60;\n  if (param_2 != 0x43) {\n    if (param_2 < 0x44) {\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    uVar4 = 0;\n    goto LAB_00044d62;\n  }\n  if ((uVar3 & 0x2d) == 0) {\n    uVar7 = *(undefined1 *)((int)param_1 + 10);\n    *param_1 = 0.0;\n    if (*(int *)((int)param_1 + 0xc) == 0) {\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }\n    else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    *param_1 = dVar1;\n    uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n  }\nLAB_00044e23:\n  *(ushort *)(param_1 + 1) = uVar3 & 0xbfed;\n  uVar4 = 0;\nLAB_00044d62:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }\n                    \n  FUN_000d1450();\n}" { (declaration "double dVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "ushort uVar3;" type_identifier identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "undefined1 uVar7;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "longdouble lVar8;" type_identifier identifier ;) (declaration "double dVar9;" primitive_type identifier ;) (declaration "int iStack_40;" primitive_type identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "int local_24;" primitive_type identifier ;) (declaration "int iStack_20;" primitive_type identifier ;) (declaration "int local_1c;" primitive_type identifier ;) (declaration "int iStack_18;" primitive_type identifier ;) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(ushort *)(param_1 + 1);" (assignment_expression "uVar3 = *(ushort *)(param_1 + 1)" identifier = (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))))) ;) (if_statement "if ((uVar3 & 1) != 0) goto LAB_00044d60;" if (parenthesized_expression "((uVar3 & 1) != 0)" ( (binary_expression "(uVar3 & 1) != 0" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00044d60;" goto statement_identifier ;)) (if_statement "if (param_2 != 0x43) {\n    if (param_2 < 0x44) {\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    uVar4 = 0;\n    goto LAB_00044d62;\n  }" if (parenthesized_expression "(param_2 != 0x43)" ( (binary_expression "param_2 != 0x43" identifier != number_literal) )) (compound_statement "{\n    if (param_2 < 0x44) {\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    uVar4 = 0;\n    goto LAB_00044d62;\n  }" { (if_statement "if (param_2 < 0x44) {\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }" if (parenthesized_expression "(param_2 < 0x44)" ( (binary_expression "param_2 < 0x44" identifier < number_literal) )) (compound_statement "{\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }" { (if_statement "if (param_2 != 0x41) goto LAB_00044e58;" if (parenthesized_expression "(param_2 != 0x41)" ( (binary_expression "param_2 != 0x41" identifier != number_literal) )) (goto_statement "goto LAB_00044e58;" goto statement_identifier ;)) (if_statement "if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" if (parenthesized_expression "((uVar3 & 0x10) != 0)" ( (binary_expression "(uVar3 & 0x10) != 0" (parenthesized_expression "(uVar3 & 0x10)" ( (binary_expression "uVar3 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" { (expression_statement "*(ushort *)(param_1 + 1) = uVar3 & 0x3e50;" (assignment_expression "*(ushort *)(param_1 + 1) = uVar3 & 0x3e50" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (binary_expression "uVar3 & 0x3e50" identifier & number_literal)) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00044d62;" goto statement_identifier ;) })) (expression_statement "FUN_00036fb0();" (call_expression "FUN_00036fb0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" if (parenthesized_expression "((*(ushort *)(param_1 + 1) & 2) != 0)" ( (binary_expression "(*(ushort *)(param_1 + 1) & 2) != 0" (parenthesized_expression "(*(ushort *)(param_1 + 1) & 2)" ( (binary_expression "*(ushort *)(param_1 + 1) & 2" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" { (expression_statement "*(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;" (assignment_expression "*(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40 | 0x10" (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00044d62;" goto statement_identifier ;) })) }) (else_clause "else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }" else (if_statement "if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }" if (parenthesized_expression "(param_2 == 0x44)" ( (binary_expression "param_2 == 0x44" identifier == number_literal) )) (compound_statement "{\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }" { (expression_statement "dVar9 = (double)FUN_00024fb0();" (assignment_expression "dVar9 = (double)FUN_00024fb0()" identifier = (cast_expression "(double)FUN_00024fb0()" ( (type_descriptor "double" primitive_type) ) (call_expression "FUN_00024fb0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "*param_1 = dVar9;" (assignment_expression "*param_1 = dVar9" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "*(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;" (assignment_expression "*(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40 | 4" (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) & number_literal) | number_literal)) ;) }) (else_clause "else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }" else (compound_statement "{\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }" { (if_statement "if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" if (parenthesized_expression "(param_2 == 0x45)" ( (binary_expression "param_2 == 0x45" identifier == number_literal) )) (compound_statement "{\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" { (if_statement "if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\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          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }" { (if_statement "if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }" if (parenthesized_expression "((uVar3 & 0x24) == 0)" ( (binary_expression "(uVar3 & 0x24) == 0" (parenthesized_expression "(uVar3 & 0x24)" ( (binary_expression "uVar3 & 0x24" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }" { (if_statement "if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }" if (parenthesized_expression "((uVar3 & 0x12) == 0)" ( (binary_expression "(uVar3 & 0x12) == 0" (parenthesized_expression "(uVar3 & 0x12)" ( (binary_expression "uVar3 & 0x12" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n              lVar8 = (longdouble)0;\n            }" { (expression_statement "lVar8 = (longdouble)0;" (assignment_expression "lVar8 = (longdouble)0" identifier = (cast_expression "(longdouble)0" ( (type_descriptor "longdouble" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }" else (compound_statement "{\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }" { (expression_statement "lVar8 = (longdouble)FUN_00024540();" (assignment_expression "lVar8 = (longdouble)FUN_00024540()" identifier = (cast_expression "(longdouble)FUN_00024540()" ( (type_descriptor "longdouble" type_identifier) ) (call_expression "FUN_00024540()" identifier (argument_list "()" ( ))))) ;) (expression_statement "uVar3 = *(ushort *)(param_1 + 1);" (assignment_expression "uVar3 = *(ushort *)(param_1 + 1)" identifier = (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))))) ;) }))) }) (else_clause "else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }" else (compound_statement "{\n            lVar8 = (longdouble)(longlong)*param_1;\n          }" { (expression_statement "lVar8 = (longdouble)(longlong)*param_1;" (assignment_expression "lVar8 = (longdouble)(longlong)*param_1" identifier = (binary_expression "(longdouble)(longlong)*param_1" (call_expression "(longdouble)(longlong)" (parenthesized_expression "(longdouble)" ( identifier )) (argument_list "(longlong)" ( identifier ))) * identifier)) ;) }))) }) (else_clause "else {\n          lVar8 = (longdouble)*param_1;\n        }" else (compound_statement "{\n          lVar8 = (longdouble)*param_1;\n        }" { (expression_statement "lVar8 = (longdouble)*param_1;" (assignment_expression "lVar8 = (longdouble)*param_1" identifier = (binary_expression "(longdouble)*param_1" (parenthesized_expression "(longdouble)" ( identifier )) * identifier)) ;) }))) (expression_statement "*param_1 = (double)lVar8;" (assignment_expression "*param_1 = (double)lVar8" (pointer_expression "*param_1" * identifier) = (cast_expression "(double)lVar8" ( (type_descriptor "double" primitive_type) ) identifier)) ;) (expression_statement "*(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;" (assignment_expression "*(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (binary_expression "uVar3 & 0x3e40 | 8" (binary_expression "uVar3 & 0x3e40" identifier & number_literal) | number_literal)) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_00044d62;" goto statement_identifier ;) })) (labeled_statement "LAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;" statement_identifier : (expression_statement "*(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;" (assignment_expression "*(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (binary_expression "uVar3 | uVar3 >> 3 & 2" identifier | (binary_expression "uVar3 >> 3 & 2" (binary_expression "uVar3 >> 3" identifier >> number_literal) & number_literal))) ;)) (expression_statement "FUN_00036fb0();" (call_expression "FUN_00036fb0()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar3 = *(ushort *)(param_1 + 1);" (assignment_expression "uVar3 = *(ushort *)(param_1 + 1)" identifier = (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) ))))) ;) (expression_statement "*(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;" (assignment_expression "*(ushort *)(param_1 + 1) = uVar3 & 0xbfc3" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (binary_expression "uVar3 & 0xbfc3" identifier & number_literal)) ;) (if_statement "if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }" if (parenthesized_expression "(((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10)))" ( (binary_expression "((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))" (parenthesized_expression "((uVar3 & 2) != 0)" ( (binary_expression "(uVar3 & 2) != 0" (parenthesized_expression "(uVar3 & 2)" ( (binary_expression "uVar3 & 2" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(param_3 != *(char *)((int)param_1 + 10))" ( (binary_expression "param_3 != *(char *)((int)param_1 + 10)" identifier != (pointer_expression "*(char *)((int)param_1 + 10)" * (cast_expression "(char *)((int)param_1 + 10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 10)" ( (binary_expression "(int)param_1 + 10" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ))) )) (compound_statement "{\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }" { (expression_statement "uVar4 = FUN_000323c0();" (assignment_expression "uVar4 = FUN_000323c0()" identifier = (call_expression "FUN_000323c0()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_00044d62;" goto statement_identifier ;) })) }))))) (labeled_statement "LAB_00044d60:\n    uVar4 = 0;" statement_identifier : (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_00044d62;" goto statement_identifier ;) })) (if_statement "if ((uVar3 & 0x2d) == 0) {\n    uVar7 = *(undefined1 *)((int)param_1 + 10);\n    *param_1 = 0.0;\n    if (*(int *)((int)param_1 + 0xc) == 0) {\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }\n    else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    *param_1 = dVar1;\n    uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n  }" if (parenthesized_expression "((uVar3 & 0x2d) == 0)" ( (binary_expression "(uVar3 & 0x2d) == 0" (parenthesized_expression "(uVar3 & 0x2d)" ( (binary_expression "uVar3 & 0x2d" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar7 = *(undefined1 *)((int)param_1 + 10);\n    *param_1 = 0.0;\n    if (*(int *)((int)param_1 + 0xc) == 0) {\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }\n    else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    *param_1 = dVar1;\n    uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n  }" { (expression_statement "uVar7 = *(undefined1 *)((int)param_1 + 10);" (assignment_expression "uVar7 = *(undefined1 *)((int)param_1 + 10)" identifier = (pointer_expression "*(undefined1 *)((int)param_1 + 10)" * (cast_expression "(undefined1 *)((int)param_1 + 10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 10)" ( (binary_expression "(int)param_1 + 10" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*param_1 = 0.0;" (assignment_expression "*param_1 = 0.0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (if_statement "if (*(int *)((int)param_1 + 0xc) == 0) {\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }\n    else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }" if (parenthesized_expression "(*(int *)((int)param_1 + 0xc) == 0)" ( (binary_expression "*(int *)((int)param_1 + 0xc) == 0" (pointer_expression "*(int *)((int)param_1 + 0xc)" * (cast_expression "(int *)((int)param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0xc)" ( (binary_expression "(int)param_1 + 0xc" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }" { (labeled_statement "LAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);" statement_identifier : (expression_statement "iVar5 = FUN_0001e220(uVar7);" (assignment_expression "iVar5 = FUN_0001e220(uVar7)" identifier = (call_expression "FUN_0001e220(uVar7)" identifier (argument_list "(uVar7)" ( identifier )))) ;)) (if_statement "if (1 < iVar5) goto LAB_00044db7;" if (parenthesized_expression "(1 < iVar5)" ( (binary_expression "1 < iVar5" number_literal < identifier) )) (goto_statement "goto LAB_00044db7;" goto statement_identifier ;)) (expression_statement "dVar1 = (double)CONCAT44(local_28,local_2c);" (assignment_expression "dVar1 = (double)CONCAT44(local_28,local_2c)" identifier = (cast_expression "(double)CONCAT44(local_28,local_2c)" ( (type_descriptor "double" primitive_type) ) (call_expression "CONCAT44(local_28,local_2c)" identifier (argument_list "(local_28,local_2c)" ( identifier , identifier ))))) ;) }) (else_clause "else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }" else (compound_statement "{\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }" { (expression_statement "uVar6 = FUN_00023dc0(uVar7);" (assignment_expression "uVar6 = FUN_00023dc0(uVar7)" identifier = (call_expression "FUN_00023dc0(uVar7)" identifier (argument_list "(uVar7)" ( identifier )))) ;) (if_statement "if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }" if (parenthesized_expression "(uVar6 < 2)" ( (binary_expression "uVar6 < 2" identifier < number_literal) )) (compound_statement "{\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }" { (expression_statement "uVar7 = *(undefined1 *)((int)param_1 + 10);" (assignment_expression "uVar7 = *(undefined1 *)((int)param_1 + 10)" identifier = (pointer_expression "*(undefined1 *)((int)param_1 + 10)" * (cast_expression "(undefined1 *)((int)param_1 + 10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 10)" ( (binary_expression "(int)param_1 + 10" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (goto_statement "goto LAB_00044d9e;" goto statement_identifier ;) })) (labeled_statement "LAB_00044db7:\n      dVar9 = *param_1;" statement_identifier : (expression_statement "dVar9 = *param_1;" (assignment_expression "dVar9 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;)) (expression_statement "dVar1 = (double)(longlong)ROUND(dVar9);" (assignment_expression "dVar1 = (double)(longlong)ROUND(dVar9)" identifier = (cast_expression "(double)(longlong)ROUND(dVar9)" ( (type_descriptor "double" primitive_type) ) (cast_expression "(longlong)ROUND(dVar9)" ( (type_descriptor "longlong" type_identifier) ) (call_expression "ROUND(dVar9)" identifier (argument_list "(dVar9)" ( identifier )))))) ;) (expression_statement "iStack_40 = (int)((ulonglong)dVar1 >> 0x20);" (assignment_expression "iStack_40 = (int)((ulonglong)dVar1 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)dVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)dVar1 >> 0x20)" ( (binary_expression "(ulonglong)dVar1 >> 0x20" (cast_expression "(ulonglong)dVar1" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }" if (parenthesized_expression "(dVar9 != 0.0)" ( (binary_expression "dVar9 != 0.0" identifier != number_literal) )) (compound_statement "{\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }" { (expression_statement "local_1c = SUB84((double)(longlong)dVar1,0);" (assignment_expression "local_1c = SUB84((double)(longlong)dVar1,0)" identifier = (call_expression "SUB84((double)(longlong)dVar1,0)" identifier (argument_list "((double)(longlong)dVar1,0)" ( (cast_expression "(double)(longlong)dVar1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(longlong)dVar1" ( (type_descriptor "longlong" type_identifier) ) identifier)) , number_literal )))) ;) (expression_statement "local_24 = SUB84(dVar9,0);" (assignment_expression "local_24 = SUB84(dVar9,0)" identifier = (call_expression "SUB84(dVar9,0)" identifier (argument_list "(dVar9,0)" ( identifier , number_literal )))) ;) (if_statement "if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }" if (parenthesized_expression "(local_24 == local_1c)" ( (binary_expression "local_24 == local_1c" identifier == identifier) )) (compound_statement "{\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }" { (expression_statement "iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);" (assignment_expression "iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)(double)(longlong)dVar1 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)(double)(longlong)dVar1 >> 0x20)" ( (binary_expression "(ulonglong)(double)(longlong)dVar1 >> 0x20" (cast_expression "(ulonglong)(double)(longlong)dVar1" ( (type_descriptor "ulonglong" type_identifier) ) (cast_expression "(double)(longlong)dVar1" ( (type_descriptor "double" primitive_type) ) (cast_expression "(longlong)dVar1" ( (type_descriptor "longlong" type_identifier) ) identifier))) >> number_literal) )))) ;) (expression_statement "iStack_20 = (int)((ulonglong)dVar9 >> 0x20);" (assignment_expression "iStack_20 = (int)((ulonglong)dVar9 >> 0x20)" identifier = (cast_expression "(int)((ulonglong)dVar9 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)dVar9 >> 0x20)" ( (binary_expression "(ulonglong)dVar9 >> 0x20" (cast_expression "(ulonglong)dVar9" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (if_statement "if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;" if (parenthesized_expression "((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000))" ( (binary_expression "(iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)" (parenthesized_expression "(iStack_20 == iStack_18)" ( (binary_expression "iStack_20 == iStack_18" identifier == identifier) )) && (parenthesized_expression "(iStack_40 + 0x80000U < 0x100000)" ( (binary_expression "iStack_40 + 0x80000U < 0x100000" (binary_expression "iStack_40 + 0x80000U" identifier + number_literal) < number_literal) ))) )) (goto_statement "goto LAB_00044f38;" goto statement_identifier ;)) })) (expression_statement "uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;" (assignment_expression "uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8" identifier = (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40 | 8" (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) & number_literal) | number_literal)) ;) (goto_statement "goto LAB_00044e23;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00044f38:\n    *param_1 = dVar1;" statement_identifier : (expression_statement "*param_1 = dVar1;" (assignment_expression "*param_1 = dVar1" (pointer_expression "*param_1" * identifier) = identifier) ;)) (expression_statement "uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;" (assignment_expression "uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4" identifier = (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40 | 4" (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) & number_literal) | number_literal)) ;) })) (labeled_statement "LAB_00044e23:\n  *(ushort *)(param_1 + 1) = uVar3 & 0xbfed;" statement_identifier : (expression_statement "*(ushort *)(param_1 + 1) = uVar3 & 0xbfed;" (assignment_expression "*(ushort *)(param_1 + 1) = uVar3 & 0xbfed" (pointer_expression "*(ushort *)(param_1 + 1)" * (cast_expression "(ushort *)(param_1 + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (binary_expression "uVar3 & 0xbfed" identifier & number_literal)) ;)) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (labeled_statement "LAB_00044d62:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }" statement_identifier : (if_statement "if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }" if (parenthesized_expression "(iVar2 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar2 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return uVar4;\n  }" { (return_statement "return uVar4;" return identifier ;) }))) (expression_statement "FUN_000d1450();" (call_expression "FUN_000d1450()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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 IDENT + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 { (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) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( IDENT ))) * IDENT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (binary_expression IDENT & LIT) | LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT | (binary_expression (binary_expression IDENT >> LIT) & LIT))) ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (goto_statement goto statement_identifier ;) })) }))))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression 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 TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < 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 TYPE) ) IDENT) + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT )))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT))) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < LIT) ))) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) | LIT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT & LIT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "undefined4 __regparm3 FUN_00044cd0(double *param_1,byte param_2,char param_3)\n\n{\n  double dVar1;\n  int iVar2;\n  ushort uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  undefined1 uVar7;\n  int in_GS_OFFSET;\n  longdouble lVar8;\n  double dVar9;\n  int iStack_40;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  int iStack_20;\n  int local_1c;\n  int iStack_18;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar3 = *(ushort *)(param_1 + 1);\n  if ((uVar3 & 1) != 0) goto LAB_00044d60;\n  if (param_2 != 0x43) {\n    if (param_2 < 0x44) {\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    uVar4 = 0;\n    goto LAB_00044d62;\n  }\n  if ((uVar3 & 0x2d) == 0) {\n    uVar7 = *(undefined1 *)((int)param_1 + 10);\n    *param_1 = 0.0;\n    if (*(int *)((int)param_1 + 0xc) == 0) {\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }\n    else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    *param_1 = dVar1;\n    uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n  }\nLAB_00044e23:\n  *(ushort *)(param_1 + 1) = uVar3 & 0xbfed;\n  uVar4 = 0;\nLAB_00044d62:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }\n                    \n  FUN_000d1450();\n}" (type_identifier "undefined4") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00044cd0(double *param_1,byte param_2,char param_3)" (identifier "FUN_00044cd0") (parameter_list "(double *param_1,byte param_2,char param_3)" (( "(") (parameter_declaration "double *param_1" (primitive_type "double") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "byte param_2" (type_identifier "byte") (identifier "param_2")) (, ",") (parameter_declaration "char param_3" (primitive_type "char") (identifier "param_3")) () ")"))) (compound_statement "{\n  double dVar1;\n  int iVar2;\n  ushort uVar3;\n  undefined4 uVar4;\n  int iVar5;\n  uint uVar6;\n  undefined1 uVar7;\n  int in_GS_OFFSET;\n  longdouble lVar8;\n  double dVar9;\n  int iStack_40;\n  undefined4 local_2c;\n  undefined4 local_28;\n  int local_24;\n  int iStack_20;\n  int local_1c;\n  int iStack_18;\n  \n  iVar2 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar3 = *(ushort *)(param_1 + 1);\n  if ((uVar3 & 1) != 0) goto LAB_00044d60;\n  if (param_2 != 0x43) {\n    if (param_2 < 0x44) {\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    uVar4 = 0;\n    goto LAB_00044d62;\n  }\n  if ((uVar3 & 0x2d) == 0) {\n    uVar7 = *(undefined1 *)((int)param_1 + 10);\n    *param_1 = 0.0;\n    if (*(int *)((int)param_1 + 0xc) == 0) {\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }\n    else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    *param_1 = dVar1;\n    uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n  }\nLAB_00044e23:\n  *(ushort *)(param_1 + 1) = uVar3 & 0xbfed;\n  uVar4 = 0;\nLAB_00044d62:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }\n                    \n  FUN_000d1450();\n}" ({ "{") (declaration "double dVar1;" (primitive_type "double") (identifier "dVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "ushort uVar3;" (type_identifier "ushort") (identifier "uVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "undefined1 uVar7;" (type_identifier "undefined1") (identifier "uVar7") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "longdouble lVar8;" (type_identifier "longdouble") (identifier "lVar8") (; ";")) (declaration "double dVar9;" (primitive_type "double") (identifier "dVar9") (; ";")) (declaration "int iStack_40;" (primitive_type "int") (identifier "iStack_40") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "int local_24;" (primitive_type "int") (identifier "local_24") (; ";")) (declaration "int iStack_20;" (primitive_type "int") (identifier "iStack_20") (; ";")) (declaration "int local_1c;" (primitive_type "int") (identifier "local_1c") (; ";")) (declaration "int iStack_18;" (primitive_type "int") (identifier "iStack_18") (; ";")) (expression_statement "iVar2 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar2 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar3 = *(ushort *)(param_1 + 1);" (assignment_expression "uVar3 = *(ushort *)(param_1 + 1)" (identifier "uVar3") (= "=") (pointer_expression "*(ushort *)(param_1 + 1)" (* "*") (cast_expression "(ushort *)(param_1 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (if_statement "if ((uVar3 & 1) != 0) goto LAB_00044d60;" (if "if") (parenthesized_expression "((uVar3 & 1) != 0)" (( "(") (binary_expression "(uVar3 & 1) != 0" (parenthesized_expression "(uVar3 & 1)" (( "(") (binary_expression "uVar3 & 1" (identifier "uVar3") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00044d60;" (goto "goto") (statement_identifier "LAB_00044d60") (; ";"))) (if_statement "if (param_2 != 0x43) {\n    if (param_2 < 0x44) {\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    uVar4 = 0;\n    goto LAB_00044d62;\n  }" (if "if") (parenthesized_expression "(param_2 != 0x43)" (( "(") (binary_expression "param_2 != 0x43" (identifier "param_2") (!= "!=") (number_literal "0x43")) () ")")) (compound_statement "{\n    if (param_2 < 0x44) {\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }\nLAB_00044d60:\n    uVar4 = 0;\n    goto LAB_00044d62;\n  }" ({ "{") (if_statement "if (param_2 < 0x44) {\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }\n    else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }" (if "if") (parenthesized_expression "(param_2 < 0x44)" (( "(") (binary_expression "param_2 < 0x44" (identifier "param_2") (< "<") (number_literal "0x44")) () ")")) (compound_statement "{\n      if (param_2 != 0x41) goto LAB_00044e58;\n      if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n      FUN_00036fb0();\n      if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\n    }" ({ "{") (if_statement "if (param_2 != 0x41) goto LAB_00044e58;" (if "if") (parenthesized_expression "(param_2 != 0x41)" (( "(") (binary_expression "param_2 != 0x41" (identifier "param_2") (!= "!=") (number_literal "0x41")) () ")")) (goto_statement "goto LAB_00044e58;" (goto "goto") (statement_identifier "LAB_00044e58") (; ";"))) (if_statement "if ((uVar3 & 0x10) != 0) {\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" (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")) () ")")) (compound_statement "{\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" ({ "{") (expression_statement "*(ushort *)(param_1 + 1) = uVar3 & 0x3e50;" (assignment_expression "*(ushort *)(param_1 + 1) = uVar3 & 0x3e50" (pointer_expression "*(ushort *)(param_1 + 1)" (* "*") (cast_expression "(ushort *)(param_1 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "uVar3 & 0x3e50" (identifier "uVar3") (& "&") (number_literal "0x3e50"))) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00044d62;" (goto "goto") (statement_identifier "LAB_00044d62") (; ";")) (} "}"))) (expression_statement "FUN_00036fb0();" (call_expression "FUN_00036fb0()" (identifier "FUN_00036fb0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((*(ushort *)(param_1 + 1) & 2) != 0) {\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" (if "if") (parenthesized_expression "((*(ushort *)(param_1 + 1) & 2) != 0)" (( "(") (binary_expression "(*(ushort *)(param_1 + 1) & 2) != 0" (parenthesized_expression "(*(ushort *)(param_1 + 1) & 2)" (( "(") (binary_expression "*(ushort *)(param_1 + 1) & 2" (pointer_expression "*(ushort *)(param_1 + 1)" (* "*") (cast_expression "(ushort *)(param_1 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" ({ "{") (expression_statement "*(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;" (assignment_expression "*(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10" (pointer_expression "*(ushort *)(param_1 + 1)" (* "*") (cast_expression "(ushort *)(param_1 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40 | 0x10" (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40" (pointer_expression "*(ushort *)(param_1 + 1)" (* "*") (cast_expression "(ushort *)(param_1 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0x3e40")) (| "|") (number_literal "0x10"))) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00044d62;" (goto "goto") (statement_identifier "LAB_00044d62") (; ";")) (} "}"))) (} "}")) (else_clause "else if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }" (else "else") (if_statement "if (param_2 == 0x44) {\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }\n    else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }" (if "if") (parenthesized_expression "(param_2 == 0x44)" (( "(") (binary_expression "param_2 == 0x44" (identifier "param_2") (== "==") (number_literal "0x44")) () ")")) (compound_statement "{\n      dVar9 = (double)FUN_00024fb0();\n      *param_1 = dVar9;\n      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n    }" ({ "{") (expression_statement "dVar9 = (double)FUN_00024fb0();" (assignment_expression "dVar9 = (double)FUN_00024fb0()" (identifier "dVar9") (= "=") (cast_expression "(double)FUN_00024fb0()" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "FUN_00024fb0()" (identifier "FUN_00024fb0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "*param_1 = dVar9;" (assignment_expression "*param_1 = dVar9" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "dVar9")) (; ";")) (expression_statement "*(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;" (assignment_expression "*(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4" (pointer_expression "*(ushort *)(param_1 + 1)" (* "*") (cast_expression "(ushort *)(param_1 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40 | 4" (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40" (pointer_expression "*(ushort *)(param_1 + 1)" (* "*") (cast_expression "(ushort *)(param_1 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0x3e40")) (| "|") (number_literal "4"))) (; ";")) (} "}")) (else_clause "else {\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }" (else "else") (compound_statement "{\n      if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }\nLAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;\n      FUN_00036fb0();\n      uVar3 = *(ushort *)(param_1 + 1);\n      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;\n      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }\n    }" ({ "{") (if_statement "if (param_2 == 0x45) {\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" (if "if") (parenthesized_expression "(param_2 == 0x45)" (( "(") (binary_expression "param_2 == 0x45" (identifier "param_2") (== "==") (number_literal "0x45")) () ")")) (compound_statement "{\n        if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\n        }\n        *param_1 = (double)lVar8;\n        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;\n        uVar4 = 0;\n        goto LAB_00044d62;\n      }" ({ "{") (if_statement "if ((uVar3 & 8) == 0) {\n          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }\n        else {\n          lVar8 = (longdouble)*param_1;\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          if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }\n        }" ({ "{") (if_statement "if ((uVar3 & 0x24) == 0) {\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }\n          else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }" (if "if") (parenthesized_expression "((uVar3 & 0x24) == 0)" (( "(") (binary_expression "(uVar3 & 0x24) == 0" (parenthesized_expression "(uVar3 & 0x24)" (( "(") (binary_expression "uVar3 & 0x24" (identifier "uVar3") (& "&") (number_literal "0x24")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }\n          }" ({ "{") (if_statement "if ((uVar3 & 0x12) == 0) {\n              lVar8 = (longdouble)0;\n            }\n            else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }" (if "if") (parenthesized_expression "((uVar3 & 0x12) == 0)" (( "(") (binary_expression "(uVar3 & 0x12) == 0" (parenthesized_expression "(uVar3 & 0x12)" (( "(") (binary_expression "uVar3 & 0x12" (identifier "uVar3") (& "&") (number_literal "0x12")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              lVar8 = (longdouble)0;\n            }" ({ "{") (expression_statement "lVar8 = (longdouble)0;" (assignment_expression "lVar8 = (longdouble)0" (identifier "lVar8") (= "=") (cast_expression "(longdouble)0" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (number_literal "0"))) (; ";")) (} "}")) (else_clause "else {\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }" (else "else") (compound_statement "{\n              lVar8 = (longdouble)FUN_00024540();\n              uVar3 = *(ushort *)(param_1 + 1);\n            }" ({ "{") (expression_statement "lVar8 = (longdouble)FUN_00024540();" (assignment_expression "lVar8 = (longdouble)FUN_00024540()" (identifier "lVar8") (= "=") (cast_expression "(longdouble)FUN_00024540()" (( "(") (type_descriptor "longdouble" (type_identifier "longdouble")) () ")") (call_expression "FUN_00024540()" (identifier "FUN_00024540") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "uVar3 = *(ushort *)(param_1 + 1);" (assignment_expression "uVar3 = *(ushort *)(param_1 + 1)" (identifier "uVar3") (= "=") (pointer_expression "*(ushort *)(param_1 + 1)" (* "*") (cast_expression "(ushort *)(param_1 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n            lVar8 = (longdouble)(longlong)*param_1;\n          }" (else "else") (compound_statement "{\n            lVar8 = (longdouble)(longlong)*param_1;\n          }" ({ "{") (expression_statement "lVar8 = (longdouble)(longlong)*param_1;" (assignment_expression "lVar8 = (longdouble)(longlong)*param_1" (identifier "lVar8") (= "=") (binary_expression "(longdouble)(longlong)*param_1" (call_expression "(longdouble)(longlong)" (parenthesized_expression "(longdouble)" (( "(") (identifier "longdouble") () ")")) (argument_list "(longlong)" (( "(") (identifier "longlong") () ")"))) (* "*") (identifier "param_1"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n          lVar8 = (longdouble)*param_1;\n        }" (else "else") (compound_statement "{\n          lVar8 = (longdouble)*param_1;\n        }" ({ "{") (expression_statement "lVar8 = (longdouble)*param_1;" (assignment_expression "lVar8 = (longdouble)*param_1" (identifier "lVar8") (= "=") (binary_expression "(longdouble)*param_1" (parenthesized_expression "(longdouble)" (( "(") (identifier "longdouble") () ")")) (* "*") (identifier "param_1"))) (; ";")) (} "}")))) (expression_statement "*param_1 = (double)lVar8;" (assignment_expression "*param_1 = (double)lVar8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(double)lVar8" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "lVar8"))) (; ";")) (expression_statement "*(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;" (assignment_expression "*(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8" (pointer_expression "*(ushort *)(param_1 + 1)" (* "*") (cast_expression "(ushort *)(param_1 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "uVar3 & 0x3e40 | 8" (binary_expression "uVar3 & 0x3e40" (identifier "uVar3") (& "&") (number_literal "0x3e40")) (| "|") (number_literal "8"))) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_00044d62;" (goto "goto") (statement_identifier "LAB_00044d62") (; ";")) (} "}"))) (labeled_statement "LAB_00044e58:\n      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;" (statement_identifier "LAB_00044e58") (: ":") (expression_statement "*(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;" (assignment_expression "*(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2" (pointer_expression "*(ushort *)(param_1 + 1)" (* "*") (cast_expression "(ushort *)(param_1 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "uVar3 | uVar3 >> 3 & 2" (identifier "uVar3") (| "|") (binary_expression "uVar3 >> 3 & 2" (binary_expression "uVar3 >> 3" (identifier "uVar3") (>> ">>") (number_literal "3")) (& "&") (number_literal "2")))) (; ";"))) (expression_statement "FUN_00036fb0();" (call_expression "FUN_00036fb0()" (identifier "FUN_00036fb0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar3 = *(ushort *)(param_1 + 1);" (assignment_expression "uVar3 = *(ushort *)(param_1 + 1)" (identifier "uVar3") (= "=") (pointer_expression "*(ushort *)(param_1 + 1)" (* "*") (cast_expression "(ushort *)(param_1 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "*(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;" (assignment_expression "*(ushort *)(param_1 + 1) = uVar3 & 0xbfc3" (pointer_expression "*(ushort *)(param_1 + 1)" (* "*") (cast_expression "(ushort *)(param_1 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "uVar3 & 0xbfc3" (identifier "uVar3") (& "&") (number_literal "0xbfc3"))) (; ";")) (if_statement "if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }" (if "if") (parenthesized_expression "(((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10)))" (( "(") (binary_expression "((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))" (parenthesized_expression "((uVar3 & 2) != 0)" (( "(") (binary_expression "(uVar3 & 2) != 0" (parenthesized_expression "(uVar3 & 2)" (( "(") (binary_expression "uVar3 & 2" (identifier "uVar3") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_3 != *(char *)((int)param_1 + 10))" (( "(") (binary_expression "param_3 != *(char *)((int)param_1 + 10)" (identifier "param_3") (!= "!=") (pointer_expression "*(char *)((int)param_1 + 10)" (* "*") (cast_expression "(char *)((int)param_1 + 10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 10)" (( "(") (binary_expression "(int)param_1 + 10" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "10")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n        uVar4 = FUN_000323c0();\n        goto LAB_00044d62;\n      }" ({ "{") (expression_statement "uVar4 = FUN_000323c0();" (assignment_expression "uVar4 = FUN_000323c0()" (identifier "uVar4") (= "=") (call_expression "FUN_000323c0()" (identifier "FUN_000323c0") (argument_list "()" (( "(") () ")")))) (; ";")) (goto_statement "goto LAB_00044d62;" (goto "goto") (statement_identifier "LAB_00044d62") (; ";")) (} "}"))) (} "}")))))) (labeled_statement "LAB_00044d60:\n    uVar4 = 0;" (statement_identifier "LAB_00044d60") (: ":") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";"))) (goto_statement "goto LAB_00044d62;" (goto "goto") (statement_identifier "LAB_00044d62") (; ";")) (} "}"))) (if_statement "if ((uVar3 & 0x2d) == 0) {\n    uVar7 = *(undefined1 *)((int)param_1 + 10);\n    *param_1 = 0.0;\n    if (*(int *)((int)param_1 + 0xc) == 0) {\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }\n    else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    *param_1 = dVar1;\n    uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n  }" (if "if") (parenthesized_expression "((uVar3 & 0x2d) == 0)" (( "(") (binary_expression "(uVar3 & 0x2d) == 0" (parenthesized_expression "(uVar3 & 0x2d)" (( "(") (binary_expression "uVar3 & 0x2d" (identifier "uVar3") (& "&") (number_literal "0x2d")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar7 = *(undefined1 *)((int)param_1 + 10);\n    *param_1 = 0.0;\n    if (*(int *)((int)param_1 + 0xc) == 0) {\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }\n    else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }\nLAB_00044f38:\n    *param_1 = dVar1;\n    uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;\n  }" ({ "{") (expression_statement "uVar7 = *(undefined1 *)((int)param_1 + 10);" (assignment_expression "uVar7 = *(undefined1 *)((int)param_1 + 10)" (identifier "uVar7") (= "=") (pointer_expression "*(undefined1 *)((int)param_1 + 10)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 10)" (( "(") (binary_expression "(int)param_1 + 10" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "10")) () ")"))))) (; ";")) (expression_statement "*param_1 = 0.0;" (assignment_expression "*param_1 = 0.0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0.0")) (; ";")) (if_statement "if (*(int *)((int)param_1 + 0xc) == 0) {\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }\n    else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }" (if "if") (parenthesized_expression "(*(int *)((int)param_1 + 0xc) == 0)" (( "(") (binary_expression "*(int *)((int)param_1 + 0xc) == 0" (pointer_expression "*(int *)((int)param_1 + 0xc)" (* "*") (cast_expression "(int *)((int)param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0xc)" (( "(") (binary_expression "(int)param_1 + 0xc" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);\n      if (1 < iVar5) goto LAB_00044db7;\n      dVar1 = (double)CONCAT44(local_28,local_2c);\n    }" ({ "{") (labeled_statement "LAB_00044d9e:\n      iVar5 = FUN_0001e220(uVar7);" (statement_identifier "LAB_00044d9e") (: ":") (expression_statement "iVar5 = FUN_0001e220(uVar7);" (assignment_expression "iVar5 = FUN_0001e220(uVar7)" (identifier "iVar5") (= "=") (call_expression "FUN_0001e220(uVar7)" (identifier "FUN_0001e220") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")")))) (; ";"))) (if_statement "if (1 < iVar5) goto LAB_00044db7;" (if "if") (parenthesized_expression "(1 < iVar5)" (( "(") (binary_expression "1 < iVar5" (number_literal "1") (< "<") (identifier "iVar5")) () ")")) (goto_statement "goto LAB_00044db7;" (goto "goto") (statement_identifier "LAB_00044db7") (; ";"))) (expression_statement "dVar1 = (double)CONCAT44(local_28,local_2c);" (assignment_expression "dVar1 = (double)CONCAT44(local_28,local_2c)" (identifier "dVar1") (= "=") (cast_expression "(double)CONCAT44(local_28,local_2c)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (call_expression "CONCAT44(local_28,local_2c)" (identifier "CONCAT44") (argument_list "(local_28,local_2c)" (( "(") (identifier "local_28") (, ",") (identifier "local_2c") () ")"))))) (; ";")) (} "}")) (else_clause "else {\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }" (else "else") (compound_statement "{\n      uVar6 = FUN_00023dc0(uVar7);\n      if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }\nLAB_00044db7:\n      dVar9 = *param_1;\n      dVar1 = (double)(longlong)ROUND(dVar9);\n      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);\n      if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }\n    }" ({ "{") (expression_statement "uVar6 = FUN_00023dc0(uVar7);" (assignment_expression "uVar6 = FUN_00023dc0(uVar7)" (identifier "uVar6") (= "=") (call_expression "FUN_00023dc0(uVar7)" (identifier "FUN_00023dc0") (argument_list "(uVar7)" (( "(") (identifier "uVar7") () ")")))) (; ";")) (if_statement "if (uVar6 < 2) {\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }" (if "if") (parenthesized_expression "(uVar6 < 2)" (( "(") (binary_expression "uVar6 < 2" (identifier "uVar6") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n        uVar7 = *(undefined1 *)((int)param_1 + 10);\n        goto LAB_00044d9e;\n      }" ({ "{") (expression_statement "uVar7 = *(undefined1 *)((int)param_1 + 10);" (assignment_expression "uVar7 = *(undefined1 *)((int)param_1 + 10)" (identifier "uVar7") (= "=") (pointer_expression "*(undefined1 *)((int)param_1 + 10)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 10)" (( "(") (binary_expression "(int)param_1 + 10" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "10")) () ")"))))) (; ";")) (goto_statement "goto LAB_00044d9e;" (goto "goto") (statement_identifier "LAB_00044d9e") (; ";")) (} "}"))) (labeled_statement "LAB_00044db7:\n      dVar9 = *param_1;" (statement_identifier "LAB_00044db7") (: ":") (expression_statement "dVar9 = *param_1;" (assignment_expression "dVar9 = *param_1" (identifier "dVar9") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";"))) (expression_statement "dVar1 = (double)(longlong)ROUND(dVar9);" (assignment_expression "dVar1 = (double)(longlong)ROUND(dVar9)" (identifier "dVar1") (= "=") (cast_expression "(double)(longlong)ROUND(dVar9)" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(longlong)ROUND(dVar9)" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (call_expression "ROUND(dVar9)" (identifier "ROUND") (argument_list "(dVar9)" (( "(") (identifier "dVar9") () ")")))))) (; ";")) (expression_statement "iStack_40 = (int)((ulonglong)dVar1 >> 0x20);" (assignment_expression "iStack_40 = (int)((ulonglong)dVar1 >> 0x20)" (identifier "iStack_40") (= "=") (cast_expression "(int)((ulonglong)dVar1 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)dVar1 >> 0x20)" (( "(") (binary_expression "(ulonglong)dVar1 >> 0x20" (cast_expression "(ulonglong)dVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar1")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (if_statement "if (dVar9 != 0.0) {\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }" (if "if") (parenthesized_expression "(dVar9 != 0.0)" (( "(") (binary_expression "dVar9 != 0.0" (identifier "dVar9") (!= "!=") (number_literal "0.0")) () ")")) (compound_statement "{\n        local_1c = SUB84((double)(longlong)dVar1,0);\n        local_24 = SUB84(dVar9,0);\n        if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }\n        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;\n        goto LAB_00044e23;\n      }" ({ "{") (expression_statement "local_1c = SUB84((double)(longlong)dVar1,0);" (assignment_expression "local_1c = SUB84((double)(longlong)dVar1,0)" (identifier "local_1c") (= "=") (call_expression "SUB84((double)(longlong)dVar1,0)" (identifier "SUB84") (argument_list "((double)(longlong)dVar1,0)" (( "(") (cast_expression "(double)(longlong)dVar1" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(longlong)dVar1" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (identifier "dVar1"))) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "local_24 = SUB84(dVar9,0);" (assignment_expression "local_24 = SUB84(dVar9,0)" (identifier "local_24") (= "=") (call_expression "SUB84(dVar9,0)" (identifier "SUB84") (argument_list "(dVar9,0)" (( "(") (identifier "dVar9") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (local_24 == local_1c) {\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }" (if "if") (parenthesized_expression "(local_24 == local_1c)" (( "(") (binary_expression "local_24 == local_1c" (identifier "local_24") (== "==") (identifier "local_1c")) () ")")) (compound_statement "{\n          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);\n          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);\n          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;\n        }" ({ "{") (expression_statement "iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);" (assignment_expression "iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20)" (identifier "iStack_18") (= "=") (cast_expression "(int)((ulonglong)(double)(longlong)dVar1 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)(double)(longlong)dVar1 >> 0x20)" (( "(") (binary_expression "(ulonglong)(double)(longlong)dVar1 >> 0x20" (cast_expression "(ulonglong)(double)(longlong)dVar1" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (cast_expression "(double)(longlong)dVar1" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(longlong)dVar1" (( "(") (type_descriptor "longlong" (type_identifier "longlong")) () ")") (identifier "dVar1")))) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "iStack_20 = (int)((ulonglong)dVar9 >> 0x20);" (assignment_expression "iStack_20 = (int)((ulonglong)dVar9 >> 0x20)" (identifier "iStack_20") (= "=") (cast_expression "(int)((ulonglong)dVar9 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)dVar9 >> 0x20)" (( "(") (binary_expression "(ulonglong)dVar9 >> 0x20" (cast_expression "(ulonglong)dVar9" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "dVar9")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (if_statement "if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;" (if "if") (parenthesized_expression "((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000))" (( "(") (binary_expression "(iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)" (parenthesized_expression "(iStack_20 == iStack_18)" (( "(") (binary_expression "iStack_20 == iStack_18" (identifier "iStack_20") (== "==") (identifier "iStack_18")) () ")")) (&& "&&") (parenthesized_expression "(iStack_40 + 0x80000U < 0x100000)" (( "(") (binary_expression "iStack_40 + 0x80000U < 0x100000" (binary_expression "iStack_40 + 0x80000U" (identifier "iStack_40") (+ "+") (number_literal "0x80000U")) (< "<") (number_literal "0x100000")) () ")"))) () ")")) (goto_statement "goto LAB_00044f38;" (goto "goto") (statement_identifier "LAB_00044f38") (; ";"))) (} "}"))) (expression_statement "uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;" (assignment_expression "uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8" (identifier "uVar3") (= "=") (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40 | 8" (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40" (pointer_expression "*(ushort *)(param_1 + 1)" (* "*") (cast_expression "(ushort *)(param_1 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0x3e40")) (| "|") (number_literal "8"))) (; ";")) (goto_statement "goto LAB_00044e23;" (goto "goto") (statement_identifier "LAB_00044e23") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_00044f38:\n    *param_1 = dVar1;" (statement_identifier "LAB_00044f38") (: ":") (expression_statement "*param_1 = dVar1;" (assignment_expression "*param_1 = dVar1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "dVar1")) (; ";"))) (expression_statement "uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;" (assignment_expression "uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4" (identifier "uVar3") (= "=") (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40 | 4" (binary_expression "*(ushort *)(param_1 + 1) & 0x3e40" (pointer_expression "*(ushort *)(param_1 + 1)" (* "*") (cast_expression "(ushort *)(param_1 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0x3e40")) (| "|") (number_literal "4"))) (; ";")) (} "}"))) (labeled_statement "LAB_00044e23:\n  *(ushort *)(param_1 + 1) = uVar3 & 0xbfed;" (statement_identifier "LAB_00044e23") (: ":") (expression_statement "*(ushort *)(param_1 + 1) = uVar3 & 0xbfed;" (assignment_expression "*(ushort *)(param_1 + 1) = uVar3 & 0xbfed" (pointer_expression "*(ushort *)(param_1 + 1)" (* "*") (cast_expression "(ushort *)(param_1 + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "uVar3 & 0xbfed" (identifier "uVar3") (& "&") (number_literal "0xbfed"))) (; ";"))) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_00044d62:\n  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }" (statement_identifier "LAB_00044d62") (: ":") (if_statement "if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return uVar4;\n  }" (if "if") (parenthesized_expression "(iVar2 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "iVar2 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar2") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return uVar4;\n  }" ({ "{") (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}")))) (expression_statement "FUN_000d1450();" (call_expression "FUN_000d1450()" (identifier "FUN_000d1450") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

int __regparm3 function_1(type_1 *pMem,type_2 var_3,type_2 var_7)

{
  double var_15;
  type_3 lVar2;
  int var_20;
  type_4 enc;
  type_5 var_2;
  int var_10;
  char *z;
  type_6 var_13;
  int var_1;
  type_7 iVar7;
  type_8 MVar8;
  int in_stack_ffffffa8;
  type_2 in_stack_ffffffac;
  int var_19;
  type_9 ix;
  int var_17;
  int var_18;
  double r2;
  
  var_20 = *(int *)(var_1 + 0x14);
  var_2 = pMem->flags;
  if ((var_2 & 1) != 0) goto LAB_00044d60;
  if (var_3 != 'C') {
    if (var_3 < 0x44) {
      if (var_3 != 'A') goto LAB_00044e58;
      if ((var_2 & 0x10) != 0) {
        pMem->flags = var_2 & 0x3e50;
        var_10 = 0;
        goto LAB_00044d62;
      }
      var_4(pMem,'B',var_7);
      if ((pMem->flags & 2) != 0) {
        pMem->flags = pMem->flags & 0x3e40 | 0x10;
        var_10 = 0;
        goto LAB_00044d62;
      }
    }
    else if (var_3 == 'D') {
      iVar7 = var_5(pMem);
      (pMem->u).i = iVar7;
      pMem->flags = pMem->flags & 0x3e40 | 4;
    }
    else {
      if (var_3 == 'E') {
        if ((var_2 & 8) == 0) {
          if ((var_2 & 0x24) == 0) {
            if ((var_2 & 0x12) == 0) {
              MVar8.r = 0.0;
            }
            else {
              MVar8.r = var_6(pMem);
              var_2 = pMem->flags;
            }
          }
          else {
            MVar8.r = (double)(pMem->u).i;
          }
        }
        else {
          MVar8 = pMem->u;
        }
        (pMem->u).r = (double)MVar8;
        pMem->flags = var_2 & 0x3e40 | 8;
        var_10 = 0;
        goto LAB_00044d62;
      }
LAB_00044e58:
      pMem->flags = var_2 | var_2 >> 3 & 2;
      var_4(pMem,'B',var_7);
      var_2 = pMem->flags;
      pMem->flags = var_2 & 0xbfc3;
      if (((var_2 & 2) != 0) && (var_7 != pMem->enc)) {
        var_10 = var_8(pMem,var_7);
        goto LAB_00044d62;
      }
    }
LAB_00044d60:
    var_10 = 0;
    goto LAB_00044d62;
  }
  if ((var_2 & 0x2d) == 0) {
    enc = pMem->enc;
    z = pMem->z;
    (pMem->u).r = 0.0;
    if (pMem->n == 0) {
LAB_00044d9e:
      var_10 = var_9(z,(type_7 *)(type_6)enc,in_stack_ffffffa8,in_stack_ffffffac);
      if (1 < var_10) goto LAB_00044db7;
      lVar2 = var_11(ix._4_4_,(type_10)ix);
    }
    else {
      var_13 = var_12(z,(double *)pMem,pMem->n,enc);
      if (var_13 < 2) {
        enc = pMem->enc;
        z = pMem->z;
        goto LAB_00044d9e;
      }
LAB_00044db7:
      var_15 = (pMem->u).r;
      lVar2 = (type_3)var_14(var_15);
      var_19 = (int)((type_11)lVar2 >> 0x20);
      if (var_15 != 0.0) {
        r2._0_4_ = var_16((double)lVar2,0);
        var_17 = var_16(var_15,0);
        if (var_17 == r2._0_4_) {
          r2._4_4_ = (int)((type_11)(double)lVar2 >> 0x20);
          var_18 = (int)((type_11)var_15 >> 0x20);
          if ((var_18 == r2._4_4_) && (var_19 + 0x80000U < 0x100000)) goto LAB_00044f38;
        }
        var_2 = pMem->flags & 0x3e40 | 8;
        goto LAB_00044e23;
      }
    }
LAB_00044f38:
    (pMem->u).i = lVar2;
    var_2 = pMem->flags & 0x3e40 | 4;
  }
LAB_00044e23:
  pMem->flags = var_2 & 0xbfed;
  var_10 = 0;
LAB_00044d62:
  if (var_20 == *(int *)(var_1 + 0x14)) {
    return var_10;
  }
                    /* WARNING: Subroutine does not return */
  var_21();
}


(translation_unit (function_definition type: (type_identifier) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_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))))))) (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: (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: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (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: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (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: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (if_statement condition: (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)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (number_literal))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) 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 (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: (type_identifier)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list))))) (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: (identifier) right: (number_literal))))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (identifier))) right: (identifier)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (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: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (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 (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (goto_statement label: (statement_identifier))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (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: (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: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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 (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: (primitive_type)) value: (identifier)) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (number_literal)))) (goto_statement label: (statement_identifier))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (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 (return_statement (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

undefined4 __regparm3 MASKED(double *param_1,byte param_2,char param_3)

{
  double dVar1;
  int iVar2;
  ushort uVar3;
  undefined4 uVar4;
  int iVar5;
  uint uVar6;
  undefined1 uVar7;
  int in_GS_OFFSET;
  longdouble lVar8;
  double dVar9;
  int iStack_40;
  undefined4 local_2c;
  undefined4 local_28;
  int local_24;
  int iStack_20;
  int local_1c;
  int iStack_18;
  
  iVar2 = *(int *)(in_GS_OFFSET + 0x14);
  uVar3 = *(ushort *)(param_1 + 1);
  if ((uVar3 & 1) != 0) goto LAB_00044d60;
  if (param_2 != 0x43) {
    if (param_2 < 0x44) {
      if (param_2 != 0x41) goto LAB_00044e58;
      if ((uVar3 & 0x10) != 0) {
        *(ushort *)(param_1 + 1) = uVar3 & 0x3e50;
        uVar4 = 0;
        goto LAB_00044d62;
      }
      FUN_00036fb0();
      if ((*(ushort *)(param_1 + 1) & 2) != 0) {
        *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 0x10;
        uVar4 = 0;
        goto LAB_00044d62;
      }
    }
    else if (param_2 == 0x44) {
      dVar9 = (double)FUN_00024fb0();
      *param_1 = dVar9;
      *(ushort *)(param_1 + 1) = *(ushort *)(param_1 + 1) & 0x3e40 | 4;
    }
    else {
      if (param_2 == 0x45) {
        if ((uVar3 & 8) == 0) {
          if ((uVar3 & 0x24) == 0) {
            if ((uVar3 & 0x12) == 0) {
              lVar8 = (longdouble)0;
            }
            else {
              lVar8 = (longdouble)FUN_00024540();
              uVar3 = *(ushort *)(param_1 + 1);
            }
          }
          else {
            lVar8 = (longdouble)(longlong)*param_1;
          }
        }
        else {
          lVar8 = (longdouble)*param_1;
        }
        *param_1 = (double)lVar8;
        *(ushort *)(param_1 + 1) = uVar3 & 0x3e40 | 8;
        uVar4 = 0;
        goto LAB_00044d62;
      }
LAB_00044e58:
      *(ushort *)(param_1 + 1) = uVar3 | uVar3 >> 3 & 2;
      FUN_00036fb0();
      uVar3 = *(ushort *)(param_1 + 1);
      *(ushort *)(param_1 + 1) = uVar3 & 0xbfc3;
      if (((uVar3 & 2) != 0) && (param_3 != *(char *)((int)param_1 + 10))) {
        uVar4 = FUN_000323c0();
        goto LAB_00044d62;
      }
    }
LAB_00044d60:
    uVar4 = 0;
    goto LAB_00044d62;
  }
  if ((uVar3 & 0x2d) == 0) {
    uVar7 = *(undefined1 *)((int)param_1 + 10);
    *param_1 = 0.0;
    if (*(int *)((int)param_1 + 0xc) == 0) {
LAB_00044d9e:
      iVar5 = FUN_0001e220(uVar7);
      if (1 < iVar5) goto LAB_00044db7;
      dVar1 = (double)CONCAT44(local_28,local_2c);
    }
    else {
      uVar6 = FUN_00023dc0(uVar7);
      if (uVar6 < 2) {
        uVar7 = *(undefined1 *)((int)param_1 + 10);
        goto LAB_00044d9e;
      }
LAB_00044db7:
      dVar9 = *param_1;
      dVar1 = (double)(longlong)ROUND(dVar9);
      iStack_40 = (int)((ulonglong)dVar1 >> 0x20);
      if (dVar9 != 0.0) {
        local_1c = SUB84((double)(longlong)dVar1,0);
        local_24 = SUB84(dVar9,0);
        if (local_24 == local_1c) {
          iStack_18 = (int)((ulonglong)(double)(longlong)dVar1 >> 0x20);
          iStack_20 = (int)((ulonglong)dVar9 >> 0x20);
          if ((iStack_20 == iStack_18) && (iStack_40 + 0x80000U < 0x100000)) goto LAB_00044f38;
        }
        uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 8;
        goto LAB_00044e23;
      }
    }
LAB_00044f38:
    *param_1 = dVar1;
    uVar3 = *(ushort *)(param_1 + 1) & 0x3e40 | 4;
  }
LAB_00044e23:
  *(ushort *)(param_1 + 1) = uVar3 & 0xbfed;
  uVar4 = 0;
LAB_00044d62:
  if (iVar2 == *(int *)(in_GS_OFFSET + 0x14)) {
    return uVar4;
  }
                    /* WARNING: Subroutine does not return */
  FUN_000d1450();
}

