
tm_conflict * __regparm3
ranged_convert(_func_tm_ptr_time_t_ptr_tm_ptr *convert,long_int *t,tm_conflict *tp)

{
  int iVar1;
  tm_conflict *ptVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  uint uVar7;
  int iVar8;
  int in_GS_OFFSET;
  uint local_4c;
  int local_48;
  uint local_44;
  int local_40;
  time_t x;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  x = (time_t)*t;
  iVar1 = *(int *)((int)t + 4);
  if ((SBORROW4(iVar1,-1) != SBORROW4(iVar1 + 1,(uint)((uint)x < 0x80000000))) ==
      (int)((iVar1 + 1) - (uint)((uint)x < 0x80000000)) < 0) {
    if (-iVar1 < (int)(uint)(0x7fffffff < (uint)x)) {
      *(undefined4 *)t = 0x7fffffff;
      x = 0x7fffffff;
      *(undefined4 *)((int)t + 4) = 0;
    }
  }
  else {
    *(undefined4 *)t = 0x80000000;
    x = 0x80000000;
    *(undefined4 *)((int)t + 4) = 0xffffffff;
  }
  ptVar2 = (*convert)(&x,tp);
  if (ptVar2 == (tm_conflict *)0x0) {
    local_4c = 0;
    local_48 = 0;
    uVar3 = local_4c;
    iVar1 = local_48;
    local_44 = (uint)*t;
    local_40 = *(int *)((int)t + 4);
    if (*(int *)((int)t + 4) != 0 || (uint)*t != 0) {
      while( true ) {
        local_48 = iVar1;
        local_4c = uVar3;
        uVar5 = local_4c >> 1 | local_48 << 0x1f;
        uVar3 = local_44 >> 1 | local_40 << 0x1f;
        uVar6 = uVar5 + uVar3;
        uVar4 = (local_44 | local_4c) & 1;
        uVar7 = uVar6 + uVar4;
        iVar8 = (local_48 >> 1) + (local_40 >> 1) + (uint)CARRY4(uVar5,uVar3) +
                (uint)CARRY4(uVar6,uVar4);
        if ((local_4c != uVar7 || local_48 != iVar8) && (local_44 != uVar7 || local_40 != iVar8))
        break;
        x = uVar7;
        ptVar2 = (*convert)(&x,tp);
        uVar3 = uVar7;
        iVar1 = iVar8;
        if (ptVar2 == (tm_conflict *)0x0) {
          uVar3 = local_4c;
          iVar1 = local_48;
          local_44 = uVar7;
          local_40 = iVar8;
        }
      }
      if ((ptVar2 == (tm_conflict *)0x0) && (local_4c != 0 || local_48 != 0)) {
        x = local_4c;
        ptVar2 = (*convert)(&x,tp);
      }
    }
  }
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return ptVar2;
}



void __regparm3 FUN_0002a0b0(code *param_1,uint *param_2,undefined4 param_3)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  int in_GS_OFFSET;
  uint local_4c;
  uint local_48;
  uint local_44;
  uint local_40;
  uint local_24;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_24 = *param_2;
  uVar2 = param_2[1];
  if ((SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==
      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0) {
    if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {
      *param_2 = 0x7fffffff;
      local_24 = 0x7fffffff;
      param_2[1] = 0;
    }
  }
  else {
    *param_2 = 0x80000000;
    local_24 = 0x80000000;
    param_2[1] = 0xffffffff;
  }
  iVar1 = (*param_1)(&local_24,param_3);
  if (iVar1 == 0) {
    local_4c = 0;
    local_48 = 0;
    iVar1 = 0;
    uVar2 = local_4c;
    uVar3 = local_48;
    local_44 = *param_2;
    local_40 = param_2[1];
    if (param_2[1] != 0 || *param_2 != 0) {
      while( true ) {
        local_48 = uVar3;
        local_4c = uVar2;
        uVar4 = local_4c >> 1 | local_48 << 0x1f;
        uVar2 = local_44 >> 1 | local_40 << 0x1f;
        uVar5 = uVar4 + uVar2;
        uVar3 = (local_44 | local_4c) & 1;
        uVar6 = uVar5 + uVar3;
        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +
                (uint)CARRY4(uVar5,uVar3);
        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))
        break;
        local_24 = uVar6;
        iVar1 = (*param_1)(&local_24,param_3);
        uVar2 = uVar6;
        uVar3 = uVar4;
        if (iVar1 == 0) {
          uVar2 = local_4c;
          uVar3 = local_48;
          local_44 = uVar6;
          local_40 = uVar4;
        }
      }
      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {
        local_24 = local_4c;
        (*param_1)(&local_24,param_3);
      }
    }
  }
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0002b190();
  }
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
MOV EBX,EDX
SUB ESP,0x3c
MOV dword ptr [ESP + 0x18],EAX
MOV dword ptr [ESP + 0x1c],ECX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x2c],EAX
XOR EAX,EAX
MOV EAX,dword ptr [EDX]
MOV EDX,dword ptr [EDX + 0x4]
CMP EAX,0x80000000
MOV EDI,EDX
SBB EDI,-0x1
JGE 0x0002a130
MOV dword ptr [EBX],0x80000000
MOV EAX,0x80000000
MOV dword ptr [EBX + 0x4],0xffffffff
MOV dword ptr [ESP + 0x28],EAX
SUB ESP,0x8
PUSH dword ptr [ESP + 0x24]
LEA EBP,[ESP + 0x34]
PUSH EBP
MOV EAX,dword ptr [ESP + 0x28]
CALL EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002a158
MOV EDI,dword ptr [ESP + 0x2c]
XOR EDI,dword ptr GS:[0x14]
JNZ 0x0002a253
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,0x7fffffff
CMP ECX,EAX
MOV ECX,0x0
SBB ECX,EDX
JGE 0x0002a0f0
MOV dword ptr [EBX],0x7fffffff
MOV EAX,0x7fffffff
MOV dword ptr [EBX + 0x4],0x0
JMP 0x0002a0f0
MOV ESI,dword ptr [EBX + 0x4]
MOV EBX,dword ptr [EBX]
MOV dword ptr [ESP],0x0
MOV dword ptr [ESP + 0x4],0x0
MOV ECX,ESI
MOV dword ptr [ESP + 0x8],EBX
OR ECX,EBX
MOV dword ptr [ESP + 0xc],ESI
JNZ 0x0002a187
JMP 0x0002a10d
MOV dword ptr [ESP],ESI
MOV dword ptr [ESP + 0x4],EDI
MOV EDI,dword ptr [ESP + 0x4]
MOV ECX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x14],0x0
MOV ESI,dword ptr [ESP]
MOV EDX,dword ptr [ESP + 0x8]
SHRD ESI,EDI,0x1
SHRD EDX,ECX,0x1
SAR ECX,0x1
SAR EDI,0x1
ADD ESI,EDX
MOV EDX,dword ptr [ESP + 0x8]
MOV EBX,ECX
MOV ECX,dword ptr [ESP]
ADC EDI,EBX
OR EDX,ECX
MOV EBX,ECX
AND EDX,0x1
MOV dword ptr [ESP + 0x10],EDX
MOV EDX,dword ptr [ESP + 0x4]
ADD ESI,dword ptr [ESP + 0x10]
ADC EDI,dword ptr [ESP + 0x14]
XOR EBX,ESI
XOR EDX,EDI
MOV ECX,EBX
OR ECX,EDX
JZ 0x0002a1e8
MOV ECX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [ESP + 0xc]
XOR ECX,ESI
XOR EDX,EDI
OR ECX,EDX
JNZ 0x0002a220
MOV dword ptr [ESP + 0x28],ESI
SUB ESP,0x8
PUSH dword ptr [ESP + 0x24]
PUSH EBP
MOV EAX,dword ptr [ESP + 0x28]
CALL EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0002a180
MOV dword ptr [ESP + 0x8],ESI
MOV ESI,dword ptr [ESP]
MOV dword ptr [ESP + 0xc],EDI
MOV EDI,dword ptr [ESP + 0x4]
JMP 0x0002a180
TEST EAX,EAX
JNZ 0x0002a10d
MOV EBX,dword ptr [ESP]
MOV ESI,dword ptr [ESP + 0x4]
MOV EDI,EBX
OR EDI,ESI
JZ 0x0002a10d
MOV dword ptr [ESP + 0x28],EBX
SUB ESP,0x8
PUSH dword ptr [ESP + 0x24]
PUSH EBP
MOV EAX,dword ptr [ESP + 0x28]
CALL EAX
ADD ESP,0x10
JMP 0x0002a10d
CALL 0x0002b190
(translation_unit "void __regparm3 FUN_0002a0b0(code *param_1,uint *param_2,undefined4 param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int in_GS_OFFSET;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  uint local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = *param_2;\n  uVar2 = param_2[1];\n  if ((SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==\n      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0) {\n    if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }\n  }\n  else {\n    *param_2 = 0x80000000;\n    local_24 = 0x80000000;\n    param_2[1] = 0xffffffff;\n  }\n  iVar1 = (*param_1)(&local_24,param_3);\n  if (iVar1 == 0) {\n    local_4c = 0;\n    local_48 = 0;\n    iVar1 = 0;\n    uVar2 = local_4c;\n    uVar3 = local_48;\n    local_44 = *param_2;\n    local_40 = param_2[1];\n    if (param_2[1] != 0 || *param_2 != 0) {\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002b190();\n  }\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_0002a0b0(code *param_1,uint *param_2,undefined4 param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int in_GS_OFFSET;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  uint local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = *param_2;\n  uVar2 = param_2[1];\n  if ((SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==\n      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0) {\n    if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }\n  }\n  else {\n    *param_2 = 0x80000000;\n    local_24 = 0x80000000;\n    param_2[1] = 0xffffffff;\n  }\n  iVar1 = (*param_1)(&local_24,param_3);\n  if (iVar1 == 0) {\n    local_4c = 0;\n    local_48 = 0;\n    iVar1 = 0;\n    uVar2 = local_4c;\n    uVar3 = local_48;\n    local_44 = *param_2;\n    local_40 = param_2[1];\n    if (param_2[1] != 0 || *param_2 != 0) {\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002b190();\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0002a0b0(code *param_1,uint *param_2,undefined4 param_3)" identifier (parameter_list "(code *param_1,uint *param_2,undefined4 param_3)" ( (parameter_declaration "code *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int in_GS_OFFSET;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  uint local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = *param_2;\n  uVar2 = param_2[1];\n  if ((SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==\n      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0) {\n    if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }\n  }\n  else {\n    *param_2 = 0x80000000;\n    local_24 = 0x80000000;\n    param_2[1] = 0xffffffff;\n  }\n  iVar1 = (*param_1)(&local_24,param_3);\n  if (iVar1 == 0) {\n    local_4c = 0;\n    local_48 = 0;\n    iVar1 = 0;\n    uVar2 = local_4c;\n    uVar3 = local_48;\n    local_44 = *param_2;\n    local_40 = param_2[1];\n    if (param_2[1] != 0 || *param_2 != 0) {\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002b190();\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(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 "local_24 = *param_2;" (assignment_expression "local_24 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar2 = param_2[1];" (assignment_expression "uVar2 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if ((SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==\n      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0) {\n    if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }\n  }\n  else {\n    *param_2 = 0x80000000;\n    local_24 = 0x80000000;\n    param_2[1] = 0xffffffff;\n  }" if (parenthesized_expression "((SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==\n      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0)" ( (binary_expression "(SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==\n      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0" (parenthesized_expression "(SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000)))" ( (binary_expression "SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))" (call_expression "SBORROW4(uVar2,-1)" identifier (argument_list "(uVar2,-1)" ( identifier , number_literal ))) != (call_expression "SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))" identifier (argument_list "(uVar2 + 1,(uint)(local_24 < 0x80000000))" ( (binary_expression "uVar2 + 1" identifier + number_literal) , (call_expression "(uint)(local_24 < 0x80000000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < 0x80000000)" ( (binary_expression "local_24 < 0x80000000" identifier < number_literal) ))) )))) )) == (binary_expression "(int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0" (cast_expression "(int)((uVar2 + 1) - (uint)(local_24 < 0x80000000))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar2 + 1) - (uint)(local_24 < 0x80000000))" ( (binary_expression "(uVar2 + 1) - (uint)(local_24 < 0x80000000)" (parenthesized_expression "(uVar2 + 1)" ( (binary_expression "uVar2 + 1" identifier + number_literal) )) - (call_expression "(uint)(local_24 < 0x80000000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < 0x80000000)" ( (binary_expression "local_24 < 0x80000000" identifier < number_literal) )))) ))) < number_literal)) )) (compound_statement "{\n    if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }\n  }" { (if_statement "if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }" if (parenthesized_expression "((int)-uVar2 < (int)(uint)(0x7fffffff < local_24))" ( (binary_expression "(int)-uVar2 < (int)(uint)(0x7fffffff < local_24)" (cast_expression "(int)-uVar2" ( (type_descriptor "int" primitive_type) ) (unary_expression "-uVar2" - identifier)) < (cast_expression "(int)(uint)(0x7fffffff < local_24)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(0x7fffffff < local_24)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7fffffff < local_24)" ( (binary_expression "0x7fffffff < local_24" number_literal < identifier) ))))) )) (compound_statement "{\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }" { (expression_statement "*param_2 = 0x7fffffff;" (assignment_expression "*param_2 = 0x7fffffff" (pointer_expression "*param_2" * identifier) = number_literal) ;) (expression_statement "local_24 = 0x7fffffff;" (assignment_expression "local_24 = 0x7fffffff" identifier = number_literal) ;) (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) })) }) (else_clause "else {\n    *param_2 = 0x80000000;\n    local_24 = 0x80000000;\n    param_2[1] = 0xffffffff;\n  }" else (compound_statement "{\n    *param_2 = 0x80000000;\n    local_24 = 0x80000000;\n    param_2[1] = 0xffffffff;\n  }" { (expression_statement "*param_2 = 0x80000000;" (assignment_expression "*param_2 = 0x80000000" (pointer_expression "*param_2" * identifier) = number_literal) ;) (expression_statement "local_24 = 0x80000000;" (assignment_expression "local_24 = 0x80000000" identifier = number_literal) ;) (expression_statement "param_2[1] = 0xffffffff;" (assignment_expression "param_2[1] = 0xffffffff" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) }))) (expression_statement "iVar1 = (*param_1)(&local_24,param_3);" (assignment_expression "iVar1 = (*param_1)(&local_24,param_3)" identifier = (call_expression "(*param_1)(&local_24,param_3)" (parenthesized_expression "(*param_1)" ( (pointer_expression "*param_1" * identifier) )) (argument_list "(&local_24,param_3)" ( (pointer_expression "&local_24" & identifier) , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n    local_4c = 0;\n    local_48 = 0;\n    iVar1 = 0;\n    uVar2 = local_4c;\n    uVar3 = local_48;\n    local_44 = *param_2;\n    local_40 = param_2[1];\n    if (param_2[1] != 0 || *param_2 != 0) {\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    local_4c = 0;\n    local_48 = 0;\n    iVar1 = 0;\n    uVar2 = local_4c;\n    uVar3 = local_48;\n    local_44 = *param_2;\n    local_40 = param_2[1];\n    if (param_2[1] != 0 || *param_2 != 0) {\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }\n  }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = local_4c;" (assignment_expression "uVar2 = local_4c" identifier = identifier) ;) (expression_statement "uVar3 = local_48;" (assignment_expression "uVar3 = local_48" identifier = identifier) ;) (expression_statement "local_44 = *param_2;" (assignment_expression "local_44 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_40 = param_2[1];" (assignment_expression "local_40 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (param_2[1] != 0 || *param_2 != 0) {\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }" if (parenthesized_expression "(param_2[1] != 0 || *param_2 != 0)" ( (binary_expression "param_2[1] != 0 || *param_2 != 0" (binary_expression "param_2[1] != 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) != number_literal) || (binary_expression "*param_2 != 0" (pointer_expression "*param_2" * identifier) != number_literal)) )) (compound_statement "{\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }" { (while_statement "while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }" { (expression_statement "local_48 = uVar3;" (assignment_expression "local_48 = uVar3" identifier = identifier) ;) (expression_statement "local_4c = uVar2;" (assignment_expression "local_4c = uVar2" identifier = identifier) ;) (expression_statement "uVar4 = local_4c >> 1 | local_48 << 0x1f;" (assignment_expression "uVar4 = local_4c >> 1 | local_48 << 0x1f" identifier = (binary_expression "local_4c >> 1 | local_48 << 0x1f" (binary_expression "local_4c >> 1" identifier >> number_literal) | (binary_expression "local_48 << 0x1f" identifier << number_literal))) ;) (expression_statement "uVar2 = local_44 >> 1 | local_40 << 0x1f;" (assignment_expression "uVar2 = local_44 >> 1 | local_40 << 0x1f" identifier = (binary_expression "local_44 >> 1 | local_40 << 0x1f" (binary_expression "local_44 >> 1" identifier >> number_literal) | (binary_expression "local_40 << 0x1f" identifier << number_literal))) ;) (expression_statement "uVar5 = uVar4 + uVar2;" (assignment_expression "uVar5 = uVar4 + uVar2" identifier = (binary_expression "uVar4 + uVar2" identifier + identifier)) ;) (expression_statement "uVar3 = (local_44 | local_4c) & 1;" (assignment_expression "uVar3 = (local_44 | local_4c) & 1" identifier = (binary_expression "(local_44 | local_4c) & 1" (parenthesized_expression "(local_44 | local_4c)" ( (binary_expression "local_44 | local_4c" identifier | identifier) )) & number_literal)) ;) (expression_statement "uVar6 = uVar5 + uVar3;" (assignment_expression "uVar6 = uVar5 + uVar3" identifier = (binary_expression "uVar5 + uVar3" identifier + identifier)) ;) (expression_statement "uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);" (assignment_expression "uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3)" identifier = (binary_expression "((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3)" (binary_expression "((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2)" (binary_expression "((int)local_48 >> 1) + ((int)local_40 >> 1)" (parenthesized_expression "((int)local_48 >> 1)" ( (binary_expression "(int)local_48 >> 1" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + (parenthesized_expression "((int)local_40 >> 1)" ( (binary_expression "(int)local_40 >> 1" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)CARRY4(uVar4,uVar2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar4,uVar2)" identifier (argument_list "(uVar4,uVar2)" ( identifier , identifier ))))) + (cast_expression "(uint)CARRY4(uVar5,uVar3)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar5,uVar3)" identifier (argument_list "(uVar5,uVar3)" ( identifier , identifier )))))) ;) (if_statement "if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;" if (parenthesized_expression "((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))" ( (binary_expression "(local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4)" (parenthesized_expression "(local_4c != uVar6 || local_48 != uVar4)" ( (binary_expression "local_4c != uVar6 || local_48 != uVar4" (binary_expression "local_4c != uVar6" identifier != identifier) || (binary_expression "local_48 != uVar4" identifier != identifier)) )) && (parenthesized_expression "(local_44 != uVar6 || local_40 != uVar4)" ( (binary_expression "local_44 != uVar6 || local_40 != uVar4" (binary_expression "local_44 != uVar6" identifier != identifier) || (binary_expression "local_40 != uVar4" identifier != identifier)) ))) )) (break_statement "break;" break ;)) (expression_statement "local_24 = uVar6;" (assignment_expression "local_24 = uVar6" identifier = identifier) ;) (expression_statement "iVar1 = (*param_1)(&local_24,param_3);" (assignment_expression "iVar1 = (*param_1)(&local_24,param_3)" identifier = (call_expression "(*param_1)(&local_24,param_3)" (parenthesized_expression "(*param_1)" ( (pointer_expression "*param_1" * identifier) )) (argument_list "(&local_24,param_3)" ( (pointer_expression "&local_24" & identifier) , identifier )))) ;) (expression_statement "uVar2 = uVar6;" (assignment_expression "uVar2 = uVar6" identifier = identifier) ;) (expression_statement "uVar3 = uVar4;" (assignment_expression "uVar3 = uVar4" identifier = identifier) ;) (if_statement "if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }" { (expression_statement "uVar2 = local_4c;" (assignment_expression "uVar2 = local_4c" identifier = identifier) ;) (expression_statement "uVar3 = local_48;" (assignment_expression "uVar3 = local_48" identifier = identifier) ;) (expression_statement "local_44 = uVar6;" (assignment_expression "local_44 = uVar6" identifier = identifier) ;) (expression_statement "local_40 = uVar4;" (assignment_expression "local_40 = uVar4" identifier = identifier) ;) })) })) (if_statement "if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }" if (parenthesized_expression "((iVar1 == 0) && (local_4c != 0 || local_48 != 0))" ( (binary_expression "(iVar1 == 0) && (local_4c != 0 || local_48 != 0)" (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) && (parenthesized_expression "(local_4c != 0 || local_48 != 0)" ( (binary_expression "local_4c != 0 || local_48 != 0" (binary_expression "local_4c != 0" identifier != number_literal) || (binary_expression "local_48 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }" { (expression_statement "local_24 = local_4c;" (assignment_expression "local_24 = local_4c" identifier = identifier) ;) (expression_statement "(*param_1)(&local_24,param_3);" (call_expression "(*param_1)(&local_24,param_3)" (parenthesized_expression "(*param_1)" ( (pointer_expression "*param_1" * identifier) )) (argument_list "(&local_24,param_3)" ( (pointer_expression "&local_24" & identifier) , identifier ))) ;) })) })) })) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_0002b190();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(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                    /* WARNING: Subroutine does not return */\n    FUN_0002b190();\n  }" { comment (expression_statement "FUN_0002b190();" (call_expression "FUN_0002b190()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "tm_conflict * __regparm3\nranged_convert(_func_tm_ptr_time_t_ptr_tm_ptr *convert,long_int *t,tm_conflict *tp)\n\n{\n  int iVar1;\n  tm_conflict *ptVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int in_GS_OFFSET;\n  uint local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  time_t x;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  x = (time_t)*t;\n  iVar1 = *(int *)((int)t + 4);\n  if ((SBORROW4(iVar1,-1) != SBORROW4(iVar1 + 1,(uint)((uint)x < 0x80000000))) ==\n      (int)((iVar1 + 1) - (uint)((uint)x < 0x80000000)) < 0) {\n    if (-iVar1 < (int)(uint)(0x7fffffff < (uint)x)) {\n      *(undefined4 *)t = 0x7fffffff;\n      x = 0x7fffffff;\n      *(undefined4 *)((int)t + 4) = 0;\n    }\n  }\n  else {\n    *(undefined4 *)t = 0x80000000;\n    x = 0x80000000;\n    *(undefined4 *)((int)t + 4) = 0xffffffff;\n  }\n  ptVar2 = (*convert)(&x,tp);\n  if (ptVar2 == (tm_conflict *)0x0) {\n    local_4c = 0;\n    local_48 = 0;\n    uVar3 = local_4c;\n    iVar1 = local_48;\n    local_44 = (uint)*t;\n    local_40 = *(int *)((int)t + 4);\n    if (*(int *)((int)t + 4) != 0 || (uint)*t != 0) {\n      while( true ) {\n        local_48 = iVar1;\n        local_4c = uVar3;\n        uVar5 = local_4c >> 1 | local_48 << 0x1f;\n        uVar3 = local_44 >> 1 | local_40 << 0x1f;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = (local_44 | local_4c) & 1;\n        uVar7 = uVar6 + uVar4;\n        iVar8 = (local_48 >> 1) + (local_40 >> 1) + (uint)CARRY4(uVar5,uVar3) +\n                (uint)CARRY4(uVar6,uVar4);\n        if ((local_4c != uVar7 || local_48 != iVar8) && (local_44 != uVar7 || local_40 != iVar8))\n        break;\n        x = uVar7;\n        ptVar2 = (*convert)(&x,tp);\n        uVar3 = uVar7;\n        iVar1 = iVar8;\n        if (ptVar2 == (tm_conflict *)0x0) {\n          uVar3 = local_4c;\n          iVar1 = local_48;\n          local_44 = uVar7;\n          local_40 = iVar8;\n        }\n      }\n      if ((ptVar2 == (tm_conflict *)0x0) && (local_4c != 0 || local_48 != 0)) {\n        x = local_4c;\n        ptVar2 = (*convert)(&x,tp);\n      }\n    }\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return ptVar2;\n}\n\n" (ERROR "tm_conflict * __regparm3\nranged_convert(_func_tm_ptr_time_t_ptr_tm_ptr *convert,long_int *t,tm_conflict *tp)" (binary_expression "tm_conflict * __regparm3\nranged_convert(_func_tm_ptr_time_t_ptr_tm_ptr *convert,long_int *t,tm_conflict *tp)" identifier * (ERROR "__regparm3" identifier) (call_expression "ranged_convert(_func_tm_ptr_time_t_ptr_tm_ptr *convert,long_int *t,tm_conflict *tp)" identifier (argument_list "(_func_tm_ptr_time_t_ptr_tm_ptr *convert,long_int *t,tm_conflict *tp)" ( (binary_expression "_func_tm_ptr_time_t_ptr_tm_ptr *convert" identifier * identifier) , (binary_expression "long_int *t" identifier * identifier) , (binary_expression "tm_conflict *tp" identifier * identifier) ))))) (compound_statement "{\n  int iVar1;\n  tm_conflict *ptVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  uint uVar7;\n  int iVar8;\n  int in_GS_OFFSET;\n  uint local_4c;\n  int local_48;\n  uint local_44;\n  int local_40;\n  time_t x;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  x = (time_t)*t;\n  iVar1 = *(int *)((int)t + 4);\n  if ((SBORROW4(iVar1,-1) != SBORROW4(iVar1 + 1,(uint)((uint)x < 0x80000000))) ==\n      (int)((iVar1 + 1) - (uint)((uint)x < 0x80000000)) < 0) {\n    if (-iVar1 < (int)(uint)(0x7fffffff < (uint)x)) {\n      *(undefined4 *)t = 0x7fffffff;\n      x = 0x7fffffff;\n      *(undefined4 *)((int)t + 4) = 0;\n    }\n  }\n  else {\n    *(undefined4 *)t = 0x80000000;\n    x = 0x80000000;\n    *(undefined4 *)((int)t + 4) = 0xffffffff;\n  }\n  ptVar2 = (*convert)(&x,tp);\n  if (ptVar2 == (tm_conflict *)0x0) {\n    local_4c = 0;\n    local_48 = 0;\n    uVar3 = local_4c;\n    iVar1 = local_48;\n    local_44 = (uint)*t;\n    local_40 = *(int *)((int)t + 4);\n    if (*(int *)((int)t + 4) != 0 || (uint)*t != 0) {\n      while( true ) {\n        local_48 = iVar1;\n        local_4c = uVar3;\n        uVar5 = local_4c >> 1 | local_48 << 0x1f;\n        uVar3 = local_44 >> 1 | local_40 << 0x1f;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = (local_44 | local_4c) & 1;\n        uVar7 = uVar6 + uVar4;\n        iVar8 = (local_48 >> 1) + (local_40 >> 1) + (uint)CARRY4(uVar5,uVar3) +\n                (uint)CARRY4(uVar6,uVar4);\n        if ((local_4c != uVar7 || local_48 != iVar8) && (local_44 != uVar7 || local_40 != iVar8))\n        break;\n        x = uVar7;\n        ptVar2 = (*convert)(&x,tp);\n        uVar3 = uVar7;\n        iVar1 = iVar8;\n        if (ptVar2 == (tm_conflict *)0x0) {\n          uVar3 = local_4c;\n          iVar1 = local_48;\n          local_44 = uVar7;\n          local_40 = iVar8;\n        }\n      }\n      if ((ptVar2 == (tm_conflict *)0x0) && (local_4c != 0 || local_48 != 0)) {\n        x = local_4c;\n        ptVar2 = (*convert)(&x,tp);\n      }\n    }\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return ptVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "tm_conflict *ptVar2;" type_identifier (pointer_declarator "*ptVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "time_t x;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(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 "x = (time_t)*t;" (assignment_expression "x = (time_t)*t" identifier = (binary_expression "(time_t)*t" (parenthesized_expression "(time_t)" ( identifier )) * identifier)) ;) (expression_statement "iVar1 = *(int *)((int)t + 4);" (assignment_expression "iVar1 = *(int *)((int)t + 4)" identifier = (pointer_expression "*(int *)((int)t + 4)" * (cast_expression "(int *)((int)t + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)t + 4)" ( (binary_expression "(int)t + 4" (cast_expression "(int)t" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if ((SBORROW4(iVar1,-1) != SBORROW4(iVar1 + 1,(uint)((uint)x < 0x80000000))) ==\n      (int)((iVar1 + 1) - (uint)((uint)x < 0x80000000)) < 0) {\n    if (-iVar1 < (int)(uint)(0x7fffffff < (uint)x)) {\n      *(undefined4 *)t = 0x7fffffff;\n      x = 0x7fffffff;\n      *(undefined4 *)((int)t + 4) = 0;\n    }\n  }\n  else {\n    *(undefined4 *)t = 0x80000000;\n    x = 0x80000000;\n    *(undefined4 *)((int)t + 4) = 0xffffffff;\n  }" if (parenthesized_expression "((SBORROW4(iVar1,-1) != SBORROW4(iVar1 + 1,(uint)((uint)x < 0x80000000))) ==\n      (int)((iVar1 + 1) - (uint)((uint)x < 0x80000000)) < 0)" ( (binary_expression "(SBORROW4(iVar1,-1) != SBORROW4(iVar1 + 1,(uint)((uint)x < 0x80000000))) ==\n      (int)((iVar1 + 1) - (uint)((uint)x < 0x80000000)) < 0" (parenthesized_expression "(SBORROW4(iVar1,-1) != SBORROW4(iVar1 + 1,(uint)((uint)x < 0x80000000)))" ( (binary_expression "SBORROW4(iVar1,-1) != SBORROW4(iVar1 + 1,(uint)((uint)x < 0x80000000))" (call_expression "SBORROW4(iVar1,-1)" identifier (argument_list "(iVar1,-1)" ( identifier , number_literal ))) != (call_expression "SBORROW4(iVar1 + 1,(uint)((uint)x < 0x80000000))" identifier (argument_list "(iVar1 + 1,(uint)((uint)x < 0x80000000))" ( (binary_expression "iVar1 + 1" identifier + number_literal) , (call_expression "(uint)((uint)x < 0x80000000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)x < 0x80000000)" ( (binary_expression "(uint)x < 0x80000000" (cast_expression "(uint)x" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) ))) )))) )) == (binary_expression "(int)((iVar1 + 1) - (uint)((uint)x < 0x80000000)) < 0" (cast_expression "(int)((iVar1 + 1) - (uint)((uint)x < 0x80000000))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar1 + 1) - (uint)((uint)x < 0x80000000))" ( (binary_expression "(iVar1 + 1) - (uint)((uint)x < 0x80000000)" (parenthesized_expression "(iVar1 + 1)" ( (binary_expression "iVar1 + 1" identifier + number_literal) )) - (call_expression "(uint)((uint)x < 0x80000000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)x < 0x80000000)" ( (binary_expression "(uint)x < 0x80000000" (cast_expression "(uint)x" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal) )))) ))) < number_literal)) )) (compound_statement "{\n    if (-iVar1 < (int)(uint)(0x7fffffff < (uint)x)) {\n      *(undefined4 *)t = 0x7fffffff;\n      x = 0x7fffffff;\n      *(undefined4 *)((int)t + 4) = 0;\n    }\n  }" { (if_statement "if (-iVar1 < (int)(uint)(0x7fffffff < (uint)x)) {\n      *(undefined4 *)t = 0x7fffffff;\n      x = 0x7fffffff;\n      *(undefined4 *)((int)t + 4) = 0;\n    }" if (parenthesized_expression "(-iVar1 < (int)(uint)(0x7fffffff < (uint)x))" ( (binary_expression "-iVar1 < (int)(uint)(0x7fffffff < (uint)x)" (unary_expression "-iVar1" - identifier) < (cast_expression "(int)(uint)(0x7fffffff < (uint)x)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(0x7fffffff < (uint)x)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7fffffff < (uint)x)" ( (binary_expression "0x7fffffff < (uint)x" number_literal < (cast_expression "(uint)x" ( (type_descriptor "uint" type_identifier) ) identifier)) ))))) )) (compound_statement "{\n      *(undefined4 *)t = 0x7fffffff;\n      x = 0x7fffffff;\n      *(undefined4 *)((int)t + 4) = 0;\n    }" { (expression_statement "*(undefined4 *)t = 0x7fffffff;" (assignment_expression "*(undefined4 *)t = 0x7fffffff" (pointer_expression "*(undefined4 *)t" * (cast_expression "(undefined4 *)t" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "x = 0x7fffffff;" (assignment_expression "x = 0x7fffffff" identifier = number_literal) ;) (expression_statement "*(undefined4 *)((int)t + 4) = 0;" (assignment_expression "*(undefined4 *)((int)t + 4) = 0" (pointer_expression "*(undefined4 *)((int)t + 4)" * (cast_expression "(undefined4 *)((int)t + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)t + 4)" ( (binary_expression "(int)t + 4" (cast_expression "(int)t" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) })) }) (else_clause "else {\n    *(undefined4 *)t = 0x80000000;\n    x = 0x80000000;\n    *(undefined4 *)((int)t + 4) = 0xffffffff;\n  }" else (compound_statement "{\n    *(undefined4 *)t = 0x80000000;\n    x = 0x80000000;\n    *(undefined4 *)((int)t + 4) = 0xffffffff;\n  }" { (expression_statement "*(undefined4 *)t = 0x80000000;" (assignment_expression "*(undefined4 *)t = 0x80000000" (pointer_expression "*(undefined4 *)t" * (cast_expression "(undefined4 *)t" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = number_literal) ;) (expression_statement "x = 0x80000000;" (assignment_expression "x = 0x80000000" identifier = number_literal) ;) (expression_statement "*(undefined4 *)((int)t + 4) = 0xffffffff;" (assignment_expression "*(undefined4 *)((int)t + 4) = 0xffffffff" (pointer_expression "*(undefined4 *)((int)t + 4)" * (cast_expression "(undefined4 *)((int)t + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)t + 4)" ( (binary_expression "(int)t + 4" (cast_expression "(int)t" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) }))) (expression_statement "ptVar2 = (*convert)(&x,tp);" (assignment_expression "ptVar2 = (*convert)(&x,tp)" identifier = (call_expression "(*convert)(&x,tp)" (parenthesized_expression "(*convert)" ( (pointer_expression "*convert" * identifier) )) (argument_list "(&x,tp)" ( (pointer_expression "&x" & identifier) , identifier )))) ;) (if_statement "if (ptVar2 == (tm_conflict *)0x0) {\n    local_4c = 0;\n    local_48 = 0;\n    uVar3 = local_4c;\n    iVar1 = local_48;\n    local_44 = (uint)*t;\n    local_40 = *(int *)((int)t + 4);\n    if (*(int *)((int)t + 4) != 0 || (uint)*t != 0) {\n      while( true ) {\n        local_48 = iVar1;\n        local_4c = uVar3;\n        uVar5 = local_4c >> 1 | local_48 << 0x1f;\n        uVar3 = local_44 >> 1 | local_40 << 0x1f;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = (local_44 | local_4c) & 1;\n        uVar7 = uVar6 + uVar4;\n        iVar8 = (local_48 >> 1) + (local_40 >> 1) + (uint)CARRY4(uVar5,uVar3) +\n                (uint)CARRY4(uVar6,uVar4);\n        if ((local_4c != uVar7 || local_48 != iVar8) && (local_44 != uVar7 || local_40 != iVar8))\n        break;\n        x = uVar7;\n        ptVar2 = (*convert)(&x,tp);\n        uVar3 = uVar7;\n        iVar1 = iVar8;\n        if (ptVar2 == (tm_conflict *)0x0) {\n          uVar3 = local_4c;\n          iVar1 = local_48;\n          local_44 = uVar7;\n          local_40 = iVar8;\n        }\n      }\n      if ((ptVar2 == (tm_conflict *)0x0) && (local_4c != 0 || local_48 != 0)) {\n        x = local_4c;\n        ptVar2 = (*convert)(&x,tp);\n      }\n    }\n  }" if (parenthesized_expression "(ptVar2 == (tm_conflict *)0x0)" ( (binary_expression "ptVar2 == (tm_conflict *)0x0" identifier == (cast_expression "(tm_conflict *)0x0" ( (type_descriptor "tm_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    local_4c = 0;\n    local_48 = 0;\n    uVar3 = local_4c;\n    iVar1 = local_48;\n    local_44 = (uint)*t;\n    local_40 = *(int *)((int)t + 4);\n    if (*(int *)((int)t + 4) != 0 || (uint)*t != 0) {\n      while( true ) {\n        local_48 = iVar1;\n        local_4c = uVar3;\n        uVar5 = local_4c >> 1 | local_48 << 0x1f;\n        uVar3 = local_44 >> 1 | local_40 << 0x1f;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = (local_44 | local_4c) & 1;\n        uVar7 = uVar6 + uVar4;\n        iVar8 = (local_48 >> 1) + (local_40 >> 1) + (uint)CARRY4(uVar5,uVar3) +\n                (uint)CARRY4(uVar6,uVar4);\n        if ((local_4c != uVar7 || local_48 != iVar8) && (local_44 != uVar7 || local_40 != iVar8))\n        break;\n        x = uVar7;\n        ptVar2 = (*convert)(&x,tp);\n        uVar3 = uVar7;\n        iVar1 = iVar8;\n        if (ptVar2 == (tm_conflict *)0x0) {\n          uVar3 = local_4c;\n          iVar1 = local_48;\n          local_44 = uVar7;\n          local_40 = iVar8;\n        }\n      }\n      if ((ptVar2 == (tm_conflict *)0x0) && (local_4c != 0 || local_48 != 0)) {\n        x = local_4c;\n        ptVar2 = (*convert)(&x,tp);\n      }\n    }\n  }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = local_4c;" (assignment_expression "uVar3 = local_4c" identifier = identifier) ;) (expression_statement "iVar1 = local_48;" (assignment_expression "iVar1 = local_48" identifier = identifier) ;) (expression_statement "local_44 = (uint)*t;" (assignment_expression "local_44 = (uint)*t" identifier = (binary_expression "(uint)*t" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "local_40 = *(int *)((int)t + 4);" (assignment_expression "local_40 = *(int *)((int)t + 4)" identifier = (pointer_expression "*(int *)((int)t + 4)" * (cast_expression "(int *)((int)t + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)t + 4)" ( (binary_expression "(int)t + 4" (cast_expression "(int)t" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (if_statement "if (*(int *)((int)t + 4) != 0 || (uint)*t != 0) {\n      while( true ) {\n        local_48 = iVar1;\n        local_4c = uVar3;\n        uVar5 = local_4c >> 1 | local_48 << 0x1f;\n        uVar3 = local_44 >> 1 | local_40 << 0x1f;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = (local_44 | local_4c) & 1;\n        uVar7 = uVar6 + uVar4;\n        iVar8 = (local_48 >> 1) + (local_40 >> 1) + (uint)CARRY4(uVar5,uVar3) +\n                (uint)CARRY4(uVar6,uVar4);\n        if ((local_4c != uVar7 || local_48 != iVar8) && (local_44 != uVar7 || local_40 != iVar8))\n        break;\n        x = uVar7;\n        ptVar2 = (*convert)(&x,tp);\n        uVar3 = uVar7;\n        iVar1 = iVar8;\n        if (ptVar2 == (tm_conflict *)0x0) {\n          uVar3 = local_4c;\n          iVar1 = local_48;\n          local_44 = uVar7;\n          local_40 = iVar8;\n        }\n      }\n      if ((ptVar2 == (tm_conflict *)0x0) && (local_4c != 0 || local_48 != 0)) {\n        x = local_4c;\n        ptVar2 = (*convert)(&x,tp);\n      }\n    }" if (parenthesized_expression "(*(int *)((int)t + 4) != 0 || (uint)*t != 0)" ( (binary_expression "*(int *)((int)t + 4) != 0 || (uint)*t != 0" (binary_expression "*(int *)((int)t + 4) != 0" (pointer_expression "*(int *)((int)t + 4)" * (cast_expression "(int *)((int)t + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)t + 4)" ( (binary_expression "(int)t + 4" (cast_expression "(int)t" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) || (binary_expression "(uint)*t != 0" (binary_expression "(uint)*t" (parenthesized_expression "(uint)" ( identifier )) * identifier) != number_literal)) )) (compound_statement "{\n      while( true ) {\n        local_48 = iVar1;\n        local_4c = uVar3;\n        uVar5 = local_4c >> 1 | local_48 << 0x1f;\n        uVar3 = local_44 >> 1 | local_40 << 0x1f;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = (local_44 | local_4c) & 1;\n        uVar7 = uVar6 + uVar4;\n        iVar8 = (local_48 >> 1) + (local_40 >> 1) + (uint)CARRY4(uVar5,uVar3) +\n                (uint)CARRY4(uVar6,uVar4);\n        if ((local_4c != uVar7 || local_48 != iVar8) && (local_44 != uVar7 || local_40 != iVar8))\n        break;\n        x = uVar7;\n        ptVar2 = (*convert)(&x,tp);\n        uVar3 = uVar7;\n        iVar1 = iVar8;\n        if (ptVar2 == (tm_conflict *)0x0) {\n          uVar3 = local_4c;\n          iVar1 = local_48;\n          local_44 = uVar7;\n          local_40 = iVar8;\n        }\n      }\n      if ((ptVar2 == (tm_conflict *)0x0) && (local_4c != 0 || local_48 != 0)) {\n        x = local_4c;\n        ptVar2 = (*convert)(&x,tp);\n      }\n    }" { (while_statement "while( true ) {\n        local_48 = iVar1;\n        local_4c = uVar3;\n        uVar5 = local_4c >> 1 | local_48 << 0x1f;\n        uVar3 = local_44 >> 1 | local_40 << 0x1f;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = (local_44 | local_4c) & 1;\n        uVar7 = uVar6 + uVar4;\n        iVar8 = (local_48 >> 1) + (local_40 >> 1) + (uint)CARRY4(uVar5,uVar3) +\n                (uint)CARRY4(uVar6,uVar4);\n        if ((local_4c != uVar7 || local_48 != iVar8) && (local_44 != uVar7 || local_40 != iVar8))\n        break;\n        x = uVar7;\n        ptVar2 = (*convert)(&x,tp);\n        uVar3 = uVar7;\n        iVar1 = iVar8;\n        if (ptVar2 == (tm_conflict *)0x0) {\n          uVar3 = local_4c;\n          iVar1 = local_48;\n          local_44 = uVar7;\n          local_40 = iVar8;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        local_48 = iVar1;\n        local_4c = uVar3;\n        uVar5 = local_4c >> 1 | local_48 << 0x1f;\n        uVar3 = local_44 >> 1 | local_40 << 0x1f;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = (local_44 | local_4c) & 1;\n        uVar7 = uVar6 + uVar4;\n        iVar8 = (local_48 >> 1) + (local_40 >> 1) + (uint)CARRY4(uVar5,uVar3) +\n                (uint)CARRY4(uVar6,uVar4);\n        if ((local_4c != uVar7 || local_48 != iVar8) && (local_44 != uVar7 || local_40 != iVar8))\n        break;\n        x = uVar7;\n        ptVar2 = (*convert)(&x,tp);\n        uVar3 = uVar7;\n        iVar1 = iVar8;\n        if (ptVar2 == (tm_conflict *)0x0) {\n          uVar3 = local_4c;\n          iVar1 = local_48;\n          local_44 = uVar7;\n          local_40 = iVar8;\n        }\n      }" { (expression_statement "local_48 = iVar1;" (assignment_expression "local_48 = iVar1" identifier = identifier) ;) (expression_statement "local_4c = uVar3;" (assignment_expression "local_4c = uVar3" identifier = identifier) ;) (expression_statement "uVar5 = local_4c >> 1 | local_48 << 0x1f;" (assignment_expression "uVar5 = local_4c >> 1 | local_48 << 0x1f" identifier = (binary_expression "local_4c >> 1 | local_48 << 0x1f" (binary_expression "local_4c >> 1" identifier >> number_literal) | (binary_expression "local_48 << 0x1f" identifier << number_literal))) ;) (expression_statement "uVar3 = local_44 >> 1 | local_40 << 0x1f;" (assignment_expression "uVar3 = local_44 >> 1 | local_40 << 0x1f" identifier = (binary_expression "local_44 >> 1 | local_40 << 0x1f" (binary_expression "local_44 >> 1" identifier >> number_literal) | (binary_expression "local_40 << 0x1f" identifier << number_literal))) ;) (expression_statement "uVar6 = uVar5 + uVar3;" (assignment_expression "uVar6 = uVar5 + uVar3" identifier = (binary_expression "uVar5 + uVar3" identifier + identifier)) ;) (expression_statement "uVar4 = (local_44 | local_4c) & 1;" (assignment_expression "uVar4 = (local_44 | local_4c) & 1" identifier = (binary_expression "(local_44 | local_4c) & 1" (parenthesized_expression "(local_44 | local_4c)" ( (binary_expression "local_44 | local_4c" identifier | identifier) )) & number_literal)) ;) (expression_statement "uVar7 = uVar6 + uVar4;" (assignment_expression "uVar7 = uVar6 + uVar4" identifier = (binary_expression "uVar6 + uVar4" identifier + identifier)) ;) (expression_statement "iVar8 = (local_48 >> 1) + (local_40 >> 1) + (uint)CARRY4(uVar5,uVar3) +\n                (uint)CARRY4(uVar6,uVar4);" (assignment_expression "iVar8 = (local_48 >> 1) + (local_40 >> 1) + (uint)CARRY4(uVar5,uVar3) +\n                (uint)CARRY4(uVar6,uVar4)" identifier = (binary_expression "(local_48 >> 1) + (local_40 >> 1) + (uint)CARRY4(uVar5,uVar3) +\n                (uint)CARRY4(uVar6,uVar4)" (binary_expression "(local_48 >> 1) + (local_40 >> 1) + (uint)CARRY4(uVar5,uVar3)" (binary_expression "(local_48 >> 1) + (local_40 >> 1)" (parenthesized_expression "(local_48 >> 1)" ( (binary_expression "local_48 >> 1" identifier >> number_literal) )) + (parenthesized_expression "(local_40 >> 1)" ( (binary_expression "local_40 >> 1" identifier >> number_literal) ))) + (cast_expression "(uint)CARRY4(uVar5,uVar3)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar5,uVar3)" identifier (argument_list "(uVar5,uVar3)" ( identifier , identifier ))))) + (cast_expression "(uint)CARRY4(uVar6,uVar4)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar6,uVar4)" identifier (argument_list "(uVar6,uVar4)" ( identifier , identifier )))))) ;) (if_statement "if ((local_4c != uVar7 || local_48 != iVar8) && (local_44 != uVar7 || local_40 != iVar8))\n        break;" if (parenthesized_expression "((local_4c != uVar7 || local_48 != iVar8) && (local_44 != uVar7 || local_40 != iVar8))" ( (binary_expression "(local_4c != uVar7 || local_48 != iVar8) && (local_44 != uVar7 || local_40 != iVar8)" (parenthesized_expression "(local_4c != uVar7 || local_48 != iVar8)" ( (binary_expression "local_4c != uVar7 || local_48 != iVar8" (binary_expression "local_4c != uVar7" identifier != identifier) || (binary_expression "local_48 != iVar8" identifier != identifier)) )) && (parenthesized_expression "(local_44 != uVar7 || local_40 != iVar8)" ( (binary_expression "local_44 != uVar7 || local_40 != iVar8" (binary_expression "local_44 != uVar7" identifier != identifier) || (binary_expression "local_40 != iVar8" identifier != identifier)) ))) )) (break_statement "break;" break ;)) (expression_statement "x = uVar7;" (assignment_expression "x = uVar7" identifier = identifier) ;) (expression_statement "ptVar2 = (*convert)(&x,tp);" (assignment_expression "ptVar2 = (*convert)(&x,tp)" identifier = (call_expression "(*convert)(&x,tp)" (parenthesized_expression "(*convert)" ( (pointer_expression "*convert" * identifier) )) (argument_list "(&x,tp)" ( (pointer_expression "&x" & identifier) , identifier )))) ;) (expression_statement "uVar3 = uVar7;" (assignment_expression "uVar3 = uVar7" identifier = identifier) ;) (expression_statement "iVar1 = iVar8;" (assignment_expression "iVar1 = iVar8" identifier = identifier) ;) (if_statement "if (ptVar2 == (tm_conflict *)0x0) {\n          uVar3 = local_4c;\n          iVar1 = local_48;\n          local_44 = uVar7;\n          local_40 = iVar8;\n        }" if (parenthesized_expression "(ptVar2 == (tm_conflict *)0x0)" ( (binary_expression "ptVar2 == (tm_conflict *)0x0" identifier == (cast_expression "(tm_conflict *)0x0" ( (type_descriptor "tm_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          uVar3 = local_4c;\n          iVar1 = local_48;\n          local_44 = uVar7;\n          local_40 = iVar8;\n        }" { (expression_statement "uVar3 = local_4c;" (assignment_expression "uVar3 = local_4c" identifier = identifier) ;) (expression_statement "iVar1 = local_48;" (assignment_expression "iVar1 = local_48" identifier = identifier) ;) (expression_statement "local_44 = uVar7;" (assignment_expression "local_44 = uVar7" identifier = identifier) ;) (expression_statement "local_40 = iVar8;" (assignment_expression "local_40 = iVar8" identifier = identifier) ;) })) })) (if_statement "if ((ptVar2 == (tm_conflict *)0x0) && (local_4c != 0 || local_48 != 0)) {\n        x = local_4c;\n        ptVar2 = (*convert)(&x,tp);\n      }" if (parenthesized_expression "((ptVar2 == (tm_conflict *)0x0) && (local_4c != 0 || local_48 != 0))" ( (binary_expression "(ptVar2 == (tm_conflict *)0x0) && (local_4c != 0 || local_48 != 0)" (parenthesized_expression "(ptVar2 == (tm_conflict *)0x0)" ( (binary_expression "ptVar2 == (tm_conflict *)0x0" identifier == (cast_expression "(tm_conflict *)0x0" ( (type_descriptor "tm_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_4c != 0 || local_48 != 0)" ( (binary_expression "local_4c != 0 || local_48 != 0" (binary_expression "local_4c != 0" identifier != number_literal) || (binary_expression "local_48 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        x = local_4c;\n        ptVar2 = (*convert)(&x,tp);\n      }" { (expression_statement "x = local_4c;" (assignment_expression "x = local_4c" identifier = identifier) ;) (expression_statement "ptVar2 = (*convert)(&x,tp);" (assignment_expression "ptVar2 = (*convert)(&x,tp)" identifier = (call_expression "(*convert)(&x,tp)" (parenthesized_expression "(*convert)" ( (pointer_expression "*convert" * identifier) )) (argument_list "(&x,tp)" ( (pointer_expression "&x" & identifier) , identifier )))) ;) })) })) })) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(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                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return ptVar2;" return identifier ;) }))
(translation_unit "void __regparm3 FUN_0002a0b0(code *param_1,uint *param_2,undefined4 param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int in_GS_OFFSET;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  uint local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = *param_2;\n  uVar2 = param_2[1];\n  if ((SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==\n      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0) {\n    if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }\n  }\n  else {\n    *param_2 = 0x80000000;\n    local_24 = 0x80000000;\n    param_2[1] = 0xffffffff;\n  }\n  iVar1 = (*param_1)(&local_24,param_3);\n  if (iVar1 == 0) {\n    local_4c = 0;\n    local_48 = 0;\n    iVar1 = 0;\n    uVar2 = local_4c;\n    uVar3 = local_48;\n    local_44 = *param_2;\n    local_40 = param_2[1];\n    if (param_2[1] != 0 || *param_2 != 0) {\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002b190();\n  }\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_0002a0b0(code *param_1,uint *param_2,undefined4 param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int in_GS_OFFSET;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  uint local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = *param_2;\n  uVar2 = param_2[1];\n  if ((SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==\n      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0) {\n    if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }\n  }\n  else {\n    *param_2 = 0x80000000;\n    local_24 = 0x80000000;\n    param_2[1] = 0xffffffff;\n  }\n  iVar1 = (*param_1)(&local_24,param_3);\n  if (iVar1 == 0) {\n    local_4c = 0;\n    local_48 = 0;\n    iVar1 = 0;\n    uVar2 = local_4c;\n    uVar3 = local_48;\n    local_44 = *param_2;\n    local_40 = param_2[1];\n    if (param_2[1] != 0 || *param_2 != 0) {\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002b190();\n  }\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0002a0b0(code *param_1,uint *param_2,undefined4 param_3)" identifier (parameter_list "(code *param_1,uint *param_2,undefined4 param_3)" ( (parameter_declaration "code *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int in_GS_OFFSET;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  uint local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = *param_2;\n  uVar2 = param_2[1];\n  if ((SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==\n      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0) {\n    if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }\n  }\n  else {\n    *param_2 = 0x80000000;\n    local_24 = 0x80000000;\n    param_2[1] = 0xffffffff;\n  }\n  iVar1 = (*param_1)(&local_24,param_3);\n  if (iVar1 == 0) {\n    local_4c = 0;\n    local_48 = 0;\n    iVar1 = 0;\n    uVar2 = local_4c;\n    uVar3 = local_48;\n    local_44 = *param_2;\n    local_40 = param_2[1];\n    if (param_2[1] != 0 || *param_2 != 0) {\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002b190();\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "uint local_4c;" type_identifier identifier ;) (declaration "uint local_48;" type_identifier identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "uint local_40;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(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 "local_24 = *param_2;" (assignment_expression "local_24 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "uVar2 = param_2[1];" (assignment_expression "uVar2 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if ((SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==\n      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0) {\n    if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }\n  }\n  else {\n    *param_2 = 0x80000000;\n    local_24 = 0x80000000;\n    param_2[1] = 0xffffffff;\n  }" if (parenthesized_expression "((SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==\n      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0)" ( (binary_expression "(SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==\n      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0" (parenthesized_expression "(SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000)))" ( (binary_expression "SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))" (call_expression "SBORROW4(uVar2,-1)" identifier (argument_list "(uVar2,-1)" ( identifier , number_literal ))) != (call_expression "SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))" identifier (argument_list "(uVar2 + 1,(uint)(local_24 < 0x80000000))" ( (binary_expression "uVar2 + 1" identifier + number_literal) , (call_expression "(uint)(local_24 < 0x80000000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < 0x80000000)" ( (binary_expression "local_24 < 0x80000000" identifier < number_literal) ))) )))) )) == (binary_expression "(int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0" (cast_expression "(int)((uVar2 + 1) - (uint)(local_24 < 0x80000000))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uVar2 + 1) - (uint)(local_24 < 0x80000000))" ( (binary_expression "(uVar2 + 1) - (uint)(local_24 < 0x80000000)" (parenthesized_expression "(uVar2 + 1)" ( (binary_expression "uVar2 + 1" identifier + number_literal) )) - (call_expression "(uint)(local_24 < 0x80000000)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_24 < 0x80000000)" ( (binary_expression "local_24 < 0x80000000" identifier < number_literal) )))) ))) < number_literal)) )) (compound_statement "{\n    if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }\n  }" { (if_statement "if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }" if (parenthesized_expression "((int)-uVar2 < (int)(uint)(0x7fffffff < local_24))" ( (binary_expression "(int)-uVar2 < (int)(uint)(0x7fffffff < local_24)" (cast_expression "(int)-uVar2" ( (type_descriptor "int" primitive_type) ) (unary_expression "-uVar2" - identifier)) < (cast_expression "(int)(uint)(0x7fffffff < local_24)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(0x7fffffff < local_24)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x7fffffff < local_24)" ( (binary_expression "0x7fffffff < local_24" number_literal < identifier) ))))) )) (compound_statement "{\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }" { (expression_statement "*param_2 = 0x7fffffff;" (assignment_expression "*param_2 = 0x7fffffff" (pointer_expression "*param_2" * identifier) = number_literal) ;) (expression_statement "local_24 = 0x7fffffff;" (assignment_expression "local_24 = 0x7fffffff" identifier = number_literal) ;) (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) })) }) (else_clause "else {\n    *param_2 = 0x80000000;\n    local_24 = 0x80000000;\n    param_2[1] = 0xffffffff;\n  }" else (compound_statement "{\n    *param_2 = 0x80000000;\n    local_24 = 0x80000000;\n    param_2[1] = 0xffffffff;\n  }" { (expression_statement "*param_2 = 0x80000000;" (assignment_expression "*param_2 = 0x80000000" (pointer_expression "*param_2" * identifier) = number_literal) ;) (expression_statement "local_24 = 0x80000000;" (assignment_expression "local_24 = 0x80000000" identifier = number_literal) ;) (expression_statement "param_2[1] = 0xffffffff;" (assignment_expression "param_2[1] = 0xffffffff" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) }))) (expression_statement "iVar1 = (*param_1)(&local_24,param_3);" (assignment_expression "iVar1 = (*param_1)(&local_24,param_3)" identifier = (call_expression "(*param_1)(&local_24,param_3)" (parenthesized_expression "(*param_1)" ( (pointer_expression "*param_1" * identifier) )) (argument_list "(&local_24,param_3)" ( (pointer_expression "&local_24" & identifier) , identifier )))) ;) (if_statement "if (iVar1 == 0) {\n    local_4c = 0;\n    local_48 = 0;\n    iVar1 = 0;\n    uVar2 = local_4c;\n    uVar3 = local_48;\n    local_44 = *param_2;\n    local_40 = param_2[1];\n    if (param_2[1] != 0 || *param_2 != 0) {\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }\n  }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n    local_4c = 0;\n    local_48 = 0;\n    iVar1 = 0;\n    uVar2 = local_4c;\n    uVar3 = local_48;\n    local_44 = *param_2;\n    local_40 = param_2[1];\n    if (param_2[1] != 0 || *param_2 != 0) {\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }\n  }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" identifier = number_literal) ;) (expression_statement "uVar2 = local_4c;" (assignment_expression "uVar2 = local_4c" identifier = identifier) ;) (expression_statement "uVar3 = local_48;" (assignment_expression "uVar3 = local_48" identifier = identifier) ;) (expression_statement "local_44 = *param_2;" (assignment_expression "local_44 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "local_40 = param_2[1];" (assignment_expression "local_40 = param_2[1]" identifier = (subscript_expression "param_2[1]" identifier [ number_literal ])) ;) (if_statement "if (param_2[1] != 0 || *param_2 != 0) {\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }" if (parenthesized_expression "(param_2[1] != 0 || *param_2 != 0)" ( (binary_expression "param_2[1] != 0 || *param_2 != 0" (binary_expression "param_2[1] != 0" (subscript_expression "param_2[1]" identifier [ number_literal ]) != number_literal) || (binary_expression "*param_2 != 0" (pointer_expression "*param_2" * identifier) != number_literal)) )) (compound_statement "{\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }" { (while_statement "while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }" { (expression_statement "local_48 = uVar3;" (assignment_expression "local_48 = uVar3" identifier = identifier) ;) (expression_statement "local_4c = uVar2;" (assignment_expression "local_4c = uVar2" identifier = identifier) ;) (expression_statement "uVar4 = local_4c >> 1 | local_48 << 0x1f;" (assignment_expression "uVar4 = local_4c >> 1 | local_48 << 0x1f" identifier = (binary_expression "local_4c >> 1 | local_48 << 0x1f" (binary_expression "local_4c >> 1" identifier >> number_literal) | (binary_expression "local_48 << 0x1f" identifier << number_literal))) ;) (expression_statement "uVar2 = local_44 >> 1 | local_40 << 0x1f;" (assignment_expression "uVar2 = local_44 >> 1 | local_40 << 0x1f" identifier = (binary_expression "local_44 >> 1 | local_40 << 0x1f" (binary_expression "local_44 >> 1" identifier >> number_literal) | (binary_expression "local_40 << 0x1f" identifier << number_literal))) ;) (expression_statement "uVar5 = uVar4 + uVar2;" (assignment_expression "uVar5 = uVar4 + uVar2" identifier = (binary_expression "uVar4 + uVar2" identifier + identifier)) ;) (expression_statement "uVar3 = (local_44 | local_4c) & 1;" (assignment_expression "uVar3 = (local_44 | local_4c) & 1" identifier = (binary_expression "(local_44 | local_4c) & 1" (parenthesized_expression "(local_44 | local_4c)" ( (binary_expression "local_44 | local_4c" identifier | identifier) )) & number_literal)) ;) (expression_statement "uVar6 = uVar5 + uVar3;" (assignment_expression "uVar6 = uVar5 + uVar3" identifier = (binary_expression "uVar5 + uVar3" identifier + identifier)) ;) (expression_statement "uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);" (assignment_expression "uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3)" identifier = (binary_expression "((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3)" (binary_expression "((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2)" (binary_expression "((int)local_48 >> 1) + ((int)local_40 >> 1)" (parenthesized_expression "((int)local_48 >> 1)" ( (binary_expression "(int)local_48 >> 1" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + (parenthesized_expression "((int)local_40 >> 1)" ( (binary_expression "(int)local_40 >> 1" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)CARRY4(uVar4,uVar2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar4,uVar2)" identifier (argument_list "(uVar4,uVar2)" ( identifier , identifier ))))) + (cast_expression "(uint)CARRY4(uVar5,uVar3)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar5,uVar3)" identifier (argument_list "(uVar5,uVar3)" ( identifier , identifier )))))) ;) (if_statement "if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;" if (parenthesized_expression "((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))" ( (binary_expression "(local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4)" (parenthesized_expression "(local_4c != uVar6 || local_48 != uVar4)" ( (binary_expression "local_4c != uVar6 || local_48 != uVar4" (binary_expression "local_4c != uVar6" identifier != identifier) || (binary_expression "local_48 != uVar4" identifier != identifier)) )) && (parenthesized_expression "(local_44 != uVar6 || local_40 != uVar4)" ( (binary_expression "local_44 != uVar6 || local_40 != uVar4" (binary_expression "local_44 != uVar6" identifier != identifier) || (binary_expression "local_40 != uVar4" identifier != identifier)) ))) )) (break_statement "break;" break ;)) (expression_statement "local_24 = uVar6;" (assignment_expression "local_24 = uVar6" identifier = identifier) ;) (expression_statement "iVar1 = (*param_1)(&local_24,param_3);" (assignment_expression "iVar1 = (*param_1)(&local_24,param_3)" identifier = (call_expression "(*param_1)(&local_24,param_3)" (parenthesized_expression "(*param_1)" ( (pointer_expression "*param_1" * identifier) )) (argument_list "(&local_24,param_3)" ( (pointer_expression "&local_24" & identifier) , identifier )))) ;) (expression_statement "uVar2 = uVar6;" (assignment_expression "uVar2 = uVar6" identifier = identifier) ;) (expression_statement "uVar3 = uVar4;" (assignment_expression "uVar3 = uVar4" identifier = identifier) ;) (if_statement "if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }" if (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) (compound_statement "{\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }" { (expression_statement "uVar2 = local_4c;" (assignment_expression "uVar2 = local_4c" identifier = identifier) ;) (expression_statement "uVar3 = local_48;" (assignment_expression "uVar3 = local_48" identifier = identifier) ;) (expression_statement "local_44 = uVar6;" (assignment_expression "local_44 = uVar6" identifier = identifier) ;) (expression_statement "local_40 = uVar4;" (assignment_expression "local_40 = uVar4" identifier = identifier) ;) })) })) (if_statement "if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }" if (parenthesized_expression "((iVar1 == 0) && (local_4c != 0 || local_48 != 0))" ( (binary_expression "(iVar1 == 0) && (local_4c != 0 || local_48 != 0)" (parenthesized_expression "(iVar1 == 0)" ( (binary_expression "iVar1 == 0" identifier == number_literal) )) && (parenthesized_expression "(local_4c != 0 || local_48 != 0)" ( (binary_expression "local_4c != 0 || local_48 != 0" (binary_expression "local_4c != 0" identifier != number_literal) || (binary_expression "local_48 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }" { (expression_statement "local_24 = local_4c;" (assignment_expression "local_24 = local_4c" identifier = identifier) ;) (expression_statement "(*param_1)(&local_24,param_3);" (call_expression "(*param_1)(&local_24,param_3)" (parenthesized_expression "(*param_1)" ( (pointer_expression "*param_1" * identifier) )) (argument_list "(&local_24,param_3)" ( (pointer_expression "&local_24" & identifier) , identifier ))) ;) })) })) })) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002b190();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(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                    \n    FUN_0002b190();\n  }" { (expression_statement "FUN_0002b190();" (call_expression "FUN_0002b190()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * 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 ;) (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 * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , LIT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < LIT) ))) )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < LIT) )))) ))) < LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (unary_expression - IDENT)) < (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) || (binary_expression (pointer_expression * IDENT) != LIT)) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT | IDENT) )) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (binary_expression IDENT != IDENT)) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (binary_expression IDENT != IDENT)) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) , IDENT ))) ;) })) })) })) (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 { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_0002a0b0(code *param_1,uint *param_2,undefined4 param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int in_GS_OFFSET;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  uint local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = *param_2;\n  uVar2 = param_2[1];\n  if ((SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==\n      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0) {\n    if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }\n  }\n  else {\n    *param_2 = 0x80000000;\n    local_24 = 0x80000000;\n    param_2[1] = 0xffffffff;\n  }\n  iVar1 = (*param_1)(&local_24,param_3);\n  if (iVar1 == 0) {\n    local_4c = 0;\n    local_48 = 0;\n    iVar1 = 0;\n    uVar2 = local_4c;\n    uVar3 = local_48;\n    local_44 = *param_2;\n    local_40 = param_2[1];\n    if (param_2[1] != 0 || *param_2 != 0) {\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002b190();\n  }\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0002a0b0(code *param_1,uint *param_2,undefined4 param_3)" (identifier "FUN_0002a0b0") (parameter_list "(code *param_1,uint *param_2,undefined4 param_3)" (( "(") (parameter_declaration "code *param_1" (type_identifier "code") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  uint uVar3;\n  uint uVar4;\n  uint uVar5;\n  uint uVar6;\n  int in_GS_OFFSET;\n  uint local_4c;\n  uint local_48;\n  uint local_44;\n  uint local_40;\n  uint local_24;\n  int local_20;\n  \n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_24 = *param_2;\n  uVar2 = param_2[1];\n  if ((SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==\n      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0) {\n    if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }\n  }\n  else {\n    *param_2 = 0x80000000;\n    local_24 = 0x80000000;\n    param_2[1] = 0xffffffff;\n  }\n  iVar1 = (*param_1)(&local_24,param_3);\n  if (iVar1 == 0) {\n    local_4c = 0;\n    local_48 = 0;\n    iVar1 = 0;\n    uVar2 = local_4c;\n    uVar3 = local_48;\n    local_44 = *param_2;\n    local_40 = param_2[1];\n    if (param_2[1] != 0 || *param_2 != 0) {\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }\n  }\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002b190();\n  }\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "uint local_4c;" (type_identifier "uint") (identifier "local_4c") (; ";")) (declaration "uint local_48;" (type_identifier "uint") (identifier "local_48") (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "uint local_40;" (type_identifier "uint") (identifier "local_40") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (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 "local_24 = *param_2;" (assignment_expression "local_24 = *param_2" (identifier "local_24") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "uVar2 = param_2[1];" (assignment_expression "uVar2 = param_2[1]" (identifier "uVar2") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ((SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==\n      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0) {\n    if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }\n  }\n  else {\n    *param_2 = 0x80000000;\n    local_24 = 0x80000000;\n    param_2[1] = 0xffffffff;\n  }" (if "if") (parenthesized_expression "((SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==\n      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0)" (( "(") (binary_expression "(SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==\n      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0" (parenthesized_expression "(SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000)))" (( "(") (binary_expression "SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))" (call_expression "SBORROW4(uVar2,-1)" (identifier "SBORROW4") (argument_list "(uVar2,-1)" (( "(") (identifier "uVar2") (, ",") (number_literal "-1") () ")"))) (!= "!=") (call_expression "SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))" (identifier "SBORROW4") (argument_list "(uVar2 + 1,(uint)(local_24 < 0x80000000))" (( "(") (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1")) (, ",") (call_expression "(uint)(local_24 < 0x80000000)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_24 < 0x80000000)" (( "(") (binary_expression "local_24 < 0x80000000" (identifier "local_24") (< "<") (number_literal "0x80000000")) () ")"))) () ")")))) () ")")) (== "==") (binary_expression "(int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0" (cast_expression "(int)((uVar2 + 1) - (uint)(local_24 < 0x80000000))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uVar2 + 1) - (uint)(local_24 < 0x80000000))" (( "(") (binary_expression "(uVar2 + 1) - (uint)(local_24 < 0x80000000)" (parenthesized_expression "(uVar2 + 1)" (( "(") (binary_expression "uVar2 + 1" (identifier "uVar2") (+ "+") (number_literal "1")) () ")")) (- "-") (call_expression "(uint)(local_24 < 0x80000000)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_24 < 0x80000000)" (( "(") (binary_expression "local_24 < 0x80000000" (identifier "local_24") (< "<") (number_literal "0x80000000")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n    if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }\n  }" ({ "{") (if_statement "if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }" (if "if") (parenthesized_expression "((int)-uVar2 < (int)(uint)(0x7fffffff < local_24))" (( "(") (binary_expression "(int)-uVar2 < (int)(uint)(0x7fffffff < local_24)" (cast_expression "(int)-uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (unary_expression "-uVar2" (- "-") (identifier "uVar2"))) (< "<") (cast_expression "(int)(uint)(0x7fffffff < local_24)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(0x7fffffff < local_24)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0x7fffffff < local_24)" (( "(") (binary_expression "0x7fffffff < local_24" (number_literal "0x7fffffff") (< "<") (identifier "local_24")) () ")"))))) () ")")) (compound_statement "{\n      *param_2 = 0x7fffffff;\n      local_24 = 0x7fffffff;\n      param_2[1] = 0;\n    }" ({ "{") (expression_statement "*param_2 = 0x7fffffff;" (assignment_expression "*param_2 = 0x7fffffff" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "0x7fffffff")) (; ";")) (expression_statement "local_24 = 0x7fffffff;" (assignment_expression "local_24 = 0x7fffffff" (identifier "local_24") (= "=") (number_literal "0x7fffffff")) (; ";")) (expression_statement "param_2[1] = 0;" (assignment_expression "param_2[1] = 0" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    *param_2 = 0x80000000;\n    local_24 = 0x80000000;\n    param_2[1] = 0xffffffff;\n  }" (else "else") (compound_statement "{\n    *param_2 = 0x80000000;\n    local_24 = 0x80000000;\n    param_2[1] = 0xffffffff;\n  }" ({ "{") (expression_statement "*param_2 = 0x80000000;" (assignment_expression "*param_2 = 0x80000000" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "0x80000000")) (; ";")) (expression_statement "local_24 = 0x80000000;" (assignment_expression "local_24 = 0x80000000" (identifier "local_24") (= "=") (number_literal "0x80000000")) (; ";")) (expression_statement "param_2[1] = 0xffffffff;" (assignment_expression "param_2[1] = 0xffffffff" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")))) (expression_statement "iVar1 = (*param_1)(&local_24,param_3);" (assignment_expression "iVar1 = (*param_1)(&local_24,param_3)" (identifier "iVar1") (= "=") (call_expression "(*param_1)(&local_24,param_3)" (parenthesized_expression "(*param_1)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")")) (argument_list "(&local_24,param_3)" (( "(") (pointer_expression "&local_24" (& "&") (identifier "local_24")) (, ",") (identifier "param_3") () ")")))) (; ";")) (if_statement "if (iVar1 == 0) {\n    local_4c = 0;\n    local_48 = 0;\n    iVar1 = 0;\n    uVar2 = local_4c;\n    uVar3 = local_48;\n    local_44 = *param_2;\n    local_40 = param_2[1];\n    if (param_2[1] != 0 || *param_2 != 0) {\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }\n  }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_4c = 0;\n    local_48 = 0;\n    iVar1 = 0;\n    uVar2 = local_4c;\n    uVar3 = local_48;\n    local_44 = *param_2;\n    local_40 = param_2[1];\n    if (param_2[1] != 0 || *param_2 != 0) {\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }\n  }" ({ "{") (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" (identifier "local_4c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar1 = 0;" (assignment_expression "iVar1 = 0" (identifier "iVar1") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar2 = local_4c;" (assignment_expression "uVar2 = local_4c" (identifier "uVar2") (= "=") (identifier "local_4c")) (; ";")) (expression_statement "uVar3 = local_48;" (assignment_expression "uVar3 = local_48" (identifier "uVar3") (= "=") (identifier "local_48")) (; ";")) (expression_statement "local_44 = *param_2;" (assignment_expression "local_44 = *param_2" (identifier "local_44") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "local_40 = param_2[1];" (assignment_expression "local_40 = param_2[1]" (identifier "local_40") (= "=") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (param_2[1] != 0 || *param_2 != 0) {\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }" (if "if") (parenthesized_expression "(param_2[1] != 0 || *param_2 != 0)" (( "(") (binary_expression "param_2[1] != 0 || *param_2 != 0" (binary_expression "param_2[1] != 0" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) (|| "||") (binary_expression "*param_2 != 0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n      while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }\n      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }\n    }" ({ "{") (while_statement "while( true ) {\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        local_48 = uVar3;\n        local_4c = uVar2;\n        uVar4 = local_4c >> 1 | local_48 << 0x1f;\n        uVar2 = local_44 >> 1 | local_40 << 0x1f;\n        uVar5 = uVar4 + uVar2;\n        uVar3 = (local_44 | local_4c) & 1;\n        uVar6 = uVar5 + uVar3;\n        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);\n        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;\n        local_24 = uVar6;\n        iVar1 = (*param_1)(&local_24,param_3);\n        uVar2 = uVar6;\n        uVar3 = uVar4;\n        if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }\n      }" ({ "{") (expression_statement "local_48 = uVar3;" (assignment_expression "local_48 = uVar3" (identifier "local_48") (= "=") (identifier "uVar3")) (; ";")) (expression_statement "local_4c = uVar2;" (assignment_expression "local_4c = uVar2" (identifier "local_4c") (= "=") (identifier "uVar2")) (; ";")) (expression_statement "uVar4 = local_4c >> 1 | local_48 << 0x1f;" (assignment_expression "uVar4 = local_4c >> 1 | local_48 << 0x1f" (identifier "uVar4") (= "=") (binary_expression "local_4c >> 1 | local_48 << 0x1f" (binary_expression "local_4c >> 1" (identifier "local_4c") (>> ">>") (number_literal "1")) (| "|") (binary_expression "local_48 << 0x1f" (identifier "local_48") (<< "<<") (number_literal "0x1f")))) (; ";")) (expression_statement "uVar2 = local_44 >> 1 | local_40 << 0x1f;" (assignment_expression "uVar2 = local_44 >> 1 | local_40 << 0x1f" (identifier "uVar2") (= "=") (binary_expression "local_44 >> 1 | local_40 << 0x1f" (binary_expression "local_44 >> 1" (identifier "local_44") (>> ">>") (number_literal "1")) (| "|") (binary_expression "local_40 << 0x1f" (identifier "local_40") (<< "<<") (number_literal "0x1f")))) (; ";")) (expression_statement "uVar5 = uVar4 + uVar2;" (assignment_expression "uVar5 = uVar4 + uVar2" (identifier "uVar5") (= "=") (binary_expression "uVar4 + uVar2" (identifier "uVar4") (+ "+") (identifier "uVar2"))) (; ";")) (expression_statement "uVar3 = (local_44 | local_4c) & 1;" (assignment_expression "uVar3 = (local_44 | local_4c) & 1" (identifier "uVar3") (= "=") (binary_expression "(local_44 | local_4c) & 1" (parenthesized_expression "(local_44 | local_4c)" (( "(") (binary_expression "local_44 | local_4c" (identifier "local_44") (| "|") (identifier "local_4c")) () ")")) (& "&") (number_literal "1"))) (; ";")) (expression_statement "uVar6 = uVar5 + uVar3;" (assignment_expression "uVar6 = uVar5 + uVar3" (identifier "uVar6") (= "=") (binary_expression "uVar5 + uVar3" (identifier "uVar5") (+ "+") (identifier "uVar3"))) (; ";")) (expression_statement "uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3);" (assignment_expression "uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3)" (identifier "uVar4") (= "=") (binary_expression "((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +\n                (uint)CARRY4(uVar5,uVar3)" (binary_expression "((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2)" (binary_expression "((int)local_48 >> 1) + ((int)local_40 >> 1)" (parenthesized_expression "((int)local_48 >> 1)" (( "(") (binary_expression "(int)local_48 >> 1" (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48")) (>> ">>") (number_literal "1")) () ")")) (+ "+") (parenthesized_expression "((int)local_40 >> 1)" (( "(") (binary_expression "(int)local_40 >> 1" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (>> ">>") (number_literal "1")) () ")"))) (+ "+") (cast_expression "(uint)CARRY4(uVar4,uVar2)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar4,uVar2)" (identifier "CARRY4") (argument_list "(uVar4,uVar2)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar2") () ")"))))) (+ "+") (cast_expression "(uint)CARRY4(uVar5,uVar3)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar5,uVar3)" (identifier "CARRY4") (argument_list "(uVar5,uVar3)" (( "(") (identifier "uVar5") (, ",") (identifier "uVar3") () ")")))))) (; ";")) (if_statement "if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))\n        break;" (if "if") (parenthesized_expression "((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))" (( "(") (binary_expression "(local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4)" (parenthesized_expression "(local_4c != uVar6 || local_48 != uVar4)" (( "(") (binary_expression "local_4c != uVar6 || local_48 != uVar4" (binary_expression "local_4c != uVar6" (identifier "local_4c") (!= "!=") (identifier "uVar6")) (|| "||") (binary_expression "local_48 != uVar4" (identifier "local_48") (!= "!=") (identifier "uVar4"))) () ")")) (&& "&&") (parenthesized_expression "(local_44 != uVar6 || local_40 != uVar4)" (( "(") (binary_expression "local_44 != uVar6 || local_40 != uVar4" (binary_expression "local_44 != uVar6" (identifier "local_44") (!= "!=") (identifier "uVar6")) (|| "||") (binary_expression "local_40 != uVar4" (identifier "local_40") (!= "!=") (identifier "uVar4"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_24 = uVar6;" (assignment_expression "local_24 = uVar6" (identifier "local_24") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "iVar1 = (*param_1)(&local_24,param_3);" (assignment_expression "iVar1 = (*param_1)(&local_24,param_3)" (identifier "iVar1") (= "=") (call_expression "(*param_1)(&local_24,param_3)" (parenthesized_expression "(*param_1)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")")) (argument_list "(&local_24,param_3)" (( "(") (pointer_expression "&local_24" (& "&") (identifier "local_24")) (, ",") (identifier "param_3") () ")")))) (; ";")) (expression_statement "uVar2 = uVar6;" (assignment_expression "uVar2 = uVar6" (identifier "uVar2") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "uVar3 = uVar4;" (assignment_expression "uVar3 = uVar4" (identifier "uVar3") (= "=") (identifier "uVar4")) (; ";")) (if_statement "if (iVar1 == 0) {\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }" (if "if") (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar2 = local_4c;\n          uVar3 = local_48;\n          local_44 = uVar6;\n          local_40 = uVar4;\n        }" ({ "{") (expression_statement "uVar2 = local_4c;" (assignment_expression "uVar2 = local_4c" (identifier "uVar2") (= "=") (identifier "local_4c")) (; ";")) (expression_statement "uVar3 = local_48;" (assignment_expression "uVar3 = local_48" (identifier "uVar3") (= "=") (identifier "local_48")) (; ";")) (expression_statement "local_44 = uVar6;" (assignment_expression "local_44 = uVar6" (identifier "local_44") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "local_40 = uVar4;" (assignment_expression "local_40 = uVar4" (identifier "local_40") (= "=") (identifier "uVar4")) (; ";")) (} "}"))) (} "}"))) (if_statement "if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }" (if "if") (parenthesized_expression "((iVar1 == 0) && (local_4c != 0 || local_48 != 0))" (( "(") (binary_expression "(iVar1 == 0) && (local_4c != 0 || local_48 != 0)" (parenthesized_expression "(iVar1 == 0)" (( "(") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_4c != 0 || local_48 != 0)" (( "(") (binary_expression "local_4c != 0 || local_48 != 0" (binary_expression "local_4c != 0" (identifier "local_4c") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "local_48 != 0" (identifier "local_48") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        local_24 = local_4c;\n        (*param_1)(&local_24,param_3);\n      }" ({ "{") (expression_statement "local_24 = local_4c;" (assignment_expression "local_24 = local_4c" (identifier "local_24") (= "=") (identifier "local_4c")) (; ";")) (expression_statement "(*param_1)(&local_24,param_3);" (call_expression "(*param_1)(&local_24,param_3)" (parenthesized_expression "(*param_1)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")")) (argument_list "(&local_24,param_3)" (( "(") (pointer_expression "&local_24" (& "&") (identifier "local_24")) (, ",") (identifier "param_3") () ")"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_0002b190();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (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                    \n    FUN_0002b190();\n  }" ({ "{") (expression_statement "FUN_0002b190();" (call_expression "FUN_0002b190()" (identifier "FUN_0002b190") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

type_1 * __regparm3
ranged_convert(_func_tm_ptr_time_t_ptr_tm_ptr *convert,long_int *var_2,type_1 *tp)

{
  int var_4;
  type_1 *var_5;
  type_2 var_11;
  type_2 var_13;
  type_2 var_10;
  type_2 var_12;
  type_2 var_15;
  int var_16;
  int var_1;
  type_2 var_6;
  int var_7;
  type_2 var_8;
  int var_9;
  type_3 x;
  int var_17;
  
  var_17 = *(int *)(var_1 + 0x14);
  x = (type_3)*var_2;
  var_4 = *(int *)((int)var_2 + 4);
  if ((var_3(var_4,-1) != var_3(var_4 + 1,(type_2)((type_2)x < 0x80000000))) ==
      (int)((var_4 + 1) - (type_2)((type_2)x < 0x80000000)) < 0) {
    if (-var_4 < (int)(type_2)(0x7fffffff < (type_2)x)) {
      *(type_4 *)var_2 = 0x7fffffff;
      x = 0x7fffffff;
      *(type_4 *)((int)var_2 + 4) = 0;
    }
  }
  else {
    *(type_4 *)var_2 = 0x80000000;
    x = 0x80000000;
    *(type_4 *)((int)var_2 + 4) = 0xffffffff;
  }
  var_5 = (*convert)(&x,tp);
  if (var_5 == (type_1 *)0x0) {
    var_6 = 0;
    var_7 = 0;
    var_11 = var_6;
    var_4 = var_7;
    var_8 = (type_2)*var_2;
    var_9 = *(int *)((int)var_2 + 4);
    if (*(int *)((int)var_2 + 4) != 0 || (type_2)*var_2 != 0) {
      while( true ) {
        var_7 = var_4;
        var_6 = var_11;
        var_10 = var_6 >> 1 | var_7 << 0x1f;
        var_11 = var_8 >> 1 | var_9 << 0x1f;
        var_12 = var_10 + var_11;
        var_13 = (var_8 | var_6) & 1;
        var_15 = var_12 + var_13;
        var_16 = (var_7 >> 1) + (var_9 >> 1) + (type_2)var_14(var_10,var_11) +
                (type_2)var_14(var_12,var_13);
        if ((var_6 != var_15 || var_7 != var_16) && (var_8 != var_15 || var_9 != var_16))
        break;
        x = var_15;
        var_5 = (*convert)(&x,tp);
        var_11 = var_15;
        var_4 = var_16;
        if (var_5 == (type_1 *)0x0) {
          var_11 = var_6;
          var_4 = var_7;
          var_8 = var_15;
          var_9 = var_16;
        }
      }
      if ((var_5 == (type_1 *)0x0) && (var_6 != 0 || var_7 != 0)) {
        x = var_6;
        var_5 = (*convert)(&x,tp);
      }
    }
  }
  if (var_17 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_18();
  }
  return var_5;
}


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

void __regparm3 MASKED(code *param_1,uint *param_2,undefined4 param_3)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  uint uVar4;
  uint uVar5;
  uint uVar6;
  int in_GS_OFFSET;
  uint local_4c;
  uint local_48;
  uint local_44;
  uint local_40;
  uint local_24;
  int local_20;
  
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_24 = *param_2;
  uVar2 = param_2[1];
  if ((SBORROW4(uVar2,-1) != SBORROW4(uVar2 + 1,(uint)(local_24 < 0x80000000))) ==
      (int)((uVar2 + 1) - (uint)(local_24 < 0x80000000)) < 0) {
    if ((int)-uVar2 < (int)(uint)(0x7fffffff < local_24)) {
      *param_2 = 0x7fffffff;
      local_24 = 0x7fffffff;
      param_2[1] = 0;
    }
  }
  else {
    *param_2 = 0x80000000;
    local_24 = 0x80000000;
    param_2[1] = 0xffffffff;
  }
  iVar1 = (*param_1)(&local_24,param_3);
  if (iVar1 == 0) {
    local_4c = 0;
    local_48 = 0;
    iVar1 = 0;
    uVar2 = local_4c;
    uVar3 = local_48;
    local_44 = *param_2;
    local_40 = param_2[1];
    if (param_2[1] != 0 || *param_2 != 0) {
      while( true ) {
        local_48 = uVar3;
        local_4c = uVar2;
        uVar4 = local_4c >> 1 | local_48 << 0x1f;
        uVar2 = local_44 >> 1 | local_40 << 0x1f;
        uVar5 = uVar4 + uVar2;
        uVar3 = (local_44 | local_4c) & 1;
        uVar6 = uVar5 + uVar3;
        uVar4 = ((int)local_48 >> 1) + ((int)local_40 >> 1) + (uint)CARRY4(uVar4,uVar2) +
                (uint)CARRY4(uVar5,uVar3);
        if ((local_4c != uVar6 || local_48 != uVar4) && (local_44 != uVar6 || local_40 != uVar4))
        break;
        local_24 = uVar6;
        iVar1 = (*param_1)(&local_24,param_3);
        uVar2 = uVar6;
        uVar3 = uVar4;
        if (iVar1 == 0) {
          uVar2 = local_4c;
          uVar3 = local_48;
          local_44 = uVar6;
          local_40 = uVar4;
        }
      }
      if ((iVar1 == 0) && (local_4c != 0 || local_48 != 0)) {
        local_24 = local_4c;
        (*param_1)(&local_24,param_3);
      }
    }
  }
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_0002b190();
  }
  return;
}

